ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDcyNmRiNzMuLmMwZTAwZWIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSw3ICsxLDYgQEAKIC9HSVQtQlVJTEQtT1BUSU9OUwogL0dJVC1DRkxBR1MKIC9HSVQtTERGTEFHUwotL0dJVC1HVUktVkFSUwogL0dJVC1QUkVGSVgKIC9HSVQtUFlUSE9OLVZBUlMKIC9HSVQtU0NSSVBULURFRklORVMKQEAgLTIzLDYgKzIyLDcgQEAKIC9naXQtYnVuZGxlCiAvZ2l0LWNhdC1maWxlCiAvZ2l0LWNoZWNrLWF0dHIKKy9naXQtY2hlY2staWdub3JlCiAvZ2l0LWNoZWNrLXJlZi1mb3JtYXQKIC9naXQtY2hlY2tvdXQKIC9naXQtY2hlY2tvdXQtaW5kZXgKQEAgLTEyNiw2ICsxMjYsNyBAQAogL2dpdC1yZW1vdGUtZmQKIC9naXQtcmVtb3RlLWV4dAogL2dpdC1yZW1vdGUtdGVzdGdpdAorL2dpdC1yZW1vdGUtdGVzdHB5CiAvZ2l0LXJlbW90ZS10ZXN0c3ZuCiAvZ2l0LXJlcGFjawogL2dpdC1yZXBsYWNlCkBAIC0xNzIsNyArMTczLDYgQEAKIC9naXQtd2hhdGNoYW5nZWQKIC9naXQtd3JpdGUtdHJlZQogL2dpdC1jb3JlLSovPyoKLS9naXRrLWdpdC9naXRrLXdpc2gKIC9naXR3ZWIvR0lUV0VCLUJVSUxELU9QVElPTlMKIC9naXR3ZWIvZ2l0d2ViLmNnaQogL2dpdHdlYi9zdGF0aWMvZ2l0d2ViLmpzCkBAIC0xOTEsNiArMTkxLDcgQEAKIC90ZXN0LW1rdGVtcAogL3Rlc3QtcGFyc2Utb3B0aW9ucwogL3Rlc3QtcGF0aC11dGlscworL3Rlc3QtcmVhZC1jYWNoZQogL3Rlc3QtcmVnZXgKIC90ZXN0LXJldmlzaW9uLXdhbGtpbmcKIC90ZXN0LXJ1bi1jb21tYW5kCkBAIC0xOTksNiArMjAwLDcgQEAKIC90ZXN0LXN0cmluZy1saXN0CiAvdGVzdC1zdWJwcm9jZXNzCiAvdGVzdC1zdm4tZmUKKy90ZXN0LXdpbGRtYXRjaAogL2NvbW1vbi1jbWRzLmgKICoudGFyLmd6CiAqLmRzYwpAQCAtMjI4LDYgKzIzMCw3IEBACiAvY3Njb3BlKgogKi5vYmoKICoubGliCisqLnJlcwogKi5zbG4KICouc3VvCiAqLm5jYgpkaWZmIC0tZ2l0IGEvLm1haWxtYXAgYi8ubWFpbG1hcAppbmRleCBjN2U4NjE4Li40OGQ3YWNmIDEwMDY0NAotLS0gYS8ubWFpbG1hcAorKysgYi8ubWFpbG1hcApAQCAtNzMsNiArNzMsNyBAQAogPG5pY29AZmx1eG5pYy5uZXQ+IDxuaWNvQGNhbS5vcmc+CiBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4gPHBldGVyQHN2YXJ0ZW4uaW50ZXJuLnNvZnR3b2x2ZXMucHAuc2U+CiBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4gPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+CitQZXRyIEJhdWRpcyA8cGFza3lAdWN3LmN6PiA8cGFza3lAc3VzZS5jej4KIFBoaWxpcHBlIEJydWhhdCA8Ym9va0BjcGFuLm9yZz4KIFJhbGYgVGhpZWxvdyA8cmFsZi50aGllbG93QGdtYWlsLmNvbT4gPHJhbGYudGhpZWxvd0Bnb29nbGVtYWlsLmNvbT4KIFJhbXNheSBBbGxhbiBKb25lcyA8cmFtc2F5QHJhbXNheTEuZGVtb24uY28udWs+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uLy5naXRpZ25vcmUKaW5kZXggZDYyYWViZC4uMmM4YjJkNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi8uZ2l0aWdub3JlCisrKyBiL0RvY3VtZW50YXRpb24vLmdpdGlnbm9yZQpAQCAtOSw0ICs5LDUgQEAKIGhvd3RvLWluZGV4LnR4dAogZG9jLmRlcAogY21kcy0qLnR4dAorbWVyZ2V0b29scy0qLnR4dAogbWFucGFnZS1iYXNlLXVybC54c2wKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQ29kaW5nR3VpZGVsaW5lcyBiL0RvY3VtZW50YXRpb24vQ29kaW5nR3VpZGVsaW5lcwppbmRleCA2OWY3ZTliLi41NTlkNWY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0NvZGluZ0d1aWRlbGluZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9Db2RpbmdHdWlkZWxpbmVzCkBAIC0xLDUgKzEsNSBAQAogTGlrZSBvdGhlciBwcm9qZWN0cywgd2UgYWxzbyBoYXZlIHNvbWUgZ3VpZGVsaW5lcyB0byBrZWVwIHRvIHRoZQotY29kZS4gIEZvciBnaXQgaW4gZ2VuZXJhbCwgdGhyZWUgcm91Z2ggcnVsZXMgYXJlOgorY29kZS4gIEZvciBHaXQgaW4gZ2VuZXJhbCwgdGhyZWUgcm91Z2ggcnVsZXMgYXJlOgogCiAgLSBNb3N0IGltcG9ydGFudGx5LCB3ZSBuZXZlciBzYXkgIkl0J3MgaW4gUE9TSVg7IHdlJ2xsIGhhcHBpbHkKICAgIGlnbm9yZSB5b3VyIG5lZWRzIHNob3VsZCB5b3VyIHN5c3RlbSBub3QgY29uZm9ybSB0byBpdC4iCkBAIC0xOCwxMSArMTgsMTIgQEAKICAgIGp1ZGdlbWVudCBjYWxsLCB0aGUgZGVjaXNpb24gYmFzZWQgbW9yZSBvbiByZWFsIHdvcmxkCiAgICBjb25zdHJhaW50cyBwZW9wbGUgZmFjZSB0aGFuIHdoYXQgdGhlIHBhcGVyIHN0YW5kYXJkIHNheXMuCiAKK01ha2UgeW91ciBjb2RlIHJlYWRhYmxlIGFuZCBzZW5zaWJsZSwgYW5kIGRvbid0IHRyeSB0byBiZSBjbGV2ZXIuCiAKIEFzIGZvciBtb3JlIGNvbmNyZXRlIGd1aWRlbGluZXMsIGp1c3QgaW1pdGF0ZSB0aGUgZXhpc3RpbmcgY29kZQogKHRoaXMgaXMgYSBnb29kIGd1aWRlbGluZSwgbm8gbWF0dGVyIHdoaWNoIHByb2plY3QgeW91IGFyZQogY29udHJpYnV0aW5nIHRvKS4gSXQgaXMgYWx3YXlzIHByZWZlcmFibGUgdG8gbWF0Y2ggdGhlIF9sb2NhbF8KLWNvbnZlbnRpb24uIE5ldyBjb2RlIGFkZGVkIHRvIGdpdCBzdWl0ZSBpcyBleHBlY3RlZCB0byBtYXRjaAorY29udmVudGlvbi4gTmV3IGNvZGUgYWRkZWQgdG8gR2l0IHN1aXRlIGlzIGV4cGVjdGVkIHRvIG1hdGNoCiB0aGUgb3ZlcmFsbCBzdHlsZSBvZiBleGlzdGluZyBjb2RlLiBNb2RpZmljYXRpb25zIHRvIGV4aXN0aW5nCiBjb2RlIGlzIGV4cGVjdGVkIHRvIG1hdGNoIHRoZSBzdHlsZSB0aGUgc3Vycm91bmRpbmcgY29kZSBhbHJlYWR5CiB1c2VzIChldmVuIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIG92ZXJhbGwgc3R5bGUgb2YgZXhpc3RpbmcgY29kZSkuCkBAIC0xMTIsNyArMTEzLDcgQEAKIAogIC0gV2UgdHJ5IHRvIGtlZXAgdG8gYXQgbW9zdCA4MCBjaGFyYWN0ZXJzIHBlciBsaW5lLgogCi0gLSBXZSB0cnkgdG8gc3VwcG9ydCBhIHdpZGUgcmFuZ2Ugb2YgQyBjb21waWxlcnMgdG8gY29tcGlsZSBnaXQgd2l0aCwKKyAtIFdlIHRyeSB0byBzdXBwb3J0IGEgd2lkZSByYW5nZSBvZiBDIGNvbXBpbGVycyB0byBjb21waWxlIEdpdCB3aXRoLAogICAgaW5jbHVkaW5nIG9sZCBvbmVzLiBUaGF0IG1lYW5zIHRoYXQgeW91IHNob3VsZCBub3QgdXNlIEM5OQogICAgaW5pdGlhbGl6ZXJzLCBldmVuIGlmIGEgbG90IG9mIGNvbXBpbGVycyBncm9rIGl0LgogCkBAIC0xNjQsMTQgKzE2NSwxNCBAQAogCiAgLSBJZiB5b3UgYXJlIHBsYW5uaW5nIGEgbmV3IGNvbW1hbmQsIGNvbnNpZGVyIHdyaXRpbmcgaXQgaW4gc2hlbGwKICAgIG9yIHBlcmwgZmlyc3QsIHNvIHRoYXQgY2hhbmdlcyBpbiBzZW1hbnRpY3MgY2FuIGJlIGVhc2lseQotICAgY2hhbmdlZCBhbmQgZGlzY3Vzc2VkLiAgTWFueSBnaXQgY29tbWFuZHMgc3RhcnRlZCBvdXQgbGlrZQorICAgY2hhbmdlZCBhbmQgZGlzY3Vzc2VkLiAgTWFueSBHaXQgY29tbWFuZHMgc3RhcnRlZCBvdXQgbGlrZQogICAgdGhhdCwgYW5kIGEgZmV3IGFyZSBzdGlsbCBzY3JpcHRzLgogCi0gLSBBdm9pZCBpbnRyb2R1Y2luZyBhIG5ldyBkZXBlbmRlbmN5IGludG8gZ2l0LiBUaGlzIG1lYW5zIHlvdQorIC0gQXZvaWQgaW50cm9kdWNpbmcgYSBuZXcgZGVwZW5kZW5jeSBpbnRvIEdpdC4gVGhpcyBtZWFucyB5b3UKICAgIHVzdWFsbHkgc2hvdWxkIHN0YXkgYXdheSBmcm9tIHNjcmlwdGluZyBsYW5ndWFnZXMgbm90IGFscmVhZHkKLSAgIHVzZWQgaW4gdGhlIGdpdCBjb3JlIGNvbW1hbmQgc2V0ICh1bmxlc3MgeW91ciBjb21tYW5kIGlzIGNsZWFybHkKKyAgIHVzZWQgaW4gdGhlIEdpdCBjb3JlIGNvbW1hbmQgc2V0ICh1bmxlc3MgeW91ciBjb21tYW5kIGlzIGNsZWFybHkKICAgIHNlcGFyYXRlIGZyb20gaXQsIHN1Y2ggYXMgYW4gaW1wb3J0ZXIgdG8gY29udmVydCByYW5kb20tc2NtLVgKLSAgIHJlcG9zaXRvcmllcyB0byBnaXQpLgorICAgcmVwb3NpdG9yaWVzIHRvIEdpdCkuCiAKICAtIFdoZW4gd2UgcGFzcyA8c3RyaW5nLCBsZW5ndGg+IHBhaXIgdG8gZnVuY3Rpb25zLCB3ZSBzaG91bGQgdHJ5IHRvCiAgICBwYXNzIHRoZW0gaW4gdGhhdCBvcmRlci4KQEAgLTE3OSw4ICsxODAsNjggQEAKICAtIFVzZSBHaXQncyBnZXR0ZXh0IHdyYXBwZXJzIHRvIG1ha2UgdGhlIHVzZXIgaW50ZXJmYWNlCiAgICB0cmFuc2xhdGFibGUuIFNlZSAiTWFya2luZyBzdHJpbmdzIGZvciB0cmFuc2xhdGlvbiIgaW4gcG8vUkVBRE1FLgogCitGb3IgUGVybCBwcm9ncmFtczoKKworIC0gTW9zdCBvZiB0aGUgQyBndWlkZWxpbmVzIGFib3ZlIGFwcGx5LgorCisgLSBXZSB0cnkgdG8gc3VwcG9ydCBQZXJsIDUuOCBhbmQgbGF0ZXIgKCJ1c2UgUGVybCA1LjAwOCIpLgorCisgLSB1c2Ugc3RyaWN0IGFuZCB1c2Ugd2FybmluZ3MgYXJlIHN0cm9uZ2x5IHByZWZlcnJlZC4KKworIC0gRG9uJ3Qgb3ZlcnVzZSBzdGF0ZW1lbnQgbW9kaWZpZXJzIHVubGVzcyB1c2luZyB0aGVtIG1ha2VzIHRoZQorICAgcmVzdWx0IGVhc2llciB0byBmb2xsb3cuCisKKwkuLi4gZG8gc29tZXRoaW5nIC4uLgorCWRvX3RoaXMoKSB1bmxlc3MgKGNvbmRpdGlvbik7CisgICAgICAgIC4uLiBkbyBzb21ldGhpbmcgZWxzZSAuLi4KKworICAgaXMgbW9yZSByZWFkYWJsZSB0aGFuOgorCisJLi4uIGRvIHNvbWV0aGluZyAuLi4KKwl1bmxlc3MgKGNvbmRpdGlvbikgeworCQlkb190aGlzKCk7CisJfQorICAgICAgICAuLi4gZG8gc29tZXRoaW5nIGVsc2UgLi4uCisKKyAgICpvbmx5KiB3aGVuIHRoZSBjb25kaXRpb24gaXMgc28gcmFyZSB0aGF0IGRvX3RoaXMoKSB3aWxsIGJlIGFsbW9zdAorICAgYWx3YXlzIGNhbGxlZC4KKworIC0gV2UgdHJ5IHRvIGF2b2lkIGFzc2lnbm1lbnRzIGluc2lkZSAiaWYgKCkiIGNvbmRpdGlvbnMuCisKKyAtIExlYXJuIGFuZCB1c2UgR2l0LnBtIGlmIHlvdSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eS4KKworIC0gRm9yIEVtYWNzLCBpdCdzIHVzZWZ1bCB0byBwdXQgdGhlIGZvbGxvd2luZyBpbgorICAgR0lUX0NIRUNLT1VULy5kaXItbG9jYWxzLmVsLCBhc3N1bWluZyB5b3UgdXNlIGNwZXJsLW1vZGU6CisKKyAgICA7OyBub3RlIHRoZSBmaXJzdCBwYXJ0IGlzIHVzZWZ1bCBmb3IgQyBlZGl0aW5nLCB0b28KKyAgICAoKG5pbCAuICgoaW5kZW50LXRhYnMtbW9kZSAuIHQpCisgICAgICAgICAgICAgICAgICAodGFiLXdpZHRoIC4gOCkKKyAgICAgICAgICAgICAgICAgIChmaWxsLWNvbHVtbiAuIDgwKSkpCisgICAgIChjcGVybC1tb2RlIC4gKChjcGVybC1pbmRlbnQtbGV2ZWwgLiA4KQorICAgICAgICAgICAgICAgICAgICAoY3BlcmwtZXh0cmEtbmV3bGluZS1iZWZvcmUtYnJhY2UgLiBuaWwpCisgICAgICAgICAgICAgICAgICAgIChjcGVybC1tZXJnZS10cmFpbGluZy1lbHNlIC4gdCkpKSkKKworRm9yIFB5dGhvbiBzY3JpcHRzOgorCisgLSBXZSBmb2xsb3cgUEVQLTggKGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDAwOC8pLgorCisgLSBBcyBhIG1pbmltdW0sIHdlIGFpbSB0byBiZSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDIuNiBhbmQgMi43LgorCisgLSBXaGVyZSByZXF1aXJlZCBsaWJyYXJpZXMgZG8gbm90IHJlc3RyaWN0IHVzIHRvIFB5dGhvbiAyLCB3ZSB0cnkgdG8KKyAgIGFsc28gYmUgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgYW5kIGxhdGVyLgorCisgLSBXaGVuIHlvdSBtdXN0IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBVbmljb2RlIGxpdGVyYWxzIGFuZCBieXRlIHN0cmluZworICAgbGl0ZXJhbHMsIGl0IGlzIE9LIHRvIHVzZSB0aGUgJ2InIHByZWZpeC4gIEV2ZW4gdGhvdWdoIHRoZSBQeXRob24KKyAgIGRvY3VtZW50YXRpb24gZm9yIHZlcnNpb24gMi42IGRvZXMgbm90IG1lbnRpb24gdGhpcyBwcmVmaXgsIGl0IGhhcworICAgYmVlbiBzdXBwb3J0ZWQgc2luY2UgdmVyc2lvbiAyLjYuMC4KKwogV3JpdGluZyBEb2N1bWVudGF0aW9uOgogCisgTW9zdCAoaWYgbm90IGFsbCkgb2YgdGhlIGRvY3VtZW50YXRpb24gcGFnZXMgYXJlIHdyaXR0ZW4gaW4gdGhlCisgQXNjaWlEb2MgZm9ybWF0IGluICoudHh0IGZpbGVzIChlLmcuIERvY3VtZW50YXRpb24vZ2l0LnR4dCksIGFuZAorIHByb2Nlc3NlZCBpbnRvIEhUTUwgYW5kIG1hbnBhZ2VzIChlLmcuIGdpdC5odG1sIGFuZCBnaXQuMSBpbiB0aGUKKyBzYW1lIGRpcmVjdG9yeSkuCisKICBFdmVyeSB1c2VyLXZpc2libGUgY2hhbmdlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCiAgVGhlIHNhbWUgZ2VuZXJhbCBydWxlIGFzIGZvciBjb2RlIGFwcGxpZXMgLS0gaW1pdGF0ZSB0aGUgZXhpc3RpbmcKICBjb252ZW50aW9ucy4gIEEgZmV3IGNvbW1lbnRlZCBleGFtcGxlcyBmb2xsb3cgdG8gcHJvdmlkZSByZWZlcmVuY2UKQEAgLTIzMCwzICsyOTEsOCBAQAogICAgdmFsaWQgdXNhZ2UuICAiKiIgaGFzIGl0cyBvd24gcGFpciBvZiBicmFja2V0cywgYmVjYXVzZSBpdCBjYW4KICAgIChvcHRpb25hbGx5KSBiZSBzcGVjaWZpZWQgb25seSB3aGVuIG9uZSBvciBtb3JlIG9mIHRoZSBsZXR0ZXJzIGlzCiAgICBhbHNvIHByb3ZpZGVkLgorCisgIEEgbm90ZSBvbiBub3RhdGlvbjoKKyAgIFVzZSAnZ2l0JyAoYWxsIGxvd2VyY2FzZSkgd2hlbiB0YWxraW5nIGFib3V0IGNvbW1hbmRzIGkuZS4gc29tZXRoaW5nCisgICB0aGUgdXNlciB3b3VsZCB0eXBlIGludG8gYSBzaGVsbCBhbmQgdXNlICdHaXQnICh1cHBlcmNhc2UgZmlyc3QgbGV0dGVyKQorICAgd2hlbiB0YWxraW5nIGFib3V0IHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGFuZCBpdHMgcHJvcGVydGllcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCmluZGV4IDNjNTM4ZTMuLjBjZmRjMzYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtMSwyMCArMSw0MSBAQAotTUFOMV9UWFQ9IFwKLQkkKGZpbHRlci1vdXQgJChhZGRzdWZmaXggLnR4dCwgJChBUlRJQ0xFUykgJChTUF9BUlRJQ0xFUykpLCBcCi0JCSQod2lsZGNhcmQgZ2l0LSoudHh0KSkgXAotCWdpdGsudHh0IGdpdHdlYi50eHQgZ2l0LnR4dCBnaXRyZW1vdGUtaGVscGVycy50eHQKLU1BTjVfVFhUPWdpdGF0dHJpYnV0ZXMudHh0IGdpdGlnbm9yZS50eHQgZ2l0bW9kdWxlcy50eHQgZ2l0aG9va3MudHh0IFwKLQlnaXRyZXBvc2l0b3J5LWxheW91dC50eHQgZ2l0d2ViLmNvbmYudHh0Ci1NQU43X1RYVD1naXRjbGkudHh0IGdpdHR1dG9yaWFsLnR4dCBnaXR0dXRvcmlhbC0yLnR4dCBcCi0JZ2l0Y3ZzLW1pZ3JhdGlvbi50eHQgZ2l0Y29yZS10dXRvcmlhbC50eHQgZ2l0Z2xvc3NhcnkudHh0IFwKLQlnaXRkaWZmY29yZS50eHQgZ2l0bmFtZXNwYWNlcy50eHQgZ2l0cmV2aXNpb25zLnR4dCBnaXR3b3JrZmxvd3MudHh0CisjIEd1YXJkIGFnYWluc3QgZW52aXJvbm1lbnQgdmFyaWFibGVzCitNQU4xX1RYVCA9CitNQU41X1RYVCA9CitNQU43X1RYVCA9CisKK01BTjFfVFhUICs9ICQoZmlsdGVyLW91dCBcCisJCSQoYWRkc3VmZml4IC50eHQsICQoQVJUSUNMRVMpICQoU1BfQVJUSUNMRVMpKSwgXAorCQkkKHdpbGRjYXJkIGdpdC0qLnR4dCkpCitNQU4xX1RYVCArPSBnaXQudHh0CitNQU4xX1RYVCArPSBnaXRrLnR4dAorTUFOMV9UWFQgKz0gZ2l0cmVtb3RlLWhlbHBlcnMudHh0CitNQU4xX1RYVCArPSBnaXR3ZWIudHh0CisKK01BTjVfVFhUICs9IGdpdGF0dHJpYnV0ZXMudHh0CitNQU41X1RYVCArPSBnaXRob29rcy50eHQKK01BTjVfVFhUICs9IGdpdGlnbm9yZS50eHQKK01BTjVfVFhUICs9IGdpdG1vZHVsZXMudHh0CitNQU41X1RYVCArPSBnaXRyZXBvc2l0b3J5LWxheW91dC50eHQKK01BTjVfVFhUICs9IGdpdHdlYi5jb25mLnR4dAorCitNQU43X1RYVCArPSBnaXRjbGkudHh0CitNQU43X1RYVCArPSBnaXRjb3JlLXR1dG9yaWFsLnR4dAogTUFON19UWFQgKz0gZ2l0Y3JlZGVudGlhbHMudHh0CitNQU43X1RYVCArPSBnaXRjdnMtbWlncmF0aW9uLnR4dAorTUFON19UWFQgKz0gZ2l0ZGlmZmNvcmUudHh0CitNQU43X1RYVCArPSBnaXRnbG9zc2FyeS50eHQKK01BTjdfVFhUICs9IGdpdG5hbWVzcGFjZXMudHh0CitNQU43X1RYVCArPSBnaXRyZXZpc2lvbnMudHh0CitNQU43X1RYVCArPSBnaXR0dXRvcmlhbC0yLnR4dAorTUFON19UWFQgKz0gZ2l0dHV0b3JpYWwudHh0CitNQU43X1RYVCArPSBnaXR3b3JrZmxvd3MudHh0CiAKIE1BTl9UWFQgPSAkKE1BTjFfVFhUKSAkKE1BTjVfVFhUKSAkKE1BTjdfVFhUKQotTUFOX1hNTD0kKHBhdHN1YnN0ICUudHh0LCUueG1sLCQoTUFOX1RYVCkpCi1NQU5fSFRNTD0kKHBhdHN1YnN0ICUudHh0LCUuaHRtbCwkKE1BTl9UWFQpKQorTUFOX1hNTCA9ICQocGF0c3Vic3QgJS50eHQsJS54bWwsJChNQU5fVFhUKSkKK01BTl9IVE1MID0gJChwYXRzdWJzdCAlLnR4dCwlLmh0bWwsJChNQU5fVFhUKSkKIAogT0JTT0xFVEVfSFRNTCA9IGdpdC1yZW1vdGUtaGVscGVycy5odG1sCi1ET0NfSFRNTD0kKE1BTl9IVE1MKSAkKE9CU09MRVRFX0hUTUwpCitET0NfSFRNTCA9ICQoTUFOX0hUTUwpICQoT0JTT0xFVEVfSFRNTCkKIAogQVJUSUNMRVMgPSBob3d0by1pbmRleAogQVJUSUNMRVMgKz0gZXZlcnlkYXkKQEAgLTUzLDM1ICs3NCwzNSBAQAogCiBET0NfSFRNTCArPSAkKHBhdHN1YnN0ICUsJS5odG1sLCQoQVJUSUNMRVMpICQoU1BfQVJUSUNMRVMpKQogCi1ET0NfTUFOMT0kKHBhdHN1YnN0ICUudHh0LCUuMSwkKE1BTjFfVFhUKSkKLURPQ19NQU41PSQocGF0c3Vic3QgJS50eHQsJS41LCQoTUFONV9UWFQpKQotRE9DX01BTjc9JChwYXRzdWJzdCAlLnR4dCwlLjcsJChNQU43X1RYVCkpCitET0NfTUFOMSA9ICQocGF0c3Vic3QgJS50eHQsJS4xLCQoTUFOMV9UWFQpKQorRE9DX01BTjUgPSAkKHBhdHN1YnN0ICUudHh0LCUuNSwkKE1BTjVfVFhUKSkKK0RPQ19NQU43ID0gJChwYXRzdWJzdCAlLnR4dCwlLjcsJChNQU43X1RYVCkpCiAKLXByZWZpeD89JChIT01FKQotYmluZGlyPz0kKHByZWZpeCkvYmluCi1odG1sZGlyPz0kKHByZWZpeCkvc2hhcmUvZG9jL2dpdC1kb2MKLXBkZmRpcj89JChwcmVmaXgpL3NoYXJlL2RvYy9naXQtZG9jCi1tYW5kaXI/PSQocHJlZml4KS9zaGFyZS9tYW4KLW1hbjFkaXI9JChtYW5kaXIpL21hbjEKLW1hbjVkaXI9JChtYW5kaXIpL21hbjUKLW1hbjdkaXI9JChtYW5kaXIpL21hbjcKLSMgREVTVERJUj0KK3ByZWZpeCA/PSAkKEhPTUUpCitiaW5kaXIgPz0gJChwcmVmaXgpL2JpbgoraHRtbGRpciA/PSAkKHByZWZpeCkvc2hhcmUvZG9jL2dpdC1kb2MKK2luZm9kaXIgPz0gJChwcmVmaXgpL3NoYXJlL2luZm8KK3BkZmRpciA/PSAkKHByZWZpeCkvc2hhcmUvZG9jL2dpdC1kb2MKK21hbmRpciA/PSAkKHByZWZpeCkvc2hhcmUvbWFuCittYW4xZGlyID0gJChtYW5kaXIpL21hbjEKK21hbjVkaXIgPSAkKG1hbmRpcikvbWFuNQorbWFuN2RpciA9ICQobWFuZGlyKS9tYW43CisjIERFU1RESVIgPQogCiBBU0NJSURPQyA9IGFzY2lpZG9jCiBBU0NJSURPQ19FWFRSQSA9CiBNQU5QQUdFX1hTTCA9IG1hbnBhZ2Utbm9ybWFsLnhzbAogWE1MVE8gPSB4bWx0bwogWE1MVE9fRVhUUkEgPQotSU5TVEFMTD89aW5zdGFsbAorSU5TVEFMTCA/PSBpbnN0YWxsCiBSTSA/PSBybSAtZgogTUFOX1JFUE8gPSAuLi8uLi9naXQtbWFucGFnZXMKIEhUTUxfUkVQTyA9IC4uLy4uL2dpdC1odG1sZG9jcwogCi1pbmZvZGlyPz0kKHByZWZpeCkvc2hhcmUvaW5mbwotTUFLRUlORk89bWFrZWluZm8KLUlOU1RBTExfSU5GTz1pbnN0YWxsLWluZm8KLURPQ0JPT0syWF9URVhJPWRvY2Jvb2syeC10ZXhpCi1EQkxBVEVYPWRibGF0ZXgKK01BS0VJTkZPID0gbWFrZWluZm8KK0lOU1RBTExfSU5GTyA9IGluc3RhbGwtaW5mbworRE9DQk9PSzJYX1RFWEkgPSBkb2Nib29rMngtdGV4aQorREJMQVRFWCA9IGRibGF0ZXgKIGlmbmRlZiBQRVJMX1BBVEgKIAlQRVJMX1BBVEggPSAvdXNyL2Jpbi9wZXJsCiBlbmRpZgpAQCAtMjIzLDcgKzI0NCwxMSBAQAogIwogIyBEZXRlcm1pbmUgImluY2x1ZGU6OiIgZmlsZSByZWZlcmVuY2VzIGluIGFzY2lpZG9jIGZpbGVzLgogIwotZG9jLmRlcCA6ICQod2lsZGNhcmQgKi50eHQpIGJ1aWxkLWRvY2RlcC5wZXJsCitkb2NkZXBfcHJlcmVxcyA9IFwKKwltZXJnZXRvb2xzLWxpc3QubWFkZSAkKG1lcmdldG9vbHNfdHh0KSBcCisJY21kLWxpc3QubWFkZSAkKGNtZHNfdHh0KQorCitkb2MuZGVwIDogJChkb2NkZXBfcHJlcmVxcykgJCh3aWxkY2FyZCAqLnR4dCkgYnVpbGQtZG9jZGVwLnBlcmwKIAkkKFFVSUVUX0dFTikkKFJNKSAkQCsgJEAgJiYgXAogCSQoUEVSTF9QQVRIKSAuL2J1aWxkLWRvY2RlcC5wZXJsID4kQCsgJChRVUlFVF9TVERFUlIpICYmIFwKIAltdiAkQCsgJEAKQEAgLTI0NywxMyArMjcyLDI3IEBACiAJJChQRVJMX1BBVEgpIC4vY21kLWxpc3QucGVybCAuLi9jb21tYW5kLWxpc3QudHh0ICQoUVVJRVRfU1RERVJSKSAmJiBcCiAJZGF0ZSA+JEAKIAorbWVyZ2V0b29sc190eHQgPSBtZXJnZXRvb2xzLWRpZmYudHh0IG1lcmdldG9vbHMtbWVyZ2UudHh0CisKKyQobWVyZ2V0b29sc190eHQpOiBtZXJnZXRvb2xzLWxpc3QubWFkZQorCittZXJnZXRvb2xzLWxpc3QubWFkZTogLi4vZ2l0LW1lcmdldG9vbC0tbGliLnNoICQod2lsZGNhcmQgLi4vbWVyZ2V0b29scy8qKQorCSQoUVVJRVRfR0VOKSQoUk0pICRAICYmIFwKKwkkKFNIRUxMX1BBVEgpIC1jICdNRVJHRV9UT09MU19ESVI9Li4vbWVyZ2V0b29scyAmJiBcCisJCS4gLi4vZ2l0LW1lcmdldG9vbC0tbGliLnNoICYmIFwKKwkJc2hvd190b29sX25hbWVzIGNhbl9kaWZmICIqICIgfHwgOicgPm1lcmdldG9vbHMtZGlmZi50eHQgJiYgXAorCSQoU0hFTExfUEFUSCkgLWMgJ01FUkdFX1RPT0xTX0RJUj0uLi9tZXJnZXRvb2xzICYmIFwKKwkJLiAuLi9naXQtbWVyZ2V0b29sLS1saWIuc2ggJiYgXAorCQlzaG93X3Rvb2xfbmFtZXMgY2FuX21lcmdlICIqICIgfHwgOicgPm1lcmdldG9vbHMtbWVyZ2UudHh0ICYmIFwKKwlkYXRlID4kQAorCiBjbGVhbjoKIAkkKFJNKSAqLnhtbCAqLnhtbCsgKi5odG1sICouaHRtbCsgKi4xICouNSAqLjcKIAkkKFJNKSAqLnRleGkgKi50ZXhpKyAqLnRleGkrKyBnaXQuaW5mbyBnaXRtYW4uaW5mbwogCSQoUk0pICoucGRmCiAJJChSTSkgaG93dG8taW5kZXgudHh0IGhvd3RvLyouaHRtbCBkb2MuZGVwCiAJJChSTSkgdGVjaG5pY2FsLyouaHRtbCB0ZWNobmljYWwvYXBpLWluZGV4LnR4dAotCSQoUk0pICQoY21kc190eHQpICoubWFkZQorCSQoUk0pICQoY21kc190eHQpICQobWVyZ2V0b29sc190eHQpICoubWFkZQogCSQoUk0pIG1hbnBhZ2UtYmFzZS11cmwueHNsCiAKICQoTUFOX0hUTUwpOiAlLmh0bWwgOiAlLnR4dCBhc2NpaWRvYy5jb25mCkBAIC0zNTMsOCArMzkyLDggQEAKIGluc3RhbGwtd2ViZG9jIDogaHRtbAogCSckKFNIRUxMX1BBVEhfU1EpJyAuL2luc3RhbGwtd2ViZG9jLnNoICQoV0VCRE9DX0RFU1QpCiAKLSMgWW91IG11c3QgaGF2ZSBhIGNsb25lIG9mIGdpdC1odG1sZG9jcyBhbmQgZ2l0LW1hbnBhZ2VzIHJlcG9zaXRvcmllcwotIyBuZXh0IHRvIHRoZSBnaXQgcmVwb3NpdG9yeSBpdHNlbGYgZm9yIHRoZSBmb2xsb3dpbmcgdG8gd29yay4KKyMgWW91IG11c3QgaGF2ZSBhIGNsb25lIG9mICdnaXQtaHRtbGRvY3MnIGFuZCAnZ2l0LW1hbnBhZ2VzJyByZXBvc2l0b3JpZXMKKyMgbmV4dCB0byB0aGUgJ2dpdCcgcmVwb3NpdG9yeSBpdHNlbGYgZm9yIHRoZSBmb2xsb3dpbmcgdG8gd29yay4KIAogcXVpY2staW5zdGFsbDogcXVpY2staW5zdGFsbC1tYW4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM1NGFkMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMS50eHQKQEAgLTAsMCArMSwxMTUgQEAKK0dpdCB2MS44LjIuMSBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjIKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiBBbiBlYXJsaWVyIGNoYW5nZSB0byB0aGUgYXR0cmlidXRlIHN5c3RlbSBpbnRyb2R1Y2VkIGF0IHYxLjguMS4yIGJ5CisgICBtaXN0YWtlIHN0b3BwZWQgYSBwYXR0ZXJuICJkaXIiICh3aXRob3V0IHRyYWlsaW5nIHNsYXNoKSBmcm9tCisgICBtYXRjaGluZyBhIGRpcmVjdG9yeSAiZGlyIiAoaXQgb25seSB3YW50ZWQgdG8gYWxsb3cgcGF0dGVybiAiZGlyLyIKKyAgIHRvIGFsc28gbWF0Y2gpLgorCisgKiBWZXJpZmljYXRpb24gb2Ygc2lnbmVkIHRhZ3Mgd2VyZSBub3QgZG9uZSBjb3JyZWN0bHkgd2hlbiBub3QgaW4gQworICAgb3IgZW4vVVMgbG9jYWxlLgorCisgKiAnZ2l0IGNvbW1pdCAtbSAiJG1zZyInIHVzZWQgdG8gYWRkIGFuIGV4dHJhIG5ld2xpbmUgZXZlbiB3aGVuCisgICAkbXNnIGFscmVhZHkgZW5kZWQgd2l0aCBvbmUuCisKKyAqIFRoZSAiLS1tYXRjaD08cGF0dGVybj4iIG9wdGlvbiBvZiAiZ2l0IGRlc2NyaWJlIiwgd2hlbiB1c2VkIHdpdGgKKyAgICItLWFsbCIgdG8gYWxsb3cgcmVmcyB0aGF0IGFyZSBub3QgYW5ub3RhdGVkIHRhZ3MgdG8gYmUgdXNlZCBhcyBhCisgICBiYXNlIG9mIGRlc2NyaXB0aW9uLCBkaWQgbm90IHJlc3RyaWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZAorICAgdG8gdGhvc2UgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybi4KKworICogQW4gYWxpYXNlZCBjb21tYW5kIHNwYXduZWQgZnJvbSBhIGJhcmUgcmVwb3NpdG9yeSB0aGF0IGRvZXMgbm90IHNheQorICAgaXQgaXMgYmFyZSB3aXRoICJjb3JlLmJhcmUgPSB5ZXMiIGlzIHRyZWF0ZWQgYXMgbm9uLWJhcmUgYnkgbWlzdGFrZS4KKworICogV2hlbiAiZm9ybWF0LXBhdGNoIiBxdW90ZWQgYSBub24tYXNjaWkgc3RyaW5ncyBvbiB0aGUgaGVhZGVyIGZpbGVzLAorICAgaXQgaW5jb3JyZWN0bHkgYXBwbGllZCByZmMyMDQ3IGFuZCBjaG9wcGVkIGEgc2luZ2xlIGNoYXJhY3RlciBpbgorICAgdGhlIG1pZGRsZSBvZiBpdC4KKworICogImdpdCBhcmNoaXZlIiByZXBvcnRzIGEgZmFpbHVyZSB3aGVuIGFza2VkIHRvIGNyZWF0ZSBhbiBhcmNoaXZlIG91dAorICAgb2YgYW4gZW1wdHkgdHJlZS4gIEl0IHdvdWxkIGJlIG1vcmUgaW50dWl0aXZlIHRvIGdpdmUgYW4gZW1wdHkKKyAgIGFyY2hpdmUgYmFjayBpbiBzdWNoIGEgY2FzZS4KKworICogImdpdCB0YWcgLWYgPHRhZz4iIGFsd2F5cyBzYWlkICJVcGRhdGVkIHRhZyAnPHRhZz4nIiBldmVuIHdoZW4KKyAgIGNyZWF0aW5nIGEgbmV3IHRhZyAoaS5lLiBub3Qgb3ZlcndyaXRpbmcgbm9yIHVwZGF0aW5nKS4KKworICogImdpdCBjbWQgLS0gJzoodG9wJyIgd2FzIG5vdCBkaWFnbm9zZWQgYXMgYW4gaW52YWxpZCBzeW50YXgsIGFuZAorICAgaW5zdGVhZCB0aGUgcGFyc2VyIGtlcHQgcmVhZGluZyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgorCisgKiBBbm5vdGF0ZWQgdGFncyBvdXRzaWRlIHJlZnMvdGFncy8gaGllcmFyY2h5IHdlcmUgbm90IGFkdmVydGlzZWQKKyAgIGNvcnJlY3RseSB0byB0aGUgbHMtcmVtb3RlIGFuZCBmZXRjaCB3aXRoIHJlY2VudCB2ZXJzaW9uIG9mIEdpdC4KKworICogVGhlIGNvZGUgdG8ga2VlcCB0cmFjayBvZiB3aGF0IGRpcmVjdG9yeSBuYW1lcyBhcmUga25vd24gdG8gR2l0IG9uCisgICBwbGF0Zm9ybXMgd2l0aCBjYXNlIGluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zIGNhbiBnZXQgY29uZnVzZWQgdXBvbiBhCisgICBoYXNoIGNvbGxpc2lvbiBiZXR3ZWVuIHRoZXNlIHBhdGhuYW1lcyBhbmQgbG9vcGVkIGZvcmV2ZXIuCisKKyAqIFRoZSBsb2dpYyB1c2VkIGJ5ICJnaXQgZGlmZiAtTSAtLXN0YXQiIHRvIHNob3J0ZW4gdGhlIG5hbWVzIG9mCisgICBmaWxlcyBiZWZvcmUgYW5kIGFmdGVyIGEgcmVuYW1lIGRpZCBub3Qgd29yayBjb3JyZWN0bHkgd2hlbiB0aGUKKyAgIGNvbW1vbiBwcmVmaXggYW5kIHN1ZmZpeCBiZXR3ZWVuIHRoZSB0d28gZmlsZW5hbWVzIG92ZXJsYXBwZWQuCisKKyAqICJnaXQgc3VibW9kdWxlIHVwZGF0ZSIsIHdoZW4gcmVjdXJzZWQgaW50byBzdWItc3VibW9kdWxlcywgZGlkIG5vdAorICAgYWNjY3VtdWxhdGUgdGhlIHByZWZpeCBwYXRocy4KKworICogImdpdCBhbSAkbWFpbGRpci8iIGFwcGxpZWQgbWVzc2FnZXMgaW4gYW4gdW5leHBlY3RlZCBvcmRlcjsgc29ydAorICAgZmlsZW5hbWVzIHJlYWQgZnJvbSB0aGUgbWFpbGRpci8gaW4gYSB3YXkgdGhhdCBpcyBtb3JlIGxpa2VseSB0bworICAgc29ydCBtZXNzYWdlcyBpbiB0aGUgb3JkZXIgdGhlIHdyaXRpbmcgTVVBIG1lYW50IHRvLCBieSBzb3J0aW5nCisgICBudW1lcmljIHNlZ21lbnQgaW4gbnVtZXJpYyBvcmRlciBhbmQgbm9uLW51bWVyaWMgc2VnbWVudCBpbgorICAgYWxwaGFiZXRpY2FsIG9yZGVyLgorCisgKiBXaGVuIGV4cG9ydC1zdWJzdCBpcyB1c2VkLCAiemlwIiBvdXRwdXQgcmVjb3JkZWQgaW5jb3JyZWN0CisgICBzaXplIG9mIHRoZSBmaWxlLgorCisgKiBTb21lIHBsYXRmb3JtcyBhbmQgdXNlcnMgc3BlbGwgVVRGLTggZGlmZmVyZW50bHk7IHJldHJ5IHdpdGggdGhlCisgICBtb3N0IG9mZmljaWFsICJVVEYtOCIgd2hlbiB0aGUgc3lzdGVtIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlCisgICB1c2VyLXN1cHBsaWVkIGVuY29kaW5nIG5hbWUgdGhhdCBhcmUgdGhlIGNvbW1vbiBhbHRlcm5hdGl2ZQorICAgc3BlbGxpbmdzIG9mIFVURi04LgorCisgKiAiZ2l0IGJyYW5jaCIgZGlkIG5vdCBib3RoZXIgdG8gY2hlY2sgbm9uc2Vuc2UgY29tbWFuZCBsaW5lCisgICBwYXJhbWV0ZXJzIGFuZCBpc3N1ZSBlcnJvcnMgaW4gbWFueSBjYXNlcy4KKworICogImdpdCB1cGRhdGUtaW5kZXggLWgiIGRpZCBub3QgZG8gdGhlIHVzdWFsICItaChlbHApIiB0aGluZy4KKworICogcGVybC9HaXQucG06OmNhdF9ibG9iIHNsdXJwZWQgZXZlcnl0aGluZyBpbiBjb3JlIG9ubHkgdG8gd3JpdGUgaXQKKyAgIG91dCB0byBhIGZpbGUgZGVzY3JpcHRvciwgd2hpY2ggd2FzIG5vdCBhIHZlcnkgc21hcnQgdGhpbmcgdG8gZG8uCisKKyAqIFRoZSBTU0wgcGVlciB2ZXJpZmljYXRpb24gZG9uZSBieSAiZ2l0IGltYXAtc2VuZCIgZGlkIG5vdCBhc2sgZm9yCisgICBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uIChSRkMgNDM2NiksIGZhaWxpbmcgdG8gY29ubmVjdCBTU0wvVExTCisgICBzaXRlcyB0aGF0IHNlcnZlIG11bHRpcGxlIGhvc3RuYW1lcyBvbiBhIHNpbmdsZSBJUC4KKworICogImdpdCBpbmRleC1wYWNrIiBoYWQgYSBidWZmZXItb3ZlcmZsb3cgd2hpbGUgcHJlcGFyaW5nIGFuCisgICBpbmZvcm1hdGlvbmFsIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIGl0IHdhcyB0b28KKyAgIGxvbmcuCisKKyAqIENsYXJpZnkgaW4gdGhlIGRvY3VtZW50YXRpb24gIndoYXQiIGdldHMgcHVzaGVkIHRvICJ3aGVyZSIgd2hlbiB0aGUKKyAgIGNvbW1hbmQgbGluZSB0byAiZ2l0IHB1c2giIGRvZXMgbm90IHNheSB0aGVzZSBleHBsaWNpdGx5LgorCisgKiBJbiAiZ2l0IHJlZmxvZyBleHBpcmUiLCBSRUFDSEFCTEUgYml0IHdhcyBub3QgY2xlYXJlZCBmcm9tIHRoZQorICAgY29ycmVjdCBvYmplY3RzLgorCisgKiBUaGUgIi0tY29sb3I9PHdoZW4+IiBhcmd1bWVudCB0byB0aGUgY29tbWFuZHMgaW4gdGhlIGRpZmYgZmFtaWx5CisgICB3YXMgZGVzY3JpYmVkIHBvb3JseS4KKworICogVGhlIGFyZ3VtZW50cyBnaXZlbiB0byBwcmUtcmViYXNlIGhvb2sgd2VyZSBub3QgZG9jdW1lbnRlZC4KKworICogVGhlIHY0IGluZGV4IGZvcm1hdCB3YXMgbm90IGRvY3VtZW50ZWQuCisKKyAqIFRoZSAiLS1tYXRjaD08cGF0dGVybj4iIGFyZ3VtZW50ICJnaXQgZGVzY3JpYmUiIHRha2VzIHVzZXMgZ2xvYgorICAgcGF0dGVybiBidXQgaXQgd2Fzbid0IG9idmlvdXMgZnJvbSB0aGUgZG9jdW1lbnRhdGlvbi4KKworICogU29tZSBzb3VyY2VzIGZhaWxlZCB0byBjb21waWxlIG9uIHN5c3RlbXMgdGhhdCBsYWNrIE5JX01BWEhPU1QgaW4KKyAgIHRoZWlyIHN5c3RlbSBoZWFkZXIgKGUuZy4gei9PUykuCisKKyAqIEFkZCBhbiBleGFtcGxlIHVzZSBvZiAiLS1lbnYtZmlsdGVyIiBpbiAiZmlsdGVyLWJyYW5jaCIKKyAgIGRvY3VtZW50YXRpb24uCisKKyAqICJnaXQgYnVuZGxlIHZlcmlmeSIgZGlkIG5vdCBzYXkgInJlY29yZHMgYSBjb21wbGV0ZSBoaXN0b3J5IiBmb3IgYQorICAgYnVuZGxlIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgcHJlcmVxdWlzaXRlcy4KKworICogSW4gdGhlIHYxLjguMCBlcmEsIHdlIGNoYW5nZWQgc3ltYm9scyB0aGF0IGRvIG5vdCBoYXZlIHRvIGJlIGdsb2JhbAorICAgdG8gZmlsZSBzY29wZSBzdGF0aWMsIGJ1dCBhIGZldyBmdW5jdGlvbnMgaW4gZ3JhcGguYyB3ZXJlIHVzZWQgYnkKKyAgIENHaXQgZnJvbSBzaWRld2F5cyBieXBhc3NpbmcgdGhlIGVudHJ5IHBvaW50cyBvZiB0aGUgQVBJIHRoZQorICAgaW4tdHJlZSB1c2VycyB1c2UuCisKKyAqICJnaXQgbWVyZ2UtdHJlZSIgaGFkIGEgdHlwbyBpbiB0aGUgbG9naWMgdG8gZGV0ZWN0IGQvZiBjb25mbGljdHMsCisgICB3aGljaCBjYXVzZWQgaXQgdG8gc2VnZmF1bHQgaW4gc29tZSBjYXNlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMi50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYjQ4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjIudHh0CkBAIC0wLDAgKzEsNjEgQEAKK0dpdCB2MS44LjIuMiBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlcyBzaW5jZSB2MS44LjIuMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICogWnNoIGNvbXBsZXRpb24gZm9yZ290IHRoYXQgJyUnIGNoYXJhY3RlciB1c2VkIHRvIHNpZ25hbCB1bnRyYWNrZWQKKyAgIGZpbGVzIG5lZWRzIHRvIGJlIGVzY2FwZWQgd2l0aCBhbm90aGVyICclJy4KKworICogQSBjb21taXQgb2JqZWN0IHdob3NlIGF1dGhvciBvciBjb21taXR0ZXIgaWRlbnQgYXJlIG1hbGZvcm1lZAorICAgY3Jhc2hlZCBzb21lIGNvZGUgdGhhdCB0cnVzdGVkIHRoYXQgYSBuYW1lLCBhbiBlbWFpbCBhbmQgYW4KKyAgIHRpbWVzdGFtcCBjYW4gYWx3YXlzIGJlIGZvdW5kIGluIGl0LgorCisgKiBUaGUgbmV3IGNvcmUuY29tbWVudGNoYXIgY29uZmlndXJhdGlvbiB3YXMgbm90IGFwcGxpZWQgdG8gYSBmZXcKKyAgIHBsYWNlcy4KKworICogImdpdCBwdWxsIC0tcmViYXNlIiBkaWQgbm90IHBhc3MgIi12Ly1xIiBvcHRpb25zIHRvIHVuZGVybHlpbmcKKyAgICJnaXQgcmViYXNlIi4KKworICogV2hlbiByZWNlaXZlLXBhY2sgZGV0ZWN0cyBlcnJvciBpbiB0aGUgcGFjayBoZWFkZXIgaXQgcmVjZWl2ZWQgaW4KKyAgIG9yZGVyIHRvIGRlY2lkZSB3aGljaCBvZiB1bnBhY2stb2JqZWN0cyBvciBpbmRleC1wYWNrIHRvIHJ1biwgaXQKKyAgIHJldHVybmVkIHdpdGhvdXQgY2xvc2luZyB0aGUgZXJyb3Igc3RyZWFtLCB3aGljaCBsZWQgdG8gYSBoYW5nCisgICBzaWRlYmFuZCB0aHJlYWQuCisKKyAqICJnaXQgZGlmZiAtLWRpZmYtYWxnb3JpdGhtPWFsZ28iIHdhcyB1bmRlcnN0b29kIGJ5IHRoZSBjb21tYW5kIGxpbmUKKyAgIHBhcnNlciwgYnV0ICJnaXQgZGlmZiAtLWRpZmYtYWxnb3JpdGhtIGFsZ28iIHdhcyBub3QuCisKKyAqICJnaXQgbG9nIC1TLy1HIiBzdGFydGVkIHBheWluZyBhdHRlbnRpb24gdG8gdGV4dGNvbnYgZmlsdGVyLCBidXQKKyAgIHRoZXJlIHdhcyBubyB3YXkgdG8gZGlzYWJsZSB0aGlzLiAgTWFrZSBpdCBob25vciAtLW5vLXRleHRjb252CisgICBvcHRpb24uCisKKyAqICJnaXQgbWVyZ2UgJChnaXQgcmV2LXBhcnNlIHYxLjguMikiIGJlaGF2ZWQgcXVpdGUgZGlmZmVyZW50bHkgZnJvbQorICAgImdpdCBtZXJnZSB2MS44LjIiLCBhcyBpZiB2MS44LjIgd2VyZSB3cml0dGVuIGFzIHYxLjguMl4wIGFuZCBkaWQKKyAgIG5vdCBwYXkgbXVjaCBhdHRlbnRpb24gdG8gdGhlIGFubm90YXRlZCB0YWcgcGF5bG9hZC4gIE1ha2UgdGhlIGNvZGUKKyAgIG5vdGljZSB0aGUgdHlwZSBvZiB0aGUgdGFnIG9iamVjdCwgaW4gYWRkaXRpb24gdG8gdGhlIGR3aW1fcmVmKCkKKyAgIGJhc2VkIGNsYXNzaWZpY2F0aW9uIHRoZSBjdXJyZW50IGNvZGUgdXNlcyAoaS5lLiB0aGUgbmFtZSBhcHBlYXJzCisgICBpbiByZWZzL3RhZ3MvKSB0byBkZWNpZGUgd2hlbiB0byBzcGVjaWFsIGNhc2UgbWVyZ2luZyBvZiB0YWdzLgorCisgKiAiZ2l0IGNoZXJyeS1waWNrIiBhbmQgImdpdCByZXZlcnQiIGNhbiB0YWtlIG1vcmUgdGhhbiBvbmUgY29tbWl0CisgICBvbiB0aGUgY29tbWFuZCBsaW5lIHRoZXNlIGRheXMsIGJ1dCBpdCB3YXMgbm90IG1lbnRpb25lZCBvbiB0aGUgdXNhZ2UKKyAgIHRleHQuCisKKyAqIFBlcmwgc2NyaXB0cyBsaWtlICJnaXQtc3ZuIiBjbG9zZWQgKG5vdCByZWRpcmVjdGluZyB0byAvZGV2L251bGwpCisgICB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLCB3aGljaCBpcyBub3QgYSB2ZXJ5IHNtYXJ0IHRoaW5nIHRvIGRvLgorICAgTGF0ZXIgb3BlbiBtYXkgcmV0dXJuIGZpbGUgZGVzY3JpcHRvciAjMiBmb3IgdW5yZWxhdGVkIHB1cnBvc2UsIGFuZAorICAgZXJyb3IgcmVwb3J0aW5nIGNvZGUgbWF5IHdyaXRlIGludG8gdGhlbS4KKworICogImdpdCBhcHBseSAtLXdoaXRlc3BhY2U9Zml4IiB3YXMgbm90IHByZXBhcmVkIHRvIHNlZSBhIGxpbmUgZ2V0dGluZworICAgbG9uZ2VyIGFmdGVyIGZpeGluZyB3aGl0ZXNwYWNlcyAoZS5nLiB0YWItaW4taW5kZW50IGFrYSBQeXRob24pLgorCisgKiAiZ2l0IGRpZmYvbG9nIC0tY2MiIGRpZCBub3Qgd29yayB3ZWxsIHdpdGggb3B0aW9ucyB0aGF0IGlnbm9yZQorICAgd2hpdGVzcGFjZSBjaGFuZ2VzLgorCisgKiBEb2N1bWVudGF0aW9uIG9uIHNldHRpbmcgdXAgYSBodHRwIHNlcnZlciB0aGF0IHJlcXVpcmVzCisgICBhdXRoZW50aWNhdGlvbiBvbmx5IG9uIHRoZSBwdXNoIGJ1dCBub3QgZmV0Y2ggaGFzIGJlZW4gY2xhcmlmaWVkLgorCisgKiBBIGZldyBidWdmaXhlcyB0byAiZ2l0IHJlcmVyZSIgd29ya2luZyBvbiBjb3JuZXIgY2FzZSBtZXJnZQorICAgY29uZmxpY3RzIGhhdmUgYmVlbiBhcHBsaWVkLgorCisgKiAiZ2l0IGJ1bmRsZSIgZGlkIG5vdCBsaWtlIGEgYnVuZGxlIGNyZWF0ZWQgdXNpbmcgYSBjb21taXQgd2l0aG91dAorICAgYW55IG1lc3NhZ2UgYXMgaXRzIG9uZSBvZiB0aGUgcHJlcmVxdWlzdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEzOTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMy50eHQKQEAgLTAsMCArMSwxOSBAQAorR2l0IHYxLjguMi4zIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMi4yCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiAicmV2LWxpc3QgLS1zdGRpbiIgYW5kIGZyaWVuZHMga2VwdCBib2d1cyBwb2ludGVycyBpbnRvIHRoZSBpbnB1dAorICAgYnVmZmVyIGFyb3VuZCBhcyBodW1hbiByZWFkYWJsZSBvYmplY3QgbmFtZXMuICBUaGlzIHdhcyBub3QgYQorICAgaHVnZSBwcm9ibGVtIGJ1dCB3YXMgZXhwb3NlZCBieSBhIG5ldyBjaGFuZ2UgdGhhdCB1c2VzIHRoZXNlCisgICBuYW1lcyBpbiBlcnJvciBvdXRwdXQuCisKKyAqIFdoZW4gImdpdCBkaWZmdG9vbCIgZHJvdmUgImtkaWZmMyIsIGl0IG1pc3Rha2VubHkgcGFzc2VkIC0tYXV0bworICAgb3B0aW9uIHRoYXQgd2FzIG1lYW50IHdoaWxlIHJlc29sdmluZyBtZXJnZSBjb25mbGljdHMuCisKKyAqICJnaXQgcmVtb3RlIGFkZCIgY29tbWFuZCBkaWQgbm90IGRpYWdub3NlIGV4dHJhIGNvbW1hbmQgbGluZQorICAgYXJndW1lbnRzIGFzIGFuIGVycm9yIGFuZCBzaWxlbnRseSBpZ25vcmVkIHRoZW0uCisKK0Fsc28gY29udGFpbnMgYSBoYW5kZnVsIG9mIHRyaXZpYWwgY29kZSBjbGVhbi11cHMsIGRvY3VtZW50YXRpb24KK3VwZGF0ZXMsIHVwZGF0ZXMgdG8gdGhlIHRlc3Qgc3VpdGUsIGV0Yy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM2MDZhZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIudHh0CkBAIC0wLDAgKzEsNDk1IEBACitHaXQgdjEuOC4yIFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitCYWNrd2FyZCBjb21wYXRpYmlsaXR5IG5vdGVzICh0aGlzIHJlbGVhc2UpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyJnaXQgcHVzaCAkdGhlcmUgdGFnIHYxLjIuMyIgdXNlZCB0byBhbGxvdyByZXBsYWNpbmcgYSB0YWcgdjEuMi4zCit0aGF0IGFscmVhZHkgZXhpc3RzIGluIHRoZSByZXBvc2l0b3J5ICR0aGVyZSwgaWYgdGhlIHJld3JpdHRlbiB0YWcKK3lvdSBhcmUgcHVzaGluZyBwb2ludHMgYXQgYSBjb21taXQgdGhhdCBpcyBhIGRlc2NlbmRhbnQgb2YgYSBjb21taXQKK3RoYXQgdGhlIG9sZCB0YWcgdjEuMi4zIHBvaW50cyBhdC4gIFRoaXMgd2FzIGZvdW5kIHRvIGJlIGVycm9yIHByb25lCithbmQgc3RhcnRpbmcgd2l0aCB0aGlzIHJlbGVhc2UsIGFueSBhdHRlbXB0IHRvIHVwZGF0ZSBhbiBleGlzdGluZworcmVmIHVuZGVyIHJlZnMvdGFncy8gaGllcmFyY2h5IHdpbGwgZmFpbCwgd2l0aG91dCAiLS1mb3JjZSIuCisKK1doZW4gImdpdCBhZGQgLXUiIGFuZCAiZ2l0IGFkZCAtQSIgdGhhdCBkb2VzIG5vdCBzcGVjaWZ5IHdoYXQgcGF0aHMKK3RvIGFkZCBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biBmcm9tIGluc2lkZSBhIHN1YmRpcmVjdG9yeSwgdGhlCitzY29wZSBvZiB0aGUgb3BlcmF0aW9uIGhhcyBhbHdheXMgYmVlbiBsaW1pdGVkIHRvIHRoZSBzdWJkaXJlY3RvcnkuCitNYW55IHVzZXJzIGZvdW5kIHRoaXMgY291bnRlci1pbnR1aXRpdmUsIGdpdmVuIHRoYXQgImdpdCBjb21taXQgLWEiCithbmQgb3RoZXIgY29tbWFuZHMgb3BlcmF0ZSBvbiB0aGUgZW50aXJlIHRyZWUgcmVnYXJkbGVzcyBvZiB3aGVyZSB5b3UKK2FyZS4gIEluIHRoaXMgcmVsZWFzZSwgdGhlc2UgY29tbWFuZHMgZ2l2ZSBhIHdhcm5pbmcgbWVzc2FnZSB0aGF0CitzdWdnZXN0cyB0aGUgdXNlcnMgdG8gdXNlICJnaXQgYWRkIC11Ly1BIC4iIHdoZW4gdGhleSB3YW50IHRvIGxpbWl0Cit0aGUgc2NvcGUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5OyBkb2luZyBzbyB3aWxsIHNxdWVsY2ggdGhlIG1lc3NhZ2UsCit3aGlsZSB0cmFpbmluZyB0aGVpciBmaW5nZXJzLgorCisKK0JhY2t3YXJkIGNvbXBhdGliaWxpdHkgbm90ZXMgKGZvciBHaXQgMi4wKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gImdpdCBwdXNoIFskdGhlcmVdIiBkb2VzIG5vdCBzYXkgd2hhdCB0byBwdXNoLCB3ZSBoYXZlIHVzZWQgdGhlCit0cmFkaXRpb25hbCAibWF0Y2hpbmciIHNlbWFudGljcyBzbyBmYXIgKGFsbCB5b3VyIGJyYW5jaGVzIHdlcmUgc2VudAordG8gdGhlIHJlbW90ZSBhcyBsb25nIGFzIHRoZXJlIGFscmVhZHkgYXJlIGJyYW5jaGVzIG9mIHRoZSBzYW1lIG5hbWUKK292ZXIgdGhlcmUpLiAgSW4gR2l0IDIuMCwgdGhlIGRlZmF1bHQgd2lsbCBjaGFuZ2UgdG8gdGhlICJzaW1wbGUiCitzZW1hbnRpY3MgdGhhdCBwdXNoZXMgdGhlIGN1cnJlbnQgYnJhbmNoIHRvIHRoZSBicmFuY2ggd2l0aCB0aGUgc2FtZQorbmFtZSwgb25seSB3aGVuIHRoZSBjdXJyZW50IGJyYW5jaCBpcyBzZXQgdG8gaW50ZWdyYXRlIHdpdGggdGhhdAorcmVtb3RlIGJyYW5jaC4gIFRoZXJlIGlzIGEgdXNlciBwcmVmZXJlbmNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKKyJwdXNoLmRlZmF1bHQiIHRvIGNoYW5nZSB0aGlzLiAgSWYgeW91IGFyZSBhbiBvbGQtdGltZXIgd2hvIGlzIHVzZWQKK3RvIHRoZSAibWF0Y2hpbmciIHNlbWFudGljcywgeW91IGNhbiBzZXQgaXQgdG8gIm1hdGNoaW5nIiB0byBrZWVwIHRoZQordHJhZGl0aW9uYWwgYmVoYXZpb3VyLiAgSWYgeW91IHdhbnQgdG8gbGl2ZSBpbiB0aGUgZnV0dXJlIGVhcmx5LAoreW91IGNhbiBzZXQgaXQgdG8gInNpbXBsZSIgdG9kYXkgd2l0aG91dCB3YWl0aW5nIGZvciBHaXQgMi4wLgorCitXaGVuICJnaXQgYWRkIC11IiBhbmQgImdpdCBhZGQgLUEiLCB0aGF0IGRvZXMgbm90IHNwZWNpZnkgd2hhdCBwYXRocwordG8gYWRkIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuIGZyb20gaW5zaWRlIGEgc3ViZGlyZWN0b3J5LCB0aGVzZQorY29tbWFuZHMgd2lsbCBvcGVyYXRlIG9uIHRoZSBlbnRpcmUgdHJlZSBpbiBHaXQgMi4wIGZvciBjb25zaXN0ZW5jeQord2l0aCAiZ2l0IGNvbW1pdCAtYSIgYW5kIG90aGVyIGNvbW1hbmRzLiBCZWNhdXNlIHRoZXJlIHdpbGwgYmUgbm8KK21lY2hhbmlzbSB0byBtYWtlICJnaXQgYWRkIC11IiBiZWhhdmUgYXMgaWYgImdpdCBhZGQgLXUgLiIsIGl0IGlzCitpbXBvcnRhbnQgZm9yIHRob3NlIHdobyBhcmUgdXNlZCB0byAiZ2l0IGFkZCAtdSIgKHdpdGhvdXQgcGF0aHNwZWMpCit1cGRhdGluZyB0aGUgaW5kZXggb25seSBmb3IgcGF0aHMgaW4gdGhlIGN1cnJlbnQgc3ViZGlyZWN0b3J5IHRvIHN0YXJ0Cit0cmFpbmluZyB0aGVpciBmaW5nZXJzIHRvIGV4cGxpY2l0bHkgc2F5ICJnaXQgYWRkIC11IC4iIHdoZW4gdGhleSBtZWFuCitpdCBiZWZvcmUgR2l0IDIuMCBjb21lcy4KKworCitVcGRhdGVzIHNpbmNlIHYxLjguMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVUksIFdvcmtmbG93cyAmIEZlYXR1cmVzCisKKyAqIEluaXRpYWwgcG9ydHMgdG8gUU5YIGFuZCB6L09TIFVOSVggU3lzdGVtIFNlcnZpY2VzIGhhdmUgc3RhcnRlZC4KKworICogT3V0cHV0IGZyb20gdGhlIHRlc3RzIGlzIGNvbG91cmVkIHVzaW5nICJncmVlbiBpcyBva2F5LCB5ZWxsb3cgaXMKKyAgIHF1ZXN0aW9uYWJsZSwgcmVkIGlzIGJhZCBhbmQgYmx1ZSBpcyBpbmZvcm1hdGl2ZSIgc2NoZW1lLgorCisgKiBNZW50aW9uIG9mICJHSVQvR2l0L2dpdCIgaW4gdGhlIGRvY3VtZW50YXRpb24gaGF2ZSBiZWVuIHVwZGF0ZWQgdG8KKyAgIGJlIG1vcmUgdW5pZm9ybSBhbmQgY29uc2lzdGVudC4gIFRoZSBuYW1lIG9mIHRoZSBzeXN0ZW0gYW5kIHRoZQorICAgY29uY2VwdCBpdCBlbWJvZGllcyBpcyAiR2l0IjsgdGhlIGNvbW1hbmQgdGhlIHVzZXJzIHR5cGUgaXMgImdpdCIuCisgICBBbGwtY2FwcyAiR0lUIiB3YXMgbWVyZWx5IGEgd2F5IHRvIGltaXRhdGUgIkdpdCIgdHlwZXNldCBpbiBzbWFsbAorICAgY2FwcyBpbiBvdXIgQVNDSUkgdGV4dCBvbmx5IGRvY3VtZW50YXRpb24gYW5kIHRvIGJlIGF2b2lkZWQuCisKKyAqIFRoZSBjb21wbGV0aW9uIHNjcmlwdCAoaW4gY29udHJpYi9jb21wbGV0aW9uKSB1c2VkIHRvIGxldCB0aGUKKyAgIGRlZmF1bHQgY29tcGxldGVyIHRvIHN1Z2dlc3QgcGF0aG5hbWVzLCB3aGljaCBnYXZlIHRvbyBtYW55CisgICBpcnJlbGV2YW50IGNob2ljZXMgKGUuZy4gImdpdCBhZGQiIHdvdWxkIG5vdCB3YW50IHRvIGFkZCBhbgorICAgdW5tb2RpZmllZCBwYXRoKS4gIEl0IGxlYXJudCB0byB1c2UgYSBtb3JlIGdpdC1hd2FyZSBsb2dpYyB0bworICAgZW51bWVyYXRlIG9ubHkgcmVsZXZhbnQgb25lcy4KKworICogSW4gYmFyZSByZXBvc2l0b3JpZXMsICJnaXQgc2hvcnRsb2ciIGFuZCBvdGhlciBjb21tYW5kcyBub3cgcmVhZAorICAgbWFpbG1hcCBmaWxlcyBmcm9tIHRoZSB0aXAgb2YgdGhlIGhpc3RvcnksIHRvIGhlbHAgcnVubmluZyB0aGVzZQorICAgdG9vbHMgaW4gc2VydmVyIHNldHRpbmdzLgorCisgKiBDb2xvciBzcGVjaWZpZXJzLCBlLmcuICIlQyhibHVlKUhlbGxvJUMocmVzZXQpIiwgdXNlZCBpbiB0aGUKKyAgICItLWZvcm1hdD0iIG9wdGlvbiBvZiAiZ2l0IGxvZyIgYW5kIGZyaWVuZHMgY2FuIGJlIGRpc2FibGVkIHdoZW4KKyAgIHRoZSBvdXRwdXQgaXMgbm90IHNlbnQgdG8gYSB0ZXJtaW5hbCBieSBwcmVmaXhpbmcgdGhlbSB3aXRoCisgICAiYXV0bywiLCBlLmcuICIlQyhhdXRvLGJsdWUpSGVsbG8lQyhhdXRvLHJlc2V0KSIuCisKKyAqIFNjcmlwdHMgY2FuIGFzayBHaXQgdGhhdCB3aWxkY2FyZCBwYXR0ZXJucyBpbiBwYXRoc3BlY3MgdGhleSBnaXZlIGRvCisgICBub3QgaGF2ZSBhbnkgc2lnbmlmaWNhbmNlLCBpLmUuIHRha2UgdGhlbSBhcyBsaXRlcmFsIHN0cmluZ3MuCisKKyAqIFRoZSBwYXR0ZXJucyBpbiAuZ2l0aWdub3JlIGFuZCAuZ2l0YXR0cmlidXRlcyBmaWxlcyBjYW4gaGF2ZSAqKi8sCisgICBhcyBhIHBhdHRlcm4gdGhhdCBtYXRjaGVzIDAgb3IgbW9yZSBsZXZlbHMgb2Ygc3ViZGlyZWN0b3J5LgorICAgRS5nLiAiZm9vLyoqL2JhciIgbWF0Y2hlcyAiYmFyIiBpbiAiZm9vIiBpdHNlbGYgb3IgaW4gYQorICAgc3ViZGlyZWN0b3J5IG9mICJmb28iLgorCisgKiBXaGVuIGdpdmluZyBhcmd1bWVudHMgd2l0aG91dCAiLS0iIGRpc2FtYmlndWF0aW9uLCBvYmplY3QgbmFtZXMKKyAgIHRoYXQgY29tZSBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUgbXVzdCBub3QgYmUgaW50ZXJwcmV0YWJsZSBhcworICAgcGF0aHNwZWNzIGFuZCBwYXRoc3BlY3MgdGhhdCBjb21lIGxhdGVyIG9uIHRoZSBjb21tYW5kIGxpbmUgbXVzdAorICAgbm90IGJlIGludGVycHJldGFibGUgYXMgb2JqZWN0IG5hbWVzLiAgVGhpcyBkaXNhbWJpZ3VhdGlvbiBydWxlIGhhcworICAgYmVlbiB0d2Vha2VkIHNvIHRoYXQgIjovIiAobm8gb3RoZXIgc3RyaW5nIGJlZm9yZSBvciBhZnRlcikgaXMKKyAgIGFsd2F5cyBpbnRlcnByZXRlZCBhcyBhIHBhdGhzcGVjOyAiZ2l0IGNtZCAtLSA6LyIgaXMgbm8gbG9uZ2VyCisgICBuZWVkZWQsIHlvdSBjYW4ganVzdCBzYXkgImdpdCBjbWQgOi8iLgorCisgKiBWYXJpb3VzICJoaW50IiBsaW5lcyBHaXQgZ2l2ZXMgd2hlbiBpdCBhc2tzIHRoZSB1c2VyIHRvIGVkaXQKKyAgIG1lc3NhZ2VzIGluIHRoZSBlZGl0b3IgYXJlIGNvbW1lbnRlZCBvdXQgd2l0aCAnIycgYnkgZGVmYXVsdC4gVGhlCisgICBjb3JlLmNvbW1lbnRjaGFyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplCisgICB0aGlzICcjJyB0byBhIGRpZmZlcmVudCBjaGFyYWN0ZXIuCisKKyAqICJnaXQgYWRkIC11IiBhbmQgImdpdCBhZGQgLUEiIHdpdGhvdXQgcGF0aHNwZWMgaXNzdWVzIHdhcm5pbmcgdG8KKyAgIG1ha2UgdXNlcnMgYXdhcmUgdGhhdCB0aGV5IGFyZSBvbmx5IG9wZXJhdGluZyBvbiBwYXRocyBpbnNpZGUgdGhlCisgICBzdWJkaXJlY3RvcnkgdGhleSBhcmUgaW4uICBVc2UgIjovIiAoZXZlcnl0aGluZyBmcm9tIHRoZSB0b3ApIG9yCisgICAiLiIgKGV2ZXJ5dGhpbmcgZnJvbSB0aGUgJGN3ZCkgdG8gZGlzYW1iaWd1YXRlLgorCisgKiAiZ2l0IGJsYW1lIiAoYW5kICJnaXQgZGlmZiIpIGxlYXJuZWQgdGhlICItLW5vLWZvbGxvdyIgb3B0aW9uLgorCisgKiAiZ2l0IGJyYW5jaCIgbm93IHJlamVjdHMgc29tZSBub25zZW5zZSBjb21iaW5hdGlvbnMgb2YgY29tbWFuZCBsaW5lCisgICBhcmd1bWVudHMgKGUuZy4gZ2l2aW5nIG1vcmUgdGhhbiBvbmUgYnJhbmNoIG5hbWUgdG8gcmVuYW1lKSB3aXRoCisgICBtb3JlIGNhc2Utc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMuCisKKyAqICJnaXQgY2hlY2staWdub3JlIiBjb21tYW5kIHRvIGhlbHAgZGVidWdnaW5nIC5naXRpZ25vcmUgZmlsZXMgaGFzCisgICBiZWVuIGFkZGVkLgorCisgKiAiZ2l0IGNoZXJyeS1waWNrIiBjYW4gYmUgdXNlZCB0byByZXBsYXkgYSByb290IGNvbW1pdCB0byBhbiB1bmJvcm4KKyAgIGJyYW5jaC4KKworICogImdpdCBjb21taXQiIGNhbiBiZSB0b2xkIHRvIHVzZSAtLWNsZWFudXA9d2hpdGVzcGFjZSBieSBzZXR0aW5nIHRoZQorICAgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjb21taXQuY2xlYW51cCB0byAnd2hpdGVzcGFjZScuCisKKyAqICJnaXQgZGlmZiIgYW5kIG90aGVyIFBvcmNlbGFpbiBjb21tYW5kcyBjYW4gYmUgdG9sZCB0byB1c2UgYQorICAgbm9uLXN0YW5kYXJkIGFsZ29yaXRobSBieSBzZXR0aW5nIGRpZmYuYWxnb3JpdGhtIGNvbmZpZ3VyYXRpb24KKyAgIHZhcmlhYmxlLgorCisgKiAiZ2l0IGZldGNoIC0tbWlycm9yIiBhbmQgZmV0Y2ggdGhhdCB1c2VzIG90aGVyIGZvcm1zIG9mIHJlZnNwZWMKKyAgIHdpdGggd2lsZGNhcmQgdXNlZCB0byBhdHRlbXB0IHRvIHVwZGF0ZSBhIHN5bWJvbGljIHJlZiB0aGF0IG1hdGNoCisgICB0aGUgd2lsZGNhcmQgb24gdGhlIHJlY2VpdmluZyBlbmQsIHdoaWNoIG1hZGUgbGl0dGxlIHNlbnNlICh0aGUKKyAgIHJlYWwgcmVmIHRoYXQgaXMgcG9pbnRlZCBhdCBieSB0aGUgc3ltYm9saWMgcmVmIHdvdWxkIGJlIHVwZGF0ZWQKKyAgIGFueXdheSkuICBTeW1ib2xpYyByZWZzIG5vIGxvbmdlciBhcmUgYWZmZWN0ZWQgYnkgc3VjaCBhIGZldGNoLgorCisgKiAiZ2l0IGZvcm1hdC1wYXRjaCIgbm93IGRldGVjdHMgbW9yZSBjYXNlcyBpbiB3aGljaCBhIHdob2xlIGJyYW5jaAorICAgaXMgYmVpbmcgZXhwb3J0ZWQsIGFuZCB1c2VzIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCwgd2hlbgorICAgYXNrZWQgdG8gd3JpdGUgYSBjb3ZlciBsZXR0ZXIgZm9yIHRoZSBzZXJpZXMuCisKKyAqICJnaXQgZm9ybWF0LXBhdGNoIiBsZWFybmVkICItdiAkY291bnQiIG9wdGlvbiwgYW5kIHByZXBlbmRzIGEKKyAgIHN0cmluZyAidiRjb3VudC0iIHRvIHRoZSBuYW1lcyBvZiBpdHMgb3V0cHV0IGZpbGVzLCBhbmQgYWxzbworICAgYXV0b21hdGljYWxseSBzZXRzIHRoZSBzdWJqZWN0IHByZWZpeCB0byAiUEFUQ0ggdiRjb3VudCIuIFRoaXMKKyAgIGFsbG93cyBwYXRjaGVzIGZyb20gcmVyb2xsZWQgc2VyaWVzIHRvIGJlIHN0b3JlZCB1bmRlciBkaWZmZXJlbnQKKyAgIG5hbWVzIGFuZCBtYWtlcyBpdCBlYXNpZXIgdG8gcmV1c2UgY292ZXIgbGV0dGVyIG1lc3NhZ2VzLgorCisgKiAiZ2l0IGxvZyIgYW5kIGZyaWVuZHMgY2FuIGJlIHRvbGQgd2l0aCAtLXVzZS1tYWlsbWFwIG9wdGlvbiB0bworICAgcmV3cml0ZSB0aGUgbmFtZXMgYW5kIGVtYWlsIGFkZHJlc3NlcyBvZiBwZW9wbGUgdXNpbmcgdGhlIG1haWxtYXAKKyAgIG1lY2hhbmlzbS4KKworICogImdpdCBsb2cgLS1jYyAtLWdyYXBoIiBub3cgc2hvd3MgdGhlIGNvbWJpbmVkIGRpZmYgb3V0cHV0IHdpdGggdGhlCisgICBhbmNlc3RyeSBncmFwaC4KKworICogImdpdCBsb2cgLS1ncmVwPTxwYXR0ZXJuPiIgaG9ub3JzIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgdG8gbG9vaworICAgZm9yIHRoZSBwYXR0ZXJuIGFmdGVyIGZpeGluZyB0aGUgbG9nIG1lc3NhZ2UgdG8gdGhlIHNwZWNpZmllZAorICAgZW5jb2RpbmcuCisKKyAqICJnaXQgbWVyZ2V0b29sIiBhbmQgImdpdCBkaWZmdG9vbCIgbGVhcm5lZCB0byBsaXN0IHRoZSBhdmFpbGFibGUKKyAgIHRvb2wgYmFja2VuZHMgaW4gYSBtb3JlIGNvbnNpc3RlbnQgbWFubmVyLgorCisgKiAiZ2l0IG1lcmdldG9vbCIgaXMgYXdhcmUgb2YgVG9ydG9pc2VHaXRNZXJnZSBub3cgYW5kIHVzZXMgaXQgb3ZlcgorICAgVG9ydG9pc2VNZXJnZSB3aGVuIGF2YWlsYWJsZS4KKworICogImdpdCBwdXNoIiBub3cgcmVxdWlyZXMgIi1mIiB0byB1cGRhdGUgYSB0YWcsIGV2ZW4gaWYgaXQgaXMgYQorICAgZmFzdC1mb3J3YXJkLCBhcyB0YWdzIGFyZSBtZWFudCB0byBiZSBmaXhlZCBwb2ludHMuCisKKyAqIEVycm9yIG1lc3NhZ2VzIGZyb20gImdpdCBwdXNoIiB3aGVuIGl0IHN0b3BzIHRvIHByZXZlbnQgcmVtb3RlIHJlZnMKKyAgIGZyb20gZ2V0dGluZyBvdmVyd3JpdHRlbiBieSBtaXN0YWtlIGhhdmUgYmVlbiBpbXByb3ZlZCB0byBleHBsYWluCisgICB2YXJpb3VzIHNpdHVhdGlvbnMgc2VwYXJhdGVseS4KKworICogImdpdCBwdXNoIiB3aWxsIHN0b3Agd2l0aG91dCBkb2luZyBhbnl0aGluZyBpZiB0aGUgbmV3ICJwcmUtcHVzaCIKKyAgIGhvb2sgZXhpc3RzIGFuZCBleGl0cyB3aXRoIGEgZmFpbHVyZS4KKworICogV2hlbiAiZ2l0IHJlYmFzZSIgZmFpbHMgdG8gZ2VuZXJhdGUgcGF0Y2hlcyB0byBiZSBhcHBsaWVkIChlLmcuIGR1ZQorICAgdG8gb29tKSwgaXQgZmFpbGVkIHRvIGRldGVjdCB0aGUgZmFpbHVyZSBhbmQgaW5zdGVhZCBiZWhhdmVkIGFzIGlmCisgICB0aGVyZSB3ZXJlIG5vdGhpbmcgdG8gZG8uICBBIHdvcmthcm91bmQgdG8gdXNlIGEgdGVtcG9yYXJ5IGZpbGUgaGFzCisgICBiZWVuIGFwcGxpZWQsIGJ1dCB3ZSBwcm9iYWJseSB3b3VsZCB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciwgYXMKKyAgIGl0IGh1cnRzIHRoZSBjb21tb24gY2FzZSBvZiBub3QgZmFpbGluZyBhdCBhbGwuCisKKyAqIElucHV0IGFuZCBwcmVjb25kaXRpb25zIHRvICJnaXQgcmVzZXQiIGhhcyBiZWVuIGxvb3NlbmVkIHdoZXJlCisgICBhcHByb3ByaWF0ZS4gICJnaXQgcmVzZXQgJGZyb210cmVlIE1ha2VmaWxlIiByZXF1aXJlcyAkZnJvbXRyZWUgdG8KKyAgIGJlIGFueSB0cmVlIChpdCB1c2VkIHRvIHJlcXVpcmUgaXQgdG8gYmUgYSBjb21taXQpLCBmb3IgZXhhbXBsZS4KKyAgICJnaXQgcmVzZXQiICh3aXRob3V0IG9wdGlvbnMgb3IgcGFyYW1ldGVycykgdXNlZCB0byBlcnJvciBvdXQgd2hlbgorICAgeW91IGRvIG5vdCBoYXZlIGFueSBjb21taXRzIGluIHlvdXIgaGlzdG9yeSwgYnV0IGl0IG5vdyBnaXZlcyB5b3UKKyAgIGFuIGVtcHR5IGluZGV4ICh0byBtYXRjaCBub24tZXhpc3RlbnQgY29tbWl0IHlvdSBhcmUgbm90IGV2ZW4gb24pLgorCisgKiAiZ2l0IHN0YXR1cyIgc2F5cyB3aGF0IGJyYW5jaCBpcyBiZWluZyBiaXNlY3RlZCBvciByZWJhc2VkIHdoZW4KKyAgIGFibGUsIG5vdCBqdXN0ICJiaXNlY3RpbmciIG9yICJyZWJhc2luZyIuCisKKyAqICJnaXQgc3VibW9kdWxlIiBzdGFydGVkIGxlYXJuaW5nIGEgbmV3IG1vZGUgdG8gaW50ZWdyYXRlIHdpdGggdGhlCisgICB0aXAgb2YgdGhlIHJlbW90ZSBicmFuY2ggKGFzIG9wcG9zZWQgdG8gaW50ZWdyYXRpbmcgd2l0aCB0aGUgY29tbWl0CisgICByZWNvcmRlZCBpbiB0aGUgc3VwZXJwcm9qZWN0J3MgZ2l0bGluaykuCisKKyAqICJnaXQgdXBsb2FkLXBhY2siIHdoaWNoIGltcGxlbWVudHMgdGhlIHNlcnZpY2UgImxzLXJlbW90ZSIgYW5kCisgICAiZmV0Y2giIHRhbGsgdG8gY2FuIGJlIHRvbGQgdG8gaGlkZSByZWYgaGllcmFyY2hpZXMgdGhlIHNlcnZlcgorICAgc2lkZSBpbnRlcm5hbGx5IHVzZXMgKGFuZCB0aGF0IGNsaWVudHMgaGF2ZSBubyBidXNpbmVzcyBsZWFybmluZworICAgYWJvdXQpIHdpdGggdHJhbnNmZXIuaGlkZXJlZnMgY29uZmlndXJhdGlvbi4KKworCitGb3JlaWduIEludGVyZmFjZQorCisgKiAiZ2l0IGZhc3QtZXhwb3J0IiBoYXMgYmVlbiB1cGRhdGVkIGZvciBpdHMgdXNlIGluIHRoZSBjb250ZXh0IG9mCisgICB0aGUgcmVtb3RlIGhlbHBlciBpbnRlcmZhY2UuCisKKyAqIEEgbmV3IHJlbW90ZSBoZWxwZXIgdG8gaW50ZXJhY3Qgd2l0aCBienIgaGFzIGJlZW4gYWRkZWQgdG8gY29udHJpYi8uCisKKyAqICJnaXQgcDQiIGdvdCB2YXJpb3VzIGJ1Z2ZpeGVzIGFyb3VuZCBpdHMgYnJhbmNoIGhhbmRsaW5nLiAgSXQgaXMKKyAgIGFsc28gbWFkZSB1c2FibGUgd2l0aCBQeXRob24gMi40LzIuNS4gIEluIGFkZGl0aW9uLCBpdHMgdmFyaW91cworICAgcG9ydGFiaWxpdHkgaXNzdWVzIGZvciBDeWd3aW4gaGF2ZSBiZWVuIGFkZHJlc3NlZC4KKworICogVGhlIHJlbW90ZSBoZWxwZXIgdG8gaW50ZXJhY3Qgd2l0aCBIZyBpbiBjb250cmliLyBoYXMgc2VlbiBhIGZldworICAgZml4ZXMuCisKKworUGVyZm9ybWFuY2UsIEludGVybmFsIEltcGxlbWVudGF0aW9uLCBldGMuCisKKyAqICJnaXQgZnNjayIgaGFzIGJlZW4gdGF1Z2h0IHRvIGJlIHBpY2tpZXIgYWJvdXQgZW50cmllcyBpbiB0cmVlCisgICBvYmplY3RzIHRoYXQgc2hvdWxkIG5vdCBiZSB0aGVyZSwgZS5nLiAiLiIsICIuZ2l0IiwgYW5kICIuLiIuCisKKyAqIE1hdGNoaW5nIHBhdGhzIHdpdGggY29tbW9uIGZvcm1zIG9mIHBhdGhzcGVjcyB0aGF0IGNvbnRhaW4gd2lsZGNhcmQKKyAgIGNoYXJhY3RlcnMgaGFzIGJlZW4gb3B0aW1pemVkIGZ1cnRoZXIuCisKKyAqIFdlIHN0b3BwZWQgcGF5aW5nIGF0dGVudGlvbiB0byAkR0lUX0NPTkZJRyBlbnZpcm9ubWVudCB0aGF0IHBvaW50cworICAgYXQgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIGZyb20gYW55IGNvbW1hbmQgb3RoZXIgdGhhbiAiZ2l0IGNvbmZpZyIKKyAgIHF1aXRlIGEgd2hpbGUgYWdvLCBidXQgImdpdCBjbG9uZSIgaW50ZXJuYWxseSBzZXQsIGV4cG9ydGVkLCBhbmQKKyAgIHRoZW4gdW5leHBvcnRlZCB0aGUgdmFyaWFibGUgZHVyaW5nIGl0cyBvcGVyYXRpb24gdW5uZWNlc3NhcmlseS4KKworICogImdpdCByZXNldCIgaW50ZXJuYWxzIGhhcyBiZWVuIHJld29ya2VkIGFuZCBzaG91bGQgYmUgZmFzdGVyIGluCisgICBnZW5lcmFsLiBXZSB0cmllZCB0byBiZSBjYXJlZnVsIG5vdCB0byBicmVhayBhbnkgYmVoYXZpb3VyIGJ1dAorICAgdGhlcmUgY291bGQgYmUgY29ybmVyIGNhc2VzLCBlc3BlY2lhbGx5IHdoZW4gcnVubmluZyB0aGUgY29tbWFuZAorICAgZnJvbSBhIGNvbmZsaWN0ZWQgc3RhdGUsIHRoYXQgd2UgbWF5IGhhdmUgbWlzc2VkLgorCisgKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgImltYXAtc2VuZCIgaGFzIGJlZW4gdXBkYXRlZCB0byByZXVzZSB4bWwKKyAgIHF1b3RpbmcgY29kZSBmcm9tIGh0dHAtcHVzaCBjb2RlcGF0aCwgYW5kIGxvc3QgYSBsb3Qgb2YgdW51c2VkCisgICBjb2RlLgorCisgKiBUaGVyZSBpcyBhIHNpbXBsZS1taW5kZWQgY2hlY2tlciBmb3IgdGhlIHRlc3Qgc2NyaXB0cyBpbiB0LworICAgZGlyZWN0b3J5IHRvIGNhdGNoIG1vc3QgY29tbW9uIG1pc3Rha2VzIChpdCBpcyBub3QgZW5hYmxlZCBieQorICAgZGVmYXVsdCkuCisKKyAqIFlvdSBjYW4gYnVpbGQgd2l0aCBVU0VfV0lMRE1BVENIPVllc1BsZWFzZSB0byB1c2UgYSByZXBsYWNlbWVudAorICAgaW1wbGVtZW50YXRpb24gb2YgcGF0dGVybiBtYXRjaGluZyBsb2dpYyB1c2VkIGZvciBwYXRobmFtZS1saWtlCisgICB0aGluZ3MsIGUuZy4gcmVmbmFtZXMgYW5kIHBhdGhzIGluIHRoZSByZXBvc2l0b3J5LiAgVGhpcyBuZXcKKyAgIGltcGxlbWVudGF0aW9uIGlzIG5vdCBleHBlY3RlZCBjaGFuZ2UgdGhlIGV4aXN0aW5nIGJlaGF2aW91ciBvZiBHaXQKKyAgIGluIHRoaXMgcmVsZWFzZSwgZXhjZXB0IGZvciAiZ2l0IGZvci1lYWNoLXJlZiIgd2hlcmUgeW91IGNhbiBub3cKKyAgIHNheSAicmVmcy8qKi9tYXN0ZXIiIGFuZCBtYXRjaCB3aXRoIGJvdGggcmVmcy9oZWFkcy9tYXN0ZXIgYW5kCisgICByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3Rlci4gIFdlIHBsYW4gdG8gdXNlIHRoaXMgbmV3IGltcGxlbWVudGF0aW9uCisgICBpbiB3aWRlciBwbGFjZXMgKGUuZy4gImdpdCBscy1maWxlcyAnKiovTWFrZWZpbGUnIG1heSBmaW5kIE1ha2VmaWxlCisgICBhdCB0aGUgdG9wLWxldmVsLCBhbmQgImdpdCBsb2cgJyoqL3QqLnNoJyIgbWF5IGZpbmQgY29tbWl0cyB0aGF0CisgICB0b3VjaCBhIHNoZWxsIHNjcmlwdCB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoICJ0IiBhdCBhbnkgbGV2ZWwpIGluCisgICBmdXR1cmUgdmVyc2lvbnMgb2YgR2l0LCBidXQgd2UgYXJlIG5vdCB0aGVyZSB5ZXQuICBCeSBidWlsZGluZyB3aXRoCisgICBVU0VfV0lMRE1BVENILCB1c2luZyB0aGUgcmVzdWx0aW5nIEdpdCBkYWlseSBhbmQgcmVwb3J0aW5nIHdoZW4geW91CisgICBmaW5kIGJyZWFrYWdlcywgeW91IGNhbiBoZWxwIHVzIGdldCBjbG9zZXIgdG8gdGhhdCBnb2FsLgorCisgKiBTb21lIHJlaW1wbGVtZW50YXRpb25zIG9mIEdpdCBkbyBub3Qgd3JpdGUgYWxsIHRoZSBzdGF0IGluZm8gYmFjaworICAgdG8gdGhlIGluZGV4IGR1ZSB0byB0aGVpciBpbXBsZW1lbnRhdGlvbiBsaW1pdGF0aW9ucyAoZS5nLiBqZ2l0KS4KKyAgIEEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FuIHRlbGwgR2l0IHRvIGlnbm9yZSBjaGFuZ2VzIHRvIG1vc3Qgb2YKKyAgIHRoZSBzdGF0IGZpZWxkcyBhbmQgb25seSBwYXkgYXR0ZW50aW9uIHRvIG10aW1lIGFuZCBzaXplLCB3aGljaAorICAgdGhlc2UgaW1wbGVtZW50YXRpb25zIGNhbiByZWxpYWJseSB1cGRhdGUuICBUaGlzIGNhbiBiZSB1c2VkIHRvCisgICBhdm9pZCBleGNlc3NpdmUgcmV2YWxpZGF0aW9uIG9mIGNvbnRlbnRzLgorCisgKiBTb21lIHBsYXRmb3JtcyBzaGlwIHdpdGggb2xkIHZlcnNpb24gb2YgZXhwYXQgd2hlcmUgeG1scGFyc2UuaAorICAgbmVlZHMgdG8gYmUgaW5jbHVkZWQgaW5zdGVhZCBvZiBleHBhdC5oOyB0aGUgYnVpbGQgcHJvY2VkdXJlIGhhcworICAgYmVlbiB0YXVnaHQgYWJvdXQgdGhpcy4KKworICogIm1ha2UgY2xlYW4iIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBjb21wdXRlIGhlYWRlciBkZXBlbmRlbmNpZXMKKyAgIG9uIHRoZSBmbHkgZGlkIG5vdCB3b3JrIHdpdGggaW1wbGVtZW50YXRpb25zIG9mICJybSIgdGhhdCBkbyBub3QKKyAgIGxpa2UgYW4gZW1wdHkgYXJndW1lbnQgbGlzdC4KKworQWxzbyBjb250YWlucyBtaW5vciBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIGNvZGUgY2xlYW4tdXBzLgorCisKK0ZpeGVzIHNpbmNlIHYxLjguMQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCB0aGUgZml4ZXMgc2luY2UgdjEuOC4xIGluIHRoZSBtYWludGVuYW5jZQordHJhY2sgYXJlIGNvbnRhaW5lZCBpbiB0aGlzIHJlbGVhc2UgKHNlZSByZWxlYXNlIG5vdGVzIHRvIHRoZW0gZm9yCitkZXRhaWxzKS4KKworICogQW4gZWxlbWVudCBvbiBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUyBsaXN0IHRoYXQgZG9lcyBub3QgbmFtZSB0aGUKKyAgIHJlYWwgcGF0aCB0byBhIGRpcmVjdG9yeSAoaS5lLiBhIHN5bWJvbGljIGxpbmspIGNvdWxkIGhhdmUgY2F1c2VkCisgICB0aGUgR0lUX0RJUiBkaXNjb3ZlcnkgbG9naWMgdG8gZXNjYXBlIHRoZSBjZWlsaW5nLgorCisgKiBXaGVuIGF0dGVtcHRpbmcgdG8gcmVhZCB0aGUgWERHLXN0eWxlICRIT01FLy5jb25maWcvZ2l0L2NvbmZpZyBhbmQKKyAgIGZpbmRpbmcgdGhhdCAkSE9NRS8uY29uZmlnL2dpdCBpcyBhIGZpbGUsIHdlIGdhdmUgYSB3cm9uZyBlcnJvcgorICAgbWVzc2FnZSwgaW5zdGVhZCBvZiB0cmVhdGluZyB0aGUgY2FzZSBhcyAiYSBjdXN0b20gY29uZmlnIGZpbGUgZG9lcworICAgbm90IGV4aXN0IHRoZXJlIiBhbmQgbW92aW5nIG9uLgorCisgKiBUaGUgYmVoYXZpb3VyIHZpc2libGUgdG8gdGhlIGVuZCB1c2VycyB3YXMgY29uZnVzaW5nLCB3aGVuIHRoZXkKKyAgIGF0dGVtcHQgdG8ga2lsbCBhIHByb2Nlc3Mgc3Bhd25lZCBpbiB0aGUgZWRpdG9yIHRoYXQgd2FzIGluIHR1cm4KKyAgIGxhdW5jaGVkIGJ5IEdpdCB3aXRoIFNJR0lOVCAob3IgU0lHUVVJVCksIGFzIEdpdCB3b3VsZCBjYXRjaCB0aGF0CisgICBzaWduYWwgYW5kIGRpZS4gIFdlIGlnbm9yZSB0aGVzZSBzaWduYWxzIG5vdy4KKyAgIChtZXJnZSAwMzk4ZmMzNCBwZi9lZGl0b3ItaWdub3JlLXNpZ2ludCBsYXRlciB0byBtYWludCkuCisKKyAqIEEgY2hpbGQgcHJvY2VzcyB0aGF0IHdhcyBraWxsZWQgYnkgYSBzaWduYWwgKGUuZy4gU0lHSU5UKSB3YXMKKyAgIHJlcG9ydGVkIGluIGFuIGluY29uc2lzdGVudCB3YXkgZGVwZW5kaW5nIG9uIGhvdyB0aGUgcHJvY2VzcyB3YXMKKyAgIHNwYXduZWQgYnkgdXMsIHdpdGggb3Igd2l0aG91dCBhIHNoZWxsIGluIGJldHdlZW4uCisKKyAqIEFmdGVyIGZhaWxpbmcgdG8gY3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgdXNpbmcgbWtzdGVtcCgpLCBmYWlsaW5nCisgICBwYXRobmFtZSB3YXMgbm90IHJlcG9ydGVkIGNvcnJlY3RseSBvbiBzb21lIHBsYXRmb3Jtcy4KKworICogV2UgdXNlZCB0byBzdHVmZiAidXNlckAiIGFuZCB0aGVuIGFwcGVuZCB3aGF0IHdlIHJlYWQgZnJvbQorICAgL2V0Yy9tYWlsbmFtZSB0byBjb21lIHVwIHdpdGggYSBkZWZhdWx0IGUtbWFpbCBpZGVudCwgYnV0IGEgYnVnCisgICBsb3N0IHRoZSAidXNlckAiIHBhcnQuCisKKyAqIFRoZSBhdHRyaWJ1dGUgbWVjaGFuaXNtIGRpZG4ndCBhbGxvdyBsaW1pdGluZyBhdHRyaWJ1dGVzIHRvIGJlCisgICBhcHBsaWVkIHRvIG9ubHkgYSBzaW5nbGUgZGlyZWN0b3J5IGl0c2VsZiB3aXRoICJwYXRoLyIgbGlrZSB0aGUKKyAgIGV4Y2x1ZGUgbWVjaGFuaXNtIGRvZXMuICBUaGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHRoYXQKKyAgIHdhcyBtZXJnZWQgdG8gJ21haW50JyBhbmQgMS44LjEuMiB3YXMgd2l0aCBhIHNldmVyZSBwZXJmb3JtYW5jZQorICAgZGVncmFkYXRpb25zIGFuZCBuZWVkcyB0byBtZXJnZSBhIGZpeC11cCB0b3BpYy4KKworICogVGhlIHNtYXJ0IEhUVFAgY2xpZW50cyBmb3Jnb3QgdG8gdmVyaWZ5IHRoZSBjb250ZW50LXR5cGUgdGhhdCBjb21lcworICAgYmFjayBmcm9tIHRoZSBzZXJ2ZXIgc2lkZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdCBpcyBiZWluZworICAgaGFuZGxlZCBwcm9wZXJseS4KKworICogImdpdCBhbSIgZGlkIG5vdCBwYXJzZSBkYXRlc3RhbXAgY29ycmVjdGx5IGZyb20gSGcgZ2VuZXJhdGVkIHBhdGNoLAorICAgd2hlbiBpdCBpcyBydW4gaW4gYSBsb2NhbGUgb3V0c2lkZSBDIChvciBlbikuCisKKyAqICJnaXQgYXBwbHkiIG1pc2JlaGF2ZWQgd2hlbiBmaXhpbmcgd2hpdGVzcGFjZSBicmVha2FnZXMgYnkgcmVtb3ZpbmcKKyAgIGV4Y2VzcyB0cmFpbGluZyBibGFuayBsaW5lcy4KKworICogImdpdCBhcHBseSAtLXN1bW1hcnkiIGhhcyBiZWVuIHRhdWdodCB0byBtYWtlIHN1cmUgdGhlIHNpbWlsYXJpdHkKKyAgIHZhbHVlIHNob3duIGluIGl0cyBvdXRwdXQgaXMgc2Vuc2libGUsIGV2ZW4gd2hlbiB0aGUgaW5wdXQgaGFkIGEKKyAgIGJvZ3VzIHZhbHVlLgorCisgKiBBIHRhciBhcmNoaXZlIGNyZWF0ZWQgYnkgImdpdCBhcmNoaXZlIiByZWNvcmRlZCBhIGRpcmVjdG9yeSBpbiBhCisgICB3YXkgdGhhdCBtYWRlIE5ldEJTRCdzIGltcGxlbWVudGF0aW9uIG9mICJ0YXIiIHNvbWV0aW1lcyB1bmhhcHB5LgorCisgKiAiZ2l0IGFyY2hpdmUiIGRpZCBub3QgcmVjb3JkIHVuY29tcHJlc3NlZCBzaXplIGluIHRoZSBoZWFkZXIgd2hlbgorICAgc3RyZWFtaW5nIGEgemlwIGFyY2hpdmUsIHdoaWNoIGNvbmZ1c2VkIHNvbWUgaW1wbGVtZW50YXRpb25zIG9mIHVuemlwLgorCisgKiAiZ2l0IGFyY2hpdmUiIGRpZCBub3QgcGFyc2UgY29uZmlndXJhdGlvbiB2YWx1ZXMgaW4gdGFyLiogbmFtZXNwYWNlCisgICBjb3JyZWN0bHkuCisgICAobWVyZ2UgYjM4NzNjMyBqay9jb25maWctcGFyc2luZy1jbGVhbnVwIGxhdGVyIHRvIG1haW50KS4KKworICogQXR0ZW1wdCB0byAiYnJhbmNoIC0tZWRpdC1kZXNjcmlwdGlvbiIgYW4gZXhpc3RpbmcgYnJhbmNoLCB3aGlsZQorICAgYmVpbmcgb24gYSBkZXRhY2hlZCBIRUFELCBlcnJvcmVkIG91dC4KKworICogImdpdCBjbGVhbiIgc2hvd2VkIHdoYXQgaXQgd2FzIGdvaW5nIHRvIGRvLCBidXQgc29tZXRpbWVzIGVuZCB1cAorICAgZmluZGluZyB0aGF0IGl0IHdhcyBub3QgYWxsb3dlZCB0byBkbyBzbywgd2hpY2ggcmVzdWx0ZWQgaW4gYQorICAgY29uZnVzaW5nIG91dHB1dCAoZS5nLiBhZnRlciBzYXlpbmcgdGhhdCBpdCB3aWxsIHJlbW92ZSBhbgorICAgdW50cmFja2VkIGRpcmVjdG9yeSwgaXQgZm91bmQgYW4gZW1iZWRkZWQgZ2l0IHJlcG9zaXRvcnkgdGhlcmUKKyAgIHdoaWNoIGl0IGlzIG5vdCBhbGxvd2VkIHRvIHJlbW92ZSkuICBJdCBub3cgcGVyZm9ybXMgdGhlIGFjdGlvbnMKKyAgIGFuZCB0aGVuIHJlcG9ydHMgdGhlIG91dGNvbWUgbW9yZSBmYWl0aGZ1bGx5LgorCisgKiBXaGVuICJnaXQgY2xvbmUgLS1zZXBhcmF0ZS1naXQtZGlyPSRvdmVyX3RoZXJlIiBpcyBpbnRlcnJ1cHRlZCwgaXQKKyAgIGZhaWxlZCB0byByZW1vdmUgdGhlIHJlYWwgbG9jYXRpb24gb2YgdGhlICRHSVRfRElSIGl0IGNyZWF0ZWQuCisgICBUaGlzIHdhcyBtb3N0IHZpc2libGUgd2hlbiBpbnRlcnJ1cHRpbmcgYSBzdWJtb2R1bGUgdXBkYXRlLgorCisgKiAiZ2l0IGN2c2ltcG9ydCIgbWlzaGFuZGxlZCB0aW1lc3RhbXBzIGF0IERTVCBib3VuZGFyeS4KKworICogV2UgdXNlZCB0byBoYXZlIGFuIGFyYml0cmFyeSAzMiBsaW1pdCBmb3IgY29tYmluZWQgZGlmZiBpbnB1dCwKKyAgIHJlc3VsdGluZyBpbiBpbmNvcnJlY3QgbnVtYmVyIG9mIGxlYWRpbmcgY29sb25zIHNob3duIHdoZW4gc2hvd2luZworICAgdGhlICItLXJhdyAtLWNjIiBvdXRwdXQuCisKKyAqICJnaXQgZmV0Y2ggLS1kZXB0aCIgd2FzIGJyb2tlbiBpbiBhdCBsZWFzdCB0aHJlZSB3YXlzLiAgVGhlCisgICByZXN1bHRpbmcgaGlzdG9yeSB3YXMgZGVlcGVyIHRoYW4gc3BlY2lmaWVkIGJ5IG9uZSBjb21taXQsIGl0IHdhcworICAgdW5jbGVhciBob3cgdG8gd2lwZSB0aGUgc2hhbGxvd25lc3Mgb2YgdGhlIHJlcG9zaXRvcnkgd2l0aCB0aGUKKyAgIGNvbW1hbmQsIGFuZCBkb2N1bWVudGF0aW9uIHdhcyBtaXNsZWFkaW5nLgorICAgKG1lcmdlIGNmYjcwZTEgbmQvZmV0Y2gtZGVwdGgtaXMtYnJva2VuIGxhdGVyIHRvIG1haW50KS4KKworICogImdpdCBsb2cgLS1hbGwgLXAiIHRoYXQgd2Fsa2VkIHJlZnMvbm90ZXMvdGV4dGNvbnYvIHJlZiBjYW4gbGF0ZXIKKyAgIHRyeSB0byB1c2UgdGhlIHRleHRjb252IGRhdGEgaW5jb3JyZWN0bHkgYWZ0ZXIgaXQgZ2V0cyBmcmVlZC4KKworICogV2UgZm9yZ290IHRvIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IgcmVhZGluZyBmcm9tICJncGciIG91dHB1dCwKKyAgIGtpbGxpbmcgImdpdCBsb2cgLS1zaG93LXNpZ25hdHVyZSIgb24gYSBsb25nIGhpc3RvcnkuCisKKyAqIFRoZSB3YXkgImdpdCBzdm4iIGFza2VkIGZvciBwYXNzd29yZCB1c2luZyBTU0hfQVNLUEFTUyBhbmQKKyAgIEdJVF9BU0tQQVNTIHdhcyBub3QgaW4gbGluZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uCisKKyAqIFRoZSAtLWdyYXBoIGNvZGUgZmVsbCBpbnRvIGluZmluaXRlIGxvb3Agd2hlbiBhc2tlZCB0byBkbyB3aGF0IHRoZQorICAgY29kZSBkaWQgbm90IGV4cGVjdC4KKworICogaHR0cCB0cmFuc3BvcnQgd2FzIHdyb25nIHRvIGFzayBmb3IgdGhlIHVzZXJuYW1lIHdoZW4gdGhlCisgICBhdXRoZW50aWNhdGlvbiBpcyBkb25lIGJ5IGNlcnRpZmljYXRlIGlkZW50aXR5LgorCisgKiAiZ2l0IHBhY2stcmVmcyIgdGhhdCByYW4gaW4gcGFyYWxsZWwgdG8gYW5vdGhlciBwcm9jZXNzIHRoYXQKKyAgIGNyZWF0ZWQgbmV3IHJlZnMgaGFkIGEgbmFzdHkgcmFjZS4KKworICogUmViYXNpbmcgdGhlIGhpc3Rvcnkgb2Ygc3VwZXJwcm9qZWN0IHdpdGggY2hhbmdlIGluIHRoZSBzdWJtb2R1bGUKKyAgIGhhcyBiZWVuIGJyb2tlbiBzaW5jZSB2MS43LjEyLgorCisgKiBBZnRlciAiZ2l0IGFkZCAtTiIgYW5kIHRoZW4gd3JpdGluZyBhIHRyZWUgb2JqZWN0IG91dCBvZiB0aGUKKyAgIGluZGV4LCB0aGUgY2FjaGUtdHJlZSBkYXRhIHN0cnVjdHVyZSBnb3QgY29ycnVwdGVkLgorCisgKiAiZ2l0IGNsb25lIiB1c2VkIHRvIGFsbG93IC0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyPSR0aGVyZQorICAgb3B0aW9ucyBhdCB0aGUgc2FtZSB0aW1lLCB3aGljaCB3YXMgbm9uc2Vuc2ljYWwuCisKKyAqICJnaXQgcmViYXNlIC0tcHJlc2VydmUtbWVyZ2VzIiBsb3N0IGVtcHR5IG1lcmdlcyBpbiByZWNlbnQgdmVyc2lvbnMKKyAgIG9mIEdpdC4KKworICogImdpdCBtZXJnZSAtLW5vLWVkaXQiIGNvbXB1dGVkIHdobyB3ZXJlIGludm9sdmVkIGluIHRoZSB3b3JrIGRvbmUKKyAgIG9uIHRoZSBzaWRlIGJyYW5jaCwgZXZlbiB0aG91Z2ggdGhhdCBpbmZvcm1hdGlvbiBpcyB0byBiZSBkaXNjYXJkZWQKKyAgIHdpdGhvdXQgZ2V0dGluZyBzZWVuIGluIHRoZSBlZGl0b3IuCisKKyAqICJnaXQgbWVyZ2UiIHN0YXJ0ZWQgY2FsbGluZyBwcmVwYXJlLWNvbW1pdC1tc2cgaG9vayBsaWtlICJnaXQKKyAgIGNvbW1pdCIgZG9lcyBzb21lIHRpbWUgYWdvLCBidXQgZm9yZ290IHRvIHBheSBhdHRlbnRpb24gdG8gdGhlIGV4aXQKKyAgIHN0YXR1cyBvZiB0aGUgaG9vay4KKworICogQSBmYWlsdXJlIHRvIHB1c2ggZHVlIHRvIG5vbi1mZiB3aGlsZSBvbiBhbiB1bmJvcm4gYnJhbmNoCisgICBkZXJlZmVyZW5jZWQgYSBOVUxMIHBvaW50ZXIgd2hlbiBzaG93aW5nIGFuIGVycm9yIG1lc3NhZ2UuCisKKyAqIFdoZW4gdXNlcnMgc3BlbGwgImNjOiIgaW4gbG93ZXJjYXNlIGluIHRoZSBmYWtlICJoZWFkZXIiIGluIHRoZQorICAgdHJhaWxlciBwYXJ0LCAiZ2l0IHNlbmQtZW1haWwiIGZhaWxlZCB0byBwaWNrIHVwIHRoZSBhZGRyZXNzZXMgZnJvbQorICAgdGhlcmUuIEFzIGUtbWFpbCBoZWFkZXJzIGZpZWxkIG5hbWVzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLCB0aGlzCisgICBzY3JpcHQgc2hvdWxkIGZvbGxvdyBzdWl0IGFuZCB0cmVhdCAiY2M6IiBhbmQgIkNjOiIgdGhlIHNhbWUgd2F5LgorCisgKiBPdXRwdXQgZnJvbSAiZ2l0IHN0YXR1cyAtLWlnbm9yZWQiIHNob3dlZCBhbiB1bmV4cGVjdGVkIGludGVyYWN0aW9uCisgICB3aXRoICItLXVudHJhY2tlZCIuCisKKyAqICJnaXR3ZWIiLCB3aGVuIHNvcnRpbmcgYnkgYWdlIHRvIHNob3cgcmVwb3NpdG9yaWVzIHdpdGggbmV3CisgICBhY3Rpdml0aWVzIGZpcnN0LCB1c2VkIHRvIHNvcnQgcmVwb3NpdG9yaWVzIHdpdGggYWJzb2x1dGVseQorICAgbm90aGluZyBpbiBpdCBlYXJseSwgd2hpY2ggd2FzIG5vdCB2ZXJ5IHVzZWZ1bC4KKworICogImdpdHdlYiIncyBjb2RlIHRvIHNhbml0aXplIGNvbnRyb2wgY2hhcmFjdGVycyBiZWZvcmUgcGFzc2luZyBpdCB0bworICAgImhpZ2hsaWdodCIgZmlsdGVyIGxvc3Qga25vd24tdG8tYmUtc2FmZSBjb250cm9sIGNoYXJhY3RlcnMgYnkKKyAgIG1pc3Rha2UuCisKKyAqICJnaXR3ZWIiIHBhZ2VzIHNlcnZlZCBvdmVyIEhUVFBTLCB3aGVuIGNvbmZpZ3VyZWQgdG8gc2hvdyBwaWNvbiBvcgorICAgZ3JhdmF0YXIsIHJlZmVycmVkIHRvIHRoZXNlIGV4dGVybmFsIHJlc291cmNlcyB0byBiZSBmZXRjaGVkIHZpYQorICAgSFRUUCwgcmVzdWx0aW5nIGluIG1peGVkIGNvbnRlbnRzIHdhcm5pbmcgaW4gYnJvd3NlcnMuCisKKyAqIFdoZW4gYSBsaW5lIHRvIGJlIHdyYXBwZWQgaGFzIGEgc29saWQgcnVuIG9mIG5vbiBzcGFjZSBjaGFyYWN0ZXJzCisgICB3aG9zZSBsZW5ndGggZXhhY3RseSBpcyB0aGUgd3JhcCB3aWR0aCwgImdpdCBzaG9ydGxvZyAtdyIgZmFpbGVkCisgICB0byBhZGQgYSBuZXdsaW5lIGFmdGVyIHN1Y2ggYSBsaW5lLgorCisgKiBDb21tYW5kIGxpbmUgY29tcGxldGlvbiBsZWFrZWQgYW4gdW5uZWNlc3NhcnkgZXJyb3IgbWVzc2FnZSB3aGlsZQorICAgbG9va2luZyBmb3IgcG9zc2libGUgbWF0Y2hlcyB3aXRoIHBhdGhzIGluIDx0cmVlLWlzaD4uCisKKyAqIENvbW1hbmQgbGluZSBjb21wbGV0aW9uIGZvciAidGNzaCIgZW1pdHRlZCBhbiB1bndhbnRlZCBzcGFjZQorICAgYWZ0ZXIgY29tcGxldGluZyBhIHNpbmdsZSBkaXJlY3RvcnkgbmFtZS4KKworICogQ29tbWFuZCBsaW5lIGNvbXBsZXRpb24gY29kZSB3YXMgaW5hZHZlcnRlbnRseSBtYWRlIGluY29tcGF0aWJsZSB3aXRoCisgICBvbGRlciB2ZXJzaW9ucyBvZiBiYXNoIGJ5IHVzaW5nIGEgbmV3ZXIgYXJyYXkgbm90YXRpb24uCisKKyAqICJnaXQgcHVzaCIgd2FzIHRhdWdodCB0byByZWZ1c2UgdXBkYXRpbmcgdGhlIGJyYW5jaCB0aGF0IGlzCisgICBjdXJyZW50bHkgY2hlY2tlZCBvdXQgbG9uZyB0aW1lIGFnbywgYnV0IHRoZSB1c2VyIG1hbnVhbCB3YXMgbGVmdAorICAgc3RhbGUuCisgICAobWVyZ2UgNTA5OTVlZCB3ay9tYW4tZGVueS1jdXJyZW50LWJyYW5jaC1pcy1kZWZhdWx0LXRoZXNlLWRheXMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBTb21lIHNoZWxscyBkbyBub3QgYmVoYXZlIGNvcnJlY3RseSB3aGVuIElGUyBpcyB1bnNldDsgd29yayBpdAorICAgYXJvdW5kIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyBpdCB0byB0aGUgZGVmYXVsdCB2YWx1ZS4KKworICogU29tZSBzY3JpcHRlZCBwcm9ncmFtcyB3cml0dGVuIGluIFB5dGhvbiBkaWQgbm90IGdldCB1cGRhdGVkIHdoZW4KKyAgIFBZVEhPTl9QQVRIIGNoYW5nZWQuCisgICAoY2hlcnJ5LXBpY2sgOTZhNDY0N2ZjYTU0MDMxOTc0Y2Q2YWQxIGxhdGVyIHRvIG1haW50KS4KKworICogV2hlbiBhdXRvY29uZiBpcyB1c2VkLCBhbnkgYnVpbGQgb24gYSBkaWZmZXJlbnQgY29tbWl0IGFsd2F5cyByYW4KKyAgICJjb25maWcuc3RhdHVzIC0tcmVjaGVjayIgZXZlbiB3aGVuIHVubmVjZXNzYXJ5LgorCisgKiBBIGZpeCB3YXMgYWRkZWQgdG8gdGhlIGJ1aWxkIHByb2NlZHVyZSB0byB3b3JrIGFyb3VuZCBidWdneQorICAgdmVyc2lvbnMgb2YgY2NhY2hlIGJyb2tlIHRoZSBhdXRvLWdlbmVyYXRpb24gb2YgZGVwZW5kZW5jaWVzLCB3aGljaAorICAgdW5mb3J0dW5hdGVseSBpcyBzdGlsbCByZWxldmFudCBiZWNhdXNlIHNvbWUgcGVvcGxlIHVzZSBhbmNpZW50CisgICBkaXN0cm9zLgorCisgKiBUaGUgYXV0b2NvbmYgc3Vic3lzdGVtIHBhc3NlZCAtLW1hbmRpciBkb3duIHRvIGdlbmVyYXRlZAorICAgY29uZmlnLm1hay5hdXRvZ2VuIGJ1dCBmb3Jnb3QgdG8gZG8gdGhlIHNhbWUgZm9yIC0taHRtbGRpci4KKyAgIChtZXJnZSA1NWQ5YmYwIGN0L2F1dG9jb25mLWh0bWxkaXIgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBBIGNoYW5nZSBtYWRlIG9uIHYxLjguMS54IG1haW50ZW5hbmNlIHRyYWNrIGhhZCBhIG5hc3R5IHJlZ3Jlc3Npb24KKyAgIHRvIGJyZWFrIHRoZSBidWlsZCB3aGVuIGF1dG9jb25mIGlzIHVzZWQuCisgICAobWVyZ2UgN2YxYjY5NyBqbi9sZXNzLXJlY29uZmlndXJlIGxhdGVyIHRvIG1haW50KS4KKworICogV2UgaGF2ZSBiZWVuIGNhcnJ5aW5nIGEgdHJhbnNsYXRlZCBhbmQgbG9uZy11bm1haW50YWluZWQgY29weSBvZiBhbgorICAgb2xkIHZlcnNpb24gb2YgdGhlIHR1dG9yaWFsOyByZW1vdmVkLgorCisgKiB0MDA1MCBoYWQgdGVzdHMgZXhwZWN0aW5nIGZhaWx1cmVzIGZyb20gYSBidWcgdGhhdCB3YXMgZml4ZWQgc29tZQorICAgdGltZSBhZ28uCisKKyAqIHQ0MDE0LCB0OTUwMiBhbmQgdDAyMDAgdGVzdHMgaGFkIHZhcmlvdXMgcG9ydGFiaWxpdHkgaXNzdWVzIHRoYXQKKyAgIGJyb2tlIG9uIE9wZW5CU0QuCisKKyAqIHQ5MDIwIGFuZCB0MzYwMCB0ZXN0cyBoYWQgdmFyaW91cyBwb3J0YWJpbGl0eSBpc3N1ZXMuCisKKyAqIHQ5MjAwIHJ1bnMgImN2cyBpbml0IiBvbiBhIGRpcmVjdG9yeSB0aGF0IGFscmVhZHkgZXhpc3RzLCBidXQgYQorICAgcGxhdGZvcm0gY2FuIGNvbmZpZ3VyZSB0aGlzIGZhaWwgZm9yIHRoZSBjdXJyZW50IHVzZXIgKGUuZy4geW91CisgICBuZWVkIHRvIGJlIGluIHRoZSBjdnNhZG1pbiBncm91cCBvbiBOZXRCU0QgNi4wKS4KKworICogdDkwMjAgYW5kIHQ5ODEwIGhhZCBhIGZldyBub24tcG9ydGFibGUgc2hlbGwgc2NyaXB0IGNvbnN0cnVjdC4KKworICogU2NyaXB0cyB0byB0ZXN0IGJhc2ggY29tcGxldGlvbiB3YXMgaW5oZXJlbnRseSBmbGFreSBhcyBpdCB3YXMKKyAgIGFmZmVjdGVkIGJ5IHdoYXRldmVyIHJhbmRvbSB0aGluZ3MgdGhlIHVzZXIgbWF5IGhhdmUgb24gJFBBVEguCisKKyAqIEFuIGVsZW1lbnQgb24gR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMgY291bGQgYmUgYSAibG9naWNhbCIgcGF0aG5hbWUKKyAgIHRoYXQgdXNlcyBhIHN5bWJvbGljIGxpbmsgdG8gcG9pbnQgYXQgc29tZXdoZXJlIGVsc2UgKGUuZy4gL2hvbWUvbWUKKyAgIHRoYXQgcG9pbnRzIGF0IC9uZXQvaG9zdC9leHBvcnQvaG9tZS9tZSwgYW5kIHRoZSBsYXR0ZXIgZGlyZWN0b3J5CisgICBpcyBhdXRvbW91bnRlZCkuIEVhcmxpZXIgd2hlbiBHaXQgc2F3IHN1Y2ggYSBwYXRobmFtZSBlLmcuIC9ob21lL21lCisgICBvbiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgImNlaWxpbmciIG1lY2hhbmlzbSBkaWQgbm90IHRha2UKKyAgIGVmZmVjdC4gV2l0aCB0aGlzIHJlbGVhc2UgKHRoZSBmaXggaGFzIGFsc28gYmVlbiBtZXJnZWQgdG8gdGhlCisgICB2MS44LjEueCBtYWludGVuYW5jZSBzZXJpZXMpLCBlbGVtZW50cyBvbiBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUworICAgYXJlIGJ5IGRlZmF1bHQgY2hlY2tlZCBmb3Igc3VjaCBhbGlhc2luZyBjb21pbmcgZnJvbSBzeW1ib2xpYworICAgbGlua3MuIEFzIHRoaXMgbmVlZHMgdG8gYWN0dWFsbHkgcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyBmb3IgZWFjaAorICAgZWxlbWVudCBvbiB0aGUgR0lUX0NFSUxJTkdfRElSRUNUT1JJRVMsIHlvdSBjYW4gZGlzYWJsZSB0aGlzCisgICBtZWNoYW5pc20gZm9yIHNvbWUgZWxlbWVudHMgYnkgbGlzdGluZyB0aGVtIGFmdGVyIGFuIGVtcHR5IGVsZW1lbnQKKyAgIG9uIHRoZSBHSVRfQ0VJTElOR19ESVJFQ1RPUklFUy4gZS5nLiBTZXR0aW5nIC9ob21lL21lOjovaG9tZS9oaW0gdG8KKyAgIEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTIG1ha2VzIEdpdCByZXNvbHZlIHN5bWJvbGljIGxpbmtzIGluCisgICAvaG9tZS9tZSB3aGVuIGNoZWNraW5nIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyB1bmRlciAvaG9tZS9tZSwKKyAgIGJ1dCBkb2VzIG5vdCBkbyBzbyBmb3IgL2hvbWUvaGltLgorICAgKG1lcmdlIDdlYzMwYWEgbWgvbWFpbnQtY2VpbC1hYnNvbHV0ZSBsYXRlciB0byBtYWludCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy4xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzNlYTE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy4xLnR4dApAQCAtMCwwICsxLDE0IEBACitHaXQgdjEuOC4zLjEgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVzIHNpbmNlIHYxLjguMworLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIFdoZW4gJEhPTUUgaXMgbWlzY29uZmlndXJlZCB0byBwb2ludCBhdCBhbiB1bnJlYWRhYmxlIGRpcmVjdG9yeSwgd2UKKyAgIHVzZWQgdG8gY29tcGxhaW4gYW5kIGRpZS4gVGhlIGNoZWNrIGhhcyBiZWVuIGxvb3NlbmVkLgorCisgKiBIYW5kbGluZyBvZiBuZWdhdGl2ZSBleGNsdWRlIHBhdHRlcm4gZm9yIGRpcmVjdG9yaWVzICIhZGlyIiB3YXMKKyAgIGJyb2tlbiBpbiB0aGUgdXBkYXRlIHRvIHYxLjguMy4KKworQWxzbyBjb250YWlucyBhIGhhbmRmdWwgb2YgdHJpdmlhbCBjb2RlIGNsZWFuLXVwcywgZG9jdW1lbnRhdGlvbgordXBkYXRlcywgdXBkYXRlcyB0byB0aGUgdGVzdCBzdWl0ZSwgZXRjLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWQ1NjhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMy50eHQKQEAgLTAsMCArMSw0MzYgQEAKK0dpdCB2MS44LjMgUmVsZWFzZSBOb3RlcworPT09PT09PT09PT09PT09PT09PT09PT09CisKK0JhY2t3YXJkIGNvbXBhdGliaWxpdHkgbm90ZXMgKGZvciBHaXQgMi4wKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gImdpdCBwdXNoIFskdGhlcmVdIiBkb2VzIG5vdCBzYXkgd2hhdCB0byBwdXNoLCB3ZSBoYXZlIHVzZWQgdGhlCit0cmFkaXRpb25hbCAibWF0Y2hpbmciIHNlbWFudGljcyBzbyBmYXIgKGFsbCB5b3VyIGJyYW5jaGVzIHdlcmUgc2VudAordG8gdGhlIHJlbW90ZSBhcyBsb25nIGFzIHRoZXJlIGFscmVhZHkgYXJlIGJyYW5jaGVzIG9mIHRoZSBzYW1lIG5hbWUKK292ZXIgdGhlcmUpLiAgSW4gR2l0IDIuMCwgdGhlIGRlZmF1bHQgd2lsbCBjaGFuZ2UgdG8gdGhlICJzaW1wbGUiCitzZW1hbnRpY3MgdGhhdCBwdXNoZXMgb25seSB0aGUgY3VycmVudCBicmFuY2ggdG8gdGhlIGJyYW5jaCB3aXRoIHRoZSBzYW1lCituYW1lLCBhbmQgb25seSB3aGVuIHRoZSBjdXJyZW50IGJyYW5jaCBpcyBzZXQgdG8gaW50ZWdyYXRlIHdpdGggdGhhdAorcmVtb3RlIGJyYW5jaC4gIFVzZSB0aGUgdXNlciBwcmVmZXJlbmNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKKyJwdXNoLmRlZmF1bHQiIHRvIGNoYW5nZSB0aGlzLiAgSWYgeW91IGFyZSBhbiBvbGQtdGltZXIgd2hvIGlzIHVzZWQKK3RvIHRoZSAibWF0Y2hpbmciIHNlbWFudGljcywgeW91IGNhbiBzZXQgdGhlIHZhcmlhYmxlIHRvICJtYXRjaGluZyIKK3RvIGtlZXAgdGhlIHRyYWRpdGlvbmFsIGJlaGF2aW91ci4gIElmIHlvdSB3YW50IHRvIGxpdmUgaW4gdGhlIGZ1dHVyZQorZWFybHksIHlvdSBjYW4gc2V0IGl0IHRvICJzaW1wbGUiIHRvZGF5IHdpdGhvdXQgd2FpdGluZyBmb3IgR2l0IDIuMC4KKworV2hlbiAiZ2l0IGFkZCAtdSIgKGFuZCAiZ2l0IGFkZCAtQSIpIGlzIHJ1biBpbnNpZGUgYSBzdWJkaXJlY3RvcnkgYW5kCitkb2VzIG5vdCBzcGVjaWZ5IHdoaWNoIHBhdGhzIHRvIGFkZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBpdAord2lsbCBvcGVyYXRlIG9uIHRoZSBlbnRpcmUgdHJlZSBpbiBHaXQgMi4wIGZvciBjb25zaXN0ZW5jeQord2l0aCAiZ2l0IGNvbW1pdCAtYSIgYW5kIG90aGVyIGNvbW1hbmRzLiAgVGhlcmUgd2lsbCBiZSBubworbWVjaGFuaXNtIHRvIG1ha2UgcGxhaW4gImdpdCBhZGQgLXUiIGJlaGF2ZSBsaWtlICJnaXQgYWRkIC11IC4iLgorQ3VycmVudCB1c2VycyBvZiAiZ2l0IGFkZCAtdSIgKHdpdGhvdXQgYSBwYXRoc3BlYykgc2hvdWxkIHN0YXJ0Cit0cmFpbmluZyB0aGVpciBmaW5nZXJzIHRvIGV4cGxpY2l0bHkgc2F5ICJnaXQgYWRkIC11IC4iCitiZWZvcmUgR2l0IDIuMCBjb21lcy4gIEEgd2FybmluZyBpcyBpc3N1ZWQgd2hlbiB0aGVzZSBjb21tYW5kcyBhcmUKK3J1biB3aXRob3V0IGEgcGF0aHNwZWMgYW5kIHdoZW4geW91IGhhdmUgbG9jYWwgY2hhbmdlcyBvdXRzaWRlIHRoZQorY3VycmVudCBkaXJlY3RvcnksIGJlY2F1c2UgdGhlIGJlaGF2aW91ciBpbiBHaXQgMi4wIHdpbGwgYmUgZGlmZmVyZW50Citmcm9tIHRvZGF5J3MgdmVyc2lvbiBpbiBzdWNoIGEgc2l0dWF0aW9uLgorCitJbiBHaXQgMi4wLCAiZ2l0IGFkZCA8cGF0aD4iIHdpbGwgYmVoYXZlIGFzICJnaXQgYWRkIC1BIDxwYXRoPiIsIHNvCit0aGF0ICJnaXQgYWRkIGRpci8iIHdpbGwgbm90aWNlIHBhdGhzIHlvdSByZW1vdmVkIGZyb20gdGhlIGRpcmVjdG9yeQorYW5kIHJlY29yZCB0aGUgcmVtb3ZhbC4gIFZlcnNpb25zIGJlZm9yZSBHaXQgMi4wLCBpbmNsdWRpbmcgdGhpcworcmVsZWFzZSwgd2lsbCBrZWVwIGlnbm9yaW5nIHJlbW92YWxzLCBidXQgdGhlIHVzZXJzIHdobyByZWx5IG9uIHRoaXMKK2JlaGF2aW91ciBhcmUgZW5jb3VyYWdlZCB0byBzdGFydCB1c2luZyAiZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoPiIKK25vdyBiZWZvcmUgMi4wIGlzIHJlbGVhc2VkLgorCisKK1VwZGF0ZXMgc2luY2UgdjEuOC4yCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3JlaWduIGludGVyZmFjZQorCisgKiByZW1vdGUtaGcgYW5kIHJlbW90ZS1ienIgaGVscGVycyAoaW4gY29udHJpYi8gc2luY2UgdjEuOC4yKSBoYXZlCisgICBiZWVuIHVwZGF0ZWQ7IGVzcGVjaWFsbHksIHRoZSBsYXR0ZXIgaGFzIGJlZW4gZG9uZSBpbiBhbgorICAgYWNjZWxlcmF0ZWQgc2NoZWR1bGUgKHJlYWQ6IHdlIG1heSBub3QgaGF2ZSBtZXJnZWQgdG8gdGhpcyByZWxlYXNlCisgICBpZiB3ZSB3ZXJlIGZvbGxvd2luZyB0aGUgdXN1YWwgImNvb2sgc3VmZmljaWVudGx5IGluIG5leHQgYmVmb3JlCisgICB1bmxlYXNoaW5nIGl0IHRvIHRoZSB3b3JsZCIgd29ya2Zsb3cpIGluIG9yZGVyIHRvIGhlbHAgRW1hY3MgZm9sa3MsCisgICB3aG9zZSBwcmltYXJ5IFNDTSBzZWVtcyB0byBiZSBzdGFnbmF0aW5nLgorCisKK1VJLCBXb3JrZmxvd3MgJiBGZWF0dXJlcworCisgKiBBIGhhbmRmdWwgb2YgdXBkYXRlcyBhcHBsaWVkIHRvIGdpdGssIGluY2x1ZGluZyBhbiBhZGRpdGlvbiBvZgorICAgInJldmVydCIgYWN0aW9uLCBzaG93aW5nIGRhdGVzIGluIHRhZ3MgaW4gYSBuaWNlciB3YXksIG1ha2luZworICAgY29sb3JzIGNvbmZpZ3VyYWJsZSwgYW5kIHN1cHBvcnQgZm9yIC1HJ3BpY2theGUnIHNlYXJjaC4KKworICogVGhlIHByb21wdCBzdHJpbmcgZ2VuZXJhdG9yIChpbiBjb250cmliL2NvbXBsZXRpb24vKSBsZWFybmVkIHRvCisgICBzaG93IGhvdyBtYW55IGNoYW5nZXMgdGhlcmUgYXJlIGluIHRvdGFsIGFuZCBob3cgbWFueSBoYXZlIGJlZW4KKyAgIHJlcGxheWVkIGR1cmluZyBhICJnaXQgcmViYXNlIiBzZXNzaW9uLgorCisgKiAiZ2l0IGJyYW5jaCAtLXZ2IiBsZWFybmVkIHRvIHBhaW50IHRoZSBuYW1lIG9mIHRoZSBicmFuY2ggaXQKKyAgIGludGVncmF0ZXMgd2l0aCBpbiBhIGRpZmZlcmVudCBjb2xvciAoY29sb3IuYnJhbmNoLnVwc3RyZWFtLAorICAgd2hpY2ggZGVmYXVsdHMgdG8gYmx1ZSkuCisKKyAqIEluIGEgc3BhcnNlbHkgcG9wdWxhdGVkIHdvcmtpbmcgdHJlZSwgImdpdCBjaGVja291dCA8cGF0aHNwZWM+IiBubworICAgbG9uZ2VyIHVubWFya3MgcGF0aHMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0aHNwZWMgdGhhdCB3ZXJlCisgICBvcmlnaW5hbGx5IGlnbm9yZWQgd2l0aCAiLS1zcGFyc2UiICh1c2UgLS1pZ25vcmUtc2tpcC13b3JrdHJlZS1iaXRzCisgICBvcHRpb24gdG8gcmVzdXJyZWN0IHRoZXNlIHBhdGhzIG91dCBvZiB0aGUgaW5kZXggaWYgeW91IHJlYWxseSB3YW50CisgICB0bykuCisKKyAqICJnaXQgbG9nIC0tZm9ybWF0IiBzcGVjaWZpZXIgbGVhcm5lZCAlQyhhdXRvKSB0b2tlbiB0aGF0IHRlbGxzIEdpdAorICAgdG8gdXNlIGNvbG9yIHdoZW4gaW50ZXJwb2xhdGluZyAlZCAoZGVjb3JhdGlvbiksICVoIChzaG9ydCBjb21taXQKKyAgIG9iamVjdCBuYW1lKSwgZXRjLiBmb3IgdGVybWluYWwgb3V0cHV0LgorCisgKiAiZ2l0IGJpc2VjdCIgbGVhdmVzIHRoZSBmaW5hbCBvdXRjb21lIGFzIGEgY29tbWVudCBpbiBpdHMgYmlzZWN0CisgICBsb2cgZmlsZS4KKworICogImdpdCBjbG9uZSAtLXJlZmVyZW5jZSIgY2FuIG5vdyByZWZlciB0byBhIGdpdGZpbGUgInRleHR1YWwgc3ltbGluayIKKyAgIHRoYXQgcG9pbnRzIGF0IHRoZSByZWFsIGxvY2F0aW9uIG9mIHRoZSByZXBvc2l0b3J5LgorCisgKiAiZ2l0IGNvdW50LW9iamVjdHMiIGxlYXJuZWQgIi0taHVtYW4tcmVhZGFibGUiIGFrYSAiLUgiIG9wdGlvbiB0bworICAgc2hvdyB2YXJpb3VzIGxhcmdlIG51bWJlcnMgaW4gS2kvTWkvR2lCIHNjYWxlZCBhcyBuZWNlc3NhcnkuCisKKyAqICJnaXQgY2hlcnJ5LXBpY2sgJGJsb2IiIGFuZCAiZ2l0IGNoZXJyeS1waWNrICR0cmVlIiBhcmUgbm9uc2Vuc2UsCisgICBhbmQgYSBtb3JlIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgZS5nLiAiY2FuJ3QgY2hlcnJ5LXBpY2sgYSB0cmVlIgorICAgaXMgZ2l2ZW4gKHdlIHVzZWQgdG8gc2F5ICJleHBlY3RlZCBleGFjdGx5IG9uZSBjb21taXQiKS4KKworICogVGhlICItLWFubm90YXRlIiBvcHRpb24gdG8gImdpdCBzZW5kLWVtYWlsIiBjYW4gYmUgdHVybmVkIG9uIChvcgorICAgb2ZmKSBieSBkZWZhdWx0IHdpdGggc2VuZGVtYWlsLmFubm90YXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgKHlvdQorICAgY2FuIHVzZSAtLW5vLWFubm90YXRlIGZyb20gdGhlIGNvbW1hbmQgbGluZSB0byBvdmVycmlkZSBpdCkuCisKKyAqIFRoZSAiLS1jb3Zlci1sZXR0ZXIiIG9wdGlvbiB0byAiZ2l0IGZvcm1hdC1wYXRjaCIgY2FuIGJlIHR1cm5lZCBvbgorICAgKG9yIG9mZikgYnkgZGVmYXVsdCB3aXRoIGZvcm1hdC5jb3ZlckxldHRlciBjb25maWd1cmF0aW9uCisgICB2YXJpYWJsZS4gQnkgc2V0dGluZyBpdCB0byAnYXV0bycsIHlvdSBjYW4gdHVybiBpdCBvbiBvbmx5IGZvciBhCisgICBzZXJpZXMgd2l0aCB0d28gb3IgbW9yZSBwYXRjaGVzLgorCisgKiBUaGUgYmFzaCBjb21wbGV0aW9uIHN1cHBvcnQgKGluIGNvbnRyaWIvKSBsZWFybmVkIHRoYXQgY2hlcnJ5LXBpY2sKKyAgIHRha2VzIGEgZmV3IG1vcmUgb3B0aW9ucyB0aGFuIGl0IGFscmVhZHkga25ldyBhYm91dC4KKworICogImdpdCBoZWxwIiBsZWFybmVkICItZyIgb3B0aW9uIHRvIHNob3cgdGhlIGxpc3Qgb2YgZ3VpZGVzIGp1c3QgbGlrZQorICAgbGlzdCBvZiBjb21tYW5kcyBhcmUgZ2l2ZW4gd2l0aCAiLWEiLgorCisgKiBBIHRyaWFuZ3VsYXIgInB1bGwgZnJvbSBvbmUgcGxhY2UsIHB1c2ggdG8gYW5vdGhlciBwbGFjZSIgd29ya2Zsb3cKKyAgIGlzIHN1cHBvcnRlZCBiZXR0ZXIgYnkgbmV3IHJlbW90ZS5wdXNoZGVmYXVsdCAob3ZlcnJpZGVzIHRoZQorICAgIm9yaWdpbiIgdGhpbmcpIGFuZCBicmFuY2guKi5wdXNocmVtb3RlIChvdmVycmlkZXMgdGhlCisgICBicmFuY2guKi5yZW1vdGUpIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorCisgKiAiZ2l0IHN0YXR1cyIgbGVhcm5lZCB0byByZXBvcnQgdGhhdCB5b3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYQorICAgcmV2ZXJ0IHNlc3Npb24sIGp1c3QgbGlrZSBpdCBkb2VzIGZvciBhIGNoZXJyeS1waWNrIGFuZCBhIGJpc2VjdAorICAgc2Vzc2lvbi4KKworICogVGhlIGhhbmRsaW5nIGJ5ICJnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIiBhZ2FpbnN0IHZhcmlvdXMgZm9ybXMKKyAgIG9mIGVycm9uZW91cyBpbnB1dHMgd2FzIHN1Ym9wdGltYWwgYW5kIGhhcyBiZWVuIGltcHJvdmVkLgorCisgKiBXaGVuIHRoZSBpbnRlcmFjdGl2ZSBhY2Nlc3MgdG8gZ2l0LXNoZWxsIGlzIG5vdCBlbmFibGVkLCBpdCBpc3N1ZXMKKyAgIGEgbWVzc2FnZSBtZWFudCB0byBoZWxwIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB0byBlbmFibGUgaXQuICBBbgorICAgZXhwbGljaXQgd2F5IGhhcyBiZWVuIGFkZGVkIHRvIGlzc3VlIGN1c3RvbSBtZXNzYWdlcyB0byByZWZ1c2UgYW4KKyAgIGFjY2VzcyBvdmVyIHRoZSBuZXR3b3JrIHRvIGhlbHAgdGhlIGVuZCB1c2VycyB3aG8gY29ubmVjdCB0byB0aGUKKyAgIHNlcnZpY2UgZXhwZWN0aW5nIGFuIGludGVyYWN0aXZlIHNoZWxsLgorCisgKiBJbiBhZGRpdGlvbiB0byB0aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBlZGl0cyB0aGUgbG9nIG1lc3NhZ2Ugd2l0aAorICAgdGhlICJlKWRpdCIgb3B0aW9uIG9mICJhbSAtaSIsIHJlcGxhY2UgdGhlICJBcHBseWluZzogdGhpcyBwYXRjaCIKKyAgIG1lc3NhZ2Ugd2l0aCB0aGUgZmluYWwgbG9nIG1lc3NhZ2UgY29udGVudHMgYWZ0ZXIgYXBwbHltc2cgaG9vaworICAgbXVuZ2VzIGl0LgorCisgKiAiZ2l0IHN0YXR1cyIgc3VnZ2VzdHMgdXNlcnMgdG8gbG9vayBpbnRvIHVzaW5nIC0tdW50cmFja2VkPW5vIG9wdGlvbgorICAgd2hlbiBpdCB0YWtlcyB0b28gbG9uZy4KKworICogImdpdCBzdGF0dXMiIHNob3dzIGEgYml0IG1vcmUgaW5mb3JtYXRpb24gZHVyaW5nIGEgcmViYXNlL2Jpc2VjdAorICAgc2Vzc2lvbi4KKworICogImdpdCBmZXRjaCIgbGVhcm5lZCB0byBmZXRjaCBhIGNvbW1pdCBhdCB0aGUgdGlwIG9mIGFuIHVuYWR2ZXJ0aXNlZAorICAgcmVmIGJ5IHNwZWNpZnlpbmcgYSByYXcgb2JqZWN0IG5hbWUgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHdoZW4gdGhlCisgICBzZXJ2ZXIgc2lkZSBzdXBwb3J0cyB0aGlzIGZlYXR1cmUuCisKKyAqIE91dHB1dCBmcm9tICJnaXQgbG9nIC0tZ3JhcGgiIHdvcmtzIGJldHRlciB3aXRoIHN1Ym1vZHVsZSBsb2cKKyAgIG91dHB1dCBub3cuCisKKyAqICJnaXQgY291bnQtb2JqZWN0cyAtdiIgbGVhcm5lZCB0byByZXBvcnQgbGVmdG92ZXIgdGVtcG9yYXJ5CisgICBwYWNrZmlsZXMgYW5kIG90aGVyIGdhcmJhZ2UgaW4gdGhlIG9iamVjdCBzdG9yZS4KKworICogQSBuZXcgcmVhZC1vbmx5IGNyZWRlbnRpYWwgaGVscGVyIChpbiBjb250cmliLykgdG8gaW50ZXJhY3Qgd2l0aAorICAgdGhlIC5uZXRyYy8uYXV0aGluZm8gZmlsZXMgaGFzIGJlZW4gYWRkZWQuCisKKyAqICJnaXQgc2VuZC1lbWFpbCIgY2FuIGJlIHVzZWQgd2l0aCB0aGUgY3JlZGVudGlhbCBoZWxwZXIgc3lzdGVtLgorCisgKiBUaGVyZSB3YXMgbm8gUG9yY2VsYWluIHdheSB0byBzYXkgIkkgbm8gbG9uZ2VyIGFtIGludGVyZXN0ZWQgaW4KKyAgIHRoaXMgc3VibW9kdWxlIiwgb25jZSB5b3UgZXhwcmVzcyB5b3VyIGludGVyZXN0IGluIGEgc3VibW9kdWxlIHdpdGgKKyAgICJzdWJtb2R1bGUgaW5pdCIuICAic3VibW9kdWxlIGRlaW5pdCIgaXMgdGhlIHdheSB0byBkbyBzby4KKworICogImdpdCBwdWxsIC0tcmViYXNlIiBsZWFybmVkIHRvIHBhc3MgIi12Ly1xIiBvcHRpb25zIHRvIHVuZGVybHlpbmcKKyAgICJnaXQgcmViYXNlIi4KKworICogVGhlIG5ldyAiLS1mb2xsb3ctdGFncyIgb3B0aW9uIHRlbGxzICJnaXQgcHVzaCIgdG8gcHVzaCByZWxldmFudAorICAgYW5ub3RhdGVkIHRhZ3Mgd2hlbiBwdXNoaW5nIGJyYW5jaGVzIG91dC4KKworICogImdpdCBtZXJnZSIgYW5kICJnaXQgcHVsbCIgY2FuIG9wdGlvbmFsbHkgYmUgdG9sZCB0byBpbnNwZWN0IGFuZAorICAgcmVqZWN0IHdoZW4gbWVyZ2luZyBhIGNvbW1pdCB0aGF0IGRvZXMgbm90IGNhcnJ5IGEgdHJ1c3RlZCBHUEcKKyAgIHNpZ25hdHVyZS4KKworICogImdpdCBtZXJnZXRvb2wiIG5vdyBmZWVkcyBmaWxlcyB0byB0aGUgInA0bWVyZ2UiIGJhY2tlbmQgaW4gdGhlCisgICBvcmRlciB0aGF0IG1hdGNoZXMgdGhlIHA0IGNvbnZlbnRpb24sIHdoZXJlICJ0aGVpcnMiIGlzIHVzdWFsbHkKKyAgIHNob3duIG9uIHRoZSBsZWZ0IHNpZGUsIHdoaWNoIGlzIHRoZSBvcHBvc2l0ZSBmcm9tIHdoYXQgb3RoZXIgYmFja2VuZHMKKyAgIGV4cGVjdC4KKworICogInNob3cvbG9nIiBub3cgaG9ub3JzIGdwZy5wcm9ncmFtIGNvbmZpZ3VyYXRpb24ganVzdCBsaWtlIG90aGVyCisgICBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IHVzZSBHbnVQRy4KKworICogImdpdCBsb2ciIHRoYXQgc2hvd3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcGFyZW50IGFuZCB0aGUKKyAgIGNoaWxkIGhhcyBiZWVuIG9wdGltaXplZCBzb21ld2hhdC4KKworICogImdpdCBkaWZmdG9vbCIgYWxsb3dzIHRoZSB1c2VyIHRvIHdyaXRlIGludG8gdGhlIHRlbXBvcmFyeSBmaWxlcworICAgYmVpbmcgc2hvd247IGlmIHRoZSB1c2VyIG1ha2VzIGNoYW5nZXMgdG8gdGhlIHdvcmtpbmcgdHJlZSBhdCB0aGUKKyAgIHNhbWUgdGltZSwgaXQgbm93IHJlZnJhaW5zIGZyb20gb3ZlcndyaXRpbmcgdGhlIGNvcHkgaW4gdGhlIHdvcmtpbmcKKyAgIHRyZWUgYW5kIGxlYXZlcyB0aGUgdGVtcG9yYXJ5IGZpbGUgc28gdGhhdCBjaGFuZ2VzIGNhbiBiZSBtZXJnZWQKKyAgIG1hbnVhbGx5LgorCisgKiBUaGVyZSB3YXMgbm8gZ29vZCB3YXkgdG8gYXNrICJJIGhhdmUgYSByYW5kb20gc3RyaW5nIHRoYXQgY2FtZSBmcm9tCisgICBvdXRzaWRlIHdvcmxkLiBJIHdhbnQgdG8gdHVybiBpdCBpbnRvIGEgNDAtaGV4IG9iamVjdCBuYW1lIHdoaWxlCisgICBtYWtpbmcgc3VyZSBzdWNoIGFuIG9iamVjdCBleGlzdHMiLiAgQSBuZXcgcGVlbGluZyBzdWZmaXggXntvYmplY3R9CisgICBjYW4gYmUgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLCB0b2dldGhlciB3aXRoICJyZXYtcGFyc2UgLS12ZXJpZnkiLgorCisKK1BlcmZvcm1hbmNlLCBJbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiwgZXRjLgorCisgKiBVcGRhdGVzIGZvciBidWlsZGluZyB1bmRlciBtc3ZjLgorCisgKiBBIGhhbmRmdWwgb2YgaXNzdWVzIGluIHRoZSBjb2RlIHRoYXQgdHJhdmVyc2VzIHRoZSB3b3JraW5nIHRyZWUgdG8gZmluZAorICAgdW50cmFja2VkIGFuZC9vciBpZ25vcmVkIGZpbGVzIGhhdmUgYmVlbiBmaXhlZCwgYW5kIHRoZSBnZW5lcmFsCisgICBjb2RlcGF0aCBpbnZvbHZlZCBpbiAic3RhdHVzIC11IiBhbmQgImNsZWFuIiBoYXZlIGJlZW4gY2xlYW5lZCB1cAorICAgYW5kIG9wdGltaXplZC4KKworICogVGhlIHN0YWNrIGZvb3RwcmludCBvZiBzb21lIGNvZGVwYXRocyB0aGF0IGFjY2VzcyBhbiBvYmplY3QgZnJvbSBhCisgICBwYWNrIGhhcyBiZWVuIHNocnVuay4KKworICogVGhlIGxvZ2ljIHRvIGNvYWxlc2NlIHRoZSBzYW1lIGxpbmVzIHJlbW92ZWQgZnJvbSB0aGUgcGFyZW50cyBpbgorICAgdGhlIG91dHB1dCBmcm9tICJkaWZmIC1jLy0tY2MiIGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB3aXRoIE8obl4yKQorICAgY29tcGxleGl0eSwgc28gdGhpcyBtaWdodCB0dXJuIG91dCB0byBiZSB1bmRlc2lyYWJsZS4KKworICogVGhlIGNvZGUgdG8gZW5mb3JjZSBwZXJtaXNzaW9uIGJpdHMgb24gZmlsZXMgaW4gJEdJVF9ESVIvIGZvcgorICAgc2hhcmVkIHJlcG9zaXRvcmllcyBoYXMgYmVlbiBzaW1wbGlmaWVkLgorCisgKiBBIGZldyBjb2RlcGF0aHMga25vdyBob3cgbXVjaCBkYXRhIHRoZXkgbmVlZCB0byBwdXQgaW4gdGhlCisgICBoYXNodGFibGVzIHRoZXkgdXNlIHdoZW4gdGhleSBzdGFydCwgYnV0IHN0aWxsIGJlZ2FuIHdpdGggc21hbGwgdGFibGVzCisgICBhbmQgcmVwZWF0ZWRseSBncmV3IGFuZCByZWhhc2hlZCB0aGVtLgorCisgKiBUaGUgQVBJIHRvIHdhbGsgcmVmbG9nIGVudHJpZXMgZnJvbSB0aGUgbGF0ZXN0IHRvIG9sZGVyLCB3aGljaCB3YXMKKyAgIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyBzdWNoIGFzICJnaXQgY2hlY2tvdXQgLSIsIHdhcyBjdW1iZXJzb21lCisgICB0byB1c2UgY29ycmVjdGx5IGFuZCBhbHNvIGluZWZmaWNpZW50LgorCisgKiBDb2RlcGF0aHMgdGhhdCBpbnNwZWN0IGxvZy1tZXNzYWdlLXRvLWJlIGFuZCBkZWNpZGUgd2hlbiB0byBhZGQgYQorICAgbmV3IFNpZ25lZC1vZmYtYnkgbGluZSBpbiB2YXJpb3VzIGNvbW1hbmRzIGhhdmUgYmVlbiBjb25zb2xpZGF0ZWQuCisKKyAqIFRoZSBwa3QtbGluZSBBUEksIGltcGxlbWVudGF0aW9uIGFuZCBpdHMgY2FsbGVycyBoYXZlIGJlZW4gY2xlYW5lZAorICAgdXAgdG8gbWFrZSB0aGVtIG1vcmUgcm9idXN0LgorCisgKiBUaGUgQ3lnd2luIHBvcnQgaGFzIGEgZmFzdGVyLWJ1dC1seWluZyBsc3RhdCgyKSBlbXVsYXRpb24gd2hvc2UKKyAgIGluY29ycmVjdG5lc3MgZG9lcyBub3QgbWF0dGVyIGluIHByYWN0aWNlIGV4Y2VwdCBmb3IgYSBmZXcKKyAgIGNvZGVwYXRocywgYW5kIHNldHRpbmcgcGVybWlzc2lvbiBiaXRzIG9uIGRpcmVjdG9yaWVzIGlzIGEgY29kZXBhdGgKKyAgIHRoYXQgbmVlZHMgdG8gdXNlIGEgbW9yZSBjb3JyZWN0IG9uZS4KKworICogImdpdCBjaGVja291dCIgaGFkIHJlcGVhdGVkIHBhdGhzcGVjIG1hdGNoZXMgb24gdGhlIHNhbWUgcGF0aHMsCisgICB3aGljaCBoYXZlIGJlZW4gY29uc29saWRhdGVkLiAgQWxzbyBhIGJ1ZyBpbiAiZ2l0IGNoZWNrb3V0IGRpci8iCisgICB0aGF0IGlzIHN0YXJ0ZWQgZnJvbSBhbiB1bm1lcmdlZCBpbmRleCBoYXMgYmVlbiBmaXhlZC4KKworICogQSBmZXcgYnVnZml4ZXMgdG8gImdpdCByZXJlcmUiIHdvcmtpbmcgb24gY29ybmVyIGNhc2UgbWVyZ2UKKyAgIGNvbmZsaWN0cyBoYXZlIGJlZW4gYXBwbGllZC4KKworCitBbHNvIGNvbnRhaW5zIHZhcmlvdXMgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIGFuZCBjb2RlIGNsZWFuLXVwcy4KKworCitGaXhlcyBzaW5jZSB2MS44LjIKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgdGhlIGZpeGVzIHNpbmNlIHYxLjguMiBpbiB0aGUgbWFpbnRlbmFuY2UKK3RyYWNrIGFyZSBjb250YWluZWQgaW4gdGhpcyByZWxlYXNlIChzZWUgcmVsZWFzZSBub3RlcyB0byB0aGVtIGZvcgorZGV0YWlscykuCisKKyAqIFJlY2VudCB2ZXJzaW9ucyBvZiBGaWxlOjpUZW1wICh1c2VkIGJ5ICJnaXQgc3ZuIikgc3RhcnRlZCBibG93aW5nCisgICB1cCB3aGVuIGl0cyB0ZW1wZmlsZSBzdWIgaXMgY2FsbGVkIGFzIGEgY2xhc3MgbWV0aG9kOyB1cGRhdGVkIHRoZQorICAgY2FsbHNpdGUgdG8gY2FsbCBpdCBhcyBhIHBsYWluIHZhbmlsbGEgZnVuY3Rpb24gdG8gZml4IGl0LgorICAgKG1lcmdlIGVhZmMyZGQgaGIvZ2l0LXBtLXRlbXBmaWxlIGxhdGVyIHRvIG1haW50KS4KKworICogVmFyaW91cyBzdWJjb21tYW5kcyBvZiAiZ2l0IHJlbW90ZSIgc2ltcGx5IGlnbm9yZWQgZXh0cmFuZW91cworICAgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGRpYWdub3NpbmcgdGhlbSBhcyBlcnJvcnMuCisKKyAqIFdoZW4gcmVjZWl2ZS1wYWNrIGRldGVjdHMgYW4gZXJyb3IgaW4gdGhlIHBhY2sgaGVhZGVyIGl0IHJlY2VpdmVkIGluCisgICBvcmRlciB0byBkZWNpZGUgd2hpY2ggb2YgdW5wYWNrLW9iamVjdHMgb3IgaW5kZXgtcGFjayB0byBydW4sIGl0CisgICByZXR1cm5lZCB3aXRob3V0IGNsb3NpbmcgdGhlIGVycm9yIHN0cmVhbSwgd2hpY2ggbGVkIHRvIGEgaHVuZworICAgc2lkZWJhbmQgdGhyZWFkLgorCisgKiBac2ggY29tcGxldGlvbiBmb3Jnb3QgdGhhdCB0aGUgJyUnIGNoYXJhY3RlciB1c2VkIHRvIHNpZ25hbCB1bnRyYWNrZWQKKyAgIGZpbGVzIG5lZWRzIHRvIGJlIGVzY2FwZWQgd2l0aCBhbm90aGVyICclJy4KKworICogQSBjb21taXQgb2JqZWN0IHdob3NlIGF1dGhvciBvciBjb21taXR0ZXIgaWRlbnQgYXJlIG1hbGZvcm1lZAorICAgY3Jhc2hlZCBzb21lIGNvZGUgdGhhdCB0cnVzdGVkIHRoYXQgYSBuYW1lLCBhbiBlbWFpbCBhbmQgYQorICAgdGltZXN0YW1wIGNhbiBhbHdheXMgYmUgZm91bmQgaW4gaXQuCisKKyAqIFdoZW4gInVwbG9hZC1wYWNrIiBmYWlscyB3aGlsZSBnZW5lcmF0aW5nIGEgcGFjayBpbiByZXNwb25zZSB0bworICAgImdpdCBmZXRjaCIgKG9yICJnaXQgY2xvbmUiKSwgdGhlIHJlY2VpdmluZyBzaWRlIGhhZAorICAgYSBwcm9ncmFtbWluZyBlcnJvciB0aGF0IHRyaWdnZXJlZCB0aGUgZGllIGhhbmRsZXIKKyAgIHJlY3Vyc2l2ZWx5LgorCisgKiAicmV2LWxpc3QgLS1zdGRpbiIgYW5kIGZyaWVuZHMga2VwdCBib2d1cyBwb2ludGVycyBpbnRvIHRoZSBpbnB1dAorICAgYnVmZmVyIGFyb3VuZCBhcyBodW1hbiByZWFkYWJsZSBvYmplY3QgbmFtZXMuICBUaGlzIHdhcyBub3QgYSBodWdlCisgICBwcm9ibGVtIGJ1dCB3YXMgZXhwb3NlZCBieSBhIG5ldyBjaGFuZ2UgdGhhdCB1c2VzIHRoZXNlIG5hbWVzIGluCisgICBlcnJvciBvdXRwdXQuCisKKyAqIFNtYXJ0LWNhcGFibGUgSFRUUCBzZXJ2ZXJzIHdlcmUgbm90IHJlc3RyaWN0ZWQgdmlhIHRoZQorICAgR0lUX05BTUVTUEFDRSBtZWNoYW5pc20gd2hlbiB0YWxraW5nIHdpdGggY29tbWl0LXdhbGtpbmcgY2xpZW50cywKKyAgIGxpa2UgdGhleSBhcmUgd2hlbiB0YWxraW5nIHdpdGggc21hcnQgSFRUUCBjbGllbnRzLgorICAgKG1lcmdlIDYxMzBmODYgamsvaHR0cC1kdW1iLW5hbWVzcGFjZXMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IG1lcmdlLXRyZWUiIGRpZCBub3Qgb21pdCBhIG1lcmdlIHJlc3VsdCB0aGF0IGlzIGlkZW50aWNhbCB0bworICAgdGhlICJvdXIiIHNpZGUgaW4gY2VydGFpbiBjYXNlcy4KKyAgIChtZXJnZSBhYWNlY2MzIGprL21lcmdlLXRyZWUtYWRkZWQtaWRlbnRpY2FsbHkgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBQZXJsIHNjcmlwdHMgbGlrZSAiZ2l0LXN2biIgY2xvc2VkIChpbnN0ZWFkIG9mIHJlZGlyZWN0aW5nIHRvIC9kZXYvbnVsbCkKKyAgIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0sIHdoaWNoIGlzIG5vdCBhIHZlcnkgc21hcnQgdGhpbmcgdG8gZG8uCisgICBBIGxhdGVyIG9wZW4gbWF5IHJldHVybiBmaWxlIGRlc2NyaXB0b3IgIzIgZm9yIGFuIHVucmVsYXRlZCBwdXJwb3NlLCBhbmQKKyAgIGVycm9yIHJlcG9ydGluZyBjb2RlIG1heSB3cml0ZSBpbnRvIGl0LgorCisgKiAiZ2l0IHNob3ctYnJhbmNoIiB3YXMgbm90IHByZXBhcmVkIHRvIHNob3cgYSB2ZXJ5IGxvbmcgcnVuIG9mCisgICBhbmNlc3RvciBvcGVyYXRvcnMgZS5nLiBmb29iYXJeMn4yXjJeMl4yLi4uXjJ+NCBjb3JyZWN0bHkuCisKKyAqICJnaXQgZGlmZiAtLWRpZmYtYWxnb3JpdGhtIGFsZ28iIGlzIGFsc28gdW5kZXJzdG9vZCBhcyAiZ2l0IGRpZmYKKyAgIC0tZGlmZi1hbGdvcml0aG09YWxnbyIuCisKKyAqIFRoZSBuZXcgY29yZS5jb21tZW50Y2hhciBjb25maWd1cmF0aW9uIHdhcyBub3QgYXBwbGllZCBpbiBhIGZldworICAgcGxhY2VzLgorCisgKiAiZ2l0IGJ1bmRsZSIgZXJyb25lb3VzbHkgYmFpbGVkIG91dCB3aGVuIHBhcnNpbmcgYSB2YWxpZCBidW5kbGUKKyAgIGNvbnRhaW5pbmcgYSBwcmVyZXF1aXNpdGUgY29tbWl0IHdpdGhvdXQgYSBjb21taXQgbWVzc2FnZS4KKworICogImdpdCBsb2cgLVMvLUciIHN0YXJ0ZWQgcGF5aW5nIGF0dGVudGlvbiB0byB0ZXh0Y29udiBmaWx0ZXIsIGJ1dAorICAgdGhlcmUgd2FzIG5vIHdheSB0byBkaXNhYmxlIHRoaXMuICBNYWtlIGl0IGhvbm9yIHRoZSAtLW5vLXRleHRjb252CisgICBvcHRpb24uCisKKyAqIFdoZW4gdXNlZCB3aXRoIHRoZSAiLWQgdGVtcG9yYXJ5LWRpcmVjdG9yeSIgb3B0aW9uLCAiZ2l0IGZpbHRlci1icmFuY2giCisgICBmYWlsZWQgdG8gY29tZSBiYWNrIHRvIHRoZSBvcmlnaW5hbCB3b3JraW5nIHRyZWUgdG8gcGVyZm9ybSB0aGUKKyAgIGZpbmFsIGNsZWFuLXVwIHByb2NlZHVyZS4KKworICogImdpdCBtZXJnZSAkKGdpdCByZXYtcGFyc2UgdjEuOC4yKSIgYmVoYXZlZCBxdWl0ZSBkaWZmZXJlbnRseSBmcm9tCisgICAiZ2l0IG1lcmdlIHYxLjguMiIsIGFzIGlmIHYxLjguMiB3ZXJlIHdyaXR0ZW4gYXMgdjEuOC4yXjAgYW5kIGRpZAorICAgbm90IHBheSBtdWNoIGF0dGVudGlvbiB0byB0aGUgYW5ub3RhdGVkIHRhZyBwYXlsb2FkLiAgTWFrZSB0aGUgY29kZQorICAgbm90aWNlIHRoZSB0eXBlIG9mIHRoZSB0YWcgb2JqZWN0LCBpbiBhZGRpdGlvbiB0byB0aGUgZHdpbV9yZWYoKQorICAgYmFzZWQgY2xhc3NpZmljYXRpb24gdGhlIGN1cnJlbnQgY29kZSB1c2VzIChpLmUuIHRoZSBuYW1lIGFwcGVhcnMKKyAgIGluIHJlZnMvdGFncy8pIHRvIGRlY2lkZSB3aGVuIHRvIHNwZWNpYWwtY2FzZSB0YWcgbWVyZ2luZy4KKworICogRml4IGEgMS44LjEueCByZWdyZXNzaW9uIHRoYXQgc3RvcHBlZCBtYXRjaGluZyAiZGlyIiAod2l0aG91dCBhCisgICB0cmFpbGluZyBzbGFzaCkgdG8gYSBkaXJlY3RvcnkgImRpciIuCisKKyAqICJnaXQgYXBwbHkgLS13aGl0ZXNwYWNlPWZpeCIgd2FzIG5vdCBwcmVwYXJlZCB0byBzZWUgYSBsaW5lIGdldHRpbmcKKyAgIGxvbmdlciBhZnRlciBmaXhpbmcgd2hpdGVzcGFjZXMgKGUuZy4gdGFiLWluLWluZGVudCBha2EgUHl0aG9uKS4KKworICogVGhlIHByb21wdCBzdHJpbmcgZ2VuZXJhdG9yIChpbiBjb250cmliL2NvbXBsZXRpb24vKSBkaWQgbm90IG5vdGljZQorICAgd2hlbiB3ZSBhcmUgaW4gYSBtaWRkbGUgb2YgYSAiZ2l0IHJldmVydCIgc2Vzc2lvbi4KKworICogInN1Ym1vZHVsZSBzdW1tYXJ5IC0tc3VtbWFyeS1saW1pdCIgb3B0aW9uIGRpZCBub3Qgc3VwcG9ydCB0aGUKKyAgICItLW9wdGlvbj12YWx1ZSIgZm9ybS4KKworICogImluZGV4LXBhY2sgLS1maXgtdGhpbiIgdXNlZCBhbiB1bmluaXRpYWxpemVkIHZhbHVlIHRvIGNvbXB1dGUKKyAgIHRoZSBkZWx0YSBkZXB0aHMgb2Ygb2JqZWN0cyBpdCBhcHBlbmRzIHRvIHRoZSByZXN1bHRpbmcgcGFjay4KKworICogImluZGV4LXBhY2sgLS12ZXJpZnktc3RhdCIgdXNlZCBhIGZldyBjb3VudGVycyBvdXRzaWRlIHRoZSBwcm90ZWN0aW9uCisgICBvZiBhIG11dGV4LCBwb3NzaWJseSBzaG93aW5nIGluY29ycmVjdCBudW1iZXJzLgorCisgKiBUaGUgY29kZSB0byBrZWVwIHRyYWNrIG9mIHdoYXQgZGlyZWN0b3J5IG5hbWVzIGFyZSBrbm93biB0byBHaXQgb24KKyAgIHBsYXRmb3JtcyB3aXRoIGNhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMgY291bGQgZ2V0IGNvbmZ1c2VkIHVwb24gYQorICAgaGFzaCBjb2xsaXNpb24gYmV0d2VlbiB0aGVzZSBwYXRobmFtZXMgYW5kIHdvdWxkIGxvb3AgZm9yZXZlci4KKworICogQW5ub3RhdGVkIHRhZ3Mgb3V0c2lkZSB0aGUgcmVmcy90YWdzLyBoaWVyYXJjaHkgd2VyZSBub3QgYWR2ZXJ0aXNlZAorICAgY29ycmVjdGx5IHRvIGxzLXJlbW90ZSBhbmQgZmV0Y2ggd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgR2l0LgorCisgKiBSZWNlbnQgb3B0aW1pemF0aW9ucyBicm9rZSBzaGFsbG93IGNsb25lcy4KKworICogImdpdCBjbWQgLS0gJzoodG9wJyIgd2FzIG5vdCBkaWFnbm9zZWQgYXMgYW4gaW52YWxpZCBzeW50YXgsIGFuZAorICAgaW5zdGVhZCB0aGUgcGFyc2VyIGtlcHQgcmVhZGluZyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgorCisgKiAiZ2l0IHRhZyAtZiA8dGFnPiIgYWx3YXlzIHNhaWQgIlVwZGF0ZWQgdGFnICc8dGFnPiciIGV2ZW4gd2hlbgorICAgY3JlYXRpbmcgYSBuZXcgdGFnIChpLmUuIG5laXRoZXIgb3ZlcndyaXRpbmcgbm9yIHVwZGF0aW5nKS4KKworICogImdpdCBwNCIgZGlkIG5vdCBiZWhhdmUgd2VsbCB3aGVuIHRoZSBwYXRoIHRvIHRoZSByb290IG9mIHRoZSBQNAorICAgY2xpZW50IHdhcyBub3QgaXRzIHJlYWwgcGF0aC4KKyAgIChtZXJnZSBiYmQ4NDg2IHB3L3A0LXN5bWxpbmtlZC1yb290IGxhdGVyIHRvIG1haW50KS4KKworICogImdpdCBhcmNoaXZlIiByZXBvcnRlZCBhIGZhaWx1cmUgd2hlbiBhc2tlZCB0byBjcmVhdGUgYW4gYXJjaGl2ZSBvdXQKKyAgIG9mIGFuIGVtcHR5IHRyZWUuICBJdCBpcyBtb3JlIGludHVpdGl2ZSB0byBnaXZlIGFuIGVtcHR5CisgICBhcmNoaXZlIGJhY2sgaW4gc3VjaCBhIGNhc2UuCisKKyAqIFdoZW4gImZvcm1hdC1wYXRjaCIgcXVvdGVkIGEgbm9uLWFzY2lpIHN0cmluZyBpbiBoZWFkZXIgZmlsZXMsCisgICBpdCBpbmNvcnJlY3RseSBhcHBsaWVkIHJmYzIwNDcgYW5kIGNob3BwZWQgYSBzaW5nbGUgY2hhcmFjdGVyIGluCisgICB0aGUgbWlkZGxlIG9mIHRoZSBzdHJpbmcuCisKKyAqIEFuIGFsaWFzZWQgY29tbWFuZCBzcGF3bmVkIGZyb20gYSBiYXJlIHJlcG9zaXRvcnkgdGhhdCBkb2VzIG5vdCBzYXkKKyAgIGl0IGlzIGJhcmUgd2l0aCAiY29yZS5iYXJlID0geWVzIiB3YXMgdHJlYXRlZCBhcyBub24tYmFyZSBieSBtaXN0YWtlLgorCisgKiBJbiAiZ2l0IHJlZmxvZyBleHBpcmUiLCB0aGUgUkVBQ0hBQkxFIGJpdCB3YXMgbm90IGNsZWFyZWQgZnJvbSB0aGUKKyAgIGNvcnJlY3Qgb2JqZWN0cy4KKworICogVGhlIGxvZ2ljIHVzZWQgYnkgImdpdCBkaWZmIC1NIC0tc3RhdCIgdG8gc2hvcnRlbiB0aGUgbmFtZXMgb2YKKyAgIGZpbGVzIGJlZm9yZSBhbmQgYWZ0ZXIgYSByZW5hbWUgZGlkIG5vdCB3b3JrIGNvcnJlY3RseSB3aGVuIHRoZQorICAgY29tbW9uIHByZWZpeCBhbmQgc3VmZml4IGJldHdlZW4gdGhlIHR3byBmaWxlbmFtZXMgb3ZlcmxhcHBlZC4KKworICogVGhlICItLW1hdGNoPTxwYXR0ZXJuPiIgb3B0aW9uIG9mICJnaXQgZGVzY3JpYmUiLCB3aGVuIHVzZWQgd2l0aAorICAgIi0tYWxsIiB0byBhbGxvdyByZWZzIHRoYXQgYXJlIG5vdCBhbm5vdGF0ZWQgdGFncyB0byBiZSBhCisgICBiYXNlIG9mIGRlc2NyaXB0aW9uLCBkaWQgbm90IHJlc3RyaWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZAorICAgdG8gdGhvc2UgcmVmcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXR0ZXJuLgorCisgKiBDbGFyaWZ5IGluIHRoZSBkb2N1bWVudGF0aW9uICJ3aGF0IiBnZXRzIHB1c2hlZCB0byAid2hlcmUiIHdoZW4gdGhlCisgICBjb21tYW5kIGxpbmUgdG8gImdpdCBwdXNoIiBkb2VzIG5vdCBzYXkgdGhlc2UgZXhwbGljaXRseS4KKworICogVGhlICItLWNvbG9yPTx3aGVuPiIgYXJndW1lbnQgdG8gdGhlIGNvbW1hbmRzIGluIHRoZSBkaWZmIGZhbWlseQorICAgd2FzIGRlc2NyaWJlZCBwb29ybHkuCisKKyAqIFRoZSBhcmd1bWVudHMgZ2l2ZW4gdG8gdGhlIHByZS1yZWJhc2UgaG9vayB3ZXJlIG5vdCBkb2N1bWVudGVkLgorCisgKiBUaGUgdjQgaW5kZXggZm9ybWF0IHdhcyBub3QgZG9jdW1lbnRlZC4KKworICogVGhlICItLW1hdGNoPTxwYXR0ZXJuPiIgYXJndW1lbnQgImdpdCBkZXNjcmliZSIgdGFrZXMgdXNlcyBnbG9iCisgICBwYXR0ZXJuIGJ1dCBpdCB3YXNuJ3Qgb2J2aW91cyBmcm9tIHRoZSBkb2N1bWVudGF0aW9uLgorCisgKiBTb21lIHNvdXJjZXMgZmFpbGVkIHRvIGNvbXBpbGUgb24gc3lzdGVtcyB0aGF0IGxhY2sgTklfTUFYSE9TVCBpbgorICAgdGhlaXIgc3lzdGVtIGhlYWRlciAoZS5nLiB6L09TKS4KKworICogQWRkIGFuIGV4YW1wbGUgdXNlIG9mICItLWVudi1maWx0ZXIiIGluICJmaWx0ZXItYnJhbmNoIgorICAgZG9jdW1lbnRhdGlvbi4KKworICogImdpdCBidW5kbGUgdmVyaWZ5IiBkaWQgbm90IHNheSAicmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkiIGZvciBhCisgICBidW5kbGUgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBwcmVyZXF1aXNpdGVzLgorCisgKiBJbiB0aGUgdjEuOC4wIGVyYSwgd2UgY2hhbmdlZCBzeW1ib2xzIHRoYXQgZG8gbm90IGhhdmUgdG8gYmUgZ2xvYmFsCisgICB0byBmaWxlIHNjb3BlIHN0YXRpYywgYnV0IGEgZmV3IGZ1bmN0aW9ucyBpbiBncmFwaC5jIHdlcmUgdXNlZCBieQorICAgQ0dpdCBzaWRld2F5cywgYnlwYXNzaW5nIHRoZSBlbnRyeSBwb2ludHMgb2YgdGhlIEFQSSB0aGUKKyAgIGluLXRyZWUgdXNlcnMgdXNlLgorCisgKiAiZ2l0IHVwZGF0ZS1pbmRleCAtaCIgZGlkIG5vdCBkbyB0aGUgdXN1YWwgIi1oKGVscCkiIHRoaW5nLgorCisgKiAiZ2l0IGluZGV4LXBhY2siIGhhZCBhIGJ1ZmZlci1vdmVyZmxvdyB3aGlsZSBwcmVwYXJpbmcgYW4KKyAgIGluZm9ybWF0aW9uYWwgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgaXQgd2FzIHRvbworICAgbG9uZy4KKworICogJ2dpdCBjb21taXQgLW0gIiRtc2ciJyB1c2VkIHRvIGFkZCBhbiBleHRyYSBuZXdsaW5lIGV2ZW4gd2hlbgorICAgJG1zZyBhbHJlYWR5IGVuZGVkIHdpdGggb25lLgorCisgKiBUaGUgU1NMIHBlZXIgdmVyaWZpY2F0aW9uIGRvbmUgYnkgImdpdCBpbWFwLXNlbmQiIGRpZCBub3QgYXNrIGZvcgorICAgU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoUkZDIDQzNjYpLCBmYWlsaW5nIHRvIGNvbm5lY3QgdG8gU1NML1RMUworICAgc2l0ZXMgdGhhdCBzZXJ2ZSBtdWx0aXBsZSBob3N0bmFtZXMgb24gYSBzaW5nbGUgSVAuCisKKyAqIHBlcmwvR2l0LnBtOjpjYXRfYmxvYiBzbHVycGVkIGV2ZXJ5dGhpbmcgaW4gY29yZSBvbmx5IHRvIHdyaXRlIGl0CisgICBvdXQgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIHdoaWNoIHdhcyBub3QgYSB2ZXJ5IHNtYXJ0IHRoaW5nIHRvIGRvLgorCisgKiAiZ2l0IGJyYW5jaCIgZGlkIG5vdCBib3RoZXIgdG8gY2hlY2sgbm9uc2Vuc2UgY29tbWFuZCBsaW5lCisgICBwYXJhbWV0ZXJzLiAgSXQgbm93IGlzc3VlcyBlcnJvcnMgaW4gbWFueSBjYXNlcy4KKworICogVmVyaWZpY2F0aW9uIG9mIHNpZ25lZCB0YWdzIHdhcyBub3QgZG9uZSBjb3JyZWN0bHkgd2hlbiBub3QgaW4gQworICAgb3IgZW4vVVMgbG9jYWxlLgorCisgKiBTb21lIHBsYXRmb3JtcyBhbmQgdXNlcnMgc3BlbGwgVVRGLTggZGlmZmVyZW50bHk7IHJldHJ5IHdpdGggdGhlCisgICBtb3N0IG9mZmljaWFsICJVVEYtOCIgd2hlbiB0aGUgc3lzdGVtIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlCisgICB1c2VyLXN1cHBsaWVkIGVuY29kaW5nIG5hbWUgdGhhdCBpcyBhIGNvbW1vbiBhbHRlcm5hdGl2ZQorICAgc3BlbGxpbmcgb2YgVVRGLTguCisKKyAqIFdoZW4gZXhwb3J0LXN1YnN0IGlzIHVzZWQsICJ6aXAiIG91dHB1dCByZWNvcmRlZCBhbiBpbmNvcnJlY3QKKyAgIHNpemUgb2YgdGhlIGZpbGUuCisKKyAqICJnaXQgYW0gJG1haWxkaXIvIiBhcHBsaWVkIG1lc3NhZ2VzIGluIGFuIHVuZXhwZWN0ZWQgb3JkZXI7IHNvcnQKKyAgIGZpbGVuYW1lcyByZWFkIGZyb20gdGhlIG1haWxkaXIvIGluIGEgd2F5IHRoYXQgaXMgbW9yZSBsaWtlbHkgdG8KKyAgIHNvcnQgdGhlIG1lc3NhZ2VzIGluIHRoZSBvcmRlciB0aGUgd3JpdGluZyBNVUEgbWVhbnQgdG8sIGJ5IHNvcnRpbmcKKyAgIG51bWVyaWMgc2VnbWVudHMgaW4gbnVtZXJpYyBvcmRlciBhbmQgbm9uLW51bWVyaWMgc2VnbWVudHMgaW4KKyAgIGFscGhhYmV0aWNhbCBvcmRlci4KKworICogImdpdCBzdWJtb2R1bGUgdXBkYXRlIiwgd2hlbiByZWN1cnNlZCBpbnRvIHN1Yi1zdWJtb2R1bGVzLCBkaWQgbm90CisgICBhY2N1bXVsYXRlIHRoZSBwcmVmaXggcGF0aHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC40LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNjk5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC40LnR4dApAQCAtMCwwICsxLDI4NiBAQAorR2l0IHYxLjguNCBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVXBkYXRlcyBzaW5jZSB2MS44LjMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvcmVpZ24gaW50ZXJmYWNlcywgc3Vic3lzdGVtcyBhbmQgcG9ydHMuCisKKyAqIEdpdC1ndWkgaGFzIGJlZW4gdXBkYXRlZCB0byBpdHMgMC4xOC4wIHZlcnNpb24uCisKKyAqIE1lZGlhV2lraSByZW1vdGUgaGVscGVyIChpbiBjb250cmliLykgaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlCisgICBjcmVkZW50aWFsIGhlbHBlciBpbnRlcmZhY2UgZnJvbSBHaXQucG0uCisKKyAqIFVwZGF0ZSBidWlsZCBmb3IgQ3lnd2luIDEuWzU3XS4gIFRvcnN0ZW4gQsO2Z2Vyc2hhdXNlbiByZXBvcnRzIHRoYXQKKyAgIHRoaXMgaXMgZmluZSB3aXRoIEN5Z3dpbiAxLjcgKCRnbWFuZS8yMjU4MjQpIHNvIGxldCdzIHRyeSBtb3ZpbmcgaXQKKyAgIGFoZWFkLgorCisgKiBUaGUgY3JlZGVudGlhbCBoZWxwZXIgdG8gdGFsayB0byBrZXljaGFpbiBvbiBPUyBYIChpbiBjb250cmliLykgaGFzCisgICBiZWVuIHVwZGF0ZWQgdG8ga2ljayBpbiBub3QganVzdCB3aGVuIHRhbGtpbmcgaHR0cC9odHRwcyBidXQgYWxzbworICAgaW1hcChzKSBhbmQgc210cC4KKworICogUmVtb3RlIHRyYW5zcG9ydCBoZWxwZXIgaGFzIGJlZW4gdXBkYXRlZCB0byByZXBvcnQgZXJyb3JzIGFuZAorICAgbWFpbnRhaW4gcmVmIGhpZXJhcmNoeSB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgaXRzIG93biBzdGF0ZSBiZXR0ZXIuCisKKyAqIFdpdGggImV4cG9ydCIgcmVtb3RlLWhlbHBlciBwcm90b2NvbCwgKDEpIGEgcHVzaCB0aGF0IHRyaWVzIHRvCisgICB1cGRhdGUgYSByZW1vdGUgcmVmIHdob3NlIG5hbWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIHB1c2hpbmcgc2lkZQorICAgZG9lcyBub3Qgd29yayB5ZXQsIGFuZCAoMikgdGhlIGhlbHBlciBtYXkgbm90IGtub3cgaG93IHRvIGRvCisgICAtLWRyeS1ydW47IHRoZXNlIHByb2JsZW1hdGljIGNhc2VzIGFyZSBkaXNhYmxlZCBmb3Igbm93LgorCisgKiBnaXQtcmVtb3RlLWhnL2J6ciAoaW4gY29udHJpYi8pIHVwZGF0ZXMuCisKKyAqIGdpdC1yZW1vdGUtbXcgKGluIGNvbnRyaWIvKSBoaW50cyB1c2VycyB0byBjaGVjayB0aGUgY2VydGlmaWNhdGUsCisgICB3aGVuIGh0dHBzOi8vIGNvbm5lY3Rpb24gZmFpbGVkLgorCisKK1VJLCBXb3JrZmxvd3MgJiBGZWF0dXJlcworCisgKiAiZ2l0IHJtIiBnaXZlcyBhIHNpbmdsZSBtZXNzYWdlIGZvbGxvd2VkIGJ5IGxpc3Qgb2YgcGF0aHMgdG8gcmVwb3J0CisgICBtdWx0aXBsZSBwYXRocyB0aGF0IGNhbm5vdCBiZSByZW1vdmVkLgorCisgKiAiZ2l0IHJlYmFzZSIgY2FuIGJlIHRvbGQgd2l0aCAiOi9sb29rIGZvciB0aGlzIHN0cmluZyIgc3ludGF4IGNvbW1pdHMKKyAgIHRvIHJlcGxheSB0aGUgY2hhbmdlcyBvbnRvIGFuZCB3aGVyZSB0aGUgd29yayB0byBiZSByZXBsYXllZCBiZWdpbnMuCisKKyAqIE1hbnkgdHV0b3JpYWxzIHRlYWNoIHVzZXJzIHRvIHNldCAiY29sb3IudWkiIHRvICJhdXRvIiBhcyB0aGUgZmlyc3QKKyAgIHRoaW5nIGFmdGVyIHlvdSBzZXQgInVzZXIubmFtZS9lbWFpbCIgdG8gaW50cm9kdWNlIHlvdXJzZWx2ZXMgdG8KKyAgIEdpdC4gIE5vdyB0aGUgdmFyaWFibGUgZGVmYXVsdHMgdG8gImF1dG8iLgorCisgKiBPbiBDeWd3aW4sICJjeWdzdGFydCIgaXMgbm93IHJlY29nbmlzZWQgYXMgYSBwb3NzaWJsZSB3YXkgdG8gc3RhcnQKKyAgIGEgd2ViIGJyb3dzZXIgKHVzZWQgaW4gImhlbHAgLXciIGFuZCAiaW5zdGF3ZWIiIGFtb25nIG90aGVycykuCisKKyMjIyAqICJnaXQgc3RhdHVzIiBsZWFybmVkIHN0YXR1cy5icmFuY2ggYW5kIHN0YXR1cy5zaG9ydCBjb25maWd1cmF0aW9uCisjIyMgICB2YXJpYWJsZXMgdG8gdXNlIC0tYnJhbmNoIGFuZCAtLXNob3J0IG9wdGlvbnMgYnkgZGVmYXVsdCAob3ZlcnJpZGUKKyMjIyAgIHdpdGggLS1uby1icmFuY2ggYW5kIC0tbm8tc2hvcnQgb3B0aW9ucyBmcm9tIHRoZSBjb21tYW5kIGxpbmUpLgorCisgKiAiZ2l0IGNtZCA8bmFtZT4iLCB3aGVuIDxuYW1lPiBoYXBwZW5zIHRvIGJlIGEgNDAtaGV4IHN0cmluZywKKyAgIGRpcmVjdGx5IHVzZXMgdGhlIDQwLWhleCBzdHJpbmcgYXMgYW4gb2JqZWN0IG5hbWUsIGV2ZW4gaWYgYSByZWYKKyAgICJyZWZzLzxzb21lIGhpZXJhcmNoeT4vPG5hbWU+IiBleGlzdHMuICBUaGlzIGRpc2FtYmlndWF0aW9uIG9yZGVyCisgICBpcyB1bmxpa2VseSB0byBjaGFuZ2UsIGJ1dCB3ZSBzaG91bGQgd2FybiBhYm91dCB0aGUgYW1iaWd1aXR5IGp1c3QKKyAgIGxpa2Ugd2Ugd2FybiB3aGVuIG1vcmUgdGhhbiBvbmUgcmVmcy8gaGllcmFjaGllcyBzaGFyZSB0aGUgc2FtZQorICAgbmFtZS4KKworICogImdpdCByZWJhc2UiIGxlYXJuZWQgIi0tW25vLV1hdXRvc3Rhc2giIG9wdGlvbiB0byBzYXZlIGxvY2FsCisgICBjaGFuZ2VzIGluc3RlYWQgb2YgcmVmdXNpbmcgdG8gcnVuICh0byB3aGljaCBwZW9wbGUncyBub3JtYWwKKyAgIHJlc3BvbnNlIHdhcyB0byBzdGFzaCB0aGVtIGFuZCByZS1ydW4pLiAgVGhpcyBpbnRyb2R1Y2VkIGEgY29ybmVyCisgICBjYXNlIGJyZWFrYWdlIHRvICJnaXQgYW0gLS1hYm9ydCIgYnV0IGl0IGhhcyBiZWVuIGZpeGVkLgorCisgKiBJbnN0ZWFkIG9mIHR5cGluZyBmb3VyIGNhcGl0YWwgbGV0dGVycyAiSEVBRCIsIHlvdSBjYW4gc2F5ICJAIiBub3csCisgICBlLmcuICJnaXQgbG9nIEAiLgorCisgKiAiY2hlY2staWdub3JlIiAobmV3IGZlYXR1cmUgc2luY2UgMS44LjIpIGhhcyBiZWVuIHVwZGF0ZWQgdG8gd29yaworICAgbW9yZSBsaWtlICJjaGVjay1hdHRyIiBvdmVyIGJpZGktcGlwZXMuCisKKyAqICJnaXQgZGVzY3JpYmUiIGxlYXJuZWQgIi0tZmlyc3QtcGFyZW50IiBvcHRpb24gdG8gbGltaXQgaXRzIGNsb3Nlc3QKKyAgIHRhZ2dlZCBjb21taXQgc2VhcmNoIHRvIHRoZSBmaXJzdC1wYXJlbnQgY2hhaW4uCisKKyAqICJnaXQgbWVyZ2UgZm9vIiB0aGF0IG1pZ2h0IGhhdmUgbWVhbnQgImdpdCBtZXJnZSBvcmlnaW4vZm9vIiBpcworICAgZGlhZ25vc2VkIHdpdGggYSBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UuCisKKyAqICJnaXQgbG9nIC1MPGxpbmU+LDxyYW5nZT46PGZpbGVuYW1lPiIgaGFzIGJlZW4gYWRkZWQuICBUaGlzIG1heQorICAgc3RpbGwgaGF2ZSBsZWFrcyBhbmQgcm91Z2ggZWRnZXMsIHRob3VnaC4KKworICogV2UgdXNlZCB0aGUgYXBwcm94aWRhdGUoKSBwYXJzZXIgZm9yICItLWV4cGlyZT08dGltZXN0YW1wPiIgb3B0aW9ucworICAgb2YgdmFyaW91cyBjb21tYW5kcywgYnV0IGl0IGlzIGJldHRlciB0byB0cmVhdCAtLWV4cGlyZT1hbGwgYW5kCisgICAtLWV4cGlyZT1ub3cgYSBiaXQgbW9yZSBzcGVjaWFsbHkgdGhhbiB1c2luZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCisgICAiZ2l0IGdjIiBhbmQgImdpdCByZWZsb2ciIGhhdmUgYmVlbiB1cGRhdGVkIHdpdGggYSBuZXcgcGFyc2luZworICAgZnVuY3Rpb24gZm9yIGV4cGlyeSBkYXRlcy4KKworICogVXBkYXRlcyB0byBjb21wbGV0aW9uIChib3RoIGJhc2ggYW5kIHpzaCkgaGVscGVycy4KKworICogVGhlIGJlaGF2aW91ciBvZiB0aGUgIi0tY2hhaW4tcmVwbHktdG8iIG9wdGlvbiBvZiAiZ2l0IHNlbmQtZW1haWwiCisgICBoYXZlIGNoYW5nZWQgYXQgMS43LjAsIGFuZCB3ZSBhZGRlZCBhIHdhcm5pbmcvYWR2aWNlIG1lc3NhZ2UgdG8KKyAgIGhlbHAgdXNlcnMgYWRqdXN0IHRvIHRoZSBuZXcgYmVoYXZpb3VyIGJhY2sgdGhlbiwgYnV0IHdlIGtlcHQgaXQKKyAgIGFyb3VuZCBmb3IgdG9vIGxvbmcuICBUaGUgbWVzc2FnZSBoYXMgZmluYWxseSBiZWVuIHJlbW92ZWQuCisKKyAqICJnaXQgZmV0Y2ggb3JpZ2luIG1hc3RlciIgdW5saWtlICJnaXQgZmV0Y2ggb3JpZ2luIiBvciAiZ2l0IGZldGNoIgorICAgZGlkIG5vdCB1cGRhdGUgInJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIjsgdGhpcyB3YXMgYW4gZWFybHkKKyAgIGRlc2lnbiBkZWNpc2lvbiB0byBrZWVwIHRoZSB1cGRhdGUgb2YgcmVtb3RlIHRyYWNraW5nIGJyYW5jaGVzCisgICBwcmVkaWN0YWJsZSwgYnV0IGluIHByYWN0aWNlIGl0IHR1cm5zIG91dCB0aGF0IHBlb3BsZSBmaW5kIGl0IG1vcmUKKyAgIGNvbnZlbmllbnQgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgdXBkYXRlIHRoZW0gd2hlbmV2ZXIgd2UgaGF2ZSBhCisgICBjaGFuY2UsIGFuZCB3ZSBoYXZlIGJlZW4gdXBkYXRpbmcgdGhlbSB3aGVuIHdlIHJ1biAiZ2l0IHB1c2giIHdoaWNoCisgICBhbHJlYWR5IGJyZWFrcyB0aGUgb3JpZ2luYWwgInByZWRpY3RhYmlsaXR5IiBhbnl3YXkuCisKKyAqIFRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGNvcmUuY2hlY2tzdGF0IHdhcyBhZHZlcnRpc2VkIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBidXQgdGhlIGNvZGUgZXhwZWN0ZWQgY29yZS5zdGF0aW5mbyBpbnN0ZWFkLgorICAgRm9yIG5vdywgd2UgYWNjZXB0IGJvdGggY29yZS5jaGVja3N0YXQgYW5kIGNvcmUuc3RhdGluZm8sIGJ1dCB0aGUKKyAgIGxhdHRlciB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIGxvbmdlciB0ZXJtLgorCisKK1BlcmZvcm1hbmNlLCBJbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiwgZXRjLgorCisgKiBVc2VzIG9mIHRoZSBwbGF0Zm9ybSBmbm1hdGNoKDMpIGZ1bmN0aW9uIChtYW55IHBsYWNlcyBpbiB0aGUgY29kZSwKKyAgIG1hdGNoaW5nIHBhdGhzcGVjLCAuZ2l0aWdub3JlIGFuZCAuZ2l0YXR0cmlidXRlcyB0byBuYW1lIGEgZmV3KQorICAgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggd2lsZG1hdGNoLCBhbGxvd2luZyAiZm9vLyoqL2JhciIgdGhhdCB3b3VsZAorICAgbWF0Y2ggZm9vL2JhciwgZm9vL2EvYmFyLCBmb28vYS9iL2JhciwgZXRjLgorCisgKiBNZW1vcnkgb3duZXJzaGlwIGFuZCBsaWZldGltZSBydWxlcyBmb3Igd2hhdCBmb3ItZWFjaC1yZWYgZmVlZHMgdG8KKyAgIGl0cyBjYWxsYmFja3MgaGF2ZSBiZWVuIGNsYXJpZmllZCAoaW4gc2hvcnQsICJ5b3UgZG8gbm90IG93biBpdCwgc28KKyAgIG1ha2UgYSBjb3B5IGlmIHlvdSB3YW50IHRvIGtlZXAgaXQiKS4KKworICogVGhlIHJldmlzaW9uIHRyYXZlcnNhbCBsb2dpYyB0byBpbXByb3ZlIGN1bGxpbmcgb2YgaXJyZWxldmFudAorICAgcGFyZW50cyB3aGlsZSB0cmF2ZXJzaW5nIGEgbWVyZ3kgaGlzdG9yeSBoYXMgYmVlbiB1cGRhdGVkLgorCisgKiBTb21lIGxlYWtzIGluIHVucGFjay10cmVlcyAodXNlZCBpbiBtZXJnZSwgY2hlcnJ5LXBpY2sgYW5kIG90aGVyCisgICBjb2RlcGF0aHMpIGhhdmUgYmVlbiBwbHVnZ2VkLgorCisgKiBUaGUgY29kZXBhdGggdG8gcmVhZCBmcm9tIG1hcmtzIGZpbGVzIGluIGZhc3QtaW1wb3J0L2V4cG9ydCBkaWQgbm90CisgICBoYXZlIHRvIGFjY2VwdCBhbnl0aGluZyBidXQgNDAtaGV4IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QKKyAgIG5hbWUuICBGdXJ0aGVyLCBmYXN0LWV4cG9ydCBkaWQgbm90IG5lZWQgZnVsbCBpbi1jb3JlIG9iamVjdAorICAgcmVwcmVzZW50YXRpb24gdG8gaGF2ZSBwYXJzZWQgd2VuIHJlYWRpbmcgZnJvbSB0aGVtLiAgVGhlc2UKKyAgIGNvZGVwYXRocyBoYXZlIGJlZW4gb3B0aW1pemVkIGJ5IHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhlc2UgYWNjZXNzCisgICBwYXR0ZXJucy4KKworICogT2JqZWN0IGxvb2t1cCBsb2dpYywgd2hlbiB0aGUgb2JqZWN0IGhhc2h0YWJsZSBzdGFydHMgdG8gYmVjb21lCisgICBjcm93ZGVkLCBoYXMgYmVlbiBvcHRpbWl6ZWQuCisKKyAqIFdoZW4gVEVTVF9PVVRQVVRfRElSRUNUT1JZIHNldHRpbmcgaXMgdXNlZCwgaXQgd2FzIGhhbmRsZWQgc29tZXdoYXQKKyAgIGluY29uc2lzdGVudGx5IGJldHdlZW4gdGhlIHRlc3QgZnJhbWV3b3JrIGFuZCB0L01ha2VmaWxlLCBhbmQgbG9naWMKKyAgIHRvIHN1bW1hcml6ZSB0aGUgcmVzdWx0cyBsb29rZWQgYXQgYSB3cm9uZyBwbGFjZS4KKworICogImdpdCBjbG9uZSIgdXNlcyBhIGxpZ2h0ZXItd2VpZ2h0IGltcGxlbWVudGF0aW9uIHdoZW4gbWFraW5nIHN1cmUKKyAgIHRoYXQgdGhlIGhpc3RvcnkgYmVoaW5kIHJlZnMgYXJlIGNvbXBsZXRlLgorCisgKiBNYW55IHdhcm5pbmdzIGZyb20gc3BhcnNlIHNvdXJjZSBjaGVja2VyIGluIGNvbXBhdC8gYXJlYSBoYXMgYmVlbgorICAgc3F1ZWxjaGVkLgorCisgKiBUaGUgY29kZSB0byByZWFkaW5nIGFuZCB1cGRhdGluZyBwYWNrZWQtcmVmcyBmaWxlIGhhcyBiZWVuIHVwZGF0ZWQsCisgICBjb3JyZWN0aW5nIGNvcm5lciBjYXNlIGJ1Z3MuCisKKworQWxzbyBjb250YWlucyB2YXJpb3VzIGRvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQgY29kZSBjbGVhbi11cHMuCisKKworRml4ZXMgc2luY2UgdjEuOC4zCistLS0tLS0tLS0tLS0tLS0tLS0KKworVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIHRoZSBmaXhlcyBzaW5jZSB2MS44LjMgaW4gdGhlIG1haW50ZW5hbmNlCit0cmFjayBhcmUgY29udGFpbmVkIGluIHRoaXMgcmVsZWFzZSAoc2VlIHJlbGVhc2Ugbm90ZXMgdG8gdGhlbSBmb3IKK2RldGFpbHMpLgorCisgKiAiZ2l0IGFwcGx5IiBwYXJzZWQgcGF0Y2hlcyB0aGF0IGFkZCBuZXcgZmlsZXMsIGdlbmVyYXRlZCBieQorICAgcHJvZ3JhbXMgb3RoZXIgdGhhbiBHaXQsIGluY29ycmVjdGx5LiAgVGhpcyBpcyBhbiBvbGQgYnJlYWthZ2UgaW4KKyAgIHYxLjcuMTEgYW5kIHdpbGwgbmVlZCB0byBiZSBtZXJnZWQgZG93biB0byB0aGUgbWFpbnRhbmFuY2UgdHJhY2tzLgorICAgKG1lcmdlIDIxMmViOTYgdHIvbWFpbnQtYXBwbHktbm9uLWdpdC1wYXRjaC1wYXJzZWZpeCBsYXRlciB0byBtYWludCkuCisKKyAqIE1hbnkgImdpdCBzdWJtb2R1bGUiIG9wZXJhdGlvbnMgZG8gbm90IHdvcmsgb24gYSBzdWJtb2R1bGUgYXQgYQorICAgcGF0aCB3aG9zZSBuYW1lIGlzIG5vdCBpbiBBU0NJSS4KKyAgIChtZXJnZSBiZWQ5NDcwIGZnL3N1Ym1vZHVsZS1ub24tYXNjaWktcGF0aCBsYXRlciB0byBtYWludCkuCisKKyAqICJjaGVycnktcGljayIgaGFkIGEgc21hbGwgbGVhayBpbiBhbiBlcnJvciBjb2RlcGF0aC4KKyAgIChtZXJnZSA3MDY3MjhhIGZjL3NlcXVlbmNlci1wbHVnLWxlYWsgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBMb2dpYyB1c2VkIGJ5IGdpdC1zZW5kLWVtYWlsIHRvIHN1cHByZXNzIGNjIG1pc2hhbmRsZWQgbmFtZXMgbGlrZQorICAgIkEgVS4gVGhvciIgPGF1dGhvckBleGFtcGxlLnh6Piwgd2hlcmUgdGhlIGh1bWFuIHJlYWRhYmxlIHBhcnQKKyAgIG5lZWRzIHRvIGJlIHF1b3RlZCAodGhlIHVzZXIgaW5wdXQgbWF5IG5vdCBoYXZlIHRoZSBkb3VibGUgcXVvdGVzCisgICBhcm91bmQgdGhlIG5hbWUsIGFuZCBjb21wYXJpc29uIHdhcyBkb25lIGJldHdlZW4gcXVvdGVkIGFuZAorICAgdW5xdW90ZWQgc3RyaW5ncykuCisgICAobWVyZ2UgMTQ5NTI2NiBtdC9zZW5kLWVtYWlsLWNjLW1hdGNoLWZpeCBsYXRlciB0byBtYWludCkuCisKKyAqIENhbGwgdG8gZGlzY2FyZF9jYWNoZS9kaXNjYXJkX2luZGV4ICh1c2VkIHdoZW4gd2UgdXNlIGRpZmZlcmVudAorICAgY29udGVudHMgb2YgdGhlIGluZGV4IGluLWNvcmUsIGluIG1hbnkgb3BlcmF0aW9ucyBsaWtlIGNvbW1pdCwKKyAgIGFwcGx5LCBhbmQgbWVyZ2UpIHVzZWQgdG8gbGVhayBtZW1vcnkgdGhhdCBoZWxkIHRoZSBhcnJheSBvZiBpbmRleAorICAgZW50cmllcywgd2hpY2ggaGFzIGJlZW4gcGx1Z2dlZC4KKyAgIChtZXJnZSBhMGZjNGRiIHJzL2Rpc2NhcmQtaW5kZXgtZGlzY2FyZC1hcnJheSBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXR3ZWIiIGZvcmdvdCB0byBjbGVhciBhIGdsb2JhbCB2YXJpYWJsZSAkc2VhcmNoX3JlZ2V4cCB1cG9uIGVhY2gKKyAgIHJlcXVlc3QsIG1pc3Rha2VubHkgY2Fycnlpbmcgb3ZlciB0aGUgcHJldmlvdXMgc2VhcmNoIHRvIGEgbmV3IG9uZQorICAgd2hlbiB1c2VkIGFzIGEgcGVyc2lzdGVudCBDR0kuCisgICAobWVyZ2UgY2E3YTVkYyBjbS9naXR3ZWItcHJvamVjdC1saXN0LXBlcnNpc3RlbnQtY2dpLWZpeCBsYXRlciB0byBtYWludCkuCisKKyAqIFRoZSB3aWxkbWF0Y2ggZW5naW5lIGRpZCBub3QgaG9ub3IgV01fQ0FTRUZPTEQgb3B0aW9uIGNvcnJlY3RseS4KKyAgIChtZXJnZSBiNzljMGMzIGFyL3dpbGRtYXRjaC1mb2xkY2FzZSBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgbG9nIC1jIC0tZm9sbG93ICRwYXRoIiBzZWdmYXVsdGVkIHVwb24gaGl0dGluZyB0aGUgY29tbWl0IHRoYXQKKyAgIHJlbmFtZWQgdGhlICRwYXRoIGJlaW5nIGZvbGxvd2VkLgorICAgKG1lcmdlIDQ2ZWM1MTAgY2IvbG9nLWZvbGxvdy13aXRoLWNvbWJpbmVkIGxhdGVyIHRvIG1haW50KS4KKworICogV2hlbiBhIHJlZmxvZyBub3RhdGlvbiBpcyB1c2VkIGZvciBpbXBsaWNpdCAiY3VycmVudCBicmFuY2giLCB3ZQorICAgZGlkIG5vdCBzYXkgd2hpY2ggYnJhbmNoIGFuZCB3b3JzZSBzYWlkICJicmFuY2ggJyciLgorICAgKG1lcmdlIDMwNWViZWEgcnIvZGllLW9uLW1pc3NpbmctdXBzdHJlYW0gbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZGlmZnRvb2wgLS1kaXItZGlmZiIgZGlkIG5vdCBjb3B5IGJhY2sgY2hhbmdlcyBtYWRlIGJ5IHRoZQorICAgZW5kLXVzZXIgaW4gdGhlIGRpZmYgdG9vbCBiYWNrZW5kIHRvIHRoZSB3b3JraW5nIHRyZWUgaW4gc29tZQorICAgY2FzZXMuCisgICAobWVyZ2UgMzJlYWYxZCBrcy9kaWZmdG9vbC1kaXItZGlmZi1jb3B5LWZpeCBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgcHVzaCAkdGhlcmUgSEVBRDpicmFuY2giIGRpZCBub3QgcmVzb2x2ZSBIRUFEIGVhcmx5IGVub3VnaCwgc28KKyAgIGl0IHdhcyBlYXN5IHRvIGZsaXAgaXQgYXJvdW5kIHdoaWxlIHB1c2ggaXMgc3RpbGwgZ29pbmcgb24gYW5kIHB1c2gKKyAgIG91dCBhIGJyYW5jaCB0aGF0IHRoZSB1c2VyIGRpZCBub3Qgb3JpZ2luYWxseSBpbnRlbmRlZCB3aGVuIHRoZQorICAgY29tbWFuZCB3YXMgc3RhcnRlZC4KKyAgIChtZXJnZSAwZjA3NWIyIHJyL3B1c2gtaGVhZCBsYXRlciB0byBtYWludCkuCisKKyAqIFRoZSBiYXNoIHByb21wdCBjb2RlIChpbiBjb250cmliLykgZGlzcGxheWVkIHRoZSBuYW1lIG9mIHRoZSBicmFuY2gKKyAgIGJlaW5nIHJlYmFzZWQgd2hlbiAicmViYXNlIC1pLy1tLy1wIiBtb2RlcyBhcmUgaW4gdXNlLCBidXQgbm90IHRoZQorICAgcGxhaW4gdmFuaWxsYSAicmViYXNlIi4KKyAgIChtZXJnZSAxMzA2MzIxIGZjL3Nob3ctYnJhbmNoLWluLXJlYmFzZS1hbSBsYXRlciB0byBtYWludCkuCisKKyAqIEhhbmRsaW5nIG9mIG5lZ2F0aXZlIGV4Y2x1ZGUgcGF0dGVybiBmb3IgZGlyZWN0b3JpZXMgIiFkaXIiIHdhcworICAgYnJva2VuIGluIHRoZSB1cGRhdGUgdG8gdjEuOC4zLgorICAgKG1lcmdlIGMzYzMyN2Qga2Ivc3RhdHVzLWlnbm9yZWQtb3B0aW0tMiBsYXRlciB0byBtYWludCkuCisKKyAqIHpzaCBwcm9tcHQgc2NyaXB0IHRoYXQgYm9ycm93ZWQgZnJvbSBiYXNoIHByb21wdCBzY3JpcHQgZGlkIG5vdAorICAgd29yayBkdWUgdG8gc2xpZ2h0IGRpZmZlcmVuY2VzIGluIGFycmF5IHZhcmlhYmxlIG5vdGF0aW9uIGJldHdlZW4KKyAgIHRoZXNlIHR3byBzaGVsbHMuCisgICAobWVyZ2UgZDA1ODNkYSB0Zy9tYWludC16c2gtc3ZuLXJlbW90ZS1wcm9tcHQgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBBbiBlbnRyeSBmb3IgImZpbGU6Ly8iIHNjaGVtZSBpbiB0aGUgZW51bWVyYXRpb24gb2YgVVJMIHR5cGVzIEdpdAorICAgY2FuIHRha2UgaW4gdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiB3YXMgbWFkZSBpbnRvIGEgY2xpY2thYmxlIGxpbmsKKyAgIGJ5IG1pc3Rha2UuCisgICAobWVyZ2UgNGMzMmUzNiBuZC91cmxzLWRvYy1uby1maWxlLWh5cGVybGluay1maXggbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IHB1c2ggLS1bbm8tXXZlcmlmeSIgd2FzIG5vdCBkb2N1bWVudGVkLgorICAgKG1lcmdlIDkwZDMyZDEgdHIvcHVzaC1uby12ZXJpZnktZG9jIGxhdGVyIHRvIG1haW50KS4KKworICogU3RvcCBpbnN0YWxsaW5nIHRoZSBnaXQtcmVtb3RlLXRlc3RweSBzY3JpcHQgdGhhdCBpcyBvbmx5IHVzZWQgZm9yCisgICB0ZXN0aW5nLgorICAgKG1lcmdlIDQxNmZkYTYgZmMvbWFrZWZpbGUgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5LW1lc3NhZ2UgLW0gJyciIHNob3VsZCBub3Qgc3RhcnQgYW4KKyAgIGVkaXRvci4KKyAgIChtZXJnZSAyNTIwNjc3IHJzL2NvbW1pdC1tLW5vLWVkaXQgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IG1lcmdlIEB7LTF9fjIyIiB3YXMgcmV3cml0dGVuIHRvICJnaXQgbWVyZ2UgZnJvdHpAezF9fjIyIgorICAgaW5jb3JyZWN0bHkgd2hlbiB5b3VyIHByZXZpb3VzIGJyYW5jaCB3YXMgImZyb3R6IiAoaXQgc2hvdWxkIGJlCisgICByZXdyaXR0ZW4gdG8gImdpdCBtZXJnZSBmcm90en4yMiIgaW5zdGVhZCkuCisgICAobWVyZ2UgODRjZjI0NiBqYy9zdHJidWYtYnJhbmNobmFtZS1maXggbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IGRpZmYgLWMgLXAiIHdhcyBub3Qgc2hvd2luZyBhIGRlbGV0ZWQgbGluZSBmcm9tIGEgaHVuayB3aGVuCisgICBhbm90aGVyIGh1bmsgaW1tZWRpYXRlbHkgYmVnaW5zIHdoZXJlIHRoZSBlYXJsaWVyIG9uZSBlbmRzLgorICAgKG1lcmdlIGFhYzM4NTcgbWsvY29tYmluZS1kaWZmLWNvbnRleHQtaG9yaXpvbi1maXggbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IGxvZyAtLWFuY2VzdHJ5LXBhdGggQS4uLkIiIGRpZCBub3Qgd29yayBhcyBleHBlY3RlZCwgYXMgaXQgZGlkCisgICBub3QgcGF5IGF0dGVudGlvbiB0byB0aGUgZmFjdCB0aGF0IHRoZSBtZXJnZSBiYXNlIGJldHdlZW4gQSBhbmQgQgorICAgd2FzIHRoZSBib3R0b20gb2YgdGhlIHJhbmdlIGJlaW5nIHNwZWNpZmllZC4KKyAgIChtZXJnZSBhNzY1NDk5IGtiL2FuY2VzdHJ5LXBhdGgtdGhyZWVkb3RzIGxhdGVyIHRvIG1haW50KS4KKworICogTWFjIE9TIFggZG9lcyBub3QgbGlrZSB0byB3cml0ZSgyKSBtb3JlIHRoYW4gSU5UX01BWCBudW1iZXIgb2YKKyAgIGJ5dGVzOyB3b3JrIGl0IGFyb3VuZCBieSBjaG9wcGluZyB3cml0ZSgyKSBpbnRvIHNtYWxsZXIgcGllY2VzLgorICAgKG1lcmdlIDZjNjQyYTggZmMvbWFjb3MteC1jbGlwcGVkLXdyaXRlIGxhdGVyIHRvIG1haW50KS4KKworICogTmV3ZXIgTWFjT1MgWCBlbmNvdXJhZ2VzIHRoZSBwcm9ncmFtcyB0byBjb21waWxlIGFuZCBsaW5rIHdpdGgKKyAgIHRoZWlyIENvbW1vbkNyeXB0bywgbm90IHdpdGggT3BlblNTTC4KKyAgIChtZXJnZSBiZTRjODI4IGRhL2RhcndpbiBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgY2xvbmUgZm9vL2JhcjpiYXoiIGNhbm5vdCBiZSBhIHJlcXVlc3QgdG8gY2xvbmUgZnJvbSBhIHJlbW90ZQorICAgb3ZlciBnaXQtb3Zlci1zc2ggc3BlY2lmaWVkIGluIHRoZSBzY3Agc3R5bGUuICBUaGlzIGNhc2UgaXMgbm93CisgICBkZXRlY3RlZCBhbmQgY2xvbmVzIGZyb20gYSBsb2NhbCByZXBvc2l0b3J5IGF0ICJmb28vYmFyOmJheiIuCisgICAobWVyZ2UgNjAwMDMzNCBuZC9jbG9uZS1sb2NhbC13aXRoLWNvbG9uIGxhdGVyIHRvIG1haW50KS4KKworICogV2hlbiAkSE9NRSBpcyBtaXNjb25maWd1cmVkIHRvIHBvaW50IGF0IGFuIHVucmVhZGFibGUgZGlyZWN0b3J5LCB3ZQorICAgdXNlZCB0byBjb21wbGFpbiBhbmQgZGllLiBMb29zZW4gdGhlIGNoZWNrLgorICAgKG1lcmdlIDQ2OThjOGYgam4vY29uZmlnLWlnbm9yZS1pbmFjY2Vzc2libGUgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IHN1YnRyZWUiIChpbiBjb250cmliLykgaGFkIG9uZSBjb2RlcGF0aCB3aXRoIGxvb3NlIGVycm9yCisgICBjaGVja3MgdG8gbG9zZSBkYXRhIGF0IHRoZSByZW1vdGUgc2lkZS4KKyAgIChtZXJnZSAzMjEyZDU2IGprL3N1YnRyZWUtZG8tbm90LXB1c2gtaWYtc3BsaXQtZmFpbHMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IGZldGNoIiBpbnRvIGEgc2hhbGxvdyByZXBvc2l0b3J5IGZyb20gYSByZXBvc2l0b3J5IHRoYXQgZG9lcworICAgbm90IGtub3cgYWJvdXQgdGhlIHNoYWxsb3cgYm91bmRhcnkgY29tbWl0cyAoZS5nLiBhIGRpZmZlcmVudCBmb3JrCisgICBmcm9tIHRoZSByZXBvc2l0b3J5IHRoZSBjdXJyZW50IHNoYWxsb3cgcmVwb3NpdG9yeSB3YXMgY2xvbmVkIGZyb20pCisgICBkaWQgbm90IHdvcmsgY29ycmVjdGx5LgorICAgKG1lcmdlIDcxZDVmOTMgbWgvZmV0Y2gtaW50by1zaGFsbG93IGxhdGVyIHRvIG1haW50KS4KKworICogImdpdCBjaGVja291dCBmb28iIERXSU1zIHRoZSBpbnRlbmRlZCAidXBzdHJlYW0iIGFuZCB0dXJucyBpdCBpbnRvCisgICAiZ2l0IGNoZWNrb3V0IC10IC1iIGZvbyByZW1vdGVzL29yaWdpbi9mb28iLiBUaGlzIGNvZGVwYXRoIGhhcyBiZWVuCisgICB1cGRhdGVkIHRvIGNvcnJlY3RseSB0YWtlIGV4aXN0aW5nIHJlbW90ZSBkZWZpbml0aW9ucyBpbnRvIGFjY291bnQuCisgICAobWVyZ2UgMjI5MTc3YSBqaC9jaGVja291dC1hdXRvLXRyYWNraW5nIGxhdGVyIHRvIG1haW50KS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCmluZGV4IDkwMTMzZDguLmQwYTQ3MzMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtMTAzLDkgKzEwMyw5IEBACiBhcmNoaXZlLCBzdW1tYXJpemUgdGhlIHJlbGV2YW50IHBvaW50cyBvZiB0aGUgZGlzY3Vzc2lvbi4KIAogCi0oMykgR2VuZXJhdGUgeW91ciBwYXRjaCB1c2luZyBnaXQgdG9vbHMgb3V0IG9mIHlvdXIgY29tbWl0cy4KKygzKSBHZW5lcmF0ZSB5b3VyIHBhdGNoIHVzaW5nIEdpdCB0b29scyBvdXQgb2YgeW91ciBjb21taXRzLgogCi1naXQgYmFzZWQgZGlmZiB0b29scyBnZW5lcmF0ZSB1bmlkaWZmIHdoaWNoIGlzIHRoZSBwcmVmZXJyZWQgZm9ybWF0LgorR2l0IGJhc2VkIGRpZmYgdG9vbHMgZ2VuZXJhdGUgdW5pZGlmZiB3aGljaCBpcyB0aGUgcHJlZmVycmVkIGZvcm1hdC4KIAogWW91IGRvIG5vdCBoYXZlIHRvIGJlIGFmcmFpZCB0byB1c2UgLU0gb3B0aW9uIHRvICJnaXQgZGlmZiIgb3IKICJnaXQgZm9ybWF0LXBhdGNoIiwgaWYgeW91ciBwYXRjaCBpbnZvbHZlcyBmaWxlIHJlbmFtZXMuICBUaGUKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiAoNCkgU2VuZGluZyB5b3VyIHBhdGNoZXMuCiAKLVBlb3BsZSBvbiB0aGUgZ2l0IG1haWxpbmcgbGlzdCBuZWVkIHRvIGJlIGFibGUgdG8gcmVhZCBhbmQKK1Blb3BsZSBvbiB0aGUgR2l0IG1haWxpbmcgbGlzdCBuZWVkIHRvIGJlIGFibGUgdG8gcmVhZCBhbmQKIGNvbW1lbnQgb24gdGhlIGNoYW5nZXMgeW91IGFyZSBzdWJtaXR0aW5nLiAgSXQgaXMgaW1wb3J0YW50IGZvcgogYSBkZXZlbG9wZXIgdG8gYmUgYWJsZSB0byAicXVvdGUiIHlvdXIgY2hhbmdlcywgdXNpbmcgc3RhbmRhcmQKIGUtbWFpbCB0b29scywgc28gdGhhdCB0aGV5IG1heSBjb21tZW50IG9uIHNwZWNpZmljIHBvcnRpb25zIG9mCkBAIC0yMDYsNyArMjA2LDcgQEAKIAogVG8gaW1wcm92ZSB0cmFja2luZyBvZiB3aG8gZGlkIHdoYXQsIHdlJ3ZlIGJvcnJvd2VkIHRoZQogInNpZ24tb2ZmIiBwcm9jZWR1cmUgZnJvbSB0aGUgTGludXgga2VybmVsIHByb2plY3Qgb24gcGF0Y2hlcwotdGhhdCBhcmUgYmVpbmcgZW1haWxlZCBhcm91bmQuICBBbHRob3VnaCBjb3JlIEdJVCBpcyBhIGxvdAordGhhdCBhcmUgYmVpbmcgZW1haWxlZCBhcm91bmQuICBBbHRob3VnaCBjb3JlIEdpdCBpcyBhIGxvdAogc21hbGxlciBwcm9qZWN0IGl0IGlzIGEgZ29vZCBkaXNjaXBsaW5lIHRvIGZvbGxvdyBpdC4KIAogVGhlIHNpZ24tb2ZmIGlzIGEgc2ltcGxlIGxpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZXhwbGFuYXRpb24gZm9yCkBAIC0yNDQsNyArMjQ0LDcgQEAKIAogCVNpZ25lZC1vZmYtYnk6IFJhbmRvbSBKIERldmVsb3BlciA8cmFuZG9tQGRldmVsb3Blci5leGFtcGxlLm9yZz4KIAotVGhpcyBsaW5lIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIGJ5IGdpdCBpZiB5b3UgcnVuIHRoZSBnaXQtY29tbWl0CitUaGlzIGxpbmUgY2FuIGJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgR2l0IGlmIHlvdSBydW4gdGhlIGdpdC1jb21taXQKIGNvbW1hbmQgd2l0aCB0aGUgLXMgb3B0aW9uLgogCiBOb3RpY2UgdGhhdCB5b3UgY2FuIHBsYWNlIHlvdXIgb3duIFNpZ25lZC1vZmYtYnk6IGxpbmUgd2hlbgpAQCAtMzM3LDcgKzMzNyw3IEBACiAgIHRlbGwgeW91IGlmIHlvdXIgcGF0Y2ggaXMgbWVyZ2VkIGluIHB1IGlmIHlvdSByZWJhc2Ugb24gdG9wIG9mCiAgIG1hc3RlcikuCiAKLSogUmVhZCB0aGUgZ2l0IG1haWxpbmcgbGlzdCwgdGhlIG1haW50YWluZXIgcmVndWxhcmx5IHBvc3RzIG1lc3NhZ2VzCisqIFJlYWQgdGhlIEdpdCBtYWlsaW5nIGxpc3QsIHRoZSBtYWludGFpbmVyIHJlZ3VsYXJseSBwb3N0cyBtZXNzYWdlcwogICBlbnRpdGxlZCAiV2hhdCdzIGNvb2tpbmcgaW4gZ2l0LmdpdCIgYW5kICJXaGF0J3MgaW4gZ2l0LmdpdCIgZ2l2aW5nCiAgIHRoZSBzdGF0dXMgb2YgdmFyaW91cyBwcm9wb3NlZCBjaGFuZ2VzLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYgYi9Eb2N1bWVudGF0aW9uL2FzY2lpZG9jLmNvbmYKaW5kZXggMTI3M2E4NS4uMmMxNmM1MyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9hc2NpaWRvYy5jb25mCisrKyBiL0RvY3VtZW50YXRpb24vYXNjaWlkb2MuY29uZgpAQCAtNCw3ICs0LDcgQEAKICMKICMgTm90ZSwgezB9IGlzIHRoZSBtYW5wYWdlIHNlY3Rpb24sIHdoaWxlIHt0YXJnZXR9IGlzIHRoZSBjb21tYW5kLgogIwotIyBTaG93IEdJVCBsaW5rIGFzOiA8Y29tbWFuZD4oPHNlY3Rpb24+KTsgaWYgc2VjdGlvbiBpcyBkZWZpbmVkLCBlbHNlIGp1c3Qgc2hvdworIyBTaG93IEdpdCBsaW5rIGFzOiA8Y29tbWFuZD4oPHNlY3Rpb24+KTsgaWYgc2VjdGlvbiBpcyBkZWZpbmVkLCBlbHNlIGp1c3Qgc2hvdwogIyB0aGUgY29tbWFuZC4KIAogW21hY3Jvc10KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxhbWUtb3B0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0CmluZGV4IGQ0YTUxZGEuLmU5Zjk4NGIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYmxhbWUtb3B0aW9ucy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dApAQCAtOSwyOCArOSwxMSBAQAogLS1zaG93LXN0YXRzOjoKIAlJbmNsdWRlIGFkZGl0aW9uYWwgc3RhdGlzdGljcyBhdCB0aGUgZW5kIG9mIGJsYW1lIG91dHB1dC4KIAotLUwgPHN0YXJ0Piw8ZW5kPjo6CistTCA8c3RhcnQ+LDxlbmQ+LCAtTCA6PHJlZ2V4Pjo6CiAJQW5ub3RhdGUgb25seSB0aGUgZ2l2ZW4gbGluZSByYW5nZS4gIDxzdGFydD4gYW5kIDxlbmQ+IGNhbiB0YWtlCiAJb25lIG9mIHRoZXNlIGZvcm1zOgogCi0JLSBudW1iZXIKLSsKLUlmIDxzdGFydD4gb3IgPGVuZD4gaXMgYSBudW1iZXIsIGl0IHNwZWNpZmllcyBhbgotYWJzb2x1dGUgbGluZSBudW1iZXIgKGxpbmVzIGNvdW50IGZyb20gMSkuCi0rCi0KLS0gL3JlZ2V4LwotKwotVGhpcyBmb3JtIHdpbGwgdXNlIHRoZSBmaXJzdCBsaW5lIG1hdGNoaW5nIHRoZSBnaXZlbgotUE9TSVggcmVnZXguICBJZiA8ZW5kPiBpcyBhIHJlZ2V4LCBpdCB3aWxsIHNlYXJjaAotc3RhcnRpbmcgYXQgdGhlIGxpbmUgZ2l2ZW4gYnkgPHN0YXJ0Pi4KLSsKLQotLSArb2Zmc2V0IG9yIC1vZmZzZXQKLSsKLVRoaXMgaXMgb25seSB2YWxpZCBmb3IgPGVuZD4gYW5kIHdpbGwgc3BlY2lmeSBhIG51bWJlcgotb2YgbGluZXMgYmVmb3JlIG9yIGFmdGVyIHRoZSBsaW5lIGdpdmVuIGJ5IDxzdGFydD4uCi0rCitpbmNsdWRlOjpsaW5lLXJhbmdlLWZvcm1hdC50eHRbXQogCiAtbDo6CiAJU2hvdyBsb25nIHJldiAoRGVmYXVsdDogb2ZmKS4KQEAgLTk1LDcgKzc4LDcgQEAKIAlydW5uaW5nIGV4dHJhIHBhc3NlcyBvZiBpbnNwZWN0aW9uLgogKwogPG51bT4gaXMgb3B0aW9uYWwgYnV0IGl0IGlzIHRoZSBsb3dlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mCi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyB0aGF0IGdpdCBtdXN0IGRldGVjdCBhcyBtb3ZpbmcvY29weWluZworYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgdGhhdCBHaXQgbXVzdCBkZXRlY3QgYXMgbW92aW5nL2NvcHlpbmcKIHdpdGhpbiBhIGZpbGUgZm9yIGl0IHRvIGFzc29jaWF0ZSB0aG9zZSBsaW5lcyB3aXRoIHRoZSBwYXJlbnQKIGNvbW1pdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMjAuCiAKQEAgLTExMCw3ICs5Myw3IEBACiAJbG9va3MgZm9yIGNvcGllcyBmcm9tIG90aGVyIGZpbGVzIGluIGFueSBjb21taXQuCiArCiA8bnVtPiBpcyBvcHRpb25hbCBidXQgaXQgaXMgdGhlIGxvd2VyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YKLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHRoYXQgZ2l0IG11c3QgZGV0ZWN0IGFzIG1vdmluZy9jb3B5aW5nCithbHBoYW51bWVyaWMgY2hhcmFjdGVycyB0aGF0IEdpdCBtdXN0IGRldGVjdCBhcyBtb3ZpbmcvY29weWluZwogYmV0d2VlbiBmaWxlcyBmb3IgaXQgdG8gYXNzb2NpYXRlIHRob3NlIGxpbmVzIHdpdGggdGhlIHBhcmVudAogY29tbWl0LiBBbmQgdGhlIGRlZmF1bHQgdmFsdWUgaXMgNDAuIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lCiBgLUNgIG9wdGlvbnMgZ2l2ZW4sIHRoZSA8bnVtPiBhcmd1bWVudCBvZiB0aGUgbGFzdCBgLUNgIHdpbGwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY2F0LXRleGkucGVybCBiL0RvY3VtZW50YXRpb24vY2F0LXRleGkucGVybAppbmRleCA4MjhlYzYyLi44NzQzN2Y4IDEwMDc1NQotLS0gYS9Eb2N1bWVudGF0aW9uL2NhdC10ZXhpLnBlcmwKKysrIGIvRG9jdW1lbnRhdGlvbi9jYXQtdGV4aS5wZXJsCkBAIC0xMiw2ICsxMiw3IEBACiAJCXB1c2ggQG1lbnUsICQxOwogCX0KIAlzL1woXEBweHJlZntcWyhVUkxTfFJFTU9URVMpXF19XCkvLzsKKwlzL1xAYW5jaG9yXHtbXnt9XSpcfS8vZzsKIAlwcmludCBUTVA7CiB9CiBjbG9zZSBUTVA7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQKaW5kZXggYzVmMWQ2OC4uMTE1MzU4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dApAQCAtMSwxNCArMSwxNCBAQAogQ09ORklHVVJBVElPTiBGSUxFCiAtLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIGdpdCBjb25maWd1cmF0aW9uIGZpbGUgY29udGFpbnMgYSBudW1iZXIgb2YgdmFyaWFibGVzIHRoYXQgYWZmZWN0Ci10aGUgZ2l0IGNvbW1hbmQncyBiZWhhdmlvci4gVGhlIGAuZ2l0L2NvbmZpZ2AgZmlsZSBpbiBlYWNoIHJlcG9zaXRvcnkKK1RoZSBHaXQgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIHZhcmlhYmxlcyB0aGF0IGFmZmVjdAordGhlIEdpdCBjb21tYW5kcycgYmVoYXZpb3IuIFRoZSBgLmdpdC9jb25maWdgIGZpbGUgaW4gZWFjaCByZXBvc2l0b3J5CiBpcyB1c2VkIHRvIHN0b3JlIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGF0IHJlcG9zaXRvcnksIGFuZAogYCRIT01FLy5naXRjb25maWdgIGlzIHVzZWQgdG8gc3RvcmUgYSBwZXItdXNlciBjb25maWd1cmF0aW9uIGFzCiBmYWxsYmFjayB2YWx1ZXMgZm9yIHRoZSBgLmdpdC9jb25maWdgIGZpbGUuIFRoZSBmaWxlIGAvZXRjL2dpdGNvbmZpZ2AKIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGEgc3lzdGVtLXdpZGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgogCi1UaGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgYXJlIHVzZWQgYnkgYm90aCB0aGUgZ2l0IHBsdW1iaW5nCitUaGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgYXJlIHVzZWQgYnkgYm90aCB0aGUgR2l0IHBsdW1iaW5nCiBhbmQgdGhlIHBvcmNlbGFpbnMuIFRoZSB2YXJpYWJsZXMgYXJlIGRpdmlkZWQgaW50byBzZWN0aW9ucywgd2hlcmVpbgogdGhlIGZ1bGx5IHF1YWxpZmllZCB2YXJpYWJsZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpdHNlbGYgaXMgdGhlIGxhc3QKIGRvdC1zZXBhcmF0ZWQgc2VnbWVudCBhbmQgdGhlIHNlY3Rpb24gbmFtZSBpcyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgbGFzdApAQCAtMTQwLDEwICsxNDAsMTIgQEAKIAljYW4gdGVsbCBHaXQgdGhhdCB5b3UgZG8gbm90IG5lZWQgaGVscCBieSBzZXR0aW5nIHRoZXNlIHRvICdmYWxzZSc6CiArCiAtLQotCXB1c2hOb25GYXN0Rm9yd2FyZDo6CisJcHVzaFVwZGF0ZVJlamVjdGVkOjoKIAkJU2V0IHRoaXMgdmFyaWFibGUgdG8gJ2ZhbHNlJyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlCi0JCSdwdXNoTm9uRkZDdXJyZW50JywgJ3B1c2hOb25GRkRlZmF1bHQnLCBhbmQKLQkJJ3B1c2hOb25GRk1hdGNoaW5nJyBzaW11bHRhbmVvdXNseS4KKwkJJ3B1c2hOb25GRkN1cnJlbnQnLCAncHVzaE5vbkZGRGVmYXVsdCcsCisJCSdwdXNoTm9uRkZNYXRjaGluZycsICdwdXNoQWxyZWFkeUV4aXN0cycsCisJCSdwdXNoRmV0Y2hGaXJzdCcsIGFuZCAncHVzaE5lZWRzRm9yY2UnCisJCXNpbXVsdGFuZW91c2x5LgogCXB1c2hOb25GRkN1cnJlbnQ6OgogCQlBZHZpY2Ugc2hvd24gd2hlbiBsaW5rZ2l0OmdpdC1wdXNoWzFdIGZhaWxzIGR1ZSB0byBhCiAJCW5vbi1mYXN0LWZvcndhcmQgdXBkYXRlIHRvIHRoZSBjdXJyZW50IGJyYW5jaC4KQEAgLTE1OCwxMiArMTYwLDI4IEBACiAJCSdtYXRjaGluZyByZWZzJyBleHBsaWNpdGx5IChpLmUuIHlvdSB1c2VkICc6Jywgb3IKIAkJc3BlY2lmaWVkIGEgcmVmc3BlYyB0aGF0IGlzbid0IHlvdXIgY3VycmVudCBicmFuY2gpIGFuZAogCQlpdCByZXN1bHRlZCBpbiBhIG5vbi1mYXN0LWZvcndhcmQgZXJyb3IuCisJcHVzaEFscmVhZHlFeGlzdHM6OgorCQlTaG93biB3aGVuIGxpbmtnaXQ6Z2l0LXB1c2hbMV0gcmVqZWN0cyBhbiB1cGRhdGUgdGhhdAorCQlkb2VzIG5vdCBxdWFsaWZ5IGZvciBmYXN0LWZvcndhcmRpbmcgKGUuZy4sIGEgdGFnLikKKwlwdXNoRmV0Y2hGaXJzdDo6CisJCVNob3duIHdoZW4gbGlua2dpdDpnaXQtcHVzaFsxXSByZWplY3RzIGFuIHVwZGF0ZSB0aGF0CisJCXRyaWVzIHRvIG92ZXJ3cml0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYW4KKwkJb2JqZWN0IHdlIGRvIG5vdCBoYXZlLgorCXB1c2hOZWVkc0ZvcmNlOjoKKwkJU2hvd24gd2hlbiBsaW5rZ2l0OmdpdC1wdXNoWzFdIHJlamVjdHMgYW4gdXBkYXRlIHRoYXQKKwkJdHJpZXMgdG8gb3ZlcndyaXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhbgorCQlvYmplY3QgdGhhdCBpcyBub3QgYSBjb21taXR0aXNoLCBvciBtYWtlIHRoZSByZW1vdGUKKwkJcmVmIHBvaW50IGF0IGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhIGNvbW1pdHRpc2guCiAJc3RhdHVzSGludHM6OgogCQlTaG93IGRpcmVjdGlvbnMgb24gaG93IHRvIHByb2NlZWQgZnJvbSB0aGUgY3VycmVudAogCQlzdGF0ZSBpbiB0aGUgb3V0cHV0IG9mIGxpbmtnaXQ6Z2l0LXN0YXR1c1sxXSwgaW4KIAkJdGhlIHRlbXBsYXRlIHNob3duIHdoZW4gd3JpdGluZyBjb21taXQgbWVzc2FnZXMgaW4KIAkJbGlua2dpdDpnaXQtY29tbWl0WzFdLCBhbmQgaW4gdGhlIGhlbHAgbWVzc2FnZSBzaG93bgogCQlieSBsaW5rZ2l0OmdpdC1jaGVja291dFsxXSB3aGVuIHN3aXRjaGluZyBicmFuY2guCisJc3RhdHVzVW9wdGlvbjo6CisJCUFkdmlzZSB0byBjb25zaWRlciB1c2luZyB0aGUgYC11YCBvcHRpb24gdG8gbGlua2dpdDpnaXQtc3RhdHVzWzFdCisJCXdoZW4gdGhlIGNvbW1hbmQgdGFrZXMgbW9yZSB0aGFuIDIgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkCisJCWZpbGVzLgogCWNvbW1pdEJlZm9yZU1lcmdlOjoKIAkJQWR2aWNlIHNob3duIHdoZW4gbGlua2dpdDpnaXQtbWVyZ2VbMV0gcmVmdXNlcyB0bwogCQltZXJnZSB0byBhdm9pZCBvdmVyd3JpdGluZyBsb2NhbCBjaGFuZ2VzLgpAQCAtMTgxLDYgKzE5OSw5IEBACiAJYW1Xb3JrRGlyOjoKIAkJQWR2aWNlIHRoYXQgc2hvd3MgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXRjaCBmaWxlIHdoZW4KIAkJbGlua2dpdDpnaXQtYW1bMV0gZmFpbHMgdG8gYXBwbHkgaXQuCisJcm1IaW50czo6CisJCUluIGNhc2Ugb2YgZmFpbHVyZSBpbiB0aGUgb3V0cHV0IG9mIGxpbmtnaXQ6Z2l0LXJtWzFdLAorCQlzaG93IGRpcmVjdGlvbnMgb24gaG93IHRvIHByb2NlZWQgZnJvbSB0aGUgY3VycmVudCBzdGF0ZS4KIC0tCiAKIGNvcmUuZmlsZU1vZGU6OgpAQCAtMjA1LDkgKzIyNiw5IEBACiAKIGNvcmUuaWdub3JlY2FzZTo6CiAJSWYgdHJ1ZSwgdGhpcyBvcHRpb24gZW5hYmxlcyB2YXJpb3VzIHdvcmthcm91bmRzIHRvIGVuYWJsZQotCWdpdCB0byB3b3JrIGJldHRlciBvbiBmaWxlc3lzdGVtcyB0aGF0IGFyZSBub3QgY2FzZSBzZW5zaXRpdmUsCisJR2l0IHRvIHdvcmsgYmV0dGVyIG9uIGZpbGVzeXN0ZW1zIHRoYXQgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZSwKIAlsaWtlIEZBVC4gRm9yIGV4YW1wbGUsIGlmIGEgZGlyZWN0b3J5IGxpc3RpbmcgZmluZHMKLQkibWFrZWZpbGUiIHdoZW4gZ2l0IGV4cGVjdHMgIk1ha2VmaWxlIiwgZ2l0IHdpbGwgYXNzdW1lCisJIm1ha2VmaWxlIiB3aGVuIEdpdCBleHBlY3RzICJNYWtlZmlsZSIsIEdpdCB3aWxsIGFzc3VtZQogCWl0IGlzIHJlYWxseSB0aGUgc2FtZSBmaWxlLCBhbmQgY29udGludWUgdG8gcmVtZW1iZXIgaXQgYXMKIAkiTWFrZWZpbGUiLgogKwpAQCAtMjE2LDEzICsyMzcsMTMgQEAKIGlzIGNyZWF0ZWQuCiAKIGNvcmUucHJlY29tcG9zZXVuaWNvZGU6OgotCVRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZCBieSBNYWMgT1MgaW1wbGVtZW50YXRpb24gb2YgZ2l0LgotCVdoZW4gY29yZS5wcmVjb21wb3NldW5pY29kZT10cnVlLCBnaXQgcmV2ZXJ0cyB0aGUgdW5pY29kZSBkZWNvbXBvc2l0aW9uCisJVGhpcyBvcHRpb24gaXMgb25seSB1c2VkIGJ5IE1hYyBPUyBpbXBsZW1lbnRhdGlvbiBvZiBHaXQuCisJV2hlbiBjb3JlLnByZWNvbXBvc2V1bmljb2RlPXRydWUsIEdpdCByZXZlcnRzIHRoZSB1bmljb2RlIGRlY29tcG9zaXRpb24KIAlvZiBmaWxlbmFtZXMgZG9uZSBieSBNYWMgT1MuIFRoaXMgaXMgdXNlZnVsIHdoZW4gc2hhcmluZyBhIHJlcG9zaXRvcnkKIAliZXR3ZWVuIE1hYyBPUyBhbmQgTGludXggb3IgV2luZG93cy4KLQkoR2l0IGZvciBXaW5kb3dzIDEuNy4xMCBvciBoaWdoZXIgaXMgbmVlZGVkLCBvciBnaXQgdW5kZXIgY3lnd2luIDEuNykuCi0JV2hlbiBmYWxzZSwgZmlsZSBuYW1lcyBhcmUgaGFuZGxlZCBmdWxseSB0cmFuc3BhcmVudCBieSBnaXQsCi0Jd2hpY2ggaXMgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIGdpdC4KKwkoR2l0IGZvciBXaW5kb3dzIDEuNy4xMCBvciBoaWdoZXIgaXMgbmVlZGVkLCBvciBHaXQgdW5kZXIgY3lnd2luIDEuNykuCisJV2hlbiBmYWxzZSwgZmlsZSBuYW1lcyBhcmUgaGFuZGxlZCBmdWxseSB0cmFuc3BhcmVudCBieSBHaXQsCisJd2hpY2ggaXMgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIEdpdC4KIAogY29yZS50cnVzdGN0aW1lOjoKIAlJZiBmYWxzZSwgdGhlIGN0aW1lIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGluZGV4IGFuZCB0aGUKQEAgLTIzMSw2ICsyNTIsMTIgQEAKIAljcmF3bGVycyBhbmQgc29tZSBiYWNrdXAgc3lzdGVtcykuCiAJU2VlIGxpbmtnaXQ6Z2l0LXVwZGF0ZS1pbmRleFsxXS4gVHJ1ZSBieSBkZWZhdWx0LgogCitjb3JlLmNoZWNrc3RhdDo6CisJRGV0ZXJtaW5lcyB3aGljaCBzdGF0IGZpZWxkcyB0byBtYXRjaCBiZXR3ZWVuIHRoZSBpbmRleAorCWFuZCB3b3JrIHRyZWUuIFRoZSB1c2VyIGNhbiBzZXQgdGhpcyB0byAnZGVmYXVsdCcgb3IKKwknbWluaW1hbCcuIERlZmF1bHQgKG9yIGV4cGxpY2l0bHkgJ2RlZmF1bHQnKSwgaXMgdG8gY2hlY2sKKwlhbGwgZmllbGRzLCBpbmNsdWRpbmcgdGhlIHN1Yi1zZWNvbmQgcGFydCBvZiBtdGltZSBhbmQgY3RpbWUuCisKIGNvcmUucXVvdGVwYXRoOjoKIAlUaGUgY29tbWFuZHMgdGhhdCBvdXRwdXQgcGF0aHMgKGUuZy4gJ2xzLWZpbGVzJywKIAknZGlmZicpLCB3aGVuIG5vdCBnaXZlbiB0aGUgYC16YCBvcHRpb24sIHdpbGwgcXVvdGUKQEAgLTI1MiwyMCArMjc5LDIwIEBACiAJY29udmVyc2lvbi4KIAogY29yZS5zYWZlY3JsZjo6Ci0JSWYgdHJ1ZSwgbWFrZXMgZ2l0IGNoZWNrIGlmIGNvbnZlcnRpbmcgYENSTEZgIGlzIHJldmVyc2libGUgd2hlbgorCUlmIHRydWUsIG1ha2VzIEdpdCBjaGVjayBpZiBjb252ZXJ0aW5nIGBDUkxGYCBpcyByZXZlcnNpYmxlIHdoZW4KIAllbmQtb2YtbGluZSBjb252ZXJzaW9uIGlzIGFjdGl2ZS4gIEdpdCB3aWxsIHZlcmlmeSBpZiBhIGNvbW1hbmQKIAltb2RpZmllcyBhIGZpbGUgaW4gdGhlIHdvcmsgdHJlZSBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KIAlGb3IgZXhhbXBsZSwgY29tbWl0dGluZyBhIGZpbGUgZm9sbG93ZWQgYnkgY2hlY2tpbmcgb3V0IHRoZQogCXNhbWUgZmlsZSBzaG91bGQgeWllbGQgdGhlIG9yaWdpbmFsIGZpbGUgaW4gdGhlIHdvcmsgdHJlZS4gIElmCiAJdGhpcyBpcyBub3QgdGhlIGNhc2UgZm9yIHRoZSBjdXJyZW50IHNldHRpbmcgb2YKLQlgY29yZS5hdXRvY3JsZmAsIGdpdCB3aWxsIHJlamVjdCB0aGUgZmlsZS4gIFRoZSB2YXJpYWJsZSBjYW4KLQliZSBzZXQgdG8gIndhcm4iLCBpbiB3aGljaCBjYXNlIGdpdCB3aWxsIG9ubHkgd2FybiBhYm91dCBhbgorCWBjb3JlLmF1dG9jcmxmYCwgR2l0IHdpbGwgcmVqZWN0IHRoZSBmaWxlLiAgVGhlIHZhcmlhYmxlIGNhbgorCWJlIHNldCB0byAid2FybiIsIGluIHdoaWNoIGNhc2UgR2l0IHdpbGwgb25seSB3YXJuIGFib3V0IGFuCiAJaXJyZXZlcnNpYmxlIGNvbnZlcnNpb24gYnV0IGNvbnRpbnVlIHRoZSBvcGVyYXRpb24uCiArCiBDUkxGIGNvbnZlcnNpb24gYmVhcnMgYSBzbGlnaHQgY2hhbmNlIG9mIGNvcnJ1cHRpbmcgZGF0YS4KLVdoZW4gaXQgaXMgZW5hYmxlZCwgZ2l0IHdpbGwgY29udmVydCBDUkxGIHRvIExGIGR1cmluZyBjb21taXQgYW5kIExGIHRvCitXaGVuIGl0IGlzIGVuYWJsZWQsIEdpdCB3aWxsIGNvbnZlcnQgQ1JMRiB0byBMRiBkdXJpbmcgY29tbWl0IGFuZCBMRiB0bwogQ1JMRiBkdXJpbmcgY2hlY2tvdXQuICBBIGZpbGUgdGhhdCBjb250YWlucyBhIG1peHR1cmUgb2YgTEYgYW5kCi1DUkxGIGJlZm9yZSB0aGUgY29tbWl0IGNhbm5vdCBiZSByZWNyZWF0ZWQgYnkgZ2l0LiAgRm9yIHRleHQKK0NSTEYgYmVmb3JlIHRoZSBjb21taXQgY2Fubm90IGJlIHJlY3JlYXRlZCBieSBHaXQuICBGb3IgdGV4dAogZmlsZXMgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG86IGl0IGNvcnJlY3RzIGxpbmUgZW5kaW5ncwogc3VjaCB0aGF0IHdlIGhhdmUgb25seSBMRiBsaW5lIGVuZGluZ3MgaW4gdGhlIHJlcG9zaXRvcnkuCiBCdXQgZm9yIGJpbmFyeSBmaWxlcyB0aGF0IGFyZSBhY2NpZGVudGFsbHkgY2xhc3NpZmllZCBhcyB0ZXh0IHRoZQpAQCAtMjc1LDcgKzMwMiw3IEBACiBzZXR0aW5nIHRoZSBjb252ZXJzaW9uIHR5cGUgZXhwbGljaXRseSBpbiAuZ2l0YXR0cmlidXRlcy4gIFJpZ2h0CiBhZnRlciBjb21taXR0aW5nIHlvdSBzdGlsbCBoYXZlIHRoZSBvcmlnaW5hbCBmaWxlIGluIHlvdXIgd29yawogdHJlZSBhbmQgdGhpcyBmaWxlIGlzIG5vdCB5ZXQgY29ycnVwdGVkLiAgWW91IGNhbiBleHBsaWNpdGx5IHRlbGwKLWdpdCB0aGF0IHRoaXMgZmlsZSBpcyBiaW5hcnkgYW5kIGdpdCB3aWxsIGhhbmRsZSB0aGUgZmlsZQorR2l0IHRoYXQgdGhpcyBmaWxlIGlzIGJpbmFyeSBhbmQgR2l0IHdpbGwgaGFuZGxlIHRoZSBmaWxlCiBhcHByb3ByaWF0ZWx5LgogKwogVW5mb3J0dW5hdGVseSwgdGhlIGRlc2lyZWQgZWZmZWN0IG9mIGNsZWFuaW5nIHVwIHRleHQgZmlsZXMgd2l0aApAQCAtMzIwLDcgKzM0Nyw3IEBACiBjb3JlLmdpdFByb3h5OjoKIAlBICJwcm94eSBjb21tYW5kIiB0byBleGVjdXRlIChhcyAnY29tbWFuZCBob3N0IHBvcnQnKSBpbnN0ZWFkCiAJb2YgZXN0YWJsaXNoaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgc2VydmVyIHdoZW4KLQl1c2luZyB0aGUgZ2l0IHByb3RvY29sIGZvciBmZXRjaGluZy4gSWYgdGhlIHZhcmlhYmxlIHZhbHVlIGlzCisJdXNpbmcgdGhlIEdpdCBwcm90b2NvbCBmb3IgZmV0Y2hpbmcuIElmIHRoZSB2YXJpYWJsZSB2YWx1ZSBpcwogCWluIHRoZSAiQ09NTUFORCBmb3IgRE9NQUlOIiBmb3JtYXQsIHRoZSBjb21tYW5kIGlzIGFwcGxpZWQgb25seQogCW9uIGhvc3RuYW1lcyBlbmRpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGRvbWFpbiBzdHJpbmcuIFRoaXMgdmFyaWFibGUKIAltYXkgYmUgc2V0IG11bHRpcGxlIHRpbWVzIGFuZCBpcyBtYXRjaGVkIGluIHRoZSBnaXZlbiBvcmRlcjsKQEAgLTM3OSw3ICs0MDYsNyBAQAogZmlsZSBpbiBhICIuZ2l0IiBzdWJkaXJlY3Rvcnkgb2YgYSBkaXJlY3RvcnkgYW5kIGl0cyB2YWx1ZSBkaWZmZXJzCiBmcm9tIHRoZSBsYXR0ZXIgZGlyZWN0b3J5IChlLmcuICIvcGF0aC90by8uZ2l0L2NvbmZpZyIgaGFzCiBjb3JlLndvcmt0cmVlIHNldCB0byAiL2RpZmZlcmVudC9wYXRoIiksIHdoaWNoIGlzIG1vc3QgbGlrZWx5IGEKLW1pc2NvbmZpZ3VyYXRpb24uICBSdW5uaW5nIGdpdCBjb21tYW5kcyBpbiB0aGUgIi9wYXRoL3RvIiBkaXJlY3Rvcnkgd2lsbAorbWlzY29uZmlndXJhdGlvbi4gIFJ1bm5pbmcgR2l0IGNvbW1hbmRzIGluIHRoZSAiL3BhdGgvdG8iIGRpcmVjdG9yeSB3aWxsCiBzdGlsbCB1c2UgIi9kaWZmZXJlbnQvcGF0aCIgYXMgdGhlIHJvb3Qgb2YgdGhlIHdvcmsgdHJlZSBhbmQgY2FuIGNhdXNlCiBjb25mdXNpb24gdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyAoZS5nLiB5b3UgYXJlIGNyZWF0aW5nIGEKIHJlYWQtb25seSBzbmFwc2hvdCBvZiB0aGUgc2FtZSBpbmRleCB0byBhIGxvY2F0aW9uIGRpZmZlcmVudCBmcm9tIHRoZQpAQCAtMzg4LDcgKzQxNSw3IEBACiBjb3JlLmxvZ0FsbFJlZlVwZGF0ZXM6OgogCUVuYWJsZSB0aGUgcmVmbG9nLiBVcGRhdGVzIHRvIGEgcmVmIDxyZWY+IGlzIGxvZ2dlZCB0byB0aGUgZmlsZQogCSIkR0lUX0RJUi9sb2dzLzxyZWY+IiwgYnkgYXBwZW5kaW5nIHRoZSBuZXcgYW5kIG9sZAotCVNIQTEsIHRoZSBkYXRlL3RpbWUgYW5kIHRoZSByZWFzb24gb2YgdGhlIHVwZGF0ZSwgYnV0CisJU0hBLTEsIHRoZSBkYXRlL3RpbWUgYW5kIHRoZSByZWFzb24gb2YgdGhlIHVwZGF0ZSwgYnV0CiAJb25seSB3aGVuIHRoZSBmaWxlIGV4aXN0cy4gIElmIHRoaXMgY29uZmlndXJhdGlvbgogCXZhcmlhYmxlIGlzIHNldCB0byB0cnVlLCBtaXNzaW5nICIkR0lUX0RJUi9sb2dzLzxyZWY+IgogCWZpbGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciBicmFuY2ggaGVhZHMgKGkuZS4gdW5kZXIKQEAgLTQxMSw3ICs0MzgsNyBAQAogCXNldmVyYWwgdXNlcnMgaW4gYSBncm91cCAobWFraW5nIHN1cmUgYWxsIHRoZSBmaWxlcyBhbmQgb2JqZWN0cyBhcmUKIAlncm91cC13cml0YWJsZSkuIFdoZW4gJ2FsbCcgKG9yICd3b3JsZCcgb3IgJ2V2ZXJ5Ym9keScpLCB0aGUKIAlyZXBvc2l0b3J5IHdpbGwgYmUgcmVhZGFibGUgYnkgYWxsIHVzZXJzLCBhZGRpdGlvbmFsbHkgdG8gYmVpbmcKLQlncm91cC1zaGFyZWFibGUuIFdoZW4gJ3VtYXNrJyAob3IgJ2ZhbHNlJyksIGdpdCB3aWxsIHVzZSBwZXJtaXNzaW9ucworCWdyb3VwLXNoYXJlYWJsZS4gV2hlbiAndW1hc2snIChvciAnZmFsc2UnKSwgR2l0IHdpbGwgdXNlIHBlcm1pc3Npb25zCiAJcmVwb3J0ZWQgYnkgdW1hc2soMikuIFdoZW4gJzB4eHgnLCB3aGVyZSAnMHh4eCcgaXMgYW4gb2N0YWwgbnVtYmVyLAogCWZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHdpbGwgaGF2ZSB0aGlzIG1vZGUgdmFsdWUuICcweHh4JyB3aWxsIG92ZXJyaWRlCiAJdXNlcidzIHVtYXNrIHZhbHVlICh3aGVyZWFzIHRoZSBvdGhlciBvcHRpb25zIHdpbGwgb25seSBvdmVycmlkZQpAQCAtNDIyLDggKzQ0OSw4IEBACiAJU2VlIGxpbmtnaXQ6Z2l0LWluaXRbMV0uIEZhbHNlIGJ5IGRlZmF1bHQuCiAKIGNvcmUud2FybkFtYmlndW91c1JlZnM6OgotCUlmIHRydWUsIGdpdCB3aWxsIHdhcm4geW91IGlmIHRoZSByZWYgbmFtZSB5b3UgcGFzc2VkIGl0IGlzIGFtYmlndW91cwotCWFuZCBtaWdodCBtYXRjaCBtdWx0aXBsZSByZWZzIGluIHRoZSAuZ2l0L3JlZnMvIHRyZWUuIFRydWUgYnkgZGVmYXVsdC4KKwlJZiB0cnVlLCBHaXQgd2lsbCB3YXJuIHlvdSBpZiB0aGUgcmVmIG5hbWUgeW91IHBhc3NlZCBpdCBpcyBhbWJpZ3VvdXMKKwlhbmQgbWlnaHQgbWF0Y2ggbXVsdGlwbGUgcmVmcyBpbiB0aGUgcmVwb3NpdG9yeS4gVHJ1ZSBieSBkZWZhdWx0LgogCiBjb3JlLmNvbXByZXNzaW9uOjoKIAlBbiBpbnRlZ2VyIC0xLi45LCBpbmRpY2F0aW5nIGEgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbC4KQEAgLTQ5NCw3ICs1MjEsNyBAQAogCiBjb3JlLmV4Y2x1ZGVzZmlsZTo6CiAJSW4gYWRkaXRpb24gdG8gJy5naXRpZ25vcmUnIChwZXItZGlyZWN0b3J5KSBhbmQKLQknLmdpdC9pbmZvL2V4Y2x1ZGUnLCBnaXQgbG9va3MgaW50byB0aGlzIGZpbGUgZm9yIHBhdHRlcm5zCisJJy5naXQvaW5mby9leGNsdWRlJywgR2l0IGxvb2tzIGludG8gdGhpcyBmaWxlIGZvciBwYXR0ZXJucwogCW9mIGZpbGVzIHdoaWNoIGFyZSBub3QgbWVhbnQgdG8gYmUgdHJhY2tlZC4gICJgfi9gIiBpcyBleHBhbmRlZAogCXRvIHRoZSB2YWx1ZSBvZiBgJEhPTUVgIGFuZCAiYH51c2VyL2AiIHRvIHRoZSBzcGVjaWZpZWQgdXNlcidzCiAJaG9tZSBkaXJlY3RvcnkuIEl0cyBkZWZhdWx0IHZhbHVlIGlzICRYREdfQ09ORklHX0hPTUUvZ2l0L2lnbm9yZS4KQEAgLTUxMiw3ICs1MzksNyBAQAogCiBjb3JlLmF0dHJpYnV0ZXNmaWxlOjoKIAlJbiBhZGRpdGlvbiB0byAnLmdpdGF0dHJpYnV0ZXMnIChwZXItZGlyZWN0b3J5KSBhbmQKLQknLmdpdC9pbmZvL2F0dHJpYnV0ZXMnLCBnaXQgbG9va3MgaW50byB0aGlzIGZpbGUgZm9yIGF0dHJpYnV0ZXMKKwknLmdpdC9pbmZvL2F0dHJpYnV0ZXMnLCBHaXQgbG9va3MgaW50byB0aGlzIGZpbGUgZm9yIGF0dHJpYnV0ZXMKIAkoc2VlIGxpbmtnaXQ6Z2l0YXR0cmlidXRlc1s1XSkuIFBhdGggZXhwYW5zaW9ucyBhcmUgbWFkZSB0aGUgc2FtZQogCXdheSBhcyBmb3IgYGNvcmUuZXhjbHVkZXNmaWxlYC4gSXRzIGRlZmF1bHQgdmFsdWUgaXMKIAkkWERHX0NPTkZJR19IT01FL2dpdC9hdHRyaWJ1dGVzLiBJZiAkWERHX0NPTkZJR19IT01FIGlzIGVpdGhlciBub3QKQEAgLTUyNCw2ICs1NTEsMTIgQEAKIAl2YXJpYWJsZSB3aGVuIGl0IGlzIHNldCwgYW5kIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQogCWBHSVRfRURJVE9SYCBpcyBub3Qgc2V0LiAgU2VlIGxpbmtnaXQ6Z2l0LXZhclsxXS4KIAorY29yZS5jb21tZW50Y2hhcjo6CisJQ29tbWFuZHMgc3VjaCBhcyBgY29tbWl0YCBhbmQgYHRhZ2AgdGhhdCBsZXRzIHlvdSBlZGl0CisJbWVzc2FnZXMgY29uc2lkZXIgYSBsaW5lIHRoYXQgYmVnaW5zIHdpdGggdGhpcyBjaGFyYWN0ZXIKKwljb21tZW50ZWQsIGFuZCByZW1vdmVzIHRoZW0gYWZ0ZXIgdGhlIGVkaXRvciByZXR1cm5zCisJKGRlZmF1bHQgJyMnKS4KKwogc2VxdWVuY2UuZWRpdG9yOjoKIAlUZXh0IGVkaXRvciB1c2VkIGJ5IGBnaXQgcmViYXNlIC1pYCBmb3IgZWRpdGluZyB0aGUgcmViYXNlIGluc3RydWN0aW9uIGZpbGUuCiAJVGhlIHZhbHVlIGlzIG1lYW50IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBzaGVsbCB3aGVuIGl0IGlzIHVzZWQuCkBAIC01MzEsOSArNTY0LDkgQEAKIAlXaGVuIG5vdCBjb25maWd1cmVkIHRoZSBkZWZhdWx0IGNvbW1pdCBtZXNzYWdlIGVkaXRvciBpcyB1c2VkIGluc3RlYWQuCiAKIGNvcmUucGFnZXI6OgotCVRoZSBjb21tYW5kIHRoYXQgZ2l0IHdpbGwgdXNlIHRvIHBhZ2luYXRlIG91dHB1dC4gIENhbgorCVRoZSBjb21tYW5kIHRoYXQgR2l0IHdpbGwgdXNlIHRvIHBhZ2luYXRlIG91dHB1dC4gIENhbgogCWJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgYEdJVF9QQUdFUmAgZW52aXJvbm1lbnQKLQl2YXJpYWJsZS4gIE5vdGUgdGhhdCBnaXQgc2V0cyB0aGUgYExFU1NgIGVudmlyb25tZW50CisJdmFyaWFibGUuICBOb3RlIHRoYXQgR2l0IHNldHMgdGhlIGBMRVNTYCBlbnZpcm9ubWVudAogCXZhcmlhYmxlIHRvIGBGUlNYYCBpZiBpdCBpcyB1bnNldCB3aGVuIGl0IHJ1bnMgdGhlCiAJcGFnZXIuICBPbmUgY2FuIGNoYW5nZSB0aGVzZSBzZXR0aW5ncyBieSBzZXR0aW5nIHRoZQogCWBMRVNTYCB2YXJpYWJsZSB0byBzb21lIG90aGVyIHZhbHVlLiAgQWx0ZXJuYXRlbHksCkBAIC01NDEsMTEgKzU3NCwxMSBAQAogCWdsb2JhbCBiYXNpcyBieSBzZXR0aW5nIHRoZSBgY29yZS5wYWdlcmAgb3B0aW9uLgogCVNldHRpbmcgYGNvcmUucGFnZXJgIGhhcyBubyBlZmZlY3Qgb24gdGhlIGBMRVNTYAogCWVudmlyb25tZW50IHZhcmlhYmxlIGJlaGF2aW91ciBhYm92ZSwgc28gaWYgeW91IHdhbnQKLQl0byBvdmVycmlkZSBnaXQncyBkZWZhdWx0IHNldHRpbmdzIHRoaXMgd2F5LCB5b3UgbmVlZAorCXRvIG92ZXJyaWRlIEdpdCdzIGRlZmF1bHQgc2V0dGluZ3MgdGhpcyB3YXksIHlvdSBuZWVkCiAJdG8gYmUgZXhwbGljaXQuICBGb3IgZXhhbXBsZSwgdG8gZGlzYWJsZSB0aGUgUyBvcHRpb24KIAlpbiBhIGJhY2t3YXJkIGNvbXBhdGlibGUgbWFubmVyLCBzZXQgYGNvcmUucGFnZXJgCiAJdG8gYGxlc3MgLStTYC4gIFRoaXMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHNoZWxsIGJ5Ci0JZ2l0LCB3aGljaCB3aWxsIHRyYW5zbGF0ZSB0aGUgZmluYWwgY29tbWFuZCB0bworCUdpdCwgd2hpY2ggd2lsbCB0cmFuc2xhdGUgdGhlIGZpbmFsIGNvbW1hbmQgdG8KIAlgTEVTUz1GUlNYIGxlc3MgLStTYC4KIAogY29yZS53aGl0ZXNwYWNlOjoKQEAgLTU3NCw3ICs2MDcsNyBAQAogICBkb2VzIG5vdCB0cmlnZ2VyIGlmIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIHN1Y2ggYSBjYXJyaWFnZS1yZXR1cm4KICAgaXMgbm90IGEgd2hpdGVzcGFjZSAobm90IGVuYWJsZWQgYnkgZGVmYXVsdCkuCiAqIGB0YWJ3aWR0aD08bj5gIHRlbGxzIGhvdyBtYW55IGNoYXJhY3RlciBwb3NpdGlvbnMgYSB0YWIgb2NjdXBpZXM7IHRoaXMKLSAgaXMgcmVsZXZhbnQgZm9yIGBpbmRlbnQtd2l0aC1ub24tdGFiYCBhbmQgd2hlbiBnaXQgZml4ZXMgYHRhYi1pbi1pbmRlbnRgCisgIGlzIHJlbGV2YW50IGZvciBgaW5kZW50LXdpdGgtbm9uLXRhYmAgYW5kIHdoZW4gR2l0IGZpeGVzIGB0YWItaW4taW5kZW50YAogICBlcnJvcnMuIFRoZSBkZWZhdWx0IHRhYiB3aWR0aCBpcyA4LiBBbGxvd2VkIHZhbHVlcyBhcmUgMSB0byA2My4KIAogY29yZS5mc3luY29iamVjdGZpbGVzOjoKQEAgLTU5MCw3ICs2MjMsNyBAQAogKwogVGhpcyBjYW4gc3BlZWQgdXAgb3BlcmF0aW9ucyBsaWtlICdnaXQgZGlmZicgYW5kICdnaXQgc3RhdHVzJyBlc3BlY2lhbGx5CiBvbiBmaWxlc3lzdGVtcyBsaWtlIE5GUyB0aGF0IGhhdmUgd2VhayBjYWNoaW5nIHNlbWFudGljcyBhbmQgdGh1cwotcmVsYXRpdmVseSBoaWdoIElPIGxhdGVuY2llcy4gIFdpdGggdGhpcyBzZXQgdG8gJ3RydWUnLCBnaXQgd2lsbCBkbyB0aGUKK3JlbGF0aXZlbHkgaGlnaCBJTyBsYXRlbmNpZXMuICBXaXRoIHRoaXMgc2V0IHRvICd0cnVlJywgR2l0IHdpbGwgZG8gdGhlCiBpbmRleCBjb21wYXJpc29uIHRvIHRoZSBmaWxlc3lzdGVtIGRhdGEgaW4gcGFyYWxsZWwsIGFsbG93aW5nCiBvdmVybGFwcGluZyBJTydzLgogCkBAIC02MjYsOSArNjU5LDkgQEAKIGFkZC5pZ25vcmVFcnJvcnM6OgogCVRlbGxzICdnaXQgYWRkJyB0byBjb250aW51ZSBhZGRpbmcgZmlsZXMgd2hlbiBzb21lIGZpbGVzIGNhbm5vdCBiZQogCWFkZGVkIGR1ZSB0byBpbmRleGluZyBlcnJvcnMuIEVxdWl2YWxlbnQgdG8gdGhlICctLWlnbm9yZS1lcnJvcnMnCi0Jb3B0aW9uIG9mIGxpbmtnaXQ6Z2l0LWFkZFsxXS4gIE9sZGVyIHZlcnNpb25zIG9mIGdpdCBhY2NlcHQgb25seQorCW9wdGlvbiBvZiBsaW5rZ2l0OmdpdC1hZGRbMV0uICBPbGRlciB2ZXJzaW9ucyBvZiBHaXQgYWNjZXB0IG9ubHkKIAlgYWRkLmlnbm9yZS1lcnJvcnNgLCB3aGljaCBkb2VzIG5vdCBmb2xsb3cgdGhlIHVzdWFsIG5hbWluZwotCWNvbnZlbnRpb24gZm9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiAgTmV3ZXIgdmVyc2lvbnMgb2YgZ2l0CisJY29udmVudGlvbiBmb3IgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuICBOZXdlciB2ZXJzaW9ucyBvZiBHaXQKIAlob25vciBgYWRkLmlnbm9yZUVycm9yc2AgYXMgd2VsbC4KIAogYWxpYXMuKjo6CkBAIC02MzYsNyArNjY5LDcgQEAKIAlhZnRlciBkZWZpbmluZyAiYWxpYXMubGFzdCA9IGNhdC1maWxlIGNvbW1pdCBIRUFEIiwgdGhlIGludm9jYXRpb24KIAkiZ2l0IGxhc3QiIGlzIGVxdWl2YWxlbnQgdG8gImdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCIuIFRvIGF2b2lkCiAJY29uZnVzaW9uIGFuZCB0cm91YmxlcyB3aXRoIHNjcmlwdCB1c2FnZSwgYWxpYXNlcyB0aGF0Ci0JaGlkZSBleGlzdGluZyBnaXQgY29tbWFuZHMgYXJlIGlnbm9yZWQuIEFyZ3VtZW50cyBhcmUgc3BsaXQgYnkKKwloaWRlIGV4aXN0aW5nIEdpdCBjb21tYW5kcyBhcmUgaWdub3JlZC4gQXJndW1lbnRzIGFyZSBzcGxpdCBieQogCXNwYWNlcywgdGhlIHVzdWFsIHNoZWxsIHF1b3RpbmcgYW5kIGVzY2FwaW5nIGlzIHN1cHBvcnRlZC4KIAlxdW90ZSBwYWlyIGFuZCBhIGJhY2tzbGFzaCBjYW4gYmUgdXNlZCB0byBxdW90ZSB0aGVtLgogKwpAQCAtNjgzLDcgKzcxNiw3IEBACiAKIGJyYW5jaC5hdXRvc2V0dXByZWJhc2U6OgogCVdoZW4gYSBuZXcgYnJhbmNoIGlzIGNyZWF0ZWQgd2l0aCAnZ2l0IGJyYW5jaCcgb3IgJ2dpdCBjaGVja291dCcKLQl0aGF0IHRyYWNrcyBhbm90aGVyIGJyYW5jaCwgdGhpcyB2YXJpYWJsZSB0ZWxscyBnaXQgdG8gc2V0CisJdGhhdCB0cmFja3MgYW5vdGhlciBicmFuY2gsIHRoaXMgdmFyaWFibGUgdGVsbHMgR2l0IHRvIHNldAogCXVwIHB1bGwgdG8gcmViYXNlIGluc3RlYWQgb2YgbWVyZ2UgKHNlZSAiYnJhbmNoLjxuYW1lPi5yZWJhc2UiKS4KIAlXaGVuIGBuZXZlcmAsIHJlYmFzZSBpcyBuZXZlciBhdXRvbWF0aWNhbGx5IHNldCB0byB0cnVlLgogCVdoZW4gYGxvY2FsYCwgcmViYXNlIGlzIHNldCB0byB0cnVlIGZvciB0cmFja2VkIGJyYW5jaGVzIG9mCkBAIC02OTcsOSArNzMwLDIyIEBACiAJVGhpcyBvcHRpb24gZGVmYXVsdHMgdG8gbmV2ZXIuCiAKIGJyYW5jaC48bmFtZT4ucmVtb3RlOjoKLQlXaGVuIGluIGJyYW5jaCA8bmFtZT4sIGl0IHRlbGxzICdnaXQgZmV0Y2gnIGFuZCAnZ2l0IHB1c2gnIHdoaWNoCi0JcmVtb3RlIHRvIGZldGNoIGZyb20vcHVzaCB0by4gIEl0IGRlZmF1bHRzIHRvIGBvcmlnaW5gIGlmIG5vIHJlbW90ZSBpcwotCWNvbmZpZ3VyZWQuIGBvcmlnaW5gIGlzIGFsc28gdXNlZCBpZiB5b3UgYXJlIG5vdCBvbiBhbnkgYnJhbmNoLgorCVdoZW4gb24gYnJhbmNoIDxuYW1lPiwgaXQgdGVsbHMgJ2dpdCBmZXRjaCcgYW5kICdnaXQgcHVzaCcKKwl3aGljaCByZW1vdGUgdG8gZmV0Y2ggZnJvbS9wdXNoIHRvLiAgVGhlIHJlbW90ZSB0byBwdXNoIHRvCisJbWF5IGJlIG92ZXJyaWRkZW4gd2l0aCBgcmVtb3RlLnB1c2hkZWZhdWx0YCAoZm9yIGFsbCBicmFuY2hlcykuCisJVGhlIHJlbW90ZSB0byBwdXNoIHRvLCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLCBtYXkgYmUgZnVydGhlcgorCW92ZXJyaWRkZW4gYnkgYGJyYW5jaC48bmFtZT4ucHVzaHJlbW90ZWAuICBJZiBubyByZW1vdGUgaXMKKwljb25maWd1cmVkLCBvciBpZiB5b3UgYXJlIG5vdCBvbiBhbnkgYnJhbmNoLCBpdCBkZWZhdWx0cyB0bworCWBvcmlnaW5gIGZvciBmZXRjaGluZyBhbmQgYHJlbW90ZS5wdXNoZGVmYXVsdGAgZm9yIHB1c2hpbmcuCisKK2JyYW5jaC48bmFtZT4ucHVzaHJlbW90ZTo6CisJV2hlbiBvbiBicmFuY2ggPG5hbWU+LCBpdCBvdmVycmlkZXMgYGJyYW5jaC48bmFtZT4ucmVtb3RlYCBmb3IKKwlwdXNoaW5nLiAgSXQgYWxzbyBvdmVycmlkZXMgYHJlbW90ZS5wdXNoZGVmYXVsdGAgZm9yIHB1c2hpbmcKKwlmcm9tIGJyYW5jaCA8bmFtZT4uICBXaGVuIHlvdSBwdWxsIGZyb20gb25lIHBsYWNlIChlLmcuIHlvdXIKKwl1cHN0cmVhbSkgYW5kIHB1c2ggdG8gYW5vdGhlciBwbGFjZSAoZS5nLiB5b3VyIG93biBwdWJsaXNoaW5nCisJcmVwb3NpdG9yeSksIHlvdSB3b3VsZCB3YW50IHRvIHNldCBgcmVtb3RlLnB1c2hkZWZhdWx0YCB0bworCXNwZWNpZnkgdGhlIHJlbW90ZSB0byBwdXNoIHRvIGZvciBhbGwgYnJhbmNoZXMsIGFuZCB1c2UgdGhpcworCW9wdGlvbiB0byBvdmVycmlkZSBpdCBmb3IgYSBzcGVjaWZpYyBicmFuY2guCiAKIGJyYW5jaC48bmFtZT4ubWVyZ2U6OgogCURlZmluZXMsIHRvZ2V0aGVyIHdpdGggYnJhbmNoLjxuYW1lPi5yZW1vdGUsIHRoZSB1cHN0cmVhbSBicmFuY2gKQEAgLTczNSw2ICs3ODEsMTIgQEAKIGl0IHVubGVzcyB5b3UgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIChzZWUgbGlua2dpdDpnaXQtcmViYXNlWzFdCiBmb3IgZGV0YWlscykuCiAKK2JyYW5jaC48bmFtZT4uZGVzY3JpcHRpb246OgorCUJyYW5jaCBkZXNjcmlwdGlvbiwgY2FuIGJlIGVkaXRlZCB3aXRoCisJYGdpdCBicmFuY2ggLS1lZGl0LWRlc2NyaXB0aW9uYC4gQnJhbmNoIGRlc2NyaXB0aW9uIGlzCisJYXV0b21hdGljYWxseSBhZGRlZCBpbiB0aGUgZm9ybWF0LXBhdGNoIGNvdmVyIGxldHRlciBvcgorCXJlcXVlc3QtcHVsbCBzdW1tYXJ5LgorCiBicm93c2VyLjx0b29sPi5jbWQ6OgogCVNwZWNpZnkgdGhlIGNvbW1hbmQgdG8gaW52b2tlIHRoZSBzcGVjaWZpZWQgYnJvd3Nlci4gVGhlCiAJc3BlY2lmaWVkIGNvbW1hbmQgaXMgZXZhbHVhdGVkIGluIHNoZWxsIHdpdGggdGhlIFVSTHMgcGFzc2VkCkBAIC03NTgsNyArODEwLDggQEAKIGNvbG9yLmJyYW5jaC48c2xvdD46OgogCVVzZSBjdXN0b21pemVkIGNvbG9yIGZvciBicmFuY2ggY29sb3JhdGlvbi4gYDxzbG90PmAgaXMgb25lIG9mCiAJYGN1cnJlbnRgICh0aGUgY3VycmVudCBicmFuY2gpLCBgbG9jYWxgIChhIGxvY2FsIGJyYW5jaCksCi0JYHJlbW90ZWAgKGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCBpbiByZWZzL3JlbW90ZXMvKSwgYHBsYWluYCAob3RoZXIKKwlgcmVtb3RlYCAoYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIGluIHJlZnMvcmVtb3Rlcy8pLAorCWB1cHN0cmVhbWAgKHVwc3RyZWFtIHRyYWNraW5nIGJyYW5jaCksIGBwbGFpbmAgKG90aGVyCiAJcmVmcykuCiArCiBUaGUgdmFsdWUgZm9yIHRoZXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGlzIGEgbGlzdCBvZiBjb2xvcnMgKGF0IG1vc3QKQEAgLTg1OCw3ICs5MTEsNyBAQAogCW9uZSBvZiBgaGVhZGVyYCAodGhlIGhlYWRlciB0ZXh0IG9mIHRoZSBzdGF0dXMgbWVzc2FnZSksCiAJYGFkZGVkYCBvciBgdXBkYXRlZGAgKGZpbGVzIHdoaWNoIGFyZSBhZGRlZCBidXQgbm90IGNvbW1pdHRlZCksCiAJYGNoYW5nZWRgIChmaWxlcyB3aGljaCBhcmUgY2hhbmdlZCBidXQgbm90IGFkZGVkIGluIHRoZSBpbmRleCksCi0JYHVudHJhY2tlZGAgKGZpbGVzIHdoaWNoIGFyZSBub3QgdHJhY2tlZCBieSBnaXQpLAorCWB1bnRyYWNrZWRgIChmaWxlcyB3aGljaCBhcmUgbm90IHRyYWNrZWQgYnkgR2l0KSwKIAlgYnJhbmNoYCAodGhlIGN1cnJlbnQgYnJhbmNoKSwgb3IKIAlgbm9icmFuY2hgICh0aGUgY29sb3IgdGhlICdubyBicmFuY2gnIHdhcm5pbmcgaXMgc2hvd24gaW4sIGRlZmF1bHRpbmcKIAl0byByZWQpLiBUaGUgdmFsdWVzIG9mIHRoZXNlIHZhcmlhYmxlcyBtYXkgYmUgc3BlY2lmaWVkIGFzIGluCkBAIC04NjksMTEgKzkyMiwxMiBAQAogCWFzIGBjb2xvci5kaWZmYCBhbmQgYGNvbG9yLmdyZXBgIHRoYXQgY29udHJvbCB0aGUgdXNlIG9mIGNvbG9yCiAJcGVyIGNvbW1hbmQgZmFtaWx5LiBJdHMgc2NvcGUgd2lsbCBleHBhbmQgYXMgbW9yZSBjb21tYW5kcyBsZWFybgogCWNvbmZpZ3VyYXRpb24gdG8gc2V0IGEgZGVmYXVsdCBmb3IgdGhlIGAtLWNvbG9yYCBvcHRpb24uICBTZXQgaXQKLQl0byBgYWx3YXlzYCBpZiB5b3Ugd2FudCBhbGwgb3V0cHV0IG5vdCBpbnRlbmRlZCBmb3IgbWFjaGluZQotCWNvbnN1bXB0aW9uIHRvIHVzZSBjb2xvciwgdG8gYHRydWVgIG9yIGBhdXRvYCBpZiB5b3Ugd2FudCBzdWNoCi0Jb3V0cHV0IHRvIHVzZSBjb2xvciB3aGVuIHdyaXR0ZW4gdG8gdGhlIHRlcm1pbmFsLCBvciB0byBgZmFsc2VgIG9yCi0JYG5ldmVyYCBpZiB5b3UgcHJlZmVyIGdpdCBjb21tYW5kcyBub3QgdG8gdXNlIGNvbG9yIHVubGVzcyBlbmFibGVkCi0JZXhwbGljaXRseSB3aXRoIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvciB0aGUgYC0tY29sb3JgIG9wdGlvbi4KKwl0byBgZmFsc2VgIG9yIGBuZXZlcmAgaWYgeW91IHByZWZlciBHaXQgY29tbWFuZHMgbm90IHRvIHVzZQorCWNvbG9yIHVubGVzcyBlbmFibGVkIGV4cGxpY2l0bHkgd2l0aCBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24KKwlvciB0aGUgYC0tY29sb3JgIG9wdGlvbi4gU2V0IGl0IHRvIGBhbHdheXNgIGlmIHlvdSB3YW50IGFsbAorCW91dHB1dCBub3QgaW50ZW5kZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24gdG8gdXNlIGNvbG9yLCB0bworCWB0cnVlYCBvciBgYXV0b2AgKHRoaXMgaXMgdGhlIGRlZmF1bHQgc2luY2UgR2l0IDEuOC40KSBpZiB5b3UKKwl3YW50IHN1Y2ggb3V0cHV0IHRvIHVzZSBjb2xvciB3aGVuIHdyaXR0ZW4gdG8gdGhlIHRlcm1pbmFsLgogCiBjb2x1bW4udWk6OgogCVNwZWNpZnkgd2hldGhlciBzdXBwb3J0ZWQgY29tbWFuZHMgc2hvdWxkIG91dHB1dCBpbiBjb2x1bW5zLgpAQCAtOTEzLDYgKzk2NywxNSBAQAogCVNwZWNpZnkgd2hldGhlciB0byBvdXRwdXQgdGFnIGxpc3RpbmcgaW4gYGdpdCB0YWdgIGluIGNvbHVtbnMuCiAJU2VlIGBjb2x1bW4udWlgIGZvciBkZXRhaWxzLgogCitjb21taXQuY2xlYW51cDo6CisJVGhpcyBzZXR0aW5nIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBvZiB0aGUgYC0tY2xlYW51cGAgb3B0aW9uIGluCisJYGdpdCBjb21taXRgLiBTZWUgbGlua2dpdDpnaXQtY29tbWl0WzFdIGZvciBkZXRhaWxzLiBDaGFuZ2luZyB0aGUKKwlkZWZhdWx0IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3UgYWx3YXlzIHdhbnQgdG8ga2VlcCBsaW5lcyB0aGF0IGJlZ2luCisJd2l0aCBjb21tZW50IGNoYXJhY3RlciBgI2AgaW4geW91ciBsb2cgbWVzc2FnZSwgaW4gd2hpY2ggY2FzZSB5b3UKKwl3b3VsZCBkbyBgZ2l0IGNvbmZpZyBjb21taXQuY2xlYW51cCB3aGl0ZXNwYWNlYCAobm90ZSB0aGF0IHlvdSB3aWxsCisJaGF2ZSB0byByZW1vdmUgdGhlIGhlbHAgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGAjYCBpbiB0aGUgY29tbWl0IGxvZworCXRlbXBsYXRlIHlvdXJzZWxmLCBpZiB5b3UgZG8gdGhpcykuCisKIGNvbW1pdC5zdGF0dXM6OgogCUEgYm9vbGVhbiB0byBlbmFibGUvZGlzYWJsZSBpbmNsdXNpb24gb2Ygc3RhdHVzIGluZm9ybWF0aW9uIGluIHRoZQogCWNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIHdoZW4gdXNpbmcgYW4gZWRpdG9yIHRvIHByZXBhcmUgdGhlIGNvbW1pdApAQCAtOTgwLDcgKzEwNDMsNyBAQAogCWlzIHVzZWQgaW5zdGVhZC4KIAogZmV0Y2gudW5wYWNrTGltaXQ6OgotCUlmIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBmZXRjaGVkIG92ZXIgdGhlIGdpdCBuYXRpdmUKKwlJZiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgZmV0Y2hlZCBvdmVyIHRoZSBHaXQgbmF0aXZlCiAJdHJhbnNmZXIgaXMgYmVsb3cgdGhpcwogCWxpbWl0LCB0aGVuIHRoZSBvYmplY3RzIHdpbGwgYmUgdW5wYWNrZWQgaW50byBsb29zZSBvYmplY3QKIAlmaWxlcy4gSG93ZXZlciBpZiB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIG9iamVjdHMgZXF1YWxzIG9yCkBAIC0xMDIwLDcgKzEwODMsNyBAQAogCiBmb3JtYXQuc2lnbmF0dXJlOjoKIAlUaGUgZGVmYXVsdCBmb3IgZm9ybWF0LXBhdGNoIGlzIHRvIG91dHB1dCBhIHNpZ25hdHVyZSBjb250YWluaW5nCi0JdGhlIGdpdCB2ZXJzaW9uIG51bWJlci4gVXNlIHRoaXMgdmFyaWFibGUgdG8gY2hhbmdlIHRoYXQgZGVmYXVsdC4KKwl0aGUgR2l0IHZlcnNpb24gbnVtYmVyLiBVc2UgdGhpcyB2YXJpYWJsZSB0byBjaGFuZ2UgdGhhdCBkZWZhdWx0LgogCVNldCB0aGlzIHZhcmlhYmxlIHRvIHRoZSBlbXB0eSBzdHJpbmcgKCIiKSB0byBzdXBwcmVzcwogCXNpZ25hdHVyZSBnZW5lcmF0aW9uLgogCkBAIC0xMDQ1LDExICsxMTA4LDE2IEBACiAJdmFsdWUgZGlzYWJsZXMgdGhyZWFkaW5nLgogCiBmb3JtYXQuc2lnbm9mZjo6Ci0gICAgQSBib29sZWFuIHZhbHVlIHdoaWNoIGxldHMgeW91IGVuYWJsZSB0aGUgYC1zLy0tc2lnbm9mZmAgb3B0aW9uIG9mCi0gICAgZm9ybWF0LXBhdGNoIGJ5IGRlZmF1bHQuICpOb3RlOiogQWRkaW5nIHRoZSBTaWduZWQtb2ZmLWJ5OiBsaW5lIHRvIGEKLSAgICBwYXRjaCBzaG91bGQgYmUgYSBjb25zY2lvdXMgYWN0IGFuZCBtZWFucyB0aGF0IHlvdSBjZXJ0aWZ5IHlvdSBoYXZlCi0gICAgdGhlIHJpZ2h0cyB0byBzdWJtaXQgdGhpcyB3b3JrIHVuZGVyIHRoZSBzYW1lIG9wZW4gc291cmNlIGxpY2Vuc2UuCi0gICAgUGxlYXNlIHNlZSB0aGUgJ1N1Ym1pdHRpbmdQYXRjaGVzJyBkb2N1bWVudCBmb3IgZnVydGhlciBkaXNjdXNzaW9uLgorCUEgYm9vbGVhbiB2YWx1ZSB3aGljaCBsZXRzIHlvdSBlbmFibGUgdGhlIGAtcy8tLXNpZ25vZmZgIG9wdGlvbiBvZgorCWZvcm1hdC1wYXRjaCBieSBkZWZhdWx0LiAqTm90ZToqIEFkZGluZyB0aGUgU2lnbmVkLW9mZi1ieTogbGluZSB0byBhCisJcGF0Y2ggc2hvdWxkIGJlIGEgY29uc2Npb3VzIGFjdCBhbmQgbWVhbnMgdGhhdCB5b3UgY2VydGlmeSB5b3UgaGF2ZQorCXRoZSByaWdodHMgdG8gc3VibWl0IHRoaXMgd29yayB1bmRlciB0aGUgc2FtZSBvcGVuIHNvdXJjZSBsaWNlbnNlLgorCVBsZWFzZSBzZWUgdGhlICdTdWJtaXR0aW5nUGF0Y2hlcycgZG9jdW1lbnQgZm9yIGZ1cnRoZXIgZGlzY3Vzc2lvbi4KKworZm9ybWF0LmNvdmVyTGV0dGVyOjoKKwlBIGJvb2xlYW4gdGhhdCBjb250cm9scyB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgY292ZXItbGV0dGVyIHdoZW4KKwlmb3JtYXQtcGF0Y2ggaXMgaW52b2tlZCwgYnV0IGluIGFkZGl0aW9uIGNhbiBiZSBzZXQgdG8gImF1dG8iLCB0bworCWdlbmVyYXRlIGEgY292ZXItbGV0dGVyIG9ubHkgd2hlbiB0aGVyZSdzIG1vcmUgdGhhbiBvbmUgcGF0Y2guCiAKIGZpbHRlci48ZHJpdmVyPi5jbGVhbjo6CiAJVGhlIGNvbW1hbmQgd2hpY2ggaXMgdXNlZCB0byBjb252ZXJ0IHRoZSBjb250ZW50IG9mIGEgd29ya3RyZWUKQEAgLTExMzMsNyArMTIwMSw3IEBACiBnaXRjdnMudXNlY3JsZmF0dHI6OgogCUlmIHRydWUsIHRoZSBzZXJ2ZXIgd2lsbCBsb29rIHVwIHRoZSBlbmQtb2YtbGluZSBjb252ZXJzaW9uCiAJYXR0cmlidXRlcyBmb3IgZmlsZXMgdG8gZGV0ZXJtaW5lIHRoZSAnLWsnIG1vZGVzIHRvIHVzZS4gSWYKLQl0aGUgYXR0cmlidXRlcyBmb3JjZSBnaXQgdG8gdHJlYXQgYSBmaWxlIGFzIHRleHQsCisJdGhlIGF0dHJpYnV0ZXMgZm9yY2UgR2l0IHRvIHRyZWF0IGEgZmlsZSBhcyB0ZXh0LAogCXRoZSAnLWsnIG1vZGUgd2lsbCBiZSBsZWZ0IGJsYW5rIHNvIENWUyBjbGllbnRzIHdpbGwKIAl0cmVhdCBpdCBhcyB0ZXh0LiBJZiB0aGV5IHN1cHByZXNzIHRleHQgY29udmVyc2lvbiwgdGhlIGZpbGUKIAl3aWxsIGJlIHNldCB3aXRoICcta2InIG1vZGUsIHdoaWNoIHN1cHByZXNzZXMgYW55IG5ld2xpbmUgbXVuZ2luZwpAQCAtMTE1Myw3ICsxMjIxLDcgQEAKIAogZ2l0Y3ZzLmRibmFtZTo6CiAJRGF0YWJhc2UgdXNlZCBieSBnaXQtY3Zzc2VydmVyIHRvIGNhY2hlIHJldmlzaW9uIGluZm9ybWF0aW9uCi0JZGVyaXZlZCBmcm9tIHRoZSBnaXQgcmVwb3NpdG9yeS4gVGhlIGV4YWN0IG1lYW5pbmcgZGVwZW5kcyBvbiB0aGUKKwlkZXJpdmVkIGZyb20gdGhlIEdpdCByZXBvc2l0b3J5LiBUaGUgZXhhY3QgbWVhbmluZyBkZXBlbmRzIG9uIHRoZQogCXVzZWQgZGF0YWJhc2UgZHJpdmVyLCBmb3IgU1FMaXRlICh3aGljaCBpcyB0aGUgZGVmYXVsdCBkcml2ZXIpIHRoaXMKIAlpcyBhIGZpbGVuYW1lLiBTdXBwb3J0cyB2YXJpYWJsZSBzdWJzdGl0dXRpb24gKHNlZQogCWxpbmtnaXQ6Z2l0LWN2c3NlcnZlclsxXSBmb3IgZGV0YWlscykuIE1heSBub3QgY29udGFpbiBzZW1pY29sb25zIChgO2ApLgpAQCAtMTE2MSw3ICsxMjI5LDcgQEAKIAogZ2l0Y3ZzLmRiZHJpdmVyOjoKIAlVc2VkIFBlcmwgREJJIGRyaXZlci4gWW91IGNhbiBzcGVjaWZ5IGFueSBhdmFpbGFibGUgZHJpdmVyCi0gICAgICAgIGZvciB0aGlzIGhlcmUsIGJ1dCBpdCBtaWdodCBub3Qgd29yay4gZ2l0LWN2c3NlcnZlciBpcyB0ZXN0ZWQKKwlmb3IgdGhpcyBoZXJlLCBidXQgaXQgbWlnaHQgbm90IHdvcmsuIGdpdC1jdnNzZXJ2ZXIgaXMgdGVzdGVkCiAJd2l0aCAnREJEOjpTUUxpdGUnLCByZXBvcnRlZCB0byB3b3JrIHdpdGggJ0RCRDo6UGcnLCBhbmQKIAlyZXBvcnRlZCAqbm90KiB0byB3b3JrIHdpdGggJ0RCRDo6bXlzcWwnLiBFeHBlcmltZW50YWwgZmVhdHVyZS4KIAlNYXkgbm90IGNvbnRhaW4gZG91YmxlIGNvbG9ucyAoYDpgKS4gRGVmYXVsdDogJ1NRTGl0ZScuCkBAIC0xMzY1LDcgKzE0MzMsNyBAQAogCiBodHRwLmNvb2tpZWZpbGU6OgogCUZpbGUgY29udGFpbmluZyBwcmV2aW91c2x5IHN0b3JlZCBjb29raWUgbGluZXMgd2hpY2ggc2hvdWxkIGJlIHVzZWQKLQlpbiB0aGUgZ2l0IGh0dHAgc2Vzc2lvbiwgaWYgdGhleSBtYXRjaCB0aGUgc2VydmVyLiBUaGUgZmlsZSBmb3JtYXQKKwlpbiB0aGUgR2l0IGh0dHAgc2Vzc2lvbiwgaWYgdGhleSBtYXRjaCB0aGUgc2VydmVyLiBUaGUgZmlsZSBmb3JtYXQKIAlvZiB0aGUgZmlsZSB0byByZWFkIGNvb2tpZXMgZnJvbSBzaG91bGQgYmUgcGxhaW4gSFRUUCBoZWFkZXJzIG9yCiAJdGhlIE5ldHNjYXBlL01vemlsbGEgY29va2llIGZpbGUgZm9ybWF0IChzZWUgbGlua2dpdDpjdXJsWzFdKS4KIAlOT1RFIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIHdpdGggaHR0cC5jb29raWVmaWxlIGlzIG9ubHkgdXNlZCBhcwpAQCAtMTM4Nyw3ICsxNDU1LDcgQEAKIAl2YXJpYWJsZS4KIAogaHR0cC5zc2xDZXJ0UGFzc3dvcmRQcm90ZWN0ZWQ6OgotCUVuYWJsZSBnaXQncyBwYXNzd29yZCBwcm9tcHQgZm9yIHRoZSBTU0wgY2VydGlmaWNhdGUuICBPdGhlcndpc2UKKwlFbmFibGUgR2l0J3MgcGFzc3dvcmQgcHJvbXB0IGZvciB0aGUgU1NMIGNlcnRpZmljYXRlLiAgT3RoZXJ3aXNlCiAJT3BlblNTTCB3aWxsIHByb21wdCB0aGUgdXNlciwgcG9zc2libHkgbWFueSB0aW1lcywgaWYgdGhlCiAJY2VydGlmaWNhdGUgb3IgcHJpdmF0ZSBrZXkgaXMgZW5jcnlwdGVkLiAgQ2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlCiAJJ0dJVF9TU0xfQ0VSVF9QQVNTV09SRF9QUk9URUNURUQnIGVudmlyb25tZW50IHZhcmlhYmxlLgpAQCAtMTQwMiw2ICsxNDcwLDE0IEBACiAJd2l0aCB3aGVuIGZldGNoaW5nIG9yIHB1c2hpbmcgb3ZlciBIVFRQUy4gQ2FuIGJlIG92ZXJyaWRkZW4KIAlieSB0aGUgJ0dJVF9TU0xfQ0FQQVRIJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAoraHR0cC5zc2xUcnk6OgorCUF0dGVtcHQgdG8gdXNlIEFVVEggU1NML1RMUyBhbmQgZW5jcnlwdGVkIGRhdGEgdHJhbnNmZXJzCisJd2hlbiBjb25uZWN0aW5nIHZpYSByZWd1bGFyIEZUUCBwcm90b2NvbC4gVGhpcyBtaWdodCBiZSBuZWVkZWQKKwlpZiB0aGUgRlRQIHNlcnZlciByZXF1aXJlcyBpdCBmb3Igc2VjdXJpdHkgcmVhc29ucyBvciB5b3Ugd2lzaAorCXRvIGNvbm5lY3Qgc2VjdXJlbHkgd2hlbmV2ZXIgcmVtb3RlIEZUUCBzZXJ2ZXIgc3VwcG9ydHMgaXQuCisJRGVmYXVsdCBpcyBmYWxzZSBzaW5jZSBpdCBtaWdodCB0cmlnZ2VyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbgorCWVycm9ycyBvbiBtaXNjb25maWd1cmVkIHNlcnZlcnMuCisKIGh0dHAubWF4UmVxdWVzdHM6OgogCUhvdyBtYW55IEhUVFAgcmVxdWVzdHMgdG8gbGF1bmNoIGluIHBhcmFsbGVsLiBDYW4gYmUgb3ZlcnJpZGRlbgogCWJ5IHRoZSAnR0lUX0hUVFBfTUFYX1JFUVVFU1RTJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gRGVmYXVsdCBpcyA1LgpAQCAtMTQzNCw3ICsxNTEwLDcgQEAKIAogaHR0cC51c2VyYWdlbnQ6OgogCVRoZSBIVFRQIFVTRVJfQUdFTlQgc3RyaW5nIHByZXNlbnRlZCB0byBhbiBIVFRQIHNlcnZlci4gIFRoZSBkZWZhdWx0Ci0JdmFsdWUgcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUgY2xpZW50IGdpdCBzdWNoIGFzIGdpdC8xLjcuMS4KKwl2YWx1ZSByZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIHRoZSBjbGllbnQgR2l0IHN1Y2ggYXMgZ2l0LzEuNy4xLgogCVRoaXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhpcyB2YWx1ZSB0byBhIG1vcmUgY29tbW9uIHZhbHVlCiAJc3VjaCBhcyBNb3ppbGxhLzQuMC4gIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSwgZm9yIGluc3RhbmNlLCBpZgogCWNvbm5lY3RpbmcgdGhyb3VnaCBhIGZpcmV3YWxsIHRoYXQgcmVzdHJpY3RzIEhUVFAgY29ubmVjdGlvbnMgdG8gYSBzZXQKQEAgLTE0NDIsNyArMTUxOCw3IEBACiAJQ2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlICdHSVRfSFRUUF9VU0VSX0FHRU5UJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAogaTE4bi5jb21taXRFbmNvZGluZzo6Ci0JQ2hhcmFjdGVyIGVuY29kaW5nIHRoZSBjb21taXQgbWVzc2FnZXMgYXJlIHN0b3JlZCBpbjsgZ2l0IGl0c2VsZgorCUNoYXJhY3RlciBlbmNvZGluZyB0aGUgY29tbWl0IG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW47IEdpdCBpdHNlbGYKIAlkb2VzIG5vdCBjYXJlIHBlciBzZSwgYnV0IHRoaXMgaW5mb3JtYXRpb24gaXMgbmVjZXNzYXJ5IGUuZy4gd2hlbgogCWltcG9ydGluZyBjb21taXRzIGZyb20gZW1haWxzIG9yIGluIHRoZSBnaXRrIGdyYXBoaWNhbCBoaXN0b3J5CiAJYnJvd3NlciAoYW5kIHBvc3NpYmx5IGF0IG90aGVyIHBsYWNlcyBpbiB0aGUgZnV0dXJlIG9yIGluIG90aGVyCkBAIC0xNTE1LDYgKzE1OTEsMTAgQEAKIAlUb29scyBsaWtlIGxpbmtnaXQ6Z2l0LWxvZ1sxXSBvciBsaW5rZ2l0OmdpdC13aGF0Y2hhbmdlZFsxXSwgd2hpY2gKIAlub3JtYWxseSBoaWRlIHRoZSByb290IGNvbW1pdCB3aWxsIG5vdyBzaG93IGl0LiBUcnVlIGJ5IGRlZmF1bHQuCiAKK2xvZy5tYWlsbWFwOjoKKwlJZiB0cnVlLCBtYWtlcyBsaW5rZ2l0OmdpdC1sb2dbMV0sIGxpbmtnaXQ6Z2l0LXNob3dbMV0sIGFuZAorCWxpbmtnaXQ6Z2l0LXdoYXRjaGFuZ2VkWzFdIGFzc3VtZSBgLS11c2UtbWFpbG1hcGAuCisKIG1haWxtYXAuZmlsZTo6CiAJVGhlIGxvY2F0aW9uIG9mIGFuIGF1Z21lbnRpbmcgbWFpbG1hcCBmaWxlLiBUaGUgZGVmYXVsdAogCW1haWxtYXAsIGxvY2F0ZWQgaW4gdGhlIHJvb3Qgb2YgdGhlIHJlcG9zaXRvcnksIGlzIGxvYWRlZApAQCAtMTUyMyw2ICsxNjAzLDE0IEBACiAJc3ViZGlyZWN0b3J5LCBvciBzb21ld2hlcmUgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeSBpdHNlbGYuCiAJU2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIGFuZCBsaW5rZ2l0OmdpdC1ibGFtZVsxXS4KIAorbWFpbG1hcC5ibG9iOjoKKwlMaWtlIGBtYWlsbWFwLmZpbGVgLCBidXQgY29uc2lkZXIgdGhlIHZhbHVlIGFzIGEgcmVmZXJlbmNlIHRvIGEKKwlibG9iIGluIHRoZSByZXBvc2l0b3J5LiBJZiBib3RoIGBtYWlsbWFwLmZpbGVgIGFuZAorCWBtYWlsbWFwLmJsb2JgIGFyZSBnaXZlbiwgYm90aCBhcmUgcGFyc2VkLCB3aXRoIGVudHJpZXMgZnJvbQorCWBtYWlsbWFwLmZpbGVgIHRha2luZyBwcmVjZWRlbmNlLiBJbiBhIGJhcmUgcmVwb3NpdG9yeSwgdGhpcworCWRlZmF1bHRzIHRvIGBIRUFEOi5tYWlsbWFwYC4gSW4gYSBub24tYmFyZSByZXBvc2l0b3J5LCBpdAorCWRlZmF1bHRzIHRvIGVtcHR5LgorCiBtYW4udmlld2VyOjoKIAlTcGVjaWZ5IHRoZSBwcm9ncmFtcyB0aGF0IG1heSBiZSB1c2VkIHRvIGRpc3BsYXkgaGVscCBpbiB0aGUKIAknbWFuJyBmb3JtYXQuIFNlZSBsaW5rZ2l0OmdpdC1oZWxwWzFdLgpAQCAtMTU2OCw3ICsxNjU2LDcgQEAKIAlgdHJ1ZWAgKGkuZS4ga2VlcCB0aGUgYmFja3VwIGZpbGVzKS4KIAogbWVyZ2V0b29sLmtlZXBUZW1wb3Jhcmllczo6Ci0JV2hlbiBpbnZva2luZyBhIGN1c3RvbSBtZXJnZSB0b29sLCBnaXQgdXNlcyBhIHNldCBvZiB0ZW1wb3JhcnkKKwlXaGVuIGludm9raW5nIGEgY3VzdG9tIG1lcmdlIHRvb2wsIEdpdCB1c2VzIGEgc2V0IG9mIHRlbXBvcmFyeQogCWZpbGVzIHRvIHBhc3MgdG8gdGhlIHRvb2wuIElmIHRoZSB0b29sIHJldHVybnMgYW4gZXJyb3IgYW5kIHRoaXMKIAl2YXJpYWJsZSBpcyBzZXQgdG8gYHRydWVgLCB0aGVuIHRoZXNlIHRlbXBvcmFyeSBmaWxlcyB3aWxsIGJlCiAJcHJlc2VydmVkLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIHRvb2wgaGFzCkBAIC0xNTk2LDcgKzE2ODQsNyBAQAogCiBub3Rlcy5yZXdyaXRlLjxjb21tYW5kPjo6CiAJV2hlbiByZXdyaXRpbmcgY29tbWl0cyB3aXRoIDxjb21tYW5kPiAoY3VycmVudGx5IGBhbWVuZGAgb3IKLQlgcmViYXNlYCkgYW5kIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIGB0cnVlYCwgZ2l0CisJYHJlYmFzZWApIGFuZCB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byBgdHJ1ZWAsIEdpdAogCWF1dG9tYXRpY2FsbHkgY29waWVzIHlvdXIgbm90ZXMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlCiAJcmV3cml0dGVuIGNvbW1pdC4gIERlZmF1bHRzIHRvIGB0cnVlYCwgYnV0IHNlZQogCSJub3Rlcy5yZXdyaXRlUmVmIiBiZWxvdy4KQEAgLTE2NzYsNyArMTc2NCw3IEBACiAJd2FybmluZy4gVGhpcyBpcyBtZWFudCB0byByZWR1Y2UgcGFja2luZyB0aW1lIG9uIG11bHRpcHJvY2Vzc29yCiAJbWFjaGluZXMuIFRoZSByZXF1aXJlZCBhbW91bnQgb2YgbWVtb3J5IGZvciB0aGUgZGVsdGEgc2VhcmNoIHdpbmRvdwogCWlzIGhvd2V2ZXIgbXVsdGlwbGllZCBieSB0aGUgbnVtYmVyIG9mIHRocmVhZHMuCi0JU3BlY2lmeWluZyAwIHdpbGwgY2F1c2UgZ2l0IHRvIGF1dG8tZGV0ZWN0IHRoZSBudW1iZXIgb2YgQ1BVJ3MKKwlTcGVjaWZ5aW5nIDAgd2lsbCBjYXVzZSBHaXQgdG8gYXV0by1kZXRlY3QgdGhlIG51bWJlciBvZiBDUFUncwogCWFuZCBzZXQgdGhlIG51bWJlciBvZiB0aHJlYWRzIGFjY29yZGluZ2x5LgogCiBwYWNrLmluZGV4VmVyc2lvbjo6CkBAIC0xNjg4LDExICsxNzc2LDExIEBACiAJYW5kIHRoaXMgY29uZmlnIG9wdGlvbiBpZ25vcmVkIHdoZW5ldmVyIHRoZSBjb3JyZXNwb25kaW5nIHBhY2sgaXMKIAlsYXJnZXIgdGhhbiAyIEdCLgogKwotSWYgeW91IGhhdmUgYW4gb2xkIGdpdCB0aGF0IGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlIHZlcnNpb24gMiBgKi5pZHhgIGZpbGUsCitJZiB5b3UgaGF2ZSBhbiBvbGQgR2l0IHRoYXQgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgdmVyc2lvbiAyIGAqLmlkeGAgZmlsZSwKIGNsb25pbmcgb3IgZmV0Y2hpbmcgb3ZlciBhIG5vbiBuYXRpdmUgcHJvdG9jb2wgKGUuZy4gImh0dHAiIGFuZCAicnN5bmMiKQogdGhhdCB3aWxsIGNvcHkgYm90aCBgKi5wYWNrYCBmaWxlIGFuZCBjb3JyZXNwb25kaW5nIGAqLmlkeGAgZmlsZSBmcm9tIHRoZQogb3RoZXIgc2lkZSBtYXkgZ2l2ZSB5b3UgYSByZXBvc2l0b3J5IHRoYXQgY2Fubm90IGJlIGFjY2Vzc2VkIHdpdGggeW91cgotb2xkZXIgdmVyc2lvbiBvZiBnaXQuIElmIHRoZSBgKi5wYWNrYCBmaWxlIGlzIHNtYWxsZXIgdGhhbiAyIEdCLCBob3dldmVyLAorb2xkZXIgdmVyc2lvbiBvZiBHaXQuIElmIHRoZSBgKi5wYWNrYCBmaWxlIGlzIHNtYWxsZXIgdGhhbiAyIEdCLCBob3dldmVyLAogeW91IGNhbiB1c2UgbGlua2dpdDpnaXQtaW5kZXgtcGFja1sxXSBvbiB0aGUgKi5wYWNrIGZpbGUgdG8gcmVnZW5lcmF0ZQogdGhlIGAqLmlkeGAgZmlsZS4KIApAQCAtMTcwNyw3ICsxNzk1LDcgQEAKIAogcGFnZXIuPGNtZD46OgogCUlmIHRoZSB2YWx1ZSBpcyBib29sZWFuLCB0dXJucyBvbiBvciBvZmYgcGFnaW5hdGlvbiBvZiB0aGUKLQlvdXRwdXQgb2YgYSBwYXJ0aWN1bGFyIGdpdCBzdWJjb21tYW5kIHdoZW4gd3JpdGluZyB0byBhIHR0eS4KKwlvdXRwdXQgb2YgYSBwYXJ0aWN1bGFyIEdpdCBzdWJjb21tYW5kIHdoZW4gd3JpdGluZyB0byBhIHR0eS4KIAlPdGhlcndpc2UsIHR1cm5zIG9uIHBhZ2luYXRpb24gZm9yIHRoZSBzdWJjb21tYW5kIHVzaW5nIHRoZQogCXBhZ2VyIHNwZWNpZmllZCBieSB0aGUgdmFsdWUgb2YgYHBhZ2VyLjxjbWQ+YC4gIElmIGAtLXBhZ2luYXRlYAogCW9yIGAtLW5vLXBhZ2VyYCBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgaXQgdGFrZXMKQEAgLTE3NDIsNyArMTgzMCw3IEBACiAJVGhlIGRlZmF1bHQgbWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIHdoZW4gcHVsbGluZyBhIHNpbmdsZSBicmFuY2guCiAKIHB1c2guZGVmYXVsdDo6Ci0JRGVmaW5lcyB0aGUgYWN0aW9uIGdpdCBwdXNoIHNob3VsZCB0YWtlIGlmIG5vIHJlZnNwZWMgaXMgZ2l2ZW4KKwlEZWZpbmVzIHRoZSBhY3Rpb24gYGdpdCBwdXNoYCBzaG91bGQgdGFrZSBpZiBubyByZWZzcGVjIGlzIGdpdmVuCiAJb24gdGhlIGNvbW1hbmQgbGluZSwgbm8gcmVmc3BlYyBpcyBjb25maWd1cmVkIGluIHRoZSByZW1vdGUsIGFuZAogCW5vIHJlZnNwZWMgaXMgaW1wbGllZCBieSBhbnkgb2YgdGhlIG9wdGlvbnMgZ2l2ZW4gb24gdGhlIGNvbW1hbmQKIAlsaW5lLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgpAQCAtMTc4Myw2ICsxODcxLDE0IEBACiByZWJhc2UuYXV0b3NxdWFzaDo6CiAJSWYgc2V0IHRvIHRydWUgZW5hYmxlICctLWF1dG9zcXVhc2gnIG9wdGlvbiBieSBkZWZhdWx0LgogCityZWJhc2UuYXV0b3N0YXNoOjoKKwlXaGVuIHNldCB0byB0cnVlLCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHRlbXBvcmFyeSBzdGFzaAorCWJlZm9yZSB0aGUgb3BlcmF0aW9uIGJlZ2lucywgYW5kIGFwcGx5IGl0IGFmdGVyIHRoZSBvcGVyYXRpb24KKwllbmRzLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gcnVuIHJlYmFzZSBvbiBhIGRpcnR5IHdvcmt0cmVlLgorCUhvd2V2ZXIsIHVzZSB3aXRoIGNhcmU6IHRoZSBmaW5hbCBzdGFzaCBhcHBsaWNhdGlvbiBhZnRlciBhCisJc3VjY2Vzc2Z1bCByZWJhc2UgbWlnaHQgcmVzdWx0IGluIG5vbi10cml2aWFsIGNvbmZsaWN0cy4KKwlEZWZhdWx0cyB0byBmYWxzZS4KKwogcmVjZWl2ZS5hdXRvZ2M6OgogCUJ5IGRlZmF1bHQsIGdpdC1yZWNlaXZlLXBhY2sgd2lsbCBydW4gImdpdC1nYyAtLWF1dG8iIGFmdGVyCiAJcmVjZWl2aW5nIGRhdGEgZnJvbSBnaXQtcHVzaCBhbmQgdXBkYXRpbmcgcmVmcy4gIFlvdSBjYW4gc3RvcApAQCAtMTgyOCwxMCArMTkyNCwyNCBAQAogCWV2ZW4gaWYgdGhhdCBwdXNoIGlzIGZvcmNlZC4gVGhpcyBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGlzCiAJc2V0IHdoZW4gaW5pdGlhbGl6aW5nIGEgc2hhcmVkIHJlcG9zaXRvcnkuCiAKK3JlY2VpdmUuaGlkZXJlZnM6OgorCVN0cmluZyhzKSBgcmVjZWl2ZS1wYWNrYCB1c2VzIHRvIGRlY2lkZSB3aGljaCByZWZzIHRvIG9taXQKKwlmcm9tIGl0cyBpbml0aWFsIGFkdmVydGlzZW1lbnQuICBVc2UgbW9yZSB0aGFuIG9uZQorCWRlZmluaXRpb25zIHRvIHNwZWNpZnkgbXVsdGlwbGUgcHJlZml4IHN0cmluZ3MuIEEgcmVmIHRoYXQKKwlhcmUgdW5kZXIgdGhlIGhpZXJhcmNoaWVzIGxpc3RlZCBvbiB0aGUgdmFsdWUgb2YgdGhpcworCXZhcmlhYmxlIGlzIGV4Y2x1ZGVkLCBhbmQgaXMgaGlkZGVuIHdoZW4gcmVzcG9uZGluZyB0byBgZ2l0CisJcHVzaGAsIGFuZCBhbiBhdHRlbXB0IHRvIHVwZGF0ZSBvciBkZWxldGUgYSBoaWRkZW4gcmVmIGJ5CisJYGdpdCBwdXNoYCBpcyByZWplY3RlZC4KKwogcmVjZWl2ZS51cGRhdGVzZXJ2ZXJpbmZvOjoKIAlJZiBzZXQgdG8gdHJ1ZSwgZ2l0LXJlY2VpdmUtcGFjayB3aWxsIHJ1biBnaXQtdXBkYXRlLXNlcnZlci1pbmZvCiAJYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSBnaXQtcHVzaCBhbmQgdXBkYXRpbmcgcmVmcy4KIAorcmVtb3RlLnB1c2hkZWZhdWx0OjoKKwlUaGUgcmVtb3RlIHRvIHB1c2ggdG8gYnkgZGVmYXVsdC4gIE92ZXJyaWRlcworCWBicmFuY2guPG5hbWU+LnJlbW90ZWAgZm9yIGFsbCBicmFuY2hlcywgYW5kIGlzIG92ZXJyaWRkZW4gYnkKKwlgYnJhbmNoLjxuYW1lPi5wdXNocmVtb3RlYCBmb3Igc3BlY2lmaWMgYnJhbmNoZXMuCisKIHJlbW90ZS48bmFtZT4udXJsOjoKIAlUaGUgVVJMIG9mIGEgcmVtb3RlIHJlcG9zaXRvcnkuICBTZWUgbGlua2dpdDpnaXQtZmV0Y2hbMV0gb3IKIAlsaW5rZ2l0OmdpdC1wdXNoWzFdLgpAQCAtMTg4Myw3ICsxOTkzLDcgQEAKIAlsaW5rZ2l0OmdpdC1mZXRjaFsxXS4KIAogcmVtb3RlLjxuYW1lPi52Y3M6OgotCVNldHRpbmcgdGhpcyB0byBhIHZhbHVlIDx2Y3M+IHdpbGwgY2F1c2UgZ2l0IHRvIGludGVyYWN0IHdpdGgKKwlTZXR0aW5nIHRoaXMgdG8gYSB2YWx1ZSA8dmNzPiB3aWxsIGNhdXNlIEdpdCB0byBpbnRlcmFjdCB3aXRoCiAJdGhlIHJlbW90ZSB3aXRoIHRoZSBnaXQtcmVtb3RlLTx2Y3M+IGhlbHBlci4KIAogcmVtb3Rlcy48Z3JvdXA+OjoKQEAgLTE4OTMsOSArMjAwMyw5IEBACiByZXBhY2sudXNlZGVsdGFiYXNlb2Zmc2V0OjoKIAlCeSBkZWZhdWx0LCBsaW5rZ2l0OmdpdC1yZXBhY2tbMV0gY3JlYXRlcyBwYWNrcyB0aGF0IHVzZQogCWRlbHRhLWJhc2Ugb2Zmc2V0LiBJZiB5b3UgbmVlZCB0byBzaGFyZSB5b3VyIHJlcG9zaXRvcnkgd2l0aAotCWdpdCBvbGRlciB0aGFuIHZlcnNpb24gMS40LjQsIGVpdGhlciBkaXJlY3RseSBvciB2aWEgYSBkdW1iCisJR2l0IG9sZGVyIHRoYW4gdmVyc2lvbiAxLjQuNCwgZWl0aGVyIGRpcmVjdGx5IG9yIHZpYSBhIGR1bWIKIAlwcm90b2NvbCBzdWNoIGFzIGh0dHAsIHRoZW4geW91IG5lZWQgdG8gc2V0IHRoaXMgb3B0aW9uIHRvCi0JImZhbHNlIiBhbmQgcmVwYWNrLiBBY2Nlc3MgZnJvbSBvbGQgZ2l0IHZlcnNpb25zIG92ZXIgdGhlCisJImZhbHNlIiBhbmQgcmVwYWNrLiBBY2Nlc3MgZnJvbSBvbGQgR2l0IHZlcnNpb25zIG92ZXIgdGhlCiAJbmF0aXZlIHByb3RvY29sIGFyZSB1bmFmZmVjdGVkIGJ5IHRoaXMgb3B0aW9uLgogCiByZXJlcmUuYXV0b3VwZGF0ZTo6CkBAIC0xOTMyLDYgKzIwNDIsNyBAQAogCiBzZW5kZW1haWwuYWxpYXNlc2ZpbGU6Ogogc2VuZGVtYWlsLmFsaWFzZmlsZXR5cGU6Ogorc2VuZGVtYWlsLmFubm90YXRlOjoKIHNlbmRlbWFpbC5iY2M6Ogogc2VuZGVtYWlsLmNjOjoKIHNlbmRlbWFpbC5jY2NtZDo6CkBAIC0xOTY0LDcgKzIwNzUsNyBAQAogc3RhdHVzLnJlbGF0aXZlUGF0aHM6OgogCUJ5IGRlZmF1bHQsIGxpbmtnaXQ6Z2l0LXN0YXR1c1sxXSBzaG93cyBwYXRocyByZWxhdGl2ZSB0byB0aGUKIAljdXJyZW50IGRpcmVjdG9yeS4gU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGBmYWxzZWAgc2hvd3MgcGF0aHMKLQlyZWxhdGl2ZSB0byB0aGUgcmVwb3NpdG9yeSByb290ICh0aGlzIHdhcyB0aGUgZGVmYXVsdCBmb3IgZ2l0CisJcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdCAodGhpcyB3YXMgdGhlIGRlZmF1bHQgZm9yIEdpdAogCXByaW9yIHRvIHYxLjUuNCkuCiAKIHN0YXR1cy5zaG93VW50cmFja2VkRmlsZXM6OgpAQCAtMjAwMiw2ICsyMTEzLDEyIEBACiAJVVJMIGFuZCBvdGhlciB2YWx1ZXMgZm91bmQgaW4gdGhlIGAuZ2l0bW9kdWxlc2AgZmlsZS4gIFNlZQogCWxpbmtnaXQ6Z2l0LXN1Ym1vZHVsZVsxXSBhbmQgbGlua2dpdDpnaXRtb2R1bGVzWzVdIGZvciBkZXRhaWxzLgogCitzdWJtb2R1bGUuPG5hbWU+LmJyYW5jaDo6CisJVGhlIHJlbW90ZSBicmFuY2ggbmFtZSBmb3IgYSBzdWJtb2R1bGUsIHVzZWQgYnkgYGdpdCBzdWJtb2R1bGUKKwl1cGRhdGUgLS1yZW1vdGVgLiAgU2V0IHRoaXMgb3B0aW9uIHRvIG92ZXJyaWRlIHRoZSB2YWx1ZSBmb3VuZCBpbgorCXRoZSBgLmdpdG1vZHVsZXNgIGZpbGUuICBTZWUgbGlua2dpdDpnaXQtc3VibW9kdWxlWzFdIGFuZAorCWxpbmtnaXQ6Z2l0bW9kdWxlc1s1XSBmb3IgZGV0YWlscy4KKwogc3VibW9kdWxlLjxuYW1lPi5mZXRjaFJlY3Vyc2VTdWJtb2R1bGVzOjoKIAlUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBjb250cm9sIHJlY3Vyc2l2ZSBmZXRjaGluZyBvZiB0aGlzCiAJc3VibW9kdWxlLiBJdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2luZyB0aGUgLS1bbm8tXXJlY3Vyc2Utc3VibW9kdWxlcwpAQCAtMjAzNCwxOCArMjE1MSwzOCBAQAogCW5vdCBzZXQsIHRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGlzIHVzZWQgaW5zdGVhZC4KIAlEZWZhdWx0cyB0byBmYWxzZS4KIAordHJhbnNmZXIuaGlkZXJlZnM6OgorCVRoaXMgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gc2V0IGJvdGggYHJlY2VpdmUuaGlkZXJlZnNgCisJYW5kIGB1cGxvYWRwYWNrLmhpZGVyZWZzYCBhdCB0aGUgc2FtZSB0aW1lIHRvIHRoZSBzYW1lCisJdmFsdWVzLiAgU2VlIGVudHJpZXMgZm9yIHRoZXNlIG90aGVyIHZhcmlhYmxlcy4KKwogdHJhbnNmZXIudW5wYWNrTGltaXQ6OgogCVdoZW4gYGZldGNoLnVucGFja0xpbWl0YCBvciBgcmVjZWl2ZS51bnBhY2tMaW1pdGAgYXJlCiAJbm90IHNldCwgdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUgaXMgdXNlZCBpbnN0ZWFkLgogCVRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMC4KIAordXBsb2FkcGFjay5oaWRlcmVmczo6CisJU3RyaW5nKHMpIGB1cGxvYWQtcGFja2AgdXNlcyB0byBkZWNpZGUgd2hpY2ggcmVmcyB0byBvbWl0CisJZnJvbSBpdHMgaW5pdGlhbCBhZHZlcnRpc2VtZW50LiAgVXNlIG1vcmUgdGhhbiBvbmUKKwlkZWZpbml0aW9ucyB0byBzcGVjaWZ5IG11bHRpcGxlIHByZWZpeCBzdHJpbmdzLiBBIHJlZiB0aGF0CisJYXJlIHVuZGVyIHRoZSBoaWVyYXJjaGllcyBsaXN0ZWQgb24gdGhlIHZhbHVlIG9mIHRoaXMKKwl2YXJpYWJsZSBpcyBleGNsdWRlZCwgYW5kIGlzIGhpZGRlbiBmcm9tIGBnaXQgbHMtcmVtb3RlYCwKKwlgZ2l0IGZldGNoYCwgZXRjLiAgQW4gYXR0ZW1wdCB0byBmZXRjaCBhIGhpZGRlbiByZWYgYnkgYGdpdAorCWZldGNoYCB3aWxsIGZhaWwuICBTZWUgYWxzbyBgdXBsb2FkcGFjay5hbGxvd3RpcHNoYTFpbndhbnRgLgorCit1cGxvYWRwYWNrLmFsbG93dGlwc2hhMWlud2FudDo6CisJV2hlbiBgdXBsb2FkcGFjay5oaWRlcmVmc2AgaXMgaW4gZWZmZWN0LCBhbGxvdyBgdXBsb2FkLXBhY2tgCisJdG8gYWNjZXB0IGEgZmV0Y2ggcmVxdWVzdCB0aGF0IGFza3MgZm9yIGFuIG9iamVjdCBhdCB0aGUgdGlwCisJb2YgYSBoaWRkZW4gcmVmIChieSBkZWZhdWx0LCBzdWNoIGEgcmVxdWVzdCBpcyByZWplY3RlZCkuCisJc2VlIGFsc28gYHVwbG9hZHBhY2suaGlkZXJlZnNgLgorCiB1cmwuPGJhc2U+Lmluc3RlYWRPZjo6CiAJQW55IFVSTCB0aGF0IHN0YXJ0cyB3aXRoIHRoaXMgdmFsdWUgd2lsbCBiZSByZXdyaXR0ZW4gdG8KIAlzdGFydCwgaW5zdGVhZCwgd2l0aCA8YmFzZT4uIEluIGNhc2VzIHdoZXJlIHNvbWUgc2l0ZSBzZXJ2ZXMgYQogCWxhcmdlIG51bWJlciBvZiByZXBvc2l0b3JpZXMsIGFuZCBzZXJ2ZXMgdGhlbSB3aXRoIG11bHRpcGxlCiAJYWNjZXNzIG1ldGhvZHMsIGFuZCBzb21lIHVzZXJzIG5lZWQgdG8gdXNlIGRpZmZlcmVudCBhY2Nlc3MKIAltZXRob2RzLCB0aGlzIGZlYXR1cmUgYWxsb3dzIHBlb3BsZSB0byBzcGVjaWZ5IGFueSBvZiB0aGUKLQllcXVpdmFsZW50IFVSTHMgYW5kIGhhdmUgZ2l0IGF1dG9tYXRpY2FsbHkgcmV3cml0ZSB0aGUgVVJMIHRvCisJZXF1aXZhbGVudCBVUkxzIGFuZCBoYXZlIEdpdCBhdXRvbWF0aWNhbGx5IHJld3JpdGUgdGhlIFVSTCB0bwogCXRoZSBiZXN0IGFsdGVybmF0aXZlIGZvciB0aGUgcGFydGljdWxhciB1c2VyLCBldmVuIGZvciBhCiAJbmV2ZXItYmVmb3JlLXNlZW4gcmVwb3NpdG9yeSBvbiB0aGUgc2l0ZS4gIFdoZW4gbW9yZSB0aGFuIG9uZQogCWluc3RlYWRPZiBzdHJpbmdzIG1hdGNoIGEgZ2l2ZW4gVVJMLCB0aGUgbG9uZ2VzdCBtYXRjaCBpcyB1c2VkLgpAQCAtMjA1NiwxMSArMjE5MywxMSBAQAogCXJlc3VsdGluZyBVUkwgd2lsbCBiZSBwdXNoZWQgdG8uIEluIGNhc2VzIHdoZXJlIHNvbWUgc2l0ZSBzZXJ2ZXMKIAlhIGxhcmdlIG51bWJlciBvZiByZXBvc2l0b3JpZXMsIGFuZCBzZXJ2ZXMgdGhlbSB3aXRoIG11bHRpcGxlCiAJYWNjZXNzIG1ldGhvZHMsIHNvbWUgb2Ygd2hpY2ggZG8gbm90IGFsbG93IHB1c2gsIHRoaXMgZmVhdHVyZQotCWFsbG93cyBwZW9wbGUgdG8gc3BlY2lmeSBhIHB1bGwtb25seSBVUkwgYW5kIGhhdmUgZ2l0CisJYWxsb3dzIHBlb3BsZSB0byBzcGVjaWZ5IGEgcHVsbC1vbmx5IFVSTCBhbmQgaGF2ZSBHaXQKIAlhdXRvbWF0aWNhbGx5IHVzZSBhbiBhcHByb3ByaWF0ZSBVUkwgdG8gcHVzaCwgZXZlbiBmb3IgYQogCW5ldmVyLWJlZm9yZS1zZWVuIHJlcG9zaXRvcnkgb24gdGhlIHNpdGUuICBXaGVuIG1vcmUgdGhhbiBvbmUKIAlwdXNoSW5zdGVhZE9mIHN0cmluZ3MgbWF0Y2ggYSBnaXZlbiBVUkwsIHRoZSBsb25nZXN0IG1hdGNoIGlzCi0JdXNlZC4gIElmIGEgcmVtb3RlIGhhcyBhbiBleHBsaWNpdCBwdXNodXJsLCBnaXQgd2lsbCBpZ25vcmUgdGhpcworCXVzZWQuICBJZiBhIHJlbW90ZSBoYXMgYW4gZXhwbGljaXQgcHVzaHVybCwgR2l0IHdpbGwgaWdub3JlIHRoaXMKIAlzZXR0aW5nIGZvciB0aGF0IHJlbW90ZS4KIAogdXNlci5lbWFpbDo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RpZmYtY29uZmlnLnR4dCBiL0RvY3VtZW50YXRpb24vZGlmZi1jb25maWcudHh0CmluZGV4IDQzMTRhZDAuLmFjNzcwNTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGlmZi1jb25maWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGlmZi1jb25maWcudHh0CkBAIC05OSw3ICs5OSw3IEBACiAJZGV0ZWN0aW9uOyBlcXVpdmFsZW50IHRvIHRoZSAnZ2l0IGRpZmYnIG9wdGlvbiAnLWwnLgogCiBkaWZmLnJlbmFtZXM6OgotCVRlbGxzIGdpdCB0byBkZXRlY3QgcmVuYW1lcy4gIElmIHNldCB0byBhbnkgYm9vbGVhbiB2YWx1ZSwgaXQKKwlUZWxscyBHaXQgdG8gZGV0ZWN0IHJlbmFtZXMuICBJZiBzZXQgdG8gYW55IGJvb2xlYW4gdmFsdWUsIGl0CiAJd2lsbCBlbmFibGUgYmFzaWMgcmVuYW1lIGRldGVjdGlvbi4gIElmIHNldCB0byAiY29waWVzIiBvcgogCSJjb3B5IiwgaXQgd2lsbCBkZXRlY3QgY29waWVzLCBhcyB3ZWxsLgogCkBAIC0xNDksOSArMTQ5LDI3IEBACiAJY29udmVyc2lvbiBvdXRwdXRzLiAgU2VlIGxpbmtnaXQ6Z2l0YXR0cmlidXRlc1s1XSBmb3IgZGV0YWlscy4KIAogZGlmZi50b29sOjoKLQlUaGUgZGlmZiB0b29sIHRvIGJlIHVzZWQgYnkgbGlua2dpdDpnaXQtZGlmZnRvb2xbMV0uICBUaGlzCi0Jb3B0aW9uIG92ZXJyaWRlcyBgbWVyZ2UudG9vbGAsIGFuZCBoYXMgdGhlIHNhbWUgdmFsaWQgYnVpbHQtaW4KLQl2YWx1ZXMgYXMgYG1lcmdlLnRvb2xgIG1pbnVzICJ0b3J0b2lzZW1lcmdlIiBhbmQgcGx1cwotCSJrb21wYXJlIi4gIEFueSBvdGhlciB2YWx1ZSBpcyB0cmVhdGVkIGFzIGEgY3VzdG9tIGRpZmYgdG9vbCwKLQlhbmQgdGhlcmUgbXVzdCBiZSBhIGNvcnJlc3BvbmRpbmcgYGRpZmZ0b29sLjx0b29sPi5jbWRgCi0Jb3B0aW9uLgorCUNvbnRyb2xzIHdoaWNoIGRpZmYgdG9vbCBpcyB1c2VkIGJ5IGxpbmtnaXQ6Z2l0LWRpZmZ0b29sWzFdLgorCVRoaXMgdmFyaWFibGUgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBjb25maWd1cmVkIGluIGBtZXJnZS50b29sYC4KKwlUaGUgbGlzdCBiZWxvdyBzaG93cyB0aGUgdmFsaWQgYnVpbHQtaW4gdmFsdWVzLgorCUFueSBvdGhlciB2YWx1ZSBpcyB0cmVhdGVkIGFzIGEgY3VzdG9tIGRpZmYgdG9vbCBhbmQgcmVxdWlyZXMKKwl0aGF0IGEgY29ycmVzcG9uZGluZyBkaWZmdG9vbC48dG9vbD4uY21kIHZhcmlhYmxlIGlzIGRlZmluZWQuCisKK2luY2x1ZGU6Om1lcmdldG9vbHMtZGlmZi50eHRbXQorCitkaWZmLmFsZ29yaXRobTo6CisJQ2hvb3NlIGEgZGlmZiBhbGdvcml0aG0uICBUaGUgdmFyaWFudHMgYXJlIGFzIGZvbGxvd3M6CisrCistLQorYGRlZmF1bHRgLCBgbXllcnNgOzsKKwlUaGUgYmFzaWMgZ3JlZWR5IGRpZmYgYWxnb3JpdGhtLiBDdXJyZW50bHksIHRoaXMgaXMgdGhlIGRlZmF1bHQuCitgbWluaW1hbGA7OworCVNwZW5kIGV4dHJhIHRpbWUgdG8gbWFrZSBzdXJlIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBkaWZmIGlzCisJcHJvZHVjZWQuCitgcGF0aWVuY2VgOzsKKwlVc2UgInBhdGllbmNlIGRpZmYiIGFsZ29yaXRobSB3aGVuIGdlbmVyYXRpbmcgcGF0Y2hlcy4KK2BoaXN0b2dyYW1gOzsKKwlUaGlzIGFsZ29yaXRobSBleHRlbmRzIHRoZSBwYXRpZW5jZSBhbGdvcml0aG0gdG8gInN1cHBvcnQKKwlsb3ctb2NjdXJyZW5jZSBjb21tb24gZWxlbWVudHMiLgorLS0KKysKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGlmZi1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vZGlmZi1vcHRpb25zLnR4dAppbmRleCBiYmZlOGY4Li5hODUyODhmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0CkBAIC01NSw2ICs1NSwyNiBAQAogLS1oaXN0b2dyYW06OgogCUdlbmVyYXRlIGEgZGlmZiB1c2luZyB0aGUgImhpc3RvZ3JhbSBkaWZmIiBhbGdvcml0aG0uCiAKKy0tZGlmZi1hbGdvcml0aG09e3BhdGllbmNlfG1pbmltYWx8aGlzdG9ncmFtfG15ZXJzfTo6CisJQ2hvb3NlIGEgZGlmZiBhbGdvcml0aG0uIFRoZSB2YXJpYW50cyBhcmUgYXMgZm9sbG93czoKKysKKy0tCitgZGVmYXVsdGAsIGBteWVyc2A7OworCVRoZSBiYXNpYyBncmVlZHkgZGlmZiBhbGdvcml0aG0uIEN1cnJlbnRseSwgdGhpcyBpcyB0aGUgZGVmYXVsdC4KK2BtaW5pbWFsYDs7CisJU3BlbmQgZXh0cmEgdGltZSB0byBtYWtlIHN1cmUgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGRpZmYgaXMKKwlwcm9kdWNlZC4KK2BwYXRpZW5jZWA7OworCVVzZSAicGF0aWVuY2UgZGlmZiIgYWxnb3JpdGhtIHdoZW4gZ2VuZXJhdGluZyBwYXRjaGVzLgorYGhpc3RvZ3JhbWA7OworCVRoaXMgYWxnb3JpdGhtIGV4dGVuZHMgdGhlIHBhdGllbmNlIGFsZ29yaXRobSB0byAic3VwcG9ydAorCWxvdy1vY2N1cnJlbmNlIGNvbW1vbiBlbGVtZW50cyIuCistLQorKworRm9yIGluc3RhbmNlLCBpZiB5b3UgY29uZmlndXJlZCBkaWZmLmFsZ29yaXRobSB2YXJpYWJsZSB0byBhCitub24tZGVmYXVsdCB2YWx1ZSBhbmQgd2FudCB0byB1c2UgdGhlIGRlZmF1bHQgb25lLCB0aGVuIHlvdQoraGF2ZSB0byB1c2UgYC0tZGlmZi1hbGdvcml0aG09ZGVmYXVsdGAgb3B0aW9uLgorCiAtLXN0YXRbPTx3aWR0aD5bLDxuYW1lLXdpZHRoPlssPGNvdW50Pl1dXTo6CiAJR2VuZXJhdGUgYSBkaWZmc3RhdC4gQnkgZGVmYXVsdCwgYXMgbXVjaCBzcGFjZSBhcyBuZWNlc3NhcnkKIAl3aWxsIGJlIHVzZWQgZm9yIHRoZSBmaWxlbmFtZSBwYXJ0LCBhbmQgdGhlIHJlc3QgZm9yIHRoZSBncmFwaApAQCAtMjgzLDcgKzMwMyw3IEBACiBzaW5nbGUgZGVsZXRpb24gb2YgZXZlcnl0aGluZyBvbGQgZm9sbG93ZWQgYnkgYSBzaW5nbGUgaW5zZXJ0aW9uIG9mCiBldmVyeXRoaW5nIG5ldywgYW5kIHRoZSBudW1iZXIgYG1gIGNvbnRyb2xzIHRoaXMgYXNwZWN0IG9mIHRoZSAtQgogb3B0aW9uIChkZWZhdWx0cyB0byA2MCUpLiBgLUIvNzAlYCBzcGVjaWZpZXMgdGhhdCBsZXNzIHRoYW4gMzAlIG9mIHRoZQotb3JpZ2luYWwgc2hvdWxkIHJlbWFpbiBpbiB0aGUgcmVzdWx0IGZvciBnaXQgdG8gY29uc2lkZXIgaXQgYSB0b3RhbAorb3JpZ2luYWwgc2hvdWxkIHJlbWFpbiBpbiB0aGUgcmVzdWx0IGZvciBHaXQgdG8gY29uc2lkZXIgaXQgYSB0b3RhbAogcmV3cml0ZSAoaS5lLiBvdGhlcndpc2UgdGhlIHJlc3VsdGluZyBwYXRjaCB3aWxsIGJlIGEgc2VyaWVzIG9mCiBkZWxldGlvbiBhbmQgaW5zZXJ0aW9uIG1peGVkIHRvZ2V0aGVyIHdpdGggY29udGV4dCBsaW5lcykuCiArCkBAIC0zMDcsNyArMzI3LDcgQEAKIGVuZGlmOjpnaXQtbG9nW10KIAlJZiBgbmAgaXMgc3BlY2lmaWVkLCBpdCBpcyBhIHRocmVzaG9sZCBvbiB0aGUgc2ltaWxhcml0eQogCWluZGV4IChpLmUuIGFtb3VudCBvZiBhZGRpdGlvbi9kZWxldGlvbnMgY29tcGFyZWQgdG8gdGhlCi0JZmlsZSdzIHNpemUpLiBGb3IgZXhhbXBsZSwgYC1NOTAlYCBtZWFucyBnaXQgc2hvdWxkIGNvbnNpZGVyIGEKKwlmaWxlJ3Mgc2l6ZSkuIEZvciBleGFtcGxlLCBgLU05MCVgIG1lYW5zIEdpdCBzaG91bGQgY29uc2lkZXIgYQogCWRlbGV0ZS9hZGQgcGFpciB0byBiZSBhIHJlbmFtZSBpZiBtb3JlIHRoYW4gOTAlIG9mIHRoZSBmaWxlCiAJaGFzbid0IGNoYW5nZWQuICBXaXRob3V0IGEgYCVgIHNpZ24sIHRoZSBudW1iZXIgaXMgdG8gYmUgcmVhZCBhcwogCWEgZnJhY3Rpb24sIHdpdGggYSBkZWNpbWFsIHBvaW50IGJlZm9yZSBpdC4gIEkuZS4sIGAtTTVgIGJlY29tZXMKQEAgLTM2MywxNCArMzgzLDM2IEBACiAJdGhhdCBtYXRjaGVzIG90aGVyIGNyaXRlcmlhLCBub3RoaW5nIGlzIHNlbGVjdGVkLgogCiAtUzxzdHJpbmc+OjoKLQlMb29rIGZvciBkaWZmZXJlbmNlcyB0aGF0IGludHJvZHVjZSBvciByZW1vdmUgYW4gaW5zdGFuY2Ugb2YKLQk8c3RyaW5nPi4gTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHN0cmluZyBzaW1wbHkKLQlhcHBlYXJpbmcgaW4gZGlmZiBvdXRwdXQ7IHNlZSB0aGUgJ3BpY2theGUnIGVudHJ5IGluCi0JbGlua2dpdDpnaXRkaWZmY29yZVs3XSBmb3IgbW9yZSBkZXRhaWxzLgorCUxvb2sgZm9yIGRpZmZlcmVuY2VzIHRoYXQgY2hhbmdlIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YKKwl0aGUgc3BlY2lmaWVkIHN0cmluZyAoaS5lLiBhZGRpdGlvbi9kZWxldGlvbikgaW4gYSBmaWxlLgorCUludGVuZGVkIGZvciB0aGUgc2NyaXB0ZXIncyB1c2UuCisrCitJdCBpcyB1c2VmdWwgd2hlbiB5b3UncmUgbG9va2luZyBmb3IgYW4gZXhhY3QgYmxvY2sgb2YgY29kZSAobGlrZSBhCitzdHJ1Y3QpLCBhbmQgd2FudCB0byBrbm93IHRoZSBoaXN0b3J5IG9mIHRoYXQgYmxvY2sgc2luY2UgaXQgZmlyc3QKK2NhbWUgaW50byBiZWluZzogdXNlIHRoZSBmZWF0dXJlIGl0ZXJhdGl2ZWx5IHRvIGZlZWQgdGhlIGludGVyZXN0aW5nCitibG9jayBpbiB0aGUgcHJlaW1hZ2UgYmFjayBpbnRvIGAtU2AsIGFuZCBrZWVwIGdvaW5nIHVudGlsIHlvdSBnZXQgdGhlCit2ZXJ5IGZpcnN0IHZlcnNpb24gb2YgdGhlIGJsb2NrLgogCiAtRzxyZWdleD46OgotCUxvb2sgZm9yIGRpZmZlcmVuY2VzIHdob3NlIGFkZGVkIG9yIHJlbW92ZWQgbGluZSBtYXRjaGVzCi0JdGhlIGdpdmVuIDxyZWdleD4uCisJTG9vayBmb3IgZGlmZmVyZW5jZXMgd2hvc2UgcGF0Y2ggdGV4dCBjb250YWlucyBhZGRlZC9yZW1vdmVkCisJbGluZXMgdGhhdCBtYXRjaCA8cmVnZXg+LgorKworVG8gaWxsdXN0cmF0ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGAtUzxyZWdleD4gLS1waWNrYXhlLXJlZ2V4YCBhbmQKK2AtRzxyZWdleD5gLCBjb25zaWRlciBhIGNvbW1pdCB3aXRoIHRoZSBmb2xsb3dpbmcgZGlmZiBpbiB0aGUgc2FtZQorZmlsZToKKysKKy0tLS0KKysgICAgcmV0dXJuICFyZWdleGVjKHJlZ2V4cCwgdHdvLT5wdHIsIDEsICZyZWdtYXRjaCwgMCk7CisuLi4KKy0gICAgaGl0ID0gIXJlZ2V4ZWMocmVnZXhwLCBtZjIucHRyLCAxLCAmcmVnbWF0Y2gsIDApOworLS0tLQorKworV2hpbGUgYGdpdCBsb2cgLUcicmVnZXhlY1wocmVnZXhwImAgd2lsbCBzaG93IHRoaXMgY29tbWl0LCBgZ2l0IGxvZworLVMicmVnZXhlY1wocmVnZXhwIiAtLXBpY2theGUtcmVnZXhgIHdpbGwgbm90IChiZWNhdXNlIHRoZSBudW1iZXIgb2YKK29jY3VycmVuY2VzIG9mIHRoYXQgc3RyaW5nIGRpZCBub3QgY2hhbmdlKS4KKysKK1NlZSB0aGUgJ3BpY2theGUnIGVudHJ5IGluIGxpbmtnaXQ6Z2l0ZGlmZmNvcmVbN10gZm9yIG1vcmUKK2luZm9ybWF0aW9uLgogCiAtLXBpY2theGUtYWxsOjoKIAlXaGVuIGAtU2Agb3IgYC1HYCBmaW5kcyBhIGNoYW5nZSwgc2hvdyBhbGwgdGhlIGNoYW5nZXMgaW4gdGhhdApAQCAtMzc4LDggKzQyMCw4IEBACiAJaW4gPHN0cmluZz4uCiAKIC0tcGlja2F4ZS1yZWdleDo6Ci0JTWFrZSB0aGUgPHN0cmluZz4gbm90IGEgcGxhaW4gc3RyaW5nIGJ1dCBhbiBleHRlbmRlZCBQT1NJWAotCXJlZ2V4IHRvIG1hdGNoLgorCVRyZWF0IHRoZSA8c3RyaW5nPiBnaXZlbiB0byBgLVNgIGFzIGFuIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIKKwlleHByZXNzaW9uIHRvIG1hdGNoLgogZW5kaWY6OmdpdC1mb3JtYXQtcGF0Y2hbXQogCiAtTzxvcmRlcmZpbGU+OjoKQEAgLTQ2MCw3ICs1MDIsNyBAQAogCiAtLWlnbm9yZS1zdWJtb2R1bGVzWz08d2hlbj5dOjoKIAlJZ25vcmUgY2hhbmdlcyB0byBzdWJtb2R1bGVzIGluIHRoZSBkaWZmIGdlbmVyYXRpb24uIDx3aGVuPiBjYW4gYmUKLQllaXRoZXIgIm5vbmUiLCAidW50cmFja2VkIiwgImRpcnR5IiBvciAiYWxsIiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKwllaXRoZXIgIm5vbmUiLCAidW50cmFja2VkIiwgImRpcnR5IiBvciAiYWxsIiwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCiAJVXNpbmcgIm5vbmUiIHdpbGwgY29uc2lkZXIgdGhlIHN1Ym1vZHVsZSBtb2RpZmllZCB3aGVuIGl0IGVpdGhlciBjb250YWlucwogCXVudHJhY2tlZCBvciBtb2RpZmllZCBmaWxlcyBvciBpdHMgSEVBRCBkaWZmZXJzIGZyb20gdGhlIGNvbW1pdCByZWNvcmRlZAogCWluIHRoZSBzdXBlcnByb2plY3QgYW5kIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGFueSBzZXR0aW5ncyBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZXZlcnlkYXkudHh0IGIvRG9jdW1lbnRhdGlvbi9ldmVyeWRheS50eHQKaW5kZXggMDQ4MzM3Yi4uZTFmYmE4NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ldmVyeWRheS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ldmVyeWRheS50eHQKQEAgLTEsNCArMSw0IEBACi1FdmVyeWRheSBHSVQgV2l0aCAyMCBDb21tYW5kcyBPciBTbworRXZlcnlkYXkgR2l0IFdpdGggMjAgQ29tbWFuZHMgT3IgU28KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIDw8SW5kaXZpZHVhbCBEZXZlbG9wZXIgKFN0YW5kYWxvbmUpPj4gY29tbWFuZHMgYXJlIGVzc2VudGlhbCBmb3IKQEAgLTEyLDcgKzEyLDcgQEAKIAogPDxSZXBvc2l0b3J5IEFkbWluaXN0cmF0aW9uPj4gY29tbWFuZHMgYXJlIGZvciBzeXN0ZW0KIGFkbWluaXN0cmF0b3JzIHdobyBhcmUgcmVzcG9uc2libGUgZm9yIHRoZSBjYXJlIGFuZCBmZWVkaW5nCi1vZiBnaXQgcmVwb3NpdG9yaWVzLgorb2YgR2l0IHJlcG9zaXRvcmllcy4KIAogCiBJbmRpdmlkdWFsIERldmVsb3BlciAoU3RhbmRhbG9uZSlbW0luZGl2aWR1YWwgRGV2ZWxvcGVyIChTdGFuZGFsb25lKV1dCkBAIC04Nyw3ICs4Nyw3IEBACiArCiA8MT4gY3JlYXRlIGEgbmV3IHRvcGljIGJyYW5jaC4KIDwyPiByZXZlcnQgeW91ciBib3RjaGVkIGNoYW5nZXMgaW4gYGN1cnNlcy91eF9hdWRpb19vc3MuY2AuCi08Mz4geW91IG5lZWQgdG8gdGVsbCBnaXQgaWYgeW91IGFkZGVkIGEgbmV3IGZpbGU7IHJlbW92YWwgYW5kCis8Mz4geW91IG5lZWQgdG8gdGVsbCBHaXQgaWYgeW91IGFkZGVkIGEgbmV3IGZpbGU7IHJlbW92YWwgYW5kCiBtb2RpZmljYXRpb24gd2lsbCBiZSBjYXVnaHQgaWYgeW91IGRvIGBnaXQgY29tbWl0IC1hYCBsYXRlci4KIDw0PiB0byBzZWUgd2hhdCBjaGFuZ2VzIHlvdSBhcmUgY29tbWl0dGluZy4KIDw1PiBjb21taXQgZXZlcnl0aGluZyBhcyB5b3UgaGF2ZSB0ZXN0ZWQsIHdpdGggeW91ciBzaWduLW9mZi4KQEAgLTIyOSw3ICsyMjksNyBAQAogRXhhbXBsZXMKIH5+fn5+fn5+CiAKLU15IHR5cGljYWwgR0lUIGRheS46OgorTXkgdHlwaWNhbCBHaXQgZGF5Ljo6CiArCiAtLS0tLS0tLS0tLS0KICQgZ2l0IHN0YXR1cyA8MT4KQEAgLTMzMiw3ICszMzIsNyBAQAogLS0tLS0tLS0tLS0tCiAkIGNhdCAvZXRjL3hpbmV0ZC5kL2dpdC1kYWVtb24KICMgZGVmYXVsdDogb2ZmCi0jIGRlc2NyaXB0aW9uOiBUaGUgZ2l0IHNlcnZlciBvZmZlcnMgYWNjZXNzIHRvIGdpdCByZXBvc2l0b3JpZXMKKyMgZGVzY3JpcHRpb246IFRoZSBHaXQgc2VydmVyIG9mZmVycyBhY2Nlc3MgdG8gR2l0IHJlcG9zaXRvcmllcwogc2VydmljZSBnaXQKIHsKICAgICAgICAgZGlzYWJsZSA9IG5vCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZldGNoLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9mZXRjaC1vcHRpb25zLnR4dAppbmRleCA2ZTk4YmRmLi5iYTFmZTQ5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZldGNoLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmV0Y2gtb3B0aW9ucy50eHQKQEAgLTgsMTEgKzgsMTUgQEAKIAlvcHRpb24gb2xkIGRhdGEgaW4gYC5naXQvRkVUQ0hfSEVBRGAgd2lsbCBiZSBvdmVyd3JpdHRlbi4KIAogLS1kZXB0aD08ZGVwdGg+OjoKLQlEZWVwZW4gdGhlIGhpc3Rvcnkgb2YgYSAnc2hhbGxvdycgcmVwb3NpdG9yeSBjcmVhdGVkIGJ5CisJRGVlcGVuIG9yIHNob3J0ZW4gdGhlIGhpc3Rvcnkgb2YgYSAnc2hhbGxvdycgcmVwb3NpdG9yeSBjcmVhdGVkIGJ5CiAJYGdpdCBjbG9uZWAgd2l0aCBgLS1kZXB0aD08ZGVwdGg+YCBvcHRpb24gKHNlZSBsaW5rZ2l0OmdpdC1jbG9uZVsxXSkKIAl0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBjb21taXRzIGZyb20gdGhlIHRpcCBvZiBlYWNoIHJlbW90ZQogCWJyYW5jaCBoaXN0b3J5LiBUYWdzIGZvciB0aGUgZGVlcGVuZWQgY29tbWl0cyBhcmUgbm90IGZldGNoZWQuCiAKKy0tdW5zaGFsbG93OjoKKwlDb252ZXJ0IGEgc2hhbGxvdyByZXBvc2l0b3J5IHRvIGEgY29tcGxldGUgb25lLCByZW1vdmluZyBhbGwKKwl0aGUgbGltaXRhdGlvbnMgaW1wb3NlZCBieSBzaGFsbG93IHJlcG9zaXRvcmllcy4KKwogaWZuZGVmOjpnaXQtcHVsbFtdCiAtLWRyeS1ydW46OgogCVNob3cgd2hhdCB3b3VsZCBiZSBkb25lLCB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlcy4KQEAgLTU3LDcgKzYxLDcgQEAKIGlmbmRlZjo6Z2l0LXB1bGxbXQogLXQ6OgogLS10YWdzOjoKLQlUaGlzIGlzIGEgc2hvcnQtaGFuZCBmb3IgZ2l2aW5nICJyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKiIKKwlUaGlzIGlzIGEgc2hvcnQtaGFuZCBmb3IgZ2l2aW5nIGByZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKmAKIAlyZWZzcGVjIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgdG8gYXNrIGFsbCB0YWdzIHRvIGJlIGZldGNoZWQKIAlhbmQgc3RvcmVkIGxvY2FsbHkuICBCZWNhdXNlIHRoaXMgYWN0cyBhcyBhbiBleHBsaWNpdAogCXJlZnNwZWMsIHRoZSBkZWZhdWx0IHJlZnNwZWNzIChjb25maWd1cmVkIHdpdGggdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1hZGQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYWRkLnR4dAppbmRleCBkMGNkYjA3Li40ODc1NGNiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1hZGQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWFkZC50eHQKQEAgLTksOSArOSw5IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBhZGQnIFstbl0gWy12XSBbLS1mb3JjZSB8IC1mXSBbLS1pbnRlcmFjdGl2ZSB8IC1pXSBbLS1wYXRjaCB8IC1wXQotCSAgWy0tZWRpdCB8IC1lXSBbLS1hbGwgfCBbLS11cGRhdGUgfCAtdV1dIFstLWludGVudC10by1hZGQgfCAtTl0KLQkgIFstLXJlZnJlc2hdIFstLWlnbm9yZS1lcnJvcnNdIFstLWlnbm9yZS1taXNzaW5nXSBbLS1dCi0JICBbPHBhdGhzcGVjPi4uLl0KKwkgIFstLWVkaXQgfCAtZV0gWy0tW25vLV1hbGwgfCAtLVtuby1daWdub3JlLXJlbW92YWwgfCBbLS11cGRhdGUgfCAtdV1dCisJICBbLS1pbnRlbnQtdG8tYWRkIHwgLU5dIFstLXJlZnJlc2hdIFstLWlnbm9yZS1lcnJvcnNdIFstLWlnbm9yZS1taXNzaW5nXQorCSAgWy0tXSBbPHBhdGhzcGVjPi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0xMDAsMjMgKzEwMCw0MCBAQAogCiAtdTo6CiAtLXVwZGF0ZTo6Ci0JT25seSBtYXRjaCA8cGF0aHNwZWM+IGFnYWluc3QgYWxyZWFkeSB0cmFja2VkIGZpbGVzIGluCi0JdGhlIGluZGV4IHJhdGhlciB0aGFuIHRoZSB3b3JraW5nIHRyZWUuIFRoYXQgbWVhbnMgdGhhdCBpdAotCXdpbGwgbmV2ZXIgc3RhZ2UgbmV3IGZpbGVzLCBidXQgdGhhdCBpdCB3aWxsIHN0YWdlIG1vZGlmaWVkCi0JbmV3IGNvbnRlbnRzIG9mIHRyYWNrZWQgZmlsZXMgYW5kIHRoYXQgaXQgd2lsbCByZW1vdmUgZmlsZXMKLQlmcm9tIHRoZSBpbmRleCBpZiB0aGUgY29ycmVzcG9uZGluZyBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlCi0JaGF2ZSBiZWVuIHJlbW92ZWQuCisJVXBkYXRlIHRoZSBpbmRleCBqdXN0IHdoZXJlIGl0IGFscmVhZHkgaGFzIGFuIGVudHJ5IG1hdGNoaW5nCisJPHBhdGhzcGVjPi4gIFRoaXMgcmVtb3ZlcyBhcyB3ZWxsIGFzIG1vZGlmaWVzIGluZGV4IGVudHJpZXMgdG8KKwltYXRjaCB0aGUgd29ya2luZyB0cmVlLCBidXQgYWRkcyBubyBuZXcgZmlsZXMuCiArCi1JZiBubyA8cGF0aHNwZWM+IGlzIGdpdmVuLCBkZWZhdWx0IHRvICIuIjsgaW4gb3RoZXIgd29yZHMsCi11cGRhdGUgYWxsIHRyYWNrZWQgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBpdHMKLXN1YmRpcmVjdG9yaWVzLgorSWYgbm8gPHBhdGhzcGVjPiBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBHaXQgZGVmYXVsdHMgdG8KKyIuIjsgaW4gb3RoZXIgd29yZHMsIHVwZGF0ZSBhbGwgdHJhY2tlZCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKK2FuZCBpdHMgc3ViZGlyZWN0b3JpZXMuIFRoaXMgZGVmYXVsdCB3aWxsIGNoYW5nZSBpbiBhIGZ1dHVyZSB2ZXJzaW9uCitvZiBHaXQsIGhlbmNlIHRoZSBmb3JtIHdpdGhvdXQgPHBhdGhzcGVjPiBzaG91bGQgbm90IGJlIHVzZWQuCiAKIC1BOjoKIC0tYWxsOjoKLQlMaWtlIGAtdWAsIGJ1dCBtYXRjaCA8cGF0aHNwZWM+IGFnYWluc3QgZmlsZXMgaW4gdGhlCi0Jd29ya2luZyB0cmVlIGluIGFkZGl0aW9uIHRvIHRoZSBpbmRleC4gVGhhdCBtZWFucyB0aGF0IGl0Ci0Jd2lsbCBmaW5kIG5ldyBmaWxlcyBhcyB3ZWxsIGFzIHN0YWdpbmcgbW9kaWZpZWQgY29udGVudCBhbmQKLQlyZW1vdmluZyBmaWxlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIHdvcmtpbmcgdHJlZS4KKy0tbm8taWdub3JlLXJlbW92YWw6OgorCVVwZGF0ZSB0aGUgaW5kZXggbm90IG9ubHkgd2hlcmUgdGhlIHdvcmtpbmcgdHJlZSBoYXMgYSBmaWxlCisJbWF0Y2hpbmcgPHBhdGhzcGVjPiBidXQgYWxzbyB3aGVyZSB0aGUgaW5kZXggYWxyZWFkeSBoYXMgYW4KKwllbnRyeS4JVGhpcyBhZGRzLCBtb2RpZmllcywgYW5kIHJlbW92ZXMgaW5kZXggZW50cmllcyB0bworCW1hdGNoIHRoZSB3b3JraW5nIHRyZWUuCisrCitJZiBubyA8cGF0aHNwZWM+IGlzIGdpdmVuLCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEdpdCBkZWZhdWx0cyB0bworIi4iOyBpbiBvdGhlciB3b3JkcywgdXBkYXRlIGFsbCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKK2FuZCBpdHMgc3ViZGlyZWN0b3JpZXMuIFRoaXMgZGVmYXVsdCB3aWxsIGNoYW5nZSBpbiBhIGZ1dHVyZSB2ZXJzaW9uCitvZiBHaXQsIGhlbmNlIHRoZSBmb3JtIHdpdGhvdXQgPHBhdGhzcGVjPiBzaG91bGQgbm90IGJlIHVzZWQuCisKKy0tbm8tYWxsOjoKKy0taWdub3JlLXJlbW92YWw6OgorCVVwZGF0ZSB0aGUgaW5kZXggYnkgYWRkaW5nIG5ldyBmaWxlcyB0aGF0IGFyZSB1bmtub3duIHRvIHRoZQorCWluZGV4IGFuZCBmaWxlcyBtb2RpZmllZCBpbiB0aGUgd29ya2luZyB0cmVlLCBidXQgaWdub3JlCisJZmlsZXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSB3b3JraW5nIHRyZWUuICBUaGlzCisJb3B0aW9uIGlzIGEgbm8tb3Agd2hlbiBubyA8cGF0aHNwZWM+IGlzIHVzZWQuCisrCitUaGlzIG9wdGlvbiBpcyBwcmltYXJpbHkgdG8gaGVscCB0aGUgY3VycmVudCB1c2VycyBvZiBHaXQsIHdob3NlCisiZ2l0IGFkZCA8cGF0aHNwZWM+Li4uIiBpZ25vcmVzIHJlbW92ZWQgZmlsZXMuICBJbiBmdXR1cmUgdmVyc2lvbnMKK29mIEdpdCwgImdpdCBhZGQgPHBhdGhzcGVjPi4uLiIgd2lsbCBiZSBhIHN5bm9ueW0gdG8gImdpdCBhZGQgLUEKKzxwYXRoc3BlYz4uLi4iIGFuZCAiZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4uLi4iIHdpbGwgYmVoYXZlIGxpa2UKK3RvZGF5J3MgImdpdCBhZGQgPHBhdGhzcGVjPi4uLiIsIGlnbm9yaW5nIHJlbW92ZWQgZmlsZXMuCiAKIC1OOjoKIC0taW50ZW50LXRvLWFkZDo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1hbS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1hbS50eHQKaW5kZXggMTlkNTdhOC4uNWJiZTdiNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYW0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWFtLnR4dApAQCAtOSwxMiArOSwxMiBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IGFtJyBbLS1zaWdub2ZmXSBbLS1rZWVwXSBbLS1rZWVwLWNyIHwgLS1uby1rZWVwLWNyXSBbLS11dGY4IHwgLS1uby11dGY4XQorJ2dpdCBhbScgWy0tc2lnbm9mZl0gWy0ta2VlcF0gWy0tW25vLV1rZWVwLWNyXSBbLS1bbm8tXXV0ZjhdCiAJIFstLTN3YXldIFstLWludGVyYWN0aXZlXSBbLS1jb21taXR0ZXItZGF0ZS1pcy1hdXRob3ItZGF0ZV0KIAkgWy0taWdub3JlLWRhdGVdIFstLWlnbm9yZS1zcGFjZS1jaGFuZ2UgfCAtLWlnbm9yZS13aGl0ZXNwYWNlXQogCSBbLS13aGl0ZXNwYWNlPTxvcHRpb24+XSBbLUM8bj5dIFstcDxuPl0gWy0tZGlyZWN0b3J5PTxkaXI+XQogCSBbLS1leGNsdWRlPTxwYXRoPl0gWy0taW5jbHVkZT08cGF0aD5dIFstLXJlamVjdF0gWy1xIHwgLS1xdWlldF0KLQkgWy0tc2Npc3NvcnMgfCAtLW5vLXNjaXNzb3JzXQorCSBbLS1bbm8tXXNjaXNzb3JzXQogCSBbKDxtYm94PiB8IDxNYWlsZGlyPikuLi5dCiAnZ2l0IGFtJyAoLS1jb250aW51ZSB8IC0tc2tpcCB8IC0tYWJvcnQpCiAKQEAgLTQzLDggKzQzLDcgQEAKIC0ta2VlcC1ub24tcGF0Y2g6OgogCVBhc3MgYC1iYCBmbGFnIHRvICdnaXQgbWFpbGluZm8nIChzZWUgbGlua2dpdDpnaXQtbWFpbGluZm9bMV0pLgogCi0tLWtlZXAtY3I6OgotLS1uby1rZWVwLWNyOjoKKy0tW25vLV1rZWVwLWNyOjoKIAlXaXRoIGAtLWtlZXAtY3JgLCBjYWxsICdnaXQgbWFpbHNwbGl0JyAoc2VlIGxpbmtnaXQ6Z2l0LW1haWxzcGxpdFsxXSkKIAl3aXRoIHRoZSBzYW1lIG9wdGlvbiwgdG8gcHJldmVudCBpdCBmcm9tIHN0cmlwcGluZyBDUiBhdCB0aGUgZW5kIG9mCiAJbGluZXMuIGBhbS5rZWVwY3JgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFwcGx5LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWFwcGx5LnR4dAppbmRleCA2MzRiODRlLi5mNjA1MzI3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1hcHBseS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYXBwbHkudHh0CkBAIC0yNCw3ICsyNCw3IEBACiBXaXRoIHRoZSBgLS1pbmRleGAgb3B0aW9uIHRoZSBwYXRjaCBpcyBhbHNvIGFwcGxpZWQgdG8gdGhlIGluZGV4LCBhbmQKIHdpdGggdGhlIGAtLWNhY2hlZGAgb3B0aW9uIHRoZSBwYXRjaCBpcyBvbmx5IGFwcGxpZWQgdG8gdGhlIGluZGV4LgogV2l0aG91dCB0aGVzZSBvcHRpb25zLCB0aGUgY29tbWFuZCBhcHBsaWVzIHRoZSBwYXRjaCBvbmx5IHRvIGZpbGVzLAotYW5kIGRvZXMgbm90IHJlcXVpcmUgdGhlbSB0byBiZSBpbiBhIGdpdCByZXBvc2l0b3J5LgorYW5kIGRvZXMgbm90IHJlcXVpcmUgdGhlbSB0byBiZSBpbiBhIEdpdCByZXBvc2l0b3J5LgogCiBUaGlzIGNvbW1hbmQgYXBwbGllcyB0aGUgcGF0Y2ggYnV0IGRvZXMgbm90IGNyZWF0ZSBhIGNvbW1pdC4gIFVzZQogbGlua2dpdDpnaXQtYW1bMV0gdG8gY3JlYXRlIGNvbW1pdHMgZnJvbSBwYXRjaGVzIGdlbmVyYXRlZCBieQpAQCAtMTk4LDcgKzE5OCw3IEBACiAqIGBmaXhgIG91dHB1dHMgd2FybmluZ3MgZm9yIGEgZmV3IHN1Y2ggZXJyb3JzLCBhbmQgYXBwbGllcyB0aGUKICAgcGF0Y2ggYWZ0ZXIgZml4aW5nIHRoZW0gKGBzdHJpcGAgaXMgYSBzeW5vbnltIC0tLSB0aGUgdG9vbAogICB1c2VkIHRvIGNvbnNpZGVyIG9ubHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFzIGVycm9ycywgYW5kIHRoZQotICBmaXggaW52b2x2ZWQgJ3N0cmlwcGluZycgdGhlbSwgYnV0IG1vZGVybiBnaXRzIGRvIG1vcmUpLgorICBmaXggaW52b2x2ZWQgJ3N0cmlwcGluZycgdGhlbSwgYnV0IG1vZGVybiBHaXRzIGRvIG1vcmUpLgogKiBgZXJyb3JgIG91dHB1dHMgd2FybmluZ3MgZm9yIGEgZmV3IHN1Y2ggZXJyb3JzLCBhbmQgcmVmdXNlcwogICB0byBhcHBseSB0aGUgcGF0Y2guCiAqIGBlcnJvci1hbGxgIGlzIHNpbWlsYXIgdG8gYGVycm9yYCBidXQgc2hvd3MgYWxsIGVycm9ycy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFyY2hpbXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGltcG9ydC50eHQKaW5kZXggZjQ1MDRiYS4uMTYzYjlmNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGltcG9ydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGltcG9ydC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1hcmNoaW1wb3J0IC0gSW1wb3J0IGFuIEFyY2ggcmVwb3NpdG9yeSBpbnRvIGdpdAorZ2l0LWFyY2hpbXBvcnQgLSBJbXBvcnQgYW4gQXJjaCByZXBvc2l0b3J5IGludG8gR2l0CiAKIAogU1lOT1BTSVMKQEAgLTQwLDEzICs0MCwxMyBAQAogaW5jcmVtZW50YWwgaW1wb3J0cy4KIAogV2hpbGUgJ2dpdCBhcmNoaW1wb3J0JyB3aWxsIHRyeSB0byBjcmVhdGUgc2Vuc2libGUgYnJhbmNoIG5hbWVzIGZvciB0aGUKLWFyY2hpdmVzIHRoYXQgaXQgaW1wb3J0cywgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IGdpdCBicmFuY2ggbmFtZXMKLW1hbnVhbGx5LiAgVG8gZG8gc28sIHdyaXRlIGEgZ2l0IGJyYW5jaCBuYW1lIGFmdGVyIGVhY2ggPGFyY2hpdmUvYnJhbmNoPgorYXJjaGl2ZXMgdGhhdCBpdCBpbXBvcnRzLCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgR2l0IGJyYW5jaCBuYW1lcworbWFudWFsbHkuICBUbyBkbyBzbywgd3JpdGUgYSBHaXQgYnJhbmNoIG5hbWUgYWZ0ZXIgZWFjaCA8YXJjaGl2ZS9icmFuY2g+CiBwYXJhbWV0ZXIsIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhpcyB3YXksIHlvdSBjYW4gc2hvcnRlbiB0aGUgQXJjaAotYnJhbmNoIG5hbWVzIGFuZCBjb252ZXJ0IEFyY2ggamFyZ29uIHRvIGdpdCBqYXJnb24sIGZvciBleGFtcGxlIG1hcHBpbmcgYQorYnJhbmNoIG5hbWVzIGFuZCBjb252ZXJ0IEFyY2ggamFyZ29uIHRvIEdpdCBqYXJnb24sIGZvciBleGFtcGxlIG1hcHBpbmcgYQogIlBST0pFQ1R7bGl0ZGR9ZGV2b3tsaXRkZH1WRVJTSU9OIiBicmFuY2ggdG8gIm1hc3RlciIuCiAKLUFzc29jaWF0aW5nIG11bHRpcGxlIEFyY2ggYnJhbmNoZXMgdG8gb25lIGdpdCBicmFuY2ggaXMgcG9zc2libGU7IHRoZQorQXNzb2NpYXRpbmcgbXVsdGlwbGUgQXJjaCBicmFuY2hlcyB0byBvbmUgR2l0IGJyYW5jaCBpcyBwb3NzaWJsZTsgdGhlCiByZXN1bHQgd2lsbCBtYWtlIHRoZSBtb3N0IHNlbnNlIG9ubHkgaWYgbm8gY29tbWl0cyBhcmUgbWFkZSB0byB0aGUgZmlyc3QKIGJyYW5jaCwgYWZ0ZXIgdGhlIHNlY29uZCBicmFuY2ggaXMgY3JlYXRlZC4gIFN0aWxsLCB0aGlzIGlzIHVzZWZ1bCB0bwogY29udmVydCBBcmNoIHJlcG9zaXRvcmllcyB0aGF0IGhhZCBiZWVuIHJvdGF0ZWQgcGVyaW9kaWNhbGx5LgpAQCAtNTQsMTQgKzU0LDE0IEBACiAKIE1FUkdFUwogLS0tLS0tCi1QYXRjaCBtZXJnZSBkYXRhIGZyb20gQXJjaCBpcyB1c2VkIHRvIG1hcmsgbWVyZ2VzIGluIGdpdCBhcyB3ZWxsLiBnaXQKK1BhdGNoIG1lcmdlIGRhdGEgZnJvbSBBcmNoIGlzIHVzZWQgdG8gbWFyayBtZXJnZXMgaW4gR2l0IGFzIHdlbGwuIEdpdAogZG9lcyBub3QgY2FyZSBtdWNoIGFib3V0IHRyYWNraW5nIHBhdGNoZXMsIGFuZCBvbmx5IGNvbnNpZGVycyBhIG1lcmdlIHdoZW4gYQogYnJhbmNoIGluY29ycG9yYXRlcyBhbGwgdGhlIGNvbW1pdHMgc2luY2UgdGhlIHBvaW50IHRoZXkgZm9ya2VkLiBUaGUgZW5kIHJlc3VsdAotaXMgdGhhdCBnaXQgd2lsbCBoYXZlIGEgZ29vZCBpZGVhIG9mIGhvdyBmYXIgYnJhbmNoZXMgaGF2ZSBkaXZlcmdlZC4gU28gdGhlCitpcyB0aGF0IEdpdCB3aWxsIGhhdmUgYSBnb29kIGlkZWEgb2YgaG93IGZhciBicmFuY2hlcyBoYXZlIGRpdmVyZ2VkLiBTbyB0aGUKIGltcG9ydCBwcm9jZXNzIGRvZXMgbG9zZSBzb21lIHBhdGNoLXRyYWRpbmcgbWV0YWRhdGEuCiAKIEZvcnR1bmF0ZWx5LCB3aGVuIHlvdSB0cnkgYW5kIG1lcmdlIGJyYW5jaGVzIGltcG9ydGVkIGZyb20gQXJjaCwKLWdpdCB3aWxsIGZpbmQgYSBnb29kIG1lcmdlIGJhc2UsIGFuZCBpdCBoYXMgYSBnb29kIGNoYW5jZSBvZiBpZGVudGlmeWluZworR2l0IHdpbGwgZmluZCBhIGdvb2QgbWVyZ2UgYmFzZSwgYW5kIGl0IGhhcyBhIGdvb2QgY2hhbmNlIG9mIGlkZW50aWZ5aW5nCiBwYXRjaGVzIHRoYXQgaGF2ZSBiZWVuIHRyYWRlZCBvdXQtb2Ytc2VxdWVuY2UgYmV0d2VlbiB0aGUgYnJhbmNoZXMuCiAKIE9QVElPTlMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFyY2hpdmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGl2ZS50eHQKaW5kZXggNTlkNzNlNS4uYjk3YWFhYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGl2ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYXJjaGl2ZS50eHQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IGFyY2hpdmUnIFstLWZvcm1hdD08Zm10Pl0gWy0tbGlzdF0gWy0tcHJlZml4PTxwcmVmaXg+L10gWzxleHRyYT5dCi0JICAgICAgWy1vIHwgLS1vdXRwdXQ9PGZpbGU+XSBbLS13b3JrdHJlZS1hdHRyaWJ1dGVzXQorCSAgICAgIFstbyA8ZmlsZT4gfCAtLW91dHB1dD08ZmlsZT5dIFstLXdvcmt0cmVlLWF0dHJpYnV0ZXNdCiAJICAgICAgWy0tcmVtb3RlPTxyZXBvPiBbLS1leGVjPTxnaXQtdXBsb2FkLWFyY2hpdmU+XV0gPHRyZWUtaXNoPgogCSAgICAgIFs8cGF0aD4uLi5dCiAKQEAgLTU2LDcgKzU2LDggQEAKIAlXcml0ZSB0aGUgYXJjaGl2ZSB0byA8ZmlsZT4gaW5zdGVhZCBvZiBzdGRvdXQuCiAKIC0td29ya3RyZWUtYXR0cmlidXRlczo6Ci0JTG9vayBmb3IgYXR0cmlidXRlcyBpbiAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSB0b28uCisJTG9vayBmb3IgYXR0cmlidXRlcyBpbiAuZ2l0YXR0cmlidXRlcyBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlCisJYXMgd2VsbCAoc2VlIDw8QVRUUklCVVRFUz4+KS4KIAogPGV4dHJhPjo6CiAJVGhpcyBjYW4gYmUgYW55IG9wdGlvbnMgdGhhdCB0aGUgYXJjaGl2ZXIgYmFja2VuZCB1bmRlcnN0YW5kcy4KQEAgLTEyMCw2ICsxMjEsNyBAQAogCXVzZXItZGVmaW5lZCBmb3JtYXRzLCBidXQgdHJ1ZSBmb3IgdGhlICJ0YXIuZ3oiIGFuZCAidGd6IgogCWZvcm1hdHMuCiAKK1tbQVRUUklCVVRFU11dCiBBVFRSSUJVVEVTCiAtLS0tLS0tLS0tCiAKQEAgLTEyOCw3ICsxMzAsNyBAQAogCWFkZGVkIHRvIGFyY2hpdmUgZmlsZXMuICBTZWUgbGlua2dpdDpnaXRhdHRyaWJ1dGVzWzVdIGZvciBkZXRhaWxzLgogCiBleHBvcnQtc3Vic3Q6OgotCUlmIHRoZSBhdHRyaWJ1dGUgZXhwb3J0LXN1YnN0IGlzIHNldCBmb3IgYSBmaWxlIHRoZW4gZ2l0IHdpbGwKKwlJZiB0aGUgYXR0cmlidXRlIGV4cG9ydC1zdWJzdCBpcyBzZXQgZm9yIGEgZmlsZSB0aGVuIEdpdCB3aWxsCiAJZXhwYW5kIHNldmVyYWwgcGxhY2Vob2xkZXJzIHdoZW4gYWRkaW5nIHRoaXMgZmlsZSB0byBhbiBhcmNoaXZlLgogCVNlZSBsaW5rZ2l0OmdpdGF0dHJpYnV0ZXNbNV0gZm9yIGRldGFpbHMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC1sazIwMDkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKaW5kZXggZWM0NDk3ZS4uMGVlZDNlMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKQEAgLTIyNCw3ICsyMjQsNyBAQAogd2lsbCBiZSBsb29raW5nIGZvciB0aGUgZmlyc3QgY29tbWl0IHRoYXQgaGFzIGEgdmVyc2lvbiBsaWtlCiAiMi42LjI2LXNvbWV0aGluZyIsIHRoYXQgaXMgdGhlIGNvbW1pdCB0aGF0IGhhcyBhICJTVUJMRVZFTCA9IDI2IiBsaW5lCiBpbiB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLiBUaGlzIGlzIGEgdG95IGV4YW1wbGUgYmVjYXVzZSB0aGVyZSBhcmUKLWJldHRlciB3YXlzIHRvIGZpbmQgdGhpcyBjb21taXQgd2l0aCBnaXQgdGhhbiB1c2luZyAiZ2l0IGJpc2VjdCIgKGZvcgorYmV0dGVyIHdheXMgdG8gZmluZCB0aGlzIGNvbW1pdCB3aXRoIEdpdCB0aGFuIHVzaW5nICJnaXQgYmlzZWN0IiAoZm9yCiBleGFtcGxlICJnaXQgYmxhbWUiIG9yICJnaXQgbG9nIC1TPHN0cmluZz4iKS4KIAogRHJpdmluZyBhIGJpc2VjdGlvbiBtYW51YWxseQpAQCAtNDU1LDcgKzQ1NSw3IEBACiBoYXZlIGJlZW4gcmVtb3ZlZCBieSBydWxlcyBhKSBhbmQgYikgcmVzcGVjdGl2ZWx5LCBhbmQgYmVjYXVzZSBjb21taXRzCiBHIGFyZSByZW1vdmVkIGJ5IHJ1bGUgYikgdG9vLgogCi1Ob3RlIGZvciBnaXQgdXNlcnMsIHRoYXQgaXQgaXMgZXF1aXZhbGVudCBhcyBrZWVwaW5nIG9ubHkgdGhlIGNvbW1pdAorTm90ZSBmb3IgR2l0IHVzZXJzLCB0aGF0IGl0IGlzIGVxdWl2YWxlbnQgYXMga2VlcGluZyBvbmx5IHRoZSBjb21taXQKIGdpdmVuIGJ5OgogCiAtLS0tLS0tLS0tLS0tCkBAIC03MTAsOCArNzEwLDggQEAKIEFmdGVyIHN0ZXAgNykgKGluIHRoZSBza2lwIGFsZ29yaXRobSksIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBzZWNvbmQKIGNvbW1pdCBoYXMgYmVlbiBza2lwcGVkIGFuZCByZXR1cm4gaXQgaWYgaXQgaXMgbm90IHRoZSBjYXNlLiBBbmQgaW4KIGZhY3QgdGhhdCB3YXMgdGhlIGFsZ29yaXRobSB3ZSB1c2VkIGZyb20gd2hlbiAiZ2l0IGJpc2VjdCBza2lwIiB3YXMKLWRldmVsb3BlZCBpbiBnaXQgdmVyc2lvbiAxLjUuNCAocmVsZWFzZWQgb24gRmVicnVhcnkgMXN0IDIwMDgpIHVudGlsCi1naXQgdmVyc2lvbiAxLjYuNCAocmVsZWFzZWQgSnVseSAyOXRoIDIwMDkpLgorZGV2ZWxvcGVkIGluIEdpdCB2ZXJzaW9uIDEuNS40IChyZWxlYXNlZCBvbiBGZWJydWFyeSAxc3QgMjAwOCkgdW50aWwKK0dpdCB2ZXJzaW9uIDEuNi40IChyZWxlYXNlZCBKdWx5IDI5dGggMjAwOSkuCiAKIEJ1dCBJbmdvIE1vbG5hciBhbmQgSC4gUGV0ZXIgQW52aW4gKGFub3RoZXIgd2VsbCBrbm93biBsaW51eCBrZXJuZWwKIGRldmVsb3BlcikgYm90aCBjb21wbGFpbmVkIHRoYXQgc29tZXRpbWVzIHRoZSBiZXN0IGJpc2VjdGlvbiBwb2ludHMKQEAgLTEwMjUsMTAgKzEwMjUsMTAgQEAKIF9fX19fX19fX19fX18KIFRvIGdpdmUgc29tZSBoYXJkIGZpZ3VyZXMsIHdlIHVzZWQgdG8gaGF2ZSBhbiBhdmVyYWdlIHJlcG9ydC10by1maXgKIGN5Y2xlIG9mIDE0Mi42IGhvdXJzIChhY2NvcmRpbmcgdG8gb3VyIHNvbWV3aGF0IHdlaXJkIGJ1Zy10cmFja2VyCi13aGljaCBqdXN0IG1lYXN1cmVzIHdhbGwtY2xvY2sgdGltZSkuIFNpbmNlIHdlIG1vdmVkIHRvIGdpdCwgd2UndmUKK3doaWNoIGp1c3QgbWVhc3VyZXMgd2FsbC1jbG9jayB0aW1lKS4gU2luY2Ugd2UgbW92ZWQgdG8gR2l0LCB3ZSd2ZQogbG93ZXJlZCB0aGF0IHRvIDE2LjIgaG91cnMuIFByaW1hcmlseSBiZWNhdXNlIHdlIGNhbiBzdGF5IG9uIHRvcCBvZgogdGhlIGJ1ZyBmaXhpbmcgbm93LCBhbmQgYmVjYXVzZSBldmVyeW9uZSdzIGpvY2tleWluZyB0byBnZXQgdG8gZml4Ci1idWdzICh3ZSdyZSBxdWl0ZSBwcm91ZCBvZiBob3cgbGF6eSB3ZSBhcmUgdG8gbGV0IGdpdCBmaW5kIHRoZSBidWdzCitidWdzICh3ZSdyZSBxdWl0ZSBwcm91ZCBvZiBob3cgbGF6eSB3ZSBhcmUgdG8gbGV0IEdpdCBmaW5kIHRoZSBidWdzCiBmb3IgdXMpLiBFYWNoIG5ldyByZWxlYXNlIHJlc3VsdHMgaW4gfjQwJSBmZXdlciBidWdzIChhbG1vc3QgY2VydGFpbmx5CiBkdWUgdG8gaG93IHdlIG5vdyBmZWVsIGFib3V0IHdyaXRpbmcgdGVzdHMpLgogX19fX19fX19fX19fXwpAQCAtMTIyOCw5ICsxMjI4LDkgQEAKIG1lc3NhZ2Ugb3IgdGhlIGF1dGhvci4gQW5kIGl0IGNhbiBhbHNvIGJlIHVzZWQgaW5zdGVhZCBvZiBnaXQgImdyYWZ0cyIKIHRvIGxpbmsgYSByZXBvc2l0b3J5IHdpdGggYW5vdGhlciBvbGQgcmVwb3NpdG9yeS4KIAotSW4gZmFjdCBpdCdzIHRoaXMgbGFzdCBmZWF0dXJlIHRoYXQgInNvbGQiIGl0IHRvIHRoZSBnaXQgY29tbXVuaXR5LCBzbwotaXQgaXMgbm93IGluIHRoZSAibWFzdGVyIiBicmFuY2ggb2YgZ2l0J3MgZ2l0IHJlcG9zaXRvcnkgYW5kIGl0IHNob3VsZAotYmUgcmVsZWFzZWQgaW4gZ2l0IDEuNi41IGluIE9jdG9iZXIgb3IgTm92ZW1iZXIgMjAwOS4KK0luIGZhY3QgaXQncyB0aGlzIGxhc3QgZmVhdHVyZSB0aGF0ICJzb2xkIiBpdCB0byB0aGUgR2l0IGNvbW11bml0eSwgc28KK2l0IGlzIG5vdyBpbiB0aGUgIm1hc3RlciIgYnJhbmNoIG9mIEdpdCdzIEdpdCByZXBvc2l0b3J5IGFuZCBpdCBzaG91bGQKK2JlIHJlbGVhc2VkIGluIEdpdCAxLjYuNSBpbiBPY3RvYmVyIG9yIE5vdmVtYmVyIDIwMDkuCiAKIE9uZSBwcm9ibGVtIHdpdGggImdpdCByZXBsYWNlIiBpcyB0aGF0IGN1cnJlbnRseSBpdCBzdG9yZXMgYWxsIHRoZQogcmVwbGFjZW1lbnRzIHJlZnMgaW4gInJlZnMvcmVwbGFjZS8iLCBidXQgaXQgd291bGQgYmUgcGVyaGFwcyBiZXR0ZXIKQEAgLTEzMjQsNyArMTMyNCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tCiAKIE1hbnkgdGhhbmtzIHRvIEp1bmlvIEhhbWFubyBmb3IgaGlzIGhlbHAgaW4gcmV2aWV3aW5nIHRoaXMgcGFwZXIsIGZvcgotcmV2aWV3aW5nIHRoZSBwYXRjaGVzIEkgc2VudCB0byB0aGUgZ2l0IG1haWxpbmcgbGlzdCwgZm9yIGRpc2N1c3NpbmcKK3Jldmlld2luZyB0aGUgcGF0Y2hlcyBJIHNlbnQgdG8gdGhlIEdpdCBtYWlsaW5nIGxpc3QsIGZvciBkaXNjdXNzaW5nCiBzb21lIGlkZWFzIGFuZCBoZWxwaW5nIG1lIGltcHJvdmUgdGhlbSwgZm9yIGltcHJvdmluZyAiZ2l0IGJpc2VjdCIgYQogbG90IGFuZCBmb3IgaGlzIGF3ZXNvbWUgd29yayBpbiBtYWludGFpbmluZyBhbmQgZGV2ZWxvcGluZyBHaXQuCiAKQEAgLTEzMzcsNyArMTMzNyw3IEBACiBldmFuZ2VsaXppbmcgImdpdCBiaXNlY3QiLCBHaXQgYW5kIExpbnV4LgogCiBNYW55IHRoYW5rcyB0byB0aGUgbWFueSBvdGhlciBncmVhdCBwZW9wbGUgd2hvIGhlbHBlZCBvbmUgd2F5IG9yCi1hbm90aGVyIHdoZW4gSSB3b3JrZWQgb24gZ2l0LCBlc3BlY2lhbGx5IHRvIEFuZHJlYXMgRXJpY3Nzb24sIEpvaGFubmVzCithbm90aGVyIHdoZW4gSSB3b3JrZWQgb24gR2l0LCBlc3BlY2lhbGx5IHRvIEFuZHJlYXMgRXJpY3Nzb24sIEpvaGFubmVzCiBTY2hpbmRlbGluLCBILiBQZXRlciBBbnZpbiwgRGFuaWVsIEJhcmthbG93LCBCaWxsIExlYXIsIEpvaG4gSGF3bGV5LAogU2hhd24gTy4gUGllcmNlLCBKZWZmIEtpbmcsIFNhbSBWaWxhaW4sIEpvbiBTZXltb3VyLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dAppbmRleCAwMzg1MTRiLi5mOTg2YzVjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC50eHQKQEAgLTE2OSwxNCArMTY5LDE0IEBACiBCaXNlY3Qgc2tpcAogfn5+fn5+fn5+fn5+CiAKLUluc3RlYWQgb2YgY2hvb3NpbmcgYnkgeW91cnNlbGYgYSBuZWFyYnkgY29tbWl0LCB5b3UgY2FuIGFzayBnaXQKK0luc3RlYWQgb2YgY2hvb3NpbmcgYnkgeW91cnNlbGYgYSBuZWFyYnkgY29tbWl0LCB5b3UgY2FuIGFzayBHaXQKIHRvIGRvIGl0IGZvciB5b3UgYnkgaXNzdWluZyB0aGUgY29tbWFuZDoKIAogLS0tLS0tLS0tLS0tCiAkIGdpdCBiaXNlY3Qgc2tpcCAgICAgICAgICAgICAgICAgIyBDdXJyZW50IHZlcnNpb24gY2Fubm90IGJlIHRlc3RlZAogLS0tLS0tLS0tLS0tCiAKLUJ1dCBnaXQgbWF5IGV2ZW50dWFsbHkgYmUgdW5hYmxlIHRvIHRlbGwgdGhlIGZpcnN0IGJhZCBjb21taXQgYW1vbmcKK0J1dCBHaXQgbWF5IGV2ZW50dWFsbHkgYmUgdW5hYmxlIHRvIHRlbGwgdGhlIGZpcnN0IGJhZCBjb21taXQgYW1vbmcKIGEgYmFkIGNvbW1pdCBhbmQgb25lIG9yIG1vcmUgc2tpcHBlZCBjb21taXRzLgogCiBZb3UgY2FuIGV2ZW4gc2tpcCBhIHJhbmdlIG9mIGNvbW1pdHMsIGluc3RlYWQgb2YganVzdCBvbmUgY29tbWl0LApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYmxhbWUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmxhbWUudHh0CmluZGV4IGU0NDE3M2YuLjZjZWE3ZjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWJsYW1lLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1ibGFtZS50eHQKQEAgLTgsOSArOCw5IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgYmxhbWUnIFstY10gWy1iXSBbLWxdIFstLXJvb3RdIFstdF0gWy1mXSBbLW5dIFstc10gWy1lXSBbLXBdIFstd10gWy0taW5jcmVtZW50YWxdIFstTCBuLG1dCi0JICAgIFstUyA8cmV2cy1maWxlPl0gWy1NXSBbLUNdIFstQ10gWy1DXSBbLS1zaW5jZT08ZGF0ZT5dIFstLWFiYnJldj08bj5dCi0JICAgIFs8cmV2PiB8IC0tY29udGVudHMgPGZpbGU+IHwgLS1yZXZlcnNlIDxyZXY+XSBbLS1dIDxmaWxlPgorJ2dpdCBibGFtZScgWy1jXSBbLWJdIFstbF0gWy0tcm9vdF0gWy10XSBbLWZdIFstbl0gWy1zXSBbLWVdIFstcF0gWy13XSBbLS1pbmNyZW1lbnRhbF0KKwkgICAgWy1MIG4sbSB8IC1MIDpmbl0gWy1TIDxyZXZzLWZpbGU+XSBbLU1dIFstQ10gWy1DXSBbLUNdIFstLXNpbmNlPTxkYXRlPl0KKwkgICAgWy0tYWJicmV2PTxuPl0gWzxyZXY+IHwgLS1jb250ZW50cyA8ZmlsZT4gfCAtLXJldmVyc2UgPHJldj5dIFstLV0gPGZpbGU+CiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMzAsNyArMzAsNyBAQAogcmVwbGFjZWQ7IHlvdSBuZWVkIHRvIHVzZSBhIHRvb2wgc3VjaCBhcyAnZ2l0IGRpZmYnIG9yIHRoZSAicGlja2F4ZSIKIGludGVyZmFjZSBicmllZmx5IG1lbnRpb25lZCBpbiB0aGUgZm9sbG93aW5nIHBhcmFncmFwaC4KIAotQXBhcnQgZnJvbSBzdXBwb3J0aW5nIGZpbGUgYW5ub3RhdGlvbiwgZ2l0IGFsc28gc3VwcG9ydHMgc2VhcmNoaW5nIHRoZQorQXBhcnQgZnJvbSBzdXBwb3J0aW5nIGZpbGUgYW5ub3RhdGlvbiwgR2l0IGFsc28gc3VwcG9ydHMgc2VhcmNoaW5nIHRoZQogZGV2ZWxvcG1lbnQgaGlzdG9yeSBmb3Igd2hlbiBhIGNvZGUgc25pcHBldCBvY2N1cnJlZCBpbiBhIGNoYW5nZS4gVGhpcyBtYWtlcyBpdAogcG9zc2libGUgdG8gdHJhY2sgd2hlbiBhIGNvZGUgc25pcHBldCB3YXMgYWRkZWQgdG8gYSBmaWxlLCBtb3ZlZCBvciBjb3BpZWQKIGJldHdlZW4gZmlsZXMsIGFuZCBldmVudHVhbGx5IGRlbGV0ZWQgb3IgcmVwbGFjZWQuIEl0IHdvcmtzIGJ5IHNlYXJjaGluZyBmb3IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWJyYW5jaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1icmFuY2gudHh0CmluZGV4IDQ1YTIyNWUuLmI3Y2I2MjUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWJyYW5jaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYnJhbmNoLnR4dApAQCAtMjIsMTMgKzIyLDE1IEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIAotV2l0aCBubyBhcmd1bWVudHMsIGV4aXN0aW5nIGJyYW5jaGVzIGFyZSBsaXN0ZWQgYW5kIHRoZSBjdXJyZW50IGJyYW5jaCB3aWxsCi1iZSBoaWdobGlnaHRlZCB3aXRoIGFuIGFzdGVyaXNrLiAgT3B0aW9uIGAtcmAgY2F1c2VzIHRoZSByZW1vdGUtdHJhY2tpbmcKLWJyYW5jaGVzIHRvIGJlIGxpc3RlZCwgYW5kIG9wdGlvbiBgLWFgIHNob3dzIGJvdGguIFRoaXMgbGlzdCBtb2RlIGlzIGFsc28KLWFjdGl2YXRlZCBieSB0aGUgYC0tbGlzdGAgb3B0aW9uIChzZWUgYmVsb3cpLgotPHBhdHRlcm4+IHJlc3RyaWN0cyB0aGUgb3V0cHV0IHRvIG1hdGNoaW5nIGJyYW5jaGVzLCB0aGUgcGF0dGVybiBpcyBhIHNoZWxsCi13aWxkY2FyZCAoaS5lLiwgbWF0Y2hlZCB1c2luZyBmbm1hdGNoKDMpKS4KLU11bHRpcGxlIHBhdHRlcm5zIG1heSBiZSBnaXZlbjsgaWYgYW55IG9mIHRoZW0gbWF0Y2hlcywgdGhlIGJyYW5jaCBpcyBzaG93bi4KK0lmIGAtLWxpc3RgIGlzIGdpdmVuLCBvciBpZiB0aGVyZSBhcmUgbm8gbm9uLW9wdGlvbiBhcmd1bWVudHMsIGV4aXN0aW5nCiticmFuY2hlcyBhcmUgbGlzdGVkOyB0aGUgY3VycmVudCBicmFuY2ggd2lsbCBiZSBoaWdobGlnaHRlZCB3aXRoIGFuCithc3Rlcmlzay4gIE9wdGlvbiBgLXJgIGNhdXNlcyB0aGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIHRvIGJlIGxpc3RlZCwKK2FuZCBvcHRpb24gYC1hYCBzaG93cyBib3RoIGxvY2FsIGFuZCByZW1vdGUgYnJhbmNoZXMuIElmIGEgYDxwYXR0ZXJuPmAKK2lzIGdpdmVuLCBpdCBpcyB1c2VkIGFzIGEgc2hlbGwgd2lsZGNhcmQgdG8gcmVzdHJpY3QgdGhlIG91dHB1dCB0bworbWF0Y2hpbmcgYnJhbmNoZXMuIElmIG11bHRpcGxlIHBhdHRlcm5zIGFyZSBnaXZlbiwgYSBicmFuY2ggaXMgc2hvd24gaWYKK2l0IG1hdGNoZXMgYW55IG9mIHRoZSBwYXR0ZXJucy4gIE5vdGUgdGhhdCB3aGVuIHByb3ZpZGluZyBhCitgPHBhdHRlcm4+YCwgeW91IG11c3QgdXNlIGAtLWxpc3RgOyBvdGhlcndpc2UgdGhlIGNvbW1hbmQgaXMgaW50ZXJwcmV0ZWQKK2FzIGJyYW5jaCBjcmVhdGlvbi4KIAogV2l0aCBgLS1jb250YWluc2AsIHNob3dzIG9ubHkgdGhlIGJyYW5jaGVzIHRoYXQgY29udGFpbiB0aGUgbmFtZWQgY29tbWl0CiAoaW4gb3RoZXIgd29yZHMsIHRoZSBicmFuY2hlcyB3aG9zZSB0aXAgY29tbWl0cyBhcmUgZGVzY2VuZGFudHMgb2YgdGhlCkBAIC00NSw3ICs0Nyw3IEBACiB3b3JraW5nIHRyZWUgdG8gaXQ7IHVzZSAiZ2l0IGNoZWNrb3V0IDxuZXdicmFuY2g+IiB0byBzd2l0Y2ggdG8gdGhlCiBuZXcgYnJhbmNoLgogCi1XaGVuIGEgbG9jYWwgYnJhbmNoIGlzIHN0YXJ0ZWQgb2ZmIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCwgZ2l0IHNldHMgdXAgdGhlCitXaGVuIGEgbG9jYWwgYnJhbmNoIGlzIHN0YXJ0ZWQgb2ZmIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCwgR2l0IHNldHMgdXAgdGhlCiBicmFuY2ggc28gdGhhdCAnZ2l0IHB1bGwnIHdpbGwgYXBwcm9wcmlhdGVseSBtZXJnZSBmcm9tCiB0aGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaC4gVGhpcyBiZWhhdmlvciBtYXkgYmUgY2hhbmdlZCB2aWEgdGhlIGdsb2JhbAogYGJyYW5jaC5hdXRvc2V0dXBtZXJnZWAgY29uZmlndXJhdGlvbiBmbGFnLiBUaGF0IHNldHRpbmcgY2FuIGJlCkBAIC0xOTMsMTUgKzE5NSwxNSBAQAogCiAtLWNvbnRhaW5zIFs8Y29tbWl0Pl06OgogCU9ubHkgbGlzdCBicmFuY2hlcyB3aGljaCBjb250YWluIHRoZSBzcGVjaWZpZWQgY29tbWl0IChIRUFECi0JaWYgbm90IHNwZWNpZmllZCkuCisJaWYgbm90IHNwZWNpZmllZCkuIEltcGxpZXMgYC0tbGlzdGAuCiAKIC0tbWVyZ2VkIFs8Y29tbWl0Pl06OgogCU9ubHkgbGlzdCBicmFuY2hlcyB3aG9zZSB0aXBzIGFyZSByZWFjaGFibGUgZnJvbSB0aGUKLQlzcGVjaWZpZWQgY29tbWl0IChIRUFEIGlmIG5vdCBzcGVjaWZpZWQpLgorCXNwZWNpZmllZCBjb21taXQgKEhFQUQgaWYgbm90IHNwZWNpZmllZCkuIEltcGxpZXMgYC0tbGlzdGAuCiAKIC0tbm8tbWVyZ2VkIFs8Y29tbWl0Pl06OgogCU9ubHkgbGlzdCBicmFuY2hlcyB3aG9zZSB0aXBzIGFyZSBub3QgcmVhY2hhYmxlIGZyb20gdGhlCi0Jc3BlY2lmaWVkIGNvbW1pdCAoSEVBRCBpZiBub3Qgc3BlY2lmaWVkKS4KKwlzcGVjaWZpZWQgY29tbWl0IChIRUFEIGlmIG5vdCBzcGVjaWZpZWQpLiBJbXBsaWVzIGAtLWxpc3RgLgogCiA8YnJhbmNobmFtZT46OgogCVRoZSBuYW1lIG9mIHRoZSBicmFuY2ggdG8gY3JlYXRlIG9yIGRlbGV0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWJ1bmRsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1idW5kbGUudHh0CmluZGV4IGJjMDIzY2MuLjA0MTc1NjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWJ1bmRsZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYnVuZGxlLnR4dApAQCAtMTksNyArMTksNyBAQAogCiBTb21lIHdvcmtmbG93cyByZXF1aXJlIHRoYXQgb25lIG9yIG1vcmUgYnJhbmNoZXMgb2YgZGV2ZWxvcG1lbnQgb24gb25lCiBtYWNoaW5lIGJlIHJlcGxpY2F0ZWQgb24gYW5vdGhlciBtYWNoaW5lLCBidXQgdGhlIHR3byBtYWNoaW5lcyBjYW5ub3QKLWJlIGRpcmVjdGx5IGNvbm5lY3RlZCwgYW5kIHRoZXJlZm9yZSB0aGUgaW50ZXJhY3RpdmUgZ2l0IHByb3RvY29scyAoZ2l0LAorYmUgZGlyZWN0bHkgY29ubmVjdGVkLCBhbmQgdGhlcmVmb3JlIHRoZSBpbnRlcmFjdGl2ZSBHaXQgcHJvdG9jb2xzIChnaXQsCiBzc2gsIHJzeW5jLCBodHRwKSBjYW5ub3QgYmUgdXNlZC4gIFRoaXMgY29tbWFuZCBwcm92aWRlcyBzdXBwb3J0IGZvcgogJ2dpdCBmZXRjaCcgYW5kICdnaXQgcHVsbCcgdG8gb3BlcmF0ZSBieSBwYWNrYWdpbmcgb2JqZWN0cyBhbmQgcmVmZXJlbmNlcwogaW4gYW4gYXJjaGl2ZSBhdCB0aGUgb3JpZ2luYXRpbmcgbWFjaGluZSwgdGhlbiBpbXBvcnRpbmcgdGhvc2UgaW50bwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2F0LWZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2F0LWZpbGUudHh0CmluZGV4IDJmYjk1YmIuLjMwZDU4NWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNhdC1maWxlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jYXQtZmlsZS50eHQKQEAgLTIwLDcgKzIwLDcgQEAKICh3aGljaCBpbXBsaWVzIHR5cGUgImJsb2IiKS4KIAogSW4gdGhlIHNlY29uZCBmb3JtLCBhIGxpc3Qgb2Ygb2JqZWN0cyAoc2VwYXJhdGVkIGJ5IGxpbmVmZWVkcykgaXMgcHJvdmlkZWQgb24KLXN0ZGluLCBhbmQgdGhlIFNIQTEsIHR5cGUsIGFuZCBzaXplIG9mIGVhY2ggb2JqZWN0IGlzIHByaW50ZWQgb24gc3Rkb3V0Lgorc3RkaW4sIGFuZCB0aGUgU0hBLTEsIHR5cGUsIGFuZCBzaXplIG9mIGVhY2ggb2JqZWN0IGlzIHByaW50ZWQgb24gc3Rkb3V0LgogCiBPUFRJT05TCiAtLS0tLS0tCkBAIC01OCwxMSArNTgsMTEgQEAKIAl0byBhcHBseSB0aGUgZmlsdGVyIHRvIHRoZSBjb250ZW50IHJlY29yZGVkIGluIHRoZSBpbmRleCBhdCA8cGF0aD4uCiAKIC0tYmF0Y2g6OgotCVByaW50IHRoZSBTSEExLCB0eXBlLCBzaXplLCBhbmQgY29udGVudHMgb2YgZWFjaCBvYmplY3QgcHJvdmlkZWQgb24KKwlQcmludCB0aGUgU0hBLTEsIHR5cGUsIHNpemUsIGFuZCBjb250ZW50cyBvZiBlYWNoIG9iamVjdCBwcm92aWRlZCBvbgogCXN0ZGluLiBNYXkgbm90IGJlIGNvbWJpbmVkIHdpdGggYW55IG90aGVyIG9wdGlvbnMgb3IgYXJndW1lbnRzLgogCiAtLWJhdGNoLWNoZWNrOjoKLQlQcmludCB0aGUgU0hBMSwgdHlwZSwgYW5kIHNpemUgb2YgZWFjaCBvYmplY3QgcHJvdmlkZWQgb24gc3RkaW4uIE1heSBub3QKKwlQcmludCB0aGUgU0hBLTEsIHR5cGUsIGFuZCBzaXplIG9mIGVhY2ggb2JqZWN0IHByb3ZpZGVkIG9uIHN0ZGluLiBNYXkgbm90CiAJYmUgY29tYmluZWQgd2l0aCBhbnkgb3RoZXIgb3B0aW9ucyBvciBhcmd1bWVudHMuCiAKIE9VVFBVVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stYXR0ci50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dAppbmRleCA1YWJkYmFhLi5hN2JlODBkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dApAQCAtNTYsNiArNTYsMTEgQEAKICdzZXQnOzsJCXdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBkZWZpbmVkIGFzIHRydWUuCiA8dmFsdWU+OzsJd2hlbiBhIHZhbHVlIGhhcyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBhdHRyaWJ1dGUuCiAKK0J1ZmZlcmluZyBoYXBwZW5zIGFzIGRvY3VtZW50ZWQgdW5kZXIgdGhlIGBHSVRfRkxVU0hgIG9wdGlvbiBpbgorbGlua2dpdDpnaXRbMV0uICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhdm9pZGluZyBkZWFkbG9ja3MKK2NhdXNlZCBieSBvdmVyZmlsbGluZyBhbiBpbnB1dCBidWZmZXIgb3IgcmVhZGluZyBmcm9tIGFuIGVtcHR5IG91dHB1dAorYnVmZmVyLgorCiBFWEFNUExFUwogLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2staWdub3JlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWlnbm9yZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxZjdhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWlnbm9yZS50eHQKQEAgLTAsMCArMSwxMDkgQEAKK2dpdC1jaGVjay1pZ25vcmUoMSkKKz09PT09PT09PT09PT09PT09PT0KKworTkFNRQorLS0tLQorZ2l0LWNoZWNrLWlnbm9yZSAtIERlYnVnIGdpdGlnbm9yZSAvIGV4Y2x1ZGUgZmlsZXMKKworCitTWU5PUFNJUworLS0tLS0tLS0KK1t2ZXJzZV0KKydnaXQgY2hlY2staWdub3JlJyBbb3B0aW9uc10gcGF0aG5hbWUuLi4KKydnaXQgY2hlY2staWdub3JlJyBbb3B0aW9uc10gLS1zdGRpbiA8IDxsaXN0LW9mLXBhdGhzPgorCitERVNDUklQVElPTgorLS0tLS0tLS0tLS0KKworRm9yIGVhY2ggcGF0aG5hbWUgZ2l2ZW4gdmlhIHRoZSBjb21tYW5kLWxpbmUgb3IgZnJvbSBhIGZpbGUgdmlhCitgLS1zdGRpbmAsIHNob3cgdGhlIHBhdHRlcm4gZnJvbSAuZ2l0aWdub3JlIChvciBvdGhlciBpbnB1dCBmaWxlcyB0bwordGhlIGV4Y2x1ZGUgbWVjaGFuaXNtKSB0aGF0IGRlY2lkZXMgaWYgdGhlIHBhdGhuYW1lIGlzIGV4Y2x1ZGVkIG9yCitpbmNsdWRlZC4gIExhdGVyIHBhdHRlcm5zIHdpdGhpbiBhIGZpbGUgdGFrZSBwcmVjZWRlbmNlIG92ZXIgZWFybGllcgorb25lcy4KKworT1BUSU9OUworLS0tLS0tLQorLXEsIC0tcXVpZXQ6OgorCURvbid0IG91dHB1dCBhbnl0aGluZywganVzdCBzZXQgZXhpdCBzdGF0dXMuICBUaGlzIGlzIG9ubHkKKwl2YWxpZCB3aXRoIGEgc2luZ2xlIHBhdGhuYW1lLgorCistdiwgLS12ZXJib3NlOjoKKwlBbHNvIG91dHB1dCBkZXRhaWxzIGFib3V0IHRoZSBtYXRjaGluZyBwYXR0ZXJuIChpZiBhbnkpCisJZm9yIGVhY2ggZ2l2ZW4gcGF0aG5hbWUuCisKKy0tc3RkaW46OgorCVJlYWQgZmlsZSBuYW1lcyBmcm9tIHN0ZGluIGluc3RlYWQgb2YgZnJvbSB0aGUgY29tbWFuZC1saW5lLgorCistejo6CisJVGhlIG91dHB1dCBmb3JtYXQgaXMgbW9kaWZpZWQgdG8gYmUgbWFjaGluZS1wYXJzZWFibGUgKHNlZQorCWJlbG93KS4gIElmIGAtLXN0ZGluYCBpcyBhbHNvIGdpdmVuLCBpbnB1dCBwYXRocyBhcmUgc2VwYXJhdGVkCisJd2l0aCBhIE5VTCBjaGFyYWN0ZXIgaW5zdGVhZCBvZiBhIGxpbmVmZWVkIGNoYXJhY3Rlci4KKworLW4sIC0tbm9uLW1hdGNoaW5nOjoKKwlTaG93IGdpdmVuIHBhdGhzIHdoaWNoIGRvbid0IG1hdGNoIGFueSBwYXR0ZXJuLgkgVGhpcyBvbmx5CisJbWFrZXMgc2Vuc2Ugd2hlbiBgLS12ZXJib3NlYCBpcyBlbmFibGVkLCBvdGhlcndpc2UgaXQgd291bGQKKwlub3QgYmUgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBwYXRocyB3aGljaCBtYXRjaCBhCisJcGF0dGVybiBhbmQgdGhvc2Ugd2hpY2ggZG9uJ3QuCisKK09VVFBVVAorLS0tLS0tCisKK0J5IGRlZmF1bHQsIGFueSBvZiB0aGUgZ2l2ZW4gcGF0aG5hbWVzIHdoaWNoIG1hdGNoIGFuIGlnbm9yZSBwYXR0ZXJuCit3aWxsIGJlIG91dHB1dCwgb25lIHBlciBsaW5lLiAgSWYgbm8gcGF0dGVybiBtYXRjaGVzIGEgZ2l2ZW4gcGF0aCwKK25vdGhpbmcgd2lsbCBiZSBvdXRwdXQgZm9yIHRoYXQgcGF0aDsgdGhpcyBtZWFucyB0aGF0IHBhdGggd2lsbCBub3QgYmUKK2lnbm9yZWQuCisKK0lmIGAtLXZlcmJvc2VgIGlzIHNwZWNpZmllZCwgdGhlIG91dHB1dCBpcyBhIHNlcmllcyBvZiBsaW5lcyBvZiB0aGUgZm9ybToKKworPHNvdXJjZT4gPENPTE9OPiA8bGluZW51bT4gPENPTE9OPiA8cGF0dGVybj4gPEhUPiA8cGF0aG5hbWU+CisKKzxwYXRobmFtZT4gaXMgdGhlIHBhdGggb2YgYSBmaWxlIGJlaW5nIHF1ZXJpZWQsIDxwYXR0ZXJuPiBpcyB0aGUKK21hdGNoaW5nIHBhdHRlcm4sIDxzb3VyY2U+IGlzIHRoZSBwYXR0ZXJuJ3Mgc291cmNlIGZpbGUsIGFuZCA8bGluZW51bT4KK2lzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgcGF0dGVybiB3aXRoaW4gdGhhdCBzb3VyY2UuICBJZiB0aGUgcGF0dGVybgorY29udGFpbmVkIGEgYCFgIHByZWZpeCBvciBgL2Agc3VmZml4LCBpdCB3aWxsIGJlIHByZXNlcnZlZCBpbiB0aGUKK291dHB1dC4gIDxzb3VyY2U+IHdpbGwgYmUgYW4gYWJzb2x1dGUgcGF0aCB3aGVuIHJlZmVycmluZyB0byB0aGUgZmlsZQorY29uZmlndXJlZCBieSBgY29yZS5leGNsdWRlc2ZpbGVgLCBvciByZWxhdGl2ZSB0byB0aGUgcmVwb3NpdG9yeSByb290Cit3aGVuIHJlZmVycmluZyB0byBgLmdpdC9pbmZvL2V4Y2x1ZGVgIG9yIGEgcGVyLWRpcmVjdG9yeSBleGNsdWRlIGZpbGUuCisKK0lmIGAtemAgaXMgc3BlY2lmaWVkLCB0aGUgcGF0aG5hbWVzIGluIHRoZSBvdXRwdXQgYXJlIGRlbGltaXRlZCBieSB0aGUKK251bGwgY2hhcmFjdGVyOyBpZiBgLS12ZXJib3NlYCBpcyBhbHNvIHNwZWNpZmllZCB0aGVuIG51bGwgY2hhcmFjdGVycworYXJlIGFsc28gdXNlZCBpbnN0ZWFkIG9mIGNvbG9ucyBhbmQgaGFyZCB0YWJzOgorCis8c291cmNlPiA8TlVMTD4gPGxpbmVudW0+IDxOVUxMPiA8cGF0dGVybj4gPE5VTEw+IDxwYXRobmFtZT4gPE5VTEw+CisKK0lmIGAtbmAgb3IgYC0tbm9uLW1hdGNoaW5nYCBhcmUgc3BlY2lmaWVkLCBub24tbWF0Y2hpbmcgcGF0aG5hbWVzIHdpbGwKK2Fsc28gYmUgb3V0cHV0LCBpbiB3aGljaCBjYXNlIGFsbCBmaWVsZHMgaW4gZWFjaCBvdXRwdXQgcmVjb3JkIGV4Y2VwdAorZm9yIDxwYXRobmFtZT4gd2lsbCBiZSBlbXB0eS4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHJ1bm5pbmcKK25vbi1pbnRlcmFjdGl2ZWx5LCBzbyB0aGF0IGZpbGVzIGNhbiBiZSBpbmNyZW1lbnRhbGx5IHN0cmVhbWVkIHRvCitTVERJTiBvZiBhIGxvbmctcnVubmluZyBjaGVjay1pZ25vcmUgcHJvY2VzcywgYW5kIGZvciBlYWNoIG9mIHRoZXNlCitmaWxlcywgU1RET1VUIHdpbGwgaW5kaWNhdGUgd2hldGhlciB0aGF0IGZpbGUgbWF0Y2hlZCBhIHBhdHRlcm4gb3IKK25vdC4gIChXaXRob3V0IHRoaXMgb3B0aW9uLCBpdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHRlbGwgd2hldGhlciB0aGUKK2Fic2VuY2Ugb2Ygb3V0cHV0IGZvciBhIGdpdmVuIGZpbGUgbWVhbnQgdGhhdCBpdCBkaWRuJ3QgbWF0Y2ggYW55CitwYXR0ZXJuLCBvciB0aGF0IHRoZSBvdXRwdXQgaGFkbid0IGJlZW4gZ2VuZXJhdGVkIHlldC4pCisKK0J1ZmZlcmluZyBoYXBwZW5zIGFzIGRvY3VtZW50ZWQgdW5kZXIgdGhlIGBHSVRfRkxVU0hgIG9wdGlvbiBpbgorbGlua2dpdDpnaXRbMV0uICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhdm9pZGluZyBkZWFkbG9ja3MKK2NhdXNlZCBieSBvdmVyZmlsbGluZyBhbiBpbnB1dCBidWZmZXIgb3IgcmVhZGluZyBmcm9tIGFuIGVtcHR5IG91dHB1dAorYnVmZmVyLgorCitFWElUIFNUQVRVUworLS0tLS0tLS0tLS0KKworMDo6CisJT25lIG9yIG1vcmUgb2YgdGhlIHByb3ZpZGVkIHBhdGhzIGlzIGlnbm9yZWQuCisKKzE6OgorCU5vbmUgb2YgdGhlIHByb3ZpZGVkIHBhdGhzIGFyZSBpZ25vcmVkLgorCisxMjg6OgorCUEgZmF0YWwgZXJyb3Igd2FzIGVuY291bnRlcmVkLgorCitTRUUgQUxTTworLS0tLS0tLS0KK2xpbmtnaXQ6Z2l0aWdub3JlWzVdCitsaW5rZ2l0OmdpdGNvbmZpZ1s1XQorbGlua2dpdDpnaXQtbHMtZmlsZXNbNV0KKworR0lUCistLS0KK1BhcnQgb2YgdGhlIGxpbmtnaXQ6Z2l0WzFdIHN1aXRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1yZWYtZm9ybWF0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLXJlZi1mb3JtYXQudHh0CmluZGV4IDk4MDA5ZDEuLmZjMDI5NTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLXJlZi1mb3JtYXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLXJlZi1mb3JtYXQudHh0CkBAIC0xOCwxNCArMTgsMTQgQEAKIENoZWNrcyBpZiBhIGdpdmVuICdyZWZuYW1lJyBpcyBhY2NlcHRhYmxlLCBhbmQgZXhpdHMgd2l0aCBhIG5vbi16ZXJvCiBzdGF0dXMgaWYgaXQgaXMgbm90LgogCi1BIHJlZmVyZW5jZSBpcyB1c2VkIGluIGdpdCB0byBzcGVjaWZ5IGJyYW5jaGVzIGFuZCB0YWdzLiAgQQorQSByZWZlcmVuY2UgaXMgdXNlZCBpbiBHaXQgdG8gc3BlY2lmeSBicmFuY2hlcyBhbmQgdGFncy4gIEEKIGJyYW5jaCBoZWFkIGlzIHN0b3JlZCBpbiB0aGUgYHJlZnMvaGVhZHNgIGhpZXJhcmNoeSwgd2hpbGUKIGEgdGFnIGlzIHN0b3JlZCBpbiB0aGUgYHJlZnMvdGFnc2AgaGllcmFyY2h5IG9mIHRoZSByZWYgbmFtZXNwYWNlCiAodHlwaWNhbGx5IGluIGAkR0lUX0RJUi9yZWZzL2hlYWRzYCBhbmQgYCRHSVRfRElSL3JlZnMvdGFnc2AKIGRpcmVjdG9yaWVzIG9yLCBhcyBlbnRyaWVzIGluIGZpbGUgYCRHSVRfRElSL3BhY2tlZC1yZWZzYAogaWYgcmVmcyBhcmUgcGFja2VkIGJ5IGBnaXQgZ2NgKS4KIAotZ2l0IGltcG9zZXMgdGhlIGZvbGxvd2luZyBydWxlcyBvbiBob3cgcmVmZXJlbmNlcyBhcmUgbmFtZWQ6CitHaXQgaW1wb3NlcyB0aGUgZm9sbG93aW5nIHJ1bGVzIG9uIGhvdyByZWZlcmVuY2VzIGFyZSBuYW1lZDoKIAogLiBUaGV5IGNhbiBpbmNsdWRlIHNsYXNoIGAvYCBmb3IgaGllcmFyY2hpY2FsIChkaXJlY3RvcnkpCiAgIGdyb3VwaW5nLCBidXQgbm8gc2xhc2gtc2VwYXJhdGVkIGNvbXBvbmVudCBjYW4gYmVnaW4gd2l0aCBhCkBAIC01NCw2ICs1NCw4IEBACiAKIC4gVGhleSBjYW5ub3QgY29udGFpbiBhIHNlcXVlbmNlIGBAe2AuCiAKKy4gVGhleSBjYW5ub3QgYmUgdGhlIHNpbmdsZSBjaGFyYWN0ZXIgYEBgLgorCiAuIFRoZXkgY2Fubm90IGNvbnRhaW4gYSBgXGAuCiAKIFRoZXNlIHJ1bGVzIG1ha2UgaXQgZWFzeSBmb3Igc2hlbGwgc2NyaXB0IGJhc2VkIHRvb2xzIHRvIHBhcnNlCkBAIC04Myw4ICs4NSw3IEBACiAKIE9QVElPTlMKIC0tLS0tLS0KLS0tYWxsb3ctb25lbGV2ZWw6OgotLS1uby1hbGxvdy1vbmVsZXZlbDo6CistLVtuby1dYWxsb3ctb25lbGV2ZWw6OgogCUNvbnRyb2xzIHdoZXRoZXIgb25lLWxldmVsIHJlZm5hbWVzIGFyZSBhY2NlcHRlZCAoaS5lLiwKIAlyZWZuYW1lcyB0aGF0IGRvIG5vdCBjb250YWluIG11bHRpcGxlIGAvYC1zZXBhcmF0ZWQKIAljb21wb25lbnRzKS4gIFRoZSBkZWZhdWx0IGlzIGAtLW5vLWFsbG93LW9uZWxldmVsYC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrb3V0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrb3V0LnR4dAppbmRleCA2ZjA0ZDIyLi5jYTExOGFjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVja291dC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2tvdXQudHh0CkBAIC0xMzEsOSArMTMxLDkgQEAKIAkiLS10cmFjayIgaW4gbGlua2dpdDpnaXQtYnJhbmNoWzFdIGZvciBkZXRhaWxzLgogKwogSWYgbm8gJy1iJyBvcHRpb24gaXMgZ2l2ZW4sIHRoZSBuYW1lIG9mIHRoZSBuZXcgYnJhbmNoIHdpbGwgYmUKLWRlcml2ZWQgZnJvbSB0aGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaC4gIElmICJyZW1vdGVzLyIgb3IgInJlZnMvcmVtb3Rlcy8iCi1pcyBwcmVmaXhlZCBpdCBpcyBzdHJpcHBlZCBhd2F5LCBhbmQgdGhlbiB0aGUgcGFydCB1cCB0byB0aGUKLW5leHQgc2xhc2ggKHdoaWNoIHdvdWxkIGJlIHRoZSBuaWNrbmFtZSBvZiB0aGUgcmVtb3RlKSBpcyByZW1vdmVkLgorZGVyaXZlZCBmcm9tIHRoZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoLCBieSBsb29raW5nIGF0IHRoZSBsb2NhbCBwYXJ0IG9mCit0aGUgcmVmc3BlYyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyByZW1vdGUsIGFuZCB0aGVuIHN0cmlwcGluZwordGhlIGluaXRpYWwgcGFydCB1cCB0byB0aGUgIioiLgogVGhpcyB3b3VsZCB0ZWxsIHVzIHRvIHVzZSAiaGFjayIgYXMgdGhlIGxvY2FsIGJyYW5jaCB3aGVuIGJyYW5jaGluZwogb2ZmIG9mICJvcmlnaW4vaGFjayIgKG9yICJyZW1vdGVzL29yaWdpbi9oYWNrIiwgb3IgZXZlbgogInJlZnMvcmVtb3Rlcy9vcmlnaW4vaGFjayIpLiAgSWYgdGhlIGdpdmVuIG5hbWUgaGFzIG5vIHNsYXNoLCBvciB0aGUgYWJvdmUKQEAgLTE4MCw2ICsxODAsMTIgQEAKIEFmdGVyd2FyZHMgeW91IHdpbGwgYmUgcmVhZHkgdG8gcHJlcGFyZSB5b3VyIG5ldyBmaWxlcywgcmVwb3B1bGF0aW5nIHRoZQogd29ya2luZyB0cmVlLCBieSBjb3B5aW5nIHRoZW0gZnJvbSBlbHNld2hlcmUsIGV4dHJhY3RpbmcgYSB0YXJiYWxsLCBldGMuCiAKKy0taWdub3JlLXNraXAtd29ya3RyZWUtYml0czo6CisJSW4gc3BhcnNlIGNoZWNrb3V0IG1vZGUsIGBnaXQgY2hlY2tvdXQgLS0gPHBhdGhzPmAgd291bGQKKwl1cGRhdGUgb25seSBlbnRyaWVzIG1hdGNoZWQgYnkgPHBhdGhzPiBhbmQgc3BhcnNlIHBhdHRlcm5zCisJaW4gJEdJVF9ESVIvaW5mby9zcGFyc2UtY2hlY2tvdXQuIFRoaXMgb3B0aW9uIGlnbm9yZXMKKwl0aGUgc3BhcnNlIHBhdHRlcm5zIGFuZCBhZGRzIGJhY2sgYW55IGZpbGVzIGluIDxwYXRocz4uCisKIC1tOjoKIC0tbWVyZ2U6OgogCVdoZW4gc3dpdGNoaW5nIGJyYW5jaGVzLApAQCAtMzMzLDcgKzMzOSw3IEBACiAgIHRhZyAndjIuMCcgKHJlZmVycyB0byBjb21taXQgJ2InKQogLS0tLS0tLS0tLS0tCiAKLUluIGZhY3QsIHdlIGNhbiBwZXJmb3JtIGFsbCB0aGUgbm9ybWFsIGdpdCBvcGVyYXRpb25zLiBCdXQsIGxldCdzIGxvb2sKK0luIGZhY3QsIHdlIGNhbiBwZXJmb3JtIGFsbCB0aGUgbm9ybWFsIEdpdCBvcGVyYXRpb25zLiBCdXQsIGxldCdzIGxvb2sKIGF0IHdoYXQgaGFwcGVucyB3aGVuIHdlIHRoZW4gY2hlY2tvdXQgbWFzdGVyOgogCiAtLS0tLS0tLS0tLS0KQEAgLTM1MCw3ICszNTYsNyBAQAogCiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVhbGl6ZSB0aGF0IGF0IHRoaXMgcG9pbnQgbm90aGluZyByZWZlcnMgdG8gY29tbWl0CiAnZicuIEV2ZW50dWFsbHkgY29tbWl0ICdmJyAoYW5kIGJ5IGV4dGVuc2lvbiBjb21taXQgJ2UnKSB3aWxsIGJlIGRlbGV0ZWQKLWJ5IHRoZSByb3V0aW5lIGdpdCBnYXJiYWdlIGNvbGxlY3Rpb24gcHJvY2VzcywgdW5sZXNzIHdlIGNyZWF0ZSBhIHJlZmVyZW5jZQorYnkgdGhlIHJvdXRpbmUgR2l0IGdhcmJhZ2UgY29sbGVjdGlvbiBwcm9jZXNzLCB1bmxlc3Mgd2UgY3JlYXRlIGEgcmVmZXJlbmNlCiBiZWZvcmUgdGhhdCBoYXBwZW5zLiBJZiB3ZSBoYXZlIG5vdCB5ZXQgbW92ZWQgYXdheSBmcm9tIGNvbW1pdCAnZicsCiBhbnkgb2YgdGhlc2Ugd2lsbCBjcmVhdGUgYSByZWZlcmVuY2UgdG8gaXQ6CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNsZWFuLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNsZWFuLnR4dAppbmRleCA5ZjQyYzBkLi5iZGMzYWI4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jbGVhbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2xlYW4udHh0CkBAIC0xNiw3ICsxNiw3IEBACiBDbGVhbnMgdGhlIHdvcmtpbmcgdHJlZSBieSByZWN1cnNpdmVseSByZW1vdmluZyBmaWxlcyB0aGF0IGFyZSBub3QKIHVuZGVyIHZlcnNpb24gY29udHJvbCwgc3RhcnRpbmcgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAKLU5vcm1hbGx5LCBvbmx5IGZpbGVzIHVua25vd24gdG8gZ2l0IGFyZSByZW1vdmVkLCBidXQgaWYgdGhlICcteCcKK05vcm1hbGx5LCBvbmx5IGZpbGVzIHVua25vd24gdG8gR2l0IGFyZSByZW1vdmVkLCBidXQgaWYgdGhlICcteCcKIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGlnbm9yZWQgZmlsZXMgYXJlIGFsc28gcmVtb3ZlZC4gVGhpcyBjYW4sIGZvcgogZXhhbXBsZSwgYmUgdXNlZnVsIHRvIHJlbW92ZSBhbGwgYnVpbGQgcHJvZHVjdHMuCiAKQEAgLTI3LDEzICsyNywxMyBAQAogLS0tLS0tLQogLWQ6OgogCVJlbW92ZSB1bnRyYWNrZWQgZGlyZWN0b3JpZXMgaW4gYWRkaXRpb24gdG8gdW50cmFja2VkIGZpbGVzLgotCUlmIGFuIHVudHJhY2tlZCBkaXJlY3RvcnkgaXMgbWFuYWdlZCBieSBhIGRpZmZlcmVudCBnaXQKKwlJZiBhbiB1bnRyYWNrZWQgZGlyZWN0b3J5IGlzIG1hbmFnZWQgYnkgYSBkaWZmZXJlbnQgR2l0CiAJcmVwb3NpdG9yeSwgaXQgaXMgbm90IHJlbW92ZWQgYnkgZGVmYXVsdC4gIFVzZSAtZiBvcHRpb24gdHdpY2UKIAlpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHN1Y2ggYSBkaXJlY3RvcnkuCiAKIC1mOjoKIC0tZm9yY2U6OgotCUlmIHRoZSBnaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjbGVhbi5yZXF1aXJlRm9yY2UgaXMgbm90IHNldAorCUlmIHRoZSBHaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjbGVhbi5yZXF1aXJlRm9yY2UgaXMgbm90IHNldAogCXRvIGZhbHNlLCAnZ2l0IGNsZWFuJyB3aWxsIHJlZnVzZSB0byBydW4gdW5sZXNzIGdpdmVuIC1mIG9yIC1uLgogCiAtbjo6CkBAIC02MCw3ICs2MCw3IEBACiAJd29ya2luZyBkaXJlY3RvcnkgdG8gdGVzdCBhIGNsZWFuIGJ1aWxkLgogCiAtWDo6Ci0JUmVtb3ZlIG9ubHkgZmlsZXMgaWdub3JlZCBieSBnaXQuICBUaGlzIG1heSBiZSB1c2VmdWwgdG8gcmVidWlsZAorCVJlbW92ZSBvbmx5IGZpbGVzIGlnbm9yZWQgYnkgR2l0LiAgVGhpcyBtYXkgYmUgdXNlZnVsIHRvIHJlYnVpbGQKIAlldmVyeXRoaW5nIGZyb20gc2NyYXRjaCwgYnV0IGtlZXAgbWFudWFsbHkgY3JlYXRlZCBmaWxlcy4KIAogU0VFIEFMU08KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dAppbmRleCA3ZmVmZGIwLi5hMDcyN2Q3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2xvbmUudHh0CkBAIC0xNCw3ICsxNCw3IEBACiAJICBbLW8gPG5hbWU+XSBbLWIgPG5hbWU+XSBbLXUgPHVwbG9hZC1wYWNrPl0gWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0KIAkgIFstLXNlcGFyYXRlLWdpdC1kaXIgPGdpdCBkaXI+XQogCSAgWy0tZGVwdGggPGRlcHRoPl0gWy0tW25vLV1zaW5nbGUtYnJhbmNoXQotCSAgWy0tcmVjdXJzaXZlfC0tcmVjdXJzZS1zdWJtb2R1bGVzXSBbLS1dIDxyZXBvc2l0b3J5PgorCSAgWy0tcmVjdXJzaXZlIHwgLS1yZWN1cnNlLXN1Ym1vZHVsZXNdIFstLV0gPHJlcG9zaXRvcnk+CiAJICBbPGRpcmVjdG9yeT5dCiAKIERFU0NSSVBUSU9OCkBAIC00Myw3ICs0Myw3IEBACiAtLWxvY2FsOjoKIC1sOjoKIAlXaGVuIHRoZSByZXBvc2l0b3J5IHRvIGNsb25lIGZyb20gaXMgb24gYSBsb2NhbCBtYWNoaW5lLAotCXRoaXMgZmxhZyBieXBhc3NlcyB0aGUgbm9ybWFsICJnaXQgYXdhcmUiIHRyYW5zcG9ydAorCXRoaXMgZmxhZyBieXBhc3NlcyB0aGUgbm9ybWFsICJHaXQgYXdhcmUiIHRyYW5zcG9ydAogCW1lY2hhbmlzbSBhbmQgY2xvbmVzIHRoZSByZXBvc2l0b3J5IGJ5IG1ha2luZyBhIGNvcHkgb2YKIAlIRUFEIGFuZCBldmVyeXRoaW5nIHVuZGVyIG9iamVjdHMgYW5kIHJlZnMgZGlyZWN0b3JpZXMuCiAJVGhlIGZpbGVzIHVuZGVyIGAuZ2l0L29iamVjdHMvYCBkaXJlY3RvcnkgYXJlIGhhcmRsaW5rZWQKQEAgLTU0LDExICs1NCwxMSBAQAogcmVwb3NpdG9yeSBpcyBzcGVjaWZpZWQgYXMgYSBVUkwsIHRoZW4gdGhpcyBmbGFnIGlzIGlnbm9yZWQgKGFuZCB3ZQogbmV2ZXIgdXNlIHRoZSBsb2NhbCBvcHRpbWl6YXRpb25zKS4gIFNwZWNpZnlpbmcgYC0tbm8tbG9jYWxgIHdpbGwKIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHdoZW4gYC9wYXRoL3RvL3JlcG9gIGlzIGdpdmVuLCB1c2luZyB0aGUgcmVndWxhcgotZ2l0IHRyYW5zcG9ydCBpbnN0ZWFkLgorR2l0IHRyYW5zcG9ydCBpbnN0ZWFkLgogKwogVG8gZm9yY2UgY29weWluZyBpbnN0ZWFkIG9mIGhhcmRsaW5raW5nICh3aGljaCBtYXkgYmUgZGVzaXJhYmxlIGlmIHlvdQogYXJlIHRyeWluZyB0byBtYWtlIGEgYmFjay11cCBvZiB5b3VyIHJlcG9zaXRvcnkpLCBidXQgc3RpbGwgYXZvaWQgdGhlCi11c3VhbCAiZ2l0IGF3YXJlIiB0cmFuc3BvcnQgbWVjaGFuaXNtLCBgLS1uby1oYXJkbGlua3NgIGNhbiBiZSB1c2VkLgordXN1YWwgIkdpdCBhd2FyZSIgdHJhbnNwb3J0IG1lY2hhbmlzbSwgYC0tbm8taGFyZGxpbmtzYCBjYW4gYmUgdXNlZC4KIAogLS1uby1oYXJkbGlua3M6OgogCU9wdGltaXplIHRoZSBjbG9uaW5nIHByb2Nlc3MgZnJvbSBhIHJlcG9zaXRvcnkgb24gYQpAQCAtNzYsOSArNzYsOSBAQAogKk5PVEUqOiB0aGlzIGlzIGEgcG9zc2libHkgZGFuZ2Vyb3VzIG9wZXJhdGlvbjsgZG8gKm5vdCogdXNlCiBpdCB1bmxlc3MgeW91IHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzLiBJZiB5b3UgY2xvbmUgeW91cgogcmVwb3NpdG9yeSB1c2luZyB0aGlzIG9wdGlvbiBhbmQgdGhlbiBkZWxldGUgYnJhbmNoZXMgKG9yIHVzZSBhbnkKLW90aGVyIGdpdCBjb21tYW5kIHRoYXQgbWFrZXMgYW55IGV4aXN0aW5nIGNvbW1pdCB1bnJlZmVyZW5jZWQpIGluIHRoZQorb3RoZXIgR2l0IGNvbW1hbmQgdGhhdCBtYWtlcyBhbnkgZXhpc3RpbmcgY29tbWl0IHVucmVmZXJlbmNlZCkgaW4gdGhlCiBzb3VyY2UgcmVwb3NpdG9yeSwgc29tZSBvYmplY3RzIG1heSBiZWNvbWUgdW5yZWZlcmVuY2VkIChvciBkYW5nbGluZykuCi1UaGVzZSBvYmplY3RzIG1heSBiZSByZW1vdmVkIGJ5IG5vcm1hbCBnaXQgb3BlcmF0aW9ucyAoc3VjaCBhcyBgZ2l0IGNvbW1pdGApCitUaGVzZSBvYmplY3RzIG1heSBiZSByZW1vdmVkIGJ5IG5vcm1hbCBHaXQgb3BlcmF0aW9ucyAoc3VjaCBhcyBgZ2l0IGNvbW1pdGApCiB3aGljaCBhdXRvbWF0aWNhbGx5IGNhbGwgYGdpdCBnYyAtLWF1dG9gLiAoU2VlIGxpbmtnaXQ6Z2l0LWdjWzFdLikKIElmIHRoZXNlIG9iamVjdHMgYXJlIHJlbW92ZWQgYW5kIHdlcmUgcmVmZXJlbmNlZCBieSB0aGUgY2xvbmVkIHJlcG9zaXRvcnksCiB0aGVuIHRoZSBjbG9uZWQgcmVwb3NpdG9yeSB3aWxsIGJlY29tZSBjb3JydXB0LgpAQCAtMTI1LDcgKzEyNSw3IEBACiAJTm8gY2hlY2tvdXQgb2YgSEVBRCBpcyBwZXJmb3JtZWQgYWZ0ZXIgdGhlIGNsb25lIGlzIGNvbXBsZXRlLgogCiAtLWJhcmU6OgotCU1ha2UgYSAnYmFyZScgR0lUIHJlcG9zaXRvcnkuICBUaGF0IGlzLCBpbnN0ZWFkIG9mCisJTWFrZSBhICdiYXJlJyBHaXQgcmVwb3NpdG9yeS4gIFRoYXQgaXMsIGluc3RlYWQgb2YKIAljcmVhdGluZyBgPGRpcmVjdG9yeT5gIGFuZCBwbGFjaW5nIHRoZSBhZG1pbmlzdHJhdGl2ZQogCWZpbGVzIGluIGA8ZGlyZWN0b3J5Pi8uZ2l0YCwgbWFrZSB0aGUgYDxkaXJlY3Rvcnk+YAogCWl0c2VsZiB0aGUgYCRHSVRfRElSYC4gVGhpcyBvYnZpb3VzbHkgaW1wbGllcyB0aGUgYC1uYApAQCAtMTg4LDcgKzE4OCw3IEBACiAJd2l0aCBhIGxvbmcgaGlzdG9yeSwgYW5kIHdvdWxkIHdhbnQgdG8gc2VuZCBpbiBmaXhlcwogCWFzIHBhdGNoZXMuCiAKLS0tc2luZ2xlLWJyYW5jaDo6CistLVtuby1dc2luZ2xlLWJyYW5jaDo6CiAJQ2xvbmUgb25seSB0aGUgaGlzdG9yeSBsZWFkaW5nIHRvIHRoZSB0aXAgb2YgYSBzaW5nbGUgYnJhbmNoLAogCWVpdGhlciBzcGVjaWZpZWQgYnkgdGhlIGAtLWJyYW5jaGAgb3B0aW9uIG9yIHRoZSBwcmltYXJ5CiAJYnJhbmNoIHJlbW90ZSdzIGBIRUFEYCBwb2ludHMgYXQuIFdoZW4gY3JlYXRpbmcgYSBzaGFsbG93CkBAIC0yMTMsOCArMjEzLDggQEAKIC0tc2VwYXJhdGUtZ2l0LWRpcj08Z2l0IGRpcj46OgogCUluc3RlYWQgb2YgcGxhY2luZyB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgd2hlcmUgaXQgaXMgc3VwcG9zZWQKIAl0byBiZSwgcGxhY2UgdGhlIGNsb25lZCByZXBvc2l0b3J5IGF0IHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LAotCXRoZW4gbWFrZSBhIGZpbGVzeXRlbS1hZ25vc3RpYyBnaXQgc3ltYm9saWMgbGluayB0byB0aGVyZS4KLQlUaGUgcmVzdWx0IGlzIGdpdCByZXBvc2l0b3J5IGNhbiBiZSBzZXBhcmF0ZWQgZnJvbSB3b3JraW5nCisJdGhlbiBtYWtlIGEgZmlsZXN5dGVtLWFnbm9zdGljIEdpdCBzeW1ib2xpYyBsaW5rIHRvIHRoZXJlLgorCVRoZSByZXN1bHQgaXMgR2l0IHJlcG9zaXRvcnkgY2FuIGJlIHNlcGFyYXRlZCBmcm9tIHdvcmtpbmcKIAl0cmVlLgogCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC10cmVlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC10cmVlLnR4dAppbmRleCBhMjIxMTY5Li5jYWZkYzk2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jb21taXQtdHJlZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LXRyZWUudHh0CkBAIC0xMCw3ICsxMCw5IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBjb21taXQtdHJlZScgPHRyZWU+IFsoLXAgPHBhcmVudD4pLi4uXSA8IGNoYW5nZWxvZwotJ2dpdCBjb21taXQtdHJlZScgWygtcCA8cGFyZW50PikuLi5dIFsoLW0gPG1lc3NhZ2U+KS4uLl0gWygtRiA8ZmlsZT4pLi4uXSA8dHJlZT4KKydnaXQgY29tbWl0LXRyZWUnIFsoLXAgPHBhcmVudD4pLi4uXSBbLVNbPGtleWlkPl1dIFsoLW0gPG1lc3NhZ2U+KS4uLl0KKwkJICBbKC1GIDxmaWxlPikuLi5dIDx0cmVlPgorCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMzAsNyArMzIsNyBAQAogZGlyZWN0b3J5LCBhIGNvbW1pdCByZXByZXNlbnRzIHRoYXQgc3RhdGUgaW4gInRpbWUiLCBhbmQgZXhwbGFpbnMgaG93CiB0byBnZXQgdGhlcmUuCiAKLU5vcm1hbGx5IGEgY29tbWl0IHdvdWxkIGlkZW50aWZ5IGEgbmV3ICJIRUFEIiBzdGF0ZSwgYW5kIHdoaWxlIGdpdAorTm9ybWFsbHkgYSBjb21taXQgd291bGQgaWRlbnRpZnkgYSBuZXcgIkhFQUQiIHN0YXRlLCBhbmQgd2hpbGUgR2l0CiBkb2Vzbid0IGNhcmUgd2hlcmUgeW91IHNhdmUgdGhlIG5vdGUgYWJvdXQgdGhhdCBzdGF0ZSwgaW4gcHJhY3RpY2Ugd2UKIHRlbmQgdG8ganVzdCB3cml0ZSB0aGUgcmVzdWx0IHRvIHRoZSBmaWxlIHRoYXQgaXMgcG9pbnRlZCBhdCBieQogYC5naXQvSEVBRGAsIHNvIHRoYXQgd2UgY2FuIGFsd2F5cyBzZWUgd2hhdCB0aGUgbGFzdCBjb21taXR0ZWQKQEAgLTUyLDYgKzU0LDkgQEAKIAlSZWFkIHRoZSBjb21taXQgbG9nIG1lc3NhZ2UgZnJvbSB0aGUgZ2l2ZW4gZmlsZS4gVXNlIGAtYCB0byByZWFkCiAJZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQuCiAKKy1TWzxrZXlpZD5dOjoKKwlHUEctc2lnbiBjb21taXQuCisKIAogQ29tbWl0IEluZm9ybWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb21taXQudHh0CmluZGV4IDIxMDU2MzguLjFhNzYxNmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbW1pdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29tbWl0LnR4dApAQCAtMTIsNyArMTIsNyBAQAogCSAgIFstLWRyeS1ydW5dIFsoLWMgfCAtQyB8IC0tZml4dXAgfCAtLXNxdWFzaCkgPGNvbW1pdD5dCiAJICAgWy1GIDxmaWxlPiB8IC1tIDxtc2c+XSBbLS1yZXNldC1hdXRob3JdIFstLWFsbG93LWVtcHR5XQogCSAgIFstLWFsbG93LWVtcHR5LW1lc3NhZ2VdIFstLW5vLXZlcmlmeV0gWy1lXSBbLS1hdXRob3I9PGF1dGhvcj5dCi0JICAgWy0tZGF0ZT08ZGF0ZT5dIFstLWNsZWFudXA9PG1vZGU+XSBbLS1zdGF0dXMgfCAtLW5vLXN0YXR1c10KKwkgICBbLS1kYXRlPTxkYXRlPl0gWy0tY2xlYW51cD08bW9kZT5dIFstLVtuby1dc3RhdHVzXQogCSAgIFstaSB8IC1vXSBbLVNbPGtleWlkPl1dIFstLV0gWzxmaWxlPi4uLl0KIAogREVTQ1JJUFRJT04KQEAgLTMyLDcgKzMyLDcgQEAKIDMuIGJ5IGxpc3RpbmcgZmlsZXMgYXMgYXJndW1lbnRzIHRvIHRoZSAnY29tbWl0JyBjb21tYW5kLCBpbiB3aGljaAogICAgY2FzZSB0aGUgY29tbWl0IHdpbGwgaWdub3JlIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleCwgYW5kIGluc3RlYWQKICAgIHJlY29yZCB0aGUgY3VycmVudCBjb250ZW50IG9mIHRoZSBsaXN0ZWQgZmlsZXMgKHdoaWNoIG11c3QgYWxyZWFkeQotICAgYmUga25vd24gdG8gZ2l0KTsKKyAgIGJlIGtub3duIHRvIEdpdCk7CiAKIDQuIGJ5IHVzaW5nIHRoZSAtYSBzd2l0Y2ggd2l0aCB0aGUgJ2NvbW1pdCcgY29tbWFuZCB0byBhdXRvbWF0aWNhbGx5CiAgICAiYWRkIiBjaGFuZ2VzIGZyb20gYWxsIGtub3duIGZpbGVzIChpLmUuIGFsbCBmaWxlcyB0aGF0IGFyZSBhbHJlYWR5CkBAIC01OSw3ICs1OSw3IEBACiAtLWFsbDo6CiAJVGVsbCB0aGUgY29tbWFuZCB0byBhdXRvbWF0aWNhbGx5IHN0YWdlIGZpbGVzIHRoYXQgaGF2ZQogCWJlZW4gbW9kaWZpZWQgYW5kIGRlbGV0ZWQsIGJ1dCBuZXcgZmlsZXMgeW91IGhhdmUgbm90Ci0JdG9sZCBnaXQgYWJvdXQgYXJlIG5vdCBhZmZlY3RlZC4KKwl0b2xkIEdpdCBhYm91dCBhcmUgbm90IGFmZmVjdGVkLgogCiAtcDo6CiAtLXBhdGNoOjoKQEAgLTE3NCwyMCArMTc0LDMxIEBACiAgICAgICAgbGlua2dpdDpnaXQtY29tbWl0LXRyZWVbMV0uCiAKIC0tY2xlYW51cD08bW9kZT46OgotCVRoaXMgb3B0aW9uIHNldHMgaG93IHRoZSBjb21taXQgbWVzc2FnZSBpcyBjbGVhbmVkIHVwLgotCVRoZSAgJzxtb2RlPicgY2FuIGJlIG9uZSBvZiAndmVyYmF0aW0nLCAnd2hpdGVzcGFjZScsICdzdHJpcCcsCi0JYW5kICdkZWZhdWx0Jy4gVGhlICdkZWZhdWx0JyBtb2RlIHdpbGwgc3RyaXAgbGVhZGluZyBhbmQKLQl0cmFpbGluZyBlbXB0eSBsaW5lcyBhbmQgI2NvbW1lbnRhcnkgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2UKLQlvbmx5IGlmIHRoZSBtZXNzYWdlIGlzIHRvIGJlIGVkaXRlZC4gT3RoZXJ3aXNlIG9ubHkgd2hpdGVzcGFjZQotCXJlbW92ZWQuIFRoZSAndmVyYmF0aW0nIG1vZGUgZG9lcyBub3QgY2hhbmdlIG1lc3NhZ2UgYXQgYWxsLAotCSd3aGl0ZXNwYWNlJyByZW1vdmVzIGp1c3QgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGxpbmVzCi0JYW5kICdzdHJpcCcgcmVtb3ZlcyBib3RoIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRhcnkuCisJVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyBob3cgdGhlIHN1cHBsaWVkIGNvbW1pdCBtZXNzYWdlIHNob3VsZCBiZQorCWNsZWFuZWQgdXAgYmVmb3JlIGNvbW1pdHRpbmcuICBUaGUgJzxtb2RlPicgY2FuIGJlIGBzdHJpcGAsCisJYHdoaXRlc3BhY2VgLCBgdmVyYmF0aW1gLCBvciBgZGVmYXVsdGAuCisrCistLQorc3RyaXA6OgorCVN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGVtcHR5IGxpbmVzLCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBhbmQKKwkjY29tbWVudGFyeSBhbmQgY29sbGFwc2UgY29uc2VjdXRpdmUgZW1wdHkgbGluZXMuCit3aGl0ZXNwYWNlOjoKKwlTYW1lIGFzIGBzdHJpcGAgZXhjZXB0ICNjb21tZW50YXJ5IGlzIG5vdCByZW1vdmVkLgordmVyYmF0aW06OgorCURvIG5vdCBjaGFuZ2UgdGhlIG1lc3NhZ2UgYXQgYWxsLgorZGVmYXVsdDo6CisJU2FtZSBhcyBgc3RyaXBgIGlmIHRoZSBtZXNzYWdlIGlzIHRvIGJlIGVkaXRlZC4KKwlPdGhlcndpc2UgYHdoaXRlc3BhY2VgLgorLS0KKysKK1RoZSBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSAnY29tbWl0LmNsZWFudXAnIGNvbmZpZ3VyYXRpb24KK3ZhcmlhYmxlIChzZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdKS4KIAogLWU6OgogLS1lZGl0OjoKIAlUaGUgbWVzc2FnZSB0YWtlbiBmcm9tIGZpbGUgd2l0aCBgLUZgLCBjb21tYW5kIGxpbmUgd2l0aAotCWAtbWAsIGFuZCBmcm9tIGZpbGUgd2l0aCBgLUNgIGFyZSB1c3VhbGx5IHVzZWQgYXMgdGhlCi0JY29tbWl0IGxvZyBtZXNzYWdlIHVubW9kaWZpZWQuICBUaGlzIG9wdGlvbiBsZXRzIHlvdQorCWAtbWAsIGFuZCBmcm9tIGNvbW1pdCBvYmplY3Qgd2l0aCBgLUNgIGFyZSB1c3VhbGx5IHVzZWQgYXMKKwl0aGUgY29tbWl0IGxvZyBtZXNzYWdlIHVubW9kaWZpZWQuIFRoaXMgb3B0aW9uIGxldHMgeW91CiAJZnVydGhlciBlZGl0IHRoZSBtZXNzYWdlIHRha2VuIGZyb20gdGhlc2Ugc291cmNlcy4KIAogLS1uby1lZGl0OjoKQEAgLTE5NiwxNCArMjA3LDE1IEBACiAJd2l0aG91dCBjaGFuZ2luZyBpdHMgY29tbWl0IG1lc3NhZ2UuCiAKIC0tYW1lbmQ6OgotCVVzZWQgdG8gYW1lbmQgdGhlIHRpcCBvZiB0aGUgY3VycmVudCBicmFuY2guIFByZXBhcmUgdGhlIHRyZWUKLQlvYmplY3QgeW91IHdvdWxkIHdhbnQgdG8gcmVwbGFjZSB0aGUgbGF0ZXN0IGNvbW1pdCBhcyB1c3VhbAotCSh0aGlzIGluY2x1ZGVzIHRoZSB1c3VhbCAtaS8tbyBhbmQgZXhwbGljaXQgcGF0aHMpLCBhbmQgdGhlCi0JY29tbWl0IGxvZyBlZGl0b3IgaXMgc2VlZGVkIHdpdGggdGhlIGNvbW1pdCBtZXNzYWdlIGZyb20gdGhlCi0JdGlwIG9mIHRoZSBjdXJyZW50IGJyYW5jaC4gVGhlIGNvbW1pdCB5b3UgY3JlYXRlIHJlcGxhY2VzIHRoZQotCWN1cnJlbnQgdGlwIC0tIGlmIGl0IHdhcyBhIG1lcmdlLCBpdCB3aWxsIGhhdmUgdGhlIHBhcmVudHMgb2YKLQl0aGUgY3VycmVudCB0aXAgYXMgcGFyZW50cyAtLSBzbyB0aGUgY3VycmVudCB0b3AgY29tbWl0IGlzCi0JZGlzY2FyZGVkLgorCVJlcGxhY2UgdGhlIHRpcCBvZiB0aGUgY3VycmVudCBicmFuY2ggYnkgY3JlYXRpbmcgYSBuZXcKKwljb21taXQuIFRoZSByZWNvcmRlZCB0cmVlIGlzIHByZXBhcmVkIGFzIHVzdWFsIChpbmNsdWRpbmcKKwl0aGUgZWZmZWN0IG9mIHRoZSBgLWlgIGFuZCBgLW9gIG9wdGlvbnMgYW5kIGV4cGxpY2l0CisJcGF0aHNwZWMpLCBhbmQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgb3JpZ2luYWwgY29tbWl0IGlzIHVzZWQKKwlhcyB0aGUgc3RhcnRpbmcgcG9pbnQsIGluc3RlYWQgb2YgYW4gZW1wdHkgbWVzc2FnZSwgd2hlbiBubworCW90aGVyIG1lc3NhZ2UgaXMgc3BlY2lmaWVkIGZyb20gdGhlIGNvbW1hbmQgbGluZSB2aWEgb3B0aW9ucworCXN1Y2ggYXMgYC1tYCwgYC1GYCwgYC1jYCwgZXRjLiAgVGhlIG5ldyBjb21taXQgaGFzIHRoZSBzYW1lCisJcGFyZW50cyBhbmQgYXV0aG9yIGFzIHRoZSBjdXJyZW50IG9uZSAodGhlIGAtLXJlc2V0LWF1dGhvcmAKKwlvcHRpb24gY2FuIGNvdW50ZXJtYW5kIHRoaXMpLgogKwogLS0KIEl0IGlzIGEgcm91Z2ggZXF1aXZhbGVudCBmb3I6CkBAIC00MDQsNyArNDE2LDcgQEAKIHdpdGggYSBzaW5nbGUgc2hvcnQgKGxlc3MgdGhhbiA1MCBjaGFyYWN0ZXIpIGxpbmUgc3VtbWFyaXppbmcgdGhlCiBjaGFuZ2UsIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgdGhlbiBhIG1vcmUgdGhvcm91Z2ggZGVzY3JpcHRpb24uCiBUaGUgdGV4dCB1cCB0byB0aGUgZmlyc3QgYmxhbmsgbGluZSBpbiBhIGNvbW1pdCBtZXNzYWdlIGlzIHRyZWF0ZWQKLWFzIHRoZSBjb21taXQgdGl0bGUsIGFuZCB0aGF0IHRpdGxlIGlzIHVzZWQgdGhyb3VnaG91dCBnaXQuCithcyB0aGUgY29tbWl0IHRpdGxlLCBhbmQgdGhhdCB0aXRsZSBpcyB1c2VkIHRocm91Z2hvdXQgR2l0LgogRm9yIGV4YW1wbGUsIGxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXSB0dXJucyBhIGNvbW1pdCBpbnRvIGVtYWlsLCBhbmQgaXQgdXNlcwogdGhlIHRpdGxlIG9uIHRoZSBTdWJqZWN0IGxpbmUgYW5kIHRoZSByZXN0IG9mIHRoZSBjb21taXQgaW4gdGhlIGJvZHkuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb25maWcudHh0CmluZGV4IDlhZTI1MDguLjE5YTdiZTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvbmZpZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY29uZmlnLnR4dApAQCAtMTE0LDYgKzExNCwxNSBAQAogKwogU2VlIGFsc28gPDxGSUxFUz4+LgogCistLWxvY2FsOjoKKwlGb3Igd3JpdGluZyBvcHRpb25zOiB3cml0ZSB0byB0aGUgcmVwb3NpdG9yeSAuZ2l0L2NvbmZpZyBmaWxlLgorCVRoaXMgaXMJdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisrCitGb3IgcmVhZGluZyBvcHRpb25zOiByZWFkIG9ubHkgZnJvbSB0aGUgcmVwb3NpdG9yeSAuZ2l0L2NvbmZpZyByYXRoZXIgdGhhbgorZnJvbSBhbGwgYXZhaWxhYmxlIGZpbGVzLgorKworU2VlIGFsc28gPDxGSUxFUz4+LgorCiAtZiBjb25maWctZmlsZTo6CiAtLWZpbGUgY29uZmlnLWZpbGU6OgogCVVzZSB0aGUgZ2l2ZW4gY29uZmlnIGZpbGUgaW5zdGVhZCBvZiB0aGUgb25lIHNwZWNpZmllZCBieSBHSVRfQ09ORklHLgpAQCAtMTg2LDggKzE5NSw3IEBACiAJT3BlbnMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgc3BlY2lmaWVkIGNvbmZpZyBmaWxlOyBlaXRoZXIKIAknLS1zeXN0ZW0nLCAnLS1nbG9iYWwnLCBvciByZXBvc2l0b3J5IChkZWZhdWx0KS4KIAotLS1pbmNsdWRlczo6Ci0tLW5vLWluY2x1ZGVzOjoKKy0tW25vLV1pbmNsdWRlczo6CiAJUmVzcGVjdCBgaW5jbHVkZS4qYCBkaXJlY3RpdmVzIGluIGNvbmZpZyBmaWxlcyB3aGVuIGxvb2tpbmcgdXAKIAl2YWx1ZXMuIERlZmF1bHRzIHRvIG9uLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jb3VudC1vYmplY3RzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0CmluZGV4IDIzYzgwY2UuLmIzMDBlODQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNvdW50LW9iamVjdHMudHh0CkBAIC04LDcgKzgsNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IGNvdW50LW9iamVjdHMnIFstdl0KKydnaXQgY291bnQtb2JqZWN0cycgWy12XSBbLUggfCAtLWh1bWFuLXJlYWRhYmxlXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTIwLDExICsyMCwyOSBAQAogLS0tLS0tLQogLXY6OgogLS12ZXJib3NlOjoKLQlJbiBhZGRpdGlvbiB0byB0aGUgbnVtYmVyIG9mIGxvb3NlIG9iamVjdHMgYW5kIGRpc2sKLQlzcGFjZSBjb25zdW1lZCwgaXQgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGluLXBhY2sKLQlvYmplY3RzLCBudW1iZXIgb2YgcGFja3MsIGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgdGhvc2UgcGFja3MsCi0JYW5kIG51bWJlciBvZiBvYmplY3RzIHRoYXQgY2FuIGJlIHJlbW92ZWQgYnkgcnVubmluZwotCWBnaXQgcHJ1bmUtcGFja2VkYC4KKwlSZXBvcnQgaW4gbW9yZSBkZXRhaWw6CisrCitjb3VudDogdGhlIG51bWJlciBvZiBsb29zZSBvYmplY3RzCisrCitzaXplOiBkaXNrIHNwYWNlIGNvbnN1bWVkIGJ5IGxvb3NlIG9iamVjdHMsIGluIEtpQiAodW5sZXNzIC1IIGlzIHNwZWNpZmllZCkKKysKK2luLXBhY2s6IHRoZSBudW1iZXIgb2YgaW4tcGFjayBvYmplY3RzCisrCitzaXplLXBhY2s6IGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHBhY2tzLCBpbiBLaUIgKHVubGVzcyAtSCBpcyBzcGVjaWZpZWQpCisrCitwcnVuZS1wYWNrYWJsZTogdGhlIG51bWJlciBvZiBsb29zZSBvYmplY3RzIHRoYXQgYXJlIGFsc28gcHJlc2VudCBpbgordGhlIHBhY2tzLiBUaGVzZSBvYmplY3RzIGNvdWxkIGJlIHBydW5lZCB1c2luZyBgZ2l0IHBydW5lLXBhY2tlZGAuCisrCitnYXJiYWdlOiB0aGUgbnVtYmVyIG9mIGZpbGVzIGluIG9iamVjdCBkYXRhYmFzZSB0aGF0IGFyZSBub3QgdmFsaWQKK2xvb3NlIG9iamVjdHMgbm9yIHZhbGlkIHBhY2tzCisrCitzaXplLWdhcmJhZ2U6IGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgZ2FyYmFnZSBmaWxlcywgaW4gS2lCICh1bmxlc3MgLUggaXMKK3NwZWNpZmllZCkKKworLUg6OgorLS1odW1hbi1yZWFkYWJsZTo6CisKK1ByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdAogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1jYWNoZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLWNhY2hlLnR4dAppbmRleCBlZWZmNWZhLi44OWI3MzA2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLWNhY2hlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLWNhY2hlLnR4dApAQCAtMTQsMTMgKzE0LDEzIEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIAotVGhpcyBjb21tYW5kIGNhY2hlcyBjcmVkZW50aWFscyBpbiBtZW1vcnkgZm9yIHVzZSBieSBmdXR1cmUgZ2l0CitUaGlzIGNvbW1hbmQgY2FjaGVzIGNyZWRlbnRpYWxzIGluIG1lbW9yeSBmb3IgdXNlIGJ5IGZ1dHVyZSBHaXQKIHByb2dyYW1zLiBUaGUgc3RvcmVkIGNyZWRlbnRpYWxzIG5ldmVyIHRvdWNoIHRoZSBkaXNrLCBhbmQgYXJlIGZvcmdvdHRlbgogYWZ0ZXIgYSBjb25maWd1cmFibGUgdGltZW91dC4gIFRoZSBjYWNoZSBpcyBhY2Nlc3NpYmxlIG92ZXIgYSBVbml4CiBkb21haW4gc29ja2V0LCByZXN0cmljdGVkIHRvIHRoZSBjdXJyZW50IHVzZXIgYnkgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucy4KIAogWW91IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gaW52b2tlIHRoaXMgY29tbWFuZCBkaXJlY3RseTsgaXQgaXMgbWVhbnQgdG8KLWJlIHVzZWQgYXMgYSBjcmVkZW50aWFsIGhlbHBlciBieSBvdGhlciBwYXJ0cyBvZiBnaXQuIFNlZQorYmUgdXNlZCBhcyBhIGNyZWRlbnRpYWwgaGVscGVyIGJ5IG90aGVyIHBhcnRzIG9mIEdpdC4gU2VlCiBsaW5rZ2l0OmdpdGNyZWRlbnRpYWxzWzddIG9yIGBFWEFNUExFU2AgYmVsb3cuCiAKIE9QVElPTlMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNyZWRlbnRpYWwtc3RvcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1zdG9yZS50eHQKaW5kZXggYjI3YzAzYy4uODQ4MWNhZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1zdG9yZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC1zdG9yZS50eHQKQEAgLTIwLDcgKzIwLDcgQEAKIHRoYXQgaW50ZWdyYXRlcyB3aXRoIHNlY3VyZSBzdG9yYWdlIHByb3ZpZGVkIGJ5IHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KIAogVGhpcyBjb21tYW5kIHN0b3JlcyBjcmVkZW50aWFscyBpbmRlZmluaXRlbHkgb24gZGlzayBmb3IgdXNlIGJ5IGZ1dHVyZQotZ2l0IHByb2dyYW1zLgorR2l0IHByb2dyYW1zLgogCiBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBpbnZva2UgdGhpcyBjb21tYW5kIGRpcmVjdGx5OyBpdCBpcyBtZWFudCB0bwogYmUgdXNlZCBhcyBhIGNyZWRlbnRpYWwgaGVscGVyIGJ5IG90aGVyIHBhcnRzIG9mIGdpdC4gU2VlCkBAIC02MywxMSArNjMsMTEgQEAKIGh0dHBzOi8vdXNlcjpwYXNzQGV4YW1wbGUuY29tCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiBnaXQgbmVlZHMgYXV0aGVudGljYXRpb24gZm9yIGEgcGFydGljdWxhciBVUkwgY29udGV4dCwKK1doZW4gR2l0IG5lZWRzIGF1dGhlbnRpY2F0aW9uIGZvciBhIHBhcnRpY3VsYXIgVVJMIGNvbnRleHQsCiBjcmVkZW50aWFsLXN0b3JlIHdpbGwgY29uc2lkZXIgdGhhdCBjb250ZXh0IGEgcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0CiBlYWNoIGVudHJ5IGluIHRoZSBjcmVkZW50aWFscyBmaWxlLiAgSWYgdGhlIHByb3RvY29sLCBob3N0bmFtZSwgYW5kCiB1c2VybmFtZSAoaWYgd2UgYWxyZWFkeSBoYXZlIG9uZSkgbWF0Y2gsIHRoZW4gdGhlIHBhc3N3b3JkIGlzIHJldHVybmVkCi10byBnaXQuIFNlZSB0aGUgZGlzY3Vzc2lvbiBvZiBjb25maWd1cmF0aW9uIGluIGxpbmtnaXQ6Z2l0Y3JlZGVudGlhbHNbN10KK3RvIEdpdC4gU2VlIHRoZSBkaXNjdXNzaW9uIG9mIGNvbmZpZ3VyYXRpb24gaW4gbGlua2dpdDpnaXRjcmVkZW50aWFsc1s3XQogZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3JlZGVudGlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLnR4dAppbmRleCA4MTBlOTU3Li43ZGEwZjEzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jcmVkZW50aWFsLnR4dApAQCAtMTgsOSArMTgsOSBAQAogZnJvbSBzeXN0ZW0tc3BlY2lmaWMgaGVscGVycywgYXMgd2VsbCBhcyBwcm9tcHRpbmcgdGhlIHVzZXIgZm9yCiB1c2VybmFtZXMgYW5kIHBhc3N3b3Jkcy4gVGhlIGdpdC1jcmVkZW50aWFsIGNvbW1hbmQgZXhwb3NlcyB0aGlzCiBpbnRlcmZhY2UgdG8gc2NyaXB0cyB3aGljaCBtYXkgd2FudCB0byByZXRyaWV2ZSwgc3RvcmUsIG9yIHByb21wdCBmb3IKLWNyZWRlbnRpYWxzIGluIHRoZSBzYW1lIG1hbm5lciBhcyBnaXQuIFRoZSBkZXNpZ24gb2YgdGhpcyBzY3JpcHRhYmxlCitjcmVkZW50aWFscyBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgR2l0LiBUaGUgZGVzaWduIG9mIHRoaXMgc2NyaXB0YWJsZQogaW50ZXJmYWNlIG1vZGVscyB0aGUgaW50ZXJuYWwgQyBBUEk7IHNlZQotbGluazp0ZWNobmljYWwvYXBpLWNyZWRlbnRpYWxzLnR4dFt0aGUgZ2l0IGNyZWRlbnRpYWwgQVBJXSBmb3IgbW9yZQorbGluazp0ZWNobmljYWwvYXBpLWNyZWRlbnRpYWxzLnR4dFt0aGUgR2l0IGNyZWRlbnRpYWwgQVBJXSBmb3IgbW9yZQogYmFja2dyb3VuZCBvbiB0aGUgY29uY2VwdHMuCiAKIGdpdC1jcmVkZW50aWFsIHRha2VzIGFuICJhY3Rpb24iIG9wdGlvbiBvbiB0aGUgY29tbWFuZC1saW5lIChvbmUgb2YKQEAgLTU2LDcgKzU2LDcgQEAKIGBodHRwczovL2V4YW1wbGUuY29tL2Zvby5naXRgLCB3ZSBtaWdodCBnZW5lcmF0ZSB0aGUgZm9sbG93aW5nCiBjcmVkZW50aWFsIGRlc2NyaXB0aW9uIChkb24ndCBmb3JnZXQgdGhlIGJsYW5rIGxpbmUgYXQgdGhlIGVuZDsgaXQKIHRlbGxzIGBnaXQgY3JlZGVudGlhbGAgdGhhdCB0aGUgYXBwbGljYXRpb24gZmluaXNoZWQgZmVlZGluZyBhbGwgdGhlCi1pbmZvbWF0aW9uIGl0IGhhcyk6CitpbmZvcm1hdGlvbiBpdCBoYXMpOgogCiAJIHByb3RvY29sPWh0dHBzCiAJIGhvc3Q9ZXhhbXBsZS5jb20KQEAgLTc0LDcgKzc0LDcgQEAKIAlwYXNzd29yZD1zZWNyM3QKICsKIEluIG1vc3QgY2FzZXMsIHRoaXMgbWVhbnMgdGhlIGF0dHJpYnV0ZXMgZ2l2ZW4gaW4gdGhlIGlucHV0IHdpbGwgYmUKLXJlcGVhdGVkIGluIHRoZSBvdXRwdXQsIGJ1dCBnaXQgbWF5IGFsc28gbW9kaWZ5IHRoZSBjcmVkZW50aWFsCityZXBlYXRlZCBpbiB0aGUgb3V0cHV0LCBidXQgR2l0IG1heSBhbHNvIG1vZGlmeSB0aGUgY3JlZGVudGlhbAogZGVzY3JpcHRpb24sIGZvciBleGFtcGxlIGJ5IHJlbW92aW5nIHRoZSBgcGF0aGAgYXR0cmlidXRlIHdoZW4gdGhlCiBwcm90b2NvbCBpcyBIVFRQKHMpIGFuZCBgY3JlZGVudGlhbC51c2VIdHRwUGF0aGAgaXMgZmFsc2UuCiArCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jdnNleHBvcnRjb21taXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY3ZzZXhwb3J0Y29tbWl0LnR4dAppbmRleCA3Zjc5Y2VjLi4wMDE1NGI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jdnNleHBvcnRjb21taXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWN2c2V4cG9ydGNvbW1pdC50eHQKQEAgLTE1LDggKzE1LDggQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1FeHBvcnRzIGEgY29tbWl0IGZyb20gR0lUIHRvIGEgQ1ZTIGNoZWNrb3V0LCBtYWtpbmcgaXQgZWFzaWVyCi10byBtZXJnZSBwYXRjaGVzIGZyb20gYSBnaXQgcmVwb3NpdG9yeSBpbnRvIGEgQ1ZTIHJlcG9zaXRvcnkuCitFeHBvcnRzIGEgY29tbWl0IGZyb20gR2l0IHRvIGEgQ1ZTIGNoZWNrb3V0LCBtYWtpbmcgaXQgZWFzaWVyCit0byBtZXJnZSBwYXRjaGVzIGZyb20gYSBHaXQgcmVwb3NpdG9yeSBpbnRvIGEgQ1ZTIHJlcG9zaXRvcnkuCiAKIFNwZWNpZnkgdGhlIG5hbWUgb2YgYSBDVlMgY2hlY2tvdXQgdXNpbmcgdGhlIC13IHN3aXRjaCBvciBleGVjdXRlIGl0CiBmcm9tIHRoZSByb290IG9mIHRoZSBDVlMgd29ya2luZyBjb3B5LiBJbiB0aGUgbGF0dGVyIGNhc2UgR0lUX0RJUiBtdXN0CkBAIC03MSw3ICs3MSw3IEBACiAtdzo6CiAJU3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIENWUyBjaGVja291dCB0byB1c2UgZm9yIHRoZSBleHBvcnQuIFRoaXMKIAlvcHRpb24gZG9lcyBub3QgcmVxdWlyZSBHSVRfRElSIHRvIGJlIHNldCBiZWZvcmUgZXhlY3V0aW9uIGlmIHRoZQotCWN1cnJlbnQgZGlyZWN0b3J5IGlzIHdpdGhpbiBhIGdpdCByZXBvc2l0b3J5LiAgVGhlIGRlZmF1bHQgaXMgdGhlCisJY3VycmVudCBkaXJlY3RvcnkgaXMgd2l0aGluIGEgR2l0IHJlcG9zaXRvcnkuICBUaGUgZGVmYXVsdCBpcyB0aGUKIAl2YWx1ZSBvZiAnY3ZzZXhwb3J0Y29tbWl0LmN2c2RpcicuCiAKIC1XOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWN2c2ltcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jdnNpbXBvcnQudHh0CmluZGV4IGYwNTllYTkuLmQxYmNkYTIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWN2c2ltcG9ydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY3ZzaW1wb3J0LnR4dApAQCAtMjQsNyArMjQsNyBAQAogbGluazpodHRwOi8vY3ZzMnN2bi50aWdyaXMub3JnL2N2czJnaXQuaHRtbFtjdnMyZ2l0XSBvcgogbGluazpodHRwczovL2dpdGh1Yi5jb20vQmFydE1hc3NleS9wYXJzZWN2c1twYXJzZWN2c10uCiAKLUltcG9ydHMgYSBDVlMgcmVwb3NpdG9yeSBpbnRvIGdpdC4gSXQgd2lsbCBlaXRoZXIgY3JlYXRlIGEgbmV3CitJbXBvcnRzIGEgQ1ZTIHJlcG9zaXRvcnkgaW50byBHaXQuIEl0IHdpbGwgZWl0aGVyIGNyZWF0ZSBhIG5ldwogcmVwb3NpdG9yeSwgb3IgaW5jcmVtZW50YWxseSBpbXBvcnQgaW50byBhbiBleGlzdGluZyBvbmUuCiAKIFNwbGl0dGluZyB0aGUgQ1ZTIGxvZyBpbnRvIHBhdGNoIHNldHMgaXMgZG9uZSBieSAnY3ZzcHMnLgpAQCAtNjUsMTggKzY1LDE4IEBACiAJYENWUy9SZXBvc2l0b3J5YC4KIAogLUMgPHRhcmdldC1kaXI+OjoKLSAgICAgICAgVGhlIGdpdCByZXBvc2l0b3J5IHRvIGltcG9ydCB0by4gIElmIHRoZSBkaXJlY3RvcnkgZG9lc24ndAorCVRoZSBHaXQgcmVwb3NpdG9yeSB0byBpbXBvcnQgdG8uICBJZiB0aGUgZGlyZWN0b3J5IGRvZXNuJ3QKICAgICAgICAgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC4gIERlZmF1bHQgaXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogCiAtciA8cmVtb3RlPjo6Ci0JVGhlIGdpdCByZW1vdGUgdG8gaW1wb3J0IHRoaXMgQ1ZTIHJlcG9zaXRvcnkgaW50by4KKwlUaGUgR2l0IHJlbW90ZSB0byBpbXBvcnQgdGhpcyBDVlMgcmVwb3NpdG9yeSBpbnRvLgogCU1vdmVzIGFsbCBDVlMgYnJhbmNoZXMgaW50byByZW1vdGVzLzxyZW1vdGU+LzxicmFuY2g+CiAJYWtpbiB0byB0aGUgd2F5ICdnaXQgY2xvbmUnIHVzZXMgJ29yaWdpbicgYnkgZGVmYXVsdC4KIAogLW8gPGJyYW5jaC1mb3ItSEVBRD46OgogCVdoZW4gbm8gcmVtb3RlIGlzIHNwZWNpZmllZCAodmlhIC1yKSB0aGUgJ0hFQUQnIGJyYW5jaAotCWZyb20gQ1ZTIGlzIGltcG9ydGVkIHRvIHRoZSAnb3JpZ2luJyBicmFuY2ggd2l0aGluIHRoZSBnaXQKLQlyZXBvc2l0b3J5LCBhcyAnSEVBRCcgYWxyZWFkeSBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgZm9yIGdpdC4KKwlmcm9tIENWUyBpcyBpbXBvcnRlZCB0byB0aGUgJ29yaWdpbicgYnJhbmNoIHdpdGhpbiB0aGUgR2l0CisJcmVwb3NpdG9yeSwgYXMgJ0hFQUQnIGFscmVhZHkgaGFzIGEgc3BlY2lhbCBtZWFuaW5nIGZvciBHaXQuCiAJV2hlbiBhIHJlbW90ZSBpcyBzcGVjaWZpZWQgdGhlICdIRUFEJyBicmFuY2ggaXMgbmFtZWQKIAlyZW1vdGVzLzxyZW1vdGU+L21hc3RlciBtaXJyb3JpbmcgJ2dpdCBjbG9uZScgYmVoYXZpb3VyLgogCVVzZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBpbXBvcnQgaW50byBhIGRpZmZlcmVudApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY3Zzc2VydmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWN2c3NlcnZlci50eHQKaW5kZXggODhkODE0YS4uNDcyZjVjYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY3Zzc2VydmVyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jdnNzZXJ2ZXIudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtY3Zzc2VydmVyIC0gQSBDVlMgc2VydmVyIGVtdWxhdG9yIGZvciBnaXQKK2dpdC1jdnNzZXJ2ZXIgLSBBIENWUyBzZXJ2ZXIgZW11bGF0b3IgZm9yIEdpdAogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTYwLDcgKzYwLDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1UaGlzIGFwcGxpY2F0aW9uIGlzIGEgQ1ZTIGVtdWxhdGlvbiBsYXllciBmb3IgZ2l0LgorVGhpcyBhcHBsaWNhdGlvbiBpcyBhIENWUyBlbXVsYXRpb24gbGF5ZXIgZm9yIEdpdC4KIAogSXQgaXMgaGlnaGx5IGZ1bmN0aW9uYWwuIEhvd2V2ZXIsIG5vdCBhbGwgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQsCiBhbmQgZm9yIHRob3NlIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQsCkBAIC03Miw5ICs3Miw5IEBACiBMSU1JVEFUSU9OUwogLS0tLS0tLS0tLS0KIAotQ1ZTIGNsaWVudHMgY2Fubm90IHRhZywgYnJhbmNoIG9yIHBlcmZvcm0gR0lUIG1lcmdlcy4KK0NWUyBjbGllbnRzIGNhbm5vdCB0YWcsIGJyYW5jaCBvciBwZXJmb3JtIEdpdCBtZXJnZXMuCiAKLSdnaXQtY3Zzc2VydmVyJyBtYXBzIEdJVCBicmFuY2hlcyB0byBDVlMgbW9kdWxlcy4gVGhpcyBpcyB2ZXJ5IGRpZmZlcmVudAorJ2dpdC1jdnNzZXJ2ZXInIG1hcHMgR2l0IGJyYW5jaGVzIHRvIENWUyBtb2R1bGVzLiBUaGlzIGlzIHZlcnkgZGlmZmVyZW50CiBmcm9tIHdoYXQgbW9zdCBDVlMgdXNlcnMgd291bGQgZXhwZWN0IHNpbmNlIGluIENWUyBtb2R1bGVzIHVzdWFsbHkgcmVwcmVzZW50CiBvbmUgb3IgbW9yZSBkaXJlY3Rvcmllcy4KIApAQCAtMTMwLDcgKzEzMCw3IEBACiAtLS0tLS0KICAgIGN2cyAtZDpwc2VydmVyOnNvbWV1c2VyOnNvbWVwYXNzd29yZCA8YXQ+IHNlcnZlci9wYXRoL3JlcG8uZ2l0IGNvIDxIRUFEX25hbWU+CiAtLS0tLS0KLU5vIHNwZWNpYWwgc2V0dXAgaXMgbmVlZGVkIGZvciBTU0ggYWNjZXNzLCBvdGhlciB0aGFuIGhhdmluZyBHSVQgdG9vbHMKK05vIHNwZWNpYWwgc2V0dXAgaXMgbmVlZGVkIGZvciBTU0ggYWNjZXNzLCBvdGhlciB0aGFuIGhhdmluZyBHaXQgdG9vbHMKIGluIHRoZSBQQVRILiBJZiB5b3UgaGF2ZSBjbGllbnRzIHRoYXQgZG8gbm90IGFjY2VwdCB0aGUgQ1ZTX1NFUlZFUgogZW52aXJvbm1lbnQgdmFyaWFibGUsIHlvdSBjYW4gcmVuYW1lICdnaXQtY3Zzc2VydmVyJyB0byBgY3ZzYC4KIApAQCAtMTYwLDkgKzE2MCw5IEBACiBOb3RlOiB5b3UgbmVlZCB0byBlbnN1cmUgZWFjaCB1c2VyIHRoYXQgaXMgZ29pbmcgdG8gaW52b2tlICdnaXQtY3Zzc2VydmVyJyBoYXMKIHdyaXRlIGFjY2VzcyB0byB0aGUgbG9nIGZpbGUgYW5kIHRvIHRoZSBkYXRhYmFzZSAoc2VlCiA8PGRiYmFja2VuZCxEYXRhYmFzZSBCYWNrZW5kPj4uIElmIHlvdSB3YW50IHRvIG9mZmVyIHdyaXRlIGFjY2VzcyBvdmVyCi1TU0gsIHRoZSB1c2VycyBvZiBjb3Vyc2UgYWxzbyBuZWVkIHdyaXRlIGFjY2VzcyB0byB0aGUgZ2l0IHJlcG9zaXRvcnkgaXRzZWxmLgorU1NILCB0aGUgdXNlcnMgb2YgY291cnNlIGFsc28gbmVlZCB3cml0ZSBhY2Nlc3MgdG8gdGhlIEdpdCByZXBvc2l0b3J5IGl0c2VsZi4KIAotWW91IGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCBlYWNoIHJlcG9zaXRvcnkgaXMgImJhcmUiICh3aXRob3V0IGEgZ2l0IGluZGV4CitZb3UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IGVhY2ggcmVwb3NpdG9yeSBpcyAiYmFyZSIgKHdpdGhvdXQgYSBHaXQgaW5kZXgKIGZpbGUpIGZvciBgY3ZzIGNvbW1pdGAgdG8gd29yay4gU2VlIGxpbmtnaXQ6Z2l0Y3ZzLW1pZ3JhdGlvbls3XS4KIAogW1tjb25maWdhY2Nlc3NtZXRob2RdXQpAQCAtMTgxLDcgKzE4MSw3IEBACiAzLiBJZiB5b3UgZGlkbid0IHNwZWNpZnkgdGhlIENWU1JPT1QvQ1ZTX1NFUlZFUiBkaXJlY3RseSBpbiB0aGUgY2hlY2tvdXQgY29tbWFuZCwKICAgIGF1dG9tYXRpY2FsbHkgc2F2aW5nIGl0IGluIHlvdXIgJ0NWUy9Sb290JyBmaWxlcywgdGhlbiB5b3UgbmVlZCB0byBzZXQgdGhlbQogICAgZXhwbGljaXRseSBpbiB5b3VyIGVudmlyb25tZW50LiAgQ1ZTUk9PVCBzaG91bGQgYmUgc2V0IGFzIHBlciBub3JtYWwsIGJ1dCB0aGUKLSAgIGRpcmVjdG9yeSBzaG91bGQgcG9pbnQgYXQgdGhlIGFwcHJvcHJpYXRlIGdpdCByZXBvLiAgQXMgYWJvdmUsIGZvciBTU0ggY2xpZW50cworICAgZGlyZWN0b3J5IHNob3VsZCBwb2ludCBhdCB0aGUgYXBwcm9wcmlhdGUgR2l0IHJlcG8uICBBcyBhYm92ZSwgZm9yIFNTSCBjbGllbnRzCiAgICBfbm90XyByZXN0cmljdGVkIHRvICdnaXQtc2hlbGwnLCBDVlNfU0VSVkVSIHNob3VsZCBiZSBzZXQgdG8gJ2dpdC1jdnNzZXJ2ZXInLgogKwogLS0KQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgc2hlbGwgaXMgYmFzaCwgLmJhc2hyYyBtYXkgYmUgYSByZWFzb25hYmxlIGFsdGVybmF0aXZlLgogCiA1LiBDbGllbnRzIHNob3VsZCBub3cgYmUgYWJsZSB0byBjaGVjayBvdXQgdGhlIHByb2plY3QuIFVzZSB0aGUgQ1ZTICdtb2R1bGUnCi0gICBuYW1lIHRvIGluZGljYXRlIHdoYXQgR0lUICdoZWFkJyB5b3Ugd2FudCB0byBjaGVjayBvdXQuICBUaGlzIGFsc28gc2V0cyB0aGUKKyAgIG5hbWUgdG8gaW5kaWNhdGUgd2hhdCBHaXQgJ2hlYWQnIHlvdSB3YW50IHRvIGNoZWNrIG91dC4gIFRoaXMgYWxzbyBzZXRzIHRoZQogICAgbmFtZSBvZiB5b3VyIG5ld2x5IGNoZWNrZWQtb3V0IGRpcmVjdG9yeSwgdW5sZXNzIHlvdSB0ZWxsIGl0IG90aGVyd2lzZSB3aXRoCiAgICBgLWQgPGRpcl9uYW1lPmAuICBGb3IgZXhhbXBsZSwgdGhpcyBjaGVja3Mgb3V0ICdtYXN0ZXInIGJyYW5jaCB0byB0aGUKICAgIGBwcm9qZWN0LW1hc3RlcmAgZGlyZWN0b3J5OgpAQCAtMjEwLDcgKzIxMCw3IEBACiBEYXRhYmFzZSBCYWNrZW5kCiAtLS0tLS0tLS0tLS0tLS0tCiAKLSdnaXQtY3Zzc2VydmVyJyB1c2VzIG9uZSBkYXRhYmFzZSBwZXIgZ2l0IGhlYWQgKGkuZS4gQ1ZTIG1vZHVsZSkgdG8KKydnaXQtY3Zzc2VydmVyJyB1c2VzIG9uZSBkYXRhYmFzZSBwZXIgR2l0IGhlYWQgKGkuZS4gQ1ZTIG1vZHVsZSkgdG8KIHN0b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBvc2l0b3J5IHRvIG1haW50YWluIGNvbnNpc3RlbnQKIENWUyByZXZpc2lvbiBudW1iZXJzLiBUaGUgZGF0YWJhc2UgbmVlZHMgdG8gYmUKIHVwZGF0ZWQgKGkuZS4gd3JpdHRlbiB0bykgYWZ0ZXIgZXZlcnkgY29tbWl0LgpAQCAtMjI1LDcgKzIyNSw3IEBACiB0aGUgZGF0YWJhc2UgdG8gd29yayByZWxpYWJseSAob3RoZXJ3aXNlIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZQogdGhhdCB0aGUgZGF0YWJhc2UgaXMgdXAtdG8tZGF0ZSBhbnkgdGltZSAnZ2l0LWN2c3NlcnZlcicgaXMgZXhlY3V0ZWQpLgogCi1CeSBkZWZhdWx0IGl0IHVzZXMgU1FMaXRlIGRhdGFiYXNlcyBpbiB0aGUgZ2l0IGRpcmVjdG9yeSwgbmFtZWQKK0J5IGRlZmF1bHQgaXQgdXNlcyBTUUxpdGUgZGF0YWJhc2VzIGluIHRoZSBHaXQgZGlyZWN0b3J5LCBuYW1lZAogYGdpdGN2cy48bW9kdWxlX25hbWU+LnNxbGl0ZWAuIE5vdGUgdGhhdCB0aGUgU1FMaXRlIGJhY2tlbmQgY3JlYXRlcwogdGVtcG9yYXJ5IGZpbGVzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgZGF0YWJhc2UgZmlsZSBvbgogd3JpdGUgc28gaXQgbWlnaHQgbm90IGJlIGVub3VnaCB0byBncmFudCB0aGUgdXNlcnMgdXNpbmcKQEAgLTI5MSwxNCArMjkxLDE0IEBACiBJbiBgZGJkcml2ZXJgIGFuZCBgZGJ1c2VyYCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKIAogJUc6OgotCWdpdCBkaXJlY3RvcnkgbmFtZQorCUdpdCBkaXJlY3RvcnkgbmFtZQogJWc6OgotCWdpdCBkaXJlY3RvcnkgbmFtZSwgd2hlcmUgYWxsIGNoYXJhY3RlcnMgZXhjZXB0IGZvcgorCUdpdCBkaXJlY3RvcnkgbmFtZSwgd2hlcmUgYWxsIGNoYXJhY3RlcnMgZXhjZXB0IGZvcgogCWFscGhhLW51bWVyaWMgb25lcywgYC5gLCBhbmQgYC1gIGFyZSByZXBsYWNlZCB3aXRoCiAJYF9gICh0aGlzIHNob3VsZCBtYWtlIGl0IGVhc2llciB0byB1c2UgdGhlIGRpcmVjdG9yeQogCW5hbWUgaW4gYSBmaWxlbmFtZSBpZiB3YW50ZWQpCiAlbTo6Ci0JQ1ZTIG1vZHVsZS9naXQgaGVhZCBuYW1lCisJQ1ZTIG1vZHVsZS9HaXQgaGVhZCBuYW1lCiAlYTo6CiAJYWNjZXNzIG1ldGhvZCAob25lIG9mICJleHQiIG9yICJwc2VydmVyIikKICV1OjoKQEAgLTM1OSw2ICszNTksNDMgQEAKIAogQWxsIHRoZSBvcGVyYXRpb25zIHJlcXVpcmVkIGZvciBub3JtYWwgdXNlIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZwogY2hlY2tvdXQsIGRpZmYsIHN0YXR1cywgdXBkYXRlLCBsb2csIGFkZCwgcmVtb3ZlLCBjb21taXQuCisKK01vc3QgQ1ZTIGNvbW1hbmQgYXJndW1lbnRzIHRoYXQgcmVhZCBDVlMgdGFncyBvciByZXZpc2lvbiBudW1iZXJzCisodHlwaWNhbGx5IC1yKSB3b3JrLCBhbmQgYWxzbyBzdXBwb3J0IGFueSBnaXQgcmVmc3BlYworKHRhZywgYnJhbmNoLCBjb21taXQgSUQsIGV0YykuCitIb3dldmVyLCBDVlMgcmV2aXNpb24gbnVtYmVycyBmb3Igbm9uLWRlZmF1bHQgYnJhbmNoZXMgYXJlIG5vdCB3ZWxsCitlbXVsYXRlZCwgYW5kIGN2cyBsb2cgZG9lcyBub3Qgc2hvdyB0YWdzIG9yIGJyYW5jaGVzIGF0CithbGwuICAoTm9uLW1haW4tYnJhbmNoIENWUyByZXZpc2lvbiBudW1iZXJzIHN1cGVyZmljaWFsbHkgcmVzZW1ibGUgQ1ZTCityZXZpc2lvbiBudW1iZXJzLCBidXQgdGhleSBhY3R1YWxseSBlbmNvZGUgYSBnaXQgY29tbWl0IElEIGRpcmVjdGx5LAorcmF0aGVyIHRoYW4gcmVwcmVzZW50IHRoZSBudW1iZXIgb2YgcmV2aXNpb25zIHNpbmNlIHRoZSBicmFuY2ggcG9pbnQuKQorCitOb3RlIHRoYXQgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGNoZWNrb3V0IGEgcGFydGljdWxhciBicmFuY2guCitBcyBkZXNjcmliZWQgZWxzZXdoZXJlIG9uIHRoaXMgcGFnZSwgdGhlICJtb2R1bGUiIHBhcmFtZXRlcgorb2YgY3ZzIGNoZWNrb3V0IGlzIGludGVycHJldGVkIGFzIGEgYnJhbmNoIG5hbWUsIGFuZCBpdCBiZWNvbWVzCit0aGUgbWFpbiBicmFuY2guICBJdCByZW1haW5zIHRoZSBtYWluIGJyYW5jaCBmb3IgYSBnaXZlbiBzYW5kYm94CitldmVuIGlmIHlvdSB0ZW1wb3JhcmlseSBtYWtlIGFub3RoZXIgYnJhbmNoIHN0aWNreSB3aXRoCitjdnMgdXBkYXRlIC1yLiAgQWx0ZXJuYXRpdmVseSwgdGhlIC1yIGFyZ3VtZW50IGNhbiBpbmRpY2F0ZQorc29tZSBvdGhlciBicmFuY2ggdG8gYWN0dWFsbHkgY2hlY2tvdXQsIGV2ZW4gdGhvdWdoIHRoZSBtb2R1bGUKK2lzIHN0aWxsIHRoZSAibWFpbiIgYnJhbmNoLiAgVHJhZGVvZmZzIChhcyBjdXJyZW50bHkKK2ltcGxlbWVudGVkKTogRWFjaCBuZXcgIm1vZHVsZSIgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSBvbiBkaXNrIHdpdGgKK2EgaGlzdG9yeSBmb3IgdGhlIGdpdmVuIG1vZHVsZSwgYW5kIGFmdGVyIHRoZSBkYXRhYmFzZSBpcyBjcmVhdGVkLAorb3BlcmF0aW9ucyBhZ2FpbnN0IHRoYXQgbWFpbiBicmFuY2ggYXJlIGZhc3QuICBPciBhbHRlcm5hdGl2ZWx5LAorLXIgZG9lc24ndCB0YWtlIGFueSBleHRyYSBkaXNrIHNwYWNlLCBidXQgbWF5IGJlIHNpZ25pZmljYW50bHkgc2xvd2VyIGZvcgorbWFueSBvcGVyYXRpb25zLCBsaWtlIGN2cyB1cGRhdGUuCisKK0lmIHlvdSB3YW50IHRvIHJlZmVyIHRvIGEgZ2l0IHJlZnNwZWMgdGhhdCBoYXMgY2hhcmFjdGVycyB0aGF0IGFyZQorbm90IGFsbG93ZWQgYnkgQ1ZTLCB5b3UgaGF2ZSB0d28gb3B0aW9ucy4gIEZpcnN0LCBpdCBtYXkganVzdCB3b3JrCit0byBzdXBwbHkgdGhlIGdpdCByZWZzcGVjIGRpcmVjdGx5IHRvIHRoZSBhcHByb3ByaWF0ZSBDVlMgLXIgYXJndW1lbnQ7Citzb21lIENWUyBjbGllbnRzIGRvbid0IHNlZW0gdG8gZG8gbXVjaCBzYW5pdHkgY2hlY2tpbmcgb2YgdGhlIGFyZ3VtZW50LgorU2Vjb25kLCBpZiB0aGF0IGZhaWxzLCB5b3UgY2FuIHVzZSBhIHNwZWNpYWwgY2hhcmFjdGVyIGVzY2FwZSBtZWNoYW5pc20KK3RoYXQgb25seSB1c2VzIGNoYXJhY3RlcnMgdGhhdCBhcmUgdmFsaWQgaW4gQ1ZTIHRhZ3MuICBBIHNlcXVlbmNlCitvZiA0IG9yIDUgY2hhcmFjdGVycyBvZiB0aGUgZm9ybSAodW5kZXJzY29yZSAoYCJfImApLCBkYXNoIChgIi0iYCksCitvbmUgb3IgdHdvIGNoYXJhY3RlcnMsIGFuZCBkYXNoIChgIi0iYCkpIGNhbiBlbmNvZGUgdmFyaW91cyBjaGFyYWN0ZXJzIGJhc2VkCitvbiB0aGUgb25lIG9yIHR3byBsZXR0ZXJzOiBgInMiYCBmb3Igc2xhc2ggKGAiLyJgKSwgYCJwImAgZm9yCitwZXJpb2QgKGAiLiJgKSwgYCJ1ImAgZm9yIHVuZGVyc2NvcmUgKGAiXyJgKSwgb3IgdHdvIGhleGFkZWNpbWFsIGRpZ2l0cworZm9yIGFueSBieXRlIHZhbHVlIGF0IGFsbCAodHlwaWNhbGx5IGFuIEFTQ0lJIG51bWJlciwgb3IgcGVyaGFwcyBhIHBhcnQKK29mIGEgVVRGLTggZW5jb2RlZCBjaGFyYWN0ZXIpLgorCiBMZWdhY3kgbW9uaXRvcmluZyBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIChlZGl0LCB3YXRjaCBhbmQgcmVsYXRlZCkuCiBFeHBvcnRzIGFuZCB0YWdnaW5nICh0YWdzIGFuZCBicmFuY2hlcykgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyBzdGFnZS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZGFlbW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRhZW1vbi50eHQKaW5kZXggN2U1MDk4YS4uMjIzZjczMSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGFlbW9uLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1kYWVtb24udHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtZGFlbW9uIC0gQSByZWFsbHkgc2ltcGxlIHNlcnZlciBmb3IgZ2l0IHJlcG9zaXRvcmllcworZ2l0LWRhZW1vbiAtIEEgcmVhbGx5IHNpbXBsZSBzZXJ2ZXIgZm9yIEdpdCByZXBvc2l0b3JpZXMKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xNiwxOCArMTYsMjAgQEAKIAkgICAgIFstLXJldXNlYWRkcl0gWy0tZGV0YWNoXSBbLS1waWQtZmlsZT08ZmlsZT5dCiAJICAgICBbLS1lbmFibGU9PHNlcnZpY2U+XSBbLS1kaXNhYmxlPTxzZXJ2aWNlPl0KIAkgICAgIFstLWFsbG93LW92ZXJyaWRlPTxzZXJ2aWNlPl0gWy0tZm9yYmlkLW92ZXJyaWRlPTxzZXJ2aWNlPl0KLQkgICAgIFstLWFjY2Vzcy1ob29rPTxwYXRoPl0KLQkgICAgIFstLWluZXRkIHwgWy0tbGlzdGVuPTxob3N0X29yX2lwYWRkcj5dIFstLXBvcnQ9PG4+XSBbLS11c2VyPTx1c2VyPiBbLS1ncm91cD08Z3JvdXA+XV0KKwkgICAgIFstLWFjY2Vzcy1ob29rPTxwYXRoPl0gWy0tW25vLV1pbmZvcm1hdGl2ZS1lcnJvcnNdCisJICAgICBbLS1pbmV0ZCB8CisJICAgICAgWy0tbGlzdGVuPTxob3N0X29yX2lwYWRkcj5dIFstLXBvcnQ9PG4+XQorCSAgICAgIFstLXVzZXI9PHVzZXI+IFstLWdyb3VwPTxncm91cD5dXV0KIAkgICAgIFs8ZGlyZWN0b3J5Pi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1BIHJlYWxseSBzaW1wbGUgVENQIGdpdCBkYWVtb24gdGhhdCBub3JtYWxseSBsaXN0ZW5zIG9uIHBvcnQgIkRFRkFVTFRfR0lUX1BPUlQiCitBIHJlYWxseSBzaW1wbGUgVENQIEdpdCBkYWVtb24gdGhhdCBub3JtYWxseSBsaXN0ZW5zIG9uIHBvcnQgIkRFRkFVTFRfR0lUX1BPUlQiCiBha2EgOTQxOC4gIEl0IHdhaXRzIGZvciBhIGNvbm5lY3Rpb24gYXNraW5nIGZvciBhIHNlcnZpY2UsIGFuZCB3aWxsIHNlcnZlCiB0aGF0IHNlcnZpY2UgaWYgaXQgaXMgZW5hYmxlZC4KIAogSXQgdmVyaWZpZXMgdGhhdCB0aGUgZGlyZWN0b3J5IGhhcyB0aGUgbWFnaWMgZmlsZSAiZ2l0LWRhZW1vbi1leHBvcnQtb2siLCBhbmQKLWl0IHdpbGwgcmVmdXNlIHRvIGV4cG9ydCBhbnkgZ2l0IGRpcmVjdG9yeSB0aGF0IGhhc24ndCBleHBsaWNpdGx5IGJlZW4gbWFya2VkCitpdCB3aWxsIHJlZnVzZSB0byBleHBvcnQgYW55IEdpdCBkaXJlY3RvcnkgdGhhdCBoYXNuJ3QgZXhwbGljaXRseSBiZWVuIG1hcmtlZAogZm9yIGV4cG9ydCB0aGlzIHdheSAodW5sZXNzIHRoZSAnLS1leHBvcnQtYWxsJyBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkKS4gSWYgeW91CiBwYXNzIHNvbWUgZGlyZWN0b3J5IHBhdGhzIGFzICdnaXQgZGFlbW9uJyBhcmd1bWVudHMsIHlvdSBjYW4gZnVydGhlciByZXN0cmljdAogdGhlIG9mZmVycyB0byBhIHdoaXRlbGlzdCBjb21wcmlzaW5nIG9mIHRob3NlLgpAQCAtMzcsNyArMzksNyBAQAogZnJvbSAnZ2l0IGZldGNoJywgJ2dpdCBwdWxsJywgYW5kICdnaXQgY2xvbmUnLgogCiBUaGlzIGlzIGlkZWFsbHkgc3VpdGVkIGZvciByZWFkLW9ubHkgdXBkYXRlcywgaS5lLiwgcHVsbGluZyBmcm9tCi1naXQgcmVwb3NpdG9yaWVzLgorR2l0IHJlcG9zaXRvcmllcy4KIAogQW4gYHVwbG9hZC1hcmNoaXZlYCBhbHNvIGV4aXN0cyB0byBzZXJ2ZSAnZ2l0IGFyY2hpdmUnLgogCkBAIC01MSw3ICs1Myw3IEBACiAKIC0tYmFzZS1wYXRoPTxwYXRoPjo6CiAJUmVtYXAgYWxsIHRoZSBwYXRoIHJlcXVlc3RzIGFzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBwYXRoLgotCVRoaXMgaXMgc29ydCBvZiAiR0lUIHJvb3QiIC0gaWYgeW91IHJ1biAnZ2l0IGRhZW1vbicgd2l0aAorCVRoaXMgaXMgc29ydCBvZiAiR2l0IHJvb3QiIC0gaWYgeW91IHJ1biAnZ2l0IGRhZW1vbicgd2l0aAogCSctLWJhc2UtcGF0aD0vc3J2L2dpdCcgb24gZXhhbXBsZS5jb20sIHRoZW4gaWYgeW91IGxhdGVyIHRyeSB0byBwdWxsCiAJJ2dpdDovL2V4YW1wbGUuY29tL2hlbGxvLmdpdCcsICdnaXQgZGFlbW9uJyB3aWxsIGludGVycHJldCB0aGUgcGF0aAogCWFzICcvc3J2L2dpdC9oZWxsby5naXQnLgpAQCAtNzMsNyArNzUsNyBAQAogCXdoaXRlbGlzdC4KIAogLS1leHBvcnQtYWxsOjoKLQlBbGxvdyBwdWxsaW5nIGZyb20gYWxsIGRpcmVjdG9yaWVzIHRoYXQgbG9vayBsaWtlIEdJVCByZXBvc2l0b3JpZXMKKwlBbGxvdyBwdWxsaW5nIGZyb20gYWxsIGRpcmVjdG9yaWVzIHRoYXQgbG9vayBsaWtlIEdpdCByZXBvc2l0b3JpZXMKIAkoaGF2ZSB0aGUgJ29iamVjdHMnIGFuZCAncmVmcycgc3ViZGlyZWN0b3JpZXMpLCBldmVuIGlmIHRoZXkKIAlkbyBub3QgaGF2ZSB0aGUgJ2dpdC1kYWVtb24tZXhwb3J0LW9rJyBmaWxlLgogCkBAIC0xNDcsNiArMTQ5LDEzIEBACiBHaXZpbmcgdGhlc2Ugb3B0aW9ucyBpcyBhbiBlcnJvciB3aGVuIHVzZWQgd2l0aCBgLS1pbmV0ZGA7IHVzZQogdGhlIGZhY2lsaXR5IG9mIGluZXQgZGFlbW9uIHRvIGFjaGlldmUgdGhlIHNhbWUgYmVmb3JlIHNwYXduaW5nCiAnZ2l0IGRhZW1vbicgaWYgbmVlZGVkLgorKworTGlrZSBtYW55IHByb2dyYW1zIHRoYXQgc3dpdGNoIHVzZXIgaWQsIHRoZSBkYWVtb24gZG9lcyBub3QgcmVzZXQKK2Vudmlyb25tZW50IHZhcmlhYmxlcyBzdWNoIGFzIGAkSE9NRWAgd2hlbiBpdCBydW5zIGdpdCBwcm9ncmFtcywKK2UuZy4gYHVwbG9hZC1wYWNrYCBhbmQgYHJlY2VpdmUtcGFja2AuIFdoZW4gdXNpbmcgdGhpcyBvcHRpb24sIHlvdQorbWF5IGFsc28gd2FudCB0byBzZXQgYW5kIGV4cG9ydCBgSE9NRWAgdG8gcG9pbnQgYXQgdGhlIGhvbWUKK2RpcmVjdG9yeSBvZiBgPHVzZXI+YCBiZWZvcmUgc3RhcnRpbmcgdGhlIGRhZW1vbiwgYW5kIG1ha2Ugc3VyZSBhbnkKK0dpdCBjb25maWd1cmF0aW9uIGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5IGFyZSByZWFkYWJsZSBieSBgPHVzZXI+YC4KIAogLS1lbmFibGU9PHNlcnZpY2U+OjoKIC0tZGlzYWJsZT08c2VydmljZT46OgpAQCAtMTYyLDggKzE3MSw3IEBACiAJcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRoZSBzZXJ2aWNlcwogCWFyZSBvdmVycmlkYWJsZS4KIAotLS1pbmZvcm1hdGl2ZS1lcnJvcnM6OgotLS1uby1pbmZvcm1hdGl2ZS1lcnJvcnM6OgorLS1bbm8tXWluZm9ybWF0aXZlLWVycm9yczo6CiAJV2hlbiBpbmZvcm1hdGl2ZSBlcnJvcnMgYXJlIHR1cm5lZCBvbiwgZ2l0LWRhZW1vbiB3aWxsIHJlcG9ydAogCW1vcmUgdmVyYm9zZSBlcnJvcnMgdG8gdGhlIGNsaWVudCwgZGlmZmVyZW50aWF0aW5nIGNvbmRpdGlvbnMKIAlsaWtlICJubyBzdWNoIHJlcG9zaXRvcnkiIGZyb20gInJlcG9zaXRvcnkgbm90IGV4cG9ydGVkIi4gVGhpcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0CmluZGV4IDcxMTA0MGQuLjk0MzljZDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1kZXNjcmliZS50eHQKQEAgLTg4LDYgKzg4LDExIEBACiAtLWFsd2F5czo6CiAJU2hvdyB1bmlxdWVseSBhYmJyZXZpYXRlZCBjb21taXQgb2JqZWN0IGFzIGZhbGxiYWNrLgogCistLWZpcnN0LXBhcmVudDo6CisJRm9sbG93IG9ubHkgdGhlIGZpcnN0IHBhcmVudCBjb21taXQgdXBvbiBzZWVpbmcgYSBtZXJnZSBjb21taXQuCisJVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2lzaCB0byBub3QgbWF0Y2ggdGFncyBvbiBicmFuY2hlcyBtZXJnZWQKKwlpbiB0aGUgaGlzdG9yeSBvZiB0aGUgdGFyZ2V0IGNvbW1pdC4KKwogRVhBTVBMRVMKIC0tLS0tLS0tCiAKQEAgLTEzMiw3ICsxMzcsNyBAQAogCiBOb3RlIHRoYXQgdGhlIHN1ZmZpeCB5b3UgZ2V0IGlmIHlvdSB0eXBlIHRoZXNlIGNvbW1hbmRzIHRvZGF5IG1heSBiZQogbG9uZ2VyIHRoYW4gd2hhdCBMaW51cyBzYXcgYWJvdmUgd2hlbiBoZSByYW4gdGhlc2UgY29tbWFuZHMsIGFzIHlvdXIKLWdpdCByZXBvc2l0b3J5IG1heSBoYXZlIG5ldyBjb21taXRzIHdob3NlIG9iamVjdCBuYW1lcyBiZWdpbiB3aXRoCitHaXQgcmVwb3NpdG9yeSBtYXkgaGF2ZSBuZXcgY29tbWl0cyB3aG9zZSBvYmplY3QgbmFtZXMgYmVnaW4gd2l0aAogOTc1YiB0aGF0IGRpZCBub3QgZXhpc3QgYmFjayB0aGVuLCBhbmQgIi1nOTc1YiIgc3VmZml4IGFsb25lIG1heSBub3QKIGJlIHN1ZmZpY2llbnQgdG8gZGlzYW1iaWd1YXRlIHRoZXNlIGNvbW1pdHMuCiAKQEAgLTE0OSw3ICsxNTQsOSBAQAogSWYgYW4gZXhhY3QgbWF0Y2ggd2FzIG5vdCBmb3VuZCwgJ2dpdCBkZXNjcmliZScgd2lsbCB3YWxrIGJhY2sKIHRocm91Z2ggdGhlIGNvbW1pdCBoaXN0b3J5IHRvIGxvY2F0ZSBhbiBhbmNlc3RvciBjb21taXQgd2hpY2gKIGhhcyBiZWVuIHRhZ2dlZC4gIFRoZSBhbmNlc3RvcidzIHRhZyB3aWxsIGJlIG91dHB1dCBhbG9uZyB3aXRoIGFuCi1hYmJyZXZpYXRpb24gb2YgdGhlIGlucHV0IGNvbW1pdHRpc2gncyBTSEExLgorYWJicmV2aWF0aW9uIG9mIHRoZSBpbnB1dCBjb21taXR0aXNoJ3MgU0hBLTEuIElmICctLWZpcnN0LXBhcmVudCcgd2FzCitzcGVjaWZpZWQgdGhlbiB0aGUgd2FsayB3aWxsIG9ubHkgY29uc2lkZXIgdGhlIGZpcnN0IHBhcmVudCBvZiBlYWNoCitjb21taXQuCiAKIElmIG11bHRpcGxlIHRhZ3Mgd2VyZSBmb3VuZCBkdXJpbmcgdGhlIHdhbGsgdGhlbiB0aGUgdGFnIHdoaWNoCiBoYXMgdGhlIGZld2VzdCBjb21taXRzIGRpZmZlcmVudCBmcm9tIHRoZSBpbnB1dCBjb21taXR0aXNoIHdpbGwgYmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYtaW5kZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi1pbmRleC50eHQKaW5kZXggYzBiN2M1OC4uYTg2Y2Y2MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi1pbmRleC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi1pbmRleC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1kaWZmLWluZGV4IC0gQ29tcGFyZXMgY29udGVudCBhbmQgbW9kZSBvZiBibG9icyBiZXR3ZWVuIHRoZSBpbmRleCBhbmQgcmVwb3NpdG9yeQorZ2l0LWRpZmYtaW5kZXggLSBDb21wYXJlIGEgdHJlZSB0byB0aGUgd29ya2luZyB0cmVlIG9yIGluZGV4CiAKIAogU1lOT1BTSVMKQEAgLTEzLDExICsxMywxMSBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLUNvbXBhcmVzIHRoZSBjb250ZW50IGFuZCBtb2RlIG9mIHRoZSBibG9icyBmb3VuZCB2aWEgYSB0cmVlCi1vYmplY3Qgd2l0aCB0aGUgY29udGVudCBvZiB0aGUgY3VycmVudCBpbmRleCBhbmQsIG9wdGlvbmFsbHkKLWlnbm9yaW5nIHRoZSBzdGF0IHN0YXRlIG9mIHRoZSBmaWxlIG9uIGRpc2suICBXaGVuIHBhdGhzIGFyZQotc3BlY2lmaWVkLCBjb21wYXJlcyBvbmx5IHRob3NlIG5hbWVkIHBhdGhzLiAgT3RoZXJ3aXNlIGFsbAotZW50cmllcyBpbiB0aGUgaW5kZXggYXJlIGNvbXBhcmVkLgorQ29tcGFyZXMgdGhlIGNvbnRlbnQgYW5kIG1vZGUgb2YgdGhlIGJsb2JzIGZvdW5kIGluIGEgdHJlZSBvYmplY3QKK3dpdGggdGhlIGNvcnJlc3BvbmRpbmcgdHJhY2tlZCBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlLCBvciB3aXRoIHRoZQorY29ycmVzcG9uZGluZyBwYXRocyBpbiB0aGUgaW5kZXguICBXaGVuIDxwYXRoPiBhcmd1bWVudHMgYXJlIHByZXNlbnQsCitjb21wYXJlcyBvbmx5IHBhdGhzIG1hdGNoaW5nIHRob3NlIHBhdHRlcm5zLiAgT3RoZXJ3aXNlIGFsbCB0cmFja2VkCitmaWxlcyBhcmUgY29tcGFyZWQuCiAKIE9QVElPTlMKIC0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKaW5kZXggZjhjMDYwMS4uNzhkNmQ1MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGlmZi50eHQKQEAgLTE4LDE0ICsxOCwxNCBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiBTaG93IGNoYW5nZXMgYmV0d2VlbiB0aGUgd29ya2luZyB0cmVlIGFuZCB0aGUgaW5kZXggb3IgYSB0cmVlLCBjaGFuZ2VzCi1iZXR3ZWVuIHRoZSBpbmRleCBhbmQgYSB0cmVlLCBjaGFuZ2VzIGJldHdlZW4gdHdvIHRyZWVzLCBvciBjaGFuZ2VzCi1iZXR3ZWVuIHR3byBmaWxlcyBvbiBkaXNrLgorYmV0d2VlbiB0aGUgaW5kZXggYW5kIGEgdHJlZSwgY2hhbmdlcyBiZXR3ZWVuIHR3byB0cmVlcywgY2hhbmdlcyBiZXR3ZWVuCit0d28gYmxvYiBvYmplY3RzLCBvciBjaGFuZ2VzIGJldHdlZW4gdHdvIGZpbGVzIG9uIGRpc2suCiAKICdnaXQgZGlmZicgWy0tb3B0aW9uc10gWy0tXSBbPHBhdGg+Li4uXTo6CiAKIAlUaGlzIGZvcm0gaXMgdG8gdmlldyB0aGUgY2hhbmdlcyB5b3UgbWFkZSByZWxhdGl2ZSB0bwogCXRoZSBpbmRleCAoc3RhZ2luZyBhcmVhIGZvciB0aGUgbmV4dCBjb21taXQpLiAgSW4gb3RoZXIKLQl3b3JkcywgdGhlIGRpZmZlcmVuY2VzIGFyZSB3aGF0IHlvdSBfY291bGRfIHRlbGwgZ2l0IHRvCisJd29yZHMsIHRoZSBkaWZmZXJlbmNlcyBhcmUgd2hhdCB5b3UgX2NvdWxkXyB0ZWxsIEdpdCB0bwogCWZ1cnRoZXIgYWRkIHRvIHRoZSBpbmRleCBidXQgeW91IHN0aWxsIGhhdmVuJ3QuICBZb3UgY2FuCiAJc3RhZ2UgdGhlc2UgY2hhbmdlcyBieSB1c2luZyBsaW5rZ2l0OmdpdC1hZGRbMV0uCiArCkBAIC01NiwxMSArNTYsNiBAQAogCVRoaXMgaXMgdG8gdmlldyB0aGUgY2hhbmdlcyBiZXR3ZWVuIHR3byBhcmJpdHJhcnkKIAk8Y29tbWl0Pi4KIAotJ2dpdCBkaWZmJyBbb3B0aW9uc10gPGJsb2I+IDxibG9iPjo6Ci0KLQlUaGlzIGZvcm0gaXMgdG8gdmlldyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgcmF3Ci0JY29udGVudHMgb2YgdHdvIGJsb2Igb2JqZWN0cy4KLQogJ2dpdCBkaWZmJyBbLS1vcHRpb25zXSA8Y29tbWl0Pi4uPGNvbW1pdD4gWy0tXSBbPHBhdGg+Li4uXTo6CiAKIAlUaGlzIGlzIHN5bm9ueW1vdXMgdG8gdGhlIHByZXZpb3VzIGZvcm0uICBJZiA8Y29tbWl0PiBvbgpAQCAtODcsNiArODIsMTEgQEAKICI8Y29tbWl0PlwuLi48Y29tbWl0PiIpIGRvIG5vdCBtZWFuIGEgcmFuZ2UgYXMgZGVmaW5lZCBpbiB0aGUKICJTUEVDSUZZSU5HIFJBTkdFUyIgc2VjdGlvbiBpbiBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XS4KIAorJ2dpdCBkaWZmJyBbb3B0aW9uc10gPGJsb2I+IDxibG9iPjo6CisKKwlUaGlzIGZvcm0gaXMgdG8gdmlldyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgcmF3CisJY29udGVudHMgb2YgdHdvIGJsb2Igb2JqZWN0cy4KKwogT1BUSU9OUwogLS0tLS0tLQogOmdpdC1kaWZmOiAxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmdG9vbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmdG9vbC50eHQKaW5kZXggNzNjYTcwMi4uMTE4ODdlNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZGlmZnRvb2wudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmZ0b29sLnR4dApAQCAtMTIsNyArMTIsNyBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLSdnaXQgZGlmZnRvb2wnIGlzIGEgZ2l0IGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGNvbXBhcmUgYW5kIGVkaXQgZmlsZXMKKydnaXQgZGlmZnRvb2wnIGlzIGEgR2l0IGNvbW1hbmQgdGhhdCBhbGxvd3MgeW91IHRvIGNvbXBhcmUgYW5kIGVkaXQgZmlsZXMKIGJldHdlZW4gcmV2aXNpb25zIHVzaW5nIGNvbW1vbiBkaWZmIHRvb2xzLiAgJ2dpdCBkaWZmdG9vbCcgaXMgYSBmcm9udGVuZAogdG8gJ2dpdCBkaWZmJyBhbmQgYWNjZXB0cyB0aGUgc2FtZSBvcHRpb25zIGFuZCBhcmd1bWVudHMuIFNlZQogbGlua2dpdDpnaXQtZGlmZlsxXS4KQEAgLTY5LDEzICs2OSwxNCBAQAogLS10b29sLWhlbHA6OgogCVByaW50IGEgbGlzdCBvZiBkaWZmIHRvb2xzIHRoYXQgbWF5IGJlIHVzZWQgd2l0aCBgLS10b29sYC4KIAotLS1zeW1saW5rczo6Ci0tLW5vLXN5bWxpbmtzOjoKKy0tW25vLV1zeW1saW5rczo6CiAJJ2dpdCBkaWZmdG9vbCcncyBkZWZhdWx0IGJlaGF2aW9yIGlzIGNyZWF0ZSBzeW1saW5rcyB0byB0aGUKLQl3b3JraW5nIHRyZWUgd2hlbiBydW4gaW4gYC0tZGlyLWRpZmZgIG1vZGUuCisJd29ya2luZyB0cmVlIHdoZW4gcnVuIGluIGAtLWRpci1kaWZmYCBtb2RlIGFuZCB0aGUgcmlnaHQtaGFuZAorCXNpZGUgb2YgdGhlIGNvbXBhcmlzb24geWllbGRzIHRoZSBzYW1lIGNvbnRlbnQgYXMgdGhlIGZpbGUgaW4KKwl0aGUgd29ya2luZyB0cmVlLgogKwotCVNwZWNpZnlpbmcgYC0tbm8tc3ltbGlua3NgIGluc3RydWN0cyAnZ2l0IGRpZmZ0b29sJyB0byBjcmVhdGUKLQljb3BpZXMgaW5zdGVhZC4gIGAtLW5vLXN5bWxpbmtzYCBpcyB0aGUgZGVmYXVsdCBvbiBXaW5kb3dzLgorU3BlY2lmeWluZyBgLS1uby1zeW1saW5rc2AgaW5zdHJ1Y3RzICdnaXQgZGlmZnRvb2wnIHRvIGNyZWF0ZSBjb3BpZXMKK2luc3RlYWQuICBgLS1uby1zeW1saW5rc2AgaXMgdGhlIGRlZmF1bHQgb24gV2luZG93cy4KIAogLXggPGNvbW1hbmQ+OjoKIC0tZXh0Y21kPTxjb21tYW5kPjo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQKaW5kZXggZDY0ODdlMS4uZWZiMDM4MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dApAQCAtMjcsMTUgKzI3LDE3IEBACiAJSW5zZXJ0ICdwcm9ncmVzcycgc3RhdGVtZW50cyBldmVyeSA8bj4gb2JqZWN0cywgdG8gYmUgc2hvd24gYnkKIAknZ2l0IGZhc3QtaW1wb3J0JyBkdXJpbmcgaW1wb3J0LgogCi0tLXNpZ25lZC10YWdzPSh2ZXJiYXRpbXx3YXJufHN0cmlwfGFib3J0KTo6CistLXNpZ25lZC10YWdzPSh2ZXJiYXRpbXx3YXJufHdhcm4tc3RyaXB8c3RyaXB8YWJvcnQpOjoKIAlTcGVjaWZ5IGhvdyB0byBoYW5kbGUgc2lnbmVkIHRhZ3MuICBTaW5jZSBhbnkgdHJhbnNmb3JtYXRpb24KIAlhZnRlciB0aGUgZXhwb3J0IGNhbiBjaGFuZ2UgdGhlIHRhZyBuYW1lcyAod2hpY2ggY2FuIGFsc28gaGFwcGVuCiAJd2hlbiBleGNsdWRpbmcgcmV2aXNpb25zKSB0aGUgc2lnbmF0dXJlcyB3aWxsIG5vdCBtYXRjaC4KICsKIFdoZW4gYXNraW5nIHRvICdhYm9ydCcgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgdGhpcyBwcm9ncmFtIHdpbGwgZGllCi13aGVuIGVuY291bnRlcmluZyBhIHNpZ25lZCB0YWcuICBXaXRoICdzdHJpcCcsIHRoZSB0YWdzIHdpbGwgYmUgbWFkZQotdW5zaWduZWQsIHdpdGggJ3ZlcmJhdGltJywgdGhleSB3aWxsIGJlIHNpbGVudGx5IGV4cG9ydGVkCi1hbmQgd2l0aCAnd2FybicsIHRoZXkgd2lsbCBiZSBleHBvcnRlZCwgYnV0IHlvdSB3aWxsIHNlZSBhIHdhcm5pbmcuCit3aGVuIGVuY291bnRlcmluZyBhIHNpZ25lZCB0YWcuICBXaXRoICdzdHJpcCcsIHRoZSB0YWdzIHdpbGwgc2lsZW50bHkKK2JlIG1hZGUgdW5zaWduZWQsIHdpdGggJ3dhcm4tc3RyaXAnIHRoZXkgd2lsbCBiZSBtYWRlIHVuc2lnbmVkIGJ1dCBhCit3YXJuaW5nIHdpbGwgYmUgZGlzcGxheWVkLCB3aXRoICd2ZXJiYXRpbScsIHRoZXkgd2lsbCBiZSBzaWxlbnRseQorZXhwb3J0ZWQgYW5kIHdpdGggJ3dhcm4nLCB0aGV5IHdpbGwgYmUgZXhwb3J0ZWQsIGJ1dCB5b3Ugd2lsbCBzZWUgYQord2FybmluZy4KIAogLS10YWctb2YtZmlsdGVyZWQtb2JqZWN0PShhYm9ydHxkcm9wfHJld3JpdGUpOjoKIAlTcGVjaWZ5IGhvdyB0byBoYW5kbGUgdGFncyB3aG9zZSB0YWdnZWQgb2JqZWN0IGlzIGZpbHRlcmVkIG91dC4KQEAgLTY2LDYgKzY4LDggQEAKIAlpbmNyZW1lbnRhbCBydW5zLiAgQXMgPGZpbGU+IGlzIG9ubHkgb3BlbmVkIGFuZCB0cnVuY2F0ZWQKIAlhdCBjb21wbGV0aW9uLCB0aGUgc2FtZSBwYXRoIGNhbiBhbHNvIGJlIHNhZmVseSBnaXZlbiB0bwogCVwtLWltcG9ydC1tYXJrcy4KKwlUaGUgZmlsZSB3aWxsIG5vdCBiZSB3cml0dGVuIGlmIG5vIG5ldyBvYmplY3QgaGFzIGJlZW4KKwltYXJrZWQvZXhwb3J0ZWQuCiAKIC0taW1wb3J0LW1hcmtzPTxmaWxlPjo6CiAJQmVmb3JlIHByb2Nlc3NpbmcgYW55IGlucHV0LCBsb2FkIHRoZSBtYXJrcyBzcGVjaWZpZWQgaW4KQEAgLTEwMiwxMSArMTA2LDExIEBACiAJZGlmZmVyZW50IGZyb20gdGhlIGNvbW1pdCdzIGZpcnN0IHBhcmVudCkuCiAKIFs8Z2l0LXJldi1saXN0LWFyZ3M+Li4uXTo6Ci0gICAgICAgQSBsaXN0IG9mIGFyZ3VtZW50cywgYWNjZXB0YWJsZSB0byAnZ2l0IHJldi1wYXJzZScgYW5kCi0gICAgICAgJ2dpdCByZXYtbGlzdCcsIHRoYXQgc3BlY2lmaWVzIHRoZSBzcGVjaWZpYyBvYmplY3RzIGFuZCByZWZlcmVuY2VzCi0gICAgICAgdG8gZXhwb3J0LiAgRm9yIGV4YW1wbGUsIGBtYXN0ZXJ+MTAuLm1hc3RlcmAgY2F1c2VzIHRoZQotICAgICAgIGN1cnJlbnQgbWFzdGVyIHJlZmVyZW5jZSB0byBiZSBleHBvcnRlZCBhbG9uZyB3aXRoIGFsbCBvYmplY3RzCi0gICAgICAgYWRkZWQgc2luY2UgaXRzIDEwdGggYW5jZXN0b3IgY29tbWl0LgorCUEgbGlzdCBvZiBhcmd1bWVudHMsIGFjY2VwdGFibGUgdG8gJ2dpdCByZXYtcGFyc2UnIGFuZAorCSdnaXQgcmV2LWxpc3QnLCB0aGF0IHNwZWNpZmllcyB0aGUgc3BlY2lmaWMgb2JqZWN0cyBhbmQgcmVmZXJlbmNlcworCXRvIGV4cG9ydC4gIEZvciBleGFtcGxlLCBgbWFzdGVyfjEwLi5tYXN0ZXJgIGNhdXNlcyB0aGUKKwljdXJyZW50IG1hc3RlciByZWZlcmVuY2UgdG8gYmUgZXhwb3J0ZWQgYWxvbmcgd2l0aCBhbGwgb2JqZWN0cworCWFkZGVkIHNpbmNlIGl0cyAxMHRoIGFuY2VzdG9yIGNvbW1pdC4KIAogRVhBTVBMRVMKIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZldGNoLXBhY2sudHh0CmluZGV4IDhjNzUxMjAuLjFlNzE3NTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZldGNoLXBhY2sudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZldGNoLXBhY2sudHh0CkBAIC0xMCw5ICsxMCw5IEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBmZXRjaC1wYWNrJyBbLS1hbGxdIFstLXF1aWV0fC1xXSBbLS1rZWVwfC1rXSBbLS10aGluXSBbLS1pbmNsdWRlLXRhZ10KLQkJCQlbLS11cGxvYWQtcGFjaz08Z2l0LXVwbG9hZC1wYWNrPl0KLQkJCQlbLS1kZXB0aD08bj5dIFstLW5vLXByb2dyZXNzXQotCQkJCVstdl0gWzxob3N0PjpdPGRpcmVjdG9yeT4gWzxyZWZzPi4uLl0KKwlbLS11cGxvYWQtcGFjaz08Z2l0LXVwbG9hZC1wYWNrPl0KKwlbLS1kZXB0aD08bj5dIFstLW5vLXByb2dyZXNzXQorCVstdl0gWzxob3N0PjpdPGRpcmVjdG9yeT4gWzxyZWZzPi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC04NCw2ICs4NCw4IEBACiAKIC0tZGVwdGg9PG4+OjoKIAlMaW1pdCBmZXRjaGluZyB0byBhbmNlc3Rvci1jaGFpbnMgbm90IGxvbmdlciB0aGFuIG4uCisJJ2dpdC11cGxvYWQtcGFjaycgdHJlYXRzIHRoZSBzcGVjaWFsIGRlcHRoIDIxNDc0ODM2NDcgYXMKKwlpbmZpbml0ZSBldmVuIGlmIHRoZXJlIGlzIGFuIGFuY2VzdG9yLWNoYWluIHRoYXQgbG9uZy4KIAogLS1uby1wcm9ncmVzczo6CiAJRG8gbm90IHNob3cgdGhlIHByb2dyZXNzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmV0Y2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZmV0Y2gudHh0CmluZGV4IGI0MWQ3YzEuLmUwOGEwMjggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZldGNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1mZXRjaC50eHQKQEAgLTgwLDcgKzgwLDcgQEAKIG91dCBzdWJtb2R1bGVzIHJpZ2h0IG5vdy4gV2hlbiBlLmcuIHVwc3RyZWFtIGFkZGVkIGEgbmV3IHN1Ym1vZHVsZSBpbiB0aGUKIGp1c3QgZmV0Y2hlZCBjb21taXRzIG9mIHRoZSBzdXBlcnByb2plY3QgdGhlIHN1Ym1vZHVsZSBpdHNlbGYgY2FuIG5vdCBiZQogZmV0Y2hlZCwgbWFraW5nIGl0IGltcG9zc2libGUgdG8gY2hlY2sgb3V0IHRoYXQgc3VibW9kdWxlIGxhdGVyIHdpdGhvdXQKLWhhdmluZyB0byBkbyBhIGZldGNoIGFnYWluLiBUaGlzIGlzIGV4cGVjdGVkIHRvIGJlIGZpeGVkIGluIGEgZnV0dXJlIGdpdAoraGF2aW5nIHRvIGRvIGEgZmV0Y2ggYWdhaW4uIFRoaXMgaXMgZXhwZWN0ZWQgdG8gYmUgZml4ZWQgaW4gYSBmdXR1cmUgR2l0CiB2ZXJzaW9uLgogCiBTRUUgQUxTTwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmlsdGVyLWJyYW5jaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dAppbmRleCA2OWE0MGIyLi5lNGM4ZTgyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dApAQCAtMTgsNyArMTgsNyBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLUxldHMgeW91IHJld3JpdGUgZ2l0IHJldmlzaW9uIGhpc3RvcnkgYnkgcmV3cml0aW5nIHRoZSBicmFuY2hlcyBtZW50aW9uZWQKK0xldHMgeW91IHJld3JpdGUgR2l0IHJldmlzaW9uIGhpc3RvcnkgYnkgcmV3cml0aW5nIHRoZSBicmFuY2hlcyBtZW50aW9uZWQKIGluIHRoZSA8cmV2LWxpc3Qgb3B0aW9ucz4sIGFwcGx5aW5nIGN1c3RvbSBmaWx0ZXJzIG9uIGVhY2ggcmV2aXNpb24uCiBUaG9zZSBmaWx0ZXJzIGNhbiBtb2RpZnkgZWFjaCB0cmVlIChlLmcuIHJlbW92aW5nIGEgZmlsZSBvciBydW5uaW5nCiBhIHBlcmwgcmV3cml0ZSBvbiBhbGwgZmlsZXMpIG9yIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggY29tbWl0LgpAQCAtMjksNyArMjksNyBAQAogY29tbWFuZCBsaW5lIChlLmcuIGlmIHlvdSBwYXNzICdhLi5iJywgb25seSAnYicgd2lsbCBiZSByZXdyaXR0ZW4pLgogSWYgeW91IHNwZWNpZnkgbm8gZmlsdGVycywgdGhlIGNvbW1pdHMgd2lsbCBiZSByZWNvbW1pdHRlZCB3aXRob3V0IGFueQogY2hhbmdlcywgd2hpY2ggd291bGQgbm9ybWFsbHkgaGF2ZSBubyBlZmZlY3QuICBOZXZlcnRoZWxlc3MsIHRoaXMgbWF5IGJlCi11c2VmdWwgaW4gdGhlIGZ1dHVyZSBmb3IgY29tcGVuc2F0aW5nIGZvciBzb21lIGdpdCBidWdzIG9yIHN1Y2gsCit1c2VmdWwgaW4gdGhlIGZ1dHVyZSBmb3IgY29tcGVuc2F0aW5nIGZvciBzb21lIEdpdCBidWdzIG9yIHN1Y2gsCiB0aGVyZWZvcmUgc3VjaCBhIHVzYWdlIGlzIHBlcm1pdHRlZC4KIAogKk5PVEUqOiBUaGlzIGNvbW1hbmQgaG9ub3JzIGAuZ2l0L2luZm8vZ3JhZnRzYCBmaWxlIGFuZCByZWZzIGluCkBAIC0zOTcsNyArMzk3LDcgQEAKIHVzdWFsbHkgd2l0aCBzb21lIGNvbWJpbmF0aW9uIG9mIGAtLWluZGV4LWZpbHRlcmAgYW5kCiBgLS1zdWJkaXJlY3RvcnktZmlsdGVyYC4gIFBlb3BsZSBleHBlY3QgdGhlIHJlc3VsdGluZyByZXBvc2l0b3J5IHRvCiBiZSBzbWFsbGVyIHRoYW4gdGhlIG9yaWdpbmFsLCBidXQgeW91IG5lZWQgYSBmZXcgbW9yZSBzdGVwcyB0bwotYWN0dWFsbHkgbWFrZSBpdCBzbWFsbGVyLCBiZWNhdXNlIGdpdCB0cmllcyBoYXJkIG5vdCB0byBsb3NlIHlvdXIKK2FjdHVhbGx5IG1ha2UgaXQgc21hbGxlciwgYmVjYXVzZSBHaXQgdHJpZXMgaGFyZCBub3QgdG8gbG9zZSB5b3VyCiBvYmplY3RzIHVudGlsIHlvdSB0ZWxsIGl0IHRvLiAgRmlyc3QgbWFrZSBzdXJlIHRoYXQ6CiAKICogWW91IHJlYWxseSByZW1vdmVkIGFsbCB2YXJpYW50cyBvZiBhIGZpbGVuYW1lLCBpZiBhIGJsb2Igd2FzIG1vdmVkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mbXQtbWVyZ2UtbXNnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZtdC1tZXJnZS1tc2cudHh0CmluZGV4IDNhMGY1NWUuLmJiMTIzMmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZtdC1tZXJnZS1tc2cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZtdC1tZXJnZS1tc2cudHh0CkBAIC0zNSw4ICszNSw3IEBACiAJRG8gbm90IGxpc3Qgb25lLWxpbmUgZGVzY3JpcHRpb25zIGZyb20gdGhlIGFjdHVhbCBjb21taXRzIGJlaW5nCiAJbWVyZ2VkLgogCi0tLXN1bW1hcnk6OgotLS1uby1zdW1tYXJ5OjoKKy0tW25vLV1zdW1tYXJ5OjoKIAlTeW5vbnltcyB0byAtLWxvZyBhbmQgLS1uby1sb2c7IHRoZXNlIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCiAJcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dAppbmRleCAyNTlkY2U0Li4zOTExODc3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQKQEAgLTE4LDkgKzE4LDkgQEAKIAkJICAgWy0tc3RhcnQtbnVtYmVyIDxuPl0gWy0tbnVtYmVyZWQtZmlsZXNdCiAJCSAgIFstLWluLXJlcGx5LXRvPU1lc3NhZ2UtSWRdIFstLXN1ZmZpeD0uPHNmeD5dCiAJCSAgIFstLWlnbm9yZS1pZi1pbi11cHN0cmVhbV0KLQkJICAgWy0tc3ViamVjdC1wcmVmaXg9U3ViamVjdC1QcmVmaXhdCisJCSAgIFstLXN1YmplY3QtcHJlZml4PVN1YmplY3QtUHJlZml4XSBbKC0tcmVyb2xsLWNvdW50fC12KSA8bj5dCiAJCSAgIFstLXRvPTxlbWFpbD5dIFstLWNjPTxlbWFpbD5dCi0JCSAgIFstLWNvdmVyLWxldHRlcl0gWy0tcXVpZXRdIFstLW5vdGVzWz08cmVmPl1dCisJCSAgIFstLVtuby1dY292ZXItbGV0dGVyXSBbLS1xdWlldF0gWy0tbm90ZXNbPTxyZWY+XV0KIAkJICAgWzxjb21tb24gZGlmZiBvcHRpb25zPl0KIAkJICAgWyA8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPiBdCiAKQEAgLTE2Niw2ICsxNjYsMTUgQEAKIAlhbGxvd3MgZm9yIHVzZWZ1bCBuYW1pbmcgb2YgYSBwYXRjaCBzZXJpZXMsIGFuZCBjYW4gYmUKIAljb21iaW5lZCB3aXRoIHRoZSBgLS1udW1iZXJlZGAgb3B0aW9uLgogCistdiA8bj46OgorLS1yZXJvbGwtY291bnQ9PG4+OjoKKwlNYXJrIHRoZSBzZXJpZXMgYXMgdGhlIDxuPi10aCBpdGVyYXRpb24gb2YgdGhlIHRvcGljLiBUaGUKKwlvdXRwdXQgZmlsZW5hbWVzIGhhdmUgYHY8bj5gIHByZXRlbmRlZCB0byB0aGVtLCBhbmQgdGhlCisJc3ViamVjdCBwcmVmaXggKCJQQVRDSCIgYnkgZGVmYXVsdCwgYnV0IGNvbmZpZ3VyYWJsZSB2aWEgdGhlCisJYC0tc3ViamVjdC1wcmVmaXhgIG9wdGlvbikgaGFzIGAgdjxuPmAgYXBwZW5kZWQgdG8gaXQuICBFLmcuCisJYC0tcmVyb2xsLWNvdW50PTRgIG1heSBwcm9kdWNlIGB2NC0wMDAxLWFkZC1tYWtlZmlsZS5wYXRjaGAKKwlmaWxlIHRoYXQgaGFzICJTdWJqZWN0OiBbUEFUQ0ggdjQgMS8yMF0gQWRkIG1ha2VmaWxlIiBpbiBpdC4KKwogLS10bz08ZW1haWw+OjoKIAlBZGQgYSBgVG86YCBoZWFkZXIgdG8gdGhlIGVtYWlsIGhlYWRlcnMuIFRoaXMgaXMgaW4gYWRkaXRpb24KIAl0byBhbnkgY29uZmlndXJlZCBoZWFkZXJzLCBhbmQgbWF5IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMuCkBAIC0xODYsNyArMTk1LDcgQEAKIAlgQ2M6YCwgYW5kIGN1c3RvbSkgaGVhZGVycyBhZGRlZCBzbyBmYXIgZnJvbSBjb25maWcgb3IgY29tbWFuZAogCWxpbmUuCiAKLS0tY292ZXItbGV0dGVyOjoKKy0tW25vLV1jb3Zlci1sZXR0ZXI6OgogCUluIGFkZGl0aW9uIHRvIHRoZSBwYXRjaGVzLCBnZW5lcmF0ZSBhIGNvdmVyIGxldHRlciBmaWxlCiAJY29udGFpbmluZyB0aGUgc2hvcnRsb2cgYW5kIHRoZSBvdmVyYWxsIGRpZmZzdGF0LiAgWW91IGNhbgogCWZpbGwgaW4gYSBkZXNjcmlwdGlvbiBpbiB0aGUgZmlsZSBiZWZvcmUgc2VuZGluZyBpdCBvdXQuCkBAIC0xOTksMTQgKzIwOCwxNCBAQAogdGhlIGNvbW1pdCB0aGF0IGRvZXMgbm90IGJlbG9uZyB0byB0aGUgY29tbWl0IGxvZyBtZXNzYWdlIHByb3BlciwKIGFuZCBpbmNsdWRlIGl0IHdpdGggdGhlIHBhdGNoIHN1Ym1pc3Npb24uIFdoaWxlIG9uZSBjYW4gc2ltcGx5IHdyaXRlCiB0aGVzZSBleHBsYW5hdGlvbnMgYWZ0ZXIgYGZvcm1hdC1wYXRjaGAgaGFzIHJ1biBidXQgYmVmb3JlIHNlbmRpbmcsCi1rZWVwaW5nIHRoZW0gYXMgZ2l0IG5vdGVzIGFsbG93cyB0aGVtIHRvIGJlIG1haW50YWluZWQgYmV0d2VlbiB2ZXJzaW9ucwora2VlcGluZyB0aGVtIGFzIEdpdCBub3RlcyBhbGxvd3MgdGhlbSB0byBiZSBtYWludGFpbmVkIGJldHdlZW4gdmVyc2lvbnMKIG9mIHRoZSBwYXRjaCBzZXJpZXMgKGJ1dCBzZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhlIGBub3Rlcy5yZXdyaXRlYAogY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGxpbmtnaXQ6Z2l0LW5vdGVzWzFdIHRvIHVzZSB0aGlzIHdvcmtmbG93KS4KIAogLS1bbm9dLXNpZ25hdHVyZT08c2lnbmF0dXJlPjo6CiAJQWRkIGEgc2lnbmF0dXJlIHRvIGVhY2ggbWVzc2FnZSBwcm9kdWNlZC4gUGVyIFJGQyAzNjc2IHRoZSBzaWduYXR1cmUKIAlpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgYm9keSBieSBhIGxpbmUgd2l0aCAnLS0gJyBvbiBpdC4gSWYgdGhlCi0Jc2lnbmF0dXJlIG9wdGlvbiBpcyBvbWl0dGVkIHRoZSBzaWduYXR1cmUgZGVmYXVsdHMgdG8gdGhlIGdpdCB2ZXJzaW9uCisJc2lnbmF0dXJlIG9wdGlvbiBpcyBvbWl0dGVkIHRoZSBzaWduYXR1cmUgZGVmYXVsdHMgdG8gdGhlIEdpdCB2ZXJzaW9uCiAJbnVtYmVyLgogCiAtLXN1ZmZpeD0uPHNmeD46OgpAQCAtMjUxLDYgKzI2MCw3IEBACiAJY2MgPSA8ZW1haWw+CiAJYXR0YWNoIFsgPSBtaW1lLWJvdW5kYXJ5LXN0cmluZyBdCiAJc2lnbm9mZiA9IHRydWUKKwljb3ZlcmxldHRlciA9IGF1dG8KIC0tLS0tLS0tLS0tLQogCiAKQEAgLTM4MCw3ICszOTAsNyBAQAogfn5+fn5+fn5+fn4KIEJ5IGRlZmF1bHQsIFRodW5kZXJiaXJkIHdpbGwgYm90aCB3cmFwIGVtYWlscyBhcyB3ZWxsIGFzIGZsYWcKIHRoZW0gYXMgYmVpbmcgJ2Zvcm1hdD1mbG93ZWQnLCBib3RoIG9mIHdoaWNoIHdpbGwgbWFrZSB0aGUKLXJlc3VsdGluZyBlbWFpbCB1bnVzYWJsZSBieSBnaXQuCityZXN1bHRpbmcgZW1haWwgdW51c2FibGUgYnkgR2l0LgogCiBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IGFwcHJvYWNoZXM6IHVzZSBhbiBhZGQtb24gdG8gdHVybiBvZmYgbGluZSB3cmFwcywKIGNvbmZpZ3VyZSBUaHVuZGVyYmlyZCB0byBub3QgbWFuZ2xlIHBhdGNoZXMsIG9yIHVzZQpAQCAtNTE2LDggKzUyNiw4IEBACiBBZGRpdGlvbmFsbHksIGl0IGRldGVjdHMgYW5kIGhhbmRsZXMgcmVuYW1lcyBhbmQgY29tcGxldGUgcmV3cml0ZXMKIGludGVsbGlnZW50bHkgdG8gcHJvZHVjZSBhIHJlbmFtaW5nIHBhdGNoLiAgQSByZW5hbWluZyBwYXRjaCByZWR1Y2VzCiB0aGUgYW1vdW50IG9mIHRleHQgb3V0cHV0LCBhbmQgZ2VuZXJhbGx5IG1ha2VzIGl0IGVhc2llciB0byByZXZpZXcuCi1Ob3RlIHRoYXQgbm9uLWdpdCAicGF0Y2giIHByb2dyYW1zIHdvbid0IHVuZGVyc3RhbmQgcmVuYW1pbmcgcGF0Y2hlcywgc28KLXVzZSBpdCBvbmx5IHdoZW4geW91IGtub3cgdGhlIHJlY2lwaWVudCB1c2VzIGdpdCB0byBhcHBseSB5b3VyIHBhdGNoLgorTm90ZSB0aGF0IG5vbi1HaXQgInBhdGNoIiBwcm9ncmFtcyB3b24ndCB1bmRlcnN0YW5kIHJlbmFtaW5nIHBhdGNoZXMsIHNvCit1c2UgaXQgb25seSB3aGVuIHlvdSBrbm93IHRoZSByZWNpcGllbnQgdXNlcyBHaXQgdG8gYXBwbHkgeW91ciBwYXRjaC4KIAogKiBFeHRyYWN0IHRocmVlIHRvcG1vc3QgY29tbWl0cyBmcm9tIHRoZSBjdXJyZW50IGJyYW5jaCBhbmQgZm9ybWF0IHRoZW0KIGFzIGUtbWFpbGFibGUgcGF0Y2hlczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZzY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZnNjay50eHQKaW5kZXggZGEzNDhmYy4uMjVjNDMxZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZnNjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZnNjay50eHQKQEAgLTIzLDE1ICsyMywxNCBAQAogCUFuIG9iamVjdCB0byB0cmVhdCBhcyB0aGUgaGVhZCBvZiBhbiB1bnJlYWNoYWJpbGl0eSB0cmFjZS4KICsKIElmIG5vIG9iamVjdHMgYXJlIGdpdmVuLCAnZ2l0IGZzY2snIGRlZmF1bHRzIHRvIHVzaW5nIHRoZQotaW5kZXggZmlsZSwgYWxsIFNIQTEgcmVmZXJlbmNlcyBpbiBgcmVmc2AgbmFtZXNwYWNlLCBhbmQgYWxsIHJlZmxvZ3MKK2luZGV4IGZpbGUsIGFsbCBTSEEtMSByZWZlcmVuY2VzIGluIGByZWZzYCBuYW1lc3BhY2UsIGFuZCBhbGwgcmVmbG9ncwogKHVubGVzcyAtLW5vLXJlZmxvZ3MgaXMgZ2l2ZW4pIGFzIGhlYWRzLgogCiAtLXVucmVhY2hhYmxlOjoKIAlQcmludCBvdXQgb2JqZWN0cyB0aGF0IGV4aXN0IGJ1dCB0aGF0IGFyZW4ndCByZWFjaGFibGUgZnJvbSBhbnkKIAlvZiB0aGUgcmVmZXJlbmNlIG5vZGVzLgogCi0tLWRhbmdsaW5nOjoKLS0tbm8tZGFuZ2xpbmc6OgorLS1bbm8tXWRhbmdsaW5nOjoKIAlQcmludCBvYmplY3RzIHRoYXQgZXhpc3QgYnV0IHRoYXQgYXJlIG5ldmVyICdkaXJlY3RseScgdXNlZCAoZGVmYXVsdCkuCiAJYC0tbm8tZGFuZ2xpbmdgIGNhbiBiZSB1c2VkIHRvIG9taXQgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBvdXRwdXQuCiAKQEAgLTU2LDcgKzU1LDcgQEAKIAkoJEdJVF9ESVIvb2JqZWN0cyksIGJ1dCBhbHNvIHRoZSBvbmVzIGZvdW5kIGluIGFsdGVybmF0ZQogCW9iamVjdCBwb29scyBsaXN0ZWQgaW4gR0lUX0FMVEVSTkFURV9PQkpFQ1RfRElSRUNUT1JJRVMKIAlvciAkR0lUX0RJUi9vYmplY3RzL2luZm8vYWx0ZXJuYXRlcywKLQlhbmQgaW4gcGFja2VkIGdpdCBhcmNoaXZlcyBmb3VuZCBpbiAkR0lUX0RJUi9vYmplY3RzL3BhY2sKKwlhbmQgaW4gcGFja2VkIEdpdCBhcmNoaXZlcyBmb3VuZCBpbiAkR0lUX0RJUi9vYmplY3RzL3BhY2sKIAlhbmQgY29ycmVzcG9uZGluZyBwYWNrIHN1YmRpcmVjdG9yaWVzIGluIGFsdGVybmF0ZQogCW9iamVjdCBwb29scy4gIFRoaXMgaXMgbm93IGRlZmF1bHQ7IHlvdSBjYW4gdHVybiBpdCBvZmYKIAl3aXRoIC0tbm8tZnVsbC4KQEAgLTY0LDggKzYzLDggQEAKIC0tc3RyaWN0OjoKIAlFbmFibGUgbW9yZSBzdHJpY3QgY2hlY2tpbmcsIG5hbWVseSB0byBjYXRjaCBhIGZpbGUgbW9kZQogCXJlY29yZGVkIHdpdGggZyt3IGJpdCBzZXQsIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IG9sZGVyCi0JdmVyc2lvbnMgb2YgZ2l0LiAgRXhpc3RpbmcgcmVwb3NpdG9yaWVzLCBpbmNsdWRpbmcgdGhlCi0JTGludXgga2VybmVsLCBnaXQgaXRzZWxmLCBhbmQgc3BhcnNlIHJlcG9zaXRvcnkgaGF2ZSBvbGQKKwl2ZXJzaW9ucyBvZiBHaXQuICBFeGlzdGluZyByZXBvc2l0b3JpZXMsIGluY2x1ZGluZyB0aGUKKwlMaW51eCBrZXJuZWwsIEdpdCBpdHNlbGYsIGFuZCBzcGFyc2UgcmVwb3NpdG9yeSBoYXZlIG9sZAogCW9iamVjdHMgdGhhdCB0cmlnZ2VycyB0aGlzIGNoZWNrLCBidXQgaXQgaXMgcmVjb21tZW5kZWQKIAl0byBjaGVjayBuZXcgcHJvamVjdHMgd2l0aCB0aGlzIGZsYWcuCiAKQEAgLTc4LDggKzc3LDcgQEAKIAlhIGJsb2IsIHRoZSBjb250ZW50cyBhcmUgd3JpdHRlbiBpbnRvIHRoZSBmaWxlLCByYXRoZXIgdGhhbgogCWl0cyBvYmplY3QgbmFtZS4KIAotLS1wcm9ncmVzczo6Ci0tLW5vLXByb2dyZXNzOjoKKy0tW25vLV1wcm9ncmVzczo6CiAJUHJvZ3Jlc3Mgc3RhdHVzIGlzIHJlcG9ydGVkIG9uIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0gYnkKIAlkZWZhdWx0IHdoZW4gaXQgaXMgYXR0YWNoZWQgdG8gYSB0ZXJtaW5hbCwgdW5sZXNzCiAJLS1uby1wcm9ncmVzcyBvciAtLXZlcmJvc2UgaXMgc3BlY2lmaWVkLiAtLXByb2dyZXNzIGZvcmNlcwpAQCAtODksNyArODcsNyBAQAogRElTQ1VTU0lPTgogLS0tLS0tLS0tLQogCi1naXQtZnNjayB0ZXN0cyBTSEExIGFuZCBnZW5lcmFsIG9iamVjdCBzYW5pdHksIGFuZCBpdCBkb2VzIGZ1bGwgdHJhY2tpbmcKK2dpdC1mc2NrIHRlc3RzIFNIQS0xIGFuZCBnZW5lcmFsIG9iamVjdCBzYW5pdHksIGFuZCBpdCBkb2VzIGZ1bGwgdHJhY2tpbmcKIG9mIHRoZSByZXN1bHRpbmcgcmVhY2hhYmlsaXR5IGFuZCBldmVyeXRoaW5nIGVsc2UuIEl0IHByaW50cyBvdXQgYW55CiBjb3JydXB0aW9uIGl0IGZpbmRzIChtaXNzaW5nIG9yIGJhZCBvYmplY3RzKSwgYW5kIGlmIHlvdSB1c2UgdGhlCiAnLS11bnJlYWNoYWJsZScgZmxhZyBpdCB3aWxsIGFsc28gcHJpbnQgb3V0IG9iamVjdHMgdGhhdCBleGlzdCBidXQgdGhhdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZ2MudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZ2MudHh0CmluZGV4IGIzNzBiMDIuLjI0MDJlZDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWdjLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1nYy50eHQKQEAgLTYyLDggKzYyLDkgQEAKIAogLS1wcnVuZT08ZGF0ZT46OgogCVBydW5lIGxvb3NlIG9iamVjdHMgb2xkZXIgdGhhbiBkYXRlIChkZWZhdWx0IGlzIDIgd2Vla3MgYWdvLAotCW92ZXJyaWRhYmxlIGJ5IHRoZSBjb25maWcgdmFyaWFibGUgYGdjLnBydW5lRXhwaXJlYCkuICBUaGlzCi0Jb3B0aW9uIGlzIG9uIGJ5IGRlZmF1bHQuCisJb3ZlcnJpZGFibGUgYnkgdGhlIGNvbmZpZyB2YXJpYWJsZSBgZ2MucHJ1bmVFeHBpcmVgKS4KKwktLXBydW5lPWFsbCBwcnVuZXMgbG9vc2Ugb2JqZWN0cyByZWdhcmRsZXNzIG9mIHRoZWlyIGFnZS4KKwktLXBydW5lIGlzIG9uIGJ5IGRlZmF1bHQuCiAKIC0tbm8tcHJ1bmU6OgogCURvIG5vdCBwcnVuZSBhbnkgbG9vc2Ugb2JqZWN0cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWdyZXAudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQKaW5kZXggY2ZlY2Y4NC4uODQ5N2FhNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZ3JlcC50eHQKQEAgLTI1LDcgKzI1LDcgQEAKIAkgICBbLVcgfCAtLWZ1bmN0aW9uLWNvbnRleHRdCiAJICAgWy1mIDxmaWxlPl0gWy1lXSA8cGF0dGVybj4KIAkgICBbLS1hbmR8LS1vcnwtLW5vdHwofCl8LWUgPHBhdHRlcm4+Li4uXQotCSAgIFsgWy0tZXhjbHVkZS1zdGFuZGFyZF0gWy0tY2FjaGVkIHwgLS1uby1pbmRleCB8IC0tdW50cmFja2VkXSB8IDx0cmVlPi4uLl0KKwkgICBbIFstLVtuby1dZXhjbHVkZS1zdGFuZGFyZF0gWy0tY2FjaGVkIHwgLS1uby1pbmRleCB8IC0tdW50cmFja2VkXSB8IDx0cmVlPi4uLl0KIAkgICBbLS1dIFs8cGF0aHNwZWM+Li4uXQogCiBERVNDUklQVElPTgpAQCAtNjEsNyArNjEsNyBAQAogCWJsb2JzIHJlZ2lzdGVyZWQgaW4gdGhlIGluZGV4IGZpbGUuCiAKIC0tbm8taW5kZXg6OgotCVNlYXJjaCBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgdGhhdCBpcyBub3QgbWFuYWdlZCBieSBnaXQuCisJU2VhcmNoIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBtYW5hZ2VkIGJ5IEdpdC4KIAogLS11bnRyYWNrZWQ6OgogCUluIGFkZGl0aW9uIHRvIHNlYXJjaGluZyBpbiB0aGUgdHJhY2tlZCBmaWxlcyBpbiB0aGUgd29ya2luZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZ3VpLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWd1aS50eHQKaW5kZXggMDA0MTk5NC4uODE0NDUyNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZ3VpLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1ndWkudHh0CkBAIC0xMDIsNyArMTAyLDcgQEAKIFNFRSBBTFNPCiAtLS0tLS0tLQogbGlua2dpdDpnaXRrWzFdOjoKLQlUaGUgZ2l0IHJlcG9zaXRvcnkgYnJvd3Nlci4gIFNob3dzIGJyYW5jaGVzLCBjb21taXQgaGlzdG9yeQorCVRoZSBHaXQgcmVwb3NpdG9yeSBicm93c2VyLiAgU2hvd3MgYnJhbmNoZXMsIGNvbW1pdCBoaXN0b3J5CiAJYW5kIGZpbGUgZGlmZmVyZW5jZXMuICBnaXRrIGlzIHRoZSB1dGlsaXR5IHN0YXJ0ZWQgYnkKIAknZ2l0IGd1aScncyBSZXBvc2l0b3J5IFZpc3VhbGl6ZSBhY3Rpb25zLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1oYXNoLW9iamVjdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1oYXNoLW9iamVjdC50eHQKaW5kZXggNGIwYTUwMi4uMDJjMWYxMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaGFzaC1vYmplY3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWhhc2gtb2JqZWN0LnR4dApAQCAtNDAsNyArNDAsNyBAQAogLS1wYXRoOjoKIAlIYXNoIG9iamVjdCBhcyBpdCB3ZXJlIGxvY2F0ZWQgYXQgdGhlIGdpdmVuIHBhdGguIFRoZSBsb2NhdGlvbiBvZgogCWZpbGUgZG9lcyBub3QgZGlyZWN0bHkgaW5mbHVlbmNlIG9uIHRoZSBoYXNoIHZhbHVlLCBidXQgcGF0aCBpcwotCXVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgZ2l0IGZpbHRlcnMgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIG9iamVjdAorCXVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgR2l0IGZpbHRlcnMgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhlIG9iamVjdAogCWJlZm9yZSBpdCBjYW4gYmUgcGxhY2VkIHRvIHRoZSBvYmplY3QgZGF0YWJhc2UsIGFuZCwgYXMgcmVzdWx0IG9mCiAJYXBwbHlpbmcgZmlsdGVycywgdGhlIGFjdHVhbCBibG9iIHB1dCBpbnRvIHRoZSBvYmplY3QgZGF0YWJhc2UgbWF5CiAJZGlmZmVyIGZyb20gdGhlIGdpdmVuIGZpbGUuIFRoaXMgb3B0aW9uIGlzIG1haW5seSB1c2VmdWwgZm9yIGhhc2hpbmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWhlbHAudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQKaW5kZXggOWUwYjNmNi4uYjIxZTlkNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtaGVscC50eHQKQEAgLTMsMzYgKzMsNTAgQEAKIAogTkFNRQogLS0tLQotZ2l0LWhlbHAgLSBkaXNwbGF5IGhlbHAgaW5mb3JtYXRpb24gYWJvdXQgZ2l0CitnaXQtaGVscCAtIERpc3BsYXkgaGVscCBpbmZvcm1hdGlvbiBhYm91dCBHaXQKIAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IGhlbHAnIFstYXwtLWFsbHwtaXwtLWluZm98LW18LS1tYW58LXd8LS13ZWJdIFtDT01NQU5EXQorJ2dpdCBoZWxwJyBbLWF8LS1hbGxdIFstZ3wtLWd1aWRlXQorCSAgIFstaXwtLWluZm98LW18LS1tYW58LXd8LS13ZWJdIFtDT01NQU5EfEdVSURFXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIAotV2l0aCBubyBvcHRpb25zIGFuZCBubyBDT01NQU5EIGdpdmVuLCB0aGUgc3lub3BzaXMgb2YgdGhlICdnaXQnCi1jb21tYW5kIGFuZCBhIGxpc3Qgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlIHByaW50ZWQKK1dpdGggbm8gb3B0aW9ucyBhbmQgbm8gQ09NTUFORCBvciBHVUlERSBnaXZlbiwgdGhlIHN5bm9wc2lzIG9mIHRoZSAnZ2l0JworY29tbWFuZCBhbmQgYSBsaXN0IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgR2l0IGNvbW1hbmRzIGFyZSBwcmludGVkCiBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0LgogCi1JZiB0aGUgb3B0aW9uICctLWFsbCcgb3IgJy1hJyBpcyBnaXZlbiwgdGhlbiBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIGFyZQorSWYgdGhlIG9wdGlvbiAnLS1hbGwnIG9yICctYScgaXMgZ2l2ZW4sIGFsbCBhdmFpbGFibGUgY29tbWFuZHMgYXJlCiBwcmludGVkIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuCiAKLUlmIGEgZ2l0IGNvbW1hbmQgaXMgbmFtZWQsIGEgbWFudWFsIHBhZ2UgZm9yIHRoYXQgY29tbWFuZCBpcyBicm91Z2h0Ci11cC4gVGhlICdtYW4nIHByb2dyYW0gaXMgdXNlZCBieSBkZWZhdWx0IGZvciB0aGlzIHB1cnBvc2UsIGJ1dCB0aGlzCi1jYW4gYmUgb3ZlcnJpZGRlbiBieSBvdGhlciBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorSWYgdGhlIG9wdGlvbiAnLS1ndWlkZScgb3IgJy1nJyBpcyBnaXZlbiwgYSBsaXN0IG9mIHRoZSB1c2VmdWwKK0dpdCBndWlkZXMgaXMgYWxzbyBwcmludGVkIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuCisKK0lmIGEgY29tbWFuZCwgb3IgYSBndWlkZSwgaXMgZ2l2ZW4sIGEgbWFudWFsIHBhZ2UgZm9yIHRoYXQgY29tbWFuZCBvcgorZ3VpZGUgaXMgYnJvdWdodCB1cC4gVGhlICdtYW4nIHByb2dyYW0gaXMgdXNlZCBieSBkZWZhdWx0IGZvciB0aGlzCitwdXJwb3NlLCBidXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBvdGhlciBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb24KK3ZhcmlhYmxlcy4KIAogTm90ZSB0aGF0IGBnaXQgLS1oZWxwIC4uLmAgaXMgaWRlbnRpY2FsIHRvIGBnaXQgaGVscCAuLi5gIGJlY2F1c2UgdGhlCiBmb3JtZXIgaXMgaW50ZXJuYWxseSBjb252ZXJ0ZWQgaW50byB0aGUgbGF0dGVyLgogCitUbyBkaXNwbGF5IHRoZSBsaW5rZ2l0OmdpdFsxXSBtYW4gcGFnZSwgdXNlIGBnaXQgaGVscCBnaXRgLgorCitUaGlzIHBhZ2UgY2FuIGJlIGRpc3BsYXllZCB3aXRoICdnaXQgaGVscCBoZWxwJyBvciBgZ2l0IGhlbHAgLS1oZWxwYAorCiBPUFRJT05TCiAtLS0tLS0tCiAtYTo6CiAtLWFsbDo6CiAJUHJpbnRzIGFsbCB0aGUgYXZhaWxhYmxlIGNvbW1hbmRzIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuIFRoaXMKLQlvcHRpb24gc3VwZXJzZWRlcyBhbnkgb3RoZXIgb3B0aW9uLgorCW9wdGlvbiBvdmVycmlkZXMgYW55IGdpdmVuIGNvbW1hbmQgb3IgZ3VpZGUgbmFtZS4KKworLWc6OgorLS1ndWlkZXM6OgorCVByaW50cyBhIGxpc3Qgb2YgdXNlZnVsIGd1aWRlcyBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0LiBUaGlzCisJb3B0aW9uIG92ZXJyaWRlcyBhbnkgZ2l2ZW4gY29tbWFuZCBvciBndWlkZSBuYW1lLgogCiAtaTo6CiAtLWluZm86OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1iYWNrZW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWh0dHAtYmFja2VuZC50eHQKaW5kZXggZjRlMDc0MS4uZTNiY2RiNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1iYWNrZW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1odHRwLWJhY2tlbmQudHh0CkBAIC0xOSw3ICsxOSw3IEBACiBwdXNoaW5nIHVzaW5nIHRoZSBzbWFydCBIVFRQIHByb3RvY29sLgogCiBJdCB2ZXJpZmllcyB0aGF0IHRoZSBkaXJlY3RvcnkgaGFzIHRoZSBtYWdpYyBmaWxlCi0iZ2l0LWRhZW1vbi1leHBvcnQtb2siLCBhbmQgaXQgd2lsbCByZWZ1c2UgdG8gZXhwb3J0IGFueSBnaXQgZGlyZWN0b3J5CisiZ2l0LWRhZW1vbi1leHBvcnQtb2siLCBhbmQgaXQgd2lsbCByZWZ1c2UgdG8gZXhwb3J0IGFueSBHaXQgZGlyZWN0b3J5CiB0aGF0IGhhc24ndCBleHBsaWNpdGx5IGJlZW4gbWFya2VkIGZvciBleHBvcnQgdGhpcyB3YXkgKHVubGVzcyB0aGUKIEdJVF9IVFRQX0VYUE9SVF9BTEwgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBpcyBzZXQpLgogCkBAIC04MCw3ICs4MCwzMCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKwogVG8gZW5hYmxlIGFub255bW91cyByZWFkIGFjY2VzcyBidXQgYXV0aGVudGljYXRlZCB3cml0ZSBhY2Nlc3MsCi1yZXF1aXJlIGF1dGhvcml6YXRpb24gd2l0aCBhIExvY2F0aW9uTWF0Y2ggZGlyZWN0aXZlOgorcmVxdWlyZSBhdXRob3JpemF0aW9uIGZvciBib3RoIHRoZSBpbml0aWFsIHJlZiBhZHZlcnRpc2VtZW50ICh3aGljaCB3ZQorZGV0ZWN0IGFzIGEgcHVzaCB2aWEgdGhlIHNlcnZpY2UgcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmcpLCBhbmQgdGhlCityZWNlaXZlLXBhY2sgaW52b2NhdGlvbiBpdHNlbGY6CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXdyaXRlQ29uZCAle1FVRVJZX1NUUklOR30gc2VydmljZT1naXQtcmVjZWl2ZS1wYWNrIFtPUl0KK1Jld3JpdGVDb25kICV7UkVRVUVTVF9VUkl9IC9naXQtcmVjZWl2ZS1wYWNrJAorUmV3cml0ZVJ1bGUgXi9naXQvIC0gW0U9QVVUSFJFUVVJUkVEOnllc10KKworPExvY2F0aW9uTWF0Y2ggIl4vZ2l0LyI+CisJT3JkZXIgRGVueSxBbGxvdworCURlbnkgZnJvbSBlbnY9QVVUSFJFUVVJUkVECisKKwlBdXRoVHlwZSBCYXNpYworCUF1dGhOYW1lICJHaXQgQWNjZXNzIgorCVJlcXVpcmUgZ3JvdXAgY29tbWl0dGVycworCVNhdGlzZnkgQW55CisJLi4uCis8L0xvY2F0aW9uTWF0Y2g+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCitJZiB5b3UgZG8gbm90IGhhdmUgYG1vZF9yZXdyaXRlYCBhdmFpbGFibGUgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgcXVlcnkKK3N0cmluZywgaXQgaXMgc3VmZmljaWVudCB0byBqdXN0IHByb3RlY3QgYGdpdC1yZWNlaXZlLXBhY2tgIGl0c2VsZiwKK2xpa2U6CiArCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA8TG9jYXRpb25NYXRjaCAiXi9naXQvLiovZ2l0LXJlY2VpdmUtcGFjayQiPgpAQCAtOTEsNiArMTE0LDE1IEBACiA8L0xvY2F0aW9uTWF0Y2g+CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiArCitJbiB0aGlzIG1vZGUsIHRoZSBzZXJ2ZXIgd2lsbCBub3QgcmVxdWVzdCBhdXRoZW50aWNhdGlvbiB1bnRpbCB0aGUKK2NsaWVudCBhY3R1YWxseSBzdGFydHMgdGhlIG9iamVjdCBuZWdvdGlhdGlvbiBwaGFzZSBvZiB0aGUgcHVzaCwgcmF0aGVyCit0aGFuIGR1cmluZyB0aGUgaW5pdGlhbCBjb250YWN0LiAgRm9yIHRoaXMgcmVhc29uLCB5b3UgbXVzdCBhbHNvIGVuYWJsZQordGhlIGBodHRwLnJlY2VpdmVwYWNrYCBjb25maWcgb3B0aW9uIGluIGFueSByZXBvc2l0b3JpZXMgdGhhdCBzaG91bGQKK2FjY2VwdCBhIHB1c2guIFRoZSBkZWZhdWx0IGJlaGF2aW9yLCBpZiBgaHR0cC5yZWNlaXZlcGFja2AgaXMgbm90IHNldCwKK2lzIHRvIHJlamVjdCBhbnkgcHVzaGVzIGJ5IHVuYXV0aGVudGljYXRlZCB1c2VyczsgdGhlIGluaXRpYWwgcmVxdWVzdAord2lsbCB0aGVyZWZvcmUgcmVwb3J0IGA0MDMgRm9yYmlkZGVuYCB0byB0aGUgY2xpZW50LCB3aXRob3V0IGV2ZW4gZ2l2aW5nCithbiBvcHBvcnR1bml0eSBmb3IgYXV0aGVudGljYXRpb24uCisrCiBUbyByZXF1aXJlIGF1dGhlbnRpY2F0aW9uIGZvciBib3RoIHJlYWRzIGFuZCB3cml0ZXMsIHVzZSBhIExvY2F0aW9uCiBkaXJlY3RpdmUgYXJvdW5kIHRoZSByZXBvc2l0b3J5LCBvciBvbmUgb2YgaXRzIHBhcmVudCBkaXJlY3RvcmllczoKICsKQEAgLTE1OCw2ICsxOTAsNTQgQEAKIFNjcmlwdEFsaWFzIC9naXQvIC92YXIvd3d3L2NnaS1iaW4vZ2l0d2ViLmNnaS8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorTGlnaHR0cGQ6OgorCUVuc3VyZSB0aGF0IGBtb2RfY2dpYCwgYG1vZF9hbGlhcywgYG1vZF9hdXRoYCwgYG1vZF9zZXRlbnZgIGFyZQorCWxvYWRlZCwgdGhlbiBzZXQgYEdJVF9QUk9KRUNUX1JPT1RgIGFwcHJvcHJpYXRlbHkgYW5kIHJlZGlyZWN0CisJYWxsIHJlcXVlc3RzIHRvIHRoZSBDR0k6CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithbGlhcy51cmwgKz0gKCAiL2dpdCIgPT4gIi91c3IvbGliL2dpdC1jb3JlL2dpdC1odHRwLWJhY2tlbmQiICkKKyRIVFRQWyJ1cmwiXSA9fiAiXi9naXQiIHsKKwljZ2kuYXNzaWduID0gKCIiID0+ICIiKQorCXNldGVudi5hZGQtZW52aXJvbm1lbnQgPSAoCisJCSJHSVRfUFJPSkVDVF9ST09UIiA9PiAiL3Zhci93d3cvZ2l0IiwKKwkJIkdJVF9IVFRQX0VYUE9SVF9BTEwiID0+ICIiCisJKQorfQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKworVG8gZW5hYmxlIGFub255bW91cyByZWFkIGFjY2VzcyBidXQgYXV0aGVudGljYXRlZCB3cml0ZSBhY2Nlc3M6CisrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskSFRUUFsicXVlcnlzdHJpbmciXSA9fiAic2VydmljZT1naXQtcmVjZWl2ZS1wYWNrIiB7CisJaW5jbHVkZSAiZ2l0LWF1dGguY29uZiIKK30KKyRIVFRQWyJ1cmwiXSA9fiAiXi9naXQvLiovZ2l0LXJlY2VpdmUtcGFjayQiIHsKKwlpbmNsdWRlICJnaXQtYXV0aC5jb25mIgorfQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKword2hlcmUgYGdpdC1hdXRoLmNvbmZgIGxvb2tzIHNvbWV0aGluZyBsaWtlOgorKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYXV0aC5yZXF1aXJlID0gKAorCSIvIiA9PiAoCisJCSJtZXRob2QiID0+ICJiYXNpYyIsCisJCSJyZWFsbSIgPT4gIkdpdCBBY2Nlc3MiLAorCQkicmVxdWlyZSIgPT4gInZhbGlkLXVzZXIiCisJICAgICAgICkKKykKKyMgLi4uYW5kIHNldCB1cCBhdXRoLmJhY2tlbmQgaGVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKworVG8gcmVxdWlyZSBhdXRoZW50aWNhdGlvbiBmb3IgYm90aCByZWFkcyBhbmQgd3JpdGVzOgorKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJEhUVFBbInVybCJdID1+ICJeL2dpdC9wcml2YXRlIiB7CisJaW5jbHVkZSAiZ2l0LWF1dGguY29uZiIKK30KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogCiBFTlZJUk9OTUVOVAogLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWh0dHAtZmV0Y2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1mZXRjaC50eHQKaW5kZXggMDcwY2QxZS4uMjFhMzNkMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1mZXRjaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtaHR0cC1mZXRjaC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1odHRwLWZldGNoIC0gRG93bmxvYWQgZnJvbSBhIHJlbW90ZSBnaXQgcmVwb3NpdG9yeSB2aWEgSFRUUAorZ2l0LWh0dHAtZmV0Y2ggLSBEb3dubG9hZCBmcm9tIGEgcmVtb3RlIEdpdCByZXBvc2l0b3J5IHZpYSBIVFRQCiAKIAogU1lOT1BTSVMKQEAgLTEzLDcgKzEzLDcgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1Eb3dubG9hZHMgYSByZW1vdGUgZ2l0IHJlcG9zaXRvcnkgdmlhIEhUVFAuCitEb3dubG9hZHMgYSByZW1vdGUgR2l0IHJlcG9zaXRvcnkgdmlhIEhUVFAuCiAKICpOT1RFKjogdXNlIG9mIHRoaXMgY29tbWFuZCB3aXRob3V0IC1hIGlzIGRlcHJlY2F0ZWQuICBUaGUgLWEKIGJlaGF2aW91ciB3aWxsIGJlY29tZSB0aGUgZGVmYXVsdCBpbiBhIGZ1dHVyZSByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtaW5kZXgtcGFjay50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1pbmRleC1wYWNrLnR4dAppbmRleCAzOWU2ZDBkLi43YTRlMDU1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1pbmRleC1wYWNrLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1pbmRleC1wYWNrLnR4dApAQCAtMTksNyArMTksNyBAQAogUmVhZHMgYSBwYWNrZWQgYXJjaGl2ZSAoLnBhY2spIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlLCBhbmQKIGJ1aWxkcyBhIHBhY2sgaW5kZXggZmlsZSAoLmlkeCkgZm9yIGl0LiAgVGhlIHBhY2tlZCBhcmNoaXZlCiB0b2dldGhlciB3aXRoIHRoZSBwYWNrIGluZGV4IGNhbiB0aGVuIGJlIHBsYWNlZCBpbiB0aGUKLW9iamVjdHMvcGFjay8gZGlyZWN0b3J5IG9mIGEgZ2l0IHJlcG9zaXRvcnkuCitvYmplY3RzL3BhY2svIGRpcmVjdG9yeSBvZiBhIEdpdCByZXBvc2l0b3J5LgogCiAKIE9QVElPTlMKQEAgLTM5LDcgKzM5LDcgQEAKIAlXaGVuIHRoaXMgZmxhZyBpcyBwcm92aWRlZCwgdGhlIHBhY2sgaXMgcmVhZCBmcm9tIHN0ZGluCiAJaW5zdGVhZCBhbmQgYSBjb3B5IGlzIHRoZW4gd3JpdHRlbiB0byA8cGFjay1maWxlPi4gSWYKIAk8cGFjay1maWxlPiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgcGFjayBpcyB3cml0dGVuIHRvCi0Jb2JqZWN0cy9wYWNrLyBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgZ2l0IHJlcG9zaXRvcnkgd2l0aAorCW9iamVjdHMvcGFjay8gZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50IEdpdCByZXBvc2l0b3J5IHdpdGgKIAlhIGRlZmF1bHQgbmFtZSBkZXRlcm1pbmVkIGZyb20gdGhlIHBhY2sgY29udGVudC4gIElmCiAJPHBhY2stZmlsZT4gaXMgbm90IHNwZWNpZmllZCBjb25zaWRlciB1c2luZyAtLWtlZXAgdG8KIAlwcmV2ZW50IGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB0aGlzIHByb2Nlc3MgYW5kCkBAIC03NCw2ICs3NCw5IEBACiAtLXN0cmljdDo6CiAJRGllLCBpZiB0aGUgcGFjayBjb250YWlucyBicm9rZW4gb2JqZWN0cyBvciBsaW5rcy4KIAorLS1jaGVjay1zZWxmLWNvbnRhaW5lZC1hbmQtY29ubmVjdGVkOjoKKwlEaWUgaWYgdGhlIHBhY2sgY29udGFpbnMgYnJva2VuIGxpbmtzLiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisKIC0tdGhyZWFkcz08bj46OgogCVNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRocmVhZHMgdG8gc3Bhd24gd2hlbiByZXNvbHZpbmcKIAlkZWx0YXMuIFRoaXMgcmVxdWlyZXMgdGhhdCBpbmRleC1wYWNrIGJlIGNvbXBpbGVkIHdpdGgKQEAgLTgxLDcgKzg0LDcgQEAKIAlUaGlzIGlzIG1lYW50IHRvIHJlZHVjZSBwYWNraW5nIHRpbWUgb24gbXVsdGlwcm9jZXNzb3IKIAltYWNoaW5lcy4gVGhlIHJlcXVpcmVkIGFtb3VudCBvZiBtZW1vcnkgZm9yIHRoZSBkZWx0YSBzZWFyY2gKIAl3aW5kb3cgaXMgaG93ZXZlciBtdWx0aXBsaWVkIGJ5IHRoZSBudW1iZXIgb2YgdGhyZWFkcy4KLQlTcGVjaWZ5aW5nIDAgd2lsbCBjYXVzZSBnaXQgdG8gYXV0by1kZXRlY3QgdGhlIG51bWJlciBvZiBDUFUncworCVNwZWNpZnlpbmcgMCB3aWxsIGNhdXNlIEdpdCB0byBhdXRvLWRldGVjdCB0aGUgbnVtYmVyIG9mIENQVSdzCiAJYW5kIHVzZSBtYXhpbXVtIDMgdGhyZWFkcy4KIAogCkBAIC04OSw3ICs5Miw3IEBACiAtLS0tCiAKIE9uY2UgdGhlIGluZGV4IGhhcyBiZWVuIGNyZWF0ZWQsIHRoZSBsaXN0IG9mIG9iamVjdCBuYW1lcyBpcyBzb3J0ZWQKLWFuZCB0aGUgU0hBMSBoYXNoIG9mIHRoYXQgbGlzdCBpcyBwcmludGVkIHRvIHN0ZG91dC4gSWYgLS1zdGRpbiB3YXMKK2FuZCB0aGUgU0hBLTEgaGFzaCBvZiB0aGF0IGxpc3QgaXMgcHJpbnRlZCB0byBzdGRvdXQuIElmIC0tc3RkaW4gd2FzCiBhbHNvIHVzZWQgdGhlbiB0aGlzIGlzIHByZWZpeGVkIGJ5IGVpdGhlciAicGFja1x0Iiwgb3IgImtlZXBcdCIgaWYgYQogbmV3IC5rZWVwIGZpbGUgd2FzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLiBUaGlzIGlzIHVzZWZ1bCB0byByZW1vdmUgYQogLmtlZXAgZmlsZSB1c2VkIGFzIGEgbG9jayB0byBwcmV2ZW50IHRoZSByYWNlIHdpdGggJ2dpdCByZXBhY2snCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1pbml0LWRiLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQtZGIudHh0CmluZGV4IGEyMWUzNDYuLjY0OGE2Y2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWluaXQtZGIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQtZGIudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtaW5pdC1kYiAtIENyZWF0ZXMgYW4gZW1wdHkgZ2l0IHJlcG9zaXRvcnkKK2dpdC1pbml0LWRiIC0gQ3JlYXRlcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeQogCiAKIFNZTk9QU0lTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1pbml0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQudHh0CmluZGV4IDlhYzJiYmEuLmFmZDcyMWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWluaXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWluaXQudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtaW5pdCAtIENyZWF0ZSBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lCitnaXQtaW5pdCAtIENyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lCiAKIAogU1lOT1BTSVMKQEAgLTE3LDcgKzE3LDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1UaGlzIGNvbW1hbmQgY3JlYXRlcyBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSAtIGJhc2ljYWxseSBhIGAuZ2l0YAorVGhpcyBjb21tYW5kIGNyZWF0ZXMgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgLSBiYXNpY2FsbHkgYSBgLmdpdGAKIGRpcmVjdG9yeSB3aXRoIHN1YmRpcmVjdG9yaWVzIGZvciBgb2JqZWN0c2AsIGByZWZzL2hlYWRzYCwKIGByZWZzL3RhZ3NgLCBhbmQgdGVtcGxhdGUgZmlsZXMuICBBbiBpbml0aWFsIGBIRUFEYCBmaWxlIHRoYXQKIHJlZmVyZW5jZXMgdGhlIEhFQUQgb2YgdGhlIG1hc3RlciBicmFuY2ggaXMgYWxzbyBjcmVhdGVkLgpAQCAtNTgsMTkgKzU4LDE5IEBACiAtLXNlcGFyYXRlLWdpdC1kaXI9PGdpdCBkaXI+OjoKIAogSW5zdGVhZCBvZiBpbml0aWFsaXppbmcgdGhlIHJlcG9zaXRvcnkgd2hlcmUgaXQgaXMgc3VwcG9zZWQgdG8gYmUsCi1wbGFjZSBhIGZpbGVzeXRlbS1hZ25vc3RpYyBnaXQgc3ltYm9saWMgbGluayB0aGVyZSwgcG9pbnRpbmcgdG8gdGhlCi1zcGVjaWZpZWQgZ2l0IHBhdGgsIGFuZCBpbml0aWFsaXplIGEgZ2l0IHJlcG9zaXRvcnkgYXQgdGhlIHBhdGguIFRoZQotcmVzdWx0IGlzIGdpdCByZXBvc2l0b3J5IGNhbiBiZSBzZXBhcmF0ZWQgZnJvbSB3b3JraW5nIHRyZWUuIElmIHRoaXMKK3BsYWNlIGEgZmlsZXN5dGVtLWFnbm9zdGljIEdpdCBzeW1ib2xpYyBsaW5rIHRoZXJlLCBwb2ludGluZyB0byB0aGUKK3NwZWNpZmllZCBwYXRoLCBhbmQgaW5pdGlhbGl6ZSBhIEdpdCByZXBvc2l0b3J5IGF0IHRoZSBwYXRoLiBUaGUKK3Jlc3VsdCBpcyBHaXQgcmVwb3NpdG9yeSBjYW4gYmUgc2VwYXJhdGVkIGZyb20gd29ya2luZyB0cmVlLiBJZiB0aGlzCiBpcyByZWluaXRpYWxpemF0aW9uLCB0aGUgcmVwb3NpdG9yeSB3aWxsIGJlIG1vdmVkIHRvIHRoZSBzcGVjaWZpZWQKIHBhdGguCiAKIC0tc2hhcmVkWz0oZmFsc2V8dHJ1ZXx1bWFza3xncm91cHxhbGx8d29ybGR8ZXZlcnlib2R5fDB4eHgpXTo6CiAKLVNwZWNpZnkgdGhhdCB0aGUgZ2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2Vycy4gIFRoaXMKK1NwZWNpZnkgdGhhdCB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2Vycy4gIFRoaXMKIGFsbG93cyB1c2VycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgZ3JvdXAgdG8gcHVzaCBpbnRvIHRoYXQKIHJlcG9zaXRvcnkuICBXaGVuIHNwZWNpZmllZCwgdGhlIGNvbmZpZyB2YXJpYWJsZSAiY29yZS5zaGFyZWRSZXBvc2l0b3J5IiBpcwogc2V0IHNvIHRoYXQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHVuZGVyIGAkR0lUX0RJUmAgYXJlIGNyZWF0ZWQgd2l0aCB0aGUKLXJlcXVlc3RlZCBwZXJtaXNzaW9ucy4gIFdoZW4gbm90IHNwZWNpZmllZCwgZ2l0IHdpbGwgdXNlIHBlcm1pc3Npb25zIHJlcG9ydGVkCityZXF1ZXN0ZWQgcGVybWlzc2lvbnMuICBXaGVuIG5vdCBzcGVjaWZpZWQsIEdpdCB3aWxsIHVzZSBwZXJtaXNzaW9ucyByZXBvcnRlZAogYnkgdW1hc2soMikuCiAKIFRoZSBvcHRpb24gY2FuIGhhdmUgdGhlIGZvbGxvd2luZyB2YWx1ZXMsIGRlZmF1bHRpbmcgdG8gJ2dyb3VwJyBpZiBubyB2YWx1ZQpAQCAtMTMwLDcgKzEzMCw3IEBACiBFWEFNUExFUwogLS0tLS0tLS0KIAotU3RhcnQgYSBuZXcgZ2l0IHJlcG9zaXRvcnkgZm9yIGFuIGV4aXN0aW5nIGNvZGUgYmFzZTo6CitTdGFydCBhIG5ldyBHaXQgcmVwb3NpdG9yeSBmb3IgYW4gZXhpc3RpbmcgY29kZSBiYXNlOjoKICsKIC0tLS0tLS0tLS0tLS0tLS0KICQgY2QgL3BhdGgvdG8vbXkvY29kZWJhc2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1sb2cudHh0CmluZGV4IDU4NWRhYzQuLjJlYTc5YmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dApAQCAtOSw3ICs5LDcgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBsb2cnIFs8b3B0aW9ucz5dIFs8c2luY2U+Li48dW50aWw+XSBbW1wtLV0gPHBhdGg+Li4uXQorJ2dpdCBsb2cnIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbW1wtLV0gPHBhdGg+Li4uXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTI0LDEzICsyNCw2IEBACiBPUFRJT05TCiAtLS0tLS0tCiAKLTxzaW5jZT4uLjx1bnRpbD46OgotCVNob3cgb25seSBjb21taXRzIGJldHdlZW4gdGhlIG5hbWVkIHR3byBjb21taXRzLiAgV2hlbgotCWVpdGhlciA8c2luY2U+IG9yIDx1bnRpbD4gaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8KLQlgSEVBRGAsIGkuZS4gdGhlIHRpcCBvZiB0aGUgY3VycmVudCBicmFuY2guCi0JRm9yIGEgbW9yZSBjb21wbGV0ZSBsaXN0IG9mIHdheXMgdG8gc3BlbGwgPHNpbmNlPgotCWFuZCA8dW50aWw+LCBzZWUgbGlua2dpdDpnaXRyZXZpc2lvbnNbN10uCi0KIC0tZm9sbG93OjoKIAlDb250aW51ZSBsaXN0aW5nIHRoZSBoaXN0b3J5IG9mIGEgZmlsZSBiZXlvbmQgcmVuYW1lcwogCSh3b3JrcyBvbmx5IGZvciBhIHNpbmdsZSBmaWxlKS4KQEAgLTQ3LDYgKzQwLDExIEBACiAJUHJpbnQgb3V0IHRoZSByZWYgbmFtZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGJ5IHdoaWNoIGVhY2gKIAljb21taXQgd2FzIHJlYWNoZWQuCiAKKy0tdXNlLW1haWxtYXA6OgorCVVzZSBtYWlsbWFwIGZpbGUgdG8gbWFwIGF1dGhvciBhbmQgY29tbWl0dGVyIG5hbWVzIGFuZCBlbWFpbAorCXRvIGNhbm9uaWNhbCByZWFsIG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMuIFNlZQorCWxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdLgorCiAtLWZ1bGwtZGlmZjo6CiAJV2l0aG91dCB0aGlzIGZsYWcsICJnaXQgbG9nIC1wIDxwYXRoPi4uLiIgc2hvd3MgY29tbWl0cyB0aGF0CiAJdG91Y2ggdGhlIHNwZWNpZmllZCBwYXRocywgYW5kIGRpZmZzIGFib3V0IHRoZSBzYW1lIHNwZWNpZmllZApAQCAtNTksMTkgKzU3LDQxIEBACiAKIC0tbG9nLXNpemU6OgogCUJlZm9yZSB0aGUgbG9nIG1lc3NhZ2UgcHJpbnQgb3V0IGl0cyBzaXplIGluIGJ5dGVzLiBJbnRlbmRlZAotCW1haW5seSBmb3IgcG9yY2VsYWluIHRvb2xzIGNvbnN1bXB0aW9uLiBJZiBnaXQgaXMgdW5hYmxlIHRvCisJbWFpbmx5IGZvciBwb3JjZWxhaW4gdG9vbHMgY29uc3VtcHRpb24uIElmIEdpdCBpcyB1bmFibGUgdG8KIAlwcm9kdWNlIGEgdmFsaWQgdmFsdWUgc2l6ZSBpcyBzZXQgdG8gemVyby4KIAlOb3RlIHRoYXQgb25seSBtZXNzYWdlIGlzIGNvbnNpZGVyZWQsIGlmIGFsc28gYSBkaWZmIGlzIHNob3duCiAJaXRzIHNpemUgaXMgbm90IGluY2x1ZGVkLgogCistTCA8c3RhcnQ+LDxlbmQ+OjxmaWxlPiwgLUwgOjxyZWdleD46PGZpbGU+OjoKKworCVRyYWNlIHRoZSBldm9sdXRpb24gb2YgdGhlIGxpbmUgcmFuZ2UgZ2l2ZW4gYnkgIjxzdGFydD4sPGVuZD4iCisJKG9yIHRoZSBmdW5jbmFtZSByZWdleCA8cmVnZXg+KSB3aXRoaW4gdGhlIDxmaWxlPi4gIFlvdSBtYXkKKwlub3QgZ2l2ZSBhbnkgcGF0aHNwZWMgbGltaXRlcnMuICBUaGlzIGlzIGN1cnJlbnRseSBsaW1pdGVkIHRvCisJYSB3YWxrIHN0YXJ0aW5nIGZyb20gYSBzaW5nbGUgcmV2aXNpb24sIGkuZS4sIHlvdSBtYXkgb25seQorCWdpdmUgemVybyBvciBvbmUgcG9zaXRpdmUgcmV2aXNpb24gYXJndW1lbnRzLgorCVlvdSBjYW4gc3BlY2lmeSB0aGlzIG9wdGlvbiBtb3JlIHRoYW4gb25jZS4KKysKKzxzdGFydD4gYW5kIDxlbmQ+IGNhbiB0YWtlIG9uZSBvZiB0aGVzZSBmb3JtczoKKworaW5jbHVkZTo6bGluZS1yYW5nZS1mb3JtYXQudHh0W10KKworPHJldmlzaW9uIHJhbmdlPjo6CisJU2hvdyBvbmx5IGNvbW1pdHMgaW4gdGhlIHNwZWNpZmllZCByZXZpc2lvbiByYW5nZS4gIFdoZW4gbm8KKwk8cmV2aXNpb24gcmFuZ2U+IGlzIHNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gYEhFQURgIChpLmUuIHRoZQorCXdob2xlIGhpc3RvcnkgbGVhZGluZyB0byB0aGUgY3VycmVudCBjb21taXQpLiAgYG9yaWdpbi4uSEVBRGAKKwlzcGVjaWZpZXMgYWxsIHRoZSBjb21taXRzIHJlYWNoYWJsZSBmcm9tIHRoZSBjdXJyZW50IGNvbW1pdAorCShpLmUuIGBIRUFEYCksIGJ1dCBub3QgZnJvbSBgb3JpZ2luYC4gRm9yIGEgY29tcGxldGUgbGlzdCBvZgorCXdheXMgdG8gc3BlbGwgPHJldmlzaW9uIHJhbmdlPiwgc2VlIHRoZSAiU3BlY2lmeWluZyBSYW5nZXMiCisJc2VjdGlvbiBvZiBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XS4KKwogW1wtLV0gPHBhdGg+Li4uOjoKIAlTaG93IG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzCiAJdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHBhdGhzIGNhbWUgdG8gYmUuICBTZWUgIkhpc3RvcnkKIAlTaW1wbGlmaWNhdGlvbiIgYmVsb3cgZm9yIGRldGFpbHMgYW5kIG90aGVyIHNpbXBsaWZpY2F0aW9uCiAJbW9kZXMuCiArCi1UbyBwcmV2ZW50IGNvbmZ1c2lvbiB3aXRoIG9wdGlvbnMgYW5kIGJyYW5jaCBuYW1lcywgcGF0aHMgbWF5IG5lZWQgdG8KLWJlIHByZWZpeGVkIHdpdGggIlwtLSAiIHRvIHNlcGFyYXRlIHRoZW0gZnJvbSBvcHRpb25zIG9yIHJlZm5hbWVzLgorUGF0aHMgbWF5IG5lZWQgdG8gYmUgcHJlZml4ZWQgd2l0aCAiXC0tICIgdG8gc2VwYXJhdGUgdGhlbSBmcm9tCitvcHRpb25zIG9yIHRoZSByZXZpc2lvbiByYW5nZSwgd2hlbiBjb25mdXNpb24gYXJpc2VzLgogCiBpbmNsdWRlOjpyZXYtbGlzdC1vcHRpb25zLnR4dFtdCiAKQEAgLTEwOCw5ICsxMjgsOSBAQAogCWluIHRoZSAicmVsZWFzZSIgYnJhbmNoLCBhbG9uZyB3aXRoIHRoZSBsaXN0IG9mIHBhdGhzCiAJZWFjaCBjb21taXQgbW9kaWZpZXMuCiAKLWBnaXQgbG9nIC0tZm9sbG93IGJ1aWx0aW4tcmV2LWxpc3QuY2A6OgorYGdpdCBsb2cgLS1mb2xsb3cgYnVpbHRpbi9yZXYtbGlzdC5jYDo6CiAKLQlTaG93cyB0aGUgY29tbWl0cyB0aGF0IGNoYW5nZWQgYnVpbHRpbi1yZXYtbGlzdC5jLCBpbmNsdWRpbmcKKwlTaG93cyB0aGUgY29tbWl0cyB0aGF0IGNoYW5nZWQgYnVpbHRpbi9yZXYtbGlzdC5jLCBpbmNsdWRpbmcKIAl0aG9zZSBjb21taXRzIHRoYXQgb2NjdXJyZWQgYmVmb3JlIHRoZSBmaWxlIHdhcyBnaXZlbiBpdHMKIAlwcmVzZW50IG5hbWUuCiAKQEAgLTEzMyw2ICsxNTMsMTEgQEAKIAlUaGlzIG1ha2VzIHNlbnNlIG9ubHkgd2hlbiBmb2xsb3dpbmcgYSBzdHJpY3QgcG9saWN5IG9mIG1lcmdpbmcgYWxsCiAJdG9waWMgYnJhbmNoZXMgd2hlbiBzdGF5aW5nIG9uIGEgc2luZ2xlIGludGVncmF0aW9uIGJyYW5jaC4KIAorZ2l0IGxvZyAtTCAnL2ludCBtYWluLycsL159LzptYWluLmM6OgorCisJU2hvd3MgaG93IHRoZSBmdW5jdGlvbiBgbWFpbigpYCBpbiB0aGUgZmlsZSAnbWFpbi5jJyBldm9sdmVkCisJb3ZlciB0aW1lLgorCiBgZ2l0IGxvZyAtM2A6OgogCUxpbWl0cyB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgdG8gc2hvdyB0byAzLgogCkBAIC0xNjcsNyArMTkyLDcgQEAKIAlgZ2l0IGxvZyAtcGAgb3V0cHV0IHdvdWxkIGJlIHNob3duIHdpdGhvdXQgYSBkaWZmIGF0dGFjaGVkLgogCVRoZSBkZWZhdWx0IGlzIGB0cnVlYC4KIAotbWFpbG1hcC5maWxlOjoKK21haWxtYXAuKjo6CiAJU2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdLgogCiBub3Rlcy5kaXNwbGF5UmVmOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWxzLWZpbGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWxzLWZpbGVzLnR4dAppbmRleCA0YjI4MjkyLi5jMDg1NmE2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1scy1maWxlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtbHMtZmlsZXMudHh0CkBAIC05Miw3ICs5Miw3IEBACiAJZGlyZWN0b3J5IGFuZCBpdHMgc3ViZGlyZWN0b3JpZXMgaW4gPGZpbGU+LgogCiAtLWV4Y2x1ZGUtc3RhbmRhcmQ6OgotCUFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnM6IC5naXQvaW5mby9leGNsdWRlLCAuZ2l0aWdub3JlCisJQWRkIHRoZSBzdGFuZGFyZCBHaXQgZXhjbHVzaW9uczogLmdpdC9pbmZvL2V4Y2x1ZGUsIC5naXRpZ25vcmUKIAlpbiBlYWNoIGRpcmVjdG9yeSwgYW5kIHRoZSB1c2VyJ3MgZ2xvYmFsIGV4Y2x1c2lvbiBmaWxlLgogCiAtLWVycm9yLXVubWF0Y2g6OgpAQCAtMTY0LDcgKzE2NCw3IEBACiAnZ2l0IGxzLWZpbGVzIC0tdW5tZXJnZWQnIGFuZCAnZ2l0IGxzLWZpbGVzIC0tc3RhZ2UnIGNhbiBiZSB1c2VkIHRvIGV4YW1pbmUKIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHVubWVyZ2VkIHBhdGhzLgogCi1Gb3IgYW4gdW5tZXJnZWQgcGF0aCwgaW5zdGVhZCBvZiByZWNvcmRpbmcgYSBzaW5nbGUgbW9kZS9TSEExIHBhaXIsCitGb3IgYW4gdW5tZXJnZWQgcGF0aCwgaW5zdGVhZCBvZiByZWNvcmRpbmcgYSBzaW5nbGUgbW9kZS9TSEEtMSBwYWlyLAogdGhlIGluZGV4IHJlY29yZHMgdXAgdG8gdGhyZWUgc3VjaCBwYWlyczsgb25lIGZyb20gdHJlZSBPIGluIHN0YWdlCiAxLCBBIGluIHN0YWdlIDIsIGFuZCBCIGluIHN0YWdlIDMuICBUaGlzIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5CiB0aGUgdXNlciAob3IgdGhlIHBvcmNlbGFpbikgdG8gc2VlIHdoYXQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVjb3JkZWQgYXQgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tYWlsaW5mby50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tYWlsaW5mby50eHQKaW5kZXggOTdlN2E4ZS4uMTY0YTNjNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWFpbGluZm8udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1haWxpbmZvLnR4dApAQCAtOSw3ICs5LDcgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBtYWlsaW5mbycgWy1rfC1iXSBbLXUgfCAtLWVuY29kaW5nPTxlbmNvZGluZz4gfCAtbl0gWy0tc2Npc3NvcnNdIDxtc2c+IDxwYXRjaD4KKydnaXQgbWFpbGluZm8nIFsta3wtYl0gWy11IHwgLS1lbmNvZGluZz08ZW5jb2Rpbmc+IHwgLW5dIFstLVtuby1dc2Npc3NvcnNdIDxtc2c+IDxwYXRjaD4KIAogCiBERVNDUklQVElPTgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtaW5kZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UtaW5kZXgudHh0CmluZGV4IGUwZGYxYjMuLjAyNjc2ZmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLWluZGV4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS1pbmRleC50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogVGhpcyBsb29rcyB1cCB0aGUgPGZpbGU+KHMpIGluIHRoZSBpbmRleCBhbmQsIGlmIHRoZXJlIGFyZSBhbnkgbWVyZ2UKLWVudHJpZXMsIHBhc3NlcyB0aGUgU0hBMSBoYXNoIGZvciB0aG9zZSBmaWxlcyBhcyBhcmd1bWVudHMgMSwgMiwgMyAoZW1wdHkKK2VudHJpZXMsIHBhc3NlcyB0aGUgU0hBLTEgaGFzaCBmb3IgdGhvc2UgZmlsZXMgYXMgYXJndW1lbnRzIDEsIDIsIDMgKGVtcHR5CiBhcmd1bWVudCBpZiBubyBmaWxlKSwgYW5kIDxmaWxlPiBhcyBhcmd1bWVudCA0LiAgRmlsZSBtb2RlcyBmb3IgdGhlIHRocmVlCiBmaWxlcyBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyA1LCA2IGFuZCA3LgogCkBAIC00MSwxMyArNDEsMTMgQEAKIHByb2Nlc3NlcyB0aGVtIGluIHR1cm4gb25seSBzdG9wcGluZyBpZiBtZXJnZSByZXR1cm5zIGEgbm9uLXplcm8gZXhpdAogY29kZS4KIAotVHlwaWNhbGx5IHRoaXMgaXMgcnVuIHdpdGggYSBzY3JpcHQgY2FsbGluZyBnaXQncyBpbWl0YXRpb24gb2YKK1R5cGljYWxseSB0aGlzIGlzIHJ1biB3aXRoIGEgc2NyaXB0IGNhbGxpbmcgR2l0J3MgaW1pdGF0aW9uIG9mCiB0aGUgJ21lcmdlJyBjb21tYW5kIGZyb20gdGhlIFJDUyBwYWNrYWdlLgogCiBBIHNhbXBsZSBzY3JpcHQgY2FsbGVkICdnaXQgbWVyZ2Utb25lLWZpbGUnIGlzIGluY2x1ZGVkIGluIHRoZQogZGlzdHJpYnV0aW9uLgogCi1BTEVSVCBBTEVSVCBBTEVSVCEgVGhlIGdpdCAibWVyZ2Ugb2JqZWN0IG9yZGVyIiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKK0FMRVJUIEFMRVJUIEFMRVJUISBUaGUgR2l0ICJtZXJnZSBvYmplY3Qgb3JkZXIiIGlzIGRpZmZlcmVudCBmcm9tIHRoZQogUkNTICdtZXJnZScgcHJvZ3JhbSBtZXJnZSBvYmplY3Qgb3JkZXIuIEluIHRoZSBhYm92ZSBvcmRlcmluZywgdGhlCiBvcmlnaW5hbCBpcyBmaXJzdC4gQnV0IHRoZSBhcmd1bWVudCBvcmRlciB0byB0aGUgMy13YXkgbWVyZ2UgcHJvZ3JhbQogJ21lcmdlJyBpcyB0byBoYXZlIHRoZSBvcmlnaW5hbCBpbiB0aGUgbWlkZGxlLiBEb24ndCBhc2sgbWUgd2h5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2UudHh0CmluZGV4IDc3ODA4NjMuLjhjN2YyZjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZS50eHQKQEAgLTU2LDggKzU2LDggQEAKIHdhcyBzdGFydGVkKSwgJ2dpdCBtZXJnZSAtLWFib3J0JyB3aWxsIGluIHNvbWUgY2FzZXMgYmUgdW5hYmxlIHRvCiByZWNvbnN0cnVjdCB0aGUgb3JpZ2luYWwgKHByZS1tZXJnZSkgY2hhbmdlcy4gVGhlcmVmb3JlOgogCi0qV2FybmluZyo6IFJ1bm5pbmcgJ2dpdCBtZXJnZScgd2l0aCB1bmNvbW1pdHRlZCBjaGFuZ2VzIGlzCi1kaXNjb3VyYWdlZDogd2hpbGUgcG9zc2libGUsIGl0IGxlYXZlcyB5b3UgaW4gYSBzdGF0ZSB0aGF0IGlzIGhhcmQgdG8KKypXYXJuaW5nKjogUnVubmluZyAnZ2l0IG1lcmdlJyB3aXRoIG5vbi10cml2aWFsIHVuY29tbWl0dGVkIGNoYW5nZXMgaXMKK2Rpc2NvdXJhZ2VkOiB3aGlsZSBwb3NzaWJsZSwgaXQgbWF5IGxlYXZlIHlvdSBpbiBhIHN0YXRlIHRoYXQgaXMgaGFyZCB0bwogYmFjayBvdXQgb2YgaW4gdGhlIGNhc2Ugb2YgYSBjb25mbGljdC4KIAogCkBAIC03Niw4ICs3Niw3IEBACiB1c2VkIHRvIGdpdmUgYSBnb29kIGRlZmF1bHQgZm9yIGF1dG9tYXRlZCAnZ2l0IG1lcmdlJwogaW52b2NhdGlvbnMuCiAKLS0tcmVyZXJlLWF1dG91cGRhdGU6OgotLS1uby1yZXJlcmUtYXV0b3VwZGF0ZTo6CistLVtuby1dcmVyZXJlLWF1dG91cGRhdGU6OgogCUFsbG93IHRoZSByZXJlcmUgbWVjaGFuaXNtIHRvIHVwZGF0ZSB0aGUgaW5kZXggd2l0aCB0aGUKIAlyZXN1bHQgb2YgYXV0by1jb25mbGljdCByZXNvbHV0aW9uIGlmIHBvc3NpYmxlLgogCkBAIC0yMDIsMTAgKzIwMSwxMCBAQAogbm9uLW92ZXJsYXBwaW5nIG9uZXMgKHRoYXQgaXMsIHlvdSBjaGFuZ2VkIGFuIGFyZWEgb2YgdGhlIGZpbGUgd2hpbGUgdGhlCiBvdGhlciBzaWRlIGxlZnQgdGhhdCBhcmVhIGludGFjdCwgb3IgdmljZSB2ZXJzYSkgYXJlIGluY29ycG9yYXRlZCBpbiB0aGUKIGZpbmFsIHJlc3VsdCB2ZXJiYXRpbS4gIFdoZW4gYm90aCBzaWRlcyBtYWRlIGNoYW5nZXMgdG8gdGhlIHNhbWUgYXJlYSwKLWhvd2V2ZXIsIGdpdCBjYW5ub3QgcmFuZG9tbHkgcGljayBvbmUgc2lkZSBvdmVyIHRoZSBvdGhlciwgYW5kIGFza3MgeW91IHRvCitob3dldmVyLCBHaXQgY2Fubm90IHJhbmRvbWx5IHBpY2sgb25lIHNpZGUgb3ZlciB0aGUgb3RoZXIsIGFuZCBhc2tzIHlvdSB0bwogcmVzb2x2ZSBpdCBieSBsZWF2aW5nIHdoYXQgYm90aCBzaWRlcyBkaWQgdG8gdGhhdCBhcmVhLgogCi1CeSBkZWZhdWx0LCBnaXQgdXNlcyB0aGUgc2FtZSBzdHlsZSBhcyB0aGUgb25lIHVzZWQgYnkgdGhlICJtZXJnZSIgcHJvZ3JhbQorQnkgZGVmYXVsdCwgR2l0IHVzZXMgdGhlIHNhbWUgc3R5bGUgYXMgdGhlIG9uZSB1c2VkIGJ5IHRoZSAibWVyZ2UiIHByb2dyYW0KIGZyb20gdGhlIFJDUyBzdWl0ZSB0byBwcmVzZW50IHN1Y2ggYSBjb25mbGljdGVkIGh1bmssIGxpa2UgdGhpczoKIAogLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wtLWxpYi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wtLWxpYi50eHQKaW5kZXggZjk4YTQxYi4uMDU1NTUwYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLS1saWIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC0tbGliLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LW1lcmdldG9vbC0tbGliIC0gQ29tbW9uIGdpdCBtZXJnZSB0b29sIHNoZWxsIHNjcmlwdGxldHMKK2dpdC1tZXJnZXRvb2wtLWxpYiAtIENvbW1vbiBHaXQgbWVyZ2UgdG9vbCBzaGVsbCBzY3JpcHRsZXRzCiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtMTksNyArMTksNyBAQAogCiBUaGUgJ2dpdC1tZXJnZXRvb2x7bGl0ZGR9bGliJyBzY3JpcHRsZXQgaXMgZGVzaWduZWQgdG8gYmUgc291cmNlZCAodXNpbmcKIGAuYCkgYnkgb3RoZXIgc2hlbGwgc2NyaXB0cyB0byBzZXQgdXAgZnVuY3Rpb25zIGZvciB3b3JraW5nCi13aXRoIGdpdCBtZXJnZSB0b29scy4KK3dpdGggR2l0IG1lcmdlIHRvb2xzLgogCiBCZWZvcmUgc291cmNpbmcgJ2dpdC1tZXJnZXRvb2x7bGl0ZGR9bGliJywgeW91ciBzY3JpcHQgbXVzdCBzZXQgYFRPT0xfTU9ERWAKIHRvIGRlZmluZSB0aGUgb3BlcmF0aW9uIG1vZGUgZm9yIHRoZSBmdW5jdGlvbnMgbGlzdGVkIGJlbG93LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW1lcmdldG9vbC50eHQKaW5kZXggNmI1NjNjNS4uMDcxMzdmMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWVyZ2V0b29sLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tZXJnZXRvb2wudHh0CkBAIC04LDcgKzgsNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IG1lcmdldG9vbCcgWy0tdG9vbD08dG9vbD5dIFsteXwtLW5vLXByb21wdHwtLXByb21wdF0gWzxmaWxlPi4uLl0KKydnaXQgbWVyZ2V0b29sJyBbLS10b29sPTx0b29sPl0gWy15IHwgLS1bbm8tXXByb21wdF0gWzxmaWxlPi4uLl0KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ta3RhZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ta3RhZy50eHQKaW5kZXggNjVlMTY3YS4uM2NhMTU4YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbWt0YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW1rdGFnLnR4dApAQCAtMjgsOSArMjgsOSBAQAogICB0YWdnZXIgPHRhZ2dlcj4KIAogZm9sbG93ZWQgYnkgc29tZSAnb3B0aW9uYWwnIGZyZWUtZm9ybSBtZXNzYWdlIChzb21lIHRhZ3MgY3JlYXRlZAotYnkgb2xkZXIgZ2l0IG1heSBub3QgaGF2ZSBgdGFnZ2VyYCBsaW5lKS4gIFRoZSBtZXNzYWdlLCB3aGVuCitieSBvbGRlciBHaXQgbWF5IG5vdCBoYXZlIGB0YWdnZXJgIGxpbmUpLiAgVGhlIG1lc3NhZ2UsIHdoZW4KIGV4aXN0cywgaXMgc2VwYXJhdGVkIGJ5IGEgYmxhbmsgbGluZSBmcm9tIHRoZSBoZWFkZXIuICBUaGUKLW1lc3NhZ2UgcGFydCBtYXkgY29udGFpbiBhIHNpZ25hdHVyZSB0aGF0IGdpdCBpdHNlbGYgZG9lc24ndAorbWVzc2FnZSBwYXJ0IG1heSBjb250YWluIGEgc2lnbmF0dXJlIHRoYXQgR2l0IGl0c2VsZiBkb2Vzbid0CiBjYXJlIGFib3V0LCBidXQgdGhhdCBjYW4gYmUgdmVyaWZpZWQgd2l0aCBncGcuCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbXYudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbXYudHh0CmluZGV4IGUzYzg0NDguLmU5M2ZjYjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW12LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1tdi50eHQKQEAgLTM0LDcgKzM0LDcgQEAKIC1rOjoKICAgICAgICAgU2tpcCBtb3ZlIG9yIHJlbmFtZSBhY3Rpb25zIHdoaWNoIHdvdWxkIGxlYWQgdG8gYW4gZXJyb3IKIAljb25kaXRpb24uIEFuIGVycm9yIGhhcHBlbnMgd2hlbiBhIHNvdXJjZSBpcyBuZWl0aGVyIGV4aXN0aW5nIG5vcgotICAgICAgICBjb250cm9sbGVkIGJ5IEdJVCwgb3Igd2hlbiBpdCB3b3VsZCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcKKwljb250cm9sbGVkIGJ5IEdpdCwgb3Igd2hlbiBpdCB3b3VsZCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcKICAgICAgICAgZmlsZSB1bmxlc3MgJy1mJyBpcyBnaXZlbi4KIC1uOjoKIC0tZHJ5LXJ1bjo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1wNC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1wNC50eHQKaW5kZXggYmVmZjYyMi4uYzU3OWZiYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcDQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXA0LnR4dApAQCAtMTgsMTMgKzE4LDEzIEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIFRoaXMgY29tbWFuZCBwcm92aWRlcyBhIHdheSB0byBpbnRlcmFjdCB3aXRoIHA0IHJlcG9zaXRvcmllcwotdXNpbmcgZ2l0LgordXNpbmcgR2l0LgogCi1DcmVhdGUgYSBuZXcgZ2l0IHJlcG9zaXRvcnkgZnJvbSBhbiBleGlzdGluZyBwNCByZXBvc2l0b3J5IHVzaW5nCitDcmVhdGUgYSBuZXcgR2l0IHJlcG9zaXRvcnkgZnJvbSBhbiBleGlzdGluZyBwNCByZXBvc2l0b3J5IHVzaW5nCiAnZ2l0IHA0IGNsb25lJywgZ2l2aW5nIGl0IG9uZSBvciBtb3JlIHA0IGRlcG90IHBhdGhzLiAgSW5jb3Jwb3JhdGUKIG5ldyBjb21taXRzIGZyb20gcDQgY2hhbmdlcyB3aXRoICdnaXQgcDQgc3luYycuICBUaGUgJ3N5bmMnIGNvbW1hbmQKIGlzIGFsc28gdXNlZCB0byBpbmNsdWRlIG5ldyBicmFuY2hlcyBmcm9tIG90aGVyIHA0IGRlcG90IHBhdGhzLgotU3VibWl0IGdpdCBjaGFuZ2VzIGJhY2sgdG8gcDQgdXNpbmcgJ2dpdCBwNCBzdWJtaXQnLiAgVGhlIGNvbW1hbmQKK1N1Ym1pdCBHaXQgY2hhbmdlcyBiYWNrIHRvIHA0IHVzaW5nICdnaXQgcDQgc3VibWl0Jy4gIFRoZSBjb21tYW5kCiAnZ2l0IHA0IHJlYmFzZScgZG9lcyBhIHN5bmMgcGx1cyByZWJhc2VzIHRoZSBjdXJyZW50IGJyYW5jaCBvbnRvCiB0aGUgdXBkYXRlZCBwNCByZW1vdGUgYnJhbmNoLgogCkBAIC0zNyw3ICszNyw3IEBACiAkIGdpdCBwNCBjbG9uZSAvL2RlcG90L3BhdGgvcHJvamVjdAogLS0tLS0tLS0tLS0tCiAKLSogRG8gc29tZSB3b3JrIGluIHRoZSBuZXdseSBjcmVhdGVkIGdpdCByZXBvc2l0b3J5OgorKiBEbyBzb21lIHdvcmsgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgR2l0IHJlcG9zaXRvcnk6CiArCiAtLS0tLS0tLS0tLS0KICQgY2QgcHJvamVjdApAQCAtNDUsNyArNDUsNyBAQAogJCBnaXQgY29tbWl0IC1hIC1tICJlZGl0ZWQgZm9vLmgiCiAtLS0tLS0tLS0tLS0KIAotKiBVcGRhdGUgdGhlIGdpdCByZXBvc2l0b3J5IHdpdGggcmVjZW50IGNoYW5nZXMgZnJvbSBwNCwgcmViYXNpbmcgeW91cgorKiBVcGRhdGUgdGhlIEdpdCByZXBvc2l0b3J5IHdpdGggcmVjZW50IGNoYW5nZXMgZnJvbSBwNCwgcmViYXNpbmcgeW91cgogICB3b3JrIG9uIHRvcDoKICsKIC0tLS0tLS0tLS0tLQpAQCAtNjQsMjEgKzY0LDIxIEBACiAKIENsb25lCiB+fn5+fgotR2VuZXJhbGx5LCAnZ2l0IHA0IGNsb25lJyBpcyB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBnaXQgZGlyZWN0b3J5CitHZW5lcmFsbHksICdnaXQgcDQgY2xvbmUnIGlzIHVzZWQgdG8gY3JlYXRlIGEgbmV3IEdpdCBkaXJlY3RvcnkKIGZyb20gYW4gZXhpc3RpbmcgcDQgcmVwb3NpdG9yeToKIC0tLS0tLS0tLS0tLQogJCBnaXQgcDQgY2xvbmUgLy9kZXBvdC9wYXRoL3Byb2plY3QKIC0tLS0tLS0tLS0tLQogVGhpczoKIAotMS4gICBDcmVhdGVzIGFuIGVtcHR5IGdpdCByZXBvc2l0b3J5IGluIGEgc3ViZGlyZWN0b3J5IGNhbGxlZCAncHJvamVjdCcuCisxLiAgIENyZWF0ZXMgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgaW4gYSBzdWJkaXJlY3RvcnkgY2FsbGVkICdwcm9qZWN0Jy4KICsKIDIuICAgSW1wb3J0cyB0aGUgZnVsbCBjb250ZW50cyBvZiB0aGUgaGVhZCByZXZpc2lvbiBmcm9tIHRoZSBnaXZlbiBwNAotZGVwb3QgcGF0aCBpbnRvIGEgc2luZ2xlIGNvbW1pdCBpbiB0aGUgZ2l0IGJyYW5jaCAncmVmcy9yZW1vdGVzL3A0L21hc3RlcicuCitkZXBvdCBwYXRoIGludG8gYSBzaW5nbGUgY29tbWl0IGluIHRoZSBHaXQgYnJhbmNoICdyZWZzL3JlbW90ZXMvcDQvbWFzdGVyJy4KICsKIDMuICAgQ3JlYXRlcyBhIGxvY2FsIGJyYW5jaCwgJ21hc3RlcicgZnJvbSB0aGlzIHJlbW90ZSBhbmQgY2hlY2tzIGl0IG91dC4KIAotVG8gcmVwcm9kdWNlIHRoZSBlbnRpcmUgcDQgaGlzdG9yeSBpbiBnaXQsIHVzZSB0aGUgJ0BhbGwnIG1vZGlmaWVyIG9uCitUbyByZXByb2R1Y2UgdGhlIGVudGlyZSBwNCBoaXN0b3J5IGluIEdpdCwgdXNlIHRoZSAnQGFsbCcgbW9kaWZpZXIgb24KIHRoZSBkZXBvdCBwYXRoOgogLS0tLS0tLS0tLS0tCiAkIGdpdCBwNCBjbG9uZSAvL2RlcG90L3BhdGgvcHJvamVjdEBhbGwKQEAgLTg4LDEzICs4OCwxMyBAQAogU3luYwogfn5+fgogQXMgZGV2ZWxvcG1lbnQgY29udGludWVzIGluIHRoZSBwNCByZXBvc2l0b3J5LCB0aG9zZSBjaGFuZ2VzIGNhbgotYmUgaW5jbHVkZWQgaW4gdGhlIGdpdCByZXBvc2l0b3J5IHVzaW5nOgorYmUgaW5jbHVkZWQgaW4gdGhlIEdpdCByZXBvc2l0b3J5IHVzaW5nOgogLS0tLS0tLS0tLS0tCiAkIGdpdCBwNCBzeW5jCiAtLS0tLS0tLS0tLS0KLVRoaXMgY29tbWFuZCBmaW5kcyBuZXcgY2hhbmdlcyBpbiBwNCBhbmQgaW1wb3J0cyB0aGVtIGFzIGdpdCBjb21taXRzLgorVGhpcyBjb21tYW5kIGZpbmRzIG5ldyBjaGFuZ2VzIGluIHA0IGFuZCBpbXBvcnRzIHRoZW0gYXMgR2l0IGNvbW1pdHMuCiAKLVA0IHJlcG9zaXRvcmllcyBjYW4gYmUgYWRkZWQgdG8gYW4gZXhpc3RpbmcgZ2l0IHJlcG9zaXRvcnkgdXNpbmcKK1A0IHJlcG9zaXRvcmllcyBjYW4gYmUgYWRkZWQgdG8gYW4gZXhpc3RpbmcgR2l0IHJlcG9zaXRvcnkgdXNpbmcKICdnaXQgcDQgc3luYycgdG9vOgogLS0tLS0tLS0tLS0tCiAkIG1rZGlyIHJlcG8tZ2l0CkBAIC0xMDMsMTQgKzEwMywxOSBAQAogJCBnaXQgcDQgc3luYyAvL3BhdGgvaW4veW91ci9wZXJmb3JjZS9kZXBvdAogLS0tLS0tLS0tLS0tCiBUaGlzIGltcG9ydHMgdGhlIHNwZWNpZmllZCBkZXBvdCBpbnRvCi0ncmVmcy9yZW1vdGVzL3A0L21hc3RlcicgaW4gYW4gZXhpc3RpbmcgZ2l0IHJlcG9zaXRvcnkuICBUaGUKKydyZWZzL3JlbW90ZXMvcDQvbWFzdGVyJyBpbiBhbiBleGlzdGluZyBHaXQgcmVwb3NpdG9yeS4gIFRoZQogJy0tYnJhbmNoJyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBicmFuY2ggdG8KIGJlIHVzZWQgZm9yIHRoZSBwNCBjb250ZW50LgogCi1JZiBhIGdpdCByZXBvc2l0b3J5IGluY2x1ZGVzIGJyYW5jaGVzICdyZWZzL3JlbW90ZXMvb3JpZ2luL3A0JywgdGhlc2UKK0lmIGEgR2l0IHJlcG9zaXRvcnkgaW5jbHVkZXMgYnJhbmNoZXMgJ3JlZnMvcmVtb3Rlcy9vcmlnaW4vcDQnLCB0aGVzZQogd2lsbCBiZSBmZXRjaGVkIGFuZCBjb25zdWx0ZWQgZmlyc3QgZHVyaW5nIGEgJ2dpdCBwNCBzeW5jJy4gIFNpbmNlCiBpbXBvcnRpbmcgZGlyZWN0bHkgZnJvbSBwNCBpcyBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gcHVsbGluZyBjaGFuZ2VzCi1mcm9tIGEgZ2l0IHJlbW90ZSwgdGhpcyBjYW4gYmUgdXNlZnVsIGluIGEgbXVsdGktZGV2ZWxvcGVyIGVudmlyb25tZW50LgorZnJvbSBhIEdpdCByZW1vdGUsIHRoaXMgY2FuIGJlIHVzZWZ1bCBpbiBhIG11bHRpLWRldmVsb3BlciBlbnZpcm9ubWVudC4KKworSWYgdGhlcmUgYXJlIG11bHRpcGxlIGJyYW5jaGVzLCBkb2luZyAnZ2l0IHA0IHN5bmMnIHdpbGwgYXV0b21hdGljYWxseQordXNlIHRoZSAiQlJBTkNIIERFVEVDVElPTiIgYWxnb3JpdGhtIHRvIHRyeSB0byBwYXJ0aXRpb24gbmV3IGNoYW5nZXMKK2ludG8gdGhlIHJpZ2h0IGJyYW5jaC4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgJy0tYnJhbmNoJworb3B0aW9uIHRvIHNwZWNpZnkganVzdCBhIHNpbmdsZSBicmFuY2ggdG8gdXBkYXRlLgogCiAKIFJlYmFzZQpAQCAtMTI3LDEzICsxMzIsMTMgQEAKIAogU3VibWl0CiB+fn5+fn4KLVN1Ym1pdHRpbmcgY2hhbmdlcyBmcm9tIGEgZ2l0IHJlcG9zaXRvcnkgYmFjayB0byB0aGUgcDQgcmVwb3NpdG9yeQorU3VibWl0dGluZyBjaGFuZ2VzIGZyb20gYSBHaXQgcmVwb3NpdG9yeSBiYWNrIHRvIHRoZSBwNCByZXBvc2l0b3J5CiByZXF1aXJlcyBhIHNlcGFyYXRlIHA0IGNsaWVudCB3b3Jrc3BhY2UuICBUaGlzIHNob3VsZCBiZSBzcGVjaWZpZWQKLXVzaW5nIHRoZSAnUDRDTElFTlQnIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSBnaXQgY29uZmlndXJhdGlvbgordXNpbmcgdGhlICdQNENMSUVOVCcgZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgdGhlIEdpdCBjb25maWd1cmF0aW9uCiB2YXJpYWJsZSAnZ2l0LXA0LmNsaWVudCcuICBUaGUgcDQgY2xpZW50IG11c3QgZXhpc3QsIGJ1dCB0aGUgY2xpZW50IHJvb3QKIHdpbGwgYmUgY3JlYXRlZCBhbmQgcG9wdWxhdGVkIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCiAKLVRvIHN1Ym1pdCBhbGwgY2hhbmdlcyB0aGF0IGFyZSBpbiB0aGUgY3VycmVudCBnaXQgYnJhbmNoIGJ1dCBub3QgaW4KK1RvIHN1Ym1pdCBhbGwgY2hhbmdlcyB0aGF0IGFyZSBpbiB0aGUgY3VycmVudCBHaXQgYnJhbmNoIGJ1dCBub3QgaW4KIHRoZSAncDQvbWFzdGVyJyBicmFuY2gsIHVzZToKIC0tLS0tLS0tLS0tLQogJCBnaXQgcDQgc3VibWl0CkBAIC0xNDksNyArMTU0LDcgQEAKIAogVGhlIHA0IGNoYW5nZXMgd2lsbCBiZSBjcmVhdGVkIGFzIHRoZSB1c2VyIGludm9raW5nICdnaXQgcDQgc3VibWl0Jy4gVGhlCiAnLS1wcmVzZXJ2ZS11c2VyJyBvcHRpb24gd2lsbCBjYXVzZSBvd25lcnNoaXAgdG8gYmUgbW9kaWZpZWQKLWFjY29yZGluZyB0byB0aGUgYXV0aG9yIG9mIHRoZSBnaXQgY29tbWl0LiAgVGhpcyBvcHRpb24gcmVxdWlyZXMgYWRtaW4KK2FjY29yZGluZyB0byB0aGUgYXV0aG9yIG9mIHRoZSBHaXQgY29tbWl0LiAgVGhpcyBvcHRpb24gcmVxdWlyZXMgYWRtaW4KIHByaXZpbGVnZXMgaW4gcDQsIHdoaWNoIGNhbiBiZSBncmFudGVkIHVzaW5nICdwNCBwcm90ZWN0Jy4KIAogCkBAIC0xNzMsMTIgKzE3OCwxNCBAQAogCiAtLWJyYW5jaCA8YnJhbmNoPjo6CiAJSW1wb3J0IGNoYW5nZXMgaW50byBnaXZlbiBicmFuY2guICBJZiB0aGUgYnJhbmNoIHN0YXJ0cyB3aXRoCi0JJ3JlZnMvJywgaXQgd2lsbCBiZSB1c2VkIGFzIGlzLCBvdGhlcndpc2UgdGhlIHBhdGggJ3JlZnMvaGVhZHMvJwotCXdpbGwgYmUgcHJlcGVuZGVkLiAgVGhlIGRlZmF1bHQgYnJhbmNoIGlzICdtYXN0ZXInLiAgSWYgdXNlZAotCXdpdGggYW4gaW5pdGlhbCBjbG9uZSwgbm8gSEVBRCB3aWxsIGJlIGNoZWNrZWQgb3V0LgorCSdyZWZzLycsIGl0IHdpbGwgYmUgdXNlZCBhcyBpcy4gIE90aGVyd2lzZSBpZiBpdCBkb2VzIG5vdCBzdGFydAorCXdpdGggJ3A0LycsIHRoYXQgcHJlZml4IGlzIGFkZGVkLiAgVGhlIGJyYW5jaCBpcyBhc3N1bWVkIHRvCisJbmFtZSBhIHJlbW90ZSB0cmFja2luZywgYnV0IHRoaXMgY2FuIGJlIG1vZGlmaWVkIHVzaW5nCisJJy0taW1wb3J0LWxvY2FsJywgb3IgYnkgZ2l2aW5nIGEgZnVsbCByZWYgbmFtZS4gIFRoZSBkZWZhdWx0CisJYnJhbmNoIGlzICdtYXN0ZXInLgogKwogVGhpcyBleGFtcGxlIGltcG9ydHMgYSBuZXcgcmVtb3RlICJwNC9wcm9qMiIgaW50byBhbiBleGlzdGluZwotZ2l0IHJlcG9zaXRvcnk6CitHaXQgcmVwb3NpdG9yeToKICsKIC0tLS0KICAgICAkIGdpdCBpbml0CkBAIC0xOTksMTEgKzIwNiwxMSBAQAogCiAtLWRldGVjdC1sYWJlbHM6OgogCVF1ZXJ5IHA0IGZvciBsYWJlbHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXBvdCBwYXRocywgYW5kIGFkZAotCXRoZW0gYXMgdGFncyBpbiBnaXQuIExpbWl0ZWQgdXNlZnVsbmVzcyBhcyBvbmx5IGltcG9ydHMgbGFiZWxzCisJdGhlbSBhcyB0YWdzIGluIEdpdC4gTGltaXRlZCB1c2VmdWxuZXNzIGFzIG9ubHkgaW1wb3J0cyBsYWJlbHMKIAlhc3NvY2lhdGVkIHdpdGggbmV3IGNoYW5nZWxpc3RzLiBEZXByZWNhdGVkLgogCiAtLWltcG9ydC1sYWJlbHM6OgotCUltcG9ydCBsYWJlbHMgZnJvbSBwNCBpbnRvIGdpdC4KKwlJbXBvcnQgbGFiZWxzIGZyb20gcDQgaW50byBHaXQuCiAKIC0taW1wb3J0LWxvY2FsOjoKIAlCeSBkZWZhdWx0LCBwNCBicmFuY2hlcyBhcmUgc3RvcmVkIGluICdyZWZzL3JlbW90ZXMvcDQvJywKQEAgLTIxOSwxMiArMjI2LDEyIEBACiAJc3BlY2lmaWVyLgogCiAtLWtlZXAtcGF0aDo6Ci0JVGhlIG1hcHBpbmcgb2YgZmlsZSBuYW1lcyBmcm9tIHRoZSBwNCBkZXBvdCBwYXRoIHRvIGdpdCwgYnkKKwlUaGUgbWFwcGluZyBvZiBmaWxlIG5hbWVzIGZyb20gdGhlIHA0IGRlcG90IHBhdGggdG8gR2l0LCBieQogCWRlZmF1bHQsIGludm9sdmVzIHJlbW92aW5nIHRoZSBlbnRpcmUgZGVwb3QgcGF0aC4gIFdpdGggdGhpcwotCW9wdGlvbiwgdGhlIGZ1bGwgcDQgZGVwb3QgcGF0aCBpcyByZXRhaW5lZCBpbiBnaXQuICBGb3IgZXhhbXBsZSwKKwlvcHRpb24sIHRoZSBmdWxsIHA0IGRlcG90IHBhdGggaXMgcmV0YWluZWQgaW4gR2l0LiAgRm9yIGV4YW1wbGUsCiAJcGF0aCAnLy9kZXBvdC9tYWluL2Zvby9iYXIuYycsIHdoZW4gaW1wb3J0ZWQgZnJvbQogCScvL2RlcG90L21haW4vJywgYmVjb21lcyAnZm9vL2Jhci5jJy4gIFdpdGggJy0ta2VlcC1wYXRoJywgdGhlCi0JZ2l0IHBhdGggaXMgaW5zdGVhZCAnZGVwb3QvbWFpbi9mb28vYmFyLmMnLgorCUdpdCBwYXRoIGlzIGluc3RlYWQgJ2RlcG90L21haW4vZm9vL2Jhci5jJy4KIAogLS11c2UtY2xpZW50LXNwZWM6OgogCVVzZSBhIGNsaWVudCBzcGVjIHRvIGZpbmQgdGhlIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZmlsZXMgaW4gcDQuCkBAIC0yMzYsNyArMjQzLDcgQEAKIG9wdGlvbnMgZGVzY3JpYmVkIGFib3ZlLgogCiAtLWRlc3RpbmF0aW9uIDxkaXJlY3Rvcnk+OjoKLQlXaGVyZSB0byBjcmVhdGUgdGhlIGdpdCByZXBvc2l0b3J5LiAgSWYgbm90IHByb3ZpZGVkLCB0aGUgbGFzdAorCVdoZXJlIHRvIGNyZWF0ZSB0aGUgR2l0IHJlcG9zaXRvcnkuICBJZiBub3QgcHJvdmlkZWQsIHRoZSBsYXN0CiAJY29tcG9uZW50IGluIHRoZSBwNCBkZXBvdCBwYXRoIGlzIHVzZWQgdG8gY3JlYXRlIGEgbmV3CiAJZGlyZWN0b3J5LgogCkBAIC0yNjYsMTIgKzI3MywxMiBAQAogCXJlcXVpcmVzIHA0IGFkbWluIHByaXZpbGVnZXMuCiAKIC0tZXhwb3J0LWxhYmVsczo6Ci0JRXhwb3J0IHRhZ3MgZnJvbSBnaXQgYXMgcDQgbGFiZWxzLiBUYWdzIGZvdW5kIGluIGdpdCBhcmUgYXBwbGllZAorCUV4cG9ydCB0YWdzIGZyb20gR2l0IGFzIHA0IGxhYmVscy4gVGFncyBmb3VuZCBpbiBHaXQgYXJlIGFwcGxpZWQKIAl0byB0aGUgcGVyZm9yY2Ugd29ya2luZyBkaXJlY3RvcnkuCiAKIC0tZHJ5LXJ1biwgLW46OgogCVNob3cganVzdCB3aGF0IGNvbW1pdHMgd291bGQgYmUgc3VibWl0dGVkIHRvIHA0OyBkbyBub3QgY2hhbmdlCi0Jc3RhdGUgaW4gZ2l0IG9yIHA0LgorCXN0YXRlIGluIEdpdCBvciBwNC4KIAogLS1wcmVwYXJlLXA0LW9ubHk6OgogCUFwcGx5IGEgY29tbWl0IHRvIHRoZSBwNCB3b3Jrc3BhY2UsIG9wZW5pbmcsIGFkZGluZyBhbmQgZGVsZXRpbmcKQEAgLTI4Nyw2ICsyOTQsMTEgQEAKIAl0byBieXBhc3MgdGhlIHByb21wdCwgY2F1c2luZyBjb25mbGljdGluZyBjb21taXRzIHRvIGJlIGF1dG9tYXRpY2FsbHkKIAlza2lwcGVkLCBvciB0byBxdWl0IHRyeWluZyB0byBhcHBseSBjb21taXRzLCB3aXRob3V0IHByb21wdGluZy4KIAorLS1icmFuY2ggPGJyYW5jaD46OgorCUFmdGVyIHN1Ym1pdHRpbmcsIHN5bmMgdGhpcyBuYW1lZCBicmFuY2ggaW5zdGVhZCBvZiB0aGUgZGVmYXVsdAorCXA0L21hc3Rlci4gIFNlZSB0aGUgIlN5bmMgb3B0aW9ucyIgc2VjdGlvbiBhYm92ZSBmb3IgbW9yZQorCWluZm9ybWF0aW9uLgorCiBSZWJhc2Ugb3B0aW9ucwogfn5+fn5+fn5+fn5+fn4KIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gbW9kaWZ5ICdnaXQgcDQgcmViYXNlJyBiZWhhdmlvci4KQEAgLTMxMiwxMiArMzI0LDEyIEBACiAiLy9kZXBvdC9wcm9qMUBhbGwgLy9kZXBvdC9wcm9qMkBhbGwiOjoKICAgICBJbXBvcnQgYWxsIGNoYW5nZXMgZnJvbSBib3RoIG5hbWVkIGRlcG90IHBhdGhzIGludG8gYSBzaW5nbGUKICAgICByZXBvc2l0b3J5LiAgT25seSBmaWxlcyBiZWxvdyB0aGVzZSBkaXJlY3RvcmllcyBhcmUgaW5jbHVkZWQuCi0gICAgVGhlcmUgaXMgbm90IGEgc3ViZGlyZWN0b3J5IGluIGdpdCBmb3IgZWFjaCAicHJvajEiIGFuZCAicHJvajIiLgorICAgIFRoZXJlIGlzIG5vdCBhIHN1YmRpcmVjdG9yeSBpbiBHaXQgZm9yIGVhY2ggInByb2oxIiBhbmQgInByb2oyIi4KICAgICBZb3UgbXVzdCB1c2UgdGhlICctLWRlc3RpbmF0aW9uJyBvcHRpb24gd2hlbiBzcGVjaWZ5aW5nIG1vcmUKICAgICB0aGFuIG9uZSBkZXBvdCBwYXRoLiAgVGhlIHJldmlzaW9uIHNwZWNpZmllciBtdXN0IGJlIHNwZWNpZmllZAogICAgIGlkZW50aWNhbGx5IG9uIGVhY2ggZGVwb3QgcGF0aC4gIElmIHRoZXJlIGFyZSBmaWxlcyBpbiB0aGUKICAgICBkZXBvdCBwYXRocyB3aXRoIHRoZSBzYW1lIG5hbWUsIHRoZSBwYXRoIHdpdGggdGhlIG1vc3QgcmVjZW50bHkKLSAgICB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIGZpbGUgaXMgdGhlIG9uZSB0aGF0IGFwcGVhcnMgaW4gZ2l0LgorICAgIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgZmlsZSBpcyB0aGUgb25lIHRoYXQgYXBwZWFycyBpbiBHaXQuCiAKIFNlZSAncDQgaGVscCByZXZpc2lvbnMnIGZvciB0aGUgZnVsbCBzeW50YXggb2YgcDQgcmV2aXNpb24gc3BlY2lmaWVycy4KIApAQCAtMzM0LDExICszNDYsMTEgQEAKIHdvcmsgcHJvcGVybHk7IHRoZSBzdWJtaXQgY29tbWFuZCBsb29rcyBvbmx5IGF0IHRoZSB2YXJpYWJsZSBhbmQgZG9lcwogbm90IGhhdmUgYSBjb21tYW5kLWxpbmUgb3B0aW9uLgogCi1UaGUgZnVsbCBzeW50YXggZm9yIGEgcDQgdmlldyBpcyBkb2N1bWVudGVkIGluICdwNCBoZWxwIHZpZXdzJy4gICdHaXQgcDQnCitUaGUgZnVsbCBzeW50YXggZm9yIGEgcDQgdmlldyBpcyBkb2N1bWVudGVkIGluICdwNCBoZWxwIHZpZXdzJy4gICdnaXQgcDQnCiBrbm93cyBvbmx5IGEgc3Vic2V0IG9mIHRoZSB2aWV3IHN5bnRheC4gIEl0IHVuZGVyc3RhbmRzIG11bHRpLWxpbmUKIG1hcHBpbmdzLCBvdmVybGF5cyB3aXRoICcrJywgZXhjbHVzaW9ucyB3aXRoICctJyBhbmQgZG91YmxlLXF1b3RlcwogYXJvdW5kIHdoaXRlc3BhY2UuICBPZiB0aGUgcG9zc2libGUgd2lsZGNhcmRzLCAnZ2l0IHA0JyBvbmx5IGhhbmRsZXMKLScuLi4nLCBhbmQgb25seSB3aGVuIGl0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGguICAnR2l0IHA0JyB3aWxsIGNvbXBsYWluCisnLi4uJywgYW5kIG9ubHkgd2hlbiBpdCBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLiAgJ2dpdCBwNCcgd2lsbCBjb21wbGFpbgogaWYgaXQgZW5jb3VudGVycyBhbiB1bmhhbmRsZWQgd2lsZGNhcmQuCiAKIEJ1Z3MgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIG92ZXJsYXAgbWFwcGluZ3MgZXhpc3QuICBJZiBtdWx0aXBsZSBkZXBvdApAQCAtMzU0LDcgKzM2Niw3IEBACiAKIEJSQU5DSCBERVRFQ1RJT04KIC0tLS0tLS0tLS0tLS0tLS0KLVA0IGRvZXMgbm90IGhhdmUgdGhlIHNhbWUgY29uY2VwdCBvZiBhIGJyYW5jaCBhcyBnaXQuICBJbnN0ZWFkLAorUDQgZG9lcyBub3QgaGF2ZSB0aGUgc2FtZSBjb25jZXB0IG9mIGEgYnJhbmNoIGFzIEdpdC4gIEluc3RlYWQsCiBwNCBvcmdhbml6ZXMgaXRzIGNvbnRlbnQgYXMgYSBkaXJlY3RvcnkgdHJlZSwgd2hlcmUgYnkgY29udmVudGlvbgogZGlmZmVyZW50IGxvZ2ljYWwgYnJhbmNoZXMgYXJlIGluIGRpZmZlcmVudCBsb2NhdGlvbnMgaW4gdGhlIHRyZWUuCiBUaGUgJ3A0IGJyYW5jaCcgY29tbWFuZCBpcyB1c2VkIHRvIG1haW50YWluIG1hcHBpbmdzIGJldHdlZW4KQEAgLTM2NCw3ICszNzYsNyBAQAogSWYgeW91IGhhdmUgYSByZXBvc2l0b3J5IHdoZXJlIGFsbCB0aGUgYnJhbmNoZXMgb2YgaW50ZXJlc3QgZXhpc3QgYXMKIHN1YmRpcmVjdG9yaWVzIG9mIGEgc2luZ2xlIGRlcG90IHBhdGgsIHlvdSBjYW4gdXNlICctLWRldGVjdC1icmFuY2hlcycKIHdoZW4gY2xvbmluZyBvciBzeW5jaW5nIHRvIGhhdmUgJ2dpdCBwNCcgYXV0b21hdGljYWxseSBmaW5kCi1zdWJkaXJlY3RvcmllcyBpbiBwNCwgYW5kIHRvIGdlbmVyYXRlIHRoZXNlIGFzIGJyYW5jaGVzIGluIGdpdC4KK3N1YmRpcmVjdG9yaWVzIGluIHA0LCBhbmQgdG8gZ2VuZXJhdGUgdGhlc2UgYXMgYnJhbmNoZXMgaW4gR2l0LgogCiBGb3IgZXhhbXBsZSwgaWYgdGhlIFA0IHJlcG9zaXRvcnkgc3RydWN0dXJlIGlzOgogLS0tLQpAQCAtMzg2LDcgKzM5OCw3IEBACiAKIEhvd2V2ZXIsIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY3JlYXRlIGJyYW5jaGVzIGluIHA0IHRvIGJlIGFibGUgdG8gdXNlCiB0aGVtIGxpa2UgYnJhbmNoZXMuICBCZWNhdXNlIGl0IGlzIGRpZmZpY3VsdCB0byBpbmZlciBicmFuY2gKLXJlbGF0aW9uc2hpcHMgYXV0b21hdGljYWxseSwgYSBnaXQgY29uZmlndXJhdGlvbiBzZXR0aW5nCityZWxhdGlvbnNoaXBzIGF1dG9tYXRpY2FsbHksIGEgR2l0IGNvbmZpZ3VyYXRpb24gc2V0dGluZwogJ2dpdC1wNC5icmFuY2hMaXN0JyBjYW4gYmUgdXNlZCB0byBleHBsaWNpdGx5IGlkZW50aWZ5IGJyYW5jaAogcmVsYXRpb25zaGlwcy4gIEl0IGlzIGEgbGlzdCBvZiAic291cmNlOmRlc3RpbmF0aW9uIiBwYWlycywgbGlrZSBhCiBzaW1wbGUgcDQgYnJhbmNoIHNwZWNpZmljYXRpb24sIHdoZXJlIHRoZSAic291cmNlIiBhbmQgImRlc3RpbmF0aW9uIiBhcmUKQEAgLTM5NCwxNSArNDA2LDE3IEBACiBwcmVzZW5jZSBvZiB0aGUgcDQgYnJhbmNoLiAgV2l0aG91dCBwNCBicmFuY2hlcywgdGhlIHNhbWUgcmVzdWx0IHdpbGwKIG9jY3VyIHdpdGg6CiAtLS0tCitnaXQgaW5pdCBkZXBvdAorY2QgZGVwb3QKIGdpdCBjb25maWcgZ2l0LXA0LmJyYW5jaExpc3QgbWFpbjpicmFuY2gxCi1naXQgcDQgY2xvbmUgLS1kZXRlY3QtYnJhbmNoZXMgLy9kZXBvdEBhbGwKK2dpdCBwNCBjbG9uZSAtLWRldGVjdC1icmFuY2hlcyAvL2RlcG90QGFsbCAuCiAtLS0tCiAKIAogUEVSRk9STUFOQ0UKIC0tLS0tLS0tLS0tCiBUaGUgZmFzdC1pbXBvcnQgbWVjaGFuaXNtIHVzZWQgYnkgJ2dpdCBwNCcgY3JlYXRlcyBvbmUgcGFjayBmaWxlIGZvcgotZWFjaCBpbnZvY2F0aW9uIG9mICdnaXQgcDQgc3luYycuICBOb3JtYWxseSwgZ2l0IGdhcmJhZ2UgY29tcHJlc3Npb24KK2VhY2ggaW52b2NhdGlvbiBvZiAnZ2l0IHA0IHN5bmMnLiAgTm9ybWFsbHksIEdpdCBnYXJiYWdlIGNvbXByZXNzaW9uCiAobGlua2dpdDpnaXQtZ2NbMV0pIGF1dG9tYXRpY2FsbHkgY29tcHJlc3NlcyB0aGVzZSB0byBmZXdlciBwYWNrIGZpbGVzLAogYnV0IGV4cGxpY2l0IGludm9jYXRpb24gb2YgJ2dpdCByZXBhY2sgLWFkZicgbWF5IGltcHJvdmUgcGVyZm9ybWFuY2UuCiAKQEAgLTQ0MCw5ICs0NTQsOSBAQAogQ2xvbmUgYW5kIHN5bmMgdmFyaWFibGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIGdpdC1wNC5zeW5jRnJvbU9yaWdpbjo6Ci0JQmVjYXVzZSBpbXBvcnRpbmcgY29tbWl0cyBmcm9tIG90aGVyIGdpdCByZXBvc2l0b3JpZXMgaXMgbXVjaCBmYXN0ZXIKKwlCZWNhdXNlIGltcG9ydGluZyBjb21taXRzIGZyb20gb3RoZXIgR2l0IHJlcG9zaXRvcmllcyBpcyBtdWNoIGZhc3RlcgogCXRoYW4gaW1wb3J0aW5nIHRoZW0gZnJvbSBwNCwgYSBtZWNoYW5pc20gZXhpc3RzIHRvIGZpbmQgcDQgY2hhbmdlcwotCWZpcnN0IGluIGdpdCByZW1vdGVzLiAgSWYgYnJhbmNoZXMgZXhpc3QgdW5kZXIgJ3JlZnMvcmVtb3RlL29yaWdpbi9wNCcsCisJZmlyc3QgaW4gR2l0IHJlbW90ZXMuICBJZiBicmFuY2hlcyBleGlzdCB1bmRlciAncmVmcy9yZW1vdGUvb3JpZ2luL3A0JywKIAl0aG9zZSB3aWxsIGJlIGZldGNoZWQgYW5kIHVzZWQgd2hlbiBzeW5jaW5nIGZyb20gcDQuICBUaGlzCiAJdmFyaWFibGUgY2FuIGJlIHNldCB0byAnZmFsc2UnIHRvIGRpc2FibGUgdGhpcyBiZWhhdmlvci4KIApAQCAtNDk0LDcgKzUwOCw3IEBACiAJRGV0ZWN0IGNvcGllcyBoYXJkZXIuICBTZWUgbGlua2dpdDpnaXQtZGlmZlsxXS4gIEEgYm9vbGVhbi4KIAogZ2l0LXA0LnByZXNlcnZlVXNlcjo6Ci0JT24gc3VibWl0LCByZS1hdXRob3IgY2hhbmdlcyB0byByZWZsZWN0IHRoZSBnaXQgYXV0aG9yLAorCU9uIHN1Ym1pdCwgcmUtYXV0aG9yIGNoYW5nZXMgdG8gcmVmbGVjdCB0aGUgR2l0IGF1dGhvciwKIAlyZWdhcmRsZXNzIG9mIHdobyBpbnZva2VzICdnaXQgcDQgc3VibWl0Jy4KIAogZ2l0LXA0LmFsbG93TWlzc2luZ1A0VXNlcnM6OgpAQCAtNTMxLDcgKzU0NSw3IEBACiAJcHJlc2VudC4KIAogZ2l0LXA0LmV4cG9ydExhYmVsczo6Ci0JRXhwb3J0IGdpdCB0YWdzIHRvIHA0IGxhYmVscywgYXMgcGVyIC0tZXhwb3J0LWxhYmVscy4KKwlFeHBvcnQgR2l0IHRhZ3MgdG8gcDQgbGFiZWxzLCBhcyBwZXIgLS1leHBvcnQtbGFiZWxzLgogCiBnaXQtcDQubGFiZWxFeHBvcnRSZWdleHA6OgogCU9ubHkgcDQgbGFiZWxzIG1hdGNoaW5nIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwgYmUgZXhwb3J0ZWQuIFRoZQpAQCAtNTQzLDExICs1NTcsMTEgQEAKIAogSU1QTEVNRU5UQVRJT04gREVUQUlMUwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKiBDaGFuZ2VzZXRzIGZyb20gcDQgYXJlIGltcG9ydGVkIHVzaW5nIGdpdCBmYXN0LWltcG9ydC4KKyogQ2hhbmdlc2V0cyBmcm9tIHA0IGFyZSBpbXBvcnRlZCB1c2luZyBHaXQgZmFzdC1pbXBvcnQuCiAqIENsb25pbmcgb3Igc3luY2luZyBkb2VzIG5vdCByZXF1aXJlIGEgcDQgY2xpZW50OyBmaWxlIGNvbnRlbnRzIGFyZQogICBjb2xsZWN0ZWQgdXNpbmcgJ3A0IHByaW50Jy4KICogU3VibWl0dGluZyByZXF1aXJlcyBhIHA0IGNsaWVudCwgd2hpY2ggaXMgbm90IGluIHRoZSBzYW1lIGxvY2F0aW9uCi0gIGFzIHRoZSBnaXQgcmVwb3NpdG9yeS4gIFBhdGNoZXMgYXJlIGFwcGxpZWQsIG9uZSBhdCBhIHRpbWUsIHRvCisgIGFzIHRoZSBHaXQgcmVwb3NpdG9yeS4gIFBhdGNoZXMgYXJlIGFwcGxpZWQsIG9uZSBhdCBhIHRpbWUsIHRvCiAgIHRoaXMgcDQgY2xpZW50IGFuZCBzdWJtaXR0ZWQgZnJvbSB0aGVyZS4KICogRWFjaCBjb21taXQgaW1wb3J0ZWQgYnkgJ2dpdCBwNCcgaGFzIGEgbGluZSBhdCB0aGUgZW5kIG9mIHRoZSBsb2cKICAgbWVzc2FnZSBpbmRpY2F0aW5nIHRoZSBwNCBkZXBvdCBsb2NhdGlvbiBhbmQgY2hhbmdlIG51bWJlci4gIFRoaXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXBhY2stb2JqZWN0cy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1wYWNrLW9iamVjdHMudHh0CmluZGV4IDIwYzg1NTEuLmQ5NGVkY2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXBhY2stb2JqZWN0cy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcGFjay1vYmplY3RzLnR4dApAQCAtMzUsNyArMzUsNyBAQAogb2JqZWN0cyBpbiB0aGUgcGFjay4gUGxhY2luZyBib3RoIHRoZSBpbmRleCBmaWxlICguaWR4KSBhbmQgdGhlIHBhY2tlZAogYXJjaGl2ZSAoLnBhY2spIGluIHRoZSBwYWNrLyBzdWJkaXJlY3Rvcnkgb2YgJEdJVF9PQkpFQ1RfRElSRUNUT1JZIChvcgogYW55IG9mIHRoZSBkaXJlY3RvcmllcyBvbiAkR0lUX0FMVEVSTkFURV9PQkpFQ1RfRElSRUNUT1JJRVMpCi1lbmFibGVzIGdpdCB0byByZWFkIGZyb20gdGhlIHBhY2sgYXJjaGl2ZS4KK2VuYWJsZXMgR2l0IHRvIHJlYWQgZnJvbSB0aGUgcGFjayBhcmNoaXZlLgogCiBUaGUgJ2dpdCB1bnBhY2stb2JqZWN0cycgY29tbWFuZCBjYW4gcmVhZCB0aGUgcGFja2VkIGFyY2hpdmUgYW5kCiBleHBhbmQgdGhlIG9iamVjdHMgY29udGFpbmVkIGluIHRoZSBwYWNrIGludG8gIm9uZS1maWxlCkBAIC01MCw3ICs1MCw3IEBACiAJV3JpdGUgaW50byBhIHBhaXIgb2YgZmlsZXMgKC5wYWNrIGFuZCAuaWR4KSwgdXNpbmcKIAk8YmFzZS1uYW1lPiB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIGNyZWF0ZWQgZmlsZS4KIAlXaGVuIHRoaXMgb3B0aW9uIGlzIHVzZWQsIHRoZSB0d28gZmlsZXMgYXJlIHdyaXR0ZW4gaW4KLQk8YmFzZS1uYW1lPi08U0hBMT4ue3BhY2ssaWR4fSBmaWxlcy4gIDxTSEExPiBpcyBhIGhhc2gKKwk8YmFzZS1uYW1lPi08U0hBLTE+LntwYWNrLGlkeH0gZmlsZXMuICA8U0hBLTE+IGlzIGEgaGFzaAogCW9mIHRoZSBzb3J0ZWQgb2JqZWN0IG5hbWVzIHRvIG1ha2UgdGhlIHJlc3VsdGluZyBmaWxlbmFtZQogCWJhc2VkIG9uIHRoZSBwYWNrIGNvbnRlbnQsIGFuZCB3cml0dGVuIHRvIHRoZSBzdGFuZGFyZAogCW91dHB1dCBvZiB0aGUgY29tbWFuZC4KQEAgLTgwLDcgKzgwLDcgQEAKIC0taW5jbHVkZS10YWc6OgogCUluY2x1ZGUgdW5hc2tlZC1mb3IgYW5ub3RhdGVkIHRhZ3MgaWYgdGhlIG9iamVjdCB0aGV5CiAJcmVmZXJlbmNlIHdhcyBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIHBhY2tmaWxlLiAgVGhpcwotCWNhbiBiZSB1c2VmdWwgdG8gc2VuZCBuZXcgdGFncyB0byBuYXRpdmUgZ2l0IGNsaWVudHMuCisJY2FuIGJlIHVzZWZ1bCB0byBzZW5kIG5ldyB0YWdzIHRvIG5hdGl2ZSBHaXQgY2xpZW50cy4KIAogLS13aW5kb3c9PG4+OjoKIC0tZGVwdGg9PG4+OjoKQEAgLTE4NSwxNCArMTg1LDE0IEBACiAJb3B0aW9uIG9ubHkgbWFrZXMgc2Vuc2UgaW4gY29uanVuY3Rpb24gd2l0aCAtLXN0ZG91dC4KICsKIE5vdGU6IEEgdGhpbiBwYWNrIHZpb2xhdGVzIHRoZSBwYWNrZWQgYXJjaGl2ZSBmb3JtYXQgYnkgb21pdHRpbmcKLXJlcXVpcmVkIG9iamVjdHMgYW5kIGlzIHRodXMgdW51c2FibGUgYnkgZ2l0IHdpdGhvdXQgbWFraW5nIGl0CityZXF1aXJlZCBvYmplY3RzIGFuZCBpcyB0aHVzIHVudXNhYmxlIGJ5IEdpdCB3aXRob3V0IG1ha2luZyBpdAogc2VsZi1jb250YWluZWQuIFVzZSBgZ2l0IGluZGV4LXBhY2sgLS1maXgtdGhpbmAKIChzZWUgbGlua2dpdDpnaXQtaW5kZXgtcGFja1sxXSkgdG8gcmVzdG9yZSB0aGUgc2VsZi1jb250YWluZWQgcHJvcGVydHkuCiAKIC0tZGVsdGEtYmFzZS1vZmZzZXQ6OgogCUEgcGFja2VkIGFyY2hpdmUgY2FuIGV4cHJlc3MgdGhlIGJhc2Ugb2JqZWN0IG9mIGEgZGVsdGEgYXMKIAllaXRoZXIgYSAyMC1ieXRlIG9iamVjdCBuYW1lIG9yIGFzIGFuIG9mZnNldCBpbiB0aGUKLQlzdHJlYW0sIGJ1dCBhbmNpZW50IHZlcnNpb25zIG9mIGdpdCBkb24ndCB1bmRlcnN0YW5kIHRoZQorCXN0cmVhbSwgYnV0IGFuY2llbnQgdmVyc2lvbnMgb2YgR2l0IGRvbid0IHVuZGVyc3RhbmQgdGhlCiAJbGF0dGVyLiAgQnkgZGVmYXVsdCwgJ2dpdCBwYWNrLW9iamVjdHMnIG9ubHkgdXNlcyB0aGUKIAlmb3JtZXIgZm9ybWF0IGZvciBiZXR0ZXIgY29tcGF0aWJpbGl0eS4gIFRoaXMgb3B0aW9uCiAJYWxsb3dzIHRoZSBjb21tYW5kIHRvIHVzZSB0aGUgbGF0dGVyIGZvcm1hdCBmb3IKQEAgLTIwMiw3ICsyMDIsNyBAQAogKwogTm90ZTogUG9yY2VsYWluIGNvbW1hbmRzIHN1Y2ggYXMgYGdpdCBnY2AgKHNlZSBsaW5rZ2l0OmdpdC1nY1sxXSksCiBgZ2l0IHJlcGFja2AgKHNlZSBsaW5rZ2l0OmdpdC1yZXBhY2tbMV0pIHBhc3MgdGhpcyBvcHRpb24gYnkgZGVmYXVsdAotaW4gbW9kZXJuIGdpdCB3aGVuIHRoZXkgcHV0IG9iamVjdHMgaW4geW91ciByZXBvc2l0b3J5IGludG8gcGFjayBmaWxlcy4KK2luIG1vZGVybiBHaXQgd2hlbiB0aGV5IHB1dCBvYmplY3RzIGluIHlvdXIgcmVwb3NpdG9yeSBpbnRvIHBhY2sgZmlsZXMuCiBTbyBkb2VzIGBnaXQgYnVuZGxlYCAoc2VlIGxpbmtnaXQ6Z2l0LWJ1bmRsZVsxXSkgd2hlbiBpdCBjcmVhdGVzIGEgYnVuZGxlLgogCiAtLXRocmVhZHM9PG4+OjoKQEAgLTIxMiw3ICsyMTIsNyBAQAogCVRoaXMgaXMgbWVhbnQgdG8gcmVkdWNlIHBhY2tpbmcgdGltZSBvbiBtdWx0aXByb2Nlc3NvciBtYWNoaW5lcy4KIAlUaGUgcmVxdWlyZWQgYW1vdW50IG9mIG1lbW9yeSBmb3IgdGhlIGRlbHRhIHNlYXJjaCB3aW5kb3cgaXMKIAlob3dldmVyIG11bHRpcGxpZWQgYnkgdGhlIG51bWJlciBvZiB0aHJlYWRzLgotCVNwZWNpZnlpbmcgMCB3aWxsIGNhdXNlIGdpdCB0byBhdXRvLWRldGVjdCB0aGUgbnVtYmVyIG9mIENQVSdzCisJU3BlY2lmeWluZyAwIHdpbGwgY2F1c2UgR2l0IHRvIGF1dG8tZGV0ZWN0IHRoZSBudW1iZXIgb2YgQ1BVJ3MKIAlhbmQgc2V0IHRoZSBudW1iZXIgb2YgdGhyZWFkcyBhY2NvcmRpbmdseS4KIAogLS1pbmRleC12ZXJzaW9uPTx2ZXJzaW9uPlssPG9mZnNldD5dOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXBhdGNoLWlkLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXBhdGNoLWlkLnR4dAppbmRleCA5MDI2OGYwLi4zMTJjM2IxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1wYXRjaC1pZC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcGF0Y2gtaWQudHh0CkBAIC0xMiw3ICsxMiw3IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotQSAicGF0Y2ggSUQiIGlzIG5vdGhpbmcgYnV0IGEgU0hBMSBvZiB0aGUgZGlmZiBhc3NvY2lhdGVkIHdpdGggYSBwYXRjaCwgd2l0aAorQSAicGF0Y2ggSUQiIGlzIG5vdGhpbmcgYnV0IGEgU0hBLTEgb2YgdGhlIGRpZmYgYXNzb2NpYXRlZCB3aXRoIGEgcGF0Y2gsIHdpdGgKIHdoaXRlc3BhY2UgYW5kIGxpbmUgbnVtYmVycyBpZ25vcmVkLiAgQXMgc3VjaCwgaXQncyAicmVhc29uYWJseSBzdGFibGUiLCBidXQgYXQKIHRoZSBzYW1lIHRpbWUgYWxzbyByZWFzb25hYmx5IHVuaXF1ZSwgaS5lLiwgdHdvIHBhdGNoZXMgdGhhdCBoYXZlIHRoZSBzYW1lICJwYXRjaAogSUQiIGFyZSBhbG1vc3QgZ3VhcmFudGVlZCB0byBiZSB0aGUgc2FtZSB0aGluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXB1bGwudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcHVsbC50eHQKaW5kZXggNjM4NDU2Yi4uMjRhYjA3YSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcHVsbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcHVsbC50eHQKQEAgLTU5LDggKzU5LDggQEAKIFNlZSBsaW5rZ2l0OmdpdC1tZXJnZVsxXSBmb3IgZGV0YWlscywgaW5jbHVkaW5nIGhvdyBjb25mbGljdHMKIGFyZSBwcmVzZW50ZWQgYW5kIGhhbmRsZWQuCiAKLUluIGdpdCAxLjcuMCBvciBsYXRlciwgdG8gY2FuY2VsIGEgY29uZmxpY3RpbmcgbWVyZ2UsIHVzZQotYGdpdCByZXNldCAtLW1lcmdlYC4gICpXYXJuaW5nKjogSW4gb2xkZXIgdmVyc2lvbnMgb2YgZ2l0LCBydW5uaW5nICdnaXQgcHVsbCcKK0luIEdpdCAxLjcuMCBvciBsYXRlciwgdG8gY2FuY2VsIGEgY29uZmxpY3RpbmcgbWVyZ2UsIHVzZQorYGdpdCByZXNldCAtLW1lcmdlYC4gICpXYXJuaW5nKjogSW4gb2xkZXIgdmVyc2lvbnMgb2YgR2l0LCBydW5uaW5nICdnaXQgcHVsbCcKIHdpdGggdW5jb21taXR0ZWQgY2hhbmdlcyBpcyBkaXNjb3VyYWdlZDogd2hpbGUgcG9zc2libGUsIGl0IGxlYXZlcyB5b3UKIGluIGEgc3RhdGUgdGhhdCBtYXkgYmUgaGFyZCB0byBiYWNrIG91dCBvZiBpbiB0aGUgY2FzZSBvZiBhIGNvbmZsaWN0LgogCkBAIC04OSw3ICs4OSw3IEBACiAJVGhpcyBvcHRpb24gY29udHJvbHMgaWYgbmV3IGNvbW1pdHMgb2YgYWxsIHBvcHVsYXRlZCBzdWJtb2R1bGVzIHNob3VsZAogCWJlIGZldGNoZWQgdG9vIChzZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdIGFuZCBsaW5rZ2l0OmdpdG1vZHVsZXNbNV0pLgogCVRoYXQgbWlnaHQgYmUgbmVjZXNzYXJ5IHRvIGdldCB0aGUgZGF0YSBuZWVkZWQgZm9yIG1lcmdpbmcgc3VibW9kdWxlCi0JY29tbWl0cywgYSBmZWF0dXJlIGdpdCBsZWFybmVkIGluIDEuNy4zLiBOb3RpY2UgdGhhdCB0aGUgcmVzdWx0IG9mIGEKKwljb21taXRzLCBhIGZlYXR1cmUgR2l0IGxlYXJuZWQgaW4gMS43LjMuIE5vdGljZSB0aGF0IHRoZSByZXN1bHQgb2YgYQogCW1lcmdlIHdpbGwgbm90IGJlIGNoZWNrZWQgb3V0IGluIHRoZSBzdWJtb2R1bGUsICJnaXQgc3VibW9kdWxlIHVwZGF0ZSIKIAloYXMgdG8gYmUgY2FsbGVkIGFmdGVyd2FyZHMgdG8gYnJpbmcgdGhlIHdvcmsgdHJlZSB1cCB0byBkYXRlIHdpdGggdGhlCiAJbWVyZ2UgcmVzdWx0LgpAQCAtMjI4LDcgKzIyOCw3IEBACiBvdXQgc3VibW9kdWxlcyByaWdodCBub3cuIFdoZW4gZS5nLiB1cHN0cmVhbSBhZGRlZCBhIG5ldyBzdWJtb2R1bGUgaW4gdGhlCiBqdXN0IGZldGNoZWQgY29tbWl0cyBvZiB0aGUgc3VwZXJwcm9qZWN0IHRoZSBzdWJtb2R1bGUgaXRzZWxmIGNhbiBub3QgYmUKIGZldGNoZWQsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGNoZWNrIG91dCB0aGF0IHN1Ym1vZHVsZSBsYXRlciB3aXRob3V0Ci1oYXZpbmcgdG8gZG8gYSBmZXRjaCBhZ2Fpbi4gVGhpcyBpcyBleHBlY3RlZCB0byBiZSBmaXhlZCBpbiBhIGZ1dHVyZSBnaXQKK2hhdmluZyB0byBkbyBhIGZldGNoIGFnYWluLiBUaGlzIGlzIGV4cGVjdGVkIHRvIGJlIGZpeGVkIGluIGEgZnV0dXJlIEdpdAogdmVyc2lvbi4KIAogU0VFIEFMU08KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXB1c2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQKaW5kZXggOGI2MzdkMy4uZjdkZmU0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcHVzaC50eHQKQEAgLTksOSArOSw5IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgcHVzaCcgWy0tYWxsIHwgLS1taXJyb3IgfCAtLXRhZ3NdIFstbiB8IC0tZHJ5LXJ1bl0gWy0tcmVjZWl2ZS1wYWNrPTxnaXQtcmVjZWl2ZS1wYWNrPl0KKydnaXQgcHVzaCcgWy0tYWxsIHwgLS1taXJyb3IgfCAtLXRhZ3NdIFstLWZvbGxvdy10YWdzXSBbLW4gfCAtLWRyeS1ydW5dIFstLXJlY2VpdmUtcGFjaz08Z2l0LXJlY2VpdmUtcGFjaz5dCiAJICAgWy0tcmVwbz08cmVwb3NpdG9yeT5dIFstZiB8IC0tZm9yY2VdIFstLXBydW5lXSBbLXYgfCAtLXZlcmJvc2VdIFstdSB8IC0tc2V0LXVwc3RyZWFtXQotCSAgIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dCisJICAgWy0tbm8tdmVyaWZ5XSBbPHJlcG9zaXRvcnk+IFs8cmVmc3BlYz4uLi5dXQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KQEAgLTIzLDYgKzIzLDE3IEBACiBldmVyeSB0aW1lIHlvdSBwdXNoIGludG8gaXQsIGJ5IHNldHRpbmcgdXAgJ2hvb2tzJyB0aGVyZS4gIFNlZQogZG9jdW1lbnRhdGlvbiBmb3IgbGlua2dpdDpnaXQtcmVjZWl2ZS1wYWNrWzFdLgogCitXaGVuIHRoZSBjb21tYW5kIGxpbmUgZG9lcyBub3Qgc3BlY2lmeSB3aGVyZSB0byBwdXNoIHdpdGggdGhlCitgPHJlcG9zaXRvcnk+YCBhcmd1bWVudCwgYGJyYW5jaC4qLnJlbW90ZWAgY29uZmlndXJhdGlvbiBmb3IgdGhlCitjdXJyZW50IGJyYW5jaCBpcyBjb25zdWx0ZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRvIHB1c2guICBJZiB0aGUKK2NvbmZpZ3VyYXRpb24gaXMgbWlzc2luZywgaXQgZGVmYXVsdHMgdG8gJ29yaWdpbicuCisKK1doZW4gdGhlIGNvbW1hbmQgbGluZSBkb2VzIG5vdCBzcGVjaWZ5IHdoYXQgdG8gcHVzaCB3aXRoIGA8cmVmc3BlYz4uLi5gCithcmd1bWVudHMgb3IgYC0tYWxsYCwgYC0tbWlycm9yYCwgYC0tdGFnc2Agb3B0aW9ucywgdGhlIGNvbW1hbmQgZmluZHMKK3RoZSBkZWZhdWx0IGA8cmVmc3BlYz5gIGJ5IGNvbnN1bHRpbmcgYHJlbW90ZS4qLnB1c2hgIGNvbmZpZ3VyYXRpb24sCithbmQgaWYgaXQgaXMgbm90IGZvdW5kLCBob25vcnMgYHB1c2guZGVmYXVsdGAgY29uZmlndXJhdGlvbiB0byBkZWNpZGUKK3doYXQgdG8gcHVzaCAoU2VlIGdpdGxpbms6Z2l0LWNvbmZpZ1sxXSBmb3IgdGhlIG1lYW5pbmcgb2YgYHB1c2guZGVmYXVsdGApLgorCiAKIE9QVElPTlNbW09QVElPTlNdXQogLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMywxMyArNDQsMTAgQEAKIAlvZiBhIHJlbW90ZSAoc2VlIHRoZSBzZWN0aW9uIDw8UkVNT1RFUyxSRU1PVEVTPj4gYmVsb3cpLgogCiA8cmVmc3BlYz4uLi46OgorCVNwZWNpZnkgd2hhdCBkZXN0aW5hdGlvbiByZWYgdG8gdXBkYXRlIHdpdGggd2hhdCBzb3VyY2Ugb2JqZWN0LgogCVRoZSBmb3JtYXQgb2YgYSA8cmVmc3BlYz4gcGFyYW1ldGVyIGlzIGFuIG9wdGlvbmFsIHBsdXMKLQlgK2AsIGZvbGxvd2VkIGJ5IHRoZSBzb3VyY2UgcmVmIDxzcmM+LCBmb2xsb3dlZAorCWArYCwgZm9sbG93ZWQgYnkgdGhlIHNvdXJjZSBvYmplY3QgPHNyYz4sIGZvbGxvd2VkCiAJYnkgYSBjb2xvbiBgOmAsIGZvbGxvd2VkIGJ5IHRoZSBkZXN0aW5hdGlvbiByZWYgPGRzdD4uCi0JSXQgaXMgdXNlZCB0byBzcGVjaWZ5IHdpdGggd2hhdCA8c3JjPiBvYmplY3QgdGhlIDxkc3Q+IHJlZgotCWluIHRoZSByZW1vdGUgcmVwb3NpdG9yeSBpcyB0byBiZSB1cGRhdGVkLiAgSWYgbm90IHNwZWNpZmllZCwKLQl0aGUgYmVoYXZpb3Igb2YgdGhlIGNvbW1hbmQgaXMgY29udHJvbGxlZCBieSB0aGUgYHB1c2guZGVmYXVsdGAKLQljb25maWd1cmF0aW9uIHZhcmlhYmxlLgogKwogVGhlIDxzcmM+IGlzIG9mdGVuIHRoZSBuYW1lIG9mIHRoZSBicmFuY2ggeW91IHdvdWxkIHdhbnQgdG8gcHVzaCwgYnV0CiBpdCBjYW4gYmUgYW55IGFyYml0cmFyeSAiU0hBLTEgZXhwcmVzc2lvbiIsIHN1Y2ggYXMgYG1hc3Rlcn40YCBvcgpAQCAtNTEsMTAgKzU5LDExIEBACiB1cGRhdGVkLgogKwogVGhlIG9iamVjdCByZWZlcmVuY2VkIGJ5IDxzcmM+IGlzIHVzZWQgdG8gdXBkYXRlIHRoZSA8ZHN0PiByZWZlcmVuY2UKLW9uIHRoZSByZW1vdGUgc2lkZSwgYnV0IGJ5IGRlZmF1bHQgdGhpcyBpcyBvbmx5IGFsbG93ZWQgaWYgdGhlCi11cGRhdGUgY2FuIGZhc3QtZm9yd2FyZCA8ZHN0Pi4gIEJ5IGhhdmluZyB0aGUgb3B0aW9uYWwgbGVhZGluZyBgK2AsCi15b3UgY2FuIHRlbGwgZ2l0IHRvIHVwZGF0ZSB0aGUgPGRzdD4gcmVmIGV2ZW4gd2hlbiB0aGUgdXBkYXRlIGlzIG5vdCBhCi1mYXN0LWZvcndhcmQuICBUaGlzIGRvZXMgKm5vdCogYXR0ZW1wdCB0byBtZXJnZSA8c3JjPiBpbnRvIDxkc3Q+LiAgU2VlCitvbiB0aGUgcmVtb3RlIHNpZGUuICBCeSBkZWZhdWx0IHRoaXMgaXMgb25seSBhbGxvd2VkIGlmIDxkc3Q+IGlzIG5vdAorYSB0YWcgKGFubm90YXRlZCBvciBsaWdodHdlaWdodCksIGFuZCB0aGVuIG9ubHkgaWYgaXQgY2FuIGZhc3QtZm9yd2FyZAorPGRzdD4uICBCeSBoYXZpbmcgdGhlIG9wdGlvbmFsIGxlYWRpbmcgYCtgLCB5b3UgY2FuIHRlbGwgR2l0IHRvIHVwZGF0ZQordGhlIDxkc3Q+IHJlZiBldmVuIGlmIGl0IGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQgKGUuZy4sIGl0IGlzIG5vdCBhCitmYXN0LWZvcndhcmQuKSAgVGhpcyBkb2VzICpub3QqIGF0dGVtcHQgdG8gbWVyZ2UgPHNyYz4gaW50byA8ZHN0Pi4gIFNlZQogRVhBTVBMRVMgYmVsb3cgZm9yIGRldGFpbHMuCiArCiBgdGFnIDx0YWc+YCBtZWFucyB0aGUgc2FtZSBhcyBgcmVmcy90YWdzLzx0YWc+OnJlZnMvdGFncy88dGFnPmAuCkBAIC02MywxMiArNzIsOSBAQAogdGhlIHJlbW90ZSByZXBvc2l0b3J5LgogKwogVGhlIHNwZWNpYWwgcmVmc3BlYyBgOmAgKG9yIGArOmAgdG8gYWxsb3cgbm9uLWZhc3QtZm9yd2FyZCB1cGRhdGVzKQotZGlyZWN0cyBnaXQgdG8gcHVzaCAibWF0Y2hpbmciIGJyYW5jaGVzOiBmb3IgZXZlcnkgYnJhbmNoIHRoYXQgZXhpc3RzIG9uCitkaXJlY3RzIEdpdCB0byBwdXNoICJtYXRjaGluZyIgYnJhbmNoZXM6IGZvciBldmVyeSBicmFuY2ggdGhhdCBleGlzdHMgb24KIHRoZSBsb2NhbCBzaWRlLCB0aGUgcmVtb3RlIHNpZGUgaXMgdXBkYXRlZCBpZiBhIGJyYW5jaCBvZiB0aGUgc2FtZSBuYW1lCi1hbHJlYWR5IGV4aXN0cyBvbiB0aGUgcmVtb3RlIHNpZGUuICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wZXJhdGlvbiBtb2RlCi1pZiBubyBleHBsaWNpdCByZWZzcGVjIGlzIGZvdW5kICh0aGF0IGlzIG5laXRoZXIgb24gdGhlIGNvbW1hbmQgbGluZQotbm9yIGluIGFueSBQdXNoIGxpbmUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVtb3RlcyBmaWxlLS0tc2VlIGJlbG93KSBhbmQKLW5vIGBwdXNoLmRlZmF1bHRgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaXMgc2V0LgorYWxyZWFkeSBleGlzdHMgb24gdGhlIHJlbW90ZSBzaWRlLgogCiAtLWFsbDo6CiAJSW5zdGVhZCBvZiBuYW1pbmcgZWFjaCByZWYgdG8gcHVzaCwgc3BlY2lmaWVzIHRoYXQgYWxsCkBAIC0xMTEsNiArMTE3LDEyIEBACiAJYWRkaXRpb24gdG8gcmVmc3BlY3MgZXhwbGljaXRseSBsaXN0ZWQgb24gdGhlIGNvbW1hbmQKIAlsaW5lLgogCistLWZvbGxvdy10YWdzOjoKKwlQdXNoIGFsbCB0aGUgcmVmcyB0aGF0IHdvdWxkIGJlIHB1c2hlZCB3aXRob3V0IHRoaXMgb3B0aW9uLAorCWFuZCBhbHNvIHB1c2ggYW5ub3RhdGVkIHRhZ3MgaW4gYHJlZnMvdGFnc2AgdGhhdCBhcmUgbWlzc2luZworCWZyb20gdGhlIHJlbW90ZSBidXQgYXJlIHBvaW50aW5nIGF0IGNvbW1pdHRpc2ggdGhhdCBhcmUKKwlyZWFjaGFibGUgZnJvbSB0aGUgcmVmcyBiZWluZyBwdXNoZWQuCisKIC0tcmVjZWl2ZS1wYWNrPTxnaXQtcmVjZWl2ZS1wYWNrPjo6CiAtLWV4ZWM9PGdpdC1yZWNlaXZlLXBhY2s+OjoKIAlQYXRoIHRvIHRoZSAnZ2l0LXJlY2VpdmUtcGFjaycgcHJvZ3JhbSBvbiB0aGUgcmVtb3RlCkBAIC0xMjQsNiArMTM2LDE1IEBACiAJbm90IGFuIGFuY2VzdG9yIG9mIHRoZSBsb2NhbCByZWYgdXNlZCB0byBvdmVyd3JpdGUgaXQuCiAJVGhpcyBmbGFnIGRpc2FibGVzIHRoZSBjaGVjay4gIFRoaXMgY2FuIGNhdXNlIHRoZQogCXJlbW90ZSByZXBvc2l0b3J5IHRvIGxvc2UgY29tbWl0czsgdXNlIGl0IHdpdGggY2FyZS4KKwlOb3RlIHRoYXQgYC0tZm9yY2VgIGFwcGxpZXMgdG8gYWxsIHRoZSByZWZzIHRoYXQgYXJlIHB1c2hlZCwKKwloZW5jZSB1c2luZyBpdCB3aXRoIGBwdXNoLmRlZmF1bHRgIHNldCB0byBgbWF0Y2hpbmdgIG9yIHdpdGgKKwltdWx0aXBsZSBwdXNoIGRlc3RpbmF0aW9ucyBjb25maWd1cmVkIHdpdGggYHJlbW90ZS4qLnB1c2hgCisJbWF5IG92ZXJ3cml0ZSByZWZzIG90aGVyIHRoYW4gdGhlIGN1cnJlbnQgYnJhbmNoIChpbmNsdWRpbmcKKwlsb2NhbCByZWZzIHRoYXQgYXJlIHN0cmljdGx5IGJlaGluZCB0aGVpciByZW1vdGUgY291bnRlcnBhcnQpLgorCVRvIGZvcmNlIGEgcHVzaCB0byBvbmx5IG9uZSBicmFuY2gsIHVzZSBhIGArYCBpbiBmcm9udCBvZiB0aGUKKwlyZWZzcGVjIHRvIHB1c2gJKGUuZyBgZ2l0IHB1c2ggb3JpZ2luICttYXN0ZXJgIHRvIGZvcmNlIGEgcHVzaAorCXRvIHRoZSBgbWFzdGVyYAlicmFuY2gpLiBTZWUgdGhlIGA8cmVmc3BlYz4uLi5gIHNlY3Rpb24gYWJvdmUKKwlmb3IgZGV0YWlscy4KIAogLS1yZXBvPTxyZXBvc2l0b3J5Pjo6CiAJVGhpcyBvcHRpb24gaXMgb25seSByZWxldmFudCBpZiBubyA8cmVwb3NpdG9yeT4gYXJndW1lbnQgaXMKQEAgLTE1MCw4ICsxNzEsNyBAQAogCWxpbmtnaXQ6Z2l0LXB1bGxbMV0gYW5kIG90aGVyIGNvbW1hbmRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwKIAlzZWUgJ2JyYW5jaC48bmFtZT4ubWVyZ2UnIGluIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXS4KIAotLS10aGluOjoKLS0tbm8tdGhpbjo6CistLVtuby1ddGhpbjo6CiAJVGhlc2Ugb3B0aW9ucyBhcmUgcGFzc2VkIHRvIGxpbmtnaXQ6Z2l0LXNlbmQtcGFja1sxXS4gQSB0aGluIHRyYW5zZmVyCiAJc2lnbmlmaWNhbnRseSByZWR1Y2VzIHRoZSBhbW91bnQgb2Ygc2VudCBkYXRhIHdoZW4gdGhlIHNlbmRlciBhbmQKIAlyZWNlaXZlciBzaGFyZSBtYW55IG9mIHRoZSBzYW1lIG9iamVjdHMgaW4gY29tbW9uLiBUaGUgZGVmYXVsdCBpcwpAQCAtMTc2LDcgKzE5Niw3IEBACiAtLXJlY3Vyc2Utc3VibW9kdWxlcz1jaGVja3xvbi1kZW1hbmQ6OgogCU1ha2Ugc3VyZSBhbGwgc3VibW9kdWxlIGNvbW1pdHMgdXNlZCBieSB0aGUgcmV2aXNpb25zIHRvIGJlCiAJcHVzaGVkIGFyZSBhdmFpbGFibGUgb24gYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoLiBJZiAnY2hlY2snIGlzCi0JdXNlZCBnaXQgd2lsbCB2ZXJpZnkgdGhhdCBhbGwgc3VibW9kdWxlIGNvbW1pdHMgdGhhdCBjaGFuZ2VkIGluCisJdXNlZCBHaXQgd2lsbCB2ZXJpZnkgdGhhdCBhbGwgc3VibW9kdWxlIGNvbW1pdHMgdGhhdCBjaGFuZ2VkIGluCiAJdGhlIHJldmlzaW9ucyB0byBiZSBwdXNoZWQgYXJlIGF2YWlsYWJsZSBvbiBhdCBsZWFzdCBvbmUgcmVtb3RlCiAJb2YgdGhlIHN1Ym1vZHVsZS4gSWYgYW55IGNvbW1pdHMgYXJlIG1pc3NpbmcgdGhlIHB1c2ggd2lsbCBiZQogCWFib3J0ZWQgYW5kIGV4aXQgd2l0aCBub24temVybyBzdGF0dXMuIElmICdvbi1kZW1hbmQnIGlzIHVzZWQKQEAgLTE4NCw2ICsyMDQsMTEgQEAKIAliZSBwdXNoZWQuIElmIG9uLWRlbWFuZCB3YXMgbm90IGFibGUgdG8gcHVzaCBhbGwgbmVjZXNzYXJ5CiAJcmV2aXNpb25zIGl0IHdpbGwgYWxzbyBiZSBhYm9ydGVkIGFuZCBleGl0IHdpdGggbm9uLXplcm8gc3RhdHVzLgogCistLVtuby1ddmVyaWZ5OjoKKwlUb2dnbGUgdGhlIHByZS1wdXNoIGhvb2sgKHNlZSBsaW5rZ2l0OmdpdGhvb2tzWzVdKS4gIFRoZQorCWRlZmF1bHQgaXMgXC0tdmVyaWZ5LCBnaXZpbmcgdGhlIGhvb2sgYSBjaGFuY2UgdG8gcHJldmVudCB0aGUKKwlwdXNoLiAgV2l0aCBcLS1uby12ZXJpZnksIHRoZSBob29rIGlzIGJ5cGFzc2VkIGNvbXBsZXRlbHkuCisKIAogaW5jbHVkZTo6dXJscy1yZW1vdGVzLnR4dFtdCiAKQEAgLTE5MSw3ICsyMTYsNyBAQAogLS0tLS0tCiAKIFRoZSBvdXRwdXQgb2YgImdpdCBwdXNoIiBkZXBlbmRzIG9uIHRoZSB0cmFuc3BvcnQgbWV0aG9kIHVzZWQ7IHRoaXMKLXNlY3Rpb24gZGVzY3JpYmVzIHRoZSBvdXRwdXQgd2hlbiBwdXNoaW5nIG92ZXIgdGhlIGdpdCBwcm90b2NvbCAoZWl0aGVyCitzZWN0aW9uIGRlc2NyaWJlcyB0aGUgb3V0cHV0IHdoZW4gcHVzaGluZyBvdmVyIHRoZSBHaXQgcHJvdG9jb2wgKGVpdGhlcgogbG9jYWxseSBvciB2aWEgc3NoKS4KIAogVGhlIHN0YXR1cyBvZiB0aGUgcHVzaCBpcyBvdXRwdXQgaW4gdGFidWxhciBmb3JtLCB3aXRoIGVhY2ggbGluZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcXVpbHRpbXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcXVpbHRpbXBvcnQudHh0CmluZGV4IDdmMTEyZjMuLmEzNTYxOTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXF1aWx0aW1wb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1xdWlsdGltcG9ydC50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1BcHBsaWVzIGEgcXVpbHQgcGF0Y2hzZXQgb250byB0aGUgY3VycmVudCBnaXQgYnJhbmNoLCBwcmVzZXJ2aW5nCitBcHBsaWVzIGEgcXVpbHQgcGF0Y2hzZXQgb250byB0aGUgY3VycmVudCBHaXQgYnJhbmNoLCBwcmVzZXJ2aW5nCiB0aGUgcGF0Y2ggYm91bmRhcmllcywgcGF0Y2ggb3JkZXIsIGFuZCBwYXRjaCBkZXNjcmlwdGlvbnMgcHJlc2VudAogaW4gdGhlIHF1aWx0IHBhdGNoc2V0LgogCkBAIC0yNSw3ICsyNSw3IEBACiBpbnRlcmFjdGl2ZWx5IGVudGVyIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoLgogCiBJZiBhIHN1YmplY3QgaXMgbm90IGZvdW5kIGluIHRoZSBwYXRjaCBkZXNjcmlwdGlvbiB0aGUgcGF0Y2ggbmFtZSBpcwotcHJlc2VydmVkIGFzIHRoZSAxIGxpbmUgc3ViamVjdCBpbiB0aGUgZ2l0IGRlc2NyaXB0aW9uLgorcHJlc2VydmVkIGFzIHRoZSAxIGxpbmUgc3ViamVjdCBpbiB0aGUgR2l0IGRlc2NyaXB0aW9uLgogCiBPUFRJT05TCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmViYXNlLnR4dAppbmRleCBkYTA2N2VjLi5jODQ4NTRhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQKQEAgLTE3OSw3ICsxNzksNyBAQAogSW4gY2FzZSBvZiBjb25mbGljdCwgJ2dpdCByZWJhc2UnIHdpbGwgc3RvcCBhdCB0aGUgZmlyc3QgcHJvYmxlbWF0aWMgY29tbWl0CiBhbmQgbGVhdmUgY29uZmxpY3QgbWFya2VycyBpbiB0aGUgdHJlZS4gIFlvdSBjYW4gdXNlICdnaXQgZGlmZicgdG8gbG9jYXRlCiB0aGUgbWFya2VycyAoPDw8PDw8KSBhbmQgbWFrZSBlZGl0cyB0byByZXNvbHZlIHRoZSBjb25mbGljdC4gIEZvciBlYWNoCi1maWxlIHlvdSBlZGl0LCB5b3UgbmVlZCB0byB0ZWxsIGdpdCB0aGF0IHRoZSBjb25mbGljdCBoYXMgYmVlbiByZXNvbHZlZCwKK2ZpbGUgeW91IGVkaXQsIHlvdSBuZWVkIHRvIHRlbGwgR2l0IHRoYXQgdGhlIGNvbmZsaWN0IGhhcyBiZWVuIHJlc29sdmVkLAogdHlwaWNhbGx5IHRoaXMgd291bGQgYmUgZG9uZSB3aXRoCiAKIApAQCAtMjA4LDYgKzIwOCw5IEBACiByZWJhc2UuYXV0b3NxdWFzaDo6CiAJSWYgc2V0IHRvIHRydWUgZW5hYmxlICctLWF1dG9zcXVhc2gnIG9wdGlvbiBieSBkZWZhdWx0LgogCityZWJhc2UuYXV0b3N0YXNoOjoKKwlJZiBzZXQgdG8gdHJ1ZSBlbmFibGUgJy0tYXV0b3N0YXNoJyBvcHRpb24gYnkgZGVmYXVsdC4KKwogT1BUSU9OUwogLS0tLS0tLQogLS1vbnRvIDxuZXdiYXNlPjo6CkBAIC0zOTQsNiArMzk3LDEzIEBACiBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGByZWJhc2UuYXV0b3NxdWFzaGAsIHRoaXMgb3B0aW9uIGNhbiBiZQogdXNlZCB0byBvdmVycmlkZSBhbmQgZGlzYWJsZSB0aGlzIHNldHRpbmcuCiAKKy0tW25vLV1hdXRvc3Rhc2g6OgorCUF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdGVtcG9yYXJ5IHN0YXNoIGJlZm9yZSB0aGUgb3BlcmF0aW9uCisJYmVnaW5zLCBhbmQgYXBwbHkgaXQgYWZ0ZXIgdGhlIG9wZXJhdGlvbiBlbmRzLiAgVGhpcyBtZWFucworCXRoYXQgeW91IGNhbiBydW4gcmViYXNlIG9uIGEgZGlydHkgd29ya3RyZWUuICBIb3dldmVyLCB1c2UKKwl3aXRoIGNhcmU6IHRoZSBmaW5hbCBzdGFzaCBhcHBsaWNhdGlvbiBhZnRlciBhIHN1Y2Nlc3NmdWwKKwlyZWJhc2UgbWlnaHQgcmVzdWx0IGluIG5vbi10cml2aWFsIGNvbmZsaWN0cy4KKwogLS1uby1mZjo6CiAJV2l0aCAtLWludGVyYWN0aXZlLCBjaGVycnktcGljayBhbGwgcmViYXNlZCBjb21taXRzIGluc3RlYWQgb2YKIAlmYXN0LWZvcndhcmRpbmcgb3ZlciB0aGUgdW5jaGFuZ2VkIG9uZXMuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlZmxvZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZWZsb2cudHh0CmluZGV4IDdmZTJkMjIuLjcwNzkxYjkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlZmxvZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVmbG9nLnR4dApAQCAtMzgsNyArMzgsNyBAQAogYXMgd2VsbCkuICBJdCBpcyBhbiBhbGlhcyBmb3IgYGdpdCBsb2cgLWcgLS1hYmJyZXYtY29tbWl0IC0tcHJldHR5PW9uZWxpbmVgOwogc2VlIGxpbmtnaXQ6Z2l0LWxvZ1sxXS4KIAotVGhlIHJlZmxvZyBpcyB1c2VmdWwgaW4gdmFyaW91cyBnaXQgY29tbWFuZHMsIHRvIHNwZWNpZnkgdGhlIG9sZCB2YWx1ZQorVGhlIHJlZmxvZyBpcyB1c2VmdWwgaW4gdmFyaW91cyBHaXQgY29tbWFuZHMsIHRvIHNwZWNpZnkgdGhlIG9sZCB2YWx1ZQogb2YgYSByZWZlcmVuY2UuIEZvciBleGFtcGxlLCBgSEVBREB7Mn1gIG1lYW5zICJ3aGVyZSBIRUFEIHVzZWQgdG8gYmUKIHR3byBtb3ZlcyBhZ28iLCBgbWFzdGVyQHtvbmUud2Vlay5hZ299YCBtZWFucyAid2hlcmUgbWFzdGVyIHVzZWQgdG8KIHBvaW50IHRvIG9uZSB3ZWVrIGFnbyIsIGFuZCBzbyBvbi4gU2VlIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddIGZvcgpAQCAtNjcsMTQgKzY3LDE5IEBACiAtLWV4cGlyZT08dGltZT46OgogCUVudHJpZXMgb2xkZXIgdGhhbiB0aGlzIHRpbWUgYXJlIHBydW5lZC4gIFdpdGhvdXQgdGhlCiAJb3B0aW9uIGl0IGlzIHRha2VuIGZyb20gY29uZmlndXJhdGlvbiBgZ2MucmVmbG9nRXhwaXJlYCwKLQl3aGljaCBpbiB0dXJuIGRlZmF1bHRzIHRvIDkwIGRheXMuCisJd2hpY2ggaW4gdHVybiBkZWZhdWx0cyB0byA5MCBkYXlzLiAgLS1leHBpcmU9YWxsIHBydW5lcworCWVudHJpZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBhZ2U7IC0tZXhwaXJlPW5ldmVyIHR1cm5zIG9mZgorCXBydW5pbmcgb2YgcmVhY2hhYmxlIGVudHJpZXMgKGJ1dCBzZWUgLS1leHBpcmUtdW5yZWFjaGFibGUpLgogCiAtLWV4cGlyZS11bnJlYWNoYWJsZT08dGltZT46OgogCUVudHJpZXMgb2xkZXIgdGhhbiB0aGlzIHRpbWUgYW5kIG5vdCByZWFjaGFibGUgZnJvbQogCXRoZSBjdXJyZW50IHRpcCBvZiB0aGUgYnJhbmNoIGFyZSBwcnVuZWQuICBXaXRob3V0IHRoZQogCW9wdGlvbiBpdCBpcyB0YWtlbiBmcm9tIGNvbmZpZ3VyYXRpb24KIAlgZ2MucmVmbG9nRXhwaXJlVW5yZWFjaGFibGVgLCB3aGljaCBpbiB0dXJuIGRlZmF1bHRzIHRvCi0JMzAgZGF5cy4KKwkzMCBkYXlzLiAgLS1leHBpcmUtdW5yZWFjaGFibGU9YWxsIHBydW5lcyB1bnJlYWNoYWJsZQorCWVudHJpZXMgcmVnYXJkbGVzcyBvZiB0aGVpciBhZ2U7IC0tZXhwaXJlLXVucmVhY2hhYmxlPW5ldmVyCisJdHVybnMgb2ZmIGVhcmx5IHBydW5pbmcgb2YgdW5yZWFjaGFibGUgZW50cmllcyAoYnV0IHNlZQorCS0tZXhwaXJlKS4KIAogLS1hbGw6OgogCUluc3RlYWQgb2YgbGlzdGluZyA8cmVmcz4gZXhwbGljaXRseSwgcHJ1bmUgYWxsIHJlZnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtZXh0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1leHQudHh0CmluZGV4IDhhOGUxZDcuLjhjZmM3NDggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1leHQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1leHQudHh0CkBAIC0xMyw3ICsxMyw3IEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIFRoaXMgcmVtb3RlIGhlbHBlciB1c2VzIHRoZSBzcGVjaWZpZWQgJzxjb21tYW5kPicgdG8gY29ubmVjdAotdG8gYSByZW1vdGUgZ2l0IHNlcnZlci4KK3RvIGEgcmVtb3RlIEdpdCBzZXJ2ZXIuCiAKIERhdGEgd3JpdHRlbiB0byBzdGRpbiBvZiB0aGUgc3BlY2lmaWVkICc8Y29tbWFuZD4nIGlzIGFzc3VtZWQKIHRvIGJlIHNlbnQgdG8gYSBnaXQ6Ly8gc2VydmVyLCBnaXQtdXBsb2FkLXBhY2ssIGdpdC1yZWNlaXZlLXBhY2sKQEAgLTMzLDEyICszMywxMiBAQAogCiAnJXMnOjoKIAlSZXBsYWNlZCB3aXRoIG5hbWUgKHJlY2VpdmUtcGFjaywgdXBsb2FkLXBhY2ssIG9yCi0JdXBsb2FkLWFyY2hpdmUpIG9mIHRoZSBzZXJ2aWNlIGdpdCB3YW50cyB0byBpbnZva2UuCisJdXBsb2FkLWFyY2hpdmUpIG9mIHRoZSBzZXJ2aWNlIEdpdCB3YW50cyB0byBpbnZva2UuCiAKICclUyc6OgogCVJlcGxhY2VkIHdpdGggbG9uZyBuYW1lIChnaXQtcmVjZWl2ZS1wYWNrLAogCWdpdC11cGxvYWQtcGFjaywgb3IgZ2l0LXVwbG9hZC1hcmNoaXZlKSBvZiB0aGUgc2VydmljZQotCWdpdCB3YW50cyB0byBpbnZva2UuCisJR2l0IHdhbnRzIHRvIGludm9rZS4KIAogJyVHJyAobXVzdCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVycyBpbiBhbiBhcmd1bWVudCk6OgogCVRoaXMgYXJndW1lbnQgd2lsbCBub3QgYmUgcGFzc2VkIHRvICc8Y29tbWFuZD4nLiBJbnN0ZWFkLCBpdApAQCAtNzUsNyArNzUsNyBAQAogCiBFWEFNUExFUzoKIC0tLS0tLS0tLQotVGhpcyByZW1vdGUgaGVscGVyIGlzIHRyYW5zcGFyZW50bHkgdXNlZCBieSBnaXQgd2hlbgorVGhpcyByZW1vdGUgaGVscGVyIGlzIHRyYW5zcGFyZW50bHkgdXNlZCBieSBHaXQgd2hlbgogeW91IHVzZSBjb21tYW5kcyBzdWNoIGFzICJnaXQgZmV0Y2ggPFVSTD4iLCAiZ2l0IGNsb25lIDxVUkw+IiwKICwgImdpdCBwdXNoIDxVUkw+IiBvciAiZ2l0IHJlbW90ZSBhZGQgPG5pY2s+IDxVUkw+Iiwgd2hlcmUgPFVSTD4KIGJlZ2lucyB3aXRoIGBleHQ6OmAuICBFeGFtcGxlczoKQEAgLTg2LDcgKzg2LDcgQEAKIAllZGl0IC5zc2gvY29uZmlnLgogCiAiZXh0Ojpzb2NhdCAtdDM2MDAgLSBBQlNUUkFDVC1DT05ORUNUOi9naXQtc2VydmVyICVHL3NvbWVyZXBvIjo6Ci0JUmVwcmVzZW50cyByZXBvc2l0b3J5IHdpdGggcGF0aCAvc29tZXJlcG8gYWNjZXNzYWJsZSBvdmVyCisJUmVwcmVzZW50cyByZXBvc2l0b3J5IHdpdGggcGF0aCAvc29tZXJlcG8gYWNjZXNzaWJsZSBvdmVyCiAJZ2l0IHByb3RvY29sIGF0IGFic3RyYWN0IG5hbWVzcGFjZSBhZGRyZXNzIC9naXQtc2VydmVyLgogCiAiZXh0OjpnaXQtc2VydmVyLWFsaWFzIGZvbyAlRy9yZXBvIjo6CkBAIC0xMDAsMTQgKzEwMCwxNCBAQAogCVJlcHJlc2VudHMgYSByZXBvc2l0b3J5IHdpdGggcGF0aCAvcmVwbyBhY2Nlc3NlZCB1c2luZyB0aGUKIAloZWxwZXIgcHJvZ3JhbSAiZ2l0LXNlcnZlci1hbGlhcyBmb28iLiAgVGhlIGhvc3RuYW1lIGZvciB0aGUKIAlyZW1vdGUgc2VydmVyIHBhc3NlZCBpbiB0aGUgcHJvdG9jb2wgc3RyZWFtIHdpbGwgYmUgImZvbyIKLQkodGhpcyBhbGxvd3MgbXVsdGlwbGUgdmlydHVhbCBnaXQgc2VydmVycyB0byBzaGFyZSBhCisJKHRoaXMgYWxsb3dzIG11bHRpcGxlIHZpcnR1YWwgR2l0IHNlcnZlcnMgdG8gc2hhcmUgYQogCWxpbmstbGV2ZWwgYWRkcmVzcykuCiAKICJleHQ6OmdpdC1zZXJ2ZXItYWxpYXMgZm9vICVHL3JlcG8lIHdpdGglIHNwYWNlcyAlVmZvbyI6OgogCVJlcHJlc2VudHMgYSByZXBvc2l0b3J5IHdpdGggcGF0aCAnL3JlcG8gd2l0aCBzcGFjZXMnIGFjY2Vzc2VkCiAJdXNpbmcgdGhlIGhlbHBlciBwcm9ncmFtICJnaXQtc2VydmVyLWFsaWFzIGZvbyIuICBUaGUgaG9zdG5hbWUgZm9yCiAJdGhlIHJlbW90ZSBzZXJ2ZXIgcGFzc2VkIGluIHRoZSBwcm90b2NvbCBzdHJlYW0gd2lsbCBiZSAiZm9vIgotCSh0aGlzIGFsbG93cyBtdWx0aXBsZSB2aXJ0dWFsIGdpdCBzZXJ2ZXJzIHRvIHNoYXJlIGEKKwkodGhpcyBhbGxvd3MgbXVsdGlwbGUgdmlydHVhbCBHaXQgc2VydmVycyB0byBzaGFyZSBhCiAJbGluay1sZXZlbCBhZGRyZXNzKS4KIAogImV4dDo6Z2l0LXNzbCBmb28uZXhhbXBsZSAvYmFyIjo6CkBAIC0xMTgsNyArMTE4LDcgQEAKIAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLS0KLURvY3VtZW50YXRpb24gYnkgSWxhcmkgTGl1c3ZhYXJhLCBKb25hdGhhbiBOaWVkZXIgYW5kIHRoZSBnaXQgbGlzdAorRG9jdW1lbnRhdGlvbiBieSBJbGFyaSBMaXVzdmFhcmEsIEpvbmF0aGFuIE5pZWRlciBhbmQgdGhlIEdpdCBsaXN0CiA8Z2l0QHZnZXIua2VybmVsLm9yZz4KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtZmQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLWZkLnR4dAppbmRleCBmMDk1ZDU3Li45MzNjMmFkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtZmQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS1mZC50eHQKQEAgLTExLDE0ICsxMSwxNCBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLVRoaXMgaGVscGVyIHVzZXMgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvcnMgdG8gY29ubmVjdCB0byBhIHJlbW90ZSBnaXQgc2VydmVyLgorVGhpcyBoZWxwZXIgdXNlcyBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9ycyB0byBjb25uZWN0IHRvIGEgcmVtb3RlIEdpdCBzZXJ2ZXIuCiBUaGlzIGlzIG5vdCBtZWFudCBmb3IgZW5kIHVzZXJzIGJ1dCBmb3IgcHJvZ3JhbXMgYW5kIHNjcmlwdHMgY2FsbGluZyBnaXQKIGZldGNoLCBwdXNoIG9yIGFyY2hpdmUuCiAKIElmIG9ubHkgPGluZmQ+IGlzIGdpdmVuLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGEgYmlkaXJlY3Rpb25hbCBzb2NrZXQgY29ubmVjdGVkCi10byByZW1vdGUgZ2l0IHNlcnZlciAoZ2l0LXVwbG9hZC1wYWNrLCBnaXQtcmVjZWl2ZS1wYWNrIG9yCit0byByZW1vdGUgR2l0IHNlcnZlciAoZ2l0LXVwbG9hZC1wYWNrLCBnaXQtcmVjZWl2ZS1wYWNrIG9yCiBnaXQtdXBsb2FkLWFjaGl2ZSkuIElmIGJvdGggPGluZmQ+IGFuZCA8b3V0ZmQ+IGFyZSBnaXZlbiwgdGhleSBhcmUgYXNzdW1lZAotdG8gYmUgcGlwZXMgY29ubmVjdGVkIHRvIGEgcmVtb3RlIGdpdCBzZXJ2ZXIgKDxpbmZkPiBiZWluZyB0aGUgaW5ib3VuZCBwaXBlCit0byBiZSBwaXBlcyBjb25uZWN0ZWQgdG8gYSByZW1vdGUgR2l0IHNlcnZlciAoPGluZmQ+IGJlaW5nIHRoZSBpbmJvdW5kIHBpcGUKIGFuZCA8b3V0ZmQ+IGJlaW5nIHRoZSBvdXRib3VuZCBwaXBlLgogCiBJdCBpcyBhc3N1bWVkIHRoYXQgYW55IGhhbmRzaGFraW5nIHByb2NlZHVyZXMgaGF2ZSBhbHJlYWR5IGJlZW4gY29tcGxldGVkCkBAIC01Miw3ICs1Miw3IEBACiAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0tCi1Eb2N1bWVudGF0aW9uIGJ5IElsYXJpIExpdXN2YWFyYSBhbmQgdGhlIGdpdCBsaXN0IDxnaXRAdmdlci5rZXJuZWwub3JnPgorRG9jdW1lbnRhdGlvbiBieSBJbGFyaSBMaXVzdmFhcmEgYW5kIHRoZSBHaXQgbGlzdCA8Z2l0QHZnZXIua2VybmVsLm9yZz4KIAogR0lUCiAtLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS10ZXN0Z2l0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS10ZXN0Z2l0LnR4dAppbmRleCA0Yzg3MWI5Li5mNzkxZDczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUtdGVzdGdpdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLXRlc3RnaXQudHh0CkBAIC0xOSw3ICsxOSw3IEBACiBzaG93IHJlbW90ZS1oZWxwZXIgYXV0aG9ycyBvbmUgcG9zc2libGUgaW1wbGVtZW50YXRpb24uCiAKIFRoZSBiZXN0IHdheSB0byBsZWFybiBtb3JlIGlzIHRvIHJlYWQgdGhlIGNvbW1lbnRzIGFuZCBzb3VyY2UgY29kZSBpbgotJ2dpdC1yZW1vdGUtdGVzdGdpdC5weScuCisnZ2l0LXJlbW90ZS10ZXN0Z2l0Jy4KIAogU0VFIEFMU08KIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dAppbmRleCBlOGMzOTZiLi41ODFiYjRjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS50eHQKQEAgLTEwLDcgKzEwLDcgQEAKIC0tLS0tLS0tCiBbdmVyc2VdCiAnZ2l0IHJlbW90ZScgWy12IHwgLS12ZXJib3NlXQotJ2dpdCByZW1vdGUgYWRkJyBbLXQgPGJyYW5jaD5dIFstbSA8bWFzdGVyPl0gWy1mXSBbLS10YWdzfC0tbm8tdGFnc10gWy0tbWlycm9yPTxmZXRjaHxwdXNoPl0gPG5hbWU+IDx1cmw+CisnZ2l0IHJlbW90ZSBhZGQnIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLVtuby1ddGFnc10gWy0tbWlycm9yPTxmZXRjaHxwdXNoPl0gPG5hbWU+IDx1cmw+CiAnZ2l0IHJlbW90ZSByZW5hbWUnIDxvbGQ+IDxuZXc+CiAnZ2l0IHJlbW90ZSByZW1vdmUnIDxuYW1lPgogJ2dpdCByZW1vdGUgc2V0LWhlYWQnIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+KQpAQCAtMTgsOCArMTgsOCBAQAogJ2dpdCByZW1vdGUgc2V0LXVybCcgWy0tcHVzaF0gPG5hbWU+IDxuZXd1cmw+IFs8b2xkdXJsPl0KICdnaXQgcmVtb3RlIHNldC11cmwgLS1hZGQnIFstLXB1c2hdIDxuYW1lPiA8bmV3dXJsPgogJ2dpdCByZW1vdGUgc2V0LXVybCAtLWRlbGV0ZScgWy0tcHVzaF0gPG5hbWU+IDx1cmw+Ci0nZ2l0IHJlbW90ZScgWy12IHwgLS12ZXJib3NlXSAnc2hvdycgWy1uXSA8bmFtZT4KLSdnaXQgcmVtb3RlIHBydW5lJyBbLW4gfCAtLWRyeS1ydW5dIDxuYW1lPgorJ2dpdCByZW1vdGUnIFstdiB8IC0tdmVyYm9zZV0gJ3Nob3cnIFstbl0gPG5hbWU+Li4uCisnZ2l0IHJlbW90ZSBwcnVuZScgWy1uIHwgLS1kcnktcnVuXSA8bmFtZT4uLi4KICdnaXQgcmVtb3RlJyBbLXYgfCAtLXZlcmJvc2VdICd1cGRhdGUnIFstcCB8IC0tcHJ1bmVdIFsoPGdyb3VwPiB8IDxyZW1vdGU+KS4uLl0KIAogREVTQ1JJUFRJT04KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlcGxhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVwbGFjZS50eHQKaW5kZXggNTExMzFkMC4uZTBiNDA1NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVwbGFjZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmVwbGFjZS50eHQKQEAgLTE2LDEzICsxNiwxMyBAQAogLS0tLS0tLS0tLS0KIEFkZHMgYSAncmVwbGFjZScgcmVmZXJlbmNlIGluIGByZWZzL3JlcGxhY2UvYCBuYW1lc3BhY2UuCiAKLVRoZSBuYW1lIG9mIHRoZSAncmVwbGFjZScgcmVmZXJlbmNlIGlzIHRoZSBTSEExIG9mIHRoZSBvYmplY3QgdGhhdCBpcwotcmVwbGFjZWQuIFRoZSBjb250ZW50IG9mIHRoZSAncmVwbGFjZScgcmVmZXJlbmNlIGlzIHRoZSBTSEExIG9mIHRoZQorVGhlIG5hbWUgb2YgdGhlICdyZXBsYWNlJyByZWZlcmVuY2UgaXMgdGhlIFNIQS0xIG9mIHRoZSBvYmplY3QgdGhhdCBpcworcmVwbGFjZWQuIFRoZSBjb250ZW50IG9mIHRoZSAncmVwbGFjZScgcmVmZXJlbmNlIGlzIHRoZSBTSEEtMSBvZiB0aGUKIHJlcGxhY2VtZW50IG9iamVjdC4KIAogVW5sZXNzIGAtZmAgaXMgZ2l2ZW4sIHRoZSAncmVwbGFjZScgcmVmZXJlbmNlIG11c3Qgbm90IHlldCBleGlzdC4KIAotUmVwbGFjZW1lbnQgcmVmZXJlbmNlcyB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdCBieSBhbGwgZ2l0IGNvbW1hbmRzCitSZXBsYWNlbWVudCByZWZlcmVuY2VzIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0IGJ5IGFsbCBHaXQgY29tbWFuZHMKIGV4Y2VwdCB0aG9zZSBkb2luZyByZWFjaGFiaWxpdHkgdHJhdmVyc2FsIChwcnVuZSwgcGFjayB0cmFuc2ZlciBhbmQKIGZzY2spLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXNldC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXNldC50eHQKaW5kZXggOTc4ZDhkYS4uYTQwNGI0NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVzZXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlc2V0LnR4dApAQCAtOCwyMCArOCwyMCBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IHJlc2V0JyBbLXFdIFs8Y29tbWl0Pl0gWy0tXSA8cGF0aHM+Li4uCi0nZ2l0IHJlc2V0JyAoLS1wYXRjaCB8IC1wKSBbPGNvbW1pdD5dIFstLV0gWzxwYXRocz4uLi5dCisnZ2l0IHJlc2V0JyBbLXFdIFs8dHJlZS1pc2g+XSBbLS1dIDxwYXRocz4uLi4KKydnaXQgcmVzZXQnICgtLXBhdGNoIHwgLXApIFs8dHJlZS1zaD5dIFstLV0gWzxwYXRocz4uLi5dCiAnZ2l0IHJlc2V0JyBbLS1zb2Z0IHwgLS1taXhlZCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XQogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLUluIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGZvcm0sIGNvcHkgZW50cmllcyBmcm9tIDxjb21taXQ+IHRvIHRoZSBpbmRleC4KK0luIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGZvcm0sIGNvcHkgZW50cmllcyBmcm9tIDx0cmVlLWlzaD4gdG8gdGhlIGluZGV4LgogSW4gdGhlIHRoaXJkIGZvcm0sIHNldCB0aGUgY3VycmVudCBicmFuY2ggaGVhZCAoSEVBRCkgdG8gPGNvbW1pdD4sIG9wdGlvbmFsbHkKLW1vZGlmeWluZyBpbmRleCBhbmQgd29ya2luZyB0cmVlIHRvIG1hdGNoLiAgVGhlIDxjb21taXQ+IGRlZmF1bHRzIHRvIEhFQUQKLWluIGFsbCBmb3Jtcy4KK21vZGlmeWluZyBpbmRleCBhbmQgd29ya2luZyB0cmVlIHRvIG1hdGNoLiAgVGhlIDx0cmVlLWlzaD4vPGNvbW1pdD4gZGVmYXVsdHMKK3RvIEhFQUQgaW4gYWxsIGZvcm1zLgogCi0nZ2l0IHJlc2V0JyBbLXFdIFs8Y29tbWl0Pl0gWy0tXSA8cGF0aHM+Li4uOjoKKydnaXQgcmVzZXQnIFstcV0gWzx0cmVlLWlzaD5dIFstLV0gPHBhdGhzPi4uLjo6CiAJVGhpcyBmb3JtIHJlc2V0cyB0aGUgaW5kZXggZW50cmllcyBmb3IgYWxsIDxwYXRocz4gdG8gdGhlaXIKLQlzdGF0ZSBhdCA8Y29tbWl0Pi4gIChJdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHdvcmtpbmcgdHJlZSwgbm9yCisJc3RhdGUgYXQgPHRyZWUtaXNoPi4gIChJdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHdvcmtpbmcgdHJlZSwgbm9yCiAJdGhlIGN1cnJlbnQgYnJhbmNoLikKICsKIFRoaXMgbWVhbnMgdGhhdCBgZ2l0IHJlc2V0IDxwYXRocz5gIGlzIHRoZSBvcHBvc2l0ZSBvZiBgZ2l0IGFkZApAQCAtMzQsOSArMzQsOSBAQAogY2FuIGNvcHkgdGhlIGNvbnRlbnRzIG9mIGEgcGF0aCBvdXQgb2YgYSBjb21taXQgdG8gdGhlIGluZGV4IGFuZCB0byB0aGUKIHdvcmtpbmcgdHJlZSBpbiBvbmUgZ28uCiAKLSdnaXQgcmVzZXQnICgtLXBhdGNoIHwgLXApIFs8Y29tbWl0Pl0gWy0tXSBbPHBhdGhzPi4uLl06OgorJ2dpdCByZXNldCcgKC0tcGF0Y2ggfCAtcCkgWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dOjoKIAlJbnRlcmFjdGl2ZWx5IHNlbGVjdCBodW5rcyBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBpbmRleAotCWFuZCA8Y29tbWl0PiAoZGVmYXVsdHMgdG8gSEVBRCkuICBUaGUgY2hvc2VuIGh1bmtzIGFyZSBhcHBsaWVkCisJYW5kIDx0cmVlLWlzaD4gKGRlZmF1bHRzIHRvIEhFQUQpLiAgVGhlIGNob3NlbiBodW5rcyBhcmUgYXBwbGllZAogCWluIHJldmVyc2UgdG8gdGhlIGluZGV4LgogKwogVGhpcyBtZWFucyB0aGF0IGBnaXQgcmVzZXQgLXBgIGlzIHRoZSBvcHBvc2l0ZSBvZiBgZ2l0IGFkZCAtcGAsIGkuZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJldi1saXN0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJldi1saXN0LnR4dAppbmRleCAzOGZhZmNhLi42NWFjMjdlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtbGlzdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2LWxpc3QudHh0CkBAIC05OSw3ICs5OSw3IEBACiAJJCBnaXQgcmV2LWxpc3QgQS4uLkIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSdyZXYtbGlzdCcgaXMgYSB2ZXJ5IGVzc2VudGlhbCBnaXQgY29tbWFuZCwgc2luY2UgaXQKKydyZXYtbGlzdCcgaXMgYSB2ZXJ5IGVzc2VudGlhbCBHaXQgY29tbWFuZCwgc2luY2UgaXQKIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGJ1aWxkIGFuZCB0cmF2ZXJzZSBjb21taXQgYW5jZXN0cnkgZ3JhcGhzLiBGb3IKIHRoaXMgcmVhc29uLCBpdCBoYXMgYSBsb3Qgb2YgZGlmZmVyZW50IG9wdGlvbnMgdGhhdCBlbmFibGVzIGl0IHRvIGJlCiB1c2VkIGJ5IGNvbW1hbmRzIGFzIGRpZmZlcmVudCBhcyAnZ2l0IGJpc2VjdCcgYW5kCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtcGFyc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2LXBhcnNlLnR4dAppbmRleCAzYzYzNTYxLi45NDdkNjJmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtcGFyc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJldi1wYXJzZS50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1NYW55IGdpdCBwb3JjZWxhaW5pc2ggY29tbWFuZHMgdGFrZSBtaXh0dXJlIG9mIGZsYWdzCitNYW55IEdpdCBwb3JjZWxhaW5pc2ggY29tbWFuZHMgdGFrZSBtaXh0dXJlIG9mIGZsYWdzCiAoaS5lLiBwYXJhbWV0ZXJzIHRoYXQgYmVnaW4gd2l0aCBhIGRhc2ggJy0nKSBhbmQgcGFyYW1ldGVycwogbWVhbnQgZm9yIHRoZSB1bmRlcmx5aW5nICdnaXQgcmV2LWxpc3QnIGNvbW1hbmQgdGhleSB1c2UgaW50ZXJuYWxseQogYW5kIGZsYWdzIGFuZCBwYXJhbWV0ZXJzIGZvciB0aGUgb3RoZXIgY29tbWFuZHMgdGhleSB1c2UKQEAgLTYwLDggKzYwLDE5IEBACiAJaW5zdGVhZC4KIAogLS12ZXJpZnk6OgotCVRoZSBwYXJhbWV0ZXIgZ2l2ZW4gbXVzdCBiZSB1c2FibGUgYXMgYSBzaW5nbGUsIHZhbGlkCi0Jb2JqZWN0IG5hbWUuICBPdGhlcndpc2UgYmFyZiBhbmQgYWJvcnQuCisJVmVyaWZ5IHRoYXQgZXhhY3RseSBvbmUgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBhbmQgdGhhdCBpdAorCWNhbiBiZSB0dXJuZWQgaW50byBhIHJhdyAyMC1ieXRlIFNIQS0xIHRoYXQgY2FuIGJlIHVzZWQgdG8KKwlhY2Nlc3MgdGhlIG9iamVjdCBkYXRhYmFzZS4gSWYgc28sIGVtaXQgaXQgdG8gdGhlIHN0YW5kYXJkCisJb3V0cHV0OyBvdGhlcndpc2UsIGVycm9yIG91dC4KKysKK0lmIHlvdSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgYWN0dWFsbHkgbmFtZXMgYW4gb2JqZWN0IGluCit5b3VyIG9iamVjdCBkYXRhYmFzZSBhbmQvb3IgY2FuIGJlIHVzZWQgYXMgYSBzcGVjaWZpYyB0eXBlIG9mIG9iamVjdAoreW91IHJlcXVpcmUsIHlvdSBjYW4gYWRkICJee3R5cGV9IiBwZWVsaW5nIG9wZXJhdG9yIHRvIHRoZSBwYXJtZXRlci4KK0ZvciBleGFtcGxlLCBgZ2l0IHJldi1wYXJzZSAiJFZBUl57Y29tbWl0fSJgIHdpbGwgbWFrZSBzdXJlIGAkVkFSYAorbmFtZXMgYW4gZXhpc3Rpbmcgb2JqZWN0IHRoYXQgaXMgYSBjb21taXQtaXNoIChpLmUuIGEgY29tbWl0LCBvciBhbgorYW5ub3RhdGVkIHRhZyB0aGF0IHBvaW50cyBhdCBhIGNvbW1pdCkuICBUbyBtYWtlIHN1cmUgdGhhdCBgJFZBUmAKK25hbWVzIGFuIGV4aXN0aW5nIG9iamVjdCBvZiBhbnkgdHlwZSwgYGdpdCByZXYtcGFyc2UgIiRWQVJee29iamVjdH0iYAorY2FuIGJlIHVzZWQuCiAKIC1xOjoKIC0tcXVpZXQ6OgpAQCAtODQsNyArOTUsNyBAQAogCW9uZS4KIAogLS1zeW1ib2xpYzo6Ci0JVXN1YWxseSB0aGUgb2JqZWN0IG5hbWVzIGFyZSBvdXRwdXQgaW4gU0hBMSBmb3JtICh3aXRoCisJVXN1YWxseSB0aGUgb2JqZWN0IG5hbWVzIGFyZSBvdXRwdXQgaW4gU0hBLTEgZm9ybSAod2l0aAogCXBvc3NpYmxlICd7Y2FyZXR9JyBwcmVmaXgpOyB0aGlzIG9wdGlvbiBtYWtlcyB0aGVtIG91dHB1dCBpbiBhCiAJZm9ybSBhcyBjbG9zZSB0byB0aGUgb3JpZ2luYWwgaW5wdXQgYXMgcG9zc2libGUuCiAKQEAgLTE0Nyw3ICsxNTgsNyBAQAogCXJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogKwogSWYgYCRHSVRfRElSYCBpcyBub3QgZGVmaW5lZCBhbmQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Ci1pcyBub3QgZGV0ZWN0ZWQgdG8gbGllIGluIGEgZ2l0IHJlcG9zaXRvcnkgb3Igd29yayB0cmVlCitpcyBub3QgZGV0ZWN0ZWQgdG8gbGllIGluIGEgR2l0IHJlcG9zaXRvcnkgb3Igd29yayB0cmVlCiBwcmludCBhIG1lc3NhZ2UgdG8gc3RkZXJyIGFuZCBleGl0IHdpdGggbm9uemVybyBzdGF0dXMuCiAKIC0taXMtaW5zaWRlLWdpdC1kaXI6OgpAQCAtMTY5LDcgKzE4MCw3IEBACiAKIC0tc2hvcnQ6OgogLS1zaG9ydD1udW1iZXI6OgotCUluc3RlYWQgb2Ygb3V0cHV0dGluZyB0aGUgZnVsbCBTSEExIHZhbHVlcyBvZiBvYmplY3QgbmFtZXMgdHJ5IHRvCisJSW5zdGVhZCBvZiBvdXRwdXR0aW5nIHRoZSBmdWxsIFNIQS0xIHZhbHVlcyBvZiBvYmplY3QgbmFtZXMgdHJ5IHRvCiAJYWJicmV2aWF0ZSB0aGVtIHRvIGEgc2hvcnRlciB1bmlxdWUgbmFtZS4gV2hlbiBubyBsZW5ndGggaXMgc3BlY2lmaWVkCiAJNyBpcyB1c2VkLiBUaGUgbWluaW11bSBsZW5ndGggaXMgNC4KIApAQCAtMTg3LDkgKzE5OCwxMSBAQAogCUZsYWdzIGFuZCBwYXJhbWV0ZXJzIHRvIGJlIHBhcnNlZC4KIAogLS1yZXNvbHZlLWdpdC1kaXIgPHBhdGg+OjoKLQlDaGVjayBpZiA8cGF0aD4gaXMgYSB2YWxpZCBnaXQtZGlyIG9yIGEgZ2l0LWZpbGUgcG9pbnRpbmcgdG8gYSB2YWxpZAotCWdpdC1kaXIuIElmIDxwYXRoPiBpcyBhIHZhbGlkIGdpdC1kaXIgdGhlIHJlc29sdmVkIHBhdGggdG8gZ2l0LWRpciB3aWxsCi0JYmUgcHJpbnRlZC4KKwlDaGVjayBpZiA8cGF0aD4gaXMgYSB2YWxpZCByZXBvc2l0b3J5IG9yIGEgZ2l0ZmlsZSB0aGF0CisJcG9pbnRzIGF0IGEgdmFsaWQgcmVwb3NpdG9yeSwgYW5kIHByaW50IHRoZSBsb2NhdGlvbiBvZiB0aGUKKwlyZXBvc2l0b3J5LiAgSWYgPHBhdGg+IGlzIGEgZ2l0ZmlsZSB0aGVuIHRoZSByZXNvbHZlZCBwYXRoCisJdG8gdGhlIHJlYWwgcmVwb3NpdG9yeSBpcyBwcmludGVkLgorCiAKIGluY2x1ZGU6OnJldmlzaW9ucy50eHRbXQogCkBAIC0zMDYsMTIgKzMxOSwxMiBAQAogKiBQcmludCB0aGUgY29tbWl0IG9iamVjdCBuYW1lIGZyb20gdGhlIHJldmlzaW9uIGluIHRoZSAkUkVWIHNoZWxsIHZhcmlhYmxlOgogKwogLS0tLS0tLS0tLS0tCi0kIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgJFJFVgorJCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICRSRVZee2NvbW1pdH0KIC0tLS0tLS0tLS0tLQogKwogVGhpcyB3aWxsIGVycm9yIG91dCBpZiAkUkVWIGlzIGVtcHR5IG9yIG5vdCBhIHZhbGlkIHJldmlzaW9uLgogCi0qIFNhbWUgYXMgYWJvdmU6CisqIFNpbWlsYXIgdG8gYWJvdmU6CiArCiAtLS0tLS0tLS0tLS0KICQgZ2l0IHJldi1wYXJzZSAtLWRlZmF1bHQgbWFzdGVyIC0tdmVyaWZ5ICRSRVYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJldmVydC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXZlcnQudHh0CmluZGV4IDcwMTUyZTguLmY3OWM5ZDggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJldmVydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2ZXJ0LnR4dApAQCAtOCw3ICs4LDcgQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCByZXZlcnQnIFstLWVkaXQgfCAtLW5vLWVkaXRdIFstbl0gWy1tIHBhcmVudC1udW1iZXJdIFstc10gPGNvbW1pdD4uLi4KKydnaXQgcmV2ZXJ0JyBbLS1bbm8tXWVkaXRdIFstbl0gWy1tIHBhcmVudC1udW1iZXJdIFstc10gPGNvbW1pdD4uLi4KICdnaXQgcmV2ZXJ0JyAtLWNvbnRpbnVlCiAnZ2l0IHJldmVydCcgLS1xdWl0CiAnZ2l0IHJldmVydCcgLS1hYm9ydApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcm0udHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcm0udHh0CmluZGV4IDI2MjQzNmIuLjFkODc2YzIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJtLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1ybS50eHQKQEAgLTI4LDcgKzI4LDcgQEAKIC0tLS0tLS0KIDxmaWxlPi4uLjo6CiAJRmlsZXMgdG8gcmVtb3ZlLiAgRmlsZWdsb2JzIChlLmcuIGAqLmNgKSBjYW4gYmUgZ2l2ZW4gdG8KLQlyZW1vdmUgYWxsIG1hdGNoaW5nIGZpbGVzLiAgSWYgeW91IHdhbnQgZ2l0IHRvIGV4cGFuZAorCXJlbW92ZSBhbGwgbWF0Y2hpbmcgZmlsZXMuICBJZiB5b3Ugd2FudCBHaXQgdG8gZXhwYW5kCiAJZmlsZSBnbG9iIGNoYXJhY3RlcnMsIHlvdSBtYXkgbmVlZCB0byBzaGVsbC1lc2NhcGUgdGhlbS4KIAlBIGxlYWRpbmcgZGlyZWN0b3J5IG5hbWUKIAkoZS5nLiBgZGlyYCB0byByZW1vdmUgYGRpci9maWxlMWAgYW5kIGBkaXIvZmlsZTJgKSBjYW4gYmUKQEAgLTc0LDggKzc0LDggQEAKIAogVGhlIDxmaWxlPiBsaXN0IGdpdmVuIHRvIHRoZSBjb21tYW5kIGNhbiBiZSBleGFjdCBwYXRobmFtZXMsCiBmaWxlIGdsb2IgcGF0dGVybnMsIG9yIGxlYWRpbmcgZGlyZWN0b3J5IG5hbWVzLiAgVGhlIGNvbW1hbmQKLXJlbW92ZXMgb25seSB0aGUgcGF0aHMgdGhhdCBhcmUga25vd24gdG8gZ2l0LiAgR2l2aW5nIHRoZSBuYW1lIG9mCi1hIGZpbGUgdGhhdCB5b3UgaGF2ZSBub3QgdG9sZCBnaXQgYWJvdXQgZG9lcyBub3QgcmVtb3ZlIHRoYXQgZmlsZS4KK3JlbW92ZXMgb25seSB0aGUgcGF0aHMgdGhhdCBhcmUga25vd24gdG8gR2l0LiAgR2l2aW5nIHRoZSBuYW1lIG9mCithIGZpbGUgdGhhdCB5b3UgaGF2ZSBub3QgdG9sZCBHaXQgYWJvdXQgZG9lcyBub3QgcmVtb3ZlIHRoYXQgZmlsZS4KIAogRmlsZSBnbG9iYmluZyBtYXRjaGVzIGFjcm9zcyBkaXJlY3RvcnkgYm91bmRhcmllcy4gIFRodXMsIGdpdmVuCiB0d28gZGlyZWN0b3JpZXMgYGRgIGFuZCBgZDJgLCB0aGVyZSBpcyBhIGRpZmZlcmVuY2UgYmV0d2VlbgpAQCAtMTM3LDcgKzEzNyw3IEBACiBTdWJtb2R1bGVzCiB+fn5+fn5+fn5+CiBPbmx5IHN1Ym1vZHVsZXMgdXNpbmcgYSBnaXRmaWxlICh3aGljaCBtZWFucyB0aGV5IHdlcmUgY2xvbmVkCi13aXRoIGEgZ2l0IHZlcnNpb24gMS43Ljggb3IgbmV3ZXIpIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB3b3JrCit3aXRoIGEgR2l0IHZlcnNpb24gMS43Ljggb3IgbmV3ZXIpIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB3b3JrCiB0cmVlLCBhcyB0aGVpciByZXBvc2l0b3J5IGxpdmVzIGluc2lkZSB0aGUgLmdpdCBkaXJlY3Rvcnkgb2YgdGhlCiBzdXBlcnByb2plY3QuIElmIGEgc3VibW9kdWxlIChvciBvbmUgb2YgdGhvc2UgbmVzdGVkIGluc2lkZSBpdCkKIHN0aWxsIHVzZXMgYSAuZ2l0IGRpcmVjdG9yeSwgYGdpdCBybWAgd2lsbCBmYWlsIC0gbm8gbWF0dGVyIGlmIGZvcmNlZApAQCAtMTQ5LDYgKzE0OSwxMCBAQAogSWdub3JlZCBmaWxlcyBhcmUgZGVlbWVkIGV4cGVuZGFibGUgYW5kIHdvbid0IHN0b3AgYSBzdWJtb2R1bGUncyB3b3JrCiB0cmVlIGZyb20gYmVpbmcgcmVtb3ZlZC4KIAorSWYgeW91IG9ubHkgd2FudCB0byByZW1vdmUgdGhlIGxvY2FsIGNoZWNrb3V0IG9mIGEgc3VibW9kdWxlIGZyb20geW91cgord29yayB0cmVlIHdpdGhvdXQgY29tbWl0dGluZyB0aGUgcmVtb3ZhbCwKK3VzZSBsaW5rZ2l0OmdpdC1zdWJtb2R1bGVbMV0gYGRlaW5pdGAgaW5zdGVhZC4KKwogRVhBTVBMRVMKIC0tLS0tLS0tCiBgZ2l0IHJtIERvY3VtZW50YXRpb24vXCoudHh0YDo6CkBAIC0xNTYsNyArMTYwLDcgQEAKIAlgRG9jdW1lbnRhdGlvbmAgZGlyZWN0b3J5IGFuZCBhbnkgb2YgaXRzIHN1YmRpcmVjdG9yaWVzLgogKwogTm90ZSB0aGF0IHRoZSBhc3RlcmlzayBgKmAgaXMgcXVvdGVkIGZyb20gdGhlIHNoZWxsIGluIHRoaXMKLWV4YW1wbGU7IHRoaXMgbGV0cyBnaXQsIGFuZCBub3QgdGhlIHNoZWxsLCBleHBhbmQgdGhlIHBhdGhuYW1lcworZXhhbXBsZTsgdGhpcyBsZXRzIEdpdCwgYW5kIG5vdCB0aGUgc2hlbGwsIGV4cGFuZCB0aGUgcGF0aG5hbWVzCiBvZiBmaWxlcyBhbmQgc3ViZGlyZWN0b3JpZXMgdW5kZXIgdGhlIGBEb2N1bWVudGF0aW9uL2AgZGlyZWN0b3J5LgogCiBgZ2l0IHJtIC1mIGdpdC0qLnNoYDo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLWVtYWlsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0CmluZGV4IGVlYjU2MWMuLjQwYTlhOWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0CkBAIC00NSw4ICs0NSw5IEBACiB+fn5+fn5+fn4KIAogLS1hbm5vdGF0ZTo6Ci0JUmV2aWV3IGFuZCBlZGl0IGVhY2ggcGF0Y2ggeW91J3JlIGFib3V0IHRvIHNlbmQuIFNlZSB0aGUKLQlDT05GSUdVUkFUSU9OIHNlY3Rpb24gZm9yICdzZW5kZW1haWwubXVsdGllZGl0Jy4KKwlSZXZpZXcgYW5kIGVkaXQgZWFjaCBwYXRjaCB5b3UncmUgYWJvdXQgdG8gc2VuZC4gRGVmYXVsdCBpcyB0aGUgdmFsdWUKKwlvZiAnc2VuZGVtYWlsLmFubm90YXRlJy4gU2VlIHRoZSBDT05GSUdVUkFUSU9OIHNlY3Rpb24gZm9yCisJJ3NlbmRlbWFpbC5tdWx0aWVkaXQnLgogCiAtLWJjYz08YWRkcmVzcz46OgogCVNwZWNpZnkgYSAiQmNjOiIgdmFsdWUgZm9yIGVhY2ggZW1haWwuIERlZmF1bHQgaXMgdGhlIHZhbHVlIG9mCkBAIC02Nyw3ICs2OCw3IEBACiBXaGVuICctLWNvbXBvc2UnIGlzIHVzZWQsIGdpdCBzZW5kLWVtYWlsIHdpbGwgdXNlIHRoZSBGcm9tLCBTdWJqZWN0LCBhbmQKIEluLVJlcGx5LVRvIGhlYWRlcnMgc3BlY2lmaWVkIGluIHRoZSBtZXNzYWdlLiBJZiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZQogKHdoYXQgeW91IHR5cGUgYWZ0ZXIgdGhlIGhlYWRlcnMgYW5kIGEgYmxhbmsgbGluZSkgb25seSBjb250YWlucyBibGFuawotKG9yIEdJVDogcHJlZml4ZWQpIGxpbmVzIHRoZSBzdW1tYXJ5IHdvbid0IGJlIHNlbnQsIGJ1dCBGcm9tLCBTdWJqZWN0LAorKG9yIEdpdDogcHJlZml4ZWQpIGxpbmVzIHRoZSBzdW1tYXJ5IHdvbid0IGJlIHNlbnQsIGJ1dCBGcm9tLCBTdWJqZWN0LAogYW5kIEluLVJlcGx5LVRvIGhlYWRlcnMgd2lsbCBiZSB1c2VkIHVubGVzcyB0aGV5IGFyZSByZW1vdmVkLgogKwogTWlzc2luZyBGcm9tIG9yIEluLVJlcGx5LVRvIGhlYWRlcnMgd2lsbCBiZSBwcm9tcHRlZCBmb3IuCkBAIC0xNjQsOCArMTY1LDggQEAKIEZ1cnRoZXJtb3JlLCBwYXNzd29yZHMgbmVlZCBub3QgYmUgc3BlY2lmaWVkIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMKIG9yIG9uIHRoZSBjb21tYW5kIGxpbmUuIElmIGEgdXNlcm5hbWUgaGFzIGJlZW4gc3BlY2lmaWVkICh3aXRoCiAnLS1zbXRwLXVzZXInIG9yIGEgJ3NlbmRlbWFpbC5zbXRwdXNlcicpLCBidXQgbm8gcGFzc3dvcmQgaGFzIGJlZW4KLXNwZWNpZmllZCAod2l0aCAnLS1zbXRwLXBhc3MnIG9yICdzZW5kZW1haWwuc210cHBhc3MnKSwgdGhlbiB0aGUKLXVzZXIgaXMgcHJvbXB0ZWQgZm9yIGEgcGFzc3dvcmQgd2hpbGUgdGhlIGlucHV0IGlzIG1hc2tlZCBmb3IgcHJpdmFjeS4KK3NwZWNpZmllZCAod2l0aCAnLS1zbXRwLXBhc3MnIG9yICdzZW5kZW1haWwuc210cHBhc3MnKSwgdGhlbgorYSBwYXNzd29yZCBpcyBvYnRhaW5lZCB1c2luZyAnZ2l0LWNyZWRlbnRpYWwnLgogCiAtLXNtdHAtc2VydmVyPTxob3N0Pjo6CiAJSWYgc2V0LCBzcGVjaWZpZXMgdGhlIG91dGdvaW5nIFNNVFAgc2VydmVyIHRvIHVzZSAoZS5nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtcGFjay50eHQKaW5kZXggYmQzZWFhNi4uZGMzYTU2OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1wYWNrLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zZW5kLXBhY2sudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtc2VuZC1wYWNrIC0gUHVzaCBvYmplY3RzIG92ZXIgZ2l0IHByb3RvY29sIHRvIGFub3RoZXIgcmVwb3NpdG9yeQorZ2l0LXNlbmQtcGFjayAtIFB1c2ggb2JqZWN0cyBvdmVyIEdpdCBwcm90b2NvbCB0byBhbm90aGVyIHJlcG9zaXRvcnkKIAogCiBTWU5PUFNJUwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2gtc2V0dXAudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2gtc2V0dXAudHh0CmluZGV4IDVlNWYxYzguLjVkNzA5ZDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNoLXNldHVwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaC1zZXR1cC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC1zaC1zZXR1cCAtIENvbW1vbiBnaXQgc2hlbGwgc2NyaXB0IHNldHVwIGNvZGUKK2dpdC1zaC1zZXR1cCAtIENvbW1vbiBHaXQgc2hlbGwgc2NyaXB0IHNldHVwIGNvZGUKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xOSw3ICsxOSw3IEBACiAKIFRoZSAnZ2l0IHNoLXNldHVwJyBzY3JpcHRsZXQgaXMgZGVzaWduZWQgdG8gYmUgc291cmNlZCAodXNpbmcKIGAuYCkgYnkgb3RoZXIgc2hlbGwgc2NyaXB0cyB0byBzZXQgdXAgc29tZSB2YXJpYWJsZXMgcG9pbnRpbmcgYXQKLXRoZSBub3JtYWwgZ2l0IGRpcmVjdG9yaWVzIGFuZCBhIGZldyBoZWxwZXIgc2hlbGwgZnVuY3Rpb25zLgordGhlIG5vcm1hbCBHaXQgZGlyZWN0b3JpZXMgYW5kIGEgZmV3IGhlbHBlciBzaGVsbCBmdW5jdGlvbnMuCiAKIEJlZm9yZSBzb3VyY2luZyBpdCwgeW91ciBzY3JpcHQgc2hvdWxkIHNldCB1cCBhIGZldyB2YXJpYWJsZXM7CiBgVVNBR0VgIChhbmQgYExPTkdfVVNBR0VgLCBpZiBhbnkpIGlzIHVzZWQgdG8gZGVmaW5lIG1lc3NhZ2UKQEAgLTgyLDYgKzgyLDEyIEBACiAJb3V0cHV0cyBjb2RlIGZvciB1c2Ugd2l0aCBldmFsIHRvIHNldCB0aGUgR0lUX0FVVEhPUl9OQU1FLAogCUdJVF9BVVRIT1JfRU1BSUwgYW5kIEdJVF9BVVRIT1JfREFURSB2YXJpYWJsZXMgZm9yIGEgZ2l2ZW4gY29tbWl0LgogCitjcmVhdGVfdmlydHVhbF9iYXNlOjoKKwltb2RpZmllcyB0aGUgZmlyc3QgZmlsZSBzbyBvbmx5IGxpbmVzIGluIGNvbW1vbiB3aXRoIHRoZQorCXNlY29uZCBmaWxlIHJlbWFpbi4gSWYgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGNvbW1vbiBtYXRlcmlhbCwKKwl0aGVuIHRoZSBmaXJzdCBmaWxlIGlzIGxlZnQgZW1wdHkuIFRoZSByZXN1bHQgaXMgc3VpdGFibGUKKwlhcyBhIHZpcnR1YWwgYmFzZSBpbnB1dCBmb3IgYSAzLXdheSBtZXJnZS4KKwogR0lUCiAtLS0KIFBhcnQgb2YgdGhlIGxpbmtnaXQ6Z2l0WzFdIHN1aXRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaGVsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaGVsbC50eHQKaW5kZXggOWI5MjUwNi4uYzM1MDUxYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hlbGwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNoZWxsLnR4dApAQCAtOSwyNSArOSw4MSBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IHNoZWxsJyBbLWMgPGNvbW1hbmQ+IDxhcmd1bWVudD5dCisnY2hzaCcgLXMgJChjb21tYW5kIC12IGdpdC1zaGVsbCkgPHVzZXI+CisnZ2l0IGNsb25lJyA8dXNlcj5gQGxvY2FsaG9zdDovcGF0aC90by9yZXBvLmdpdGAKKydzc2gnIDx1c2VyPmBAbG9jYWxob3N0YAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIAotQSBsb2dpbiBzaGVsbCBmb3IgU1NIIGFjY291bnRzIHRvIHByb3ZpZGUgcmVzdHJpY3RlZCBHaXQgYWNjZXNzLiBXaGVuCi0nLWMnIGlzIGdpdmVuLCB0aGUgcHJvZ3JhbSBleGVjdXRlcyA8Y29tbWFuZD4gbm9uLWludGVyYWN0aXZlbHk7Ci08Y29tbWFuZD4gY2FuIGJlIG9uZSBvZiAnZ2l0IHJlY2VpdmUtcGFjaycsICdnaXQgdXBsb2FkLXBhY2snLCAnZ2l0Ci11cGxvYWQtYXJjaGl2ZScsICdjdnMgc2VydmVyJywgb3IgYSBjb21tYW5kIGluIENPTU1BTkRfRElSLiBUaGUgc2hlbGwKLWlzIHN0YXJ0ZWQgaW4gaW50ZXJhY3RpdmUgbW9kZSB3aGVuIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW47IGluIHRoaXMKLWNhc2UsIENPTU1BTkRfRElSIG11c3QgZXhpc3QsIGFuZCBhbnkgb2YgdGhlIGV4ZWN1dGFibGVzIGluIGl0IGNhbiBiZQotaW52b2tlZC4KK1RoaXMgaXMgYSBsb2dpbiBzaGVsbCBmb3IgU1NIIGFjY291bnRzIHRvIHByb3ZpZGUgcmVzdHJpY3RlZCBHaXQgYWNjZXNzLgorSXQgcGVybWl0cyBleGVjdXRpb24gb25seSBvZiBzZXJ2ZXItc2lkZSBHaXQgY29tbWFuZHMgaW1wbGVtZW50aW5nIHRoZQorcHVsbC9wdXNoIGZ1bmN0aW9uYWxpdHksIHBsdXMgY3VzdG9tIGNvbW1hbmRzIHByZXNlbnQgaW4gYSBzdWJkaXJlY3RvcnkKK25hbWVkIGBnaXQtc2hlbGwtY29tbWFuZHNgIGluIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkuCiAKLSdjdnMgc2VydmVyJyBpcyBhIHNwZWNpYWwgY29tbWFuZCB3aGljaCBleGVjdXRlcyBnaXQtY3Zzc2VydmVyLgorQ09NTUFORFMKKy0tLS0tLS0tCiAKLUNPTU1BTkRfRElSIGlzIHRoZSBwYXRoICIkSE9NRS9naXQtc2hlbGwtY29tbWFuZHMiLiBUaGUgdXNlciBtdXN0IGhhdmUKLXJlYWQgYW5kIGV4ZWN1dGUgcGVybWlzc2lvbnMgdG8gdGhlIGRpcmVjdG9yeSBpbiBvcmRlciB0byBleGVjdXRlIHRoZQotcHJvZ3JhbXMgaW4gaXQuIFRoZSBwcm9ncmFtcyBhcmUgZXhlY3V0ZWQgd2l0aCBhIGN3ZCBvZiAkSE9NRSwgYW5kCi08YXJndW1lbnQ+IGlzIHBhcnNlZCBhcyBhIGNvbW1hbmQtbGluZSBzdHJpbmcuCisnZ2l0IHNoZWxsJyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYWZ0ZXIgdGhlICctYycgb3B0aW9uOgorCisnZ2l0IHJlY2VpdmUtcGFjayA8YXJndW1lbnQ+Jzo6CisnZ2l0IHVwbG9hZC1wYWNrIDxhcmd1bWVudD4nOjoKKydnaXQgdXBsb2FkLWFyY2hpdmUgPGFyZ3VtZW50Pic6OgorCUNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgc2VydmVyLXNpZGUgY29tbWFuZCB0byBzdXBwb3J0CisJdGhlIGNsaWVudCdzICdnaXQgcHVzaCcsICdnaXQgZmV0Y2gnLCBvciAnZ2l0IGFyY2hpdmUgLS1yZW1vdGUnCisJcmVxdWVzdC4KKydjdnMgc2VydmVyJzo6CisJSW1pdGF0ZSBhIENWUyBzZXJ2ZXIuICBTZWUgbGlua2dpdDpnaXQtY3Zzc2VydmVyWzFdLgorCitJZiBhIGB+L2dpdC1zaGVsbC1jb21tYW5kc2AgZGlyZWN0b3J5IGlzIHByZXNlbnQsICdnaXQgc2hlbGwnIHdpbGwKK2Fsc28gaGFuZGxlIG90aGVyLCBjdXN0b20gY29tbWFuZHMgYnkgcnVubmluZworImBnaXQtc2hlbGwtY29tbWFuZHMvPGNvbW1hbmQ+IDxhcmd1bWVudHM+YCIgZnJvbSB0aGUgdXNlcidzIGhvbWUKK2RpcmVjdG9yeS4KKworSU5URVJBQ1RJVkUgVVNFCistLS0tLS0tLS0tLS0tLS0KKworQnkgZGVmYXVsdCwgdGhlIGNvbW1hbmRzIGFib3ZlIGNhbiBiZSBleGVjdXRlZCBvbmx5IHdpdGggdGhlICctYycKK29wdGlvbjsgdGhlIHNoZWxsIGlzIG5vdCBpbnRlcmFjdGl2ZS4KKworSWYgYSBgfi9naXQtc2hlbGwtY29tbWFuZHNgIGRpcmVjdG9yeSBpcyBwcmVzZW50LCAnZ2l0IHNoZWxsJworY2FuIGFsc28gYmUgcnVuIGludGVyYWN0aXZlbHkgKHdpdGggbm8gYXJndW1lbnRzKS4gIElmIGEgYGhlbHBgCitjb21tYW5kIGlzIHByZXNlbnQgaW4gdGhlIGBnaXQtc2hlbGwtY29tbWFuZHNgIGRpcmVjdG9yeSwgaXQgaXMKK3J1biB0byBwcm92aWRlIHRoZSB1c2VyIHdpdGggYW4gb3ZlcnZpZXcgb2YgYWxsb3dlZCBhY3Rpb25zLiAgVGhlbiBhCisiZ2l0PiAiIHByb21wdCBpcyBwcmVzZW50ZWQgYXQgd2hpY2ggb25lIGNhbiBlbnRlciBhbnkgb2YgdGhlCitjb21tYW5kcyBmcm9tIHRoZSBgZ2l0LXNoZWxsLWNvbW1hbmRzYCBkaXJlY3RvcnksIG9yIGBleGl0YCB0byBjbG9zZQordGhlIGNvbm5lY3Rpb24uCisKK0dlbmVyYWxseSB0aGlzIG1vZGUgaXMgdXNlZCBhcyBhbiBhZG1pbmlzdHJhdGl2ZSBpbnRlcmZhY2UgdG8gYWxsb3cKK3VzZXJzIHRvIGxpc3QgcmVwb3NpdG9yaWVzIHRoZXkgaGF2ZSBhY2Nlc3MgdG8sIGNyZWF0ZSwgZGVsZXRlLCBvcgorcmVuYW1lIHJlcG9zaXRvcmllcywgb3IgY2hhbmdlIHJlcG9zaXRvcnkgZGVzY3JpcHRpb25zIGFuZAorcGVybWlzc2lvbnMuCisKK0lmIGEgYG5vLWludGVyYWN0aXZlLWxvZ2luYCBjb21tYW5kIGV4aXN0cywgdGhlbiBpdCBpcyBydW4gYW5kIHRoZQoraW50ZXJhY3RpdmUgc2hlbGwgaXMgYWJvcnRlZC4KKworRVhBTVBMRQorLS0tLS0tLQorCitUbyBkaXNhYmxlIGludGVyYWN0aXZlIGxvZ2lucywgZGlzcGxheWluZyBhIGdyZWV0aW5nIGluc3RlYWQ6CisrCistLS0tLS0tLS0tLS0tLS0tCiskIGNoc2ggLXMgL3Vzci9iaW4vZ2l0LXNoZWxsCiskIG1rZGlyICRIT01FL2dpdC1zaGVsbC1jb21tYW5kcworJCBjYXQgPiRIT01FL2dpdC1zaGVsbC1jb21tYW5kcy9uby1pbnRlcmFjdGl2ZS1sb2dpbiA8PFxFT0YKKyMhL2Jpbi9zaAorcHJpbnRmICclc1xuJyAiSGkgJFVTRVIhIFlvdSd2ZSBzdWNjZXNzZnVsbHkgYXV0aGVudGljYXRlZCwgYnV0IEkgZG8gbm90IgorcHJpbnRmICclc1xuJyAicHJvdmlkZSBpbnRlcmFjdGl2ZSBzaGVsbCBhY2Nlc3MuIgorZXhpdCAxMjgKK0VPRgorJCBjaG1vZCAreCAkSE9NRS9naXQtc2hlbGwtY29tbWFuZHMvbm8taW50ZXJhY3RpdmUtbG9naW4KKy0tLS0tLS0tLS0tLS0tLS0KKworU0VFIEFMU08KKy0tLS0tLS0tCitzc2goMSksCitsaW5rZ2l0OmdpdC1kYWVtb25bMV0sCitjb250cmliL2dpdC1zaGVsbC1jb21tYW5kcy9SRUFETUUKIAogR0lUCiAtLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dAppbmRleCBjMzA4ZTkxLi4zMWFmN2YyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG9ydGxvZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0CkBAIC04LDggKzgsOCBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi1naXQgbG9nIC0tcHJldHR5PXNob3J0IHwgJ2dpdCBzaG9ydGxvZycgWy1oXSBbLW5dIFstc10gWy1lXSBbLXddCi0nZ2l0IHNob3J0bG9nJyBbLW58LS1udW1iZXJlZF0gWy1zfC0tc3VtbWFyeV0gWy1lfC0tZW1haWxdIFstd1s8d2lkdGg+Wyw8aW5kZW50MT5bLDxpbmRlbnQyPl1dXV0gPGNvbW1pdD4uLi4KK2dpdCBsb2cgLS1wcmV0dHk9c2hvcnQgfCAnZ2l0IHNob3J0bG9nJyBbPG9wdGlvbnM+XQorJ2dpdCBzaG9ydGxvZycgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbXC0tXSA8cGF0aD4uLi5dCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMjYsMTAgKzI2LDYgQEAKIE9QVElPTlMKIC0tLS0tLS0KIAotLWg6OgotLS1oZWxwOjoKLQlQcmludCBhIHNob3J0IHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQuCi0KIC1uOjoKIC0tbnVtYmVyZWQ6OgogCVNvcnQgb3V0cHV0IGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgcGVyIGF1dGhvciBpbnN0ZWFkCkBAIC02MCw2ICs1NiwyMSBAQAogSWYgd2lkdGggaXMgYDBgICh6ZXJvKSB0aGVuIGluZGVudCB0aGUgbGluZXMgb2YgdGhlIG91dHB1dCB3aXRob3V0IHdyYXBwaW5nCiB0aGVtLgogCis8cmV2aXNpb24gcmFuZ2U+OjoKKwlTaG93IG9ubHkgY29tbWl0cyBpbiB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHJhbmdlLiAgV2hlbiBubworCTxyZXZpc2lvbiByYW5nZT4gaXMgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byBgSEVBRGAgKGkuZS4gdGhlCisJd2hvbGUgaGlzdG9yeSBsZWFkaW5nIHRvIHRoZSBjdXJyZW50IGNvbW1pdCkuICBgb3JpZ2luLi5IRUFEYAorCXNwZWNpZmllcyBhbGwgdGhlIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gdGhlIGN1cnJlbnQgY29tbWl0CisJKGkuZS4gYEhFQURgKSwgYnV0IG5vdCBmcm9tIGBvcmlnaW5gLiBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mCisJd2F5cyB0byBzcGVsbCA8cmV2aXNpb24gcmFuZ2U+LCBzZWUgdGhlICJTcGVjaWZ5aW5nIFJhbmdlcyIKKwlzZWN0aW9uIG9mIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddLgorCitbXC0tXSA8cGF0aD4uLi46OgorCUNvbnNpZGVyIG9ubHkgY29tbWl0cyB0aGF0IGFyZSBlbm91Z2ggdG8gZXhwbGFpbiBob3cgdGhlIGZpbGVzCisJdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHBhdGhzIGNhbWUgdG8gYmUuCisrCitQYXRocyBtYXkgbmVlZCB0byBiZSBwcmVmaXhlZCB3aXRoICJcLS0gIiB0byBzZXBhcmF0ZSB0aGVtIGZyb20KK29wdGlvbnMgb3IgdGhlIHJldmlzaW9uIHJhbmdlLCB3aGVuIGNvbmZ1c2lvbiBhcmlzZXMuCiAKIE1BUFBJTkcgQVVUSE9SUwogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWJyYW5jaC50eHQKaW5kZXggYThlNzdiNS4uYTUxNTY0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1icmFuY2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctYnJhbmNoLnR4dApAQCAtMzEsNyArMzEsNyBAQAogT1BUSU9OUwogLS0tLS0tLQogPHJldj46OgotCUFyYml0cmFyeSBleHRlbmRlZCBTSEExIGV4cHJlc3Npb24gKHNlZSBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XSkKKwlBcmJpdHJhcnkgZXh0ZW5kZWQgU0hBLTEgZXhwcmVzc2lvbiAoc2VlIGxpbmtnaXQ6Z2l0cmV2aXNpb25zWzddKQogCXRoYXQgdHlwaWNhbGx5IG5hbWVzIGEgYnJhbmNoIGhlYWQgb3IgYSB0YWcuCiAKIDxnbG9iPjo6CkBAIC0xNDIsNyArMTQyLDcgQEAKIGJyYW5jaCwgdGhlIEktdGggaW5kZW50YXRpb24gY2hhcmFjdGVyIHNob3dzIGEgYCtgIHNpZ247CiBvdGhlcndpc2UgaXQgc2hvd3MgYSBzcGFjZS4gIE1lcmdlIGNvbW1pdHMgYXJlIGRlbm90ZWQgYnkKIGEgYC1gIHNpZ24uICBFYWNoIGNvbW1pdCBzaG93cyBhIHNob3J0IG5hbWUgdGhhdAotY2FuIGJlIHVzZWQgYXMgYW4gZXh0ZW5kZWQgU0hBMSB0byBuYW1lIHRoYXQgY29tbWl0LgorY2FuIGJlIHVzZWQgYXMgYW4gZXh0ZW5kZWQgU0hBLTEgdG8gbmFtZSB0aGF0IGNvbW1pdC4KIAogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHRocmVlIGJyYW5jaGVzLCAibWFzdGVyIiwgImZpeGVzIgogYW5kICJtaGYiOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1pbmRleC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWluZGV4LnR4dAppbmRleCAyZGNiYmIyLi5mYmRjOGFkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWluZGV4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LWluZGV4LnR4dApAQCAtMTQsMTIgKzE0LDEyIEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotUmVhZHMgZ2l2ZW4gaWR4IGZpbGUgZm9yIHBhY2tlZCBnaXQgYXJjaGl2ZSBjcmVhdGVkIHdpdGgKK1JlYWRzIGdpdmVuIGlkeCBmaWxlIGZvciBwYWNrZWQgR2l0IGFyY2hpdmUgY3JlYXRlZCB3aXRoCiAnZ2l0IHBhY2stb2JqZWN0cycgY29tbWFuZCwgYW5kIGR1bXBzIGl0cyBjb250ZW50cy4KIAogVGhlIGluZm9ybWF0aW9uIGl0IG91dHB1dHMgaXMgc3Vic2V0IG9mIHdoYXQgeW91IGNhbiBnZXQgZnJvbQogJ2dpdCB2ZXJpZnktcGFjayAtdic7IHRoaXMgY29tbWFuZCBvbmx5IHNob3dzIHRoZSBwYWNrZmlsZQotb2Zmc2V0IGFuZCBTSEExIG9mIGVhY2ggb2JqZWN0Lgorb2Zmc2V0IGFuZCBTSEEtMSBvZiBlYWNoIG9iamVjdC4KIAogR0lUCiAtLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctcmVmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctcmVmLnR4dAppbmRleCA1ZGJjZDQ3Li5kZTRkMzUyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LXJlZi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1yZWYudHh0CkBAIC01MCw4ICs1MCw4IEBACiAtczo6CiAtLWhhc2hbPTxuPl06OgogCi0JT25seSBzaG93IHRoZSBTSEExIGhhc2gsIG5vdCB0aGUgcmVmZXJlbmNlIG5hbWUuIFdoZW4gY29tYmluZWQgd2l0aAotCS0tZGVyZWZlcmVuY2UgdGhlIGRlcmVmZXJlbmNlZCB0YWcgd2lsbCBzdGlsbCBiZSBzaG93biBhZnRlciB0aGUgU0hBMS4KKwlPbmx5IHNob3cgdGhlIFNIQS0xIGhhc2gsIG5vdCB0aGUgcmVmZXJlbmNlIG5hbWUuIFdoZW4gY29tYmluZWQgd2l0aAorCS0tZGVyZWZlcmVuY2UgdGhlIGRlcmVmZXJlbmNlZCB0YWcgd2lsbCBzdGlsbCBiZSBzaG93biBhZnRlciB0aGUgU0hBLTEuCiAKIC0tdmVyaWZ5OjoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3Rhc2gudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3Rhc2gudHh0CmluZGV4IDcxMWZmZTEuLmRiN2U4MDMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXN0YXNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdGFzaC50eHQKQEAgLTEzLDEwICsxMywxMSBAQAogJ2dpdCBzdGFzaCcgZHJvcCBbLXF8LS1xdWlldF0gWzxzdGFzaD5dCiAnZ2l0IHN0YXNoJyAoIHBvcCB8IGFwcGx5ICkgWy0taW5kZXhdIFstcXwtLXF1aWV0XSBbPHN0YXNoPl0KICdnaXQgc3Rhc2gnIGJyYW5jaCA8YnJhbmNobmFtZT4gWzxzdGFzaD5dCi0nZ2l0IHN0YXNoJyBbc2F2ZSBbLS1wYXRjaF0gWy1rfC0tW25vLV1rZWVwLWluZGV4XSBbLXF8LS1xdWlldF0KKydnaXQgc3Rhc2gnIFtzYXZlIFstcHwtLXBhdGNoXSBbLWt8LS1bbm8tXWtlZXAtaW5kZXhdIFstcXwtLXF1aWV0XQogCSAgICAgWy11fC0taW5jbHVkZS11bnRyYWNrZWRdIFstYXwtLWFsbF0gWzxtZXNzYWdlPl1dCiAnZ2l0IHN0YXNoJyBjbGVhcgotJ2dpdCBzdGFzaCcgY3JlYXRlCisnZ2l0IHN0YXNoJyBjcmVhdGUgWzxtZXNzYWdlPl0KKydnaXQgc3Rhc2gnIHN0b3JlIFstbXwtLW1lc3NhZ2UgPG1lc3NhZ2U+XSBbLXF8LS1xdWlldF0gPGNvbW1pdD4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0xNTEsNyArMTUyLDE1IEBACiAKIAlDcmVhdGUgYSBzdGFzaCAod2hpY2ggaXMgYSByZWd1bGFyIGNvbW1pdCBvYmplY3QpIGFuZCByZXR1cm4gaXRzCiAJb2JqZWN0IG5hbWUsIHdpdGhvdXQgc3RvcmluZyBpdCBhbnl3aGVyZSBpbiB0aGUgcmVmIG5hbWVzcGFjZS4KKwlUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWZ1bCBmb3Igc2NyaXB0cy4gIEl0IGlzIHByb2JhYmx5IG5vdAorCXRoZSBjb21tYW5kIHlvdSB3YW50IHRvIHVzZTsgc2VlICJzYXZlIiBhYm92ZS4KIAorc3RvcmU6OgorCisJU3RvcmUgYSBnaXZlbiBzdGFzaCBjcmVhdGVkIHZpYSAnZ2l0IHN0YXNoIGNyZWF0ZScgKHdoaWNoIGlzIGEKKwlkYW5nbGluZyBtZXJnZSBjb21taXQpIGluIHRoZSBzdGFzaCByZWYsIHVwZGF0aW5nIHRoZSBzdGFzaAorCXJlZmxvZy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZnVsIGZvciBzY3JpcHRzLiAgSXQgaXMKKwlwcm9iYWJseSBub3QgdGhlIGNvbW1hbmQgeW91IHdhbnQgdG8gdXNlOyBzZWUgInNhdmUiIGFib3ZlLgogCiBESVNDVVNTSU9OCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdGF0dXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3RhdHVzLnR4dAppbmRleCA5ZjFlZjlhLi45MDQ2ZGY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zdGF0dXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN0YXR1cy50eHQKQEAgLTE2LDcgKzE2LDcgQEAKIERpc3BsYXlzIHBhdGhzIHRoYXQgaGF2ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBpbmRleCBmaWxlIGFuZCB0aGUKIGN1cnJlbnQgSEVBRCBjb21taXQsIHBhdGhzIHRoYXQgaGF2ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB3b3JraW5nCiB0cmVlIGFuZCB0aGUgaW5kZXggZmlsZSwgYW5kIHBhdGhzIGluIHRoZSB3b3JraW5nIHRyZWUgdGhhdCBhcmUgbm90Ci10cmFja2VkIGJ5IGdpdCAoYW5kIGFyZSBub3QgaWdub3JlZCBieSBsaW5rZ2l0OmdpdGlnbm9yZVs1XSkuIFRoZSBmaXJzdAordHJhY2tlZCBieSBHaXQgKGFuZCBhcmUgbm90IGlnbm9yZWQgYnkgbGlua2dpdDpnaXRpZ25vcmVbNV0pLiBUaGUgZmlyc3QKIGFyZSB3aGF0IHlvdSBfd291bGRfIGNvbW1pdCBieSBydW5uaW5nIGBnaXQgY29tbWl0YDsgdGhlIHNlY29uZCBhbmQKIHRoaXJkIGFyZSB3aGF0IHlvdSBfY291bGRfIGNvbW1pdCBieSBydW5uaW5nICdnaXQgYWRkJyBiZWZvcmUgcnVubmluZwogYGdpdCBjb21taXRgLgpAQCAtMzUsNyArMzUsNyBAQAogLS1wb3JjZWxhaW46OgogCUdpdmUgdGhlIG91dHB1dCBpbiBhbiBlYXN5LXRvLXBhcnNlIGZvcm1hdCBmb3Igc2NyaXB0cy4KIAlUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHNob3J0IG91dHB1dCwgYnV0IHdpbGwgcmVtYWluIHN0YWJsZQotCWFjcm9zcyBnaXQgdmVyc2lvbnMgYW5kIHJlZ2FyZGxlc3Mgb2YgdXNlciBjb25maWd1cmF0aW9uLiBTZWUKKwlhY3Jvc3MgR2l0IHZlcnNpb25zIGFuZCByZWdhcmRsZXNzIG9mIHVzZXIgY29uZmlndXJhdGlvbi4gU2VlCiAJYmVsb3cgZm9yIGRldGFpbHMuCiAKIC0tbG9uZzo6CkBAIC00NiwxNSArNDYsMjEgQEAKIAlTaG93IHVudHJhY2tlZCBmaWxlcy4KICsKIFRoZSBtb2RlIHBhcmFtZXRlciBpcyBvcHRpb25hbCAoZGVmYXVsdHMgdG8gJ2FsbCcpLCBhbmQgaXMgdXNlZCB0bwotc3BlY2lmeSB0aGUgaGFuZGxpbmcgb2YgdW50cmFja2VkIGZpbGVzOyB3aGVuIC11IGlzIG5vdCB1c2VkLCB0aGUKLWRlZmF1bHQgaXMgJ25vcm1hbCcsIGkuZS4gc2hvdyB1bnRyYWNrZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgorc3BlY2lmeSB0aGUgaGFuZGxpbmcgb2YgdW50cmFja2VkIGZpbGVzLgogKwogVGhlIHBvc3NpYmxlIG9wdGlvbnMgYXJlOgogKwotCS0gJ25vJyAgICAgLSBTaG93IG5vIHVudHJhY2tlZCBmaWxlcwotCS0gJ25vcm1hbCcgLSBTaG93cyB1bnRyYWNrZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzCisJLSAnbm8nICAgICAtIFNob3cgbm8gdW50cmFja2VkIGZpbGVzLgorCS0gJ25vcm1hbCcgLSBTaG93cyB1bnRyYWNrZWQgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgogCS0gJ2FsbCcgICAgLSBBbHNvIHNob3dzIGluZGl2aWR1YWwgZmlsZXMgaW4gdW50cmFja2VkIGRpcmVjdG9yaWVzLgogKworV2hlbiBgLXVgIG9wdGlvbiBpcyBub3QgdXNlZCwgdW50cmFja2VkIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUKK3Nob3duIChpLmUuIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcgYG5vcm1hbGApLCB0byBoZWxwIHlvdSBhdm9pZAorZm9yZ2V0dGluZyB0byBhZGQgbmV3bHkgY3JlYXRlZCBmaWxlcy4gIEJlY2F1c2UgaXQgdGFrZXMgZXh0cmEgd29yawordG8gZmluZCB1bnRyYWNrZWQgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0sIHRoaXMgbW9kZSBtYXkgdGFrZSBzb21lCit0aW1lIGluIGEgbGFyZ2Ugd29ya2luZyB0cmVlLiAgWW91IGNhbiB1c2UgYG5vYCB0byBoYXZlIGBnaXQgc3RhdHVzYAorcmV0dXJuIG1vcmUgcXVpY2tseSB3aXRob3V0IHNob3dpbmcgdW50cmFja2VkIGZpbGVzLgorKwogVGhlIGRlZmF1bHQgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhlIHN0YXR1cy5zaG93VW50cmFja2VkRmlsZXMKIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZG9jdW1lbnRlZCBpbiBsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKQEAgLTk2LDcgKzEwMiw3IEBACiB2ZXJib3NlIGFuZCBkZXNjcmlwdGl2ZS4gIEl0cyBjb250ZW50cyBhbmQgZm9ybWF0IGFyZSBzdWJqZWN0IHRvIGNoYW5nZQogYXQgYW55IHRpbWUuCiAKLVRoZSBwYXRocyBtZW50aW9uZWQgaW4gdGhlIG91dHB1dCwgdW5saWtlIG1hbnkgb3RoZXIgZ2l0IGNvbW1hbmRzLCBhcmUKK1RoZSBwYXRocyBtZW50aW9uZWQgaW4gdGhlIG91dHB1dCwgdW5saWtlIG1hbnkgb3RoZXIgR2l0IGNvbW1hbmRzLCBhcmUKIG1hZGUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlmIHlvdSBhcmUgd29ya2luZyBpbiBhCiBzdWJkaXJlY3RvcnkgKHRoaXMgaXMgb24gcHVycG9zZSwgdG8gaGVscCBjdXR0aW5nIGFuZCBwYXN0aW5nKS4gU2VlCiB0aGUgc3RhdHVzLnJlbGF0aXZlUGF0aHMgY29uZmlnIG9wdGlvbiBiZWxvdy4KQEAgLTE2OCw3ICsxNzQsNyBAQAogfn5+fn5+fn5+fn5+fn5+fgogCiBUaGUgcG9yY2VsYWluIGZvcm1hdCBpcyBzaW1pbGFyIHRvIHRoZSBzaG9ydCBmb3JtYXQsIGJ1dCBpcyBndWFyYW50ZWVkCi1ub3QgdG8gY2hhbmdlIGluIGEgYmFja3dhcmRzLWluY29tcGF0aWJsZSB3YXkgYmV0d2VlbiBnaXQgdmVyc2lvbnMgb3IKK25vdCB0byBjaGFuZ2UgaW4gYSBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIHdheSBiZXR3ZWVuIEdpdCB2ZXJzaW9ucyBvcgogYmFzZWQgb24gdXNlciBjb25maWd1cmF0aW9uLiBUaGlzIG1ha2VzIGl0IGlkZWFsIGZvciBwYXJzaW5nIGJ5IHNjcmlwdHMuCiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHNob3J0IGZvcm1hdCBhYm92ZSBhbHNvIGRlc2NyaWJlcyB0aGUgcG9yY2VsYWluCiBmb3JtYXQsIHdpdGggYSBmZXcgZXhjZXB0aW9uczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXN0cmlwc3BhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3RyaXBzcGFjZS50eHQKaW5kZXggYTgwZDk0Ni4uYzg3YmZjYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3RyaXBzcGFjZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc3RyaXBzcGFjZS50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1DbGVhbiB0aGUgaW5wdXQgaW4gdGhlIG1hbm5lciB1c2VkIGJ5ICdnaXQnIGZvciB0ZXh0IHN1Y2ggYXMgY29tbWl0CitDbGVhbiB0aGUgaW5wdXQgaW4gdGhlIG1hbm5lciB1c2VkIGJ5IEdpdCBmb3IgdGV4dCBzdWNoIGFzIGNvbW1pdAogbWVzc2FnZXMsIG5vdGVzLCB0YWdzIGFuZCBicmFuY2ggZGVzY3JpcHRpb25zLgogCiBXaXRoIG5vIGFyZ3VtZW50cywgdGhpcyB3aWxsOgpAQCAtMzUsNyArMzUsMTMgQEAKIC0tLS0tLS0KIC1zOjoKIC0tc3RyaXAtY29tbWVudHM6OgotCVNraXAgYW5kIHJlbW92ZSBhbGwgbGluZXMgc3RhcnRpbmcgd2l0aCAnIycuCisJU2tpcCBhbmQgcmVtb3ZlIGFsbCBsaW5lcyBzdGFydGluZyB3aXRoIGNvbW1lbnQgY2hhcmFjdGVyIChkZWZhdWx0ICcjJykuCisKKy1jOjoKKy0tY29tbWVudC1saW5lczo6CisJUHJlcGVuZCBjb21tZW50IGNoYXJhY3RlciBhbmQgYmxhbmsgdG8gZWFjaCBsaW5lLiBMaW5lcyB3aWxsIGF1dG9tYXRpY2FsbHkKKwliZSB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lLiBPbiBlbXB0eSBsaW5lcywgb25seSB0aGUgY29tbWVudCBjaGFyYWN0ZXIKKwl3aWxsIGJlIHByZXBlbmRlZC4KIAogRVhBTVBMRVMKIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc3VibW9kdWxlLnR4dAppbmRleCAzNDkzNzg0Li5lNTc2NzEzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQKQEAgLTEzLDggKzEzLDEwIEBACiAJICAgICAgWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0gWy0tXSA8cmVwb3NpdG9yeT4gWzxwYXRoPl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gc3RhdHVzIFstLWNhY2hlZF0gWy0tcmVjdXJzaXZlXSBbLS1dIFs8cGF0aD4uLi5dCiAnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIGluaXQgWy0tXSBbPHBhdGg+Li4uXQotJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSB1cGRhdGUgWy0taW5pdF0gWy1OfC0tbm8tZmV0Y2hdIFstZnwtLWZvcmNlXSBbLS1yZWJhc2VdCi0JICAgICAgWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0gWy0tbWVyZ2VdIFstLXJlY3Vyc2l2ZV0gWy0tXSBbPHBhdGg+Li4uXQorJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBkZWluaXQgWy1mfC0tZm9yY2VdIFstLV0gPHBhdGg+Li4uCisnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIHVwZGF0ZSBbLS1pbml0XSBbLS1yZW1vdGVdIFstTnwtLW5vLWZldGNoXQorCSAgICAgIFstZnwtLWZvcmNlXSBbLS1yZWJhc2VdIFstLXJlZmVyZW5jZSA8cmVwb3NpdG9yeT5dCisJICAgICAgWy0tbWVyZ2VdIFstLXJlY3Vyc2l2ZV0gWy0tXSBbPHBhdGg+Li4uXQogJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBzdW1tYXJ5IFstLWNhY2hlZHwtLWZpbGVzXSBbKC1ufC0tc3VtbWFyeS1saW1pdCkgPG4+XQogCSAgICAgIFtjb21taXRdIFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gZm9yZWFjaCBbLS1yZWN1cnNpdmVdIDxjb21tYW5kPgpAQCAtNzUsNiArNzcsOCBAQAogdG8gZXhpc3QgaW4gdGhlIHN1cGVycHJvamVjdC4gSWYgPHBhdGg+IGlzIG5vdCBnaXZlbiwgdGhlCiAiaHVtYW5pc2giIHBhcnQgb2YgdGhlIHNvdXJjZSByZXBvc2l0b3J5IGlzIHVzZWQgKCJyZXBvIiBmb3IKICIvcGF0aC90by9yZXBvLmdpdCIgYW5kICJmb28iIGZvciAiaG9zdC54ejpmb28vLmdpdCIpLgorVGhlIDxwYXRoPiBpcyBhbHNvIHVzZWQgYXMgdGhlIHN1Ym1vZHVsZSdzIGxvZ2ljYWwgbmFtZSBpbiBpdHMKK2NvbmZpZ3VyYXRpb24gZW50cmllcyB1bmxlc3MgYC0tbmFtZWAgaXMgdXNlZCB0byBzcGVjaWZ5IGEgbG9naWNhbCBuYW1lLgogKwogPHJlcG9zaXRvcnk+IGlzIHRoZSBVUkwgb2YgdGhlIG5ldyBzdWJtb2R1bGUncyBvcmlnaW4gcmVwb3NpdG9yeS4KIFRoaXMgbWF5IGJlIGVpdGhlciBhbiBhYnNvbHV0ZSBVUkwsIG9yIChpZiBpdCBiZWdpbnMgd2l0aCAuLwpAQCAtOTEsNyArOTUsNyBAQAogPHBhdGg+IGlzIHRoZSByZWxhdGl2ZSBsb2NhdGlvbiBmb3IgdGhlIGNsb25lZCBzdWJtb2R1bGUgdG8KIGV4aXN0IGluIHRoZSBzdXBlcnByb2plY3QuIElmIDxwYXRoPiBkb2VzIG5vdCBleGlzdCwgdGhlbiB0aGUKIHN1Ym1vZHVsZSBpcyBjcmVhdGVkIGJ5IGNsb25pbmcgZnJvbSB0aGUgbmFtZWQgVVJMLiBJZiA8cGF0aD4gZG9lcwotZXhpc3QgYW5kIGlzIGFscmVhZHkgYSB2YWxpZCBnaXQgcmVwb3NpdG9yeSwgdGhlbiB0aGlzIGlzIGFkZGVkCitleGlzdCBhbmQgaXMgYWxyZWFkeSBhIHZhbGlkIEdpdCByZXBvc2l0b3J5LCB0aGVuIHRoaXMgaXMgYWRkZWQKIHRvIHRoZSBjaGFuZ2VzZXQgd2l0aG91dCBjbG9uaW5nLiBUaGlzIHNlY29uZCBmb3JtIGlzIHByb3ZpZGVkCiB0byBlYXNlIGNyZWF0aW5nIGEgbmV3IHN1Ym1vZHVsZSBmcm9tIHNjcmF0Y2gsIGFuZCBwcmVzdW1lcwogdGhlIHVzZXIgd2lsbCBsYXRlciBwdXNoIHRoZSBzdWJtb2R1bGUgdG8gdGhlIGdpdmVuIFVSTC4KQEAgLTEyMiw4ICsxMjYsMTAgQEAKIHRvbyAoYW5kIGNhbiBhbHNvIHJlcG9ydCBjaGFuZ2VzIHRvIGEgc3VibW9kdWxlJ3Mgd29yayB0cmVlKS4KIAogaW5pdDo6Ci0JSW5pdGlhbGl6ZSB0aGUgc3VibW9kdWxlcywgaS5lLiByZWdpc3RlciBlYWNoIHN1Ym1vZHVsZSBuYW1lCi0JYW5kIHVybCBmb3VuZCBpbiAuZ2l0bW9kdWxlcyBpbnRvIC5naXQvY29uZmlnLgorCUluaXRpYWxpemUgdGhlIHN1Ym1vZHVsZXMgcmVjb3JkZWQgaW4gdGhlIGluZGV4ICh3aGljaCB3ZXJlCisJYWRkZWQgYW5kIGNvbW1pdHRlZCBlbHNld2hlcmUpIGJ5IGNvcHlpbmcgc3VibW9kdWxlCisJbmFtZXMgYW5kIHVybHMgZnJvbSAuZ2l0bW9kdWxlcyB0byAuZ2l0L2NvbmZpZy4KKwlPcHRpb25hbCA8cGF0aD4gYXJndW1lbnRzIGxpbWl0IHdoaWNoIHN1Ym1vZHVsZXMgd2lsbCBiZSBpbml0aWFsaXplZC4KIAlJdCB3aWxsIGFsc28gY29weSB0aGUgdmFsdWUgb2YgYHN1Ym1vZHVsZS4kbmFtZS51cGRhdGVgIGludG8KIAkuZ2l0L2NvbmZpZy4KIAlUaGUga2V5IHVzZWQgaW4gLmdpdC9jb25maWcgaXMgYHN1Ym1vZHVsZS4kbmFtZS51cmxgLgpAQCAtMTM0LDYgKzE0MCwxOSBAQAogCXRoZSBleHBsaWNpdCAnaW5pdCcgc3RlcCBpZiB5b3UgZG8gbm90IGludGVuZCB0byBjdXN0b21pemUKIAlhbnkgc3VibW9kdWxlIGxvY2F0aW9ucy4KIAorZGVpbml0OjoKKwlVbnJlZ2lzdGVyIHRoZSBnaXZlbiBzdWJtb2R1bGVzLCBpLmUuIHJlbW92ZSB0aGUgd2hvbGUKKwlgc3VibW9kdWxlLiRuYW1lYCBzZWN0aW9uIGZyb20gLmdpdC9jb25maWcgdG9nZXRoZXIgd2l0aCB0aGVpciB3b3JrCisJdHJlZS4gRnVydGhlciBjYWxscyB0byBgZ2l0IHN1Ym1vZHVsZSB1cGRhdGVgLCBgZ2l0IHN1Ym1vZHVsZSBmb3JlYWNoYAorCWFuZCBgZ2l0IHN1Ym1vZHVsZSBzeW5jYCB3aWxsIHNraXAgYW55IHVucmVnaXN0ZXJlZCBzdWJtb2R1bGVzIHVudGlsCisJdGhleSBhcmUgaW5pdGlhbGl6ZWQgYWdhaW4sIHNvIHVzZSB0aGlzIGNvbW1hbmQgaWYgeW91IGRvbid0IHdhbnQgdG8KKwloYXZlIGEgbG9jYWwgY2hlY2tvdXQgb2YgdGhlIHN1Ym1vZHVsZSBpbiB5b3VyIHdvcmsgdHJlZSBhbnltb3JlLiBJZgorCXlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgYSBzdWJtb2R1bGUgZnJvbSB0aGUgcmVwb3NpdG9yeSBhbmQgY29tbWl0CisJdGhhdCB1c2UgbGlua2dpdDpnaXQtcm1bMV0gaW5zdGVhZC4KKysKK0lmIGAtLWZvcmNlYCBpcyBzcGVjaWZpZWQsIHRoZSBzdWJtb2R1bGUncyB3b3JrIHRyZWUgd2lsbCBiZSByZW1vdmVkIGV2ZW4gaWYKK2l0IGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnMuCisKIHVwZGF0ZTo6CiAJVXBkYXRlIHRoZSByZWdpc3RlcmVkIHN1Ym1vZHVsZXMsIGkuZS4gY2xvbmUgbWlzc2luZyBzdWJtb2R1bGVzIGFuZAogCWNoZWNrb3V0IHRoZSBjb21taXQgc3BlY2lmaWVkIGluIHRoZSBpbmRleCBvZiB0aGUgY29udGFpbmluZyByZXBvc2l0b3J5LgpAQCAtMjA4LDExICsyMjcsMTUgQEAKIC1iOjoKIC0tYnJhbmNoOjoKIAlCcmFuY2ggb2YgcmVwb3NpdG9yeSB0byBhZGQgYXMgc3VibW9kdWxlLgorCVRoZSBuYW1lIG9mIHRoZSBicmFuY2ggaXMgcmVjb3JkZWQgYXMgYHN1Ym1vZHVsZS48cGF0aD4uYnJhbmNoYCBpbgorCWAuZ2l0bW9kdWxlc2AgZm9yIGB1cGRhdGUgLS1yZW1vdGVgLgogCiAtZjo6CiAtLWZvcmNlOjoKLQlUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBhZGQgYW5kIHVwZGF0ZSBjb21tYW5kcy4KKwlUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBhZGQsIGRlaW5pdCBhbmQgdXBkYXRlIGNvbW1hbmRzLgogCVdoZW4gcnVubmluZyBhZGQsIGFsbG93IGFkZGluZyBhbiBvdGhlcndpc2UgaWdub3JlZCBzdWJtb2R1bGUgcGF0aC4KKwlXaGVuIHJ1bm5pbmcgZGVpbml0IHRoZSBzdWJtb2R1bGUgd29yayB0cmVlcyB3aWxsIGJlIHJlbW92ZWQgZXZlbiBpZgorCXRoZXkgY29udGFpbiBsb2NhbCBjaGFuZ2VzLgogCVdoZW4gcnVubmluZyB1cGRhdGUsIHRocm93IGF3YXkgbG9jYWwgY2hhbmdlcyBpbiBzdWJtb2R1bGVzIHdoZW4KIAlzd2l0Y2hpbmcgdG8gYSBkaWZmZXJlbnQgY29tbWl0OyBhbmQgYWx3YXlzIHJ1biBhIGNoZWNrb3V0IG9wZXJhdGlvbgogCWluIHRoZSBzdWJtb2R1bGUsIGV2ZW4gaWYgdGhlIGNvbW1pdCBsaXN0ZWQgaW4gdGhlIGluZGV4IG9mIHRoZQpAQCAtMjM2LDYgKzI1OSwyNyBAQAogCSh0aGUgZGVmYXVsdCkuIFRoaXMgbGltaXQgb25seSBhcHBsaWVzIHRvIG1vZGlmaWVkIHN1Ym1vZHVsZXMuIFRoZQogCXNpemUgaXMgYWx3YXlzIGxpbWl0ZWQgdG8gMSBmb3IgYWRkZWQvZGVsZXRlZC90eXBlY2hhbmdlZCBzdWJtb2R1bGVzLgogCistLXJlbW90ZTo6CisJVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgdGhlIHVwZGF0ZSBjb21tYW5kLiAgSW5zdGVhZCBvZiB1c2luZworCXRoZSBzdXBlcnByb2plY3QncyByZWNvcmRlZCBTSEEtMSB0byB1cGRhdGUgdGhlIHN1Ym1vZHVsZSwgdXNlIHRoZQorCXN0YXR1cyBvZiB0aGUgc3VibW9kdWxlJ3MgcmVtb3RlIHRyYWNraW5nIGJyYW5jaC4gIFRoZSByZW1vdGUgdXNlZAorCWlzIGJyYW5jaCdzIHJlbW90ZSAoYGJyYW5jaC48bmFtZT4ucmVtb3RlYCksIGRlZmF1bHRpbmcgdG8gYG9yaWdpbmAuCisJVGhlIHJlbW90ZSBicmFuY2ggdXNlZCBkZWZhdWx0cyB0byBgbWFzdGVyYCwgYnV0IHRoZSBicmFuY2ggbmFtZSBtYXkKKwliZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIGBzdWJtb2R1bGUuPG5hbWU+LmJyYW5jaGAgb3B0aW9uIGluCisJZWl0aGVyIGAuZ2l0bW9kdWxlc2Agb3IgYC5naXQvY29uZmlnYCAod2l0aCBgLmdpdC9jb25maWdgIHRha2luZworCXByZWNlZGVuY2UpLgorKworVGhpcyB3b3JrcyBmb3IgYW55IG9mIHRoZSBzdXBwb3J0ZWQgdXBkYXRlIHByb2NlZHVyZXMgKGAtLWNoZWNrb3V0YCwKK2AtLXJlYmFzZWAsIGV0Yy4pLiAgVGhlIG9ubHkgY2hhbmdlIGlzIHRoZSBzb3VyY2Ugb2YgdGhlIHRhcmdldCBTSEEtMS4KK0ZvciBleGFtcGxlLCBgc3VibW9kdWxlIHVwZGF0ZSAtLXJlbW90ZSAtLW1lcmdlYCB3aWxsIG1lcmdlIHVwc3RyZWFtCitzdWJtb2R1bGUgY2hhbmdlcyBpbnRvIHRoZSBzdWJtb2R1bGVzLCB3aGlsZSBgc3VibW9kdWxlIHVwZGF0ZQorLS1tZXJnZWAgd2lsbCBtZXJnZSBzdXBlcnByb2plY3QgZ2l0bGluayBjaGFuZ2VzIGludG8gdGhlIHN1Ym1vZHVsZXMuCisrCitJbiBvcmRlciB0byBlbnN1cmUgYSBjdXJyZW50IHRyYWNraW5nIGJyYW5jaCBzdGF0ZSwgYHVwZGF0ZSAtLXJlbW90ZWAKK2ZldGNoZXMgdGhlIHN1Ym1vZHVsZSdzIHJlbW90ZSByZXBvc2l0b3J5IGJlZm9yZSBjYWxjdWxhdGluZyB0aGUKK1NIQS0xLiAgSWYgeW91IGRvbid0IHdhbnQgdG8gZmV0Y2gsIHlvdSBzaG91bGQgdXNlIGBzdWJtb2R1bGUgdXBkYXRlCistLXJlbW90ZSAtLW5vLWZldGNoYC4KKwogLU46OgogLS1uby1mZXRjaDo6CiAJVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgdGhlIHVwZGF0ZSBjb21tYW5kLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXN2bi50eHQKaW5kZXggNjlkZWNiMS4uYWFkNDUyZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3ZuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdm4udHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtc3ZuIC0gQmlkaXJlY3Rpb25hbCBvcGVyYXRpb24gYmV0d2VlbiBhIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBhbmQgZ2l0CitnaXQtc3ZuIC0gQmlkaXJlY3Rpb25hbCBvcGVyYXRpb24gYmV0d2VlbiBhIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBhbmQgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtMTIsOCArMTIsOCBAQAogCiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KLSdnaXQgc3ZuJyBpcyBhIHNpbXBsZSBjb25kdWl0IGZvciBjaGFuZ2VzZXRzIGJldHdlZW4gU3VidmVyc2lvbiBhbmQgZ2l0LgotSXQgcHJvdmlkZXMgYSBiaWRpcmVjdGlvbmFsIGZsb3cgb2YgY2hhbmdlcyBiZXR3ZWVuIGEgU3VidmVyc2lvbiBhbmQgYSBnaXQKKydnaXQgc3ZuJyBpcyBhIHNpbXBsZSBjb25kdWl0IGZvciBjaGFuZ2VzZXRzIGJldHdlZW4gU3VidmVyc2lvbiBhbmQgR2l0LgorSXQgcHJvdmlkZXMgYSBiaWRpcmVjdGlvbmFsIGZsb3cgb2YgY2hhbmdlcyBiZXR3ZWVuIGEgU3VidmVyc2lvbiBhbmQgYSBHaXQKIHJlcG9zaXRvcnkuCiAKICdnaXQgc3ZuJyBjYW4gdHJhY2sgYSBzdGFuZGFyZCBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnksCkBAIC0yMSwxNSArMjEsMTUgQEAKIEl0IGNhbiBhbHNvIGZvbGxvdyBicmFuY2hlcyBhbmQgdGFncyBpbiBhbnkgbGF5b3V0IHdpdGggdGhlIC1ULy10Ly1iIG9wdGlvbnMKIChzZWUgb3B0aW9ucyB0byAnaW5pdCcgYmVsb3csIGFuZCBhbHNvIHRoZSAnY2xvbmUnIGNvbW1hbmQpLgogCi1PbmNlIHRyYWNraW5nIGEgU3VidmVyc2lvbiByZXBvc2l0b3J5ICh3aXRoIGFueSBvZiB0aGUgYWJvdmUgbWV0aG9kcyksIHRoZSBnaXQKK09uY2UgdHJhY2tpbmcgYSBTdWJ2ZXJzaW9uIHJlcG9zaXRvcnkgKHdpdGggYW55IG9mIHRoZSBhYm92ZSBtZXRob2RzKSwgdGhlIEdpdAogcmVwb3NpdG9yeSBjYW4gYmUgdXBkYXRlZCBmcm9tIFN1YnZlcnNpb24gYnkgdGhlICdmZXRjaCcgY29tbWFuZCBhbmQKLVN1YnZlcnNpb24gdXBkYXRlZCBmcm9tIGdpdCBieSB0aGUgJ2Rjb21taXQnIGNvbW1hbmQuCitTdWJ2ZXJzaW9uIHVwZGF0ZWQgZnJvbSBHaXQgYnkgdGhlICdkY29tbWl0JyBjb21tYW5kLgogCiBDT01NQU5EUwogLS0tLS0tLS0KIAogJ2luaXQnOjoKLQlJbml0aWFsaXplcyBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSB3aXRoIGFkZGl0aW9uYWwKKwlJbml0aWFsaXplcyBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSB3aXRoIGFkZGl0aW9uYWwKIAltZXRhZGF0YSBkaXJlY3RvcmllcyBmb3IgJ2dpdCBzdm4nLiAgVGhlIFN1YnZlcnNpb24gVVJMCiAJbWF5IGJlIHNwZWNpZmllZCBhcyBhIGNvbW1hbmQtbGluZSBhcmd1bWVudCwgb3IgYXMgZnVsbAogCVVSTCBhcmd1bWVudHMgdG8gLVQvLXQvLWIuICBPcHRpb25hbGx5LCB0aGUgdGFyZ2V0CkBAIC04NSw2ICs4NSwxMCBAQAogCVdoZW4gcGFzc2VkIHRvICdpbml0JyBvciAnY2xvbmUnIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwKIAliZSBwcmVzZXJ2ZWQgYXMgYSBjb25maWcga2V5LiAgU2VlICdmZXRjaCcgZm9yIGEgZGVzY3JpcHRpb24KIAlvZiAnLS1pZ25vcmUtcGF0aHMnLgorLS1pbmNsdWRlLXBhdGhzPTxyZWdleD47OworCVdoZW4gcGFzc2VkIHRvICdpbml0JyBvciAnY2xvbmUnIHRoaXMgcmVndWxhciBleHByZXNzaW9uIHdpbGwKKwliZSBwcmVzZXJ2ZWQgYXMgYSBjb25maWcga2V5LiAgU2VlICdmZXRjaCcgZm9yIGEgZGVzY3JpcHRpb24KKwlvZiAnLS1pbmNsdWRlLXBhdGhzJy4KIC0tbm8tbWluaW1pemUtdXJsOzsKIAlXaGVuIHRyYWNraW5nIG11bHRpcGxlIGRpcmVjdG9yaWVzICh1c2luZyAtLXN0ZGxheW91dCwKIAktLWJyYW5jaGVzLCBvciAtLXRhZ3Mgb3B0aW9ucyksIGdpdCBzdm4gd2lsbCBhdHRlbXB0IHRvIGNvbm5lY3QKQEAgLTE0Niw2ICsxNTAsMTQgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0KIAorLS1pbmNsdWRlLXBhdGhzPTxyZWdleD47OworCVRoaXMgYWxsb3dzIG9uZSB0byBzcGVjaWZ5IGEgUGVybCByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCB3aWxsCisJY2F1c2UgdGhlIGluY2x1c2lvbiBvZiBvbmx5IG1hdGNoaW5nIHBhdGhzIGZyb20gY2hlY2tvdXQgZnJvbSBTVk4uCisJVGhlICctLWluY2x1ZGUtcGF0aHMnIG9wdGlvbiBzaG91bGQgbWF0Y2ggZm9yIGV2ZXJ5ICdmZXRjaCcKKwkoaW5jbHVkaW5nIGF1dG9tYXRpYyBmZXRjaGVzIGR1ZSB0byAnY2xvbmUnLCAnZGNvbW1pdCcsCisJJ3JlYmFzZScsIGV0Yykgb24gYSBnaXZlbiByZXBvc2l0b3J5LiAnLS1pZ25vcmUtcGF0aHMnIHRha2VzCisJcHJlY2VkZW5jZSBvdmVyICctLWluY2x1ZGUtcGF0aHMnLgorCiAtLWxvZy13aW5kb3ctc2l6ZT08bj47OwogICAgIEZldGNoIDxuPiBsb2cgZW50cmllcyBwZXIgcmVxdWVzdCB3aGVuIHNjYW5uaW5nIFN1YnZlcnNpb24gaGlzdG9yeS4KICAgICBUaGUgZGVmYXVsdCBpcyAxMDAuIEZvciB2ZXJ5IGxhcmdlIFN1YnZlcnNpb24gcmVwb3NpdG9yaWVzLCBsYXJnZXIKQEAgLTE5OSw5ICsyMTEsOSBAQAogCUNvbW1pdCBlYWNoIGRpZmYgZnJvbSB0aGUgY3VycmVudCBicmFuY2ggZGlyZWN0bHkgdG8gdGhlIFNWTgogCXJlcG9zaXRvcnksIGFuZCB0aGVuIHJlYmFzZSBvciByZXNldCAoZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3IKIAlub3QgdGhlcmUgaXMgYSBkaWZmIGJldHdlZW4gU1ZOIGFuZCBoZWFkKS4gIFRoaXMgd2lsbCBjcmVhdGUKLQlhIHJldmlzaW9uIGluIFNWTiBmb3IgZWFjaCBjb21taXQgaW4gZ2l0LgorCWEgcmV2aXNpb24gaW4gU1ZOIGZvciBlYWNoIGNvbW1pdCBpbiBHaXQuCiArCi1XaGVuIGFuIG9wdGlvbmFsIGdpdCBicmFuY2ggbmFtZSAob3IgYSBnaXQgY29tbWl0IG9iamVjdCBuYW1lKQorV2hlbiBhbiBvcHRpb25hbCBHaXQgYnJhbmNoIG5hbWUgKG9yIGEgR2l0IGNvbW1pdCBvYmplY3QgbmFtZSkKIGlzIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudCwgdGhlIHN1YmNvbW1hbmQgd29ya3Mgb24gdGhlIHNwZWNpZmllZAogYnJhbmNoLCBub3Qgb24gdGhlIGN1cnJlbnQgYnJhbmNoLgogKwpAQCAtMjQ1LDcgKzI1Nyw3IEBACiAJcGF0Y2gpLCAiYWxsIiAoYWNjZXB0IGFsbCBwYXRjaGVzKSwgb3IgInF1aXQiLgogCSsKIAknZ2l0IHN2biBkY29tbWl0JyByZXR1cm5zIGltbWVkaWF0ZWx5IGlmIGFuc3dlciBpZiAibm8iIG9yICJxdWl0Iiwgd2l0aG91dAotCWNvbW1pdGluZyBhbnl0aGluZyB0byBTVk4uCisJY29tbWl0dGluZyBhbnl0aGluZyB0byBTVk4uCiAKICdicmFuY2gnOjoKIAlDcmVhdGUgYSBicmFuY2ggaW4gdGhlIFNWTiByZXBvc2l0b3J5LgpAQCAtMjU5LDEzICsyNzEsMTUgQEAKIAlDcmVhdGUgYSB0YWcgYnkgdXNpbmcgdGhlIHRhZ3Nfc3ViZGlyIGluc3RlYWQgb2YgdGhlIGJyYW5jaGVzX3N1YmRpcgogCXNwZWNpZmllZCBkdXJpbmcgZ2l0IHN2biBpbml0LgogCi0tZDs7Ci0tLWRlc3RpbmF0aW9uOzsKKy1kPHBhdGg+OzsKKy0tZGVzdGluYXRpb249PHBhdGg+OzsKKwogCUlmIG1vcmUgdGhhbiBvbmUgLS1icmFuY2hlcyAob3IgLS10YWdzKSBvcHRpb24gd2FzIGdpdmVuIHRvIHRoZSAnaW5pdCcKIAlvciAnY2xvbmUnIGNvbW1hbmQsIHlvdSBtdXN0IHByb3ZpZGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBicmFuY2ggKG9yCi0JdGFnKSB5b3Ugd2lzaCB0byBjcmVhdGUgaW4gdGhlIFNWTiByZXBvc2l0b3J5LiAgVGhlIHZhbHVlIG9mIHRoaXMKLQlvcHRpb24gbXVzdCBtYXRjaCBvbmUgb2YgdGhlIHBhdGhzIHNwZWNpZmllZCBieSBhIC0tYnJhbmNoZXMgKG9yCi0JLS10YWdzKSBvcHRpb24uICBZb3UgY2FuIHNlZSB0aGVzZSBwYXRocyB3aXRoIHRoZSBjb21tYW5kcworCXRhZykgeW91IHdpc2ggdG8gY3JlYXRlIGluIHRoZSBTVk4gcmVwb3NpdG9yeS4gIDxwYXRoPiBzcGVjaWZpZXMgd2hpY2gKKwlwYXRoIHRvIHVzZSB0byBjcmVhdGUgdGhlIGJyYW5jaCBvciB0YWcgYW5kIHNob3VsZCBtYXRjaCB0aGUgcGF0dGVybgorCW9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiBvbmUgb2YgdGhlIGNvbmZpZ3VyZWQgYnJhbmNoZXMgb3IgdGFncworCXJlZnNwZWNzLiAgWW91IGNhbiBzZWUgdGhlc2UgcmVmc3BlY3Mgd2l0aCB0aGUgY29tbWFuZHMKICsKIAlnaXQgY29uZmlnIC0tZ2V0LWFsbCBzdm4tcmVtb3RlLjxuYW1lPi5icmFuY2hlcwogCWdpdCBjb25maWcgLS1nZXQtYWxsIHN2bi1yZW1vdGUuPG5hbWU+LnRhZ3MKQEAgLTI4Niw2ICszMDAsMTEgQEAKIAlnaXQgY29uZmlnIC0tZ2V0LWFsbCBzdm4tcmVtb3RlLjxuYW1lPi5jb21taXR1cmwKICsKIAorLS1wYXJlbnRzOzsKKwlDcmVhdGUgcGFyZW50IGZvbGRlcnMuIFRoaXMgcGFyYW1ldGVyIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHBhcmFtZXRlcgorCS0tcGFyZW50cyBvbiBzdm4gY3AgY29tbWFuZHMgYW5kIGlzIHVzZWZ1bCBmb3Igbm9uLXN0YW5kYXJkIHJlcG9zaXRvcnkKKwlsYXlvdXRzLgorCiAndGFnJzo6CiAJQ3JlYXRlIGEgdGFnIGluIHRoZSBTVk4gcmVwb3NpdG9yeS4gVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IKIAknYnJhbmNoIC10Jy4KQEAgLTMxNiw3ICszMzUsNyBAQAogKwogLS0KIC0tc2hvdy1jb21taXQ7OwotCXNob3dzIHRoZSBnaXQgY29tbWl0IHNoYTEsIGFzIHdlbGwKKwlzaG93cyB0aGUgR2l0IGNvbW1pdCBzaGExLCBhcyB3ZWxsCiAtLW9uZWxpbmU7OwogCW91ciB2ZXJzaW9uIG9mIC0tcHJldHR5PW9uZWxpbmUKIC0tCkBAIC0zMzcsMTUgKzM1NiwyNSBAQAogKwogLS1naXQtZm9ybWF0OzsKIAlQcm9kdWNlIG91dHB1dCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgJ2dpdCBibGFtZScsIGJ1dCB3aXRoCi0JU1ZOIHJldmlzaW9uIG51bWJlcnMgaW5zdGVhZCBvZiBnaXQgY29tbWl0IGhhc2hlcy4gSW4gdGhpcyBtb2RlLAorCVNWTiByZXZpc2lvbiBudW1iZXJzIGluc3RlYWQgb2YgR2l0IGNvbW1pdCBoYXNoZXMuIEluIHRoaXMgbW9kZSwKIAljaGFuZ2VzIHRoYXQgaGF2ZW4ndCBiZWVuIGNvbW1pdHRlZCB0byBTVk4gKGluY2x1ZGluZyBsb2NhbAogCXdvcmtpbmctY29weSBlZGl0cykgYXJlIHNob3duIGFzIHJldmlzaW9uIDAuCiAKICdmaW5kLXJldic6OgogCVdoZW4gZ2l2ZW4gYW4gU1ZOIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZm9ybSAnck4nLCByZXR1cm5zIHRoZQotCWNvcnJlc3BvbmRpbmcgZ2l0IGNvbW1pdCBoYXNoICh0aGlzIGNhbiBvcHRpb25hbGx5IGJlIGZvbGxvd2VkIGJ5IGEKKwljb3JyZXNwb25kaW5nIEdpdCBjb21taXQgaGFzaCAodGhpcyBjYW4gb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSBhCiAJdHJlZS1pc2ggdG8gc3BlY2lmeSB3aGljaCBicmFuY2ggc2hvdWxkIGJlIHNlYXJjaGVkKS4gIFdoZW4gZ2l2ZW4gYQogCXRyZWUtaXNoLCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIFNWTiByZXZpc2lvbiBudW1iZXIuCisrCistLWJlZm9yZTs7CisJRG9uJ3QgcmVxdWlyZSBhbiBleGFjdCBtYXRjaCBpZiBnaXZlbiBhbiBTVk4gcmV2aXNpb24sIGluc3RlYWQgZmluZAorCXRoZSBjb21taXQgY29ycmVzcG9uZGluZyB0byB0aGUgc3RhdGUgb2YgdGhlIFNWTiByZXBvc2l0b3J5IChvbiB0aGUKKwljdXJyZW50IGJyYW5jaCkgYXQgdGhlIHNwZWNpZmllZCByZXZpc2lvbi4KKysKKy0tYWZ0ZXI7OworCURvbid0IHJlcXVpcmUgYW4gZXhhY3QgbWF0Y2ggaWYgZ2l2ZW4gYW4gU1ZOIHJldmlzaW9uOyBpZiB0aGVyZSBpcworCW5vdCBhbiBleGFjdCBtYXRjaCByZXR1cm4gdGhlIGNsb3Nlc3QgbWF0Y2ggc2VhcmNoaW5nIGZvcndhcmQgaW4gdGhlCisJaGlzdG9yeS4KIAogJ3NldC10cmVlJzo6CiAJWW91IHNob3VsZCBjb25zaWRlciB1c2luZyAnZGNvbW1pdCcgaW5zdGVhZCBvZiB0aGlzIGNvbW1hbmQuCkBAIC0zNjgsNyArMzk3LDcgQEAKIAl0aGUgJEdJVF9ESVIvaW5mby9leGNsdWRlIGZpbGUuCiAKICdta2RpcnMnOjoKLQlBdHRlbXB0cyB0byByZWNyZWF0ZSBlbXB0eSBkaXJlY3RvcmllcyB0aGF0IGNvcmUgZ2l0IGNhbm5vdCB0cmFjaworCUF0dGVtcHRzIHRvIHJlY3JlYXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRoYXQgY29yZSBHaXQgY2Fubm90IHRyYWNrCiAJYmFzZWQgb24gaW5mb3JtYXRpb24gaW4gJEdJVF9ESVIvc3ZuLzxyZWZuYW1lPi91bmhhbmRsZWQubG9nIGZpbGVzLgogCUVtcHR5IGRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IHJlY3JlYXRlZCB3aGVuIHVzaW5nCiAJImdpdCBzdm4gY2xvbmUiIGFuZCAiZ2l0IHN2biByZWJhc2UiLCBzbyAibWtkaXJzIiBpcyBpbnRlbmRlZApAQCAtNTAwLDkgKzUyOSw5IEBACiArCiBSZW1vdmUgZGlyZWN0b3JpZXMgZnJvbSB0aGUgU1ZOIHRyZWUgaWYgdGhlcmUgYXJlIG5vIGZpbGVzIGxlZnQKIGJlaGluZC4gIFNWTiBjYW4gdmVyc2lvbiBlbXB0eSBkaXJlY3RvcmllcywgYW5kIHRoZXkgYXJlIG5vdAotcmVtb3ZlZCBieSBkZWZhdWx0IGlmIHRoZXJlIGFyZSBubyBmaWxlcyBsZWZ0IGluIHRoZW0uICBnaXQKK3JlbW92ZWQgYnkgZGVmYXVsdCBpZiB0aGVyZSBhcmUgbm8gZmlsZXMgbGVmdCBpbiB0aGVtLiAgR2l0CiBjYW5ub3QgdmVyc2lvbiBlbXB0eSBkaXJlY3Rvcmllcy4gIEVuYWJsaW5nIHRoaXMgZmxhZyB3aWxsIG1ha2UKLXRoZSBjb21taXQgdG8gU1ZOIGFjdCBsaWtlIGdpdC4KK3RoZSBjb21taXQgdG8gU1ZOIGFjdCBsaWtlIEdpdC4KICsKIFt2ZXJzZV0KIGNvbmZpZyBrZXk6IHN2bi5ybWRpcgpAQCAtNTg5LDcgKzYxOCw3IEBACiAJVGhpcyBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnZGNvbW1pdCcsICdyZWJhc2UnLCAnYnJhbmNoJyBhbmQKIAkndGFnJyBjb21tYW5kcy4KICsKLUZvciAnZGNvbW1pdCcsIHByaW50IG91dCB0aGUgc2VyaWVzIG9mIGdpdCBhcmd1bWVudHMgdGhhdCB3b3VsZCBzaG93CitGb3IgJ2Rjb21taXQnLCBwcmludCBvdXQgdGhlIHNlcmllcyBvZiBHaXQgYXJndW1lbnRzIHRoYXQgd291bGQgc2hvdwogd2hpY2ggZGlmZnMgd291bGQgYmUgY29tbWl0dGVkIHRvIFNWTi4KICsKIEZvciAncmViYXNlJywgZGlzcGxheSB0aGUgbG9jYWwgYnJhbmNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBzdHJlYW0gc3ZuCkBAIC02MDAsMTQgKzYyOSwxNCBAQAogY3JlYXRpbmcgdGhlIGJyYW5jaCBvciB0YWcuCiAKIC0tdXNlLWxvZy1hdXRob3I6OgotCVdoZW4gcmV0cmlldmluZyBzdm4gY29tbWl0cyBpbnRvIGdpdCAoYXMgcGFydCBvZiAnZmV0Y2gnLCAncmViYXNlJywgb3IKKwlXaGVuIHJldHJpZXZpbmcgc3ZuIGNvbW1pdHMgaW50byBHaXQgKGFzIHBhcnQgb2YgJ2ZldGNoJywgJ3JlYmFzZScsIG9yCiAJJ2Rjb21taXQnIG9wZXJhdGlvbnMpLCBsb29rIGZvciB0aGUgZmlyc3QgYEZyb206YCBvciBgU2lnbmVkLW9mZi1ieTpgIGxpbmUKIAlpbiB0aGUgbG9nIG1lc3NhZ2UgYW5kIHVzZSB0aGF0IGFzIHRoZSBhdXRob3Igc3RyaW5nLgogLS1hZGQtYXV0aG9yLWZyb206OgotCVdoZW4gY29tbWl0dGluZyB0byBzdm4gZnJvbSBnaXQgKGFzIHBhcnQgb2YgJ2NvbW1pdC1kaWZmJywgJ3NldC10cmVlJyBvciAnZGNvbW1pdCcKKwlXaGVuIGNvbW1pdHRpbmcgdG8gc3ZuIGZyb20gR2l0IChhcyBwYXJ0IG9mICdjb21taXQtZGlmZicsICdzZXQtdHJlZScgb3IgJ2Rjb21taXQnCiAJb3BlcmF0aW9ucyksIGlmIHRoZSBleGlzdGluZyBsb2cgbWVzc2FnZSBkb2Vzbid0IGFscmVhZHkgaGF2ZSBhCiAJYEZyb206YCBvciBgU2lnbmVkLW9mZi1ieTpgIGxpbmUsIGFwcGVuZCBhIGBGcm9tOmAgbGluZSBiYXNlZCBvbiB0aGUKLQlnaXQgY29tbWl0J3MgYXV0aG9yIHN0cmluZy4gIElmIHlvdSB1c2UgdGhpcywgdGhlbiBgLS11c2UtbG9nLWF1dGhvcmAKKwlHaXQgY29tbWl0J3MgYXV0aG9yIHN0cmluZy4gIElmIHlvdSB1c2UgdGhpcywgdGhlbiBgLS11c2UtbG9nLWF1dGhvcmAKIAl3aWxsIHJldHJpZXZlIGEgdmFsaWQgYXV0aG9yIHN0cmluZyBmb3IgYWxsIGNvbW1pdHMuCiAKIApAQCAtNjMyLDcgKzY2MSw3IEBACiAJb25lIG9mIHRoZSByZXBvc2l0b3J5IGxheW91dCBvcHRpb25zIC0tdHJ1bmssIC0tdGFncywKIAktLWJyYW5jaGVzLCAtLXN0ZGxheW91dCkuIEZvciBlYWNoIHRyYWNrZWQgYnJhbmNoLCB0cnkgdG8gZmluZAogCW91dCB3aGVyZSBpdHMgcmV2aXNpb24gd2FzIGNvcGllZCBmcm9tLCBhbmQgc2V0Ci0JYSBzdWl0YWJsZSBwYXJlbnQgaW4gdGhlIGZpcnN0IGdpdCBjb21taXQgZm9yIHRoZSBicmFuY2guCisJYSBzdWl0YWJsZSBwYXJlbnQgaW4gdGhlIGZpcnN0IEdpdCBjb21taXQgZm9yIHRoZSBicmFuY2guCiAJVGhpcyBpcyBlc3BlY2lhbGx5IGhlbHBmdWwgd2hlbiB3ZSdyZSB0cmFja2luZyBhIGRpcmVjdG9yeQogCXRoYXQgaGFzIGJlZW4gbW92ZWQgYXJvdW5kIHdpdGhpbiB0aGUgcmVwb3NpdG9yeS4gIElmIHRoaXMKIAlmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgYnJhbmNoZXMgY3JlYXRlZCBieSAnZ2l0IHN2bicgd2lsbCBhbGwKQEAgLTY2NCw3ICs2OTMsNyBAQAogKwogVGhpcyBvcHRpb24gaXMgTk9UIHJlY29tbWVuZGVkIGFzIGl0IG1ha2VzIGl0IGRpZmZpY3VsdCB0byB0cmFjayBkb3duCiBvbGQgcmVmZXJlbmNlcyB0byBTVk4gcmV2aXNpb24gbnVtYmVycyBpbiBleGlzdGluZyBkb2N1bWVudGF0aW9uLCBidWcKLXJlcG9ydHMgYW5kIGFyY2hpdmVzLiAgSWYgeW91IHBsYW4gdG8gZXZlbnR1YWxseSBtaWdyYXRlIGZyb20gU1ZOIHRvIGdpdAorcmVwb3J0cyBhbmQgYXJjaGl2ZXMuICBJZiB5b3UgcGxhbiB0byBldmVudHVhbGx5IG1pZ3JhdGUgZnJvbSBTVk4gdG8gR2l0CiBhbmQgYXJlIGNlcnRhaW4gYWJvdXQgZHJvcHBpbmcgU1ZOIGhpc3RvcnksIGNvbnNpZGVyCiBsaW5rZ2l0OmdpdC1maWx0ZXItYnJhbmNoWzFdIGluc3RlYWQuICBmaWx0ZXItYnJhbmNoIGFsc28gYWxsb3dzCiByZWZvcm1hdHRpbmcgb2YgbWV0YWRhdGEgZm9yIGVhc2Utb2YtcmVhZGluZyBhbmQgcmV3cml0aW5nIGF1dGhvcnNoaXAKQEAgLTcwNCw3ICs3MzMsNyBAQAogCiBzdm4tcmVtb3RlLjxuYW1lPi5wdXNodXJsOjoKIAotCVNpbWlsYXIgdG8gZ2l0J3MgJ3JlbW90ZS48bmFtZT4ucHVzaHVybCcsIHRoaXMga2V5IGlzIGRlc2lnbmVkCisJU2ltaWxhciB0byBHaXQncyAncmVtb3RlLjxuYW1lPi5wdXNodXJsJywgdGhpcyBrZXkgaXMgZGVzaWduZWQKIAl0byBiZSB1c2VkIGluIGNhc2VzIHdoZXJlICd1cmwnIHBvaW50cyB0byBhbiBTVk4gcmVwb3NpdG9yeQogCXZpYSBhIHJlYWQtb25seSB0cmFuc3BvcnQsIHRvIHByb3ZpZGUgYW4gYWx0ZXJuYXRlIHJlYWQvd3JpdGUKIAl0cmFuc3BvcnQuIEl0IGlzIGFzc3VtZWQgdGhhdCBib3RoIGtleXMgcG9pbnQgdG8gdGhlIHNhbWUKQEAgLTc1OCwxNSArNzg3LDE1IEBACiAJY2QgdHJ1bmsKICMgWW91IHNob3VsZCBiZSBvbiBtYXN0ZXIgYnJhbmNoLCBkb3VibGUtY2hlY2sgd2l0aCAnZ2l0IGJyYW5jaCcKIAlnaXQgYnJhbmNoCi0jIERvIHNvbWUgd29yayBhbmQgY29tbWl0IGxvY2FsbHkgdG8gZ2l0OgorIyBEbyBzb21lIHdvcmsgYW5kIGNvbW1pdCBsb2NhbGx5IHRvIEdpdDoKIAlnaXQgY29tbWl0IC4uLgogIyBTb21ldGhpbmcgaXMgY29tbWl0dGVkIHRvIFNWTiwgcmViYXNlIHlvdXIgbG9jYWwgY2hhbmdlcyBhZ2FpbnN0IHRoZQogIyBsYXRlc3QgY2hhbmdlcyBpbiBTVk46CiAJZ2l0IHN2biByZWJhc2UKLSMgTm93IGNvbW1pdCB5b3VyIGNoYW5nZXMgKHRoYXQgd2VyZSBjb21taXR0ZWQgcHJldmlvdXNseSB1c2luZyBnaXQpIHRvIFNWTiwKKyMgTm93IGNvbW1pdCB5b3VyIGNoYW5nZXMgKHRoYXQgd2VyZSBjb21taXR0ZWQgcHJldmlvdXNseSB1c2luZyBHaXQpIHRvIFNWTiwKICMgYXMgd2VsbCBhcyBhdXRvbWF0aWNhbGx5IHVwZGF0aW5nIHlvdXIgd29ya2luZyBIRUFEOgogCWdpdCBzdm4gZGNvbW1pdAotIyBBcHBlbmQgc3ZuOmlnbm9yZSBzZXR0aW5ncyB0byB0aGUgZGVmYXVsdCBnaXQgZXhjbHVkZSBmaWxlOgorIyBBcHBlbmQgc3ZuOmlnbm9yZSBzZXR0aW5ncyB0byB0aGUgZGVmYXVsdCBHaXQgZXhjbHVkZSBmaWxlOgogCWdpdCBzdm4gc2hvdy1pZ25vcmUgPj4gLmdpdC9pbmZvL2V4Y2x1ZGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC04MDYsNyArODM1LDcgQEAKIAlnaXQgcmVtb3RlIGFkZCBvcmlnaW4gc2VydmVyOi9wdWIvcHJvamVjdAogCWdpdCBjb25maWcgLS1yZXBsYWNlLWFsbCByZW1vdGUub3JpZ2luLmZldGNoICcrcmVmcy9yZW1vdGVzLyo6cmVmcy9yZW1vdGVzLyonCiAJZ2l0IGZldGNoCi0jIFByZXZlbnQgZmV0Y2gvcHVsbCBmcm9tIHJlbW90ZSBnaXQgc2VydmVyIGluIHRoZSBmdXR1cmUsCisjIFByZXZlbnQgZmV0Y2gvcHVsbCBmcm9tIHJlbW90ZSBHaXQgc2VydmVyIGluIHRoZSBmdXR1cmUsCiAjIHdlIG9ubHkgd2FudCB0byB1c2UgZ2l0IHN2biBmb3IgZnV0dXJlIHVwZGF0ZXMKIAlnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gcmVtb3RlLm9yaWdpbgogIyBDcmVhdGUgYSBsb2NhbCBicmFuY2ggZnJvbSBvbmUgb2YgdGhlIGJyYW5jaGVzIGp1c3QgZmV0Y2hlZApAQCAtODM5LDE0ICs4NjgsMTQgQEAKIGNvcHkgaGlzdG9yeSAoaW5jbHVkaW5nIGJyYW5jaGVzIGFuZCB0YWdzKSBmb3IgcmVwb3NpdG9yaWVzIGFkb3B0aW5nIGEKIHN0YW5kYXJkIGxheW91dCwgaXQgY2Fubm90IHlldCByZXByZXNlbnQgbWVyZ2UgaGlzdG9yeSB0aGF0IGhhcHBlbmVkCiBpbnNpZGUgZ2l0IGJhY2sgdXBzdHJlYW0gdG8gU1ZOIHVzZXJzLiAgVGhlcmVmb3JlIGl0IGlzIGFkdmlzZWQgdGhhdAotdXNlcnMga2VlcCBoaXN0b3J5IGFzIGxpbmVhciBhcyBwb3NzaWJsZSBpbnNpZGUgZ2l0IHRvIGVhc2UKK3VzZXJzIGtlZXAgaGlzdG9yeSBhcyBsaW5lYXIgYXMgcG9zc2libGUgaW5zaWRlIEdpdCB0byBlYXNlCiBjb21wYXRpYmlsaXR5IHdpdGggU1ZOIChzZWUgdGhlIENBVkVBVFMgc2VjdGlvbiBiZWxvdykuCiAKIEhBTkRMSU5HIE9GIFNWTiBCUkFOQ0hFUwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBJZiAnZ2l0IHN2bicgaXMgY29uZmlndXJlZCB0byBmZXRjaCBicmFuY2hlcyAoYW5kIC0tZm9sbG93LWJyYW5jaGVzCi1pcyBpbiBlZmZlY3QpLCBpdCBzb21ldGltZXMgY3JlYXRlcyBtdWx0aXBsZSBnaXQgYnJhbmNoZXMgZm9yIG9uZQotU1ZOIGJyYW5jaCwgd2hlcmUgdGhlIGFkZHRpb25hbCBicmFuY2hlcyBoYXZlIG5hbWVzIG9mIHRoZSBmb3JtCitpcyBpbiBlZmZlY3QpLCBpdCBzb21ldGltZXMgY3JlYXRlcyBtdWx0aXBsZSBHaXQgYnJhbmNoZXMgZm9yIG9uZQorU1ZOIGJyYW5jaCwgd2hlcmUgdGhlIGFkZGl0aW9uYWwgYnJhbmNoZXMgaGF2ZSBuYW1lcyBvZiB0aGUgZm9ybQogJ2JyYW5jaG5hbWVAbm5uJyAod2l0aCBubm4gYW4gU1ZOIHJldmlzaW9uIG51bWJlcikuICBUaGVzZSBhZGRpdGlvbmFsCiBicmFuY2hlcyBhcmUgY3JlYXRlZCBpZiAnZ2l0IHN2bicgY2Fubm90IGZpbmQgYSBwYXJlbnQgY29tbWl0IGZvciB0aGUKIGZpcnN0IGNvbW1pdCBpbiBhbiBTVk4gYnJhbmNoLCB0byBjb25uZWN0IHRoZSBicmFuY2ggdG8gdGhlIGhpc3Rvcnkgb2YKQEAgLTg1NSwxNyArODg0LDE3IEBACiBOb3JtYWxseSwgdGhlIGZpcnN0IGNvbW1pdCBpbiBhbiBTVk4gYnJhbmNoIGNvbnNpc3RzCiBvZiBhIGNvcHkgb3BlcmF0aW9uLiAnZ2l0IHN2bicgd2lsbCByZWFkIHRoaXMgY29tbWl0IHRvIGdldCB0aGUgU1ZOCiByZXZpc2lvbiB0aGUgYnJhbmNoIHdhcyBjcmVhdGVkIGZyb20uIEl0IHdpbGwgdGhlbiB0cnkgdG8gZmluZCB0aGUKLWdpdCBjb21taXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIFNWTiByZXZpc2lvbiwgYW5kIHVzZSB0aGF0IGFzIHRoZQorR2l0IGNvbW1pdCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoaXMgU1ZOIHJldmlzaW9uLCBhbmQgdXNlIHRoYXQgYXMgdGhlCiBwYXJlbnQgb2YgdGhlIGJyYW5jaC4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBubyBzdWl0YWJsZQotZ2l0IGNvbW1pdCB0byBzZXJ2ZSBhcyBwYXJlbnQuICBUaGlzIHdpbGwgaGFwcGVuLCBhbW9uZyBvdGhlciByZWFzb25zLAorR2l0IGNvbW1pdCB0byBzZXJ2ZSBhcyBwYXJlbnQuICBUaGlzIHdpbGwgaGFwcGVuLCBhbW9uZyBvdGhlciByZWFzb25zLAogaWYgdGhlIFNWTiBicmFuY2ggaXMgYSBjb3B5IG9mIGEgcmV2aXNpb24gdGhhdCB3YXMgbm90IGZldGNoZWQgYnkgJ2dpdAogc3ZuJyAoZS5nLiBiZWNhdXNlIGl0IGlzIGFuIG9sZCByZXZpc2lvbiB0aGF0IHdhcyBza2lwcGVkIHdpdGgKICctLXJldmlzaW9uJyksIG9yIGlmIGluIFNWTiBhIGRpcmVjdG9yeSB3YXMgY29waWVkIHRoYXQgaXMgbm90IHRyYWNrZWQKIGJ5ICdnaXQgc3ZuJyAoc3VjaCBhcyBhIGJyYW5jaCB0aGF0IGlzIG5vdCB0cmFja2VkIGF0IGFsbCwgb3IgYQogc3ViZGlyZWN0b3J5IG9mIGEgdHJhY2tlZCBicmFuY2gpLiBJbiB0aGVzZSBjYXNlcywgJ2dpdCBzdm4nIHdpbGwgc3RpbGwKLWNyZWF0ZSBhIGdpdCBicmFuY2gsIGJ1dCBpbnN0ZWFkIG9mIHVzaW5nIGFuIGV4aXN0aW5nIGdpdCBjb21taXQgYXMgdGhlCitjcmVhdGUgYSBHaXQgYnJhbmNoLCBidXQgaW5zdGVhZCBvZiB1c2luZyBhbiBleGlzdGluZyBHaXQgY29tbWl0IGFzIHRoZQogcGFyZW50IG9mIHRoZSBicmFuY2gsIGl0IHdpbGwgcmVhZCB0aGUgU1ZOIGhpc3Rvcnkgb2YgdGhlIGRpcmVjdG9yeSB0aGUKLWJyYW5jaCB3YXMgY29waWVkIGZyb20gYW5kIGNyZWF0ZSBhcHByb3ByaWF0ZSBnaXQgY29tbWl0cy4gIFRoaXMgaXMKK2JyYW5jaCB3YXMgY29waWVkIGZyb20gYW5kIGNyZWF0ZSBhcHByb3ByaWF0ZSBHaXQgY29tbWl0cy4gIFRoaXMgaXMKIGluZGljYXRlZCBieSB0aGUgbWVzc2FnZSAiSW5pdGlhbGl6aW5nIHBhcmVudDogPGJyYW5jaG5hbWU+Ii4KIAogQWRkaXRpb25hbGx5LCBpdCB3aWxsIGNyZWF0ZSBhIHNwZWNpYWwgYnJhbmNoIG5hbWVkCkBAIC04NzUsMTUgKzkwNCwxNSBAQAogYW5kIGxhdGVyIHJlY3JlYXRlZCBmcm9tIGEgZGlmZmVyZW50IHZlcnNpb24sIHRoZXJlIHdpbGwgYmUgbXVsdGlwbGUKIHN1Y2ggYnJhbmNoZXMgd2l0aCBhbiAnQCcuCiAKLU5vdGUgdGhhdCB0aGlzIG1heSBtZWFuIHRoYXQgbXVsdGlwbGUgZ2l0IGNvbW1pdHMgYXJlIGNyZWF0ZWQgZm9yIGEKK05vdGUgdGhhdCB0aGlzIG1heSBtZWFuIHRoYXQgbXVsdGlwbGUgR2l0IGNvbW1pdHMgYXJlIGNyZWF0ZWQgZm9yIGEKIHNpbmdsZSBTVk4gcmV2aXNpb24uCiAKIEFuIGV4YW1wbGU6IGluIGFuIFNWTiByZXBvc2l0b3J5IHdpdGggYSBzdGFuZGFyZAogdHJ1bmsvdGFncy9icmFuY2hlcyBsYXlvdXQsIGEgZGlyZWN0b3J5IHRydW5rL3N1YiBpcyBjcmVhdGVkIGluIHIuMTAwLgogSW4gci4yMDAsIHRydW5rL3N1YiBpcyBicmFuY2hlZCBieSBjb3B5aW5nIGl0IHRvIGJyYW5jaGVzLy4gJ2dpdCBzdm4KLWNsb25lIC1zJyB3aWxsIHRoZW4gY3JlYXRlIGEgYnJhbmNoICdzdWInLiBJdCB3aWxsIGFsc28gY3JlYXRlIG5ldyBnaXQKK2Nsb25lIC1zJyB3aWxsIHRoZW4gY3JlYXRlIGEgYnJhbmNoICdzdWInLiBJdCB3aWxsIGFsc28gY3JlYXRlIG5ldyBHaXQKIGNvbW1pdHMgZm9yIHIuMTAwIHRocm91Z2ggci4xOTkgYW5kIHVzZSB0aGVzZSBhcyB0aGUgaGlzdG9yeSBvZiBicmFuY2gKLSdzdWInLiBUaHVzIHRoZXJlIHdpbGwgYmUgdHdvIGdpdCBjb21taXRzIGZvciBlYWNoIHJldmlzaW9uIGZyb20gci4xMDAKKydzdWInLiBUaHVzIHRoZXJlIHdpbGwgYmUgdHdvIEdpdCBjb21taXRzIGZvciBlYWNoIHJldmlzaW9uIGZyb20gci4xMDAKIHRvIHIuMTk5IChvbmUgY29udGFpbmluZyB0cnVuay8sIG9uZSBjb250YWluaW5nIHRydW5rL3N1Yi8pLiBGaW5hbGx5LAogaXQgd2lsbCBjcmVhdGUgYSBicmFuY2ggJ3N1YkAyMDAnIHBvaW50aW5nIHRvIHRoZSBuZXcgcGFyZW50IGNvbW1pdCBvZgogYnJhbmNoICdzdWInIChpLmUuIHRoZSBjb21taXQgZm9yIHIuMjAwIGFuZCB0cnVuay9zdWIvKS4KQEAgLTg5NCwxMyArOTIzLDEzIEBACiBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSBhbmQgaW50ZXJvcGVyYXRpbmcgd2l0aCBTdWJ2ZXJzaW9uLAogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbGwgJ2dpdCBzdm4nIHVzZXJzIGNsb25lLCBmZXRjaCBhbmQgZGNvbW1pdAogZGlyZWN0bHkgZnJvbSB0aGUgU1ZOIHNlcnZlciwgYW5kIGF2b2lkIGFsbCAnZ2l0IGNsb25lJy8ncHVsbCcvJ21lcmdlJy8ncHVzaCcKLW9wZXJhdGlvbnMgYmV0d2VlbiBnaXQgcmVwb3NpdG9yaWVzIGFuZCBicmFuY2hlcy4gIFRoZSByZWNvbW1lbmRlZAotbWV0aG9kIG9mIGV4Y2hhbmdpbmcgY29kZSBiZXR3ZWVuIGdpdCBicmFuY2hlcyBhbmQgdXNlcnMgaXMKK29wZXJhdGlvbnMgYmV0d2VlbiBHaXQgcmVwb3NpdG9yaWVzIGFuZCBicmFuY2hlcy4gIFRoZSByZWNvbW1lbmRlZAorbWV0aG9kIG9mIGV4Y2hhbmdpbmcgY29kZSBiZXR3ZWVuIEdpdCBicmFuY2hlcyBhbmQgdXNlcnMgaXMKICdnaXQgZm9ybWF0LXBhdGNoJyBhbmQgJ2dpdCBhbScsIG9yIGp1c3QgJ2Rjb21taXQnaW5nIHRvIHRoZSBTVk4gcmVwb3NpdG9yeS4KIAogUnVubmluZyAnZ2l0IG1lcmdlJyBvciAnZ2l0IHB1bGwnIGlzIE5PVCByZWNvbW1lbmRlZCBvbiBhIGJyYW5jaCB5b3UKIHBsYW4gdG8gJ2Rjb21taXQnIGZyb20gYmVjYXVzZSBTdWJ2ZXJzaW9uIHVzZXJzIGNhbm5vdCBzZWUgYW55Ci1tZXJnZXMgeW91J3ZlIG1hZGUuICBGdXJ0aGVybW9yZSwgaWYgeW91IG1lcmdlIG9yIHB1bGwgZnJvbSBhIGdpdCBicmFuY2gKK21lcmdlcyB5b3UndmUgbWFkZS4gIEZ1cnRoZXJtb3JlLCBpZiB5b3UgbWVyZ2Ugb3IgcHVsbCBmcm9tIGEgR2l0IGJyYW5jaAogdGhhdCBpcyBhIG1pcnJvciBvZiBhbiBTVk4gYnJhbmNoLCAnZGNvbW1pdCcgbWF5IGNvbW1pdCB0byB0aGUgd3JvbmcKIGJyYW5jaC4KIApAQCAtOTE5LDcgKzk0OCw3IEBACiB1c2luZyAnZ2l0IHN2bicgc2hvdWxkIHVzZSAncnN5bmMnIGZvciBjbG9uaW5nLCBpZiBjbG9uaW5nIGlzIHRvIGJlIGRvbmUKIGF0IGFsbC4KIAotU2luY2UgJ2Rjb21taXQnIHVzZXMgcmViYXNlIGludGVybmFsbHksIGFueSBnaXQgYnJhbmNoZXMgeW91ICdnaXQgcHVzaCcgdG8KK1NpbmNlICdkY29tbWl0JyB1c2VzIHJlYmFzZSBpbnRlcm5hbGx5LCBhbnkgR2l0IGJyYW5jaGVzIHlvdSAnZ2l0IHB1c2gnIHRvCiBiZWZvcmUgJ2Rjb21taXQnIG9uIHdpbGwgcmVxdWlyZSBmb3JjaW5nIGFuIG92ZXJ3cml0ZSBvZiB0aGUgZXhpc3RpbmcgcmVmCiBvbiB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuICBUaGlzIGlzIGdlbmVyYWxseSBjb25zaWRlcmVkIGJhZCBwcmFjdGljZSwKIHNlZSB0aGUgbGlua2dpdDpnaXQtcHVzaFsxXSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgpAQCAtOTMxLDcgKzk2MCw3IEBACiAKIFdoZW4gY2xvbmluZyBhbiBTVk4gcmVwb3NpdG9yeSwgaWYgbm9uZSBvZiB0aGUgb3B0aW9ucyBmb3IgZGVzY3JpYmluZwogdGhlIHJlcG9zaXRvcnkgbGF5b3V0IGlzIHVzZWQgKC0tdHJ1bmssIC0tdGFncywgLS1icmFuY2hlcywKLS0tc3RkbGF5b3V0KSwgJ2dpdCBzdm4gY2xvbmUnIHdpbGwgY3JlYXRlIGEgZ2l0IHJlcG9zaXRvcnkgd2l0aAorLS1zdGRsYXlvdXQpLCAnZ2l0IHN2biBjbG9uZScgd2lsbCBjcmVhdGUgYSBHaXQgcmVwb3NpdG9yeSB3aXRoCiBjb21wbGV0ZWx5IGxpbmVhciBoaXN0b3J5LCB3aGVyZSBicmFuY2hlcyBhbmQgdGFncyBhcHBlYXIgYXMgc2VwYXJhdGUKIGRpcmVjdG9yaWVzIGluIHRoZSB3b3JraW5nIGNvcHkuICBXaGlsZSB0aGlzIGlzIHRoZSBlYXNpZXN0IHdheSB0byBnZXQgYQogY29weSBvZiBhIGNvbXBsZXRlIHJlcG9zaXRvcnksIGZvciBwcm9qZWN0cyB3aXRoIG1hbnkgYnJhbmNoZXMgaXQgd2lsbApAQCAtOTQ3LDcgKzk3Niw3IEBACiBXaGVuIHVzaW5nIG11bHRpcGxlIC0tYnJhbmNoZXMgb3IgLS10YWdzLCAnZ2l0IHN2bicgZG9lcyBub3QgYXV0b21hdGljYWxseQogaGFuZGxlIG5hbWUgY29sbGlzaW9ucyAoZm9yIGV4YW1wbGUsIGlmIHR3byBicmFuY2hlcyBmcm9tIGRpZmZlcmVudCBwYXRocyBoYXZlCiB0aGUgc2FtZSBuYW1lLCBvciBpZiBhIGJyYW5jaCBhbmQgYSB0YWcgaGF2ZSB0aGUgc2FtZSBuYW1lKS4gIEluIHRoZXNlIGNhc2VzLAotdXNlICdpbml0JyB0byBzZXQgdXAgeW91ciBnaXQgcmVwb3NpdG9yeSB0aGVuLCBiZWZvcmUgeW91ciBmaXJzdCAnZmV0Y2gnLCBlZGl0Cit1c2UgJ2luaXQnIHRvIHNldCB1cCB5b3VyIEdpdCByZXBvc2l0b3J5IHRoZW4sIGJlZm9yZSB5b3VyIGZpcnN0ICdmZXRjaCcsIGVkaXQKIHRoZSAuZ2l0L2NvbmZpZyBmaWxlIHNvIHRoYXQgdGhlIGJyYW5jaGVzIGFuZCB0YWdzIGFyZSBhc3NvY2lhdGVkIHdpdGgKIGRpZmZlcmVudCBuYW1lIHNwYWNlcy4gIEZvciBleGFtcGxlOgogCkBAIC05NjAsMTIgKzk4OSwxMiBAQAogV2UgaWdub3JlIGFsbCBTVk4gcHJvcGVydGllcyBleGNlcHQgc3ZuOmV4ZWN1dGFibGUuICBBbnkgdW5oYW5kbGVkCiBwcm9wZXJ0aWVzIGFyZSBsb2dnZWQgdG8gJEdJVF9ESVIvc3ZuLzxyZWZuYW1lPi91bmhhbmRsZWQubG9nCiAKLVJlbmFtZWQgYW5kIGNvcGllZCBkaXJlY3RvcmllcyBhcmUgbm90IGRldGVjdGVkIGJ5IGdpdCBhbmQgaGVuY2Ugbm90CitSZW5hbWVkIGFuZCBjb3BpZWQgZGlyZWN0b3JpZXMgYXJlIG5vdCBkZXRlY3RlZCBieSBHaXQgYW5kIGhlbmNlIG5vdAogdHJhY2tlZCB3aGVuIGNvbW1pdHRpbmcgdG8gU1ZOLiAgSSBkbyBub3QgcGxhbiBvbiBhZGRpbmcgc3VwcG9ydCBmb3IKIHRoaXMgYXMgaXQncyBxdWl0ZSBkaWZmaWN1bHQgYW5kIHRpbWUtY29uc3VtaW5nIHRvIGdldCB3b3JraW5nIGZvciBhbGwKLXRoZSBwb3NzaWJsZSBjb3JuZXIgY2FzZXMgKGdpdCBkb2Vzbid0IGRvIGl0LCBlaXRoZXIpLiAgQ29tbWl0dGluZwordGhlIHBvc3NpYmxlIGNvcm5lciBjYXNlcyAoR2l0IGRvZXNuJ3QgZG8gaXQsIGVpdGhlcikuICBDb21taXR0aW5nCiByZW5hbWVkIGFuZCBjb3BpZWQgZmlsZXMgaXMgZnVsbHkgc3VwcG9ydGVkIGlmIHRoZXkncmUgc2ltaWxhciBlbm91Z2gKLWZvciBnaXQgdG8gZGV0ZWN0IHRoZW0uCitmb3IgR2l0IHRvIGRldGVjdCB0aGVtLgogCiBJbiBTVk4sIGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggZGlzY291cmFnZWQpIHRvIGNvbW1pdCBjaGFuZ2VzIHRvIGEgdGFnCiAoYmVjYXVzZSBhIHRhZyBpcyBqdXN0IGEgZGlyZWN0b3J5IGNvcHksIHRodXMgdGVjaG5pY2FsbHkgdGhlIHNhbWUgYXMgYQpAQCAtOTc3LDcgKzEwMDYsNyBAQAogLS0tLS0tLS0tLS0tLQogCiAnZ2l0IHN2bicgc3RvcmVzIFtzdm4tcmVtb3RlXSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGluIHRoZQotcmVwb3NpdG9yeSAuZ2l0L2NvbmZpZyBmaWxlLiAgSXQgaXMgc2ltaWxhciB0aGUgY29yZSBnaXQKK3JlcG9zaXRvcnkgLmdpdC9jb25maWcgZmlsZS4gIEl0IGlzIHNpbWlsYXIgdGhlIGNvcmUgR2l0CiBbcmVtb3RlXSBzZWN0aW9ucyBleGNlcHQgJ2ZldGNoJyBrZXlzIGRvIG5vdCBhY2NlcHQgZ2xvYgogYXJndW1lbnRzOyBidXQgdGhleSBhcmUgaW5zdGVhZCBoYW5kbGVkIGJ5IHRoZSAnYnJhbmNoZXMnCiBhbmQgJ3RhZ3MnIGtleXMuICBTaW5jZSBzb21lIFNWTiByZXBvc2l0b3JpZXMgYXJlIG9kZGx5CkBAIC0xMDEwLDYgKzEwMzksMjUgQEAKIAl0YWdzID0gdGFncy97MS4wLDIuMH0vc3JjOnJlZnMvcmVtb3Rlcy90YWdzLyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitNdWx0aXBsZSBmZXRjaCwgYnJhbmNoZXMsIGFuZCB0YWdzIGtleXMgYXJlIHN1cHBvcnRlZDoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitbc3ZuLXJlbW90ZSAibWVzc3ktcmVwbyJdCisJdXJsID0gaHR0cDovL3NlcnZlci5vcmcvc3ZuCisJZmV0Y2ggPSB0cnVuay9wcm9qZWN0LWE6cmVmcy9yZW1vdGVzL3Byb2plY3QtYS90cnVuaworCWZldGNoID0gYnJhbmNoZXMvZGVtb3MvanVuZS1wcm9qZWN0LWEtZGVtbzpyZWZzL3JlbW90ZXMvcHJvamVjdC1hL2RlbW9zL2p1bmUtZGVtbworCWJyYW5jaGVzID0gYnJhbmNoZXMvc2VydmVyLyo6cmVmcy9yZW1vdGVzL3Byb2plY3QtYS9icmFuY2hlcy8qCisJYnJhbmNoZXMgPSBicmFuY2hlcy9kZW1vcy8yMDExLyo6cmVmcy9yZW1vdGVzL3Byb2plY3QtYS8yMDExLWRlbW9zLyoKKwl0YWdzID0gdGFncy9zZXJ2ZXIvKjpyZWZzL3JlbW90ZXMvcHJvamVjdC1hL3RhZ3MvKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NyZWF0aW5nIGEgYnJhbmNoIGluIHN1Y2ggYSBjb25maWd1cmF0aW9uIHJlcXVpcmVzIGRpc2FtYmlndWF0aW5nIHdoaWNoCitsb2NhdGlvbiB0byB1c2UgdXNpbmcgdGhlIC1kIG9yIC0tZGVzdGluYXRpb24gZmxhZzoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskIGdpdCBzdm4gYnJhbmNoIC1kIGJyYW5jaGVzL3NlcnZlciByZWxlYXNlLTItMy0wCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogTm90ZSB0aGF0IGdpdC1zdm4ga2VlcHMgdHJhY2sgb2YgdGhlIGhpZ2hlc3QgcmV2aXNpb24gaW4gd2hpY2ggYSBicmFuY2gKIG9yIHRhZyBoYXMgYXBwZWFyZWQuIElmIHRoZSBzdWJzZXQgb2YgYnJhbmNoZXMgb3IgdGFncyBpcyBjaGFuZ2VkIGFmdGVyCiBmZXRjaGluZywgdGhlbiAuZ2l0L3N2bi8ubWV0YWRhdGEgbXVzdCBiZSBtYW51YWxseSBlZGl0ZWQgdG8gcmVtb3ZlIChvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXRhZy50eHQKaW5kZXggZWEyOGUzOS4uMjI4OTRjYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0CkBAIC0zMyw3ICszMyw3IEBACiBJZiBgLW0gPG1zZz5gIG9yIGAtRiA8ZmlsZT5gIGlzIGdpdmVuIGFuZCBgLWFgLCBgLXNgLCBhbmQgYC11IDxrZXktaWQ+YAogYXJlIGFic2VudCwgYC1hYCBpcyBpbXBsaWVkLgogCi1PdGhlcndpc2UganVzdCBhIHRhZyByZWZlcmVuY2UgZm9yIHRoZSBTSEExIG9iamVjdCBuYW1lIG9mIHRoZSBjb21taXQgb2JqZWN0IGlzCitPdGhlcndpc2UganVzdCBhIHRhZyByZWZlcmVuY2UgZm9yIHRoZSBTSEEtMSBvYmplY3QgbmFtZSBvZiB0aGUgY29tbWl0IG9iamVjdCBpcwogY3JlYXRlZCAoaS5lLiBhIGxpZ2h0d2VpZ2h0IHRhZykuCiAKIEEgR251UEcgc2lnbmVkIHRhZyBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIHdoZW4gYC1zYCBvciBgLXUKQEAgLTI0OCw3ICsyNDgsNyBAQAogSW4gc3VjaCBhIGNhc2UsIHlvdSBkbyBub3Qgd2FudCB0byBhdXRvbWF0aWNhbGx5IGZvbGxvdyB0aGUgb3RoZXIKIHBlcnNvbidzIHRhZ3MuCiAKLU9uZSBpbXBvcnRhbnQgYXNwZWN0IG9mIGdpdCBpcyBpdHMgZGlzdHJpYnV0ZWQgbmF0dXJlLCB3aGljaAorT25lIGltcG9ydGFudCBhc3BlY3Qgb2YgR2l0IGlzIGl0cyBkaXN0cmlidXRlZCBuYXR1cmUsIHdoaWNoCiBsYXJnZWx5IG1lYW5zIHRoZXJlIGlzIG5vIGluaGVyZW50ICJ1cHN0cmVhbSIgb3IKICJkb3duc3RyZWFtIiBpbiB0aGUgc3lzdGVtLiAgT24gdGhlIGZhY2Ugb2YgaXQsIHRoZSBhYm92ZQogZXhhbXBsZSBtaWdodCBzZWVtIHRvIGluZGljYXRlIHRoYXQgdGhlIHRhZyBuYW1lc3BhY2UgaXMgb3duZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXRvb2xzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXRvb2xzLnR4dAppbmRleCBhOTY0MDNjLi43OGEwZDk1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC10b29scy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdG9vbHMudHh0CkBAIC0xLDExICsxLDExIEBACi1BIHNob3J0IGdpdCB0b29scyBzdXJ2ZXkKK0Egc2hvcnQgR2l0IHRvb2xzIHN1cnZleQogPT09PT09PT09PT09PT09PT09PT09PT09CiAKIAogSW50cm9kdWN0aW9uCiAtLS0tLS0tLS0tLS0KIAotQXBhcnQgZnJvbSBnaXQgY29udHJpYi8gYXJlYSB0aGVyZSBhcmUgc29tZSBvdGhlcnMgdGhpcmQtcGFydHkgdG9vbHMKK0FwYXJ0IGZyb20gR2l0IGNvbnRyaWIvIGFyZWEgdGhlcmUgYXJlIHNvbWUgb3RoZXJzIHRoaXJkLXBhcnR5IHRvb2xzCiB5b3UgbWF5IHdhbnQgdG8gbG9vay4KIAogVGhpcyBkb2N1bWVudCBwcmVzZW50cyBhIGJyaWVmIHN1bW1hcnkgb2YgZWFjaCB0b29sIGFuZCB0aGUgY29ycmVzcG9uZGluZwpAQCAtMTcsMjYgKzE3LDI2IEBACiAKICAgIC0gKkNvZ2l0byogKGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvc2NtL2NvZ2l0by8pCiAKLSAgIENvZ2l0byBpcyBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gbGF5ZXJlZCBvbiB0b3Agb2YgdGhlIGdpdCB0cmVlIGhpc3RvcnkKKyAgIENvZ2l0byBpcyBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gbGF5ZXJlZCBvbiB0b3Agb2YgdGhlIEdpdCB0cmVlIGhpc3RvcnkKICAgIHN0b3JhZ2Ugc3lzdGVtLiBJdCBhaW1zIGF0IHNlYW1sZXNzIHVzZXIgaW50ZXJmYWNlIGFuZCBlYXNlIG9mIHVzZSwKLSAgIHByb3ZpZGluZyBnZW5lcmFsbHkgc21vb3RoZXIgdXNlciBleHBlcmllbmNlIHRoYW4gdGhlICJyYXciIENvcmUgR0lUCisgICBwcm92aWRpbmcgZ2VuZXJhbGx5IHNtb290aGVyIHVzZXIgZXhwZXJpZW5jZSB0aGFuIHRoZSAicmF3IiBDb3JlIEdpdAogICAgaXRzZWxmIGFuZCBpbmRlZWQgbWFueSBvdGhlciB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtcy4KIAogICAgQ29naXRvIGlzIG5vIGxvbmdlciBtYWludGFpbmVkIGFzIG1vc3Qgb2YgaXRzIGZ1bmN0aW9uYWxpdHkKLSAgIGlzIG5vdyBpbiBjb3JlIEdJVC4KKyAgIGlzIG5vdyBpbiBjb3JlIEdpdC4KIAogCiAgICAtICpwZyogKGh0dHA6Ly93d3cuc3BlYXJjZS5vcmcvY2F0ZWdvcnkvcHJvamVjdHMvc2NtL3BnLykKIAotICAgcGcgaXMgYSBzaGVsbCBzY3JpcHQgd3JhcHBlciBhcm91bmQgR0lUIHRvIGhlbHAgdGhlIHVzZXIgbWFuYWdlIGEgc2V0IG9mCi0gICBwYXRjaGVzIHRvIGZpbGVzLiBwZyBpcyBzb21ld2hhdCBsaWtlIHF1aWx0IG9yIFN0R0lULCBidXQgaXQgZG9lcyBoYXZlIGEKKyAgIHBnIGlzIGEgc2hlbGwgc2NyaXB0IHdyYXBwZXIgYXJvdW5kIEdpdCB0byBoZWxwIHRoZSB1c2VyIG1hbmFnZSBhIHNldCBvZgorICAgcGF0Y2hlcyB0byBmaWxlcy4gcGcgaXMgc29tZXdoYXQgbGlrZSBxdWlsdCBvciBTdEdpdCwgYnV0IGl0IGRvZXMgaGF2ZSBhCiAgICBzbGlnaHRseSBkaWZmZXJlbnQgZmVhdHVyZSBzZXQuCiAKIAogICAgLSAqU3RHaXQqIChodHRwOi8vd3d3LnByb2NvZGUub3JnL3N0Z2l0LykKIAotICAgU3RhY2tlZCBHSVQgcHJvdmlkZXMgYSBxdWlsdC1saWtlIHBhdGNoIG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0eSBpbiB0aGUKLSAgIEdJVCBlbnZpcm9ubWVudC4gWW91IGNhbiBlYXNpbHkgbWFuYWdlIHlvdXIgcGF0Y2hlcyBpbiB0aGUgc2NvcGUgb2YgR0lUCisgICBTdGFja2VkIEdpdCBwcm92aWRlcyBhIHF1aWx0LWxpa2UgcGF0Y2ggbWFuYWdlbWVudCBmdW5jdGlvbmFsaXR5IGluIHRoZQorICAgR2l0IGVudmlyb25tZW50LiBZb3UgY2FuIGVhc2lseSBtYW5hZ2UgeW91ciBwYXRjaGVzIGluIHRoZSBzY29wZSBvZiBHaXQKICAgIHVudGlsIHRoZXkgZ2V0IG1lcmdlZCB1cHN0cmVhbS4KIAogCkBAIC00NSwzMyArNDUsMzMgQEAKIAogICAgLSAqZ2l0ayogKHNoaXBwZWQgd2l0aCBnaXQtY29yZSkKIAotICAgZ2l0ayBpcyBhIHNpbXBsZSBUayBHVUkgZm9yIGJyb3dzaW5nIGhpc3Rvcnkgb2YgR0lUIHJlcG9zaXRvcmllcyBlYXNpbHkuCisgICBnaXRrIGlzIGEgc2ltcGxlIFRrIEdVSSBmb3IgYnJvd3NpbmcgaGlzdG9yeSBvZiBHaXQgcmVwb3NpdG9yaWVzIGVhc2lseS4KIAogCiAgICAtICpnaXR2aWV3KiAgKGNvbnRyaWIvKQogCi0gICBnaXR2aWV3IGlzIGEgR1RLIGJhc2VkIHJlcG9zaXRvcnkgYnJvd3NlciBmb3IgZ2l0CisgICBnaXR2aWV3IGlzIGEgR1RLIGJhc2VkIHJlcG9zaXRvcnkgYnJvd3NlciBmb3IgR2l0CiAKIAogICAgLSAqZ2l0d2ViKiAoc2hpcHBlZCB3aXRoIGdpdC1jb3JlKQogCi0gICBHSVR3ZWIgcHJvdmlkZXMgZnVsbC1mbGVkZ2VkIHdlYiBpbnRlcmZhY2UgZm9yIEdJVCByZXBvc2l0b3JpZXMuCisgICBHaXR3ZWIgcHJvdmlkZXMgZnVsbC1mbGVkZ2VkIHdlYiBpbnRlcmZhY2UgZm9yIEdpdCByZXBvc2l0b3JpZXMuCiAKIAogICAgLSAqcWdpdCogKGh0dHA6Ly9kaWdpbGFuZGVyLmxpYmVyby5pdC9tY29zdGFsYmEvKQogCi0gICBRR2l0IGlzIGEgZ2l0L1N0R0lUIEdVSSB2aWV3ZXIgYnVpbHQgb24gUXQvQysrLiBRR2l0IGNvdWxkIGJlIHVzZWQKKyAgIFFHaXQgaXMgYSBnaXQvU3RHaXQgR1VJIHZpZXdlciBidWlsdCBvbiBRdC9DKysuIFFHaXQgY291bGQgYmUgdXNlZAogICAgdG8gYnJvd3NlIGhpc3RvcnkgYW5kIGRpcmVjdG9yeSB0cmVlLCB2aWV3IGFubm90YXRlZCBmaWxlcywgY29tbWl0CiAgICBjaGFuZ2VzIGNoZXJyeSBwaWNraW5nIHNpbmdsZSBmaWxlcyBvciBhcHBseWluZyBwYXRjaGVzLgotICAgQ3VycmVudGx5IGl0IGlzIHRoZSBmYXN0ZXN0IGFuZCBtb3N0IGZlYXR1cmUgcmljaCBhbW9uZyB0aGUgZ2l0CisgICBDdXJyZW50bHkgaXQgaXMgdGhlIGZhc3Rlc3QgYW5kIG1vc3QgZmVhdHVyZSByaWNoIGFtb25nIHRoZSBHaXQKICAgIHZpZXdlcnMgYW5kIGNvbW1pdCB0b29scy4KIAogICAgLSAqdGlnKiAoaHR0cDovL2pvbmFzLm5pdHJvLmRrL3RpZy8pCiAKLSAgIHRpZyBieSBKb25hcyBGb25zZWNhIGlzIGEgc2ltcGxlIGdpdCByZXBvc2l0b3J5IGJyb3dzZXIKKyAgIHRpZyBieSBKb25hcyBGb25zZWNhIGlzIGEgc2ltcGxlIEdpdCByZXBvc2l0b3J5IGJyb3dzZXIKICAgIHdyaXR0ZW4gdXNpbmcgbmN1cnNlcy4gQmFzaWNhbGx5LCBpdCBqdXN0IGFjdHMgYXMgYSBmcm9udC1lbmQKICAgIGZvciBnaXQtbG9nIGFuZCBnaXQtc2hvdy9naXQtZGlmZi4gQWRkaXRpb25hbGx5LCB5b3UgY2FuIGFsc28KLSAgIHVzZSBpdCBhcyBhIHBhZ2VyIGZvciBnaXQgY29tbWFuZHMuCisgICB1c2UgaXQgYXMgYSBwYWdlciBmb3IgR2l0IGNvbW1hbmRzLgogCiAKIEZvcmVpZ24gU0NNIGludGVyZmFjZQpAQCAtODAsMjAgKzgwLDIwIEBACiAgICAtICpnaXQtc3ZuKiAoc2hpcHBlZCB3aXRoIGdpdC1jb3JlKQogCiAgICBnaXQtc3ZuIGlzIGEgc2ltcGxlIGNvbmR1aXQgZm9yIGNoYW5nZXNldHMgYmV0d2VlbiBhIHNpbmdsZSBTdWJ2ZXJzaW9uCi0gICBicmFuY2ggYW5kIGdpdC4KKyAgIGJyYW5jaCBhbmQgR2l0LgogCiAKICAgIC0gKnF1aWx0MmdpdCAvIGdpdDJxdWlsdCogKGh0dHA6Ly9ob21lLXRqLm9yZy93aWtpL2luZGV4LnBocC9NaXNjKQogCiAgICBUaGVzZSB1dGlsaXRpZXMgY29udmVydCBwYXRjaCBzZXJpZXMgaW4gYSBxdWlsdCByZXBvc2l0b3J5IGFuZCBjb21taXQKLSAgIHNlcmllcyBpbiBnaXQgYmFjayBhbmQgZm9ydGguCisgICBzZXJpZXMgaW4gR2l0IGJhY2sgYW5kIGZvcnRoLgogCiAKICAgIC0gKmhnLXRvLWdpdCogKGNvbnRyaWIvKQogCi0gICBoZy10by1naXQgY29udmVydHMgYSBNZXJjdXJpYWwgcmVwb3NpdG9yeSBpbnRvIGEgZ2l0IG9uZSwgYW5kCisgICBoZy10by1naXQgY29udmVydHMgYSBNZXJjdXJpYWwgcmVwb3NpdG9yeSBpbnRvIGEgR2l0IG9uZSwgYW5kCiAgICBwcmVzZXJ2ZXMgdGhlIGZ1bGwgYnJhbmNoIGhpc3RvcnkgaW4gdGhlIHByb2Nlc3MuIGhnLXRvLWdpdCBjYW4KLSAgIGFsc28gYmUgdXNlZCBpbiBhbiBpbmNyZW1lbnRhbCB3YXkgdG8ga2VlcCB0aGUgZ2l0IHJlcG9zaXRvcnkKKyAgIGFsc28gYmUgdXNlZCBpbiBhbiBpbmNyZW1lbnRhbCB3YXkgdG8ga2VlcCB0aGUgR2l0IHJlcG9zaXRvcnkKICAgIGluIHN5bmMgd2l0aCB0aGUgbWFzdGVyIE1lcmN1cmlhbCByZXBvc2l0b3J5LgogCiAKQEAgLTEwMiwxNCArMTAyLDE0IEBACiAKICAgIC0gKihoKWdjdCogKGh0dHA6Ly93d3cuY3lkLmxpdS5zZS91c2Vycy9+ZnJla3UwNDUvZ2N0LykKIAotICAgQ29tbWl0IFRvb2wgb3IgKGgpZ2N0IGlzIGEgR1VJIGVuYWJsZWQgY29tbWl0IHRvb2wgZm9yIGdpdCBhbmQKKyAgIENvbW1pdCBUb29sIG9yIChoKWdjdCBpcyBhIEdVSSBlbmFibGVkIGNvbW1pdCB0b29sIGZvciBHaXQgYW5kCiAgICBNZXJjdXJpYWwgKGhnKS4gSXQgYWxsb3dzIHRoZSB1c2VyIHRvIHZpZXcgZGlmZnMsIHNlbGVjdCB3aGljaCBmaWxlcwogICAgdG8gY29tbWl0dGVkIChvciBpZ25vcmVkIC8gcmV2ZXJ0ZWQpIHdyaXRlIGNvbW1pdCBtZXNzYWdlcyBhbmQKICAgIHBlcmZvcm0gdGhlIGNvbW1pdCBpdHNlbGYuCiAKICAgIC0gKmdpdC5lbCogKGNvbnRyaWIvKQogCi0gICBUaGlzIGlzIGFuIEVtYWNzIGludGVyZmFjZSBmb3IgZ2l0LiBUaGUgdXNlciBpbnRlcmZhY2UgaXMgbW9kZWxlZCBvbgorICAgVGhpcyBpcyBhbiBFbWFjcyBpbnRlcmZhY2UgZm9yIEdpdC4gVGhlIHVzZXIgaW50ZXJmYWNlIGlzIG1vZGVsbGVkIG9uCiAgICBwY2wtY3ZzLiBJdCBoYXMgYmVlbiBkZXZlbG9wZWQgb24gRW1hY3MgMjEgYW5kIHdpbGwgcHJvYmFibHkgbmVlZCBzb21lCiAgICB0d2Vha2luZyB0byB3b3JrIG9uIFhFbWFjcy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtdXBkYXRlLWluZGV4LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1pbmRleC50eHQKaW5kZXggZGQzNmQxMy4uZTBhODcwMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtdXBkYXRlLWluZGV4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC11cGRhdGUtaW5kZXgudHh0CkBAIC0xNCw4ICsxNCw4IEBACiAJICAgICBbLS1yZWZyZXNoXSBbLXFdIFstLXVubWVyZ2VkXSBbLS1pZ25vcmUtbWlzc2luZ10KIAkgICAgIFsoLS1jYWNoZWluZm8gPG1vZGU+IDxvYmplY3Q+IDxmaWxlPikuLi5dCiAJICAgICBbLS1jaG1vZD0oK3wtKXhdCi0JICAgICBbLS1hc3N1bWUtdW5jaGFuZ2VkIHwgLS1uby1hc3N1bWUtdW5jaGFuZ2VkXQotCSAgICAgWy0tc2tpcC13b3JrdHJlZSB8IC0tbm8tc2tpcC13b3JrdHJlZV0KKwkgICAgIFstLVtuby1dYXNzdW1lLXVuY2hhbmdlZF0KKwkgICAgIFstLVtuby1dc2tpcC13b3JrdHJlZV0KIAkgICAgIFstLWlnbm9yZS1zdWJtb2R1bGVzXQogCSAgICAgWy0tcmVhbGx5LXJlZnJlc2hdIFstLXVucmVzb2x2ZV0gWy0tYWdhaW4gfCAtZ10KIAkgICAgIFstLWluZm8tb25seV0gWy0taW5kZXgtaW5mb10KQEAgLTc3LDE1ICs3NywxNCBAQAogLS1jaG1vZD0oK3wtKXg6OgogICAgICAgICBTZXQgdGhlIGV4ZWN1dGUgcGVybWlzc2lvbnMgb24gdGhlIHVwZGF0ZWQgZmlsZXMuCiAKLS0tYXNzdW1lLXVuY2hhbmdlZDo6Ci0tLW5vLWFzc3VtZS11bmNoYW5nZWQ6OgorLS1bbm8tXWFzc3VtZS11bmNoYW5nZWQ6OgogCVdoZW4gdGhlc2UgZmxhZ3MgYXJlIHNwZWNpZmllZCwgdGhlIG9iamVjdCBuYW1lcyByZWNvcmRlZAogCWZvciB0aGUgcGF0aHMgYXJlIG5vdCB1cGRhdGVkLiAgSW5zdGVhZCwgdGhlc2Ugb3B0aW9ucwogCXNldCBhbmQgdW5zZXQgdGhlICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQgZm9yIHRoZQotCXBhdGhzLiAgV2hlbiB0aGUgImFzc3VtZSB1bmNoYW5nZWQiIGJpdCBpcyBvbiwgZ2l0IHN0b3BzCisJcGF0aHMuICBXaGVuIHRoZSAiYXNzdW1lIHVuY2hhbmdlZCIgYml0IGlzIG9uLCBHaXQgc3RvcHMKIAljaGVja2luZyB0aGUgd29ya2luZyB0cmVlIGZpbGVzIGZvciBwb3NzaWJsZQogCW1vZGlmaWNhdGlvbnMsIHNvIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHVuc2V0IHRoZSBiaXQgdG8KLQl0ZWxsIGdpdCB3aGVuIHlvdSBjaGFuZ2UgdGhlIHdvcmtpbmcgdHJlZSBmaWxlLiBUaGlzIGlzCisJdGVsbCBHaXQgd2hlbiB5b3UgY2hhbmdlIHRoZSB3b3JraW5nIHRyZWUgZmlsZS4gVGhpcyBpcwogCXNvbWV0aW1lcyBoZWxwZnVsIHdoZW4gd29ya2luZyB3aXRoIGEgYmlnIHByb2plY3Qgb24gYQogCWZpbGVzeXN0ZW0gdGhhdCBoYXMgdmVyeSBzbG93IGxzdGF0KDIpIHN5c3RlbSBjYWxsCiAJKGUuZy4gY2lmcykuCkBAIC0xMDIsOCArMTAxLDcgQEAKIAlMaWtlICctLXJlZnJlc2gnLCBidXQgY2hlY2tzIHN0YXQgaW5mb3JtYXRpb24gdW5jb25kaXRpb25hbGx5LAogCXdpdGhvdXQgcmVnYXJkIHRvIHRoZSAiYXNzdW1lIHVuY2hhbmdlZCIgc2V0dGluZy4KIAotLS1za2lwLXdvcmt0cmVlOjoKLS0tbm8tc2tpcC13b3JrdHJlZTo6CistLVtuby1dc2tpcC13b3JrdHJlZTo6CiAJV2hlbiBvbmUgb2YgdGhlc2UgZmxhZ3MgaXMgc3BlY2lmaWVkLCB0aGUgb2JqZWN0IG5hbWUgcmVjb3JkZWQKIAlmb3IgdGhlIHBhdGhzIGFyZSBub3QgdXBkYXRlZC4gSW5zdGVhZCwgdGhlc2Ugb3B0aW9ucwogCXNldCBhbmQgdW5zZXQgdGhlICJza2lwLXdvcmt0cmVlIiBiaXQgZm9yIHRoZSBwYXRocy4gU2VlCkBAIC0yNDcsNyArMjQ1LDcgQEAKIC0tLS0tLS0tLS0tLQogCiBUaGUgZmlyc3QgbGluZSBvZiB0aGUgaW5wdXQgZmVlZHMgMCBhcyB0aGUgbW9kZSB0byByZW1vdmUgdGhlCi1wYXRoOyB0aGUgU0hBMSBkb2VzIG5vdCBtYXR0ZXIgYXMgbG9uZyBhcyBpdCBpcyB3ZWxsIGZvcm1hdHRlZC4KK3BhdGg7IHRoZSBTSEEtMSBkb2VzIG5vdCBtYXR0ZXIgYXMgbG9uZyBhcyBpdCBpcyB3ZWxsIGZvcm1hdHRlZC4KIFRoZW4gdGhlIHNlY29uZCBhbmQgdGhpcmQgbGluZSBmZWVkcyBzdGFnZSAxIGFuZCBzdGFnZSAyIGVudHJpZXMKIGZvciB0aGF0IHBhdGguICBBZnRlciB0aGUgYWJvdmUsIHdlIHdvdWxkIGVuZCB1cCB3aXRoIHRoaXM6CiAKQEAgLTI2MSwxOCArMjU5LDE4IEBACiBVc2luZyBgYGFzc3VtZSB1bmNoYW5nZWQnJyBiaXQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NYW55IG9wZXJhdGlvbnMgaW4gZ2l0IGRlcGVuZCBvbiB5b3VyIGZpbGVzeXN0ZW0gdG8gaGF2ZSBhbgorTWFueSBvcGVyYXRpb25zIGluIEdpdCBkZXBlbmQgb24geW91ciBmaWxlc3lzdGVtIHRvIGhhdmUgYW4KIGVmZmljaWVudCBgbHN0YXQoMilgIGltcGxlbWVudGF0aW9uLCBzbyB0aGF0IGBzdF9tdGltZWAKIGluZm9ybWF0aW9uIGZvciB3b3JraW5nIHRyZWUgZmlsZXMgY2FuIGJlIGNoZWFwbHkgY2hlY2tlZCB0byBzZWUKIGlmIHRoZSBmaWxlIGNvbnRlbnRzIGhhdmUgY2hhbmdlZCBmcm9tIHRoZSB2ZXJzaW9uIHJlY29yZGVkIGluCiB0aGUgaW5kZXggZmlsZS4gIFVuZm9ydHVuYXRlbHksIHNvbWUgZmlsZXN5c3RlbXMgaGF2ZQogaW5lZmZpY2llbnQgYGxzdGF0KDIpYC4gIElmIHlvdXIgZmlsZXN5c3RlbSBpcyBvbmUgb2YgdGhlbSwgeW91CiBjYW4gc2V0ICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQgdG8gcGF0aHMgeW91IGhhdmUgbm90IGNoYW5nZWQgdG8KLWNhdXNlIGdpdCBub3QgdG8gZG8gdGhpcyBjaGVjay4gIE5vdGUgdGhhdCBzZXR0aW5nIHRoaXMgYml0IG9uIGEKLXBhdGggZG9lcyBub3QgbWVhbiBnaXQgd2lsbCBjaGVjayB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgdG8KLXNlZSBpZiBpdCBoYXMgY2hhbmdlZCAtLSBpdCBtYWtlcyBnaXQgdG8gb21pdCBhbnkgY2hlY2tpbmcgYW5kCitjYXVzZSBHaXQgbm90IHRvIGRvIHRoaXMgY2hlY2suICBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIGJpdCBvbiBhCitwYXRoIGRvZXMgbm90IG1lYW4gR2l0IHdpbGwgY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIHRvCitzZWUgaWYgaXQgaGFzIGNoYW5nZWQgLS0gaXQgbWFrZXMgR2l0IHRvIG9taXQgYW55IGNoZWNraW5nIGFuZAogYXNzdW1lIGl0IGhhcyAqbm90KiBjaGFuZ2VkLiAgV2hlbiB5b3UgbWFrZSBjaGFuZ2VzIHRvIHdvcmtpbmcKLXRyZWUgZmlsZXMsIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgdGVsbCBnaXQgYWJvdXQgaXQgYnkgZHJvcHBpbmcKK3RyZWUgZmlsZXMsIHlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgdGVsbCBHaXQgYWJvdXQgaXQgYnkgZHJvcHBpbmcKICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQsIGVpdGhlciBiZWZvcmUgb3IgYWZ0ZXIgeW91IG1vZGlmeSB0aGVtLgogCiBJbiBvcmRlciB0byBzZXQgImFzc3VtZSB1bmNoYW5nZWQiIGJpdCwgdXNlIGAtLWFzc3VtZS11bmNoYW5nZWRgCkBAIC0yODIsNyArMjgwLDcgQEAKIAogVGhlIGNvbW1hbmQgbG9va3MgYXQgYGNvcmUuaWdub3Jlc3RhdGAgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gIFdoZW4KIHRoaXMgaXMgdHJ1ZSwgcGF0aHMgdXBkYXRlZCB3aXRoIGBnaXQgdXBkYXRlLWluZGV4IHBhdGhzLi4uYCBhbmQKLXBhdGhzIHVwZGF0ZWQgd2l0aCBvdGhlciBnaXQgY29tbWFuZHMgdGhhdCB1cGRhdGUgYm90aCBpbmRleCBhbmQKK3BhdGhzIHVwZGF0ZWQgd2l0aCBvdGhlciBHaXQgY29tbWFuZHMgdGhhdCB1cGRhdGUgYm90aCBpbmRleCBhbmQKIHdvcmtpbmcgdHJlZSAoZS5nLiAnZ2l0IGFwcGx5IC0taW5kZXgnLCAnZ2l0IGNoZWNrb3V0LWluZGV4IC11JywKIGFuZCAnZ2l0IHJlYWQtdHJlZSAtdScpIGFyZSBhdXRvbWF0aWNhbGx5IG1hcmtlZCBhcyAiYXNzdW1lCiB1bmNoYW5nZWQiLiAgTm90ZSB0aGF0ICJhc3N1bWUgdW5jaGFuZ2VkIiBiaXQgaXMgKm5vdCogc2V0IGlmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC11cGRhdGUtcmVmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1yZWYudHh0CmluZGV4IGQzNzdhMzUuLjBkZjEzZmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1yZWYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1yZWYudHh0CkBAIC03Myw3ICs3Myw3IEBACiBXaGVyZSAib2xkc2hhMSIgaXMgdGhlIDQwIGNoYXJhY3RlciBoZXhhZGVjaW1hbCB2YWx1ZSBwcmV2aW91c2x5CiBzdG9yZWQgaW4gPHJlZj4sICJuZXdzaGExIiBpcyB0aGUgNDAgY2hhcmFjdGVyIGhleGFkZWNpbWFsIHZhbHVlIG9mCiA8bmV3dmFsdWU+IGFuZCAiY29tbWl0dGVyIiBpcyB0aGUgY29tbWl0dGVyJ3MgbmFtZSwgZW1haWwgYWRkcmVzcwotYW5kIGRhdGUgaW4gdGhlIHN0YW5kYXJkIEdJVCBjb21taXR0ZXIgaWRlbnQgZm9ybWF0LgorYW5kIGRhdGUgaW4gdGhlIHN0YW5kYXJkIEdpdCBjb21taXR0ZXIgaWRlbnQgZm9ybWF0LgogCiBPcHRpb25hbGx5IHdpdGggLW06CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1hcmNoaXZlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1hcmNoaXZlLnR4dAppbmRleCA0ZDUyZDM4Li5kMDliYmI1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC11cGxvYWQtYXJjaGl2ZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdXBsb2FkLWFyY2hpdmUudHh0CkBAIC0xNCw3ICsxNCw3IEBACiBERVNDUklQVElPTgogLS0tLS0tLS0tLS0KIEludm9rZWQgYnkgJ2dpdCBhcmNoaXZlIC0tcmVtb3RlJyBhbmQgc2VuZHMgYSBnZW5lcmF0ZWQgYXJjaGl2ZSB0byB0aGUKLW90aGVyIGVuZCBvdmVyIHRoZSBnaXQgcHJvdG9jb2wuCitvdGhlciBlbmQgb3ZlciB0aGUgR2l0IHByb3RvY29sLgogCiBUaGlzIGNvbW1hbmQgaXMgdXN1YWxseSBub3QgaW52b2tlZCBkaXJlY3RseSBieSB0aGUgZW5kIHVzZXIuICBUaGUgVUkKIGZvciB0aGUgcHJvdG9jb2wgaXMgb24gdGhlICdnaXQgYXJjaGl2ZScgc2lkZSwgYW5kIHRoZSBwcm9ncmFtIHBhaXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXVwbG9hZC1wYWNrLnR4dAppbmRleCA3MWYxNjA4Li4wYWJjODA2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC11cGxvYWQtcGFjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdXBsb2FkLXBhY2sudHh0CkBAIC0yNiw3ICsyNiw3IEBACiAtLS0tLS0tCiAKIC0tc3RyaWN0OjoKLQlEbyBub3QgdHJ5IDxkaXJlY3Rvcnk+Ly5naXQvIGlmIDxkaXJlY3Rvcnk+IGlzIG5vIGdpdCBkaXJlY3RvcnkuCisJRG8gbm90IHRyeSA8ZGlyZWN0b3J5Pi8uZ2l0LyBpZiA8ZGlyZWN0b3J5PiBpcyBubyBHaXQgZGlyZWN0b3J5LgogCiAtLXRpbWVvdXQ9PG4+OjoKIAlJbnRlcnJ1cHQgdHJhbnNmZXIgYWZ0ZXIgPG4+IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXZhci50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC12YXIudHh0CmluZGV4IDY3ZWRmNTguLjQ0ZmY5NTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXZhci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdmFyLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0LXZhciAtIFNob3cgYSBnaXQgbG9naWNhbCB2YXJpYWJsZQorZ2l0LXZhciAtIFNob3cgYSBHaXQgbG9naWNhbCB2YXJpYWJsZQogCiAKIFNZTk9QU0lTCkBAIC0xMywxMyArMTMsMTMgQEAKIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCi1QcmludHMgYSBnaXQgbG9naWNhbCB2YXJpYWJsZS4KK1ByaW50cyBhIEdpdCBsb2dpY2FsIHZhcmlhYmxlLgogCiBPUFRJT05TCiAtLS0tLS0tCiAtbDo6CiAJQ2F1c2UgdGhlIGxvZ2ljYWwgdmFyaWFibGVzIHRvIGJlIGxpc3RlZC4gSW4gYWRkaXRpb24sIGFsbCB0aGUKLQl2YXJpYWJsZXMgb2YgdGhlIGdpdCBjb25maWd1cmF0aW9uIGZpbGUgLmdpdC9jb25maWcgYXJlIGxpc3RlZAorCXZhcmlhYmxlcyBvZiB0aGUgR2l0IGNvbmZpZ3VyYXRpb24gZmlsZSAuZ2l0L2NvbmZpZyBhcmUgbGlzdGVkCiAJYXMgd2VsbC4gKEhvd2V2ZXIsIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBsaXN0aW5nIGZ1bmN0aW9uYWxpdHkKIAlpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBnaXQgY29uZmlnIC1sYC4pCiAKQEAgLTM1LDEwICszNSwxMCBAQAogICAgIFRoZSBhdXRob3Igb2YgYSBwaWVjZSBvZiBjb2RlLgogCiBHSVRfQ09NTUlUVEVSX0lERU5UOjoKLSAgICBUaGUgcGVyc29uIHdobyBwdXQgYSBwaWVjZSBvZiBjb2RlIGludG8gZ2l0LgorICAgIFRoZSBwZXJzb24gd2hvIHB1dCBhIHBpZWNlIG9mIGNvZGUgaW50byBHaXQuCiAKIEdJVF9FRElUT1I6OgotICAgIFRleHQgZWRpdG9yIGZvciB1c2UgYnkgZ2l0IGNvbW1hbmRzLiAgVGhlIHZhbHVlIGlzIG1lYW50IHRvIGJlCisgICAgVGV4dCBlZGl0b3IgZm9yIHVzZSBieSBHaXQgY29tbWFuZHMuICBUaGUgdmFsdWUgaXMgbWVhbnQgdG8gYmUKICAgICBpbnRlcnByZXRlZCBieSB0aGUgc2hlbGwgd2hlbiBpdCBpcyB1c2VkLiAgRXhhbXBsZXM6IGB+L2Jpbi92aWAsCiAgICAgYCRTT01FX0VOVklST05NRU5UX1ZBUklBQkxFYCwgYCJDOlxQcm9ncmFtIEZpbGVzXFZpbVxndmltLmV4ZSIKICAgICAtLW5vZm9ya2AuICBUaGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBpcyB0aGUgYCRHSVRfRURJVE9SYApAQCAtNTAsNyArNTAsNyBAQAogZW5kaWY6OmdpdC1kZWZhdWx0LWVkaXRvcltdCiAKIEdJVF9QQUdFUjo6Ci0gICAgVGV4dCB2aWV3ZXIgZm9yIHVzZSBieSBnaXQgY29tbWFuZHMgKGUuZy4sICdsZXNzJykuICBUaGUgdmFsdWUKKyAgICBUZXh0IHZpZXdlciBmb3IgdXNlIGJ5IEdpdCBjb21tYW5kcyAoZS5nLiwgJ2xlc3MnKS4gIFRoZSB2YWx1ZQogICAgIGlzIG1lYW50IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBzaGVsbC4gIFRoZSBvcmRlciBvZiBwcmVmZXJlbmNlCiAgICAgaXMgdGhlIGAkR0lUX1BBR0VSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlbiBgY29yZS5wYWdlcmAKICAgICBjb25maWd1cmF0aW9uLCB0aGVuIGAkUEFHRVJgLCBhbmQgdGhlbiB0aGUgZGVmYXVsdCBjaG9zZW4gYXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS1wYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS1wYWNrLnR4dAppbmRleCBjZDIzMDc2Li41MjZiYTdiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC12ZXJpZnktcGFjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdmVyaWZ5LXBhY2sudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtdmVyaWZ5LXBhY2sgLSBWYWxpZGF0ZSBwYWNrZWQgZ2l0IGFyY2hpdmUgZmlsZXMKK2dpdC12ZXJpZnktcGFjayAtIFZhbGlkYXRlIHBhY2tlZCBHaXQgYXJjaGl2ZSBmaWxlcwogCiAKIFNZTk9QU0lTCkBAIC0xNCw3ICsxNCw3IEBACiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotUmVhZHMgZ2l2ZW4gaWR4IGZpbGUgZm9yIHBhY2tlZCBnaXQgYXJjaGl2ZSBjcmVhdGVkIHdpdGggdGhlCitSZWFkcyBnaXZlbiBpZHggZmlsZSBmb3IgcGFja2VkIEdpdCBhcmNoaXZlIGNyZWF0ZWQgd2l0aCB0aGUKICdnaXQgcGFjay1vYmplY3RzJyBjb21tYW5kIGFuZCB2ZXJpZmllcyBpZHggZmlsZSBhbmQgdGhlCiBjb3JyZXNwb25kaW5nIHBhY2sgZmlsZS4KIApAQCAtNDAsMTEgKzQwLDExIEBACiAtLS0tLS0tLS0tLS0tCiBXaGVuIHNwZWNpZnlpbmcgdGhlIC12IG9wdGlvbiB0aGUgZm9ybWF0IHVzZWQgaXM6CiAKLQlTSEExIHR5cGUgc2l6ZSBzaXplLWluLXBhY2stZmlsZSBvZmZzZXQtaW4tcGFja2ZpbGUKKwlTSEEtMSB0eXBlIHNpemUgc2l6ZS1pbi1wYWNrLWZpbGUgb2Zmc2V0LWluLXBhY2tmaWxlCiAKIGZvciBvYmplY3RzIHRoYXQgYXJlIG5vdCBkZWx0aWZpZWQgaW4gdGhlIHBhY2ssIGFuZAogCi0JU0hBMSB0eXBlIHNpemUgc2l6ZS1pbi1wYWNrZmlsZSBvZmZzZXQtaW4tcGFja2ZpbGUgZGVwdGggYmFzZS1TSEExCisJU0hBLTEgdHlwZSBzaXplIHNpemUtaW4tcGFja2ZpbGUgb2Zmc2V0LWluLXBhY2tmaWxlIGRlcHRoIGJhc2UtU0hBLTEKIAogZm9yIG9iamVjdHMgdGhhdCBhcmUgZGVsdGlmaWVkLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC12ZXJpZnktdGFnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS10YWcudHh0CmluZGV4IDVmZjc2ZTguLmY4OGJhOTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS10YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXZlcmlmeS10YWcudHh0CkBAIC0yMSw3ICsyMSw3IEBACiAJUHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWcgb2JqZWN0IGJlZm9yZSB2YWxpZGF0aW5nIGl0LgogCiA8dGFnPi4uLjo6Ci0JU0hBMSBpZGVudGlmaWVycyBvZiBnaXQgdGFnIG9iamVjdHMuCisJU0hBLTEgaWRlbnRpZmllcnMgb2YgR2l0IHRhZyBvYmplY3RzLgogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtd2ViLS1icm93c2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtd2ViLS1icm93c2UudHh0CmluZGV4IGMyYmM4N2IuLjVhZWM0ZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXdlYi0tYnJvd3NlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC13ZWItLWJyb3dzZS50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdC13ZWItLWJyb3dzZSAtIGdpdCBoZWxwZXIgc2NyaXB0IHRvIGxhdW5jaCBhIHdlYiBicm93c2VyCitnaXQtd2ViLS1icm93c2UgLSBHaXQgaGVscGVyIHNjcmlwdCB0byBsYXVuY2ggYSB3ZWIgYnJvd3NlcgogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTM0LDYgKzM0LDcgQEAKICogZGlsbG8KICogb3BlbiAodGhpcyBpcyB0aGUgZGVmYXVsdCB1bmRlciBNYWMgT1MgWCBHVUkpCiAqIHN0YXJ0ICh0aGlzIGlzIHRoZSBkZWZhdWx0IHVuZGVyIE1pbkdXKQorKiBjeWdzdGFydCAodGhpcyBpcyB0aGUgZGVmYXVsdCB1bmRlciBDeWd3aW4pCiAKIEN1c3RvbSBjb21tYW5kcyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQuCiAKQEAgLTUwLDcgKzUxLDcgQEAKIAogLWMgPGNvbmYudmFyPjo6CiAtLWNvbmZpZz08Y29uZi52YXI+OjoKLQlDT05GLlZBUiBpcyBsb29rZWQgdXAgaW4gdGhlIGdpdCBjb25maWcgZmlsZXMuIElmIGl0J3Mgc2V0LAorCUNPTkYuVkFSIGlzIGxvb2tlZCB1cCBpbiB0aGUgR2l0IGNvbmZpZyBmaWxlcy4gSWYgaXQncyBzZXQsCiAJdGhlbiBpdHMgdmFsdWUgc3BlY2lmaWVzIHRoZSBicm93c2VyIHRoYXQgc2hvdWxkIGJlIHVzZWQuCiAKIENPTkZJR1VSQVRJT04gVkFSSUFCTEVTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC13aGF0Y2hhbmdlZC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC13aGF0Y2hhbmdlZC50eHQKaW5kZXggNmM4ZjUxMC4uYzYwMGI2MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtd2hhdGNoYW5nZWQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXdoYXRjaGFuZ2VkLnR4dApAQCAtMjQsNyArMjQsNyBAQAogT1BUSU9OUwogLS0tLS0tLQogLXA6OgotCVNob3cgdGV4dHVhbCBkaWZmcywgaW5zdGVhZCBvZiB0aGUgZ2l0IGludGVybmFsIGRpZmYKKwlTaG93IHRleHR1YWwgZGlmZnMsIGluc3RlYWQgb2YgdGhlIEdpdCBpbnRlcm5hbCBkaWZmCiAJb3V0cHV0IGZvcm1hdCB0aGF0IGlzIHVzZWZ1bCBvbmx5IHRvIHRlbGwgdGhlIGNoYW5nZWQKIAlwYXRocyBhbmQgdGhlaXIgbmF0dXJlIG9mIGNoYW5nZXMuCiAKQEAgLTM2LDcgKzM2LDcgQEAKIAlleGNsdXNpdmUsIHRvcCBpbmNsdXNpdmUpLgogCiAtcjo6Ci0JU2hvdyBnaXQgaW50ZXJuYWwgZGlmZiBvdXRwdXQsIGJ1dCBmb3IgdGhlIHdob2xlIHRyZWUsCisJU2hvdyBHaXQgaW50ZXJuYWwgZGlmZiBvdXRwdXQsIGJ1dCBmb3IgdGhlIHdob2xlIHRyZWUsCiAJbm90IGp1c3QgdGhlIHRvcCBsZXZlbC4KIAogLW06OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQudHh0CmluZGV4IDkxMjk5MTcuLjg5NDQ1NDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC50eHQKQEAgLTI3LDExICsyNywxMSBAQAogaW4tZGVwdGggaW50cm9kdWN0aW9uLgogCiBBZnRlciB5b3UgbWFzdGVyZWQgdGhlIGJhc2ljIGNvbmNlcHRzLCB5b3UgY2FuIGNvbWUgYmFjayB0byB0aGlzCi1wYWdlIHRvIGxlYXJuIHdoYXQgY29tbWFuZHMgZ2l0IG9mZmVycy4gIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dAotaW5kaXZpZHVhbCBnaXQgY29tbWFuZHMgd2l0aCAiZ2l0IGhlbHAgY29tbWFuZCIuICBsaW5rZ2l0OmdpdGNsaVs3XQorcGFnZSB0byBsZWFybiB3aGF0IGNvbW1hbmRzIEdpdCBvZmZlcnMuICBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQKK2luZGl2aWR1YWwgR2l0IGNvbW1hbmRzIHdpdGggImdpdCBoZWxwIGNvbW1hbmQiLiAgbGlua2dpdDpnaXRjbGlbN10KIG1hbnVhbCBwYWdlIGdpdmVzIHlvdSBhbiBvdmVydmlldyBvZiB0aGUgY29tbWFuZCBsaW5lIGNvbW1hbmQgc3ludGF4LgogCi1Gb3JtYXR0ZWQgYW5kIGh5cGVybGlua2VkIHZlcnNpb24gb2YgdGhlIGxhdGVzdCBnaXQgZG9jdW1lbnRhdGlvbgorRm9ybWF0dGVkIGFuZCBoeXBlcmxpbmtlZCB2ZXJzaW9uIG9mIHRoZSBsYXRlc3QgR2l0IGRvY3VtZW50YXRpb24KIGNhbiBiZSB2aWV3ZWQgYXQgYGh0dHA6Ly9naXQtaHRtbGRvY3MuZ29vZ2xlY29kZS5jb20vZ2l0L2dpdC5odG1sYC4KIAogaWZkZWY6OnN0YWxlbm90ZXNbXQpAQCAtMzksMTAgKzM5LDI0IEBACiA9PT09PT09PT09PT0KIAogWW91IGFyZSByZWFkaW5nIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbGF0ZXN0IChwb3NzaWJseQotdW5yZWxlYXNlZCkgdmVyc2lvbiBvZiBnaXQsIHRoYXQgaXMgYXZhaWxhYmxlIGZyb20gJ21hc3RlcicKK3VucmVsZWFzZWQpIHZlcnNpb24gb2YgR2l0LCB0aGF0IGlzIGF2YWlsYWJsZSBmcm9tICdtYXN0ZXInCiBicmFuY2ggb2YgdGhlIGBnaXQuZ2l0YCByZXBvc2l0b3J5LgogRG9jdW1lbnRhdGlvbiBmb3Igb2xkZXIgcmVsZWFzZXMgYXJlIGF2YWlsYWJsZSBoZXJlOgogCisqIGxpbms6djEuOC4zLjEvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjguMy4xXQorCisqIHJlbGVhc2Ugbm90ZXMgZm9yCisgIGxpbms6UmVsTm90ZXMvMS44LjMuMS50eHRbMS44LjMuMV0sCisgIGxpbms6UmVsTm90ZXMvMS44LjMudHh0WzEuOC4zXS4KKworKiBsaW5rOnYxLjguMi4zL2dpdC5odG1sW2RvY3VtZW50YXRpb24gZm9yIHJlbGVhc2UgMS44LjIuM10KKworKiByZWxlYXNlIG5vdGVzIGZvcgorICBsaW5rOlJlbE5vdGVzLzEuOC4yLjMudHh0WzEuOC4yLjNdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4yLjIudHh0WzEuOC4yLjJdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4yLjEudHh0WzEuOC4yLjFdLAorICBsaW5rOlJlbE5vdGVzLzEuOC4yLnR4dFsxLjguMl0uCisKICogbGluazp2MS44LjEuNi9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuOC4xLjZdCiAKICogcmVsZWFzZSBub3RlcyBmb3IKQEAgLTM2MCwxMiArMzc0LDEyIEBACiBPUFRJT05TCiAtLS0tLS0tCiAtLXZlcnNpb246OgotCVByaW50cyB0aGUgZ2l0IHN1aXRlIHZlcnNpb24gdGhhdCB0aGUgJ2dpdCcgcHJvZ3JhbSBjYW1lIGZyb20uCisJUHJpbnRzIHRoZSBHaXQgc3VpdGUgdmVyc2lvbiB0aGF0IHRoZSAnZ2l0JyBwcm9ncmFtIGNhbWUgZnJvbS4KIAogLS1oZWxwOjoKIAlQcmludHMgdGhlIHN5bm9wc2lzIGFuZCBhIGxpc3Qgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZAogCWNvbW1hbmRzLiBJZiB0aGUgb3B0aW9uICctLWFsbCcgb3IgJy1hJyBpcyBnaXZlbiB0aGVuIGFsbAotCWF2YWlsYWJsZSBjb21tYW5kcyBhcmUgcHJpbnRlZC4gSWYgYSBnaXQgY29tbWFuZCBpcyBuYW1lZCB0aGlzCisJYXZhaWxhYmxlIGNvbW1hbmRzIGFyZSBwcmludGVkLiBJZiBhIEdpdCBjb21tYW5kIGlzIG5hbWVkIHRoaXMKIAlvcHRpb24gd2lsbCBicmluZyB1cCB0aGUgbWFudWFsIHBhZ2UgZm9yIHRoYXQgY29tbWFuZC4KICsKIE90aGVyIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0byBjb250cm9sIGhvdyB0aGUgbWFudWFsIHBhZ2UgaXMKQEAgLTM4MCwyMiArMzk0LDIyIEBACiAJJ2dpdCBjb25maWcnIChzdWJrZXlzIHNlcGFyYXRlZCBieSBkb3RzKS4KIAogLS1leGVjLXBhdGhbPTxwYXRoPl06OgotCVBhdGggdG8gd2hlcmV2ZXIgeW91ciBjb3JlIGdpdCBwcm9ncmFtcyBhcmUgaW5zdGFsbGVkLgorCVBhdGggdG8gd2hlcmV2ZXIgeW91ciBjb3JlIEdpdCBwcm9ncmFtcyBhcmUgaW5zdGFsbGVkLgogCVRoaXMgY2FuIGFsc28gYmUgY29udHJvbGxlZCBieSBzZXR0aW5nIHRoZSBHSVRfRVhFQ19QQVRICiAJZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIG5vIHBhdGggaXMgZ2l2ZW4sICdnaXQnIHdpbGwgcHJpbnQKIAl0aGUgY3VycmVudCBzZXR0aW5nIGFuZCB0aGVuIGV4aXQuCiAKIC0taHRtbC1wYXRoOjoKLQlQcmludCB0aGUgcGF0aCwgd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgd2hlcmUgZ2l0J3MgSFRNTAorCVByaW50IHRoZSBwYXRoLCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCB3aGVyZSBHaXQncyBIVE1MCiAJZG9jdW1lbnRhdGlvbiBpcyBpbnN0YWxsZWQgYW5kIGV4aXQuCiAKIC0tbWFuLXBhdGg6OgogCVByaW50IHRoZSBtYW5wYXRoIChzZWUgYG1hbigxKWApIGZvciB0aGUgbWFuIHBhZ2VzIGZvcgotCXRoaXMgdmVyc2lvbiBvZiBnaXQgYW5kIGV4aXQuCisJdGhpcyB2ZXJzaW9uIG9mIEdpdCBhbmQgZXhpdC4KIAogLS1pbmZvLXBhdGg6OgogCVByaW50IHRoZSBwYXRoIHdoZXJlIHRoZSBJbmZvIGZpbGVzIGRvY3VtZW50aW5nIHRoaXMKLQl2ZXJzaW9uIG9mIGdpdCBhcmUgaW5zdGFsbGVkIGFuZCBleGl0LgorCXZlcnNpb24gb2YgR2l0IGFyZSBpbnN0YWxsZWQgYW5kIGV4aXQuCiAKIC1wOjoKIC0tcGFnaW5hdGU6OgpAQCAtNDA1LDcgKzQxOSw3IEBACiAJYmVsb3cpLgogCiAtLW5vLXBhZ2VyOjoKLQlEbyBub3QgcGlwZSBnaXQgb3V0cHV0IGludG8gYSBwYWdlci4KKwlEbyBub3QgcGlwZSBHaXQgb3V0cHV0IGludG8gYSBwYWdlci4KIAogLS1naXQtZGlyPTxwYXRoPjo6CiAJU2V0IHRoZSBwYXRoIHRvIHRoZSByZXBvc2l0b3J5LiBUaGlzIGNhbiBhbHNvIGJlIGNvbnRyb2xsZWQgYnkKQEAgLTQyMSw3ICs0MzUsNyBAQAogCW1vcmUgZGV0YWlsZWQgZGlzY3Vzc2lvbikuCiAKIC0tbmFtZXNwYWNlPTxwYXRoPjo6Ci0JU2V0IHRoZSBnaXQgbmFtZXNwYWNlLiAgU2VlIGxpbmtnaXQ6Z2l0bmFtZXNwYWNlc1s3XSBmb3IgbW9yZQorCVNldCB0aGUgR2l0IG5hbWVzcGFjZS4gIFNlZSBsaW5rZ2l0OmdpdG5hbWVzcGFjZXNbN10gZm9yIG1vcmUKIAlkZXRhaWxzLiAgRXF1aXZhbGVudCB0byBzZXR0aW5nIHRoZSBgR0lUX05BTUVTUEFDRWAgZW52aXJvbm1lbnQKIAl2YXJpYWJsZS4KIApAQCAtNDMxLDE0ICs0NDUsMTkgQEAKIAlkaXJlY3RvcnkuCiAKIC0tbm8tcmVwbGFjZS1vYmplY3RzOjoKLQlEbyBub3QgdXNlIHJlcGxhY2VtZW50IHJlZnMgdG8gcmVwbGFjZSBnaXQgb2JqZWN0cy4gU2VlCisJRG8gbm90IHVzZSByZXBsYWNlbWVudCByZWZzIHRvIHJlcGxhY2UgR2l0IG9iamVjdHMuIFNlZQogCWxpbmtnaXQ6Z2l0LXJlcGxhY2VbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKy0tbGl0ZXJhbC1wYXRoc3BlY3M6OgorCVRyZWF0IHBhdGhzcGVjcyBsaXRlcmFsbHksIHJhdGhlciB0aGFuIGFzIGdsb2IgcGF0dGVybnMuIFRoaXMgaXMKKwllcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGBHSVRfTElURVJBTF9QQVRIU1BFQ1NgIGVudmlyb25tZW50CisJdmFyaWFibGUgdG8gYDFgLgorCiAKIEdJVCBDT01NQU5EUwogLS0tLS0tLS0tLS0tCiAKLVdlIGRpdmlkZSBnaXQgaW50byBoaWdoIGxldmVsICgicG9yY2VsYWluIikgY29tbWFuZHMgYW5kIGxvdyBsZXZlbAorV2UgZGl2aWRlIEdpdCBpbnRvIGhpZ2ggbGV2ZWwgKCJwb3JjZWxhaW4iKSBjb21tYW5kcyBhbmQgbG93IGxldmVsCiAoInBsdW1iaW5nIikgY29tbWFuZHMuCiAKIEhpZ2gtbGV2ZWwgY29tbWFuZHMgKHBvcmNlbGFpbikKQEAgLTQ3NSw3ICs0OTQsNyBAQAogTG93LWxldmVsIGNvbW1hbmRzIChwbHVtYmluZykKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUFsdGhvdWdoIGdpdCBpbmNsdWRlcyBpdHMKK0FsdGhvdWdoIEdpdCBpbmNsdWRlcyBpdHMKIG93biBwb3JjZWxhaW4gbGF5ZXIsIGl0cyBsb3ctbGV2ZWwgY29tbWFuZHMgYXJlIHN1ZmZpY2llbnQgdG8gc3VwcG9ydAogZGV2ZWxvcG1lbnQgb2YgYWx0ZXJuYXRpdmUgcG9yY2VsYWlucy4gIERldmVsb3BlcnMgb2Ygc3VjaCBwb3JjZWxhaW5zCiBtaWdodCBzdGFydCBieSByZWFkaW5nIGFib3V0IGxpbmtnaXQ6Z2l0LXVwZGF0ZS1pbmRleFsxXSBhbmQKQEAgLTU5NSw3ICs2MTQsNyBAQAogCiBTeW1ib2xpYyBJZGVudGlmaWVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFueSBnaXQgY29tbWFuZCBhY2NlcHRpbmcgYW55IDxvYmplY3Q+IGNhbiBhbHNvIHVzZSB0aGUgZm9sbG93aW5nCitBbnkgR2l0IGNvbW1hbmQgYWNjZXB0aW5nIGFueSA8b2JqZWN0PiBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZwogc3ltYm9saWMgbm90YXRpb246CiAKIEhFQUQ6OgpAQCAtNjMxLDEzICs2NTAsMTMgQEAKIAogRW52aXJvbm1lbnQgVmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVZhcmlvdXMgZ2l0IGNvbW1hbmRzIHVzZSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczoKK1ZhcmlvdXMgR2l0IGNvbW1hbmRzIHVzZSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczoKIAotVGhlIGdpdCBSZXBvc2l0b3J5CitUaGUgR2l0IFJlcG9zaXRvcnkKIH5+fn5+fn5+fn5+fn5+fn5+fgotVGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFwcGx5IHRvICdhbGwnIGNvcmUgZ2l0IGNvbW1hbmRzLiBOYjogaXQKK1RoZXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcHBseSB0byAnYWxsJyBjb3JlIEdpdCBjb21tYW5kcy4gTmI6IGl0CiBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGV5IG1heSBiZSB1c2VkL292ZXJyaWRkZW4gYnkgU0NNUyBzaXR0aW5nIGFib3ZlCi1naXQgc28gdGFrZSBjYXJlIGlmIHVzaW5nIENvZ2l0byBldGMuCitHaXQgc28gdGFrZSBjYXJlIGlmIHVzaW5nIENvZ2l0byBldGMuCiAKICdHSVRfSU5ERVhfRklMRSc6OgogCVRoaXMgZW52aXJvbm1lbnQgYWxsb3dzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGFuIGFsdGVybmF0ZQpAQCAtNjUxLDEwICs2NzAsMTAgQEAKIAlkaXJlY3RvcnkgaXMgdXNlZC4KIAogJ0dJVF9BTFRFUk5BVEVfT0JKRUNUX0RJUkVDVE9SSUVTJzo6Ci0JRHVlIHRvIHRoZSBpbW11dGFibGUgbmF0dXJlIG9mIGdpdCBvYmplY3RzLCBvbGQgb2JqZWN0cyBjYW4gYmUKKwlEdWUgdG8gdGhlIGltbXV0YWJsZSBuYXR1cmUgb2YgR2l0IG9iamVjdHMsIG9sZCBvYmplY3RzIGNhbiBiZQogCWFyY2hpdmVkIGludG8gc2hhcmVkLCByZWFkLW9ubHkgZGlyZWN0b3JpZXMuIFRoaXMgdmFyaWFibGUKIAlzcGVjaWZpZXMgYSAiOiIgc2VwYXJhdGVkIChvbiBXaW5kb3dzICI7IiBzZXBhcmF0ZWQpIGxpc3QKLQlvZiBnaXQgb2JqZWN0IGRpcmVjdG9yaWVzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgZ2l0CisJb2YgR2l0IG9iamVjdCBkaXJlY3RvcmllcyB3aGljaCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIEdpdAogCW9iamVjdHMuIE5ldyBvYmplY3RzIHdpbGwgbm90IGJlIHdyaXR0ZW4gdG8gdGhlc2UgZGlyZWN0b3JpZXMuCiAKICdHSVRfRElSJzo6CkBAIC02NjQsMTkgKzY4MywxNyBAQAogCVRoZSAnLS1naXQtZGlyJyBjb21tYW5kLWxpbmUgb3B0aW9uIGFsc28gc2V0cyB0aGlzIHZhbHVlLgogCiAnR0lUX1dPUktfVFJFRSc6OgotCVNldCB0aGUgcGF0aCB0byB0aGUgd29ya2luZyB0cmVlLiAgVGhlIHZhbHVlIHdpbGwgbm90IGJlCi0JdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHJlcG9zaXRvcmllcyBmb3VuZCBhdXRvbWF0aWNhbGx5IGluCi0JYSAuZ2l0IGRpcmVjdG9yeSAoaS5lLiAkR0lUX0RJUiBpcyBub3Qgc2V0KS4KKwlTZXQgdGhlIHBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHdvcmtpbmcgdHJlZS4KIAlUaGlzIGNhbiBhbHNvIGJlIGNvbnRyb2xsZWQgYnkgdGhlICctLXdvcmstdHJlZScgY29tbWFuZCBsaW5lCiAJb3B0aW9uIGFuZCB0aGUgY29yZS53b3JrdHJlZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgogCiAnR0lUX05BTUVTUEFDRSc6OgotCVNldCB0aGUgZ2l0IG5hbWVzcGFjZTsgc2VlIGxpbmtnaXQ6Z2l0bmFtZXNwYWNlc1s3XSBmb3IgZGV0YWlscy4KKwlTZXQgdGhlIEdpdCBuYW1lc3BhY2U7IHNlZSBsaW5rZ2l0OmdpdG5hbWVzcGFjZXNbN10gZm9yIGRldGFpbHMuCiAJVGhlICctLW5hbWVzcGFjZScgY29tbWFuZC1saW5lIG9wdGlvbiBhbHNvIHNldHMgdGhpcyB2YWx1ZS4KIAogJ0dJVF9DRUlMSU5HX0RJUkVDVE9SSUVTJzo6CiAJVGhpcyBzaG91bGQgYmUgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdCBvZiBhYnNvbHV0ZSBwYXRocy4gIElmCi0Jc2V0LCBpdCBpcyBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCBnaXQgc2hvdWxkIG5vdCBjaGRpciB1cAorCXNldCwgaXQgaXMgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRoYXQgR2l0IHNob3VsZCBub3QgY2hkaXIgdXAKIAlpbnRvIHdoaWxlIGxvb2tpbmcgZm9yIGEgcmVwb3NpdG9yeSBkaXJlY3RvcnkgKHVzZWZ1bCBmb3IKIAlleGNsdWRpbmcgc2xvdy1sb2FkaW5nIG5ldHdvcmsgZGlyZWN0b3JpZXMpLiAgSXQgd2lsbCBub3QKIAlleGNsdWRlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9yIGEgR0lUX0RJUiBzZXQgb24gdGhlCkBAIC02OTEsMTUgKzcwOCwxNSBAQAogCiAnR0lUX0RJU0NPVkVSWV9BQ1JPU1NfRklMRVNZU1RFTSc6OgogCVdoZW4gcnVuIGluIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBub3QgaGF2ZSAiLmdpdCIgcmVwb3NpdG9yeQotCWRpcmVjdG9yeSwgZ2l0IHRyaWVzIHRvIGZpbmQgc3VjaCBhIGRpcmVjdG9yeSBpbiB0aGUgcGFyZW50CisJZGlyZWN0b3J5LCBHaXQgdHJpZXMgdG8gZmluZCBzdWNoIGEgZGlyZWN0b3J5IGluIHRoZSBwYXJlbnQKIAlkaXJlY3RvcmllcyB0byBmaW5kIHRoZSB0b3Agb2YgdGhlIHdvcmtpbmcgdHJlZSwgYnV0IGJ5IGRlZmF1bHQgaXQKIAlkb2VzIG5vdCBjcm9zcyBmaWxlc3lzdGVtIGJvdW5kYXJpZXMuICBUaGlzIGVudmlyb25tZW50IHZhcmlhYmxlCi0JY2FuIGJlIHNldCB0byB0cnVlIHRvIHRlbGwgZ2l0IG5vdCB0byBzdG9wIGF0IGZpbGVzeXN0ZW0KKwljYW4gYmUgc2V0IHRvIHRydWUgdG8gdGVsbCBHaXQgbm90IHRvIHN0b3AgYXQgZmlsZXN5c3RlbQogCWJvdW5kYXJpZXMuICBMaWtlICdHSVRfQ0VJTElOR19ESVJFQ1RPUklFUycsIHRoaXMgd2lsbCBub3QgYWZmZWN0CiAJYW4gZXhwbGljaXQgcmVwb3NpdG9yeSBkaXJlY3Rvcnkgc2V0IHZpYSAnR0lUX0RJUicgb3Igb24gdGhlCiAJY29tbWFuZCBsaW5lLgogCi1naXQgQ29tbWl0cworR2l0IENvbW1pdHMKIH5+fn5+fn5+fn5+CiAnR0lUX0FVVEhPUl9OQU1FJzo6CiAnR0lUX0FVVEhPUl9FTUFJTCc6OgpAQCAtNzEwLDEzICs3MjcsMTMgQEAKICdFTUFJTCc6OgogCXNlZSBsaW5rZ2l0OmdpdC1jb21taXQtdHJlZVsxXQogCi1naXQgRGlmZnMKK0dpdCBEaWZmcwogfn5+fn5+fn5+CiAnR0lUX0RJRkZfT1BUUyc6OgogCU9ubHkgdmFsaWQgc2V0dGluZyBpcyAiLS11bmlmaWVkPT8/IiBvciAiLXU/PyIgdG8gc2V0IHRoZQogCW51bWJlciBvZiBjb250ZXh0IGxpbmVzIHNob3duIHdoZW4gYSB1bmlmaWVkIGRpZmYgaXMgY3JlYXRlZC4KIAlUaGlzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBhbnkgIi1VIiBvciAiLS11bmlmaWVkIiBvcHRpb24KLQl2YWx1ZSBwYXNzZWQgb24gdGhlIGdpdCBkaWZmIGNvbW1hbmQgbGluZS4KKwl2YWx1ZSBwYXNzZWQgb24gdGhlIEdpdCBkaWZmIGNvbW1hbmQgbGluZS4KIAogJ0dJVF9FWFRFUk5BTF9ESUZGJzo6CiAJV2hlbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgJ0dJVF9FWFRFUk5BTF9ESUZGJyBpcyBzZXQsIHRoZQpAQCAtNzMwLDcgKzc0Nyw3IEBACiAKIAk8b2xkfG5ldz4tZmlsZTo6IGFyZSBmaWxlcyBHSVRfRVhURVJOQUxfRElGRiBjYW4gdXNlIHRvIHJlYWQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgb2YgPG9sZHxuZXc+LAotCTxvbGR8bmV3Pi1oZXg6OiBhcmUgdGhlIDQwLWhleGRpZ2l0IFNIQTEgaGFzaGVzLAorCTxvbGR8bmV3Pi1oZXg6OiBhcmUgdGhlIDQwLWhleGRpZ2l0IFNIQS0xIGhhc2hlcywKIAk8b2xkfG5ldz4tbW9kZTo6IGFyZSB0aGUgb2N0YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGZpbGUgbW9kZXMuCiArCiBUaGUgZmlsZSBwYXJhbWV0ZXJzIGNhbiBwb2ludCBhdCB0aGUgdXNlcidzIHdvcmtpbmcgZmlsZQpAQCAtNzUxLDEzICs3NjgsMTMgQEAKIAogJ0dJVF9QQUdFUic6OgogCVRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzIGAkUEFHRVJgLiBJZiBpdCBpcyBzZXQKLQl0byBhbiBlbXB0eSBzdHJpbmcgb3IgdG8gdGhlIHZhbHVlICJjYXQiLCBnaXQgd2lsbCBub3QgbGF1bmNoCisJdG8gYW4gZW1wdHkgc3RyaW5nIG9yIHRvIHRoZSB2YWx1ZSAiY2F0IiwgR2l0IHdpbGwgbm90IGxhdW5jaAogCWEgcGFnZXIuICBTZWUgYWxzbyB0aGUgYGNvcmUucGFnZXJgIG9wdGlvbiBpbgogCWxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXS4KIAogJ0dJVF9FRElUT1InOjoKIAlUaGlzIGVudmlyb25tZW50IHZhcmlhYmxlIG92ZXJyaWRlcyBgJEVESVRPUmAgYW5kIGAkVklTVUFMYC4KLQlJdCBpcyB1c2VkIGJ5IHNldmVyYWwgZ2l0IGNvbW1hbmRzIHdoZW4sIG9uIGludGVyYWN0aXZlIG1vZGUsCisJSXQgaXMgdXNlZCBieSBzZXZlcmFsIEdpdCBjb21tYW5kcyB3aGVuLCBvbiBpbnRlcmFjdGl2ZSBtb2RlLAogCWFuIGVkaXRvciBpcyB0byBiZSBsYXVuY2hlZC4gU2VlIGFsc28gbGlua2dpdDpnaXQtdmFyWzFdCiAJYW5kIHRoZSBgY29yZS5lZGl0b3JgIG9wdGlvbiBpbiBsaW5rZ2l0OmdpdC1jb25maWdbMV0uCiAKQEAgLTc4MSw3ICs3OTgsNyBAQAogZm9yIGZ1cnRoZXIgZGV0YWlscy4KIAogJ0dJVF9BU0tQQVNTJzo6Ci0JSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQsIHRoZW4gZ2l0IGNvbW1hbmRzIHdoaWNoIG5lZWQgdG8KKwlJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdGhlbiBHaXQgY29tbWFuZHMgd2hpY2ggbmVlZCB0bwogCWFjcXVpcmUgcGFzc3dvcmRzIG9yIHBhc3NwaHJhc2VzIChlLmcuIGZvciBIVFRQIG9yIElNQVAgYXV0aGVudGljYXRpb24pCiAJd2lsbCBjYWxsIHRoaXMgcHJvZ3JhbSB3aXRoIGEgc3VpdGFibGUgcHJvbXB0IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudAogCWFuZCByZWFkIHRoZSBwYXNzd29yZCBmcm9tIGl0cyBTVERPVVQuIFNlZSBhbHNvIHRoZSAnY29yZS5hc2twYXNzJwpAQCAtNzk4LDM1ICs4MTUsNTkgQEAKICdHSVRfRkxVU0gnOjoKIAlJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byAiMSIsIHRoZW4gY29tbWFuZHMgc3VjaAogCWFzICdnaXQgYmxhbWUnIChpbiBpbmNyZW1lbnRhbCBtb2RlKSwgJ2dpdCByZXYtbGlzdCcsICdnaXQgbG9nJywKLQlhbmQgJ2dpdCB3aGF0Y2hhbmdlZCcgd2lsbCBmb3JjZSBhIGZsdXNoIG9mIHRoZSBvdXRwdXQgc3RyZWFtCi0JYWZ0ZXIgZWFjaCBjb21taXQtb3JpZW50ZWQgcmVjb3JkIGhhdmUgYmVlbiBmbHVzaGVkLiAgIElmIHRoaXMKKwknZ2l0IGNoZWNrLWF0dHInLCAnZ2l0IGNoZWNrLWlnbm9yZScsIGFuZCAnZ2l0IHdoYXRjaGFuZ2VkJyB3aWxsCisJZm9yY2UgYSBmbHVzaCBvZiB0aGUgb3V0cHV0IHN0cmVhbSBhZnRlciBlYWNoIHJlY29yZCBoYXZlIGJlZW4KKwlmbHVzaGVkLiBJZiB0aGlzCiAJdmFyaWFibGUgaXMgc2V0IHRvICIwIiwgdGhlIG91dHB1dCBvZiB0aGVzZSBjb21tYW5kcyB3aWxsIGJlIGRvbmUKIAl1c2luZyBjb21wbGV0ZWx5IGJ1ZmZlcmVkIEkvTy4gICBJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzCi0Jbm90IHNldCwgZ2l0IHdpbGwgY2hvb3NlIGJ1ZmZlcmVkIG9yIHJlY29yZC1vcmllbnRlZCBmbHVzaGluZworCW5vdCBzZXQsIEdpdCB3aWxsIGNob29zZSBidWZmZXJlZCBvciByZWNvcmQtb3JpZW50ZWQgZmx1c2hpbmcKIAliYXNlZCBvbiB3aGV0aGVyIHN0ZG91dCBhcHBlYXJzIHRvIGJlIHJlZGlyZWN0ZWQgdG8gYSBmaWxlIG9yIG5vdC4KIAogJ0dJVF9UUkFDRSc6OgogCUlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICIxIiwgIjIiIG9yICJ0cnVlIiAoY29tcGFyaXNvbgotCWlzIGNhc2UgaW5zZW5zaXRpdmUpLCBnaXQgd2lsbCBwcmludCBgdHJhY2U6YCBtZXNzYWdlcyBvbgorCWlzIGNhc2UgaW5zZW5zaXRpdmUpLCBHaXQgd2lsbCBwcmludCBgdHJhY2U6YCBtZXNzYWdlcyBvbgogCXN0ZGVyciB0ZWxsaW5nIGFib3V0IGFsaWFzIGV4cGFuc2lvbiwgYnVpbHQtaW4gY29tbWFuZAogCWV4ZWN1dGlvbiBhbmQgZXh0ZXJuYWwgY29tbWFuZCBleGVjdXRpb24uCiAJSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gYW4gaW50ZWdlciB2YWx1ZSBncmVhdGVyIHRoYW4gMQotCWFuZCBsb3dlciB0aGFuIDEwIChzdHJpY3RseSkgdGhlbiBnaXQgd2lsbCBpbnRlcnByZXQgdGhpcworCWFuZCBsb3dlciB0aGFuIDEwIChzdHJpY3RseSkgdGhlbiBHaXQgd2lsbCBpbnRlcnByZXQgdGhpcwogCXZhbHVlIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGFuZCB3aWxsIHRyeSB0byB3cml0ZSB0aGUKIAl0cmFjZSBtZXNzYWdlcyBpbnRvIHRoaXMgZmlsZSBkZXNjcmlwdG9yLgogCUFsdGVybmF0aXZlbHksIGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIGFuIGFic29sdXRlIHBhdGgKLQkoc3RhcnRpbmcgd2l0aCBhICcvJyBjaGFyYWN0ZXIpLCBnaXQgd2lsbCBpbnRlcnByZXQgdGhpcworCShzdGFydGluZyB3aXRoIGEgJy8nIGNoYXJhY3RlciksIEdpdCB3aWxsIGludGVycHJldCB0aGlzCiAJYXMgYSBmaWxlIHBhdGggYW5kIHdpbGwgdHJ5IHRvIHdyaXRlIHRoZSB0cmFjZSBtZXNzYWdlcwogCWludG8gaXQuCiAKKydHSVRfVFJBQ0VfUEFDS19BQ0NFU1MnOjoKKwlJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byBhIHBhdGgsIGEgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgYXQKKwl0aGUgZ2l2ZW4gcGF0aCBsb2dnaW5nIGFsbCBhY2Nlc3NlcyB0byBhbnkgcGFja3MuIEZvciBlYWNoCisJYWNjZXNzLCB0aGUgcGFjayBmaWxlIG5hbWUgYW5kIGFuIG9mZnNldCBpbiB0aGUgcGFjayBpcworCXJlY29yZGVkLiBUaGlzIG1heSBiZSBoZWxwZnVsIGZvciB0cm91Ymxlc2hvb3Rpbmcgc29tZQorCXBhY2stcmVsYXRlZCBwZXJmb3JtYW5jZSBwcm9ibGVtcy4KKworJ0dJVF9UUkFDRV9QQUNLRVQnOjoKKwlJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCwgaXQgc2hvd3MgYSB0cmFjZSBvZiBhbGwgcGFja2V0cworCWNvbWluZyBpbiBvciBvdXQgb2YgYSBnaXZlbiBwcm9ncmFtLiBUaGlzIGNhbiBoZWxwIHdpdGgKKwlkZWJ1Z2dpbmcgb2JqZWN0IG5lZ290aWF0aW9uIG9yIG90aGVyIHByb3RvY29sIGlzc3Vlcy4gVHJhY2luZworCWlzIHR1cm5lZCBvZmYgYXQgYSBwYWNrZXQgc3RhcnRpbmcgd2l0aCAiUEFDSyIuCisKK0dJVF9MSVRFUkFMX1BBVEhTUEVDUzo6CisJU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGAxYCB3aWxsIGNhdXNlIEdpdCB0byB0cmVhdCBhbGwKKwlwYXRoc3BlY3MgbGl0ZXJhbGx5LCByYXRoZXIgdGhhbiBhcyBnbG9iIHBhdHRlcm5zLiBGb3IgZXhhbXBsZSwKKwlydW5uaW5nIGBHSVRfTElURVJBTF9QQVRIU1BFQ1M9MSBnaXQgbG9nIC0tICcqLmMnYCB3aWxsIHNlYXJjaAorCWZvciBjb21taXRzIHRoYXQgdG91Y2ggdGhlIHBhdGggYCouY2AsIG5vdCBhbnkgcGF0aHMgdGhhdCB0aGUKKwlnbG9iIGAqLmNgIG1hdGNoZXMuIFlvdSBtaWdodCB3YW50IHRoaXMgaWYgeW91IGFyZSBmZWVkaW5nCisJbGl0ZXJhbCBwYXRocyB0byBHaXQgKGUuZy4sIHBhdGhzIHByZXZpb3VzbHkgZ2l2ZW4gdG8geW91IGJ5CisJYGdpdCBscy10cmVlYCwgYC0tcmF3YCBkaWZmIG91dHB1dCwgZXRjKS4KKworCiBEaXNjdXNzaW9uW1tEaXNjdXNzaW9uXV0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBNb3JlIGRldGFpbCBvbiB0aGUgZm9sbG93aW5nIGlzIGF2YWlsYWJsZSBmcm9tIHRoZQotbGluazp1c2VyLW1hbnVhbC5odG1sI2dpdC1jb25jZXB0c1tnaXQgY29uY2VwdHMgY2hhcHRlciBvZiB0aGUKK2xpbms6dXNlci1tYW51YWwuaHRtbCNnaXQtY29uY2VwdHNbR2l0IGNvbmNlcHRzIGNoYXB0ZXIgb2YgdGhlCiB1c2VyLW1hbnVhbF0gYW5kIGxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XS4KIAotQSBnaXQgcHJvamVjdCBub3JtYWxseSBjb25zaXN0cyBvZiBhIHdvcmtpbmcgZGlyZWN0b3J5IHdpdGggYSAiLmdpdCIKK0EgR2l0IHByb2plY3Qgbm9ybWFsbHkgY29uc2lzdHMgb2YgYSB3b3JraW5nIGRpcmVjdG9yeSB3aXRoIGEgIi5naXQiCiBzdWJkaXJlY3RvcnkgYXQgdGhlIHRvcCBsZXZlbC4gIFRoZSAuZ2l0IGRpcmVjdG9yeSBjb250YWlucywgYW1vbmcgb3RoZXIKIHRoaW5ncywgYSBjb21wcmVzc2VkIG9iamVjdCBkYXRhYmFzZSByZXByZXNlbnRpbmcgdGhlIGNvbXBsZXRlIGhpc3RvcnkKIG9mIHRoZSBwcm9qZWN0LCBhbiAiaW5kZXgiIGZpbGUgd2hpY2ggbGlua3MgdGhhdCBoaXN0b3J5IHRvIHRoZSBjdXJyZW50CkBAIC04NDMsNyArODg0LDcgQEAKIHJlcHJlc2VudHMgYW4gaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHN0ZXAuICBDb21taXRzIHdpdGggbW9yZSB0aGFuIG9uZQogcGFyZW50IHJlcHJlc2VudCBtZXJnZXMgb2YgaW5kZXBlbmRlbnQgbGluZXMgb2YgZGV2ZWxvcG1lbnQuCiAKLUFsbCBvYmplY3RzIGFyZSBuYW1lZCBieSB0aGUgU0hBMSBoYXNoIG9mIHRoZWlyIGNvbnRlbnRzLCBub3JtYWxseQorQWxsIG9iamVjdHMgYXJlIG5hbWVkIGJ5IHRoZSBTSEEtMSBoYXNoIG9mIHRoZWlyIGNvbnRlbnRzLCBub3JtYWxseQogd3JpdHRlbiBhcyBhIHN0cmluZyBvZiA0MCBoZXggZGlnaXRzLiAgU3VjaCBuYW1lcyBhcmUgZ2xvYmFsbHkgdW5pcXVlLgogVGhlIGVudGlyZSBoaXN0b3J5IGxlYWRpbmcgdXAgdG8gYSBjb21taXQgY2FuIGJlIHZvdWNoZWQgZm9yIGJ5IHNpZ25pbmcKIGp1c3QgdGhhdCBjb21taXQuICBBIGZvdXJ0aCBvYmplY3QgdHlwZSwgdGhlIHRhZywgaXMgcHJvdmlkZWQgZm9yIHRoaXMKQEAgLTg1Myw5ICs4OTQsOSBAQAogZWZmaWNpZW5jeSBtYXkgbGF0ZXIgYmUgY29tcHJlc3NlZCB0b2dldGhlciBpbnRvICJwYWNrIGZpbGVzIi4KIAogTmFtZWQgcG9pbnRlcnMgY2FsbGVkIHJlZnMgbWFyayBpbnRlcmVzdGluZyBwb2ludHMgaW4gaGlzdG9yeS4gIEEgcmVmCi1tYXkgY29udGFpbiB0aGUgU0hBMSBuYW1lIG9mIGFuIG9iamVjdCBvciB0aGUgbmFtZSBvZiBhbm90aGVyIHJlZi4gIFJlZnMKLXdpdGggbmFtZXMgYmVnaW5uaW5nIGByZWYvaGVhZC9gIGNvbnRhaW4gdGhlIFNIQTEgbmFtZSBvZiB0aGUgbW9zdAotcmVjZW50IGNvbW1pdCAob3IgImhlYWQiKSBvZiBhIGJyYW5jaCB1bmRlciBkZXZlbG9wbWVudC4gIFNIQTEgbmFtZXMgb2YKK21heSBjb250YWluIHRoZSBTSEEtMSBuYW1lIG9mIGFuIG9iamVjdCBvciB0aGUgbmFtZSBvZiBhbm90aGVyIHJlZi4gIFJlZnMKK3dpdGggbmFtZXMgYmVnaW5uaW5nIGByZWYvaGVhZC9gIGNvbnRhaW4gdGhlIFNIQS0xIG5hbWUgb2YgdGhlIG1vc3QKK3JlY2VudCBjb21taXQgKG9yICJoZWFkIikgb2YgYSBicmFuY2ggdW5kZXIgZGV2ZWxvcG1lbnQuICBTSEEtMSBuYW1lcyBvZgogdGFncyBvZiBpbnRlcmVzdCBhcmUgc3RvcmVkIHVuZGVyIGByZWYvdGFncy9gLiAgQSBzcGVjaWFsIHJlZiBuYW1lZAogYEhFQURgIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgY2hlY2tlZC1vdXQgYnJhbmNoLgogCkBAIC04NzYsMTIgKzkxNywxMiBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFNlZSB0aGUgcmVmZXJlbmNlcyBpbiB0aGUgImRlc2NyaXB0aW9uIiBzZWN0aW9uIHRvIGdldCBzdGFydGVkCi11c2luZyBnaXQuICBUaGUgZm9sbG93aW5nIGlzIHByb2JhYmx5IG1vcmUgZGV0YWlsIHRoYW4gbmVjZXNzYXJ5Cit1c2luZyBHaXQuICBUaGUgZm9sbG93aW5nIGlzIHByb2JhYmx5IG1vcmUgZGV0YWlsIHRoYW4gbmVjZXNzYXJ5CiBmb3IgYSBmaXJzdC10aW1lIHVzZXIuCiAKLVRoZSBsaW5rOnVzZXItbWFudWFsLmh0bWwjZ2l0LWNvbmNlcHRzW2dpdCBjb25jZXB0cyBjaGFwdGVyIG9mIHRoZQorVGhlIGxpbms6dXNlci1tYW51YWwuaHRtbCNnaXQtY29uY2VwdHNbR2l0IGNvbmNlcHRzIGNoYXB0ZXIgb2YgdGhlCiB1c2VyLW1hbnVhbF0gYW5kIGxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XSBib3RoIHByb3ZpZGUKLWludHJvZHVjdGlvbnMgdG8gdGhlIHVuZGVybHlpbmcgZ2l0IGFyY2hpdGVjdHVyZS4KK2ludHJvZHVjdGlvbnMgdG8gdGhlIHVuZGVybHlpbmcgR2l0IGFyY2hpdGVjdHVyZS4KIAogU2VlIGxpbmtnaXQ6Z2l0d29ya2Zsb3dzWzddIGZvciBhbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3MuCiAKQEAgLTg4OSw3ICs5MzAsNyBAQAogZXhhbXBsZXMuCiAKIFRoZSBpbnRlcm5hbHMgYXJlIGRvY3VtZW50ZWQgaW4gdGhlCi1saW5rOnRlY2huaWNhbC9hcGktaW5kZXguaHRtbFtHSVQgQVBJIGRvY3VtZW50YXRpb25dLgorbGluazp0ZWNobmljYWwvYXBpLWluZGV4Lmh0bWxbR2l0IEFQSSBkb2N1bWVudGF0aW9uXS4KIAogVXNlcnMgbWlncmF0aW5nIGZyb20gQ1ZTIG1heSBhbHNvIHdhbnQgdG8KIHJlYWQgbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddLgpAQCAtODk4LDcgKzkzOSw3IEBACiBBdXRob3JzCiAtLS0tLS0tCiBHaXQgd2FzIHN0YXJ0ZWQgYnkgTGludXMgVG9ydmFsZHMsIGFuZCBpcyBjdXJyZW50bHkgbWFpbnRhaW5lZCBieSBKdW5pbwotQyBIYW1hbm8uIE51bWVyb3VzIGNvbnRyaWJ1dGlvbnMgaGF2ZSBjb21lIGZyb20gdGhlIGdpdCBtYWlsaW5nIGxpc3QKK0MgSGFtYW5vLiBOdW1lcm91cyBjb250cmlidXRpb25zIGhhdmUgY29tZSBmcm9tIHRoZSBHaXQgbWFpbGluZyBsaXN0CiA8Z2l0QHZnZXIua2VybmVsLm9yZz4uICBodHRwOi8vd3d3Lm9obG9oLm5ldC9wL2dpdC9jb250cmlidXRvcnMvc3VtbWFyeQogZ2l2ZXMgeW91IGEgbW9yZSBjb21wbGV0ZSBsaXN0IG9mIGNvbnRyaWJ1dG9ycy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0YXR0cmlidXRlcy50eHQKaW5kZXggMjY5OGY2My4uYjMyMmEyNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0CkBAIC01OCw3ICs1OCw3IEBACiBzYW1lIGFzIGluIGAuZ2l0aWdub3JlYCBmaWxlczsgc2VlIGxpbmtnaXQ6Z2l0aWdub3JlWzVdLgogVW5saWtlIGAuZ2l0aWdub3JlYCwgbmVnYXRpdmUgcGF0dGVybnMgYXJlIGZvcmJpZGRlbi4KIAotV2hlbiBkZWNpZGluZyB3aGF0IGF0dHJpYnV0ZXMgYXJlIGFzc2lnbmVkIHRvIGEgcGF0aCwgZ2l0CitXaGVuIGRlY2lkaW5nIHdoYXQgYXR0cmlidXRlcyBhcmUgYXNzaWduZWQgdG8gYSBwYXRoLCBHaXQKIGNvbnN1bHRzIGAkR0lUX0RJUi9pbmZvL2F0dHJpYnV0ZXNgIGZpbGUgKHdoaWNoIGhhcyB0aGUgaGlnaGVzdAogcHJlY2VkZW5jZSksIGAuZ2l0YXR0cmlidXRlc2AgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlCiBwYXRoIGluIHF1ZXN0aW9uLCBhbmQgaXRzIHBhcmVudCBkaXJlY3RvcmllcyB1cCB0byB0aGUgdG9wbGV2ZWwgb2YgdGhlCkBAIC05NCw3ICs5NCw3IEBACiBFRkZFQ1RTCiAtLS0tLS0tCiAKLUNlcnRhaW4gb3BlcmF0aW9ucyBieSBnaXQgY2FuIGJlIGluZmx1ZW5jZWQgYnkgYXNzaWduaW5nCitDZXJ0YWluIG9wZXJhdGlvbnMgYnkgR2l0IGNhbiBiZSBpbmZsdWVuY2VkIGJ5IGFzc2lnbmluZwogcGFydGljdWxhciBhdHRyaWJ1dGVzIHRvIGEgcGF0aC4gIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZwogb3BlcmF0aW9ucyBhcmUgYXR0cmlidXRlcy1hd2FyZS4KIApAQCAtMTA0LDcgKzEwNCw3IEBACiBUaGVzZSBhdHRyaWJ1dGVzIGFmZmVjdCBob3cgdGhlIGNvbnRlbnRzIHN0b3JlZCBpbiB0aGUKIHJlcG9zaXRvcnkgYXJlIGNvcGllZCB0byB0aGUgd29ya2luZyB0cmVlIGZpbGVzIHdoZW4gY29tbWFuZHMKIHN1Y2ggYXMgJ2dpdCBjaGVja291dCcgYW5kICdnaXQgbWVyZ2UnIHJ1bi4gIFRoZXkgYWxzbyBhZmZlY3QgaG93Ci1naXQgc3RvcmVzIHRoZSBjb250ZW50cyB5b3UgcHJlcGFyZSBpbiB0aGUgd29ya2luZyB0cmVlIGluIHRoZQorR2l0IHN0b3JlcyB0aGUgY29udGVudHMgeW91IHByZXBhcmUgaW4gdGhlIHdvcmtpbmcgdHJlZSBpbiB0aGUKIHJlcG9zaXRvcnkgdXBvbiAnZ2l0IGFkZCcgYW5kICdnaXQgY29tbWl0Jy4KIAogYHRleHRgCkBAIC0xMjQsMjIgKzEyNCwyMiBAQAogCiBVbnNldDo6CiAKLQlVbnNldHRpbmcgdGhlIGB0ZXh0YCBhdHRyaWJ1dGUgb24gYSBwYXRoIHRlbGxzIGdpdCBub3QgdG8KKwlVbnNldHRpbmcgdGhlIGB0ZXh0YCBhdHRyaWJ1dGUgb24gYSBwYXRoIHRlbGxzIEdpdCBub3QgdG8KIAlhdHRlbXB0IGFueSBlbmQtb2YtbGluZSBjb252ZXJzaW9uIHVwb24gY2hlY2tpbiBvciBjaGVja291dC4KIAogU2V0IHRvIHN0cmluZyB2YWx1ZSAiYXV0byI6OgogCiAJV2hlbiBgdGV4dGAgaXMgc2V0IHRvICJhdXRvIiwgdGhlIHBhdGggaXMgbWFya2VkIGZvciBhdXRvbWF0aWMKLQllbmQtb2YtbGluZSBub3JtYWxpemF0aW9uLiAgSWYgZ2l0IGRlY2lkZXMgdGhhdCB0aGUgY29udGVudCBpcworCWVuZC1vZi1saW5lIG5vcm1hbGl6YXRpb24uICBJZiBHaXQgZGVjaWRlcyB0aGF0IHRoZSBjb250ZW50IGlzCiAJdGV4dCwgaXRzIGxpbmUgZW5kaW5ncyBhcmUgbm9ybWFsaXplZCB0byBMRiBvbiBjaGVja2luLgogCiBVbnNwZWNpZmllZDo6CiAKLQlJZiB0aGUgYHRleHRgIGF0dHJpYnV0ZSBpcyB1bnNwZWNpZmllZCwgZ2l0IHVzZXMgdGhlCisJSWYgdGhlIGB0ZXh0YCBhdHRyaWJ1dGUgaXMgdW5zcGVjaWZpZWQsIEdpdCB1c2VzIHRoZQogCWBjb3JlLmF1dG9jcmxmYCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIHRvIGRldGVybWluZSBpZiB0aGUKIAlmaWxlIHNob3VsZCBiZSBjb252ZXJ0ZWQuCiAKLUFueSBvdGhlciB2YWx1ZSBjYXVzZXMgZ2l0IHRvIGFjdCBhcyBpZiBgdGV4dGAgaGFzIGJlZW4gbGVmdAorQW55IG90aGVyIHZhbHVlIGNhdXNlcyBHaXQgdG8gYWN0IGFzIGlmIGB0ZXh0YCBoYXMgYmVlbiBsZWZ0CiB1bnNwZWNpZmllZC4KIAogYGVvbGAKQEAgLTE1MSwxMyArMTUxLDEzIEBACiAKIFNldCB0byBzdHJpbmcgdmFsdWUgImNybGYiOjoKIAotCVRoaXMgc2V0dGluZyBmb3JjZXMgZ2l0IHRvIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgZm9yIHRoaXMKKwlUaGlzIHNldHRpbmcgZm9yY2VzIEdpdCB0byBub3JtYWxpemUgbGluZSBlbmRpbmdzIGZvciB0aGlzCiAJZmlsZSBvbiBjaGVja2luIGFuZCBjb252ZXJ0IHRoZW0gdG8gQ1JMRiB3aGVuIHRoZSBmaWxlIGlzCiAJY2hlY2tlZCBvdXQuCiAKIFNldCB0byBzdHJpbmcgdmFsdWUgImxmIjo6CiAKLQlUaGlzIHNldHRpbmcgZm9yY2VzIGdpdCB0byBub3JtYWxpemUgbGluZSBlbmRpbmdzIHRvIExGIG9uCisJVGhpcyBzZXR0aW5nIGZvcmNlcyBHaXQgdG8gbm9ybWFsaXplIGxpbmUgZW5kaW5ncyB0byBMRiBvbgogCWNoZWNraW4gYW5kIHByZXZlbnRzIGNvbnZlcnNpb24gdG8gQ1JMRiB3aGVuIHRoZSBmaWxlIGlzCiAJY2hlY2tlZCBvdXQuCiAKQEAgLTE3NiwxMSArMTc2LDExIEBACiBFbmQtb2YtbGluZSBjb252ZXJzaW9uCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLVdoaWxlIGdpdCBub3JtYWxseSBsZWF2ZXMgZmlsZSBjb250ZW50cyBhbG9uZSwgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8KK1doaWxlIEdpdCBub3JtYWxseSBsZWF2ZXMgZmlsZSBjb250ZW50cyBhbG9uZSwgaXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8KIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgdG8gTEYgaW4gdGhlIHJlcG9zaXRvcnkgYW5kLCBvcHRpb25hbGx5LCB0bwogY29udmVydCB0aGVtIHRvIENSTEYgd2hlbiBmaWxlcyBhcmUgY2hlY2tlZCBvdXQuCiAKLUhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IHdpbGwgbWFrZSBnaXQgbm9ybWFsaXplIC50eHQsIC52Y3Byb2ogYW5kIC5zaAorSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgd2lsbCBtYWtlIEdpdCBub3JtYWxpemUgLnR4dCwgLnZjcHJvaiBhbmQgLnNoCiBmaWxlcywgZW5zdXJlIHRoYXQgLnZjcHJvaiBmaWxlcyBoYXZlIENSTEYgYW5kIC5zaCBmaWxlcyBoYXZlIExGIGluCiB0aGUgd29ya2luZyBkaXJlY3RvcnksIGFuZCBwcmV2ZW50IC5qcGcgZmlsZXMgZnJvbSBiZWluZyBub3JtYWxpemVkCiByZWdhcmRsZXNzIG9mIHRoZWlyIGNvbnRlbnQuCkBAIC0xOTQsNyArMTk0LDcgQEAKIAogT3RoZXIgc291cmNlIGNvZGUgbWFuYWdlbWVudCBzeXN0ZW1zIG5vcm1hbGl6ZSBhbGwgdGV4dCBmaWxlcyBpbiB0aGVpcgogcmVwb3NpdG9yaWVzLCBhbmQgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGVuYWJsZSBzaW1pbGFyIGF1dG9tYXRpYwotbm9ybWFsaXphdGlvbiBpbiBnaXQuCitub3JtYWxpemF0aW9uIGluIEdpdC4KIAogSWYgeW91IHNpbXBseSB3YW50IHRvIGhhdmUgQ1JMRiBsaW5lIGVuZGluZ3MgaW4geW91ciB3b3JraW5nIGRpcmVjdG9yeQogcmVnYXJkbGVzcyBvZiB0aGUgcmVwb3NpdG9yeSB5b3UgYXJlIHdvcmtpbmcgd2l0aCwgeW91IGNhbiBzZXQgdGhlCkBAIC0yMTksOSArMjE5LDkgQEAKICoJdGV4dD1hdXRvCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBlbnN1cmVzIHRoYXQgYWxsIGZpbGVzIHRoYXQgZ2l0IGNvbnNpZGVycyB0byBiZSB0ZXh0IHdpbGwgaGF2ZQorVGhpcyBlbnN1cmVzIHRoYXQgYWxsIGZpbGVzIHRoYXQgR2l0IGNvbnNpZGVycyB0byBiZSB0ZXh0IHdpbGwgaGF2ZQogbm9ybWFsaXplZCAoTEYpIGxpbmUgZW5kaW5ncyBpbiB0aGUgcmVwb3NpdG9yeS4gIFRoZSBgY29yZS5lb2xgCi1jb25maWd1cmF0aW9uIHZhcmlhYmxlIGNvbnRyb2xzIHdoaWNoIGxpbmUgZW5kaW5ncyBnaXQgd2lsbCB1c2UgZm9yCitjb25maWd1cmF0aW9uIHZhcmlhYmxlIGNvbnRyb2xzIHdoaWNoIGxpbmUgZW5kaW5ncyBHaXQgd2lsbCB1c2UgZm9yCiBub3JtYWxpemVkIGZpbGVzIGluIHlvdXIgd29ya2luZyBkaXJlY3Rvcnk7IHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUKIG5hdGl2ZSBsaW5lIGVuZGluZyBmb3IgeW91ciBwbGF0Zm9ybSwgb3IgQ1JMRiBpZiBgY29yZS5hdXRvY3JsZmAgaXMKIHNldC4KQEAgLTIzNCw3ICsyMzQsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGVjaG8gIiogdGV4dD1hdXRvIiA+Pi5naXRhdHRyaWJ1dGVzCi0kIHJtIC5naXQvaW5kZXggICAgICMgUmVtb3ZlIHRoZSBpbmRleCB0byBmb3JjZSBnaXQgdG8KKyQgcm0gLmdpdC9pbmRleCAgICAgIyBSZW1vdmUgdGhlIGluZGV4IHRvIGZvcmNlIEdpdCB0bwogJCBnaXQgcmVzZXQgICAgICAgICAjIHJlLXNjYW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5CiAkIGdpdCBzdGF0dXMgICAgICAgICMgU2hvdyBmaWxlcyB0aGF0IHdpbGwgYmUgbm9ybWFsaXplZAogJCBnaXQgYWRkIC11CkBAIC0yNDksMTcgKzI0OSwxNyBAQAogbWFudWFsLnBkZgktdGV4dAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvbnZlcnNlbHksIHRleHQgZmlsZXMgdGhhdCBnaXQgZG9lcyBub3QgZGV0ZWN0IGNhbiBoYXZlIG5vcm1hbGl6YXRpb24KK0NvbnZlcnNlbHksIHRleHQgZmlsZXMgdGhhdCBHaXQgZG9lcyBub3QgZGV0ZWN0IGNhbiBoYXZlIG5vcm1hbGl6YXRpb24KIGVuYWJsZWQgbWFudWFsbHkuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogd2VpcmRjaGFycy50eHQJdGV4dAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUlmIGBjb3JlLnNhZmVjcmxmYCBpcyBzZXQgdG8gInRydWUiIG9yICJ3YXJuIiwgZ2l0IHZlcmlmaWVzIGlmCitJZiBgY29yZS5zYWZlY3JsZmAgaXMgc2V0IHRvICJ0cnVlIiBvciAid2FybiIsIEdpdCB2ZXJpZmllcyBpZgogdGhlIGNvbnZlcnNpb24gaXMgcmV2ZXJzaWJsZSBmb3IgdGhlIGN1cnJlbnQgc2V0dGluZyBvZgotYGNvcmUuYXV0b2NybGZgLiAgRm9yICJ0cnVlIiwgZ2l0IHJlamVjdHMgaXJyZXZlcnNpYmxlCi1jb252ZXJzaW9uczsgZm9yICJ3YXJuIiwgZ2l0IG9ubHkgcHJpbnRzIGEgd2FybmluZyBidXQgYWNjZXB0cworYGNvcmUuYXV0b2NybGZgLiAgRm9yICJ0cnVlIiwgR2l0IHJlamVjdHMgaXJyZXZlcnNpYmxlCitjb252ZXJzaW9uczsgZm9yICJ3YXJuIiwgR2l0IG9ubHkgcHJpbnRzIGEgd2FybmluZyBidXQgYWNjZXB0cwogYW4gaXJyZXZlcnNpYmxlIGNvbnZlcnNpb24uICBUaGUgc2FmZXR5IHRyaWdnZXJzIHRvIHByZXZlbnQgc3VjaAogYSBjb252ZXJzaW9uIGRvbmUgdG8gdGhlIGZpbGVzIGluIHRoZSB3b3JrIHRyZWUsIGJ1dCB0aGVyZSBhcmUgYQogZmV3IGV4Y2VwdGlvbnMuICBFdmVuIHRob3VnaC4uLgpAQCAtMjgwLDcgKzI4MCw3IEBACiBgaWRlbnRgCiBeXl5eXl5eCiAKLVdoZW4gdGhlIGF0dHJpYnV0ZSBgaWRlbnRgIGlzIHNldCBmb3IgYSBwYXRoLCBnaXQgcmVwbGFjZXMKK1doZW4gdGhlIGF0dHJpYnV0ZSBgaWRlbnRgIGlzIHNldCBmb3IgYSBwYXRoLCBHaXQgcmVwbGFjZXMKIGAkSWQkYCBpbiB0aGUgYmxvYiBvYmplY3Qgd2l0aCBgJElkOmAsIGZvbGxvd2VkIGJ5IHRoZQogNDAtY2hhcmFjdGVyIGhleGFkZWNpbWFsIGJsb2Igb2JqZWN0IG5hbWUsIGZvbGxvd2VkIGJ5IGEgZG9sbGFyCiBzaWduIGAkYCB1cG9uIGNoZWNrb3V0LiAgQW55IGJ5dGUgc2VxdWVuY2UgdGhhdCBiZWdpbnMgd2l0aApAQCAtMzExLDcgKzMxMSw3IEBACiAKIEFub3RoZXIgdXNlIG9mIHRoZSBjb250ZW50IGZpbHRlcmluZyBpcyB0byBzdG9yZSB0aGUgY29udGVudCB0aGF0IGNhbm5vdAogYmUgZGlyZWN0bHkgdXNlZCBpbiB0aGUgcmVwb3NpdG9yeSAoZS5nLiBhIFVVSUQgdGhhdCByZWZlcnMgdG8gdGhlIHRydWUKLWNvbnRlbnQgc3RvcmVkIG91dHNpZGUgZ2l0LCBvciBhbiBlbmNyeXB0ZWQgY29udGVudCkgYW5kIHR1cm4gaXQgaW50byBhCitjb250ZW50IHN0b3JlZCBvdXRzaWRlIEdpdCwgb3IgYW4gZW5jcnlwdGVkIGNvbnRlbnQpIGFuZCB0dXJuIGl0IGludG8gYQogdXNhYmxlIGZvcm0gdXBvbiBjaGVja291dCAoZS5nLiBkb3dubG9hZCB0aGUgZXh0ZXJuYWwgY29udGVudCwgb3IgZGVjcnlwdAogdGhlIGVuY3J5cHRlZCBjb250ZW50KS4KIApAQCAtMzk3LDcgKzM5Nyw3IEBACiB3aGVyZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBpbiBwbGFjZSB3b3VsZCBub3JtYWxseSBjYXVzZSBtZXJnZQogY29uZmxpY3RzLgogCi1UbyBwcmV2ZW50IHRoZXNlIHVubmVjZXNzYXJ5IG1lcmdlIGNvbmZsaWN0cywgZ2l0IGNhbiBiZSB0b2xkIHRvIHJ1biBhCitUbyBwcmV2ZW50IHRoZXNlIHVubmVjZXNzYXJ5IG1lcmdlIGNvbmZsaWN0cywgR2l0IGNhbiBiZSB0b2xkIHRvIHJ1biBhCiB2aXJ0dWFsIGNoZWNrLW91dCBhbmQgY2hlY2staW4gb2YgYWxsIHRocmVlIHN0YWdlcyBvZiBhIGZpbGUgd2hlbgogcmVzb2x2aW5nIGEgdGhyZWUtd2F5IG1lcmdlIGJ5IHNldHRpbmcgdGhlIGBtZXJnZS5yZW5vcm1hbGl6ZWAKIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICBUaGlzIHByZXZlbnRzIGNoYW5nZXMgY2F1c2VkIGJ5IGNoZWNrLWluCkBAIC00MTcsMTEgKzQxNywxMSBAQAogYGRpZmZgCiBeXl5eXl4KIAotVGhlIGF0dHJpYnV0ZSBgZGlmZmAgYWZmZWN0cyBob3cgJ2dpdCcgZ2VuZXJhdGVzIGRpZmZzIGZvciBwYXJ0aWN1bGFyCi1maWxlcy4gSXQgY2FuIHRlbGwgZ2l0IHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSB0ZXh0dWFsIHBhdGNoIGZvciB0aGUgcGF0aAorVGhlIGF0dHJpYnV0ZSBgZGlmZmAgYWZmZWN0cyBob3cgR2l0IGdlbmVyYXRlcyBkaWZmcyBmb3IgcGFydGljdWxhcgorZmlsZXMuIEl0IGNhbiB0ZWxsIEdpdCB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgdGV4dHVhbCBwYXRjaCBmb3IgdGhlIHBhdGgKIG9yIHRvIHRyZWF0IHRoZSBwYXRoIGFzIGEgYmluYXJ5IGZpbGUuICBJdCBjYW4gYWxzbyBhZmZlY3Qgd2hhdCBsaW5lIGlzCi1zaG93biBvbiB0aGUgaHVuayBoZWFkZXIgYEBAIC1rLGwgK24sbSBAQGAgbGluZSwgdGVsbCBnaXQgdG8gdXNlIGFuCi1leHRlcm5hbCBjb21tYW5kIHRvIGdlbmVyYXRlIHRoZSBkaWZmLCBvciBhc2sgZ2l0IHRvIGNvbnZlcnQgYmluYXJ5CitzaG93biBvbiB0aGUgaHVuayBoZWFkZXIgYEBAIC1rLGwgK24sbSBAQGAgbGluZSwgdGVsbCBHaXQgdG8gdXNlIGFuCitleHRlcm5hbCBjb21tYW5kIHRvIGdlbmVyYXRlIHRoZSBkaWZmLCBvciBhc2sgR2l0IHRvIGNvbnZlcnQgYmluYXJ5CiBmaWxlcyB0byBhIHRleHQgZm9ybWF0IGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBkaWZmLgogCiBTZXQ6OgpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAJc3BlY2lmeSBvbmUgb3IgbW9yZSBvcHRpb25zLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZvbGxvd2luZwogCXNlY3Rpb24uIFRoZSBvcHRpb25zIGZvciB0aGUgZGlmZiBkcml2ZXIgImZvbyIgYXJlIGRlZmluZWQKIAlieSB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgaW4gdGhlICJkaWZmLmZvbyIgc2VjdGlvbiBvZiB0aGUKLQlnaXQgY29uZmlnIGZpbGUuCisJR2l0IGNvbmZpZyBmaWxlLgogCiAKIERlZmluaW5nIGFuIGV4dGVybmFsIGRpZmYgZHJpdmVyCkBAIC00NjcsNyArNDY3LDcgQEAKIAljb21tYW5kID0gai1jLWRpZmYKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiBnaXQgbmVlZHMgdG8gc2hvdyB5b3UgYSBkaWZmIGZvciB0aGUgcGF0aCB3aXRoIGBkaWZmYAorV2hlbiBHaXQgbmVlZHMgdG8gc2hvdyB5b3UgYSBkaWZmIGZvciB0aGUgcGF0aCB3aXRoIGBkaWZmYAogYXR0cmlidXRlIHNldCB0byBgamNkaWZmYCwgaXQgY2FsbHMgdGhlIGNvbW1hbmQgeW91IHNwZWNpZmllZAogd2l0aCB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiwgaS5lLiBgai1jLWRpZmZgLCB3aXRoIDcKIHBhcmFtZXRlcnMsIGp1c3QgbGlrZSBgR0lUX0VYVEVSTkFMX0RJRkZgIHByb2dyYW0gaXMgY2FsbGVkLgpAQCAtNjA2LDcgKzYwNiw3IEBACiBhZGRpdGlvbiB0b18gdGhlIHVzdWFsIGJpbmFyeSBkaWZmIHRoYXQgeW91IG1pZ2h0IHNlbmQuCiAKIEJlY2F1c2UgdGV4dCBjb252ZXJzaW9uIGNhbiBiZSBzbG93LCBlc3BlY2lhbGx5IHdoZW4gZG9pbmcgYQotbGFyZ2UgbnVtYmVyIG9mIHRoZW0gd2l0aCBgZ2l0IGxvZyAtcGAsIGdpdCBwcm92aWRlcyBhIG1lY2hhbmlzbQorbGFyZ2UgbnVtYmVyIG9mIHRoZW0gd2l0aCBgZ2l0IGxvZyAtcGAsIEdpdCBwcm92aWRlcyBhIG1lY2hhbmlzbQogdG8gY2FjaGUgdGhlIG91dHB1dCBhbmQgdXNlIGl0IGluIGZ1dHVyZSBkaWZmcy4gIFRvIGVuYWJsZQogY2FjaGluZywgc2V0IHRoZSAiY2FjaGV0ZXh0Y29udiIgdmFyaWFibGUgaW4geW91ciBkaWZmIGRyaXZlcidzCiBjb25maWcuIEZvciBleGFtcGxlOgpAQCAtNjE5LDcgKzYxOSw3IEBACiAKIFRoaXMgd2lsbCBjYWNoZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgImV4aWYiIG9uIGVhY2ggYmxvYgogaW5kZWZpbml0ZWx5LiBJZiB5b3UgY2hhbmdlIHRoZSB0ZXh0Y29udiBjb25maWcgdmFyaWFibGUgZm9yIGEKLWRpZmYgZHJpdmVyLCBnaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGludmFsaWRhdGUgdGhlIGNhY2hlIGVudHJpZXMKK2RpZmYgZHJpdmVyLCBHaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGludmFsaWRhdGUgdGhlIGNhY2hlIGVudHJpZXMKIGFuZCByZS1ydW4gdGhlIHRleHRjb252IGZpbHRlci4gSWYgeW91IHdhbnQgdG8gaW52YWxpZGF0ZSB0aGUKIGNhY2hlIG1hbnVhbGx5IChlLmcuLCBiZWNhdXNlIHlvdXIgdmVyc2lvbiBvZiAiZXhpZiIgd2FzIHVwZGF0ZWQKIGFuZCBub3cgcHJvZHVjZXMgYmV0dGVyIG91dHB1dCksIHlvdSBjYW4gcmVtb3ZlIHRoZSBjYWNoZQpAQCAtNjQwLDcgKzY0MCw3IEBACiBjaGFuZ2VzIGluIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHdheSBmb3IgeW91ciBkYXRhIGZvcm1hdC4KIAogQSB0ZXh0Y29udiwgYnkgY29tcGFyaXNvbiwgaXMgbXVjaCBtb3JlIGxpbWl0aW5nLiBZb3UgcHJvdmlkZSBhCi10cmFuc2Zvcm1hdGlvbiBvZiB0aGUgZGF0YSBpbnRvIGEgbGluZS1vcmllbnRlZCB0ZXh0IGZvcm1hdCwgYW5kIGdpdAordHJhbnNmb3JtYXRpb24gb2YgdGhlIGRhdGEgaW50byBhIGxpbmUtb3JpZW50ZWQgdGV4dCBmb3JtYXQsIGFuZCBHaXQKIHVzZXMgaXRzIHJlZ3VsYXIgZGlmZiB0b29scyB0byBnZW5lcmF0ZSB0aGUgb3V0cHV0LiBUaGVyZSBhcmUgc2V2ZXJhbAogYWR2YW50YWdlcyB0byBjaG9vc2luZyB0aGlzIG1ldGhvZDoKIApAQCAtNjUwLDcgKzY1MCw3IEBACiAgICBvZHQydHh0KS4KIAogMi4gR2l0IGRpZmYgZmVhdHVyZXMuIEJ5IHBlcmZvcm1pbmcgb25seSB0aGUgdHJhbnNmb3JtYXRpb24gc3RlcAotICAgeW91cnNlbGYsIHlvdSBjYW4gc3RpbGwgdXRpbGl6ZSBtYW55IG9mIGdpdCdzIGRpZmYgZmVhdHVyZXMsCisgICB5b3Vyc2VsZiwgeW91IGNhbiBzdGlsbCB1dGlsaXplIG1hbnkgb2YgR2l0J3MgZGlmZiBmZWF0dXJlcywKICAgIGluY2x1ZGluZyBjb2xvcml6YXRpb24sIHdvcmQtZGlmZiwgYW5kIGNvbWJpbmVkIGRpZmZzIGZvciBtZXJnZXMuCiAKIDMuIENhY2hpbmcuIFRleHRjb252IGNhY2hpbmcgY2FuIHNwZWVkIHVwIHJlcGVhdGVkIGRpZmZzLCBzdWNoIGFzIHRob3NlCkBAIC02NzUsNyArNjc1LDcgQEAKICoucHMgLWRpZmYKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGlzIHdpbGwgY2F1c2UgZ2l0IHRvIGdlbmVyYXRlIGBCaW5hcnkgZmlsZXMgZGlmZmVyYCAob3IgYSBiaW5hcnkKK1RoaXMgd2lsbCBjYXVzZSBHaXQgdG8gZ2VuZXJhdGUgYEJpbmFyeSBmaWxlcyBkaWZmZXJgIChvciBhIGJpbmFyeQogcGF0Y2gsIGlmIGJpbmFyeSBwYXRjaGVzIGFyZSBlbmFibGVkKSBpbnN0ZWFkIG9mIGEgcmVndWxhciBkaWZmLgogCiBIb3dldmVyLCBvbmUgbWF5IGFsc28gd2FudCB0byBzcGVjaWZ5IG90aGVyIGRpZmYgZHJpdmVyIGF0dHJpYnV0ZXMuIEZvcgpAQCAtODMxLDcgKzgzMSw3IEBACiAKIFNldDo6CiAKLQlOb3RpY2UgYWxsIHR5cGVzIG9mIHBvdGVudGlhbCB3aGl0ZXNwYWNlIGVycm9ycyBrbm93biB0byBnaXQuCisJTm90aWNlIGFsbCB0eXBlcyBvZiBwb3RlbnRpYWwgd2hpdGVzcGFjZSBlcnJvcnMga25vd24gdG8gR2l0LgogCVRoZSB0YWIgd2lkdGggaXMgdGFrZW4gZnJvbSB0aGUgdmFsdWUgb2YgdGhlIGBjb3JlLndoaXRlc3BhY2VgCiAJY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KIApAQCAtODYzLDcgKzg2Myw3IEBACiBgZXhwb3J0LXN1YnN0YAogXl5eXl5eXl5eXl5eXl4KIAotSWYgdGhlIGF0dHJpYnV0ZSBgZXhwb3J0LXN1YnN0YCBpcyBzZXQgZm9yIGEgZmlsZSB0aGVuIGdpdCB3aWxsIGV4cGFuZAorSWYgdGhlIGF0dHJpYnV0ZSBgZXhwb3J0LXN1YnN0YCBpcyBzZXQgZm9yIGEgZmlsZSB0aGVuIEdpdCB3aWxsIGV4cGFuZAogc2V2ZXJhbCBwbGFjZWhvbGRlcnMgd2hlbiBhZGRpbmcgdGhpcyBmaWxlIHRvIGFuIGFyY2hpdmUuICBUaGUKIGV4cGFuc2lvbiBkZXBlbmRzIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgYSBjb21taXQgSUQsIGkuZS4sIGlmCiBsaW5rZ2l0OmdpdC1hcmNoaXZlWzFdIGhhcyBiZWVuIGdpdmVuIGEgdHJlZSBpbnN0ZWFkIG9mIGEgY29tbWl0IG9yIGEKQEAgLTk2MSw3ICs5NjEsNyBAQAogdGhlIGF0dHJpYnV0ZXMgZ2l2ZW4gdG8gcGF0aCBgdC9hYmNgIGFyZSBjb21wdXRlZCBhcyBmb2xsb3dzOgogCiAxLiBCeSBleGFtaW5pbmcgYHQvLmdpdGF0dHJpYnV0ZXNgICh3aGljaCBpcyBpbiB0aGUgc2FtZQotICAgZGlyZWN0b3J5IGFzIHRoZSBwYXRoIGluIHF1ZXN0aW9uKSwgZ2l0IGZpbmRzIHRoYXQgdGhlIGZpcnN0CisgICBkaXJlY3RvcnkgYXMgdGhlIHBhdGggaW4gcXVlc3Rpb24pLCBHaXQgZmluZHMgdGhhdCB0aGUgZmlyc3QKICAgIGxpbmUgbWF0Y2hlcy4gIGBtZXJnZWAgYXR0cmlidXRlIGlzIHNldC4gIEl0IGFsc28gZmluZHMgdGhhdAogICAgdGhlIHNlY29uZCBsaW5lIG1hdGNoZXMsIGFuZCBhdHRyaWJ1dGVzIGBmb29gIGFuZCBgYmFyYAogICAgYXJlIHVuc2V0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjbGkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRjbGkudHh0CmluZGV4IDNiYzE1MDAuLjlhYzUwODggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0Y2xpLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGNsaS50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdGNsaSAtIGdpdCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGFuZCBjb252ZW50aW9ucworZ2l0Y2xpIC0gR2l0IGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgYW5kIGNvbnZlbnRpb25zCiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtMTMsNyArMTMsNyBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVRoaXMgbWFudWFsIGRlc2NyaWJlcyB0aGUgY29udmVudGlvbiB1c2VkIHRocm91Z2hvdXQgZ2l0IENMSS4KK1RoaXMgbWFudWFsIGRlc2NyaWJlcyB0aGUgY29udmVudGlvbiB1c2VkIHRocm91Z2hvdXQgR2l0IENMSS4KIAogTWFueSBjb21tYW5kcyB0YWtlIHJldmlzaW9ucyAobW9zdCBvZnRlbiAiY29tbWl0cyIsIGJ1dCBzb21ldGltZXMKICJ0cmVlLWlzaCIsIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dCBhbmQgY29tbWFuZCkgYW5kIHBhdGhzIGFzIHRoZWlyCkBAIC0zMiw3ICszMiw3IEBACiAgICBiZXR3ZWVuIHRoZSBIRUFEIGNvbW1pdCBhbmQgdGhlIHdvcmsgdHJlZSBhcyBhIHdob2xlIi4gIFlvdSBjYW4gc2F5CiAgICBgZ2l0IGRpZmYgSEVBRCAtLWAgdG8gYXNrIGZvciB0aGUgbGF0dGVyLgogCi0gKiBXaXRob3V0IGRpc2FtYmlndWF0aW5nIGAtLWAsIGdpdCBtYWtlcyBhIHJlYXNvbmFibGUgZ3Vlc3MsIGJ1dCBlcnJvcnMKKyAqIFdpdGhvdXQgZGlzYW1iaWd1YXRpbmcgYC0tYCwgR2l0IG1ha2VzIGEgcmVhc29uYWJsZSBndWVzcywgYnV0IGVycm9ycwogICAgb3V0IGFuZCBhc2tpbmcgeW91IHRvIGRpc2FtYmlndWF0ZSB3aGVuIGFtYmlndW91cy4gIEUuZy4gaWYgeW91IGhhdmUgYQogICAgZmlsZSBjYWxsZWQgSEVBRCBpbiB5b3VyIHdvcmsgdHJlZSwgYGdpdCBkaWZmIEhFQURgIGlzIGFtYmlndW91cywgYW5kCiAgICB5b3UgaGF2ZSB0byBzYXkgZWl0aGVyIGBnaXQgZGlmZiBIRUFEIC0tYCBvciBgZ2l0IGRpZmYgLS0gSEVBRGAgdG8KQEAgLTYwLDkgKzYwLDkgQEAKIHlvdSB3aWxsLgogCiBIZXJlIGFyZSB0aGUgcnVsZXMgcmVnYXJkaW5nIHRoZSAiZmxhZ3MiIHRoYXQgeW91IHNob3VsZCBmb2xsb3cgd2hlbiB5b3UgYXJlCi1zY3JpcHRpbmcgZ2l0Ogorc2NyaXB0aW5nIEdpdDoKIAotICogaXQncyBwcmVmZXJyZWQgdG8gdXNlIHRoZSBub24gZGFzaGVkIGZvcm0gb2YgZ2l0IGNvbW1hbmRzLCB3aGljaCBtZWFucyB0aGF0CisgKiBpdCdzIHByZWZlcnJlZCB0byB1c2UgdGhlIG5vbiBkYXNoZWQgZm9ybSBvZiBHaXQgY29tbWFuZHMsIHdoaWNoIG1lYW5zIHRoYXQKICAgIHlvdSBzaG91bGQgcHJlZmVyIGBnaXQgZm9vYCB0byBgZ2l0LWZvb2AuCiAKICAqIHNwbGl0dGluZyBzaG9ydCBvcHRpb25zIHRvIHNlcGFyYXRlIHdvcmRzIChwcmVmZXIgYGdpdCBmb28gLWEgLWJgCkBAIC05MCw3ICs5MCw3IEBACiAKIEVOSEFOQ0VEIE9QVElPTiBQQVJTRVIKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUZyb20gdGhlIGdpdCAxLjUuNCBzZXJpZXMgYW5kIGZ1cnRoZXIsIG1hbnkgZ2l0IGNvbW1hbmRzIChub3QgYWxsIG9mIHRoZW0gYXQgdGhlCitGcm9tIHRoZSBHaXQgMS41LjQgc2VyaWVzIGFuZCBmdXJ0aGVyLCBtYW55IEdpdCBjb21tYW5kcyAobm90IGFsbCBvZiB0aGVtIGF0IHRoZQogdGltZSBvZiB0aGUgd3JpdGluZyB0aG91Z2gpIGNvbWUgd2l0aCBhbiBlbmhhbmNlZCBvcHRpb24gcGFyc2VyLgogCiBIZXJlIGlzIGEgbGlzdCBvZiB0aGUgZmFjaWxpdGllcyBwcm92aWRlZCBieSB0aGlzIG9wdGlvbiBwYXJzZXIuCkBAIC0xMDcsMTcgKzEwNywxOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBkZXNjcmliZSAtaAogdXNhZ2U6IGdpdCBkZXNjcmliZSBbb3B0aW9uc10gPGNvbW1pdHRpc2g+KgorICAgb3I6IGdpdCBkZXNjcmliZSBbb3B0aW9uc10gLS1kaXJ0eQogCiAgICAgLS1jb250YWlucyAgICAgICAgICAgIGZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQKICAgICAtLWRlYnVnICAgICAgICAgICAgICAgZGVidWcgc2VhcmNoIHN0cmF0ZWd5IG9uIHN0ZGVycgotICAgIC0tYWxsICAgICAgICAgICAgICAgICB1c2UgYW55IHJlZiBpbiAuZ2l0L3JlZnMKLSAgICAtLXRhZ3MgICAgICAgICAgICAgICAgdXNlIGFueSB0YWcgaW4gLmdpdC9yZWZzL3RhZ3MKLSAgICAtLWFiYnJldiBbPG4+XSAgICAgICAgdXNlIDxuPiBkaWdpdHMgdG8gZGlzcGxheSBTSEEtMXMKLSAgICAtLWNhbmRpZGF0ZXMgPG4+ICAgICAgY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKQorICAgIC0tYWxsICAgICAgICAgICAgICAgICB1c2UgYW55IHJlZgorICAgIC0tdGFncyAgICAgICAgICAgICAgICB1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZAorICAgIC0tbG9uZyAgICAgICAgICAgICAgICBhbHdheXMgdXNlIGxvbmcgZm9ybWF0CisgICAgLS1hYmJyZXZbPTxuPl0gICAgICAgIHVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLS1oZWxwLWFsbDo6Ci0JU29tZSBnaXQgY29tbWFuZHMgdGFrZSBvcHRpb25zIHRoYXQgYXJlIG9ubHkgdXNlZCBmb3IgcGx1bWJpbmcgb3IgdGhhdAorCVNvbWUgR2l0IGNvbW1hbmRzIHRha2Ugb3B0aW9ucyB0aGF0IGFyZSBvbmx5IHVzZWQgZm9yIHBsdW1iaW5nIG9yIHRoYXQKIAlhcmUgZGVwcmVjYXRlZCwgYW5kIHN1Y2ggb3B0aW9ucyBhcmUgaGlkZGVuIGZyb20gdGhlIGRlZmF1bHQgdXNhZ2UuIFRoaXMKIAlvcHRpb24gZ2l2ZXMgdGhlIGZ1bGwgbGlzdCBvZiBvcHRpb25zLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGNvcmUtdHV0b3JpYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRjb3JlLXR1dG9yaWFsLnR4dAppbmRleCA1MzI1YzVhLi5mNTM4YTg3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGNvcmUtdHV0b3JpYWwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0Y29yZS10dXRvcmlhbC50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdGNvcmUtdHV0b3JpYWwgLSBBIGdpdCBjb3JlIHR1dG9yaWFsIGZvciBkZXZlbG9wZXJzCitnaXRjb3JlLXR1dG9yaWFsIC0gQSBHaXQgY29yZSB0dXRvcmlhbCBmb3IgZGV2ZWxvcGVycwogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTEyLDE3ICsxMiwxNyBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVRoaXMgdHV0b3JpYWwgZXhwbGFpbnMgaG93IHRvIHVzZSB0aGUgImNvcmUiIGdpdCBjb21tYW5kcyB0byBzZXQgdXAgYW5kCi13b3JrIHdpdGggYSBnaXQgcmVwb3NpdG9yeS4KK1RoaXMgdHV0b3JpYWwgZXhwbGFpbnMgaG93IHRvIHVzZSB0aGUgImNvcmUiIEdpdCBjb21tYW5kcyB0byBzZXQgdXAgYW5kCit3b3JrIHdpdGggYSBHaXQgcmVwb3NpdG9yeS4KIAotSWYgeW91IGp1c3QgbmVlZCB0byB1c2UgZ2l0IGFzIGEgcmV2aXNpb24gY29udHJvbCBzeXN0ZW0geW91IG1heSBwcmVmZXIKLXRvIHN0YXJ0IHdpdGggIkEgVHV0b3JpYWwgSW50cm9kdWN0aW9uIHRvIEdJVCIgKGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10pIG9yCi1saW5rOnVzZXItbWFudWFsLmh0bWxbdGhlIEdJVCBVc2VyIE1hbnVhbF0uCitJZiB5b3UganVzdCBuZWVkIHRvIHVzZSBHaXQgYXMgYSByZXZpc2lvbiBjb250cm9sIHN5c3RlbSB5b3UgbWF5IHByZWZlcgordG8gc3RhcnQgd2l0aCAiQSBUdXRvcmlhbCBJbnRyb2R1Y3Rpb24gdG8gR2l0IiAobGlua2dpdDpnaXR0dXRvcmlhbFs3XSkgb3IKK2xpbms6dXNlci1tYW51YWwuaHRtbFt0aGUgR2l0IFVzZXIgTWFudWFsXS4KIAogSG93ZXZlciwgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGVzZSBsb3ctbGV2ZWwgdG9vbHMgY2FuIGJlIGhlbHBmdWwgaWYKLXlvdSB3YW50IHRvIHVuZGVyc3RhbmQgZ2l0J3MgaW50ZXJuYWxzLgoreW91IHdhbnQgdG8gdW5kZXJzdGFuZCBHaXQncyBpbnRlcm5hbHMuCiAKLVRoZSBjb3JlIGdpdCBpcyBvZnRlbiBjYWxsZWQgInBsdW1iaW5nIiwgd2l0aCB0aGUgcHJldHRpZXIgdXNlcgorVGhlIGNvcmUgR2l0IGlzIG9mdGVuIGNhbGxlZCAicGx1bWJpbmciLCB3aXRoIHRoZSBwcmV0dGllciB1c2VyCiBpbnRlcmZhY2VzIG9uIHRvcCBvZiBpdCBjYWxsZWQgInBvcmNlbGFpbiIuIFlvdSBtYXkgbm90IHdhbnQgdG8gdXNlIHRoZQogcGx1bWJpbmcgZGlyZWN0bHkgdmVyeSBvZnRlbiwgYnV0IGl0IGNhbiBiZSBnb29kIHRvIGtub3cgd2hhdCB0aGUKIHBsdW1iaW5nIGRvZXMgZm9yIHdoZW4gdGhlIHBvcmNlbGFpbiBpc24ndCBmbHVzaGluZy4KQEAgLTQwLDE5ICs0MCwxOSBAQAogc2tpcCBvbiB5b3VyIGZpcnN0IHJlYWRpbmcuCiAKIAotQ3JlYXRpbmcgYSBnaXQgcmVwb3NpdG9yeQorQ3JlYXRpbmcgYSBHaXQgcmVwb3NpdG9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DcmVhdGluZyBhIG5ldyBnaXQgcmVwb3NpdG9yeSBjb3VsZG4ndCBiZSBlYXNpZXI6IGFsbCBnaXQgcmVwb3NpdG9yaWVzIHN0YXJ0CitDcmVhdGluZyBhIG5ldyBHaXQgcmVwb3NpdG9yeSBjb3VsZG4ndCBiZSBlYXNpZXI6IGFsbCBHaXQgcmVwb3NpdG9yaWVzIHN0YXJ0CiBvdXQgZW1wdHksIGFuZCB0aGUgb25seSB0aGluZyB5b3UgbmVlZCB0byBkbyBpcyBmaW5kIHlvdXJzZWxmIGEKIHN1YmRpcmVjdG9yeSB0aGF0IHlvdSB3YW50IHRvIHVzZSBhcyBhIHdvcmtpbmcgdHJlZSAtIGVpdGhlciBhbiBlbXB0eQogb25lIGZvciBhIHRvdGFsbHkgbmV3IHByb2plY3QsIG9yIGFuIGV4aXN0aW5nIHdvcmtpbmcgdHJlZSB0aGF0IHlvdSB3YW50Ci10byBpbXBvcnQgaW50byBnaXQuCit0byBpbXBvcnQgaW50byBHaXQuCiAKIEZvciBvdXIgZmlyc3QgZXhhbXBsZSwgd2UncmUgZ29pbmcgdG8gc3RhcnQgYSB0b3RhbGx5IG5ldyByZXBvc2l0b3J5IGZyb20KIHNjcmF0Y2gsIHdpdGggbm8gcHJlLWV4aXN0aW5nIGZpbGVzLCBhbmQgd2UnbGwgY2FsbCBpdCAnZ2l0LXR1dG9yaWFsJy4KIFRvIHN0YXJ0IHVwLCBjcmVhdGUgYSBzdWJkaXJlY3RvcnkgZm9yIGl0LCBjaGFuZ2UgaW50byB0aGF0Ci1zdWJkaXJlY3RvcnksIGFuZCBpbml0aWFsaXplIHRoZSBnaXQgaW5mcmFzdHJ1Y3R1cmUgd2l0aCAnZ2l0IGluaXQnOgorc3ViZGlyZWN0b3J5LCBhbmQgaW5pdGlhbGl6ZSB0aGUgR2l0IGluZnJhc3RydWN0dXJlIHdpdGggJ2dpdCBpbml0JzoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIG1rZGlyIGdpdC10dXRvcmlhbApAQCAtNjAsMTMgKzYwLDEzIEBACiAkIGdpdCBpbml0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdG8gd2hpY2ggZ2l0IHdpbGwgcmVwbHkKK3RvIHdoaWNoIEdpdCB3aWxsIHJlcGx5CiAKIC0tLS0tLS0tLS0tLS0tLS0KIEluaXRpYWxpemVkIGVtcHR5IEdpdCByZXBvc2l0b3J5IGluIC5naXQvCiAtLS0tLS0tLS0tLS0tLS0tCiAKLXdoaWNoIGlzIGp1c3QgZ2l0J3Mgd2F5IG9mIHNheWluZyB0aGF0IHlvdSBoYXZlbid0IGJlZW4gZG9pbmcgYW55dGhpbmcKK3doaWNoIGlzIGp1c3QgR2l0J3Mgd2F5IG9mIHNheWluZyB0aGF0IHlvdSBoYXZlbid0IGJlZW4gZG9pbmcgYW55dGhpbmcKIHN0cmFuZ2UsIGFuZCB0aGF0IGl0IHdpbGwgaGF2ZSBjcmVhdGVkIGEgbG9jYWwgYC5naXRgIGRpcmVjdG9yeSBzZXR1cCBmb3IKIHlvdXIgbmV3IHByb2plY3QuIFlvdSB3aWxsIG5vdyBoYXZlIGEgYC5naXRgIGRpcmVjdG9yeSwgYW5kIHlvdSBjYW4KIGluc3BlY3QgdGhhdCB3aXRoICdscycuIEZvciB5b3VyIG5ldyBlbXB0eSBwcm9qZWN0LCBpdCBzaG91bGQgc2hvdyB5b3UKQEAgLTEwMiwxMyArMTAyLDEzIEBACiAKIEhvd2V2ZXIsIHRoaXMgaXMgb25seSBhIGNvbnZlbnRpb24sIGFuZCB5b3UgY2FuIG5hbWUgeW91ciBicmFuY2hlcwogYW55dGhpbmcgeW91IHdhbnQsIGFuZCBkb24ndCBoYXZlIHRvIGV2ZXIgZXZlbiAnaGF2ZScgYSBgbWFzdGVyYAotYnJhbmNoLiBBIG51bWJlciBvZiB0aGUgZ2l0IHRvb2xzIHdpbGwgYXNzdW1lIHRoYXQgYC5naXQvSEVBRGAgaXMKK2JyYW5jaC4gQSBudW1iZXIgb2YgdGhlIEdpdCB0b29scyB3aWxsIGFzc3VtZSB0aGF0IGAuZ2l0L0hFQURgIGlzCiB2YWxpZCwgdGhvdWdoLgogCiBbTk9URV0KLUFuICdvYmplY3QnIGlzIGlkZW50aWZpZWQgYnkgaXRzIDE2MC1iaXQgU0hBMSBoYXNoLCBha2EgJ29iamVjdCBuYW1lJywKK0FuICdvYmplY3QnIGlzIGlkZW50aWZpZWQgYnkgaXRzIDE2MC1iaXQgU0hBLTEgaGFzaCwgYWthICdvYmplY3QgbmFtZScsCiBhbmQgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IGlzIGFsd2F5cyB0aGUgNDAtYnl0ZSBoZXgKLXJlcHJlc2VudGF0aW9uIG9mIHRoYXQgU0hBMSBuYW1lLiBUaGUgZmlsZXMgaW4gdGhlIGByZWZzYAorcmVwcmVzZW50YXRpb24gb2YgdGhhdCBTSEEtMSBuYW1lLiBUaGUgZmlsZXMgaW4gdGhlIGByZWZzYAogc3ViZGlyZWN0b3J5IGFyZSBleHBlY3RlZCB0byBjb250YWluIHRoZXNlIGhleCByZWZlcmVuY2VzCiAodXN1YWxseSB3aXRoIGEgZmluYWwgYFxuYCBhdCB0aGUgZW5kKSwgYW5kIHlvdSBzaG91bGQgdGh1cwogZXhwZWN0IHRvIHNlZSBhIG51bWJlciBvZiA0MS1ieXRlIGZpbGVzIGNvbnRhaW5pbmcgdGhlc2UKQEAgLTExOSwxOCArMTE5LDE4IEBACiBBbiBhZHZhbmNlZCB1c2VyIG1heSB3YW50IHRvIHRha2UgYSBsb29rIGF0IGxpbmtnaXQ6Z2l0cmVwb3NpdG9yeS1sYXlvdXRbNV0KIGFmdGVyIGZpbmlzaGluZyB0aGlzIHR1dG9yaWFsLgogCi1Zb3UgaGF2ZSBub3cgY3JlYXRlZCB5b3VyIGZpcnN0IGdpdCByZXBvc2l0b3J5LiBPZiBjb3Vyc2UsIHNpbmNlIGl0J3MKK1lvdSBoYXZlIG5vdyBjcmVhdGVkIHlvdXIgZmlyc3QgR2l0IHJlcG9zaXRvcnkuIE9mIGNvdXJzZSwgc2luY2UgaXQncwogZW1wdHksIHRoYXQncyBub3QgdmVyeSB1c2VmdWwsIHNvIGxldCdzIHN0YXJ0IHBvcHVsYXRpbmcgaXQgd2l0aCBkYXRhLgogCiAKLVBvcHVsYXRpbmcgYSBnaXQgcmVwb3NpdG9yeQorUG9wdWxhdGluZyBhIEdpdCByZXBvc2l0b3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2UnbGwga2VlcCB0aGlzIHNpbXBsZSBhbmQgc3R1cGlkLCBzbyB3ZSdsbCBzdGFydCBvZmYgd2l0aCBwb3B1bGF0aW5nIGEKIGZldyB0cml2aWFsIGZpbGVzIGp1c3QgdG8gZ2V0IGEgZmVlbCBmb3IgaXQuCiAKIFN0YXJ0IG9mZiB3aXRoIGp1c3QgY3JlYXRpbmcgYW55IHJhbmRvbSBmaWxlcyB0aGF0IHlvdSB3YW50IHRvIG1haW50YWluCi1pbiB5b3VyIGdpdCByZXBvc2l0b3J5LiBXZSdsbCBzdGFydCBvZmYgd2l0aCBhIGZldyBiYWQgZXhhbXBsZXMsIGp1c3QgdG8KK2luIHlvdXIgR2l0IHJlcG9zaXRvcnkuIFdlJ2xsIHN0YXJ0IG9mZiB3aXRoIGEgZmV3IGJhZCBleGFtcGxlcywganVzdCB0bwogZ2V0IGEgZmVlbCBmb3IgaG93IHRoaXMgd29ya3M6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTQ2LDcgKzE0Niw3IEBACiAKICAtIGNvbW1pdCB0aGF0IGluZGV4IGZpbGUgYXMgYW4gb2JqZWN0LgogCi1UaGUgZmlyc3Qgc3RlcCBpcyB0cml2aWFsOiB3aGVuIHlvdSB3YW50IHRvIHRlbGwgZ2l0IGFib3V0IGFueSBjaGFuZ2VzCitUaGUgZmlyc3Qgc3RlcCBpcyB0cml2aWFsOiB3aGVuIHlvdSB3YW50IHRvIHRlbGwgR2l0IGFib3V0IGFueSBjaGFuZ2VzCiB0byB5b3VyIHdvcmtpbmcgdHJlZSwgeW91IHVzZSB0aGUgJ2dpdCB1cGRhdGUtaW5kZXgnIHByb2dyYW0uIFRoYXQKIHByb2dyYW0gbm9ybWFsbHkganVzdCB0YWtlcyBhIGxpc3Qgb2YgZmlsZW5hbWVzIHlvdSB3YW50IHRvIHVwZGF0ZSwgYnV0CiB0byBhdm9pZCB0cml2aWFsIG1pc3Rha2VzLCBpdCByZWZ1c2VzIHRvIGFkZCBuZXcgZW50cmllcyB0byB0aGUgaW5kZXgKQEAgLTE2MCwxMCArMTYwLDEwIEBACiAkIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgaGVsbG8gZXhhbXBsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWFuZCB5b3UgaGF2ZSBub3cgdG9sZCBnaXQgdG8gdHJhY2sgdGhvc2UgdHdvIGZpbGVzLgorYW5kIHlvdSBoYXZlIG5vdyB0b2xkIEdpdCB0byB0cmFjayB0aG9zZSB0d28gZmlsZXMuCiAKIEluIGZhY3QsIGFzIHlvdSBkaWQgdGhhdCwgaWYgeW91IG5vdyBsb29rIGludG8geW91ciBvYmplY3QgZGlyZWN0b3J5LAoteW91J2xsIG5vdGljZSB0aGF0IGdpdCB3aWxsIGhhdmUgYWRkZWQgdHdvIG5ldyBvYmplY3RzIHRvIHRoZSBvYmplY3QKK3lvdSdsbCBub3RpY2UgdGhhdCBHaXQgd2lsbCBoYXZlIGFkZGVkIHR3byBuZXcgb2JqZWN0cyB0byB0aGUgb2JqZWN0CiBkYXRhYmFzZS4gSWYgeW91IGRpZCBleGFjdGx5IHRoZSBzdGVwcyBhYm92ZSwgeW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBkbwogCiAKQEAgLTE4OSw3ICsxODksNyBAQAogLS0tLS0tLS0tLS0tLS0tLQogCiB3aGVyZSB0aGUgYC10YCB0ZWxscyAnZ2l0IGNhdC1maWxlJyB0byB0ZWxsIHlvdSB3aGF0IHRoZSAidHlwZSIgb2YgdGhlCi1vYmplY3QgaXMuIGdpdCB3aWxsIHRlbGwgeW91IHRoYXQgeW91IGhhdmUgYSAiYmxvYiIgb2JqZWN0IChpLmUuLCBqdXN0IGEKK29iamVjdCBpcy4gR2l0IHdpbGwgdGVsbCB5b3UgdGhhdCB5b3UgaGF2ZSBhICJibG9iIiBvYmplY3QgKGkuZS4sIGp1c3QgYQogcmVndWxhciBmaWxlKSwgYW5kIHlvdSBjYW4gc2VlIHRoZSBjb250ZW50cyB3aXRoCiAKIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTIxNCwyOCArMjE0LDI4IEBACiBsb29rIGF0IHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMsIGFuZCB0eXBpbmcgbG9uZyA0MC1jaGFyYWN0ZXIgaGV4CiBuYW1lcyBpcyBub3Qgc29tZXRoaW5nIHlvdSdkIG5vcm1hbGx5IHdhbnQgdG8gZG8uIFRoZSBhYm92ZSBkaWdyZXNzaW9uCiB3YXMganVzdCB0byBzaG93IHRoYXQgJ2dpdCB1cGRhdGUtaW5kZXgnIGRpZCBzb21ldGhpbmcgbWFnaWNhbCwgYW5kCi1hY3R1YWxseSBzYXZlZCBhd2F5IHRoZSBjb250ZW50cyBvZiB5b3VyIGZpbGVzIGludG8gdGhlIGdpdCBvYmplY3QKK2FjdHVhbGx5IHNhdmVkIGF3YXkgdGhlIGNvbnRlbnRzIG9mIHlvdXIgZmlsZXMgaW50byB0aGUgR2l0IG9iamVjdAogZGF0YWJhc2UuCiAKIFVwZGF0aW5nIHRoZSBpbmRleCBkaWQgc29tZXRoaW5nIGVsc2UgdG9vOiBpdCBjcmVhdGVkIGEgYC5naXQvaW5kZXhgCiBmaWxlLiBUaGlzIGlzIHRoZSBpbmRleCB0aGF0IGRlc2NyaWJlcyB5b3VyIGN1cnJlbnQgd29ya2luZyB0cmVlLCBhbmQKIHNvbWV0aGluZyB5b3Ugc2hvdWxkIGJlIHZlcnkgYXdhcmUgb2YuIEFnYWluLCB5b3Ugbm9ybWFsbHkgbmV2ZXIgd29ycnkKIGFib3V0IHRoZSBpbmRleCBmaWxlIGl0c2VsZiwgYnV0IHlvdSBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIGZhY3QgdGhhdAoteW91IGhhdmUgbm90IGFjdHVhbGx5IHJlYWxseSAiY2hlY2tlZCBpbiIgeW91ciBmaWxlcyBpbnRvIGdpdCBzbyBmYXIsCi15b3UndmUgb25seSAqdG9sZCogZ2l0IGFib3V0IHRoZW0uCit5b3UgaGF2ZSBub3QgYWN0dWFsbHkgcmVhbGx5ICJjaGVja2VkIGluIiB5b3VyIGZpbGVzIGludG8gR2l0IHNvIGZhciwKK3lvdSd2ZSBvbmx5ICp0b2xkKiBHaXQgYWJvdXQgdGhlbS4KIAotSG93ZXZlciwgc2luY2UgZ2l0IGtub3dzIGFib3V0IHRoZW0sIHlvdSBjYW4gbm93IHN0YXJ0IHVzaW5nIHNvbWUgb2YgdGhlCi1tb3N0IGJhc2ljIGdpdCBjb21tYW5kcyB0byBtYW5pcHVsYXRlIHRoZSBmaWxlcyBvciBsb29rIGF0IHRoZWlyIHN0YXR1cy4KK0hvd2V2ZXIsIHNpbmNlIEdpdCBrbm93cyBhYm91dCB0aGVtLCB5b3UgY2FuIG5vdyBzdGFydCB1c2luZyBzb21lIG9mIHRoZQorbW9zdCBiYXNpYyBHaXQgY29tbWFuZHMgdG8gbWFuaXB1bGF0ZSB0aGUgZmlsZXMgb3IgbG9vayBhdCB0aGVpciBzdGF0dXMuCiAKLUluIHBhcnRpY3VsYXIsIGxldCdzIG5vdCBldmVuIGNoZWNrIGluIHRoZSB0d28gZmlsZXMgaW50byBnaXQgeWV0LCB3ZSdsbAorSW4gcGFydGljdWxhciwgbGV0J3Mgbm90IGV2ZW4gY2hlY2sgaW4gdGhlIHR3byBmaWxlcyBpbnRvIEdpdCB5ZXQsIHdlJ2xsCiBzdGFydCBvZmYgYnkgYWRkaW5nIGFub3RoZXIgbGluZSB0byBgaGVsbG9gIGZpcnN0OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZWNobyAiSXQncyBhIG5ldyBkYXkgZm9yIGdpdCIgPj5oZWxsbwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWFuZCB5b3UgY2FuIG5vdywgc2luY2UgeW91IHRvbGQgZ2l0IGFib3V0IHRoZSBwcmV2aW91cyBzdGF0ZSBvZiBgaGVsbG9gLCBhc2sKLWdpdCB3aGF0IGhhcyBjaGFuZ2VkIGluIHRoZSB0cmVlIGNvbXBhcmVkIHRvIHlvdXIgb2xkIGluZGV4LCB1c2luZyB0aGUKK2FuZCB5b3UgY2FuIG5vdywgc2luY2UgeW91IHRvbGQgR2l0IGFib3V0IHRoZSBwcmV2aW91cyBzdGF0ZSBvZiBgaGVsbG9gLCBhc2sKK0dpdCB3aGF0IGhhcyBjaGFuZ2VkIGluIHRoZSB0cmVlIGNvbXBhcmVkIHRvIHlvdXIgb2xkIGluZGV4LCB1c2luZyB0aGUKICdnaXQgZGlmZi1maWxlcycgY29tbWFuZDoKIAogLS0tLS0tLS0tLS0tCkBAIC0yODIsMTEgKzI4MiwxMSBAQAogLS0tLS0tLS0tLS0tCiAKIAotQ29tbWl0dGluZyBnaXQgc3RhdGUKK0NvbW1pdHRpbmcgR2l0IHN0YXRlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Ob3csIHdlIHdhbnQgdG8gZ28gdG8gdGhlIG5leHQgc3RhZ2UgaW4gZ2l0LCB3aGljaCBpcyB0byB0YWtlIHRoZSBmaWxlcwotdGhhdCBnaXQga25vd3MgYWJvdXQgaW4gdGhlIGluZGV4LCBhbmQgY29tbWl0IHRoZW0gYXMgYSByZWFsIHRyZWUuIFdlIGRvCitOb3csIHdlIHdhbnQgdG8gZ28gdG8gdGhlIG5leHQgc3RhZ2UgaW4gR2l0LCB3aGljaCBpcyB0byB0YWtlIHRoZSBmaWxlcwordGhhdCBHaXQga25vd3MgYWJvdXQgaW4gdGhlIGluZGV4LCBhbmQgY29tbWl0IHRoZW0gYXMgYSByZWFsIHRyZWUuIFdlIGRvCiB0aGF0IGluIHR3byBwaGFzZXM6IGNyZWF0aW5nIGEgJ3RyZWUnIG9iamVjdCwgYW5kIGNvbW1pdHRpbmcgdGhhdCAndHJlZScKIG9iamVjdCBhcyBhICdjb21taXQnIG9iamVjdCB0b2dldGhlciB3aXRoIGFuIGV4cGxhbmF0aW9uIG9mIHdoYXQgdGhlCiB0cmVlIHdhcyBhbGwgYWJvdXQsIGFsb25nIHdpdGggaW5mb3JtYXRpb24gb2YgaG93IHdlIGNhbWUgdG8gdGhhdCBzdGF0ZS4KQEAgLTI5Niw3ICsyOTYsNyBAQAogY3VycmVudCBpbmRleCBzdGF0ZSwgYW5kIHdyaXRlIGFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGF0IHdob2xlCiBpbmRleC4gSW4gb3RoZXIgd29yZHMsIHdlJ3JlIG5vdyB0eWluZyB0b2dldGhlciBhbGwgdGhlIGRpZmZlcmVudAogZmlsZW5hbWVzIHdpdGggdGhlaXIgY29udGVudHMgKGFuZCB0aGVpciBwZXJtaXNzaW9ucyksIGFuZCB3ZSdyZQotY3JlYXRpbmcgdGhlIGVxdWl2YWxlbnQgb2YgYSBnaXQgImRpcmVjdG9yeSIgb2JqZWN0OgorY3JlYXRpbmcgdGhlIGVxdWl2YWxlbnQgb2YgYSBHaXQgImRpcmVjdG9yeSIgb2JqZWN0OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IHdyaXRlLXRyZWUKQEAgLTQxNSw5ICs0MTUsOSBAQAogZmxhZyByZWFsbHkgb25seSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpbGUgKmNvbnRlbnRzKiB0byBiZSBjb21wYXJlZAogY29tZSBmcm9tIHRoZSB3b3JraW5nIHRyZWUgb3Igbm90LgogCi1UaGlzIGlzIG5vdCBoYXJkIHRvIHVuZGVyc3RhbmQsIGFzIHNvb24gYXMgeW91IHJlYWxpemUgdGhhdCBnaXQgc2ltcGx5CitUaGlzIGlzIG5vdCBoYXJkIHRvIHVuZGVyc3RhbmQsIGFzIHNvb24gYXMgeW91IHJlYWxpemUgdGhhdCBHaXQgc2ltcGx5CiBuZXZlciBrbm93cyAob3IgY2FyZXMpIGFib3V0IGZpbGVzIHRoYXQgaXQgaXMgbm90IHRvbGQgYWJvdXQKLWV4cGxpY2l0bHkuIGdpdCB3aWxsIG5ldmVyIGdvICpsb29raW5nKiBmb3IgZmlsZXMgdG8gY29tcGFyZSwgaXQKK2V4cGxpY2l0bHkuIEdpdCB3aWxsIG5ldmVyIGdvICpsb29raW5nKiBmb3IgZmlsZXMgdG8gY29tcGFyZSwgaXQKIGV4cGVjdHMgeW91IHRvIHRlbGwgaXQgd2hhdCB0aGUgZmlsZXMgYXJlLCBhbmQgdGhhdCdzIHdoYXQgdGhlIGluZGV4CiBpcyB0aGVyZSBmb3IuCiA9PT09PT09PT09PT09PT09CkBAIC00MzMsNyArNDMzLDcgQEAKICQgZ2l0IHVwZGF0ZS1pbmRleCBoZWxsbwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLShub3RlIGhvdyB3ZSBkaWRuJ3QgbmVlZCB0aGUgYC0tYWRkYCBmbGFnIHRoaXMgdGltZSwgc2luY2UgZ2l0IGtuZXcKKyhub3RlIGhvdyB3ZSBkaWRuJ3QgbmVlZCB0aGUgYC0tYWRkYCBmbGFnIHRoaXMgdGltZSwgc2luY2UgR2l0IGtuZXcKIGFib3V0IHRoZSBmaWxlIGFscmVhZHkpLgogCiBOb3RlIHdoYXQgaGFwcGVucyB0byB0aGUgZGlmZmVyZW50ICdnaXQgZGlmZi17YXN0ZXJpc2t9JyB2ZXJzaW9ucyBoZXJlLgpAQCAtNDY0LDcgKzQ2NCw3IEBACiBjYW4ganVzdCBsZWF2ZSBhbiBlbXB0eSBtZXNzYWdlLiBPdGhlcndpc2UgYGdpdCBjb21taXRgIHdpbGwgY29tbWl0CiB0aGUgY2hhbmdlIGZvciB5b3UuCiAKLVlvdSd2ZSBub3cgbWFkZSB5b3VyIGZpcnN0IHJlYWwgZ2l0IGNvbW1pdC4gQW5kIGlmIHlvdSdyZSBpbnRlcmVzdGVkIGluCitZb3UndmUgbm93IG1hZGUgeW91ciBmaXJzdCByZWFsIEdpdCBjb21taXQuIEFuZCBpZiB5b3UncmUgaW50ZXJlc3RlZCBpbgogbG9va2luZyBhdCB3aGF0IGBnaXQgY29tbWl0YCByZWFsbHkgZG9lcywgZmVlbCBmcmVlIHRvIGludmVzdGlnYXRlOgogaXQncyBhIGZldyB2ZXJ5IHNpbXBsZSBzaGVsbCBzY3JpcHRzIHRvIGdlbmVyYXRlIHRoZSBoZWxwZnVsICg/KSBjb21taXQKIG1lc3NhZ2UgaGVhZGVycywgYW5kIGEgZmV3IG9uZS1saW5lcnMgdGhhdCBhY3R1YWxseSBkbyB0aGUKQEAgLTUzNSw3ICs1MzUsNyBAQAogSW4gZmFjdCwgdG9nZXRoZXIgd2l0aCB0aGUgJ2dpdCByZXYtbGlzdCcgcHJvZ3JhbSAod2hpY2ggZ2VuZXJhdGVzIGEKIGxpc3Qgb2YgcmV2aXNpb25zKSwgJ2dpdCBkaWZmLXRyZWUnIGVuZHMgdXAgYmVpbmcgYSB2ZXJpdGFibGUgZm91bnQgb2YKIGNoYW5nZXMuIEEgdHJpdmlhbCAoYnV0IHZlcnkgdXNlZnVsKSBzY3JpcHQgY2FsbGVkICdnaXQgd2hhdGNoYW5nZWQnIGlzCi1pbmNsdWRlZCB3aXRoIGdpdCB3aGljaCBkb2VzIGV4YWN0bHkgdGhpcywgYW5kIHNob3dzIGEgbG9nIG9mIHJlY2VudAoraW5jbHVkZWQgd2l0aCBHaXQgd2hpY2ggZG9lcyBleGFjdGx5IHRoaXMsIGFuZCBzaG93cyBhIGxvZyBvZiByZWNlbnQKIGFjdGl2aXRpZXMuCiAKIFRvIHNlZSB0aGUgd2hvbGUgaGlzdG9yeSBvZiBvdXIgcGl0aWZ1bCBsaXR0bGUgZ2l0LXR1dG9yaWFsIHByb2plY3QsIHlvdQpAQCAtNTYzLDE5ICs1NjMsMTkgQEAKIGNhbiBzdGlsbCBzaG93IGl0IGZvciBlYWNoIGNvbW1hbmQganVzdCBhZGRpbmcgdGhlIGAtLXJvb3RgIG9wdGlvbiwKIHdoaWNoIGlzIGEgZmxhZyBmb3IgJ2dpdCBkaWZmLXRyZWUnIGFjY2VwdGVkIGJ5IGJvdGggY29tbWFuZHMuCiAKLVdpdGggdGhhdCwgeW91IHNob3VsZCBub3cgYmUgaGF2aW5nIHNvbWUgaW5rbGluZyBvZiB3aGF0IGdpdCBkb2VzLCBhbmQKK1dpdGggdGhhdCwgeW91IHNob3VsZCBub3cgYmUgaGF2aW5nIHNvbWUgaW5rbGluZyBvZiB3aGF0IEdpdCBkb2VzLCBhbmQKIGNhbiBleHBsb3JlIG9uIHlvdXIgb3duLgogCiBbTk9URV0KIE1vc3QgbGlrZWx5LCB5b3UgYXJlIG5vdCBkaXJlY3RseSB1c2luZyB0aGUgY29yZQotZ2l0IFBsdW1iaW5nIGNvbW1hbmRzLCBidXQgdXNpbmcgUG9yY2VsYWluIHN1Y2ggYXMgJ2dpdCBhZGQnLCBgZ2l0LXJtJworR2l0IFBsdW1iaW5nIGNvbW1hbmRzLCBidXQgdXNpbmcgUG9yY2VsYWluIHN1Y2ggYXMgJ2dpdCBhZGQnLCBgZ2l0LXJtJwogYW5kIGBnaXQtY29tbWl0Jy4KIAogCiBUYWdnaW5nIGEgdmVyc2lvbgogLS0tLS0tLS0tLS0tLS0tLS0KIAotSW4gZ2l0LCB0aGVyZSBhcmUgdHdvIGtpbmRzIG9mIHRhZ3MsIGEgImxpZ2h0IiBvbmUsIGFuZCBhbiAiYW5ub3RhdGVkIHRhZyIuCitJbiBHaXQsIHRoZXJlIGFyZSB0d28ga2luZHMgb2YgdGFncywgYSAibGlnaHQiIG9uZSwgYW5kIGFuICJhbm5vdGF0ZWQgdGFnIi4KIAogQSAibGlnaHQiIHRhZyBpcyB0ZWNobmljYWxseSBub3RoaW5nIG1vcmUgdGhhbiBhIGJyYW5jaCwgZXhjZXB0IHdlIHB1dAogaXQgaW4gdGhlIGAuZ2l0L3JlZnMvdGFncy9gIHN1YmRpcmVjdG9yeSBpbnN0ZWFkIG9mIGNhbGxpbmcgaXQgYSBgaGVhZGAuCkBAIC01OTgsNyArNTk4LDcgQEAKIHN0dWZmLCB5b3UgY2FuIHVzZSB5b3VyIHRhZyBhcyBhbiAiYW5jaG9yLXBvaW50IiB0byBzZWUgd2hhdCBoYXMgY2hhbmdlZAogc2luY2UgeW91IHRhZ2dlZCBpdC4KIAotQW4gImFubm90YXRlZCB0YWciIGlzIGFjdHVhbGx5IGEgcmVhbCBnaXQgb2JqZWN0LCBhbmQgY29udGFpbnMgbm90IG9ubHkgYQorQW4gImFubm90YXRlZCB0YWciIGlzIGFjdHVhbGx5IGEgcmVhbCBHaXQgb2JqZWN0LCBhbmQgY29udGFpbnMgbm90IG9ubHkgYQogcG9pbnRlciB0byB0aGUgc3RhdGUgeW91IHdhbnQgdG8gdGFnLCBidXQgYWxzbyBhIHNtYWxsIHRhZyBuYW1lIGFuZAogbWVzc2FnZSwgYWxvbmcgd2l0aCBvcHRpb25hbGx5IGEgUEdQIHNpZ25hdHVyZSB0aGF0IHNheXMgdGhhdCB5ZXMsCiB5b3UgcmVhbGx5IGRpZApAQCAtNjIzLDE3ICs2MjMsMTcgQEAKIENvcHlpbmcgcmVwb3NpdG9yaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1naXQgcmVwb3NpdG9yaWVzIGFyZSBub3JtYWxseSB0b3RhbGx5IHNlbGYtc3VmZmljaWVudCBhbmQgcmVsb2NhdGFibGUuCitHaXQgcmVwb3NpdG9yaWVzIGFyZSBub3JtYWxseSB0b3RhbGx5IHNlbGYtc3VmZmljaWVudCBhbmQgcmVsb2NhdGFibGUuCiBVbmxpa2UgQ1ZTLCBmb3IgZXhhbXBsZSwgdGhlcmUgaXMgbm8gc2VwYXJhdGUgbm90aW9uIG9mCi0icmVwb3NpdG9yeSIgYW5kICJ3b3JraW5nIHRyZWUiLiBBIGdpdCByZXBvc2l0b3J5IG5vcm1hbGx5ICppcyogdGhlCi13b3JraW5nIHRyZWUsIHdpdGggdGhlIGxvY2FsIGdpdCBpbmZvcm1hdGlvbiBoaWRkZW4gaW4gdGhlIGAuZ2l0YAorInJlcG9zaXRvcnkiIGFuZCAid29ya2luZyB0cmVlIi4gQSBHaXQgcmVwb3NpdG9yeSBub3JtYWxseSAqaXMqIHRoZQord29ya2luZyB0cmVlLCB3aXRoIHRoZSBsb2NhbCBHaXQgaW5mb3JtYXRpb24gaGlkZGVuIGluIHRoZSBgLmdpdGAKIHN1YmRpcmVjdG9yeS4gVGhlcmUgaXMgbm90aGluZyBlbHNlLiBXaGF0IHlvdSBzZWUgaXMgd2hhdCB5b3UgZ290LgogCiBbTk9URV0KLVlvdSBjYW4gdGVsbCBnaXQgdG8gc3BsaXQgdGhlIGdpdCBpbnRlcm5hbCBpbmZvcm1hdGlvbiBmcm9tCitZb3UgY2FuIHRlbGwgR2l0IHRvIHNwbGl0IHRoZSBHaXQgaW50ZXJuYWwgaW5mb3JtYXRpb24gZnJvbQogdGhlIGRpcmVjdG9yeSB0aGF0IGl0IHRyYWNrcywgYnV0IHdlJ2xsIGlnbm9yZSB0aGF0IGZvciBub3c6IGl0J3Mgbm90CiBob3cgbm9ybWFsIHByb2plY3RzIHdvcmssIGFuZCBpdCdzIHJlYWxseSBvbmx5IG1lYW50IGZvciBzcGVjaWFsIHVzZXMuCi1TbyB0aGUgbWVudGFsIG1vZGVsIG9mICJ0aGUgZ2l0IGluZm9ybWF0aW9uIGlzIGFsd2F5cyB0aWVkIGRpcmVjdGx5IHRvCitTbyB0aGUgbWVudGFsIG1vZGVsIG9mICJ0aGUgR2l0IGluZm9ybWF0aW9uIGlzIGFsd2F5cyB0aWVkIGRpcmVjdGx5IHRvCiB0aGUgd29ya2luZyB0cmVlIHRoYXQgaXQgZGVzY3JpYmVzIiBtYXkgbm90IGJlIHRlY2huaWNhbGx5IDEwMCUKIGFjY3VyYXRlLCBidXQgaXQncyBhIGdvb2QgbW9kZWwgZm9yIGFsbCBub3JtYWwgdXNlLgogCkBAIC02NDksMTMgKzY0OSwxMyBAQAogYW5kIGl0IHdpbGwgYmUgZ29uZS4gVGhlcmUncyBubyBleHRlcm5hbCByZXBvc2l0b3J5LCBhbmQgdGhlcmUncyBubwogaGlzdG9yeSBvdXRzaWRlIHRoZSBwcm9qZWN0IHlvdSBjcmVhdGVkLgogCi0gLSBpZiB5b3Ugd2FudCB0byBtb3ZlIG9yIGR1cGxpY2F0ZSBhIGdpdCByZXBvc2l0b3J5LCB5b3UgY2FuIGRvIHNvLiBUaGVyZQorIC0gaWYgeW91IHdhbnQgdG8gbW92ZSBvciBkdXBsaWNhdGUgYSBHaXQgcmVwb3NpdG9yeSwgeW91IGNhbiBkbyBzby4gVGhlcmUKICAgIGlzICdnaXQgY2xvbmUnIGNvbW1hbmQsIGJ1dCBpZiBhbGwgeW91IHdhbnQgdG8gZG8gaXMganVzdCB0bwogICAgY3JlYXRlIGEgY29weSBvZiB5b3VyIHJlcG9zaXRvcnkgKHdpdGggYWxsIHRoZSBmdWxsIGhpc3RvcnkgdGhhdAogICAgd2VudCBhbG9uZyB3aXRoIGl0KSwgeW91IGNhbiBkbyBzbyB3aXRoIGEgcmVndWxhcgogICAgYGNwIC1hIGdpdC10dXRvcmlhbCBuZXctZ2l0LXR1dG9yaWFsYC4KICsKLU5vdGUgdGhhdCB3aGVuIHlvdSd2ZSBtb3ZlZCBvciBjb3BpZWQgYSBnaXQgcmVwb3NpdG9yeSwgeW91ciBnaXQgaW5kZXgKK05vdGUgdGhhdCB3aGVuIHlvdSd2ZSBtb3ZlZCBvciBjb3BpZWQgYSBHaXQgcmVwb3NpdG9yeSwgeW91ciBHaXQgaW5kZXgKIGZpbGUgKHdoaWNoIGNhY2hlcyB2YXJpb3VzIGluZm9ybWF0aW9uLCBub3RhYmx5IHNvbWUgb2YgdGhlICJzdGF0IgogaW5mb3JtYXRpb24gZm9yIHRoZSBmaWxlcyBpbnZvbHZlZCkgd2lsbCBsaWtlbHkgbmVlZCB0byBiZSByZWZyZXNoZWQuCiBTbyBhZnRlciB5b3UgZG8gYSBgY3AgLWFgIHRvIGNyZWF0ZSBhIG5ldyBjb3B5LCB5b3UnbGwgd2FudCB0byBkbwpAQCAtNjY3LDcgKzY2Nyw3IEBACiBpbiB0aGUgbmV3IHJlcG9zaXRvcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IGZpbGUgaXMgdXAtdG8tZGF0ZS4KIAogTm90ZSB0aGF0IHRoZSBzZWNvbmQgcG9pbnQgaXMgdHJ1ZSBldmVuIGFjcm9zcyBtYWNoaW5lcy4gWW91IGNhbgotZHVwbGljYXRlIGEgcmVtb3RlIGdpdCByZXBvc2l0b3J5IHdpdGggKmFueSogcmVndWxhciBjb3B5IG1lY2hhbmlzbSwgYmUgaXQKK2R1cGxpY2F0ZSBhIHJlbW90ZSBHaXQgcmVwb3NpdG9yeSB3aXRoICphbnkqIHJlZ3VsYXIgY29weSBtZWNoYW5pc20sIGJlIGl0CiAnc2NwJywgJ3JzeW5jJyBvciAnd2dldCcuCiAKIFdoZW4gY29weWluZyBhIHJlbW90ZSByZXBvc2l0b3J5LCB5b3UnbGwgd2FudCB0byBhdCBhIG1pbmltdW0gdXBkYXRlIHRoZQpAQCAtNjk0LDIzICs2OTQsMjMgQEAKICQgZ2l0IHJlc2V0CiAtLS0tLS0tLS0tLS0tLS0tCiAKLWFuZCBpbiBmYWN0IGEgbG90IG9mIHRoZSBjb21tb24gZ2l0IGNvbW1hbmQgY29tYmluYXRpb25zIGNhbiBiZSBzY3JpcHRlZAorYW5kIGluIGZhY3QgYSBsb3Qgb2YgdGhlIGNvbW1vbiBHaXQgY29tbWFuZCBjb21iaW5hdGlvbnMgY2FuIGJlIHNjcmlwdGVkCiB3aXRoIHRoZSBgZ2l0IHh5emAgaW50ZXJmYWNlcy4gIFlvdSBjYW4gbGVhcm4gdGhpbmdzIGJ5IGp1c3QgbG9va2luZwogYXQgd2hhdCB0aGUgdmFyaW91cyBnaXQgc2NyaXB0cyBkby4gIEZvciBleGFtcGxlLCBgZ2l0IHJlc2V0YCB1c2VkIHRvIGJlCiB0aGUgYWJvdmUgdHdvIGxpbmVzIGltcGxlbWVudGVkIGluICdnaXQgcmVzZXQnLCBidXQgc29tZSB0aGluZ3MgbGlrZQogJ2dpdCBzdGF0dXMnIGFuZCAnZ2l0IGNvbW1pdCcgYXJlIHNsaWdodGx5IG1vcmUgY29tcGxleCBzY3JpcHRzIGFyb3VuZAotdGhlIGJhc2ljIGdpdCBjb21tYW5kcy4KK3RoZSBiYXNpYyBHaXQgY29tbWFuZHMuCiAKIE1hbnkgKG1vc3Q/KSBwdWJsaWMgcmVtb3RlIHJlcG9zaXRvcmllcyB3aWxsIG5vdCBjb250YWluIGFueSBvZgogdGhlIGNoZWNrZWQgb3V0IGZpbGVzIG9yIGV2ZW4gYW4gaW5kZXggZmlsZSwgYW5kIHdpbGwgKm9ubHkqIGNvbnRhaW4gdGhlCi1hY3R1YWwgY29yZSBnaXQgZmlsZXMuIFN1Y2ggYSByZXBvc2l0b3J5IHVzdWFsbHkgZG9lc24ndCBldmVuIGhhdmUgdGhlCi1gLmdpdGAgc3ViZGlyZWN0b3J5LCBidXQgaGFzIGFsbCB0aGUgZ2l0IGZpbGVzIGRpcmVjdGx5IGluIHRoZQorYWN0dWFsIGNvcmUgR2l0IGZpbGVzLiBTdWNoIGEgcmVwb3NpdG9yeSB1c3VhbGx5IGRvZXNuJ3QgZXZlbiBoYXZlIHRoZQorYC5naXRgIHN1YmRpcmVjdG9yeSwgYnV0IGhhcyBhbGwgdGhlIEdpdCBmaWxlcyBkaXJlY3RseSBpbiB0aGUKIHJlcG9zaXRvcnkuCiAKLVRvIGNyZWF0ZSB5b3VyIG93biBsb2NhbCBsaXZlIGNvcHkgb2Ygc3VjaCBhICJyYXciIGdpdCByZXBvc2l0b3J5LCB5b3UnZAorVG8gY3JlYXRlIHlvdXIgb3duIGxvY2FsIGxpdmUgY29weSBvZiBzdWNoIGEgInJhdyIgR2l0IHJlcG9zaXRvcnksIHlvdSdkCiBmaXJzdCBjcmVhdGUgeW91ciBvd24gc3ViZGlyZWN0b3J5IGZvciB0aGUgcHJvamVjdCwgYW5kIHRoZW4gY29weSB0aGUKIHJhdyByZXBvc2l0b3J5IGNvbnRlbnRzIGludG8gdGhlIGAuZ2l0YCBkaXJlY3RvcnkuIEZvciBleGFtcGxlLCB0bwotY3JlYXRlIHlvdXIgb3duIGNvcHkgb2YgdGhlIGdpdCByZXBvc2l0b3J5LCB5b3UnZCBkbyB0aGUgZm9sbG93aW5nCitjcmVhdGUgeW91ciBvd24gY29weSBvZiB0aGUgR2l0IHJlcG9zaXRvcnksIHlvdSdkIGRvIHRoZSBmb2xsb3dpbmcKIAogLS0tLS0tLS0tLS0tLS0tLQogJCBta2RpciBteS1naXQKQEAgLTcyNSw3ICs3MjUsNyBAQAogLS0tLS0tLS0tLS0tLS0tLQogCiB0byBwb3B1bGF0ZSB0aGUgaW5kZXguIEhvd2V2ZXIsIG5vdyB5b3UgaGF2ZSBwb3B1bGF0ZWQgdGhlIGluZGV4LCBhbmQKLXlvdSBoYXZlIGFsbCB0aGUgZ2l0IGludGVybmFsIGZpbGVzLCBidXQgeW91IHdpbGwgbm90aWNlIHRoYXQgeW91IGRvbid0Cit5b3UgaGF2ZSBhbGwgdGhlIEdpdCBpbnRlcm5hbCBmaWxlcywgYnV0IHlvdSB3aWxsIG5vdGljZSB0aGF0IHlvdSBkb24ndAogYWN0dWFsbHkgaGF2ZSBhbnkgb2YgdGhlIHdvcmtpbmcgdHJlZSBmaWxlcyB0byB3b3JrIG9uLiBUbyBnZXQKIHRob3NlLCB5b3UnZCBjaGVjayB0aGVtIG91dCB3aXRoCiAKQEAgLTc1NywxMyArNzU3LDEzIEBACiBDcmVhdGluZyBhIG5ldyBicmFuY2gKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1CcmFuY2hlcyBpbiBnaXQgYXJlIHJlYWxseSBub3RoaW5nIG1vcmUgdGhhbiBwb2ludGVycyBpbnRvIHRoZSBnaXQKK0JyYW5jaGVzIGluIEdpdCBhcmUgcmVhbGx5IG5vdGhpbmcgbW9yZSB0aGFuIHBvaW50ZXJzIGludG8gdGhlIEdpdAogb2JqZWN0IGRhdGFiYXNlIGZyb20gd2l0aGluIHRoZSBgLmdpdC9yZWZzL2Agc3ViZGlyZWN0b3J5LCBhbmQgYXMgd2UKIGFscmVhZHkgZGlzY3Vzc2VkLCB0aGUgYEhFQURgIGJyYW5jaCBpcyBub3RoaW5nIGJ1dCBhIHN5bWxpbmsgdG8gb25lIG9mCiB0aGVzZSBvYmplY3QgcG9pbnRlcnMuCiAKIFlvdSBjYW4gYXQgYW55IHRpbWUgY3JlYXRlIGEgbmV3IGJyYW5jaCBieSBqdXN0IHBpY2tpbmcgYW4gYXJiaXRyYXJ5Ci1wb2ludCBpbiB0aGUgcHJvamVjdCBoaXN0b3J5LCBhbmQganVzdCB3cml0aW5nIHRoZSBTSEExIG5hbWUgb2YgdGhhdAorcG9pbnQgaW4gdGhlIHByb2plY3QgaGlzdG9yeSwgYW5kIGp1c3Qgd3JpdGluZyB0aGUgU0hBLTEgbmFtZSBvZiB0aGF0CiBvYmplY3QgaW50byBhIGZpbGUgdW5kZXIgYC5naXQvcmVmcy9oZWFkcy9gLiBZb3UgY2FuIHVzZSBhbnkgZmlsZW5hbWUgeW91CiB3YW50IChhbmQgaW5kZWVkLCBzdWJkaXJlY3RvcmllcyksIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IHRoZQogIm5vcm1hbCIgYnJhbmNoIGlzIGNhbGxlZCBgbWFzdGVyYC4gVGhhdCdzIGp1c3QgYSBjb252ZW50aW9uLCB0aG91Z2gsCkBAIC04NDksNyArODQ5LDcgQEAKIEhlcmUsIHdlIGp1c3QgYWRkZWQgYW5vdGhlciBsaW5lIHRvIGBoZWxsb2AsIGFuZCB3ZSB1c2VkIGEgc2hvcnRoYW5kIGZvcgogZG9pbmcgYm90aCBgZ2l0IHVwZGF0ZS1pbmRleCBoZWxsb2AgYW5kIGBnaXQgY29tbWl0YCBieSBqdXN0IGdpdmluZyB0aGUKIGZpbGVuYW1lIGRpcmVjdGx5IHRvIGBnaXQgY29tbWl0YCwgd2l0aCBhbiBgLWlgIGZsYWcgKGl0IHRlbGxzCi1naXQgdG8gJ2luY2x1ZGUnIHRoYXQgZmlsZSBpbiBhZGRpdGlvbiB0byB3aGF0IHlvdSBoYXZlIGRvbmUgdG8KK0dpdCB0byAnaW5jbHVkZScgdGhhdCBmaWxlIGluIGFkZGl0aW9uIHRvIHdoYXQgeW91IGhhdmUgZG9uZSB0bwogdGhlIGluZGV4IGZpbGUgc28gZmFyIHdoZW4gbWFraW5nIHRoZSBjb21taXQpLiAgVGhlIGAtbWAgZmxhZyBpcyB0byBnaXZlIHRoZQogY29tbWl0IGxvZyBtZXNzYWdlIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KIApAQCAtOTAwLDcgKzkwMCw3IEBACiB0aGUgbWVyZ2UgY2FuIGJlIHJlc29sdmVkIGF1dG9tYXRpY2FsbHkuCiAKIE5vdywgaW4gdGhpcyBjYXNlIHdlJ3ZlIGludGVudGlvbmFsbHkgY3JlYXRlZCBhIHNpdHVhdGlvbiB3aGVyZSB0aGUKLW1lcmdlIHdpbGwgbmVlZCB0byBiZSBmaXhlZCB1cCBieSBoYW5kLCB0aG91Z2gsIHNvIGdpdCB3aWxsIGRvIGFzIG11Y2gKK21lcmdlIHdpbGwgbmVlZCB0byBiZSBmaXhlZCB1cCBieSBoYW5kLCB0aG91Z2gsIHNvIEdpdCB3aWxsIGRvIGFzIG11Y2gKIG9mIGl0IGFzIGl0IGNhbiBhdXRvbWF0aWNhbGx5ICh3aGljaCBpbiB0aGlzIGNhc2UgaXMganVzdCBtZXJnZSB0aGUgYGV4YW1wbGVgCiBmaWxlLCB3aGljaCBoYWQgbm8gZGlmZmVyZW5jZXMgaW4gdGhlIGBteWJyYW5jaGAgYnJhbmNoKSwgYW5kIHNheToKIApAQCAtOTM5LDcgKzkzOSw3IEBACiBoaXN0b3J5IGxvb2tzIGxpa2UuIE5vdGljZSB0aGF0IGBteWJyYW5jaGAgc3RpbGwgZXhpc3RzLCBhbmQgeW91IGNhbgogc3dpdGNoIHRvIGl0LCBhbmQgY29udGludWUgdG8gd29yayB3aXRoIGl0IGlmIHlvdSB3YW50IHRvLiBUaGUKIGBteWJyYW5jaGAgYnJhbmNoIHdpbGwgbm90IGNvbnRhaW4gdGhlIG1lcmdlLCBidXQgbmV4dCB0aW1lIHlvdSBtZXJnZSBpdAotZnJvbSB0aGUgYG1hc3RlcmAgYnJhbmNoLCBnaXQgd2lsbCBrbm93IGhvdyB5b3UgbWVyZ2VkIGl0LCBzbyB5b3UnbGwgbm90Citmcm9tIHRoZSBgbWFzdGVyYCBicmFuY2gsIEdpdCB3aWxsIGtub3cgaG93IHlvdSBtZXJnZWQgaXQsIHNvIHlvdSdsbCBub3QKIGhhdmUgdG8gZG8gX3RoYXRfIG1lcmdlIGFnYWluLgogCiBBbm90aGVyIHVzZWZ1bCB0b29sLCBlc3BlY2lhbGx5IGlmIHlvdSBkbyBub3QgYWx3YXlzIHdvcmsgaW4gWC1XaW5kb3cKQEAgLTEwMjgsNyArMTAyOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSXQncyB1c3VhbGx5IG11Y2ggbW9yZSBjb21tb24gdGhhdCB5b3UgbWVyZ2Ugd2l0aCBzb21lYm9keSBlbHNlIHRoYW4KLW1lcmdpbmcgd2l0aCB5b3VyIG93biBicmFuY2hlcywgc28gaXQncyB3b3J0aCBwb2ludGluZyBvdXQgdGhhdCBnaXQKK21lcmdpbmcgd2l0aCB5b3VyIG93biBicmFuY2hlcywgc28gaXQncyB3b3J0aCBwb2ludGluZyBvdXQgdGhhdCBHaXQKIG1ha2VzIHRoYXQgdmVyeSBlYXN5IHRvbywgYW5kIGluIGZhY3QsIGl0J3Mgbm90IHRoYXQgZGlmZmVyZW50IGZyb20KIGRvaW5nIGEgJ2dpdCBtZXJnZScuIEluIGZhY3QsIGEgcmVtb3RlIG1lcmdlIGVuZHMgdXAgYmVpbmcgbm90aGluZwogbW9yZSB0aGFuICJmZXRjaCB0aGUgd29yayBmcm9tIGEgcmVtb3RlIHJlcG9zaXRvcnkgaW50byBhIHRlbXBvcmFyeSB0YWciCkBAIC0xMDY4LDcgKzEwNjgsNyBAQAogcmVtb3RlIG1hY2hpbmUuICBJdCBmaW5kcyBvdXQgdGhlIHNldCBvZiBvYmplY3RzIHRoZSBvdGhlciBzaWRlCiBsYWNrcyBieSBleGNoYW5naW5nIHRoZSBoZWFkIGNvbW1pdHMgYm90aCBlbmRzIGhhdmUgYW5kCiB0cmFuc2ZlcnMgKGNsb3NlIHRvKSBtaW5pbXVtIHNldCBvZiBvYmplY3RzLiAgSXQgaXMgYnkgZmFyIHRoZQotbW9zdCBlZmZpY2llbnQgd2F5IHRvIGV4Y2hhbmdlIGdpdCBvYmplY3RzIGJldHdlZW4gcmVwb3NpdG9yaWVzLgorbW9zdCBlZmZpY2llbnQgd2F5IHRvIGV4Y2hhbmdlIEdpdCBvYmplY3RzIGJldHdlZW4gcmVwb3NpdG9yaWVzLgogCiBMb2NhbCBkaXJlY3Rvcnk6OgogCWAvcGF0aC90by9yZXBvLmdpdC9gCkBAIC0xMDc3LDcgKzEwNzcsNyBAQAogYm90aCBlbmRzIG9uIHRoZSBsb2NhbCBtYWNoaW5lIGluc3RlYWQgb2YgcnVubmluZyBvdGhlciBlbmQgb24KIHRoZSByZW1vdGUgbWFjaGluZSB2aWEgJ3NzaCcuCiAKLWdpdCBOYXRpdmU6OgorR2l0IE5hdGl2ZTo6CiAJYGdpdDovL3JlbW90ZS5tYWNoaW5lL3BhdGgvdG8vcmVwby5naXQvYAogKwogVGhpcyB0cmFuc3BvcnQgd2FzIGRlc2lnbmVkIGZvciBhbm9ueW1vdXMgZG93bmxvYWRpbmcuICBMaWtlIFNTSApAQCAtMTA5OSw4ICsxMDk5LDggQEAKIHNvbWV0aW1lcyBhbHNvIGNhbGxlZCAnY29tbWl0IHdhbGtlcnMnLgogKwogVGhlICdjb21taXQgd2Fsa2VycycgYXJlIHNvbWV0aW1lcyBhbHNvIGNhbGxlZCAnZHVtYgotdHJhbnNwb3J0cycsIGJlY2F1c2UgdGhleSBkbyBub3QgcmVxdWlyZSBhbnkgZ2l0IGF3YXJlIHNtYXJ0Ci1zZXJ2ZXIgbGlrZSBnaXQgTmF0aXZlIHRyYW5zcG9ydCBkb2VzLiAgQW55IHN0b2NrIEhUVFAgc2VydmVyCit0cmFuc3BvcnRzJywgYmVjYXVzZSB0aGV5IGRvIG5vdCByZXF1aXJlIGFueSBHaXQgYXdhcmUgc21hcnQKK3NlcnZlciBsaWtlIEdpdCBOYXRpdmUgdHJhbnNwb3J0IGRvZXMuICBBbnkgc3RvY2sgSFRUUCBzZXJ2ZXIKIHRoYXQgZG9lcyBub3QgZXZlbiBzdXBwb3J0IGRpcmVjdG9yeSBpbmRleCB3b3VsZCBzdWZmaWNlLiAgQnV0CiB5b3UgbXVzdCBwcmVwYXJlIHlvdXIgcmVwb3NpdG9yeSB3aXRoICdnaXQgdXBkYXRlLXNlcnZlci1pbmZvJwogdG8gaGVscCBkdW1iIHRyYW5zcG9ydCBkb3dubG9hZGVycy4KQEAgLTEyMzMsNyArMTIzMyw3IEBACiBldGMuKS4gIEFmdGVyIHJlYWRpbmcgdGhyZWUgdHJlZXMgaW50byB0aHJlZSBzdGFnZXMsIHRoZSBwYXRocwogdGhhdCBhcmUgdGhlIHNhbWUgaW4gYWxsIHRocmVlIHN0YWdlcyBhcmUgJ2NvbGxhcHNlZCcgaW50byBzdGFnZQogMC4gIEFsc28gcGF0aHMgdGhhdCBhcmUgdGhlIHNhbWUgaW4gdHdvIG9mIHRocmVlIHN0YWdlcyBhcmUKLWNvbGxhcHNlZCBpbnRvIHN0YWdlIDAsIHRha2luZyB0aGUgU0hBMSBmcm9tIGVpdGhlciBzdGFnZSAyIG9yCitjb2xsYXBzZWQgaW50byBzdGFnZSAwLCB0YWtpbmcgdGhlIFNIQS0xIGZyb20gZWl0aGVyIHN0YWdlIDIgb3IKIHN0YWdlIDMsIHdoaWNoZXZlciBpcyBkaWZmZXJlbnQgZnJvbSBzdGFnZSAxIChpLmUuIG9ubHkgb25lIHNpZGUKIGNoYW5nZWQgZnJvbSB0aGUgY29tbW9uIGFuY2VzdG9yKS4KIApAQCAtMTMyMSw3ICsxMzIxLDcgQEAKIAogW05PVEVdCiBUaGlzIHB1YmxpYyByZXBvc2l0b3J5IGNvdWxkIGZ1cnRoZXIgYmUgbWlycm9yZWQsIGFuZCB0aGF0IGlzCi1ob3cgZ2l0IHJlcG9zaXRvcmllcyBhdCBga2VybmVsLm9yZ2AgYXJlIG1hbmFnZWQuCitob3cgR2l0IHJlcG9zaXRvcmllcyBhdCBga2VybmVsLm9yZ2AgYXJlIG1hbmFnZWQuCiAKIFB1Ymxpc2hpbmcgdGhlIGNoYW5nZXMgZnJvbSB5b3VyIGxvY2FsIChwcml2YXRlKSByZXBvc2l0b3J5IHRvCiB5b3VyIHJlbW90ZSAocHVibGljKSByZXBvc2l0b3J5IHJlcXVpcmVzIGEgd3JpdGUgcHJpdmlsZWdlIG9uCkBAIC0xMzQwLDcgKzEzNDAsNyBAQAogb24gdGhlIHJlbW90ZSBtYWNoaW5lLiBUaGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSB0d28gb3ZlcgogdGhlIG5ldHdvcmsgaW50ZXJuYWxseSB1c2VzIGFuIFNTSCBjb25uZWN0aW9uLgogCi1Zb3VyIHByaXZhdGUgcmVwb3NpdG9yeSdzIGdpdCBkaXJlY3RvcnkgaXMgdXN1YWxseSBgLmdpdGAsIGJ1dAorWW91ciBwcml2YXRlIHJlcG9zaXRvcnkncyBHaXQgZGlyZWN0b3J5IGlzIHVzdWFsbHkgYC5naXRgLCBidXQKIHlvdXIgcHVibGljIHJlcG9zaXRvcnkgaXMgb2Z0ZW4gbmFtZWQgYWZ0ZXIgdGhlIHByb2plY3QgbmFtZSwKIGkuZS4gYDxwcm9qZWN0Pi5naXRgLiBMZXQncyBjcmVhdGUgc3VjaCBhIHB1YmxpYyByZXBvc2l0b3J5IGZvcgogcHJvamVjdCBgbXktZ2l0YC4gQWZ0ZXIgbG9nZ2luZyBpbnRvIHRoZSByZW1vdGUgbWFjaGluZSwgY3JlYXRlCkBAIC0xMzUwLDcgKzEzNTAsNyBAQAogJCBta2RpciBteS1naXQuZ2l0CiAtLS0tLS0tLS0tLS0KIAotVGhlbiwgbWFrZSB0aGF0IGRpcmVjdG9yeSBpbnRvIGEgZ2l0IHJlcG9zaXRvcnkgYnkgcnVubmluZworVGhlbiwgbWFrZSB0aGF0IGRpcmVjdG9yeSBpbnRvIGEgR2l0IHJlcG9zaXRvcnkgYnkgcnVubmluZwogJ2dpdCBpbml0JywgYnV0IHRoaXMgdGltZSwgc2luY2UgaXRzIG5hbWUgaXMgbm90IHRoZSB1c3VhbAogYC5naXRgLCB3ZSBkbyB0aGluZ3Mgc2xpZ2h0bHkgZGlmZmVyZW50bHk6CiAKQEAgLTEzODksNyArMTM4OSw3IEBACiBicmFuY2ggaGVhZCAoaS5lLiBgbWFzdGVyYCBpbiB0aGlzIGNhc2UpIGFuZCBvYmplY3RzIHJlYWNoYWJsZQogZnJvbSB0aGVtIGluIHlvdXIgY3VycmVudCByZXBvc2l0b3J5LgogCi1BcyBhIHJlYWwgZXhhbXBsZSwgdGhpcyBpcyBob3cgSSB1cGRhdGUgbXkgcHVibGljIGdpdAorQXMgYSByZWFsIGV4YW1wbGUsIHRoaXMgaXMgaG93IEkgdXBkYXRlIG15IHB1YmxpYyBHaXQKIHJlcG9zaXRvcnkuIEtlcm5lbC5vcmcgbWlycm9yIG5ldHdvcmsgdGFrZXMgY2FyZSBvZiB0aGUKIHByb3BhZ2F0aW9uIHRvIG90aGVyIHB1YmxpY2x5IHZpc2libGUgbWFjaGluZXM6CiAKQEAgLTE0MDIsOSArMTQwMiw5IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBFYXJsaWVyLCB3ZSBzYXcgdGhhdCBvbmUgZmlsZSB1bmRlciBgLmdpdC9vYmplY3RzLz8/L2AgZGlyZWN0b3J5Ci1pcyBzdG9yZWQgZm9yIGVhY2ggZ2l0IG9iamVjdCB5b3UgY3JlYXRlLiBUaGlzIHJlcHJlc2VudGF0aW9uCitpcyBzdG9yZWQgZm9yIGVhY2ggR2l0IG9iamVjdCB5b3UgY3JlYXRlLiBUaGlzIHJlcHJlc2VudGF0aW9uCiBpcyBlZmZpY2llbnQgdG8gY3JlYXRlIGF0b21pY2FsbHkgYW5kIHNhZmVseSwgYnV0Ci1ub3Qgc28gY29udmVuaWVudCB0byB0cmFuc3BvcnQgb3ZlciB0aGUgbmV0d29yay4gU2luY2UgZ2l0IG9iamVjdHMgYXJlCitub3Qgc28gY29udmVuaWVudCB0byB0cmFuc3BvcnQgb3ZlciB0aGUgbmV0d29yay4gU2luY2UgR2l0IG9iamVjdHMgYXJlCiBpbW11dGFibGUgb25jZSB0aGV5IGFyZSBjcmVhdGVkLCB0aGVyZSBpcyBhIHdheSB0byBvcHRpbWl6ZSB0aGUKIHN0b3JhZ2UgYnkgInBhY2tpbmcgdGhlbSB0b2dldGhlciIuIFRoZSBjb21tYW5kCiAKQEAgLTE0NzIsMTQgKzE0NzIsMTQgQEAKIFdvcmtpbmcgd2l0aCBPdGhlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQWx0aG91Z2ggZ2l0IGlzIGEgdHJ1bHkgZGlzdHJpYnV0ZWQgc3lzdGVtLCBpdCBpcyBvZnRlbgorQWx0aG91Z2ggR2l0IGlzIGEgdHJ1bHkgZGlzdHJpYnV0ZWQgc3lzdGVtLCBpdCBpcyBvZnRlbgogY29udmVuaWVudCB0byBvcmdhbml6ZSB5b3VyIHByb2plY3Qgd2l0aCBhbiBpbmZvcm1hbCBoaWVyYXJjaHkKIG9mIGRldmVsb3BlcnMuIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBpcyBydW4gdGhpcyB3YXkuIFRoZXJlCiBpcyBhIG5pY2UgaWxsdXN0cmF0aW9uIChwYWdlIDE3LCAiTWVyZ2VzIHRvIE1haW5saW5lIikgaW4KIGxpbms6aHR0cDovL3d3dy54ZW5vdGltZS5uZXQvbGludXgvbWVudG9yL2xpbnV4LW1lbnRvcmluZy0yMDA2LnBkZltSYW5keSBEdW5sYXAncyBwcmVzZW50YXRpb25dLgogCiBJdCBzaG91bGQgYmUgc3RyZXNzZWQgdGhhdCB0aGlzIGhpZXJhcmNoeSBpcyBwdXJlbHkgKmluZm9ybWFsKi4KLVRoZXJlIGlzIG5vdGhpbmcgZnVuZGFtZW50YWwgaW4gZ2l0IHRoYXQgZW5mb3JjZXMgdGhlICJjaGFpbiBvZgorVGhlcmUgaXMgbm90aGluZyBmdW5kYW1lbnRhbCBpbiBHaXQgdGhhdCBlbmZvcmNlcyB0aGUgImNoYWluIG9mCiBwYXRjaCBmbG93IiB0aGlzIGhpZXJhcmNoeSBpbXBsaWVzLiBZb3UgZG8gbm90IGhhdmUgdG8gcHVsbAogZnJvbSBvbmx5IG9uZSByZW1vdGUgcmVwb3NpdG9yeS4KIApAQCAtMTU5Miw3ICsxNTkyLDcgQEAKIAogSWYgeW91IGFyZSBjb21pbmcgZnJvbSBDVlMgYmFja2dyb3VuZCwgdGhlIHN0eWxlIG9mIGNvb3BlcmF0aW9uCiBzdWdnZXN0ZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24gbWF5IGJlIG5ldyB0byB5b3UuIFlvdSBkbyBub3QKLWhhdmUgdG8gd29ycnkuIGdpdCBzdXBwb3J0cyAic2hhcmVkIHB1YmxpYyByZXBvc2l0b3J5IiBzdHlsZSBvZgoraGF2ZSB0byB3b3JyeS4gR2l0IHN1cHBvcnRzICJzaGFyZWQgcHVibGljIHJlcG9zaXRvcnkiIHN0eWxlIG9mCiBjb29wZXJhdGlvbiB5b3UgYXJlIHByb2JhYmx5IG1vcmUgZmFtaWxpYXIgd2l0aCBhcyB3ZWxsLgogCiBTZWUgbGlua2dpdDpnaXRjdnMtbWlncmF0aW9uWzddIGZvciB0aGUgZGV0YWlscy4KQEAgLTE2MDIsNyArMTYwMiw3IEBACiAKIEl0IGlzIGxpa2VseSB0aGF0IHlvdSB3aWxsIGJlIHdvcmtpbmcgb24gbW9yZSB0aGFuIG9uZSB0aGluZyBhdAogYSB0aW1lLiAgSXQgaXMgZWFzeSB0byBtYW5hZ2UgdGhvc2UgbW9yZS1vci1sZXNzIGluZGVwZW5kZW50IHRhc2tzCi11c2luZyBicmFuY2hlcyB3aXRoIGdpdC4KK3VzaW5nIGJyYW5jaGVzIHdpdGggR2l0LgogCiBXZSBoYXZlIGFscmVhZHkgc2VlbiBob3cgYnJhbmNoZXMgd29yayBwcmV2aW91c2x5LAogd2l0aCAiZnVuIGFuZCB3b3JrIiBleGFtcGxlIHVzaW5nIHR3byBicmFuY2hlcy4gIFRoZSBpZGVhIGlzIHRoZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjcmVkZW50aWFscy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGNyZWRlbnRpYWxzLnR4dAppbmRleCA3ZGZmZmMwLi40NzU3NmJlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGNyZWRlbnRpYWxzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGNyZWRlbnRpYWxzLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0Y3JlZGVudGlhbHMgLSBwcm92aWRpbmcgdXNlcm5hbWVzIGFuZCBwYXNzd29yZHMgdG8gZ2l0CitnaXRjcmVkZW50aWFscyAtIHByb3ZpZGluZyB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyB0byBHaXQKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xOCwxMyArMTgsMTMgQEAKIEdpdCB3aWxsIHNvbWV0aW1lcyBuZWVkIGNyZWRlbnRpYWxzIGZyb20gdGhlIHVzZXIgaW4gb3JkZXIgdG8gcGVyZm9ybQogb3BlcmF0aW9uczsgZm9yIGV4YW1wbGUsIGl0IG1heSBuZWVkIHRvIGFzayBmb3IgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQKIGluIG9yZGVyIHRvIGFjY2VzcyBhIHJlbW90ZSByZXBvc2l0b3J5IG92ZXIgSFRUUC4gVGhpcyBtYW51YWwgZGVzY3JpYmVzCi10aGUgbWVjaGFuaXNtcyBnaXQgdXNlcyB0byByZXF1ZXN0IHRoZXNlIGNyZWRlbnRpYWxzLCBhcyB3ZWxsIGFzIHNvbWUKK3RoZSBtZWNoYW5pc21zIEdpdCB1c2VzIHRvIHJlcXVlc3QgdGhlc2UgY3JlZGVudGlhbHMsIGFzIHdlbGwgYXMgc29tZQogZmVhdHVyZXMgdG8gYXZvaWQgaW5wdXR0aW5nIHRoZXNlIGNyZWRlbnRpYWxzIHJlcGVhdGVkbHkuCiAKIFJFUVVFU1RJTkcgQ1JFREVOVElBTFMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2l0aG91dCBhbnkgY3JlZGVudGlhbCBoZWxwZXJzIGRlZmluZWQsIGdpdCB3aWxsIHRyeSB0aGUgZm9sbG93aW5nCitXaXRob3V0IGFueSBjcmVkZW50aWFsIGhlbHBlcnMgZGVmaW5lZCwgR2l0IHdpbGwgdHJ5IHRoZSBmb2xsb3dpbmcKIHN0cmF0ZWdpZXMgdG8gYXNrIHRoZSB1c2VyIGZvciB1c2VybmFtZXMgYW5kIHBhc3N3b3JkczoKIAogMS4gSWYgdGhlIGBHSVRfQVNLUEFTU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCB0aGUgcHJvZ3JhbQpAQCAtNTksNyArNTksNyBAQAogCXVzZXJuYW1lID0gbWUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DcmVkZW50aWFsIGhlbHBlcnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgZXh0ZXJuYWwgcHJvZ3JhbXMgZnJvbSB3aGljaCBnaXQgY2FuCitDcmVkZW50aWFsIGhlbHBlcnMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgZXh0ZXJuYWwgcHJvZ3JhbXMgZnJvbSB3aGljaCBHaXQgY2FuCiByZXF1ZXN0IGJvdGggdXNlcm5hbWVzIGFuZCBwYXNzd29yZHM7IHRoZXkgdHlwaWNhbGx5IGludGVyZmFjZSB3aXRoIHNlY3VyZQogc3RvcmFnZSBwcm92aWRlZCBieSB0aGUgT1Mgb3Igb3RoZXIgcHJvZ3JhbXMuCiAKQEAgLTc5LDcgKzc5LDcgQEAKIFlvdSBtYXkgYWxzbyBoYXZlIHRoaXJkLXBhcnR5IGhlbHBlcnMgaW5zdGFsbGVkOyBzZWFyY2ggZm9yCiBgY3JlZGVudGlhbC0qYCBpbiB0aGUgb3V0cHV0IG9mIGBnaXQgaGVscCAtYWAsIGFuZCBjb25zdWx0IHRoZQogZG9jdW1lbnRhdGlvbiBvZiBpbmRpdmlkdWFsIGhlbHBlcnMuICBPbmNlIHlvdSBoYXZlIHNlbGVjdGVkIGEgaGVscGVyLAoteW91IGNhbiB0ZWxsIGdpdCB0byB1c2UgaXQgYnkgcHV0dGluZyBpdHMgbmFtZSBpbnRvIHRoZQoreW91IGNhbiB0ZWxsIEdpdCB0byB1c2UgaXQgYnkgcHV0dGluZyBpdHMgbmFtZSBpbnRvIHRoZQogY3JlZGVudGlhbC5oZWxwZXIgdmFyaWFibGUuCiAKIDEuIEZpbmQgYSBoZWxwZXIuCkBAIC05NSw3ICs5NSw3IEBACiAkIGdpdCBoZWxwIGNyZWRlbnRpYWwtZm9vCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTMuIFRlbGwgZ2l0IHRvIHVzZSBpdC4KKzMuIFRlbGwgR2l0IHRvIHVzZSBpdC4KICsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGNvbmZpZyAtLWdsb2JhbCBjcmVkZW50aWFsLmhlbHBlciBmb28KQEAgLTEwMyw3ICsxMDMsNyBAQAogCiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBgY3JlZGVudGlhbC5oZWxwZXJgIGNvbmZpZ3VyYXRpb24KIHZhcmlhYmxlLCBlYWNoIGhlbHBlciB3aWxsIGJlIHRyaWVkIGluIHR1cm4sIGFuZCBtYXkgcHJvdmlkZSBhIHVzZXJuYW1lLAotcGFzc3dvcmQsIG9yIG5vdGhpbmcuIE9uY2UgZ2l0IGhhcyBhY3F1aXJlZCBib3RoIGEgdXNlcm5hbWUgYW5kIGEKK3Bhc3N3b3JkLCBvciBub3RoaW5nLiBPbmNlIEdpdCBoYXMgYWNxdWlyZWQgYm90aCBhIHVzZXJuYW1lIGFuZCBhCiBwYXNzd29yZCwgbm8gbW9yZSBoZWxwZXJzIHdpbGwgYmUgdHJpZWQuCiAKIApAQCAtMTE0LDcgKzExNCw3IEBACiBpcyB1c2VkIHRvIGxvb2sgdXAgY29udGV4dC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLCBhbmQgaXMgcGFzc2VkIHRvIGFueQogaGVscGVycywgd2hpY2ggbWF5IHVzZSBpdCBhcyBhbiBpbmRleCBpbnRvIHNlY3VyZSBzdG9yYWdlLgogCi1Gb3IgaW5zdGFuY2UsIGltYWdpbmUgd2UgYXJlIGFjY2Vzc2luZyBgaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28uZ2l0YC4gV2hlbiBnaXQKK0ZvciBpbnN0YW5jZSwgaW1hZ2luZSB3ZSBhcmUgYWNjZXNzaW5nIGBodHRwczovL2V4YW1wbGUuY29tL2Zvby5naXRgLiBXaGVuIEdpdAogbG9va3MgaW50byBhIGNvbmZpZyBmaWxlIHRvIHNlZSBpZiBhIHNlY3Rpb24gbWF0Y2hlcyB0aGlzIGNvbnRleHQsIGl0IHdpbGwKIGNvbnNpZGVyIHRoZSB0d28gYSBtYXRjaCBpZiB0aGUgY29udGV4dCBpcyBhIG1vcmUtc3BlY2lmaWMgc3Vic2V0IG9mIHRoZQogcGF0dGVybiBpbiB0aGUgY29uZmlnIGZpbGUuIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSB0aGlzIGluIHlvdXIgY29uZmlnIGZpbGU6CkBAIC0xMzMsMTAgKzEzMywxMCBAQAogCXVzZXJuYW1lID0gZm9vCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1iZWNhdXNlIHRoZSBob3N0bmFtZXMgZGlmZmVyLiBOb3Igd291bGQgaXQgbWF0Y2ggYGZvby5leGFtcGxlLmNvbWA7IGdpdAorYmVjYXVzZSB0aGUgaG9zdG5hbWVzIGRpZmZlci4gTm9yIHdvdWxkIGl0IG1hdGNoIGBmb28uZXhhbXBsZS5jb21gOyBHaXQKIGNvbXBhcmVzIGhvc3RuYW1lcyBleGFjdGx5LCB3aXRob3V0IGNvbnNpZGVyaW5nIHdoZXRoZXIgdHdvIGhvc3RzIGFyZSBwYXJ0IG9mCiB0aGUgc2FtZSBkb21haW4uIExpa2V3aXNlLCBhIGNvbmZpZyBlbnRyeSBmb3IgYGh0dHA6Ly9leGFtcGxlLmNvbWAgd291bGQgbm90Ci1tYXRjaDogZ2l0IGNvbXBhcmVzIHRoZSBwcm90b2NvbHMgZXhhY3RseS4KK21hdGNoOiBHaXQgY29tcGFyZXMgdGhlIHByb3RvY29scyBleGFjdGx5LgogCiAKIENPTkZJR1VSQVRJT04gT1BUSU9OUwpAQCAtMTY0LDcgKzE2NCw3IEBACiAKIHVzZUh0dHBQYXRoOjoKIAotCUJ5IGRlZmF1bHQsIGdpdCBkb2VzIG5vdCBjb25zaWRlciB0aGUgInBhdGgiIGNvbXBvbmVudCBvZiBhbiBodHRwIFVSTAorCUJ5IGRlZmF1bHQsIEdpdCBkb2VzIG5vdCBjb25zaWRlciB0aGUgInBhdGgiIGNvbXBvbmVudCBvZiBhbiBodHRwIFVSTAogCXRvIGJlIHdvcnRoIG1hdGNoaW5nIHZpYSBleHRlcm5hbCBoZWxwZXJzLiBUaGlzIG1lYW5zIHRoYXQgYSBjcmVkZW50aWFsCiAJc3RvcmVkIGZvciBgaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28uZ2l0YCB3aWxsIGFsc28gYmUgdXNlZCBmb3IKIAlgaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXIuZ2l0YC4gSWYgeW91IGRvIHdhbnQgdG8gZGlzdGluZ3Vpc2ggdGhlc2UKQEAgLTE3NSw3ICsxNzUsNyBAQAogLS0tLS0tLS0tLS0tLS0KIAogWW91IGNhbiB3cml0ZSB5b3VyIG93biBjdXN0b20gaGVscGVycyB0byBpbnRlcmZhY2Ugd2l0aCBhbnkgc3lzdGVtIGluCi13aGljaCB5b3Uga2VlcCBjcmVkZW50aWFscy4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBnaXQncword2hpY2ggeW91IGtlZXAgY3JlZGVudGlhbHMuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgR2l0J3MKIGxpbms6dGVjaG5pY2FsL2FwaS1jcmVkZW50aWFscy5odG1sW2NyZWRlbnRpYWxzIEFQSV0gZm9yIGRldGFpbHMuCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRjdnMtbWlncmF0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0Y3ZzLW1pZ3JhdGlvbi50eHQKaW5kZXggYWViMGNkYy4uNWFiNWIwNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRjdnMtbWlncmF0aW9uLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGN2cy1taWdyYXRpb24udHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRjdnMtbWlncmF0aW9uIC0gZ2l0IGZvciBDVlMgdXNlcnMKK2dpdGN2cy1taWdyYXRpb24gLSBHaXQgZm9yIENWUyB1c2VycwogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE5LDcgKzE5LDcgQEAKIGRlc2lnbmF0aW5nIGEgc2luZ2xlIHNoYXJlZCByZXBvc2l0b3J5IHdoaWNoIHBlb3BsZSBjYW4gc3luY2hyb25pemUgd2l0aDsKIHRoaXMgZG9jdW1lbnQgZXhwbGFpbnMgaG93IHRvIGRvIHRoYXQuCiAKLVNvbWUgYmFzaWMgZmFtaWxpYXJpdHkgd2l0aCBnaXQgaXMgcmVxdWlyZWQuIEhhdmluZyBnb25lIHRocm91Z2gKK1NvbWUgYmFzaWMgZmFtaWxpYXJpdHkgd2l0aCBHaXQgaXMgcmVxdWlyZWQuIEhhdmluZyBnb25lIHRocm91Z2gKIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10gYW5kCiBsaW5rZ2l0OmdpdGdsb3NzYXJ5WzddIHNob3VsZCBiZSBzdWZmaWNpZW50LgogCkBAIC04MSw3ICs4MSw3IEBACiBTZXR0aW5nIFVwIGEgU2hhcmVkIFJlcG9zaXRvcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZSBhc3N1bWUgeW91IGhhdmUgYWxyZWFkeSBjcmVhdGVkIGEgZ2l0IHJlcG9zaXRvcnkgZm9yIHlvdXIgcHJvamVjdCwKK1dlIGFzc3VtZSB5b3UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgYSBHaXQgcmVwb3NpdG9yeSBmb3IgeW91ciBwcm9qZWN0LAogcG9zc2libHkgY3JlYXRlZCBmcm9tIHNjcmF0Y2ggb3IgZnJvbSBhIHRhcmJhbGwgKHNlZQogbGlua2dpdDpnaXR0dXRvcmlhbFs3XSksIG9yIGltcG9ydGVkIGZyb20gYW4gYWxyZWFkeSBleGlzdGluZyBDVlMKIHJlcG9zaXRvcnkgKHNlZSB0aGUgbmV4dCBzZWN0aW9uKS4KQEAgLTEwMSw3ICsxMDEsNyBAQAogZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB0byBnaXZlIGFsbCB0aGUgdGVhbSBtZW1iZXJzIHNzaCBhY2Nlc3MgdG8gdGhlCiBtYWNoaW5lIHdoZXJlIHRoZSByZXBvc2l0b3J5IGlzIGhvc3RlZC4gIElmIHlvdSBkb24ndCB3YW50IHRvIGdpdmUgdGhlbSBhCiBmdWxsIHNoZWxsIG9uIHRoZSBtYWNoaW5lLCB0aGVyZSBpcyBhIHJlc3RyaWN0ZWQgc2hlbGwgd2hpY2ggb25seSBhbGxvd3MKLXVzZXJzIHRvIGRvIGdpdCBwdXNoZXMgYW5kIHB1bGxzOyBzZWUgbGlua2dpdDpnaXQtc2hlbGxbMV0uCit1c2VycyB0byBkbyBHaXQgcHVzaGVzIGFuZCBwdWxsczsgc2VlIGxpbmtnaXQ6Z2l0LXNoZWxsWzFdLgogCiBQdXQgYWxsIHRoZSBjb21taXR0ZXJzIGluIHRoZSBzYW1lIGdyb3VwLCBhbmQgbWFrZSB0aGUgcmVwb3NpdG9yeQogd3JpdGFibGUgYnkgdGhhdCBncm91cDoKQEAgLTEyNSw3ICsxMjUsNyBAQAogJCBnaXQgY3ZzaW1wb3J0IC1DIDxkZXN0aW5hdGlvbj4gPG1vZHVsZT4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBwdXRzIGEgZ2l0IGFyY2hpdmUgb2YgdGhlIG5hbWVkIENWUyBtb2R1bGUgaW4gdGhlIGRpcmVjdG9yeQorVGhpcyBwdXRzIGEgR2l0IGFyY2hpdmUgb2YgdGhlIG5hbWVkIENWUyBtb2R1bGUgaW4gdGhlIGRpcmVjdG9yeQogPGRlc3RpbmF0aW9uPiwgd2hpY2ggd2lsbCBiZSBjcmVhdGVkIGlmIG5lY2Vzc2FyeS4KIAogVGhlIGltcG9ydCBjaGVja3Mgb3V0IGZyb20gQ1ZTIGV2ZXJ5IHJldmlzaW9uIG9mIGV2ZXJ5IGZpbGUuICBSZXBvcnRlZGx5CkBAIC0xMzMsOCArMTMzLDggQEAKIG1lZGl1bS1zaXplZCBwcm9qZWN0IHRoaXMgc2hvdWxkIG5vdCB0YWtlIG1vcmUgdGhhbiBhIGNvdXBsZSBvZiBtaW51dGVzLgogTGFyZ2VyIHByb2plY3RzIG9yIHJlbW90ZSByZXBvc2l0b3JpZXMgbWF5IHRha2UgbG9uZ2VyLgogCi1UaGUgbWFpbiB0cnVuayBpcyBzdG9yZWQgaW4gdGhlIGdpdCBicmFuY2ggbmFtZWQgYG9yaWdpbmAsIGFuZCBhZGRpdGlvbmFsCi1DVlMgYnJhbmNoZXMgYXJlIHN0b3JlZCBpbiBnaXQgYnJhbmNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lcy4gIFRoZSBtb3N0CitUaGUgbWFpbiB0cnVuayBpcyBzdG9yZWQgaW4gdGhlIEdpdCBicmFuY2ggbmFtZWQgYG9yaWdpbmAsIGFuZCBhZGRpdGlvbmFsCitDVlMgYnJhbmNoZXMgYXJlIHN0b3JlZCBpbiBHaXQgYnJhbmNoZXMgd2l0aCB0aGUgc2FtZSBuYW1lcy4gIFRoZSBtb3N0CiByZWNlbnQgdmVyc2lvbiBvZiB0aGUgbWFpbiB0cnVuayBpcyBhbHNvIGxlZnQgY2hlY2tlZCBvdXQgb24gdGhlIGBtYXN0ZXJgCiBicmFuY2gsIHNvIHlvdSBjYW4gc3RhcnQgYWRkaW5nIHlvdXIgb3duIGNoYW5nZXMgcmlnaHQgYXdheS4KIApAQCAtMTYwLDEwICsxNjAsMTAgQEAKIGxpbms6aG93dG8vdXBkYXRlLWhvb2stZXhhbXBsZS50eHRbQ29udHJvbGxpbmcgYWNjZXNzIHRvIGJyYW5jaGVzIHVzaW5nCiB1cGRhdGUgaG9va3NdLgogCi1Qcm92aWRpbmcgQ1ZTIEFjY2VzcyB0byBhIGdpdCBSZXBvc2l0b3J5CitQcm92aWRpbmcgQ1ZTIEFjY2VzcyB0byBhIEdpdCBSZXBvc2l0b3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gcHJvdmlkZSB0cnVlIENWUyBhY2Nlc3MgdG8gYSBnaXQgcmVwb3NpdG9yeSwgc28KK0l0IGlzIGFsc28gcG9zc2libGUgdG8gcHJvdmlkZSB0cnVlIENWUyBhY2Nlc3MgdG8gYSBHaXQgcmVwb3NpdG9yeSwgc28KIHRoYXQgZGV2ZWxvcGVycyBjYW4gc3RpbGwgdXNlIENWUzsgc2VlIGxpbmtnaXQ6Z2l0LWN2c3NlcnZlclsxXSBmb3IKIGRldGFpbHMuCiAKQEAgLTE3MSw4ICsxNzEsOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENWUyB1c2VycyBhcmUgYWNjdXN0b21lZCB0byBnaXZpbmcgYSBncm91cCBvZiBkZXZlbG9wZXJzIGNvbW1pdCBhY2Nlc3MgdG8KLWEgY29tbW9uIHJlcG9zaXRvcnkuICBBcyB3ZSd2ZSBzZWVuLCB0aGlzIGlzIGFsc28gcG9zc2libGUgd2l0aCBnaXQuCi1Ib3dldmVyLCB0aGUgZGlzdHJpYnV0ZWQgbmF0dXJlIG9mIGdpdCBhbGxvd3Mgb3RoZXIgZGV2ZWxvcG1lbnQgbW9kZWxzLAorYSBjb21tb24gcmVwb3NpdG9yeS4gIEFzIHdlJ3ZlIHNlZW4sIHRoaXMgaXMgYWxzbyBwb3NzaWJsZSB3aXRoIEdpdC4KK0hvd2V2ZXIsIHRoZSBkaXN0cmlidXRlZCBuYXR1cmUgb2YgR2l0IGFsbG93cyBvdGhlciBkZXZlbG9wbWVudCBtb2RlbHMsCiBhbmQgeW91IG1heSB3YW50IHRvIGZpcnN0IGNvbnNpZGVyIHdoZXRoZXIgb25lIG9mIHRoZW0gbWlnaHQgYmUgYSBiZXR0ZXIKIGZpdCBmb3IgeW91ciBwcm9qZWN0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGRpZmZjb3JlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0ZGlmZmNvcmUudHh0CmluZGV4IGRhZjE3ODIuLmM4YjNlNTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0ZGlmZmNvcmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0ZGlmZmNvcmUudHh0CkBAIC0xMDgsNyArMTA4LDcgQEAKIEZvciB0aGUgcHVycG9zZSBvZiBicmVha2luZyBhIGZpbGVwYWlyLCBkaWZmY29yZS1icmVhayBleGFtaW5lcwogdGhlIGV4dGVudCBvZiBjaGFuZ2VzIGJldHdlZW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBiZWZvcmUKIGFuZCBhZnRlciBtb2RpZmljYXRpb24gKGkuZS4gdGhlIGNvbnRlbnRzIHRoYXQgaGF2ZSAiYmNkMTIzNC4uLiIKLWFuZCAiMDEyMzQ1Ni4uLiIgYXMgdGhlaXIgU0hBMSBjb250ZW50IElELCBpbiB0aGUgYWJvdmUKK2FuZCAiMDEyMzQ1Ni4uLiIgYXMgdGhlaXIgU0hBLTEgY29udGVudCBJRCwgaW4gdGhlIGFib3ZlCiBleGFtcGxlKS4gIFRoZSBhbW91bnQgb2YgZGVsZXRpb24gb2Ygb3JpZ2luYWwgY29udGVudHMgYW5kCiBpbnNlcnRpb24gb2YgbmV3IG1hdGVyaWFsIGFyZSBhZGRlZCB0b2dldGhlciwgYW5kIGlmIGl0IGV4Y2VlZHMKIHRoZSAiYnJlYWsgc2NvcmUiLCB0aGUgZmlsZXBhaXIgaXMgYnJva2VuIGludG8gdHdvLiAgVGhlIGJyZWFrCkBAIC0yMjIsMjYgKzIyMiwzNSBAQAogZGlmZmNvcmUtcGlja2F4ZTogRm9yIERldGVjdGluZyBBZGRpdGlvbi9EZWxldGlvbiBvZiBTcGVjaWZpZWQgU3RyaW5nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyB1c2VkIHRvIGZpbmQgZmlsZXBhaXJzIHRoYXQgcmVwcmVzZW50Ci1jaGFuZ2VzIHRoYXQgdG91Y2ggYSBzcGVjaWZpZWQgc3RyaW5nLCBhbmQgaXMgY29udHJvbGxlZCBieSB0aGUKLS1TIG9wdGlvbiBhbmQgdGhlIGAtLXBpY2theGUtYWxsYCBvcHRpb24gdG8gdGhlICdnaXQgZGlmZi0qJwotY29tbWFuZHMuCitUaGlzIHRyYW5zZm9ybWF0aW9uIGxpbWl0cyB0aGUgc2V0IG9mIGZpbGVwYWlycyB0byB0aG9zZSB0aGF0IGNoYW5nZQorc3BlY2lmaWVkIHN0cmluZ3MgYmV0d2VlbiB0aGUgcHJlaW1hZ2UgYW5kIHRoZSBwb3N0aW1hZ2UgaW4gYSBjZXJ0YWluCit3YXkuICAtUzxibG9jayBvZiB0ZXh0PiBhbmQgLUc8cmVndWxhciBleHByZXNzaW9uPiBvcHRpb25zIGFyZSB1c2VkIHRvCitzcGVjaWZ5IGRpZmZlcmVudCB3YXlzIHRoZXNlIHN0cmluZ3MgYXJlIHNvdWdodC4KIAotV2hlbiBkaWZmY29yZS1waWNrYXhlIGlzIGluIHVzZSwgaXQgY2hlY2tzIGlmIHRoZXJlIGFyZQotZmlsZXBhaXJzIHdob3NlICJyZXN1bHQiIHNpZGUgYW5kIHdob3NlICJvcmlnaW4iIHNpZGUgaGF2ZQotZGlmZmVyZW50IG51bWJlciBvZiBzcGVjaWZpZWQgc3RyaW5nLiAgU3VjaCBhIGZpbGVwYWlyIHJlcHJlc2VudHMKLSJ0aGUgc3RyaW5nIGFwcGVhcmVkIGluIHRoaXMgY2hhbmdlc2V0Ii4gIEl0IGFsc28gY2hlY2tzIGZvciB0aGUKLW9wcG9zaXRlIGNhc2UgdGhhdCBsb3NlcyB0aGUgc3BlY2lmaWVkIHN0cmluZy4KKyItUzxibG9jayBvZiB0ZXh0PiIgZGV0ZWN0cyBmaWxlcGFpcnMgd2hvc2UgcHJlaW1hZ2UgYW5kIHBvc3RpbWFnZQoraGF2ZSBkaWZmZXJlbnQgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHRoZSBzcGVjaWZpZWQgYmxvY2sgb2YgdGV4dC4KK0J5IGRlZmluaXRpb24sIGl0IHdpbGwgbm90IGRldGVjdCBpbi1maWxlIG1vdmVzLiAgQWxzbywgd2hlbiBhCitjaGFuZ2VzZXQgbW92ZXMgYSBmaWxlIHdob2xlc2FsZSB3aXRob3V0IGFmZmVjdGluZyB0aGUgaW50ZXJlc3RpbmcKK3N0cmluZywgZGlmZmNvcmUtcmVuYW1lIGtpY2tzIGluIGFzIHVzdWFsLCBhbmQgYC1TYCBvbWl0cyB0aGUgZmlsZXBhaXIKKyhzaW5jZSB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHRoYXQgc3RyaW5nIGRpZG4ndCBjaGFuZ2UgaW4gdGhhdAorcmVuYW1lLWRldGVjdGVkIGZpbGVwYWlyKS4gIFdoZW4gdXNlZCB3aXRoIGAtLXBpY2theGUtcmVnZXhgLCB0cmVhdAordGhlIDxibG9jayBvZiB0ZXh0PiBhcyBhbiBleHRlbmRlZCBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2gsCitpbnN0ZWFkIG9mIGEgbGl0ZXJhbCBzdHJpbmcuCiAKLVdoZW4gYC0tcGlja2F4ZS1hbGxgIGlzIG5vdCBpbiBlZmZlY3QsIGRpZmZjb3JlLXBpY2theGUgbGVhdmVzCi1vbmx5IHN1Y2ggZmlsZXBhaXJzIHRoYXQgdG91Y2ggdGhlIHNwZWNpZmllZCBzdHJpbmcgaW4gaXRzCi1vdXRwdXQuICBXaGVuIGAtLXBpY2theGUtYWxsYCBpcyB1c2VkLCBkaWZmY29yZS1waWNrYXhlIGxlYXZlcyBhbGwKLWZpbGVwYWlycyBpbnRhY3QgaWYgdGhlcmUgaXMgc3VjaCBhIGZpbGVwYWlyLCBvciBtYWtlcyB0aGUKLW91dHB1dCBlbXB0eSBvdGhlcndpc2UuICBUaGUgbGF0dGVyIGJlaGF2aW91ciBpcyBkZXNpZ25lZCB0bwotbWFrZSByZXZpZXdpbmcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHdob2xlCisiLUc8cmVndWxhciBleHByZXNzaW9uPiIgKG1uZW1vbmljOiBncmVwKSBkZXRlY3RzIGZpbGVwYWlycyB3aG9zZQordGV4dHVhbCBkaWZmIGhhcyBhbiBhZGRlZCBvciBhIGRlbGV0ZWQgbGluZSB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuCityZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIG1lYW5zIHRoYXQgaXQgd2lsbCBkZXRlY3QgaW4tZmlsZSAob3Igd2hhdAorcmVuYW1lLWRldGVjdGlvbiBjb25zaWRlcnMgdGhlIHNhbWUgZmlsZSkgbW92ZXMsIHdoaWNoIGlzIG5vaXNlLiAgVGhlCitpbXBsZW1lbnRhdGlvbiBydW5zIGRpZmYgdHdpY2UgYW5kIGdyZXBzLCBhbmQgdGhpcyBjYW4gYmUgcXVpdGUKK2V4cGVuc2l2ZS4KKworV2hlbiBgLVNgIG9yIGAtR2AgYXJlIHVzZWQgd2l0aG91dCBgLS1waWNrYXhlLWFsbGAsIG9ubHkgZmlsZXBhaXJzCit0aGF0IG1hdGNoIHRoZWlyIHJlc3BlY3RpdmUgY3JpdGVyaW9uIGFyZSBrZXB0IGluIHRoZSBvdXRwdXQuICBXaGVuCitgLS1waWNrYXhlLWFsbGAgaXMgdXNlZCwgaWYgZXZlbiBvbmUgZmlsZXBhaXIgbWF0Y2hlcyB0aGVpciByZXNwZWN0aXZlCitjcml0ZXJpb24gaW4gYSBjaGFuZ2VzZXQsIHRoZSBlbnRpcmUgY2hhbmdlc2V0IGlzIGtlcHQuICBUaGlzIGJlaGF2aW9yCitpcyBkZXNpZ25lZCB0byBtYWtlIHJldmlld2luZyBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIHRoZSB3aG9sZQogY2hhbmdlc2V0IGVhc2llci4KIAotCiBkaWZmY29yZS1vcmRlcjogRm9yIFNvcnRpbmcgdGhlIE91dHB1dCBCYXNlZCBvbiBGaWxlbmFtZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yNTQsNyArMjYzLDcgQEAKIGluIHRoZSBmaWxlIGFyZSBvdXRwdXQgYmVmb3JlIG9uZXMgdGhhdCBtYXRjaCBhIGxhdGVyIGxpbmUsIGFuZAogZmlsZXBhaXJzIHRoYXQgZG8gbm90IG1hdGNoIGFueSBnbG9iIHBhdHRlcm4gYXJlIG91dHB1dCBsYXN0LgogCi1BcyBhbiBleGFtcGxlLCBhIHR5cGljYWwgb3JkZXJmaWxlIGZvciB0aGUgY29yZSBnaXQgcHJvYmFibHkKK0FzIGFuIGV4YW1wbGUsIGEgdHlwaWNhbCBvcmRlcmZpbGUgZm9yIHRoZSBjb3JlIEdpdCBwcm9iYWJseQogd291bGQgbG9vayBsaWtlIHRoaXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRnbG9zc2FyeS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGdsb3NzYXJ5LnR4dAppbmRleCBkNzdhNDVhLi5lNTJkZTdkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGdsb3NzYXJ5LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGdsb3NzYXJ5LnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0Z2xvc3NhcnkgLSBBIEdJVCBHbG9zc2FyeQorZ2l0Z2xvc3NhcnkgLSBBIEdpdCBHbG9zc2FyeQogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE5LDcgKzE5LDcgQEAKIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10sCiBsaW5rZ2l0OmdpdHR1dG9yaWFsLTJbN10sCiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10sCi1saW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgZ2l0XSwKK2xpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBHaXRdLAogbGluazp1c2VyLW1hbnVhbC5odG1sW1RoZSBHaXQgVXNlcidzIE1hbnVhbF0KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGhvb2tzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CmluZGV4IDRlZWQ4NmIuLmQ0OGJmNGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0aG9va3MudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRob29rcyAtIEhvb2tzIHVzZWQgYnkgZ2l0CitnaXRob29rcyAtIEhvb2tzIHVzZWQgYnkgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpAQCAtOTksNyArOTksNyBAQAogY29uZmlndXJhdGlvbiBvcHRpb24gYGNvbW1pdC50ZW1wbGF0ZWAgaXMgc2V0KTsgYG1lcmdlYCAoaWYgdGhlCiBjb21taXQgaXMgYSBtZXJnZSBvciBhIGAuZ2l0L01FUkdFX01TR2AgZmlsZSBleGlzdHMpOyBgc3F1YXNoYAogKGlmIGEgYC5naXQvU1FVQVNIX01TR2AgZmlsZSBleGlzdHMpOyBvciBgY29tbWl0YCwgZm9sbG93ZWQgYnkKLWEgY29tbWl0IFNIQTEgKGlmIGEgYC1jYCwgYC1DYCBvciBgLS1hbWVuZGAgb3B0aW9uIHdhcyBnaXZlbikuCithIGNvbW1pdCBTSEEtMSAoaWYgYSBgLWNgLCBgLUNgIG9yIGAtLWFtZW5kYCBvcHRpb24gd2FzIGdpdmVuKS4KIAogSWYgdGhlIGV4aXQgc3RhdHVzIGlzIG5vbi16ZXJvLCAnZ2l0IGNvbW1pdCcgd2lsbCBhYm9ydC4KIApAQCAtMTA4LDcgKzEwOCw3IEBACiBtZWFucyBhIGZhaWx1cmUgb2YgdGhlIGhvb2sgYW5kIGFib3J0cyB0aGUgY29tbWl0LiAgSXQgc2hvdWxkIG5vdAogYmUgdXNlZCBhcyByZXBsYWNlbWVudCBmb3IgcHJlLWNvbW1pdCBob29rLgogCi1UaGUgc2FtcGxlIGBwcmVwYXJlLWNvbW1pdC1tc2dgIGhvb2sgdGhhdCBjb21lcyB3aXRoIGdpdCBjb21tZW50cworVGhlIHNhbXBsZSBgcHJlcGFyZS1jb21taXQtbXNnYCBob29rIHRoYXQgY29tZXMgd2l0aCBHaXQgY29tbWVudHMKIG91dCB0aGUgYENvbmZsaWN0czpgIHBhcnQgb2YgYSBtZXJnZSdzIGNvbW1pdCBtZXNzYWdlLgogCiBjb21taXQtbXNnCkBAIC0xNzgsNiArMTc4LDM1IEBACiAoZWc6IHBlcm1pc3Npb25zL293bmVyc2hpcCwgQUNMUywgZXRjKS4gIFNlZSBjb250cmliL2hvb2tzL3NldGdpdHBlcm1zLnBlcmwKIGZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBkbyB0aGlzLgogCitwcmUtcHVzaAorfn5+fn5+fn4KKworVGhpcyBob29rIGlzIGNhbGxlZCBieSAnZ2l0IHB1c2gnIGFuZCBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IGEgcHVzaCBmcm9tIHRha2luZworcGxhY2UuICBUaGUgaG9vayBpcyBjYWxsZWQgd2l0aCB0d28gcGFyYW1ldGVycyB3aGljaCBwcm92aWRlIHRoZSBuYW1lIGFuZAorbG9jYXRpb24gb2YgdGhlIGRlc3RpbmF0aW9uIHJlbW90ZSwgaWYgYSBuYW1lZCByZW1vdGUgaXMgbm90IGJlaW5nIHVzZWQgYm90aAordmFsdWVzIHdpbGwgYmUgdGhlIHNhbWUuCisKK0luZm9ybWF0aW9uIGFib3V0IHdoYXQgaXMgdG8gYmUgcHVzaGVkIGlzIHByb3ZpZGVkIG9uIHRoZSBob29rJ3Mgc3RhbmRhcmQKK2lucHV0IHdpdGggbGluZXMgb2YgdGhlIGZvcm06CisKKyAgPGxvY2FsIHJlZj4gU1AgPGxvY2FsIHNoYTE+IFNQIDxyZW1vdGUgcmVmPiBTUCA8cmVtb3RlIHNoYTE+IExGCisKK0ZvciBpbnN0YW5jZSwgaWYgdGhlIGNvbW1hbmQgK2dpdCBwdXNoIG9yaWdpbiBtYXN0ZXI6Zm9yZWlnbisgd2VyZSBydW4gdGhlCitob29rIHdvdWxkIHJlY2VpdmUgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZzoKKworICByZWZzL2hlYWRzL21hc3RlciA2Nzg5MCByZWZzL2hlYWRzL2ZvcmVpZ24gMTIzNDUKKworYWx0aG91Z2ggdGhlIGZ1bGwsIDQwLWNoYXJhY3RlciBTSEEtMXMgd291bGQgYmUgc3VwcGxpZWQuICBJZiB0aGUgZm9yZWlnbiByZWYKK2RvZXMgbm90IHlldCBleGlzdCB0aGUgYDxyZW1vdGUgU0hBLTE+YCB3aWxsIGJlIDQwIGAwYC4gIElmIGEgcmVmIGlzIHRvIGJlCitkZWxldGVkLCB0aGUgYDxsb2NhbCByZWY+YCB3aWxsIGJlIHN1cHBsaWVkIGFzIGAoZGVsZXRlKWAgYW5kIHRoZSBgPGxvY2FsCitTSEEtMT5gIHdpbGwgYmUgNDAgYDBgLiAgSWYgdGhlIGxvY2FsIGNvbW1pdCB3YXMgc3BlY2lmaWVkIGJ5IHNvbWV0aGluZyBvdGhlcgordGhhbiBhIG5hbWUgd2hpY2ggY291bGQgYmUgZXhwYW5kZWQgKHN1Y2ggYXMgYEhFQUR+YCwgb3IgYSBTSEEtMSkgaXQgd2lsbCBiZQorc3VwcGxpZWQgYXMgaXQgd2FzIG9yaWdpbmFsbHkgZ2l2ZW4uCisKK0lmIHRoaXMgaG9vayBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzLCAnZ2l0IHB1c2gnIHdpbGwgYWJvcnQgd2l0aG91dAorcHVzaGluZyBhbnl0aGluZy4gIEluZm9ybWF0aW9uIGFib3V0IHdoeSB0aGUgcHVzaCBpcyByZWplY3RlZCBtYXkgYmUgc2VudAordG8gdGhlIHVzZXIgYnkgd3JpdGluZyB0byBzdGFuZGFyZCBlcnJvci4KKwogW1twcmUtcmVjZWl2ZV1dCiBwcmUtcmVjZWl2ZQogfn5+fn5+fn5+fn4KQEAgLTI3Nyw3ICszMDYsNyBAQAogCiBUaGUgZGVmYXVsdCAncG9zdC1yZWNlaXZlJyBob29rIGlzIGVtcHR5LCBidXQgdGhlcmUgaXMKIGEgc2FtcGxlIHNjcmlwdCBgcG9zdC1yZWNlaXZlLWVtYWlsYCBwcm92aWRlZCBpbiB0aGUgYGNvbnRyaWIvaG9va3NgCi1kaXJlY3RvcnkgaW4gZ2l0IGRpc3RyaWJ1dGlvbiwgd2hpY2ggaW1wbGVtZW50cyBzZW5kaW5nIGNvbW1pdAorZGlyZWN0b3J5IGluIEdpdCBkaXN0cmlidXRpb24sIHdoaWNoIGltcGxlbWVudHMgc2VuZGluZyBjb21taXQKIGVtYWlscy4KIAogW1twb3N0LXVwZGF0ZV1dCkBAIC0zMDUsNyArMzM0LDcgQEAKIFdoZW4gZW5hYmxlZCwgdGhlIGRlZmF1bHQgJ3Bvc3QtdXBkYXRlJyBob29rIHJ1bnMKICdnaXQgdXBkYXRlLXNlcnZlci1pbmZvJyB0byBrZWVwIHRoZSBpbmZvcm1hdGlvbiB1c2VkIGJ5IGR1bWIKIHRyYW5zcG9ydHMgKGUuZy4sIEhUVFApIHVwLXRvLWRhdGUuICBJZiB5b3UgYXJlIHB1Ymxpc2hpbmcKLWEgZ2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBIVFRQLCB5b3Ugc2hvdWxkCithIEdpdCByZXBvc2l0b3J5IHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgSFRUUCwgeW91IHNob3VsZAogcHJvYmFibHkgZW5hYmxlIHRoaXMgaG9vay4KIAogQm90aCBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIG91dHB1dCBhcmUgZm9yd2FyZGVkIHRvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGlnbm9yZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdGlnbm9yZS50eHQKaW5kZXggMWI4MmZlMS4uNTRlMzM0ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRpZ25vcmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0aWdub3JlLnR4dApAQCAtMTMsMTIgKzEzLDEyIEBACiAtLS0tLS0tLS0tLQogCiBBIGBnaXRpZ25vcmVgIGZpbGUgc3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRoYXQKLWdpdCBzaG91bGQgaWdub3JlLgotRmlsZXMgYWxyZWFkeSB0cmFja2VkIGJ5IGdpdCBhcmUgbm90IGFmZmVjdGVkOyBzZWUgdGhlIE5PVEVTCitHaXQgc2hvdWxkIGlnbm9yZS4KK0ZpbGVzIGFscmVhZHkgdHJhY2tlZCBieSBHaXQgYXJlIG5vdCBhZmZlY3RlZDsgc2VlIHRoZSBOT1RFUwogYmVsb3cgZm9yIGRldGFpbHMuCiAKIEVhY2ggbGluZSBpbiBhIGBnaXRpZ25vcmVgIGZpbGUgc3BlY2lmaWVzIGEgcGF0dGVybi4KLVdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBpZ25vcmUgYSBwYXRoLCBnaXQgbm9ybWFsbHkgY2hlY2tzCitXaGVuIGRlY2lkaW5nIHdoZXRoZXIgdG8gaWdub3JlIGEgcGF0aCwgR2l0IG5vcm1hbGx5IGNoZWNrcwogYGdpdGlnbm9yZWAgcGF0dGVybnMgZnJvbSBtdWx0aXBsZSBzb3VyY2VzLCB3aXRoIHRoZSBmb2xsb3dpbmcKIG9yZGVyIG9mIHByZWNlZGVuY2UsIGZyb20gaGlnaGVzdCB0byBsb3dlc3QgKHdpdGhpbiBvbmUgbGV2ZWwgb2YKIHByZWNlZGVuY2UsIHRoZSBsYXN0IG1hdGNoaW5nIHBhdHRlcm4gZGVjaWRlcyB0aGUgb3V0Y29tZSk6CkBAIC01MywxNyArNTMsMTcgQEAKICAgIHRoZSByZXBvc2l0b3J5IGJ1dCBhcmUgc3BlY2lmaWMgdG8gb25lIHVzZXIncyB3b3JrZmxvdykgc2hvdWxkIGdvIGludG8KICAgIHRoZSBgJEdJVF9ESVIvaW5mby9leGNsdWRlYCBmaWxlLgogCi0gKiBQYXR0ZXJucyB3aGljaCBhIHVzZXIgd2FudHMgZ2l0IHRvCisgKiBQYXR0ZXJucyB3aGljaCBhIHVzZXIgd2FudHMgR2l0IHRvCiAgICBpZ25vcmUgaW4gYWxsIHNpdHVhdGlvbnMgKGUuZy4sIGJhY2t1cCBvciB0ZW1wb3JhcnkgZmlsZXMgZ2VuZXJhdGVkIGJ5CiAgICB0aGUgdXNlcidzIGVkaXRvciBvZiBjaG9pY2UpIGdlbmVyYWxseSBnbyBpbnRvIGEgZmlsZSBzcGVjaWZpZWQgYnkKICAgIGBjb3JlLmV4Y2x1ZGVzZmlsZWAgaW4gdGhlIHVzZXIncyBgfi8uZ2l0Y29uZmlnYC4gSXRzIGRlZmF1bHQgdmFsdWUgaXMKICAgICRYREdfQ09ORklHX0hPTUUvZ2l0L2lnbm9yZS4gSWYgJFhER19DT05GSUdfSE9NRSBpcyBlaXRoZXIgbm90IHNldCBvcgogICAgZW1wdHksICRIT01FLy5jb25maWcvZ2l0L2lnbm9yZSBpcyB1c2VkIGluc3RlYWQuCiAKLVRoZSB1bmRlcmx5aW5nIGdpdCBwbHVtYmluZyB0b29scywgc3VjaCBhcworVGhlIHVuZGVybHlpbmcgR2l0IHBsdW1iaW5nIHRvb2xzLCBzdWNoIGFzCiAnZ2l0IGxzLWZpbGVzJyBhbmQgJ2dpdCByZWFkLXRyZWUnLCByZWFkCiBgZ2l0aWdub3JlYCBwYXR0ZXJucyBzcGVjaWZpZWQgYnkgY29tbWFuZC1saW5lIG9wdGlvbnMsIG9yIGZyb20KLWZpbGVzIHNwZWNpZmllZCBieSBjb21tYW5kLWxpbmUgb3B0aW9ucy4gIEhpZ2hlci1sZXZlbCBnaXQKK2ZpbGVzIHNwZWNpZmllZCBieSBjb21tYW5kLWxpbmUgb3B0aW9ucy4gIEhpZ2hlci1sZXZlbCBHaXQKIHRvb2xzLCBzdWNoIGFzICdnaXQgc3RhdHVzJyBhbmQgJ2dpdCBhZGQnLAogdXNlIHBhdHRlcm5zIGZyb20gdGhlIHNvdXJjZXMgc3BlY2lmaWVkIGFib3ZlLgogCkBAIC04OSwxNSArODksMTUgQEAKICAgIGEgbWF0Y2ggd2l0aCBhIGRpcmVjdG9yeS4gIEluIG90aGVyIHdvcmRzLCBgZm9vL2Agd2lsbCBtYXRjaCBhCiAgICBkaXJlY3RvcnkgYGZvb2AgYW5kIHBhdGhzIHVuZGVybmVhdGggaXQsIGJ1dCB3aWxsIG5vdCBtYXRjaCBhCiAgICByZWd1bGFyIGZpbGUgb3IgYSBzeW1ib2xpYyBsaW5rIGBmb29gICh0aGlzIGlzIGNvbnNpc3RlbnQKLSAgIHdpdGggdGhlIHdheSBob3cgcGF0aHNwZWMgd29ya3MgaW4gZ2VuZXJhbCBpbiBnaXQpLgorICAgd2l0aCB0aGUgd2F5IGhvdyBwYXRoc3BlYyB3b3JrcyBpbiBnZW5lcmFsIGluIEdpdCkuCiAKLSAtIElmIHRoZSBwYXR0ZXJuIGRvZXMgbm90IGNvbnRhaW4gYSBzbGFzaCAnLycsIGdpdCB0cmVhdHMgaXQgYXMKKyAtIElmIHRoZSBwYXR0ZXJuIGRvZXMgbm90IGNvbnRhaW4gYSBzbGFzaCAnLycsIEdpdCB0cmVhdHMgaXQgYXMKICAgIGEgc2hlbGwgZ2xvYiBwYXR0ZXJuIGFuZCBjaGVja3MgZm9yIGEgbWF0Y2ggYWdhaW5zdCB0aGUKICAgIHBhdGhuYW1lIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgYC5naXRpZ25vcmVgIGZpbGUKICAgIChyZWxhdGl2ZSB0byB0aGUgdG9wbGV2ZWwgb2YgdGhlIHdvcmsgdHJlZSBpZiBub3QgZnJvbSBhCiAgICBgLmdpdGlnbm9yZWAgZmlsZSkuCiAKLSAtIE90aGVyd2lzZSwgZ2l0IHRyZWF0cyB0aGUgcGF0dGVybiBhcyBhIHNoZWxsIGdsb2Igc3VpdGFibGUKKyAtIE90aGVyd2lzZSwgR2l0IHRyZWF0cyB0aGUgcGF0dGVybiBhcyBhIHNoZWxsIGdsb2Igc3VpdGFibGUKICAgIGZvciBjb25zdW1wdGlvbiBieSBmbm1hdGNoKDMpIHdpdGggdGhlIEZOTV9QQVRITkFNRSBmbGFnOgogICAgd2lsZGNhcmRzIGluIHRoZSBwYXR0ZXJuIHdpbGwgbm90IG1hdGNoIGEgLyBpbiB0aGUgcGF0aG5hbWUuCiAgICBGb3IgZXhhbXBsZSwgIkRvY3VtZW50YXRpb24ve2FzdGVyaXNrfS5odG1sIiBtYXRjaGVzCkBAIC0xMDgsMTEgKzEwOCwzMCBAQAogICAgRm9yIGV4YW1wbGUsICIve2FzdGVyaXNrfS5jIiBtYXRjaGVzICJjYXQtZmlsZS5jIiBidXQgbm90CiAgICAibW96aWxsYS1zaGExL3NoYTEuYyIuCiAKK1R3byBjb25zZWN1dGl2ZSBhc3Rlcmlza3MgKCJgKipgIikgaW4gcGF0dGVybnMgbWF0Y2hlZCBhZ2FpbnN0CitmdWxsIHBhdGhuYW1lIG1heSBoYXZlIHNwZWNpYWwgbWVhbmluZzoKKworIC0gQSBsZWFkaW5nICJgKipgIiBmb2xsb3dlZCBieSBhIHNsYXNoIG1lYW5zIG1hdGNoIGluIGFsbAorICAgZGlyZWN0b3JpZXMuIEZvciBleGFtcGxlLCAiYCoqL2Zvb2AiIG1hdGNoZXMgZmlsZSBvciBkaXJlY3RvcnkKKyAgICJgZm9vYCIgYW55d2hlcmUsIHRoZSBzYW1lIGFzIHBhdHRlcm4gImBmb29gIi4gIioqL2Zvby9iYXIiCisgICBtYXRjaGVzIGZpbGUgb3IgZGlyZWN0b3J5ICJgYmFyYCIgYW55d2hlcmUgdGhhdCBpcyBkaXJlY3RseQorICAgdW5kZXIgZGlyZWN0b3J5ICJgZm9vYCIuCisKKyAtIEEgdHJhaWxpbmcgIi8qKiIgbWF0Y2hlcyBldmVyeXRoaW5nIGluc2lkZS4gRm9yIGV4YW1wbGUsCisgICAiYWJjLyoqIiBtYXRjaGVzIGFsbCBmaWxlcyBpbnNpZGUgZGlyZWN0b3J5ICJhYmMiLCByZWxhdGl2ZQorICAgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBgLmdpdGlnbm9yZWAgZmlsZSwgd2l0aCBpbmZpbml0ZSBkZXB0aC4KKworIC0gQSBzbGFzaCBmb2xsb3dlZCBieSB0d28gY29uc2VjdXRpdmUgYXN0ZXJpc2tzIHRoZW4gYSBzbGFzaAorICAgbWF0Y2hlcyB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMuIEZvciBleGFtcGxlLCAiYGEvKiovYmAiCisgICBtYXRjaGVzICJgYS9iYCIsICJgYS94L2JgIiwgImBhL3gveS9iYCIgYW5kIHNvIG9uLgorCisgLSBPdGhlciBjb25zZWN1dGl2ZSBhc3Rlcmlza3MgYXJlIGNvbnNpZGVyZWQgaW52YWxpZC4KKwogTk9URVMKIC0tLS0tCiAKIFRoZSBwdXJwb3NlIG9mIGdpdGlnbm9yZSBmaWxlcyBpcyB0byBlbnN1cmUgdGhhdCBjZXJ0YWluIGZpbGVzCi1ub3QgdHJhY2tlZCBieSBnaXQgcmVtYWluIHVudHJhY2tlZC4KK25vdCB0cmFja2VkIGJ5IEdpdCByZW1haW4gdW50cmFja2VkLgogCiBUbyBpZ25vcmUgdW5jb21taXR0ZWQgY2hhbmdlcyBpbiBhIGZpbGUgdGhhdCBpcyBhbHJlYWR5IHRyYWNrZWQsCiB1c2UgJ2dpdCB1cGRhdGUtaW5kZXgge2xpdGRkfWFzc3VtZS11bmNoYW5nZWQnLgpAQCAtMTYwLDEzICsxNzksMTUgQEAKICAgICAkIGVjaG8gJyEvdm1saW51eConID5hcmNoL2Zvby9rZXJuZWwvLmdpdGlnbm9yZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIHNlY29uZCAuZ2l0aWdub3JlIHByZXZlbnRzIGdpdCBmcm9tIGlnbm9yaW5nCitUaGUgc2Vjb25kIC5naXRpZ25vcmUgcHJldmVudHMgR2l0IGZyb20gaWdub3JpbmcKIGBhcmNoL2Zvby9rZXJuZWwvdm1saW51eC5sZHMuU2AuCiAKIFNFRSBBTFNPCiAtLS0tLS0tLQotbGlua2dpdDpnaXQtcm1bMV0sIGxpbmtnaXQ6Z2l0LXVwZGF0ZS1pbmRleFsxXSwKLWxpbmtnaXQ6Z2l0cmVwb3NpdG9yeS1sYXlvdXRbNV0KK2xpbmtnaXQ6Z2l0LXJtWzFdLAorbGlua2dpdDpnaXQtdXBkYXRlLWluZGV4WzFdLAorbGlua2dpdDpnaXRyZXBvc2l0b3J5LWxheW91dFs1XSwKK2xpbmtnaXQ6Z2l0LWNoZWNrLWlnbm9yZVsxXQogCiBHSVQKIC0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRrLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0ay50eHQKaW5kZXggYTE3YTM1NC4uYzE3ZTc2MCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRrLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdGsudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXRrIC0gVGhlIGdpdCByZXBvc2l0b3J5IGJyb3dzZXIKK2dpdGsgLSBUaGUgR2l0IHJlcG9zaXRvcnkgYnJvd3NlcgogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTE4LDcgKzE4LDcgQEAKIAogSGlzdG9yaWNhbGx5LCBnaXRrIHdhcyB0aGUgZmlyc3QgcmVwb3NpdG9yeSBicm93c2VyLiBJdCdzIHdyaXR0ZW4gaW4gdGNsL3RrCiBhbmQgc3RhcnRlZCBvZmYgaW4gYSBzZXBhcmF0ZSByZXBvc2l0b3J5IGJ1dCB3YXMgbGF0ZXIgbWVyZ2VkIGludG8gdGhlIG1haW4KLWdpdCByZXBvc2l0b3J5LgorR2l0IHJlcG9zaXRvcnkuCiAKIE9QVElPTlMKIC0tLS0tLS0KQEAgLTEwOCwxMCArMTA4LDEwIEBACiAKICdnaXR2aWV3KDEpJzo6CiAJQSByZXBvc2l0b3J5IGJyb3dzZXIgd3JpdHRlbiBpbiBQeXRob24gdXNpbmcgR3RrLiBJdCdzIGJhc2VkIG9uCi0JJ2J6cmsoMSknIGFuZCBkaXN0cmlidXRlZCBpbiB0aGUgY29udHJpYiBhcmVhIG9mIHRoZSBnaXQgcmVwb3NpdG9yeS4KKwknYnpyaygxKScgYW5kIGRpc3RyaWJ1dGVkIGluIHRoZSBjb250cmliIGFyZWEgb2YgdGhlIEdpdCByZXBvc2l0b3J5LgogCiAndGlnKDEpJzo6Ci0JQSBtaW5pbWFsIHJlcG9zaXRvcnkgYnJvd3NlciBhbmQgZ2l0IHRvb2wgb3V0cHV0IGhpZ2hsaWdodGVyIHdyaXR0ZW4KKwlBIG1pbmltYWwgcmVwb3NpdG9yeSBicm93c2VyIGFuZCBHaXQgdG9vbCBvdXRwdXQgaGlnaGxpZ2h0ZXIgd3JpdHRlbgogCWluIEMgdXNpbmcgTmN1cnNlcy4KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdG1vZHVsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRtb2R1bGVzLnR4dAppbmRleCBhYjNlOTFjLi42YTFjYTRhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdG1vZHVsZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0bW9kdWxlcy50eHQKQEAgLTEzLDcgKzEzLDcgQEAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQogCi1UaGUgYC5naXRtb2R1bGVzYCBmaWxlLCBsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIGEgZ2l0CitUaGUgYC5naXRtb2R1bGVzYCBmaWxlLCBsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIGEgR2l0CiB3b3JraW5nIHRyZWUsIGlzIGEgdGV4dCBmaWxlIHdpdGggYSBzeW50YXggbWF0Y2hpbmcgdGhlIHJlcXVpcmVtZW50cwogb2YgbGlua2dpdDpnaXQtY29uZmlnWzFdLgogCkBAIC0yNCw3ICsyNCw3IEBACiBmb2xsb3dpbmcgcmVxdWlyZWQga2V5czoKIAogc3VibW9kdWxlLjxuYW1lPi5wYXRoOjoKLQlEZWZpbmVzIHRoZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgZ2l0CisJRGVmaW5lcyB0aGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhlIEdpdAogCXdvcmtpbmcgdHJlZSwgd2hlcmUgdGhlIHN1Ym1vZHVsZSBpcyBleHBlY3RlZCB0byBiZSBjaGVja2VkIG91dC4KIAlUaGUgcGF0aCBuYW1lIG11c3Qgbm90IGVuZCB3aXRoIGEgYC9gLiBBbGwgc3VibW9kdWxlIHBhdGhzIG11c3QKIAliZSB1bmlxdWUgd2l0aGluIHRoZSAuZ2l0bW9kdWxlcyBmaWxlLgpAQCAtNDksNiArNDksMTEgQEAKIAlUaGlzIGNvbmZpZyBvcHRpb24gaXMgb3ZlcnJpZGRlbiBpZiAnZ2l0IHN1Ym1vZHVsZSB1cGRhdGUnIGlzIGdpdmVuCiAJdGhlICctLW1lcmdlJywgJy0tcmViYXNlJyBvciAnLS1jaGVja291dCcgb3B0aW9ucy4KIAorc3VibW9kdWxlLjxuYW1lPi5icmFuY2g6OgorCUEgcmVtb3RlIGJyYW5jaCBuYW1lIGZvciB0cmFja2luZyB1cGRhdGVzIGluIHRoZSB1cHN0cmVhbSBzdWJtb2R1bGUuCisJSWYgdGhlIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byAnbWFzdGVyJy4gIFNlZSB0aGUKKwlgLS1yZW1vdGVgIGRvY3VtZW50YXRpb24gaW4gbGlua2dpdDpnaXQtc3VibW9kdWxlWzFdIGZvciBkZXRhaWxzLgorCiBzdWJtb2R1bGUuPG5hbWU+LmZldGNoUmVjdXJzZVN1Ym1vZHVsZXM6OgogCVRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgcmVjdXJzaXZlIGZldGNoaW5nIG9mIHRoaXMKIAlzdWJtb2R1bGUuIElmIHRoaXMgb3B0aW9uIGlzIGFsc28gcHJlc2VudCBpbiB0aGUgc3VibW9kdWxlcyBlbnRyeSBpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRuYW1lc3BhY2VzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0bmFtZXNwYWNlcy50eHQKaW5kZXggYzY3MTNjZi4uNzY4NWUzNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRuYW1lc3BhY2VzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdG5hbWVzcGFjZXMudHh0CkBAIC0yOSw3ICsyOSw3IEBACiB3aXRob3V0IG9uZ29pbmcgbWFpbnRlbmFuY2UsIHdoaWxlIG5hbWVzcGFjZXMgZG8uCiAKIFRvIHNwZWNpZnkgYSBuYW1lc3BhY2UsIHNldCB0aGUgYEdJVF9OQU1FU1BBQ0VgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvCi10aGUgbmFtZXNwYWNlLiAgRm9yIGVhY2ggcmVmIG5hbWVzcGFjZSwgZ2l0IHN0b3JlcyB0aGUgY29ycmVzcG9uZGluZwordGhlIG5hbWVzcGFjZS4gIEZvciBlYWNoIHJlZiBuYW1lc3BhY2UsIEdpdCBzdG9yZXMgdGhlIGNvcnJlc3BvbmRpbmcKIHJlZnMgaW4gYSBkaXJlY3RvcnkgdW5kZXIgYHJlZnMvbmFtZXNwYWNlcy9gLiAgRm9yIGV4YW1wbGUsCiBgR0lUX05BTUVTUEFDRT1mb29gIHdpbGwgc3RvcmUgcmVmcyB1bmRlciBgcmVmcy9uYW1lc3BhY2VzL2Zvby9gLiAgWW91CiBjYW4gYWxzbyBzcGVjaWZ5IG5hbWVzcGFjZXMgdmlhIHRoZSBgLS1uYW1lc3BhY2VgIG9wdGlvbiB0bwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZW1vdGUtaGVscGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dAppbmRleCAwZjIxMzY3Li4wODI3ZjY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dApAQCAtMTQsMTcgKzE0LDE3IEBACiAtLS0tLS0tLS0tLQogCiBSZW1vdGUgaGVscGVyIHByb2dyYW1zIGFyZSBub3JtYWxseSBub3QgdXNlZCBkaXJlY3RseSBieSBlbmQgdXNlcnMsCi1idXQgdGhleSBhcmUgaW52b2tlZCBieSBnaXQgd2hlbiBpdCBuZWVkcyB0byBpbnRlcmFjdCB3aXRoIHJlbW90ZQotcmVwb3NpdG9yaWVzIGdpdCBkb2VzIG5vdCBzdXBwb3J0IG5hdGl2ZWx5LiAgQSBnaXZlbiBoZWxwZXIgd2lsbAotaW1wbGVtZW50IGEgc3Vic2V0IG9mIHRoZSBjYXBhYmlsaXRpZXMgZG9jdW1lbnRlZCBoZXJlLiBXaGVuIGdpdAorYnV0IHRoZXkgYXJlIGludm9rZWQgYnkgR2l0IHdoZW4gaXQgbmVlZHMgdG8gaW50ZXJhY3Qgd2l0aCByZW1vdGUKK3JlcG9zaXRvcmllcyBHaXQgZG9lcyBub3Qgc3VwcG9ydCBuYXRpdmVseS4gIEEgZ2l2ZW4gaGVscGVyIHdpbGwKK2ltcGxlbWVudCBhIHN1YnNldCBvZiB0aGUgY2FwYWJpbGl0aWVzIGRvY3VtZW50ZWQgaGVyZS4gV2hlbiBHaXQKIG5lZWRzIHRvIGludGVyYWN0IHdpdGggYSByZXBvc2l0b3J5IHVzaW5nIGEgcmVtb3RlIGhlbHBlciwgaXQgc3Bhd25zCiB0aGUgaGVscGVyIGFzIGFuIGluZGVwZW5kZW50IHByb2Nlc3MsIHNlbmRzIGNvbW1hbmRzIHRvIHRoZSBoZWxwZXIncwogc3RhbmRhcmQgaW5wdXQsIGFuZCBleHBlY3RzIHJlc3VsdHMgZnJvbSB0aGUgaGVscGVyJ3Mgc3RhbmRhcmQKIG91dHB1dC4gQmVjYXVzZSBhIHJlbW90ZSBoZWxwZXIgcnVucyBhcyBhbiBpbmRlcGVuZGVudCBwcm9jZXNzIGZyb20KLWdpdCwgdGhlcmUgaXMgbm8gbmVlZCB0byByZS1saW5rIGdpdCB0byBhZGQgYSBuZXcgaGVscGVyLCBub3IgYW55Ci1uZWVkIHRvIGxpbmsgdGhlIGhlbHBlciB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBnaXQuCitHaXQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmUtbGluayBHaXQgdG8gYWRkIGEgbmV3IGhlbHBlciwgbm9yIGFueQorbmVlZCB0byBsaW5rIHRoZSBoZWxwZXIgd2l0aCB0aGUgaW1wbGVtZW50YXRpb24gb2YgR2l0LgogCi1FdmVyeSBoZWxwZXIgbXVzdCBzdXBwb3J0IHRoZSAiY2FwYWJpbGl0aWVzIiBjb21tYW5kLCB3aGljaCBnaXQKK0V2ZXJ5IGhlbHBlciBtdXN0IHN1cHBvcnQgdGhlICJjYXBhYmlsaXRpZXMiIGNvbW1hbmQsIHdoaWNoIEdpdAogdXNlcyB0byBkZXRlcm1pbmUgd2hhdCBvdGhlciBjb21tYW5kcyB0aGUgaGVscGVyIHdpbGwgYWNjZXB0LiAgVGhvc2UKIG90aGVyIGNvbW1hbmRzIGNhbiBiZSB1c2VkIHRvIGRpc2NvdmVyIGFuZCB1cGRhdGUgcmVtb3RlIHJlZnMsCiB0cmFuc3BvcnQgb2JqZWN0cyBiZXR3ZWVuIHRoZSBvYmplY3QgZGF0YWJhc2UgYW5kIHRoZSByZW1vdGUgcmVwb3NpdG9yeSwKQEAgLTM5LDE1ICszOSwxNSBAQAogLS0tLS0tLS0tLQogCiBSZW1vdGUgaGVscGVyIHByb2dyYW1zIGFyZSBpbnZva2VkIHdpdGggb25lIG9yIChvcHRpb25hbGx5KSB0d28KLWFyZ3VtZW50cy4gVGhlIGZpcnN0IGFyZ3VtZW50IHNwZWNpZmllcyBhIHJlbW90ZSByZXBvc2l0b3J5IGFzIGluIGdpdDsKK2FyZ3VtZW50cy4gVGhlIGZpcnN0IGFyZ3VtZW50IHNwZWNpZmllcyBhIHJlbW90ZSByZXBvc2l0b3J5IGFzIGluIEdpdDsKIGl0IGlzIGVpdGhlciB0aGUgbmFtZSBvZiBhIGNvbmZpZ3VyZWQgcmVtb3RlIG9yIGEgVVJMLiBUaGUgc2Vjb25kCiBhcmd1bWVudCBzcGVjaWZpZXMgYSBVUkw7IGl0IGlzIHVzdWFsbHkgb2YgdGhlIGZvcm0KICc8dHJhbnNwb3J0PjovLzxhZGRyZXNzPicsIGJ1dCBhbnkgYXJiaXRyYXJ5IHN0cmluZyBpcyBwb3NzaWJsZS4KIFRoZSAnR0lUX0RJUicgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0IHVwIGZvciB0aGUgcmVtb3RlIGhlbHBlcgogYW5kIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGVyZSB0byBzdG9yZSBhZGRpdGlvbmFsIGRhdGEgb3IgZnJvbQotd2hpY2ggZGlyZWN0b3J5IHRvIGludm9rZSBhdXhpbGlhcnkgZ2l0IGNvbW1hbmRzLgord2hpY2ggZGlyZWN0b3J5IHRvIGludm9rZSBhdXhpbGlhcnkgR2l0IGNvbW1hbmRzLgogCi1XaGVuIGdpdCBlbmNvdW50ZXJzIGEgVVJMIG9mIHRoZSBmb3JtICc8dHJhbnNwb3J0PjovLzxhZGRyZXNzPicsIHdoZXJlCitXaGVuIEdpdCBlbmNvdW50ZXJzIGEgVVJMIG9mIHRoZSBmb3JtICc8dHJhbnNwb3J0PjovLzxhZGRyZXNzPicsIHdoZXJlCiAnPHRyYW5zcG9ydD4nIGlzIGEgcHJvdG9jb2wgdGhhdCBpdCBjYW5ub3QgaGFuZGxlIG5hdGl2ZWx5LCBpdAogYXV0b21hdGljYWxseSBpbnZva2VzICdnaXQgcmVtb3RlLTx0cmFuc3BvcnQ+JyB3aXRoIHRoZSBmdWxsIFVSTCBhcwogdGhlIHNlY29uZCBhcmd1bWVudC4gSWYgc3VjaCBhIFVSTCBpcyBlbmNvdW50ZXJlZCBkaXJlY3RseSBvbiB0aGUKQEAgLTU1LDE0ICs1NSwxNCBAQAogaXMgZW5jb3VudGVyZWQgaW4gYSBjb25maWd1cmVkIHJlbW90ZSwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lCiBvZiB0aGF0IHJlbW90ZS4KIAotQSBVUkwgb2YgdGhlIGZvcm0gJzx0cmFuc3BvcnQ+Ojo8YWRkcmVzcz4nIGV4cGxpY2l0bHkgaW5zdHJ1Y3RzIGdpdCB0bworQSBVUkwgb2YgdGhlIGZvcm0gJzx0cmFuc3BvcnQ+Ojo8YWRkcmVzcz4nIGV4cGxpY2l0bHkgaW5zdHJ1Y3RzIEdpdCB0bwogaW52b2tlICdnaXQgcmVtb3RlLTx0cmFuc3BvcnQ+JyB3aXRoICc8YWRkcmVzcz4nIGFzIHRoZSBzZWNvbmQKIGFyZ3VtZW50LiBJZiBzdWNoIGEgVVJMIGlzIGVuY291bnRlcmVkIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kIGxpbmUsCiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgJzxhZGRyZXNzPicsIGFuZCBpZiBpdCBpcyBlbmNvdW50ZXJlZCBpbiBhCiBjb25maWd1cmVkIHJlbW90ZSwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoYXQgcmVtb3RlLgogCiBBZGRpdGlvbmFsbHksIHdoZW4gYSBjb25maWd1cmVkIHJlbW90ZSBoYXMgJ3JlbW90ZS48bmFtZT4udmNzJyBzZXQgdG8KLSc8dHJhbnNwb3J0PicsIGdpdCBleHBsaWNpdGx5IGludm9rZXMgJ2dpdCByZW1vdGUtPHRyYW5zcG9ydD4nIHdpdGgKKyc8dHJhbnNwb3J0PicsIEdpdCBleHBsaWNpdGx5IGludm9rZXMgJ2dpdCByZW1vdGUtPHRyYW5zcG9ydD4nIHdpdGgKICc8bmFtZT4nIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgc2V0LCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCiAncmVtb3RlLjxuYW1lPi51cmwnOyBvdGhlcndpc2UsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgb21pdHRlZC4KIApAQCAtODUsNyArODUsNyBAQAogfn5+fn5+fn5+fn5+CiAKIEVhY2ggcmVtb3RlIGhlbHBlciBpcyBleHBlY3RlZCB0byBzdXBwb3J0IG9ubHkgYSBzdWJzZXQgb2YgY29tbWFuZHMuCi1UaGUgb3BlcmF0aW9ucyBhIGhlbHBlciBzdXBwb3J0cyBhcmUgZGVjbGFyZWQgdG8gZ2l0IGluIHRoZSByZXNwb25zZQorVGhlIG9wZXJhdGlvbnMgYSBoZWxwZXIgc3VwcG9ydHMgYXJlIGRlY2xhcmVkIHRvIEdpdCBpbiB0aGUgcmVzcG9uc2UKIHRvIHRoZSBgY2FwYWJpbGl0aWVzYCBjb21tYW5kIChzZWUgQ09NTUFORFMsIGJlbG93KS4KIAogSW4gdGhlIGZvbGxvd2luZywgd2UgbGlzdCBhbGwgZGVmaW5lZCBjYXBhYmlsaXRpZXMgYW5kIGZvcgpAQCAtMTE0LDEwICsxMTQsMTAgQEAKICsKIFN1cHBvcnRlZCBjb21tYW5kczogJ2xpc3QgZm9yLXB1c2gnLCAnZXhwb3J0Jy4KIAotSWYgYSBoZWxwZXIgYWR2ZXJ0aXNlcyAnY29ubmVjdCcsIGdpdCB3aWxsIHVzZSBpdCBpZiBwb3NzaWJsZSBhbmQKK0lmIGEgaGVscGVyIGFkdmVydGlzZXMgJ2Nvbm5lY3QnLCBHaXQgd2lsbCB1c2UgaXQgaWYgcG9zc2libGUgYW5kCiBmYWxsIGJhY2sgdG8gYW5vdGhlciBjYXBhYmlsaXR5IGlmIHRoZSBoZWxwZXIgcmVxdWVzdHMgc28gd2hlbgogY29ubmVjdGluZyAoc2VlIHRoZSAnY29ubmVjdCcgY29tbWFuZCB1bmRlciBDT01NQU5EUykuCi1XaGVuIGNob29zaW5nIGJldHdlZW4gJ3B1c2gnIGFuZCAnZXhwb3J0JywgZ2l0IHByZWZlcnMgJ3B1c2gnLgorV2hlbiBjaG9vc2luZyBiZXR3ZWVuICdwdXNoJyBhbmQgJ2V4cG9ydCcsIEdpdCBwcmVmZXJzICdwdXNoJy4KIE90aGVyIGZyb250ZW5kcyBtYXkgaGF2ZSBzb21lIG90aGVyIG9yZGVyIG9mIHByZWZlcmVuY2UuCiAKIApAQCAtMTI2LDcgKzEyNiw3IEBACiAnY29ubmVjdCc6OgogCUNhbiB0cnkgdG8gY29ubmVjdCB0byAnZ2l0IHVwbG9hZC1wYWNrJyAoZm9yIGZldGNoaW5nKSwKIAknZ2l0IHJlY2VpdmUtcGFjaycsIGV0YyBmb3IgY29tbXVuaWNhdGlvbiB1c2luZyB0aGUKLQlnaXQncyBuYXRpdmUgcGFja2ZpbGUgcHJvdG9jb2wuIFRoaXMKKwlHaXQncyBuYXRpdmUgcGFja2ZpbGUgcHJvdG9jb2wuIFRoaXMKIAlyZXF1aXJlcyBhIGJpZGlyZWN0aW9uYWwsIGZ1bGwtZHVwbGV4IGNvbm5lY3Rpb24uCiArCiBTdXBwb3J0ZWQgY29tbWFuZHM6ICdjb25uZWN0Jy4KQEAgLTE0MywxMCArMTQzLDEwIEBACiArCiBTdXBwb3J0ZWQgY29tbWFuZHM6ICdsaXN0JywgJ2ltcG9ydCcuCiAKLUlmIGEgaGVscGVyIGFkdmVydGlzZXMgJ2Nvbm5lY3QnLCBnaXQgd2lsbCB1c2UgaXQgaWYgcG9zc2libGUgYW5kCitJZiBhIGhlbHBlciBhZHZlcnRpc2VzICdjb25uZWN0JywgR2l0IHdpbGwgdXNlIGl0IGlmIHBvc3NpYmxlIGFuZAogZmFsbCBiYWNrIHRvIGFub3RoZXIgY2FwYWJpbGl0eSBpZiB0aGUgaGVscGVyIHJlcXVlc3RzIHNvIHdoZW4KIGNvbm5lY3RpbmcgKHNlZSB0aGUgJ2Nvbm5lY3QnIGNvbW1hbmQgdW5kZXIgQ09NTUFORFMpLgotV2hlbiBjaG9vc2luZyBiZXR3ZWVuICdmZXRjaCcgYW5kICdpbXBvcnQnLCBnaXQgcHJlZmVycyAnZmV0Y2gnLgorV2hlbiBjaG9vc2luZyBiZXR3ZWVuICdmZXRjaCcgYW5kICdpbXBvcnQnLCBHaXQgcHJlZmVycyAnZmV0Y2gnLgogT3RoZXIgZnJvbnRlbmRzIG1heSBoYXZlIHNvbWUgb3RoZXIgb3JkZXIgb2YgcHJlZmVyZW5jZS4KIAogTWlzY2VsbGFuZW91cyBjYXBhYmlsaXRpZXMKQEAgLTE1OSwxMSArMTU5LDExIEBACiAJY2FycmllZCBvdXQuCiAKICdyZWZzcGVjJyA8cmVmc3BlYz46OgotCVRoaXMgbW9kaWZpZXMgdGhlICdpbXBvcnQnIGNhcGFiaWxpdHksIGFsbG93aW5nIHRoZSBwcm9kdWNlZAotCWZhc3QtaW1wb3J0IHN0cmVhbSB0byBtb2RpZnkgcmVmcyBpbiBhIHByaXZhdGUgbmFtZXNwYWNlCi0JaW5zdGVhZCBvZiB3cml0aW5nIHRvIHJlZnMvaGVhZHMgb3IgcmVmcy9yZW1vdGVzIGRpcmVjdGx5LgorCUZvciByZW1vdGUgaGVscGVycyB0aGF0IGltcGxlbWVudCAnaW1wb3J0JyBvciAnZXhwb3J0JywgdGhpcyBjYXBhYmlsaXR5CisJYWxsb3dzIHRoZSByZWZzIHRvIGJlIGNvbnN0cmFpbmVkIHRvIGEgcHJpdmF0ZSBuYW1lc3BhY2UsIGluc3RlYWQgb2YKKwl3cml0aW5nIHRvIHJlZnMvaGVhZHMgb3IgcmVmcy9yZW1vdGVzIGRpcmVjdGx5LgogCUl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYWxsIGltcG9ydGVycyBwcm92aWRpbmcgdGhlICdpbXBvcnQnCi0JY2FwYWJpbGl0eSB1c2UgdGhpcy4KKwljYXBhYmlsaXR5IHVzZSB0aGlzLiBJdCdzIG1hbmRhdG9yeSBmb3IgJ2V4cG9ydCcuCiArCiBBIGhlbHBlciBhZHZlcnRpc2luZyB0aGUgY2FwYWJpbGl0eQogYHJlZnNwZWMgcmVmcy9oZWFkcy8qOnJlZnMvc3ZuL29yaWdpbi9icmFuY2hlcy8qYApAQCAtMTgzLDI1ICsxODMsMjkgQEAKIAl0byByZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBibG9icyBhbmQgdHJlZXMgdGhhdCBhbHJlYWR5IGV4aXN0IGluCiAJZmFzdC1pbXBvcnQncyBtZW1vcnkuIFRoaXMgcmVxdWlyZXMgYSBjaGFubmVsIGZyb20gZmFzdC1pbXBvcnQgdG8gdGhlCiAJcmVtb3RlLWhlbHBlci4KLQlJZiBpdCBpcyBhZHZlcnRpc2VkIGluIGFkZGl0aW9uIHRvICJpbXBvcnQiLCBnaXQgZXN0YWJsaXNoZXMgYSBwaXBlIGZyb20KKwlJZiBpdCBpcyBhZHZlcnRpc2VkIGluIGFkZGl0aW9uIHRvICJpbXBvcnQiLCBHaXQgZXN0YWJsaXNoZXMgYSBwaXBlIGZyb20KIAlmYXN0LWltcG9ydCB0byB0aGUgcmVtb3RlLWhlbHBlcidzIHN0ZGluLgotCUl0IGZvbGxvd3MgdGhhdCBnaXQgYW5kIGZhc3QtaW1wb3J0IGFyZSBib3RoIGNvbm5lY3RlZCB0byB0aGUKLQlyZW1vdGUtaGVscGVyJ3Mgc3RkaW4uIEJlY2F1c2UgZ2l0IGNhbiBzZW5kIG11bHRpcGxlIGNvbW1hbmRzIHRvCisJSXQgZm9sbG93cyB0aGF0IEdpdCBhbmQgZmFzdC1pbXBvcnQgYXJlIGJvdGggY29ubmVjdGVkIHRvIHRoZQorCXJlbW90ZS1oZWxwZXIncyBzdGRpbi4gQmVjYXVzZSBHaXQgY2FuIHNlbmQgbXVsdGlwbGUgY29tbWFuZHMgdG8KIAl0aGUgcmVtb3RlLWhlbHBlciBpdCBpcyByZXF1aXJlZCB0aGF0IGhlbHBlcnMgdGhhdCB1c2UgJ2JpZGktaW1wb3J0JwogCWJ1ZmZlciBhbGwgJ2ltcG9ydCcgY29tbWFuZHMgb2YgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyBkYXRhIHRvIGZhc3QtaW1wb3J0LgogCVRoaXMgaXMgdG8gcHJldmVudCBtaXhpbmcgY29tbWFuZHMgYW5kIGZhc3QtaW1wb3J0IHJlc3BvbnNlcyBvbiB0aGUKIAloZWxwZXIncyBzdGRpbi4KIAogJ2V4cG9ydC1tYXJrcycgPGZpbGU+OjoKLQlUaGlzIG1vZGlmaWVzIHRoZSAnZXhwb3J0JyBjYXBhYmlsaXR5LCBpbnN0cnVjdGluZyBnaXQgdG8gZHVtcCB0aGUKKwlUaGlzIG1vZGlmaWVzIHRoZSAnZXhwb3J0JyBjYXBhYmlsaXR5LCBpbnN0cnVjdGluZyBHaXQgdG8gZHVtcCB0aGUKIAlpbnRlcm5hbCBtYXJrcyB0YWJsZSB0byA8ZmlsZT4gd2hlbiBjb21wbGV0ZS4gRm9yIGRldGFpbHMsCiAJcmVhZCB1cCBvbiAnLS1leHBvcnQtbWFya3M9PGZpbGU+JyBpbiBsaW5rZ2l0OmdpdC1mYXN0LWV4cG9ydFsxXS4KIAogJ2ltcG9ydC1tYXJrcycgPGZpbGU+OjoKLQlUaGlzIG1vZGlmaWVzIHRoZSAnZXhwb3J0JyBjYXBhYmlsaXR5LCBpbnN0cnVjdGluZyBnaXQgdG8gbG9hZCB0aGUKKwlUaGlzIG1vZGlmaWVzIHRoZSAnZXhwb3J0JyBjYXBhYmlsaXR5LCBpbnN0cnVjdGluZyBHaXQgdG8gbG9hZCB0aGUKIAltYXJrcyBzcGVjaWZpZWQgaW4gPGZpbGU+IGJlZm9yZSBwcm9jZXNzaW5nIGFueSBpbnB1dC4gRm9yIGRldGFpbHMsCiAJcmVhZCB1cCBvbiAnLS1pbXBvcnQtbWFya3M9PGZpbGU+JyBpbiBsaW5rZ2l0OmdpdC1mYXN0LWV4cG9ydFsxXS4KIAorJ3NpZ25lZC10YWdzJzo6CisJVGhpcyBtb2RpZmllcyB0aGUgJ2V4cG9ydCcgY2FwYWJpbGl0eSwgaW5zdHJ1Y3RpbmcgR2l0IHRvIHBhc3MKKwknLS1zaWduZWQtdGFncz12ZXJiYXRpbScgdG8gbGlua2dpdDpnaXQtZmFzdC1leHBvcnRbMV0uICBJbiB0aGUKKwlhYnNlbmNlIG9mIHRoaXMgY2FwYWJpbGl0eSwgR2l0IHdpbGwgdXNlICctLXNpZ25lZC10YWdzPXdhcm4tc3RyaXAnLgogCiAKIApAQCAtMjEzLDcgKzIxNyw3IEBACiAnY2FwYWJpbGl0aWVzJzo6CiAJTGlzdHMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgaGVscGVyLCBvbmUgcGVyIGxpbmUsIGVuZGluZwogCXdpdGggYSBibGFuayBsaW5lLiBFYWNoIGNhcGFiaWxpdHkgbWF5IGJlIHByZWNlZGVkIHdpdGggJyonLAotCXdoaWNoIG1hcmtzIHRoZW0gbWFuZGF0b3J5IGZvciBnaXQgdmVyc2lvbnMgdXNpbmcgdGhlIHJlbW90ZQorCXdoaWNoIG1hcmtzIHRoZW0gbWFuZGF0b3J5IGZvciBHaXQgdmVyc2lvbnMgdXNpbmcgdGhlIHJlbW90ZQogCWhlbHBlciB0byB1bmRlcnN0YW5kLiBBbnkgdW5rbm93biBtYW5kYXRvcnkgY2FwYWJpbGl0eSBpcyBhCiAJZmF0YWwgZXJyb3IuCiArCkBAIC0zNzYsNyArMzgwLDcgQEAKIC0tLS0tLS0KIAogVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBkZWZpbmVkIGFuZCAodW5kZXIgc3VpdGFibGUgY2lyY3Vtc3RhbmNlcykKLXNldCBieSBnaXQgaWYgdGhlIHJlbW90ZSBoZWxwZXIgaGFzIHRoZSAnb3B0aW9uJyBjYXBhYmlsaXR5Lgorc2V0IGJ5IEdpdCBpZiB0aGUgcmVtb3RlIGhlbHBlciBoYXMgdGhlICdvcHRpb24nIGNhcGFiaWxpdHkuCiAKICdvcHRpb24gdmVyYm9zaXR5JyA8bj46OgogCUNoYW5nZXMgdGhlIHZlcmJvc2l0eSBvZiBtZXNzYWdlcyBkaXNwbGF5ZWQgYnkgdGhlIGhlbHBlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0cmVwb3NpdG9yeS1sYXlvdXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQKaW5kZXggOWY2Mjg4Ni4uYWEwMzg4MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQKQEAgLTEyLDEyICsxMiwyNCBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVlvdSBtYXkgZmluZCB0aGVzZSB0aGluZ3MgaW4geW91ciBnaXQgcmVwb3NpdG9yeSAoYC5naXRgCi1kaXJlY3RvcnkgZm9yIGEgcmVwb3NpdG9yeSBhc3NvY2lhdGVkIHdpdGggeW91ciB3b3JraW5nIHRyZWUsIG9yCi1gPHByb2plY3Q+LmdpdGAgZGlyZWN0b3J5IGZvciBhIHB1YmxpYyAnYmFyZScgcmVwb3NpdG9yeS4gSXQgaXMKLWFsc28gcG9zc2libGUgdG8gaGF2ZSBhIHdvcmtpbmcgdHJlZSB3aGVyZSBgLmdpdGAgaXMgYSBwbGFpbgotQVNDSUkgZmlsZSBjb250YWluaW5nIGBnaXRkaXI6IDxwYXRoPmAsIGkuZS4gdGhlIHBhdGggdG8gdGhlCi1yZWFsIGdpdCByZXBvc2l0b3J5KS4KK0EgR2l0IHJlcG9zaXRvcnkgY29tZXMgaW4gdHdvIGRpZmZlcmVudCBmbGF2b3VyczoKKworICogYSBgLmdpdGAgZGlyZWN0b3J5IGF0IHRoZSByb290IG9mIHRoZSB3b3JraW5nIHRyZWU7CisKKyAqIGEgYDxwcm9qZWN0Pi5naXRgIGRpcmVjdG9yeSB0aGF0IGlzIGEgJ2JhcmUnIHJlcG9zaXRvcnkKKyAgIChpLmUuIHdpdGhvdXQgaXRzIG93biB3b3JraW5nIHRyZWUpLCB0aGF0IGlzIHR5cGljYWxseSB1c2VkIGZvcgorICAgZXhjaGFuZ2luZyBoaXN0b3JpZXMgd2l0aCBvdGhlcnMgYnkgcHVzaGluZyBpbnRvIGl0IGFuZCBmZXRjaGluZworICAgZnJvbSBpdC4KKworKk5vdGUqOiBBbHNvIHlvdSBjYW4gaGF2ZSBhIHBsYWluIHRleHQgZmlsZSBgLmdpdGAgYXQgdGhlIHJvb3Qgb2YKK3lvdXIgd29ya2luZyB0cmVlLCBjb250YWluaW5nIGBnaXRkaXI6IDxwYXRoPmAgdG8gcG9pbnQgYXQgdGhlIHJlYWwKK2RpcmVjdG9yeSB0aGF0IGhhcyB0aGUgcmVwb3NpdG9yeS4gIFRoaXMgbWVjaGFuaXNtIGlzIG9mdGVuIHVzZWQgZm9yCithIHdvcmtpbmcgdHJlZSBvZiBhIHN1Ym1vZHVsZSBjaGVja291dCwgdG8gYWxsb3cgeW91IGluIHRoZQorY29udGFpbmluZyBzdXBlcnByb2plY3QgdG8gYGdpdCBjaGVja291dGAgYSBicmFuY2ggdGhhdCBkb2VzIG5vdAoraGF2ZSB0aGUgc3VibW9kdWxlLiAgVGhlIGBjaGVja291dGAgaGFzIHRvIHJlbW92ZSB0aGUgZW50aXJlCitzdWJtb2R1bGUgd29ya2luZyB0cmVlLCB3aXRob3V0IGxvc2luZyB0aGUgc3VibW9kdWxlIHJlcG9zaXRvcnkuCisKK1RoZXNlIHRoaW5ncyBtYXkgZXhpc3QgaW4gYSBHaXQgcmVwb3NpdG9yeS4KIAogb2JqZWN0czo6CiAJT2JqZWN0IHN0b3JlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcG9zaXRvcnkuICBVc3VhbGx5CkBAIC05NCw3ICsxMDYsNyBAQAogCWZyb20gYSByZW1vdGUgcmVwb3NpdG9yeS4KIAogcmVmcy9yZXBsYWNlL2A8b2JqLXNoYTE+YDo6Ci0JcmVjb3JkcyB0aGUgU0hBMSBvZiB0aGUgb2JqZWN0IHRoYXQgcmVwbGFjZXMgYDxvYmotc2hhMT5gLgorCXJlY29yZHMgdGhlIFNIQS0xIG9mIHRoZSBvYmplY3QgdGhhdCByZXBsYWNlcyBgPG9iai1zaGExPmAuCiAJVGhpcyBpcyBzaW1pbGFyIHRvIGluZm8vZ3JhZnRzIGFuZCBpcyBpbnRlcm5hbGx5IHVzZWQgYW5kCiAJbWFpbnRhaW5lZCBieSBsaW5rZ2l0OmdpdC1yZXBsYWNlWzFdLiBTdWNoIHJlZnMgY2FuIGJlIGV4Y2hhbmdlZAogCWJldHdlZW4gcmVwb3NpdG9yaWVzIHdoaWxlIGdyYWZ0cyBhcmUgbm90LgpAQCAtMTA4LDcgKzEyMCw3IEBACiAJQSBzeW1yZWYgKHNlZSBnbG9zc2FyeSkgdG8gdGhlIGByZWZzL2hlYWRzL2AgbmFtZXNwYWNlCiAJZGVzY3JpYmluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmFuY2guICBJdCBkb2VzIG5vdCBtZWFuCiAJbXVjaCBpZiB0aGUgcmVwb3NpdG9yeSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSB3b3JraW5nIHRyZWUKLQkoaS5lLiBhICdiYXJlJyByZXBvc2l0b3J5KSwgYnV0IGEgdmFsaWQgZ2l0IHJlcG9zaXRvcnkKKwkoaS5lLiBhICdiYXJlJyByZXBvc2l0b3J5KSwgYnV0IGEgdmFsaWQgR2l0IHJlcG9zaXRvcnkKIAkqbXVzdCogaGF2ZSB0aGUgSEVBRCBmaWxlOyBzb21lIHBvcmNlbGFpbnMgbWF5IHVzZSBpdCB0bwogCWd1ZXNzIHRoZSBkZXNpZ25hdGVkICJkZWZhdWx0IiBicmFuY2ggb2YgdGhlIHJlcG9zaXRvcnkKIAkodXN1YWxseSAnbWFzdGVyJykuICBJdCBpcyBsZWdhbCBpZiB0aGUgbmFtZWQgYnJhbmNoCkBAIC0xMzEsNyArMTQzLDcgQEAKIAlhbmQgbm90IGxpa2VseSB0byBiZSBmb3VuZCBpbiBtb2Rlcm4gcmVwb3NpdG9yaWVzLgogCiBob29rczo6Ci0JSG9va3MgYXJlIGN1c3RvbWl6YXRpb24gc2NyaXB0cyB1c2VkIGJ5IHZhcmlvdXMgZ2l0CisJSG9va3MgYXJlIGN1c3RvbWl6YXRpb24gc2NyaXB0cyB1c2VkIGJ5IHZhcmlvdXMgR2l0CiAJY29tbWFuZHMuICBBIGhhbmRmdWwgb2Ygc2FtcGxlIGhvb2tzIGFyZSBpbnN0YWxsZWQgd2hlbgogCSdnaXQgaW5pdCcgaXMgcnVuLCBidXQgYWxsIG9mIHRoZW0gYXJlIGRpc2FibGVkIGJ5CiAJZGVmYXVsdC4gIFRvIGVuYWJsZSwgdGhlIGAuc2FtcGxlYCBzdWZmaXggaGFzIHRvIGJlCkBAIC0xNjksOSArMTgxLDEzIEBACiAJVGhpcyBmaWxlLCBieSBjb252ZW50aW9uIGFtb25nIFBvcmNlbGFpbnMsIHN0b3JlcyB0aGUKIAlleGNsdWRlIHBhdHRlcm4gbGlzdC4gYC5naXRpZ25vcmVgIGlzIHRoZSBwZXItZGlyZWN0b3J5CiAJaWdub3JlIGZpbGUuICAnZ2l0IHN0YXR1cycsICdnaXQgYWRkJywgJ2dpdCBybScgYW5kCi0JJ2dpdCBjbGVhbicgbG9vayBhdCBpdCBidXQgdGhlIGNvcmUgZ2l0IGNvbW1hbmRzIGRvIG5vdCBsb29rCisJJ2dpdCBjbGVhbicgbG9vayBhdCBpdCBidXQgdGhlIGNvcmUgR2l0IGNvbW1hbmRzIGRvIG5vdCBsb29rCiAJYXQgaXQuICBTZWUgYWxzbzogbGlua2dpdDpnaXRpZ25vcmVbNV0uCiAKK2luZm8vc3BhcnNlLWNoZWNrb3V0OjoKKwlUaGlzIGZpbGUgc3RvcmVzIHNwYXJzZSBjaGVja291dCBwYXR0ZXJucy4KKwlTZWUgYWxzbzogbGlua2dpdDpnaXQtcmVhZC10cmVlWzFdLgorCiByZW1vdGVzOjoKIAlTdG9yZXMgc2hvcnRoYW5kcyBmb3IgVVJMIGFuZCBkZWZhdWx0IHJlZm5hbWVzIGZvciB1c2UKIAl3aGVuIGludGVyYWN0aW5nIHdpdGggcmVtb3RlIHJlcG9zaXRvcmllcyB2aWEgJ2dpdCBmZXRjaCcsCkBAIC0xOTUsNiArMjExLDkgQEAKIAlhbmQgbWFpbnRhaW5lZCBieSBzaGFsbG93IGNsb25lIG1lY2hhbmlzbS4gIFNlZSBgLS1kZXB0aGAKIAlvcHRpb24gdG8gbGlua2dpdDpnaXQtY2xvbmVbMV0gYW5kIGxpbmtnaXQ6Z2l0LWZldGNoWzFdLgogCittb2R1bGVzOjoKKwlDb250YWlucyB0aGUgZ2l0LXJlcG9zaXRvcmllcyBvZiB0aGUgc3VibW9kdWxlcy4KKwogU0VFIEFMU08KIC0tLS0tLS0tCiBsaW5rZ2l0OmdpdC1pbml0WzFdLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZXZpc2lvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRyZXZpc2lvbnMudHh0CmluZGV4IGZjNDc4OWYuLmMwZWQ2ZDEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0cmV2aXNpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJldmlzaW9ucy50eHQKQEAgLTMsNyArMyw3IEBACiAKIE5BTUUKIC0tLS0KLWdpdHJldmlzaW9ucyAtIHNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIGdpdAorZ2l0cmV2aXNpb25zIC0gc3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0CiAKIFNZTk9QU0lTCiAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0dHV0b3JpYWwtMi50eHQKaW5kZXggZTAwYTRkMi4uMzEwOWVhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLTIudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXR0dXRvcmlhbC0yIC0gQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gZ2l0OiBwYXJ0IHR3bworZ2l0dHV0b3JpYWwtMiAtIEEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdDogcGFydCB0d28KIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC0xNiwxMSArMTYsMTEgQEAKIFlvdSBzaG91bGQgd29yayB0aHJvdWdoIGxpbmtnaXQ6Z2l0dHV0b3JpYWxbN10gYmVmb3JlIHJlYWRpbmcgdGhpcyB0dXRvcmlhbC4KIAogVGhlIGdvYWwgb2YgdGhpcyB0dXRvcmlhbCBpcyB0byBpbnRyb2R1Y2UgdHdvIGZ1bmRhbWVudGFsIHBpZWNlcyBvZgotZ2l0J3MgYXJjaGl0ZWN0dXJlLS10aGUgb2JqZWN0IGRhdGFiYXNlIGFuZCB0aGUgaW5kZXggZmlsZS0tYW5kIHRvCitHaXQncyBhcmNoaXRlY3R1cmUtLXRoZSBvYmplY3QgZGF0YWJhc2UgYW5kIHRoZSBpbmRleCBmaWxlLS1hbmQgdG8KIHByb3ZpZGUgdGhlIHJlYWRlciB3aXRoIGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgdGhlIHJlc3QKLW9mIHRoZSBnaXQgZG9jdW1lbnRhdGlvbi4KK29mIHRoZSBHaXQgZG9jdW1lbnRhdGlvbi4KIAotVGhlIGdpdCBvYmplY3QgZGF0YWJhc2UKK1RoZSBHaXQgb2JqZWN0IGRhdGFiYXNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBMZXQncyBzdGFydCBhIG5ldyBwcm9qZWN0IGFuZCBjcmVhdGUgYSBzbWFsbCBhbW91bnQgb2YgaGlzdG9yeToKQEAgLTQyLDI1ICs0MiwyNSBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoYXQgYXJlIHRoZSA3IGRpZ2l0cyBvZiBoZXggdGhhdCBnaXQgcmVzcG9uZGVkIHRvIHRoZSBjb21taXQgd2l0aD8KK1doYXQgYXJlIHRoZSA3IGRpZ2l0cyBvZiBoZXggdGhhdCBHaXQgcmVzcG9uZGVkIHRvIHRoZSBjb21taXQgd2l0aD8KIAogV2Ugc2F3IGluIHBhcnQgb25lIG9mIHRoZSB0dXRvcmlhbCB0aGF0IGNvbW1pdHMgaGF2ZSBuYW1lcyBsaWtlIHRoaXMuCi1JdCB0dXJucyBvdXQgdGhhdCBldmVyeSBvYmplY3QgaW4gdGhlIGdpdCBoaXN0b3J5IGlzIHN0b3JlZCB1bmRlcgotYSA0MC1kaWdpdCBoZXggbmFtZS4gIFRoYXQgbmFtZSBpcyB0aGUgU0hBMSBoYXNoIG9mIHRoZSBvYmplY3QncwotY29udGVudHM7IGFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBlbnN1cmVzIHRoYXQgZ2l0IHdpbGwgbmV2ZXIgc3RvcmUKLXRoZSBzYW1lIGRhdGEgdHdpY2UgKHNpbmNlIGlkZW50aWNhbCBkYXRhIGlzIGdpdmVuIGFuIGlkZW50aWNhbCBTSEExCi1uYW1lKSwgYW5kIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGEgZ2l0IG9iamVjdCB3aWxsIG5ldmVyIGNoYW5nZSAoc2luY2UKK0l0IHR1cm5zIG91dCB0aGF0IGV2ZXJ5IG9iamVjdCBpbiB0aGUgR2l0IGhpc3RvcnkgaXMgc3RvcmVkIHVuZGVyCithIDQwLWRpZ2l0IGhleCBuYW1lLiAgVGhhdCBuYW1lIGlzIHRoZSBTSEEtMSBoYXNoIG9mIHRoZSBvYmplY3QncworY29udGVudHM7IGFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBlbnN1cmVzIHRoYXQgR2l0IHdpbGwgbmV2ZXIgc3RvcmUKK3RoZSBzYW1lIGRhdGEgdHdpY2UgKHNpbmNlIGlkZW50aWNhbCBkYXRhIGlzIGdpdmVuIGFuIGlkZW50aWNhbCBTSEEtMQorbmFtZSksIGFuZCB0aGF0IHRoZSBjb250ZW50cyBvZiBhIEdpdCBvYmplY3Qgd2lsbCBuZXZlciBjaGFuZ2UgKHNpbmNlCiB0aGF0IHdvdWxkIGNoYW5nZSB0aGUgb2JqZWN0J3MgbmFtZSBhcyB3ZWxsKS4gVGhlIDcgY2hhciBoZXggc3RyaW5ncwogaGVyZSBhcmUgc2ltcGx5IHRoZSBhYmJyZXZpYXRpb24gb2Ygc3VjaCA0MCBjaGFyYWN0ZXIgbG9uZyBzdHJpbmdzLgogQWJicmV2aWF0aW9ucyBjYW4gYmUgdXNlZCBldmVyeXdoZXJlIHdoZXJlIHRoZSA0MCBjaGFyYWN0ZXIgc3RyaW5ncwogY2FuIGJlIHVzZWQsIHNvIGxvbmcgYXMgdGhleSBhcmUgdW5hbWJpZ3VvdXMuCiAKIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1pdCBvYmplY3QgeW91IGNyZWF0ZWQgd2hpbGUKLWZvbGxvd2luZyB0aGUgZXhhbXBsZSBhYm92ZSBnZW5lcmF0ZXMgYSBkaWZmZXJlbnQgU0hBMSBoYXNoIHRoYW4KK2ZvbGxvd2luZyB0aGUgZXhhbXBsZSBhYm92ZSBnZW5lcmF0ZXMgYSBkaWZmZXJlbnQgU0hBLTEgaGFzaCB0aGFuCiB0aGUgb25lIHNob3duIGFib3ZlIGJlY2F1c2UgdGhlIGNvbW1pdCBvYmplY3QgcmVjb3JkcyB0aGUgdGltZSB3aGVuCiBpdCB3YXMgY3JlYXRlZCBhbmQgdGhlIG5hbWUgb2YgdGhlIHBlcnNvbiBwZXJmb3JtaW5nIHRoZSBjb21taXQuCiAKLVdlIGNhbiBhc2sgZ2l0IGFib3V0IHRoaXMgcGFydGljdWxhciBvYmplY3Qgd2l0aCB0aGUgYGNhdC1maWxlYAorV2UgY2FuIGFzayBHaXQgYWJvdXQgdGhpcyBwYXJ0aWN1bGFyIG9iamVjdCB3aXRoIHRoZSBgY2F0LWZpbGVgCiBjb21tYW5kLiBEb24ndCBjb3B5IHRoZSA0MCBoZXggZGlnaXRzIGZyb20gdGhpcyBleGFtcGxlIGJ1dCB1c2UgdGhvc2UKIGZyb20geW91ciBvd24gdmVyc2lvbi4gTm90ZSB0aGF0IHlvdSBjYW4gc2hvcnRlbiBpdCB0byBvbmx5IGEgZmV3CiBjaGFyYWN0ZXJzIHRvIHNhdmUgeW91cnNlbGYgdHlwaW5nIGFsbCA0MCBoZXggZGlnaXRzOgpAQCAtODAsMTQgKzgwLDE0IEBACiBhIGZpbGUuICBJbiBhZGRpdGlvbiwgYSB0cmVlIGNhbiBhbHNvIHJlZmVyIHRvIG90aGVyIHRyZWUgb2JqZWN0cywKIHRodXMgY3JlYXRpbmcgYSBkaXJlY3RvcnkgaGllcmFyY2h5LiAgWW91IGNhbiBleGFtaW5lIHRoZSBjb250ZW50cyBvZgogYW55IHRyZWUgdXNpbmcgbHMtdHJlZSAocmVtZW1iZXIgdGhhdCBhIGxvbmcgZW5vdWdoIGluaXRpYWwgcG9ydGlvbgotb2YgdGhlIFNIQTEgd2lsbCBhbHNvIHdvcmspOgorb2YgdGhlIFNIQS0xIHdpbGwgYWxzbyB3b3JrKToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBscy10cmVlIDkyYjhiNjk0CiAxMDA2NDQgYmxvYiAzYjE4ZTUxMmRiYTc5ZTRjODMwMGRkMDhhZWIzN2Y4ZTcyOGI4ZGFkICAgIGZpbGUudHh0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGh1cyB3ZSBzZWUgdGhhdCB0aGlzIHRyZWUgaGFzIG9uZSBmaWxlIGluIGl0LiAgVGhlIFNIQTEgaGFzaCBpcyBhCitUaHVzIHdlIHNlZSB0aGF0IHRoaXMgdHJlZSBoYXMgb25lIGZpbGUgaW4gaXQuICBUaGUgU0hBLTEgaGFzaCBpcyBhCiByZWZlcmVuY2UgdG8gdGhhdCBmaWxlJ3MgZGF0YToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDIsMTEgKzEwMiwxMSBAQAogaGVsbG8gd29ybGQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Ob3RlIHRoYXQgdGhpcyBpcyB0aGUgb2xkIGZpbGUgZGF0YTsgc28gdGhlIG9iamVjdCB0aGF0IGdpdCBuYW1lZCBpbgorTm90ZSB0aGF0IHRoaXMgaXMgdGhlIG9sZCBmaWxlIGRhdGE7IHNvIHRoZSBvYmplY3QgdGhhdCBHaXQgbmFtZWQgaW4KIGl0cyByZXNwb25zZSB0byB0aGUgaW5pdGlhbCB0cmVlIHdhcyBhIHRyZWUgd2l0aCBhIHNuYXBzaG90IG9mIHRoZQogZGlyZWN0b3J5IHN0YXRlIHRoYXQgd2FzIHJlY29yZGVkIGJ5IHRoZSBmaXJzdCBjb21taXQuCiAKLUFsbCBvZiB0aGVzZSBvYmplY3RzIGFyZSBzdG9yZWQgdW5kZXIgdGhlaXIgU0hBMSBuYW1lcyBpbnNpZGUgdGhlIGdpdAorQWxsIG9mIHRoZXNlIG9iamVjdHMgYXJlIHN0b3JlZCB1bmRlciB0aGVpciBTSEEtMSBuYW1lcyBpbnNpZGUgdGhlIEdpdAogZGlyZWN0b3J5OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0Miw3ICsxNDIsNyBAQAogCiBBcyB5b3UgY2FuIHNlZSwgdGhpcyB0ZWxscyB1cyB3aGljaCBicmFuY2ggd2UncmUgY3VycmVudGx5IG9uLCBhbmQgaXQKIHRlbGxzIHVzIHRoaXMgYnkgbmFtaW5nIGEgZmlsZSB1bmRlciB0aGUgLmdpdCBkaXJlY3RvcnksIHdoaWNoIGl0c2VsZgotY29udGFpbnMgYSBTSEExIG5hbWUgcmVmZXJyaW5nIHRvIGEgY29tbWl0IG9iamVjdCwgd2hpY2ggd2UgY2FuCitjb250YWlucyBhIFNIQS0xIG5hbWUgcmVmZXJyaW5nIHRvIGEgY29tbWl0IG9iamVjdCwgd2hpY2ggd2UgY2FuCiBleGFtaW5lIHdpdGggY2F0LWZpbGU6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkxLDcgKzE5MSw3IEBACiBpcyBhICJ0YWciLCB3aGljaCB3ZSB3b24ndCBkaXNjdXNzIGhlcmU7IHJlZmVyIHRvIGxpbmtnaXQ6Z2l0LXRhZ1sxXQogZm9yIGRldGFpbHMuCiAKLVNvIG5vdyB3ZSBrbm93IGhvdyBnaXQgdXNlcyB0aGUgb2JqZWN0IGRhdGFiYXNlIHRvIHJlcHJlc2VudCBhCitTbyBub3cgd2Uga25vdyBob3cgR2l0IHVzZXMgdGhlIG9iamVjdCBkYXRhYmFzZSB0byByZXByZXNlbnQgYQogcHJvamVjdCdzIGhpc3Rvcnk6CiAKICAgKiAiY29tbWl0IiBvYmplY3RzIHJlZmVyIHRvICJ0cmVlIiBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUKQEAgLTIwOCw3ICsyMDgsNyBAQAogCiBOb3RlLCBieSB0aGUgd2F5LCB0aGF0IGxvdHMgb2YgY29tbWFuZHMgdGFrZSBhIHRyZWUgYXMgYW4gYXJndW1lbnQuCiBCdXQgYXMgd2UgY2FuIHNlZSBhYm92ZSwgYSB0cmVlIGNhbiBiZSByZWZlcnJlZCB0byBpbiBtYW55IGRpZmZlcmVudAotd2F5cy0tYnkgdGhlIFNIQTEgbmFtZSBmb3IgdGhhdCB0cmVlLCBieSB0aGUgbmFtZSBvZiBhIGNvbW1pdCB0aGF0Cit3YXlzLS1ieSB0aGUgU0hBLTEgbmFtZSBmb3IgdGhhdCB0cmVlLCBieSB0aGUgbmFtZSBvZiBhIGNvbW1pdCB0aGF0CiByZWZlcnMgdG8gdGhlIHRyZWUsIGJ5IHRoZSBuYW1lIG9mIGEgYnJhbmNoIHdob3NlIGhlYWQgcmVmZXJzIHRvIHRoYXQKIHRyZWUsIGV0Yy4tLWFuZCBtb3N0IHN1Y2ggY29tbWFuZHMgY2FuIGFjY2VwdCBhbnkgb2YgdGhlc2UgbmFtZXMuCiAKQEAgLTQwMywyMSArNDAzLDIxIEBACiAKIEF0IHRoaXMgcG9pbnQgeW91IHNob3VsZCBrbm93IGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IHRvIHJlYWQgdGhlIG1hbgogcGFnZXMgZm9yIGFueSBvZiB0aGUgZ2l0IGNvbW1hbmRzOyBvbmUgZ29vZCBwbGFjZSB0byBzdGFydCB3b3VsZCBiZQotd2l0aCB0aGUgY29tbWFuZHMgbWVudGlvbmVkIGluIGxpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBnaXRdLiAgWW91Cit3aXRoIHRoZSBjb21tYW5kcyBtZW50aW9uZWQgaW4gbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IEdpdF0uICBZb3UKIHNob3VsZCBiZSBhYmxlIHRvIGZpbmQgYW55IHVua25vd24gamFyZ29uIGluIGxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10uCiAKIFRoZSBsaW5rOnVzZXItbWFudWFsLmh0bWxbR2l0IFVzZXIncyBNYW51YWxdIHByb3ZpZGVzIGEgbW9yZQotY29tcHJlaGVuc2l2ZSBpbnRyb2R1Y3Rpb24gdG8gZ2l0LgorY29tcHJlaGVuc2l2ZSBpbnRyb2R1Y3Rpb24gdG8gR2l0LgogCiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10gZXhwbGFpbnMgaG93IHRvCi1pbXBvcnQgYSBDVlMgcmVwb3NpdG9yeSBpbnRvIGdpdCwgYW5kIHNob3dzIGhvdyB0byB1c2UgZ2l0IGluIGEKK2ltcG9ydCBhIENWUyByZXBvc2l0b3J5IGludG8gR2l0LCBhbmQgc2hvd3MgaG93IHRvIHVzZSBHaXQgaW4gYQogQ1ZTLWxpa2Ugd2F5LgogCi1Gb3Igc29tZSBpbnRlcmVzdGluZyBleGFtcGxlcyBvZiBnaXQgdXNlLCBzZWUgdGhlCitGb3Igc29tZSBpbnRlcmVzdGluZyBleGFtcGxlcyBvZiBHaXQgdXNlLCBzZWUgdGhlCiBsaW5rOmhvd3RvLWluZGV4Lmh0bWxbaG93dG9zXS4KIAotRm9yIGdpdCBkZXZlbG9wZXJzLCBsaW5rZ2l0OmdpdGNvcmUtdHV0b3JpYWxbN10gZ29lcwotaW50byBkZXRhaWwgb24gdGhlIGxvd2VyLWxldmVsIGdpdCBtZWNoYW5pc21zIGludm9sdmVkIGluLCBmb3IKK0ZvciBHaXQgZGV2ZWxvcGVycywgbGlua2dpdDpnaXRjb3JlLXR1dG9yaWFsWzddIGdvZXMKK2ludG8gZGV0YWlsIG9uIHRoZSBsb3dlci1sZXZlbCBHaXQgbWVjaGFuaXNtcyBpbnZvbHZlZCBpbiwgZm9yCiBleGFtcGxlLCBjcmVhdGluZyBhIG5ldyBjb21taXQuCiAKIFNFRSBBTFNPCkBAIC00MjcsNyArNDI3LDcgQEAKIGxpbmtnaXQ6Z2l0Y29yZS10dXRvcmlhbFs3XSwKIGxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10sCiBsaW5rZ2l0OmdpdC1oZWxwWzFdLAotbGluazpldmVyeWRheS5odG1sW0V2ZXJ5ZGF5IGdpdF0sCitsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgR2l0XSwKIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdCiAKIEdJVApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dAppbmRleCBmMWNiNmYzLi44MjYyMTk2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHR1dG9yaWFsLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0dHV0b3JpYWwgLSBBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBnaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKQorZ2l0dHV0b3JpYWwgLSBBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBHaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKQogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTEzLDEwICsxMywxMCBAQAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCiAKLVRoaXMgdHV0b3JpYWwgZXhwbGFpbnMgaG93IHRvIGltcG9ydCBhIG5ldyBwcm9qZWN0IGludG8gZ2l0LCBtYWtlCitUaGlzIHR1dG9yaWFsIGV4cGxhaW5zIGhvdyB0byBpbXBvcnQgYSBuZXcgcHJvamVjdCBpbnRvIEdpdCwgbWFrZQogY2hhbmdlcyB0byBpdCwgYW5kIHNoYXJlIGNoYW5nZXMgd2l0aCBvdGhlciBkZXZlbG9wZXJzLgogCi1JZiB5b3UgYXJlIGluc3RlYWQgcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gdXNpbmcgZ2l0IHRvIGZldGNoIGEgcHJvamVjdCwKK0lmIHlvdSBhcmUgaW5zdGVhZCBwcmltYXJpbHkgaW50ZXJlc3RlZCBpbiB1c2luZyBHaXQgdG8gZmV0Y2ggYSBwcm9qZWN0LAogZm9yIGV4YW1wbGUsIHRvIHRlc3QgdGhlIGxhdGVzdCB2ZXJzaW9uLCB5b3UgbWF5IHByZWZlciB0byBzdGFydCB3aXRoCiB0aGUgZmlyc3QgdHdvIGNoYXB0ZXJzIG9mIGxpbms6dXNlci1tYW51YWwuaHRtbFtUaGUgR2l0IFVzZXIncyBNYW51YWxdLgogCkBAIC0zNiw3ICszNiw3IEBACiBXaXRoIHRoZSBsYXR0ZXIsIHlvdSBjYW4gdXNlIHRoZSBtYW51YWwgdmlld2VyIG9mIHlvdXIgY2hvaWNlOyBzZWUKIGxpbmtnaXQ6Z2l0LWhlbHBbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKLUl0IGlzIGEgZ29vZCBpZGVhIHRvIGludHJvZHVjZSB5b3Vyc2VsZiB0byBnaXQgd2l0aCB5b3VyIG5hbWUgYW5kCitJdCBpcyBhIGdvb2QgaWRlYSB0byBpbnRyb2R1Y2UgeW91cnNlbGYgdG8gR2l0IHdpdGggeW91ciBuYW1lIGFuZAogcHVibGljIGVtYWlsIGFkZHJlc3MgYmVmb3JlIGRvaW5nIGFueSBvcGVyYXRpb24uICBUaGUgZWFzaWVzdAogd2F5IHRvIGRvIHNvIGlzOgogCkBAIC01MCw3ICs1MCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBc3N1bWUgeW91IGhhdmUgYSB0YXJiYWxsIHByb2plY3QudGFyLmd6IHdpdGggeW91ciBpbml0aWFsIHdvcmsuICBZb3UKLWNhbiBwbGFjZSBpdCB1bmRlciBnaXQgcmV2aXNpb24gY29udHJvbCBhcyBmb2xsb3dzLgorY2FuIHBsYWNlIGl0IHVuZGVyIEdpdCByZXZpc2lvbiBjb250cm9sIGFzIGZvbGxvd3MuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCB0YXIgeHpmIHByb2plY3QudGFyLmd6CkBAIC02NywxNCArNjcsMTQgQEAKIFlvdSd2ZSBub3cgaW5pdGlhbGl6ZWQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LS15b3UgbWF5IG5vdGljZSBhIG5ldwogZGlyZWN0b3J5IGNyZWF0ZWQsIG5hbWVkICIuZ2l0Ii4KIAotTmV4dCwgdGVsbCBnaXQgdG8gdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBjb250ZW50cyBvZiBhbGwgZmlsZXMgdW5kZXIgdGhlCitOZXh0LCB0ZWxsIEdpdCB0byB0YWtlIGEgc25hcHNob3Qgb2YgdGhlIGNvbnRlbnRzIG9mIGFsbCBmaWxlcyB1bmRlciB0aGUKIGN1cnJlbnQgZGlyZWN0b3J5IChub3RlIHRoZSAnLicpLCB3aXRoICdnaXQgYWRkJzoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBhZGQgLgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgc25hcHNob3QgaXMgbm93IHN0b3JlZCBpbiBhIHRlbXBvcmFyeSBzdGFnaW5nIGFyZWEgd2hpY2ggZ2l0IGNhbGxzCitUaGlzIHNuYXBzaG90IGlzIG5vdyBzdG9yZWQgaW4gYSB0ZW1wb3Jhcnkgc3RhZ2luZyBhcmVhIHdoaWNoIEdpdCBjYWxscwogdGhlICJpbmRleCIuICBZb3UgY2FuIHBlcm1hbmVudGx5IHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUgaW5kZXggaW4gdGhlCiByZXBvc2l0b3J5IHdpdGggJ2dpdCBjb21taXQnOgogCkBAIC04Myw3ICs4Myw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyB3aWxsIHByb21wdCB5b3UgZm9yIGEgY29tbWl0IG1lc3NhZ2UuICBZb3UndmUgbm93IHN0b3JlZCB0aGUgZmlyc3QKLXZlcnNpb24gb2YgeW91ciBwcm9qZWN0IGluIGdpdC4KK3ZlcnNpb24gb2YgeW91ciBwcm9qZWN0IGluIEdpdC4KIAogTWFraW5nIGNoYW5nZXMKIC0tLS0tLS0tLS0tLS0tCkBAIC0xNDEsNyArMTQxLDcgQEAKIGxpbmUgc3VtbWFyaXppbmcgdGhlIGNoYW5nZSwgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lIGFuZCB0aGVuIGEgbW9yZQogdGhvcm91Z2ggZGVzY3JpcHRpb24uIFRoZSB0ZXh0IHVwIHRvIHRoZSBmaXJzdCBibGFuayBsaW5lIGluIGEgY29tbWl0CiBtZXNzYWdlIGlzIHRyZWF0ZWQgYXMgdGhlIGNvbW1pdCB0aXRsZSwgYW5kIHRoYXQgdGl0bGUgaXMgdXNlZAotdGhyb3VnaG91dCBnaXQuICBGb3IgZXhhbXBsZSwgbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdIHR1cm5zIGEKK3Rocm91Z2hvdXQgR2l0LiAgRm9yIGV4YW1wbGUsIGxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXSB0dXJucyBhCiBjb21taXQgaW50byBlbWFpbCwgYW5kIGl0IHVzZXMgdGhlIHRpdGxlIG9uIHRoZSBTdWJqZWN0IGxpbmUgYW5kIHRoZQogcmVzdCBvZiB0aGUgY29tbWl0IGluIHRoZSBib2R5LgogCkBAIC0xODAsNyArMTgwLDcgQEAKIE1hbmFnaW5nIGJyYW5jaGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCi1BIHNpbmdsZSBnaXQgcmVwb3NpdG9yeSBjYW4gbWFpbnRhaW4gbXVsdGlwbGUgYnJhbmNoZXMgb2YKK0Egc2luZ2xlIEdpdCByZXBvc2l0b3J5IGNhbiBtYWludGFpbiBtdWx0aXBsZSBicmFuY2hlcyBvZgogZGV2ZWxvcG1lbnQuICBUbyBjcmVhdGUgYSBuZXcgYnJhbmNoIG5hbWVkICJleHBlcmltZW50YWwiLCB1c2UKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzYsMTAgKzI3NiwxMCBAQAogQnJhbmNoZXMgYXJlIGNoZWFwIGFuZCBlYXN5LCBzbyB0aGlzIGlzIGEgZ29vZCB3YXkgdG8gdHJ5IHNvbWV0aGluZwogb3V0LgogCi1Vc2luZyBnaXQgZm9yIGNvbGxhYm9yYXRpb24KK1VzaW5nIEdpdCBmb3IgY29sbGFib3JhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVN1cHBvc2UgdGhhdCBBbGljZSBoYXMgc3RhcnRlZCBhIG5ldyBwcm9qZWN0IHdpdGggYSBnaXQgcmVwb3NpdG9yeSBpbgorU3VwcG9zZSB0aGF0IEFsaWNlIGhhcyBzdGFydGVkIGEgbmV3IHByb2plY3Qgd2l0aCBhIEdpdCByZXBvc2l0b3J5IGluCiAvaG9tZS9hbGljZS9wcm9qZWN0LCBhbmQgdGhhdCBCb2IsIHdobyBoYXMgYSBob21lIGRpcmVjdG9yeSBvbiB0aGUKIHNhbWUgbWFjaGluZSwgd2FudHMgdG8gY29udHJpYnV0ZS4KIApAQCAtMzIwLDcgKzMyMCw3IEBACiBpbml0aWF0aW5nIHRoaXMgInB1bGwiLiAgSWYgQm9iJ3Mgd29yayBjb25mbGljdHMgd2l0aCB3aGF0IEFsaWNlIGRpZCBzaW5jZQogdGhlaXIgaGlzdG9yaWVzIGZvcmtlZCwgQWxpY2Ugd2lsbCB1c2UgaGVyIHdvcmtpbmcgdHJlZSBhbmQgdGhlIGluZGV4IHRvCiByZXNvbHZlIGNvbmZsaWN0cywgYW5kIGV4aXN0aW5nIGxvY2FsIGNoYW5nZXMgd2lsbCBpbnRlcmZlcmUgd2l0aCB0aGUKLWNvbmZsaWN0IHJlc29sdXRpb24gcHJvY2VzcyAoZ2l0IHdpbGwgc3RpbGwgcGVyZm9ybSB0aGUgZmV0Y2ggYnV0IHdpbGwKK2NvbmZsaWN0IHJlc29sdXRpb24gcHJvY2VzcyAoR2l0IHdpbGwgc3RpbGwgcGVyZm9ybSB0aGUgZmV0Y2ggYnV0IHdpbGwKIHJlZnVzZSB0byBtZXJnZSAtLS0gQWxpY2Ugd2lsbCBoYXZlIHRvIGdldCByaWQgb2YgaGVyIGxvY2FsIGNoYW5nZXMgaW4KIHNvbWUgd2F5IGFuZCBwdWxsIGFnYWluIHdoZW4gdGhpcyBoYXBwZW5zKS4KIApAQCAtNDIyLDcgKzQyMiw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE5vdGUgdGhhdCBoZSBkb2Vzbid0IG5lZWQgdG8gZ2l2ZSB0aGUgcGF0aCB0byBBbGljZSdzIHJlcG9zaXRvcnk7Ci13aGVuIEJvYiBjbG9uZWQgQWxpY2UncyByZXBvc2l0b3J5LCBnaXQgc3RvcmVkIHRoZSBsb2NhdGlvbiBvZiBoZXIKK3doZW4gQm9iIGNsb25lZCBBbGljZSdzIHJlcG9zaXRvcnksIEdpdCBzdG9yZWQgdGhlIGxvY2F0aW9uIG9mIGhlcgogcmVwb3NpdG9yeSBpbiB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uLCBhbmQgdGhhdCBsb2NhdGlvbiBpcwogdXNlZCBmb3IgcHVsbHM6CiAKQEAgLTQ1MCw3ICs0NTAsNyBAQAogYm9iJCBnaXQgY2xvbmUgYWxpY2Uub3JnOi9ob21lL2FsaWNlL3Byb2plY3QgbXlyZXBvCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUFsdGVybmF0aXZlbHksIGdpdCBoYXMgYSBuYXRpdmUgcHJvdG9jb2wsIG9yIGNhbiB1c2UgcnN5bmMgb3IgaHR0cDsKK0FsdGVybmF0aXZlbHksIEdpdCBoYXMgYSBuYXRpdmUgcHJvdG9jb2wsIG9yIGNhbiB1c2UgcnN5bmMgb3IgaHR0cDsKIHNlZSBsaW5rZ2l0OmdpdC1wdWxsWzFdIGZvciBkZXRhaWxzLgogCiBHaXQgY2FuIGFsc28gYmUgdXNlZCBpbiBhIENWUy1saWtlIG1vZGUsIHdpdGggYSBjZW50cmFsIHJlcG9zaXRvcnkKQEAgLTUxOCw3ICs1MTgsNyBAQAogdmVyc2lvbiksIHlvdSBzaG91bGQgY3JlYXRlIGEgInRhZyIgb2JqZWN0LCBhbmQgcGVyaGFwcyBzaWduIGl0OyBzZWUKIGxpbmtnaXQ6Z2l0LXRhZ1sxXSBmb3IgZGV0YWlscy4KIAotQW55IGdpdCBjb21tYW5kIHRoYXQgbmVlZHMgdG8ga25vdyBhIGNvbW1pdCBjYW4gdGFrZSBhbnkgb2YgdGhlc2UKK0FueSBHaXQgY29tbWFuZCB0aGF0IG5lZWRzIHRvIGtub3cgYSBjb21taXQgY2FuIHRha2UgYW55IG9mIHRoZXNlCiBuYW1lcy4gIEZvciBleGFtcGxlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01NTQsOSArNTU0LDkgQEAKICQgZ2l0IGdyZXAgImhlbGxvIgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pcyBhIHF1aWNrIHdheSB0byBzZWFyY2gganVzdCB0aGUgZmlsZXMgdGhhdCBhcmUgdHJhY2tlZCBieSBnaXQuCitpcyBhIHF1aWNrIHdheSB0byBzZWFyY2gganVzdCB0aGUgZmlsZXMgdGhhdCBhcmUgdHJhY2tlZCBieSBHaXQuCiAKLU1hbnkgZ2l0IGNvbW1hbmRzIGFsc28gdGFrZSBzZXRzIG9mIGNvbW1pdHMsIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQKK01hbnkgR2l0IGNvbW1hbmRzIGFsc28gdGFrZSBzZXRzIG9mIGNvbW1pdHMsIHdoaWNoIGNhbiBiZSBzcGVjaWZpZWQKIGluIGEgbnVtYmVyIG9mIHdheXMuICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIHdpdGggJ2dpdCBsb2cnOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01OTIsNyArNTkyLDcgQEAKIHRob3NlIGNvbW1pdHMgaXMgbWVhbmluZ2xlc3MuCiAKIE1vc3QgcHJvamVjdHMgd2l0aCBtdWx0aXBsZSBjb250cmlidXRvcnMgKHN1Y2ggYXMgdGhlIExpbnV4IGtlcm5lbCwKLW9yIGdpdCBpdHNlbGYpIGhhdmUgZnJlcXVlbnQgbWVyZ2VzLCBhbmQgJ2dpdGsnIGRvZXMgYSBiZXR0ZXIgam9iIG9mCitvciBHaXQgaXRzZWxmKSBoYXZlIGZyZXF1ZW50IG1lcmdlcywgYW5kICdnaXRrJyBkb2VzIGEgYmV0dGVyIGpvYiBvZgogdmlzdWFsaXppbmcgdGhlaXIgaGlzdG9yeS4gIEZvciBleGFtcGxlLAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MjMsNyArNjIzLDcgQEAKIAogVGhpcyB0dXRvcmlhbCBzaG91bGQgYmUgZW5vdWdoIHRvIHBlcmZvcm0gYmFzaWMgZGlzdHJpYnV0ZWQgcmV2aXNpb24KIGNvbnRyb2wgZm9yIHlvdXIgcHJvamVjdHMuICBIb3dldmVyLCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBkZXB0aAotYW5kIHBvd2VyIG9mIGdpdCB5b3UgbmVlZCB0byB1bmRlcnN0YW5kIHR3byBzaW1wbGUgaWRlYXMgb24gd2hpY2ggaXQKK2FuZCBwb3dlciBvZiBHaXQgeW91IG5lZWQgdG8gdW5kZXJzdGFuZCB0d28gc2ltcGxlIGlkZWFzIG9uIHdoaWNoIGl0CiBpcyBiYXNlZDoKIAogICAqIFRoZSBvYmplY3QgZGF0YWJhc2UgaXMgdGhlIHJhdGhlciBlbGVnYW50IHN5c3RlbSB1c2VkIHRvCkBAIC02MzYsNyArNjM2LDcgQEAKIAogUGFydCB0d28gb2YgdGhpcyB0dXRvcmlhbCBleHBsYWlucyB0aGUgb2JqZWN0CiBkYXRhYmFzZSwgdGhlIGluZGV4IGZpbGUsIGFuZCBhIGZldyBvdGhlciBvZGRzIGFuZCBlbmRzIHRoYXQgeW91J2xsCi1uZWVkIHRvIG1ha2UgdGhlIG1vc3Qgb2YgZ2l0LiBZb3UgY2FuIGZpbmQgaXQgYXQgbGlua2dpdDpnaXR0dXRvcmlhbC0yWzddLgorbmVlZCB0byBtYWtlIHRoZSBtb3N0IG9mIEdpdC4gWW91IGNhbiBmaW5kIGl0IGF0IGxpbmtnaXQ6Z2l0dHV0b3JpYWwtMls3XS4KIAogSWYgeW91IGRvbid0IHdhbnQgdG8gY29udGludWUgd2l0aCB0aGF0IHJpZ2h0IGF3YXksIGEgZmV3IG90aGVyCiBkaWdyZXNzaW9ucyB0aGF0IG1heSBiZSBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IGFyZToKQEAgLTY1Niw3ICs2NTYsNyBAQAogICAqIGxpbmtnaXQ6Z2l0d29ya2Zsb3dzWzddOiBHaXZlcyBhbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZAogICAgIHdvcmtmbG93cy4KIAotICAqIGxpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBHSVQgd2l0aCAyMCBDb21tYW5kcyBPciBTb10KKyAgKiBsaW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgR2l0IHdpdGggMjAgQ29tbWFuZHMgT3IgU29dCiAKICAgKiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN106IEdpdCBmb3IgQ1ZTIHVzZXJzLgogCkBAIC02NjgsNyArNjY4LDcgQEAKIGxpbmtnaXQ6Z2l0Z2xvc3NhcnlbN10sCiBsaW5rZ2l0OmdpdC1oZWxwWzFdLAogbGlua2dpdDpnaXR3b3JrZmxvd3NbN10sCi1saW5rOmV2ZXJ5ZGF5Lmh0bWxbRXZlcnlkYXkgZ2l0XSwKK2xpbms6ZXZlcnlkYXkuaHRtbFtFdmVyeWRheSBHaXRdLAogbGluazp1c2VyLW1hbnVhbC5odG1sW1RoZSBHaXQgVXNlcidzIE1hbnVhbF0KIAogR0lUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdHdlYi5jb25mLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0d2ViLmNvbmYudHh0CmluZGV4IDQ5NDc0NTUuLmVhMDUyNmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0d2ViLmNvbmYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0d2ViLmNvbmYudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXR3ZWIuY29uZiAtIEdpdHdlYiAoZ2l0IHdlYiBpbnRlcmZhY2UpIGNvbmZpZ3VyYXRpb24gZmlsZQorZ2l0d2ViLmNvbmYgLSBHaXR3ZWIgKEdpdCB3ZWIgaW50ZXJmYWNlKSBjb25maWd1cmF0aW9uIGZpbGUKIAogU1lOT1BTSVMKIC0tLS0tLS0tCkBAIC03OSw3ICs3OSw3IEBACiBZb3UgY2FuIGluY2x1ZGUgb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nIHJlYWRfY29uZmlnX2ZpbGUoKQogc3Vicm91dGluZS4gIEZvciBleGFtcGxlLCBvbmUgbWlnaHQgd2FudCB0byBwdXQgZ2l0d2ViIGNvbmZpZ3VyYXRpb24KIHJlbGF0ZWQgdG8gYWNjZXNzIGNvbnRyb2wgZm9yIHZpZXdpbmcgcmVwb3NpdG9yaWVzIHZpYSBHaXRvbGl0ZSAob25lCi1vZiBnaXQgcmVwb3NpdG9yeSBtYW5hZ2VtZW50IHRvb2xzKSBpbiBhIHNlcGFyYXRlIGZpbGUsIGUuZy4gaW4KK29mIEdpdCByZXBvc2l0b3J5IG1hbmFnZW1lbnQgdG9vbHMpIGluIGEgc2VwYXJhdGUgZmlsZSwgZS5nLiBpbgogJy9ldGMvZ2l0d2ViLWdpdG9saXRlLmNvbmYnLiAgVG8gaW5jbHVkZSBpdCwgcHV0CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTEsNyArMTExLDcgQEAKIExvY2F0aW9uIG9mIHJlcG9zaXRvcmllcwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiBUaGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZGVzY3JpYmVkIGJlbG93IGNvbnRyb2wgaG93IGdpdHdlYiBmaW5kcwotZ2l0IHJlcG9zaXRvcmllcywgYW5kIGhvdyByZXBvc2l0b3JpZXMgYXJlIGRpc3BsYXllZCBhbmQgYWNjZXNzZWQuCitHaXQgcmVwb3NpdG9yaWVzLCBhbmQgaG93IHJlcG9zaXRvcmllcyBhcmUgZGlzcGxheWVkIGFuZCBhY2Nlc3NlZC4KIAogU2VlIGFsc28gIlJlcG9zaXRvcmllcyIgYW5kIGxhdGVyIHN1YnNlY3Rpb25zIGluIGxpbmtnaXQ6Z2l0d2ViWzFdIG1hbnBhZ2UuCiAKQEAgLTE1OSw3ICsxNTksNyBAQAogCiAkcHJvamVjdF9tYXhkZXB0aDo6CiAJSWYgYCRwcm9qZWN0c19saXN0YCB2YXJpYWJsZSBpcyB1bnNldCwgZ2l0d2ViIHdpbGwgcmVjdXJzaXZlbHkKLQlzY2FuIGZpbGVzeXN0ZW0gZm9yIGdpdCByZXBvc2l0b3JpZXMuICBUaGUgYCRwcm9qZWN0X21heGRlcHRoYAorCXNjYW4gZmlsZXN5c3RlbSBmb3IgR2l0IHJlcG9zaXRvcmllcy4gIFRoZSBgJHByb2plY3RfbWF4ZGVwdGhgCiAJaXMgdXNlZCB0byBsaW1pdCB0cmF2ZXJzaW5nIGRlcHRoLCByZWxhdGl2ZSB0byBgJHByb2plY3Ryb290YAogCShzdGFydGluZyBwb2ludCk7IGl0IG1lYW5zIHRoYXQgZGlyZWN0b3JpZXMgd2hpY2ggYXJlIGZ1cnRoZXIKIAlmcm9tIGAkcHJvamVjdHJvb3RgIHRoYW4gYCRwcm9qZWN0X21heGRlcHRoYCB3aWxsIGJlIHNraXBwZWQuCkBAIC0yMDAsNyArMjAwLDcgQEAKICsKIElmIG5vdCBzZXQgKGRlZmF1bHQpLCBpdCBtZWFucyB0aGF0IHRoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZC4KICsKLVNlZSBhbHNvIG1vcmUgaW52b2x2ZWQgZXhhbXBsZSBpbiAiQ29udHJvbGxpbmcgYWNjZXNzIHRvIGdpdCByZXBvc2l0b3JpZXMiCitTZWUgYWxzbyBtb3JlIGludm9sdmVkIGV4YW1wbGUgaW4gIkNvbnRyb2xsaW5nIGFjY2VzcyB0byBHaXQgcmVwb3NpdG9yaWVzIgogc3Vic2VjdGlvbiBvbiBsaW5rZ2l0OmdpdHdlYlsxXSBtYW5wYWdlLgogCiAkc3RyaWN0X2V4cG9ydDo6CkBAIC0yMjIsMTggKzIyMiwxOCBAQAogCiAkR0lUOjoKIAlDb3JlIGdpdCBleGVjdXRhYmxlIHRvIHVzZS4gIEJ5IGRlZmF1bHQgc2V0IHRvIGAkR0lUX0JJTkRJUi9naXRgLCB3aGljaAotCWluIHR1cm4gaXMgYnkgZGVmYXVsdCBzZXQgdG8gYCQoYmluZGlyKS9naXRgLiAgSWYgeW91IHVzZSBnaXQgaW5zdGFsbGVkCisJaW4gdHVybiBpcyBieSBkZWZhdWx0IHNldCB0byBgJChiaW5kaXIpL2dpdGAuICBJZiB5b3UgdXNlIEdpdCBpbnN0YWxsZWQKIAlmcm9tIGEgYmluYXJ5IHBhY2thZ2UsIHlvdSBzaG91bGQgdXN1YWxseSBzZXQgdGhpcyB0byAiL3Vzci9iaW4vZ2l0Ii4KIAlUaGlzIGNhbiBqdXN0IGJlICJnaXQiIGlmIHlvdXIgd2ViIHNlcnZlciBoYXMgYSBzZW5zaWJsZSBQQVRIOyBmcm9tCiAJc2VjdXJpdHkgcG9pbnQgb2YgdmlldyBpdCBpcyBiZXR0ZXIgdG8gdXNlIGFic29sdXRlIHBhdGggdG8gZ2l0IGJpbmFyeS4KLQlJZiB5b3UgaGF2ZSBtdWx0aXBsZSBnaXQgdmVyc2lvbnMgaW5zdGFsbGVkIGl0IGNhbiBiZSB1c2VkIHRvIGNob29zZQorCUlmIHlvdSBoYXZlIG11bHRpcGxlIEdpdCB2ZXJzaW9ucyBpbnN0YWxsZWQgaXQgY2FuIGJlIHVzZWQgdG8gY2hvb3NlCiAJd2hpY2ggb25lIHRvIHVzZS4gIE11c3QgYmUgKGNvcnJlY3RseSkgc2V0IGZvciBnaXR3ZWIgdG8gYmUgYWJsZSB0bwogCXdvcmsuCiAKICRtaW1ldHlwZXNfZmlsZTo6CiAJRmlsZSB0byB1c2UgZm9yIChmaWxlbmFtZSBleHRlbnNpb24gYmFzZWQpIGd1ZXNzaW5nIG9mIE1JTUUgdHlwZXMgYmVmb3JlCiAJdHJ5aW5nICcvZXRjL21pbWUudHlwZXMnLiAgKk5PVEUqIHRoYXQgdGhpcyBwYXRoLCBpZiByZWxhdGl2ZSwgaXMgdGFrZW4KLQlhcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeSwgbm90IHRvIENHSSBzY3JpcHQuICBJZiB1bnNldCwKKwlhcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBHaXQgcmVwb3NpdG9yeSwgbm90IHRvIENHSSBzY3JpcHQuICBJZiB1bnNldCwKIAlvbmx5ICcvZXRjL21pbWUudHlwZXMnIGlzIHVzZWQgKGlmIHByZXNlbnQgb24gZmlsZXN5c3RlbSkuICBJZiBubyBtaW1ldHlwZXMKIAlmaWxlIGlzIGZvdW5kLCBtaW1ldHlwZSBndWVzc2luZyBiYXNlZCBvbiBleHRlbnNpb24gb2YgZmlsZSBpcyBkaXNhYmxlZC4KIAlVbnNldCBieSBkZWZhdWx0LgpAQCAtMzQzLDggKzM0Myw4IEBACiAkbG9nb19sYWJlbDo6CiAJVVJJIGFuZCBsYWJlbCAodGl0bGUpIGZvciB0aGUgR2l0IGxvZ28gbGluayAob3IgeW91ciBzaXRlIGxvZ28sCiAJaWYgeW91IGNob3NlIHRvIHVzZSBkaWZmZXJlbnQgbG9nbyBpbWFnZSkuIEJ5IGRlZmF1bHQsIHRoZXNlIGJvdGgKLQlyZWZlciB0byBnaXQgaG9tZXBhZ2UsIGh0dHA6Ly9naXQtc2NtLmNvbVtdOyBpbiB0aGUgcGFzdCwgdGhleSBwb2ludGVkCi0JdG8gZ2l0IGRvY3VtZW50YXRpb24gYXQgaHR0cDovL3d3dy5rZXJuZWwub3JnW10uCisJcmVmZXIgdG8gR2l0IGhvbWVwYWdlLCBodHRwOi8vZ2l0LXNjbS5jb21bXTsgaW4gdGhlIHBhc3QsIHRoZXkgcG9pbnRlZAorCXRvIEdpdCBkb2N1bWVudGF0aW9uIGF0IGh0dHA6Ly93d3cua2VybmVsLm9yZ1tdLgogCiAKIENoYW5naW5nIGdpdHdlYidzIGxvb2sKQEAgLTQzNiw3ICs0MzYsNyBAQAogCWRldGVjdGlvbi4KICsKICpOb3RlKiB0aGF0IHJlbmFtZSBhbmQgZXNwZWNpYWxseSBjb3B5IGRldGVjdGlvbiBjYW4gYmUgcXVpdGUKLUNQVS1pbnRlbnNpdmUuICBOb3RlIGFsc28gdGhhdCBub24gZ2l0IHRvb2xzIGNhbiBoYXZlIHByb2JsZW1zIHdpdGgKK0NQVS1pbnRlbnNpdmUuICBOb3RlIGFsc28gdGhhdCBub24gR2l0IHRvb2xzIGNhbiBoYXZlIHByb2JsZW1zIHdpdGgKIHBhdGNoZXMgZ2VuZXJhdGVkIHdpdGggb3B0aW9ucyBtZW50aW9uZWQgYWJvdmUsIGVzcGVjaWFsbHkgd2hlbiB0aGV5CiBpbnZvbHZlIGZpbGUgY29waWVzIChcJy1DJykgb3IgY3Jpc3MtY3Jvc3MgcmVuYW1lcyAoXCctQicpLgogCkBAIC00NTEsNyArNDUxLDcgQEAKIGFmZmVjdHMgaG93ICJzdW1tYXJ5IiBwYWdlcyBsb29rIGxpa2UsIG9yIGxvYWQgbGltaXRpbmcpLgogCiBAZ2l0X2Jhc2VfdXJsX2xpc3Q6OgotCUxpc3Qgb2YgZ2l0IGJhc2UgVVJMcy4gIFRoZXNlIFVSTHMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgVVJMcworCUxpc3Qgb2YgR2l0IGJhc2UgVVJMcy4gIFRoZXNlIFVSTHMgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgVVJMcwogCWRlc2NyaWJpbmcgZnJvbSB3aGVyZSB0byBmZXRjaCBhIHByb2plY3QsIHdoaWNoIGFyZSBzaG93biBvbgogCXByb2plY3Qgc3VtbWFyeSBwYWdlLiAgVGhlIGZ1bGwgZmV0Y2ggVVJMIGlzICJgJGdpdF9iYXNlX3VybC8kcHJvamVjdGAiLAogCWZvciBlYWNoIGVsZW1lbnQgb2YgdGhpcyBsaXN0LiBZb3UgY2FuIHNldCB1cCBtdWx0aXBsZSBiYXNlIFVSTHMKQEAgLTYxNiw3ICs2MTYsNyBAQAogCShvciBlbmFibGVkL2Rpc2FibGVkKSBvbiBhIHBlci1yZXBvc2l0b3J5IGJhc2lzLgogKwogVXN1YWxseSBnaXZlbiAiPGZlYXR1cmU+IiBpcyBjb25maWd1cmFibGUgdmlhIHRoZSBgZ2l0d2ViLjxmZWF0dXJlPmAKLWNvbmZpZyB2YXJpYWJsZSBpbiB0aGUgcGVyLXJlcG9zaXRvcnkgZ2l0IGNvbmZpZ3VyYXRpb24gZmlsZS4KK2NvbmZpZyB2YXJpYWJsZSBpbiB0aGUgcGVyLXJlcG9zaXRvcnkgR2l0IGNvbmZpZ3VyYXRpb24gZmlsZS4KICsKICpOb3RlKiB0aGF0IG5vIGZlYXR1cmUgaXMgb3ZlcnJpZGRhYmxlIGJ5IGRlZmF1bHQuCiAKQEAgLTc4Miw3ICs3ODIsNyBAQAogKFwnaGInIGdpdHdlYiBwYXJhbWV0ZXIpOyBgJSVgIGV4cGFuZHMgdG8gXCclJy4KICsKIEZvciBleGFtcGxlLCBhdCB0aGUgdGltZSB0aGlzIHBhZ2Ugd2FzIHdyaXR0ZW4sIHRoZSBodHRwOi8vcmVwby5vci5jeltdCi1naXQgaG9zdGluZyBzaXRlIHNldCBpdCB0byB0aGUgZm9sbG93aW5nIHRvIGVuYWJsZSBncmFwaGljYWwgbG9nCitHaXQgaG9zdGluZyBzaXRlIHNldCBpdCB0byB0aGUgZm9sbG93aW5nIHRvIGVuYWJsZSBncmFwaGljYWwgbG9nCiAodXNpbmcgdGhlIHRoaXJkIHBhcnR5IHRvb2wgKmdpdC1icm93c2VyKik6CiArCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03OTYsMTAgKzc5NiwxMCBAQAogUHJvamVjdCBzcGVjaWZpYyBvdmVycmlkZSBpcyBub3Qgc3VwcG9ydGVkLgogCiB0aW1lZDo6Ci0JRW5hYmxlIGRpc3BsYXlpbmcgaG93IG11Y2ggdGltZSBhbmQgaG93IG1hbnkgZ2l0IGNvbW1hbmRzIGl0IHRvb2sgdG8KKwlFbmFibGUgZGlzcGxheWluZyBob3cgbXVjaCB0aW1lIGFuZCBob3cgbWFueSBHaXQgY29tbWFuZHMgaXQgdG9vayB0bwogCWdlbmVyYXRlIGFuZCBkaXNwbGF5IGVhY2ggcGFnZSBpbiB0aGUgcGFnZSBmb290ZXIgKGF0IHRoZSBib3R0b20gb2YKIAlwYWdlKS4gIEZvciBleGFtcGxlIHRoZSBmb290ZXIgbWlnaHQgY29udGFpbjogIlRoaXMgcGFnZSB0b29rIDYuNTMzMjUKLQlzZWNvbmRzIGFuZCAxMyBnaXQgY29tbWFuZHMgdG8gZ2VuZXJhdGUuIiAgRGlzYWJsZWQgYnkgZGVmYXVsdC4KKwlzZWNvbmRzIGFuZCAxMyBHaXQgY29tbWFuZHMgdG8gZ2VuZXJhdGUuIiAgRGlzYWJsZWQgYnkgZGVmYXVsdC4KICsKIFByb2plY3Qgc3BlY2lmaWMgb3ZlcnJpZGUgaXMgbm90IHN1cHBvcnRlZC4KIApAQCAtODU3LDYgKzg1NywxMyBAQAogCSRrbm93bl9zbmFwc2hvdF9mb3JtYXRzeyd6aXAnfXsnZGlzYWJsZWQnfSA9IDE7CiAJJGtub3duX3NuYXBzaG90X2Zvcm1hdHN7J3Rneid9eydjb21wcmVzc29yJ30gPSBbJ2d6aXAnLCctNiddOwogCitCVUdTCistLS0tCitEZWJ1Z2dpbmcgd291bGQgYmUgZWFzaWVyIGlmIHRoZSBmYWxsYmFjayBjb25maWd1cmF0aW9uIGZpbGUKKyhgL2V0Yy9naXR3ZWIuY29uZmApIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycmlkZSBpdHMgbG9jYXRpb24KKygnR0lUV0VCX0NPTkZJR19TWVNURU0nKSBoYWQgbmFtZXMgcmVmbGVjdGluZyB0aGVpciAiZmFsbGJhY2siIHJvbGUuCitUaGUgY3VycmVudCBuYW1lcyBhcmUga2VwdCB0byBhdm9pZCBicmVha2luZyB3b3JraW5nIHNldHVwcy4KKwogRU5WSVJPTk1FTlQKIC0tLS0tLS0tLS0tCiBUaGUgbG9jYXRpb24gb2YgcGVyLWluc3RhbmNlIGFuZCBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGVzIGNhbiBiZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXR3ZWIudHh0IGIvRG9jdW1lbnRhdGlvbi9naXR3ZWIudHh0CmluZGV4IDE2OGU4YmYuLjQwOTY5ZjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0d2ViLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHdlYi50eHQKQEAgLTcsMTQgKzcsMTQgQEAKIAogU1lOT1BTSVMKIC0tLS0tLS0tCi1UbyBnZXQgc3RhcnRlZCB3aXRoIGdpdHdlYiwgcnVuIGxpbmtnaXQ6Z2l0LWluc3Rhd2ViWzFdIGZyb20gYSBnaXQgcmVwb3NpdG9yeS4KK1RvIGdldCBzdGFydGVkIHdpdGggZ2l0d2ViLCBydW4gbGlua2dpdDpnaXQtaW5zdGF3ZWJbMV0gZnJvbSBhIEdpdCByZXBvc2l0b3J5LgogVGhpcyB3b3VsZCBjb25maWd1cmUgYW5kIHN0YXJ0IHlvdXIgd2ViIHNlcnZlciwgYW5kIHJ1biB3ZWIgYnJvd3NlciBwb2ludGluZyB0bwogZ2l0d2ViLgogCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQotR2l0d2ViIHByb3ZpZGVzIGEgd2ViIGludGVyZmFjZSB0byBnaXQgcmVwb3NpdG9yaWVzLiAgSXRzIGZlYXR1cmVzIGluY2x1ZGU6CitHaXR3ZWIgcHJvdmlkZXMgYSB3ZWIgaW50ZXJmYWNlIHRvIEdpdCByZXBvc2l0b3JpZXMuICBJdHMgZmVhdHVyZXMgaW5jbHVkZToKIAogKiBWaWV3aW5nIG11bHRpcGxlIEdpdCByZXBvc2l0b3JpZXMgd2l0aCBjb21tb24gcm9vdC4KICogQnJvd3NpbmcgZXZlcnkgcmV2aXNpb24gb2YgdGhlIHJlcG9zaXRvcnkuCkBAIC01NCw5ICs1NCw5IEBACiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYCRwcm9qZWN0cm9vdGAgaXMgJy9wdWIvZ2l0Jy4gIFlvdSBjYW4gY2hhbmdlIGl0IGR1cmluZwogYnVpbGRpbmcgZ2l0d2ViIHZpYSBgR0lUV0VCX1BST0pFQ1RST09UYCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgogCi1CeSBkZWZhdWx0IGFsbCBnaXQgcmVwb3NpdG9yaWVzIHVuZGVyIGAkcHJvamVjdHJvb3RgIGFyZSB2aXNpYmxlIGFuZCBhdmFpbGFibGUKK0J5IGRlZmF1bHQgYWxsIEdpdCByZXBvc2l0b3JpZXMgdW5kZXIgYCRwcm9qZWN0cm9vdGAgYXJlIHZpc2libGUgYW5kIGF2YWlsYWJsZQogdG8gZ2l0d2ViLiAgVGhlIGxpc3Qgb2YgcHJvamVjdHMgaXMgZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYnkgc2Nhbm5pbmcgdGhlCi1gJHByb2plY3Ryb290YCBkaXJlY3RvcnkgZm9yIGdpdCByZXBvc2l0b3JpZXMgKGZvciBvYmplY3QgZGF0YWJhc2VzIHRvIGJlCitgJHByb2plY3Ryb290YCBkaXJlY3RvcnkgZm9yIEdpdCByZXBvc2l0b3JpZXMgKGZvciBvYmplY3QgZGF0YWJhc2VzIHRvIGJlCiBtb3JlIGV4YWN0OyBnaXR3ZWIgaXMgbm90IGludGVyZXN0ZWQgaW4gYSB3b3JraW5nIGFyZWEsIGFuZCBpcyBiZXN0IHN1aXRlZAogdG8gc2hvd2luZyAiYmFyZSIgcmVwb3NpdG9yaWVzKS4KIApAQCAtMTExLDcgKzExMSw3IEBACiAKIAogQnkgZGVmYXVsdCB0aGlzIGZpbGUgY29udHJvbHMgb25seSB3aGljaCBwcm9qZWN0cyBhcmUgKnZpc2libGUqIG9uIHByb2plY3RzCi1saXN0IHBhZ2UgKG5vdGUgdGhhdCBlbnRyaWVzIHRoYXQgZG8gbm90IHBvaW50IHRvIGNvcnJlY3RseSByZWNvZ25pemVkIGdpdAorbGlzdCBwYWdlIChub3RlIHRoYXQgZW50cmllcyB0aGF0IGRvIG5vdCBwb2ludCB0byBjb3JyZWN0bHkgcmVjb2duaXplZCBHaXQKIHJlcG9zaXRvcmllcyB3b24ndCBiZSBkaXNwbGF5ZWQgYnkgZ2l0d2ViKS4gIEV2ZW4gaWYgYSBwcm9qZWN0IGlzIG5vdAogdmlzaWJsZSBvbiBwcm9qZWN0cyBsaXN0IHBhZ2UsIHlvdSBjYW4gdmlldyBpdCBuZXZlcnRoZWxlc3MgYnkgaGFuZC1jcmFmdGluZwogYSBnaXR3ZWIgVVJMLiAgQnkgc2V0dGluZyBgJHN0cmljdF9leHBvcnRgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgKHNlZQpAQCAtMTUxLDkgKzE1MSw5IEBACiBmaWxlbmFtZS4KIAogCi1Db250cm9sbGluZyBhY2Nlc3MgdG8gZ2l0IHJlcG9zaXRvcmllcworQ29udHJvbGxpbmcgYWNjZXNzIHRvIEdpdCByZXBvc2l0b3JpZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1CeSBkZWZhdWx0IGFsbCBnaXQgcmVwb3NpdG9yaWVzIHVuZGVyIGAkcHJvamVjdHJvb3RgIGFyZSB2aXNpYmxlIGFuZAorQnkgZGVmYXVsdCBhbGwgR2l0IHJlcG9zaXRvcmllcyB1bmRlciBgJHByb2plY3Ryb290YCBhcmUgdmlzaWJsZSBhbmQKIGF2YWlsYWJsZSB0byBnaXR3ZWIuICBZb3UgY2FuIGhvd2V2ZXIgY29uZmlndXJlIGhvdyBnaXR3ZWIgY29udHJvbHMgYWNjZXNzCiB0byByZXBvc2l0b3JpZXMuCiAKQEAgLTIwNiw3ICsyMDYsNyBAQAogUGVyLXJlcG9zaXRvcnkgZ2l0d2ViIGNvbmZpZ3VyYXRpb24KIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiBZb3UgY2FuIGNvbmZpZ3VyZSBpbmRpdmlkdWFsIHJlcG9zaXRvcmllcyBzaG93biBpbiBnaXR3ZWIgYnkgY3JlYXRpbmcgZmlsZQotaW4gdGhlICdHSVRfRElSJyBvZiBnaXQgcmVwb3NpdG9yeSwgb3IgYnkgc2V0dGluZyBzb21lIHJlcG8gY29uZmlndXJhdGlvbgoraW4gdGhlICdHSVRfRElSJyBvZiBHaXQgcmVwb3NpdG9yeSwgb3IgYnkgc2V0dGluZyBzb21lIHJlcG8gY29uZmlndXJhdGlvbgogdmFyaWFibGUgKGluICdHSVRfRElSL2NvbmZpZycsIHNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0pLgogCiBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGZpbGVzIGluIHJlcG9zaXRvcnk6CkBAIC01MDQsNyArNTA0LDcgQEAKIAogVGhlIGFib3ZlIGNvbmZpZ3VyYXRpb24gZXhwZWN0cyB5b3VyIHB1YmxpYyByZXBvc2l0b3JpZXMgdG8gbGl2ZSB1bmRlcgogJy9wdWIvZ2l0JyBhbmQgd2lsbCBzZXJ2ZSB0aGVtIGFzIGBodHRwOi8vZ2l0LmRvbWFpbi5vcmcvZGlyLXVuZGVyLXB1Yi1naXRgLAotYm90aCBhcyBjbG9uZWFibGUgR0lUIFVSTCBhbmQgYXMgYnJvd3NlYWJsZSBnaXR3ZWIgaW50ZXJmYWNlLiAgSWYgeW91IHRoZW4KK2JvdGggYXMgY2xvbmVhYmxlIEdpdCBVUkwgYW5kIGFzIGJyb3dzZWFibGUgZ2l0d2ViIGludGVyZmFjZS4gIElmIHlvdSB0aGVuCiBzdGFydCB5b3VyIGxpbmtnaXQ6Z2l0LWRhZW1vblsxXSB3aXRoIGAtLWJhc2UtcGF0aD0vcHViL2dpdCAtLWV4cG9ydC1hbGxgCiB0aGVuIHlvdSBjYW4gZXZlbiB1c2UgdGhlIGBnaXQ6Ly9gIFVSTCB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgcGF0aC4KIApAQCAtNTg0LDcgKzU4NCw3IEBACiByZWZlcmVuY2VkIGJ5IGAkcGVyX3JlcXVlc3RfY29uZmlnYDsKIAogVGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlIHR3byB0aGluZ3MuIEZpcnN0LCBlYWNoIHVuaXggdXNlciAoYDx1c2VyPmApIG9mCi10aGUgc2VydmVyIHdpbGwgYmUgYWJsZSB0byBicm93c2UgdGhyb3VnaCBnaXR3ZWIgZ2l0IHJlcG9zaXRvcmllcyBmb3VuZCBpbgordGhlIHNlcnZlciB3aWxsIGJlIGFibGUgdG8gYnJvd3NlIHRocm91Z2ggZ2l0d2ViIEdpdCByZXBvc2l0b3JpZXMgZm91bmQgaW4KICd+L3B1YmxpY19naXQvJyB3aXRoIHRoZSBmb2xsb3dpbmcgdXJsOgogCiAgIGh0dHA6Ly9naXQuZXhhbXBsZS5vcmcvfjx1c2VyPi8KQEAgLTY3Myw3ICs2NzMsNyBAQAogCiAgIGh0dHA6Ly9naXQuZXhhbXBsZS5jb20vcHJvamVjdC5naXQKIAotd2lsbCBnaXZlIHJhdyBhY2Nlc3MgdG8gdGhlIHByb2plY3QncyBnaXQgZGlyIChzbyB0aGF0IHRoZSBwcm9qZWN0IGNhbiBiZQord2lsbCBnaXZlIHJhdyBhY2Nlc3MgdG8gdGhlIHByb2plY3QncyBHaXQgZGlyIChzbyB0aGF0IHRoZSBwcm9qZWN0IGNhbiBiZQogY2xvbmVkKSwgd2hpbGUKIAogICBodHRwOi8vZ2l0LmV4YW1wbGUuY29tL3Byb2plY3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0d29ya2Zsb3dzLnR4dAppbmRleCA4YjhjNmFlLi5mMTZjNDE0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHdvcmtmbG93cy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXR3b3JrZmxvd3MudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXR3b3JrZmxvd3MgLSBBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBnaXQKK2dpdHdvcmtmbG93cyAtIEFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdAogCiBTWU5PUFNJUwogLS0tLS0tLS0KQEAgLTI0MiwxMCArMjQyLDEwIEBACiAuUmVsZWFzZSB0YWdnaW5nCiBbY2FwdGlvbj0iUmVjaXBlOiAiXQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotYGdpdCB0YWcgLXMgLW0gIkdJVCBYLlkuWiIgdlguWS5aIG1hc3RlcmAKK2BnaXQgdGFnIC1zIC1tICJHaXQgWC5ZLloiIHZYLlkuWiBtYXN0ZXJgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVlvdSBuZWVkIHRvIHB1c2ggdGhlIG5ldyB0YWcgdG8gYSBwdWJsaWMgZ2l0IHNlcnZlciAoc2VlCitZb3UgbmVlZCB0byBwdXNoIHRoZSBuZXcgdGFnIHRvIGEgcHVibGljIEdpdCBzZXJ2ZXIgKHNlZQogIkRJU1RSSUJVVEVEIFdPUktGTE9XUyIgYmVsb3cpLiBUaGlzIG1ha2VzIHRoZSB0YWcgYXZhaWxhYmxlIHRvCiBvdGhlcnMgdHJhY2tpbmcgeW91ciBwcm9qZWN0LiBUaGUgcHVzaCBjb3VsZCBhbHNvIHRyaWdnZXIgYQogcG9zdC11cGRhdGUgaG9vayB0byBwZXJmb3JtIHJlbGVhc2UtcmVsYXRlZCBpdGVtcyBzdWNoIGFzIGJ1aWxkaW5nCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0IGIvRG9jdW1lbnRhdGlvbi9nbG9zc2FyeS1jb250ZW50LnR4dAppbmRleCBmOTI4YjU3Li5kYjJhNzRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2xvc3NhcnktY29udGVudC50eHQKQEAgLTcsNyArNyw3IEBACiAJQSBiYXJlIHJlcG9zaXRvcnkgaXMgbm9ybWFsbHkgYW4gYXBwcm9wcmlhdGVseQogCW5hbWVkIDw8ZGVmX2RpcmVjdG9yeSxkaXJlY3Rvcnk+PiB3aXRoIGEgYC5naXRgIHN1ZmZpeCB0aGF0IGRvZXMgbm90CiAJaGF2ZSBhIGxvY2FsbHkgY2hlY2tlZC1vdXQgY29weSBvZiBhbnkgb2YgdGhlIGZpbGVzIHVuZGVyCi0JcmV2aXNpb24gY29udHJvbC4gVGhhdCBpcywgYWxsIG9mIHRoZSBgZ2l0YAorCXJldmlzaW9uIGNvbnRyb2wuIFRoYXQgaXMsIGFsbCBvZiB0aGUgR2l0CiAJYWRtaW5pc3RyYXRpdmUgYW5kIGNvbnRyb2wgZmlsZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBwcmVzZW50IGluIHRoZQogCWhpZGRlbiBgLmdpdGAgc3ViLWRpcmVjdG9yeSBhcmUgZGlyZWN0bHkgcHJlc2VudCBpbiB0aGUKIAlgcmVwb3NpdG9yeS5naXRgIGRpcmVjdG9yeSBpbnN0ZWFkLApAQCAtMjIsNyArMjIsNyBAQAogCTw8ZGVmX2NvbW1pdCxjb21taXQ+PiBvbiBhIGJyYW5jaCBpcyByZWZlcnJlZCB0byBhcyB0aGUgdGlwIG9mCiAJdGhhdCBicmFuY2guICBUaGUgdGlwIG9mIHRoZSBicmFuY2ggaXMgcmVmZXJlbmNlZCBieSBhIGJyYW5jaAogCTw8ZGVmX2hlYWQsaGVhZD4+LCB3aGljaCBtb3ZlcyBmb3J3YXJkIGFzIGFkZGl0aW9uYWwgZGV2ZWxvcG1lbnQKLQlpcyBkb25lIG9uIHRoZSBicmFuY2guICBBIHNpbmdsZSBnaXQKKwlpcyBkb25lIG9uIHRoZSBicmFuY2guICBBIHNpbmdsZSBHaXQKIAk8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+PiBjYW4gdHJhY2sgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgogCWJyYW5jaGVzLCBidXQgeW91ciA8PGRlZl93b3JraW5nX3RyZWUsd29ya2luZyB0cmVlPj4gaXMKIAlhc3NvY2lhdGVkIHdpdGgganVzdCBvbmUgb2YgdGhlbSAodGhlICJjdXJyZW50IiBvciAiY2hlY2tlZCBvdXQiCkBAIC0zNyw5ICszNyw5IEBACiAJPDxkZWZfY29tbWl0LGNvbW1pdD4+IGNvdWxkIGJlIG9uZSBvZiBpdHMgPDxkZWZfcGFyZW50LHBhcmVudHM+PikuCiAKIFtbZGVmX2NoYW5nZXNldF1dY2hhbmdlc2V0OjoKLQlCaXRLZWVwZXIvY3ZzcHMgc3BlYWsgZm9yICI8PGRlZl9jb21taXQsY29tbWl0Pj4iLiBTaW5jZSBnaXQgZG9lcyBub3QKKwlCaXRLZWVwZXIvY3ZzcHMgc3BlYWsgZm9yICI8PGRlZl9jb21taXQsY29tbWl0Pj4iLiBTaW5jZSBHaXQgZG9lcyBub3QKIAlzdG9yZSBjaGFuZ2VzLCBidXQgc3RhdGVzLCBpdCByZWFsbHkgZG9lcyBub3QgbWFrZSBzZW5zZSB0byB1c2UgdGhlIHRlcm0KLQkiY2hhbmdlc2V0cyIgd2l0aCBnaXQuCisJImNoYW5nZXNldHMiIHdpdGggR2l0LgogCiBbW2RlZl9jaGVja291dF1dY2hlY2tvdXQ6OgogCVRoZSBhY3Rpb24gb2YgdXBkYXRpbmcgYWxsIG9yIHBhcnQgb2YgdGhlCkBAIC01Miw3ICs1Miw3IEBACiBbW2RlZl9jaGVycnktcGlja2luZ11dY2hlcnJ5LXBpY2tpbmc6OgogCUluIDw8ZGVmX1NDTSxTQ00+PiBqYXJnb24sICJjaGVycnkgcGljayIgbWVhbnMgdG8gY2hvb3NlIGEgc3Vic2V0IG9mCiAJY2hhbmdlcyBvdXQgb2YgYSBzZXJpZXMgb2YgY2hhbmdlcyAodHlwaWNhbGx5IGNvbW1pdHMpIGFuZCByZWNvcmQgdGhlbQotCWFzIGEgbmV3IHNlcmllcyBvZiBjaGFuZ2VzIG9uIHRvcCBvZiBhIGRpZmZlcmVudCBjb2RlYmFzZS4gSW4gR0lULCB0aGlzIGlzCisJYXMgYSBuZXcgc2VyaWVzIG9mIGNoYW5nZXMgb24gdG9wIG9mIGEgZGlmZmVyZW50IGNvZGViYXNlLiBJbiBHaXQsIHRoaXMgaXMKIAlwZXJmb3JtZWQgYnkgdGhlICJnaXQgY2hlcnJ5LXBpY2siIGNvbW1hbmQgdG8gZXh0cmFjdCB0aGUgY2hhbmdlIGludHJvZHVjZWQKIAlieSBhbiBleGlzdGluZyA8PGRlZl9jb21taXQsY29tbWl0Pj4gYW5kIHRvIHJlY29yZCBpdCBiYXNlZCBvbiB0aGUgdGlwCiAJb2YgdGhlIGN1cnJlbnQgPDxkZWZfYnJhbmNoLGJyYW5jaD4+IGFzIGEgbmV3IGNvbW1pdC4KQEAgLTY0LDE0ICs2NCwxNCBAQAogCiBbW2RlZl9jb21taXRdXWNvbW1pdDo6CiAJQXMgYSBub3VuOiBBIHNpbmdsZSBwb2ludCBpbiB0aGUKLQlnaXQgaGlzdG9yeTsgdGhlIGVudGlyZSBoaXN0b3J5IG9mIGEgcHJvamVjdCBpcyByZXByZXNlbnRlZCBhcyBhCisJR2l0IGhpc3Rvcnk7IHRoZSBlbnRpcmUgaGlzdG9yeSBvZiBhIHByb2plY3QgaXMgcmVwcmVzZW50ZWQgYXMgYQogCXNldCBvZiBpbnRlcnJlbGF0ZWQgY29tbWl0cy4gIFRoZSB3b3JkICJjb21taXQiIGlzIG9mdGVuCi0JdXNlZCBieSBnaXQgaW4gdGhlIHNhbWUgcGxhY2VzIG90aGVyIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtcworCXVzZWQgYnkgR2l0IGluIHRoZSBzYW1lIHBsYWNlcyBvdGhlciByZXZpc2lvbiBjb250cm9sIHN5c3RlbXMKIAl1c2UgdGhlIHdvcmRzICJyZXZpc2lvbiIgb3IgInZlcnNpb24iLiAgQWxzbyB1c2VkIGFzIGEgc2hvcnQKIAloYW5kIGZvciA8PGRlZl9jb21taXRfb2JqZWN0LGNvbW1pdCBvYmplY3Q+Pi4KICsKIEFzIGEgdmVyYjogVGhlIGFjdGlvbiBvZiBzdG9yaW5nIGEgbmV3IHNuYXBzaG90IG9mIHRoZSBwcm9qZWN0J3MKLXN0YXRlIGluIHRoZSBnaXQgaGlzdG9yeSwgYnkgY3JlYXRpbmcgYSBuZXcgY29tbWl0IHJlcHJlc2VudGluZyB0aGUgY3VycmVudAorc3RhdGUgaW4gdGhlIEdpdCBoaXN0b3J5LCBieSBjcmVhdGluZyBhIG5ldyBjb21taXQgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50CiBzdGF0ZSBvZiB0aGUgPDxkZWZfaW5kZXgsaW5kZXg+PiBhbmQgYWR2YW5jaW5nIDw8ZGVmX0hFQUQsSEVBRD4+CiB0byBwb2ludCBhdCB0aGUgbmV3IGNvbW1pdC4KIApAQCAtODIsOCArODIsOCBAQAogCXRvIHRoZSB0b3AgPDxkZWZfZGlyZWN0b3J5LGRpcmVjdG9yeT4+IG9mIHRoZSBzdG9yZWQKIAlyZXZpc2lvbi4KIAotW1tkZWZfY29yZV9naXRdXWNvcmUgZ2l0OjoKLQlGdW5kYW1lbnRhbCBkYXRhIHN0cnVjdHVyZXMgYW5kIHV0aWxpdGllcyBvZiBnaXQuIEV4cG9zZXMgb25seSBsaW1pdGVkCitbW2RlZl9jb3JlX2dpdF1dY29yZSBHaXQ6OgorCUZ1bmRhbWVudGFsIGRhdGEgc3RydWN0dXJlcyBhbmQgdXRpbGl0aWVzIG9mIEdpdC4gRXhwb3NlcyBvbmx5IGxpbWl0ZWQKIAlzb3VyY2UgY29kZSBtYW5hZ2VtZW50IHRvb2xzLgogCiBbW2RlZl9EQUddXURBRzo6CkBAIC0xMDAsMTIgKzEwMCwyMiBAQAogCiBbW2RlZl9kZXRhY2hlZF9IRUFEXV1kZXRhY2hlZCBIRUFEOjoKIAlOb3JtYWxseSB0aGUgPDxkZWZfSEVBRCxIRUFEPj4gc3RvcmVzIHRoZSBuYW1lIG9mIGEKLQk8PGRlZl9icmFuY2gsYnJhbmNoPj4uICBIb3dldmVyLCBnaXQgYWxzbyBhbGxvd3MgeW91IHRvIDw8ZGVmX2NoZWNrb3V0LGNoZWNrIG91dD4+Ci0JYW4gYXJiaXRyYXJ5IDw8ZGVmX2NvbW1pdCxjb21taXQ+PiB0aGF0IGlzbid0IG5lY2Vzc2FyaWx5IHRoZSB0aXAgb2YgYW55Ci0JcGFydGljdWxhciBicmFuY2guICBJbiB0aGlzIGNhc2UgSEVBRCBpcyBzYWlkIHRvIGJlICJkZXRhY2hlZCIuCi0KLVtbZGVmX2RpcmNhY2hlXV1kaXJjYWNoZTo6Ci0JWW91IGFyZSAqd2FhYWFheSogYmVoaW5kLiBTZWUgPDxkZWZfaW5kZXgsaW5kZXg+Pi4KKwk8PGRlZl9icmFuY2gsYnJhbmNoPj4sIGFuZCBjb21tYW5kcyB0aGF0IG9wZXJhdGUgb24gdGhlCisJaGlzdG9yeSBIRUFEIHJlcHJlc2VudHMgb3BlcmF0ZSBvbiB0aGUgaGlzdG9yeSBsZWFkaW5nIHRvIHRoZQorCXRpcCBvZiB0aGUgYnJhbmNoIHRoZSBIRUFEIHBvaW50cyBhdC4gIEhvd2V2ZXIsIEdpdCBhbHNvCisJYWxsb3dzIHlvdSB0byA8PGRlZl9jaGVja291dCxjaGVjayBvdXQ+PiBhbiBhcmJpdHJhcnkKKwk8PGRlZl9jb21taXQsY29tbWl0Pj4gdGhhdCBpc24ndCBuZWNlc3NhcmlseSB0aGUgdGlwIG9mIGFueQorCXBhcnRpY3VsYXIgYnJhbmNoLiAgVGhlIEhFQUQgaW4gc3VjaCBhIHN0YXRlIGlzIGNhbGxlZAorCSJkZXRhY2hlZCIuCisrCitOb3RlIHRoYXQgY29tbWFuZHMgdGhhdCBvcGVyYXRlIG9uIHRoZSBoaXN0b3J5IG9mIHRoZSBjdXJyZW50IGJyYW5jaAorKGUuZy4gYGdpdCBjb21taXRgIHRvIGJ1aWxkIGEgbmV3IGhpc3Rvcnkgb24gdG9wIG9mIGl0KSBzdGlsbCB3b3JrCit3aGlsZSB0aGUgSEVBRCBpcyBkZXRhY2hlZC4gVGhleSB1cGRhdGUgdGhlIEhFQUQgdG8gcG9pbnQgYXQgdGhlIHRpcAorb2YgdGhlIHVwZGF0ZWQgaGlzdG9yeSB3aXRob3V0IGFmZmVjdGluZyBhbnkgYnJhbmNoLiAgQ29tbWFuZHMgdGhhdAordXBkYXRlIG9yIGlucXVpcmUgaW5mb3JtYXRpb24gX2Fib3V0XyB0aGUgY3VycmVudCBicmFuY2ggKGUuZy4gYGdpdAorYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvYCB0aGF0IHNldHMgd2hhdCByZW1vdGUgdHJhY2tpbmcgYnJhbmNoIHRoZQorY3VycmVudCBicmFuY2ggaW50ZWdyYXRlcyB3aXRoKSBvYnZpb3VzbHkgZG8gbm90IHdvcmssIGFzIHRoZXJlIGlzIG5vCisocmVhbCkgY3VycmVudCBicmFuY2ggdG8gYXNrIGFib3V0IGluIHRoaXMgc3RhdGUuCiAKIFtbZGVmX2RpcmVjdG9yeV1dZGlyZWN0b3J5OjoKIAlUaGUgbGlzdCB5b3UgZ2V0IHdpdGggImxzIiA6LSkKQEAgLTExNSwxMSArMTI1LDYgQEAKIAlpdCBjb250YWlucyBtb2RpZmljYXRpb25zIHdoaWNoIGhhdmUgbm90IGJlZW4gPDxkZWZfY29tbWl0LGNvbW1pdHRlZD4+IHRvIHRoZSBjdXJyZW50CiAJPDxkZWZfYnJhbmNoLGJyYW5jaD4+LgogCi1bW2RlZl9lbnRdXWVudDo6Ci0JRmF2b3JpdGUgc3lub255bSB0byAiPDxkZWZfdHJlZS1pc2gsdHJlZS1pc2g+PiIgYnkgc29tZSB0b3RhbCBnZWVrcy4gU2VlCi0JaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbnRfKE1pZGRsZS1lYXJ0aCkgZm9yIGFuIGluLWRlcHRoCi0JZXhwbGFuYXRpb24uIEF2b2lkIHRoaXMgdGVybSwgbm90IHRvIGNvbmZ1c2UgcGVvcGxlLgotCiBbW2RlZl9ldmlsX21lcmdlXV1ldmlsIG1lcmdlOjoKIAlBbiBldmlsIG1lcmdlIGlzIGEgPDxkZWZfbWVyZ2UsbWVyZ2U+PiB0aGF0IGludHJvZHVjZXMgY2hhbmdlcyB0aGF0CiAJZG8gbm90IGFwcGVhciBpbiBhbnkgPDxkZWZfcGFyZW50LHBhcmVudD4+LgpAQCAtMTQyLDIyICsxNDcsMjYgQEAKIAlhbmQgdG8gZ2V0IHRoZW0sIHRvby4gIFNlZSBhbHNvIGxpbmtnaXQ6Z2l0LWZldGNoWzFdLgogCiBbW2RlZl9maWxlX3N5c3RlbV1dZmlsZSBzeXN0ZW06OgotCUxpbnVzIFRvcnZhbGRzIG9yaWdpbmFsbHkgZGVzaWduZWQgZ2l0IHRvIGJlIGEgdXNlciBzcGFjZSBmaWxlIHN5c3RlbSwKKwlMaW51cyBUb3J2YWxkcyBvcmlnaW5hbGx5IGRlc2lnbmVkIEdpdCB0byBiZSBhIHVzZXIgc3BhY2UgZmlsZSBzeXN0ZW0sCiAJaS5lLiB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gaG9sZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuIFRoYXQgZW5zdXJlZCB0aGUKLQllZmZpY2llbmN5IGFuZCBzcGVlZCBvZiBnaXQuCisJZWZmaWNpZW5jeSBhbmQgc3BlZWQgb2YgR2l0LgogCi1bW2RlZl9naXRfYXJjaGl2ZV1dZ2l0IGFyY2hpdmU6OgorW1tkZWZfZ2l0X2FyY2hpdmVdXUdpdCBhcmNoaXZlOjoKIAlTeW5vbnltIGZvciA8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+PiAoZm9yIGFyY2ggcGVvcGxlKS4KIAorW1tkZWZfZ2l0ZmlsZV1dZ2l0ZmlsZTo6CisJQSBwbGFpbiBmaWxlIGAuZ2l0YCBhdCB0aGUgcm9vdCBvZiBhIHdvcmtpbmcgdHJlZSB0aGF0CisJcG9pbnRzIGF0IHRoZSBkaXJlY3RvcnkgdGhhdCBpcyB0aGUgcmVhbCByZXBvc2l0b3J5LgorCiBbW2RlZl9ncmFmdHNdXWdyYWZ0czo6CiAJR3JhZnRzIGVuYWJsZXMgdHdvIG90aGVyd2lzZSBkaWZmZXJlbnQgbGluZXMgb2YgZGV2ZWxvcG1lbnQgdG8gYmUgam9pbmVkCiAJdG9nZXRoZXIgYnkgcmVjb3JkaW5nIGZha2UgYW5jZXN0cnkgaW5mb3JtYXRpb24gZm9yIGNvbW1pdHMuIFRoaXMgd2F5Ci0JeW91IGNhbiBtYWtlIGdpdCBwcmV0ZW5kIHRoZSBzZXQgb2YgPDxkZWZfcGFyZW50LHBhcmVudHM+PiBhIDw8ZGVmX2NvbW1pdCxjb21taXQ+PiBoYXMKKwl5b3UgY2FuIG1ha2UgR2l0IHByZXRlbmQgdGhlIHNldCBvZiA8PGRlZl9wYXJlbnQscGFyZW50cz4+IGEgPDxkZWZfY29tbWl0LGNvbW1pdD4+IGhhcwogCWlzIGRpZmZlcmVudCBmcm9tIHdoYXQgd2FzIHJlY29yZGVkIHdoZW4gdGhlIGNvbW1pdCB3YXMKIAljcmVhdGVkLiBDb25maWd1cmVkIHZpYSB0aGUgYC5naXQvaW5mby9ncmFmdHNgIGZpbGUuCiAKIFtbZGVmX2hhc2hdXWhhc2g6OgotCUluIGdpdCdzIGNvbnRleHQsIHN5bm9ueW0gdG8gPDxkZWZfb2JqZWN0X25hbWUsb2JqZWN0IG5hbWU+Pi4KKwlJbiBHaXQncyBjb250ZXh0LCBzeW5vbnltIGZvciA8PGRlZl9vYmplY3RfbmFtZSxvYmplY3QgbmFtZT4+LgogCiBbW2RlZl9oZWFkXV1oZWFkOjoKIAlBIDw8ZGVmX3JlZixuYW1lZCByZWZlcmVuY2U+PiB0byB0aGUgPDxkZWZfY29tbWl0LGNvbW1pdD4+IGF0IHRoZSB0aXAgb2YgYQpAQCAtMTc3LDE0ICsxODYsMTQgQEAKIAlBIHN5bm9ueW0gZm9yIDw8ZGVmX2hlYWQsaGVhZD4+LgogCiBbW2RlZl9ob29rXV1ob29rOjoKLQlEdXJpbmcgdGhlIG5vcm1hbCBleGVjdXRpb24gb2Ygc2V2ZXJhbCBnaXQgY29tbWFuZHMsIGNhbGwtb3V0cyBhcmUgbWFkZQorCUR1cmluZyB0aGUgbm9ybWFsIGV4ZWN1dGlvbiBvZiBzZXZlcmFsIEdpdCBjb21tYW5kcywgY2FsbC1vdXRzIGFyZSBtYWRlCiAJdG8gb3B0aW9uYWwgc2NyaXB0cyB0aGF0IGFsbG93IGEgZGV2ZWxvcGVyIHRvIGFkZCBmdW5jdGlvbmFsaXR5IG9yCiAJY2hlY2tpbmcuIFR5cGljYWxseSwgdGhlIGhvb2tzIGFsbG93IGZvciBhIGNvbW1hbmQgdG8gYmUgcHJlLXZlcmlmaWVkCiAJYW5kIHBvdGVudGlhbGx5IGFib3J0ZWQsIGFuZCBhbGxvdyBmb3IgYSBwb3N0LW5vdGlmaWNhdGlvbiBhZnRlciB0aGUKIAlvcGVyYXRpb24gaXMgZG9uZS4gVGhlIGhvb2sgc2NyaXB0cyBhcmUgZm91bmQgaW4gdGhlCiAJYCRHSVRfRElSL2hvb2tzL2AgZGlyZWN0b3J5LCBhbmQgYXJlIGVuYWJsZWQgYnkgc2ltcGx5CiAJcmVtb3ZpbmcgdGhlIGAuc2FtcGxlYCBzdWZmaXggZnJvbSB0aGUgZmlsZW5hbWUuIEluIGVhcmxpZXIgdmVyc2lvbnMKLQlvZiBnaXQgeW91IGhhZCB0byBtYWtlIHRoZW0gZXhlY3V0YWJsZS4KKwlvZiBHaXQgeW91IGhhZCB0byBtYWtlIHRoZW0gZXhlY3V0YWJsZS4KIAogW1tkZWZfaW5kZXhdXWluZGV4OjoKIAlBIGNvbGxlY3Rpb24gb2YgZmlsZXMgd2l0aCBzdGF0IGluZm9ybWF0aW9uLCB3aG9zZSBjb250ZW50cyBhcmUgc3RvcmVkCkBAIC0yMDEsNyArMjEwLDcgQEAKIAogW1tkZWZfbWFzdGVyXV1tYXN0ZXI6OgogCVRoZSBkZWZhdWx0IGRldmVsb3BtZW50IDw8ZGVmX2JyYW5jaCxicmFuY2g+Pi4gV2hlbmV2ZXIgeW91Ci0JY3JlYXRlIGEgZ2l0IDw8ZGVmX3JlcG9zaXRvcnkscmVwb3NpdG9yeT4+LCBhIGJyYW5jaCBuYW1lZAorCWNyZWF0ZSBhIEdpdCA8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+PiwgYSBicmFuY2ggbmFtZWQKIAkibWFzdGVyIiBpcyBjcmVhdGVkLCBhbmQgYmVjb21lcyB0aGUgYWN0aXZlIGJyYW5jaC4gSW4gbW9zdAogCWNhc2VzLCB0aGlzIGNvbnRhaW5zIHRoZSBsb2NhbCBkZXZlbG9wbWVudCwgdGhvdWdoIHRoYXQgaXMKIAlwdXJlbHkgYnkgY29udmVudGlvbiBhbmQgaXMgbm90IHJlcXVpcmVkLgpAQCAtMjI4LDggKzIzNyw4IEBACiAibWVyZ2UiLgogCiBbW2RlZl9vYmplY3RdXW9iamVjdDo6Ci0JVGhlIHVuaXQgb2Ygc3RvcmFnZSBpbiBnaXQuIEl0IGlzIHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgdGhlCi0JPDxkZWZfU0hBMSxTSEExPj4gb2YgaXRzIGNvbnRlbnRzLiBDb25zZXF1ZW50bHksIGFuCisJVGhlIHVuaXQgb2Ygc3RvcmFnZSBpbiBHaXQuIEl0IGlzIHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgdGhlCisJPDxkZWZfU0hBMSxTSEEtMT4+IG9mIGl0cyBjb250ZW50cy4gQ29uc2VxdWVudGx5LCBhbgogCW9iamVjdCBjYW4gbm90IGJlIGNoYW5nZWQuCiAKIFtbZGVmX29iamVjdF9kYXRhYmFzZV1db2JqZWN0IGRhdGFiYXNlOjoKQEAgLTI0MSwxMCArMjUwLDkgQEAKIAlTeW5vbnltIGZvciA8PGRlZl9vYmplY3RfbmFtZSxvYmplY3QgbmFtZT4+LgogCiBbW2RlZl9vYmplY3RfbmFtZV1db2JqZWN0IG5hbWU6OgotCVRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiBhbiA8PGRlZl9vYmplY3Qsb2JqZWN0Pj4uIFRoZSA8PGRlZl9oYXNoLGhhc2g+PgotCW9mIHRoZSBvYmplY3QncyBjb250ZW50cyB1c2luZyB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtCi0JMSBhbmQgdXN1YWxseSByZXByZXNlbnRlZCBieSB0aGUgNDAgY2hhcmFjdGVyIGhleGFkZWNpbWFsIGVuY29kaW5nIG9mCi0JdGhlIDw8ZGVmX2hhc2gsaGFzaD4+IG9mIHRoZSBvYmplY3QuCisJVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGFuIDw8ZGVmX29iamVjdCxvYmplY3Q+Pi4gIFRoZQorCW9iamVjdCBuYW1lIGlzIHVzdWFsbHkgcmVwcmVzZW50ZWQgYnkgYSA0MCBjaGFyYWN0ZXIKKwloZXhhZGVjaW1hbCBzdHJpbmcuICBBbHNvIGNvbGxvcXVpYWxseSBjYWxsZWQgPDxkZWZfU0hBMSxTSEEtMT4+LgogCiBbW2RlZl9vYmplY3RfdHlwZV1db2JqZWN0IHR5cGU6OgogCU9uZSBvZiB0aGUgaWRlbnRpZmllcnMgIjw8ZGVmX2NvbW1pdF9vYmplY3QsY29tbWl0Pj4iLApAQCAtMjUzLDggKzI2MSw3IEBACiAJPDxkZWZfb2JqZWN0LG9iamVjdD4+LgogCiBbW2RlZl9vY3RvcHVzXV1vY3RvcHVzOjoKLQlUbyA8PGRlZl9tZXJnZSxtZXJnZT4+IG1vcmUgdGhhbiB0d28gPDxkZWZfYnJhbmNoLGJyYW5jaGVzPj4uIEFsc28gZGVub3RlcyBhbgotCWludGVsbGlnZW50IHByZWRhdG9yLgorCVRvIDw8ZGVmX21lcmdlLG1lcmdlPj4gbW9yZSB0aGFuIHR3byA8PGRlZl9icmFuY2gsYnJhbmNoZXM+Pi4KIAogW1tkZWZfb3JpZ2luXV1vcmlnaW46OgogCVRoZSBkZWZhdWx0IHVwc3RyZWFtIDw8ZGVmX3JlcG9zaXRvcnkscmVwb3NpdG9yeT4+LiBNb3N0IHByb2plY3RzIGhhdmUKQEAgLTI3NCw3ICsyODEsNyBAQAogCXBhY2suCiAKIFtbZGVmX3BhdGhzcGVjXV1wYXRoc3BlYzo6Ci0gICAgICAgUGF0dGVybiB1c2VkIHRvIHNwZWNpZnkgcGF0aHMuCisJUGF0dGVybiB1c2VkIHRvIGxpbWl0IHBhdGhzIGluIEdpdCBjb21tYW5kcy4KICsKIFBhdGhzcGVjcyBhcmUgdXNlZCBvbiB0aGUgY29tbWFuZCBsaW5lIG9mICJnaXQgbHMtZmlsZXMiLCAiZ2l0CiBscy10cmVlIiwgImdpdCBhZGQiLCAiZ2l0IGdyZXAiLCAiZ2l0IGRpZmYiLCAiZ2l0IGNoZWNrb3V0IiwKQEAgLTI4Myw2ICsyOTAsOCBAQAogd29ya3RyZWUuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgZWFjaCBjb21tYW5kIGZvciB3aGV0aGVyCiBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9yIHRvcGxldmVsLiAgVGhlCiBwYXRoc3BlYyBzeW50YXggaXMgYXMgZm9sbG93czoKKysKKy0tCiAKICogYW55IHBhdGggbWF0Y2hlcyBpdHNlbGYKICogdGhlIHBhdGhzcGVjIHVwIHRvIHRoZSBsYXN0IHNsYXNoIHJlcHJlc2VudHMgYQpAQCAtMjkyLDExICszMDEsMTIgQEAKICAgb2YgdGhlIHBhdGhuYW1lLiAgUGF0aHMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQogICBwcmVmaXggd2lsbCBiZSBtYXRjaGVkIGFnYWluc3QgdGhhdCBwYXR0ZXJuIHVzaW5nIGZubWF0Y2goMyk7CiAgIGluIHBhcnRpY3VsYXIsICcqJyBhbmQgJz8nIF9jYW5fIG1hdGNoIGRpcmVjdG9yeSBzZXBhcmF0b3JzLgorCistLQogKwogRm9yIGV4YW1wbGUsIERvY3VtZW50YXRpb24vKi5qcGcgd2lsbCBtYXRjaCBhbGwgLmpwZyBmaWxlcwogaW4gdGhlIERvY3VtZW50YXRpb24gc3VidHJlZSwKIGluY2x1ZGluZyBEb2N1bWVudGF0aW9uL2NoYXB0ZXJfMS9maWd1cmVfMS5qcGcuCi0KICsKIEEgcGF0aHNwZWMgdGhhdCBiZWdpbnMgd2l0aCBhIGNvbG9uIGA6YCBoYXMgc3BlY2lhbCBtZWFuaW5nLiAgSW4gdGhlCiBzaG9ydCBmb3JtLCB0aGUgbGVhZGluZyBjb2xvbiBgOmAgaXMgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlICJtYWdpYwpAQCAtMzEyLDE4ICszMjIsMTAgQEAKIGFnYWluc3QgdGhlIHBhdGguCiArCiBUaGUgIm1hZ2ljIHNpZ25hdHVyZSIgY29uc2lzdHMgb2YgYW4gQVNDSUkgc3ltYm9sIHRoYXQgaXMgbm90Ci1hbHBoYW51bWVyaWMuCi0rCi0tLQotdG9wIGAvYDs7Ci0JVGhlIG1hZ2ljIHdvcmQgYHRvcGAgKG1uZW1vbmljOiBgL2ApIG1ha2VzIHRoZSBwYXR0ZXJuIG1hdGNoCi0JZnJvbSB0aGUgcm9vdCBvZiB0aGUgd29ya2luZyB0cmVlLCBldmVuIHdoZW4geW91IGFyZSBydW5uaW5nCi0JdGhlIGNvbW1hbmQgZnJvbSBpbnNpZGUgYSBzdWJkaXJlY3RvcnkuCi0tLQotKwotQ3VycmVudGx5IG9ubHkgdGhlIHNsYXNoIGAvYCBpcyByZWNvZ25pemVkIGFzIHRoZSAibWFnaWMgc2lnbmF0dXJlIiwKLWJ1dCBpdCBpcyBlbnZpc2lvbmVkIHRoYXQgd2Ugd2lsbCBzdXBwb3J0IG1vcmUgdHlwZXMgb2YgbWFnaWMgaW4gbGF0ZXIKLXZlcnNpb25zIG9mIGdpdC4KK2FscGhhbnVtZXJpYy4gQ3VycmVudGx5IG9ubHkgdGhlIHNsYXNoIGAvYCBpcyByZWNvZ25pemVkIGFzIGEKKyJtYWdpYyBzaWduYXR1cmUiOiBpdCBtYWtlcyB0aGUgcGF0dGVybiBtYXRjaCBmcm9tIHRoZSByb290IG9mCit0aGUgd29ya2luZyB0cmVlLCBldmVuIHdoZW4geW91IGFyZSBydW5uaW5nIHRoZSBjb21tYW5kIGZyb20KK2luc2lkZSBhIHN1YmRpcmVjdG9yeS4KICsKIEEgcGF0aHNwZWMgd2l0aCBvbmx5IGEgY29sb24gbWVhbnMgInRoZXJlIGlzIG5vIHBhdGhzcGVjIi4gVGhpcyBmb3JtCiBzaG91bGQgbm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgcGF0aHNwZWMuCkBAIC0zNDEsMTIgKzM0MywxMiBAQAogCXBhcnRpY3VsYXIgbGluZSBvZiB0ZXh0LiBTZWUgbGlua2dpdDpnaXQtZGlmZlsxXS4KIAogW1tkZWZfcGx1bWJpbmddXXBsdW1iaW5nOjoKLQlDdXRlIG5hbWUgZm9yIDw8ZGVmX2NvcmVfZ2l0LGNvcmUgZ2l0Pj4uCisJQ3V0ZSBuYW1lIGZvciA8PGRlZl9jb3JlX2dpdCxjb3JlIEdpdD4+LgogCiBbW2RlZl9wb3JjZWxhaW5dXXBvcmNlbGFpbjo6CiAJQ3V0ZSBuYW1lIGZvciBwcm9ncmFtcyBhbmQgcHJvZ3JhbSBzdWl0ZXMgZGVwZW5kaW5nIG9uCi0JPDxkZWZfY29yZV9naXQsY29yZSBnaXQ+PiwgcHJlc2VudGluZyBhIGhpZ2ggbGV2ZWwgYWNjZXNzIHRvCi0JY29yZSBnaXQuIFBvcmNlbGFpbnMgZXhwb3NlIG1vcmUgb2YgYSA8PGRlZl9TQ00sU0NNPj4KKwk8PGRlZl9jb3JlX2dpdCxjb3JlIEdpdD4+LCBwcmVzZW50aW5nIGEgaGlnaCBsZXZlbCBhY2Nlc3MgdG8KKwljb3JlIEdpdC4gUG9yY2VsYWlucyBleHBvc2UgbW9yZSBvZiBhIDw8ZGVmX1NDTSxTQ00+PgogCWludGVyZmFjZSB0aGFuIHRoZSA8PGRlZl9wbHVtYmluZyxwbHVtYmluZz4+LgogCiBbW2RlZl9wdWxsXV1wdWxsOjoKQEAgLTM4MSw3ICszODMsNyBAQAogCXRvIHRoZSByZXN1bHQuCiAKIFtbZGVmX3JlZl1dcmVmOjoKLQlBIDQwLWJ5dGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGEgPDxkZWZfU0hBMSxTSEExPj4gb3IgYSBuYW1lIHRoYXQKKwlBIDQwLWJ5dGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGEgPDxkZWZfU0hBMSxTSEEtMT4+IG9yIGEgbmFtZSB0aGF0CiAJZGVub3RlcyBhIHBhcnRpY3VsYXIgPDxkZWZfb2JqZWN0LG9iamVjdD4+LiBUaGV5IG1heSBiZSBzdG9yZWQgaW4KIAlhIGZpbGUgdW5kZXIgYCRHSVRfRElSL3JlZnMvYCBkaXJlY3RvcnksIG9yCiAJaW4gdGhlIGAkR0lUX0RJUi9wYWNrZWQtcmVmc2AgZmlsZS4KQEAgLTM5NSwyMyArMzk3LDE2IEBACiBbW2RlZl9yZWZzcGVjXV1yZWZzcGVjOjoKIAlBICJyZWZzcGVjIiBpcyB1c2VkIGJ5IDw8ZGVmX2ZldGNoLGZldGNoPj4gYW5kCiAJPDxkZWZfcHVzaCxwdXNoPj4gdG8gZGVzY3JpYmUgdGhlIG1hcHBpbmcgYmV0d2VlbiByZW1vdGUKLQk8PGRlZl9yZWYscmVmPj4gYW5kIGxvY2FsIHJlZi4gVGhleSBhcmUgY29tYmluZWQgd2l0aCBhIGNvbG9uIGluCi0JdGhlIGZvcm1hdCA8c3JjPjo8ZHN0PiwgcHJlY2VkZWQgYnkgYW4gb3B0aW9uYWwgcGx1cyBzaWduLCArLgotCUZvciBleGFtcGxlOiBgZ2l0IGZldGNoICRVUkwKLQlyZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL29yaWdpbmAgbWVhbnMgImdyYWIgdGhlIG1hc3RlcgotCTw8ZGVmX2JyYW5jaCxicmFuY2g+PiA8PGRlZl9oZWFkLGhlYWQ+PiBmcm9tIHRoZSAkVVJMIGFuZCBzdG9yZQotCWl0IGFzIG15IG9yaWdpbiBicmFuY2ggaGVhZCIuIEFuZCBgZ2l0IHB1c2gKLQkkVVJMIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvdG8tdXBzdHJlYW1gIG1lYW5zICJwdWJsaXNoIG15Ci0JbWFzdGVyIGJyYW5jaCBoZWFkIGFzIHRvLXVwc3RyZWFtIGJyYW5jaCBhdCAkVVJMIi4gU2VlIGFsc28KLQlsaW5rZ2l0OmdpdC1wdXNoWzFdLgorCTw8ZGVmX3JlZixyZWY+PiBhbmQgbG9jYWwgcmVmLgogCiBbW2RlZl9yZW1vdGVfdHJhY2tpbmdfYnJhbmNoXV1yZW1vdGUtdHJhY2tpbmcgYnJhbmNoOjoKLQlBIHJlZ3VsYXIgZ2l0IDw8ZGVmX2JyYW5jaCxicmFuY2g+PiB0aGF0IGlzIHVzZWQgdG8gZm9sbG93IGNoYW5nZXMgZnJvbQotCWFub3RoZXIgPDxkZWZfcmVwb3NpdG9yeSxyZXBvc2l0b3J5Pj4uIEEgcmVtb3RlLXRyYWNraW5nCi0JYnJhbmNoIHNob3VsZCBub3QgY29udGFpbiBkaXJlY3QgbW9kaWZpY2F0aW9ucyBvciBoYXZlIGxvY2FsIGNvbW1pdHMKLQltYWRlIHRvIGl0LiBBIHJlbW90ZS10cmFja2luZyBicmFuY2ggY2FuIHVzdWFsbHkgYmUKLQlpZGVudGlmaWVkIGFzIHRoZSByaWdodC1oYW5kLXNpZGUgPDxkZWZfcmVmLHJlZj4+IGluIGEgUHVsbDoKLQk8PGRlZl9yZWZzcGVjLHJlZnNwZWM+Pi4KKwlBIDw8ZGVmX3JlZixyZWY+PiB0aGF0IGlzIHVzZWQgdG8gZm9sbG93IGNoYW5nZXMgZnJvbSBhbm90aGVyCisJPDxkZWZfcmVwb3NpdG9yeSxyZXBvc2l0b3J5Pj4uIEl0IHR5cGljYWxseSBsb29rcyBsaWtlCisJJ3JlZnMvcmVtb3Rlcy9mb28vYmFyJyAoaW5kaWNhdGluZyB0aGF0IGl0IHRyYWNrcyBhIGJyYW5jaCBuYW1lZAorCSdiYXInIGluIGEgcmVtb3RlIG5hbWVkICdmb28nKSwgYW5kIG1hdGNoZXMgdGhlIHJpZ2h0LWhhbmQtc2lkZSBvZgorCWEgY29uZmlndXJlZCBmZXRjaCA8PGRlZl9yZWZzcGVjLHJlZnNwZWM+Pi4gQSByZW1vdGUtdHJhY2tpbmcKKwlicmFuY2ggc2hvdWxkIG5vdCBjb250YWluIGRpcmVjdCBtb2RpZmljYXRpb25zIG9yIGhhdmUgbG9jYWwKKwljb21taXRzIG1hZGUgdG8gaXQuCiAKIFtbZGVmX3JlcG9zaXRvcnldXXJlcG9zaXRvcnk6OgogCUEgY29sbGVjdGlvbiBvZiA8PGRlZl9yZWYscmVmcz4+IHRvZ2V0aGVyIHdpdGggYW4KQEAgLTQyNiw5ICs0MjEsNyBAQAogCTw8ZGVmX21lcmdlLG1lcmdlPj4gbGVmdCBiZWhpbmQuCiAKIFtbZGVmX3JldmlzaW9uXV1yZXZpc2lvbjo6Ci0JQSBwYXJ0aWN1bGFyIHN0YXRlIG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB3aGljaCB3YXMgc3RvcmVkIGluIHRoZQotCTw8ZGVmX29iamVjdF9kYXRhYmFzZSxvYmplY3QgZGF0YWJhc2U+Pi4gSXQgaXMgcmVmZXJlbmNlZCBieSBhCi0JPDxkZWZfY29tbWl0X29iamVjdCxjb21taXQgb2JqZWN0Pj4uCisJU3lub255bSBmb3IgPDxkZWZfY29tbWl0LGNvbW1pdD4+ICh0aGUgbm91bikuCiAKIFtbZGVmX3Jld2luZF1dcmV3aW5kOjoKIAlUbyB0aHJvdyBhd2F5IHBhcnQgb2YgdGhlIGRldmVsb3BtZW50LCBpLmUuIHRvIGFzc2lnbiB0aGUKQEAgLTQzNywxMyArNDMwLDE0IEBACiBbW2RlZl9TQ01dXVNDTTo6CiAJU291cmNlIGNvZGUgbWFuYWdlbWVudCAodG9vbCkuCiAKLVtbZGVmX1NIQTFdXVNIQTE6OgotCVN5bm9ueW0gZm9yIDw8ZGVmX29iamVjdF9uYW1lLG9iamVjdCBuYW1lPj4uCitbW2RlZl9TSEExXV1TSEEtMTo6CisJIlNlY3VyZSBIYXNoIEFsZ29yaXRobSAxIjsgYSBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24uCisJSW4gdGhlIGNvbnRleHQgb2YgR2l0IHVzZWQgYXMgYSBzeW5vbnltIGZvciA8PGRlZl9vYmplY3RfbmFtZSxvYmplY3QgbmFtZT4+LgogCiBbW2RlZl9zaGFsbG93X3JlcG9zaXRvcnldXXNoYWxsb3cgcmVwb3NpdG9yeTo6CiAJQSBzaGFsbG93IDw8ZGVmX3JlcG9zaXRvcnkscmVwb3NpdG9yeT4+IGhhcyBhbiBpbmNvbXBsZXRlCiAJaGlzdG9yeSBzb21lIG9mIHdob3NlIDw8ZGVmX2NvbW1pdCxjb21taXRzPj4gaGF2ZSA8PGRlZl9wYXJlbnQscGFyZW50cz4+IGNhdXRlcml6ZWQgYXdheSAoaW4gb3RoZXIKLQl3b3JkcywgZ2l0IGlzIHRvbGQgdG8gcHJldGVuZCB0aGF0IHRoZXNlIGNvbW1pdHMgZG8gbm90IGhhdmUgdGhlCisJd29yZHMsIEdpdCBpcyB0b2xkIHRvIHByZXRlbmQgdGhhdCB0aGVzZSBjb21taXRzIGRvIG5vdCBoYXZlIHRoZQogCXBhcmVudHMsIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHJlY29yZGVkIGluIHRoZSA8PGRlZl9jb21taXRfb2JqZWN0LGNvbW1pdAogCW9iamVjdD4+KS4gVGhpcyBpcyBzb21ldGltZXMgdXNlZnVsIHdoZW4geW91IGFyZSBpbnRlcmVzdGVkIG9ubHkgaW4gdGhlCiAJcmVjZW50IGhpc3Rvcnkgb2YgYSBwcm9qZWN0IGV2ZW4gdGhvdWdoIHRoZSByZWFsIGhpc3RvcnkgcmVjb3JkZWQgaW4gdGhlCkBAIC00NTIsNyArNDQ2LDcgQEAKIAlpdHMgaGlzdG9yeSBjYW4gYmUgbGF0ZXIgZGVlcGVuZWQgd2l0aCBsaW5rZ2l0OmdpdC1mZXRjaFsxXS4KIAogW1tkZWZfc3ltcmVmXV1zeW1yZWY6OgotCVN5bWJvbGljIHJlZmVyZW5jZTogaW5zdGVhZCBvZiBjb250YWluaW5nIHRoZSA8PGRlZl9TSEExLFNIQTE+PgorCVN5bWJvbGljIHJlZmVyZW5jZTogaW5zdGVhZCBvZiBjb250YWluaW5nIHRoZSA8PGRlZl9TSEExLFNIQS0xPj4KIAlpZCBpdHNlbGYsIGl0IGlzIG9mIHRoZSBmb3JtYXQgJ3JlZjogcmVmcy9zb21lL3RoaW5nJyBhbmQgd2hlbgogCXJlZmVyZW5jZWQsIGl0IHJlY3Vyc2l2ZWx5IGRlcmVmZXJlbmNlcyB0byB0aGlzIHJlZmVyZW5jZS4KIAknPDxkZWZfSEVBRCxIRUFEPj4nIGlzIGEgcHJpbWUgZXhhbXBsZSBvZiBhIHN5bXJlZi4gU3ltYm9saWMKQEAgLTQ2NCw5ICs0NTgsOSBAQAogCW9iamVjdCBvZiBhbiBhcmJpdHJhcnkgdHlwZSAodHlwaWNhbGx5IGEgdGFnIHBvaW50cyB0byBlaXRoZXIgYQogCTw8ZGVmX3RhZ19vYmplY3QsdGFnPj4gb3IgYSA8PGRlZl9jb21taXRfb2JqZWN0LGNvbW1pdCBvYmplY3Q+PikuCiAJSW4gY29udHJhc3QgdG8gYSA8PGRlZl9oZWFkLGhlYWQ+PiwgYSB0YWcgaXMgbm90IHVwZGF0ZWQgYnkKLQl0aGUgYGNvbW1pdGAgY29tbWFuZC4gQSBnaXQgdGFnIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggYSBMaXNwCisJdGhlIGBjb21taXRgIGNvbW1hbmQuIEEgR2l0IHRhZyBoYXMgbm90aGluZyB0byBkbyB3aXRoIGEgTGlzcAogCXRhZyAod2hpY2ggd291bGQgYmUgY2FsbGVkIGFuIDw8ZGVmX29iamVjdF90eXBlLG9iamVjdCB0eXBlPj4KLQlpbiBnaXQncyBjb250ZXh0KS4gQSB0YWcgaXMgbW9zdCB0eXBpY2FsbHkgdXNlZCB0byBtYXJrIGEgcGFydGljdWxhcgorCWluIEdpdCdzIGNvbnRleHQpLiBBIHRhZyBpcyBtb3N0IHR5cGljYWxseSB1c2VkIHRvIG1hcmsgYSBwYXJ0aWN1bGFyCiAJcG9pbnQgaW4gdGhlIGNvbW1pdCBhbmNlc3RyeSA8PGRlZl9jaGFpbixjaGFpbj4+LgogCiBbW2RlZl90YWdfb2JqZWN0XV10YWcgb2JqZWN0OjoKQEAgLTQ3Niw3ICs0NzAsNyBAQAogCXNpZ25hdHVyZSwgaW4gd2hpY2ggY2FzZSBpdCBpcyBjYWxsZWQgYSAic2lnbmVkIHRhZyBvYmplY3QiLgogCiBbW2RlZl90b3BpY19icmFuY2hdXXRvcGljIGJyYW5jaDo6Ci0JQSByZWd1bGFyIGdpdCA8PGRlZl9icmFuY2gsYnJhbmNoPj4gdGhhdCBpcyB1c2VkIGJ5IGEgZGV2ZWxvcGVyIHRvCisJQSByZWd1bGFyIEdpdCA8PGRlZl9icmFuY2gsYnJhbmNoPj4gdGhhdCBpcyB1c2VkIGJ5IGEgZGV2ZWxvcGVyIHRvCiAJaWRlbnRpZnkgYSBjb25jZXB0dWFsIGxpbmUgb2YgZGV2ZWxvcG1lbnQuIFNpbmNlIGJyYW5jaGVzIGFyZSB2ZXJ5IGVhc3kKIAlhbmQgaW5leHBlbnNpdmUsIGl0IGlzIG9mdGVuIGRlc2lyYWJsZSB0byBoYXZlIHNldmVyYWwgc21hbGwgYnJhbmNoZXMKIAl0aGF0IGVhY2ggY29udGFpbiB2ZXJ5IHdlbGwgZGVmaW5lZCBjb25jZXB0cyBvciBzbWFsbCBpbmNyZW1lbnRhbCB5ZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8taW5kZXguc2ggYi9Eb2N1bWVudGF0aW9uL2hvd3RvLWluZGV4LnNoCmluZGV4IDM0YWEzMGMuLmEyMzQwODYgMTAwNzU1Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8taW5kZXguc2gKKysrIGIvRG9jdW1lbnRhdGlvbi9ob3d0by1pbmRleC5zaApAQCAtMSwxMSArMSwxMSBAQAogIyEvYmluL3NoCiAKIGNhdCA8PFxFT0YKLUdJVCBIb3d0byBJbmRleAorR2l0IEhvd3RvIEluZGV4CiA9PT09PT09PT09PT09PT0KIAogSGVyZSBpcyBhIGNvbGxlY3Rpb24gb2YgbWFpbGluZyBsaXN0IHBvc3RpbmdzIG1hZGUgYnkgdmFyaW91cwotcGVvcGxlIGRlc2NyaWJpbmcgaG93IHRoZXkgdXNlIGdpdCBpbiB0aGVpciB3b3JrZmxvdy4KK3Blb3BsZSBkZXNjcmliaW5nIGhvdyB0aGV5IHVzZSBHaXQgaW4gdGhlaXIgd29ya2Zsb3cuCiAKIEVPRgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL21haW50YWluLWdpdC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL21haW50YWluLWdpdC50eHQKaW5kZXggODE2Yzc5MS4uMzNhZTY5YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ob3d0by9tYWludGFpbi1naXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vbWFpbnRhaW4tZ2l0LnR4dApAQCAtMSw3ICsxLDcgQEAKIEZyb206IEp1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4KIERhdGU6IFdlZCwgMjEgTm92IDIwMDcgMTY6MzI6NTUgLTA4MDAKIFN1YmplY3Q6IEFkZGVuZHVtIHRvICJNYWludE5vdGVzIgotQWJzdHJhY3Q6IEltYWdpbmUgdGhhdCBnaXQgZGV2ZWxvcG1lbnQgaXMgcmFjaW5nIGFsb25nIGFzIHVzdWFsLCB3aGVuIG91ciBmcmllbmRseQorQWJzdHJhY3Q6IEltYWdpbmUgdGhhdCBHaXQgZGV2ZWxvcG1lbnQgaXMgcmFjaW5nIGFsb25nIGFzIHVzdWFsLCB3aGVuIG91ciBmcmllbmRseQogIG5laWdoYm9yaG9vZCBtYWludGFpbmVyIGlzIHN0cnVjayBkb3duIGJ5IGEgd2F5d2FyZCBidXMuIE91dCBvZiB0aGUKICBob3JkZXMgb2Ygc3Vja2VycyAobG95YWwgZGV2ZWxvcGVycyksIHlvdSBoYXZlIGJlZW4gdHJpY2tlZCAoY2hvc2VuKSB0bwogIHN0ZXAgdXAgYXMgdGhlIG5ldyBtYWludGFpbmVyLiBUaGlzIGhvd3RvIHdpbGwgc2hvdyB5b3UgImhvdyB0byIgZG8gaXQuCkBAIC0xMyw3ICsxMyw3IEBACiBBY3Rpdml0aWVzCiAtLS0tLS0tLS0tCiAKLVRoZSBtYWludGFpbmVyJ3MgZ2l0IHRpbWUgaXMgc3BlbnQgb24gdGhyZWUgYWN0aXZpdGllcy4KK1RoZSBtYWludGFpbmVyJ3MgR2l0IHRpbWUgaXMgc3BlbnQgb24gdGhyZWUgYWN0aXZpdGllcy4KIAogIC0gQ29tbXVuaWNhdGlvbiAoNDUlKQogCkBAIC05MCw3ICs5MCw3IEBACiBBIFR5cGljYWwgR2l0IERheQogLS0tLS0tLS0tLS0tLS0tLS0KIAotQSB0eXBpY2FsIGdpdCBkYXkgZm9yIHRoZSBtYWludGFpbmVyIGltcGxlbWVudHMgdGhlIGFib3ZlIHBvbGljeQorQSB0eXBpY2FsIEdpdCBkYXkgZm9yIHRoZSBtYWludGFpbmVyIGltcGxlbWVudHMgdGhlIGFib3ZlIHBvbGljeQogYnkgZG9pbmcgdGhlIGZvbGxvd2luZzoKIAogIC0gU2NhbiBtYWlsaW5nIGxpc3QuICBSZXNwb25kIHdpdGggcmV2aWV3IGNvbW1lbnRzLCBzdWdnZXN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9uZXctY29tbWFuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL25ldy1jb21tYW5kLnR4dAppbmRleCAzNjUwMmY2Li4yYWJjM2EwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL25ldy1jb21tYW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL25ldy1jb21tYW5kLnR4dApAQCAtMSwyNSArMSwyNSBAQAogRnJvbTogRXJpYyBTLiBSYXltb25kIDxlc3JAdGh5cnN1cy5jb20+CiBBYnN0cmFjdDogVGhpcyBpcyBob3ctdG8gZG9jdW1lbnRhdGlvbiBmb3IgcGVvcGxlIHdobyB3YW50IHRvIGFkZCBleHRlbnNpb24KLSBjb21tYW5kcyB0byBnaXQuICBJdCBzaG91bGQgYmUgcmVhZCBhbG9uZ3NpZGUgYXBpLWJ1aWx0aW4udHh0LgorIGNvbW1hbmRzIHRvIEdpdC4gIEl0IHNob3VsZCBiZSByZWFkIGFsb25nc2lkZSBhcGktYnVpbHRpbi50eHQuCiBDb250ZW50LXR5cGU6IHRleHQvYXNjaWlkb2MKIAogSG93IHRvIGludGVncmF0ZSBuZXcgc3ViY29tbWFuZHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFRoaXMgaXMgaG93LXRvIGRvY3VtZW50YXRpb24gZm9yIHBlb3BsZSB3aG8gd2FudCB0byBhZGQgZXh0ZW5zaW9uCi1jb21tYW5kcyB0byBnaXQuICBJdCBzaG91bGQgYmUgcmVhZCBhbG9uZ3NpZGUgYXBpLWJ1aWx0aW4udHh0LgorY29tbWFuZHMgdG8gR2l0LiAgSXQgc2hvdWxkIGJlIHJlYWQgYWxvbmdzaWRlIGFwaS1idWlsdGluLnR4dC4KIAogUnVudGltZSBlbnZpcm9ubWVudAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1naXQgc3ViY29tbWFuZHMgYXJlIHN0YW5kYWxvbmUgZXhlY3V0YWJsZXMgdGhhdCBsaXZlIGluIHRoZSBnaXQgZXhlYworR2l0IHN1YmNvbW1hbmRzIGFyZSBzdGFuZGFsb25lIGV4ZWN1dGFibGVzIHRoYXQgbGl2ZSBpbiB0aGUgR2l0IGV4ZWMKIHBhdGgsIG5vcm1hbGx5IC91c3IvbGliL2dpdC1jb3JlLiAgVGhlIGdpdCBleGVjdXRhYmxlIGl0c2VsZiBpcyBhCiB0aGluIHdyYXBwZXIgdGhhdCBrbm93cyB3aGVyZSB0aGUgc3ViY29tbWFuZHMgbGl2ZSwgYW5kIHJ1bnMgdGhlbSBieQogcGFzc2luZyBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRvIHRoZW0uCiAKLShJZiAiZ2l0IGZvbyIgaXMgbm90IGZvdW5kIGluIHRoZSBnaXQgZXhlYyBwYXRoLCB0aGUgd3JhcHBlcgorKElmICJnaXQgZm9vIiBpcyBub3QgZm91bmQgaW4gdGhlIEdpdCBleGVjIHBhdGgsIHRoZSB3cmFwcGVyCiB3aWxsIGxvb2sgaW4gdGhlIHJlc3Qgb2YgeW91ciAkUEFUSCBmb3IgaXQuICBUaHVzLCBpdCdzIHBvc3NpYmxlCi10byB3cml0ZSBsb2NhbCBnaXQgZXh0ZW5zaW9ucyB0aGF0IGRvbid0IGxpdmUgaW4gc3lzdGVtIHNwYWNlLikKK3RvIHdyaXRlIGxvY2FsIEdpdCBleHRlbnNpb25zIHRoYXQgZG9uJ3QgbGl2ZSBpbiBzeXN0ZW0gc3BhY2UuKQogCiBJbXBsZW1lbnRhdGlvbiBsYW5ndWFnZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzAsMTMgKzMwLDEzIEBACiBXaGlsZSB3ZSBzdHJvbmdseSBlbmNvdXJhZ2UgY29kaW5nIGluIHBvcnRhYmxlIEMgZm9yIHBvcnRhYmlsaXR5LAogdGhlc2Ugc3BlY2lmaWMgc2NyaXB0aW5nIGxhbmd1YWdlcyBhcmUgYWxzbyBhY2NlcHRhYmxlLiAgV2Ugd29uJ3QKIGFjY2VwdCBtb3JlIHdpdGhvdXQgYSB2ZXJ5IHN0cm9uZyB0ZWNobmljYWwgY2FzZSwgYXMgd2UgZG9uJ3Qgd2FudAotdG8gYnJvYWRlbiB0aGUgZ2l0IHN1aXRlJ3MgcmVxdWlyZWQgZGVwZW5kZW5jaWVzLiAgSW1wb3J0IHV0aWxpdGllcywKK3RvIGJyb2FkZW4gdGhlIEdpdCBzdWl0ZSdzIHJlcXVpcmVkIGRlcGVuZGVuY2llcy4gIEltcG9ydCB1dGlsaXRpZXMsCiBzdXJnaWNhbCB0b29scywgcmVtb3RlIGhlbHBlcnMgYW5kIG90aGVyIGNvZGUgYXQgdGhlIGVkZ2VzIG9mIHRoZQotZ2l0IHN1aXRlIGFyZSBtb3JlIGxlbmllbnQgYW5kIHdlIGFsbG93IFB5dGhvbiAoYW5kIGV2ZW4gVGNsL3RrKSwKK0dpdCBzdWl0ZSBhcmUgbW9yZSBsZW5pZW50IGFuZCB3ZSBhbGxvdyBQeXRob24gKGFuZCBldmVuIFRjbC90ayksCiBidXQgdGhleSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNvcmUgZnVuY3Rpb25zLgogCiBUaGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gIEVzcGVjaWFsbHkgUHl0aG9uIGlzIG5vdCBhbGxvd2VkIGluCi1jb3JlIGJlY2F1c2Ugd2UgbmVlZCBiZXR0ZXIgUHl0aG9uIGludGVncmF0aW9uIGluIHRoZSBnaXQgV2luZG93cworY29yZSBiZWNhdXNlIHdlIG5lZWQgYmV0dGVyIFB5dGhvbiBpbnRlZ3JhdGlvbiBpbiB0aGUgR2l0IFdpbmRvd3MKIGluc3RhbGxlciBiZWZvcmUgd2UgY2FuIGJlIGNvbmZpZGVudCBwZW9wbGUgaW4gdGhhdCBlbnZpcm9ubWVudAogd29uJ3QgZXhwZXJpZW5jZSBhbiB1bmFjY2VwdGFibHkgbGFyZ2UgbG9zcyBvZiBjYXBhYmlsaXR5LgogCkBAIC01NCw3ICs1NCw3IEBACiBXaGF0IGV2ZXJ5IGV4dGVuc2lvbiBjb21tYW5kIG5lZWRzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVlvdSBtdXN0IGhhdmUgYSBtYW4gcGFnZSwgd3JpdHRlbiBpbiBhc2NpaWRvYyAodGhpcyBpcyB3aGF0IGdpdCBoZWxwCitZb3UgbXVzdCBoYXZlIGEgbWFuIHBhZ2UsIHdyaXR0ZW4gaW4gYXNjaWlkb2MgKHRoaXMgaXMgd2hhdCBHaXQgaGVscAogZm9sbG93ZWQgYnkgeW91ciBzdWJjb21tYW5kIG5hbWUgd2lsbCBkaXNwbGF5KS4gIEJlIGF3YXJlIHRoYXQgdGhlcmUgaXMKIGEgbG9jYWwgYXNjaWlkb2MgY29uZmlndXJhdGlvbiBhbmQgbWFjcm9zIHdoaWNoIHlvdSBzaG91bGQgdXNlLiAgSXQncwogb2Z0ZW4gaGVscGZ1bCB0byBzdGFydCBieSBjbG9uaW5nIGFuIGV4aXN0aW5nIHBhZ2UgYW5kIHJlcGxhY2luZyB0aGUKQEAgLTc0LDcgKzc0LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBIZXJlIGFyZSB0aGUgdGhpbmdzIHlvdSBuZWVkIHRvIGRvIHdoZW4geW91IHdhbnQgdG8gbWVyZ2UgYSBuZXcKLXN1YmNvbW1hbmQgaW50byB0aGUgZ2l0IHRyZWUuCitzdWJjb21tYW5kIGludG8gdGhlIEdpdCB0cmVlLgogCiAxLiBEb24ndCBmb3JnZXQgdG8gc2lnbiBvZmYgeW91ciBwYXRjaCEKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJhc2UtZnJvbS1pbnRlcm5hbC1icmFuY2gudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJhc2UtZnJvbS1pbnRlcm5hbC1icmFuY2gudHh0CmluZGV4IDQ2MjdlZTQuLjE5YWI2MDQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vcmViYXNlLWZyb20taW50ZXJuYWwtYnJhbmNoLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlYmFzZS1mcm9tLWludGVybmFsLWJyYW5jaC50eHQKQEAgLTQsNyArNCw3IEBACiBTdWJqZWN0OiBSZTogc2VuZGluZyBjaGFuZ2VzZXRzIGZyb20gdGhlIG1pZGRsZSBvZiBhIGdpdCB0cmVlCiBEYXRlOglTdW4sIDE0IEF1ZyAyMDA1IDE4OjM3OjM5IC0wNzAwCiBBYnN0cmFjdDogSW4gdGhpcyBhcnRpY2xlLCBKQyB0YWxrcyBhYm91dCBob3cgaGUgcmViYXNlcyB0aGUKLSBwdWJsaWMgInB1IiBicmFuY2ggdXNpbmcgdGhlIGNvcmUgR0lUIHRvb2xzIHdoZW4gaGUgdXBkYXRlcworIHB1YmxpYyAicHUiIGJyYW5jaCB1c2luZyB0aGUgY29yZSBHaXQgdG9vbHMgd2hlbiBoZSB1cGRhdGVzCiAgdGhlICJtYXN0ZXIiIGJyYW5jaCwgYW5kIGhvdyAicmViYXNlIiB3b3Jrcy4gIEFsc28gZGlzY3Vzc2VkCiAgaXMgaG93IHRoaXMgYXBwbGllcyB0byBpbmRpdmlkdWFsIGRldmVsb3BlcnMgd2hvIHNlbmRzIHBhdGNoZXMKICB1cHN0cmVhbS4KQEAgLTMxLDcgKzMxLDcgQEAKIHRoZSBraW5kIG9mIHRhc2sgU3RHSVQgaXMgZGVzaWduZWQgdG8gZG8uCiAKIEkganVzdCBoYXZlIGRvbmUgYSBzaW1wbGVyIG9uZSwgdGhpcyB0aW1lIHVzaW5nIG9ubHkgdGhlIGNvcmUKLUdJVCB0b29scy4KK0dpdCB0b29scy4KIAogSSBoYWQgYSBoYW5kZnVsIG9mIGNvbW1pdHMgdGhhdCB3ZXJlIGFoZWFkIG9mIG1hc3RlciBpbiBwdSwgYW5kIEkKIHdhbnRlZCB0byBhZGQgc29tZSBkb2N1bWVudGF0aW9uIGJ5cGFzc2luZyBteSB1c3VhbCBoYWJpdCBvZgpAQCAtOTYsNyArOTYsNyBAQAogY2FuIHJ1biAiZ2l0IHBydW5lIiB0byBnZXQgcmlkIG9mIHRob3NlIG9yaWdpbmFsIHRocmVlIGNvbW1pdHMuCiAKIFdoaWxlIEkgYW0gdGFsa2luZyBhYm91dCAiZ2l0IHJlYmFzZSIsIEkgc2hvdWxkIHRhbGsgYWJvdXQgaG93Ci10byBkbyBjaGVycnlwaWNraW5nIHVzaW5nIG9ubHkgdGhlIGNvcmUgR0lUIHRvb2xzLgordG8gZG8gY2hlcnJ5cGlja2luZyB1c2luZyBvbmx5IHRoZSBjb3JlIEdpdCB0b29scy4KIAogTGV0J3MgZ28gYmFjayB0byB0aGUgZWFybGllciBwaWN0dXJlLCB3aXRoIGRpZmZlcmVudCBsYWJlbHMuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vcmVidWlsZC1mcm9tLXVwZGF0ZS1ob29rLnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vcmVidWlsZC1mcm9tLXVwZGF0ZS1ob29rLnR4dAppbmRleCAwMGMxYjQ1Li4yNTM3OGY2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlYnVpbGQtZnJvbS11cGRhdGUtaG9vay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWJ1aWxkLWZyb20tdXBkYXRlLWhvb2sudHh0CkBAIC0zLDcgKzMsNyBAQAogRnJvbTogSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPgogRGF0ZTogRnJpLCAyNiBBdWcgMjAwNSAxODoxOToxMCAtMDcwMAogQWJzdHJhY3Q6IEluIHRoaXMgaG93LXRvIGFydGljbGUsIEpDIHRhbGtzIGFib3V0IGhvdyBoZQotIHVzZXMgdGhlIHBvc3QtdXBkYXRlIGhvb2sgdG8gYXV0b21hdGUgZ2l0IGRvY3VtZW50YXRpb24gcGFnZQorIHVzZXMgdGhlIHBvc3QtdXBkYXRlIGhvb2sgdG8gYXV0b21hdGUgR2l0IGRvY3VtZW50YXRpb24gcGFnZQogIHNob3duIGF0IGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvc2NtL2dpdC9kb2NzLy4KIENvbnRlbnQtdHlwZTogdGV4dC9hc2NpaWRvYwogCkBAIC0xNSwxMSArMTUsMTEgQEAKIGFuZCBuZWVkZWQgdG8gYmUga2VwdCB1cC10by1kYXRlLiAgVGhlIHd3dy5rZXJuZWwub3JnLyBzZXJ2ZXJzCiBhcmUgbWlycm9yZWQgYW5kIEkgd2FzIHRvbGQgdGhhdCB0aGUgb3JpZ2luIG9mIHRoZSBtaXJyb3IgaXMgb24KIHRoZSBtYWNoaW5lICRzb21lLmtlcm5lbC5vcmcsIG9uIHdoaWNoIEkgd2FzIGdpdmVuIGFuIGFjY291bnQKLXdoZW4gSSB0b29rIG92ZXIgZ2l0IG1haW50YWluZXJzaGlwIGZyb20gTGludXMuCit3aGVuIEkgdG9vayBvdmVyIEdpdCBtYWludGFpbmVyc2hpcCBmcm9tIExpbnVzLgogCiBUaGUgZGlyZWN0b3JpZXMgcmVsZXZhbnQgdG8gdGhpcyBob3ctdG8gYXJlIHRoZXNlIHR3bzoKIAotICAgIC9wdWIvc2NtL2dpdC9naXQuZ2l0LwlUaGUgcHVibGljIGdpdCByZXBvc2l0b3J5LgorICAgIC9wdWIvc2NtL2dpdC9naXQuZ2l0LwlUaGUgcHVibGljIEdpdCByZXBvc2l0b3J5LgogICAgIC9wdWIvc29mdHdhcmUvc2NtL2dpdC9kb2NzLwlUaGUgSFRNTCBkb2N1bWVudGF0aW9uIHBhZ2UuCiAKIFNvIEkgbWFkZSBhIHJlcG9zaXRvcnkgdG8gZ2VuZXJhdGUgdGhlIGRvY3VtZW50YXRpb24gdW5kZXIgbXkKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICBFT0YKIAogSW5pdGlhbGx5IEkgdXNlZCB0byBydW4gdGhpcyBieSBoYW5kIHdoZW5ldmVyIEkgcHVzaCBpbnRvIHRoZQotcHVibGljIGdpdCByZXBvc2l0b3J5LiAgVGhlbiBJIGRpZCBhIGNyb24gam9iIHRoYXQgcmFuIHR3aWNlIGEKK3B1YmxpYyBHaXQgcmVwb3NpdG9yeS4gIFRoZW4gSSBkaWQgYSBjcm9uIGpvYiB0aGF0IHJhbiB0d2ljZSBhCiBkYXkuICBUaGUgY3VycmVudCByb3VuZCB1c2VzIHRoZSBwb3N0LXVwZGF0ZSBob29rIG1lY2hhbmlzbSwKIGxpa2UgdGhpczoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZWNvdmVyLWNvcnJ1cHRlZC1ibG9iLW9iamVjdC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlY292ZXItY29ycnVwdGVkLWJsb2Itb2JqZWN0LnR4dAppbmRleCA3NDg0NzM1Li4xYjNiMTg4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlY292ZXItY29ycnVwdGVkLWJsb2Itb2JqZWN0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JlY292ZXItY29ycnVwdGVkLWJsb2Itb2JqZWN0LnR4dApAQCAtMTUsMTIgKzE1LDEyIEBACiA+IEFueSBvbmUga25vdyBob3cgY2FuIEkgdHJhY2sgdGhpcyBvYmplY3QgYW5kIHVuZGVyc3RhbmQgd2hpY2ggZmlsZSBpcyBpdAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU28gZXhhY3RseSAqYmVjYXVzZSogdGhlIFNIQTEgaGFzaCBpcyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUsIHRoZSBoYXNoCitTbyBleGFjdGx5ICpiZWNhdXNlKiB0aGUgU0hBLTEgaGFzaCBpcyBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUsIHRoZSBoYXNoCiBpdHNlbGYgZG9lc24ndCBhY3R1YWxseSB0ZWxsIHlvdSBhbnl0aGluZywgaW4gb3JkZXIgdG8gZml4IGEgY29ycnVwdAogb2JqZWN0IHlvdSBiYXNpY2FsbHkgaGF2ZSB0byBmaW5kIHRoZSAib3JpZ2luYWwgc291cmNlIiBmb3IgaXQuCiAKIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0IGlzIGFsbW9zdCBhbHdheXMgdG8gaGF2ZSBiYWNrdXBzLCBhbmQgZmluZCB0aGUKLXNhbWUgb2JqZWN0IHNvbWV3aGVyZSBlbHNlLiBCYWNrdXBzIHJlYWxseSBhcmUgYSBnb29kIGlkZWEsIGFuZCBnaXQgbWFrZXMKK3NhbWUgb2JqZWN0IHNvbWV3aGVyZSBlbHNlLiBCYWNrdXBzIHJlYWxseSBhcmUgYSBnb29kIGlkZWEsIGFuZCBHaXQgbWFrZXMKIGl0IHByZXR0eSBlYXN5IChpZiBub3RoaW5nIGVsc2UsIGp1c3QgY2xvbmUgdGhlIHJlcG9zaXRvcnkgc29tZXdoZXJlIGVsc2UsCiBhbmQgbWFrZSBzdXJlIHRoYXQgeW91IGRvICpub3QqIHVzZSBhIGhhcmQtbGlua2VkIGNsb25lLCBhbmQgcHJlZmVyYWJseQogbm90IHRoZSBzYW1lIGRpc2svbWFjaGluZSkuCkBAIC00NCw3ICs0NCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgYWx0aG91Z2ggaXQncyB1c3VhbGx5IGJlc3QgdG8gc2F2ZSBpdCB1bmRlcgotaXQncyBmdWxsIFNIQTEgbmFtZSAoeW91IGp1c3QgZHJvcHBlZCB0aGUgIjRiIiBmcm9tIHRoZSByZXN1bHQgOykuCitpdCdzIGZ1bGwgU0hBLTEgbmFtZSAoeW91IGp1c3QgZHJvcHBlZCB0aGUgIjRiIiBmcm9tIHRoZSByZXN1bHQgOykuCiAKIExldCdzIHNlZSB3aGF0IHRoYXQgdGVsbHMgdXM6CiAKQEAgLTg5LDcgKzg5LDcgQEAKIAogCWdpdCBoYXNoLW9iamVjdCAtdyBteS1tYWdpYy1maWxlCiAKLWFnYWluLCBhbmQgaWYgaXQgb3V0cHV0cyB0aGUgbWlzc2luZyBTSEExICg0Yjk0NS4uKSB5b3UncmUgbm93IGFsbCBkb25lIQorYWdhaW4sIGFuZCBpZiBpdCBvdXRwdXRzIHRoZSBtaXNzaW5nIFNIQS0xICg0Yjk0NS4uKSB5b3UncmUgbm93IGFsbCBkb25lIQogCiBCdXQgdGhhdCdzIHRoZSByZWFsbHkgbHVja3kgY2FzZSwgc28gbGV0J3MgYXNzdW1lIHRoYXQgaXQgd2FzIHNvbWUgb2xkZXIKIHZlcnNpb24gdGhhdCB3YXMgYnJva2VuLiBIb3cgZG8geW91IHRlbGwgd2hpY2ggdmVyc2lvbiBpdCB3YXM/CkBAIC0xMzQsNyArMTM0LDcgQEAKIAlnaXQgbG9nIC0tcmF3IC0tYWxsCiAKIGFuZCBqdXN0IGxvb2tlZCBmb3IgdGhlIHNoYSBvZiB0aGUgbWlzc2luZyBvYmplY3QgKDRiOTQ1OGIuLikgaW4gdGhhdAotd2hvbGUgdGhpbmcuIEl0J3MgdXAgdG8geW91IC0gZ2l0IGRvZXMgKmhhdmUqIGEgbG90IG9mIGluZm9ybWF0aW9uLCBpdCBpcword2hvbGUgdGhpbmcuIEl0J3MgdXAgdG8geW91IC0gR2l0IGRvZXMgKmhhdmUqIGEgbG90IG9mIGluZm9ybWF0aW9uLCBpdCBpcwoganVzdCBtaXNzaW5nIG9uZSBwYXJ0aWN1bGFyIGJsb2IgdmVyc2lvbi4KIAogVHJ5aW5nIHRvIHJlY3JlYXRlIHRyZWVzIGFuZCBlc3BlY2lhbGx5IGNvbW1pdHMgaXMgKm11Y2gqIGhhcmRlci4gU28geW91CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1hLWZhdWx0eS1tZXJnZS50eHQKaW5kZXggOGE2ODU0OC4uMDc1NDE4ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYS1mYXVsdHktbWVyZ2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vcmV2ZXJ0LWEtZmF1bHR5LW1lcmdlLnR4dApAQCAtMTY0LDcgKzE2NCw3IEBACiBjaGFuZ2VzIHRoYXQgeW91IGNhbiB0cnkgdG8gcGlucG9pbnQgd2hpY2ggX3BhcnRfIG9mIGl0IGNoYW5nZXMuCiAKIEJ1dCBkb2VzIGl0IGFsbCB3b3JrPyBTdXJlIGl0IGRvZXMuIFlvdSBjYW4gcmV2ZXJ0IGEgbWVyZ2UsIGFuZCBmcm9tIGEKLXB1cmVseSB0ZWNobmljYWwgYW5nbGUsIGdpdCBkaWQgaXQgdmVyeSBuYXR1cmFsbHkgYW5kIGhhZCBubyByZWFsCitwdXJlbHkgdGVjaG5pY2FsIGFuZ2xlLCBHaXQgZGlkIGl0IHZlcnkgbmF0dXJhbGx5IGFuZCBoYWQgbm8gcmVhbAogdHJvdWJsZXMuIEl0IGp1c3QgY29uc2lkZXJlZCBpdCBhIGNoYW5nZSBmcm9tICJzdGF0ZSBiZWZvcmUgbWVyZ2UiIHRvCiAic3RhdGUgYWZ0ZXIgbWVyZ2UiLCBhbmQgdGhhdCB3YXMgaXQuIE5vdGhpbmcgY29tcGxpY2F0ZWQsIG5vdGhpbmcgb2RkLAogbm90aGluZyByZWFsbHkgZGFuZ2Vyb3VzLiBHaXQgd2lsbCBkbyBpdCB3aXRob3V0IGV2ZW4gdGhpbmtpbmcgYWJvdXQgaXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vcmV2ZXJ0LWJyYW5jaC1yZWJhc2UudHh0CmluZGV4IGE1OWNlZDguLjg0ZGQ4MzkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vcmV2ZXJ0LWJyYW5jaC1yZWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vcmV2ZXJ0LWJyYW5jaC1yZWJhc2UudHh0CkBAIC0xMiwxMCArMTIsMTAgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIE9uZSBvZiB0aGUgY2hhbmdlcyBJIHB1bGxlZCBpbnRvIHRoZSAnbWFzdGVyJyBicmFuY2ggdHVybnMgb3V0IHRvCi1icmVhayBidWlsZGluZyBHSVQgd2l0aCBHQ0MgMi45NS4gIFdoaWxlIHRoZXkgd2VyZSB3ZWxsIGludGVudGlvbmVkCiticmVhayBidWlsZGluZyBHaXQgd2l0aCBHQ0MgMi45NS4gIFdoaWxlIHRoZXkgd2VyZSB3ZWxsIGludGVudGlvbmVkCiBwb3J0YWJpbGl0eSBmaXhlcywga2VlcGluZyB0aGluZ3Mgd29ya2luZyB3aXRoIGdjYy0yLjk1IHdhcyBhbHNvCiBpbXBvcnRhbnQuICBIZXJlIGlzIHdoYXQgSSBkaWQgdG8gcmV2ZXJ0IHRoZSBjaGFuZ2UgaW4gdGhlICdtYXN0ZXInCi1icmFuY2ggYW5kIHRvIGFkanVzdCB0aGUgJ3B1JyBicmFuY2gsIHVzaW5nIGNvcmUgR0lUIHRvb2xzIGFuZAorYnJhbmNoIGFuZCB0byBhZGp1c3QgdGhlICdwdScgYnJhbmNoLCB1c2luZyBjb3JlIEdpdCB0b29scyBhbmQKIGJhcmVib25lIFBvcmNlbGFpbi4KIAogRmlyc3QsIHByZXBhcmUgYSB0aHJvdy1hd2F5IGJyYW5jaCBpbiBjYXNlIEkgc2NyZXcgdGhpbmdzIHVwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9zZXR1cC1naXQtc2VydmVyLW92ZXItaHR0cC50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dAppbmRleCBhNjk1ZjAxLi43ZjQ5NDNlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3NldHVwLWdpdC1zZXJ2ZXItb3Zlci1odHRwLnR4dApAQCAtMSw5ICsxLDkgQEAKIEZyb206IFJ1dGdlciBOaWpsdW5zaW5nIDxydXRnZXJAbm9zcGFtLmNvbT4KLVN1YmplY3Q6IFNldHRpbmcgdXAgYSBnaXQgcmVwb3NpdG9yeSB3aGljaCBjYW4gYmUgcHVzaGVkIGludG8gYW5kIHB1bGxlZCBmcm9tIG92ZXIgSFRUUChTKS4KK1N1YmplY3Q6IFNldHRpbmcgdXAgYSBHaXQgcmVwb3NpdG9yeSB3aGljaCBjYW4gYmUgcHVzaGVkIGludG8gYW5kIHB1bGxlZCBmcm9tIG92ZXIgSFRUUChTKS4KIERhdGU6IFRodSwgMTAgQXVnIDIwMDYgMjI6MDA6MjYgKzAyMDAKIENvbnRlbnQtdHlwZTogdGV4dC9hc2NpaWRvYwogCi1Ib3cgdG8gc2V0dXAgZ2l0IHNlcnZlciBvdmVyIGh0dHAKK0hvdyB0byBzZXR1cCBHaXQgc2VydmVyIG92ZXIgaHR0cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFNpbmNlIEFwYWNoZSBpcyBvbmUgb2YgdGhvc2UgcGFja2FnZXMgcGVvcGxlIGxpa2UgdG8gY29tcGlsZQpAQCAtNDQsMjAgKzQ0LDIwIEBACiAKIC0gaGF2ZSBwZXJtaXNzaW9ucyB0byBjaG93biBhIGRpcmVjdG9yeQogCi0tIGhhdmUgZ2l0IGluc3RhbGxlZCBvbiB0aGUgY2xpZW50LCBhbmQKKy0gaGF2ZSBHaXQgaW5zdGFsbGVkIG9uIHRoZSBjbGllbnQsIGFuZAogCi0tIGVpdGhlciBoYXZlIGdpdCBpbnN0YWxsZWQgb24gdGhlIHNlcnZlciBvciBoYXZlIGEgd2ViZGF2IGNsaWVudCBvbgorLSBlaXRoZXIgaGF2ZSBHaXQgaW5zdGFsbGVkIG9uIHRoZSBzZXJ2ZXIgb3IgaGF2ZSBhIHdlYmRhdiBjbGllbnQgb24KICAgdGhlIGNsaWVudC4KIAogSW4gZWZmZWN0LCB0aGlzIG1lYW5zIHlvdSdyZSBnb2luZyB0byBiZSByb290LCBvciB0aGF0IHlvdSdyZSB1c2luZyBhCiBwcmVjb25maWd1cmVkIFdlYkRBViBzZXJ2ZXIuCiAKIAotU3RlcCAxOiBzZXR1cCBhIGJhcmUgR0lUIHJlcG9zaXRvcnkKK1N0ZXAgMTogc2V0dXAgYSBiYXJlIEdpdCByZXBvc2l0b3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BdCB0aGUgdGltZSBvZiB3cml0aW5nLCBnaXQtaHR0cC1wdXNoIGNhbm5vdCByZW1vdGVseSBjcmVhdGUgYSBHSVQKLXJlcG9zaXRvcnkuIFNvIHdlIGhhdmUgdG8gZG8gdGhhdCBhdCB0aGUgc2VydmVyIHNpZGUgd2l0aCBnaXQuIEFub3RoZXIKK0F0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIGdpdC1odHRwLXB1c2ggY2Fubm90IHJlbW90ZWx5IGNyZWF0ZSBhIEdpdAorcmVwb3NpdG9yeS4gU28gd2UgaGF2ZSB0byBkbyB0aGF0IGF0IHRoZSBzZXJ2ZXIgc2lkZSB3aXRoIEdpdC4gQW5vdGhlcgogb3B0aW9uIGlzIHRvIGdlbmVyYXRlIGFuIGVtcHR5IGJhcmUgcmVwb3NpdG9yeSBhdCB0aGUgY2xpZW50IGFuZCBjb3B5CiBpdCB0byB0aGUgc2VydmVyIHdpdGggYSBXZWJEQVYgY2xpZW50ICh3aGljaCBpcyB0aGUgb25seSBvcHRpb24gaWYgR2l0CiBpcyBub3QgaW5zdGFsbGVkIG9uIHRoZSBzZXJ2ZXIpLgpAQCAtMTg5LDcgKzE4OSw3IEBACiBTdGVwIDM6IHNldHVwIHRoZSBjbGllbnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBIVFRQIHN1cHBvcnQsIGkuZS4geW91ciBnaXQgd2FzIGJ1aWx0IHdpdGgKK01ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIEhUVFAgc3VwcG9ydCwgaS5lLiB5b3VyIEdpdCB3YXMgYnVpbHQgd2l0aAogbGliY3VybCAodmVyc2lvbiBtb3JlIHJlY2VudCB0aGFuIDcuMTApLiBUaGUgY29tbWFuZCAnZ2l0IGh0dHAtcHVzaCcgd2l0aAogbm8gYXJndW1lbnQgc2hvdWxkIGRpc3BsYXkgYSB1c2FnZSBtZXNzYWdlLgogCkBAIC0yNjgsNyArMjY4LDcgQEAKIAogICBPbiBEZWJpYW46IFJlYWQgL3Zhci9sb2cvYXBhY2hlMi9lcnJvci5sb2cgaW5zdGVhZC4KIAotSWYgeW91IGFjY2VzcyBIVFRQUyBsb2NhdGlvbnMsIGdpdCBtYXkgZmFpbCB2ZXJpZnlpbmcgdGhlIFNTTAorSWYgeW91IGFjY2VzcyBIVFRQUyBsb2NhdGlvbnMsIEdpdCBtYXkgZmFpbCB2ZXJpZnlpbmcgdGhlIFNTTAogY2VydGlmaWNhdGUgKHRoaXMgaXMgcmV0dXJuIGNvZGUgNjApLiBTZXR0aW5nIGh0dHAuc3NsVmVyaWZ5PWZhbHNlIGNhbgogaGVscCBkaWFnbm9zaW5nIHRoZSBwcm9ibGVtLCBidXQgcmVtb3ZlcyBzZWN1cml0eSBjaGVja3MuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaG93dG8vdXNlLWdpdC1kYWVtb24udHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by91c2UtZ2l0LWRhZW1vbi50eHQKaW5kZXggMjNjZGYzNS4uN2FmMmU1MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ob3d0by91c2UtZ2l0LWRhZW1vbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ob3d0by91c2UtZ2l0LWRhZW1vbi50eHQKQEAgLTQsNyArNCw3IEBACiA9PT09PT09PT09PT09PT09PT09PT0KIAogR2l0IGNhbiBiZSBydW4gaW4gaW5ldGQgbW9kZSBhbmQgaW4gc3RhbmQgYWxvbmUgbW9kZS4gQnV0IGFsbCB5b3Ugd2FudCBpcwotbGV0IGEgY293b3JrZXIgcHVsbCBmcm9tIHlvdSwgYW5kIHRoZXJlZm9yZSBuZWVkIHRvIHNldCB1cCBhIGdpdCBzZXJ2ZXIKK2xldCBhIGNvd29ya2VyIHB1bGwgZnJvbSB5b3UsIGFuZCB0aGVyZWZvcmUgbmVlZCB0byBzZXQgdXAgYSBHaXQgc2VydmVyCiByZWFsIHF1aWNrLCByaWdodD8KIAogTm90ZSB0aGF0IGdpdC1kYWVtb24gaXMgbm90IHJlYWxseSBjaGF0dHkgYXQgdGhlIG1vbWVudCwgZXNwZWNpYWxseSB3aGVuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3VzaW5nLXNpZ25lZC10YWctaW4tcHVsbC1yZXF1ZXN0LnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vdXNpbmctc2lnbmVkLXRhZy1pbi1wdWxsLXJlcXVlc3QudHh0CmluZGV4IDAwZjY5M2IuLmJiZjA0MGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vdXNpbmctc2lnbmVkLXRhZy1pbi1wdWxsLXJlcXVlc3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vdXNpbmctc2lnbmVkLXRhZy1pbi1wdWxsLXJlcXVlc3QudHh0CkBAIC0yMyw3ICsyMyw3IEBACiAKICAgIEZyb2JveiAzLjIgKDIwMTEtMDktMzAgMTQ6MjA6NTcgLTA3MDApCiAKLSBhcmUgYXZhaWxhYmxlIGluIHRoZSBnaXQgcmVwb3NpdG9yeSBhdDoKKyBhcmUgYXZhaWxhYmxlIGluIHRoZSBHaXQgcmVwb3NpdG9yeSBhdDoKIAogICAgZXhhbXBsZS5jb206L2dpdC9mcm9ib3ouZ2l0IGZvci14eXp6eQogLS0tLS0tLS0tLS0tCkBAIC0xMDcsNyArMTA3LDcgQEAKIAogICAgRnJvYm96IDMuMiAoMjAxMS0wOS0zMCAxNDoyMDo1NyAtMDcwMCkKIAotIGFyZSBhdmFpbGFibGUgaW4gdGhlIGdpdCByZXBvc2l0b3J5IGF0OgorIGFyZSBhdmFpbGFibGUgaW4gdGhlIEdpdCByZXBvc2l0b3J5IGF0OgogCiAgICBleGFtcGxlLmNvbTovZ2l0L2Zyb2Jvei5naXQgdGFncy9mcm90ei1mb3IteHl6enkKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMThuLnR4dCBiL0RvY3VtZW50YXRpb24vaTE4bi50eHQKaW5kZXggNjI1ZDMxNS4uZTlhMWQ1ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMThuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2kxOG4udHh0CkBAIC0xLDkgKzEsOSBAQAotQXQgdGhlIGNvcmUgbGV2ZWwsIGdpdCBpcyBjaGFyYWN0ZXIgZW5jb2RpbmcgYWdub3N0aWMuCitBdCB0aGUgY29yZSBsZXZlbCwgR2l0IGlzIGNoYXJhY3RlciBlbmNvZGluZyBhZ25vc3RpYy4KIAogIC0gVGhlIHBhdGhuYW1lcyByZWNvcmRlZCBpbiB0aGUgaW5kZXggYW5kIGluIHRoZSB0cmVlIG9iamVjdHMKICAgIGFyZSB0cmVhdGVkIGFzIHVuaW50ZXJwcmV0ZWQgc2VxdWVuY2VzIG9mIG5vbi1OVUwgYnl0ZXMuCiAgICBXaGF0IHJlYWRkaXIoMikgcmV0dXJucyBhcmUgd2hhdCBhcmUgcmVjb3JkZWQgYW5kIGNvbXBhcmVkCi0gICB3aXRoIHRoZSBkYXRhIGdpdCBrZWVwcyB0cmFjayBvZiwgd2hpY2ggaW4gdHVybiBhcmUgZXhwZWN0ZWQKKyAgIHdpdGggdGhlIGRhdGEgR2l0IGtlZXBzIHRyYWNrIG9mLCB3aGljaCBpbiB0dXJuIGFyZSBleHBlY3RlZAogICAgdG8gYmUgd2hhdCBsc3RhdCgyKSBhbmQgY3JlYXQoMikgYWNjZXB0cy4gIFRoZXJlIGlzIG5vIHN1Y2gKICAgIHRoaW5nIGFzIHBhdGhuYW1lIGVuY29kaW5nIHRyYW5zbGF0aW9uLgogCkBAIC0xNSw5ICsxNSw5IEBACiAgICBieXRlcy4KIAogQWx0aG91Z2ggd2UgZW5jb3VyYWdlIHRoYXQgdGhlIGNvbW1pdCBsb2cgbWVzc2FnZXMgYXJlIGVuY29kZWQKLWluIFVURi04LCBib3RoIHRoZSBjb3JlIGFuZCBnaXQgUG9yY2VsYWluIGFyZSBkZXNpZ25lZCBub3QgdG8KK2luIFVURi04LCBib3RoIHRoZSBjb3JlIGFuZCBHaXQgUG9yY2VsYWluIGFyZSBkZXNpZ25lZCBub3QgdG8KIGZvcmNlIFVURi04IG9uIHByb2plY3RzLiAgSWYgYWxsIHBhcnRpY2lwYW50cyBvZiBhIHBhcnRpY3VsYXIKLXByb2plY3QgZmluZCBpdCBtb3JlIGNvbnZlbmllbnQgdG8gdXNlIGxlZ2FjeSBlbmNvZGluZ3MsIGdpdAorcHJvamVjdCBmaW5kIGl0IG1vcmUgY29udmVuaWVudCB0byB1c2UgbGVnYWN5IGVuY29kaW5ncywgR2l0CiBkb2VzIG5vdCBmb3JiaWQgaXQuICBIb3dldmVyLCB0aGVyZSBhcmUgYSBmZXcgdGhpbmdzIHRvIGtlZXAgaW4KIG1pbmQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGluZS1yYW5nZS1mb3JtYXQudHh0IGIvRG9jdW1lbnRhdGlvbi9saW5lLXJhbmdlLWZvcm1hdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U3Y2U3MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbGluZS1yYW5nZS1mb3JtYXQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKy0gbnVtYmVyCisrCitJZiA8c3RhcnQ+IG9yIDxlbmQ+IGlzIGEgbnVtYmVyLCBpdCBzcGVjaWZpZXMgYW4KK2Fic29sdXRlIGxpbmUgbnVtYmVyIChsaW5lcyBjb3VudCBmcm9tIDEpLgorKworCistIC9yZWdleC8KKysKK1RoaXMgZm9ybSB3aWxsIHVzZSB0aGUgZmlyc3QgbGluZSBtYXRjaGluZyB0aGUgZ2l2ZW4KK1BPU0lYIHJlZ2V4LiAgSWYgPGVuZD4gaXMgYSByZWdleCwgaXQgd2lsbCBzZWFyY2gKK3N0YXJ0aW5nIGF0IHRoZSBsaW5lIGdpdmVuIGJ5IDxzdGFydD4uCisrCisKKy0gK29mZnNldCBvciAtb2Zmc2V0CisrCitUaGlzIGlzIG9ubHkgdmFsaWQgZm9yIDxlbmQ+IGFuZCB3aWxsIHNwZWNpZnkgYSBudW1iZXIKK29mIGxpbmVzIGJlZm9yZSBvciBhZnRlciB0aGUgbGluZSBnaXZlbiBieSA8c3RhcnQ+LgorKworCistIDpyZWdleAorKworSWYgdGhlIG9wdGlvbidzIGFyZ3VtZW50IGlzIG9mIHRoZSBmb3JtIDpyZWdleCwgaXQgZGVub3RlcyB0aGUgcmFuZ2UKK2Zyb20gdGhlIGZpcnN0IGZ1bmNuYW1lIGxpbmUgdGhhdCBtYXRjaGVzIDxyZWdleD4sIHVwIHRvIHRoZSBuZXh0CitmdW5jbmFtZSBsaW5lLgorKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tYWlsbWFwLnR4dCBiL0RvY3VtZW50YXRpb24vbWFpbG1hcC50eHQKaW5kZXggZGQ4OWZjYS4uNGE4YzI3NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tYWlsbWFwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21haWxtYXAudHh0CkBAIC0xLDUgKzEsNiBAQAogSWYgdGhlIGZpbGUgYC5tYWlsbWFwYCBleGlzdHMgYXQgdGhlIHRvcGxldmVsIG9mIHRoZSByZXBvc2l0b3J5LCBvciBhdAotdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgdGhlIG1haWxtYXAuZmlsZSBjb25maWd1cmF0aW9uIG9wdGlvbiwgaXQKK3RoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IHRoZSBtYWlsbWFwLmZpbGUgb3IgbWFpbG1hcC5ibG9iCitjb25maWd1cmF0aW9uIG9wdGlvbnMsIGl0CiBpcyB1c2VkIHRvIG1hcCBhdXRob3IgYW5kIGNvbW1pdHRlciBuYW1lcyBhbmQgZW1haWwgYWRkcmVzc2VzIHRvCiBjYW5vbmljYWwgcmVhbCBuYW1lcyBhbmQgZW1haWwgYWRkcmVzc2VzLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lcmdlLWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL21lcmdlLWNvbmZpZy50eHQKaW5kZXggOWJiNDk1Ni4uZDc4ZDZkOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1jb25maWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbWVyZ2UtY29uZmlnLnR4dApAQCAtMTcsMTAgKzE3LDEwIEBACiAJdGhlc2UgdHJhY2tpbmcgYnJhbmNoZXMgYXJlIG1lcmdlZC4KIAogbWVyZ2UuZmY6OgotCUJ5IGRlZmF1bHQsIGdpdCBkb2VzIG5vdCBjcmVhdGUgYW4gZXh0cmEgbWVyZ2UgY29tbWl0IHdoZW4gbWVyZ2luZworCUJ5IGRlZmF1bHQsIEdpdCBkb2VzIG5vdCBjcmVhdGUgYW4gZXh0cmEgbWVyZ2UgY29tbWl0IHdoZW4gbWVyZ2luZwogCWEgY29tbWl0IHRoYXQgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBjdXJyZW50IGNvbW1pdC4gSW5zdGVhZCwgdGhlCiAJdGlwIG9mIHRoZSBjdXJyZW50IGJyYW5jaCBpcyBmYXN0LWZvcndhcmRlZC4gV2hlbiBzZXQgdG8gYGZhbHNlYCwKLQl0aGlzIHZhcmlhYmxlIHRlbGxzIGdpdCB0byBjcmVhdGUgYW4gZXh0cmEgbWVyZ2UgY29tbWl0IGluIHN1Y2gKKwl0aGlzIHZhcmlhYmxlIHRlbGxzIEdpdCB0byBjcmVhdGUgYW4gZXh0cmEgbWVyZ2UgY29tbWl0IGluIHN1Y2gKIAlhIGNhc2UgKGVxdWl2YWxlbnQgdG8gZ2l2aW5nIHRoZSBgLS1uby1mZmAgb3B0aW9uIGZyb20gdGhlIGNvbW1hbmQKIAlsaW5lKS4gV2hlbiBzZXQgdG8gYG9ubHlgLCBvbmx5IHN1Y2ggZmFzdC1mb3J3YXJkIG1lcmdlcyBhcmUKIAlhbGxvd2VkIChlcXVpdmFsZW50IHRvIGdpdmluZyB0aGUgYC0tZmYtb25seWAgb3B0aW9uIGZyb20gdGhlCkBAIC0zOCwxMCArMzgsMTAgQEAKIAlkaWZmLnJlbmFtZUxpbWl0LgogCiBtZXJnZS5yZW5vcm1hbGl6ZTo6Ci0JVGVsbCBnaXQgdGhhdCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgZmlsZXMgaW4gdGhlCisJVGVsbCBHaXQgdGhhdCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgZmlsZXMgaW4gdGhlCiAJcmVwb3NpdG9yeSBoYXMgY2hhbmdlZCBvdmVyIHRpbWUgKGUuZy4gZWFybGllciBjb21taXRzIHJlY29yZAogCXRleHQgZmlsZXMgd2l0aCBDUkxGIGxpbmUgZW5kaW5ncywgYnV0IHJlY2VudCBvbmVzIHVzZSBMRiBsaW5lCi0JZW5kaW5ncykuICBJbiBzdWNoIGEgcmVwb3NpdG9yeSwgZ2l0IGNhbiBjb252ZXJ0IHRoZSBkYXRhCisJZW5kaW5ncykuICBJbiBzdWNoIGEgcmVwb3NpdG9yeSwgR2l0IGNhbiBjb252ZXJ0IHRoZSBkYXRhCiAJcmVjb3JkZWQgaW4gY29tbWl0cyB0byBhIGNhbm9uaWNhbCBmb3JtIGJlZm9yZSBwZXJmb3JtaW5nIGEKIAltZXJnZSB0byByZWR1Y2UgdW5uZWNlc3NhcnkgY29uZmxpY3RzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sCiAJc2VlIHNlY3Rpb24gIk1lcmdpbmcgYnJhbmNoZXMgd2l0aCBkaWZmZXJpbmcgY2hlY2tpbi9jaGVja291dApAQCAtNTIsMTIgKzUyLDEyIEBACiAJYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UuICBUcnVlIGJ5IGRlZmF1bHQuCiAKIG1lcmdlLnRvb2w6OgotCUNvbnRyb2xzIHdoaWNoIG1lcmdlIHJlc29sdXRpb24gcHJvZ3JhbSBpcyB1c2VkIGJ5Ci0JbGlua2dpdDpnaXQtbWVyZ2V0b29sWzFdLiAgVmFsaWQgYnVpbHQtaW4gdmFsdWVzIGFyZTogImFyYXhpcyIsCi0JImJjMyIsICJkaWZmdXNlIiwgImVjbWVyZ2UiLCAiZW1lcmdlIiwgImd2aW1kaWZmIiwgImtkaWZmMyIsICJtZWxkIiwKLQkib3BlbmRpZmYiLCAicDRtZXJnZSIsICJ0a2RpZmYiLCAidG9ydG9pc2VtZXJnZSIsICJ2aW1kaWZmIgotCWFuZCAieHhkaWZmIi4gIEFueSBvdGhlciB2YWx1ZSBpcyB0cmVhdGVkIGlzIGN1c3RvbSBtZXJnZSB0b29sCi0JYW5kIHRoZXJlIG11c3QgYmUgYSBjb3JyZXNwb25kaW5nIG1lcmdldG9vbC48dG9vbD4uY21kIG9wdGlvbi4KKwlDb250cm9scyB3aGljaCBtZXJnZSB0b29sIGlzIHVzZWQgYnkgbGlua2dpdDpnaXQtbWVyZ2V0b29sWzFdLgorCVRoZSBsaXN0IGJlbG93IHNob3dzIHRoZSB2YWxpZCBidWlsdC1pbiB2YWx1ZXMuCisJQW55IG90aGVyIHZhbHVlIGlzIHRyZWF0ZWQgYXMgYSBjdXN0b20gbWVyZ2UgdG9vbCBhbmQgcmVxdWlyZXMKKwl0aGF0IGEgY29ycmVzcG9uZGluZyBtZXJnZXRvb2wuPHRvb2w+LmNtZCB2YXJpYWJsZSBpcyBkZWZpbmVkLgorCitpbmNsdWRlOjptZXJnZXRvb2xzLW1lcmdlLnR4dFtdCiAKIG1lcmdlLnZlcmJvc2l0eTo6CiAJQ29udHJvbHMgdGhlIGFtb3VudCBvZiBvdXRwdXQgc2hvd24gYnkgdGhlIHJlY3Vyc2l2ZSBtZXJnZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vbWVyZ2Utb3B0aW9ucy50eHQKaW5kZXggMzRhODQ0NS4uYWZiYThkNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0CkBAIC04LDEyICs4LDEzIEBACiBpbnNwZWN0IGFuZCBmdXJ0aGVyIHR3ZWFrIHRoZSBtZXJnZSByZXN1bHQgYmVmb3JlIGNvbW1pdHRpbmcuCiAKIC0tZWRpdDo6CistZTo6CiAtLW5vLWVkaXQ6OgogCUludm9rZSBhbiBlZGl0b3IgYmVmb3JlIGNvbW1pdHRpbmcgc3VjY2Vzc2Z1bCBtZWNoYW5pY2FsIG1lcmdlIHRvCiAJZnVydGhlciBlZGl0IHRoZSBhdXRvLWdlbmVyYXRlZCBtZXJnZSBtZXNzYWdlLCBzbyB0aGF0IHRoZSB1c2VyCiAJY2FuIGV4cGxhaW4gYW5kIGp1c3RpZnkgdGhlIG1lcmdlLiBUaGUgYC0tbm8tZWRpdGAgb3B0aW9uIGNhbiBiZQogCXVzZWQgdG8gYWNjZXB0IHRoZSBhdXRvLWdlbmVyYXRlZCBtZXNzYWdlICh0aGlzIGlzIGdlbmVyYWxseQotCWRpc2NvdXJhZ2VkKS4gVGhlIGAtLWVkaXRgIG9wdGlvbiBpcyBzdGlsbCB1c2VmdWwgaWYgeW91IGFyZQorCWRpc2NvdXJhZ2VkKS4gVGhlIGAtLWVkaXRgIChvciBgLWVgKSBvcHRpb24gaXMgc3RpbGwgdXNlZnVsIGlmIHlvdSBhcmUKIAlnaXZpbmcgYSBkcmFmdCBtZXNzYWdlIHdpdGggdGhlIGAtbWAgb3B0aW9uIGZyb20gdGhlIGNvbW1hbmQgbGluZQogCWFuZCB3YW50IHRvIGVkaXQgaXQgaW4gdGhlIGVkaXRvci4KICsKQEAgLTg0LDYgKzg1LDExIEBACiAJUGFzcyBtZXJnZSBzdHJhdGVneSBzcGVjaWZpYyBvcHRpb24gdGhyb3VnaCB0byB0aGUgbWVyZ2UKIAlzdHJhdGVneS4KIAorLS12ZXJpZnktc2lnbmF0dXJlczo6CistLW5vLXZlcmlmeS1zaWduYXR1cmVzOjoKKwlWZXJpZnkgdGhhdCB0aGUgY29tbWl0cyBiZWluZyBtZXJnZWQgaGF2ZSBnb29kIGFuZCB0cnVzdGVkIEdQRyBzaWduYXR1cmVzCisJYW5kIGFib3J0IHRoZSBtZXJnZSBpbiBjYXNlIHRoZXkgZG8gbm90LgorCiAtLXN1bW1hcnk6OgogLS1uby1zdW1tYXJ5OjoKIAlTeW5vbnltcyB0byAtLXN0YXQgYW5kIC0tbm8tc3RhdDsgdGhlc2UgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVyZ2Utc3RyYXRlZ2llcy50eHQgYi9Eb2N1bWVudGF0aW9uL21lcmdlLXN0cmF0ZWdpZXMudHh0CmluZGV4IDY2ZGI4MDIuLjQ5YTlhN2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWVyZ2Utc3RyYXRlZ2llcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1zdHJhdGVnaWVzLnR4dApAQCAtNDgsNiArNDgsMTIgQEAKIAl0aGlzIHdoZW4gdGhlIGJyYW5jaGVzIHRvIGJlIG1lcmdlZCBoYXZlIGRpdmVyZ2VkIHdpbGRseS4KIAlTZWUgYWxzbyBsaW5rZ2l0OmdpdC1kaWZmWzFdIGAtLXBhdGllbmNlYC4KIAorZGlmZi1hbGdvcml0aG09W3BhdGllbmNlfG1pbmltYWx8aGlzdG9ncmFtfG15ZXJzXTs7CisJVGVsbHMgJ21lcmdlLXJlY3Vyc2l2ZScgdG8gdXNlIGEgZGlmZmVyZW50IGRpZmYgYWxnb3JpdGhtLCB3aGljaAorCWNhbiBoZWxwIGF2b2lkIG1pc21lcmdlcyB0aGF0IG9jY3VyIGR1ZSB0byB1bmltcG9ydGFudCBtYXRjaGluZworCWxpbmVzIChzdWNoIGFzIGJyYWNlcyBmcm9tIGRpc3RpbmN0IGZ1bmN0aW9ucykuICBTZWUgYWxzbworCWxpbmtnaXQ6Z2l0LWRpZmZbMV0gYC0tZGlmZi1hbGdvcml0aG1gLgorCiBpZ25vcmUtc3BhY2UtY2hhbmdlOzsKIGlnbm9yZS1hbGwtc3BhY2U7OwogaWdub3JlLXNwYWNlLWF0LWVvbDs7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ByZXR0eS1mb3JtYXRzLnR4dCBiL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0CmluZGV4IGQ5ZWRkZWQuLjFkMTc0ZmQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0CkBAIC03NSw3ICs3NSw3IEBACiAqICdyYXcnCiArCiBUaGUgJ3JhdycgZm9ybWF0IHNob3dzIHRoZSBlbnRpcmUgY29tbWl0IGV4YWN0bHkgYXMKLXN0b3JlZCBpbiB0aGUgY29tbWl0IG9iamVjdC4gIE5vdGFibHksIHRoZSBTSEExcyBhcmUKK3N0b3JlZCBpbiB0aGUgY29tbWl0IG9iamVjdC4gIE5vdGFibHksIHRoZSBTSEEtMXMgYXJlCiBkaXNwbGF5ZWQgaW4gZnVsbCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIC0tYWJicmV2IG9yCiAtLW5vLWFiYnJldiBhcmUgdXNlZCwgYW5kICdwYXJlbnRzJyBpbmZvcm1hdGlvbiBzaG93IHRoZQogdHJ1ZSBwYXJlbnQgY29tbWl0cywgd2l0aG91dCB0YWtpbmcgZ3JhZnRzIG5vciBoaXN0b3J5CkBAIC0xMDYsMTggKzEwNiwyMiBAQAogLSAnJVAnOiBwYXJlbnQgaGFzaGVzCiAtICclcCc6IGFiYnJldmlhdGVkIHBhcmVudCBoYXNoZXMKIC0gJyVhbic6IGF1dGhvciBuYW1lCi0tICclYU4nOiBhdXRob3IgbmFtZSAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQorLSAnJWFOJzogYXV0aG9yIG5hbWUgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXQorICBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKIC0gJyVhZSc6IGF1dGhvciBlbWFpbAotLSAnJWFFJzogYXV0aG9yIGVtYWlsIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCistICclYUUnOiBhdXRob3IgZW1haWwgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZQorICBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKIC0gJyVhZCc6IGF1dGhvciBkYXRlIChmb3JtYXQgcmVzcGVjdHMgLS1kYXRlPSBvcHRpb24pCiAtICclYUQnOiBhdXRob3IgZGF0ZSwgUkZDMjgyMiBzdHlsZQogLSAnJWFyJzogYXV0aG9yIGRhdGUsIHJlbGF0aXZlCiAtICclYXQnOiBhdXRob3IgZGF0ZSwgVU5JWCB0aW1lc3RhbXAKIC0gJyVhaSc6IGF1dGhvciBkYXRlLCBJU08gODYwMSBmb3JtYXQKIC0gJyVjbic6IGNvbW1pdHRlciBuYW1lCi0tICclY04nOiBjb21taXR0ZXIgbmFtZSAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQorLSAnJWNOJzogY29tbWl0dGVyIG5hbWUgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZQorICBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKIC0gJyVjZSc6IGNvbW1pdHRlciBlbWFpbAotLSAnJWNFJzogY29tbWl0dGVyIGVtYWlsIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCistICclY0UnOiBjb21taXR0ZXIgZW1haWwgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZQorICBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKIC0gJyVjZCc6IGNvbW1pdHRlciBkYXRlCiAtICclY0QnOiBjb21taXR0ZXIgZGF0ZSwgUkZDMjgyMiBzdHlsZQogLSAnJWNyJzogY29tbWl0dGVyIGRhdGUsIHJlbGF0aXZlCkBAIC0xMzEsMjYgKzEzNSw0OSBAQAogLSAnJUInOiByYXcgYm9keSAodW53cmFwcGVkIHN1YmplY3QgYW5kIGJvZHkpCiAtICclTic6IGNvbW1pdCBub3RlcwogLSAnJUdHJzogcmF3IHZlcmlmaWNhdGlvbiBtZXNzYWdlIGZyb20gR1BHIGZvciBhIHNpZ25lZCBjb21taXQKLS0gJyVHPyc6IHNob3cgZWl0aGVyICJHIiBmb3IgR29vZCBvciAiQiIgZm9yIEJhZCBmb3IgYSBzaWduZWQgY29tbWl0CistICclRz8nOiBzaG93ICJHIiBmb3IgYSBHb29kIHNpZ25hdHVyZSwgIkIiIGZvciBhIEJhZCBzaWduYXR1cmUsICJVIiBmb3IgYSBnb29kLAorICB1bnRydXN0ZWQgc2lnbmF0dXJlIGFuZCAiTiIgZm9yIG5vIHNpZ25hdHVyZQogLSAnJUdTJzogc2hvdyB0aGUgbmFtZSBvZiB0aGUgc2lnbmVyIGZvciBhIHNpZ25lZCBjb21taXQKKy0gJyVHSyc6IHNob3cgdGhlIGtleSB1c2VkIHRvIHNpZ24gYSBzaWduZWQgY29tbWl0CiAtICclZ0QnOiByZWZsb2cgc2VsZWN0b3IsIGUuZy4sIGByZWZzL3N0YXNoQHsxfWAKIC0gJyVnZCc6IHNob3J0ZW5lZCByZWZsb2cgc2VsZWN0b3IsIGUuZy4sIGBzdGFzaEB7MX1gCiAtICclZ24nOiByZWZsb2cgaWRlbnRpdHkgbmFtZQotLSAnJWdOJzogcmVmbG9nIGlkZW50aXR5IG5hbWUgKHJlc3BlY3RpbmcgLm1haWxtYXAsIHNlZSBsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKKy0gJyVnTic6IHJlZmxvZyBpZGVudGl0eSBuYW1lIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUKKyAgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCiAtICclZ2UnOiByZWZsb2cgaWRlbnRpdHkgZW1haWwKLS0gJyVnRSc6IHJlZmxvZyBpZGVudGl0eSBlbWFpbCAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdIG9yIGxpbmtnaXQ6Z2l0LWJsYW1lWzFdKQorLSAnJWdFJzogcmVmbG9nIGlkZW50aXR5IGVtYWlsIChyZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUKKyAgbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCiAtICclZ3MnOiByZWZsb2cgc3ViamVjdAogLSAnJUNyZWQnOiBzd2l0Y2ggY29sb3IgdG8gcmVkCiAtICclQ2dyZWVuJzogc3dpdGNoIGNvbG9yIHRvIGdyZWVuCiAtICclQ2JsdWUnOiBzd2l0Y2ggY29sb3IgdG8gYmx1ZQogLSAnJUNyZXNldCc6IHJlc2V0IGNvbG9yCi0tICclQyguLi4pJzogY29sb3Igc3BlY2lmaWNhdGlvbiwgYXMgZGVzY3JpYmVkIGluIGNvbG9yLmJyYW5jaC4qIGNvbmZpZyBvcHRpb24KKy0gJyVDKC4uLiknOiBjb2xvciBzcGVjaWZpY2F0aW9uLCBhcyBkZXNjcmliZWQgaW4gY29sb3IuYnJhbmNoLiogY29uZmlnIG9wdGlvbjsKKyAgYWRkaW5nIGBhdXRvLGAgYXQgdGhlIGJlZ2lubmluZyB3aWxsIGVtaXQgY29sb3Igb25seSB3aGVuIGNvbG9ycyBhcmUKKyAgZW5hYmxlZCBmb3IgbG9nIG91dHB1dCAoYnkgYGNvbG9yLmRpZmZgLCBgY29sb3IudWlgLCBvciBgLS1jb2xvcmAsIGFuZAorICByZXNwZWN0aW5nIHRoZSBgYXV0b2Agc2V0dGluZ3Mgb2YgdGhlIGZvcm1lciBpZiB3ZSBhcmUgZ29pbmcgdG8gYQorICB0ZXJtaW5hbCkuIGBhdXRvYCBhbG9uZSAoaS5lLiBgJUMoYXV0bylgKSB3aWxsIHR1cm4gb24gYXV0byBjb2xvcmluZworICBvbiB0aGUgbmV4dCBwbGFjZWhvbGRlcnMgdW50aWwgdGhlIGNvbG9yIGlzIHN3aXRjaGVkIGFnYWluLgogLSAnJW0nOiBsZWZ0LCByaWdodCBvciBib3VuZGFyeSBtYXJrCiAtICclbic6IG5ld2xpbmUKIC0gJyUlJzogYSByYXcgJyUnCiAtICcleDAwJzogcHJpbnQgYSBieXRlIGZyb20gYSBoZXggY29kZQogLSAnJXcoWzx3PlssPGkxPlssPGkyPl1dXSknOiBzd2l0Y2ggbGluZSB3cmFwcGluZywgbGlrZSB0aGUgLXcgb3B0aW9uIG9mCiAgIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdLgorLSAnJTwoPE4+Wyx0cnVuY3xsdHJ1bmN8bXRydW5jXSknOiBtYWtlIHRoZSBuZXh0IHBsYWNlaG9sZGVyIHRha2UgYXQKKyAgbGVhc3QgTiBjb2x1bW5zLCBwYWRkaW5nIHNwYWNlcyBvbiB0aGUgcmlnaHQgaWYgbmVjZXNzYXJ5LgorICBPcHRpb25hbGx5IHRydW5jYXRlIGF0IHRoZSBiZWdpbm5pbmcgKGx0cnVuYyksIHRoZSBtaWRkbGUgKG10cnVuYykKKyAgb3IgdGhlIGVuZCAodHJ1bmMpIGlmIHRoZSBvdXRwdXQgaXMgbG9uZ2VyIHRoYW4gTiBjb2x1bW5zLgorICBOb3RlIHRoYXQgdHJ1bmNhdGluZyBvbmx5IHdvcmtzIGNvcnJlY3RseSB3aXRoIE4gPj0gMi4KKy0gJyU8fCg8Tj4pJzogbWFrZSB0aGUgbmV4dCBwbGFjZWhvbGRlciB0YWtlIGF0IGxlYXN0IHVudGlsIE50aAorICBjb2x1bW5zLCBwYWRkaW5nIHNwYWNlcyBvbiB0aGUgcmlnaHQgaWYgbmVjZXNzYXJ5CistICclPig8Tj4pJywgJyU+fCg8Tj4pJzogc2ltaWxhciB0byAnJTwoPE4+KScsICclPHwoPE4+KScKKyAgcmVzcGVjdGl2ZWx5LCBidXQgcGFkZGluZyBzcGFjZXMgb24gdGhlIGxlZnQKKy0gJyU+Pig8Tj4pJywgJyU+PnwoPE4+KSc6IHNpbWlsYXIgdG8gJyU+KDxOPiknLCAnJT58KDxOPiknCisgIHJlc3BlY3RpdmVseSwgZXhjZXB0IHRoYXQgaWYgdGhlIG5leHQgcGxhY2Vob2xkZXIgdGFrZXMgbW9yZSBzcGFjZXMKKyAgdGhhbiBnaXZlbiBhbmQgdGhlcmUgYXJlIHNwYWNlcyBvbiBpdHMgbGVmdCwgdXNlIHRob3NlIHNwYWNlcworLSAnJT48KDxOPiknLCAnJT48fCg8Tj4pJzogc2ltaWxhciB0byAnJSA8KDxOPiknLCAnJTx8KDxOPiknCisgIHJlc3BlY3RpdmVseSwgYnV0IHBhZGRpbmcgYm90aCBzaWRlcyAoaS5lLiB0aGUgdGV4dCBpcyBjZW50ZXJlZCkKIAogTk9URTogU29tZSBwbGFjZWhvbGRlcnMgbWF5IGRlcGVuZCBvbiBvdGhlciBvcHRpb25zIGdpdmVuIHRvIHRoZQogcmV2aXNpb24gdHJhdmVyc2FsIGVuZ2luZS4gRm9yIGV4YW1wbGUsIHRoZSBgJWcqYCByZWZsb2cgb3B0aW9ucyB3aWxsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3B1bGwtZmV0Y2gtcGFyYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9wdWxsLWZldGNoLXBhcmFtLnR4dAppbmRleCA5NGE5ZDMyLi4xOGNmZmMyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3B1bGwtZmV0Y2gtcGFyYW0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vcHVsbC1mZXRjaC1wYXJhbS50eHQKQEAgLTY4LDYgKzY4LDExIEBACiArCiAqIGB0YWcgPHRhZz5gIG1lYW5zIHRoZSBzYW1lIGFzIGByZWZzL3RhZ3MvPHRhZz46cmVmcy90YWdzLzx0YWc+YDsKICAgaXQgcmVxdWVzdHMgZmV0Y2hpbmcgZXZlcnl0aGluZyB1cCB0byB0aGUgZ2l2ZW4gdGFnLgotKiBBIHBhcmFtZXRlciA8cmVmPiB3aXRob3V0IGEgY29sb24gaXMgZXF1aXZhbGVudCB0bwotICA8cmVmPjogd2hlbiBwdWxsaW5nL2ZldGNoaW5nLCBzbyBpdCBtZXJnZXMgPHJlZj4gaW50byB0aGUgY3VycmVudAotICBicmFuY2ggd2l0aG91dCBzdG9yaW5nIHRoZSByZW1vdGUgYnJhbmNoIGFueXdoZXJlIGxvY2FsbHkKK2lmbmRlZjo6Z2l0LXB1bGxbXQorKiBBIHBhcmFtZXRlciA8cmVmPiB3aXRob3V0IGEgY29sb24gZmV0Y2hlcyB0aGF0IHJlZiBpbnRvIEZFVENIX0hFQUQsCitlbmRpZjo6Z2l0LXB1bGxbXQoraWZkZWY6OmdpdC1wdWxsW10KKyogQSBwYXJhbWV0ZXIgPHJlZj4gd2l0aG91dCBhIGNvbG9uIG1lcmdlcyA8cmVmPiBpbnRvIHRoZSBjdXJyZW50CisgIGJyYW5jaCwKK2VuZGlmOjpnaXQtcHVsbFtdCisgIGFuZCB1cGRhdGVzIHRoZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgKGlmIGFueSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dAppbmRleCAxZWMxNGEwLi5iNDYyZjE3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQKQEAgLTI3MSw4ICsyNzEsOCBAQAogCiAtLWJvdW5kYXJ5OjoKIAotCU91dHB1dCB1bmludGVyZXN0aW5nIGNvbW1pdHMgYXQgdGhlIGJvdW5kYXJ5LCB3aGljaCBhcmUgdXN1YWxseQotCW5vdCBzaG93bi4KKwlPdXRwdXQgZXhjbHVkZWQgYm91bmRhcnkgY29tbWl0cy4gQm91bmRhcnkgY29tbWl0cyBhcmUKKwlwcmVmaXhlZCB3aXRoIGAtYC4KIAogLS0KIApAQCAtMzQyLDEzICszNDIsMTMgQEAKIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gc2ltcGxpZmljYXRpb24gc2V0dGluZ3MuICBXZSBhc3N1bWUKIHRoYXQgeW91IGFyZSBmaWx0ZXJpbmcgZm9yIGEgZmlsZSBgZm9vYCBpbiB0aGlzIGNvbW1pdCBncmFwaDoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JICAuLUEtLS1NLS0tTi0tLU8tLS1QCi0JIC8gICAgIC8gICAvICAgLyAgIC8KLQlJICAgICBCICAgQyAgIEQgICBFCi0JIFwgICAvICAgLyAgIC8gICAvCi0JICBgLS0tLS0tLS0tLS0tLScKKwkgIC4tQS0tLU0tLS1OLS0tTy0tLVAtLS1RCisJIC8gICAgIC8gICAvICAgLyAgIC8gICAvCisJSSAgICAgQiAgIEMgICBEICAgRSAgIFkKKwkgXCAgIC8gICAvICAgLyAgIC8gICAvCisJICBgLS0tLS0tLS0tLS0tLScgICBYCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGhlIGhvcml6b250YWwgbGluZSBvZiBoaXN0b3J5IEEtLS1QIGlzIHRha2VuIHRvIGJlIHRoZSBmaXJzdCBwYXJlbnQgb2YKK1RoZSBob3Jpem9udGFsIGxpbmUgb2YgaGlzdG9yeSBBLS0tUSBpcyB0YWtlbiB0byBiZSB0aGUgZmlyc3QgcGFyZW50IG9mCiBlYWNoIG1lcmdlLiAgVGhlIGNvbW1pdHMgYXJlOgogCiAqIGBJYCBpcyB0aGUgaW5pdGlhbCBjb21taXQsIGluIHdoaWNoIGBmb29gIGV4aXN0cyB3aXRoIGNvbnRlbnRzCkBAIC0zNjcsOCArMzY3LDExIEBACiAgIGBOYCBhbmQgYERgIHRvICJmb29iYXJiYXoiOyBpLmUuLCBpdCBpcyBub3QgVFJFRVNBTUUgdG8gYW55IHBhcmVudC4KIAogKiBgRWAgY2hhbmdlcyBgcXV1eGAgdG8gInh5enp5IiwgYW5kIGl0cyBtZXJnZSBgUGAgY29tYmluZXMgdGhlCi0gIHN0cmluZ3MgdG8gInF1dXggeHl6enkiLiAgRGVzcGl0ZSBhcHBlYXJpbmcgaW50ZXJlc3RpbmcsIGBQYCBpcwotICBUUkVFU0FNRSB0byBhbGwgcGFyZW50cy4KKyAgc3RyaW5ncyB0byAicXV1eCB4eXp6eSIuICBgUGAgaXMgVFJFRVNBTUUgdG8gYE9gLCBidXQgbm90IHRvIGBFYC4KKworKiBgWGAgaXMgYW4gaW5kcGVuZGVudCByb290IGNvbW1pdCB0aGF0IGFkZGVkIGEgbmV3IGZpbGUgYHNpZGVgLCBhbmQgYFlgCisgIG1vZGlmaWVkIGl0LiBgWWAgaXMgVFJFRVNBTUUgdG8gYFhgLiBJdHMgbWVyZ2UgYFFgIGFkZGVkIGBzaWRlYCB0byBgUGAsIGFuZAorICBgUWAgaXMgVFJFRVNBTUUgdG8gYFBgLCBidXQgbm90IHRvIGBZYC4KIAogJ3Jldi1saXN0JyB3YWxrcyBiYWNrd2FyZHMgdGhyb3VnaCBoaXN0b3J5LCBpbmNsdWRpbmcgb3IgZXhjbHVkaW5nCiBjb21taXRzIGJhc2VkIG9uIHdoZXRoZXIgJ1wtLWZ1bGwtaGlzdG9yeScgYW5kL29yIHBhcmVudCByZXdyaXRpbmcKQEAgLTQxMCwxMCArNDEzLDEwIEBACiAJdGhlIGV4YW1wbGUsIHdlIGdldAogKwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlJICBBICBCICBOICBEICBPCisJSSAgQSAgQiAgTiAgRCAgTyAgUCAgUQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICsKLWBQYCBhbmQgYE1gIHdlcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGFyZSBUUkVFU0FNRSB0byBhIHBhcmVudC4gIGBFYCwKK2BNYCB3YXMgZXhjbHVkZWQgYmVjYXVzZSBpdCBpcyBUUkVFU0FNRSB0byBib3RoIHBhcmVudHMuICBgRWAsCiBgQ2AgYW5kIGBCYCB3ZXJlIGFsbCB3YWxrZWQsIGJ1dCBvbmx5IGBCYCB3YXMgIVRSRUVTQU1FLCBzbyB0aGUgb3RoZXJzCiBkbyBub3QgYXBwZWFyLgogKwpAQCAtNDMxLDcgKzQzNCw3IEBACiB0aGVtc2VsdmVzLiAgVGhpcyByZXN1bHRzIGluCiArCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCSAgLi1BLS0tTS0tLU4tLS1PLS0tUAorCSAgLi1BLS0tTS0tLU4tLS1PLS0tUC0tLVEKIAkgLyAgICAgLyAgIC8gICAvICAgLwogCUkgICAgIEIgICAvICAgRCAgIC8KIAkgXCAgIC8gICAvICAgLyAgIC8KQEAgLTQ0MSw3ICs0NDQsNyBAQAogQ29tcGFyZSB0byAnXC0tZnVsbC1oaXN0b3J5JyB3aXRob3V0IHJld3JpdGluZyBhYm92ZS4gIE5vdGUgdGhhdCBgRWAKIHdhcyBwcnVuZWQgYXdheSBiZWNhdXNlIGl0IGlzIFRSRUVTQU1FLCBidXQgdGhlIHBhcmVudCBsaXN0IG9mIFAgd2FzCiByZXdyaXR0ZW4gdG8gY29udGFpbiBgRWAncyBwYXJlbnQgYElgLiAgVGhlIHNhbWUgaGFwcGVuZWQgZm9yIGBDYCBhbmQKLWBOYC4gIE5vdGUgYWxzbyB0aGF0IGBQYCB3YXMgaW5jbHVkZWQgZGVzcGl0ZSBiZWluZyBUUkVFU0FNRS4KK2BOYCwgYW5kIGBYYCwgYFlgIGFuZCBgUWAuCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBzZXR0aW5ncywgeW91IGNhbiBjaGFuZ2Ugd2hldGhlciBUUkVFU0FNRQogYWZmZWN0cyBpbmNsdXNpb246CkBAIC00NzEsOCArNDc0LDkgQEAKICogU2V0IGBDJ2AgdG8gYENgLgogKwogKiBSZXBsYWNlIGVhY2ggcGFyZW50IGBQYCBvZiBgQydgIHdpdGggaXRzIHNpbXBsaWZpY2F0aW9uIGBQJ2AuICBJbgotICB0aGUgcHJvY2VzcywgZHJvcCBwYXJlbnRzIHRoYXQgYXJlIGFuY2VzdG9ycyBvZiBvdGhlciBwYXJlbnRzLCBhbmQKLSAgcmVtb3ZlIGR1cGxpY2F0ZXMuCisgIHRoZSBwcm9jZXNzLCBkcm9wIHBhcmVudHMgdGhhdCBhcmUgYW5jZXN0b3JzIG9mIG90aGVyIHBhcmVudHMgb3IgdGhhdCBhcmUKKyAgcm9vdCBjb21taXRzIFRSRUVTQU1FIHRvIGFuIGVtcHR5IHRyZWUsIGFuZCByZW1vdmUgZHVwbGljYXRlcywgYnV0IHRha2UgY2FyZQorICB0byBuZXZlciBkcm9wIGFsbCBwYXJlbnRzIHRoYXQgd2UgYXJlIFRSRUVTQU1FIHRvLgogKwogKiBJZiBhZnRlciB0aGlzIHBhcmVudCByZXdyaXRpbmcsIGBDJ2AgaXMgYSByb290IG9yIG1lcmdlIGNvbW1pdCAoaGFzCiAgIHplcm8gb3IgPjEgcGFyZW50cyksIGEgYm91bmRhcnkgY29tbWl0LCBvciAhVFJFRVNBTUUsIGl0IHJlbWFpbnMuCkBAIC00OTAsNyArNDk0LDcgQEAKIAkgIGAtLS0tLS0tLS0nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKwotTm90ZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYE5gIGFuZCBgUGAgb3ZlciAnLS1mdWxsLWhpc3RvcnknOgorTm90ZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYE5gLCBgUGAgYW5kIGBRYCBvdmVyICctLWZ1bGwtaGlzdG9yeSc6CiArCiAtLQogKiBgTmAncyBwYXJlbnQgbGlzdCBoYWQgYElgIHJlbW92ZWQsIGJlY2F1c2UgaXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlCkBAIC00OTgsNiArNTAyLDEwIEBACiArCiAqIGBQYCdzIHBhcmVudCBsaXN0IHNpbWlsYXJseSBoYWQgYElgIHJlbW92ZWQuICBgUGAgd2FzIHRoZW4KICAgcmVtb3ZlZCBjb21wbGV0ZWx5LCBiZWNhdXNlIGl0IGhhZCBvbmUgcGFyZW50IGFuZCBpcyBUUkVFU0FNRS4KKysKKyogYFFgJ3MgcGFyZW50IGxpc3QgaGFkIGBZYCBzaW1wbGlmaWVkIHRvIGBYYC4gYFhgIHdhcyB0aGVuIHJlbW92ZWQsIGJlY2F1c2UgaXQKKyAgd2FzIGEgVFJFRVNBTUUgcm9vdC4gYFFgIHdhcyB0aGVuIHJlbW92ZWQgY29tcGxldGVseSwgYmVjYXVzZSBpdCBoYWQgb25lCisgIHBhcmVudCBhbmQgaXMgVFJFRVNBTUUuCiAtLQogCiBGaW5hbGx5LCB0aGVyZSBpcyBhIGZpZnRoIHNpbXBsaWZpY2F0aW9uIG1vZGUgYXZhaWxhYmxlOgpAQCAtNjQ5LDcgKzY1Nyw3IEBACiBPYmplY3QgVHJhdmVyc2FsCiB+fn5+fn5+fn5+fn5+fn5+CiAKLVRoZXNlIG9wdGlvbnMgYXJlIG1vc3RseSB0YXJnZXRlZCBmb3IgcGFja2luZyBvZiBnaXQgcmVwb3NpdG9yaWVzLgorVGhlc2Ugb3B0aW9ucyBhcmUgbW9zdGx5IHRhcmdldGVkIGZvciBwYWNraW5nIG9mIEdpdCByZXBvc2l0b3JpZXMuCiAKIC0tb2JqZWN0czo6CiAKQEAgLTcxNyw3ICs3MjUsNyBAQAogKwogYC0tZGF0ZT1zaG9ydGAgc2hvd3Mgb25seSBkYXRlIGJ1dCBub3QgdGltZSwgaW4gYFlZWVktTU0tRERgIGZvcm1hdC4KICsKLWAtLWRhdGU9cmF3YCBzaG93cyB0aGUgZGF0ZSBpbiB0aGUgaW50ZXJuYWwgcmF3IGdpdCBmb3JtYXQgYCVzICV6YCBmb3JtYXQuCitgLS1kYXRlPXJhd2Agc2hvd3MgdGhlIGRhdGUgaW4gdGhlIGludGVybmFsIHJhdyBHaXQgZm9ybWF0IGAlcyAlemAgZm9ybWF0LgogKwogYC0tZGF0ZT1kZWZhdWx0YCBzaG93cyB0aW1lc3RhbXBzIGluIHRoZSBvcmlnaW5hbCB0aW1lem9uZQogKGVpdGhlciBjb21taXR0ZXIncyBvciBhdXRob3IncykuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3JldmlzaW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL3JldmlzaW9ucy50eHQKaW5kZXggMDEzZjBkZS4uMDk4OTZhMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9yZXZpc2lvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcmV2aXNpb25zLnR4dApAQCAtMiwxMyArMiwxMyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQSByZXZpc2lvbiBwYXJhbWV0ZXIgJzxyZXY+JyB0eXBpY2FsbHksIGJ1dCBub3QgbmVjZXNzYXJpbHksIG5hbWVzIGEKLWNvbW1pdCBvYmplY3QuICBJdCB1c2VzIHdoYXQgaXMgY2FsbGVkIGFuICdleHRlbmRlZCBTSEExJworY29tbWl0IG9iamVjdC4gIEl0IHVzZXMgd2hhdCBpcyBjYWxsZWQgYW4gJ2V4dGVuZGVkIFNIQS0xJwogc3ludGF4LiAgSGVyZSBhcmUgdmFyaW91cyB3YXlzIHRvIHNwZWxsIG9iamVjdCBuYW1lcy4gIFRoZQogb25lcyBsaXN0ZWQgbmVhciB0aGUgZW5kIG9mIHRoaXMgbGlzdCBuYW1lIHRyZWVzIGFuZAogYmxvYnMgY29udGFpbmVkIGluIGEgY29tbWl0LgogCiAnPHNoYTE+JywgZS5nLiAnZGFlODZlMTk1MGIxMjc3ZTU0NWNlZTE4MDU1MTc1MDAyOWNmZTczNScsICdkYWU4NmUnOjoKLSAgVGhlIGZ1bGwgU0hBMSBvYmplY3QgbmFtZSAoNDAtYnl0ZSBoZXhhZGVjaW1hbCBzdHJpbmcpLCBvcgorICBUaGUgZnVsbCBTSEEtMSBvYmplY3QgbmFtZSAoNDAtYnl0ZSBoZXhhZGVjaW1hbCBzdHJpbmcpLCBvcgogICBhIGxlYWRpbmcgc3Vic3RyaW5nIHRoYXQgaXMgdW5pcXVlIHdpdGhpbiB0aGUgcmVwb3NpdG9yeS4KICAgRS5nLiBkYWU4NmUxOTUwYjEyNzdlNTQ1Y2VlMTgwNTUxNzUwMDI5Y2ZlNzM1IGFuZCBkYWU4NmUgYm90aAogICBuYW1lIHRoZSBzYW1lIGNvbW1pdCBvYmplY3QgaWYgdGhlcmUgaXMgbm8gb3RoZXIgb2JqZWN0IGluCkBAIC0yMyw3ICsyMyw3IEBACiAgIEEgc3ltYm9saWMgcmVmIG5hbWUuICBFLmcuICdtYXN0ZXInIHR5cGljYWxseSBtZWFucyB0aGUgY29tbWl0CiAgIG9iamVjdCByZWZlcmVuY2VkIGJ5ICdyZWZzL2hlYWRzL21hc3RlcicuICBJZiB5b3UKICAgaGFwcGVuIHRvIGhhdmUgYm90aCAnaGVhZHMvbWFzdGVyJyBhbmQgJ3RhZ3MvbWFzdGVyJywgeW91IGNhbgotICBleHBsaWNpdGx5IHNheSAnaGVhZHMvbWFzdGVyJyB0byB0ZWxsIGdpdCB3aGljaCBvbmUgeW91IG1lYW4uCisgIGV4cGxpY2l0bHkgc2F5ICdoZWFkcy9tYXN0ZXInIHRvIHRlbGwgR2l0IHdoaWNoIG9uZSB5b3UgbWVhbi4KICAgV2hlbiBhbWJpZ3VvdXMsIGEgJzxyZWZuYW1lPicgaXMgZGlzYW1iaWd1YXRlZCBieSB0YWtpbmcgdGhlCiAgIGZpcnN0IG1hdGNoIGluIHRoZSBmb2xsb3dpbmcgcnVsZXM6CiAKQEAgLTU1LDkgKzU1LDEyIEBACiArCiBOb3RlIHRoYXQgYW55IG9mIHRoZSAncmVmcy8qJyBjYXNlcyBhYm92ZSBtYXkgY29tZSBlaXRoZXIgZnJvbQogdGhlICckR0lUX0RJUi9yZWZzJyBkaXJlY3Rvcnkgb3IgZnJvbSB0aGUgJyRHSVRfRElSL3BhY2tlZC1yZWZzJyBmaWxlLgotV2hpbGUgdGhlIHJlZiBuYW1lIGVuY29kaW5nIGlzIHVuc3BlY2lmaWVkLCBVVEYtOCBpcyBwcmVmZXJlZCBhcworV2hpbGUgdGhlIHJlZiBuYW1lIGVuY29kaW5nIGlzIHVuc3BlY2lmaWVkLCBVVEYtOCBpcyBwcmVmZXJyZWQgYXMKIHNvbWUgb3V0cHV0IHByb2Nlc3NpbmcgbWF5IGFzc3VtZSByZWYgbmFtZXMgaW4gVVRGLTguCiAKKydAJzo6CisgICdAJyBhbG9uZSBpcyBhIHNob3J0Y3V0IGZvciAnSEVBRCcuCisKICc8cmVmbmFtZT5AXHs8ZGF0ZT5cfScsIGUuZy4gJ21hc3RlckBce3llc3RlcmRheVx9JywgJ0hFQURAXHs1IG1pbnV0ZXMgYWdvXH0nOjoKICAgQSByZWYgZm9sbG93ZWQgYnkgdGhlIHN1ZmZpeCAnQCcgd2l0aCBhIGRhdGUgc3BlY2lmaWNhdGlvbgogICBlbmNsb3NlZCBpbiBhIGJyYWNlCkBAIC0xMTYsNiArMTE5LDExIEBACiAgIG9iamVjdCBvZiB0aGF0IHR5cGUgaXMgZm91bmQgb3IgdGhlIG9iamVjdCBjYW5ub3QgYmUKICAgZGVyZWZlcmVuY2VkIGFueW1vcmUgKGluIHdoaWNoIGNhc2UsIGJhcmYpLiAgJzxyZXY+e2NhcmV0fTAnCiAgIGlzIGEgc2hvcnQtaGFuZCBmb3IgJzxyZXY+e2NhcmV0fVx7Y29tbWl0XH0nLgorKworJ3JldntjYXJldH1ce29iamVjdFx9JyBjYW4gYmUgdXNlZCB0byBtYWtlIHN1cmUgJ3JldicgbmFtZXMgYW4KK29iamVjdCB0aGF0IGV4aXN0cywgd2l0aG91dCByZXF1aXJpbmcgJ3JldicgdG8gYmUgYSB0YWcsIGFuZAord2l0aG91dCBkZXJlZmVyZW5jaW5nICdyZXYnOyBiZWNhdXNlIGEgdGFnIGlzIGFscmVhZHkgYW4gb2JqZWN0LAoraXQgZG9lcyBub3QgaGF2ZSB0byBiZSBkZXJlZmVyZW5jZWQgZXZlbiBvbmNlIHRvIGdldCB0byBhbiBvYmplY3QuCiAKICc8cmV2PntjYXJldH1ce1x9JywgZS5nLiAndjAuOTkuOHtjYXJldH1ce1x9Jzo6CiAgIEEgc3VmZml4ICd7Y2FyZXR9JyBmb2xsb3dlZCBieSBhbiBlbXB0eSBicmFjZSBwYWlyCkBAIC0yMzksMTEgKzI0NywxMyBAQAogCiAnPHJldjE+Li48cmV2Mj4nOjoKIAlJbmNsdWRlIGNvbW1pdHMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gPHJldjI+IGJ1dCBleGNsdWRlCi0JdGhvc2UgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gPHJldjE+LgorCXRob3NlIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIDxyZXYxPi4gIFdoZW4gZWl0aGVyIDxyZXYxPiBvcgorCTxyZXYyPiBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAnSEVBRCcuCiAKICc8cmV2MT5cLi4uPHJldjI+Jzo6CiAJSW5jbHVkZSBjb21taXRzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIGVpdGhlciA8cmV2MT4gb3IKLQk8cmV2Mj4gYnV0IGV4Y2x1ZGUgdGhvc2UgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gYm90aC4KKwk8cmV2Mj4gYnV0IGV4Y2x1ZGUgdGhvc2UgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gYm90aC4gIFdoZW4KKwllaXRoZXIgPHJldjE+IG9yIDxyZXYyPiBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAnSEVBRCcuCiAKICc8cmV2PntjYXJldH1AJywgZS5nLiAnSEVBRHtjYXJldH1AJzo6CiAgIEEgc3VmZml4ICd7Y2FyZXR9JyBmb2xsb3dlZCBieSBhbiBhdCBzaWduIGlzIHRoZSBzYW1lIGFzIGxpc3RpbmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hcmd2LWFycmF5LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hcmd2LWFycmF5LnR4dAppbmRleCBhOTU5NTE3Li5hNmI3ZDgzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktYXJndi1hcnJheS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWFyZ3YtYXJyYXkudHh0CkBAIC01NSw3ICs1NSw3IEBACiAJaW5pdGlhbCwgZW1wdHkgc3RhdGUuCiAKIGBhcmd2X2FycmF5X2RldGFjaGA6OgotCURldGFjaCB0aGUgYXJndiBhcnJheSBmcm9tIHRoZSBgc3RydWN0IGFyZ3ZfYXJyYXlgLCB0cmFuc2ZlcmluZworCURldGFjaCB0aGUgYXJndiBhcnJheSBmcm9tIHRoZSBgc3RydWN0IGFyZ3ZfYXJyYXlgLCB0cmFuc2ZlcnJpbmcKIAlvd25lcnNoaXAgb2YgdGhlIGFsbG9jYXRlZCBhcnJheSBhbmQgc3RyaW5ncy4KIAogYGFyZ3ZfYXJyYXlfZnJlZV9kZXRhY2hlZGA6OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWJ1aWx0aW4udHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWJ1aWx0aW4udHh0CmluZGV4IGIwY2FmZTguLmYzYzEzNTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1idWlsdGluLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktYnVpbHRpbi50eHQKQEAgLTUsNyArNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlcmUgYXJlIDQgdGhpbmdzIHRvIGRvIHRvIGFkZCBhIGJ1aWx0LWluIGNvbW1hbmQgaW1wbGVtZW50YXRpb24gdG8KLWdpdDoKK0dpdDoKIAogLiBEZWZpbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBjb21tYW5kIGBmb29gIHdpdGgKICAgc2lnbmF0dXJlOgpAQCAtMjMsNyArMjMsNyBAQAogCiBgUlVOX1NFVFVQYDo6CiAKLQlNYWtlIHN1cmUgdGhlcmUgaXMgYSBnaXQgZGlyZWN0b3J5IHRvIHdvcmsgb24sIGFuZCBpZiB0aGVyZSBpcyBhCisJTWFrZSBzdXJlIHRoZXJlIGlzIGEgR2l0IGRpcmVjdG9yeSB0byB3b3JrIG9uLCBhbmQgaWYgdGhlcmUgaXMgYQogCXdvcmsgdHJlZSwgY2hkaXIgdG8gdGhlIHRvcCBvZiBpdCBpZiB0aGUgY29tbWFuZCB3YXMgaW52b2tlZAogCWluIGEgc3ViZGlyZWN0b3J5LiAgSWYgdGhlcmUgaXMgbm8gd29yayB0cmVlLCBubyBjaGRpcigpIGlzCiAJZG9uZS4KQEAgLTM5LDcgKzM5LDcgQEAKIAlvbiBiYXJlIHJlcG9zaXRvcmllcy4KIAlUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiBgUlVOX1NFVFVQYCBpcyBhbHNvIHNldC4KIAotLiBBZGQgYGJ1aWx0aW4tZm9vLm9gIHRvIGBCVUlMVElOX09CSlNgIGluIGBNYWtlZmlsZWAuCisuIEFkZCBgYnVpbHRpbi9mb28ub2AgdG8gYEJVSUxUSU5fT0JKU2AgaW4gYE1ha2VmaWxlYC4KIAogQWRkaXRpb25hbGx5LCBpZiBgZm9vYCBpcyBhIG5ldyBjb21tYW5kLCB0aGVyZSBhcmUgMyBtb3JlIHRoaW5ncyB0byBkbzoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dAppbmRleCBlZGY4ZGZiLi4yMzBiM2EwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dApAQCAtMSw3ICsxLDcgQEAKIGNvbmZpZyBBUEkKID09PT09PT09PT0KIAotVGhlIGNvbmZpZyBBUEkgZ2l2ZXMgY2FsbGVycyBhIHdheSB0byBhY2Nlc3MgZ2l0IGNvbmZpZ3VyYXRpb24gZmlsZXMKK1RoZSBjb25maWcgQVBJIGdpdmVzIGNhbGxlcnMgYSB3YXkgdG8gYWNjZXNzIEdpdCBjb25maWd1cmF0aW9uIGZpbGVzCiAoYW5kIGZpbGVzIHdoaWNoIGhhdmUgdGhlIHNhbWUgc3ludGF4KS4gU2VlIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSBmb3IgYQogZGlzY3Vzc2lvbiBvZiB0aGUgY29uZmlnIGZpbGUgc3ludGF4LgogCkBAIC0xMiw3ICsxMiw3IEBACiBjYWxsZXItcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyByZXNwb25zaWJsZQogZm9yIGFueSBhY3Rpb25zIHRvIGJlIHRha2VuIG9uIHRoZSBjb25maWcgb3B0aW9uLCBhbmQgaXMgZnJlZSB0byBpZ25vcmUKIHNvbWUgb3B0aW9ucy4gSXQgaXMgbm90IHVuY29tbW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBwYXJzZWQKLXNldmVyYWwgdGltZXMgZHVyaW5nIHRoZSBydW4gb2YgYSBnaXQgcHJvZ3JhbSwgd2l0aCBkaWZmZXJlbnQgY2FsbGJhY2tzCitzZXZlcmFsIHRpbWVzIGR1cmluZyB0aGUgcnVuIG9mIGEgR2l0IHByb2dyYW0sIHdpdGggZGlmZmVyZW50IGNhbGxiYWNrcwogcGlja2luZyBvdXQgZGlmZmVyZW50IHZhcmlhYmxlcyB1c2VmdWwgdG8gdGhlbXNlbHZlcy4KIAogQSBjb25maWcgY2FsbGJhY2sgZnVuY3Rpb24gdGFrZXMgdGhyZWUgcGFyYW1ldGVyczoKQEAgLTM2LDcgKzM2LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBNb3N0IHByb2dyYW1zIHdpbGwgc2ltcGx5IHdhbnQgdG8gbG9vayB1cCB2YXJpYWJsZXMgaW4gYWxsIGNvbmZpZyBmaWxlcwotdGhhdCBnaXQga25vd3MgYWJvdXQsIHVzaW5nIHRoZSBub3JtYWwgcHJlY2VkZW5jZSBydWxlcy4gVG8gZG8gdGhpcywKK3RoYXQgR2l0IGtub3dzIGFib3V0LCB1c2luZyB0aGUgbm9ybWFsIHByZWNlZGVuY2UgcnVsZXMuIFRvIGRvIHRoaXMsCiBjYWxsIGBnaXRfY29uZmlnYCB3aXRoIGEgY2FsbGJhY2sgZnVuY3Rpb24gYW5kIHZvaWQgZGF0YSBwb2ludGVyLgogCiBgZ2l0X2NvbmZpZ2Agd2lsbCByZWFkIGFsbCBjb25maWcgc291cmNlcyBpbiBvcmRlciBvZiBpbmNyZWFzaW5nCkBAIC00OSw3ICs0OSw3IEBACiAKIFRoZSBgZ2l0X2NvbmZpZ193aXRoX29wdGlvbnNgIGZ1bmN0aW9uIGxldHMgdGhlIGNhbGxlciBleGFtaW5lIGNvbmZpZwogd2hpbGUgYWRqdXN0aW5nIHNvbWUgb2YgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGdpdF9jb25maWdgLiBJdCBzaG91bGQKLWFsbW9zdCBuZXZlciBiZSB1c2VkIGJ5ICJyZWd1bGFyIiBnaXQgY29kZSB0aGF0IGlzIGxvb2tpbmcgdXAKK2FsbW9zdCBuZXZlciBiZSB1c2VkIGJ5ICJyZWd1bGFyIiBHaXQgY29kZSB0aGF0IGlzIGxvb2tpbmcgdXAKIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiBJdCBpcyBpbnRlbmRlZCBmb3IgYWR2YW5jZWQgY2FsbGVycyBsaWtlCiBgZ2l0LWNvbmZpZ2AsIHdoaWNoIGFyZSBpbnRlbnRpb25hbGx5IHR3ZWFraW5nIHRoZSBub3JtYWwgY29uZmlnLWxvb2t1cAogcHJvY2Vzcy4gSXQgdGFrZXMgdHdvIGV4dHJhIHBhcmFtZXRlcnM6CkBAIC02Niw3ICs2Niw3IEBACiBUaGVyZSBpcyBhIHNwZWNpYWwgdmVyc2lvbiBvZiBgZ2l0X2NvbmZpZ2AgY2FsbGVkIGBnaXRfY29uZmlnX2Vhcmx5YC4KIFRoaXMgdmVyc2lvbiB0YWtlcyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSByZXBvc2l0b3J5CiBjb25maWcsIGluc3RlYWQgb2YgaGF2aW5nIGl0IGxvb2tlZCB1cCB2aWEgYGdpdF9wYXRoYC4gVGhpcyBpcyB1c2VmdWwKLWVhcmx5IGluIGEgZ2l0IHByb2dyYW0gYmVmb3JlIHRoZSByZXBvc2l0b3J5IGhhcyBiZWVuIGZvdW5kLiBVbmxlc3MKK2Vhcmx5IGluIGEgR2l0IHByb2dyYW0gYmVmb3JlIHRoZSByZXBvc2l0b3J5IGhhcyBiZWVuIGZvdW5kLiBVbmxlc3MKIHlvdSdyZSB3b3JraW5nIHdpdGggZWFybHkgc2V0dXAgY29kZSwgeW91IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gdXNlCiB0aGlzLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY3JlZGVudGlhbHMudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWNyZWRlbnRpYWxzLnR4dAppbmRleCA1OTc3YjU4Li5jMWI0MmE0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY3JlZGVudGlhbHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1jcmVkZW50aWFscy50eHQKQEAgLTcsOSArNyw5IEBACiByZWZlcnMgdG8gYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcGFpcikuCiAKIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHR3byBpbnRlcmZhY2VzOiB0aGUgQyBBUEkgdGhhdCB0aGUgY3JlZGVudGlhbAotc3Vic3lzdGVtIHByb3ZpZGVzIHRvIHRoZSByZXN0IG9mIGdpdCwgYW5kIHRoZSBwcm90b2NvbCB0aGF0IGdpdCB1c2VzIHRvCitzdWJzeXN0ZW0gcHJvdmlkZXMgdG8gdGhlIHJlc3Qgb2YgR2l0LCBhbmQgdGhlIHByb3RvY29sIHRoYXQgR2l0IHVzZXMgdG8KIGNvbW11bmljYXRlIHdpdGggc3lzdGVtLXNwZWNpZmljICJjcmVkZW50aWFsIGhlbHBlcnMiLiBJZiB5b3UgYXJlCi13cml0aW5nIGdpdCBjb2RlIHRoYXQgd2FudHMgdG8gbG9vayB1cCBvciBwcm9tcHQgZm9yIGNyZWRlbnRpYWxzLCBzZWUKK3dyaXRpbmcgR2l0IGNvZGUgdGhhdCB3YW50cyB0byBsb29rIHVwIG9yIHByb21wdCBmb3IgY3JlZGVudGlhbHMsIHNlZQogdGhlIHNlY3Rpb24gIkMgQVBJIiBiZWxvdy4gSWYgeW91IHdhbnQgdG8gd3JpdGUgeW91ciBvd24gaGVscGVyLCBzZWUKIHRoZSBzZWN0aW9uIG9uICJDcmVkZW50aWFsIEhlbHBlcnMiIGJlbG93LgogCkBAIC0xOCw3ICsxOCw3IEBACiAKIC0tLS0tLS0tLS0tLQogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBnaXQgY29kZSAoQykgICAgICAgICAgfC0tLSB0byBzZXJ2ZXIgcmVxdWlyaW5nIC0tLT4KK3wgR2l0IGNvZGUgKEMpICAgICAgICAgIHwtLS0gdG8gc2VydmVyIHJlcXVpcmluZyAtLS0+CiB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBhdXRoZW50aWNhdGlvbgogfC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufAogfCBDIGNyZWRlbnRpYWwgQVBJICAgICAgfC0tLSBwcm9tcHQgLS0tPiBVc2VyCkBAIC0yNywxMSArMjcsMTEgQEAKIAl8IHBpcGUgfAogCXwgICAgICB2CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGdpdCBjcmVkZW50aWFsIGhlbHBlciB8Cit8IEdpdCBjcmVkZW50aWFsIGhlbHBlciB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAtLS0tLS0tLS0tLS0KIAotVGhlIGdpdCBjb2RlICh0eXBpY2FsbHkgYSByZW1vdGUtaGVscGVyKSB3aWxsIGNhbGwgdGhlIEMgQVBJIHRvIG9idGFpbgorVGhlIEdpdCBjb2RlICh0eXBpY2FsbHkgYSByZW1vdGUtaGVscGVyKSB3aWxsIGNhbGwgdGhlIEMgQVBJIHRvIG9idGFpbgogY3JlZGVudGlhbCBkYXRhIGxpa2UgYSBsb2dpbi9wYXNzd29yZCBwYWlyIChjcmVkZW50aWFsX2ZpbGwpLiBUaGUKIEFQSSB3aWxsIGl0c2VsZiBjYWxsIGEgcmVtb3RlIGhlbHBlciAoZS5nLiAiZ2l0IGNyZWRlbnRpYWwtY2FjaGUiIG9yCiAiZ2l0IGNyZWRlbnRpYWwtc3RvcmUiKSB0aGF0IG1heSByZXRyaWV2ZSBjcmVkZW50aWFsIGRhdGEgZnJvbSBhCkBAIC00Miw3ICs0Miw3IEBACiBDIEFQSQogLS0tLS0KIAotVGhlIGNyZWRlbnRpYWwgQyBBUEkgaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IGdpdCBjb2RlIHdoaWNoIG5lZWRzIHRvCitUaGUgY3JlZGVudGlhbCBDIEFQSSBpcyBtZWFudCB0byBiZSBjYWxsZWQgYnkgR2l0IGNvZGUgd2hpY2ggbmVlZHMgdG8KIGFjcXVpcmUgb3Igc3RvcmUgYSBjcmVkZW50aWFsLiBJdCBpcyBjZW50ZXJlZCBhcm91bmQgYW4gb2JqZWN0CiByZXByZXNlbnRpbmcgYSBzaW5nbGUgY3JlZGVudGlhbCBhbmQgcHJvdmlkZXMgdGhyZWUgYmFzaWMgb3BlcmF0aW9uczoKIGZpbGwgKGFjcXVpcmUgY3JlZGVudGlhbHMgYnkgY2FsbGluZyBoZWxwZXJzIGFuZC9vciBwcm9tcHRpbmcgdGhlIHVzZXIpLApAQCAtMTYwLDcgKzE2MCw3IEBACiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCS8qCi0JCSAqIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJlZC4gV2UgZG9uJ3Qga25vdyBpZiB0aGUKKwkJICogU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC4gV2UgZG9uJ3Qga25vdyBpZiB0aGUKIAkJICogY3JlZGVudGlhbCBpcyBnb29kIG9yIGJhZCwgc28gcmVwb3J0IG5vdGhpbmcgdG8gdGhlCiAJCSAqIGNyZWRlbnRpYWwgc3Vic3lzdGVtLgogCQkgKi8KQEAgLTE3NywxNCArMTc3LDE0IEBACiBDcmVkZW50aWFsIEhlbHBlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLQogCi1DcmVkZW50aWFsIGhlbHBlcnMgYXJlIHByb2dyYW1zIGV4ZWN1dGVkIGJ5IGdpdCB0byBmZXRjaCBvciBzYXZlCitDcmVkZW50aWFsIGhlbHBlcnMgYXJlIHByb2dyYW1zIGV4ZWN1dGVkIGJ5IEdpdCB0byBmZXRjaCBvciBzYXZlCiBjcmVkZW50aWFscyBmcm9tIGFuZCB0byBsb25nLXRlcm0gc3RvcmFnZSAod2hlcmUgImxvbmctdGVybSIgaXMgc2ltcGx5Ci1sb25nZXIgdGhhbiBhIHNpbmdsZSBnaXQgcHJvY2VzczsgZS5nLiwgY3JlZGVudGlhbHMgbWF5IGJlIHN0b3JlZAorbG9uZ2VyIHRoYW4gYSBzaW5nbGUgR2l0IHByb2Nlc3M7IGUuZy4sIGNyZWRlbnRpYWxzIG1heSBiZSBzdG9yZWQKIGluLW1lbW9yeSBmb3IgYSBmZXcgbWludXRlcywgb3IgaW5kZWZpbml0ZWx5IG9uIGRpc2spLgogCiBFYWNoIGhlbHBlciBpcyBzcGVjaWZpZWQgYnkgYSBzaW5nbGUgc3RyaW5nIGluIHRoZSBjb25maWd1cmF0aW9uCiB2YXJpYWJsZSBgY3JlZGVudGlhbC5oZWxwZXJgIChhbmQgb3RoZXJzLCBzZWUgbGlua2dpdDpnaXQtY29uZmlnWzFdKS4KLVRoZSBzdHJpbmcgaXMgdHJhbnNmb3JtZWQgYnkgZ2l0IGludG8gYSBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkIHVzaW5nCitUaGUgc3RyaW5nIGlzIHRyYW5zZm9ybWVkIGJ5IEdpdCBpbnRvIGEgY29tbWFuZCB0byBiZSBleGVjdXRlZCB1c2luZwogdGhlc2UgcnVsZXM6CiAKICAgMS4gSWYgdGhlIGhlbHBlciBzdHJpbmcgYmVnaW5zIHdpdGggIiEiLCBpdCBpcyBjb25zaWRlcmVkIGEgc2hlbGwKQEAgLTI0OCw3ICsyNDgsNyBAQAogRm9yIGEgYGdldGAgb3BlcmF0aW9uLCB0aGUgaGVscGVyIHNob3VsZCBwcm9kdWNlIGEgbGlzdCBvZiBhdHRyaWJ1dGVzCiBvbiBzdGRvdXQgaW4gdGhlIHNhbWUgZm9ybWF0LiBBIGhlbHBlciBpcyBmcmVlIHRvIHByb2R1Y2UgYSBzdWJzZXQsIG9yCiBldmVuIG5vIHZhbHVlcyBhdCBhbGwgaWYgaXQgaGFzIG5vdGhpbmcgdXNlZnVsIHRvIHByb3ZpZGUuIEFueSBwcm92aWRlZAotYXR0cmlidXRlcyB3aWxsIG92ZXJ3cml0ZSB0aG9zZSBhbHJlYWR5IGtub3duIGFib3V0IGJ5IGdpdC4KK2F0dHJpYnV0ZXMgd2lsbCBvdmVyd3JpdGUgdGhvc2UgYWxyZWFkeSBrbm93biBhYm91dCBieSBHaXQuCiAKIEZvciBhIGBzdG9yZWAgb3IgYGVyYXNlYCBvcGVyYXRpb24sIHRoZSBoZWxwZXIncyBvdXRwdXQgaXMgaWdub3JlZC4KIElmIGl0IGZhaWxzIHRvIHBlcmZvcm0gdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24sIGl0IG1heSBjb21wbGFpbiB0bwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWRpcmVjdG9yeS1saXN0aW5nLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1kaXJlY3RvcnktbGlzdGluZy50eHQKaW5kZXggYWRkNmY0My4uN2Y4ZTc4ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWRpcmVjdG9yeS1saXN0aW5nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktZGlyZWN0b3J5LWxpc3RpbmcudHh0CkBAIC05LDM3ICs5LDUxIEBACiAtLS0tLS0tLS0tLS0tLQogCiBgc3RydWN0IGRpcl9zdHJ1Y3RgIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHBhc3MgZGlyZWN0b3J5IHRyYXZlcnNhbAotb3B0aW9ucyB0byB0aGUgbGlicmFyeSBhbmQgdG8gcmVjb3JkIHRoZSBwYXRocyBkaXNjb3ZlcmVkLiAgVGhlIG5vdGFibGUKLW9wdGlvbnMgYXJlOgorb3B0aW9ucyB0byB0aGUgbGlicmFyeSBhbmQgdG8gcmVjb3JkIHRoZSBwYXRocyBkaXNjb3ZlcmVkLiAgQSBzaW5nbGUKK2BzdHJ1Y3QgZGlyX3N0cnVjdGAgaXMgdXNlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZSB0cmF2ZXJzYWwKK3JlY3Vyc2l2ZWx5IGRlc2NlbmRzIGludG8gc3ViZGlyZWN0b3JpZXMuCisKK1RoZSBub3RhYmxlIG9wdGlvbnMgYXJlOgogCiBgZXhjbHVkZV9wZXJfZGlyYDo6CiAKIAlUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBiZSByZWFkIGluIGVhY2ggZGlyZWN0b3J5IGZvciBleGNsdWRlZAogCWZpbGVzICh0eXBpY2FsbHkgYC5naXRpZ25vcmVgKS4KIAotYGNvbGxlY3RfaWdub3JlZGA6OgorYGZsYWdzYDo6CiAKLQlJbmNsdWRlIHBhdGhzIHRoYXQgYXJlIHRvIGJlIGV4Y2x1ZGVkIGluIHRoZSByZXN1bHQuCisJQSBiaXQtZmllbGQgb2Ygb3B0aW9ucyAodGhlIGAqSUdOT1JFRCpgIGZsYWdzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUpOgogCi1gc2hvd19pZ25vcmVkYDo6CitgRElSX1NIT1dfSUdOT1JFRGA6OjoKIAotCVRoZSB0cmF2ZXJzYWwgaXMgZm9yIGZpbmRpbmcganVzdCBpZ25vcmVkIGZpbGVzLCBub3QgdW5pZ25vcmVkCi0JZmlsZXMuCisJUmV0dXJuIGp1c3QgaWdub3JlZCBmaWxlcyBpbiBgZW50cmllc1tdYCwgbm90IHVudHJhY2tlZCBmaWxlcy4KIAotYHNob3dfb3RoZXJfZGlyZWN0b3JpZXNgOjoKK2BESVJfU0hPV19JR05PUkVEX1RPT2A6OjoKKworCVNpbWlsYXIgdG8gYERJUl9TSE9XX0lHTk9SRURgLCBidXQgcmV0dXJuIGlnbm9yZWQgZmlsZXMgaW4gYGlnbm9yZWRbXWAKKwlpbiBhZGRpdGlvbiB0byB1bnRyYWNrZWQgZmlsZXMgaW4gYGVudHJpZXNbXWAuCisKK2BESVJfQ09MTEVDVF9JR05PUkVEYDo6OgorCisJU3BlY2lhbCBtb2RlIGZvciBnaXQtYWRkLiBSZXR1cm4gaWdub3JlZCBmaWxlcyBpbiBgaWdub3JlZFtdYCBhbmQKKwl1bnRyYWNrZWQgZmlsZXMgaW4gYGVudHJpZXNbXWAuIE9ubHkgcmV0dXJucyBpZ25vcmVkIGZpbGVzIHRoYXQgbWF0Y2gKKwlwYXRoc3BlYyBleGFjdGx5IChubyB3aWxkY2FyZHMpLiBEb2VzIG5vdCByZWN1cnNlIGludG8gaWdub3JlZAorCWRpcmVjdG9yaWVzLgorCitgRElSX1NIT1dfT1RIRVJfRElSRUNUT1JJRVNgOjo6CiAKIAlJbmNsdWRlIGEgZGlyZWN0b3J5IHRoYXQgaXMgbm90IHRyYWNrZWQuCiAKLWBoaWRlX2VtcHR5X2RpcmVjdG9yaWVzYDo6CitgRElSX0hJREVfRU1QVFlfRElSRUNUT1JJRVNgOjo6CiAKIAlEbyBub3QgaW5jbHVkZSBhIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCB0cmFja2VkIGFuZCBpcyBlbXB0eS4KIAotYG5vX2dpdGxpbmtzYDo6CitgRElSX05PX0dJVExJTktTYDo6OgogCi0JSWYgc2V0LCByZWN1cnNlIGludG8gYSBkaXJlY3RvcnkgdGhhdCBsb29rcyBsaWtlIGEgZ2l0CisJSWYgc2V0LCByZWN1cnNlIGludG8gYSBkaXJlY3RvcnkgdGhhdCBsb29rcyBsaWtlIGEgR2l0CiAJZGlyZWN0b3J5LiAgT3RoZXJ3aXNlIGl0IGlzIHNob3duIGFzIGEgZGlyZWN0b3J5LgogCi1UaGUgcmVzdWx0IG9mIHRoZSBlbnVtZXJhdGlvbiBpcyBsZWZ0IGluIHRoZXNlIGZpZWxkczo6CitUaGUgcmVzdWx0IG9mIHRoZSBlbnVtZXJhdGlvbiBpcyBsZWZ0IGluIHRoZXNlIGZpZWxkczoKIAogYGVudHJpZXNbXWA6OgogCkBAIC01NCw2ICs2OCwxNCBAQAogCiAJSW50ZXJuYWwgdXNlOyBrZWVwcyB0cmFjayBvZiBhbGxvY2F0aW9uIG9mIGBlbnRyaWVzW11gIGFycmF5LgogCitgaWdub3JlZFtdYDo6CisKKwlBbiBhcnJheSBvZiBgc3RydWN0IGRpcl9lbnRyeWAsIHVzZWQgZm9yIGlnbm9yZWQgcGF0aHMgd2l0aCB0aGUKKwlgRElSX1NIT1dfSUdOT1JFRF9UT09gIGFuZCBgRElSX0NPTExFQ1RfSUdOT1JFRGAgZmxhZ3MuCisKK2BpZ25vcmVkX25yYDo6CisKKwlUaGUgbnVtYmVyIG9mIG1lbWJlcnMgaW4gYGlnbm9yZWRbXWAgYXJyYXkuCiAKIENhbGxpbmcgc2VxdWVuY2UKIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTY0LDExICs4NiwxMyBAQAogKiBQcmVwYXJlIGBzdHJ1Y3QgZGlyX3N0cnVjdCBkaXJgIGFuZCBjbGVhciBpdCB3aXRoIGBtZW1zZXQoJmRpciwgMCwKICAgc2l6ZW9mKGRpcikpYC4KIAotKiBDYWxsIGBhZGRfZXhjbHVkZSgpYCB0byBhZGQgc2luZ2xlIGV4Y2x1ZGUgcGF0dGVybiwKLSAgYGFkZF9leGNsdWRlc19mcm9tX2ZpbGUoKWAgdG8gYWRkIHBhdHRlcm5zIGZyb20gYSBmaWxlCi0gIChlLmcuIGAuZ2l0L2luZm8vZXhjbHVkZWApLCBhbmQvb3Igc2V0IGBkaXIuZXhjbHVkZV9wZXJfZGlyYC4gIEEKLSAgc2hvcnQtaGFuZCBmdW5jdGlvbiBgc2V0dXBfc3RhbmRhcmRfZXhjbHVkZXMoKWAgY2FuIGJlIHVzZWQgdG8gc2V0IHVwCi0gIHRoZSBzdGFuZGFyZCBzZXQgb2YgZXhjbHVkZSBzZXR0aW5ncy4KKyogVG8gYWRkIHNpbmdsZSBleGNsdWRlIHBhdHRlcm4sIGNhbGwgYGFkZF9leGNsdWRlX2xpc3QoKWAgYW5kIHRoZW4KKyAgYGFkZF9leGNsdWRlKClgLgorCisqIFRvIGFkZCBwYXR0ZXJucyBmcm9tIGEgZmlsZSAoZS5nLiBgLmdpdC9pbmZvL2V4Y2x1ZGVgKSwgY2FsbAorICBgYWRkX2V4Y2x1ZGVzX2Zyb21fZmlsZSgpYCAsIGFuZC9vciBzZXQgYGRpci5leGNsdWRlX3Blcl9kaXJgLiAgQQorICBzaG9ydC1oYW5kIGZ1bmN0aW9uIGBzZXR1cF9zdGFuZGFyZF9leGNsdWRlcygpYCBjYW4gYmUgdXNlZCB0byBzZXQKKyAgdXAgdGhlIHN0YW5kYXJkIHNldCBvZiBleGNsdWRlIHNldHRpbmdzLgogCiAqIFNldCBvcHRpb25zIGRlc2NyaWJlZCBpbiB0aGUgRGF0YSBTdHJ1Y3R1cmUgc2VjdGlvbiBhYm92ZS4KIApAQCAtNzYsNCArMTAwLDYgQEAKIAogKiBVc2UgYGRpci5lbnRyaWVzW11gLgogCisqIENhbGwgYGNsZWFyX2RpcmVjdG9yeSgpYCB3aGVuIG5vbmUgb2YgdGhlIGNvbnRhaW5lZCBlbGVtZW50cyBhcmUgbm8gbG9uZ2VyIGluIHVzZS4KKwogKEpDKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWluZGV4LXNrZWwudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWluZGV4LXNrZWwudHh0CmluZGV4IDczMGNmYWMuLmVkYThjMTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1pbmRleC1za2VsLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktaW5kZXgtc2tlbC50eHQKQEAgLTEsNyArMSw3IEBACi1HSVQgQVBJIERvY3VtZW50cworR2l0IEFQSSBEb2N1bWVudHMKID09PT09PT09PT09PT09PT09CiAKLUdJVCBoYXMgZ3Jvd24gYSBzZXQgb2YgaW50ZXJuYWwgQVBJIG92ZXIgdGltZS4gIFRoaXMgY29sbGVjdGlvbgorR2l0IGhhcyBncm93biBhIHNldCBvZiBpbnRlcm5hbCBBUEkgb3ZlciB0aW1lLiAgVGhpcyBjb2xsZWN0aW9uCiBkb2N1bWVudHMgdGhlbS4KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXBhcnNlLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXBhcnNlLW9wdGlvbnMudHh0CmluZGV4IDMwNjIzODkuLjBiZTJiNTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1wYXJzZS1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcGFyc2Utb3B0aW9ucy50eHQKQEAgLTEsNyArMSw3IEBACiBwYXJzZS1vcHRpb25zIEFQSQogPT09PT09PT09PT09PT09PT0KIAotVGhlIHBhcnNlLW9wdGlvbnMgQVBJIGlzIHVzZWQgdG8gcGFyc2UgYW5kIG1hc3NhZ2Ugb3B0aW9ucyBpbiBnaXQKK1RoZSBwYXJzZS1vcHRpb25zIEFQSSBpcyB1c2VkIHRvIHBhcnNlIGFuZCBtYXNzYWdlIG9wdGlvbnMgaW4gR2l0CiBhbmQgdG8gcHJvdmlkZSBhIHVzYWdlIGhlbHAgd2l0aCBjb25zaXN0ZW50IGxvb2suCiAKIEJhc2ljcwpAQCAtNDEsNiArNDEsOCBAQAogKiBCb29sZWFuIGxvbmcgb3B0aW9ucyBjYW4gYmUgJ25lZ2F0ZWQnIChvciAndW5zZXQnKSBieSBwcmVwZW5kaW5nCiAgIGBuby1gLCBlLmcuIGAtLW5vLWFiYnJldmAgaW5zdGVhZCBvZiBgLS1hYmJyZXZgLiBDb252ZXJzZWx5LAogICBvcHRpb25zIHRoYXQgYmVnaW4gd2l0aCBgbm8tYCBjYW4gYmUgJ25lZ2F0ZWQnIGJ5IHJlbW92aW5nIGl0LgorICBPdGhlciBsb25nIG9wdGlvbnMgY2FuIGJlIHVuc2V0IChlLmcuLCBzZXQgc3RyaW5nIHRvIE5VTEwsIHNldAorICBpbnRlZ2VyIHRvIDApIGJ5IHByZXBlbmRpbmcgYG5vLWAuCiAKICogT3B0aW9ucyBhbmQgbm9uLW9wdGlvbiBhcmd1bWVudHMgY2FuIGNsZWFybHkgYmUgc2VwYXJhdGVkIHVzaW5nIHRoZSBgLS1gCiAgIG9wdGlvbiwgZS5nLiBgLWEgLWIgLS1vcHRpb24gLS0gLS10aGlzLWlzLWEtZmlsZWAgaW5kaWNhdGVzIHRoYXQKQEAgLTE3NCw2ICsxNzYsMTAgQEAKIAlJbnRyb2R1Y2UgYW4gb3B0aW9uIHdpdGggZGF0ZSBhcmd1bWVudCwgc2VlIGBhcHByb3hpZGF0ZSgpYC4KIAlUaGUgdGltZXN0YW1wIGlzIHB1dCBpbnRvIGBpbnRfdmFyYC4KIAorYE9QVF9FWFBJUllfREFURShzaG9ydCwgbG9uZywgJmludF92YXIsIGRlc2NyaXB0aW9uKWA6OgorCUludHJvZHVjZSBhbiBvcHRpb24gd2l0aCBleHBpcnkgZGF0ZSBhcmd1bWVudCwgc2VlIGBwYXJzZV9leHBpcnlfZGF0ZSgpYC4KKwlUaGUgdGltZXN0YW1wIGlzIHB1dCBpbnRvIGBpbnRfdmFyYC4KKwogYE9QVF9DQUxMQkFDSyhzaG9ydCwgbG9uZywgJnZhciwgYXJnX3N0ciwgZGVzY3JpcHRpb24sIGZ1bmNfcHRyKWA6OgogCUludHJvZHVjZSBhbiBvcHRpb24gd2l0aCBhcmd1bWVudC4KIAlUaGUgYXJndW1lbnQgd2lsbCBiZSBmZWQgaW50byB0aGUgZnVuY3Rpb24gZ2l2ZW4gYnkgYGZ1bmNfcHRyYApAQCAtMjY5LDEwICsyNzUsMTAgQEAKIC0tLS0tLS0tCiAKIFNlZSBgdGVzdC1wYXJzZS1vcHRpb25zLmNgIGFuZAotYGJ1aWx0aW4tYWRkLmNgLAotYGJ1aWx0aW4tY2xvbmUuY2AsCi1gYnVpbHRpbi1jb21taXQuY2AsCi1gYnVpbHRpbi1mZXRjaC5jYCwKLWBidWlsdGluLWZzY2suY2AsCi1gYnVpbHRpbi1ybS5jYAorYGJ1aWx0aW4vYWRkLmNgLAorYGJ1aWx0aW4vY2xvbmUuY2AsCitgYnVpbHRpbi9jb21taXQuY2AsCitgYnVpbHRpbi9mZXRjaC5jYCwKK2BidWlsdGluL2ZzY2suY2AsCitgYnVpbHRpbi9ybS5jYAogZm9yIHJlYWwtd29ybGQgZXhhbXBsZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVmLWl0ZXJhdGlvbi50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVmLWl0ZXJhdGlvbi50eHQKaW5kZXggZGJiZWE5NS4uYWExYzUwZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJlZi1pdGVyYXRpb24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZWYtaXRlcmF0aW9uLnR4dApAQCAtMzUsNyArMzUsNyBAQAogKiBgaGVhZF9yZWZfc3VibW9kdWxlKClgLCBgZm9yX2VhY2hfcmVmX3N1Ym1vZHVsZSgpYCwKICAgYGZvcl9lYWNoX3JlZl9pbl9zdWJtb2R1bGUoKWAsIGBmb3JfZWFjaF90YWdfcmVmX3N1Ym1vZHVsZSgpYCwKICAgYGZvcl9lYWNoX2JyYW5jaF9yZWZfc3VibW9kdWxlKClgLCBgZm9yX2VhY2hfcmVtb3RlX3JlZl9zdWJtb2R1bGUoKWAKLSAgZG8gdGhlIHNhbWUgYXMgdGhlIGZ1bmN0aW9ucyBkZXNjaWJlZCBhYm92ZSBidXQgZm9yIGEgc3BlY2lmaWVkCisgIGRvIHRoZSBzYW1lIGFzIHRoZSBmdW5jdGlvbnMgZGVzY3JpYmVkIGFib3ZlIGJ1dCBmb3IgYSBzcGVjaWZpZWQKICAgc3VibW9kdWxlLgogCiAqIGBmb3JfZWFjaF9yYXdyZWYoKWAgY2FuIGJlIHVzZWQgdG8gbGVhcm4gYWJvdXQgYnJva2VuIHJlZiBhbmQgc3ltcmVmLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJlbW90ZS50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVtb3RlLnR4dAppbmRleCBjNTRiMTdkLi40YmU4Nzc2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVtb3RlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmVtb3RlLnR4dApAQCAtMyw3ICszLDcgQEAKIAogVGhlIEFQSSBpbiByZW1vdGUuaCBnaXZlcyBhY2Nlc3MgdG8gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0bwogcmVtb3Rlcy4gSXQgaGFuZGxlcyBhbGwgdGhyZWUgY29uZmlndXJhdGlvbiBtZWNoYW5pc21zIGhpc3RvcmljYWxseQotYW5kIGN1cnJlbnRseSB1c2VkIGJ5IGdpdCwgYW5kIHByZXNlbnRzIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHVuaWZvcm0KK2FuZCBjdXJyZW50bHkgdXNlZCBieSBHaXQsIGFuZCBwcmVzZW50cyB0aGUgaW5mb3JtYXRpb24gaW4gYSB1bmlmb3JtCiBmYXNoaW9uLiBOb3RlIHRoYXQgdGhlIGNvZGUgYWxzbyBoYW5kbGVzIHBsYWluIFVSTHMgd2l0aG91dCBhbnkKIGNvbmZpZ3VyYXRpb24sIGdpdmluZyB0aGVtIGp1c3QgdGhlIGRlZmF1bHQgaW5mb3JtYXRpb24uCiAKQEAgLTQ1LDcgKzQ1LDcgQEAKIGByZWNlaXZlcGFja2AsIGB1cGxvYWRwYWNrYDo6CiAKIAlUaGUgY29uZmlndXJlZCBoZWxwZXIgcHJvZ3JhbXMgdG8gcnVuIG9uIHRoZSByZW1vdGUgc2lkZSwgZm9yCi0JZ2l0LW5hdGl2ZSBwcm90b2NvbHMuCisJR2l0LW5hdGl2ZSBwcm90b2NvbHMuCiAKIGBodHRwX3Byb3h5YDo6CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zaGExLWFycmF5LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zaGExLWFycmF5LnR4dAppbmRleCA0NWQxYzUxLi4zZTc1NDk3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc2hhMS1hcnJheS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXNoYTEtYXJyYXkudHh0CkBAIC0xLDcgKzEsNyBAQAogc2hhMS1hcnJheSBBUEkKID09PT09PT09PT09PT09CiAKLVRoZSBzaGExLWFycmF5IEFQSSBwcm92aWRlcyBzdG9yYWdlIGFuZCBtYW5pcHVsYXRpb24gb2Ygc2V0cyBvZiBTSEExCitUaGUgc2hhMS1hcnJheSBBUEkgcHJvdmlkZXMgc3RvcmFnZSBhbmQgbWFuaXB1bGF0aW9uIG9mIHNldHMgb2YgU0hBLTEKIGlkZW50aWZpZXJzLiBUaGUgZW1waGFzaXMgaXMgb24gc3RvcmFnZSBhbmQgcHJvY2Vzc2luZyBlZmZpY2llbmN5LAogbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGxhcmdlIGxpc3RzLiBOb3RlIHRoYXQgdGhlIG9yZGVyaW5nIG9mIGl0ZW1zIGlzCiBub3QgcHJlc2VydmVkIG92ZXIgc29tZSBvcGVyYXRpb25zLgpAQCAtMTEsNyArMTEsNyBAQAogCiBgc3RydWN0IHNoYTFfYXJyYXlgOjoKIAotCUEgc2luZ2xlIGFycmF5IG9mIFNIQTEgaGFzaGVzLiBUaGlzIHNob3VsZCBiZSBpbml0aWFsaXplZCBieQorCUEgc2luZ2xlIGFycmF5IG9mIFNIQS0xIGhhc2hlcy4gVGhpcyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgYnkKIAlhc3NpZ25tZW50IGZyb20gYFNIQTFfQVJSQVlfSU5JVGAuICBUaGUgYHNoYTFgIG1lbWJlciBjb250YWlucwogCXRoZSBhY3R1YWwgZGF0YS4gVGhlIGBucmAgbWVtYmVyIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4KIAl0aGUgc2V0LiAgVGhlIGBhbGxvY2AgYW5kIGBzb3J0ZWRgIG1lbWJlcnMgYXJlIHVzZWQgaW50ZXJuYWxseSwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdHJidWYudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQKaW5kZXggODQ2ODZiNS4uMzM1MGQ5NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN0cmJ1Zi50eHQKQEAgLTE1Niw2ICsxNTYsMTEgQEAKIAlSZW1vdmUgdGhlIGJ5dGVzIGJldHdlZW4gYHBvcy4ucG9zK2xlbmAgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgZ2l2ZW4KIAlkYXRhLgogCitgc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXNgOjoKKworCUFkZCBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyB0byB0aGUgYnVmZmVyLiBFYWNoIGxpbmUgd2lsbCBiZSBwcmVwZW5kZWQKKwlieSBhIGNvbW1lbnQgY2hhcmFjdGVyIGFuZCBhIGJsYW5rLgorCiBgc3RyYnVmX2FkZGA6OgogCiAJQWRkIGRhdGEgb2YgZ2l2ZW4gbGVuZ3RoIHRvIHRoZSBidWZmZXIuCkBAIC0yMjUsMTAgKzIzMCwyMCBAQAogCWRlc3RpbmF0aW9uLiBUaGlzIGlzIHVzZWZ1bCBmb3IgbGl0ZXJhbCBkYXRhIHRvIGJlIGZlZCB0byBlaXRoZXIKIAlzdHJidWZfZXhwYW5kIG9yIHRvIHRoZSAqcHJpbnRmIGZhbWlseSBvZiBmdW5jdGlvbnMuCiAKK2BzdHJidWZfaHVtYW5pc2VfYnl0ZXNgOjoKKworCUFwcGVuZCB0aGUgZ2l2ZW4gYnl0ZSBzaXplIGFzIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIChpLmUuIDEyLjIzIEtpQiwKKwkzLjUwIE1pQikuCisKIGBzdHJidWZfYWRkZmA6OgogCiAJQWRkIGEgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgYnVmZmVyLgogCitgc3RyYnVmX2NvbW1lbnRlZF9hZGRmYDo6CisKKwlBZGQgYSBmb3JtYXR0ZWQgc3RyaW5nIHByZXBlbmRlZCBieSBhIGNvbW1lbnQgY2hhcmFjdGVyIGFuZCBhCisJYmxhbmsgdG8gdGhlIGJ1ZmZlci4KKwogYHN0cmJ1Zl9mcmVhZGA6OgogCiAJUmVhZCBhIGdpdmVuIHNpemUgb2YgZGF0YSBmcm9tIGEgRklMRSogcG9pbnRlciB0byB0aGUgYnVmZmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2luZGV4LWZvcm1hdC50eHQKaW5kZXggZGNkNTFiOS4uMDgxMDI1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9pbmRleC1mb3JtYXQudHh0CkBAIC0xLDcgKzEsNyBAQAotR0lUIGluZGV4IGZvcm1hdAorR2l0IGluZGV4IGZvcm1hdAogPT09PT09PT09PT09PT09PQogCi09PSBUaGUgZ2l0IGluZGV4IGZpbGUgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0Cis9PSBUaGUgR2l0IGluZGV4IGZpbGUgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0CiAKICAgQWxsIGJpbmFyeSBudW1iZXJzIGFyZSBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuIFZlcnNpb24gMiBpcyBkZXNjcmliZWQKICAgaGVyZSB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4KQEAgLTIxLDkgKzIxLDkgQEAKICAgIC0gRXh0ZW5zaW9ucwogCiAgICAgIEV4dGVuc2lvbnMgYXJlIGlkZW50aWZpZWQgYnkgc2lnbmF0dXJlLiBPcHRpb25hbCBleHRlbnNpb25zIGNhbgotICAgICBiZSBpZ25vcmVkIGlmIEdJVCBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZW0uCisgICAgIGJlIGlnbm9yZWQgaWYgR2l0IGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlbS4KIAotICAgICBHSVQgY3VycmVudGx5IHN1cHBvcnRzIGNhY2hlZCB0cmVlIGFuZCByZXNvbHZlIHVuZG8gZXh0ZW5zaW9ucy4KKyAgICAgR2l0IGN1cnJlbnRseSBzdXBwb3J0cyBjYWNoZWQgdHJlZSBhbmQgcmVzb2x2ZSB1bmRvIGV4dGVuc2lvbnMuCiAKICAgICAgNC1ieXRlIGV4dGVuc2lvbiBzaWduYXR1cmUuIElmIHRoZSBmaXJzdCBieXRlIGlzICdBJy4uJ1onIHRoZQogICAgICBleHRlbnNpb24gaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSBpZ25vcmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1mb3JtYXQudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1mb3JtYXQudHh0CmluZGV4IGYxOTRkMWMuLjhlNWJmNjAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2stZm9ybWF0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLWZvcm1hdC50eHQKQEAgLTEsNCArMSw0IEBACi1HSVQgcGFjayBmb3JtYXQKK0dpdCBwYWNrIGZvcm1hdAogPT09PT09PT09PT09PT09CiAKID09IHBhY2stKi5wYWNrIGZpbGVzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6CkBAIC05LDcgKzksNyBAQAogICAgICAgICAgVGhlIHNpZ25hdHVyZSBpczogeydQJywgJ0EnLCAnQycsICdLJ30KIAogICAgICA0LWJ5dGUgdmVyc2lvbiBudW1iZXIgKG5ldHdvcmsgYnl0ZSBvcmRlcik6Ci0gICAgICAgICBHSVQgY3VycmVudGx5IGFjY2VwdHMgdmVyc2lvbiBudW1iZXIgMiBvciAzIGJ1dAorCSBHaXQgY3VycmVudGx5IGFjY2VwdHMgdmVyc2lvbiBudW1iZXIgMiBvciAzIGJ1dAogICAgICAgICAgZ2VuZXJhdGVzIHZlcnNpb24gMiBvbmx5LgogCiAgICAgIDQtYnl0ZSBudW1iZXIgb2Ygb2JqZWN0cyBjb250YWluZWQgaW4gdGhlIHBhY2sgKG5ldHdvcmsgYnl0ZSBvcmRlcikKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgT2JzZXJ2YXRpb246IGxlbmd0aCBvZiBlYWNoIG9iamVjdCBpcyBlbmNvZGVkIGluIGEgdmFyaWFibGUKICAgICAgbGVuZ3RoIGZvcm1hdCBhbmQgaXMgbm90IGNvbnN0cmFpbmVkIHRvIDMyLWJpdCBvciBhbnl0aGluZy4KIAotICAtIFRoZSB0cmFpbGVyIHJlY29yZHMgMjAtYnl0ZSBTSEExIGNoZWNrc3VtIG9mIGFsbCBvZiB0aGUgYWJvdmUuCisgIC0gVGhlIHRyYWlsZXIgcmVjb3JkcyAyMC1ieXRlIFNIQS0xIGNoZWNrc3VtIG9mIGFsbCBvZiB0aGUgYWJvdmUuCiAKID09IE9yaWdpbmFsICh2ZXJzaW9uIDEpIHBhY2stKi5pZHggZmlsZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKIApAQCAtNTUsMTAgKzU1LDEwIEBACiAKICAgLSBUaGUgZmlsZSBpcyBjb25jbHVkZWQgd2l0aCBhIHRyYWlsZXI6CiAKLSAgICBBIGNvcHkgb2YgdGhlIDIwLWJ5dGUgU0hBMSBjaGVja3N1bSBhdCB0aGUgZW5kIG9mCisgICAgQSBjb3B5IG9mIHRoZSAyMC1ieXRlIFNIQS0xIGNoZWNrc3VtIGF0IHRoZSBlbmQgb2YKICAgICBjb3JyZXNwb25kaW5nIHBhY2tmaWxlLgogCi0gICAgMjAtYnl0ZSBTSEExLWNoZWNrc3VtIG9mIGFsbCBvZiB0aGUgYWJvdmUuCisgICAgMjAtYnl0ZSBTSEEtMS1jaGVja3N1bSBvZiBhbGwgb2YgdGhlIGFib3ZlLgogCiBQYWNrIElkeCBmaWxlOgogCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgSWYgaXQgaXMgbm90IERFTFRBLCB0aGVuIGRlZmxhdGVkIGJ5dGVzICh0aGUgc2l6ZSBhYm92ZQogCQlpcyB0aGUgc2l6ZSBiZWZvcmUgY29tcHJlc3Npb24pLgogCUlmIGl0IGlzIFJFRl9ERUxUQSwgdGhlbgotCSAgMjAtYnl0ZSBiYXNlIG9iamVjdCBuYW1lIFNIQTEgKHRoZSBzaXplIGFib3ZlIGlzIHRoZQorCSAgMjAtYnl0ZSBiYXNlIG9iamVjdCBuYW1lIFNIQS0xICh0aGUgc2l6ZSBhYm92ZSBpcyB0aGUKIAkJc2l6ZSBvZiB0aGUgZGVsdGEgZGF0YSB0aGF0IGZvbGxvd3MpLgogICAgICAgICAgIGRlbHRhIGRhdGEsIGRlZmxhdGVkLgogCUlmIGl0IGlzIE9GU19ERUxUQSwgdGhlbgpAQCAtMTM1LDcgKzEzNSw3IEBACiAKICAgLSBBIDI1Ni1lbnRyeSBmYW4tb3V0IHRhYmxlIGp1c3QgbGlrZSB2MS4KIAotICAtIEEgdGFibGUgb2Ygc29ydGVkIDIwLWJ5dGUgU0hBMSBvYmplY3QgbmFtZXMuICBUaGVzZSBhcmUKKyAgLSBBIHRhYmxlIG9mIHNvcnRlZCAyMC1ieXRlIFNIQS0xIG9iamVjdCBuYW1lcy4gIFRoZXNlIGFyZQogICAgIHBhY2tlZCB0b2dldGhlciB3aXRob3V0IG9mZnNldCB2YWx1ZXMgdG8gcmVkdWNlIHRoZSBjYWNoZQogICAgIGZvb3RwcmludCBvZiB0aGUgYmluYXJ5IHNlYXJjaCBmb3IgYSBzcGVjaWZpYyBvYmplY3QgbmFtZS4KIApAQCAtMTU2LDcgKzE1Niw3IEBACiAKICAgLSBUaGUgc2FtZSB0cmFpbGVyIGFzIGEgdjEgcGFjayBmaWxlOgogCi0gICAgQSBjb3B5IG9mIHRoZSAyMC1ieXRlIFNIQTEgY2hlY2tzdW0gYXQgdGhlIGVuZCBvZgorICAgIEEgY29weSBvZiB0aGUgMjAtYnl0ZSBTSEEtMSBjaGVja3N1bSBhdCB0aGUgZW5kIG9mCiAgICAgY29ycmVzcG9uZGluZyBwYWNrZmlsZS4KIAotICAgIDIwLWJ5dGUgU0hBMS1jaGVja3N1bSBvZiBhbGwgb2YgdGhlIGFib3ZlLgorICAgIDIwLWJ5dGUgU0hBLTEtY2hlY2tzdW0gb2YgYWxsIG9mIHRoZSBhYm92ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2staGV1cmlzdGljcy50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLWhldXJpc3RpY3MudHh0CmluZGV4IDEwM2ViNWQuLjhiN2FlMWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2staGV1cmlzdGljcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1oZXVyaXN0aWNzLnR4dApAQCAtNSwxMSArNSwxMSBAQAogCiAgICAgICAgICAgICAgICAgICBXaGVyZSBkbyBJIGdvCiAgICAgICAgICAgICAgICB0byBsZWFybiB0aGUgZGV0YWlscwotCSAgICBvZiBnaXQncyBwYWNraW5nIGhldXJpc3RpY3M/CisJICAgIG9mIEdpdCdzIHBhY2tpbmcgaGV1cmlzdGljcz8KIAogQmUgY2FyZWZ1bCB3aGF0IHlvdSBhc2shCiAKLUZvbGxvd2VycyBvZiB0aGUgZ2l0LCBwbGVhc2Ugb3BlbiB0aGUgZ2l0IElSQyBMb2cgYW5kIHR1cm4gdG8KK0ZvbGxvd2VycyBvZiB0aGUgR2l0LCBwbGVhc2Ugb3BlbiB0aGUgR2l0IElSQyBMb2cgYW5kIHR1cm4gdG8KIEZlYnJ1YXJ5IDEwLCAyMDA2LgogCiBJdCdzIGEgcmFyZSBvY2Nhc2lvbiwgYW5kIHdlIGFyZSBqb2luZWQgYnkgdGhlIEtpbmcgR2l0IEhpbXNlbGYsCkBAIC0xOSw3ICsxOSw3IEBACiBMZXQncyBsaXN0ZW4gaW4hCiAKICAgICA8bmpzYD4gT2gsIGhlcmUncyBhIHJlYWxseSBzdHVwaWQgcXVlc3Rpb24gLS0gd2hlcmUgZG8gSSBnbyB0bwotICAgICAgICBsZWFybiB0aGUgZGV0YWlscyBvZiBnaXQncyBwYWNraW5nIGhldXJpc3RpY3M/ICBnb29nbGUgYXZhaWxzCisJbGVhcm4gdGhlIGRldGFpbHMgb2YgR2l0J3MgcGFja2luZyBoZXVyaXN0aWNzPyAgZ29vZ2xlIGF2YWlscwogICAgICAgICBtZSBub3QsIHJlYWRpbmcgdGhlIHNvdXJjZSBkaWRuJ3QgaGVscCBhIGxvdCwgYW5kIHdhZGluZwogICAgICAgICB0aHJvdWdoIHRoZSB3aG9sZSBtYWlsaW5nIGxpc3Qgc2VlbXMgbGVzcyBlZmZpY2llbnQgdGhhbiBhbnkKICAgICAgICAgb2YgdGhhdC4KQEAgLTM3LDcgKzM3LDcgQEAKIAogICAgIDxsaW51cz4gbmpzLCBJIGRvbid0IHRoaW5rIHRoZSBkb2NzIGV4aXN0LiBUaGF0J3Mgc29tZXRoaW5nIHdoZXJlCiAJIEkgZG9uJ3QgdGhpbmsgYW55Ym9keSBlbHNlIHRoYW4gbWUgZXZlbiByZWFsbHkgZ290IGludm9sdmVkLgotCSBNb3N0IG9mIHRoZSByZXN0IG9mIGdpdCBvdGhlcnMgaGF2ZSBiZWVuIGJ1c3kgd2l0aCAoZXNwZWNpYWxseQorCSBNb3N0IG9mIHRoZSByZXN0IG9mIEdpdCBvdGhlcnMgaGF2ZSBiZWVuIGJ1c3kgd2l0aCAoZXNwZWNpYWxseQogCSBKdW5pbyksIGJ1dCBwYWNraW5nIG5vYm9keSB0b3VjaGVkIGFmdGVyIEkgZGlkIGl0LgogCiBJdCdzIGNyeXB0aWMsIHlldCB2YWd1ZS4gIExpbnVzIGluIHN0eWxlIGZvciBzdXJlLiAgV2lzZSBtZW4KQEAgLTU3LDcgKzU3LDcgQEAKIAogQW5kIHN3aXRjaC4gIFRoYXQgb3VnaHQgdG8gZG8gaXQhCiAKLSAgICA8bGludXM+IFJlbWVtYmVyOiBnaXQgcmVhbGx5IGRvZXNuJ3QgZm9sbG93IGZpbGVzLiBTbyB3aGF0IGl0IGRvZXMgaXMKKyAgICA8bGludXM+IFJlbWVtYmVyOiBHaXQgcmVhbGx5IGRvZXNuJ3QgZm9sbG93IGZpbGVzLiBTbyB3aGF0IGl0IGRvZXMgaXMKICAgICAgICAgLSBnZW5lcmF0ZSBhIGxpc3Qgb2YgYWxsIG9iamVjdHMKICAgICAgICAgLSBzb3J0IHRoZSBsaXN0IGFjY29yZGluZyB0byBtYWdpYyBoZXVyaXN0aWNzCiAgICAgICAgIC0gd2FsayB0aGUgbGlzdCwgdXNpbmcgYSBzbGlkaW5nIHdpbmRvdywgc2VlaW5nIGlmIGFuIG9iamVjdApAQCAtODksNyArODksNyBAQAogCiAgICAgPGxpbnVzPiBUaGUgIm1hZ2ljIiBpcyBhY3R1YWxseSBpbiB0aGVvcnkgdG90YWxseSBhcmJpdHJhcnkuCiAgICAgICAgIEFOWSBvcmRlciB3aWxsIGdpdmUgeW91IGEgd29ya2luZyBwYWNrLCBidXQgbm8sIGl0J3Mgbm90Ci0gICAgICAgIG9yZGVyZWQgYnkgU0hBMS4KKwlvcmRlcmVkIGJ5IFNIQS0xLgogCiAgICAgICAgIEJlZm9yZSB0YWxraW5nIGFib3V0IHRoZSBvcmRlcmluZyBmb3IgdGhlIHNsaWRpbmcgZGVsdGEKICAgICAgICAgd2luZG93LCBsZXQncyB0YWxrIGFib3V0IHRoZSByZWNlbmN5IG9yZGVyLiBUaGF0J3MgbW9yZQpAQCAtMzgyLDcgKzM4Miw3IEBACiAgICAgPG5qc2A+IChpZiBvbmx5IGl0IGhhcHBlbmVkIG1vcmUuLi4pCiAKICAgICA8bGludXM+IEFueXdheSwgdGhlIHBhY2stZmlsZSBjb3VsZCBlYXNpbHkgYmUgZGVuc2VyIHN0aWxsLCBidXQKLSAgICAgICAgYmVjYXVzZSBpdCdzIHVzZWQgYm90aCBmb3Igc3RyZWFtaW5nICh0aGUgZ2l0IHByb3RvY29sKSBhbmQKKwliZWNhdXNlIGl0J3MgdXNlZCBib3RoIGZvciBzdHJlYW1pbmcgKHRoZSBHaXQgcHJvdG9jb2wpIGFuZAogICAgICAgICBmb3Igb24tZGlzaywgaXQgaGFzIGEgZmV3IHBlc3NpbWl6YXRpb25zLgogCiBBY3R1YWxseSwgaXQgaXMgYSBtYWRlLXVwIHdvcmQuIEJ1dCBpdCBpcyBhIG1hZGUtdXAgd29yZCBiZWluZwpAQCAtNDMyLDEyICs0MzIsMTIgQEAKIEluIGZhY3QsIExpbnVzIHJlZmxlY3RzIG9uIHNvbWUgQmFzaWMgRW5naW5lZXJpbmcgRnVuZGFtZW50YWxzLAogZGVzaWduIG9wdGlvbnMsIGV0Yy4KIAotICAgIDxsaW51cz4gTW9yZSBpbXBvcnRhbnRseSwgdGhleSBhbGxvdyBnaXQgdG8gc3RpbGwgX2NvbmNlcHR1YWxseV8KKyAgICA8bGludXM+IE1vcmUgaW1wb3J0YW50bHksIHRoZXkgYWxsb3cgR2l0IHRvIHN0aWxsIF9jb25jZXB0dWFsbHlfCiAgICAgICAgIG5ldmVyIGRlYWwgd2l0aCBkZWx0YXMgYXQgYWxsLCBhbmQgYmUgYSAid2hvbGUgb2JqZWN0IiBzdG9yZS4KIAogICAgICAgICBXaGljaCBoYXMgc29tZSBwcm9ibGVtcyAod2UgZGlzY3Vzc2VkIGJhZCBodWdlLWZpbGUKLSAgICAgICAgYmVoYXZpb3VyIG9uIHRoZSBnaXQgbGlzdHMgdGhlIG90aGVyIGRheSksIGJ1dCBpdCBkb2VzIG1lYW4KLSAgICAgICAgdGhhdCB0aGUgYmFzaWMgZ2l0IGNvbmNlcHRzIGFyZSByZWFsbHkgcmVhbGx5IHNpbXBsZSBhbmQKKwliZWhhdmlvdXIgb24gdGhlIEdpdCBsaXN0cyB0aGUgb3RoZXIgZGF5KSwgYnV0IGl0IGRvZXMgbWVhbgorCXRoYXQgdGhlIGJhc2ljIEdpdCBjb25jZXB0cyBhcmUgcmVhbGx5IHJlYWxseSBzaW1wbGUgYW5kCiAgICAgICAgIHN0cmFpZ2h0Zm9yd2FyZC4KIAogICAgICAgICBJdCdzIGFsbCBiZWVuIHF1aXRlIHN0YWJsZS4KQEAgLTQ2MSw2ICs0NjEsNiBAQAogICAgIDxuanNgPiA6LSkKIAogICAgIDxuanNgPiBhcHByZWNpYXRlIHRoZSBpbmZvZHVtcCwgSSByZWFsbHkgd2FzIGZhaWxpbmcgdG8gZmluZCB0aGUKLSAgICAgICAgZGV0YWlscyBvbiBnaXQgcGFja3MgOi0pCisJZGV0YWlscyBvbiBHaXQgcGFja3MgOi0pCiAKIEFuZCBub3cgeW91IGtub3cgdGhlIHJlc3Qgb2YgdGhlIHN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFjay1wcm90b2NvbC50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLXByb3RvY29sLnR4dAppbmRleCBmMWE1MWVkLi5iODk4ZTk3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLXByb3RvY29sLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLXByb3RvY29sLnR4dApAQCAtMjI4LDggKzIyOCw3IEBACiBUaGUgY2xpZW50IE1VU1Qgd3JpdGUgYWxsIG9iai1pZHMgd2hpY2ggaXQgb25seSBoYXMgc2hhbGxvdyBjb3BpZXMKIG9mIChtZWFuaW5nIHRoYXQgaXQgZG9lcyBub3QgaGF2ZSB0aGUgcGFyZW50cyBvZiBhIGNvbW1pdCkgYXMKICdzaGFsbG93JyBsaW5lcyBzbyB0aGF0IHRoZSBzZXJ2ZXIgaXMgYXdhcmUgb2YgdGhlIGxpbWl0YXRpb25zIG9mCi10aGUgY2xpZW50J3MgaGlzdG9yeS4gQ2xpZW50cyBNVVNUIE5PVCBtZW50aW9uIGFuIG9iai1pZCB3aGljaAotaXQgZG9lcyBub3Qga25vdyBleGlzdHMgb24gdGhlIHNlcnZlci4KK3RoZSBjbGllbnQncyBoaXN0b3J5LgogCiBUaGUgY2xpZW50IG5vdyBzZW5kcyB0aGUgbWF4aW11bSBjb21taXQgaGlzdG9yeSBkZXB0aCBpdCB3YW50cyBmb3IKIHRoaXMgdHJhbnNhY3Rpb24sIHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgY29tbWl0cyBpdCB3YW50cyBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmFjeS1naXQudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmFjeS1naXQudHh0CmluZGV4IDUzYWEwYzguLjZkYzgyY2EgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQKQEAgLTEsMjEgKzEsMjEgQEAKLVVzZSBvZiBpbmRleCBhbmQgUmFjeSBnaXQgcHJvYmxlbQorVXNlIG9mIGluZGV4IGFuZCBSYWN5IEdpdCBwcm9ibGVtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQmFja2dyb3VuZAogLS0tLS0tLS0tLQogCi1UaGUgaW5kZXggaXMgb25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBkYXRhIHN0cnVjdHVyZXMgaW4gZ2l0LgorVGhlIGluZGV4IGlzIG9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgZGF0YSBzdHJ1Y3R1cmVzIGluIEdpdC4KIEl0IHJlcHJlc2VudHMgYSB2aXJ0dWFsIHdvcmtpbmcgdHJlZSBzdGF0ZSBieSByZWNvcmRpbmcgbGlzdCBvZgogcGF0aHMgYW5kIHRoZWlyIG9iamVjdCBuYW1lcyBhbmQgc2VydmVzIGFzIGEgc3RhZ2luZyBhcmVhIHRvCiB3cml0ZSBvdXQgdGhlIG5leHQgdHJlZSBvYmplY3QgdG8gYmUgY29tbWl0dGVkLiAgVGhlIHN0YXRlIGlzCiAidmlydHVhbCIgaW4gdGhlIHNlbnNlIHRoYXQgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgaGF2ZSB0bywgYW5kCiBvZnRlbiBkb2VzIG5vdCwgbWF0Y2ggdGhlIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUuCiAKLVRoZXJlIGFyZSBjYXNlcyBnaXQgbmVlZHMgdG8gZXhhbWluZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKK1RoZXJlIGFyZSBjYXNlcyBHaXQgbmVlZHMgdG8gZXhhbWluZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKIHZpcnR1YWwgd29ya2luZyB0cmVlIHN0YXRlIGluIHRoZSBpbmRleCBhbmQgdGhlIGZpbGVzIGluIHRoZQogd29ya2luZyB0cmVlLiAgVGhlIG1vc3Qgb2J2aW91cyBjYXNlIGlzIHdoZW4gdGhlIHVzZXIgYXNrcyBgZ2l0CiBkaWZmYCAob3IgaXRzIGxvdyBsZXZlbCBpbXBsZW1lbnRhdGlvbiwgYGdpdCBkaWZmLWZpbGVzYCkgb3IKLWBnaXQtbHMtZmlsZXMgLS1tb2RpZmllZGAuICBJbiBhZGRpdGlvbiwgZ2l0IGludGVybmFsbHkgY2hlY2tzCitgZ2l0LWxzLWZpbGVzIC0tbW9kaWZpZWRgLiAgSW4gYWRkaXRpb24sIEdpdCBpbnRlcm5hbGx5IGNoZWNrcwogaWYgdGhlIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUgYXJlIGRpZmZlcmVudCBmcm9tIHdoYXQgYXJlCiByZWNvcmRlZCBpbiB0aGUgaW5kZXggdG8gYXZvaWQgc3RvbXBpbmcgb24gbG9jYWwgY2hhbmdlcyBpbiB0aGVtCiBkdXJpbmcgcGF0Y2ggYXBwbGljYXRpb24sIHN3aXRjaGluZyBicmFuY2hlcywgYW5kIG1lcmdpbmcuCkBAIC0yNCwxNiArMjQsMTYgQEAKIHdvcmtpbmcgdHJlZSBhbmQgdGhlIGluZGV4IGVudHJpZXMsIHRoZSBpbmRleCBlbnRyaWVzIHJlY29yZCB0aGUKIGluZm9ybWF0aW9uIG9idGFpbmVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdmlhIGBsc3RhdCgyKWAgc3lzdGVtCiBjYWxsIHdoZW4gdGhleSB3ZXJlIGxhc3QgdXBkYXRlZC4gIFdoZW4gY2hlY2tpbmcgaWYgdGhleSBkaWZmZXIsCi1naXQgZmlyc3QgcnVucyBgbHN0YXQoMilgIG9uIHRoZSBmaWxlcyBhbmQgY29tcGFyZXMgdGhlIHJlc3VsdAorR2l0IGZpcnN0IHJ1bnMgYGxzdGF0KDIpYCBvbiB0aGUgZmlsZXMgYW5kIGNvbXBhcmVzIHRoZSByZXN1bHQKIHdpdGggdGhpcyBpbmZvcm1hdGlvbiAodGhpcyBpcyB3aGF0IHdhcyBvcmlnaW5hbGx5IGRvbmUgYnkgdGhlCiBgY2VfbWF0Y2hfc3RhdCgpYCBmdW5jdGlvbiwgYnV0IHRoZSBjdXJyZW50IGNvZGUgZG9lcyBpdCBpbgogYGNlX21hdGNoX3N0YXRfYmFzaWMoKWAgZnVuY3Rpb24pLiAgSWYgc29tZSBvZiB0aGVzZSAiY2FjaGVkCi1zdGF0IGluZm9ybWF0aW9uIiBmaWVsZHMgZG8gbm90IG1hdGNoLCBnaXQgY2FuIHRlbGwgdGhhdCB0aGUKK3N0YXQgaW5mb3JtYXRpb24iIGZpZWxkcyBkbyBub3QgbWF0Y2gsIEdpdCBjYW4gdGVsbCB0aGF0IHRoZQogZmlsZXMgYXJlIG1vZGlmaWVkIHdpdGhvdXQgZXZlbiBsb29raW5nIGF0IHRoZWlyIGNvbnRlbnRzLgogCiBOb3RlOiBub3QgYWxsIG1lbWJlcnMgaW4gYHN0cnVjdCBzdGF0YCBvYnRhaW5lZCB2aWEgYGxzdGF0KDIpYAogYXJlIHVzZWQgZm9yIHRoaXMgY29tcGFyaXNvbi4gIEZvciBleGFtcGxlLCBgc3RfYXRpbWVgIG9idmlvdXNseQotaXMgbm90IHVzZWZ1bC4gIEN1cnJlbnRseSwgZ2l0IGNvbXBhcmVzIHRoZSBmaWxlIHR5cGUgKHJlZ3VsYXIKK2lzIG5vdCB1c2VmdWwuICBDdXJyZW50bHksIEdpdCBjb21wYXJlcyB0aGUgZmlsZSB0eXBlIChyZWd1bGFyCiBmaWxlcyB2cyBzeW1ib2xpYyBsaW5rcykgYW5kIGV4ZWN1dGFibGUgYml0cyAob25seSBmb3IgcmVndWxhcgogZmlsZXMpIGZyb20gYHN0X21vZGVgIG1lbWJlciwgYHN0X210aW1lYCBhbmQgYHN0X2N0aW1lYAogdGltZXN0YW1wcywgYHN0X3VpZGAsIGBzdF9naWRgLCBgc3RfaW5vYCwgYW5kIGBzdF9zaXplYCBtZW1iZXJzLgpAQCAtNDksNyArNDksNyBAQAogKFtQQVRDSF0gU3luYyBpbiBjb3JlIHRpbWUgZ3JhbnVhbGl0eSB3aXRoIGZpbGVzeXN0ZW1zLAogMjAwNS0wMS0wNCkuCiAKLVJhY3kgZ2l0CitSYWN5IEdpdAogLS0tLS0tLS0KIAogVGhlcmUgaXMgb25lIHNsaWdodCBwcm9ibGVtIHdpdGggdGhlIG9wdGltaXphdGlvbiBiYXNlZCBvbiB0aGUKQEAgLTY3LDEzICs2NywxMyBAQAogaW5mb3JtYXRpb24gdGhlIGluZGV4IGVudHJ5IHJlY29yZHMgc3RpbGwgZXhhY3RseSBtYXRjaCB3aGF0IHlvdQogd291bGQgc2VlIGluIHRoZSBmaWxlc3lzdGVtLCBldmVuIHRob3VnaCB0aGUgZmlsZSBgZm9vYCBpcyBub3cKIGRpZmZlcmVudC4KLVRoaXMgd2F5LCBnaXQgY2FuIGluY29ycmVjdGx5IHRoaW5rIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUKK1RoaXMgd2F5LCBHaXQgY2FuIGluY29ycmVjdGx5IHRoaW5rIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUKIGFyZSB1bm1vZGlmaWVkIGV2ZW4gdGhvdWdoIHRoZXkgYWN0dWFsbHkgYXJlLiAgVGhpcyBpcyBjYWxsZWQKLXRoZSAicmFjeSBnaXQiIHByb2JsZW0gKGRpc2NvdmVyZWQgYnkgUGFza3kpLCBhbmQgdGhlIGVudHJpZXMKK3RoZSAicmFjeSBHaXQiIHByb2JsZW0gKGRpc2NvdmVyZWQgYnkgUGFza3kpLCBhbmQgdGhlIGVudHJpZXMKIHRoYXQgYXBwZWFyIGNsZWFuIHdoZW4gdGhleSBtYXkgbm90IGJlIGJlY2F1c2Ugb2YgdGhpcyBwcm9ibGVtCiBhcmUgY2FsbGVkICJyYWNpbHkgY2xlYW4iLgogCi1UbyBhdm9pZCB0aGlzIHByb2JsZW0sIGdpdCBkb2VzIHR3byB0aGluZ3M6CitUbyBhdm9pZCB0aGlzIHByb2JsZW0sIEdpdCBkb2VzIHR3byB0aGluZ3M6CiAKIC4gV2hlbiB0aGUgY2FjaGVkIHN0YXQgaW5mb3JtYXRpb24gc2F5cyB0aGUgZmlsZSBoYXMgbm90IGJlZW4KICAgbW9kaWZpZWQsIGFuZCB0aGUgYHN0X210aW1lYCBpcyB0aGUgc2FtZSBhcyAob3IgbmV3ZXIgdGhhbikKQEAgLTExNiw3ICsxMTYsNyBAQAogVGhlIGxhdHRlciBtYWtlcyBzdXJlIHRoYXQgdGhlIGNhY2hlZCBzdGF0IGluZm9ybWF0aW9uIGZvciBgZm9vYAogd291bGQgbmV2ZXIgbWF0Y2ggd2l0aCB0aGUgZmlsZSBpbiB0aGUgd29ya2luZyB0cmVlLCBzbyBsYXRlcgogY2hlY2tzIGJ5IGBjZV9tYXRjaF9zdGF0X2Jhc2ljKClgIHdvdWxkIHJlcG9ydCB0aGF0IHRoZSBpbmRleCBlbnRyeQotZG9lcyBub3QgbWF0Y2ggdGhlIGZpbGUgYW5kIGdpdCBkb2VzIG5vdCBoYXZlIHRvIGZhbGwgYmFjayBvbiBtb3JlCitkb2VzIG5vdCBtYXRjaCB0aGUgZmlsZSBhbmQgR2l0IGRvZXMgbm90IGhhdmUgdG8gZmFsbCBiYWNrIG9uIG1vcmUKIGV4cGVuc2l2ZSBgY2VfbW9kaWZpZWRfY2hlY2tfZnMoKWAuCiAKIApAQCAtMTU5LDcgKzE1OSw3IEBACiBBdm9pZGluZyBydW50aW1lIHBlbmFsdHkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JbiBvcmRlciB0byBhdm9pZCB0aGUgYWJvdmUgcnVudGltZSBwZW5hbHR5LCBwb3N0IDEuNC4yIGdpdCB1c2VkCitJbiBvcmRlciB0byBhdm9pZCB0aGUgYWJvdmUgcnVudGltZSBwZW5hbHR5LCBwb3N0IDEuNC4yIEdpdCB1c2VkCiB0byBoYXZlIGEgY29kZSB0aGF0IG1hZGUgc3VyZSB0aGUgaW5kZXggZmlsZQogZ290IHRpbWVzdGFtcCBuZXdlciB0aGFuIHRoZSB5b3VuZ2VzdCBmaWxlcyBpbiB0aGUgaW5kZXggd2hlbgogdGhlcmUgYXJlIG1hbnkgeW91bmcgZmlsZXMgd2l0aCB0aGUgc2FtZSB0aW1lc3RhbXAgYXMgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9zaGFsbG93LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3NoYWxsb3cudHh0CmluZGV4IDA1MDJhNTQuLjUxODNiMTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3NoYWxsb3cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3NoYWxsb3cudHh0CkBAIC04LDcgKzgsNyBAQAogdGhlc2UgY29tbWl0cyBoYXZlIG5vIHBhcmVudHMuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotVGhlIGJhc2ljIGlkZWEgaXMgdG8gd3JpdGUgdGhlIFNIQTFzIG9mIHNoYWxsb3cgY29tbWl0cyBpbnRvCitUaGUgYmFzaWMgaWRlYSBpcyB0byB3cml0ZSB0aGUgU0hBLTFzIG9mIHNoYWxsb3cgY29tbWl0cyBpbnRvCiAkR0lUX0RJUi9zaGFsbG93LCBhbmQgaGFuZGxlIGl0cyBjb250ZW50cyBsaWtlIHRoZSBjb250ZW50cwogb2YgJEdJVF9ESVIvaW5mby9ncmFmdHMgKHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCBzaGFsbG93CiBjYW5ub3QgY29udGFpbiBwYXJlbnQgaW5mb3JtYXRpb24pLgpAQCAtMTgsNyArMTgsNyBAQAogYXQgYWxsIChldmVuIHRocm91Z2hvdXQgZGV2ZWxvcG1lbnQgb2YgdGhlIHNoYWxsb3cgY2xvbmUsIGl0CiB3YXMgbmV2ZXIgbWFudWFsbHkgZWRpdGVkISkuCiAKLUVhY2ggbGluZSBjb250YWlucyBleGFjdGx5IG9uZSBTSEExLiBXaGVuIHJlYWQsIGEgY29tbWl0X2dyYWZ0CitFYWNoIGxpbmUgY29udGFpbnMgZXhhY3RseSBvbmUgU0hBLTEuIFdoZW4gcmVhZCwgYSBjb21taXRfZ3JhZnQKIHdpbGwgYmUgY29uc3RydWN0ZWQsIHdoaWNoIGhhcyBucl9wYXJlbnQgPCAwIHRvIG1ha2UgaXQgZWFzaWVyCiB0byBkaXNjZXJuIGZyb20gdXNlciBwcm92aWRlZCBncmFmdHMuCiAKQEAgLTUzLDMgKzUzLDYgQEAKIFlvdSBjYW4gZGVlcGVuIGEgc2hhbGxvdyByZXBvc2l0b3J5IHdpdGggImdpdC1mZXRjaCAtLWRlcHRoIDIwCiByZXBvIGJyYW5jaCIsIHdoaWNoIHdpbGwgZmV0Y2ggYnJhbmNoIGZyb20gcmVwbywgYnV0IHN0b3AgYXQgZGVwdGgKIDIwLCB1cGRhdGluZyAkR0lUX0RJUi9zaGFsbG93LgorCitUaGUgc3BlY2lhbCBkZXB0aCAyMTQ3NDgzNjQ3IChvciAweDdmZmZmZmZmLCB0aGUgbGFyZ2VzdCBwb3NpdGl2ZQorbnVtYmVyIGEgc2lnbmVkIDMyLWJpdCBpbnRlZ2VyIGNhbiBjb250YWluKSBtZWFucyBpbmZpbml0ZSBkZXB0aC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXJscy1yZW1vdGVzLnR4dCBiL0RvY3VtZW50YXRpb24vdXJscy1yZW1vdGVzLnR4dAppbmRleCAwMGY3ZTc5Li4yODI3NThlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3VybHMtcmVtb3Rlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91cmxzLXJlbW90ZXMudHh0CkBAIC02LDcgKzYsNyBAQAogVGhlIG5hbWUgb2Ygb25lIG9mIHRoZSBmb2xsb3dpbmcgY2FuIGJlIHVzZWQgaW5zdGVhZAogb2YgYSBVUkwgYXMgYDxyZXBvc2l0b3J5PmAgYXJndW1lbnQ6CiAKLSogYSByZW1vdGUgaW4gdGhlIGdpdCBjb25maWd1cmF0aW9uIGZpbGU6IGAkR0lUX0RJUi9jb25maWdgLAorKiBhIHJlbW90ZSBpbiB0aGUgR2l0IGNvbmZpZ3VyYXRpb24gZmlsZTogYCRHSVRfRElSL2NvbmZpZ2AsCiAqIGEgZmlsZSBpbiB0aGUgYCRHSVRfRElSL3JlbW90ZXNgIGRpcmVjdG9yeSwgb3IKICogYSBmaWxlIGluIHRoZSBgJEdJVF9ESVIvYnJhbmNoZXNgIGRpcmVjdG9yeS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91cmxzLnR4dCBiL0RvY3VtZW50YXRpb24vdXJscy50eHQKaW5kZXggY2VhNTQ2Mi4uNWUxODVmOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91cmxzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3VybHMudHh0CkBAIC0yMywxNyArMjMsMjMgQEAKIAogLSB7c3RhcnRzYn11c2VyQHtlbmRzYn1ob3N0Lnh6OnBhdGgvdG8vcmVwby5naXQvCiAKK1RoaXMgc3ludGF4IGlzIG9ubHkgcmVjb2duaXplZCBpZiB0aGVyZSBhcmUgbm8gc2xhc2hlcyBiZWZvcmUgdGhlCitmaXJzdCBjb2xvbi4gVGhpcyBoZWxwcyBkaWZmZXJlbnRpYXRlIGEgbG9jYWwgcGF0aCB0aGF0IGNvbnRhaW5zIGEKK2NvbG9uLiBGb3IgZXhhbXBsZSB0aGUgbG9jYWwgcGF0aCBgZm9vOmJhcmAgY291bGQgYmUgc3BlY2lmaWVkIGFzIGFuCithYnNvbHV0ZSBwYXRoIG9yIGAuL2ZvbzpiYXJgIHRvIGF2b2lkIGJlaW5nIG1pc2ludGVycHJldGVkIGFzIGFuIHNzaAordXJsLgorCiBUaGUgc3NoIGFuZCBnaXQgcHJvdG9jb2xzIGFkZGl0aW9uYWxseSBzdXBwb3J0IH51c2VybmFtZSBleHBhbnNpb246CiAKIC0gc3NoOi8ve3N0YXJ0c2J9dXNlckB7ZW5kc2J9aG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9+e3N0YXJ0c2J9dXNlcntlbmRzYn0vcGF0aC90by9yZXBvLmdpdC8KIC0gZ2l0Oi8vaG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9+e3N0YXJ0c2J9dXNlcntlbmRzYn0vcGF0aC90by9yZXBvLmdpdC8KIC0ge3N0YXJ0c2J9dXNlckB7ZW5kc2J9aG9zdC54ejovfntzdGFydHNifXVzZXJ7ZW5kc2J9L3BhdGgvdG8vcmVwby5naXQvCiAKLUZvciBsb2NhbCByZXBvc2l0b3JpZXMsIGFsc28gc3VwcG9ydGVkIGJ5IGdpdCBuYXRpdmVseSwgdGhlIGZvbGxvd2luZworRm9yIGxvY2FsIHJlcG9zaXRvcmllcywgYWxzbyBzdXBwb3J0ZWQgYnkgR2l0IG5hdGl2ZWx5LCB0aGUgZm9sbG93aW5nCiBzeW50YXhlcyBtYXkgYmUgdXNlZDoKIAogLSAvcGF0aC90by9yZXBvLmdpdC8KLS0gZmlsZTovLy9wYXRoL3RvL3JlcG8uZ2l0LworLSBcZmlsZTovLy9wYXRoL3RvL3JlcG8uZ2l0LwogCiBpZm5kZWY6OmdpdC1jbG9uZVtdCiBUaGVzZSB0d28gc3ludGF4ZXMgYXJlIG1vc3RseSBlcXVpdmFsZW50LCBleGNlcHQgd2hlbiBjbG9uaW5nLCB3aGVuCkBAIC00Niw3ICs1Miw3IEBACiAtLWxvY2FsIG9wdGlvbi4KIGVuZGlmOjpnaXQtY2xvbmVbXQogCi1XaGVuIGdpdCBkb2Vzbid0IGtub3cgaG93IHRvIGhhbmRsZSBhIGNlcnRhaW4gdHJhbnNwb3J0IHByb3RvY29sLCBpdAorV2hlbiBHaXQgZG9lc24ndCBrbm93IGhvdyB0byBoYW5kbGUgYSBjZXJ0YWluIHRyYW5zcG9ydCBwcm90b2NvbCwgaXQKIGF0dGVtcHRzIHRvIHVzZSB0aGUgJ3JlbW90ZS08dHJhbnNwb3J0PicgcmVtb3RlIGhlbHBlciwgaWYgb25lCiBleGlzdHMuIFRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIHJlbW90ZSBoZWxwZXIsIHRoZSBmb2xsb3dpbmcgc3ludGF4CiBtYXkgYmUgdXNlZDoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0IGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKaW5kZXggOTg4YzEzZi4uNjQ0YWNjZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKQEAgLTUsNyArNSw3IEBACiBHaXQgaXMgYSBmYXN0IGRpc3RyaWJ1dGVkIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtLgogCiBUaGlzIG1hbnVhbCBpcyBkZXNpZ25lZCB0byBiZSByZWFkYWJsZSBieSBzb21lb25lIHdpdGggYmFzaWMgVU5JWAotY29tbWFuZC1saW5lIHNraWxscywgYnV0IG5vIHByZXZpb3VzIGtub3dsZWRnZSBvZiBnaXQuCitjb21tYW5kLWxpbmUgc2tpbGxzLCBidXQgbm8gcHJldmlvdXMga25vd2xlZGdlIG9mIEdpdC4KIAogPDxyZXBvc2l0b3JpZXMtYW5kLWJyYW5jaGVzPj4gYW5kIDw8ZXhwbG9yaW5nLWdpdC1oaXN0b3J5Pj4gZXhwbGFpbiBob3cKIHRvIGZldGNoIGFuZCBzdHVkeSBhIHByb2plY3QgdXNpbmcgZ2l0LS1yZWFkIHRoZXNlIGNoYXB0ZXJzIHRvIGxlYXJuIGhvdwpAQCAtMTksNyArMTksNyBAQAogCiBDb21wcmVoZW5zaXZlIHJlZmVyZW5jZSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBtYW4KIHBhZ2VzLCBvciBsaW5rZ2l0OmdpdC1oZWxwWzFdIGNvbW1hbmQuICBGb3IgZXhhbXBsZSwgZm9yIHRoZSBjb21tYW5kCi0iZ2l0IGNsb25lIDxyZXBvPiIsIHlvdSBjYW4gZWl0aGVyIHVzZToKK2BnaXQgY2xvbmUgPHJlcG8+YCwgeW91IGNhbiBlaXRoZXIgdXNlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgbWFuIGdpdC1jbG9uZQpAQCAtMzQsNyArMzQsNyBAQAogV2l0aCB0aGUgbGF0dGVyLCB5b3UgY2FuIHVzZSB0aGUgbWFudWFsIHZpZXdlciBvZiB5b3VyIGNob2ljZTsgc2VlCiBsaW5rZ2l0OmdpdC1oZWxwWzFdIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi1TZWUgYWxzbyA8PGdpdC1xdWljay1zdGFydD4+IGZvciBhIGJyaWVmIG92ZXJ2aWV3IG9mIGdpdCBjb21tYW5kcywKK1NlZSBhbHNvIDw8Z2l0LXF1aWNrLXN0YXJ0Pj4gZm9yIGEgYnJpZWYgb3ZlcnZpZXcgb2YgR2l0IGNvbW1hbmRzLAogd2l0aG91dCBhbnkgZXhwbGFuYXRpb24uCiAKIEZpbmFsbHksIHNlZSA8PHRvZG8+PiBmb3Igd2F5cyB0aGF0IHlvdSBjYW4gaGVscCBtYWtlIHRoaXMgbWFudWFsIG1vcmUKQEAgLTQ2LDEwICs0NiwxMCBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PQogCiBbW2hvdy10by1nZXQtYS1naXQtcmVwb3NpdG9yeV1dCi1Ib3cgdG8gZ2V0IGEgZ2l0IHJlcG9zaXRvcnkKK0hvdyB0byBnZXQgYSBHaXQgcmVwb3NpdG9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUl0IHdpbGwgYmUgdXNlZnVsIHRvIGhhdmUgYSBnaXQgcmVwb3NpdG9yeSB0byBleHBlcmltZW50IHdpdGggYXMgeW91CitJdCB3aWxsIGJlIHVzZWZ1bCB0byBoYXZlIGEgR2l0IHJlcG9zaXRvcnkgdG8gZXhwZXJpbWVudCB3aXRoIGFzIHlvdQogcmVhZCB0aGlzIG1hbnVhbC4KIAogVGhlIGJlc3Qgd2F5IHRvIGdldCBvbmUgaXMgYnkgdXNpbmcgdGhlIGxpbmtnaXQ6Z2l0LWNsb25lWzFdIGNvbW1hbmQgdG8KQEAgLTU3LDIwICs1NywyMCBAQAogcHJvamVjdCBpbiBtaW5kLCBoZXJlIGFyZSBzb21lIGludGVyZXN0aW5nIGV4YW1wbGVzOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkjIGdpdCBpdHNlbGYgKGFwcHJveC4gMTBNQiBkb3dubG9hZCk6CisJIyBHaXQgaXRzZWxmIChhcHByb3guIDQwTUIgZG93bmxvYWQpOgogJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9naXQvZ2l0LmdpdAotCSMgdGhlIExpbnV4IGtlcm5lbCAoYXBwcm94LiAxNTBNQiBkb3dubG9hZCk6Ci0kIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXgtMi42LmdpdAorCSMgdGhlIExpbnV4IGtlcm5lbCAoYXBwcm94LiA2NDBNQiBkb3dubG9hZCk6CiskIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIGluaXRpYWwgY2xvbmUgbWF5IGJlIHRpbWUtY29uc3VtaW5nIGZvciBhIGxhcmdlIHByb2plY3QsIGJ1dCB5b3UKIHdpbGwgb25seSBuZWVkIHRvIGNsb25lIG9uY2UuCiAKLVRoZSBjbG9uZSBjb21tYW5kIGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IG5hbWVkIGFmdGVyIHRoZSBwcm9qZWN0ICgiZ2l0Igotb3IgImxpbnV4LTIuNiIgaW4gdGhlIGV4YW1wbGVzIGFib3ZlKS4gIEFmdGVyIHlvdSBjZCBpbnRvIHRoaXMKK1RoZSBjbG9uZSBjb21tYW5kIGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IG5hbWVkIGFmdGVyIHRoZSBwcm9qZWN0IChgZ2l0YAorb3IgYGxpbnV4LTIuNmAgaW4gdGhlIGV4YW1wbGVzIGFib3ZlKS4gIEFmdGVyIHlvdSBjZCBpbnRvIHRoaXMKIGRpcmVjdG9yeSwgeW91IHdpbGwgc2VlIHRoYXQgaXQgY29udGFpbnMgYSBjb3B5IG9mIHRoZSBwcm9qZWN0IGZpbGVzLAogY2FsbGVkIHRoZSA8PGRlZl93b3JraW5nX3RyZWUsd29ya2luZyB0cmVlPj4sIHRvZ2V0aGVyIHdpdGggYSBzcGVjaWFsCi10b3AtbGV2ZWwgZGlyZWN0b3J5IG5hbWVkICIuZ2l0Iiwgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBpbmZvcm1hdGlvbgordG9wLWxldmVsIGRpcmVjdG9yeSBuYW1lZCBgLmdpdGAsIHdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRpb24KIGFib3V0IHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0LgogCiBbW2hvdy10by1jaGVjay1vdXRdXQpAQCAtNzksNyArNzksNyBAQAogCiBHaXQgaXMgYmVzdCB0aG91Z2h0IG9mIGFzIGEgdG9vbCBmb3Igc3RvcmluZyB0aGUgaGlzdG9yeSBvZiBhIGNvbGxlY3Rpb24KIG9mIGZpbGVzLiAgSXQgc3RvcmVzIHRoZSBoaXN0b3J5IGFzIGEgY29tcHJlc3NlZCBjb2xsZWN0aW9uIG9mCi1pbnRlcnJlbGF0ZWQgc25hcHNob3RzIG9mIHRoZSBwcm9qZWN0J3MgY29udGVudHMuICBJbiBnaXQgZWFjaCBzdWNoCitpbnRlcnJlbGF0ZWQgc25hcHNob3RzIG9mIHRoZSBwcm9qZWN0J3MgY29udGVudHMuICBJbiBHaXQgZWFjaCBzdWNoCiB2ZXJzaW9uIGlzIGNhbGxlZCBhIDw8ZGVmX2NvbW1pdCxjb21taXQ+Pi4KIAogVGhvc2Ugc25hcHNob3RzIGFyZW4ndCBuZWNlc3NhcmlseSBhbGwgYXJyYW5nZWQgaW4gYSBzaW5nbGUgbGluZSBmcm9tCkBAIC04Nyw3ICs4Nyw3IEBACiBwYXJhbGxlbCBsaW5lcyBvZiBkZXZlbG9wbWVudCwgY2FsbGVkIDw8ZGVmX2JyYW5jaCxicmFuY2hlcz4+LCB3aGljaCBtYXkKIG1lcmdlIGFuZCBkaXZlcmdlLgogCi1BIHNpbmdsZSBnaXQgcmVwb3NpdG9yeSBjYW4gdHJhY2sgZGV2ZWxvcG1lbnQgb24gbXVsdGlwbGUgYnJhbmNoZXMuICBJdAorQSBzaW5nbGUgR2l0IHJlcG9zaXRvcnkgY2FuIHRyYWNrIGRldmVsb3BtZW50IG9uIG11bHRpcGxlIGJyYW5jaGVzLiAgSXQKIGRvZXMgdGhpcyBieSBrZWVwaW5nIGEgbGlzdCBvZiA8PGRlZl9oZWFkLGhlYWRzPj4gd2hpY2ggcmVmZXJlbmNlIHRoZQogbGF0ZXN0IGNvbW1pdCBvbiBlYWNoIGJyYW5jaDsgdGhlIGxpbmtnaXQ6Z2l0LWJyYW5jaFsxXSBjb21tYW5kIHNob3dzCiB5b3UgdGhlIGxpc3Qgb2YgYnJhbmNoIGhlYWRzOgpAQCAtMTg4LDcgKzE4OCw3IEBACiBkaWQsIGFuZCB3aHkuCiAKIEV2ZXJ5IGNvbW1pdCBoYXMgYSA0MC1oZXhkaWdpdCBpZCwgc29tZXRpbWVzIGNhbGxlZCB0aGUgIm9iamVjdCBuYW1lIiBvciB0aGUKLSJTSEEtMSBpZCIsIHNob3duIG9uIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSAiZ2l0IHNob3ciIG91dHB1dC4gIFlvdSBjYW4gdXN1YWxseQorIlNIQS0xIGlkIiwgc2hvd24gb24gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGBnaXQgc2hvd2Agb3V0cHV0LiAgWW91IGNhbiB1c3VhbGx5CiByZWZlciB0byBhIGNvbW1pdCBieSBhIHNob3J0ZXIgbmFtZSwgc3VjaCBhcyBhIHRhZyBvciBhIGJyYW5jaCBuYW1lLCBidXQgdGhpcwogbG9uZ2VyIG5hbWUgY2FuIGFsc28gYmUgdXNlZnVsLiAgTW9zdCBpbXBvcnRhbnRseSwgaXQgaXMgYSBnbG9iYWxseSB1bmlxdWUKIG5hbWUgZm9yIHRoaXMgY29tbWl0OiBzbyBpZiB5b3UgdGVsbCBzb21lYm9keSBlbHNlIHRoZSBvYmplY3QgbmFtZSAoZm9yCkBAIC0xOTgsNyArMTk4LDcgQEAKIGNvbnRlbnRzIG9mIHRoZSBjb21taXQsIHlvdSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBjb21taXQgY2FuIG5ldmVyIGNoYW5nZQogd2l0aG91dCBpdHMgbmFtZSBhbHNvIGNoYW5naW5nLgogCi1JbiBmYWN0LCBpbiA8PGdpdC1jb25jZXB0cz4+IHdlIHNoYWxsIHNlZSB0aGF0IGV2ZXJ5dGhpbmcgc3RvcmVkIGluIGdpdAorSW4gZmFjdCwgaW4gPDxnaXQtY29uY2VwdHM+PiB3ZSBzaGFsbCBzZWUgdGhhdCBldmVyeXRoaW5nIHN0b3JlZCBpbiBHaXQKIGhpc3RvcnksIGluY2x1ZGluZyBmaWxlIGRhdGEgYW5kIGRpcmVjdG9yeSBjb250ZW50cywgaXMgc3RvcmVkIGluIGFuIG9iamVjdAogd2l0aCBhIG5hbWUgdGhhdCBpcyBhIGhhc2ggb2YgaXRzIGNvbnRlbnRzLgogCkBAIC0yMTEsNyArMjExLDcgQEAKIEZvbGxvd2luZyB0aGUgY2hhaW4gb2YgcGFyZW50cyB3aWxsIGV2ZW50dWFsbHkgdGFrZSB5b3UgYmFjayB0byB0aGUKIGJlZ2lubmluZyBvZiB0aGUgcHJvamVjdC4KIAotSG93ZXZlciwgdGhlIGNvbW1pdHMgZG8gbm90IGZvcm0gYSBzaW1wbGUgbGlzdDsgZ2l0IGFsbG93cyBsaW5lcyBvZgorSG93ZXZlciwgdGhlIGNvbW1pdHMgZG8gbm90IGZvcm0gYSBzaW1wbGUgbGlzdDsgR2l0IGFsbG93cyBsaW5lcyBvZgogZGV2ZWxvcG1lbnQgdG8gZGl2ZXJnZSBhbmQgdGhlbiByZWNvbnZlcmdlLCBhbmQgdGhlIHBvaW50IHdoZXJlIHR3bwogbGluZXMgb2YgZGV2ZWxvcG1lbnQgcmVjb252ZXJnZSBpcyBjYWxsZWQgYSAibWVyZ2UiLiAgVGhlIGNvbW1pdAogcmVwcmVzZW50aW5nIGEgbWVyZ2UgY2FuIHRoZXJlZm9yZSBoYXZlIG1vcmUgdGhhbiBvbmUgcGFyZW50LCB3aXRoCkBAIC0yMTksOCArMjE5LDggQEAKIG9mIGRldmVsb3BtZW50IGxlYWRpbmcgdG8gdGhhdCBwb2ludC4KIAogVGhlIGJlc3Qgd2F5IHRvIHNlZSBob3cgdGhpcyB3b3JrcyBpcyB1c2luZyB0aGUgbGlua2dpdDpnaXRrWzFdCi1jb21tYW5kOyBydW5uaW5nIGdpdGsgbm93IG9uIGEgZ2l0IHJlcG9zaXRvcnkgYW5kIGxvb2tpbmcgZm9yIG1lcmdlCi1jb21taXRzIHdpbGwgaGVscCB1bmRlcnN0YW5kIGhvdyB0aGUgZ2l0IG9yZ2FuaXplcyBoaXN0b3J5LgorY29tbWFuZDsgcnVubmluZyBnaXRrIG5vdyBvbiBhIEdpdCByZXBvc2l0b3J5IGFuZCBsb29raW5nIGZvciBtZXJnZQorY29tbWl0cyB3aWxsIGhlbHAgdW5kZXJzdGFuZCBob3cgdGhlIEdpdCBvcmdhbml6ZXMgaGlzdG9yeS4KIAogSW4gdGhlIGZvbGxvd2luZywgd2Ugc2F5IHRoYXQgY29tbWl0IFggaXMgInJlYWNoYWJsZSIgZnJvbSBjb21taXQgWQogaWYgY29tbWl0IFggaXMgYW4gYW5jZXN0b3Igb2YgY29tbWl0IFkuICBFcXVpdmFsZW50bHksIHlvdSBjb3VsZCBzYXkKQEAgLTIzMSw3ICsyMzEsNyBAQAogVW5kZXJzdGFuZGluZyBoaXN0b3J5OiBIaXN0b3J5IGRpYWdyYW1zCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotV2Ugd2lsbCBzb21ldGltZXMgcmVwcmVzZW50IGdpdCBoaXN0b3J5IHVzaW5nIGRpYWdyYW1zIGxpa2UgdGhlIG9uZQorV2Ugd2lsbCBzb21ldGltZXMgcmVwcmVzZW50IEdpdCBoaXN0b3J5IHVzaW5nIGRpYWdyYW1zIGxpa2UgdGhlIG9uZQogYmVsb3cuICBDb21taXRzIGFyZSBzaG93biBhcyAibyIsIGFuZCB0aGUgbGlua3MgYmV0d2VlbiB0aGVtIHdpdGgKIGxpbmVzIGRyYXduIHdpdGggLSAvIGFuZCBcLiAgVGltZSBnb2VzIGxlZnQgdG8gcmlnaHQ6CiAKQEAgLTI2OCwzNSArMjY4LDM1IEBACiBDcmVhdGluZywgZGVsZXRpbmcsIGFuZCBtb2RpZnlpbmcgYnJhbmNoZXMgaXMgcXVpY2sgYW5kIGVhc3k7IGhlcmUncwogYSBzdW1tYXJ5IG9mIHRoZSBjb21tYW5kczoKIAotZ2l0IGJyYW5jaDo6CitgZ2l0IGJyYW5jaGA6OgogCWxpc3QgYWxsIGJyYW5jaGVzCi1naXQgYnJhbmNoIDxicmFuY2g+OjoKLQljcmVhdGUgYSBuZXcgYnJhbmNoIG5hbWVkIDxicmFuY2g+LCByZWZlcmVuY2luZyB0aGUgc2FtZQorYGdpdCBicmFuY2ggPGJyYW5jaD5gOjoKKwljcmVhdGUgYSBuZXcgYnJhbmNoIG5hbWVkIGA8YnJhbmNoPmAsIHJlZmVyZW5jaW5nIHRoZSBzYW1lCiAJcG9pbnQgaW4gaGlzdG9yeSBhcyB0aGUgY3VycmVudCBicmFuY2gKLWdpdCBicmFuY2ggPGJyYW5jaD4gPHN0YXJ0LXBvaW50Pjo6Ci0JY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCA8YnJhbmNoPiwgcmVmZXJlbmNpbmcKLQk8c3RhcnQtcG9pbnQ+LCB3aGljaCBtYXkgYmUgc3BlY2lmaWVkIGFueSB3YXkgeW91IGxpa2UsCitgZ2l0IGJyYW5jaCA8YnJhbmNoPiA8c3RhcnQtcG9pbnQ+YDo6CisJY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCBgPGJyYW5jaD5gLCByZWZlcmVuY2luZworCWA8c3RhcnQtcG9pbnQ+YCwgd2hpY2ggbWF5IGJlIHNwZWNpZmllZCBhbnkgd2F5IHlvdSBsaWtlLAogCWluY2x1ZGluZyB1c2luZyBhIGJyYW5jaCBuYW1lIG9yIGEgdGFnIG5hbWUKLWdpdCBicmFuY2ggLWQgPGJyYW5jaD46OgotCWRlbGV0ZSB0aGUgYnJhbmNoIDxicmFuY2g+OyBpZiB0aGUgYnJhbmNoIHlvdSBhcmUgZGVsZXRpbmcKK2BnaXQgYnJhbmNoIC1kIDxicmFuY2g+YDo6CisJZGVsZXRlIHRoZSBicmFuY2ggYDxicmFuY2g+YDsgaWYgdGhlIGJyYW5jaCB5b3UgYXJlIGRlbGV0aW5nCiAJcG9pbnRzIHRvIGEgY29tbWl0IHdoaWNoIGlzIG5vdCByZWFjaGFibGUgZnJvbSB0aGUgY3VycmVudAogCWJyYW5jaCwgdGhpcyBjb21tYW5kIHdpbGwgZmFpbCB3aXRoIGEgd2FybmluZy4KLWdpdCBicmFuY2ggLUQgPGJyYW5jaD46OgorYGdpdCBicmFuY2ggLUQgPGJyYW5jaD5gOjoKIAlldmVuIGlmIHRoZSBicmFuY2ggcG9pbnRzIHRvIGEgY29tbWl0IG5vdCByZWFjaGFibGUKIAlmcm9tIHRoZSBjdXJyZW50IGJyYW5jaCwgeW91IG1heSBrbm93IHRoYXQgdGhhdCBjb21taXQKIAlpcyBzdGlsbCByZWFjaGFibGUgZnJvbSBzb21lIG90aGVyIGJyYW5jaCBvciB0YWcuICBJbiB0aGF0Ci0JY2FzZSBpdCBpcyBzYWZlIHRvIHVzZSB0aGlzIGNvbW1hbmQgdG8gZm9yY2UgZ2l0IHRvIGRlbGV0ZQorCWNhc2UgaXQgaXMgc2FmZSB0byB1c2UgdGhpcyBjb21tYW5kIHRvIGZvcmNlIEdpdCB0byBkZWxldGUKIAl0aGUgYnJhbmNoLgotZ2l0IGNoZWNrb3V0IDxicmFuY2g+OjoKLQltYWtlIHRoZSBjdXJyZW50IGJyYW5jaCA8YnJhbmNoPiwgdXBkYXRpbmcgdGhlIHdvcmtpbmcKLQlkaXJlY3RvcnkgdG8gcmVmbGVjdCB0aGUgdmVyc2lvbiByZWZlcmVuY2VkIGJ5IDxicmFuY2g+Ci1naXQgY2hlY2tvdXQgLWIgPG5ldz4gPHN0YXJ0LXBvaW50Pjo6Ci0JY3JlYXRlIGEgbmV3IGJyYW5jaCA8bmV3PiByZWZlcmVuY2luZyA8c3RhcnQtcG9pbnQ+LCBhbmQKK2BnaXQgY2hlY2tvdXQgPGJyYW5jaD5gOjoKKwltYWtlIHRoZSBjdXJyZW50IGJyYW5jaCBgPGJyYW5jaD5gLCB1cGRhdGluZyB0aGUgd29ya2luZworCWRpcmVjdG9yeSB0byByZWZsZWN0IHRoZSB2ZXJzaW9uIHJlZmVyZW5jZWQgYnkgYDxicmFuY2g+YAorYGdpdCBjaGVja291dCAtYiA8bmV3PiA8c3RhcnQtcG9pbnQ+YDo6CisJY3JlYXRlIGEgbmV3IGJyYW5jaCBgPG5ldz5gIHJlZmVyZW5jaW5nIGA8c3RhcnQtcG9pbnQ+YCwgYW5kCiAJY2hlY2sgaXQgb3V0LgogCiBUaGUgc3BlY2lhbCBzeW1ib2wgIkhFQUQiIGNhbiBhbHdheXMgYmUgdXNlZCB0byByZWZlciB0byB0aGUgY3VycmVudAotYnJhbmNoLiAgSW4gZmFjdCwgZ2l0IHVzZXMgYSBmaWxlIG5hbWVkICJIRUFEIiBpbiB0aGUgLmdpdCBkaXJlY3RvcnkgdG8KLXJlbWVtYmVyIHdoaWNoIGJyYW5jaCBpcyBjdXJyZW50OgorYnJhbmNoLiAgSW4gZmFjdCwgR2l0IHVzZXMgYSBmaWxlIG5hbWVkIGBIRUFEYCBpbiB0aGUgYC5naXRgIGRpcmVjdG9yeQordG8gcmVtZW1iZXIgd2hpY2ggYnJhbmNoIGlzIGN1cnJlbnQ6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBjYXQgLmdpdC9IRUFECkBAIC0zNDYsNyArMzQ2LDcgQEAKIG1heSBhbHNvIGhhdmUgaGFkIG90aGVyIGJyYW5jaGVzLCB0aG91Z2gsIGFuZCB5b3VyIGxvY2FsIHJlcG9zaXRvcnkKIGtlZXBzIGJyYW5jaGVzIHdoaWNoIHRyYWNrIGVhY2ggb2YgdGhvc2UgcmVtb3RlIGJyYW5jaGVzLCBjYWxsZWQKIHJlbW90ZS10cmFja2luZyBicmFuY2hlcywgd2hpY2ggeW91Ci1jYW4gdmlldyB1c2luZyB0aGUgIi1yIiBvcHRpb24gdG8gbGlua2dpdDpnaXQtYnJhbmNoWzFdOgorY2FuIHZpZXcgdXNpbmcgdGhlIGAtcmAgb3B0aW9uIHRvIGxpbmtnaXQ6Z2l0LWJyYW5jaFsxXToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBicmFuY2ggLXIKQEAgLTM2NCw3ICszNjQsNyBAQAogZm9yIHNob3J0LiBUaGUgYnJhbmNoZXMgb2YgdGhpcyByZXBvc2l0b3J5IGFyZSBjYWxsZWQgInJlbW90ZQogYnJhbmNoZXMiIGZyb20gb3VyIHBvaW50IG9mIHZpZXcuIFRoZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgbGlzdGVkCiBhYm92ZSB3ZXJlIGNyZWF0ZWQgYmFzZWQgb24gdGhlIHJlbW90ZSBicmFuY2hlcyBhdCBjbG9uZSB0aW1lIGFuZCB3aWxsCi1iZSB1cGRhdGVkIGJ5ICJnaXQgZmV0Y2giIChoZW5jZSAiZ2l0IHB1bGwiKSBhbmQgImdpdCBwdXNoIi4gU2VlCitiZSB1cGRhdGVkIGJ5IGBnaXQgZmV0Y2hgIChoZW5jZSBgZ2l0IHB1bGxgKSBhbmQgYGdpdCBwdXNoYC4gU2VlCiA8PFVwZGF0aW5nLWEtcmVwb3NpdG9yeS1XaXRoLWdpdC1mZXRjaD4+IGZvciBkZXRhaWxzLgogCiBZb3UgbWlnaHQgd2FudCB0byBidWlsZCBvbiBvbmUgb2YgdGhlc2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzCkBAIC0zNzQsMTAgKzM3NCwxMCBAQAogJCBnaXQgY2hlY2tvdXQgLWIgbXktdG9kby1jb3B5IG9yaWdpbi90b2RvCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotWW91IGNhbiBhbHNvIGNoZWNrIG91dCAib3JpZ2luL3RvZG8iIGRpcmVjdGx5IHRvIGV4YW1pbmUgaXQgb3IKK1lvdSBjYW4gYWxzbyBjaGVjayBvdXQgYG9yaWdpbi90b2RvYCBkaXJlY3RseSB0byBleGFtaW5lIGl0IG9yCiB3cml0ZSBhIG9uZS1vZmYgcGF0Y2guICBTZWUgPDxkZXRhY2hlZC1oZWFkLGRldGFjaGVkIGhlYWQ+Pi4KIAotTm90ZSB0aGF0IHRoZSBuYW1lICJvcmlnaW4iIGlzIGp1c3QgdGhlIG5hbWUgdGhhdCBnaXQgdXNlcyBieSBkZWZhdWx0CitOb3RlIHRoYXQgdGhlIG5hbWUgIm9yaWdpbiIgaXMganVzdCB0aGUgbmFtZSB0aGF0IEdpdCB1c2VzIGJ5IGRlZmF1bHQKIHRvIHJlZmVyIHRvIHRoZSByZXBvc2l0b3J5IHRoYXQgeW91IGNsb25lZCBmcm9tLgogCiBbW2hvdy1naXQtc3RvcmVzLXJlZmVyZW5jZXNdXQpAQCAtMzg2LDE3ICszODYsMTcgQEAKIAogQnJhbmNoZXMsIHJlbW90ZS10cmFja2luZyBicmFuY2hlcywgYW5kIHRhZ3MgYXJlIGFsbCByZWZlcmVuY2VzIHRvCiBjb21taXRzLiAgQWxsIHJlZmVyZW5jZXMgYXJlIG5hbWVkIHdpdGggYSBzbGFzaC1zZXBhcmF0ZWQgcGF0aCBuYW1lCi1zdGFydGluZyB3aXRoICJyZWZzIjsgdGhlIG5hbWVzIHdlJ3ZlIGJlZW4gdXNpbmcgc28gZmFyIGFyZSBhY3R1YWxseQorc3RhcnRpbmcgd2l0aCBgcmVmc2A7IHRoZSBuYW1lcyB3ZSd2ZSBiZWVuIHVzaW5nIHNvIGZhciBhcmUgYWN0dWFsbHkKIHNob3J0aGFuZDoKIAotCS0gVGhlIGJyYW5jaCAidGVzdCIgaXMgc2hvcnQgZm9yICJyZWZzL2hlYWRzL3Rlc3QiLgotCS0gVGhlIHRhZyAidjIuNi4xOCIgaXMgc2hvcnQgZm9yICJyZWZzL3RhZ3MvdjIuNi4xOCIuCi0JLSAib3JpZ2luL21hc3RlciIgaXMgc2hvcnQgZm9yICJyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIuCisJLSBUaGUgYnJhbmNoIGB0ZXN0YCBpcyBzaG9ydCBmb3IgYHJlZnMvaGVhZHMvdGVzdGAuCisJLSBUaGUgdGFnIGB2Mi42LjE4YCBpcyBzaG9ydCBmb3IgYHJlZnMvdGFncy92Mi42LjE4YC4KKwktIGBvcmlnaW4vbWFzdGVyYCBpcyBzaG9ydCBmb3IgYHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyYC4KIAogVGhlIGZ1bGwgbmFtZSBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIGlmLCBmb3IgZXhhbXBsZSwgdGhlcmUgZXZlcgogZXhpc3RzIGEgdGFnIGFuZCBhIGJyYW5jaCB3aXRoIHRoZSBzYW1lIG5hbWUuCiAKLShOZXdseSBjcmVhdGVkIHJlZnMgYXJlIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgLmdpdC9yZWZzIGRpcmVjdG9yeSwKKyhOZXdseSBjcmVhdGVkIHJlZnMgYXJlIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgYC5naXQvcmVmc2AgZGlyZWN0b3J5LAogdW5kZXIgdGhlIHBhdGggZ2l2ZW4gYnkgdGhlaXIgbmFtZS4gIEhvd2V2ZXIsIGZvciBlZmZpY2llbmN5IHJlYXNvbnMKIHRoZXkgbWF5IGFsc28gYmUgcGFja2VkIHRvZ2V0aGVyIGluIGEgc2luZ2xlIGZpbGU7IHNlZQogbGlua2dpdDpnaXQtcGFjay1yZWZzWzFdKS4KQEAgLTQwNSw3ICs0MDUsNyBAQAogdG8ganVzdCB1c2luZyB0aGUgbmFtZSBvZiB0aGF0IHJlcG9zaXRvcnkuICBTbywgZm9yIGV4YW1wbGUsICJvcmlnaW4iCiBpcyB1c3VhbGx5IGEgc2hvcnRjdXQgZm9yIHRoZSBIRUFEIGJyYW5jaCBpbiB0aGUgcmVwb3NpdG9yeSAib3JpZ2luIi4KIAotRm9yIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHBhdGhzIHdoaWNoIGdpdCBjaGVja3MgZm9yIHJlZmVyZW5jZXMsIGFuZAorRm9yIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHBhdGhzIHdoaWNoIEdpdCBjaGVja3MgZm9yIHJlZmVyZW5jZXMsIGFuZAogdGhlIG9yZGVyIGl0IHVzZXMgdG8gZGVjaWRlIHdoaWNoIHRvIGNob29zZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZQogcmVmZXJlbmNlcyB3aXRoIHRoZSBzYW1lIHNob3J0aGFuZCBuYW1lLCBzZWUgdGhlICJTUEVDSUZZSU5HCiBSRVZJU0lPTlMiIHNlY3Rpb24gb2YgbGlua2dpdDpnaXRyZXZpc2lvbnNbN10uCkBAIC00MTgsNyArNDE4LDcgQEAKIHJlcG9zaXRvcnksIGNyZWF0aW5nIG5ldyBjb21taXRzIGFuZCBhZHZhbmNpbmcgdGhlIGJyYW5jaGVzIHRvIHBvaW50CiBhdCB0aGUgbmV3IGNvbW1pdHMuCiAKLVRoZSBjb21tYW5kICJnaXQgZmV0Y2giLCB3aXRoIG5vIGFyZ3VtZW50cywgd2lsbCB1cGRhdGUgYWxsIG9mIHRoZQorVGhlIGNvbW1hbmQgYGdpdCBmZXRjaGAsIHdpdGggbm8gYXJndW1lbnRzLCB3aWxsIHVwZGF0ZSBhbGwgb2YgdGhlCiByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIGZvdW5kIGluIGhlcgogcmVwb3NpdG9yeS4gIEl0IHdpbGwgbm90IHRvdWNoIGFueSBvZiB5b3VyIG93biBicmFuY2hlcy0tbm90IGV2ZW4gdGhlCiAibWFzdGVyIiBicmFuY2ggdGhhdCB3YXMgY3JlYXRlZCBmb3IgeW91IG9uIGNsb25lLgpAQCAtNDM4LDcgKzQzOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE5ldyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgd2lsbCBiZSBzdG9yZWQgdW5kZXIgdGhlIHNob3J0aGFuZCBuYW1lCi10aGF0IHlvdSBnYXZlICJnaXQgcmVtb3RlIGFkZCIsIGluIHRoaXMgY2FzZSBsaW51eC1uZnM6Cit0aGF0IHlvdSBnYXZlIGBnaXQgcmVtb3RlIGFkZGAsIGluIHRoaXMgY2FzZSBgbGludXgtbmZzYDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgYnJhbmNoIC1yCkBAIC00NDYsMTAgKzQ0NiwxMCBAQAogb3JpZ2luL21hc3RlcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JZiB5b3UgcnVuICJnaXQgZmV0Y2ggPHJlbW90ZT4iIGxhdGVyLCB0aGUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIGZvciB0aGUKLW5hbWVkIDxyZW1vdGU+IHdpbGwgYmUgdXBkYXRlZC4KK0lmIHlvdSBydW4gYGdpdCBmZXRjaCA8cmVtb3RlPmAgbGF0ZXIsIHRoZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMKK2ZvciB0aGUgbmFtZWQgYDxyZW1vdGU+YCB3aWxsIGJlIHVwZGF0ZWQuCiAKLUlmIHlvdSBleGFtaW5lIHRoZSBmaWxlIC5naXQvY29uZmlnLCB5b3Ugd2lsbCBzZWUgdGhhdCBnaXQgaGFzIGFkZGVkCitJZiB5b3UgZXhhbWluZSB0aGUgZmlsZSBgLmdpdC9jb25maWdgLCB5b3Ugd2lsbCBzZWUgdGhhdCBHaXQgaGFzIGFkZGVkCiBhIG5ldyBzdGFuemE6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2MSwxMyArNDYxLDEzIEBACiAuLi4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBpcyB3aGF0IGNhdXNlcyBnaXQgdG8gdHJhY2sgdGhlIHJlbW90ZSdzIGJyYW5jaGVzOyB5b3UgbWF5IG1vZGlmeQotb3IgZGVsZXRlIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBieSBlZGl0aW5nIC5naXQvY29uZmlnIHdpdGggYQorVGhpcyBpcyB3aGF0IGNhdXNlcyBHaXQgdG8gdHJhY2sgdGhlIHJlbW90ZSdzIGJyYW5jaGVzOyB5b3UgbWF5IG1vZGlmeQorb3IgZGVsZXRlIHRoZXNlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBieSBlZGl0aW5nIGAuZ2l0L2NvbmZpZ2Agd2l0aCBhCiB0ZXh0IGVkaXRvci4gIChTZWUgdGhlICJDT05GSUdVUkFUSU9OIEZJTEUiIHNlY3Rpb24gb2YKIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSBmb3IgZGV0YWlscy4pCiAKIFtbZXhwbG9yaW5nLWdpdC1oaXN0b3J5XV0KLUV4cGxvcmluZyBnaXQgaGlzdG9yeQorRXhwbG9yaW5nIEdpdCBoaXN0b3J5CiA9PT09PT09PT09PT09PT09PT09PT0KIAogR2l0IGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIHRvb2wgZm9yIHN0b3JpbmcgdGhlIGhpc3Rvcnkgb2YgYQpAQCAtNDk5LDcgKzQ5OSw3IEBACiBbNjU5MzRhOWEwMjhiODhlODNlMmIwZjhiMzY2MThmZTUwMzM0OWY4ZV0gQkxPQ0s6IE1ha2UgVVNCIHN0b3JhZ2UgZGVwZW5kIG9uIFNDU0kgcmF0aGVyIHRoYW4gc2VsZWN0aW5nIGl0IFt0cnkgIzZdCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUlmIHlvdSBydW4gImdpdCBicmFuY2giIGF0IHRoaXMgcG9pbnQsIHlvdSdsbCBzZWUgdGhhdCBnaXQgaGFzCitJZiB5b3UgcnVuIGBnaXQgYnJhbmNoYCBhdCB0aGlzIHBvaW50LCB5b3UnbGwgc2VlIHRoYXQgR2l0IGhhcwogdGVtcG9yYXJpbHkgbW92ZWQgeW91IGluICIobm8gYnJhbmNoKSIuIEhFQUQgaXMgbm93IGRldGFjaGVkIGZyb20gYW55CiBicmFuY2ggYW5kIHBvaW50cyBkaXJlY3RseSB0byBhIGNvbW1pdCAod2l0aCBjb21taXQgaWQgNjU5MzQuLi4pIHRoYXQKIGlzIHJlYWNoYWJsZSBmcm9tICJtYXN0ZXIiIGJ1dCBub3QgZnJvbSB2Mi42LjE4LiBDb21waWxlIGFuZCB0ZXN0IGl0LApAQCAtNTExLDcgKzUxMSw3IEBACiBbN2VmZjgyYzhiMTUxMTAxN2FlNjA1ZjBjOTlhYzI3NWE3ZTIxYjg2N10gaTJjLWNvcmU6IERyb3AgdXNlbGVzcyBiaXRtYXNraW5ncwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jaGVja3Mgb3V0IGFuIG9sZGVyIHZlcnNpb24uICBDb250aW51ZSBsaWtlIHRoaXMsIHRlbGxpbmcgZ2l0IGF0IGVhY2gKK2NoZWNrcyBvdXQgYW4gb2xkZXIgdmVyc2lvbi4gIENvbnRpbnVlIGxpa2UgdGhpcywgdGVsbGluZyBHaXQgYXQgZWFjaAogc3RhZ2Ugd2hldGhlciB0aGUgdmVyc2lvbiBpdCBnaXZlcyB5b3UgaXMgZ29vZCBvciBiYWQsIGFuZCBub3RpY2UKIHRoYXQgdGhlIG51bWJlciBvZiByZXZpc2lvbnMgbGVmdCB0byB0ZXN0IGlzIGN1dCBhcHByb3hpbWF0ZWx5IGluCiBoYWxmIGVhY2ggdGltZS4KQEAgLTU0NSwyNCArNTQ1LDI0IEBACiAkIGdpdCByZXNldCAtLWhhcmQgZmI0N2RkYjJkYi4uLgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi10aGVuIHRlc3QsIHJ1biAiYmlzZWN0IGdvb2QiIG9yICJiaXNlY3QgYmFkIiBhcyBhcHByb3ByaWF0ZSwgYW5kCit0aGVuIHRlc3QsIHJ1biBgYmlzZWN0IGdvb2RgIG9yIGBiaXNlY3QgYmFkYCBhcyBhcHByb3ByaWF0ZSwgYW5kCiBjb250aW51ZS4KIAotSW5zdGVhZCBvZiAiZ2l0IGJpc2VjdCB2aXN1YWxpemUiIGFuZCB0aGVuICJnaXQgcmVzZXQgLS1oYXJkCi1mYjQ3ZGRiMmRiLi4uIiwgeW91IG1pZ2h0IGp1c3Qgd2FudCB0byB0ZWxsIGdpdCB0aGF0IHlvdSB3YW50IHRvIHNraXAKK0luc3RlYWQgb2YgYGdpdCBiaXNlY3QgdmlzdWFsaXplYCBhbmQgdGhlbiBgZ2l0IHJlc2V0IC0taGFyZAorZmI0N2RkYjJkYi4uLmAsIHlvdSBtaWdodCBqdXN0IHdhbnQgdG8gdGVsbCBHaXQgdGhhdCB5b3Ugd2FudCB0byBza2lwCiB0aGUgY3VycmVudCBjb21taXQ6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGJpc2VjdCBza2lwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUluIHRoaXMgY2FzZSwgdGhvdWdoLCBnaXQgbWF5IG5vdCBldmVudHVhbGx5IGJlIGFibGUgdG8gdGVsbCB0aGUgZmlyc3QKK0luIHRoaXMgY2FzZSwgdGhvdWdoLCBHaXQgbWF5IG5vdCBldmVudHVhbGx5IGJlIGFibGUgdG8gdGVsbCB0aGUgZmlyc3QKIGJhZCBvbmUgYmV0d2VlbiBzb21lIGZpcnN0IHNraXBwZWQgY29tbWl0cyBhbmQgYSBsYXRlciBiYWQgY29tbWl0LgogCiBUaGVyZSBhcmUgYWxzbyB3YXlzIHRvIGF1dG9tYXRlIHRoZSBiaXNlY3RpbmcgcHJvY2VzcyBpZiB5b3UgaGF2ZSBhCiB0ZXN0IHNjcmlwdCB0aGF0IGNhbiB0ZWxsIGEgZ29vZCBmcm9tIGEgYmFkIGNvbW1pdC4gU2VlCi1saW5rZ2l0OmdpdC1iaXNlY3RbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBhbmQgb3RoZXIgImdpdAotYmlzZWN0IiBmZWF0dXJlcy4KK2xpbmtnaXQ6Z2l0LWJpc2VjdFsxXSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGFuZCBvdGhlciBgZ2l0CitiaXNlY3RgIGZlYXR1cmVzLgogCiBbW25hbWluZy1jb21taXRzXV0KIE5hbWluZyBjb21taXRzCkBAIC01OTEsNyArNTkxLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVjYWxsIHRoYXQgbWVyZ2UgY29tbWl0cyBtYXkgaGF2ZSBtb3JlIHRoYW4gb25lIHBhcmVudDsgYnkgZGVmYXVsdCwKLV4gYW5kIH4gZm9sbG93IHRoZSBmaXJzdCBwYXJlbnQgbGlzdGVkIGluIHRoZSBjb21taXQsIGJ1dCB5b3UgY2FuCitgXmAgYW5kIGB+YCBmb2xsb3cgdGhlIGZpcnN0IHBhcmVudCBsaXN0ZWQgaW4gdGhlIGNvbW1pdCwgYnV0IHlvdSBjYW4KIGFsc28gY2hvb3NlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02NDAsNyArNjQwLDcgQEAKICQgZ2l0IHRhZyBzdGFibGUtMSAxYjJlMWQ2M2ZmCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVlvdSBjYW4gdXNlIHN0YWJsZS0xIHRvIHJlZmVyIHRvIHRoZSBjb21taXQgMWIyZTFkNjNmZi4KK1lvdSBjYW4gdXNlIGBzdGFibGUtMWAgdG8gcmVmZXIgdG8gdGhlIGNvbW1pdCAxYjJlMWQ2M2ZmLgogCiBUaGlzIGNyZWF0ZXMgYSAibGlnaHR3ZWlnaHQiIHRhZy4gIElmIHlvdSB3b3VsZCBhbHNvIGxpa2UgdG8gaW5jbHVkZSBhCiBjb21tZW50IHdpdGggdGhlIHRhZywgYW5kIHBvc3NpYmx5IHNpZ24gaXQgY3J5cHRvZ3JhcGhpY2FsbHksIHRoZW4geW91CkBAIC02NjksNyArNjY5LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQW5kIG9mIGNvdXJzZSB5b3UgY2FuIGNvbWJpbmUgYWxsIG9mIHRoZXNlOyB0aGUgZm9sbG93aW5nIGZpbmRzCi1jb21taXRzIHNpbmNlIHYyLjUgd2hpY2ggdG91Y2ggdGhlIE1ha2VmaWxlIG9yIGFueSBmaWxlIHVuZGVyIGZzOgorY29tbWl0cyBzaW5jZSB2Mi41IHdoaWNoIHRvdWNoIHRoZSBgTWFrZWZpbGVgIG9yIGFueSBmaWxlIHVuZGVyIGBmc2A6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGxvZyB2Mi41Li4gTWFrZWZpbGUgZnMvCkBAIC02ODEsMTEgKzY4MSwxMSBAQAogJCBnaXQgbG9nIC1wCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNlZSB0aGUgIi0tcHJldHR5IiBvcHRpb24gaW4gdGhlIGxpbmtnaXQ6Z2l0LWxvZ1sxXSBtYW4gcGFnZSBmb3IgbW9yZQorU2VlIHRoZSBgLS1wcmV0dHlgIG9wdGlvbiBpbiB0aGUgbGlua2dpdDpnaXQtbG9nWzFdIG1hbiBwYWdlIGZvciBtb3JlCiBkaXNwbGF5IG9wdGlvbnMuCiAKIE5vdGUgdGhhdCBnaXQgbG9nIHN0YXJ0cyB3aXRoIHRoZSBtb3N0IHJlY2VudCBjb21taXQgYW5kIHdvcmtzCi1iYWNrd2FyZHMgdGhyb3VnaCB0aGUgcGFyZW50czsgaG93ZXZlciwgc2luY2UgZ2l0IGhpc3RvcnkgY2FuIGNvbnRhaW4KK2JhY2t3YXJkcyB0aHJvdWdoIHRoZSBwYXJlbnRzOyBob3dldmVyLCBzaW5jZSBHaXQgaGlzdG9yeSBjYW4gY29udGFpbgogbXVsdGlwbGUgaW5kZXBlbmRlbnQgbGluZXMgb2YgZGV2ZWxvcG1lbnQsIHRoZSBwYXJ0aWN1bGFyIG9yZGVyIHRoYXQKIGNvbW1pdHMgYXJlIGxpc3RlZCBpbiBtYXkgYmUgc29tZXdoYXQgYXJiaXRyYXJ5LgogCkBAIC03MzIsNyArNzMyLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQmVmb3JlIHRoZSBjb2xvbiBtYXkgYmUgYW55dGhpbmcgdGhhdCBuYW1lcyBhIGNvbW1pdCwgYW5kIGFmdGVyIGl0Ci1tYXkgYmUgYW55IHBhdGggdG8gYSBmaWxlIHRyYWNrZWQgYnkgZ2l0LgorbWF5IGJlIGFueSBwYXRoIHRvIGEgZmlsZSB0cmFja2VkIGJ5IEdpdC4KIAogW1toaXN0b3J5LWV4YW1wbGVzXV0KIEV4YW1wbGVzCkBAIC03NDIsOCArNzQyLDggQEAKIENvdW50aW5nIHRoZSBudW1iZXIgb2YgY29tbWl0cyBvbiBhIGJyYW5jaAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLVN1cHBvc2UgeW91IHdhbnQgdG8ga25vdyBob3cgbWFueSBjb21taXRzIHlvdSd2ZSBtYWRlIG9uICJteWJyYW5jaCIKLXNpbmNlIGl0IGRpdmVyZ2VkIGZyb20gIm9yaWdpbiI6CitTdXBwb3NlIHlvdSB3YW50IHRvIGtub3cgaG93IG1hbnkgY29tbWl0cyB5b3UndmUgbWFkZSBvbiBgbXlicmFuY2hgCitzaW5jZSBpdCBkaXZlcmdlZCBmcm9tIGBvcmlnaW5gOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBsb2cgLS1wcmV0dHk9b25lbGluZSBvcmlnaW4uLm15YnJhbmNoIHwgd2MgLWwKQEAgLTc4MCw3ICs3ODAsNyBAQAogZTA1ZGIwZmQ0ZjMxZGRlNzAwNWYwNzVhODRmOTZiMzYwZDA1OTg0YgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PciB5b3UgY291bGQgcmVjYWxsIHRoYXQgdGhlIC4uLiBvcGVyYXRvciBzZWxlY3RzIGFsbCBjb21taXRzCitPciB5b3UgY291bGQgcmVjYWxsIHRoYXQgdGhlIGAuLi5gIG9wZXJhdG9yIHNlbGVjdHMgYWxsIGNvbW1pdHMKIGNvbnRhaW5lZCByZWFjaGFibGUgZnJvbSBlaXRoZXIgb25lIHJlZmVyZW5jZSBvciB0aGUgb3RoZXIgYnV0IG5vdAogYm90aDsgc28KIApAQCAtODgwLDcgKzg4MCw3IEBACiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKIFN1cHBvc2UgeW91IHdvdWxkIGxpa2UgdG8gc2VlIGFsbCB0aGUgY29tbWl0cyByZWFjaGFibGUgZnJvbSB0aGUgYnJhbmNoCi1oZWFkIG5hbWVkICJtYXN0ZXIiIGJ1dCBub3QgZnJvbSBhbnkgb3RoZXIgaGVhZCBpbiB5b3VyIHJlcG9zaXRvcnkuCitoZWFkIG5hbWVkIGBtYXN0ZXJgIGJ1dCBub3QgZnJvbSBhbnkgb3RoZXIgaGVhZCBpbiB5b3VyIHJlcG9zaXRvcnkuCiAKIFdlIGNhbiBsaXN0IGFsbCB0aGUgaGVhZHMgaW4gdGhpcyByZXBvc2l0b3J5IHdpdGgKIGxpbmtnaXQ6Z2l0LXNob3ctcmVmWzFdOgpAQCAtODk0LDcgKzg5NCw3IEBACiAxZTg3NDg2YWUwNjYyNmMyZjMxZWFhNjNkMjZmYzBmZDY0NmM4YWYyIHJlZnMvaGVhZHMvdHV0b3JpYWwtZml4ZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2UgY2FuIGdldCBqdXN0IHRoZSBicmFuY2gtaGVhZCBuYW1lcywgYW5kIHJlbW92ZSAibWFzdGVyIiwgd2l0aAorV2UgY2FuIGdldCBqdXN0IHRoZSBicmFuY2gtaGVhZCBuYW1lcywgYW5kIHJlbW92ZSBgbWFzdGVyYCwgd2l0aAogdGhlIGhlbHAgb2YgdGhlIHN0YW5kYXJkIHV0aWxpdGllcyBjdXQgYW5kIGdyZXA6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTkzOSw3ICs5MzksNyBAQAogdGhlIG91dHB1dCBmaWxlIGV4dGVuc2lvbiBpZiBwb3NzaWJsZSwgc2VlIGxpbmtnaXQ6Z2l0LWFyY2hpdmVbMV0gZm9yCiBkZXRhaWxzLgogCi1WZXJzaW9ucyBvZiBHaXQgb2xkZXIgdGhhbiAxLjcuNyBkb24ndCBrbm93IGFib3V0IHRoZSAndGFyLmd6JyBmb3JtYXQsCitWZXJzaW9ucyBvZiBHaXQgb2xkZXIgdGhhbiAxLjcuNyBkb24ndCBrbm93IGFib3V0IHRoZSBgdGFyLmd6YCBmb3JtYXQsCiB5b3UnbGwgbmVlZCB0byB1c2UgZ3ppcCBleHBsaWNpdGx5OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05OTMsMTEgKzk5MywxMSBAQAogbGlua2dpdDpnaXQtaGFzaC1vYmplY3RbMV0gbWFuIHBhZ2VzIG1heSBwcm92ZSBoZWxwZnVsLgogCiBbW0RldmVsb3BpbmctV2l0aC1naXRdXQotRGV2ZWxvcGluZyB3aXRoIGdpdAorRGV2ZWxvcGluZyB3aXRoIEdpdAogPT09PT09PT09PT09PT09PT09PQogCiBbW3RlbGxpbmctZ2l0LXlvdXItbmFtZV1dCi1UZWxsaW5nIGdpdCB5b3VyIG5hbWUKK1RlbGxpbmcgR2l0IHlvdXIgbmFtZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEJlZm9yZSBjcmVhdGluZyBhbnkgY29tbWl0cywgeW91IHNob3VsZCBpbnRyb2R1Y2UgeW91cnNlbGYgdG8gR2l0LgpAQCAtMTA1MiwxNyArMTA1MiwxNyBAQAogCiAJMS4gTWFraW5nIHNvbWUgY2hhbmdlcyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkgdXNpbmcgeW91cgogCSAgIGZhdm9yaXRlIGVkaXRvci4KLQkyLiBUZWxsaW5nIGdpdCBhYm91dCB5b3VyIGNoYW5nZXMuCi0JMy4gQ3JlYXRpbmcgdGhlIGNvbW1pdCB1c2luZyB0aGUgY29udGVudCB5b3UgdG9sZCBnaXQgYWJvdXQKKwkyLiBUZWxsaW5nIEdpdCBhYm91dCB5b3VyIGNoYW5nZXMuCisJMy4gQ3JlYXRpbmcgdGhlIGNvbW1pdCB1c2luZyB0aGUgY29udGVudCB5b3UgdG9sZCBHaXQgYWJvdXQKIAkgICBpbiBzdGVwIDIuCiAKIEluIHByYWN0aWNlLCB5b3UgY2FuIGludGVybGVhdmUgYW5kIHJlcGVhdCBzdGVwcyAxIGFuZCAyIGFzIG1hbnkKIHRpbWVzIGFzIHlvdSB3YW50OiBpbiBvcmRlciB0byBrZWVwIHRyYWNrIG9mIHdoYXQgeW91IHdhbnQgY29tbWl0dGVkCi1hdCBzdGVwIDMsIGdpdCBtYWludGFpbnMgYSBzbmFwc2hvdCBvZiB0aGUgdHJlZSdzIGNvbnRlbnRzIGluIGEKK2F0IHN0ZXAgMywgR2l0IG1haW50YWlucyBhIHNuYXBzaG90IG9mIHRoZSB0cmVlJ3MgY29udGVudHMgaW4gYQogc3BlY2lhbCBzdGFnaW5nIGFyZWEgY2FsbGVkICJ0aGUgaW5kZXguIgogCiBBdCB0aGUgYmVnaW5uaW5nLCB0aGUgY29udGVudCBvZiB0aGUgaW5kZXggd2lsbCBiZSBpZGVudGljYWwgdG8KLXRoYXQgb2YgdGhlIEhFQUQuICBUaGUgY29tbWFuZCAiZ2l0IGRpZmYgLS1jYWNoZWQiLCB3aGljaCBzaG93cwordGhhdCBvZiB0aGUgSEVBRC4gIFRoZSBjb21tYW5kIGBnaXQgZGlmZiAtLWNhY2hlZGAsIHdoaWNoIHNob3dzCiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBIRUFEIGFuZCB0aGUgaW5kZXgsIHNob3VsZCB0aGVyZWZvcmUKIHByb2R1Y2Ugbm8gb3V0cHV0IGF0IHRoYXQgcG9pbnQuCiAKQEAgLTExMDEsNyArMTEwMSw3IEBACiAKIHNob3dzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHdvcmtpbmcgdHJlZSBhbmQgdGhlIGluZGV4IGZpbGUuCiAKLU5vdGUgdGhhdCAiZ2l0IGFkZCIgYWx3YXlzIGFkZHMganVzdCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBhIGZpbGUKK05vdGUgdGhhdCBgZ2l0IGFkZGAgYWx3YXlzIGFkZHMganVzdCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBhIGZpbGUKIHRvIHRoZSBpbmRleDsgZnVydGhlciBjaGFuZ2VzIHRvIHRoZSBzYW1lIGZpbGUgd2lsbCBiZSBpZ25vcmVkIHVubGVzcwogeW91IHJ1biBgZ2l0IGFkZGAgb24gdGhlIGZpbGUgYWdhaW4uCiAKQEAgLTExMTEsNyArMTExMSw3IEBACiAkIGdpdCBjb21taXQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotYW5kIGdpdCB3aWxsIHByb21wdCB5b3UgZm9yIGEgY29tbWl0IG1lc3NhZ2UgYW5kIHRoZW4gY3JlYXRlIHRoZSBuZXcKK2FuZCBHaXQgd2lsbCBwcm9tcHQgeW91IGZvciBhIGNvbW1pdCBtZXNzYWdlIGFuZCB0aGVuIGNyZWF0ZSB0aGUgbmV3CiBjb21taXQuICBDaGVjayB0byBtYWtlIHN1cmUgaXQgbG9va3MgbGlrZSB3aGF0IHlvdSBleHBlY3RlZCB3aXRoCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExNTUsNyArMTE1NSw3IEBACiBjaGFuZ2UsIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgdGhlbiBhIG1vcmUgdGhvcm91Z2gKIGRlc2NyaXB0aW9uLiAgVGhlIHRleHQgdXAgdG8gdGhlIGZpcnN0IGJsYW5rIGxpbmUgaW4gYSBjb21taXQKIG1lc3NhZ2UgaXMgdHJlYXRlZCBhcyB0aGUgY29tbWl0IHRpdGxlLCBhbmQgdGhhdCB0aXRsZSBpcyB1c2VkCi10aHJvdWdob3V0IGdpdC4gIEZvciBleGFtcGxlLCBsaW5rZ2l0OmdpdC1mb3JtYXQtcGF0Y2hbMV0gdHVybnMgYQordGhyb3VnaG91dCBHaXQuICBGb3IgZXhhbXBsZSwgbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdIHR1cm5zIGEKIGNvbW1pdCBpbnRvIGVtYWlsLCBhbmQgaXQgdXNlcyB0aGUgdGl0bGUgb24gdGhlIFN1YmplY3QgbGluZSBhbmQgdGhlCiByZXN0IG9mIHRoZSBjb21taXQgaW4gdGhlIGJvZHkuCiAKQEAgLTExNjQsMTYgKzExNjQsMTcgQEAKIElnbm9yaW5nIGZpbGVzCiAtLS0tLS0tLS0tLS0tLQogCi1BIHByb2plY3Qgd2lsbCBvZnRlbiBnZW5lcmF0ZSBmaWxlcyB0aGF0IHlvdSBkbyAnbm90JyB3YW50IHRvIHRyYWNrIHdpdGggZ2l0LgorQSBwcm9qZWN0IHdpbGwgb2Z0ZW4gZ2VuZXJhdGUgZmlsZXMgdGhhdCB5b3UgZG8gJ25vdCcgd2FudCB0byB0cmFjayB3aXRoIEdpdC4KIFRoaXMgdHlwaWNhbGx5IGluY2x1ZGVzIGZpbGVzIGdlbmVyYXRlZCBieSBhIGJ1aWxkIHByb2Nlc3Mgb3IgdGVtcG9yYXJ5Ci1iYWNrdXAgZmlsZXMgbWFkZSBieSB5b3VyIGVkaXRvci4gT2YgY291cnNlLCAnbm90JyB0cmFja2luZyBmaWxlcyB3aXRoIGdpdAorYmFja3VwIGZpbGVzIG1hZGUgYnkgeW91ciBlZGl0b3IuIE9mIGNvdXJzZSwgJ25vdCcgdHJhY2tpbmcgZmlsZXMgd2l0aCBHaXQKIGlzIGp1c3QgYSBtYXR0ZXIgb2YgJ25vdCcgY2FsbGluZyBgZ2l0IGFkZGAgb24gdGhlbS4gQnV0IGl0IHF1aWNrbHkgYmVjb21lcwogYW5ub3lpbmcgdG8gaGF2ZSB0aGVzZSB1bnRyYWNrZWQgZmlsZXMgbHlpbmcgYXJvdW5kOyBlLmcuIHRoZXkgbWFrZQogYGdpdCBhZGQgLmAgcHJhY3RpY2FsbHkgdXNlbGVzcywgYW5kIHRoZXkga2VlcCBzaG93aW5nIHVwIGluIHRoZSBvdXRwdXQgb2YKIGBnaXQgc3RhdHVzYC4KIAotWW91IGNhbiB0ZWxsIGdpdCB0byBpZ25vcmUgY2VydGFpbiBmaWxlcyBieSBjcmVhdGluZyBhIGZpbGUgY2FsbGVkIC5naXRpZ25vcmUKLWluIHRoZSB0b3AgbGV2ZWwgb2YgeW91ciB3b3JraW5nIGRpcmVjdG9yeSwgd2l0aCBjb250ZW50cyBzdWNoIGFzOgorWW91IGNhbiB0ZWxsIEdpdCB0byBpZ25vcmUgY2VydGFpbiBmaWxlcyBieSBjcmVhdGluZyBhIGZpbGUgY2FsbGVkCitgLmdpdGlnbm9yZWAgaW4gdGhlIHRvcCBsZXZlbCBvZiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LCB3aXRoIGNvbnRlbnRzCitzdWNoIGFzOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIExpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIGFyZSBjb25zaWRlcmVkIGNvbW1lbnRzLgpAQCAtMTE5NywxMCArMTE5OCwxMCBAQAogCiBJZiB5b3Ugd2lzaCB0aGUgZXhjbHVkZSBwYXR0ZXJucyB0byBhZmZlY3Qgb25seSBjZXJ0YWluIHJlcG9zaXRvcmllcwogKGluc3RlYWQgb2YgZXZlcnkgcmVwb3NpdG9yeSBmb3IgYSBnaXZlbiBwcm9qZWN0KSwgeW91IG1heSBpbnN0ZWFkIHB1dAotdGhlbSBpbiBhIGZpbGUgaW4geW91ciByZXBvc2l0b3J5IG5hbWVkIC5naXQvaW5mby9leGNsdWRlLCBvciBpbiBhbnkgZmlsZQotc3BlY2lmaWVkIGJ5IHRoZSBgY29yZS5leGNsdWRlc2ZpbGVgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICBTb21lIGdpdAotY29tbWFuZHMgY2FuIGFsc28gdGFrZSBleGNsdWRlIHBhdHRlcm5zIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kIGxpbmUuCi1TZWUgbGlua2dpdDpnaXRpZ25vcmVbNV0gZm9yIHRoZSBkZXRhaWxzLgordGhlbSBpbiBhIGZpbGUgaW4geW91ciByZXBvc2l0b3J5IG5hbWVkIGAuZ2l0L2luZm8vZXhjbHVkZWAsIG9yIGluIGFueQorZmlsZSBzcGVjaWZpZWQgYnkgdGhlIGBjb3JlLmV4Y2x1ZGVzZmlsZWAgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4KK1NvbWUgR2l0IGNvbW1hbmRzIGNhbiBhbHNvIHRha2UgZXhjbHVkZSBwYXR0ZXJucyBkaXJlY3RseSBvbiB0aGUKK2NvbW1hbmQgbGluZS4gIFNlZSBsaW5rZ2l0OmdpdGlnbm9yZVs1XSBmb3IgdGhlIGRldGFpbHMuCiAKIFtbaG93LXRvLW1lcmdlXV0KIEhvdyB0byBtZXJnZQpAQCAtMTIxMywxMCArMTIxNCwxMCBAQAogJCBnaXQgbWVyZ2UgYnJhbmNobmFtZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1tZXJnZXMgdGhlIGRldmVsb3BtZW50IGluIHRoZSBicmFuY2ggImJyYW5jaG5hbWUiIGludG8gdGhlIGN1cnJlbnQKK21lcmdlcyB0aGUgZGV2ZWxvcG1lbnQgaW4gdGhlIGJyYW5jaCBgYnJhbmNobmFtZWAgaW50byB0aGUgY3VycmVudAogYnJhbmNoLgogCi1BIG1lcmdlIGlzIG1hZGUgYnkgY29tYmluaW5nIHRoZSBjaGFuZ2VzIG1hZGUgaW4gImJyYW5jaG5hbWUiIGFuZCB0aGUKK0EgbWVyZ2UgaXMgbWFkZSBieSBjb21iaW5pbmcgdGhlIGNoYW5nZXMgbWFkZSBpbiBgYnJhbmNobmFtZWAgYW5kIHRoZQogY2hhbmdlcyBtYWRlIHVwIHRvIHRoZSBsYXRlc3QgY29tbWl0IGluIHlvdXIgY3VycmVudCBicmFuY2ggc2luY2UKIHRoZWlyIGhpc3RvcmllcyBmb3JrZWQuIFRoZSB3b3JrIHRyZWUgaXMgb3ZlcndyaXR0ZW4gYnkgdGhlIHJlc3VsdCBvZgogdGhlIG1lcmdlIHdoZW4gdGhpcyBjb21iaW5pbmcgaXMgZG9uZSBjbGVhbmx5LCBvciBvdmVyd3JpdHRlbiBieSBhCkBAIC0xMjQ0LDcgKzEyNDUsNyBAQAogCiBDb25mbGljdCBtYXJrZXJzIGFyZSBsZWZ0IGluIHRoZSBwcm9ibGVtYXRpYyBmaWxlcywgYW5kIGFmdGVyCiB5b3UgcmVzb2x2ZSB0aGUgY29uZmxpY3RzIG1hbnVhbGx5LCB5b3UgY2FuIHVwZGF0ZSB0aGUgaW5kZXgKLXdpdGggdGhlIGNvbnRlbnRzIGFuZCBydW4gZ2l0IGNvbW1pdCwgYXMgeW91IG5vcm1hbGx5IHdvdWxkIHdoZW4KK3dpdGggdGhlIGNvbnRlbnRzIGFuZCBydW4gR2l0IGNvbW1pdCwgYXMgeW91IG5vcm1hbGx5IHdvdWxkIHdoZW4KIGNyZWF0aW5nIGEgbmV3IGZpbGUuCiAKIElmIHlvdSBleGFtaW5lIHRoZSByZXN1bHRpbmcgY29tbWl0IHVzaW5nIGdpdGssIHlvdSB3aWxsIHNlZSB0aGF0IGl0CkBAIC0xMjU1LDcgKzEyNTYsNyBAQAogUmVzb2x2aW5nIGEgbWVyZ2UKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4gYSBtZXJnZSBpc24ndCByZXNvbHZlZCBhdXRvbWF0aWNhbGx5LCBnaXQgbGVhdmVzIHRoZSBpbmRleCBhbmQKK1doZW4gYSBtZXJnZSBpc24ndCByZXNvbHZlZCBhdXRvbWF0aWNhbGx5LCBHaXQgbGVhdmVzIHRoZSBpbmRleCBhbmQKIHRoZSB3b3JraW5nIHRyZWUgaW4gYSBzcGVjaWFsIHN0YXRlIHRoYXQgZ2l2ZXMgeW91IGFsbCB0aGUKIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGhlbHAgcmVzb2x2ZSB0aGUgbWVyZ2UuCiAKQEAgLTEyOTEsMTQgKzEyOTIsMTQgQEAKIGRlZmF1bHQgbWVzc2FnZSB1bmNoYW5nZWQsIGJ1dCB5b3UgbWF5IGFkZCBhZGRpdGlvbmFsIGNvbW1lbnRhcnkgb2YKIHlvdXIgb3duIGlmIGRlc2lyZWQuCiAKLVRoZSBhYm92ZSBpcyBhbGwgeW91IG5lZWQgdG8ga25vdyB0byByZXNvbHZlIGEgc2ltcGxlIG1lcmdlLiAgQnV0IGdpdAorVGhlIGFib3ZlIGlzIGFsbCB5b3UgbmVlZCB0byBrbm93IHRvIHJlc29sdmUgYSBzaW1wbGUgbWVyZ2UuICBCdXQgR2l0CiBhbHNvIHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpb24gdG8gaGVscCByZXNvbHZlIGNvbmZsaWN0czoKIAogW1tjb25mbGljdC1yZXNvbHV0aW9uXV0KIEdldHRpbmcgY29uZmxpY3QtcmVzb2x1dGlvbiBoZWxwIGR1cmluZyBhIG1lcmdlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1BbGwgb2YgdGhlIGNoYW5nZXMgdGhhdCBnaXQgd2FzIGFibGUgdG8gbWVyZ2UgYXV0b21hdGljYWxseSBhcmUKK0FsbCBvZiB0aGUgY2hhbmdlcyB0aGF0IEdpdCB3YXMgYWJsZSB0byBtZXJnZSBhdXRvbWF0aWNhbGx5IGFyZQogYWxyZWFkeSBhZGRlZCB0byB0aGUgaW5kZXggZmlsZSwgc28gbGlua2dpdDpnaXQtZGlmZlsxXSBzaG93cyBvbmx5CiB0aGUgY29uZmxpY3RzLiAgSXQgdXNlcyBhbiB1bnVzdWFsIHN5bnRheDoKIApAQCAtMTMzOCw3ICsxMzM5LDcgQEAKIAogVGhlIGRpZmYgYWJvdmUgc2hvd3MgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHdvcmtpbmctdHJlZSB2ZXJzaW9uIG9mCiBmaWxlLnR4dCBhbmQgdGhlIHN0YWdlIDIgYW5kIHN0YWdlIDMgdmVyc2lvbnMuICBTbyBpbnN0ZWFkIG9mIHByZWNlZGluZwotZWFjaCBsaW5lIGJ5IGEgc2luZ2xlICIrIiBvciAiLSIsIGl0IG5vdyB1c2VzIHR3byBjb2x1bW5zOiB0aGUgZmlyc3QKK2VhY2ggbGluZSBieSBhIHNpbmdsZSBgK2Agb3IgYC1gLCBpdCBub3cgdXNlcyB0d28gY29sdW1uczogdGhlIGZpcnN0CiBjb2x1bW4gaXMgdXNlZCBmb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgZmlyc3QgcGFyZW50IGFuZCB0aGUgd29ya2luZwogZGlyZWN0b3J5IGNvcHksIGFuZCB0aGUgc2Vjb25kIGZvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzZWNvbmQgcGFyZW50CiBhbmQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IGNvcHkuICAoU2VlIHRoZSAiQ09NQklORUQgRElGRiBGT1JNQVQiIHNlY3Rpb24KQEAgLTE0MzAsNyArMTQzMSw3IEBACiB3ZXJlIG1lcmdlZC4KIAogSG93ZXZlciwgaWYgdGhlIGN1cnJlbnQgYnJhbmNoIGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgb3RoZXItLXNvIGV2ZXJ5Ci1jb21taXQgcHJlc2VudCBpbiB0aGUgb25lIGlzIGFscmVhZHkgY29udGFpbmVkIGluIHRoZSBvdGhlci0tdGhlbiBnaXQKK2NvbW1pdCBwcmVzZW50IGluIHRoZSBvbmUgaXMgYWxyZWFkeSBjb250YWluZWQgaW4gdGhlIG90aGVyLS10aGVuIEdpdAoganVzdCBwZXJmb3JtcyBhICJmYXN0LWZvcndhcmQiOyB0aGUgaGVhZCBvZiB0aGUgY3VycmVudCBicmFuY2ggaXMgbW92ZWQKIGZvcndhcmQgdG8gcG9pbnQgYXQgdGhlIGhlYWQgb2YgdGhlIG1lcmdlZC1pbiBicmFuY2gsIHdpdGhvdXQgYW55IG5ldwogY29tbWl0cyBiZWluZyBjcmVhdGVkLgpAQCAtMTQ1Niw3ICsxNDU3LDcgQEAKIAogCTIuIFlvdSBjYW4gZ28gYmFjayBhbmQgbW9kaWZ5IHRoZSBvbGQgY29tbWl0LiAgWW91IHNob3VsZAogCW5ldmVyIGRvIHRoaXMgaWYgeW91IGhhdmUgYWxyZWFkeSBtYWRlIHRoZSBoaXN0b3J5IHB1YmxpYzsKLQlnaXQgZG9lcyBub3Qgbm9ybWFsbHkgZXhwZWN0IHRoZSAiaGlzdG9yeSIgb2YgYSBwcm9qZWN0IHRvCisJR2l0IGRvZXMgbm90IG5vcm1hbGx5IGV4cGVjdCB0aGUgImhpc3RvcnkiIG9mIGEgcHJvamVjdCB0bwogCWNoYW5nZSwgYW5kIGNhbm5vdCBjb3JyZWN0bHkgcGVyZm9ybSByZXBlYXRlZCBtZXJnZXMgZnJvbQogCWEgYnJhbmNoIHRoYXQgaGFzIGhhZCBpdHMgaGlzdG9yeSBjaGFuZ2VkLgogCkBAIC0xNDgxLDcgKzE0ODIsNyBAQAogJCBnaXQgcmV2ZXJ0IEhFQUReCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUluIHRoaXMgY2FzZSBnaXQgd2lsbCBhdHRlbXB0IHRvIHVuZG8gdGhlIG9sZCBjaGFuZ2Ugd2hpbGUgbGVhdmluZworSW4gdGhpcyBjYXNlIEdpdCB3aWxsIGF0dGVtcHQgdG8gdW5kbyB0aGUgb2xkIGNoYW5nZSB3aGlsZSBsZWF2aW5nCiBpbnRhY3QgYW55IGNoYW5nZXMgbWFkZSBzaW5jZSB0aGVuLiAgSWYgbW9yZSByZWNlbnQgY2hhbmdlcyBvdmVybGFwCiB3aXRoIHRoZSBjaGFuZ2VzIHRvIGJlIHJldmVydGVkLCB0aGVuIHlvdSB3aWxsIGJlIGFza2VkIHRvIGZpeAogY29uZmxpY3RzIG1hbnVhbGx5LCBqdXN0IGFzIGluIHRoZSBjYXNlIG9mIDw8cmVzb2x2aW5nLWEtbWVyZ2UsCkBAIC0xNTgwLDcgKzE1ODEsNyBAQAogCiBPbiBsYXJnZSByZXBvc2l0b3JpZXMsIEdpdCBkZXBlbmRzIG9uIGNvbXByZXNzaW9uIHRvIGtlZXAgdGhlIGhpc3RvcnkKIGluZm9ybWF0aW9uIGZyb20gdGFraW5nIHVwIHRvbyBtdWNoIHNwYWNlIG9uIGRpc2sgb3IgaW4gbWVtb3J5LiAgU29tZQotZ2l0IGNvbW1hbmRzIG1heSBhdXRvbWF0aWNhbGx5IHJ1biBsaW5rZ2l0OmdpdC1nY1sxXSwgc28geW91IGRvbid0CitHaXQgY29tbWFuZHMgbWF5IGF1dG9tYXRpY2FsbHkgcnVuIGxpbmtnaXQ6Z2l0LWdjWzFdLCBzbyB5b3UgZG9uJ3QKIGhhdmUgdG8gd29ycnkgYWJvdXQgcnVubmluZyBpdCBtYW51YWxseS4gIEhvd2V2ZXIsIGNvbXByZXNzaW5nIGEgbGFyZ2UKIHJlcG9zaXRvcnkgbWF5IHRha2UgYSB3aGlsZSwgc28geW91IG1heSB3YW50IHRvIGNhbGwgYGdjYCBleHBsaWNpdGx5CiB0byBhdm9pZCBhdXRvbWF0aWMgY29tcHJlc3Npb24ga2lja2luZyBpbiB3aGVuIGl0IGlzIG5vdCBjb252ZW5pZW50LgpAQCAtMTYxMyw3ICsxNjE0LDcgQEAKIAogWW91IHdpbGwgc2VlIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgb24gZGFuZ2xpbmcgb2JqZWN0cy4gVGhleSBhcmUgb2JqZWN0cwogdGhhdCBzdGlsbCBleGlzdCBpbiB0aGUgcmVwb3NpdG9yeSBidXQgYXJlIG5vIGxvbmdlciByZWZlcmVuY2VkIGJ5IGFueSBvZgoteW91ciBicmFuY2hlcywgYW5kIGNhbiAoYW5kIHdpbGwpIGJlIHJlbW92ZWQgYWZ0ZXIgYSB3aGlsZSB3aXRoICJnYyIuCit5b3VyIGJyYW5jaGVzLCBhbmQgY2FuIChhbmQgd2lsbCkgYmUgcmVtb3ZlZCBhZnRlciBhIHdoaWxlIHdpdGggYGdjYC4KIFlvdSBjYW4gcnVuIGBnaXQgZnNjayAtLW5vLWRhbmdsaW5nYCB0byBzdXBwcmVzcyB0aGVzZSBtZXNzYWdlcywgYW5kIHN0aWxsCiB2aWV3IHJlYWwgZXJyb3JzLgogCkBAIC0xNjI1LDExICsxNjI2LDExIEBACiBSZWZsb2dzCiBeXl5eXl5eCiAKLVNheSB5b3UgbW9kaWZ5IGEgYnJhbmNoIHdpdGggK2xpbmtnaXQ6Z2l0LXJlc2V0WzFdIFwtLWhhcmQrLCBhbmQgdGhlbgotcmVhbGl6ZSB0aGF0IHRoZSBicmFuY2ggd2FzIHRoZSBvbmx5IHJlZmVyZW5jZSB5b3UgaGFkIHRvIHRoYXQgcG9pbnQgaW4KLWhpc3RvcnkuCitTYXkgeW91IG1vZGlmeSBhIGJyYW5jaCB3aXRoIDw8Zml4aW5nLW1pc3Rha2VzLGBnaXQgcmVzZXQgLS1oYXJkYD4+LAorYW5kIHRoZW4gcmVhbGl6ZSB0aGF0IHRoZSBicmFuY2ggd2FzIHRoZSBvbmx5IHJlZmVyZW5jZSB5b3UgaGFkIHRvCit0aGF0IHBvaW50IGluIGhpc3RvcnkuCiAKLUZvcnR1bmF0ZWx5LCBnaXQgYWxzbyBrZWVwcyBhIGxvZywgY2FsbGVkIGEgInJlZmxvZyIsIG9mIGFsbCB0aGUKK0ZvcnR1bmF0ZWx5LCBHaXQgYWxzbyBrZWVwcyBhIGxvZywgY2FsbGVkIGEgInJlZmxvZyIsIG9mIGFsbCB0aGUKIHByZXZpb3VzIHZhbHVlcyBvZiBlYWNoIGJyYW5jaC4gIFNvIGluIHRoaXMgY2FzZSB5b3UgY2FuIHN0aWxsIGZpbmQgdGhlCiBvbGQgaGlzdG9yeSB1c2luZywgZm9yIGV4YW1wbGUsCiAKQEAgLTE2MzgsOCArMTYzOSw4IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoaXMgbGlzdHMgdGhlIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlCi0ibWFzdGVyIiBicmFuY2ggaGVhZC4gIFRoaXMgc3ludGF4IGNhbiBiZSB1c2VkIHdpdGggYW55IGdpdCBjb21tYW5kCi10aGF0IGFjY2VwdHMgYSBjb21taXQsIG5vdCBqdXN0IHdpdGggZ2l0IGxvZy4gIFNvbWUgb3RoZXIgZXhhbXBsZXM6CitgbWFzdGVyYCBicmFuY2ggaGVhZC4gIFRoaXMgc3ludGF4IGNhbiBiZSB1c2VkIHdpdGggYW55IEdpdCBjb21tYW5kCit0aGF0IGFjY2VwdHMgYSBjb21taXQsIG5vdCBqdXN0IHdpdGggYGdpdCBsb2dgLiAgU29tZSBvdGhlciBleGFtcGxlczoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgc2hvdyBtYXN0ZXJAezJ9CQkjIFNlZSB3aGVyZSB0aGUgYnJhbmNoIHBvaW50ZWQgMiwKQEAgLTE2NjQsNyArMTY2NSw3IEBACiBob3cgdG8gY29udHJvbCB0aGlzIHBydW5pbmcsIGFuZCBzZWUgdGhlICJTUEVDSUZZSU5HIFJFVklTSU9OUyIKIHNlY3Rpb24gb2YgbGlua2dpdDpnaXRyZXZpc2lvbnNbN10gZm9yIGRldGFpbHMuCiAKLU5vdGUgdGhhdCB0aGUgcmVmbG9nIGhpc3RvcnkgaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSBub3JtYWwgZ2l0IGhpc3RvcnkuCitOb3RlIHRoYXQgdGhlIHJlZmxvZyBoaXN0b3J5IGlzIHZlcnkgZGlmZmVyZW50IGZyb20gbm9ybWFsIEdpdCBoaXN0b3J5LgogV2hpbGUgbm9ybWFsIGhpc3RvcnkgaXMgc2hhcmVkIGJ5IGV2ZXJ5IHJlcG9zaXRvcnkgdGhhdCB3b3JrcyBvbiB0aGUKIHNhbWUgcHJvamVjdCwgdGhlIHJlZmxvZyBoaXN0b3J5IGlzIG5vdCBzaGFyZWQ6IGl0IHRlbGxzIHlvdSBvbmx5IGFib3V0CiBob3cgdGhlIGJyYW5jaGVzIGluIHlvdXIgbG9jYWwgcmVwb3NpdG9yeSBoYXZlIGNoYW5nZWQgb3ZlciB0aW1lLgpAQCAtMTc0Myw4ICsxNzQ0LDggQEAKICQgZ2l0IHB1bGwgb3JpZ2luIG1hc3RlcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JbiBmYWN0LCBpZiB5b3UgaGF2ZSAibWFzdGVyIiBjaGVja2VkIG91dCwgdGhlbiB0aGlzIGJyYW5jaCBoYXMgYmVlbgotY29uZmlndXJlZCBieSAiZ2l0IGNsb25lIiB0byBnZXQgY2hhbmdlcyBmcm9tIHRoZSBIRUFEIGJyYW5jaCBvZiB0aGUKK0luIGZhY3QsIGlmIHlvdSBoYXZlIGBtYXN0ZXJgIGNoZWNrZWQgb3V0LCB0aGVuIHRoaXMgYnJhbmNoIGhhcyBiZWVuCitjb25maWd1cmVkIGJ5IGBnaXQgY2xvbmVgIHRvIGdldCBjaGFuZ2VzIGZyb20gdGhlIEhFQUQgYnJhbmNoIG9mIHRoZQogb3JpZ2luIHJlcG9zaXRvcnkuICBTbyBvZnRlbiB5b3UgY2FuCiBhY2NvbXBsaXNoIHRoZSBhYm92ZSB3aXRoIGp1c3QgYSBzaW1wbGUKIApAQCAtMTc1OSwxMSArMTc2MCwxMSBAQAogTW9yZSBnZW5lcmFsbHksIGEgYnJhbmNoIHRoYXQgaXMgY3JlYXRlZCBmcm9tIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaAogd2lsbCBwdWxsCiBieSBkZWZhdWx0IGZyb20gdGhhdCBicmFuY2guICBTZWUgdGhlIGRlc2NyaXB0aW9ucyBvZiB0aGUKLWJyYW5jaC48bmFtZT4ucmVtb3RlIGFuZCBicmFuY2guPG5hbWU+Lm1lcmdlIG9wdGlvbnMgaW4KK2BicmFuY2guPG5hbWU+LnJlbW90ZWAgYW5kIGBicmFuY2guPG5hbWU+Lm1lcmdlYCBvcHRpb25zIGluCiBsaW5rZ2l0OmdpdC1jb25maWdbMV0sIGFuZCB0aGUgZGlzY3Vzc2lvbiBvZiB0aGUgYC0tdHJhY2tgIG9wdGlvbiBpbgogbGlua2dpdDpnaXQtY2hlY2tvdXRbMV0sIHRvIGxlYXJuIGhvdyB0byBjb250cm9sIHRoZXNlIGRlZmF1bHRzLgogCi1JbiBhZGRpdGlvbiB0byBzYXZpbmcgeW91IGtleXN0cm9rZXMsICJnaXQgcHVsbCIgYWxzbyBoZWxwcyB5b3UgYnkKK0luIGFkZGl0aW9uIHRvIHNhdmluZyB5b3Uga2V5c3Ryb2tlcywgYGdpdCBwdWxsYCBhbHNvIGhlbHBzIHlvdSBieQogcHJvZHVjaW5nIGEgZGVmYXVsdCBjb21taXQgbWVzc2FnZSBkb2N1bWVudGluZyB0aGUgYnJhbmNoIGFuZAogcmVwb3NpdG9yeSB0aGF0IHlvdSBwdWxsZWQgZnJvbS4KIApAQCAtMTc3MSw3ICsxNzcyLDcgQEAKIDw8ZmFzdC1mb3J3YXJkcyxmYXN0LWZvcndhcmQ+PjsgaW5zdGVhZCwgeW91ciBicmFuY2ggd2lsbCBqdXN0IGJlCiB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBsYXRlc3QgY29tbWl0IGZyb20gdGhlIHVwc3RyZWFtIGJyYW5jaC4pCiAKLVRoZSBgZ2l0IHB1bGxgIGNvbW1hbmQgY2FuIGFsc28gYmUgZ2l2ZW4gIi4iIGFzIHRoZSAicmVtb3RlIiByZXBvc2l0b3J5LAorVGhlIGBnaXQgcHVsbGAgY29tbWFuZCBjYW4gYWxzbyBiZSBnaXZlbiBgLmAgYXMgdGhlICJyZW1vdGUiIHJlcG9zaXRvcnksCiBpbiB3aGljaCBjYXNlIGl0IGp1c3QgbWVyZ2VzIGluIGEgYnJhbmNoIGZyb20gdGhlIGN1cnJlbnQgcmVwb3NpdG9yeTsgc28KIHRoZSBjb21tYW5kcwogCkBAIC0xNzk2LDcgKzE3OTcsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB3aWxsIHByb2R1Y2UgYSBudW1iZXJlZCBzZXJpZXMgb2YgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBvbmUKLWZvciBlYWNoIHBhdGNoIGluIHRoZSBjdXJyZW50IGJyYW5jaCBidXQgbm90IGluIG9yaWdpbi9IRUFELgorZm9yIGVhY2ggcGF0Y2ggaW4gdGhlIGN1cnJlbnQgYnJhbmNoIGJ1dCBub3QgaW4gYG9yaWdpbi9IRUFEYC4KIAogYGdpdCBmb3JtYXQtcGF0Y2hgIGNhbiBpbmNsdWRlIGFuIGluaXRpYWwgImNvdmVyIGxldHRlciIuIFlvdSBjYW4gaW5zZXJ0CiBjb21tZW50YXJ5IG9uIGluZGl2aWR1YWwgcGF0Y2hlcyBhZnRlciB0aGUgdGhyZWUgZGFzaCBsaW5lIHdoaWNoCkBAIC0xODE4LDcgKzE4MTksNyBAQAogR2l0IGFsc28gcHJvdmlkZXMgYSB0b29sIGNhbGxlZCBsaW5rZ2l0OmdpdC1hbVsxXSAoYW0gc3RhbmRzIGZvcgogImFwcGx5IG1haWxib3giKSwgZm9yIGltcG9ydGluZyBzdWNoIGFuIGVtYWlsZWQgc2VyaWVzIG9mIHBhdGNoZXMuCiBKdXN0IHNhdmUgYWxsIG9mIHRoZSBwYXRjaC1jb250YWluaW5nIG1lc3NhZ2VzLCBpbiBvcmRlciwgaW50byBhCi1zaW5nbGUgbWFpbGJveCBmaWxlLCBzYXkgInBhdGNoZXMubWJveCIsIHRoZW4gcnVuCitzaW5nbGUgbWFpbGJveCBmaWxlLCBzYXkgYHBhdGNoZXMubWJveGAsIHRoZW4gcnVuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGFtIC0zIHBhdGNoZXMubWJveApAQCAtMTgyNiw4ICsxODI3LDggQEAKIAogR2l0IHdpbGwgYXBwbHkgZWFjaCBwYXRjaCBpbiBvcmRlcjsgaWYgYW55IGNvbmZsaWN0cyBhcmUgZm91bmQsIGl0CiB3aWxsIHN0b3AsIGFuZCB5b3UgY2FuIGZpeCB0aGUgY29uZmxpY3RzIGFzIGRlc2NyaWJlZCBpbgotIjw8cmVzb2x2aW5nLWEtbWVyZ2UsUmVzb2x2aW5nIGEgbWVyZ2U+PiIuICAoVGhlICItMyIgb3B0aW9uIHRlbGxzCi1naXQgdG8gcGVyZm9ybSBhIG1lcmdlOyBpZiB5b3Ugd291bGQgcHJlZmVyIGl0IGp1c3QgdG8gYWJvcnQgYW5kCisiPDxyZXNvbHZpbmctYS1tZXJnZSxSZXNvbHZpbmcgYSBtZXJnZT4+Ii4gIChUaGUgYC0zYCBvcHRpb24gdGVsbHMKK0dpdCB0byBwZXJmb3JtIGEgbWVyZ2U7IGlmIHlvdSB3b3VsZCBwcmVmZXIgaXQganVzdCB0byBhYm9ydCBhbmQKIGxlYXZlIHlvdXIgdHJlZSBhbmQgaW5kZXggdW50b3VjaGVkLCB5b3UgbWF5IG9taXQgdGhhdCBvcHRpb24uKQogCiBPbmNlIHRoZSBpbmRleCBpcyB1cGRhdGVkIHdpdGggdGhlIHJlc3VsdHMgb2YgdGhlIGNvbmZsaWN0CkBAIC0xODM3LDcgKzE4MzgsNyBAQAogJCBnaXQgYW0gLS1yZXNvbHZlZAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1hbmQgZ2l0IHdpbGwgY3JlYXRlIHRoZSBjb21taXQgZm9yIHlvdSBhbmQgY29udGludWUgYXBwbHlpbmcgdGhlCithbmQgR2l0IHdpbGwgY3JlYXRlIHRoZSBjb21taXQgZm9yIHlvdSBhbmQgY29udGludWUgYXBwbHlpbmcgdGhlCiByZW1haW5pbmcgcGF0Y2hlcyBmcm9tIHRoZSBtYWlsYm94LgogCiBUaGUgZmluYWwgcmVzdWx0IHdpbGwgYmUgYSBzZXJpZXMgb2YgY29tbWl0cywgb25lIGZvciBlYWNoIHBhdGNoIGluCkBAIC0xODQ1LDcgKzE4NDYsNyBAQAogdGFrZW4gZnJvbSB0aGUgbWVzc2FnZSBjb250YWluaW5nIGVhY2ggcGF0Y2guCiAKIFtbcHVibGljLXJlcG9zaXRvcmllc11dCi1QdWJsaWMgZ2l0IHJlcG9zaXRvcmllcworUHVibGljIEdpdCByZXBvc2l0b3JpZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEFub3RoZXIgd2F5IHRvIHN1Ym1pdCBjaGFuZ2VzIHRvIGEgcHJvamVjdCBpcyB0byB0ZWxsIHRoZSBtYWludGFpbmVyCkBAIC0xOTAyLDcgKzE5MDMsNyBAQAogU2V0dGluZyB1cCBhIHB1YmxpYyByZXBvc2l0b3J5CiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotQXNzdW1lIHlvdXIgcGVyc29uYWwgcmVwb3NpdG9yeSBpcyBpbiB0aGUgZGlyZWN0b3J5IH4vcHJvai4gIFdlCitBc3N1bWUgeW91ciBwZXJzb25hbCByZXBvc2l0b3J5IGlzIGluIHRoZSBkaXJlY3RvcnkgYH4vcHJvamAuICBXZQogZmlyc3QgY3JlYXRlIGEgbmV3IGNsb25lIG9mIHRoZSByZXBvc2l0b3J5IGFuZCB0ZWxsIGBnaXQgZGFlbW9uYCB0aGF0IGl0CiBpcyBtZWFudCB0byBiZSBwdWJsaWM6CiAKQEAgLTE5MTIsMjggKzE5MTMsMjggQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIHJlc3VsdGluZyBkaXJlY3RvcnkgcHJvai5naXQgY29udGFpbnMgYSAiYmFyZSIgZ2l0IHJlcG9zaXRvcnktLWl0IGlzCi1qdXN0IHRoZSBjb250ZW50cyBvZiB0aGUgIi5naXQiIGRpcmVjdG9yeSwgd2l0aG91dCBhbnkgZmlsZXMgY2hlY2tlZCBvdXQKK2p1c3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBgLmdpdGAgZGlyZWN0b3J5LCB3aXRob3V0IGFueSBmaWxlcyBjaGVja2VkIG91dAogYXJvdW5kIGl0LgogCi1OZXh0LCBjb3B5IHByb2ouZ2l0IHRvIHRoZSBzZXJ2ZXIgd2hlcmUgeW91IHBsYW4gdG8gaG9zdCB0aGUKK05leHQsIGNvcHkgYHByb2ouZ2l0YCB0byB0aGUgc2VydmVyIHdoZXJlIHlvdSBwbGFuIHRvIGhvc3QgdGhlCiBwdWJsaWMgcmVwb3NpdG9yeS4gIFlvdSBjYW4gdXNlIHNjcCwgcnN5bmMsIG9yIHdoYXRldmVyIGlzIG1vc3QKIGNvbnZlbmllbnQuCiAKIFtbZXhwb3J0aW5nLXZpYS1naXRdXQotRXhwb3J0aW5nIGEgZ2l0IHJlcG9zaXRvcnkgdmlhIHRoZSBnaXQgcHJvdG9jb2wKK0V4cG9ydGluZyBhIEdpdCByZXBvc2l0b3J5IHZpYSB0aGUgR2l0IHByb3RvY29sCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCiBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgbWV0aG9kLgogCiBJZiBzb21lb25lIGVsc2UgYWRtaW5pc3RlcnMgdGhlIHNlcnZlciwgdGhleSBzaG91bGQgdGVsbCB5b3Ugd2hhdAotZGlyZWN0b3J5IHRvIHB1dCB0aGUgcmVwb3NpdG9yeSBpbiwgYW5kIHdoYXQgZ2l0Oi8vIFVSTCBpdCB3aWxsIGFwcGVhcgotYXQuICBZb3UgY2FuIHRoZW4gc2tpcCB0byB0aGUgc2VjdGlvbgorZGlyZWN0b3J5IHRvIHB1dCB0aGUgcmVwb3NpdG9yeSBpbiwgYW5kIHdoYXQgYGdpdDovL2AgVVJMIGl0IHdpbGwKK2FwcGVhciBhdC4gIFlvdSBjYW4gdGhlbiBza2lwIHRvIHRoZSBzZWN0aW9uCiAiPDxwdXNoaW5nLWNoYW5nZXMtdG8tYS1wdWJsaWMtcmVwb3NpdG9yeSxQdXNoaW5nIGNoYW5nZXMgdG8gYSBwdWJsaWMKIHJlcG9zaXRvcnk+PiIsIGJlbG93LgogCiBPdGhlcndpc2UsIGFsbCB5b3UgbmVlZCB0byBkbyBpcyBzdGFydCBsaW5rZ2l0OmdpdC1kYWVtb25bMV07IGl0IHdpbGwKIGxpc3RlbiBvbiBwb3J0IDk0MTguICBCeSBkZWZhdWx0LCBpdCB3aWxsIGFsbG93IGFjY2VzcyB0byBhbnkgZGlyZWN0b3J5Ci10aGF0IGxvb2tzIGxpa2UgYSBnaXQgZGlyZWN0b3J5IGFuZCBjb250YWlucyB0aGUgbWFnaWMgZmlsZQordGhhdCBsb29rcyBsaWtlIGEgR2l0IGRpcmVjdG9yeSBhbmQgY29udGFpbnMgdGhlIG1hZ2ljIGZpbGUKIGdpdC1kYWVtb24tZXhwb3J0LW9rLiAgUGFzc2luZyBzb21lIGRpcmVjdG9yeSBwYXRocyBhcyBgZ2l0IGRhZW1vbmAKIGFyZ3VtZW50cyB3aWxsIGZ1cnRoZXIgcmVzdHJpY3QgdGhlIGV4cG9ydHMgdG8gdGhvc2UgcGF0aHMuCiAKQEAgLTE5NDUsMTAgKzE5NDYsMTAgQEAKIEV4cG9ydGluZyBhIGdpdCByZXBvc2l0b3J5IHZpYSBIVFRQCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1UaGUgZ2l0IHByb3RvY29sIGdpdmVzIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksIGJ1dCBvbiBhCitUaGUgR2l0IHByb3RvY29sIGdpdmVzIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksIGJ1dCBvbiBhCiBob3N0IHdpdGggYSB3ZWIgc2VydmVyIHNldCB1cCwgSFRUUCBleHBvcnRzIG1heSBiZSBzaW1wbGVyIHRvIHNldCB1cC4KIAotQWxsIHlvdSBuZWVkIHRvIGRvIGlzIHBsYWNlIHRoZSBuZXdseSBjcmVhdGVkIGJhcmUgZ2l0IHJlcG9zaXRvcnkgaW4KK0FsbCB5b3UgbmVlZCB0byBkbyBpcyBwbGFjZSB0aGUgbmV3bHkgY3JlYXRlZCBiYXJlIEdpdCByZXBvc2l0b3J5IGluCiBhIGRpcmVjdG9yeSB0aGF0IGlzIGV4cG9ydGVkIGJ5IHRoZSB3ZWIgc2VydmVyLCBhbmQgbWFrZSBzb21lCiBhZGp1c3RtZW50cyB0byBnaXZlIHdlYiBjbGllbnRzIHNvbWUgZXh0cmEgaW5mb3JtYXRpb24gdGhleSBuZWVkOgogCkBAIC0xOTYyLDcgKzE5NjMsNyBAQAogKEZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgbGFzdCB0d28gbGluZXMsIHNlZQogbGlua2dpdDpnaXQtdXBkYXRlLXNlcnZlci1pbmZvWzFdIGFuZCBsaW5rZ2l0OmdpdGhvb2tzWzVdLikKIAotQWR2ZXJ0aXNlIHRoZSBVUkwgb2YgcHJvai5naXQuICBBbnlib2R5IGVsc2Ugc2hvdWxkIHRoZW4gYmUgYWJsZSB0bworQWR2ZXJ0aXNlIHRoZSBVUkwgb2YgYHByb2ouZ2l0YC4gIEFueWJvZHkgZWxzZSBzaG91bGQgdGhlbiBiZSBhYmxlIHRvCiBjbG9uZSBvciBwdWxsIGZyb20gdGhhdCBVUkwsIGZvciBleGFtcGxlIHdpdGggYSBjb21tYW5kIGxpbmUgbGlrZToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTk4NSw4ICsxOTg2LDggQEAKIGxhdGVzdCBjaGFuZ2VzIGNyZWF0ZWQgaW4geW91ciBwcml2YXRlIHJlcG9zaXRvcnkuCiAKIFRoZSBzaW1wbGVzdCB3YXkgdG8gZG8gdGhpcyBpcyB1c2luZyBsaW5rZ2l0OmdpdC1wdXNoWzFdIGFuZCBzc2g7IHRvCi11cGRhdGUgdGhlIHJlbW90ZSBicmFuY2ggbmFtZWQgIm1hc3RlciIgd2l0aCB0aGUgbGF0ZXN0IHN0YXRlIG9mIHlvdXIKLWJyYW5jaCBuYW1lZCAibWFzdGVyIiwgcnVuCit1cGRhdGUgdGhlIHJlbW90ZSBicmFuY2ggbmFtZWQgYG1hc3RlcmAgd2l0aCB0aGUgbGF0ZXN0IHN0YXRlIG9mIHlvdXIKK2JyYW5jaCBuYW1lZCBgbWFzdGVyYCwgcnVuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IHB1c2ggc3NoOi8veW91cnNlcnZlci5jb20vfnlvdS9wcm9qLmdpdCBtYXN0ZXI6bWFzdGVyCkBAIC0yMDAyLDcgKzIwMDMsNyBAQAogPDxmYXN0LWZvcndhcmRzLGZhc3QtZm9yd2FyZD4+OyBzZWUgdGhlIGZvbGxvd2luZyBzZWN0aW9uIGZvciBkZXRhaWxzIG9uCiBoYW5kbGluZyB0aGlzIGNhc2UuCiAKLU5vdGUgdGhhdCB0aGUgdGFyZ2V0IG9mIGEgInB1c2giIGlzIG5vcm1hbGx5IGEKK05vdGUgdGhhdCB0aGUgdGFyZ2V0IG9mIGEgYHB1c2hgIGlzIG5vcm1hbGx5IGEKIDw8ZGVmX2JhcmVfcmVwb3NpdG9yeSxiYXJlPj4gcmVwb3NpdG9yeS4gIFlvdSBjYW4gYWxzbyBwdXNoIHRvIGEKIHJlcG9zaXRvcnkgdGhhdCBoYXMgYSBjaGVja2VkLW91dCB3b3JraW5nIHRyZWUsIGJ1dCBhIHB1c2ggdG8gdXBkYXRlIHRoZQogY3VycmVudGx5IGNoZWNrZWQtb3V0IGJyYW5jaCBpcyBkZW5pZWQgYnkgZGVmYXVsdCB0byBwcmV2ZW50IGNvbmZ1c2lvbi4KQEAgLTIwMzAsOSArMjAzMSw5IEBACiAkIGdpdCBwdXNoIHB1YmxpYy1yZXBvIG1hc3RlcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgcmVtb3RlLjxuYW1lPi51cmwsIGJyYW5jaC48bmFtZT4ucmVtb3RlLAotYW5kIHJlbW90ZS48bmFtZT4ucHVzaCBvcHRpb25zIGluIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSBmb3IKLWRldGFpbHMuCitTZWUgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgYHJlbW90ZS48bmFtZT4udXJsYCwKK2BicmFuY2guPG5hbWU+LnJlbW90ZWAsIGFuZCBgcmVtb3RlLjxuYW1lPi5wdXNoYCBvcHRpb25zIGluCitsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yIGRldGFpbHMuCiAKIFtbZm9yY2luZy1wdXNoXV0KIFdoYXQgdG8gZG8gd2hlbiBhIHB1c2ggZmFpbHMKQEAgLTIwOTcsOSArMjA5OCw5IEBACiBsaW5rZ2l0OmdpdGN2cy1taWdyYXRpb25bN10gZm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8KIHNldCB0aGlzIHVwLgogCi1Ib3dldmVyLCB3aGlsZSB0aGVyZSBpcyBub3RoaW5nIHdyb25nIHdpdGggZ2l0J3Mgc3VwcG9ydCBmb3Igc2hhcmVkCitIb3dldmVyLCB3aGlsZSB0aGVyZSBpcyBub3RoaW5nIHdyb25nIHdpdGggR2l0J3Mgc3VwcG9ydCBmb3Igc2hhcmVkCiByZXBvc2l0b3JpZXMsIHRoaXMgbW9kZSBvZiBvcGVyYXRpb24gaXMgbm90IGdlbmVyYWxseSByZWNvbW1lbmRlZCwKLXNpbXBseSBiZWNhdXNlIHRoZSBtb2RlIG9mIGNvbGxhYm9yYXRpb24gdGhhdCBnaXQgc3VwcG9ydHMtLWJ5CitzaW1wbHkgYmVjYXVzZSB0aGUgbW9kZSBvZiBjb2xsYWJvcmF0aW9uIHRoYXQgR2l0IHN1cHBvcnRzLS1ieQogZXhjaGFuZ2luZyBwYXRjaGVzIGFuZCBwdWxsaW5nIGZyb20gcHVibGljIHJlcG9zaXRvcmllcy0taGFzIHNvIG1hbnkKIGFkdmFudGFnZXMgb3ZlciB0aGUgY2VudHJhbCBzaGFyZWQgcmVwb3NpdG9yeToKIApAQCAtMjEyMyw4ICsyMTI0LDggQEAKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAogVGhlIGdpdHdlYiBjZ2kgc2NyaXB0IHByb3ZpZGVzIHVzZXJzIGFuIGVhc3kgd2F5IHRvIGJyb3dzZSB5b3VyCi1wcm9qZWN0J3MgZmlsZXMgYW5kIGhpc3Rvcnkgd2l0aG91dCBoYXZpbmcgdG8gaW5zdGFsbCBnaXQ7IHNlZSB0aGUgZmlsZQotZ2l0d2ViL0lOU1RBTEwgaW4gdGhlIGdpdCBzb3VyY2UgdHJlZSBmb3IgaW5zdHJ1Y3Rpb25zIG9uIHNldHRpbmcgaXQgdXAuCitwcm9qZWN0J3MgZmlsZXMgYW5kIGhpc3Rvcnkgd2l0aG91dCBoYXZpbmcgdG8gaW5zdGFsbCBHaXQ7IHNlZSB0aGUgZmlsZQorZ2l0d2ViL0lOU1RBTEwgaW4gdGhlIEdpdCBzb3VyY2UgdHJlZSBmb3IgaW5zdHJ1Y3Rpb25zIG9uIHNldHRpbmcgaXQgdXAuCiAKIFtbc2hhcmluZy1kZXZlbG9wbWVudC1leGFtcGxlc11dCiBFeGFtcGxlcwpAQCAtMjEzNCw3ICsyMTM1LDcgQEAKIE1haW50YWluaW5nIHRvcGljIGJyYW5jaGVzIGZvciBhIExpbnV4IHN1YnN5c3RlbSBtYWludGFpbmVyCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi1UaGlzIGRlc2NyaWJlcyBob3cgVG9ueSBMdWNrIHVzZXMgZ2l0IGluIGhpcyByb2xlIGFzIG1haW50YWluZXIgb2YgdGhlCitUaGlzIGRlc2NyaWJlcyBob3cgVG9ueSBMdWNrIHVzZXMgR2l0IGluIGhpcyByb2xlIGFzIG1haW50YWluZXIgb2YgdGhlCiBJQTY0IGFyY2hpdGVjdHVyZSBmb3IgdGhlIExpbnV4IGtlcm5lbC4KIAogSGUgdXNlcyB0d28gcHVibGljIGJyYW5jaGVzOgpAQCAtMjE2Nyw3ICsyMTY4LDcgQEAKIAogTm93IGNyZWF0ZSB0aGUgYnJhbmNoZXMgaW4gd2hpY2ggeW91IGFyZSBnb2luZyB0byB3b3JrOyB0aGVzZSBzdGFydCBvdXQKIGF0IHRoZSBjdXJyZW50IHRpcCBvZiBvcmlnaW4vbWFzdGVyIGJyYW5jaCwgYW5kIHNob3VsZCBiZSBzZXQgdXAgKHVzaW5nCi10aGUgLS10cmFjayBvcHRpb24gdG8gbGlua2dpdDpnaXQtYnJhbmNoWzFdKSB0byBtZXJnZSBjaGFuZ2VzIGluIGZyb20KK3RoZSBgLS10cmFja2Agb3B0aW9uIHRvIGxpbmtnaXQ6Z2l0LWJyYW5jaFsxXSkgdG8gbWVyZ2UgY2hhbmdlcyBpbiBmcm9tCiBMaW51cyBieSBkZWZhdWx0LgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTg0LDkgKzIxODUsOSBAQAogCiBJbXBvcnRhbnQgbm90ZSEgIElmIHlvdSBoYXZlIGFueSBsb2NhbCBjaGFuZ2VzIGluIHRoZXNlIGJyYW5jaGVzLCB0aGVuCiB0aGlzIG1lcmdlIHdpbGwgY3JlYXRlIGEgY29tbWl0IG9iamVjdCBpbiB0aGUgaGlzdG9yeSAod2l0aCBubyBsb2NhbAotY2hhbmdlcyBnaXQgd2lsbCBzaW1wbHkgZG8gYSAiZmFzdC1mb3J3YXJkIiBtZXJnZSkuICBNYW55IHBlb3BsZSBkaXNsaWtlCitjaGFuZ2VzIEdpdCB3aWxsIHNpbXBseSBkbyBhICJmYXN0LWZvcndhcmQiIG1lcmdlKS4gIE1hbnkgcGVvcGxlIGRpc2xpa2UKIHRoZSAibm9pc2UiIHRoYXQgdGhpcyBjcmVhdGVzIGluIHRoZSBMaW51eCBoaXN0b3J5LCBzbyB5b3Ugc2hvdWxkIGF2b2lkCi1kb2luZyB0aGlzIGNhcHJpY2lvdXNseSBpbiB0aGUgInJlbGVhc2UiIGJyYW5jaCwgYXMgdGhlc2Ugbm9pc3kgY29tbWl0cworZG9pbmcgdGhpcyBjYXByaWNpb3VzbHkgaW4gdGhlIGByZWxlYXNlYCBicmFuY2gsIGFzIHRoZXNlIG5vaXN5IGNvbW1pdHMKIHdpbGwgYmVjb21lIHBhcnQgb2YgdGhlIHBlcm1hbmVudCBoaXN0b3J5IHdoZW4geW91IGFzayBMaW51cyB0byBwdWxsCiBmcm9tIHRoZSByZWxlYXNlIGJyYW5jaC4KIApAQCAtMjIyOCw3ICsyMjI5LDcgQEAKIExpbnVzJ3MgYnJhbmNoLiBQaWNraW5nIGEgc3RhYmxlIGJhc2UgZm9yIHlvdXIgYnJhbmNoIHdpbGw6CiAxKSBoZWxwIHlvdTogYnkgYXZvaWRpbmcgaW5jbHVzaW9uIG9mIHVucmVsYXRlZCBhbmQgcGVyaGFwcyBsaWdodGx5CiB0ZXN0ZWQgY2hhbmdlcwotMikgaGVscCBmdXR1cmUgYnVnIGh1bnRlcnMgdGhhdCB1c2UgImdpdCBiaXNlY3QiIHRvIGZpbmQgcHJvYmxlbXMKKzIpIGhlbHAgZnV0dXJlIGJ1ZyBodW50ZXJzIHRoYXQgdXNlIGBnaXQgYmlzZWN0YCB0byBmaW5kIHByb2JsZW1zCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGNoZWNrb3V0IC1iIHNwZWVkLXVwLXNwaW5sb2NrcyB2Mi42LjM1CkBAIC0yMjUzLDkgKzIyNTQsOSBAQAogc3BlbnQgYSB3aGlsZSBvbiB0aGlzIHN0ZXAgYW5kIGhhZCBhbHNvIHB1bGxlZCBuZXcgdmVyc2lvbnMgZnJvbSB1cHN0cmVhbS4KIAogU29tZSB0aW1lIGxhdGVyIHdoZW4gZW5vdWdoIHRpbWUgaGFzIHBhc3NlZCBhbmQgdGVzdGluZyBkb25lLCB5b3UgY2FuIHB1bGwgdGhlCi1zYW1lIGJyYW5jaCBpbnRvIHRoZSAicmVsZWFzZSIgdHJlZSByZWFkeSB0byBnbyB1cHN0cmVhbS4gIFRoaXMgaXMgd2hlcmUgeW91CitzYW1lIGJyYW5jaCBpbnRvIHRoZSBgcmVsZWFzZWAgdHJlZSByZWFkeSB0byBnbyB1cHN0cmVhbS4gIFRoaXMgaXMgd2hlcmUgeW91CiBzZWUgdGhlIHZhbHVlIG9mIGtlZXBpbmcgZWFjaCBwYXRjaCAob3IgcGF0Y2ggc2VyaWVzKSBpbiBpdHMgb3duIGJyYW5jaC4gIEl0Ci1tZWFucyB0aGF0IHRoZSBwYXRjaGVzIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSAicmVsZWFzZSIgdHJlZSBpbiBhbnkgb3JkZXIuCittZWFucyB0aGF0IHRoZSBwYXRjaGVzIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSBgcmVsZWFzZWAgdHJlZSBpbiBhbnkgb3JkZXIuCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgZ2l0IGNoZWNrb3V0IHJlbGVhc2UgJiYgZ2l0IHB1bGwgLiBzcGVlZC11cC1zcGlubG9ja3MKQEAgLTIyODgsNyArMjI4OSw3IEBACiAKIE9uY2UgYSBwYXRjaCBjb21wbGV0ZXMgdGhlIGdyZWF0IGN5Y2xlIChtb3ZpbmcgZnJvbSB0ZXN0IHRvIHJlbGVhc2UsCiB0aGVuIHB1bGxlZCBieSBMaW51cywgYW5kIGZpbmFsbHkgY29taW5nIGJhY2sgaW50byB5b3VyIGxvY2FsCi0ib3JpZ2luL21hc3RlciIgYnJhbmNoKSwgdGhlIGJyYW5jaCBmb3IgdGhpcyBjaGFuZ2UgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KK2BvcmlnaW4vbWFzdGVyYCBicmFuY2gpLCB0aGUgYnJhbmNoIGZvciB0aGlzIGNoYW5nZSBpcyBubyBsb25nZXIgbmVlZGVkLgogWW91IGRldGVjdCB0aGlzIHdoZW4gdGhlIG91dHB1dCBmcm9tOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzAzLDggKzIzMDQsOCBAQAogCiBTb21lIGNoYW5nZXMgYXJlIHNvIHRyaXZpYWwgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNyZWF0ZSBhIHNlcGFyYXRlCiBicmFuY2ggYW5kIHRoZW4gbWVyZ2UgaW50byBlYWNoIG9mIHRoZSB0ZXN0IGFuZCByZWxlYXNlIGJyYW5jaGVzLiAgRm9yCi10aGVzZSBjaGFuZ2VzLCBqdXN0IGFwcGx5IGRpcmVjdGx5IHRvIHRoZSAicmVsZWFzZSIgYnJhbmNoLCBhbmQgdGhlbgotbWVyZ2UgdGhhdCBpbnRvIHRoZSAidGVzdCIgYnJhbmNoLgordGhlc2UgY2hhbmdlcywganVzdCBhcHBseSBkaXJlY3RseSB0byB0aGUgYHJlbGVhc2VgIGJyYW5jaCwgYW5kIHRoZW4KK21lcmdlIHRoYXQgaW50byB0aGUgYHRlc3RgIGJyYW5jaC4KIAogQWZ0ZXIgcHVzaGluZyB5b3VyIHdvcmsgdG8gYG15dHJlZWAsIHlvdSBjYW4gdXNlCiBsaW5rZ2l0OmdpdC1yZXF1ZXN0LXB1bGxbMV0gdG8gcHJlcGFyZSBhICJwbGVhc2UgcHVsbCIgcmVxdWVzdCBtZXNzYWdlCkBAIC0yMzE5LDcgKzIzMjAsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA9PT09IHVwZGF0ZSBzY3JpcHQgPT09PQotIyBVcGRhdGUgYSBicmFuY2ggaW4gbXkgR0lUIHRyZWUuICBJZiB0aGUgYnJhbmNoIHRvIGJlIHVwZGF0ZWQKKyMgVXBkYXRlIGEgYnJhbmNoIGluIG15IEdpdCB0cmVlLiAgSWYgdGhlIGJyYW5jaCB0byBiZSB1cGRhdGVkCiAjIGlzIG9yaWdpbiwgdGhlbiBwdWxsIGZyb20ga2VybmVsLm9yZy4gIE90aGVyd2lzZSBtZXJnZQogIyBvcmlnaW4vbWFzdGVyIGJyYW5jaCBpbnRvIHRlc3R8cmVsZWFzZSBicmFuY2gKIApAQCAtMjMzNyw3ICsyMzM4LDcgQEAKIAlmaQogCTs7CiAqKQotCWVjaG8gIlVzYWdlOiAkMCBvcmlnaW58dGVzdHxyZWxlYXNlIiAxPiYyCisJZWNobyAidXNhZ2U6ICQwIG9yaWdpbnx0ZXN0fHJlbGVhc2UiIDE+JjIKIAlleGl0IDEKIAk7OwogZXNhYwpAQCAtMjM1MSw3ICsyMzUyLDcgQEAKIAogdXNhZ2UoKQogewotCWVjaG8gIlVzYWdlOiAkcG5hbWUgYnJhbmNoIHRlc3R8cmVsZWFzZSIgMT4mMgorCWVjaG8gInVzYWdlOiAkcG5hbWUgYnJhbmNoIHRlc3R8cmVsZWFzZSIgMT4mMgogCWV4aXQgMQogfQogCkBAIC0yMzc3LDcgKzIzNzgsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA9PT09IHN0YXR1cyBzY3JpcHQgPT09PQotIyByZXBvcnQgb24gc3RhdHVzIG9mIG15IGlhNjQgR0lUIHRyZWUKKyMgcmVwb3J0IG9uIHN0YXR1cyBvZiBteSBpYTY0IEdpdCB0cmVlCiAKIGdiPSQodHB1dCBzZXRhYiAyKQogcmI9JCh0cHV0IHNldGFiIDEpCkBAIC0yNDMzLDcgKzI0MzQsNyBAQAogCiBOb3JtYWxseSBjb21taXRzIGFyZSBvbmx5IGFkZGVkIHRvIGEgcHJvamVjdCwgbmV2ZXIgdGFrZW4gYXdheSBvcgogcmVwbGFjZWQuICBHaXQgaXMgZGVzaWduZWQgd2l0aCB0aGlzIGFzc3VtcHRpb24sIGFuZCB2aW9sYXRpbmcgaXQgd2lsbAotY2F1c2UgZ2l0J3MgbWVyZ2UgbWFjaGluZXJ5IChmb3IgZXhhbXBsZSkgdG8gZG8gdGhlIHdyb25nIHRoaW5nLgorY2F1c2UgR2l0J3MgbWVyZ2UgbWFjaGluZXJ5IChmb3IgZXhhbXBsZSkgdG8gZG8gdGhlIHdyb25nIHRoaW5nLgogCiBIb3dldmVyLCB0aGVyZSBpcyBhIHNpdHVhdGlvbiBpbiB3aGljaCBpdCBjYW4gYmUgdXNlZnVsIHRvIHZpb2xhdGUgdGhpcwogYXNzdW1wdGlvbi4KQEAgLTI0NzUsOCArMjQ3Niw4IEBACiBLZWVwaW5nIGEgcGF0Y2ggc2VyaWVzIHVwIHRvIGRhdGUgdXNpbmcgZ2l0IHJlYmFzZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU3VwcG9zZSB0aGF0IHlvdSBjcmVhdGUgYSBicmFuY2ggIm15d29yayIgb24gYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoCi0ib3JpZ2luIiwgYW5kIGNyZWF0ZSBzb21lIGNvbW1pdHMgb24gdG9wIG9mIGl0OgorU3VwcG9zZSB0aGF0IHlvdSBjcmVhdGUgYSBicmFuY2ggYG15d29ya2Agb24gYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoCitgb3JpZ2luYCwgYW5kIGNyZWF0ZSBzb21lIGNvbW1pdHMgb24gdG9wIG9mIGl0OgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBjaGVja291dCAtYiBteXdvcmsgb3JpZ2luCkBAIC0yNDg4LDcgKzI0ODksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3UgaGF2ZSBwZXJmb3JtZWQgbm8gbWVyZ2VzIGludG8gbXl3b3JrLCBzbyBpdCBpcyBqdXN0IGEgc2ltcGxlIGxpbmVhcgotc2VxdWVuY2Ugb2YgcGF0Y2hlcyBvbiB0b3Agb2YgIm9yaWdpbiI6CitzZXF1ZW5jZSBvZiBwYXRjaGVzIG9uIHRvcCBvZiBgb3JpZ2luYDoKIAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAgby0tby0tTyA8LS0gb3JpZ2luCkBAIC0yNDk3LDcgKzI0OTgsNyBAQAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFNvbWUgbW9yZSBpbnRlcmVzdGluZyB3b3JrIGhhcyBiZWVuIGRvbmUgaW4gdGhlIHVwc3RyZWFtIHByb2plY3QsIGFuZAotIm9yaWdpbiIgaGFzIGFkdmFuY2VkOgorYG9yaWdpbmAgaGFzIGFkdmFuY2VkOgogCiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KICBvLS1vLS1PLS1vLS1vLS1vIDwtLSBvcmlnaW4KQEAgLTI1MDUsNyArMjUwNiw3IEBACiAgICAgICAgICBhLS1iLS1jIDwtLSBteXdvcmsKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1BdCB0aGlzIHBvaW50LCB5b3UgY291bGQgdXNlICJwdWxsIiB0byBtZXJnZSB5b3VyIGNoYW5nZXMgYmFjayBpbjsKK0F0IHRoaXMgcG9pbnQsIHlvdSBjb3VsZCB1c2UgYHB1bGxgIHRvIG1lcmdlIHlvdXIgY2hhbmdlcyBiYWNrIGluOwogdGhlIHJlc3VsdCB3b3VsZCBjcmVhdGUgYSBuZXcgbWVyZ2UgY29tbWl0LCBsaWtlIHRoaXM6CiAKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpAQCAtMjUyNCw3ICsyNTI1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyB3aWxsIHJlbW92ZSBlYWNoIG9mIHlvdXIgY29tbWl0cyBmcm9tIG15d29yaywgdGVtcG9yYXJpbHkgc2F2aW5nCi10aGVtIGFzIHBhdGNoZXMgKGluIGEgZGlyZWN0b3J5IG5hbWVkICIuZ2l0L3JlYmFzZS1hcHBseSIpLCB1cGRhdGUgbXl3b3JrIHRvCit0aGVtIGFzIHBhdGNoZXMgKGluIGEgZGlyZWN0b3J5IG5hbWVkIGAuZ2l0L3JlYmFzZS1hcHBseWApLCB1cGRhdGUgbXl3b3JrIHRvCiBwb2ludCBhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2Ygb3JpZ2luLCB0aGVuIGFwcGx5IGVhY2ggb2YgdGhlIHNhdmVkCiBwYXRjaGVzIHRvIHRoZSBuZXcgbXl3b3JrLiAgVGhlIHJlc3VsdCB3aWxsIGxvb2sgbGlrZToKIApAQCAtMjU0NCw3ICsyNTQ1LDcgQEAKICQgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWFuZCBnaXQgd2lsbCBjb250aW51ZSBhcHBseWluZyB0aGUgcmVzdCBvZiB0aGUgcGF0Y2hlcy4KK2FuZCBHaXQgd2lsbCBjb250aW51ZSBhcHBseWluZyB0aGUgcmVzdCBvZiB0aGUgcGF0Y2hlcy4KIAogQXQgYW55IHBvaW50IHlvdSBtYXkgdXNlIHRoZSBgLS1hYm9ydGAgb3B0aW9uIHRvIGFib3J0IHRoaXMgcHJvY2VzcyBhbmQKIHJldHVybiBteXdvcmsgdG8gdGhlIHN0YXRlIGl0IGhhZCBiZWZvcmUgeW91IHN0YXJ0ZWQgdGhlIHJlYmFzZToKQEAgLTI3MDEsNyArMjcwMiw3IEBACiB0aGUgb2xkIGhlYWQ7IGl0IHRyZWF0cyB0aGlzIHNpdHVhdGlvbiBleGFjdGx5IHRoZSBzYW1lIGFzIGl0IHdvdWxkIGlmCiB0d28gZGV2ZWxvcGVycyBoYWQgaW5kZXBlbmRlbnRseSBkb25lIHRoZSB3b3JrIG9uIHRoZSBvbGQgYW5kIG5ldyBoZWFkcwogaW4gcGFyYWxsZWwuICBBdCB0aGlzIHBvaW50LCBpZiBzb21lb25lIGF0dGVtcHRzIHRvIG1lcmdlIHRoZSBuZXcgaGVhZAotaW4gdG8gdGhlaXIgYnJhbmNoLCBnaXQgd2lsbCBhdHRlbXB0IHRvIG1lcmdlIHRvZ2V0aGVyIHRoZSB0d28gKG9sZCBhbmQKK2luIHRvIHRoZWlyIGJyYW5jaCwgR2l0IHdpbGwgYXR0ZW1wdCB0byBtZXJnZSB0b2dldGhlciB0aGUgdHdvIChvbGQgYW5kCiBuZXcpIGxpbmVzIG9mIGRldmVsb3BtZW50LCBpbnN0ZWFkIG9mIHRyeWluZyB0byByZXBsYWNlIHRoZSBvbGQgYnkgdGhlCiBuZXcuICBUaGUgcmVzdWx0cyBhcmUgbGlrZWx5IHRvIGJlIHVuZXhwZWN0ZWQuCiAKQEAgLTI3NzQsNyArMjc3NSw3IEBACiBCaXNlY3RpbmcgYmV0d2VlbiBaIGFuZCBEKiB3b3VsZCBoaXQgYSBzaW5nbGUgY3VscHJpdCBjb21taXQgWSosCiBhbmQgdW5kZXJzdGFuZGluZyB3aHkgWSogd2FzIGJyb2tlbiB3b3VsZCBwcm9iYWJseSBiZSBlYXNpZXIuCiAKLVBhcnRseSBmb3IgdGhpcyByZWFzb24sIG1hbnkgZXhwZXJpZW5jZWQgZ2l0IHVzZXJzLCBldmVuIHdoZW4KK1BhcnRseSBmb3IgdGhpcyByZWFzb24sIG1hbnkgZXhwZXJpZW5jZWQgR2l0IHVzZXJzLCBldmVuIHdoZW4KIHdvcmtpbmcgb24gYW4gb3RoZXJ3aXNlIG1lcmdlLWhlYXZ5IHByb2plY3QsIGtlZXAgdGhlIGhpc3RvcnkKIGxpbmVhciBieSByZWJhc2luZyBhZ2FpbnN0IHRoZSBsYXRlc3QgdXBzdHJlYW0gdmVyc2lvbiBiZWZvcmUKIHB1Ymxpc2hpbmcuCkBAIC0yNzk1LDEwICsyNzk2LDEwIEBACiAkIGdpdCBmZXRjaCBvcmlnaW4gdG9kbzpteS10b2RvLXdvcmsKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIGZpcnN0IGFyZ3VtZW50LCAib3JpZ2luIiwganVzdCB0ZWxscyBnaXQgdG8gZmV0Y2ggZnJvbSB0aGUKLXJlcG9zaXRvcnkgeW91IG9yaWdpbmFsbHkgY2xvbmVkIGZyb20uICBUaGUgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIGdpdAotdG8gZmV0Y2ggdGhlIGJyYW5jaCBuYW1lZCAidG9kbyIgZnJvbSB0aGUgcmVtb3RlIHJlcG9zaXRvcnksIGFuZCB0bwotc3RvcmUgaXQgbG9jYWxseSB1bmRlciB0aGUgbmFtZSByZWZzL2hlYWRzL215LXRvZG8td29yay4KK1RoZSBmaXJzdCBhcmd1bWVudCwgYG9yaWdpbmAsIGp1c3QgdGVsbHMgR2l0IHRvIGZldGNoIGZyb20gdGhlCityZXBvc2l0b3J5IHlvdSBvcmlnaW5hbGx5IGNsb25lZCBmcm9tLiAgVGhlIHNlY29uZCBhcmd1bWVudCB0ZWxscyBHaXQKK3RvIGZldGNoIHRoZSBicmFuY2ggbmFtZWQgYHRvZG9gIGZyb20gdGhlIHJlbW90ZSByZXBvc2l0b3J5LCBhbmQgdG8KK3N0b3JlIGl0IGxvY2FsbHkgdW5kZXIgdGhlIG5hbWUgYHJlZnMvaGVhZHMvbXktdG9kby13b3JrYC4KIAogWW91IGNhbiBhbHNvIGZldGNoIGJyYW5jaGVzIGZyb20gb3RoZXIgcmVwb3NpdG9yaWVzOyBzbwogCkBAIC0yODA2LDggKzI4MDcsOCBAQAogJCBnaXQgZmV0Y2ggZ2l0Oi8vZXhhbXBsZS5jb20vcHJvai5naXQgbWFzdGVyOmV4YW1wbGUtbWFzdGVyCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXdpbGwgY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCAiZXhhbXBsZS1tYXN0ZXIiIGFuZCBzdG9yZSBpbiBpdCB0aGUKLWJyYW5jaCBuYW1lZCAibWFzdGVyIiBmcm9tIHRoZSByZXBvc2l0b3J5IGF0IHRoZSBnaXZlbiBVUkwuICBJZiB5b3UKK3dpbGwgY3JlYXRlIGEgbmV3IGJyYW5jaCBuYW1lZCBgZXhhbXBsZS1tYXN0ZXJgIGFuZCBzdG9yZSBpbiBpdCB0aGUKK2JyYW5jaCBuYW1lZCBgbWFzdGVyYCBmcm9tIHRoZSByZXBvc2l0b3J5IGF0IHRoZSBnaXZlbiBVUkwuICBJZiB5b3UKIGFscmVhZHkgaGF2ZSBhIGJyYW5jaCBuYW1lZCBleGFtcGxlLW1hc3RlciwgaXQgd2lsbCBhdHRlbXB0IHRvCiA8PGZhc3QtZm9yd2FyZHMsZmFzdC1mb3J3YXJkPj4gdG8gdGhlIGNvbW1pdCBnaXZlbiBieSBleGFtcGxlLmNvbSdzCiBtYXN0ZXIgYnJhbmNoLiAgSW4gbW9yZSBkZXRhaWw6CkBAIC0yODE2LDcgKzI4MTcsNyBAQAogZ2l0IGZldGNoIGFuZCBmYXN0LWZvcndhcmRzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoZW4gdXBkYXRpbmcgYW4gZXhpc3RpbmcgYnJhbmNoLCAiZ2l0IGZldGNoIgorSW4gdGhlIHByZXZpb3VzIGV4YW1wbGUsIHdoZW4gdXBkYXRpbmcgYW4gZXhpc3RpbmcgYnJhbmNoLCBgZ2l0IGZldGNoYAogY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtb3N0IHJlY2VudCBjb21taXQgb24gdGhlIHJlbW90ZQogYnJhbmNoIGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgbW9zdCByZWNlbnQgY29tbWl0IG9uIHlvdXIgY29weSBvZiB0aGUKIGJyYW5jaCBiZWZvcmUgdXBkYXRpbmcgeW91ciBjb3B5IG9mIHRoZSBicmFuY2ggdG8gcG9pbnQgYXQgdGhlIG5ldwpAQCAtMjg0MiwxMSArMjg0MywxMSBAQAogICAgICAgICAgICAgby0tby0tbyA8LS0gbmV3IGhlYWQgb2YgdGhlIGJyYW5jaAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKLUluIHRoaXMgY2FzZSwgImdpdCBmZXRjaCIgd2lsbCBmYWlsLCBhbmQgcHJpbnQgb3V0IGEgd2FybmluZy4KK0luIHRoaXMgY2FzZSwgYGdpdCBmZXRjaGAgd2lsbCBmYWlsLCBhbmQgcHJpbnQgb3V0IGEgd2FybmluZy4KIAotSW4gdGhhdCBjYXNlLCB5b3UgY2FuIHN0aWxsIGZvcmNlIGdpdCB0byB1cGRhdGUgdG8gdGhlIG5ldyBoZWFkLCBhcworSW4gdGhhdCBjYXNlLCB5b3UgY2FuIHN0aWxsIGZvcmNlIEdpdCB0byB1cGRhdGUgdG8gdGhlIG5ldyBoZWFkLCBhcwogZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbi4gIEhvd2V2ZXIsIG5vdGUgdGhhdCBpbiB0aGUKLXNpdHVhdGlvbiBhYm92ZSB0aGlzIG1heSBtZWFuIGxvc2luZyB0aGUgY29tbWl0cyBsYWJlbGVkICJhIiBhbmQgImIiLAorc2l0dWF0aW9uIGFib3ZlIHRoaXMgbWF5IG1lYW4gbG9zaW5nIHRoZSBjb21taXRzIGxhYmVsZWQgYGFgIGFuZCBgYmAsCiB1bmxlc3MgeW91J3ZlIGFscmVhZHkgY3JlYXRlZCBhIHJlZmVyZW5jZSBvZiB5b3VyIG93biBwb2ludGluZyB0bwogdGhlbS4KIApAQCAtMjg2MSw3ICsyODYyLDcgQEAKICQgZ2l0IGZldGNoIGdpdDovL2V4YW1wbGUuY29tL3Byb2ouZ2l0ICttYXN0ZXI6cmVmcy9yZW1vdGVzL2V4YW1wbGUvbWFzdGVyCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU5vdGUgdGhlIGFkZGl0aW9uIG9mIHRoZSAiKyIgc2lnbi4gIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSAiLWYiCitOb3RlIHRoZSBhZGRpdGlvbiBvZiB0aGUgYCtgIHNpZ24uICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYC1mYAogZmxhZyB0byBmb3JjZSB1cGRhdGVzIG9mIGFsbCB0aGUgZmV0Y2hlZCBicmFuY2hlcywgYXMgaW46CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI4NzUsOSArMjg3Niw5IEBACiBDb25maWd1cmluZyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XZSBzYXcgYWJvdmUgdGhhdCAib3JpZ2luIiBpcyBqdXN0IGEgc2hvcnRjdXQgdG8gcmVmZXIgdG8gdGhlCitXZSBzYXcgYWJvdmUgdGhhdCBgb3JpZ2luYCBpcyBqdXN0IGEgc2hvcnRjdXQgdG8gcmVmZXIgdG8gdGhlCiByZXBvc2l0b3J5IHRoYXQgeW91IG9yaWdpbmFsbHkgY2xvbmVkIGZyb20uICBUaGlzIGluZm9ybWF0aW9uIGlzCi1zdG9yZWQgaW4gZ2l0IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLCB3aGljaCB5b3UgY2FuIHNlZSB1c2luZworc3RvcmVkIGluIEdpdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcywgd2hpY2ggeW91IGNhbiBzZWUgdXNpbmcKIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjkyOSw3ICsyOTMwLDcgQEAKIAogR2l0IGlzIGJ1aWx0IG9uIGEgc21hbGwgbnVtYmVyIG9mIHNpbXBsZSBidXQgcG93ZXJmdWwgaWRlYXMuICBXaGlsZSBpdAogaXMgcG9zc2libGUgdG8gZ2V0IHRoaW5ncyBkb25lIHdpdGhvdXQgdW5kZXJzdGFuZGluZyB0aGVtLCB5b3Ugd2lsbCBmaW5kCi1naXQgbXVjaCBtb3JlIGludHVpdGl2ZSBpZiB5b3UgZG8uCitHaXQgbXVjaCBtb3JlIGludHVpdGl2ZSBpZiB5b3UgZG8uCiAKIFdlIHN0YXJ0IHdpdGggdGhlIG1vc3QgaW1wb3J0YW50LCB0aGUgIDw8ZGVmX29iamVjdF9kYXRhYmFzZSxvYmplY3QKIGRhdGFiYXNlPj4gYW5kIHRoZSA8PGRlZl9pbmRleCxpbmRleD4+LgpAQCAtMjk4NCw3ICsyOTg1LDcgQEAKIH5+fn5+fn5+fn5+fn4KIAogVGhlICJjb21taXQiIG9iamVjdCBsaW5rcyBhIHBoeXNpY2FsIHN0YXRlIG9mIGEgdHJlZSB3aXRoIGEgZGVzY3JpcHRpb24KLW9mIGhvdyB3ZSBnb3QgdGhlcmUgYW5kIHdoeS4gIFVzZSB0aGUgLS1wcmV0dHk9cmF3IG9wdGlvbiB0bworb2YgaG93IHdlIGdvdCB0aGVyZSBhbmQgd2h5LiAgVXNlIHRoZSBgLS1wcmV0dHk9cmF3YCBvcHRpb24gdG8KIGxpbmtnaXQ6Z2l0LXNob3dbMV0gb3IgbGlua2dpdDpnaXQtbG9nWzFdIHRvIGV4YW1pbmUgeW91ciBmYXZvcml0ZQogY29tbWl0OgogCkBAIC0zMDIzLDEwICszMDI0LDEwIEBACiBOb3RlIHRoYXQgYSBjb21taXQgZG9lcyBub3QgaXRzZWxmIGNvbnRhaW4gYW55IGluZm9ybWF0aW9uIGFib3V0IHdoYXQKIGFjdHVhbGx5IGNoYW5nZWQ7IGFsbCBjaGFuZ2VzIGFyZSBjYWxjdWxhdGVkIGJ5IGNvbXBhcmluZyB0aGUgY29udGVudHMKIG9mIHRoZSB0cmVlIHJlZmVycmVkIHRvIGJ5IHRoaXMgY29tbWl0IHdpdGggdGhlIHRyZWVzIGFzc29jaWF0ZWQgd2l0aAotaXRzIHBhcmVudHMuICBJbiBwYXJ0aWN1bGFyLCBnaXQgZG9lcyBub3QgYXR0ZW1wdCB0byByZWNvcmQgZmlsZSByZW5hbWVzCitpdHMgcGFyZW50cy4gIEluIHBhcnRpY3VsYXIsIEdpdCBkb2VzIG5vdCBhdHRlbXB0IHRvIHJlY29yZCBmaWxlIHJlbmFtZXMKIGV4cGxpY2l0bHksIHRob3VnaCBpdCBjYW4gaWRlbnRpZnkgY2FzZXMgd2hlcmUgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgc2FtZQogZmlsZSBkYXRhIGF0IGNoYW5naW5nIHBhdGhzIHN1Z2dlc3RzIGEgcmVuYW1lLiAgKFNlZSwgZm9yIGV4YW1wbGUsIHRoZQotLU0gb3B0aW9uIHRvIGxpbmtnaXQ6Z2l0LWRpZmZbMV0pLgorYC1NYCBvcHRpb24gdG8gbGlua2dpdDpnaXQtZGlmZlsxXSkuCiAKIEEgY29tbWl0IGlzIHVzdWFsbHkgY3JlYXRlZCBieSBsaW5rZ2l0OmdpdC1jb21taXRbMV0sIHdoaWNoIGNyZWF0ZXMgYQogY29tbWl0IHdob3NlIHBhcmVudCBpcyBub3JtYWxseSB0aGUgY3VycmVudCBIRUFELCBhbmQgd2hvc2UgdHJlZSBpcwpAQCAtMzA2MiwxNCArMzA2MywxNCBAQAogYW5kIGJsb2JzLCBsaWtlIGFsbCBvdGhlciBvYmplY3RzLCBhcmUgbmFtZWQgYnkgdGhlIFNIQS0xIGhhc2ggb2YgdGhlaXIKIGNvbnRlbnRzLCB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBTSEEtMSBuYW1lIGlmIGFuZCBvbmx5IGlmIHRoZWlyCiBjb250ZW50cyAoaW5jbHVkaW5nLCByZWN1cnNpdmVseSwgdGhlIGNvbnRlbnRzIG9mIGFsbCBzdWJkaXJlY3RvcmllcykKLWFyZSBpZGVudGljYWwuICBUaGlzIGFsbG93cyBnaXQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2VzCithcmUgaWRlbnRpY2FsLiAgVGhpcyBhbGxvd3MgR2l0IHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBkaWZmZXJlbmNlcwogYmV0d2VlbiB0d28gcmVsYXRlZCB0cmVlIG9iamVjdHMsIHNpbmNlIGl0IGNhbiBpZ25vcmUgYW55IGVudHJpZXMgd2l0aAogaWRlbnRpY2FsIG9iamVjdCBuYW1lcy4KIAogKE5vdGU6IGluIHRoZSBwcmVzZW5jZSBvZiBzdWJtb2R1bGVzLCB0cmVlcyBtYXkgYWxzbyBoYXZlIGNvbW1pdHMgYXMKIGVudHJpZXMuICBTZWUgPDxzdWJtb2R1bGVzPj4gZm9yIGRvY3VtZW50YXRpb24uKQogCi1Ob3RlIHRoYXQgdGhlIGZpbGVzIGFsbCBoYXZlIG1vZGUgNjQ0IG9yIDc1NTogZ2l0IGFjdHVhbGx5IG9ubHkgcGF5cworTm90ZSB0aGF0IHRoZSBmaWxlcyBhbGwgaGF2ZSBtb2RlIDY0NCBvciA3NTU6IEdpdCBhY3R1YWxseSBvbmx5IHBheXMKIGF0dGVudGlvbiB0byB0aGUgZXhlY3V0YWJsZSBiaXQuCiAKIFtbYmxvYi1vYmplY3RdXQpAQCAtMzA3Nyw3ICszMDc4LDcgQEAKIH5+fn5+fn5+fn5+CiAKIFlvdSBjYW4gdXNlIGxpbmtnaXQ6Z2l0LXNob3dbMV0gdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYSBibG9iOyB0YWtlLAotZm9yIGV4YW1wbGUsIHRoZSBibG9iIGluIHRoZSBlbnRyeSBmb3IgIkNPUFlJTkciIGZyb20gdGhlIHRyZWUgYWJvdmU6Citmb3IgZXhhbXBsZSwgdGhlIGJsb2IgaW4gdGhlIGVudHJ5IGZvciBgQ09QWUlOR2AgZnJvbSB0aGUgdHJlZSBhYm92ZToKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBzaG93IDZmZjg3YzQ2NjQKQEAgLTMxMzAsNyArMzEzMSw3IEBACiBvZiB0aGUgdG9wIGNvbW1pdCwgYW5kIGRpZ2l0YWxseSBzaWduIHRoYXQgZW1haWwgdXNpbmcgc29tZXRoaW5nCiBsaWtlIEdQRy9QR1AuCiAKLVRvIGFzc2lzdCBpbiB0aGlzLCBnaXQgYWxzbyBwcm92aWRlcyB0aGUgdGFnIG9iamVjdC4uLgorVG8gYXNzaXN0IGluIHRoaXMsIEdpdCBhbHNvIHByb3ZpZGVzIHRoZSB0YWcgb2JqZWN0Li4uCiAKIFtbdGFnLW9iamVjdF1dCiBUYWcgT2JqZWN0CkBAIC0zMTYwLDE0ICszMTYxLDE0IEBACiBTZWUgdGhlIGxpbmtnaXQ6Z2l0LXRhZ1sxXSBjb21tYW5kIHRvIGxlYXJuIGhvdyB0byBjcmVhdGUgYW5kIHZlcmlmeSB0YWcKIG9iamVjdHMuICAoTm90ZSB0aGF0IGxpbmtnaXQ6Z2l0LXRhZ1sxXSBjYW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZQogImxpZ2h0d2VpZ2h0IHRhZ3MiLCB3aGljaCBhcmUgbm90IHRhZyBvYmplY3RzIGF0IGFsbCwgYnV0IGp1c3Qgc2ltcGxlCi1yZWZlcmVuY2VzIHdob3NlIG5hbWVzIGJlZ2luIHdpdGggInJlZnMvdGFncy8iKS4KK3JlZmVyZW5jZXMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCBgcmVmcy90YWdzL2ApLgogCiBbW3BhY2stZmlsZXNdXQotSG93IGdpdCBzdG9yZXMgb2JqZWN0cyBlZmZpY2llbnRseTogcGFjayBmaWxlcworSG93IEdpdCBzdG9yZXMgb2JqZWN0cyBlZmZpY2llbnRseTogcGFjayBmaWxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCiBOZXdseSBjcmVhdGVkIG9iamVjdHMgYXJlIGluaXRpYWxseSBjcmVhdGVkIGluIGEgZmlsZSBuYW1lZCBhZnRlciB0aGUKLW9iamVjdCdzIFNIQS0xIGhhc2ggKHN0b3JlZCBpbiAuZ2l0L29iamVjdHMpLgorb2JqZWN0J3MgU0hBLTEgaGFzaCAoc3RvcmVkIGluIGAuZ2l0L29iamVjdHNgKS4KIAogVW5mb3J0dW5hdGVseSB0aGlzIHN5c3RlbSBiZWNvbWVzIGluZWZmaWNpZW50IG9uY2UgYSBwcm9qZWN0IGhhcyBhCiBsb3Qgb2Ygb2JqZWN0cy4gIFRyeSB0aGlzIG9uIGFuIG9sZCBwcm9qZWN0OgpAQCAtMzE4MSw3ICszMTgyLDcgQEAKIGluZGl2aWR1YWwgZmlsZXMuICBUaGUgc2Vjb25kIGlzIHRoZSBhbW91bnQgb2Ygc3BhY2UgdGFrZW4gdXAgYnkKIHRob3NlICJsb29zZSIgb2JqZWN0cy4KIAotWW91IGNhbiBzYXZlIHNwYWNlIGFuZCBtYWtlIGdpdCBmYXN0ZXIgYnkgbW92aW5nIHRoZXNlIGxvb3NlIG9iamVjdHMgaW4KK1lvdSBjYW4gc2F2ZSBzcGFjZSBhbmQgbWFrZSBHaXQgZmFzdGVyIGJ5IG1vdmluZyB0aGVzZSBsb29zZSBvYmplY3RzIGluCiB0byBhICJwYWNrIGZpbGUiLCB3aGljaCBzdG9yZXMgYSBncm91cCBvZiBvYmplY3RzIGluIGFuIGVmZmljaWVudAogY29tcHJlc3NlZCBmb3JtYXQ7IHRoZSBkZXRhaWxzIG9mIGhvdyBwYWNrIGZpbGVzIGFyZSBmb3JtYXR0ZWQgY2FuIGJlCiBmb3VuZCBpbiBsaW5rOnRlY2huaWNhbC9wYWNrLWZvcm1hdC50eHRbdGVjaG5pY2FsL3BhY2stZm9ybWF0LnR4dF0uCkBAIC0zMjA4LDkgKzMyMDksOSBAQAogCiB0byByZW1vdmUgYW55IG9mIHRoZSAibG9vc2UiIG9iamVjdHMgdGhhdCBhcmUgbm93IGNvbnRhaW5lZCBpbiB0aGUKIHBhY2suICBUaGlzIHdpbGwgYWxzbyByZW1vdmUgYW55IHVucmVmZXJlbmNlZCBvYmplY3RzICh3aGljaCBtYXkgYmUKLWNyZWF0ZWQgd2hlbiwgZm9yIGV4YW1wbGUsIHlvdSB1c2UgImdpdCByZXNldCIgdG8gcmVtb3ZlIGEgY29tbWl0KS4KK2NyZWF0ZWQgd2hlbiwgZm9yIGV4YW1wbGUsIHlvdSB1c2UgYGdpdCByZXNldGAgdG8gcmVtb3ZlIGEgY29tbWl0KS4KIFlvdSBjYW4gdmVyaWZ5IHRoYXQgdGhlIGxvb3NlIG9iamVjdHMgYXJlIGdvbmUgYnkgbG9va2luZyBhdCB0aGUKLS5naXQvb2JqZWN0cyBkaXJlY3Rvcnkgb3IgYnkgcnVubmluZworYC5naXQvb2JqZWN0c2AgZGlyZWN0b3J5IG9yIGJ5IHJ1bm5pbmcKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBjb3VudC1vYmplY3RzCkBAIC0zMjM3LDcgKzMyMzgsNyBAQAogcG9pbnRlciBpdHNlbGYganVzdCBkb2Vzbid0LCBzaW5jZSB5b3UgcmVwbGFjZWQgaXQgd2l0aCBhbm90aGVyIG9uZS4KIAogVGhlcmUgYXJlIGFsc28gb3RoZXIgc2l0dWF0aW9ucyB0aGF0IGNhdXNlIGRhbmdsaW5nIG9iamVjdHMuIEZvcgotZXhhbXBsZSwgYSAiZGFuZ2xpbmcgYmxvYiIgbWF5IGFyaXNlIGJlY2F1c2UgeW91IGRpZCBhICJnaXQgYWRkIiBvZiBhCitleGFtcGxlLCBhICJkYW5nbGluZyBibG9iIiBtYXkgYXJpc2UgYmVjYXVzZSB5b3UgZGlkIGEgYGdpdCBhZGRgIG9mIGEKIGZpbGUsIGJ1dCB0aGVuLCBiZWZvcmUgeW91IGFjdHVhbGx5IGNvbW1pdHRlZCBpdCBhbmQgbWFkZSBpdCBwYXJ0IG9mIHRoZQogYmlnZ2VyIHBpY3R1cmUsIHlvdSBjaGFuZ2VkIHNvbWV0aGluZyBlbHNlIGluIHRoYXQgZmlsZSBhbmQgY29tbWl0dGVkCiB0aGF0ICp1cGRhdGVkKiB0aGluZy0tdGhlIG9sZCBzdGF0ZSB0aGF0IHlvdSBhZGRlZCBvcmlnaW5hbGx5IGVuZHMgdXAKQEAgLTMyODAsMTQgKzMyODEsMTQgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB0byBzaG93IHdoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBibG9iIHdlcmUgKG9yLCBmb3IgYSB0cmVlLCBiYXNpY2FsbHkKLXdoYXQgdGhlICJscyIgZm9yIHRoYXQgZGlyZWN0b3J5IHdhcyksIGFuZCB0aGF0IG1heSBnaXZlIHlvdSBzb21lIGlkZWEKK3doYXQgdGhlIGBsc2AgZm9yIHRoYXQgZGlyZWN0b3J5IHdhcyksIGFuZCB0aGF0IG1heSBnaXZlIHlvdSBzb21lIGlkZWEKIG9mIHdoYXQgdGhlIG9wZXJhdGlvbiB3YXMgdGhhdCBsZWZ0IHRoYXQgZGFuZ2xpbmcgb2JqZWN0LgogCiBVc3VhbGx5LCBkYW5nbGluZyBibG9icyBhbmQgdHJlZXMgYXJlbid0IHZlcnkgaW50ZXJlc3RpbmcuIFRoZXkncmUKIGFsbW9zdCBhbHdheXMgdGhlIHJlc3VsdCBvZiBlaXRoZXIgYmVpbmcgYSBoYWxmLXdheSBtZXJnZWJhc2UgKHRoZSBibG9iCiB3aWxsIG9mdGVuIGV2ZW4gaGF2ZSB0aGUgY29uZmxpY3QgbWFya2VycyBmcm9tIGEgbWVyZ2UgaW4gaXQsIGlmIHlvdQogaGF2ZSBoYWQgY29uZmxpY3RpbmcgbWVyZ2VzIHRoYXQgeW91IGZpeGVkIHVwIGJ5IGhhbmQpLCBvciBzaW1wbHkKLWJlY2F1c2UgeW91IGludGVycnVwdGVkIGEgImdpdCBmZXRjaCIgd2l0aCBeQyBvciBzb21ldGhpbmcgbGlrZSB0aGF0LAorYmVjYXVzZSB5b3UgaW50ZXJydXB0ZWQgYSBgZ2l0IGZldGNoYCB3aXRoIF5DIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQsCiBsZWF2aW5nIF9zb21lXyBvZiB0aGUgbmV3IG9iamVjdHMgaW4gdGhlIG9iamVjdCBkYXRhYmFzZSwgYnV0IGp1c3QKIGRhbmdsaW5nIGFuZCB1c2VsZXNzLgogCkBAIC0zMjk4LDI4ICszMjk5LDI4IEBACiAkIGdpdCBwcnVuZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWFuZCB0aGV5J2xsIGJlIGdvbmUuIEJ1dCB5b3Ugc2hvdWxkIG9ubHkgcnVuICJnaXQgcHJ1bmUiIG9uIGEgcXVpZXNjZW50CithbmQgdGhleSdsbCBiZSBnb25lLiBCdXQgeW91IHNob3VsZCBvbmx5IHJ1biBgZ2l0IHBydW5lYCBvbiBhIHF1aWVzY2VudAogcmVwb3NpdG9yeS0taXQncyBraW5kIG9mIGxpa2UgZG9pbmcgYSBmaWxlc3lzdGVtIGZzY2sgcmVjb3Zlcnk6IHlvdQogZG9uJ3Qgd2FudCB0byBkbyB0aGF0IHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuCiAKLShUaGUgc2FtZSBpcyB0cnVlIG9mICJnaXQgZnNjayIgaXRzZWxmLCBidHcsIGJ1dCBzaW5jZQorKFRoZSBzYW1lIGlzIHRydWUgb2YgYGdpdCBmc2NrYCBpdHNlbGYsIGJ0dywgYnV0IHNpbmNlCiBgZ2l0IGZzY2tgIG5ldmVyIGFjdHVhbGx5ICpjaGFuZ2VzKiB0aGUgcmVwb3NpdG9yeSwgaXQganVzdCByZXBvcnRzCiBvbiB3aGF0IGl0IGZvdW5kLCBgZ2l0IGZzY2tgIGl0c2VsZiBpcyBuZXZlciAnZGFuZ2Vyb3VzJyB0byBydW4uCiBSdW5uaW5nIGl0IHdoaWxlIHNvbWVib2R5IGlzIGFjdHVhbGx5IGNoYW5naW5nIHRoZSByZXBvc2l0b3J5IGNhbiBjYXVzZQogY29uZnVzaW5nIGFuZCBzY2FyeSBtZXNzYWdlcywgYnV0IGl0IHdvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIGJhZC4gSW4KLWNvbnRyYXN0LCBydW5uaW5nICJnaXQgcHJ1bmUiIHdoaWxlIHNvbWVib2R5IGlzIGFjdGl2ZWx5IGNoYW5naW5nIHRoZQorY29udHJhc3QsIHJ1bm5pbmcgYGdpdCBwcnVuZWAgd2hpbGUgc29tZWJvZHkgaXMgYWN0aXZlbHkgY2hhbmdpbmcgdGhlCiByZXBvc2l0b3J5IGlzIGEgKkJBRCogaWRlYSkuCiAKIFtbcmVjb3ZlcmluZy1mcm9tLXJlcG9zaXRvcnktY29ycnVwdGlvbl1dCiBSZWNvdmVyaW5nIGZyb20gcmVwb3NpdG9yeSBjb3JydXB0aW9uCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLUJ5IGRlc2lnbiwgZ2l0IHRyZWF0cyBkYXRhIHRydXN0ZWQgdG8gaXQgd2l0aCBjYXV0aW9uLiAgSG93ZXZlciwgZXZlbiBpbgotdGhlIGFic2VuY2Ugb2YgYnVncyBpbiBnaXQgaXRzZWxmLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0aGF0IGhhcmR3YXJlIG9yCitCeSBkZXNpZ24sIEdpdCB0cmVhdHMgZGF0YSB0cnVzdGVkIHRvIGl0IHdpdGggY2F1dGlvbi4gIEhvd2V2ZXIsIGV2ZW4gaW4KK3RoZSBhYnNlbmNlIG9mIGJ1Z3MgaW4gR2l0IGl0c2VsZiwgaXQgaXMgc3RpbGwgcG9zc2libGUgdGhhdCBoYXJkd2FyZSBvcgogb3BlcmF0aW5nIHN5c3RlbSBlcnJvcnMgY291bGQgY29ycnVwdCBkYXRhLgogCiBUaGUgZmlyc3QgZGVmZW5zZSBhZ2FpbnN0IHN1Y2ggcHJvYmxlbXMgaXMgYmFja3Vwcy4gIFlvdSBjYW4gYmFjayB1cCBhCi1naXQgZGlyZWN0b3J5IHVzaW5nIGNsb25lLCBvciBqdXN0IHVzaW5nIGNwLCB0YXIsIG9yIGFueSBvdGhlciBiYWNrdXAKK0dpdCBkaXJlY3RvcnkgdXNpbmcgY2xvbmUsIG9yIGp1c3QgdXNpbmcgY3AsIHRhciwgb3IgYW55IG90aGVyIGJhY2t1cAogbWVjaGFuaXNtLgogCiBBcyBhIGxhc3QgcmVzb3J0LCB5b3UgY2FuIHNlYXJjaCBmb3IgdGhlIGNvcnJ1cHRlZCBvYmplY3RzIGFuZCBhdHRlbXB0CkBAIC0zMzQ1LDcgKzMzNDYsNyBAQAogTm93IHlvdSBrbm93IHRoYXQgYmxvYiA0Yjk0NThiMyBpcyBtaXNzaW5nLCBhbmQgdGhhdCB0aGUgdHJlZSAyZDkyNjNjNgogcG9pbnRzIHRvIGl0LiAgSWYgeW91IGNvdWxkIGZpbmQganVzdCBvbmUgY29weSBvZiB0aGF0IG1pc3NpbmcgYmxvYgogb2JqZWN0LCBwb3NzaWJseSBpbiBzb21lIG90aGVyIHJlcG9zaXRvcnksIHlvdSBjb3VsZCBtb3ZlIGl0IGludG8KLS5naXQvb2JqZWN0cy80Yi85NDU4YjMuLi4gYW5kIGJlIGRvbmUuICBTdXBwb3NlIHlvdSBjYW4ndC4gIFlvdSBjYW4KK2AuZ2l0L29iamVjdHMvNGIvOTQ1OGIzLi4uYCBhbmQgYmUgZG9uZS4gIFN1cHBvc2UgeW91IGNhbid0LiAgWW91IGNhbgogc3RpbGwgZXhhbWluZSB0aGUgdHJlZSB0aGF0IHBvaW50ZWQgdG8gaXQgd2l0aCBsaW5rZ2l0OmdpdC1scy10cmVlWzFdLAogd2hpY2ggbWlnaHQgb3V0cHV0IHNvbWV0aGluZyBsaWtlOgogCkBAIC0zMzYwLDEwICszMzYxLDEwIEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU28gbm93IHlvdSBrbm93IHRoYXQgdGhlIG1pc3NpbmcgYmxvYiB3YXMgdGhlIGRhdGEgZm9yIGEgZmlsZSBuYW1lZAotIm15ZmlsZSIuICBBbmQgY2hhbmNlcyBhcmUgeW91IGNhbiBhbHNvIGlkZW50aWZ5IHRoZSBkaXJlY3RvcnktLWxldCdzCi1zYXkgaXQncyBpbiAic29tZWRpcmVjdG9yeSIuICBJZiB5b3UncmUgbHVja3kgdGhlIG1pc3NpbmcgY29weSBtaWdodCBiZQorYG15ZmlsZWAuICBBbmQgY2hhbmNlcyBhcmUgeW91IGNhbiBhbHNvIGlkZW50aWZ5IHRoZSBkaXJlY3RvcnktLWxldCdzCitzYXkgaXQncyBpbiBgc29tZWRpcmVjdG9yeWAuICBJZiB5b3UncmUgbHVja3kgdGhlIG1pc3NpbmcgY29weSBtaWdodCBiZQogdGhlIHNhbWUgYXMgdGhlIGNvcHkgeW91IGhhdmUgY2hlY2tlZCBvdXQgaW4geW91ciB3b3JraW5nIHRyZWUgYXQKLSJzb21lZGlyZWN0b3J5L215ZmlsZSI7IHlvdSBjYW4gdGVzdCB3aGV0aGVyIHRoYXQncyByaWdodCB3aXRoCitgc29tZWRpcmVjdG9yeS9teWZpbGVgOyB5b3UgY2FuIHRlc3Qgd2hldGhlciB0aGF0J3MgcmlnaHQgd2l0aAogbGlua2dpdDpnaXQtaGFzaC1vYmplY3RbMV06CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzQxOCw3ICszNDE5LDcgQEAKIAogYW5kIHlvdXIgcmVwb3NpdG9yeSBpcyBnb29kIGFnYWluIQogCi0oQnR3LCB5b3UgY291bGQgaGF2ZSBpZ25vcmVkIHRoZSBmc2NrLCBhbmQgc3RhcnRlZCB3aXRoIGRvaW5nIGEKKyhCdHcsIHlvdSBjb3VsZCBoYXZlIGlnbm9yZWQgdGhlIGBmc2NrYCwgYW5kIHN0YXJ0ZWQgd2l0aCBkb2luZyBhCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgbG9nIC0tcmF3IC0tYWxsCkBAIC0zNDMyLDcgKzM0MzMsNyBAQAogVGhlIGluZGV4CiAtLS0tLS0tLS0tLQogCi1UaGUgaW5kZXggaXMgYSBiaW5hcnkgZmlsZSAoZ2VuZXJhbGx5IGtlcHQgaW4gLmdpdC9pbmRleCkgY29udGFpbmluZyBhCitUaGUgaW5kZXggaXMgYSBiaW5hcnkgZmlsZSAoZ2VuZXJhbGx5IGtlcHQgaW4gYC5naXQvaW5kZXhgKSBjb250YWluaW5nIGEKIHNvcnRlZCBsaXN0IG9mIHBhdGggbmFtZXMsIGVhY2ggd2l0aCBwZXJtaXNzaW9ucyBhbmQgdGhlIFNIQS0xIG9mIGEgYmxvYgogb2JqZWN0OyBsaW5rZ2l0OmdpdC1scy1maWxlc1sxXSBjYW4gc2hvdyB5b3UgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbmRleDoKIApAQCAtMzQ2Nyw3ICszNDY4LDcgQEAKIHRoZSBsYXN0IG1vZGlmaWVkIHRpbWUpLiAgVGhpcyBkYXRhIGlzIG5vdCBkaXNwbGF5ZWQgYWJvdmUsIGFuZCBpcyBub3QKIHN0b3JlZCBpbiB0aGUgY3JlYXRlZCB0cmVlIG9iamVjdCwgYnV0IGl0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZQogcXVpY2tseSB3aGljaCBmaWxlcyBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkgZGlmZmVyIGZyb20gd2hhdCB3YXMKLXN0b3JlZCBpbiB0aGUgaW5kZXgsIGFuZCB0aHVzIHNhdmUgZ2l0IGZyb20gaGF2aW5nIHRvIHJlYWQgYWxsIG9mIHRoZQorc3RvcmVkIGluIHRoZSBpbmRleCwgYW5kIHRodXMgc2F2ZSBHaXQgZnJvbSBoYXZpbmcgdG8gcmVhZCBhbGwgb2YgdGhlCiBkYXRhIGZyb20gc3VjaCBmaWxlcyB0byBsb29rIGZvciBjaGFuZ2VzLgogCiAzLiBJdCBjYW4gZWZmaWNpZW50bHkgcmVwcmVzZW50IGluZm9ybWF0aW9uIGFib3V0IG1lcmdlIGNvbmZsaWN0cwpAQCAtMzU3Miw3ICszNTczLDcgQEAKIAogVGhlIGBnaXQgc3VibW9kdWxlIGFkZCA8cmVwbz4gPHBhdGg+YCBjb21tYW5kIGRvZXMgYSBjb3VwbGUgb2YgdGhpbmdzOgogCi0tIEl0IGNsb25lcyB0aGUgc3VibW9kdWxlIGZyb20gPHJlcG8+IHRvIHRoZSBnaXZlbiA8cGF0aD4gdW5kZXIgdGhlCistIEl0IGNsb25lcyB0aGUgc3VibW9kdWxlIGZyb20gYDxyZXBvPmAgdG8gdGhlIGdpdmVuIGA8cGF0aD5gIHVuZGVyIHRoZQogICBjdXJyZW50IGRpcmVjdG9yeSBhbmQgYnkgZGVmYXVsdCBjaGVja3Mgb3V0IHRoZSBtYXN0ZXIgYnJhbmNoLgogLSBJdCBhZGRzIHRoZSBzdWJtb2R1bGUncyBjbG9uZSBwYXRoIHRvIHRoZSBsaW5rZ2l0OmdpdG1vZHVsZXNbNV0gZmlsZSBhbmQKICAgYWRkcyB0aGlzIGZpbGUgdG8gdGhlIGluZGV4LCByZWFkeSB0byBiZSBjb21taXR0ZWQuCkBAIC0zNjk4LDEzICszNjk5LDEzIEBACiBVbmFibGUgdG8gY2hlY2tvdXQgJzI2MWRmYWMzNWNiOTlkMzgwZWI5NjZlMTAyYzExOTcxMzlmN2ZhMjQnIGluIHN1Ym1vZHVsZSBwYXRoICdhJwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JbiBvbGRlciBnaXQgdmVyc2lvbnMgaXQgY291bGQgYmUgZWFzaWx5IGZvcmdvdHRlbiB0byBjb21taXQgbmV3IG9yIG1vZGlmaWVkCitJbiBvbGRlciBHaXQgdmVyc2lvbnMgaXQgY291bGQgYmUgZWFzaWx5IGZvcmdvdHRlbiB0byBjb21taXQgbmV3IG9yIG1vZGlmaWVkCiBmaWxlcyBpbiBhIHN1Ym1vZHVsZSwgd2hpY2ggc2lsZW50bHkgbGVhZHMgdG8gc2ltaWxhciBwcm9ibGVtcyBhcyBub3QgcHVzaGluZwotdGhlIHN1Ym1vZHVsZSBjaGFuZ2VzLiBTdGFydGluZyB3aXRoIGdpdCAxLjcuMCBib3RoICJnaXQgc3RhdHVzIiBhbmQgImdpdCBkaWZmIgordGhlIHN1Ym1vZHVsZSBjaGFuZ2VzLiBTdGFydGluZyB3aXRoIEdpdCAxLjcuMCBib3RoIGBnaXQgc3RhdHVzYCBhbmQgYGdpdCBkaWZmYAogaW4gdGhlIHN1cGVycHJvamVjdCBzaG93IHN1Ym1vZHVsZXMgYXMgbW9kaWZpZWQgd2hlbiB0aGV5IGNvbnRhaW4gbmV3IG9yCi1tb2RpZmllZCBmaWxlcyB0byBwcm90ZWN0IGFnYWluc3QgYWNjaWRlbnRhbGx5IGNvbW1pdHRpbmcgc3VjaCBhIHN0YXRlLiAiZ2l0Ci1kaWZmIiB3aWxsIGFsc28gYWRkIGEgIi1kaXJ0eSIgdG8gdGhlIHdvcmsgdHJlZSBzaWRlIHdoZW4gZ2VuZXJhdGluZyBwYXRjaAotb3V0cHV0IG9yIHVzZWQgd2l0aCB0aGUgLS1zdWJtb2R1bGUgb3B0aW9uOgorbW9kaWZpZWQgZmlsZXMgdG8gcHJvdGVjdCBhZ2FpbnN0IGFjY2lkZW50YWxseSBjb21taXR0aW5nIHN1Y2ggYSBzdGF0ZS4gYGdpdAorZGlmZmAgd2lsbCBhbHNvIGFkZCBhIGAtZGlydHlgIHRvIHRoZSB3b3JrIHRyZWUgc2lkZSB3aGVuIGdlbmVyYXRpbmcgcGF0Y2gKK291dHB1dCBvciB1c2VkIHdpdGggdGhlIGAtLXN1Ym1vZHVsZWAgb3B0aW9uOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGdpdCBkaWZmCkBAIC0zNzQ1LDEyICszNzQ2LDEyIEBACiB3YXJuaW5nIGFib3V0IG5vdCBiZWluZyBhYmxlIHN3aXRjaCBmcm9tIGEgZGlydHkgYnJhbmNoLgogCiBbW2xvdy1sZXZlbC1vcGVyYXRpb25zXV0KLUxvdy1sZXZlbCBnaXQgb3BlcmF0aW9ucworTG93LWxldmVsIEdpdCBvcGVyYXRpb25zCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAogTWFueSBvZiB0aGUgaGlnaGVyLWxldmVsIGNvbW1hbmRzIHdlcmUgb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBhcyBzaGVsbAotc2NyaXB0cyB1c2luZyBhIHNtYWxsZXIgY29yZSBvZiBsb3ctbGV2ZWwgZ2l0IGNvbW1hbmRzLiAgVGhlc2UgY2FuIHN0aWxsCi1iZSB1c2VmdWwgd2hlbiBkb2luZyB1bnVzdWFsIHRoaW5ncyB3aXRoIGdpdCwgb3IganVzdCBhcyBhIHdheSB0bworc2NyaXB0cyB1c2luZyBhIHNtYWxsZXIgY29yZSBvZiBsb3ctbGV2ZWwgR2l0IGNvbW1hbmRzLiAgVGhlc2UgY2FuIHN0aWxsCitiZSB1c2VmdWwgd2hlbiBkb2luZyB1bnVzdWFsIHRoaW5ncyB3aXRoIEdpdCwgb3IganVzdCBhcyBhIHdheSB0bwogdW5kZXJzdGFuZCBpdHMgaW5uZXIgd29ya2luZ3MuCiAKIFtbb2JqZWN0LW1hbmlwdWxhdGlvbl1dCkBAIC0zNzgxLDcgKzM3ODIsNyBAQAogcHJvdmlkZXMgbG93LWxldmVsIG9wZXJhdGlvbnMgd2hpY2ggcGVyZm9ybSBlYWNoIG9mIHRoZXNlIHN0ZXBzCiBpbmRpdmlkdWFsbHkuCiAKLUdlbmVyYWxseSwgYWxsICJnaXQiIG9wZXJhdGlvbnMgd29yayBvbiB0aGUgaW5kZXggZmlsZS4gU29tZSBvcGVyYXRpb25zCitHZW5lcmFsbHksIGFsbCBHaXQgb3BlcmF0aW9ucyB3b3JrIG9uIHRoZSBpbmRleCBmaWxlLiBTb21lIG9wZXJhdGlvbnMKIHdvcmsgKnB1cmVseSogb24gdGhlIGluZGV4IGZpbGUgKHNob3dpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCiBpbmRleCksIGJ1dCBtb3N0IG9wZXJhdGlvbnMgbW92ZSBkYXRhIGJldHdlZW4gdGhlIGluZGV4IGZpbGUgYW5kIGVpdGhlcgogdGhlIGRhdGFiYXNlIG9yIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gVGh1cyB0aGVyZSBhcmUgZm91ciBtYWluCkBAIC0zODA0LDcgKzM4MDUsNyBAQAogd2lsbCBub3Qgbm9ybWFsbHkgYWRkIHRvdGFsbHkgbmV3IGVudHJpZXMgb3IgcmVtb3ZlIG9sZCBlbnRyaWVzLAogaS5lLiBpdCB3aWxsIG5vcm1hbGx5IGp1c3QgdXBkYXRlIGV4aXN0aW5nIGNhY2hlIGVudHJpZXMuCiAKLVRvIHRlbGwgZ2l0IHRoYXQgeWVzLCB5b3UgcmVhbGx5IGRvIHJlYWxpemUgdGhhdCBjZXJ0YWluIGZpbGVzIG5vCitUbyB0ZWxsIEdpdCB0aGF0IHllcywgeW91IHJlYWxseSBkbyByZWFsaXplIHRoYXQgY2VydGFpbiBmaWxlcyBubwogbG9uZ2VyIGV4aXN0LCBvciB0aGF0IG5ldyBmaWxlcyBzaG91bGQgYmUgYWRkZWQsIHlvdQogc2hvdWxkIHVzZSB0aGUgYC0tcmVtb3ZlYCBhbmQgYC0tYWRkYCBmbGFncyByZXNwZWN0aXZlbHkuCiAKQEAgLTM4ODAsNyArMzg4MSw3IEBACiAKIE5PVEUhIGBnaXQgY2hlY2tvdXQtaW5kZXhgIG5vcm1hbGx5IHJlZnVzZXMgdG8gb3ZlcndyaXRlIG9sZCBmaWxlcywgc28KIGlmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSB0cmVlIGFscmVhZHkgY2hlY2tlZCBvdXQsIHlvdSB3aWxsCi1uZWVkIHRvIHVzZSB0aGUgIi1mIiBmbGFnICgnYmVmb3JlJyB0aGUgIi1hIiBmbGFnIG9yIHRoZSBmaWxlbmFtZSkgdG8KK25lZWQgdG8gdXNlIHRoZSBgLWZgIGZsYWcgKCdiZWZvcmUnIHRoZSBgLWFgIGZsYWcgb3IgdGhlIGZpbGVuYW1lKSB0bwogJ2ZvcmNlJyB0aGUgY2hlY2tvdXQuCiAKIApAQCAtMzg5MSw3ICszODkyLDcgQEAKIFR5aW5nIGl0IGFsbCB0b2dldGhlcgogfn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLVRvIGNvbW1pdCBhIHRyZWUgeW91IGhhdmUgaW5zdGFudGlhdGVkIHdpdGggImdpdCB3cml0ZS10cmVlIiwgeW91J2QKK1RvIGNvbW1pdCBhIHRyZWUgeW91IGhhdmUgaW5zdGFudGlhdGVkIHdpdGggYGdpdCB3cml0ZS10cmVlYCwgeW91J2QKIGNyZWF0ZSBhICJjb21taXQiIG9iamVjdCB0aGF0IHJlZmVycyB0byB0aGF0IHRyZWUgYW5kIHRoZSBoaXN0b3J5CiBiZWhpbmQgaXQtLW1vc3Qgbm90YWJseSB0aGUgInBhcmVudCIgY29tbWl0cyB0aGF0IHByZWNlZGVkIGl0IGluCiBoaXN0b3J5LgpAQCAtMzkxOCw3ICszOTE5LDcgQEAKIAogYGdpdCBjb21taXQtdHJlZWAgd2lsbCByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMKIHRoYXQgY29tbWl0LCBhbmQgeW91IHNob3VsZCBzYXZlIGl0IGF3YXkgZm9yIGxhdGVyIHVzZS4gTm9ybWFsbHksCi15b3UnZCBjb21taXQgYSBuZXcgYEhFQURgIHN0YXRlLCBhbmQgd2hpbGUgZ2l0IGRvZXNuJ3QgY2FyZSB3aGVyZSB5b3UKK3lvdSdkIGNvbW1pdCBhIG5ldyBgSEVBRGAgc3RhdGUsIGFuZCB3aGlsZSBHaXQgZG9lc24ndCBjYXJlIHdoZXJlIHlvdQogc2F2ZSB0aGUgbm90ZSBhYm91dCB0aGF0IHN0YXRlLCBpbiBwcmFjdGljZSB3ZSB0ZW5kIHRvIGp1c3Qgd3JpdGUgdGhlCiByZXN1bHQgdG8gdGhlIGZpbGUgcG9pbnRlZCBhdCBieSBgLmdpdC9IRUFEYCwgc28gdGhhdCB3ZSBjYW4gYWx3YXlzIHNlZQogd2hhdCB0aGUgbGFzdCBjb21taXR0ZWQgc3RhdGUgd2FzLgpAQCAtNDA3NSw3ICs0MDc2LDcgQEAKIAogRWFjaCBsaW5lIG9mIHRoZSBgZ2l0IGxzLWZpbGVzIC0tdW5tZXJnZWRgIG91dHB1dCBiZWdpbnMgd2l0aAogdGhlIGJsb2IgbW9kZSBiaXRzLCBibG9iIFNIQS0xLCAnc3RhZ2UgbnVtYmVyJywgYW5kIHRoZQotZmlsZW5hbWUuICBUaGUgJ3N0YWdlIG51bWJlcicgaXMgZ2l0J3Mgd2F5IHRvIHNheSB3aGljaCB0cmVlIGl0CitmaWxlbmFtZS4gIFRoZSAnc3RhZ2UgbnVtYmVyJyBpcyBHaXQncyB3YXkgdG8gc2F5IHdoaWNoIHRyZWUgaXQKIGNhbWUgZnJvbTogc3RhZ2UgMSBjb3JyZXNwb25kcyB0byB0aGUgYCRvcmlnYCB0cmVlLCBzdGFnZSAyIHRvCiB0aGUgYEhFQURgIHRyZWUsIGFuZCBzdGFnZSAzIHRvIHRoZSBgJHRhcmdldGAgdHJlZS4KIApAQCAtNDA4Nyw3ICs0MDg4LDcgQEAKIGFib3ZlIGV4YW1wbGUgc2hvd3MgaXMgdGhhdCBmaWxlIGBoZWxsby5jYCB3YXMgY2hhbmdlZCBmcm9tCiBgJG9yaWdgIHRvIGBIRUFEYCBhbmQgYCRvcmlnYCB0byBgJHRhcmdldGAgaW4gYSBkaWZmZXJlbnQgd2F5LgogWW91IGNvdWxkIHJlc29sdmUgdGhpcyBieSBydW5uaW5nIHlvdXIgZmF2b3JpdGUgMy13YXkgbWVyZ2UKLXByb2dyYW0sIGUuZy4gIGBkaWZmM2AsIGBtZXJnZWAsIG9yIGdpdCdzIG93biBtZXJnZS1maWxlLCBvbgorcHJvZ3JhbSwgZS5nLiAgYGRpZmYzYCwgYG1lcmdlYCwgb3IgR2l0J3Mgb3duIG1lcmdlLWZpbGUsIG9uCiB0aGUgYmxvYiBvYmplY3RzIGZyb20gdGhlc2UgdGhyZWUgc3RhZ2VzIHlvdXJzZWxmLCBsaWtlIHRoaXM6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA5OSw3ICs0MTAwLDcgQEAKIAogVGhpcyB3b3VsZCBsZWF2ZSB0aGUgbWVyZ2UgcmVzdWx0IGluIGBoZWxsby5jfjJgIGZpbGUsIGFsb25nCiB3aXRoIGNvbmZsaWN0IG1hcmtlcnMgaWYgdGhlcmUgYXJlIGNvbmZsaWN0cy4gIEFmdGVyIHZlcmlmeWluZwotdGhlIG1lcmdlIHJlc3VsdCBtYWtlcyBzZW5zZSwgeW91IGNhbiB0ZWxsIGdpdCB3aGF0IHRoZSBmaW5hbAordGhlIG1lcmdlIHJlc3VsdCBtYWtlcyBzZW5zZSwgeW91IGNhbiB0ZWxsIEdpdCB3aGF0IHRoZSBmaW5hbAogbWVyZ2UgcmVzdWx0IGZvciB0aGlzIGZpbGUgaXMgYnk6CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQxMDgsMTEgKzQxMDksMTEgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2hlbiBhIHBhdGggaXMgaW4gdGhlICJ1bm1lcmdlZCIgc3RhdGUsIHJ1bm5pbmcgYGdpdCB1cGRhdGUtaW5kZXhgIGZvcgotdGhhdCBwYXRoIHRlbGxzIGdpdCB0byBtYXJrIHRoZSBwYXRoIHJlc29sdmVkLgordGhhdCBwYXRoIHRlbGxzIEdpdCB0byBtYXJrIHRoZSBwYXRoIHJlc29sdmVkLgogCi1UaGUgYWJvdmUgaXMgdGhlIGRlc2NyaXB0aW9uIG9mIGEgZ2l0IG1lcmdlIGF0IHRoZSBsb3dlc3QgbGV2ZWwsCitUaGUgYWJvdmUgaXMgdGhlIGRlc2NyaXB0aW9uIG9mIGEgR2l0IG1lcmdlIGF0IHRoZSBsb3dlc3QgbGV2ZWwsCiB0byBoZWxwIHlvdSB1bmRlcnN0YW5kIHdoYXQgY29uY2VwdHVhbGx5IGhhcHBlbnMgdW5kZXIgdGhlIGhvb2QuCi1JbiBwcmFjdGljZSwgbm9ib2R5LCBub3QgZXZlbiBnaXQgaXRzZWxmLCBydW5zIGBnaXQgY2F0LWZpbGVgIHRocmVlIHRpbWVzCitJbiBwcmFjdGljZSwgbm9ib2R5LCBub3QgZXZlbiBHaXQgaXRzZWxmLCBydW5zIGBnaXQgY2F0LWZpbGVgIHRocmVlIHRpbWVzCiBmb3IgdGhpcy4gIFRoZXJlIGlzIGEgYGdpdCBtZXJnZS1pbmRleGAgcHJvZ3JhbSB0aGF0IGV4dHJhY3RzIHRoZQogc3RhZ2VzIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgY2FsbHMgYSAibWVyZ2UiIHNjcmlwdCBvbiBpdDoKIApAQCAtNDEyMywxMSArNDEyNCwxMSBAQAogYW5kIHRoYXQgaXMgd2hhdCBoaWdoZXIgbGV2ZWwgYGdpdCBtZXJnZSAtcyByZXNvbHZlYCBpcyBpbXBsZW1lbnRlZCB3aXRoLgogCiBbW2hhY2tpbmctZ2l0XV0KLUhhY2tpbmcgZ2l0CitIYWNraW5nIEdpdAogPT09PT09PT09PT0KIAotVGhpcyBjaGFwdGVyIGNvdmVycyBpbnRlcm5hbCBkZXRhaWxzIG9mIHRoZSBnaXQgaW1wbGVtZW50YXRpb24gd2hpY2gKLXByb2JhYmx5IG9ubHkgZ2l0IGRldmVsb3BlcnMgbmVlZCB0byB1bmRlcnN0YW5kLgorVGhpcyBjaGFwdGVyIGNvdmVycyBpbnRlcm5hbCBkZXRhaWxzIG9mIHRoZSBHaXQgaW1wbGVtZW50YXRpb24gd2hpY2gKK3Byb2JhYmx5IG9ubHkgR2l0IGRldmVsb3BlcnMgbmVlZCB0byB1bmRlcnN0YW5kLgogCiBbW29iamVjdC1kZXRhaWxzXV0KIE9iamVjdCBzdG9yYWdlIGZvcm1hdApAQCAtNDE0NSwxNSArNDE0NiwxNiBAQAogdGhhdCBpcyB1c2VkIHRvIG5hbWUgdGhlIG9iamVjdCBpcyB0aGUgaGFzaCBvZiB0aGUgb3JpZ2luYWwgZGF0YQogcGx1cyB0aGlzIGhlYWRlciwgc28gYHNoYTFzdW1gICdmaWxlJyBkb2VzIG5vdCBtYXRjaCB0aGUgb2JqZWN0IG5hbWUKIGZvciAnZmlsZScuCi0oSGlzdG9yaWNhbCBub3RlOiBpbiB0aGUgZGF3biBvZiB0aGUgYWdlIG9mIGdpdCB0aGUgaGFzaAorKEhpc3RvcmljYWwgbm90ZTogaW4gdGhlIGRhd24gb2YgdGhlIGFnZSBvZiBHaXQgdGhlIGhhc2gKIHdhcyB0aGUgU0hBLTEgb2YgdGhlICdjb21wcmVzc2VkJyBvYmplY3QuKQogCiBBcyBhIHJlc3VsdCwgdGhlIGdlbmVyYWwgY29uc2lzdGVuY3kgb2YgYW4gb2JqZWN0IGNhbiBhbHdheXMgYmUgdGVzdGVkCiBpbmRlcGVuZGVudGx5IG9mIHRoZSBjb250ZW50cyBvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0OiBhbGwgb2JqZWN0cyBjYW4KIGJlIHZhbGlkYXRlZCBieSB2ZXJpZnlpbmcgdGhhdCAoYSkgdGhlaXIgaGFzaGVzIG1hdGNoIHRoZSBjb250ZW50IG9mIHRoZQogZmlsZSBhbmQgKGIpIHRoZSBvYmplY3Qgc3VjY2Vzc2Z1bGx5IGluZmxhdGVzIHRvIGEgc3RyZWFtIG9mIGJ5dGVzIHRoYXQKLWZvcm1zIGEgc2VxdWVuY2Ugb2YgPGFzY2lpIHR5cGUgd2l0aG91dCBzcGFjZT4ge3BsdXN9IDxzcGFjZT4ge3BsdXN9IDxhc2NpaSBkZWNpbWFsCi1zaXplPiB7cGx1c30gPGJ5dGVcMD4ge3BsdXN9IDxiaW5hcnkgb2JqZWN0IGRhdGE+LgorZm9ybXMgYSBzZXF1ZW5jZSBvZgorYDxhc2NpaSB0eXBlIHdpdGhvdXQgc3BhY2U+ICsgPHNwYWNlPiArIDxhc2NpaSBkZWNpbWFsIHNpemU+ICsKKzxieXRlXDA+ICsgPGJpbmFyeSBvYmplY3QgZGF0YT5gLgogCiBUaGUgc3RydWN0dXJlZCBvYmplY3RzIGNhbiBmdXJ0aGVyIGhhdmUgdGhlaXIgc3RydWN0dXJlIGFuZAogY29ubmVjdGl2aXR5IHRvIG90aGVyIG9iamVjdHMgdmVyaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IGRvbmUgd2l0aApAQCAtNDE3NSw3ICs0MTc3LDcgQEAKICQgZ2l0IGNoZWNrb3V0IGU4M2M1MTYzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoZSBpbml0aWFsIHJldmlzaW9uIGxheXMgdGhlIGZvdW5kYXRpb24gZm9yIGFsbW9zdCBldmVyeXRoaW5nIGdpdCBoYXMKK1RoZSBpbml0aWFsIHJldmlzaW9uIGxheXMgdGhlIGZvdW5kYXRpb24gZm9yIGFsbW9zdCBldmVyeXRoaW5nIEdpdCBoYXMKIHRvZGF5LCBidXQgaXMgc21hbGwgZW5vdWdoIHRvIHJlYWQgaW4gb25lIHNpdHRpbmcuCiAKIE5vdGUgdGhhdCB0ZXJtaW5vbG9neSBoYXMgY2hhbmdlZCBzaW5jZSB0aGF0IHJldmlzaW9uLiAgRm9yIGV4YW1wbGUsIHRoZQpAQCAtNDI1NCwxNSArNDI1NiwxNiBAQAogTm93YWRheXMsIGBnaXQgbG9nYCBpcyBhIGJ1aWx0aW4sIHdoaWNoIG1lYW5zIHRoYXQgaXQgaXMgX2NvbnRhaW5lZF8gaW4gdGhlCiBjb21tYW5kIGBnaXRgLiAgVGhlIHNvdXJjZSBzaWRlIG9mIGEgYnVpbHRpbiBpcwogCi0tIGEgZnVuY3Rpb24gY2FsbGVkIGBjbWRfPGJsYT5gLCB0eXBpY2FsbHkgZGVmaW5lZCBpbiBgYnVpbHRpbi08YmxhPi5jYCwKLSAgYW5kIGRlY2xhcmVkIGluIGBidWlsdGluLmhgLAorLSBhIGZ1bmN0aW9uIGNhbGxlZCBgY21kXzxibGE+YCwgdHlwaWNhbGx5IGRlZmluZWQgaW4gYGJ1aWx0aW4vPGJsYS5jPmAKKyAgKG5vdGUgdGhhdCBvbGRlciB2ZXJzaW9ucyBvZiBHaXQgdXNlZCB0byBoYXZlIGl0IGluIGBidWlsdGluLTxibGE+LmNgCisgIGluc3RlYWQpLCBhbmQgZGVjbGFyZWQgaW4gYGJ1aWx0aW4uaGAuCiAKIC0gYW4gZW50cnkgaW4gdGhlIGBjb21tYW5kc1tdYCBhcnJheSBpbiBgZ2l0LmNgLCBhbmQKIAogLSBhbiBlbnRyeSBpbiBgQlVJTFRJTl9PQkpFQ1RTYCBpbiB0aGUgYE1ha2VmaWxlYC4KIAogU29tZXRpbWVzLCBtb3JlIHRoYW4gb25lIGJ1aWx0aW4gaXMgY29udGFpbmVkIGluIG9uZSBzb3VyY2UgZmlsZS4gIEZvcgotZXhhbXBsZSwgYGNtZF93aGF0Y2hhbmdlZCgpYCBhbmQgYGNtZF9sb2coKWAgYm90aCByZXNpZGUgaW4gYGJ1aWx0aW4tbG9nLmNgLAorZXhhbXBsZSwgYGNtZF93aGF0Y2hhbmdlZCgpYCBhbmQgYGNtZF9sb2coKWAgYm90aCByZXNpZGUgaW4gYGJ1aWx0aW4vbG9nLmNgLAogc2luY2UgdGhleSBzaGFyZSBxdWl0ZSBhIGJpdCBvZiBjb2RlLiAgSW4gdGhhdCBjYXNlLCB0aGUgY29tbWFuZHMgd2hpY2ggYXJlCiBfbm90XyBuYW1lZCBsaWtlIHRoZSBgLmNgIGZpbGUgaW4gd2hpY2ggdGhleSBsaXZlIGhhdmUgdG8gYmUgbGlzdGVkIGluCiBgQlVJTFRfSU5TYCBpbiB0aGUgYE1ha2VmaWxlYC4KQEAgLTQyODUsMTAgKzQyODgsMTAgQEAKIC0gaXMgcGx1bWJpbmcsIGFuZAogCiAtIHdhcyBhcm91bmQgZXZlbiBpbiB0aGUgaW5pdGlhbCBjb21taXQgKGl0IGxpdGVyYWxseSB3ZW50IG9ubHkgdGhyb3VnaAotICBzb21lIDIwIHJldmlzaW9ucyBhcyBgY2F0LWZpbGUuY2AsIHdhcyByZW5hbWVkIHRvIGBidWlsdGluLWNhdC1maWxlLmNgCisgIHNvbWUgMjAgcmV2aXNpb25zIGFzIGBjYXQtZmlsZS5jYCwgd2FzIHJlbmFtZWQgdG8gYGJ1aWx0aW4vY2F0LWZpbGUuY2AKICAgd2hlbiBtYWRlIGEgYnVpbHRpbiwgYW5kIHRoZW4gc2F3IGxlc3MgdGhhbiAxMCB2ZXJzaW9ucykuCiAKLVNvLCBsb29rIGludG8gYGJ1aWx0aW4tY2F0LWZpbGUuY2AsIHNlYXJjaCBmb3IgYGNtZF9jYXRfZmlsZSgpYCBhbmQgbG9vayB3aGF0CitTbywgbG9vayBpbnRvIGBidWlsdGluL2NhdC1maWxlLmNgLCBzZWFyY2ggZm9yIGBjbWRfY2F0X2ZpbGUoKWAgYW5kIGxvb2sgd2hhdAogaXQgZG9lcy4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00MzI5LDcgKzQzMzIsNyBAQAogVGhpcyBpcyBob3cgeW91IHJlYWQgYSBibG9iIChhY3R1YWxseSwgbm90IG9ubHkgYSBibG9iLCBidXQgYW55IHR5cGUgb2YKIG9iamVjdCkuICBUbyBrbm93IGhvdyB0aGUgZnVuY3Rpb24gYHJlYWRfb2JqZWN0X3dpdGhfcmVmZXJlbmNlKClgIGFjdHVhbGx5CiB3b3JrcywgZmluZCB0aGUgc291cmNlIGNvZGUgZm9yIGl0IChzb21ldGhpbmcgbGlrZSBgZ2l0IGdyZXAKLXJlYWRfb2JqZWN0X3dpdGggfCBncmVwICI6W2Etel0iYCBpbiB0aGUgZ2l0IHJlcG9zaXRvcnkpLCBhbmQgcmVhZAorcmVhZF9vYmplY3Rfd2l0aCB8IGdyZXAgIjpbYS16XSJgIGluIHRoZSBHaXQgcmVwb3NpdG9yeSksIGFuZCByZWFkCiB0aGUgc291cmNlLgogCiBUbyBmaW5kIG91dCBob3cgdGhlIHJlc3VsdCBjYW4gYmUgdXNlZCwganVzdCByZWFkIG9uIGluIGBjbWRfY2F0X2ZpbGUoKWA6CkBAIC00MzY0LDcgKzQzNjcsNyBAQAogYnVpbHRpbjoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotJCBnaXQgbG9nIC0tbm8tbWVyZ2VzIC0tZGlmZi1maWx0ZXI9QSBidWlsdGluLSouYworJCBnaXQgbG9nIC0tbm8tbWVyZ2VzIC0tZGlmZi1maWx0ZXI9QSBidWlsdGluLyouYwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZb3Ugc2VlLCBHaXQgaXMgYWN0dWFsbHkgdGhlIGJlc3QgdG9vbCB0byBmaW5kIG91dCBhYm91dCB0aGUgc291cmNlIG9mIEdpdApAQCAtNDUxMCw3ICs0NTEzLDcgQEAKIE1ha2luZyBjaGFuZ2VzCiAtLS0tLS0tLS0tLS0tLQogCi1NYWtlIHN1cmUgZ2l0IGtub3dzIHdobyB0byBibGFtZToKK01ha2Ugc3VyZSBHaXQga25vd3Mgd2hvIHRvIGJsYW1lOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICQgY2F0ID4+fi8uZ2l0Y29uZmlnIDw8XEVPRgpAQCAtNDU2MCw3ICs0NTYzLDcgQEAKICQgZ2l0IGFtIG1ib3ggIyBpbXBvcnQgcGF0Y2hlcyBmcm9tIHRoZSBtYWlsYm94ICJtYm94IgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotRmV0Y2ggYSBicmFuY2ggaW4gYSBkaWZmZXJlbnQgZ2l0IHJlcG9zaXRvcnksIHRoZW4gbWVyZ2UgaW50byB0aGUKK0ZldGNoIGEgYnJhbmNoIGluIGEgZGlmZmVyZW50IEdpdCByZXBvc2l0b3J5LCB0aGVuIG1lcmdlIGludG8gdGhlCiBjdXJyZW50IGJyYW5jaDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2MjEsNyArNDYyNCw3IEBACiAKIC0gSXQgbXVzdCBiZSByZWFkYWJsZSBpbiBvcmRlciwgZnJvbSBiZWdpbm5pbmcgdG8gZW5kLCBieSBzb21lb25lCiAgIGludGVsbGlnZW50IHdpdGggYSBiYXNpYyBncmFzcCBvZiB0aGUgVU5JWCBjb21tYW5kIGxpbmUsIGJ1dCB3aXRob3V0Ci0gIGFueSBzcGVjaWFsIGtub3dsZWRnZSBvZiBnaXQuICBJZiBuZWNlc3NhcnksIGFueSBvdGhlciBwcmVyZXF1aXNpdGVzCisgIGFueSBzcGVjaWFsIGtub3dsZWRnZSBvZiBHaXQuICBJZiBuZWNlc3NhcnksIGFueSBvdGhlciBwcmVyZXF1aXNpdGVzCiAgIHNob3VsZCBiZSBzcGVjaWZpY2FsbHkgbWVudGlvbmVkIGFzIHRoZXkgYXJpc2UuCiAtIFdoZW5ldmVyIHBvc3NpYmxlLCBzZWN0aW9uIGhlYWRpbmdzIHNob3VsZCBjbGVhcmx5IGRlc2NyaWJlIHRoZSB0YXNrCiAgIHRoZXkgZXhwbGFpbiBob3cgdG8gZG8sIGluIGxhbmd1YWdlIHRoYXQgcmVxdWlyZXMgbm8gbW9yZSBrbm93bGVkZ2UKQEAgLTQ2MzIsMTAgKzQ2MzUsMTAgQEAKIGFsbG93IHBlb3BsZSB0byBnZXQgdG8gaW1wb3J0YW50IHRvcGljcyB3aXRob3V0IG5lY2Vzc2FyaWx5IHJlYWRpbmcKIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbi4KIAotU2NhbiBEb2N1bWVudGF0aW9uLyBmb3Igb3RoZXIgc3R1ZmYgbGVmdCBvdXQ7IGluIHBhcnRpY3VsYXI6CitTY2FuIGBEb2N1bWVudGF0aW9uL2AgZm9yIG90aGVyIHN0dWZmIGxlZnQgb3V0OyBpbiBwYXJ0aWN1bGFyOgogCiAtIGhvd3RvJ3MKLS0gc29tZSBvZiB0ZWNobmljYWwvPworLSBzb21lIG9mIGB0ZWNobmljYWwvYD8KIC0gaG9va3MKIC0gbGlzdCBvZiBjb21tYW5kcyBpbiBsaW5rZ2l0OmdpdFsxXQogCmRpZmYgLS1naXQgYS9HSVQtVkVSU0lPTi1HRU4gYi9HSVQtVkVSU0lPTi1HRU4KaW5kZXggMjkwODIwNC4uYjRkNGU1MCAxMDA3NTUKLS0tIGEvR0lULVZFUlNJT04tR0VOCisrKyBiL0dJVC1WRVJTSU9OLUdFTgpAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBHVkY9R0lULVZFUlNJT04tRklMRQotREVGX1ZFUj12MS44LjEuNgorREVGX1ZFUj12MS44LjMuR0lUCiAKIExGPScKICcKQEAgLTExLDcgKzExLDcgQEAKIGlmIHRlc3QgLWYgdmVyc2lvbgogdGhlbgogCVZOPSQoY2F0IHZlcnNpb24pIHx8IFZOPSIkREVGX1ZFUiIKLWVsaWYgdGVzdCAtZCAuZ2l0IC1vIC1mIC5naXQgJiYKK2VsaWYgdGVzdCAtZCAke0dJVF9ESVI6LS5naXR9IC1vIC1mIC5naXQgJiYKIAlWTj0kKGdpdCBkZXNjcmliZSAtLW1hdGNoICJ2WzAtOV0qIiAtLWFiYnJldj03IEhFQUQgMj4vZGV2L251bGwpICYmCiAJY2FzZSAiJFZOIiBpbgogCSokTEYqKSAoZXhpdCAxKSA7OwpkaWZmIC0tZ2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKaW5kZXggMmRjM2I2MS4uYmEwMWU3NCAxMDA2NDQKLS0tIGEvSU5TVEFMTAorKysgYi9JTlNUQUxMCkBAIC0xMDEsNyArMTAxLDcgQEAKIAktICJvcGVuc3NsIiBsaWJyYXJ5IGlzIHVzZWQgYnkgZ2l0LWltYXAtc2VuZCB0byB1c2UgSU1BUCBvdmVyIFNTTC4KIAkgIElmIHlvdSBkb24ndCBuZWVkIGl0LCB1c2UgTk9fT1BFTlNTTC4KIAotCSAgQnkgZGVmYXVsdCwgZ2l0IHVzZXMgT3BlblNTTCBmb3IgU0hBMSBidXQgaXQgd2lsbCB1c2UgaXQncyBvd24KKwkgIEJ5IGRlZmF1bHQsIGdpdCB1c2VzIE9wZW5TU0wgZm9yIFNIQTEgYnV0IGl0IHdpbGwgdXNlIGl0cyBvd24KIAkgIGxpYnJhcnkgKGluc3BpcmVkIGJ5IE1vemlsbGEncykgd2l0aCBlaXRoZXIgTk9fT1BFTlNTTCBvcgogCSAgQkxLX1NIQTEuICBBbHNvIGluY2x1ZGVkIGlzIGEgdmVyc2lvbiBvcHRpbWl6ZWQgZm9yIFBvd2VyUEMKIAkgIChQUENfU0hBMSkuCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDViZTU0NTguLmUxNTgzNzYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC00Myw2ICs0Myw5IEBACiAjIERlZmluZSBFWFBBVERJUj0vZm9vL2JhciBpZiB5b3VyIGV4cGF0IGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyBhcmUgaW4KICMgL2Zvby9iYXIvaW5jbHVkZSBhbmQgL2Zvby9iYXIvbGliIGRpcmVjdG9yaWVzLgogIworIyBEZWZpbmUgRVhQQVRfTkVFRFNfWE1MUEFSU0VfSCBpZiB5b3UgaGF2ZSBhbiBvbGQgdmVyc2lvbiBvZiBleHBhdCAoZS5nLiwKKyMgMS4xIG9yIDEuMikgdGhhdCBwcm92aWRlcyB4bWxwYXJzZS5oIGluc3RlYWQgb2YgZXhwYXQuaC4KKyMKICMgRGVmaW5lIE5PX0dFVFRFWFQgaWYgeW91IGRvbid0IHdhbnQgR2l0IG91dHB1dCB0byBiZSB0cmFuc2xhdGVkLgogIyBBIHRyYW5zbGF0ZWQgR2l0IHJlcXVpcmVzIEdOVSBsaWJpbnRsIG9yIGFub3RoZXIgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbiwKICMgcGx1cyBsaWJpbnRsLXBlcmwgYXQgcnVudGltZS4KQEAgLTY2LDYgKzY5LDkgQEAKICMgRGVmaW5lIE5PX01TR0ZNVF9FWFRFTkRFRF9PUFRJT05TIGlmIHlvdXIgaW1wbGVtZW50YXRpb24gb2YgbXNnZm10CiAjIGRvZXNuJ3Qgc3VwcG9ydCBHTlUgZXh0ZW5zaW9ucyBsaWtlIC0tY2hlY2sgYW5kIC0tc3RhdGlzdGljcwogIworIyBEZWZpbmUgTkVFRFNfQ0xJUFBFRF9XUklURSBpZiB5b3VyIHdyaXRlKDIpIGNhbm5vdCB3cml0ZSBtb3JlIHRoYW4KKyMgSU5UX01BWCBieXRlcyBhdCBvbmNlIChlLmcuIE1hY09TIFgpLgorIwogIyBEZWZpbmUgSEFWRV9QQVRIU19IIGlmIHlvdSBoYXZlIHBhdGhzLmggYW5kIHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IFBBVEgKICMgaXQgc3BlY2lmaWVzLgogIwpAQCAtNzQsMTAgKzgwLDE0IEBACiAjIERlZmluZSBOT19EX1RZUEVfSU5fRElSRU5UIGlmIHlvdXIgcGxhdGZvcm0gZGVmaW5lcyBEVF9VTktOT1dOIGJ1dCBsYWNrcwogIyBkX3R5cGUgaW4gc3RydWN0IGRpcmVudCAoQ3lnd2luIDEuNSwgZml4ZWQgaW4gQ3lnd2luIDEuNykuCiAjCisjIERlZmluZSBIQVZFX1NUUklOR1NfSCBpZiB5b3UgaGF2ZSBzdHJpbmdzLmggYW5kIG5lZWQgaXQgZm9yIHN0cmNhc2VjbXAuCisjCiAjIERlZmluZSBOT19TVFJDQVNFU1RSIGlmIHlvdSBkb24ndCBoYXZlIHN0cmNhc2VzdHIuCiAjCiAjIERlZmluZSBOT19NRU1NRU0gaWYgeW91IGRvbid0IGhhdmUgbWVtbWVtLgogIworIyBEZWZpbmUgTk9fR0VUUEFHRVNJWkUgaWYgeW91IGRvbid0IGhhdmUgZ2V0cGFnZXNpemUuCisjCiAjIERlZmluZSBOT19TVFJMQ1BZIGlmIHlvdSBkb24ndCBoYXZlIHN0cmxjcHkuCiAjCiAjIERlZmluZSBOT19TVFJUT1VNQVggaWYgeW91IGRvbid0IGhhdmUgYm90aCBzdHJ0b2ltYXggYW5kIHN0cnRvdW1heCBpbiB0aGUKQEAgLTk0LDEzICsxMDQsMTQgQEAKICMKICMgRGVmaW5lIE5PX01LU1RFTVBTIGlmIHlvdSBkb24ndCBoYXZlIG1rc3RlbXBzIGluIHRoZSBDIGxpYnJhcnkuCiAjCi0jIERlZmluZSBOT19TVFJUT0tfUiBpZiB5b3UgZG9uJ3QgaGF2ZSBzdHJ0b2tfciBpbiB0aGUgQyBsaWJyYXJ5LgotIwogIyBEZWZpbmUgTk9fRk5NQVRDSCBpZiB5b3UgZG9uJ3QgaGF2ZSBmbm1hdGNoIGluIHRoZSBDIGxpYnJhcnkuCiAjCiAjIERlZmluZSBOT19GTk1BVENIX0NBU0VGT0xEIGlmIHlvdXIgZm5tYXRjaCBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdGhlCiAjIEZOTV9DQVNFRk9MRCBHTlUgZXh0ZW5zaW9uLgogIworIyBEZWZpbmUgTk9fV0lMRE1BVENIIGlmIHlvdSBkbyBub3Qgd2FudCB0byB1c2UgR2l0J3Mgd2lsZG1hdGNoCisjIGltcGxlbWVudGF0aW9uIGFzIGZubWF0Y2gKKyMKICMgRGVmaW5lIE5PX0dFQ09TX0lOX1BXRU5UIGlmIHlvdSBkb24ndCBoYXZlIHB3X2dlY29zIGluIHN0cnVjdCBwYXNzd2QKICMgaW4gdGhlIEMgbGlicmFyeS4KICMKQEAgLTEyOSw2ICsxNDAsMTAgQEAKICMgc3BlY2lmeSB5b3VyIG93biAob3IgRGFyd2luUG9ydCdzKSBpbmNsdWRlIGRpcmVjdG9yaWVzIGFuZAogIyBsaWJyYXJ5IGRpcmVjdG9yaWVzIGJ5IGRlZmluaW5nIENGTEFHUyBhbmQgTERGTEFHUyBhcHByb3ByaWF0ZWx5LgogIworIyBEZWZpbmUgTk9fQVBQTEVfQ09NTU9OX0NSWVBUTyBpZiB5b3UgYXJlIGJ1aWxkaW5nIG9uIERhcndpbi9NYWMgT1MgWAorIyBhbmQgZG8gbm90IHdhbnQgdG8gdXNlIEFwcGxlJ3MgQ29tbW9uQ3J5cHRvIGxpYnJhcnkuICBUaGlzIGFsbG93cyB5b3UKKyMgdG8gcHJvdmlkZSB5b3VyIG93biBPcGVuU1NMIGxpYnJhcnksIGZvciBleGFtcGxlIGZyb20gTWFjUG9ydHMuCisjCiAjIERlZmluZSBCTEtfU0hBMSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBtYWtlIHVzZSBvZiB0aGUgYnVuZGxlZAogIyBvcHRpbWl6ZWQgQyBTSEExIHJvdXRpbmUuCiAjCkBAIC0xNjUsNiArMTgwLDEwIEBACiAjIERlZmluZSBOT19QT0xMIGlmIHlvdSBkbyBub3QgaGF2ZSBvciBkb24ndCB3YW50IHRvIHVzZSBwb2xsKCkuCiAjIFRoaXMgYWxzbyBpbXBsaWVzIE5PX1NZU19QT0xMX0guCiAjCisjIERlZmluZSBORUVEU19TWVNfUEFSQU1fSCBpZiB5b3UgbmVlZCB0byBpbmNsdWRlIHN5cy9wYXJhbS5oIHRvIGNvbXBpbGUsCisjICpQTEVBU0UqIFJFUE9SVCB0byBnaXRAdmdlci5rZXJuZWwub3JnIGlmIHlvdXIgcGxhdGZvcm0gbmVlZHMgdGhpczsKKyMgd2Ugd2FudCB0byBrbm93IG1vcmUgYWJvdXQgdGhlIGlzc3VlLgorIwogIyBEZWZpbmUgTk9fUFRIUkVBRFMgaWYgeW91IGRvIG5vdCBoYXZlIG9yIGRvIG5vdCB3YW50IHRvIHVzZSBQdGhyZWFkcy4KICMKICMgRGVmaW5lIE5PX1BSRUFEIGlmIHlvdSBoYXZlIGEgcHJvYmxlbSB3aXRoIHByZWFkKCkgc3lzdGVtIGNhbGwgKGUuZy4KQEAgLTIzMywxMSArMjUyLDE2IEBACiAjIGFwb3N0cm9waGVzIHRvIGJlIEFTQ0lJIHNvIHRoYXQgY3V0JnBhc3RpbmcgZXhhbXBsZXMgdG8gdGhlIHNoZWxsCiAjIHdpbGwgd29yay4KICMKKyMgRGVmaW5lIFBFUkxfUEFUSCB0byB0aGUgcGF0aCBvZiB5b3VyIFBlcmwgYmluYXJ5ICh1c3VhbGx5IC91c3IvYmluL3BlcmwpLgorIwogIyBEZWZpbmUgTk9fUEVSTF9NQUtFTUFLRVIgaWYgeW91IGNhbm5vdCB1c2UgTWFrZWZpbGVzIGdlbmVyYXRlZCBieSBwZXJsJ3MKICMgTWFrZU1ha2VyIChlLmcuIHVzaW5nIEFjdGl2ZVN0YXRlIHVuZGVyIEN5Z3dpbikuCiAjCiAjIERlZmluZSBOT19QRVJMIGlmIHlvdSBkbyBub3Qgd2FudCBQZXJsIHNjcmlwdHMgb3IgbGlicmFyaWVzIGF0IGFsbC4KICMKKyMgRGVmaW5lIFBZVEhPTl9QQVRIIHRvIHRoZSBwYXRoIG9mIHlvdXIgUHl0aG9uIGJpbmFyeSAob2Z0ZW4gL3Vzci9iaW4vcHl0aG9uCisjIGJ1dCAvdXNyL2Jpbi9weXRob24yLjcgb24gc29tZSBwbGF0Zm9ybXMpLgorIwogIyBEZWZpbmUgTk9fUFlUSE9OIGlmIHlvdSBkbyBub3Qgd2FudCBQeXRob24gc2NyaXB0cyBvciBsaWJyYXJpZXMgYXQgYWxsLgogIwogIyBEZWZpbmUgTk9fVENMVEsgaWYgeW91IGRvIG5vdCB3YW50IFRjbC9UayBHVUkuCkBAIC0yNzMsMTAgKzI5Nyw2IEBACiAjCiAjIERlZmluZSBOT19SRUdFWCBpZiB5b3UgaGF2ZSBubyBvciBpbmZlcmlvciByZWdleCBzdXBwb3J0IGluIHlvdXIgQyBsaWJyYXJ5LgogIwotIyBEZWZpbmUgQ1lHV0lOX1YxNV9XSU4zMkFQSSBpZiB5b3UgYXJlIHVzaW5nIEN5Z3dpbiB2MS43LnggYnV0IGFyZSBub3QKLSMgdXNpbmcgdGhlIGN1cnJlbnQgdzMyYXBpIHBhY2thZ2VzLiBUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2gsIGhvd2V2ZXIsCi0jIGlzIHRvIHVwZGF0ZSB5b3VyIGluc3RhbGxhdGlvbiBpZiBjb21waWxhdGlvbiBlcnJvcnMgb2NjdXIuCi0jCiAjIERlZmluZSBIQVZFX0RFVl9UVFkgaWYgeW91ciBzeXN0ZW0gY2FuIG9wZW4gL2Rldi90dHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUKICMgdXNlci4KICMKQEAgLTMzMCwxOSArMzUwLDYgQEAKIAlAJChTSEVMTF9QQVRIKSAuL0dJVC1WRVJTSU9OLUdFTgogLWluY2x1ZGUgR0lULVZFUlNJT04tRklMRQogCi11bmFtZV9TIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1zIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKLXVuYW1lX00gOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLW0gMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQotdW5hbWVfTyA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbyAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCi11bmFtZV9SIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1yIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKLXVuYW1lX1AgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXAgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQotdW5hbWVfViA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtdiAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCi0KLWlmZGVmIE1TVkMKLQkjIGF2b2lkIHRoZSBNaW5nVyBhbmQgQ3lnd2luIGNvbmZpZ3VyYXRpb24gc2VjdGlvbnMKLQl1bmFtZV9TIDo9IFdpbmRvd3MKLQl1bmFtZV9PIDo9IFdpbmRvd3MKLWVuZGlmCi0KICMgQ0ZMQUdTIGFuZCBMREZMQUdTIGFyZSBmb3IgdGhlIHVzZXJzIHRvIG92ZXJyaWRlIGZyb20gdGhlIGNvbW1hbmQgbGluZS4KIAogQ0ZMQUdTID0gLWcgLU8yIC1XYWxsCkBAIC0zNTQsMzMgKzM2MSwzOSBAQAogIyBBbW9uZyB0aGUgdmFyaWFibGVzIGJlbG93LCB0aGVzZToKICMgICBnaXRleGVjZGlyCiAjICAgdGVtcGxhdGVfZGlyCi0jICAgbWFuZGlyCi0jICAgaW5mb2RpcgotIyAgIGh0bWxkaXIKICMgICBzeXNjb25mZGlyCiAjIGNhbiBiZSBzcGVjaWZpZWQgYXMgYSByZWxhdGl2ZSBwYXRoIHNvbWUvd2hlcmUvZWxzZTsKICMgdGhpcyBpcyBpbnRlcnByZXRlZCBhcyByZWxhdGl2ZSB0byAkKHByZWZpeCkgYW5kICJnaXQiIGF0CiAjIHJ1bnRpbWUgZmlndXJlcyBvdXQgd2hlcmUgdGhleSBhcmUgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIGV4ZWN1dGFibGUuCisjIEFkZGl0aW9uYWxseSwgdGhlIGZvbGxvd2luZyB3aWxsIGJlIHRyZWF0ZWQgYXMgcmVsYXRpdmUgYnkgImdpdCIgaWYgdGhleQorIyBiZWdpbiB3aXRoICIkKHByZWZpeCkvIjoKKyMgICBtYW5kaXIKKyMgICBpbmZvZGlyCisjICAgaHRtbGRpcgogIyBUaGlzIGNhbiBoZWxwIGluc3RhbGxpbmcgdGhlIHN1aXRlIGluIGEgcmVsb2NhdGFibGUgd2F5LgogCiBwcmVmaXggPSAkKEhPTUUpCiBiaW5kaXJfcmVsYXRpdmUgPSBiaW4KIGJpbmRpciA9ICQocHJlZml4KS8kKGJpbmRpcl9yZWxhdGl2ZSkKLW1hbmRpciA9IHNoYXJlL21hbgotaW5mb2RpciA9IHNoYXJlL2luZm8KK21hbmRpciA9ICQocHJlZml4KS9zaGFyZS9tYW4KK2luZm9kaXIgPSAkKHByZWZpeCkvc2hhcmUvaW5mbwogZ2l0ZXhlY2RpciA9IGxpYmV4ZWMvZ2l0LWNvcmUKIG1lcmdldG9vbHNkaXIgPSAkKGdpdGV4ZWNkaXIpL21lcmdldG9vbHMKIHNoYXJlZGlyID0gJChwcmVmaXgpL3NoYXJlCiBnaXR3ZWJkaXIgPSAkKHNoYXJlZGlyKS9naXR3ZWIKIGxvY2FsZWRpciA9ICQoc2hhcmVkaXIpL2xvY2FsZQogdGVtcGxhdGVfZGlyID0gc2hhcmUvZ2l0LWNvcmUvdGVtcGxhdGVzCi1odG1sZGlyID0gc2hhcmUvZG9jL2dpdC1kb2MKK2h0bWxkaXIgPSAkKHByZWZpeCkvc2hhcmUvZG9jL2dpdC1kb2MKIEVUQ19HSVRDT05GSUcgPSAkKHN5c2NvbmZkaXIpL2dpdGNvbmZpZwogRVRDX0dJVEFUVFJJQlVURVMgPSAkKHN5c2NvbmZkaXIpL2dpdGF0dHJpYnV0ZXMKIGxpYiA9IGxpYgogIyBERVNURElSID0KIHBhdGhzZXAgPSA6CiAKK21hbmRpcl9yZWxhdGl2ZSA9ICQocGF0c3Vic3QgJChwcmVmaXgpLyUsJSwkKG1hbmRpcikpCitpbmZvZGlyX3JlbGF0aXZlID0gJChwYXRzdWJzdCAkKHByZWZpeCkvJSwlLCQoaW5mb2RpcikpCitodG1sZGlyX3JlbGF0aXZlID0gJChwYXRzdWJzdCAkKHByZWZpeCkvJSwlLCQoaHRtbGRpcikpCisKIGV4cG9ydCBwcmVmaXggYmluZGlyIHNoYXJlZGlyIHN5c2NvbmZkaXIgZ2l0d2ViZGlyIGxvY2FsZWRpcgogCiBDQyA9IGNjCkBAIC00NTAsNiArNDYzLDcgQEAKIFNDUklQVF9TSCArPSBnaXQtcHVsbC5zaAogU0NSSVBUX1NIICs9IGdpdC1xdWlsdGltcG9ydC5zaAogU0NSSVBUX1NIICs9IGdpdC1yZWJhc2Uuc2gKK1NDUklQVF9TSCArPSBnaXQtcmVtb3RlLXRlc3RnaXQuc2gKIFNDUklQVF9TSCArPSBnaXQtcmVwYWNrLnNoCiBTQ1JJUFRfU0ggKz0gZ2l0LXJlcXVlc3QtcHVsbC5zaAogU0NSSVBUX1NIICs9IGdpdC1zdGFzaC5zaApAQCAtNDc0LDEyICs0ODgsNDggQEAKIFNDUklQVF9QRVJMICs9IGdpdC1zZW5kLWVtYWlsLnBlcmwKIFNDUklQVF9QRVJMICs9IGdpdC1zdm4ucGVybAogCi1TQ1JJUFRfUFlUSE9OICs9IGdpdC1yZW1vdGUtdGVzdGdpdC5weQorU0NSSVBUX1BZVEhPTiArPSBnaXQtcmVtb3RlLXRlc3RweS5weQogU0NSSVBUX1BZVEhPTiArPSBnaXQtcDQucHkKIAotU0NSSVBUUyA9ICQocGF0c3Vic3QgJS5zaCwlLCQoU0NSSVBUX1NIKSkgXAotCSAgJChwYXRzdWJzdCAlLnBlcmwsJSwkKFNDUklQVF9QRVJMKSkgXAotCSAgJChwYXRzdWJzdCAlLnB5LCUsJChTQ1JJUFRfUFlUSE9OKSkgXAorTk9fSU5TVEFMTCArPSBnaXQtcmVtb3RlLXRlc3RnaXQKK05PX0lOU1RBTEwgKz0gZ2l0LXJlbW90ZS10ZXN0cHkKKworIyBHZW5lcmF0ZWQgZmlsZXMgZm9yIHNjcmlwdHMKK1NDUklQVF9TSF9HRU4gPSAkKHBhdHN1YnN0ICUuc2gsJSwkKFNDUklQVF9TSCkpCitTQ1JJUFRfUEVSTF9HRU4gPSAkKHBhdHN1YnN0ICUucGVybCwlLCQoU0NSSVBUX1BFUkwpKQorU0NSSVBUX1BZVEhPTl9HRU4gPSAkKHBhdHN1YnN0ICUucHksJSwkKFNDUklQVF9QWVRIT04pKQorCitTQ1JJUFRfU0hfSU5TID0gJChmaWx0ZXItb3V0ICQoTk9fSU5TVEFMTCksJChTQ1JJUFRfU0hfR0VOKSkKK1NDUklQVF9QRVJMX0lOUyA9ICQoZmlsdGVyLW91dCAkKE5PX0lOU1RBTEwpLCQoU0NSSVBUX1BFUkxfR0VOKSkKK1NDUklQVF9QWVRIT05fSU5TID0gJChmaWx0ZXItb3V0ICQoTk9fSU5TVEFMTCksJChTQ1JJUFRfUFlUSE9OX0dFTikpCisKKyMgSW5kaXZpZHVhbCBydWxlcyB0byBhbGxvdyBlLmcuCisjICJtYWtlIC1DIC4uLy4uIFNDUklQVF9QRVJMPWNvbnRyaWIvZm9vL2Jhci5wZXJsIGJ1aWxkLXBlcmwtc2NyaXB0IgorIyBmcm9tIHN1YmRpcmVjdG9yaWVzIGxpa2UgY29udHJpYi8qLworLlBIT05ZOiBidWlsZC1wZXJsLXNjcmlwdCBidWlsZC1zaC1zY3JpcHQgYnVpbGQtcHl0aG9uLXNjcmlwdAorYnVpbGQtcGVybC1zY3JpcHQ6ICQoU0NSSVBUX1BFUkxfR0VOKQorYnVpbGQtc2gtc2NyaXB0OiAkKFNDUklQVF9TSF9HRU4pCitidWlsZC1weXRob24tc2NyaXB0OiAkKFNDUklQVF9QWVRIT05fR0VOKQorCisuUEhPTlk6IGluc3RhbGwtcGVybC1zY3JpcHQgaW5zdGFsbC1zaC1zY3JpcHQgaW5zdGFsbC1weXRob24tc2NyaXB0CitpbnN0YWxsLXNoLXNjcmlwdDogJChTQ1JJUFRfU0hfSU5TKQorCSQoSU5TVEFMTCkgJF4gJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNfaW5zdGRpcl9TUSknCitpbnN0YWxsLXBlcmwtc2NyaXB0OiAkKFNDUklQVF9QRVJMX0lOUykKKwkkKElOU1RBTEwpICReICckKERFU1RESVJfU1EpJChnaXRleGVjX2luc3RkaXJfU1EpJworaW5zdGFsbC1weXRob24tc2NyaXB0OiAkKFNDUklQVF9QWVRIT05fSU5TKQorCSQoSU5TVEFMTCkgJF4gJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNfaW5zdGRpcl9TUSknCisKKy5QSE9OWTogY2xlYW4tcGVybC1zY3JpcHQgY2xlYW4tc2gtc2NyaXB0IGNsZWFuLXB5dGhvbi1zY3JpcHQKK2NsZWFuLXNoLXNjcmlwdDoKKwkkKFJNKSAkKFNDUklQVF9TSF9HRU4pCitjbGVhbi1wZXJsLXNjcmlwdDoKKwkkKFJNKSAkKFNDUklQVF9QRVJMX0dFTikKK2NsZWFuLXB5dGhvbi1zY3JpcHQ6CisJJChSTSkgJChTQ1JJUFRfUFlUSE9OX0dFTikKKworU0NSSVBUUyA9ICQoU0NSSVBUX1NIX0lOUykgXAorCSAgJChTQ1JJUFRfUEVSTF9JTlMpIFwKKwkgICQoU0NSSVBUX1BZVEhPTl9JTlMpIFwKIAkgIGdpdC1pbnN0YXdlYgogCiBFVEFHU19UQVJHRVQgPSBUQUdTCkBAIC01MTksNiArNTY5LDcgQEAKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtbWt0ZW1wCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXBhcnNlLW9wdGlvbnMKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcGF0aC11dGlscworVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1yZWFkLWNhY2hlCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXJlZ2V4CiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXJldmlzaW9uLXdhbGtpbmcKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcnVuLWNvbW1hbmQKQEAgLTUyOCw2ICs1NzksNyBAQAogVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1zdHJpbmctbGlzdAogVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1zdWJwcm9jZXNzCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXN2bi1mZQorVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC13aWxkbWF0Y2gKIAogVEVTVF9QUk9HUkFNUyA9ICQocGF0c3Vic3QgJSwlJFgsJChURVNUX1BST0dSQU1TX05FRURfWCkpCiAKQEAgLTYzMyw2ICs2ODUsOCBAQAogTElCX0ggKz0gaHR0cC5oCiBMSUJfSCArPSBrd3NldC5oCiBMSUJfSCArPSBsZXZlbnNodGVpbi5oCitMSUJfSCArPSBsaW5lLWxvZy5oCitMSUJfSCArPSBsaW5lLXJhbmdlLmgKIExJQl9IICs9IGxpc3Qtb2JqZWN0cy5oCiBMSUJfSCArPSBsbC1tZXJnZS5oCiBMSUJfSCArPSBsb2ctdHJlZS5oCkBAIC02NDIsMTMgKzY5NiwxNCBAQAogTElCX0ggKz0gbWVyZ2Vzb3J0LmgKIExJQl9IICs9IG5vdGVzLWNhY2hlLmgKIExJQl9IICs9IG5vdGVzLW1lcmdlLmgKK0xJQl9IICs9IG5vdGVzLXV0aWxzLmgKIExJQl9IICs9IG5vdGVzLmgKIExJQl9IICs9IG9iamVjdC5oCi1MSUJfSCArPSBwYWNrLXJlZnMuaAogTElCX0ggKz0gcGFjay1yZXZpbmRleC5oCiBMSUJfSCArPSBwYWNrLmgKIExJQl9IICs9IHBhcnNlLW9wdGlvbnMuaAogTElCX0ggKz0gcGF0Y2gtaWRzLmgKK0xJQl9IICs9IHBhdGhzcGVjLmgKIExJQl9IICs9IHBrdC1saW5lLmgKIExJQl9IICs9IHByb2dyZXNzLmgKIExJQl9IICs9IHByb21wdC5oCkBAIC02OTAsNiArNzQ1LDcgQEAKIExJQl9IICs9IHZjcy1zdm4vc3ZuZGlmZi5oCiBMSUJfSCArPSB2Y3Mtc3ZuL3N2bmR1bXAuaAogTElCX0ggKz0gd2Fsa2VyLmgKK0xJQl9IICs9IHdpbGRtYXRjaC5oCiBMSUJfSCArPSB3dC1zdGF0dXMuaAogTElCX0ggKz0geGRpZmYtaW50ZXJmYWNlLmgKIExJQl9IICs9IHhkaWZmL3hkaWZmLmgKQEAgLTc1OSw2ICs4MTUsOCBAQAogTElCX09CSlMgKz0gaWRlbnQubwogTElCX09CSlMgKz0ga3dzZXQubwogTElCX09CSlMgKz0gbGV2ZW5zaHRlaW4ubworTElCX09CSlMgKz0gbGluZS1sb2cubworTElCX09CSlMgKz0gbGluZS1yYW5nZS5vCiBMSUJfT0JKUyArPSBsaXN0LW9iamVjdHMubwogTElCX09CSlMgKz0gbGwtbWVyZ2UubwogTElCX09CSlMgKz0gbG9ja2ZpbGUubwpAQCAtNzczLDkgKzgzMSw5IEBACiBMSUJfT0JKUyArPSBub3Rlcy5vCiBMSUJfT0JKUyArPSBub3Rlcy1jYWNoZS5vCiBMSUJfT0JKUyArPSBub3Rlcy1tZXJnZS5vCitMSUJfT0JKUyArPSBub3Rlcy11dGlscy5vCiBMSUJfT0JKUyArPSBvYmplY3QubwogTElCX09CSlMgKz0gcGFjay1jaGVjay5vCi1MSUJfT0JKUyArPSBwYWNrLXJlZnMubwogTElCX09CSlMgKz0gcGFjay1yZXZpbmRleC5vCiBMSUJfT0JKUyArPSBwYWNrLXdyaXRlLm8KIExJQl9PQkpTICs9IHBhZ2VyLm8KQEAgLTc4NCw2ICs4NDIsNyBAQAogTElCX09CSlMgKz0gcGF0Y2gtZGVsdGEubwogTElCX09CSlMgKz0gcGF0Y2gtaWRzLm8KIExJQl9PQkpTICs9IHBhdGgubworTElCX09CSlMgKz0gcGF0aHNwZWMubwogTElCX09CSlMgKz0gcGt0LWxpbmUubwogTElCX09CSlMgKz0gcHJlbG9hZC1pbmRleC5vCiBMSUJfT0JKUyArPSBwcmV0dHkubwpAQCAtODMxLDYgKzg5MCw3IEBACiBMSUJfT0JKUyArPSB2YXJpbnQubwogTElCX09CSlMgKz0gdmVyc2lvbi5vCiBMSUJfT0JKUyArPSB3YWxrZXIubworTElCX09CSlMgKz0gd2lsZG1hdGNoLm8KIExJQl9PQkpTICs9IHdyYXBwZXIubwogTElCX09CSlMgKz0gd3JpdGVfb3JfZGllLm8KIExJQl9PQkpTICs9IHdzLm8KQEAgLTg0OCw2ICs5MDgsNyBAQAogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vYnVuZGxlLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2NhdC1maWxlLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2NoZWNrLWF0dHIubworQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2staWdub3JlLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2NoZWNrLXJlZi1mb3JtYXQubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXgubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2tvdXQubwpAQCAtOTM4LDUxOCArOTk5LDcgQEAKIAogR0lUX1VTRVJfQUdFTlQgPSBnaXQvJChHSVRfVkVSU0lPTikKIAotIwotIyBQbGF0Zm9ybSBzcGVjaWZpYyB0d2Vha3MKLSMKLQotIyBXZSBjaG9vc2UgdG8gYXZvaWQgImlmIC4uIGVsc2UgaWYgLi4gZWxzZSAuLiBlbmRpZiBlbmRpZiIKLSMgYmVjYXVzZSBtYWludGFpbmluZyB0aGUgbmVzdGluZyB0byBtYXRjaCBpcyBhIHBhaW4uICBJZgotIyB3ZSBoYWQgImVsaWYiIHRoaW5ncyB3b3VsZCBoYXZlIGJlZW4gbXVjaCBuaWNlci4uLgotCi1pZmVxICgkKHVuYW1lX00pLHg4Nl82NCkKLQlYRExfRkFTVF9IQVNIID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxPU0YxKQotCSMgTmVlZCB0aGlzIGZvciB1X3Nob3J0IGRlZmluaXRpb25zIGV0IGFsCi0JQkFTSUNfQ0ZMQUdTICs9IC1EX09TRl9TT1VSQ0UKLQlTT0NLTEVOX1QgPSBpbnQKLQlOT19TVFJUT1VMTCA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLExpbnV4KQotCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQotCUxJQkNfQ09OVEFJTlNfTElCSU5UTCA9IFllc1BsZWFzZQotCUhBVkVfREVWX1RUWSA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksR05VL2tGcmVlQlNEKQotCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQotCURJUl9IQVNfQlNEX0dST1VQX1NFTUFOVElDUyA9IFllc1BsZWFzZQotCUxJQkNfQ09OVEFJTlNfTElCSU5UTCA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksVW5peFdhcmUpCi0JQ0MgPSBjYwotCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQotCU5FRURTX05TTCA9IFllc1BsZWFzZQotCU5FRURTX1NTTF9XSVRIX0NSWVBUTyA9IFllc1BsZWFzZQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JU0hFTExfUEFUSCA9IC91c3IvbG9jYWwvYmluL2Jhc2gKLQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlCQVNJQ19DRkxBR1MgKz0gLUt0aHJlYWQKLQlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKLQlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKLQlJTlNUQUxMID0gZ2luc3RhbGwKLQlUQVIgPSBndGFyCi0JTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksU0NPX1NWKQotCWlmZXEgKCQodW5hbWVfUiksMy4yKQotCQlDRkxBR1MgPSAtTzIKLQllbmRpZgotCWlmZXEgKCQodW5hbWVfUiksNSkKLQkJQ0MgPSBjYwotCQlCQVNJQ19DRkxBR1MgKz0gLUt0aHJlYWQKLQllbmRpZgotCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQotCU5FRURTX05TTCA9IFllc1BsZWFzZQotCU5FRURTX1NTTF9XSVRIX0NSWVBUTyA9IFllc1BsZWFzZQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JU0hFTExfUEFUSCA9IC91c3IvYmluL2Jhc2gKLQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKLQlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JSU5TVEFMTCA9IGdpbnN0YWxsCi0JVEFSID0gZ3RhcgotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksRGFyd2luKQotCU5FRURTX0NSWVBUT19XSVRIX1NTTCA9IFllc1BsZWFzZQotCU5FRURTX1NTTF9XSVRIX0NSWVBUTyA9IFllc1BsZWFzZQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICdbMTU2NzhdXC4nKSwyKQotCQlPTERfSUNPTlYgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JZW5kaWYKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJ1sxNV1cLicpLDIpCi0JCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQllbmRpZgotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCVVTRV9TVF9USU1FU1BFQyA9IFllc1BsZWFzZQotCUhBVkVfREVWX1RUWSA9IFllc1BsZWFzZQotCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjgubwotCUJBU0lDX0NGTEFHUyArPSAtRFBSRUNPTVBPU0VfVU5JQ09ERQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksU3VuT1MpCi0JTkVFRFNfU09DS0VUID0gWWVzUGxlYXNlCi0JTkVFRFNfTlNMID0gWWVzUGxlYXNlCi0JU0hFTExfUEFUSCA9IC9iaW4vYmFzaAotCVNBTkVfVE9PTF9QQVRIID0gL3Vzci94cGc2L2JpbjovdXNyL3hwZzQvYmluCi0JTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCU5PX1JFR0VYID0gWWVzUGxlYXNlCi0JTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQotCU5PX01TR0ZNVF9FWFRFTkRFRF9PUFRJT05TID0gWWVzUGxlYXNlCi0JSEFWRV9ERVZfVFRZID0gWWVzUGxlYXNlCi0JaWZlcSAoJCh1bmFtZV9SKSw1LjYpCi0JCVNPQ0tMRU5fVCA9IGludAotCQlOT19IU1RSRVJST1IgPSBZZXNQbGVhc2UKLQkJTk9fSVBWNiA9IFllc1BsZWFzZQotCQlOT19TT0NLQUREUl9TVE9SQUdFID0gWWVzUGxlYXNlCi0JCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NFVEVOViA9IFllc1BsZWFzZQotCQlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCi0JCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQotCQlHSVRfVEVTVF9DTVAgPSBjbXAKLQllbmRpZgotCWlmZXEgKCQodW5hbWVfUiksNS43KQotCQlORUVEU19SRVNPTFYgPSBZZXNQbGVhc2UKLQkJTk9fSVBWNiA9IFllc1BsZWFzZQotCQlOT19TT0NLQUREUl9TVE9SQUdFID0gWWVzUGxlYXNlCi0JCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NFVEVOViA9IFllc1BsZWFzZQotCQlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCi0JCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQotCQlHSVRfVEVTVF9DTVAgPSBjbXAKLQllbmRpZgotCWlmZXEgKCQodW5hbWVfUiksNS44KQotCQlOT19VTlNFVEVOViA9IFllc1BsZWFzZQotCQlOT19TRVRFTlYgPSBZZXNQbGVhc2UKLQkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCi0JCUdJVF9URVNUX0NNUCA9IGNtcAotCWVuZGlmCi0JaWZlcSAoJCh1bmFtZV9SKSw1LjkpCi0JCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCi0JCU5PX1NFVEVOViA9IFllc1BsZWFzZQotCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKLQkJR0lUX1RFU1RfQ01QID0gY21wCi0JZW5kaWYKLQlJTlNUQUxMID0gL3Vzci91Y2IvaW5zdGFsbAotCVRBUiA9IGd0YXIKLQlCQVNJQ19DRkxBR1MgKz0gLURfX0VYVEVOU0lPTlNfXyAtRF9fc3VuX18gLURIQVZFX0FMTE9DQV9ICi1lbmRpZgotaWZlcSAoJCh1bmFtZV9PKSxDeWd3aW4pCi0JaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICcxXC5bMS02XVwuJyksNCkKLQkJTk9fRF9UWVBFX0lOX0RJUkVOVCA9IFllc1BsZWFzZQotCQlOT19EX0lOT19JTl9ESVJFTlQgPSBZZXNQbGVhc2UKLQkJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQotCQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQkJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQkJTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCi0JCU5PX0lQVjYgPSBZZXNQbGVhc2UKLQkJT0xEX0lDT05WID0gVW5mb3J0dW5hdGVseVllcwotCQlDWUdXSU5fVjE1X1dJTjMyQVBJID0gWWVzUGxlYXNlCi0JZW5kaWYKLQlOT19USFJFQURfU0FGRV9QUkVBRCA9IFllc1BsZWFzZQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JTk9fRkFTVF9XT1JLSU5HX0RJUkVDVE9SWSA9IFVuZm9ydHVuYXRlbHlZZXMKLQlOT19UUlVTVEFCTEVfRklMRU1PREUgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCi0JIyBUaGVyZSBhcmUgY29uZmxpY3RpbmcgcmVwb3J0cyBhYm91dCB0aGlzLgotCSMgT24gc29tZSBib3hlcyBOT19NTUFQIGlzIG5lZWRlZCwgYW5kIG5vdCBzbyBlbHNld2hlcmUuCi0JIyBUcnkgY29tbWVudGluZyB0aGlzIG91dCBpZiB5b3Ugc3VzcGVjdCBNTUFQIGlzIG1vcmUgZWZmaWNpZW50Ci0JTk9fTU1BUCA9IFllc1BsZWFzZQotCVggPSAuZXhlCi0JQ09NUEFUX09CSlMgKz0gY29tcGF0L2N5Z3dpbi5vCi0JVU5SRUxJQUJMRV9GU1RBVCA9IFVuZm9ydHVuYXRlbHlZZXMKLQlTUEFSU0VfRkxBR1MgPSAtaXN5c3RlbSAvdXNyL2luY2x1ZGUvdzMyYXBpIC1Xbm8tb25lLWJpdC1zaWduZWQtYml0ZmllbGQKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLEZyZWVCU0QpCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlPTERfSUNPTlYgPSBZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKLQlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKLQlESVJfSEFTX0JTRF9HUk9VUF9TRU1BTlRJQ1MgPSBZZXNQbGVhc2UKLQlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJzRcLicpLDIpCi0JCVBUSFJFQURfTElCUyA9IC1wdGhyZWFkCi0JCU5PX1VJTlRNQVhfVCA9IFllc1BsZWFzZQotCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKLQllbmRpZgotCVBZVEhPTl9QQVRIID0gL3Vzci9sb2NhbC9iaW4vcHl0aG9uCi0JSEFWRV9QQVRIU19IID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxPcGVuQlNEKQotCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKLQlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQotCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZQotCUJBU0lDX0xERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xpYgotCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksTmV0QlNEKQotCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnWzAxXVwuJyksMikKLQkJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQllbmRpZgotCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvcGtnL2luY2x1ZGUKLQlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9wa2cvbGliICQoQ0NfTERfRFlOUEFUSCkvdXNyL3BrZy9saWIKLQlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksQUlYKQotCURFRkFVTFRfUEFHRVIgPSBtb3JlCi0JTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQlOT19OU0VDID0gWWVzUGxlYXNlCi0JRlJFQURfUkVBRFNfRElSRUNUT1JJRVMgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JSU5URVJOQUxfUVNPUlQgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlCQVNJQ19DRkxBR1MgKz0gLURfTEFSR0VfRklMRVMKLQlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfVikiIDogJ1sxMjM0XScpLDEpCi0JCU5PX1BUSFJFQURTID0gWWVzUGxlYXNlCi0JZWxzZQotCQlQVEhSRUFEX0xJQlMgPSAtbHB0aHJlYWQKLQllbmRpZgotCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9WKS4kKHVuYW1lX1IpIiA6ICc1XC4xJyksMykKLQkJSU5MSU5FID0gJycKLQllbmRpZgotCUdJVF9URVNUX0NNUCA9IGNtcAotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksR05VKQotCSMgR05VL0h1cmQKLQlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKLQlMSUJDX0NPTlRBSU5TX0xJQklOVEwgPSBZZXNQbGVhc2UKLWVuZGlmCi1pZmVxICgkKHVuYW1lX1MpLElSSVgpCi0JTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlOT19NS0RURU1QID0gWWVzUGxlYXNlCi0JIyBXaGVuIGNvbXBpbGVkIHdpdGggdGhlIE1JUFNwcm8gNy40LjRtIGNvbXBpbGVyLCBhbmQgd2l0aG91dCBwdGhyZWFkcwotCSMgKGkuZS4gTk9fUFRIUkVBRFMgaXMgc2V0KSwgYW5kIF93aXRoXyBNTUFQIChpLmUuIE5PX01NQVAgaXMgbm90IHNldCksCi0JIyBnaXQgZGllcyB3aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgZmlyc3QKLQkjIGVudHJ5IG9mIGEgcmVmbG9nLiAgVGhlIGNvbnNlcnZhdGl2ZSBjaG9pY2UgaXMgbWFkZSB0byBhbHdheXMgc2V0Ci0JIyBOT19NTUFQLiAgSWYgeW91IHN1c3BlY3QgdGhhdCB5b3VyIGNvbXBpbGVyIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzCi0JIyBpc3N1ZSwgY29tbWVudCBvdXQgdGhlIE5PX01NQVAgc3RhdGVtZW50LgotCU5PX01NQVAgPSBZZXNQbGVhc2UKLQlOT19SRUdFWCA9IFllc1BsZWFzZQotCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKLQlTTlBSSU5URl9SRVRVUk5TX0JPR1VTID0gWWVzUGxlYXNlCi0JU0hFTExfUEFUSCA9IC91c3IvZ251L2Jpbi9iYXNoCi0JTkVFRFNfTElCR0VOID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxJUklYNjQpCi0JTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlOT19NS0RURU1QID0gWWVzUGxlYXNlCi0JIyBXaGVuIGNvbXBpbGVkIHdpdGggdGhlIE1JUFNwcm8gNy40LjRtIGNvbXBpbGVyLCBhbmQgd2l0aG91dCBwdGhyZWFkcwotCSMgKGkuZS4gTk9fUFRIUkVBRFMgaXMgc2V0KSwgYW5kIF93aXRoXyBNTUFQIChpLmUuIE5PX01NQVAgaXMgbm90IHNldCksCi0JIyBnaXQgZGllcyB3aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgZmlyc3QKLQkjIGVudHJ5IG9mIGEgcmVmbG9nLiAgVGhlIGNvbnNlcnZhdGl2ZSBjaG9pY2UgaXMgbWFkZSB0byBhbHdheXMgc2V0Ci0JIyBOT19NTUFQLiAgSWYgeW91IHN1c3BlY3QgdGhhdCB5b3VyIGNvbXBpbGVyIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzCi0JIyBpc3N1ZSwgY29tbWVudCBvdXQgdGhlIE5PX01NQVAgc3RhdGVtZW50LgotCU5PX01NQVAgPSBZZXNQbGVhc2UKLQlOT19SRUdFWCA9IFllc1BsZWFzZQotCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKLQlTTlBSSU5URl9SRVRVUk5TX0JPR1VTID0gWWVzUGxlYXNlCi0JU0hFTExfUEFUSCA9IC91c3IvZ251L2Jpbi9iYXNoCi0JTkVFRFNfTElCR0VOID0gWWVzUGxlYXNlCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxIUC1VWCkKLQlJTkxJTkUgPSBfX2lubGluZQotCU5PX0lQVjYgPSBZZXNQbGVhc2UKLQlOT19TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fTUVNTUVNID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCi0JTk9fU1lTX1NFTEVDVF9IID0gWWVzUGxlYXNlCi0JTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQotCVNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgPSBZZXNQbGVhc2UKLQlOT19OU0VDID0gWWVzUGxlYXNlCi0JaWZlcSAoJCh1bmFtZV9SKSxCLjExLjAwKQotCQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKLQkJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCi0JZW5kaWYKLQlpZmVxICgkKHVuYW1lX1IpLEIuMTAuMjApCi0JCSMgT3ZlcnJpZGUgSFAtVVggMTEueCBzZXR0aW5nOgotCQlJTkxJTkUgPQotCQlTT0NLTEVOX1QgPSBzaXplX3QKLQkJTk9fUFJFQUQgPSBZZXNQbGVhc2UKLQkJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCi0JCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQotCWVuZGlmCi0JR0lUX1RFU1RfQ01QID0gY21wCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxXaW5kb3dzKQotCUdJVF9WRVJTSU9OIDo9ICQoR0lUX1ZFUlNJT04pLk1TVkMKLQlwYXRoc2VwID0gOwotCU5PX1BSRUFEID0gWWVzUGxlYXNlCi0JTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCi0JTk9fTElCR0VOX0ggPSBZZXNQbGVhc2UKLQlOT19QT0xMID0gWWVzUGxlYXNlCi0JTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCi0JTk9fSVBWNiA9IFllc1BsZWFzZQotCU5PX1VOSVhfU09DS0VUUyA9IFllc1BsZWFzZQotCU5PX1NFVEVOViA9IFllc1BsZWFzZQotCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQotCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKLQlOT19TVFJUT0tfUiA9IFllc1BsZWFzZQotCU5PX0ZOTUFUQ0ggPSBZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQkjIE5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JTk9fSUNPTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKLQlOT19TVFJUT1VMTCA9IFllc1BsZWFzZQotCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKLQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQotCVNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgPSBZZXNQbGVhc2UKLQlOT19TVk5fVEVTVFMgPSBZZXNQbGVhc2UKLQlOT19QRVJMX01BS0VNQUtFUiA9IFllc1BsZWFzZQotCVJVTlRJTUVfUFJFRklYID0gWWVzUGxlYXNlCi0JTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCi0JTk9fTlNFQyA9IFllc1BsZWFzZQotCVVTRV9XSU4zMl9NTUFQID0gWWVzUGxlYXNlCi0JIyBVU0VfTkVEX0FMTE9DQVRPUiA9IFllc1BsZWFzZQotCVVOUkVMSUFCTEVfRlNUQVQgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JT0JKRUNUX0NSRUFUSU9OX1VTRVNfUkVOQU1FUyA9IFVuZm9ydHVuYXRlbHlOZWVkc1RvCi0JTk9fUkVHRVggPSBZZXNQbGVhc2UKLQlOT19DVVJMID0gWWVzUGxlYXNlCi0JTk9fUFlUSE9OID0gWWVzUGxlYXNlCi0JQkxLX1NIQTEgPSBZZXNQbGVhc2UKLQlOT19QT1NJWF9HT09ESUVTID0gVW5mb3J0dW5hdGVseVllcwotCU5BVElWRV9DUkxGID0gWWVzUGxlYXNlCi0JREVGQVVMVF9IRUxQX0ZPUk1BVCA9IGh0bWwKLQotCUNDID0gY29tcGF0L3ZjYnVpbGQvc2NyaXB0cy9jbGluay5wbAotCUFSID0gY29tcGF0L3ZjYnVpbGQvc2NyaXB0cy9saWIucGwKLQlDRkxBR1MgPQotCUJBU0lDX0NGTEFHUyA9IC1ub2xvZ28gLUkuIC1JLi4vemxpYiAtSWNvbXBhdC92Y2J1aWxkIC1JY29tcGF0L3ZjYnVpbGQvaW5jbHVkZSAtRFdJTjMyIC1EX0NPTlNPTEUgLURIQVZFX1NUUklOR19IIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFCi0JQ09NUEFUX09CSlMgPSBjb21wYXQvbXN2Yy5vIGNvbXBhdC93aW5hbnNpLm8gXAotCQljb21wYXQvd2luMzIvcHRocmVhZC5vIGNvbXBhdC93aW4zMi9zeXNsb2cubyBcCi0JCWNvbXBhdC93aW4zMi9kaXJlbnQubwotCUNPTVBBVF9DRkxBR1MgPSAtRF9fVVNFX01JTkdXX0FDQ0VTUyAtRE5PR0RJIC1ESEFWRV9TVFJJTkdfSCAtREhBVkVfQUxMT0NBX0ggLUljb21wYXQgLUljb21wYXQvcmVnZXggLUljb21wYXQvd2luMzIgLURTVFJJUF9FWFRFTlNJT049XCIuZXhlXCIKLQlCQVNJQ19MREZMQUdTID0gLUlHTk9SRTo0MjE3IC1JR05PUkU6NDA0OSAtTk9MT0dPIC1TVUJTWVNURU06Q09OU09MRSAtTk9ERUZBVUxUTElCOk1TVkNSVC5saWIKLQlFWFRMSUJTID0gdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgd2luaW5ldC5saWIgd3MyXzMyLmxpYgotCVBUSFJFQURfTElCUyA9Ci0JbGliID0KLWlmbmRlZiBERUJVRwotCUJBU0lDX0NGTEFHUyArPSAtR0wgLU9zIC1NVAotCUJBU0lDX0xERkxBR1MgKz0gLUxUQ0cKLQlBUiArPSAtTFRDRwotZWxzZQotCUJBU0lDX0NGTEFHUyArPSAtWmkgLU1UZAotZW5kaWYKLQlYID0gLmV4ZQotZW5kaWYKLWlmZXEgKCQodW5hbWVfUyksSW50ZXJpeCkKLQlOT19JTklUR1JPVVBTID0gWWVzUGxlYXNlCi0JTk9fSVBWNiA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKLQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKLQlOT19OU0VDID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQlpZmVxICgkKHVuYW1lX1IpLDMuNSkKLQkJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCi0JCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQotCQlOT19TT0NLQUREUl9TVE9SQUdFID0gWWVzUGxlYXNlCi0JCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKLQllbmRpZgotCWlmZXEgKCQodW5hbWVfUiksNS4yKQotCQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKLQkJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCi0JCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKLQkJTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQotCWVuZGlmCi1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxNaW5peCkKLQlOT19JUFY2ID0gWWVzUGxlYXNlCi0JTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCi0JTk9fTlNFQyA9IFllc1BsZWFzZQotCU5FRURTX0xJQkdFTiA9Ci0JTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCi0JTkVFRFNfSUROX1dJVEhfQ1VSTCA9IFllc1BsZWFzZQotCU5FRURTX1NTTF9XSVRIX0NVUkwgPSBZZXNQbGVhc2UKLQlORUVEU19SRVNPTFYgPQotCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQotCU5PX01NQVAgPSBZZXNQbGVhc2UKLQlOT19DVVJMID0KLQlOT19FWFBBVCA9Ci1lbmRpZgotaWZlcSAoJCh1bmFtZV9TKSxOT05TVE9QX0tFUk5FTCkKLQkjIE5lZWRzIHNvbWUgQzk5IGZlYXR1cmVzLCAiaW5saW5lIiBpcyBqdXN0IG9uZSBvZiB0aGVtLgotCSMgSU5MSU5FPScnIHdvdWxkIGp1c3QgcmVwbGFjZSBvbmUgc2V0IG9mIHdhcm5pbmdzIHdpdGggYW5vdGhlciBhbmQKLQkjIHN0aWxsIG5vdCBjb21waWxlIGluIGM4OSBtb2RlLCBkdWUgdG8gbm9uLWNvbnN0IGFycmF5IGluaXRpYWxpemF0aW9ucy4KLQlDQyA9IGNjIC1jOTkKLQkjIERpc2FibGUgYWxsIG9wdGltaXphdGlvbiwgc2VlbXMgdG8gcmVzdWx0IGluIGJhZCBjb2RlLCB3aXRoIC1PIG9yIC1PMgotCSMgb3IgZXZlbiAtTzEgKGRlZmF1bHQpLCAvdXNyL2xvY2FsL2xpYmV4ZWMvZ2l0LWNvcmUvZ2l0LXBhY2stb2JqZWN0cwotCSMgYWJlbmRzIG9uICJnaXQgcHVzaCIuIE5lZWRzIG1vcmUgaW52ZXN0aWdhdGlvbi4KLQlDRkxBR1MgPSAtZyAtTzAKLQkjIFdlJ2Qgd2FudCBpdCB0byBiZSBoZXJlLgotCXByZWZpeCA9IC91c3IvbG9jYWwKLQkjIE91cidzIGFyZSBpbiAke3ByZWZpeH0vYmluIChwZXJsIG1pZ2h0IGFsc28gYmUgaW4gL3Vzci9iaW4vcGVybCkuCi0JUEVSTF9QQVRIID0gJHtwcmVmaXh9L2Jpbi9wZXJsCi0JUFlUSE9OX1BBVEggPSAke3ByZWZpeH0vYmluL3B5dGhvbgotCi0JIyBBcyBkZXRlY3RlZCBieSAnLi9jb25maWd1cmUnLgotCSMgTWlzc2RldGVjdGVkLCBoZW5jZSBjb21tZW50ZWQgb3V0LCBzZWUgYmVsb3cuCi0JI05PX0NVUkwgPSBZZXNQbGVhc2UKLQkjIEFkZGVkIG1hbnVhbGx5LCBzZWUgYWJvdmUuCi0JTkVFRFNfU1NMX1dJVEhfQ1VSTCA9IFllc1BsZWFzZQotCUhBVkVfTElCQ0hBUlNFVF9IID0gWWVzUGxlYXNlCi0JTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKLQlORUVEU19MSUJJTlRMX0JFRk9SRV9MSUJJQ09OViA9IFllc1BsZWFzZQotCU5PX1NZU19TRUxFQ1RfSCA9IFVuZm9ydHVuYXRlbHlZZXMKLQlOT19EX1RZUEVfSU5fRElSRU5UID0gWWVzUGxlYXNlCi0JTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCi0JTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQotCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKLQlOT19NRU1NRU0gPSBZZXNQbGVhc2UKLQlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCi0JTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19NS0RURU1QID0gWWVzUGxlYXNlCi0JTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKLQkjIEN1cnJlbnRseSBsaWJpY29udi0xLjkuMS4KLQlPTERfSUNPTlYgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JTk9fUkVHRVggPSBZZXNQbGVhc2UKLQlOT19QVEhSRUFEUyA9IFVuZm9ydHVuYXRlbHlZZXMKLQotCSMgTm90IGRldGVjdGVkIChub3IgY2hlY2tlZCBmb3IpIGJ5ICcuL2NvbmZpZ3VyZScuCi0JIyBXZSBkb24ndCBoYXZlIFNBX1JFU1RBUlQgb24gTm9uU3RvcCwgdW5mb3J0dW5hbGV0eS4KLQlDT01QQVRfQ0ZMQUdTICs9IC1EU0FfUkVTVEFSVD0wCi0JIyBBcHBhcmVudGx5IG5lZWRlZCBpbiBjb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMuCi0JQ09NUEFUX0NGTEFHUyArPSAtREhBVkVfU1RSSU5HX0g9MQotCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLQlOT19QUkVBRCA9IFllc1BsZWFzZQotCU5PX01NQVAgPSBZZXNQbGVhc2UKLQlOT19QT0xMID0gWWVzUGxlYXNlCi0JTk9fSU5UUFRSX1QgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JIyBCdWcgcmVwb3J0IDEwLTEyMDgyMi00NDc3IHN1Ym1pdHRlZCB0byBIUCBOb25TdG9wIGRldmVsb3BtZW50LgotCU1LRElSX1dPX1RSQUlMSU5HX1NMQVNIID0gWWVzUGxlYXNlCi0JIyBSRkUgMTAtMTIwOTEyLTQ2OTMgc3VibWl0dGVkIHRvIEhQIE5vblN0b3AgZGV2ZWxvcG1lbnQuCi0JTk9fU0VUSVRJTUVSID0gVW5mb3J0dW5hdGVseVllcwotCVNBTkVfVE9PTF9QQVRIID0gL3Vzci9jb3JldXRpbHMvYmluOi91c3IvbG9jYWwvYmluCi0JU0hFTExfUEFUSCA9IC91c3IvbG9jYWwvYmluL2Jhc2gKLQkjIGFzIG9mIEgwNi4yNS9KMDYuMTQsIHdlIG1pZ2h0IGJldHRlciB1c2UgdGhpcwotCSNTSEVMTF9QQVRIID0gL3Vzci9jb3JldXRpbHMvYmluL2Jhc2gKLWVuZGlmCi1pZm5lcSAoLCQoZmluZHN0cmluZyBNSU5HVywkKHVuYW1lX1MpKSkKLQlwYXRoc2VwID0gOwotCU5PX1BSRUFEID0gWWVzUGxlYXNlCi0JTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCi0JTk9fTElCR0VOX0ggPSBZZXNQbGVhc2UKLQlOT19QT0xMID0gWWVzUGxlYXNlCi0JTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCi0JTk9fVU5JWF9TT0NLRVRTID0gWWVzUGxlYXNlCi0JTk9fU0VURU5WID0gWWVzUGxlYXNlCi0JTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKLQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCi0JTk9fU1RSTENQWSA9IFllc1BsZWFzZQotCU5PX1NUUlRPS19SID0gWWVzUGxlYXNlCi0JTk9fRk5NQVRDSCA9IFllc1BsZWFzZQotCU5PX01FTU1FTSA9IFllc1BsZWFzZQotCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JT0xEX0lDT05WID0gWWVzUGxlYXNlCi0JTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCi0JTk9fTUtEVEVNUCA9IFllc1BsZWFzZQotCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCi0JTk9fU1ZOX1RFU1RTID0gWWVzUGxlYXNlCi0JTk9fUEVSTF9NQUtFTUFLRVIgPSBZZXNQbGVhc2UKLQlSVU5USU1FX1BSRUZJWCA9IFllc1BsZWFzZQotCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQotCU5PX05TRUMgPSBZZXNQbGVhc2UKLQlVU0VfV0lOMzJfTU1BUCA9IFllc1BsZWFzZQotCVVTRV9ORURfQUxMT0NBVE9SID0gWWVzUGxlYXNlCi0JVU5SRUxJQUJMRV9GU1RBVCA9IFVuZm9ydHVuYXRlbHlZZXMKLQlPQkpFQ1RfQ1JFQVRJT05fVVNFU19SRU5BTUVTID0gVW5mb3J0dW5hdGVseU5lZWRzVG8KLQlOT19SRUdFWCA9IFllc1BsZWFzZQotCU5PX1BZVEhPTiA9IFllc1BsZWFzZQotCUJMS19TSEExID0gWWVzUGxlYXNlCi0JRVRBR1NfVEFSR0VUID0gRVRBR1MKLQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKLQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKLQlOT19QT1NJWF9HT09ESUVTID0gVW5mb3J0dW5hdGVseVllcwotCUNPTVBBVF9DRkxBR1MgKz0gLURfX1VTRV9NSU5HV19BQ0NFU1MgLUROT0dESSAtSWNvbXBhdCAtSWNvbXBhdC93aW4zMgotCUNPTVBBVF9DRkxBR1MgKz0gLURTVFJJUF9FWFRFTlNJT049XCIuZXhlXCIKLQlDT01QQVRfT0JKUyArPSBjb21wYXQvbWluZ3cubyBjb21wYXQvd2luYW5zaS5vIFwKLQkJY29tcGF0L3dpbjMyL3B0aHJlYWQubyBjb21wYXQvd2luMzIvc3lzbG9nLm8gXAotCQljb21wYXQvd2luMzIvZGlyZW50Lm8KLQlFWFRMSUJTICs9IC1sd3MyXzMyCi0JUFRIUkVBRF9MSUJTID0KLQlYID0gLmV4ZQotCVNQQVJTRV9GTEFHUyA9IC1Xbm8tb25lLWJpdC1zaWduZWQtYml0ZmllbGQKLWlmbmVxICgsJCh3aWxkY2FyZCAuLi9USElTX0lTX01TWVNHSVQpKQotCWh0bWxkaXIgPSBkb2MvZ2l0L2h0bWwvCi0JcHJlZml4ID0KLQlJTlNUQUxMID0gL2Jpbi9pbnN0YWxsCi0JRVhUTElCUyArPSAvbWluZ3cvbGliL2xpYnouYQotCU5PX1JfVE9fR0NDX0xJTktFUiA9IFllc1BsZWFzZQotCUlOVEVSTkFMX1FTT1JUID0gWWVzUGxlYXNlCi0JSEFWRV9MSUJDSEFSU0VUX0ggPSBZZXNQbGVhc2UKLWVsc2UKLQlOT19DVVJMID0gWWVzUGxlYXNlCi1lbmRpZgotZW5kaWYKLQoraW5jbHVkZSBjb25maWcubWFrLnVuYW1lCiAtaW5jbHVkZSBjb25maWcubWFrLmF1dG9nZW4KIC1pbmNsdWRlIGNvbmZpZy5tYWsKIApAQCAtMTUyMCw2ICsxMDcwLDExIEBACiAJCQlCQVNJQ19MREZMQUdTICs9IC1ML29wdC9sb2NhbC9saWIKIAkJZW5kaWYKIAllbmRpZgorCWlmbmRlZiBOT19BUFBMRV9DT01NT05fQ1JZUFRPCisJCUFQUExFX0NPTU1PTl9DUllQVE8gPSBZZXNQbGVhc2UKKwkJQ09NUEFUX0NGTEFHUyArPSAtREFQUExFX0NPTU1PTl9DUllQVE8KKwllbmRpZgorCU5PX1JFR0VYID0gWWVzUGxlYXNlCiAJUFRIUkVBRF9MSUJTID0KIGVuZGlmCiAKQEAgLTE1ODgsNiArMTE0Myw5IEBACiAJCWVsc2UKIAkJCUVYUEFUX0xJQkVYUEFUID0gLWxleHBhdAogCQllbmRpZgorCQlpZmRlZiBFWFBBVF9ORUVEU19YTUxQQVJTRV9ICisJCQlCQVNJQ19DRkxBR1MgKz0gLURFWFBBVF9ORUVEU19YTUxQQVJTRV9ICisJCWVuZGlmCiAJZW5kaWYKIGVuZGlmCiAKQEAgLTE2NTcsNiArMTIxNSw5IEBACiBpZmRlZiBOT19EX0lOT19JTl9ESVJFTlQKIAlCQVNJQ19DRkxBR1MgKz0gLUROT19EX0lOT19JTl9ESVJFTlQKIGVuZGlmCitpZmRlZiBOT19HRUNPU19JTl9QV0VOVAorCUJBU0lDX0NGTEFHUyArPSAtRE5PX0dFQ09TX0lOX1BXRU5UCitlbmRpZgogaWZkZWYgTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUCiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUCiBlbmRpZgpAQCAtMTcxMCwxMCArMTI3MSw2IEBACiBpZmRlZiBOT19TVFJUT1VMTAogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19TVFJUT1VMTAogZW5kaWYKLWlmZGVmIE5PX1NUUlRPS19SCi0JQ09NUEFUX0NGTEFHUyArPSAtRE5PX1NUUlRPS19SCi0JQ09NUEFUX09CSlMgKz0gY29tcGF0L3N0cnRva19yLm8KLWVuZGlmCiBpZmRlZiBOT19GTk1BVENICiAJQ09NUEFUX0NGTEFHUyArPSAtSWNvbXBhdC9mbm1hdGNoCiAJQ09NUEFUX0NGTEFHUyArPSAtRE5PX0ZOTUFUQ0gKQEAgLTE3MjUsNiArMTI4Miw5IEBACiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L2ZubWF0Y2gvZm5tYXRjaC5vCiBlbmRpZgogZW5kaWYKK2lmbmRlZiBOT19XSUxETUFUQ0gKKwlDT01QQVRfQ0ZMQUdTICs9IC1EVVNFX1dJTERNQVRDSAorZW5kaWYKIGlmZGVmIE5PX1NFVEVOVgogCUNPTVBBVF9DRkxBR1MgKz0gLUROT19TRVRFTlYKIAlDT01QQVRfT0JKUyArPSBjb21wYXQvc2V0ZW52Lm8KQEAgLTE3NTAsNiArMTMxMCw5IEBACiBpZmRlZiBOT19TWVNfUE9MTF9ICiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fU1lTX1BPTExfSAogZW5kaWYKK2lmZGVmIE5FRURTX1NZU19QQVJBTV9ICisJQkFTSUNfQ0ZMQUdTICs9IC1ETkVFRFNfU1lTX1BBUkFNX0gKK2VuZGlmCiBpZmRlZiBOT19JTlRUWVBFU19ICiAJQkFTSUNfQ0ZMQUdTICs9IC1ETk9fSU5UVFlQRVNfSAogZW5kaWYKQEAgLTE4NDYsMTAgKzE0MDksMTYgQEAKIAlMSUJfT0JKUyArPSBwcGMvc2hhMS5vIHBwYy9zaGExcHBjLm8KIAlMSUJfSCArPSBwcGMvc2hhMS5oCiBlbHNlCitpZmRlZiBBUFBMRV9DT01NT05fQ1JZUFRPCisJQ09NUEFUX0NGTEFHUyArPSAtRENPTU1PTl9ESUdFU1RfRk9SX09QRU5TU0wKKwlTSEExX0hFQURFUiA9IDxDb21tb25DcnlwdG8vQ29tbW9uRGlnZXN0Lmg+CitlbHNlCiAJU0hBMV9IRUFERVIgPSA8b3BlbnNzbC9zaGEuaD4KIAlFWFRMSUJTICs9ICQoTElCXzRfQ1JZUFRPKQogZW5kaWYKIGVuZGlmCitlbmRpZgorCiBpZmRlZiBOT19QRVJMX01BS0VNQUtFUgogCWV4cG9ydCBOT19QRVJMX01BS0VNQUtFUgogZW5kaWYKQEAgLTE4NjEsNiArMTQzMCw5IEBACiAJQ09NUEFUX0NGTEFHUyArPSAtRE5PX01FTU1FTQogCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9tZW1tZW0ubwogZW5kaWYKK2lmZGVmIE5PX0dFVFBBR0VTSVpFCisJQ09NUEFUX0NGTEFHUyArPSAtRE5PX0dFVFBBR0VTSVpFCitlbmRpZgogaWZkZWYgSU5URVJOQUxfUVNPUlQKIAlDT01QQVRfQ0ZMQUdTICs9IC1ESU5URVJOQUxfUVNPUlQKIAlDT01QQVRfT0JKUyArPSBjb21wYXQvcXNvcnQubwpAQCAtMTg4Niw2ICsxNDU4LDEwIEBACiAJRVhUTElCUyArPSAkKENIQVJTRVRfTElCKQogZW5kaWYKIAoraWZkZWYgSEFWRV9TVFJJTkdTX0gKKwlCQVNJQ19DRkxBR1MgKz0gLURIQVZFX1NUUklOR1NfSAorZW5kaWYKKwogaWZkZWYgSEFWRV9ERVZfVFRZCiAJQkFTSUNfQ0ZMQUdTICs9IC1ESEFWRV9ERVZfVFRZCiBlbmRpZgpAQCAtMTkwMCw5ICsxNDc2LDYgQEAKIAlDT01QQVRfQ0ZMQUdTICs9IC1JY29tcGF0L3JlZ2V4CiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L3JlZ2V4L3JlZ2V4Lm8KIGVuZGlmCi1pZmRlZiBDWUdXSU5fVjE1X1dJTjMyQVBJCi0JQ09NUEFUX0NGTEFHUyArPSAtRENZR1dJTl9WMTVfV0lOMzJBUEkKLWVuZGlmCiAKIGlmZGVmIFVTRV9ORURfQUxMT0NBVE9SCiAgICAgICAgQ09NUEFUX0NGTEFHUyArPSAtSWNvbXBhdC9uZWRtYWxsb2MKQEAgLTE5MTcsNiArMTQ5MCwxMSBAQAogCU1TR0ZNVCArPSAtLWNoZWNrIC0tc3RhdGlzdGljcwogZW5kaWYKIAoraWZkZWYgTkVFRFNfQ0xJUFBFRF9XUklURQorCUJBU0lDX0NGTEFHUyArPSAtRE5FRURTX0NMSVBQRURfV1JJVEUKKwlDT01QQVRfT0JKUyArPSBjb21wYXQvY2xpcHBlZC13cml0ZS5vCitlbmRpZgorCiBpZm5lcSAoLCQoWERMX0ZBU1RfSEFTSCkpCiAJQkFTSUNfQ0ZMQUdTICs9IC1EWERMX0ZBU1RfSEFTSAogZW5kaWYKQEAgLTE5NTQsNiArMTUzMiw3IEBACiAJUVVJRVRfTVNHRk1UICAgPSBAZWNobyAnICAgJyBNU0dGTVQgJEA7CiAJUVVJRVRfR0NPViAgICAgPSBAZWNobyAnICAgJyBHQ09WICRAOwogCVFVSUVUX1NQICAgICAgID0gQGVjaG8gJyAgICcgU1AgJDw7CisJUVVJRVRfUkMgICAgICAgPSBAZWNobyAnICAgJyBSQyAkQDsKIAlRVUlFVF9TVUJESVIwICA9ICtAc3ViZGlyPQogCVFVSUVUX1NVQkRJUjEgID0gOyQoTk9fU1VCRElSKSBlY2hvICcgICAnIFNVQkRJUiAkJHN1YmRpcjsgXAogCQkJICQoTUFLRSkgJChQUklOVF9ESVIpIC1DICQkc3ViZGlyCkBAIC0xOTk2LDEyICsxNTc1LDEyIEBACiBERVNURElSX1NRID0gJChzdWJzdCAnLCdcJycsJChERVNURElSKSkKIGJpbmRpcl9TUSA9ICQoc3Vic3QgJywnXCcnLCQoYmluZGlyKSkKIGJpbmRpcl9yZWxhdGl2ZV9TUSA9ICQoc3Vic3QgJywnXCcnLCQoYmluZGlyX3JlbGF0aXZlKSkKLW1hbmRpcl9TUSA9ICQoc3Vic3QgJywnXCcnLCQobWFuZGlyKSkKLWluZm9kaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGluZm9kaXIpKQorbWFuZGlyX3JlbGF0aXZlX1NRID0gJChzdWJzdCAnLCdcJycsJChtYW5kaXJfcmVsYXRpdmUpKQoraW5mb2Rpcl9yZWxhdGl2ZV9TUSA9ICQoc3Vic3QgJywnXCcnLCQoaW5mb2Rpcl9yZWxhdGl2ZSkpCiBsb2NhbGVkaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGxvY2FsZWRpcikpCiBnaXRleGVjZGlyX1NRID0gJChzdWJzdCAnLCdcJycsJChnaXRleGVjZGlyKSkKIHRlbXBsYXRlX2Rpcl9TUSA9ICQoc3Vic3QgJywnXCcnLCQodGVtcGxhdGVfZGlyKSkKLWh0bWxkaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGh0bWxkaXIpKQoraHRtbGRpcl9yZWxhdGl2ZV9TUSA9ICQoc3Vic3QgJywnXCcnLCQoaHRtbGRpcl9yZWxhdGl2ZSkpCiBwcmVmaXhfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKHByZWZpeCkpCiBnaXR3ZWJkaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGdpdHdlYmRpcikpCiAKQEAgLTIwOTYsNyArMTY3NSw3IEBACiBzaGVsbF9jb21wYXRpYmlsaXR5X3Rlc3Q6IHBsZWFzZV9zZXRfU0hFTExfUEFUSF90b19hX21vcmVfbW9kZXJuX3NoZWxsCiAKIHN0cmlwOiAkKFBST0dSQU1TKSBnaXQkWAotCSQoU1RSSVApICQoU1RSSVBfT1BUUykgJChQUk9HUkFNUykgZ2l0JFgKKwkkKFNUUklQKSAkKFNUUklQX09QVFMpICReCiAKICMjIyBUYXJnZXQtc3BlY2lmaWMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcwogCkBAIC0yMTMzLDkgKzE3MTIsOSBAQAogCiBnaXQuc3AgZ2l0LnMgZ2l0Lm86IEdJVC1QUkVGSVgKIGdpdC5zcCBnaXQucyBnaXQubzogRVhUUkFfQ1BQRkxBR1MgPSBcCi0JJy1ER0lUX0hUTUxfUEFUSD0iJChodG1sZGlyX1NRKSInIFwKLQknLURHSVRfTUFOX1BBVEg9IiQobWFuZGlyX1NRKSInIFwKLQknLURHSVRfSU5GT19QQVRIPSIkKGluZm9kaXJfU1EpIicKKwknLURHSVRfSFRNTF9QQVRIPSIkKGh0bWxkaXJfcmVsYXRpdmVfU1EpIicgXAorCSctREdJVF9NQU5fUEFUSD0iJChtYW5kaXJfcmVsYXRpdmVfU1EpIicgXAorCSctREdJVF9JTkZPX1BBVEg9IiQoaW5mb2Rpcl9yZWxhdGl2ZV9TUSkiJwogCiBnaXQkWDogZ2l0Lm8gR0lULUxERkxBR1MgJChCVUlMVElOX09CSlMpICQoR0lUTElCUykKIAkkKFFVSUVUX0xJTkspJChDQykgJChBTExfQ0ZMQUdTKSAtbyAkQCBnaXQubyBcCkBAIC0yMTQ1LDkgKzE3MjQsOSBAQAogCiBidWlsdGluL2hlbHAuc3AgYnVpbHRpbi9oZWxwLnMgYnVpbHRpbi9oZWxwLm86IGNvbW1vbi1jbWRzLmggR0lULVBSRUZJWAogYnVpbHRpbi9oZWxwLnNwIGJ1aWx0aW4vaGVscC5zIGJ1aWx0aW4vaGVscC5vOiBFWFRSQV9DUFBGTEFHUyA9IFwKLQknLURHSVRfSFRNTF9QQVRIPSIkKGh0bWxkaXJfU1EpIicgXAotCSctREdJVF9NQU5fUEFUSD0iJChtYW5kaXJfU1EpIicgXAotCSctREdJVF9JTkZPX1BBVEg9IiQoaW5mb2Rpcl9TUSkiJworCSctREdJVF9IVE1MX1BBVEg9IiQoaHRtbGRpcl9yZWxhdGl2ZV9TUSkiJyBcCisJJy1ER0lUX01BTl9QQVRIPSIkKG1hbmRpcl9yZWxhdGl2ZV9TUSkiJyBcCisJJy1ER0lUX0lORk9fUEFUSD0iJChpbmZvZGlyX3JlbGF0aXZlX1NRKSInCiAKIHZlcnNpb24uc3AgdmVyc2lvbi5zIHZlcnNpb24ubzogR0lULVZFUlNJT04tRklMRSBHSVQtVVNFUi1BR0VOVAogdmVyc2lvbi5zcCB2ZXJzaW9uLnMgdmVyc2lvbi5vOiBFWFRSQV9DUFBGTEFHUyA9IFwKQEAgLTIxNTYsOSArMTczNSw5IEBACiAKICQoQlVJTFRfSU5TKTogZ2l0JFgKIAkkKFFVSUVUX0JVSUxUX0lOKSQoUk0pICRAICYmIFwKLQlsbiBnaXQkWCAkQCAyPi9kZXYvbnVsbCB8fCBcCi0JbG4gLXMgZ2l0JFggJEAgMj4vZGV2L251bGwgfHwgXAotCWNwIGdpdCRYICRACisJbG4gJDwgJEAgMj4vZGV2L251bGwgfHwgXAorCWxuIC1zICQ8ICRAIDI+L2Rldi9udWxsIHx8IFwKKwljcCAkPCAkQAogCiBjb21tb24tY21kcy5oOiAuL2dlbmVyYXRlLWNtZGxpc3Quc2ggY29tbWFuZC1saXN0LnR4dAogCkBAIC0yMTg1LDcgKzE3NjQsNyBAQAogR0lULVNDUklQVC1ERUZJTkVTOiBGT1JDRQogCUBGTEFHUz0nJChTQ1JJUFRfREVGSU5FUyknOyBcCiAJICAgIGlmIHRlc3QgeCIkJEZMQUdTIiAhPSB4ImBjYXQgJEAgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBzY3JpcHQgcGFyYW1ldGVycyI7IFwKKwkJZWNobyA+JjIgIiAgICAqIG5ldyBzY3JpcHQgcGFyYW1ldGVycyI7IFwKIAkJZWNobyAiJCRGTEFHUyIgPiRAOyBcCiAgICAgICAgICAgICBmaQogCkBAIC0yMTk5LDYgKzE3NzgsMTEgQEAKIAkkKFFVSUVUX0dFTikkKGNtZF9tdW5nZV9zY3JpcHQpICYmIFwKIAltdiAkQCsgJEAKIAorZ2l0LnJlczogZ2l0LnJjIEdJVC1WRVJTSU9OLUZJTEUKKwkkKFFVSUVUX1JDKSQoUkMpIFwKKwkgICQoam9pbiAtRE1BSk9SPSAtRE1JTk9SPSAtRFBBVENIPSwgJCh3b3JkbGlzdCAxLDMsJChzdWJzdCAtLCAsJChzdWJzdCAuLCAsJChHSVRfVkVSU0lPTikpKSkpIFwKKwkgIC1ER0lUX1ZFUlNJT049IlxcXCIkKEdJVF9WRVJTSU9OKVxcXCIiICQ8IC1vICRACisKIGlmbmRlZiBOT19QRVJMCiAkKHBhdHN1YnN0ICUucGVybCwlLCQoU0NSSVBUX1BFUkwpKTogcGVybC9wZXJsLm1hawogCkBAIC0yMjIzLDcgKzE4MDcsNyBAQAogCSAgICAtZSAnCXgnIFwKIAkgICAgLWUgJ30nIFwKIAkgICAgLWUgJ3MvQEBHSVRfVkVSU0lPTkBALyQoR0lUX1ZFUlNJT04pL2cnIFwKLQkgICAgJEAucGVybCA+JEArICYmIFwKKwkgICAgJDwgPiRAKyAmJiBcCiAJY2htb2QgK3ggJEArICYmIFwKIAltdiAkQCsgJEAKIApAQCAtMjI0Nyw4ICsxODMxLDggQEAKIGVuZGlmICMgTk9fUEVSTAogCiBpZm5kZWYgTk9fUFlUSE9OCi0kKHBhdHN1YnN0ICUucHksJSwkKFNDUklQVF9QWVRIT04pKTogR0lULUNGTEFHUyBHSVQtUFJFRklYIEdJVC1QWVRIT04tVkFSUwotJChwYXRzdWJzdCAlLnB5LCUsJChTQ1JJUFRfUFlUSE9OKSk6ICUgOiAlLnB5CiskKFNDUklQVF9QWVRIT05fR0VOKTogR0lULUNGTEFHUyBHSVQtUFJFRklYIEdJVC1QWVRIT04tVkFSUworJChTQ1JJUFRfUFlUSE9OX0dFTik6ICUgOiAlLnB5CiAJJChRVUlFVF9HRU4pJChSTSkgJEAgJEArICYmIFwKIAlJTlNUTElCRElSPWBNQUtFRkxBR1M9ICQoTUFLRSkgLUMgZ2l0X3JlbW90ZV9oZWxwZXJzIC1zIFwKIAkJLS1uby1wcmludC1kaXJlY3RvcnkgcHJlZml4PSckKHByZWZpeF9TUSknIERFU1RESVI9JyQoREVTVERJUl9TUSknIFwKQEAgLTIyNTYsMTEgKzE4NDAsMTEgQEAKIAlzZWQgLWUgJzFzfCMhLipweXRob258IyEkKFBZVEhPTl9QQVRIX1NRKXwnIFwKIAkgICAgLWUgJ3N8XChvc1wuZ2V0ZW52KCJHSVRQWVRIT05MSUIiXClbXildKil8XDEsIkBASU5TVExJQkRJUkBAIil8JyBcCiAJICAgIC1lICdzfEBASU5TVExJQkRJUkBAfCciJCRJTlNUTElCRElSIid8ZycgXAotCSAgICAkQC5weSA+JEArICYmIFwKKwkgICAgJDwgPiRAKyAmJiBcCiAJY2htb2QgK3ggJEArICYmIFwKIAltdiAkQCsgJEAKIGVsc2UgIyBOT19QWVRIT04KLSQocGF0c3Vic3QgJS5weSwlLCQoU0NSSVBUX1BZVEhPTikpOiAlIDogdW5pbXBsZW1lbnRlZC5zaAorJChTQ1JJUFRfUFlUSE9OX0dFTik6ICUgOiB1bmltcGxlbWVudGVkLnNoCiAJJChRVUlFVF9HRU4pJChSTSkgJEAgJEArICYmIFwKIAlzZWQgLWUgJzFzfCMhLiovc2h8IyEkKFNIRUxMX1BBVEhfU1EpfCcgXAogCSAgICAtZSAnc3xAQFJFQVNPTkBAfE5PX1BZVEhPTj0kKE5PX1BZVEhPTil8ZycgXApAQCAtMjQ1NSw2ICsyMDM5LDcgQEAKIGlmZGVmIFVTRV9ORURfQUxMT0NBVE9SCiBjb21wYXQvbmVkbWFsbG9jL25lZG1hbGxvYy5zcCBjb21wYXQvbmVkbWFsbG9jL25lZG1hbGxvYy5vOiBFWFRSQV9DUFBGTEFHUyA9IFwKIAktRE5ERUJVRyAtRE9WRVJSSURFX1NUUkRVUCAtRFJFUExBQ0VfU1lTVEVNX0FMTE9DQVRPUgorY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2Muc3A6IFNQQVJTRV9GTEFHUyArPSAtV25vLW5vbi1wb2ludGVyLW51bGwKIGVuZGlmCiAKIGdpdC0lJFg6ICUubyBHSVQtTERGTEFHUyAkKEdJVExJQlMpCkBAIC0yNDg2LDEzICsyMDcxLDEzIEBACiAJCSQoTElCUykgJChDVVJMX0xJQkNVUkwpICQoRVhQQVRfTElCRVhQQVQpCiAKICQoTElCX0ZJTEUpOiAkKExJQl9PQkpTKQotCSQoUVVJRVRfQVIpJChSTSkgJEAgJiYgJChBUikgcmNzICRAICQoTElCX09CSlMpCisJJChRVUlFVF9BUikkKFJNKSAkQCAmJiAkKEFSKSByY3MgJEAgJF4KIAogJChYRElGRl9MSUIpOiAkKFhESUZGX09CSlMpCi0JJChRVUlFVF9BUikkKFJNKSAkQCAmJiAkKEFSKSByY3MgJEAgJChYRElGRl9PQkpTKQorCSQoUVVJRVRfQVIpJChSTSkgJEAgJiYgJChBUikgcmNzICRAICReCiAKICQoVkNTU1ZOX0xJQik6ICQoVkNTU1ZOX09CSlMpCi0JJChRVUlFVF9BUikkKFJNKSAkQCAmJiAkKEFSKSByY3MgJEAgJChWQ1NTVk5fT0JKUykKKwkkKFFVSUVUX0FSKSQoUk0pICRAICYmICQoQVIpIHJjcyAkQCAkXgogCiBleHBvcnQgREVGQVVMVF9FRElUT1IgREVGQVVMVF9QQUdFUgogCkBAIC0yNTc0LDcgKzIxNTksNyBAQAogR0lULVBSRUZJWDogRk9SQ0UKIAlARkxBR1M9JyQoVFJBQ0tfUFJFRklYKSc7IFwKIAlpZiB0ZXN0IHgiJCRGTEFHUyIgIT0geCJgY2F0IEdJVC1QUkVGSVggMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBwcmVmaXggZmxhZ3MiOyBcCisJCWVjaG8gPiYyICIgICAgKiBuZXcgcHJlZml4IGZsYWdzIjsgXAogCQllY2hvICIkJEZMQUdTIiA+R0lULVBSRUZJWDsgXAogCWZpCiAKQEAgLTI1ODMsNyArMjE2OCw3IEBACiBHSVQtQ0ZMQUdTOiBGT1JDRQogCUBGTEFHUz0nJChUUkFDS19DRkxBR1MpJzsgXAogCSAgICBpZiB0ZXN0IHgiJCRGTEFHUyIgIT0geCJgY2F0IEdJVC1DRkxBR1MgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBidWlsZCBmbGFncyI7IFwKKwkJZWNobyA+JjIgIiAgICAqIG5ldyBidWlsZCBmbGFncyI7IFwKIAkJZWNobyAiJCRGTEFHUyIgPkdJVC1DRkxBR1M7IFwKICAgICAgICAgICAgIGZpCiAKQEAgLTI1OTIsNyArMjE3Nyw3IEBACiBHSVQtTERGTEFHUzogRk9SQ0UKIAlARkxBR1M9JyQoVFJBQ0tfTERGTEFHUyknOyBcCiAJICAgIGlmIHRlc3QgeCIkJEZMQUdTIiAhPSB4ImBjYXQgR0lULUxERkxBR1MgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBsaW5rIGZsYWdzIjsgXAorCQllY2hvID4mMiAiICAgICogbmV3IGxpbmsgZmxhZ3MiOyBcCiAJCWVjaG8gIiQkRkxBR1MiID5HSVQtTERGTEFHUzsgXAogICAgICAgICAgICAgZmkKIApAQCAtMjYxMCw2ICsyMTk1LDkgQEAKIAlAZWNobyBOT19QRVJMPVwnJyQoc3Vic3QgJywnXCcnLCQoc3Vic3QgJywnXCcnLCQoTk9fUEVSTCkpKSdcJyA+PiRACiAJQGVjaG8gTk9fUFlUSE9OPVwnJyQoc3Vic3QgJywnXCcnLCQoc3Vic3QgJywnXCcnLCQoTk9fUFlUSE9OKSkpJ1wnID4+JEAKIAlAZWNobyBOT19VTklYX1NPQ0tFVFM9XCcnJChzdWJzdCAnLCdcJycsJChzdWJzdCAnLCdcJycsJChOT19VTklYX1NPQ0tFVFMpKSknXCcgPj4kQAoraWZkZWYgVEVTVF9PVVRQVVRfRElSRUNUT1JZCisJQGVjaG8gVEVTVF9PVVRQVVRfRElSRUNUT1JZPVwnJyQoc3Vic3QgJywnXCcnLCQoc3Vic3QgJywnXCcnLCQoVEVTVF9PVVRQVVRfRElSRUNUT1JZKSkpJ1wnID4+JEAKK2VuZGlmCiBpZmRlZiBHSVRfVEVTVF9PUFRTCiAJQGVjaG8gR0lUX1RFU1RfT1BUUz1cJyckKHN1YnN0ICcsJ1wnJywkKHN1YnN0ICcsJ1wnJywkKEdJVF9URVNUX09QVFMpKSknXCcgPj4kQAogZW5kaWYKQEAgLTI2MzQsMTggKzIyMjIsNiBAQAogCUBlY2hvIEdJVF9QRVJGX01BS0VfT1BUUz1cJyckKHN1YnN0ICcsJ1wnJywkKHN1YnN0ICcsJ1wnJywkKEdJVF9QRVJGX01BS0VfT1BUUykpKSdcJyA+PiRACiBlbmRpZgogCi0jIyMgRGV0ZWN0IFRjay9UayBpbnRlcnByZXRlciBwYXRoIGNoYW5nZXMKLWlmbmRlZiBOT19UQ0xUSwotVFJBQ0tfVkFSUyA9ICQoc3Vic3QgJywnXCcnLC1EVENMVEtfUEFUSD0nJChUQ0xUS19QQVRIX1NRKScpCi0KLUdJVC1HVUktVkFSUzogRk9SQ0UKLQlAVkFSUz0nJChUUkFDS19WQVJTKSc7IFwKLQkgICAgaWYgdGVzdCB4IiQkVkFSUyIgIT0geCJgY2F0ICRAIDI+L2Rldi9udWxsYCIgOyB0aGVuIFwKLQkJZWNobyAxPiYyICIgICAgKiBuZXcgVGNsL1RrIGludGVycHJldGVyIGxvY2F0aW9uIjsgXAotCQllY2hvICIkJFZBUlMiID4kQDsgXAotICAgICAgICAgICAgZmkKLWVuZGlmCi0KICMjIyBEZXRlY3QgUHl0aG9uIGludGVycHJldGVyIHBhdGggY2hhbmdlcwogaWZuZGVmIE5PX1BZVEhPTgogVFJBQ0tfUFlUSE9OID0gJChzdWJzdCAnLCdcJycsLURQWVRIT05fUEFUSD0nJChQWVRIT05fUEFUSF9TUSknKQpAQCAtMjY1Myw3ICsyMjI5LDcgQEAKIEdJVC1QWVRIT04tVkFSUzogRk9SQ0UKIAlAVkFSUz0nJChUUkFDS19QWVRIT04pJzsgXAogCSAgICBpZiB0ZXN0IHgiJCRWQVJTIiAhPSB4ImBjYXQgJEAgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBQeXRob24gaW50ZXJwcmV0ZXIgbG9jYXRpb24iOyBcCisJCWVjaG8gPiYyICIgICAgKiBuZXcgUHl0aG9uIGludGVycHJldGVyIGxvY2F0aW9uIjsgXAogCQllY2hvICIkJFZBUlMiID4kQDsgXAogICAgICAgICAgICAgZmkKIGVuZGlmCkBAIC0yNjYxLDYgKzIyMzcsNyBAQAogdGVzdF9iaW5kaXJfcHJvZ3JhbXMgOj0gJChwYXRzdWJzdCAlLGJpbi13cmFwcGVycy8lLCQoQklORElSX1BST0dSQU1TX05FRURfWCkgJChCSU5ESVJfUFJPR1JBTVNfTk9fWCkgJChURVNUX1BST0dSQU1TX05FRURfWCkpCiAKIGFsbDo6ICQoVEVTVF9QUk9HUkFNUykgJCh0ZXN0X2JpbmRpcl9wcm9ncmFtcykKK2FsbDo6ICQoTk9fSU5TVEFMTCkKIAogYmluLXdyYXBwZXJzLyU6IHdyYXAtZm9yLWJpbi5zaAogCUBta2RpciAtcCBiaW4td3JhcHBlcnMKQEAgLTI5MDYsMTMgKzI0ODMsMTIgQEAKIAkkKFJNKSAkKGFkZHN1ZmZpeCAqLmdjZGEsJChhZGRwcmVmaXggJChQUk9GSUxFX0RJUikvLCAkKG9iamVjdF9kaXJzKSkpCiAJJChSTSkgJChhZGRzdWZmaXggKi5nY25vLCQoYWRkcHJlZml4ICQoUFJPRklMRV9ESVIpLywgJChvYmplY3RfZGlycykpKQogCi1jbGVhbjogcHJvZmlsZS1jbGVhbgotCSQoUk0pICoubyBibG9jay1zaGExLyoubyBwcGMvKi5vIGNvbXBhdC8qLm8gY29tcGF0LyovKi5vIHhkaWZmLyoubyB2Y3Mtc3ZuLyoubyBcCitjbGVhbjogcHJvZmlsZS1jbGVhbiBjb3ZlcmFnZS1jbGVhbgorCSQoUk0pICoubyAqLnJlcyBibG9jay1zaGExLyoubyBwcGMvKi5vIGNvbXBhdC8qLm8gY29tcGF0LyovKi5vIHhkaWZmLyoubyB2Y3Mtc3ZuLyoubyBcCiAJCWJ1aWx0aW4vKi5vICQoTElCX0ZJTEUpICQoWERJRkZfTElCKSAkKFZDU1NWTl9MSUIpCiAJJChSTSkgJChBTExfUFJPR1JBTVMpICQoU0NSSVBUX0xJQikgJChCVUlMVF9JTlMpIGdpdCRYCi0JJChSTSkgJChURVNUX1BST0dSQU1TKQotCSQoUk0pIC1yIGJpbi13cmFwcGVycwotCSQoUk0pIC1yICQoZGVwX2RpcnMpCisJJChSTSkgJChURVNUX1BST0dSQU1TKSAkKE5PX0lOU1RBTEwpCisJJChSTSkgLXIgYmluLXdyYXBwZXJzICQoZGVwX2RpcnMpCiAJJChSTSkgLXIgcG8vYnVpbGQvCiAJJChSTSkgKi5zcGVjICoucHljICoucHlvICovKi5weWMgKi8qLnB5byBjb21tb24tY21kcy5oICQoRVRBR1NfVEFSR0VUKSB0YWdzIGNzY29wZSoKIAkkKFJNKSAtciAkKEdJVF9UQVJOQU1FKSAuZG9jLXRtcC1kaXIKQEAgLTI5MzIsNyArMjUwOCw3IEBACiAJJChNQUtFKSAtQyBnaXRrLWdpdCBjbGVhbgogCSQoTUFLRSkgLUMgZ2l0LWd1aSBjbGVhbgogZW5kaWYKLQkkKFJNKSBHSVQtVkVSU0lPTi1GSUxFIEdJVC1DRkxBR1MgR0lULUxERkxBR1MgR0lULUdVSS1WQVJTIEdJVC1CVUlMRC1PUFRJT05TCisJJChSTSkgR0lULVZFUlNJT04tRklMRSBHSVQtQ0ZMQUdTIEdJVC1MREZMQUdTIEdJVC1CVUlMRC1PUFRJT05TCiAJJChSTSkgR0lULVVTRVItQUdFTlQgR0lULVBSRUZJWCBHSVQtU0NSSVBULURFRklORVMgR0lULVBZVEhPTi1WQVJTCiAKIC5QSE9OWTogYWxsIGluc3RhbGwgcHJvZmlsZS1jbGVhbiBjbGVhbiBzdHJpcApAQCAtMjk4OCwyOSArMjU2NCwzNCBAQAogCiAjIyMgVGVzdCBzdWl0ZSBjb3ZlcmFnZSB0ZXN0aW5nCiAjCi0uUEhPTlk6IGNvdmVyYWdlIGNvdmVyYWdlLWNsZWFuIGNvdmVyYWdlLWJ1aWxkIGNvdmVyYWdlLXJlcG9ydAorLlBIT05ZOiBjb3ZlcmFnZSBjb3ZlcmFnZS1jbGVhbiBjb3ZlcmFnZS1jb21waWxlIGNvdmVyYWdlLXRlc3QgY292ZXJhZ2UtcmVwb3J0CisuUEhPTlk6IGNvdmVyYWdlLWNsZWFuLXJlc3VsdHMKIAogY292ZXJhZ2U6Ci0JJChNQUtFKSBjb3ZlcmFnZS1idWlsZAotCSQoTUFLRSkgY292ZXJhZ2UtcmVwb3J0CisJJChNQUtFKSBjb3ZlcmFnZS10ZXN0CisJJChNQUtFKSBjb3ZlcmFnZS11bnRlc3RlZC1mdW5jdGlvbnMKIAogb2JqZWN0X2RpcnMgOj0gJChzb3J0ICQoZGlyICQoT0JKRUNUUykpKQotY292ZXJhZ2UtY2xlYW46Citjb3ZlcmFnZS1jbGVhbi1yZXN1bHRzOgogCSQoUk0pICQoYWRkc3VmZml4ICouZ2NvdiwkKG9iamVjdF9kaXJzKSkKIAkkKFJNKSAkKGFkZHN1ZmZpeCAqLmdjZGEsJChvYmplY3RfZGlycykpCi0JJChSTSkgJChhZGRzdWZmaXggKi5nY25vLCQob2JqZWN0X2RpcnMpKQogCSQoUk0pIGNvdmVyYWdlLXVudGVzdGVkLWZ1bmN0aW9ucwogCSQoUk0pIC1yIGNvdmVyX2RiLwogCSQoUk0pIC1yIGNvdmVyX2RiX2h0bWwvCiAKK2NvdmVyYWdlLWNsZWFuOiBjb3ZlcmFnZS1jbGVhbi1yZXN1bHRzCisJJChSTSkgJChhZGRzdWZmaXggKi5nY25vLCQob2JqZWN0X2RpcnMpKQorCiBDT1ZFUkFHRV9DRkxBR1MgPSAkKENGTEFHUykgLU8wIC1mdGVzdC1jb3ZlcmFnZSAtZnByb2ZpbGUtYXJjcwogQ09WRVJBR0VfTERGTEFHUyA9ICQoQ0ZMQUdTKSAgLU8wIC1sZ2NvdgogR0NPVkZMQUdTID0gLS1wcmVzZXJ2ZS1wYXRocyAtLWJyYW5jaC1wcm9iYWJpbGl0aWVzIC0tYWxsLWJsb2NrcwogCi1jb3ZlcmFnZS1idWlsZDogY292ZXJhZ2UtY2xlYW4KK2NvdmVyYWdlLWNvbXBpbGU6CiAJJChNQUtFKSBDRkxBR1M9IiQoQ09WRVJBR0VfQ0ZMQUdTKSIgTERGTEFHUz0iJChDT1ZFUkFHRV9MREZMQUdTKSIgYWxsCisKK2NvdmVyYWdlLXRlc3Q6IGNvdmVyYWdlLWNsZWFuLXJlc3VsdHMgY292ZXJhZ2UtY29tcGlsZQogCSQoTUFLRSkgQ0ZMQUdTPSIkKENPVkVSQUdFX0NGTEFHUykiIExERkxBR1M9IiQoQ09WRVJBR0VfTERGTEFHUykiIFwKLQkJLWoxIHRlc3QKKwkJREVGQVVMVF9URVNUX1RBUkdFVD10ZXN0IC1qMSB0ZXN0CiAKIGNvdmVyYWdlLXJlcG9ydDoKIAkkKFFVSUVUX0dDT1YpZm9yIGRpciBpbiAkKG9iamVjdF9kaXJzKTsgZG8gXApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGE5NjBjYTguLjE1YThlMjMgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNiArMSw2IEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLQlHSVQgLSB0aGUgc3R1cGlkIGNvbnRlbnQgdHJhY2tlcgorCUdpdCAtIHRoZSBzdHVwaWQgY29udGVudCB0cmFja2VyCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIApkaWZmIC0tZ2l0IGEvUmVsTm90ZXMgYi9SZWxOb3RlcwppbmRleCA0ZjFkMmNiLi5mY2U5OWZiIDEyMDAwMAotLS0gYS9SZWxOb3RlcworKysgYi9SZWxOb3RlcwpAQCAtMSArMSBAQAotRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMS42LnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjQudHh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYWJzcGF0aC5jIGIvYWJzcGF0aC5jCmluZGV4IDQwY2RjNDYuLjY0YWRiZTIgMTAwNjQ0Ci0tLSBhL2Fic3BhdGguYworKysgYi9hYnNwYXRoLmMKQEAgLTIxNiw3ICsyMTYsNyBAQAogY29uc3QgY2hhciAqcHJlZml4X2ZpbGVuYW1lKGNvbnN0IGNoYXIgKnBmeCwgaW50IHBmeF9sZW4sIGNvbnN0IGNoYXIgKmFyZykKIHsKIAlzdGF0aWMgY2hhciBwYXRoW1BBVEhfTUFYXTsKLSNpZm5kZWYgV0lOMzIKKyNpZm5kZWYgR0lUX1dJTkRPV1NfTkFUSVZFCiAJaWYgKCFwZnhfbGVuIHx8IGlzX2Fic29sdXRlX3BhdGgoYXJnKSkKIAkJcmV0dXJuIGFyZzsKIAltZW1jcHkocGF0aCwgcGZ4LCBwZnhfbGVuKTsKZGlmZiAtLWdpdCBhL2FkdmljZS5jIGIvYWR2aWNlLmMKaW5kZXggZWRmYmQ0YS4uMmE1MjA5OCAxMDA2NDQKLS0tIGEvYWR2aWNlLmMKKysrIGIvYWR2aWNlLmMKQEAgLTEsMjggKzEsNDUgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogCi1pbnQgYWR2aWNlX3B1c2hfbm9uZmFzdGZvcndhcmQgPSAxOworaW50IGFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCA9IDE7CiBpbnQgYWR2aWNlX3B1c2hfbm9uX2ZmX2N1cnJlbnQgPSAxOwogaW50IGFkdmljZV9wdXNoX25vbl9mZl9kZWZhdWx0ID0gMTsKIGludCBhZHZpY2VfcHVzaF9ub25fZmZfbWF0Y2hpbmcgPSAxOworaW50IGFkdmljZV9wdXNoX2FscmVhZHlfZXhpc3RzID0gMTsKK2ludCBhZHZpY2VfcHVzaF9mZXRjaF9maXJzdCA9IDE7CitpbnQgYWR2aWNlX3B1c2hfbmVlZHNfZm9yY2UgPSAxOwogaW50IGFkdmljZV9zdGF0dXNfaGludHMgPSAxOworaW50IGFkdmljZV9zdGF0dXNfdV9vcHRpb24gPSAxOwogaW50IGFkdmljZV9jb21taXRfYmVmb3JlX21lcmdlID0gMTsKIGludCBhZHZpY2VfcmVzb2x2ZV9jb25mbGljdCA9IDE7CiBpbnQgYWR2aWNlX2ltcGxpY2l0X2lkZW50aXR5ID0gMTsKIGludCBhZHZpY2VfZGV0YWNoZWRfaGVhZCA9IDE7CitpbnQgYWR2aWNlX3NldF91cHN0cmVhbV9mYWlsdXJlID0gMTsKK2ludCBhZHZpY2Vfb2JqZWN0X25hbWVfd2FybmluZyA9IDE7CitpbnQgYWR2aWNlX3JtX2hpbnRzID0gMTsKIAogc3RhdGljIHN0cnVjdCB7CiAJY29uc3QgY2hhciAqbmFtZTsKIAlpbnQgKnByZWZlcmVuY2U7CiB9IGFkdmljZV9jb25maWdbXSA9IHsKLQl7ICJwdXNobm9uZmFzdGZvcndhcmQiLCAmYWR2aWNlX3B1c2hfbm9uZmFzdGZvcndhcmQgfSwKKwl7ICJwdXNodXBkYXRlcmVqZWN0ZWQiLCAmYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkIH0sCiAJeyAicHVzaG5vbmZmY3VycmVudCIsICZhZHZpY2VfcHVzaF9ub25fZmZfY3VycmVudCB9LAogCXsgInB1c2hub25mZmRlZmF1bHQiLCAmYWR2aWNlX3B1c2hfbm9uX2ZmX2RlZmF1bHQgfSwKIAl7ICJwdXNobm9uZmZtYXRjaGluZyIsICZhZHZpY2VfcHVzaF9ub25fZmZfbWF0Y2hpbmcgfSwKKwl7ICJwdXNoYWxyZWFkeWV4aXN0cyIsICZhZHZpY2VfcHVzaF9hbHJlYWR5X2V4aXN0cyB9LAorCXsgInB1c2hmZXRjaGZpcnN0IiwgJmFkdmljZV9wdXNoX2ZldGNoX2ZpcnN0IH0sCisJeyAicHVzaG5lZWRzZm9yY2UiLCAmYWR2aWNlX3B1c2hfbmVlZHNfZm9yY2UgfSwKIAl7ICJzdGF0dXNoaW50cyIsICZhZHZpY2Vfc3RhdHVzX2hpbnRzIH0sCisJeyAic3RhdHVzdW9wdGlvbiIsICZhZHZpY2Vfc3RhdHVzX3Vfb3B0aW9uIH0sCiAJeyAiY29tbWl0YmVmb3JlbWVyZ2UiLCAmYWR2aWNlX2NvbW1pdF9iZWZvcmVfbWVyZ2UgfSwKIAl7ICJyZXNvbHZlY29uZmxpY3QiLCAmYWR2aWNlX3Jlc29sdmVfY29uZmxpY3QgfSwKIAl7ICJpbXBsaWNpdGlkZW50aXR5IiwgJmFkdmljZV9pbXBsaWNpdF9pZGVudGl0eSB9LAogCXsgImRldGFjaGVkaGVhZCIsICZhZHZpY2VfZGV0YWNoZWRfaGVhZCB9LAorCXsgInNldHVwc3RyZWFtZmFpbHVyZSIsICZhZHZpY2Vfc2V0X3Vwc3RyZWFtX2ZhaWx1cmUgfSwKKwl7ICJvYmplY3RfbmFtZV93YXJuaW5nIiwgJmFkdmljZV9vYmplY3RfbmFtZV93YXJuaW5nIH0sCisJeyAicm1oaW50cyIsICZhZHZpY2Vfcm1faGludHMgfSwKKworCS8qIG1ha2UgdGhpcyBhbiBhbGlhcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqLworCXsgInB1c2hub25mYXN0Zm9yd2FyZCIsICZhZHZpY2VfcHVzaF91cGRhdGVfcmVqZWN0ZWQgfQogfTsKIAogdm9pZCBhZHZpc2UoY29uc3QgY2hhciAqYWR2aWNlLCAuLi4pCmRpZmYgLS1naXQgYS9hZHZpY2UuaCBiL2FkdmljZS5oCmluZGV4IGYzY2RiYmYuLjkzYTdkMTEgMTAwNjQ0Ci0tLSBhL2FkdmljZS5oCisrKyBiL2FkdmljZS5oCkBAIC0zLDE1ICszLDIyIEBACiAKICNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKIAotZXh0ZXJuIGludCBhZHZpY2VfcHVzaF9ub25mYXN0Zm9yd2FyZDsKK2V4dGVybiBpbnQgYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkOwogZXh0ZXJuIGludCBhZHZpY2VfcHVzaF9ub25fZmZfY3VycmVudDsKIGV4dGVybiBpbnQgYWR2aWNlX3B1c2hfbm9uX2ZmX2RlZmF1bHQ7CiBleHRlcm4gaW50IGFkdmljZV9wdXNoX25vbl9mZl9tYXRjaGluZzsKK2V4dGVybiBpbnQgYWR2aWNlX3B1c2hfYWxyZWFkeV9leGlzdHM7CitleHRlcm4gaW50IGFkdmljZV9wdXNoX2ZldGNoX2ZpcnN0OworZXh0ZXJuIGludCBhZHZpY2VfcHVzaF9uZWVkc19mb3JjZTsKIGV4dGVybiBpbnQgYWR2aWNlX3N0YXR1c19oaW50czsKK2V4dGVybiBpbnQgYWR2aWNlX3N0YXR1c191X29wdGlvbjsKIGV4dGVybiBpbnQgYWR2aWNlX2NvbW1pdF9iZWZvcmVfbWVyZ2U7CiBleHRlcm4gaW50IGFkdmljZV9yZXNvbHZlX2NvbmZsaWN0OwogZXh0ZXJuIGludCBhZHZpY2VfaW1wbGljaXRfaWRlbnRpdHk7CiBleHRlcm4gaW50IGFkdmljZV9kZXRhY2hlZF9oZWFkOworZXh0ZXJuIGludCBhZHZpY2Vfc2V0X3Vwc3RyZWFtX2ZhaWx1cmU7CitleHRlcm4gaW50IGFkdmljZV9vYmplY3RfbmFtZV93YXJuaW5nOworZXh0ZXJuIGludCBhZHZpY2Vfcm1faGludHM7CiAKIGludCBnaXRfZGVmYXVsdF9hZHZpY2VfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpOwogdm9pZCBhZHZpc2UoY29uc3QgY2hhciAqYWR2aWNlLCAuLi4pOwpkaWZmIC0tZ2l0IGEvYXJjaGl2ZS10YXIuYyBiL2FyY2hpdmUtdGFyLmMKaW5kZXggZDFjY2U0Ni4uNzE5YjYyOSAxMDA2NDQKLS0tIGEvYXJjaGl2ZS10YXIuYworKysgYi9hcmNoaXZlLXRhci5jCkBAIC0zMjcsMjAgKzMyNywxMiBAQAogc3RhdGljIGludCB0YXJfZmlsdGVyX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBhcmNoaXZlciAqYXI7Ci0JY29uc3QgY2hhciAqZG90OwogCWNvbnN0IGNoYXIgKm5hbWU7CiAJY29uc3QgY2hhciAqdHlwZTsKIAlpbnQgbmFtZWxlbjsKIAotCWlmIChwcmVmaXhjbXAodmFyLCAidGFyLiIpKQorCWlmIChwYXJzZV9jb25maWdfa2V5KHZhciwgInRhciIsICZuYW1lLCAmbmFtZWxlbiwgJnR5cGUpIDwgMCB8fCAhbmFtZSkKIAkJcmV0dXJuIDA7Ci0JZG90ID0gc3RycmNocih2YXIsICcuJyk7Ci0JaWYgKGRvdCA9PSB2YXIgKyA5KQotCQlyZXR1cm4gMDsKLQotCW5hbWUgPSB2YXIgKyA0OwotCW5hbWVsZW4gPSBkb3QgLSBuYW1lOwotCXR5cGUgPSBkb3QgKyAxOwogCiAJYXIgPSBmaW5kX3Rhcl9maWx0ZXIobmFtZSwgbmFtZWxlbik7CiAJaWYgKCFhcikgewpkaWZmIC0tZ2l0IGEvYXJjaGl2ZS16aXAuYyBiL2FyY2hpdmUtemlwLmMKaW5kZXggZDNhZWY1My4uNGJkZTAxOSAxMDA2NDQKLS0tIGEvYXJjaGl2ZS16aXAuYworKysgYi9hcmNoaXZlLXppcC5jCkBAIC0xMTEsOCArMTExLDkgQEAKIAlkZXN0WzNdID0gMHhmZiAmIChuID4+IDAzMCk7CiB9CiAKLXN0YXRpYyB2b2lkICp6bGliX2RlZmxhdGUodm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLAotCQlpbnQgY29tcHJlc3Npb25fbGV2ZWwsIHVuc2lnbmVkIGxvbmcgKmNvbXByZXNzZWRfc2l6ZSkKK3N0YXRpYyB2b2lkICp6bGliX2RlZmxhdGVfcmF3KHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJCSAgICAgIGludCBjb21wcmVzc2lvbl9sZXZlbCwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgKmNvbXByZXNzZWRfc2l6ZSkKIHsKIAlnaXRfenN0cmVhbSBzdHJlYW07CiAJdW5zaWduZWQgbG9uZyBtYXhzaXplOwpAQCAtMTIwLDcgKzEyMSw3IEBACiAJaW50IHJlc3VsdDsKIAogCW1lbXNldCgmc3RyZWFtLCAwLCBzaXplb2Yoc3RyZWFtKSk7Ci0JZ2l0X2RlZmxhdGVfaW5pdCgmc3RyZWFtLCBjb21wcmVzc2lvbl9sZXZlbCk7CisJZ2l0X2RlZmxhdGVfaW5pdF9yYXcoJnN0cmVhbSwgY29tcHJlc3Npb25fbGV2ZWwpOwogCW1heHNpemUgPSBnaXRfZGVmbGF0ZV9ib3VuZCgmc3RyZWFtLCBzaXplKTsKIAlidWZmZXIgPSB4bWFsbG9jKG1heHNpemUpOwogCkBAIC0yMzEsNyArMjMyLDYgQEAKIAkJc2l6ZSA9IDA7CiAJCWNvbXByZXNzZWRfc2l6ZSA9IDA7CiAJCWJ1ZmZlciA9IE5VTEw7Ci0JCXNpemUgPSAwOwogCX0gZWxzZSBpZiAoU19JU1JFRyhtb2RlKSB8fCBTX0lTTE5LKG1vZGUpKSB7CiAJCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgJnNpemUpOwogCkBAIC0yNDAsNyArMjQwLDYgQEAKIAkJCShtb2RlICYgMDExMSkgPyAoKG1vZGUpIDw8IDE2KSA6IDA7CiAJCWlmIChTX0lTUkVHKG1vZGUpICYmIGFyZ3MtPmNvbXByZXNzaW9uX2xldmVsICE9IDAgJiYgc2l6ZSA+IDApCiAJCQltZXRob2QgPSA4OwotCQljb21wcmVzc2VkX3NpemUgPSAobWV0aG9kID09IDApID8gc2l6ZSA6IDA7CiAKIAkJaWYgKFNfSVNSRUcobW9kZSkgJiYgdHlwZSA9PSBPQkpfQkxPQiAmJiAhYXJncy0+Y29udmVydCAmJgogCQkgICAgc2l6ZSA+IGJpZ19maWxlX3RocmVzaG9sZCkgewpAQCAtMjU5LDIwICsyNTgsMTggQEAKIAkJCWNyYyA9IGNyYzMyKGNyYywgYnVmZmVyLCBzaXplKTsKIAkJCW91dCA9IGJ1ZmZlcjsKIAkJfQorCQljb21wcmVzc2VkX3NpemUgPSAobWV0aG9kID09IDApID8gc2l6ZSA6IDA7CiAJfSBlbHNlIHsKIAkJcmV0dXJuIGVycm9yKCJ1bnN1cHBvcnRlZCBmaWxlIG1vZGU6IDAlbyAoU0hBMTogJXMpIiwgbW9kZSwKIAkJCQlzaGExX3RvX2hleChzaGExKSk7CiAJfQogCiAJaWYgKGJ1ZmZlciAmJiBtZXRob2QgPT0gOCkgewotCQlkZWZsYXRlZCA9IHpsaWJfZGVmbGF0ZShidWZmZXIsIHNpemUsIGFyZ3MtPmNvbXByZXNzaW9uX2xldmVsLAotCQkJCSZjb21wcmVzc2VkX3NpemUpOwotCQlpZiAoZGVmbGF0ZWQgJiYgY29tcHJlc3NlZF9zaXplIC0gNiA8IHNpemUpIHsKLQkJCS8qIFpMSUIgLS0+IHJhdyBjb21wcmVzc2VkIGRhdGEgKHNlZSBSRkMgMTk1MCkgKi8KLQkJCS8qIENNRiBhbmQgRkxHIC4uLiAqLwotCQkJb3V0ID0gKHVuc2lnbmVkIGNoYXIgKilkZWZsYXRlZCArIDI7Ci0JCQljb21wcmVzc2VkX3NpemUgLT0gNjsJLyogLi4uIGFuZCBBRExFUjMyICovCi0JCX0gZWxzZSB7CisJCW91dCA9IGRlZmxhdGVkID0gemxpYl9kZWZsYXRlX3JhdyhidWZmZXIsIHNpemUsCisJCQkJCQkgIGFyZ3MtPmNvbXByZXNzaW9uX2xldmVsLAorCQkJCQkJICAmY29tcHJlc3NlZF9zaXplKTsKKwkJaWYgKCFvdXQgfHwgY29tcHJlc3NlZF9zaXplID49IHNpemUpIHsKKwkJCW91dCA9IGJ1ZmZlcjsKIAkJCW1ldGhvZCA9IDA7CiAJCQljb21wcmVzc2VkX3NpemUgPSBzaXplOwogCQl9CkBAIC0zNTMsNyArMzUwLDcgQEAKIAkJdW5zaWduZWQgY2hhciBjb21wcmVzc2VkW1NUUkVBTV9CVUZGRVJfU0laRSAqIDJdOwogCiAJCW1lbXNldCgmenN0cmVhbSwgMCwgc2l6ZW9mKHpzdHJlYW0pKTsKLQkJZ2l0X2RlZmxhdGVfaW5pdCgmenN0cmVhbSwgYXJncy0+Y29tcHJlc3Npb25fbGV2ZWwpOworCQlnaXRfZGVmbGF0ZV9pbml0X3JhdygmenN0cmVhbSwgYXJncy0+Y29tcHJlc3Npb25fbGV2ZWwpOwogCiAJCWNvbXByZXNzZWRfc2l6ZSA9IDA7CiAJCXpzdHJlYW0ubmV4dF9vdXQgPSBjb21wcmVzc2VkOwpAQCAtMzcwLDEzICszNjcsMTAgQEAKIAkJCXJlc3VsdCA9IGdpdF9kZWZsYXRlKCZ6c3RyZWFtLCAwKTsKIAkJCWlmIChyZXN1bHQgIT0gWl9PSykKIAkJCQlkaWUoImRlZmxhdGUgZXJyb3IgKCVkKSIsIHJlc3VsdCk7Ci0JCQlvdXQgPSBjb21wcmVzc2VkOwotCQkJaWYgKCFjb21wcmVzc2VkX3NpemUpCi0JCQkJb3V0ICs9IDI7Ci0JCQlvdXRfbGVuID0genN0cmVhbS5uZXh0X291dCAtIG91dDsKKwkJCW91dF9sZW4gPSB6c3RyZWFtLm5leHRfb3V0IC0gY29tcHJlc3NlZDsKIAogCQkJaWYgKG91dF9sZW4gPiAwKSB7Ci0JCQkJd3JpdGVfb3JfZGllKDEsIG91dCwgb3V0X2xlbik7CisJCQkJd3JpdGVfb3JfZGllKDEsIGNvbXByZXNzZWQsIG91dF9sZW4pOwogCQkJCWNvbXByZXNzZWRfc2l6ZSArPSBvdXRfbGVuOwogCQkJCXpzdHJlYW0ubmV4dF9vdXQgPSBjb21wcmVzc2VkOwogCQkJCXpzdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZW9mKGNvbXByZXNzZWQpOwpAQCAtMzk0LDExICszODgsOCBAQAogCQkJZGllKCJkZWZsYXRlIGVycm9yICglZCkiLCByZXN1bHQpOwogCiAJCWdpdF9kZWZsYXRlX2VuZCgmenN0cmVhbSk7Ci0JCW91dCA9IGNvbXByZXNzZWQ7Ci0JCWlmICghY29tcHJlc3NlZF9zaXplKQotCQkJb3V0ICs9IDI7Ci0JCW91dF9sZW4gPSB6c3RyZWFtLm5leHRfb3V0IC0gb3V0IC0gNDsKLQkJd3JpdGVfb3JfZGllKDEsIG91dCwgb3V0X2xlbik7CisJCW91dF9sZW4gPSB6c3RyZWFtLm5leHRfb3V0IC0gY29tcHJlc3NlZDsKKwkJd3JpdGVfb3JfZGllKDEsIGNvbXByZXNzZWQsIG91dF9sZW4pOwogCQljb21wcmVzc2VkX3NpemUgKz0gb3V0X2xlbjsKIAkJemlwX29mZnNldCArPSBjb21wcmVzc2VkX3NpemU7CiAKZGlmZiAtLWdpdCBhL2FyY2hpdmUuYyBiL2FyY2hpdmUuYwppbmRleCA5M2UwMGJiLi5kMjU0ZmE1IDEwMDY0NAotLS0gYS9hcmNoaXZlLmMKKysrIGIvYXJjaGl2ZS5jCkBAIC0yMzQsNyArMjM0LDcgQEAKIAlhcl9hcmdzLT5wYXRoc3BlYyA9IHBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKCIiLCBwYXRoc3BlYyk7CiAJaWYgKHBhdGhzcGVjKSB7CiAJCXdoaWxlICgqcGF0aHNwZWMpIHsKLQkJCWlmICghcGF0aF9leGlzdHMoYXJfYXJncy0+dHJlZSwgKnBhdGhzcGVjKSkKKwkJCWlmICgqKnBhdGhzcGVjICYmICFwYXRoX2V4aXN0cyhhcl9hcmdzLT50cmVlLCAqcGF0aHNwZWMpKQogCQkJCWRpZSgicGF0aCBub3QgZm91bmQ6ICVzIiwgKnBhdGhzcGVjKTsKIAkJCXBhdGhzcGVjKys7CiAJCX0KZGlmZiAtLWdpdCBhL2F0dHIuYyBiL2F0dHIuYwppbmRleCAyM2JlNGFiLi4wZTc3NGM2IDEwMDY0NAotLS0gYS9hdHRyLmMKKysrIGIvYXR0ci5jCkBAIC0yODYsNyArMjg2LDcgQEAKICAqIChyZWFkaW5nIHRoZSBmaWxlIGZyb20gdG9wIHRvIGJvdHRvbSksIC5naXRhdHRyaWJ1dGUgb2YgdGhlIHJvb3QKICAqIGRpcmVjdG9yeSAoYWdhaW4sIHJlYWRpbmcgdGhlIGZpbGUgZnJvbSB0b3AgdG8gYm90dG9tKSBkb3duIHRvIHRoZQogICogY3VycmVudCBkaXJlY3RvcnksIGFuZCB0aGVuIHNjYW4gdGhlIGxpc3QgYmFja3dhcmRzIHRvIGZpbmQgdGhlIGZpcnN0IG1hdGNoLgotICogVGhpcyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHdoYXQgZXhjbHVkZWQoKSBkb2VzIGluIGRpci5jIHRvIGRlYWwgd2l0aAorICogVGhpcyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHdoYXQgaXNfZXhjbHVkZWQoKSBkb2VzIGluIGRpci5jIHRvIGRlYWwgd2l0aAogICogLmdpdGlnbm9yZQogICovCiAKQEAgLTM4MSw0NiArMzgxLDEzIEBACiAJcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIHZvaWQgKnJlYWRfaW5kZXhfZGF0YShjb25zdCBjaGFyICpwYXRoKQotewotCWludCBwb3MsIGxlbjsKLQl1bnNpZ25lZCBsb25nIHN6OwotCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKLQl2b2lkICpkYXRhOwotCXN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlID0gdXNlX2luZGV4ID8gdXNlX2luZGV4IDogJnRoZV9pbmRleDsKLQotCWxlbiA9IHN0cmxlbihwYXRoKTsKLQlwb3MgPSBpbmRleF9uYW1lX3Bvcyhpc3RhdGUsIHBhdGgsIGxlbik7Ci0JaWYgKHBvcyA8IDApIHsKLQkJLyoKLQkJICogV2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLCBpbiB3aGljaAotCQkgKiBjYXNlIHdlIHdvdWxkIHJlYWQgc3RhZ2UgIzIgKG91cnMpLgotCQkgKi8KLQkJaW50IGk7Ci0JCWZvciAoaSA9IC1wb3MgLSAxOwotCQkgICAgIChwb3MgPCAwICYmIGkgPCBpc3RhdGUtPmNhY2hlX25yICYmCi0JCSAgICAgICFzdHJjbXAoaXN0YXRlLT5jYWNoZVtpXS0+bmFtZSwgcGF0aCkpOwotCQkgICAgIGkrKykKLQkJCWlmIChjZV9zdGFnZShpc3RhdGUtPmNhY2hlW2ldKSA9PSAyKQotCQkJCXBvcyA9IGk7Ci0JfQotCWlmIChwb3MgPCAwKQotCQlyZXR1cm4gTlVMTDsKLQlkYXRhID0gcmVhZF9zaGExX2ZpbGUoaXN0YXRlLT5jYWNoZVtwb3NdLT5zaGExLCAmdHlwZSwgJnN6KTsKLQlpZiAoIWRhdGEgfHwgdHlwZSAhPSBPQkpfQkxPQikgewotCQlmcmVlKGRhdGEpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JcmV0dXJuIGRhdGE7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgYXR0cl9zdGFjayAqcmVhZF9hdHRyX2Zyb21faW5kZXgoY29uc3QgY2hhciAqcGF0aCwgaW50IG1hY3JvX29rKQogewogCXN0cnVjdCBhdHRyX3N0YWNrICpyZXM7CiAJY2hhciAqYnVmLCAqc3A7CiAJaW50IGxpbmVubyA9IDA7CiAKLQlidWYgPSByZWFkX2luZGV4X2RhdGEocGF0aCk7CisJYnVmID0gcmVhZF9ibG9iX2RhdGFfZnJvbV9pbmRleCh1c2VfaW5kZXggPyB1c2VfaW5kZXggOiAmdGhlX2luZGV4LCBwYXRoLCBOVUxMKTsKIAlpZiAoIWJ1ZikKIAkJcmV0dXJuIE5VTEw7CiAKZGlmZiAtLWdpdCBhL2Jpc2VjdC5jIGIvYmlzZWN0LmMKaW5kZXggYmQxYjdiNS4uNzFjMTk1OCAxMDA2NDQKLS0tIGEvYmlzZWN0LmMKKysrIGIvYmlzZWN0LmMKQEAgLTE1LDcgKzE1LDcgQEAKIHN0YXRpYyBzdHJ1Y3Qgc2hhMV9hcnJheSBnb29kX3JldnM7CiBzdGF0aWMgc3RydWN0IHNoYTFfYXJyYXkgc2tpcHBlZF9yZXZzOwogCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqY3VycmVudF9iYWRfc2hhMTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyICpjdXJyZW50X2JhZF9zaGExOwogCiBzdGF0aWMgY29uc3QgY2hhciAqYXJndl9jaGVja291dFtdID0geyJjaGVja291dCIsICItcSIsIE5VTEwsICItLSIsIE5VTEx9Owogc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3Zfc2hvd19icmFuY2hbXSA9IHsic2hvdy1icmFuY2giLCBOVUxMLCBOVUxMfTsKQEAgLTQwNCw3ICs0MDQsOCBAQAogCQkJaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQogewogCWlmICghc3RyY21wKHJlZm5hbWUsICJiYWQiKSkgewotCQljdXJyZW50X2JhZF9zaGExID0gc2hhMTsKKwkJY3VycmVudF9iYWRfc2hhMSA9IHhtYWxsb2MoMjApOworCQloYXNoY3B5KGN1cnJlbnRfYmFkX3NoYTEsIHNoYTEpOwogCX0gZWxzZSBpZiAoIXByZWZpeGNtcChyZWZuYW1lLCAiZ29vZC0iKSkgewogCQlzaGExX2FycmF5X2FwcGVuZCgmZ29vZF9yZXZzLCBzaGExKTsKIAl9IGVsc2UgaWYgKCFwcmVmaXhjbXAocmVmbmFtZSwgInNraXAtIikpIHsKQEAgLTUyNSw5ICs1MjYsOSBAQAogICogaXMgaW5jcmVhc2VkIGJ5IG9uZSBiZXR3ZWVuIGVhY2ggY2FsbCwgYnV0IHRoYXQgc2hvdWxkIG5vdCBtYXR0ZXIKICAqIGZvciB0aGlzIGFwcGxpY2F0aW9uLgogICovCi1zdGF0aWMgaW50IGdldF9wcm4oaW50IGNvdW50KSB7CitzdGF0aWMgdW5zaWduZWQgZ2V0X3Bybih1bnNpZ25lZCBjb3VudCkgewogCWNvdW50ID0gY291bnQgKiAxMTAzNTE1MjQ1ICsgMTIzNDU7Ci0JcmV0dXJuICgodW5zaWduZWQpKGNvdW50LzY1NTM2KSAlIFBSTl9NT0RVTE8pOworCXJldHVybiAoY291bnQvNjU1MzYpICUgUFJOX01PRFVMTzsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2JyYW5jaC5jIGIvYnJhbmNoLmMKaW5kZXggMmJlZjFlNy4uYzVjNjk4NCAxMDA2NDQKLS0tIGEvYnJhbmNoLmMKKysrIGIvYnJhbmNoLmMKQEAgLTU3LDcgKzU3LDcgQEAKIAlpZiAocmVtb3RlX2lzX2JyYW5jaAogCSAgICAmJiAhc3RyY21wKGxvY2FsLCBzaG9ydG5hbWUpCiAJICAgICYmICFvcmlnaW4pIHsKLQkJd2FybmluZygiTm90IHNldHRpbmcgYnJhbmNoICVzIGFzIGl0cyBvd24gdXBzdHJlYW0uIiwKKwkJd2FybmluZyhfKCJOb3Qgc2V0dGluZyBicmFuY2ggJXMgYXMgaXRzIG93biB1cHN0cmVhbS4iKSwKIAkJCWxvY2FsKTsKIAkJcmV0dXJuOwogCX0KQEAgLTc4LDI1ICs3OCwyNSBAQAogCiAJaWYgKGZsYWcgJiBCUkFOQ0hfQ09ORklHX1ZFUkJPU0UpIHsKIAkJaWYgKHJlbW90ZV9pc19icmFuY2ggJiYgb3JpZ2luKQotCQkJcHJpbnRmKHJlYmFzaW5nID8KLQkJCSAgICAgICAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMgYnkgcmViYXNpbmcuXG4iIDoKLQkJCSAgICAgICAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMuXG4iLAotCQkJICAgICAgIGxvY2FsLCBzaG9ydG5hbWUsIG9yaWdpbik7CisJCQlwcmludGZfbG4ocmViYXNpbmcgPworCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMgYnkgcmViYXNpbmcuIikgOgorCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMuIiksCisJCQkJICBsb2NhbCwgc2hvcnRuYW1lLCBvcmlnaW4pOwogCQllbHNlIGlmIChyZW1vdGVfaXNfYnJhbmNoICYmICFvcmlnaW4pCi0JCQlwcmludGYocmViYXNpbmcgPwotCQkJICAgICAgICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy5cbiIgOgotCQkJICAgICAgICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcy5cbiIsCi0JCQkgICAgICAgbG9jYWwsIHNob3J0bmFtZSk7CisJCQlwcmludGZfbG4ocmViYXNpbmcgPworCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMgYnkgcmViYXNpbmcuIikgOgorCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIiksCisJCQkJICBsb2NhbCwgc2hvcnRuYW1lKTsKIAkJZWxzZSBpZiAoIXJlbW90ZV9pc19icmFuY2ggJiYgb3JpZ2luKQotCQkJcHJpbnRmKHJlYmFzaW5nID8KLQkJCSAgICAgICAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzIGJ5IHJlYmFzaW5nLlxuIiA6Ci0JCQkgICAgICAgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcy5cbiIsCi0JCQkgICAgICAgbG9jYWwsIHJlbW90ZSk7CisJCQlwcmludGZfbG4ocmViYXNpbmcgPworCQkJCSAgXygiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzIGJ5IHJlYmFzaW5nLiIpIDoKKwkJCQkgIF8oIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcy4iKSwKKwkJCQkgIGxvY2FsLCByZW1vdGUpOwogCQllbHNlIGlmICghcmVtb3RlX2lzX2JyYW5jaCAmJiAhb3JpZ2luKQotCQkJcHJpbnRmKHJlYmFzaW5nID8KLQkJCSAgICAgICAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMgYnkgcmViYXNpbmcuXG4iIDoKLQkJCSAgICAgICAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMuXG4iLAotCQkJICAgICAgIGxvY2FsLCByZW1vdGUpOworCQkJcHJpbnRmX2xuKHJlYmFzaW5nID8KKwkJCQkgIF8oIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzIGJ5IHJlYmFzaW5nLiIpIDoKKwkJCQkgIF8oIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzLiIpLAorCQkJCSAgbG9jYWwsIHJlbW90ZSk7CiAJCWVsc2UKIAkJCWRpZSgiQlVHOiBpbXBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mICVkIGFuZCAlcCIsCiAJCQkgICAgcmVtb3RlX2lzX2JyYW5jaCwgb3JpZ2luKTsKQEAgLTExNSw3ICsxMTUsNyBAQAogCWludCBjb25maWdfZmxhZ3MgPSBxdWlldCA/IDAgOiBCUkFOQ0hfQ09ORklHX1ZFUkJPU0U7CiAKIAlpZiAoc3RybGVuKG5ld19yZWYpID4gMTAyNCAtIDcgLSA3IC0gMSkKLQkJcmV0dXJuIGVycm9yKCJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIsCisJCXJldHVybiBlcnJvcihfKCJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIpLAogCQkJCW5ld19yZWYpOwogCiAJbWVtc2V0KCZ0cmFja2luZywgMCwgc2l6ZW9mKHRyYWNraW5nKSk7CkBAIC0xMzQsNyArMTM0LDcgQEAKIAkJfQogCiAJaWYgKHRyYWNraW5nLm1hdGNoZXMgPiAxKQotCQlyZXR1cm4gZXJyb3IoIk5vdCB0cmFja2luZzogYW1iaWd1b3VzIGluZm9ybWF0aW9uIGZvciByZWYgJXMiLAorCQlyZXR1cm4gZXJyb3IoXygiTm90IHRyYWNraW5nOiBhbWJpZ3VvdXMgaW5mb3JtYXRpb24gZm9yIHJlZiAlcyIpLAogCQkJCW9yaWdfcmVmKTsKIAogCWluc3RhbGxfYnJhbmNoX2NvbmZpZyhjb25maWdfZmxhZ3MsIG5ld19yZWYsIHRyYWNraW5nLnJlbW90ZSwKQEAgLTE3OSwxMiArMTc5LDEyIEBACiAJCQkgICAgaW50IGZvcmNlLCBpbnQgYXR0cl9vbmx5KQogewogCWlmIChzdHJidWZfY2hlY2tfYnJhbmNoX3JlZihyZWYsIG5hbWUpKQotCQlkaWUoIiclcycgaXMgbm90IGEgdmFsaWQgYnJhbmNoIG5hbWUuIiwgbmFtZSk7CisJCWRpZShfKCInJXMnIGlzIG5vdCBhIHZhbGlkIGJyYW5jaCBuYW1lLiIpLCBuYW1lKTsKIAogCWlmICghcmVmX2V4aXN0cyhyZWYtPmJ1ZikpCiAJCXJldHVybiAwOwogCWVsc2UgaWYgKCFmb3JjZSAmJiAhYXR0cl9vbmx5KQotCQlkaWUoIkEgYnJhbmNoIG5hbWVkICclcycgYWxyZWFkeSBleGlzdHMuIiwgcmVmLT5idWYgKyBzdHJsZW4oInJlZnMvaGVhZHMvIikpOworCQlkaWUoXygiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iKSwgcmVmLT5idWYgKyBzdHJsZW4oInJlZnMvaGVhZHMvIikpOwogCiAJaWYgKCFhdHRyX29ubHkpIHsKIAkJY29uc3QgY2hhciAqaGVhZDsKQEAgLTE5MiwxMSArMTkyLDQwIEBACiAKIAkJaGVhZCA9IHJlc29sdmVfcmVmX3Vuc2FmZSgiSEVBRCIsIHNoYTEsIDAsIE5VTEwpOwogCQlpZiAoIWlzX2JhcmVfcmVwb3NpdG9yeSgpICYmIGhlYWQgJiYgIXN0cmNtcChoZWFkLCByZWYtPmJ1ZikpCi0JCQlkaWUoIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIpOworCQkJZGllKF8oIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIpKTsKIAl9CiAJcmV0dXJuIDE7CiB9CiAKK3N0YXRpYyBpbnQgY2hlY2tfdHJhY2tpbmdfYnJhbmNoKHN0cnVjdCByZW1vdGUgKnJlbW90ZSwgdm9pZCAqY2JfZGF0YSkKK3sKKwljaGFyICp0cmFja2luZ19icmFuY2ggPSBjYl9kYXRhOworCXN0cnVjdCByZWZzcGVjIHF1ZXJ5OworCW1lbXNldCgmcXVlcnksIDAsIHNpemVvZihzdHJ1Y3QgcmVmc3BlYykpOworCXF1ZXJ5LmRzdCA9IHRyYWNraW5nX2JyYW5jaDsKKwlyZXR1cm4gIShyZW1vdGVfZmluZF90cmFja2luZyhyZW1vdGUsICZxdWVyeSkgfHwKKwkJIHByZWZpeGNtcChxdWVyeS5zcmMsICJyZWZzL2hlYWRzLyIpKTsKK30KKworc3RhdGljIGludCB2YWxpZGF0ZV9yZW1vdGVfdHJhY2tpbmdfYnJhbmNoKGNoYXIgKnJlZikKK3sKKwlyZXR1cm4gIWZvcl9lYWNoX3JlbW90ZShjaGVja190cmFja2luZ19icmFuY2gsIHJlZik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIHVwc3RyZWFtX25vdF9icmFuY2hbXSA9CitOXygiQ2Fubm90IHNldHVwIHRyYWNraW5nIGluZm9ybWF0aW9uOyBzdGFydGluZyBwb2ludCAnJXMnIGlzIG5vdCBhIGJyYW5jaC4iKTsKK3N0YXRpYyBjb25zdCBjaGFyIHVwc3RyZWFtX21pc3NpbmdbXSA9CitOXygidGhlIHJlcXVlc3RlZCB1cHN0cmVhbSBicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIpOworc3RhdGljIGNvbnN0IGNoYXIgdXBzdHJlYW1fYWR2aWNlW10gPQorTl8oIlxuIgorIklmIHlvdSBhcmUgcGxhbm5pbmcgb24gYmFzaW5nIHlvdXIgd29yayBvbiBhbiB1cHN0cmVhbVxuIgorImJyYW5jaCB0aGF0IGFscmVhZHkgZXhpc3RzIGF0IHRoZSByZW1vdGUsIHlvdSBtYXkgbmVlZCB0b1xuIgorInJ1biBcImdpdCBmZXRjaFwiIHRvIHJldHJpZXZlIGl0LlxuIgorIlxuIgorIklmIHlvdSBhcmUgcGxhbm5pbmcgdG8gcHVzaCBvdXQgYSBuZXcgbG9jYWwgYnJhbmNoIHRoYXRcbiIKKyJ3aWxsIHRyYWNrIGl0cyByZW1vdGUgY291bnRlcnBhcnQsIHlvdSBtYXkgd2FudCB0byB1c2VcbiIKKyJcImdpdCBwdXNoIC11XCIgdG8gc2V0IHRoZSB1cHN0cmVhbSBjb25maWcgYXMgeW91IHB1c2guIik7CisKIHZvaWQgY3JlYXRlX2JyYW5jaChjb25zdCBjaGFyICpoZWFkLAogCQkgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdGFydF9uYW1lLAogCQkgICBpbnQgZm9yY2UsIGludCByZWZsb2csIGludCBjbG9iYmVyX2hlYWQsCkBAIC0yMjQsMzggKzI1Myw0NyBAQAogCX0KIAogCXJlYWxfcmVmID0gTlVMTDsKLQlpZiAoZ2V0X3NoYTEoc3RhcnRfbmFtZSwgc2hhMSkpCi0JCWRpZSgiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWU6ICclcycuIiwgc3RhcnRfbmFtZSk7CisJaWYgKGdldF9zaGExKHN0YXJ0X25hbWUsIHNoYTEpKSB7CisJCWlmIChleHBsaWNpdF90cmFja2luZykgeworCQkJaWYgKGFkdmljZV9zZXRfdXBzdHJlYW1fZmFpbHVyZSkgeworCQkJCWVycm9yKF8odXBzdHJlYW1fbWlzc2luZyksIHN0YXJ0X25hbWUpOworCQkJCWFkdmlzZShfKHVwc3RyZWFtX2FkdmljZSkpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlkaWUoXyh1cHN0cmVhbV9taXNzaW5nKSwgc3RhcnRfbmFtZSk7CisJCX0KKwkJZGllKF8oIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIpLCBzdGFydF9uYW1lKTsKKwl9CiAKIAlzd2l0Y2ggKGR3aW1fcmVmKHN0YXJ0X25hbWUsIHN0cmxlbihzdGFydF9uYW1lKSwgc2hhMSwgJnJlYWxfcmVmKSkgewogCWNhc2UgMDoKIAkJLyogTm90IGJyYW5jaGluZyBmcm9tIGFueSBleGlzdGluZyBicmFuY2ggKi8KIAkJaWYgKGV4cGxpY2l0X3RyYWNraW5nKQotCQkJZGllKCJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50IGlzIG5vdCBhIGJyYW5jaC4iKTsKKwkJCWRpZShfKHVwc3RyZWFtX25vdF9icmFuY2gpLCBzdGFydF9uYW1lKTsKIAkJYnJlYWs7CiAJY2FzZSAxOgogCQkvKiBVbmlxdWUgY29tcGxldGlvbiAtLSBnb29kLCBvbmx5IGlmIGl0IGlzIGEgcmVhbCBicmFuY2ggKi8KIAkJaWYgKHByZWZpeGNtcChyZWFsX3JlZiwgInJlZnMvaGVhZHMvIikgJiYKLQkJICAgIHByZWZpeGNtcChyZWFsX3JlZiwgInJlZnMvcmVtb3Rlcy8iKSkgeworCQkgICAgdmFsaWRhdGVfcmVtb3RlX3RyYWNraW5nX2JyYW5jaChyZWFsX3JlZikpIHsKIAkJCWlmIChleHBsaWNpdF90cmFja2luZykKLQkJCQlkaWUoIkNhbm5vdCBzZXR1cCB0cmFja2luZyBpbmZvcm1hdGlvbjsgc3RhcnRpbmcgcG9pbnQgaXMgbm90IGEgYnJhbmNoLiIpOworCQkJCWRpZShfKHVwc3RyZWFtX25vdF9icmFuY2gpLCBzdGFydF9uYW1lKTsKIAkJCWVsc2UKIAkJCQlyZWFsX3JlZiA9IE5VTEw7CiAJCX0KIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGllKCJBbWJpZ3VvdXMgb2JqZWN0IG5hbWU6ICclcycuIiwgc3RhcnRfbmFtZSk7CisJCWRpZShfKCJBbWJpZ3VvdXMgb2JqZWN0IG5hbWU6ICclcycuIiksIHN0YXJ0X25hbWUpOwogCQlicmVhazsKIAl9CiAKIAlpZiAoKGNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKHNoYTEpKSA9PSBOVUxMKQotCQlkaWUoIk5vdCBhIHZhbGlkIGJyYW5jaCBwb2ludDogJyVzJy4iLCBzdGFydF9uYW1lKTsKKwkJZGllKF8oIk5vdCBhIHZhbGlkIGJyYW5jaCBwb2ludDogJyVzJy4iKSwgc3RhcnRfbmFtZSk7CiAJaGFzaGNweShzaGExLCBjb21taXQtPm9iamVjdC5zaGExKTsKIAogCWlmICghZG9udF9jaGFuZ2VfcmVmKSB7CiAJCWxvY2sgPSBsb2NrX2FueV9yZWZfZm9yX3VwZGF0ZShyZWYuYnVmLCBOVUxMLCAwKTsKIAkJaWYgKCFsb2NrKQotCQkJZGllX2Vycm5vKCJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIpOworCQkJZGllX2Vycm5vKF8oIkZhaWxlZCB0byBsb2NrIHJlZiBmb3IgdXBkYXRlIikpOwogCX0KIAogCWlmIChyZWZsb2cpCkBAIC0yNzMsNyArMzExLDcgQEAKIAogCWlmICghZG9udF9jaGFuZ2VfcmVmKQogCQlpZiAod3JpdGVfcmVmX3NoYTEobG9jaywgc2hhMSwgbXNnKSA8IDApCi0JCQlkaWVfZXJybm8oIkZhaWxlZCB0byB3cml0ZSByZWYiKTsKKwkJCWRpZV9lcnJubyhfKCJGYWlsZWQgdG8gd3JpdGUgcmVmIikpOwogCiAJc3RyYnVmX3JlbGVhc2UoJnJlZik7CiAJZnJlZShyZWFsX3JlZik7CmRpZmYgLS1naXQgYS9idWlsdGluLmggYi9idWlsdGluLmgKaW5kZXggN2U3YmJkNi4uMWVkOGVkYiAxMDA2NDQKLS0tIGEvYnVpbHRpbi5oCisrKyBiL2J1aWx0aW4uaApAQCAtNSwxMyArNSwxNSBAQAogI2luY2x1ZGUgInN0cmJ1Zi5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiY29tbWl0LmgiCi0jaW5jbHVkZSAibm90ZXMuaCIKIAogI2RlZmluZSBERUZBVUxUX01FUkdFX0xPR19MRU4gMjAKIAogZXh0ZXJuIGNvbnN0IGNoYXIgZ2l0X3VzYWdlX3N0cmluZ1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgZ2l0X21vcmVfaW5mb19zdHJpbmdbXTsKIAorI2RlZmluZSBQUlVORV9QQUNLRURfRFJZX1JVTiAwMQorI2RlZmluZSBQUlVORV9QQUNLRURfVkVSQk9TRSAwMgorCiBleHRlcm4gdm9pZCBwcnVuZV9wYWNrZWRfb2JqZWN0cyhpbnQpOwogCiBzdHJ1Y3QgZm10X21lcmdlX21zZ19vcHRzIHsKQEAgLTIzLDIxICsyNSw2IEBACiBleHRlcm4gaW50IGZtdF9tZXJnZV9tc2coc3RydWN0IHN0cmJ1ZiAqaW4sIHN0cnVjdCBzdHJidWYgKm91dCwKIAkJCSBzdHJ1Y3QgZm10X21lcmdlX21zZ19vcHRzICopOwogCi1zdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgewotCXN0cnVjdCBub3Rlc190cmVlICoqdHJlZXM7Ci0JY29uc3QgY2hhciAqY21kOwotCWludCBlbmFibGVkOwotCWNvbWJpbmVfbm90ZXNfZm4gY29tYmluZTsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlZnM7Ci0JaW50IHJlZnNfZnJvbV9lbnY7Ci0JaW50IG1vZGVfZnJvbV9lbnY7Ci19OwotCi1zdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmluaXRfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjb25zdCBjaGFyICpjbWQpOwotaW50IGNvcHlfbm90ZV9mb3JfcmV3cml0ZShzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMsCi0JCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb21fb2JqLCBjb25zdCB1bnNpZ25lZCBjaGFyICp0b19vYmopOwotdm9pZCBmaW5pc2hfY29weV9ub3Rlc19mb3JfcmV3cml0ZShzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMpOwotCiBleHRlcm4gaW50IHRleHRjb252X29iamVjdChjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBtb2RlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgc2hhMV92YWxpZCwgY2hhciAqKmJ1ZiwgdW5zaWduZWQgbG9uZyAqYnVmX3NpemUpOwogCiBleHRlcm4gaW50IGNtZF9hZGQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwpAQCAtNTIsNiArMzksNyBAQAogZXh0ZXJuIGludCBjbWRfY2hlY2tvdXQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfY2hlY2tvdXRfaW5kZXgoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfY2hlY2tfYXR0cihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CitleHRlcm4gaW50IGNtZF9jaGVja19pZ25vcmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfY2hlY2tfcmVmX2Zvcm1hdChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVycnkoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfY2hlcnJ5X3BpY2soaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9hZGQuYyBiL2J1aWx0aW4vYWRkLmMKaW5kZXggNjMyNTk0Ny4uZjQ1ZDlkNCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9hZGQuYworKysgYi9idWlsdGluL2FkZC5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiYnVpbHRpbi5oIgogI2luY2x1ZGUgImRpci5oIgorI2luY2x1ZGUgInBhdGhzcGVjLmgiCiAjaW5jbHVkZSAiZXhlY19jbWQuaCIKICNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKQEAgLTI1LDggKzI2LDU1IEBACiBzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgewogCWludCBmbGFnczsKIAlpbnQgYWRkX2Vycm9yczsKKwljb25zdCBjaGFyICppbXBsaWNpdF9kb3Q7CisJc2l6ZV90IGltcGxpY2l0X2RvdF9sZW47CisKKwkvKiBvbmx5IG5lZWRlZCBmb3IgMi4wIHRyYW5zaXRpb24gcHJlcGFyYXRpb24gKi8KKwlpbnQgd2Fybl9hZGRfd291bGRfcmVtb3ZlOwogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIgKm9wdGlvbl93aXRoX2ltcGxpY2l0X2RvdDsKK3N0YXRpYyBjb25zdCBjaGFyICpzaG9ydF9vcHRpb25fd2l0aF9pbXBsaWNpdF9kb3Q7CisKK3N0YXRpYyB2b2lkIHdhcm5fcGF0aGxlc3NfYWRkKHZvaWQpCit7CisJc3RhdGljIGludCBzaG93bjsKKwlhc3NlcnQob3B0aW9uX3dpdGhfaW1wbGljaXRfZG90ICYmIHNob3J0X29wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCk7CisKKwlpZiAoc2hvd24pCisJCXJldHVybjsKKwlzaG93biA9IDE7CisKKwkvKgorCSAqIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCAiZ2l0IGFkZCAtcCIgYW5kIG1vc3QgR2l0CisJICogY29tbWFuZHMsIHdlIHNob3VsZCBkZWZhdWx0IHRvIGJlaW5nIHRyZWUtd2lkZSwgYnV0CisJICogdGhpcyBpcyBub3QgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGFuZCBjYW4ndCBiZQorCSAqIGNoYW5nZWQgdW50aWwgdXNlcnMgdHJhaW5lZCB0aGVtc2VsdmVzIG5vdCB0byB0eXBlCisJICogImdpdCBhZGQgLXUiIG9yICJnaXQgYWRkIC1BIi4gRm9yIG5vdywgd2Ugd2FybiBhbmQKKwkgKiBrZWVwIHRoZSBvbGQgYmVoYXZpb3IuIExhdGVyLCB0aGUgYmVoYXZpb3IgY2FuIGJlIGNoYW5nZWQKKwkgKiB0byB0cmVlLXdpZGUsIGtlZXBpbmcgdGhlIHdhcm5pbmcgZm9yIGEgd2hpbGUsIGFuZAorCSAqIGV2ZW50dWFsbHkgd2UgY2FuIGRyb3AgdGhlIHdhcm5pbmcuCisJICovCisJd2FybmluZyhfKCJUaGUgYmVoYXZpb3Igb2YgJ2dpdCBhZGQgJXMgKG9yICVzKScgd2l0aCBubyBwYXRoIGFyZ3VtZW50IGZyb20gYVxuIgorCQkgICJzdWJkaXJlY3Rvcnkgb2YgdGhlIHRyZWUgd2lsbCBjaGFuZ2UgaW4gR2l0IDIuMCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuXG4iCisJCSAgIlRvIGFkZCBjb250ZW50IGZvciB0aGUgd2hvbGUgdHJlZSwgcnVuOlxuIgorCQkgICJcbiIKKwkJICAiICBnaXQgYWRkICVzIDovXG4iCisJCSAgIiAgKG9yIGdpdCBhZGQgJXMgOi8pXG4iCisJCSAgIlxuIgorCQkgICJUbyByZXN0cmljdCB0aGUgY29tbWFuZCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIHJ1bjpcbiIKKwkJICAiXG4iCisJCSAgIiAgZ2l0IGFkZCAlcyAuXG4iCisJCSAgIiAgKG9yIGdpdCBhZGQgJXMgLilcbiIKKwkJICAiXG4iCisJCSAgIldpdGggdGhlIGN1cnJlbnQgR2l0IHZlcnNpb24sIHRoZSBjb21tYW5kIGlzIHJlc3RyaWN0ZWQgdG8gIgorCQkgICJ0aGUgY3VycmVudCBkaXJlY3RvcnkuXG4iCisJCSAgIiIpLAorCQlvcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QsIHNob3J0X29wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCwKKwkJb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90LCBzaG9ydF9vcHRpb25fd2l0aF9pbXBsaWNpdF9kb3QsCisJCW9wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCwgc2hvcnRfb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90KTsKK30KKwogc3RhdGljIGludCBmaXhfdW5tZXJnZWRfc3RhdHVzKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwLAogCQkJICAgICAgIHN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YSAqZGF0YSkKIHsKQEAgLTQ4LDE1ICs5Niw0OSBAQAogCQlyZXR1cm4gRElGRl9TVEFUVVNfTU9ESUZJRUQ7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICphZGRfd291bGRfcmVtb3ZlX3dhcm5pbmcgPSBOXygKKwkiWW91IHJhbiAnZ2l0IGFkZCcgd2l0aCBuZWl0aGVyICctQSAoLS1hbGwpJyBvciAnLS1pZ25vcmUtcmVtb3ZhbCcsXG4iCisid2hvc2UgYmVoYXZpb3VyIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgd2l0aCByZXNwZWN0IHRvIHBhdGhzIHlvdSByZW1vdmVkLlxuIgorIlBhdGhzIGxpa2UgJyVzJyB0aGF0IGFyZVxuIgorInJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZSBhcmUgaWdub3JlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiBHaXQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4nLCB3aGljaCBpcyB0aGUgY3VycmVudCBkZWZhdWx0LFxuIgorIiAgaWdub3JlcyBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPicgd2lsbCBsZXQgeW91IGFsc28gcmVjb3JkIHRoZSByZW1vdmFscy5cbiIKKyJcbiIKKyJSdW4gJ2dpdCBzdGF0dXMnIHRvIGNoZWNrIHRoZSBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIik7CisKK3N0YXRpYyB2b2lkIHdhcm5fYWRkX3dvdWxkX3JlbW92ZShjb25zdCBjaGFyICpwYXRoKQoreworCXdhcm5pbmcoXyhhZGRfd291bGRfcmVtb3ZlX3dhcm5pbmcpLCBwYXRoKTsKK30KKwogc3RhdGljIHZvaWQgdXBkYXRlX2NhbGxiYWNrKHN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSwKIAkJCSAgICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsIHZvaWQgKmNiZGF0YSkKIHsKIAlpbnQgaTsKIAlzdHJ1Y3QgdXBkYXRlX2NhbGxiYWNrX2RhdGEgKmRhdGEgPSBjYmRhdGE7CisJY29uc3QgY2hhciAqaW1wbGljaXRfZG90ID0gZGF0YS0+aW1wbGljaXRfZG90OworCXNpemVfdCBpbXBsaWNpdF9kb3RfbGVuID0gZGF0YS0+aW1wbGljaXRfZG90X2xlbjsKIAogCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwID0gcS0+cXVldWVbaV07CiAJCWNvbnN0IGNoYXIgKnBhdGggPSBwLT5vbmUtPnBhdGg7CisJCS8qCisJCSAqIENoZWNrIGlmICJnaXQgYWRkIC1BIiBvciAiZ2l0IGFkZCAtdSIgd2FzIHJ1biBmcm9tIGEKKwkJICogc3ViZGlyZWN0b3J5IHdpdGggYSBtb2RpZmllZCBmaWxlIG91dHNpZGUgdGhhdCBkaXJlY3RvcnksCisJCSAqIGFuZCB3YXJuIGlmIHNvLgorCQkgKgorCQkgKiAiZ2l0IGFkZCAtdSIgd2lsbCBiZWhhdmUgbGlrZSAiZ2l0IGFkZCAtdSA6LyIgaW5zdGVhZCBvZgorCQkgKiAiZ2l0IGFkZCAtdSAuIiBpbiB0aGUgZnV0dXJlLiAgVGhpcyB3YXJuaW5nIHByZXBhcmVzIGZvcgorCQkgKiB0aGF0IGNoYW5nZS4KKwkJICovCisJCWlmIChpbXBsaWNpdF9kb3QgJiYKKwkJICAgIHN0cm5jbXBfaWNhc2UocGF0aCwgaW1wbGljaXRfZG90LCBpbXBsaWNpdF9kb3RfbGVuKSkgeworCQkJd2Fybl9wYXRobGVzc19hZGQoKTsKKwkJCWNvbnRpbnVlOworCQl9CiAJCXN3aXRjaCAoZml4X3VubWVyZ2VkX3N0YXR1cyhwLCBkYXRhKSkgewogCQlkZWZhdWx0OgogCQkJZGllKF8oInVuZXhwZWN0ZWQgZGlmZiBzdGF0dXMgJWMiKSwgcC0+c3RhdHVzKTsKQEAgLTY5LDYgKzE1MSwxMCBAQAogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgRElGRl9TVEFUVVNfREVMRVRFRDoKKwkJCWlmIChkYXRhLT53YXJuX2FkZF93b3VsZF9yZW1vdmUpIHsKKwkJCQl3YXJuX2FkZF93b3VsZF9yZW1vdmUocGF0aCk7CisJCQkJZGF0YS0+d2Fybl9hZGRfd291bGRfcmVtb3ZlID0gMDsKKwkJCX0KIAkJCWlmIChkYXRhLT5mbGFncyAmIEFERF9DQUNIRV9JR05PUkVfUkVNT1ZBTCkKIAkJCQlicmVhazsKIAkJCWlmICghKGRhdGEtPmZsYWdzICYgQUREX0NBQ0hFX1BSRVRFTkQpKQpAQCAtODAsNTcgKzE2NiwzNCBAQAogCX0KIH0KIAotaW50IGFkZF9maWxlc190b19jYWNoZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYywgaW50IGZsYWdzKQorc3RhdGljIHZvaWQgdXBkYXRlX2ZpbGVzX2luX2NhY2hlKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqKnBhdGhzcGVjLAorCQkJCSAgc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhICpkYXRhKQogewotCXN0cnVjdCB1cGRhdGVfY2FsbGJhY2tfZGF0YSBkYXRhOwogCXN0cnVjdCByZXZfaW5mbyByZXY7CisKIAlpbml0X3JldmlzaW9ucygmcmV2LCBwcmVmaXgpOwogCXNldHVwX3JldmlzaW9ucygwLCBOVUxMLCAmcmV2LCBOVUxMKTsKIAlpbml0X3BhdGhzcGVjKCZyZXYucHJ1bmVfZGF0YSwgcGF0aHNwZWMpOwogCXJldi5kaWZmb3B0Lm91dHB1dF9mb3JtYXQgPSBESUZGX0ZPUk1BVF9DQUxMQkFDSzsKIAlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2sgPSB1cGRhdGVfY2FsbGJhY2s7Ci0JZGF0YS5mbGFncyA9IGZsYWdzOwotCWRhdGEuYWRkX2Vycm9ycyA9IDA7Ci0JcmV2LmRpZmZvcHQuZm9ybWF0X2NhbGxiYWNrX2RhdGEgPSAmZGF0YTsKKwlyZXYuZGlmZm9wdC5mb3JtYXRfY2FsbGJhY2tfZGF0YSA9IGRhdGE7CiAJcmV2Lm1heF9jb3VudCA9IDA7IC8qIGRvIG5vdCBjb21wYXJlIHVubWVyZ2VkIHBhdGhzIHdpdGggc3RhZ2UgIzIgKi8KIAlydW5fZGlmZl9maWxlcygmcmV2LCBESUZGX1JBQ1lfSVNfTU9ESUZJRUQpOworfQorCitpbnQgYWRkX2ZpbGVzX3RvX2NhY2hlKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqKnBhdGhzcGVjLCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhIGRhdGE7CisKKwltZW1zZXQoJmRhdGEsIDAsIHNpemVvZihkYXRhKSk7CisJZGF0YS5mbGFncyA9IGZsYWdzOworCXVwZGF0ZV9maWxlc19pbl9jYWNoZShwcmVmaXgsIHBhdGhzcGVjLCAmZGF0YSk7CiAJcmV0dXJuICEhZGF0YS5hZGRfZXJyb3JzOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX3BhdGhzcGVjX21hdGNoZXMoY29uc3QgY2hhciAqKnBhdGhzcGVjLCBjaGFyICpzZWVuLCBpbnQgc3BlY3MpCi17Ci0JaW50IG51bV91bm1hdGNoZWQgPSAwLCBpOwotCi0JLyoKLQkgKiBTaW5jZSB3ZSBhcmUgd2Fsa2luZyB0aGUgaW5kZXggYXMgaWYgd2Ugd2VyZSB3YWxraW5nIHRoZSBkaXJlY3RvcnksCi0JICogd2UgaGF2ZSB0byBtYXJrIHRoZSBtYXRjaGVkIHBhdGhzcGVjIGFzIHNlZW47IG90aGVyd2lzZSB3ZSB3aWxsCi0JICogbWlzdGFrZW5seSB0aGluayB0aGF0IHRoZSB1c2VyIGdhdmUgYSBwYXRoc3BlYyB0aGF0IGRpZCBub3QgbWF0Y2gKLQkgKiBhbnl0aGluZy4KLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgc3BlY3M7IGkrKykKLQkJaWYgKCFzZWVuW2ldKQotCQkJbnVtX3VubWF0Y2hlZCsrOwotCWlmICghbnVtX3VubWF0Y2hlZCkKLQkJcmV0dXJuOwotCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwotCQltYXRjaF9wYXRoc3BlYyhwYXRoc3BlYywgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCAwLCBzZWVuKTsKLQl9Ci19Ci0KLXN0YXRpYyBjaGFyICpmaW5kX3VzZWRfcGF0aHNwZWMoY29uc3QgY2hhciAqKnBhdGhzcGVjKQotewotCWNoYXIgKnNlZW47Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBwYXRoc3BlY1tpXTsgIGkrKykKLQkJOyAvKiBqdXN0IGNvdW50aW5nICovCi0Jc2VlbiA9IHhjYWxsb2MoaSwgMSk7Ci0JZmlsbF9wYXRoc3BlY19tYXRjaGVzKHBhdGhzcGVjLCBzZWVuLCBpKTsKLQlyZXR1cm4gc2VlbjsKLX0KLQotc3RhdGljIGNoYXIgKnBydW5lX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICoqcGF0aHNwZWMsIGludCBwcmVmaXgpCisjZGVmaW5lIFdBUk5fSU1QTElDSVRfRE9UICgxdSA8PCAwKQorc3RhdGljIGNoYXIgKnBydW5lX2RpcmVjdG9yeShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICoqcGF0aHNwZWMsCisJCQkgICAgIGludCBwcmVmaXgsIHVuc2lnbmVkIGZsYWcpCiB7CiAJY2hhciAqc2VlbjsKIAlpbnQgaSwgc3BlY3M7CkBAIC0xNDcsMTIgKzIxMCwyNiBAQAogCQlpZiAobWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGVudHJ5LT5uYW1lLCBlbnRyeS0+bGVuLAogCQkJCSAgIHByZWZpeCwgc2VlbikpCiAJCQkqZHN0KysgPSBlbnRyeTsKKwkJZWxzZSBpZiAoZmxhZyAmIFdBUk5fSU1QTElDSVRfRE9UKQorCQkJLyoKKwkJCSAqICJnaXQgYWRkIC1BIiB3YXMgcnVuIGZyb20gYSBzdWJkaXJlY3Rvcnkgd2l0aCBhCisJCQkgKiBuZXcgZmlsZSBvdXRzaWRlIHRoYXQgZGlyZWN0b3J5LgorCQkJICoKKwkJCSAqICJnaXQgYWRkIC1BIiB3aWxsIGJlaGF2ZSBsaWtlICJnaXQgYWRkIC1BIDovIgorCQkJICogaW5zdGVhZCBvZiAiZ2l0IGFkZCAtQSAuIiBpbiB0aGUgZnV0dXJlLgorCQkJICogV2FybiBhYm91dCB0aGUgY29taW5nIGJlaGF2aW9yIGNoYW5nZS4KKwkJCSAqLworCQkJd2Fybl9wYXRobGVzc19hZGQoKTsKIAl9CiAJZGlyLT5uciA9IGRzdCAtIGRpci0+ZW50cmllczsKLQlmaWxsX3BhdGhzcGVjX21hdGNoZXMocGF0aHNwZWMsIHNlZW4sIHNwZWNzKTsKKwlhZGRfcGF0aHNwZWNfbWF0Y2hlc19hZ2FpbnN0X2luZGV4KHBhdGhzcGVjLCBzZWVuLCBzcGVjcyk7CiAJcmV0dXJuIHNlZW47CiB9CiAKKy8qCisgKiBDaGVja3MgdGhlIGluZGV4IHRvIHNlZSB3aGV0aGVyIGFueSBwYXRoIGluIHBhdGhzcGVjIHJlZmVycyB0bworICogc29tZXRoaW5nIGluc2lkZSBhIHN1Ym1vZHVsZS4gIElmIHNvLCBkaWVzIHdpdGggYW4gZXJyb3IgbWVzc2FnZS4KKyAqLwogc3RhdGljIHZvaWQgdHJlYXRfZ2l0bGlua3MoY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewogCWludCBpOwpAQCAtMTYwLDI0ICsyMzcsOCBAQAogCWlmICghcGF0aHNwZWMgfHwgISpwYXRoc3BlYykKIAkJcmV0dXJuOwogCi0JZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07Ci0JCWlmIChTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkpIHsKLQkJCWludCBsZW4gPSBjZV9uYW1lbGVuKGNlKSwgajsKLQkJCWZvciAoaiA9IDA7IHBhdGhzcGVjW2pdOyBqKyspIHsKLQkJCQlpbnQgbGVuMiA9IHN0cmxlbihwYXRoc3BlY1tqXSk7Ci0JCQkJaWYgKGxlbjIgPD0gbGVuIHx8IHBhdGhzcGVjW2pdW2xlbl0gIT0gJy8nIHx8Ci0JCQkJICAgIG1lbWNtcChjZS0+bmFtZSwgcGF0aHNwZWNbal0sIGxlbikpCi0JCQkJCWNvbnRpbnVlOwotCQkJCWlmIChsZW4yID09IGxlbiArIDEpCi0JCQkJCS8qIHN0cmlwIHRyYWlsaW5nIHNsYXNoICovCi0JCQkJCXBhdGhzcGVjW2pdID0geHN0cm5kdXAoY2UtPm5hbWUsIGxlbik7Ci0JCQkJZWxzZQotCQkJCQlkaWUgKF8oIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIiksCi0JCQkJCQlwYXRoc3BlY1tqXSwgbGVuLCBjZS0+bmFtZSk7Ci0JCQl9Ci0JCX0KLQl9CisJZm9yIChpID0gMDsgcGF0aHNwZWNbaV07IGkrKykKKwkJcGF0aHNwZWNbaV0gPSBjaGVja19wYXRoX2Zvcl9naXRsaW5rKHBhdGhzcGVjW2ldKTsKIH0KIAogc3RhdGljIHZvaWQgcmVmcmVzaChpbnQgdmVyYm9zZSwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQpAQCAtMTk3LDE3ICsyNTgsMTkgQEAKICAgICAgICAgZnJlZShzZWVuKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKip2YWxpZGF0ZV9wYXRoc3BlYyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKKy8qCisgKiBOb3JtYWxpemVzIGFyZ3YgcmVsYXRpdmUgdG8gcHJlZml4LCB2aWEgZ2V0X3BhdGhzcGVjKCksIGFuZCB0aGVuCisgKiBydW5zIGRpZV9pZl9wYXRoX2JleW9uZF9zeW1saW5rKCkgb24gZWFjaCBwYXRoIGluIHRoZSBub3JtYWxpemVkCisgKiBsaXN0LgorICovCitzdGF0aWMgY29uc3QgY2hhciAqKnZhbGlkYXRlX3BhdGhzcGVjKGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJY29uc3QgY2hhciAqKnBhdGhzcGVjID0gZ2V0X3BhdGhzcGVjKHByZWZpeCwgYXJndik7CiAKIAlpZiAocGF0aHNwZWMpIHsKIAkJY29uc3QgY2hhciAqKnA7CiAJCWZvciAocCA9IHBhdGhzcGVjOyAqcDsgcCsrKSB7Ci0JCQlpZiAoaGFzX3N5bWxpbmtfbGVhZGluZ19wYXRoKCpwLCBzdHJsZW4oKnApKSkgewotCQkJCWludCBsZW4gPSBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDA7Ci0JCQkJZGllKF8oIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIpLCAqcCArIGxlbik7Ci0JCQl9CisJCQlkaWVfaWZfcGF0aF9iZXlvbmRfc3ltbGluaygqcCwgcHJlZml4KTsKIAkJfQogCX0KIApAQCAtMjQ4LDcgKzMxMSw3IEBACiAJY29uc3QgY2hhciAqKnBhdGhzcGVjID0gTlVMTDsKIAogCWlmIChhcmdjKSB7Ci0JCXBhdGhzcGVjID0gdmFsaWRhdGVfcGF0aHNwZWMoYXJnYywgYXJndiwgcHJlZml4KTsKKwkJcGF0aHNwZWMgPSB2YWxpZGF0ZV9wYXRoc3BlYyhhcmd2LCBwcmVmaXgpOwogCQlpZiAoIXBhdGhzcGVjKQogCQkJcmV0dXJuIC0xOwogCX0KQEAgLTMxMiwyMyArMzc1LDM4IEBACiBzdGF0aWMgY29uc3QgY2hhciBpZ25vcmVfZXJyb3JbXSA9CiBOXygiVGhlIGZvbGxvd2luZyBwYXRocyBhcmUgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIik7CiAKLXN0YXRpYyBpbnQgdmVyYm9zZSA9IDAsIHNob3dfb25seSA9IDAsIGlnbm9yZWRfdG9vID0gMCwgcmVmcmVzaF9vbmx5ID0gMDsKLXN0YXRpYyBpbnQgaWdub3JlX2FkZF9lcnJvcnMsIGFkZHJlbW92ZSwgaW50ZW50X3RvX2FkZCwgaWdub3JlX21pc3NpbmcgPSAwOworc3RhdGljIGludCB2ZXJib3NlLCBzaG93X29ubHksIGlnbm9yZWRfdG9vLCByZWZyZXNoX29ubHk7CitzdGF0aWMgaW50IGlnbm9yZV9hZGRfZXJyb3JzLCBpbnRlbnRfdG9fYWRkLCBpZ25vcmVfbWlzc2luZzsKKworI2RlZmluZSBBRERSRU1PVkVfREVGQVVMVCAwIC8qIENoYW5nZSB0byAxIGluIEdpdCAyLjAgKi8KK3N0YXRpYyBpbnQgYWRkcmVtb3ZlID0gQUREUkVNT1ZFX0RFRkFVTFQ7CitzdGF0aWMgaW50IGFkZHJlbW92ZV9leHBsaWNpdCA9IC0xOyAvKiB1bnNwZWNpZmllZCAqLworCitzdGF0aWMgaW50IGlnbm9yZV9yZW1vdmFsX2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCit7CisJLyogaWYgd2UgYXJlIHRvbGQgdG8gaWdub3JlLCB3ZSBhcmUgbm90IGFkZGluZyByZW1vdmFscyAqLworCSooaW50ICopb3B0LT52YWx1ZSA9ICF1bnNldCA/IDAgOiAxOworCXJldHVybiAwOworfQogCiBzdGF0aWMgc3RydWN0IG9wdGlvbiBidWlsdGluX2FkZF9vcHRpb25zW10gPSB7CiAJT1BUX19EUllfUlVOKCZzaG93X29ubHksIE5fKCJkcnkgcnVuIikpLAogCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oImJlIHZlcmJvc2UiKSksCiAJT1BUX0dST1VQKCIiKSwKLQlPUFRfQk9PTEVBTignaScsICJpbnRlcmFjdGl2ZSIsICZhZGRfaW50ZXJhY3RpdmUsIE5fKCJpbnRlcmFjdGl2ZSBwaWNraW5nIikpLAotCU9QVF9CT09MRUFOKCdwJywgInBhdGNoIiwgJnBhdGNoX2ludGVyYWN0aXZlLCBOXygic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiKSksCi0JT1BUX0JPT0xFQU4oJ2UnLCAiZWRpdCIsICZlZGl0X2ludGVyYWN0aXZlLCBOXygiZWRpdCBjdXJyZW50IGRpZmYgYW5kIGFwcGx5IikpLAorCU9QVF9CT09MKCdpJywgImludGVyYWN0aXZlIiwgJmFkZF9pbnRlcmFjdGl2ZSwgTl8oImludGVyYWN0aXZlIHBpY2tpbmciKSksCisJT1BUX0JPT0woJ3AnLCAicGF0Y2giLCAmcGF0Y2hfaW50ZXJhY3RpdmUsIE5fKCJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIpKSwKKwlPUFRfQk9PTCgnZScsICJlZGl0IiwgJmVkaXRfaW50ZXJhY3RpdmUsIE5fKCJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiKSksCiAJT1BUX19GT1JDRSgmaWdub3JlZF90b28sIE5fKCJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiKSksCi0JT1BUX0JPT0xFQU4oJ3UnLCAidXBkYXRlIiwgJnRha2Vfd29ya3RyZWVfY2hhbmdlcywgTl8oInVwZGF0ZSB0cmFja2VkIGZpbGVzIikpLAotCU9QVF9CT09MRUFOKCdOJywgImludGVudC10by1hZGQiLCAmaW50ZW50X3RvX2FkZCwgTl8oInJlY29yZCBvbmx5IHRoZSBmYWN0IHRoYXQgdGhlIHBhdGggd2lsbCBiZSBhZGRlZCBsYXRlciIpKSwKLQlPUFRfQk9PTEVBTignQScsICJhbGwiLCAmYWRkcmVtb3ZlLCBOXygiYWRkIGNoYW5nZXMgZnJvbSBhbGwgdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIikpLAotCU9QVF9CT09MRUFOKCAwICwgInJlZnJlc2giLCAmcmVmcmVzaF9vbmx5LCBOXygiZG9uJ3QgYWRkLCBvbmx5IHJlZnJlc2ggdGhlIGluZGV4IikpLAotCU9QVF9CT09MRUFOKCAwICwgImlnbm9yZS1lcnJvcnMiLCAmaWdub3JlX2FkZF9lcnJvcnMsIE5fKCJqdXN0IHNraXAgZmlsZXMgd2hpY2ggY2Fubm90IGJlIGFkZGVkIGJlY2F1c2Ugb2YgZXJyb3JzIikpLAotCU9QVF9CT09MRUFOKCAwICwgImlnbm9yZS1taXNzaW5nIiwgJmlnbm9yZV9taXNzaW5nLCBOXygiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIikpLAorCU9QVF9CT09MKCd1JywgInVwZGF0ZSIsICZ0YWtlX3dvcmt0cmVlX2NoYW5nZXMsIE5fKCJ1cGRhdGUgdHJhY2tlZCBmaWxlcyIpKSwKKwlPUFRfQk9PTCgnTicsICJpbnRlbnQtdG8tYWRkIiwgJmludGVudF90b19hZGQsIE5fKCJyZWNvcmQgb25seSB0aGUgZmFjdCB0aGF0IHRoZSBwYXRoIHdpbGwgYmUgYWRkZWQgbGF0ZXIiKSksCisJT1BUX0JPT0woJ0EnLCAiYWxsIiwgJmFkZHJlbW92ZV9leHBsaWNpdCwgTl8oImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIpKSwKKwl7IE9QVElPTl9DQUxMQkFDSywgMCwgImlnbm9yZS1yZW1vdmFsIiwgJmFkZHJlbW92ZV9leHBsaWNpdCwKKwkgIE5VTEwgLyogdGFrZXMgbm8gYXJndW1lbnRzICovLAorCSAgTl8oImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIiksCisJICBQQVJTRV9PUFRfTk9BUkcsIGlnbm9yZV9yZW1vdmFsX2NiIH0sCisJT1BUX0JPT0woIDAgLCAicmVmcmVzaCIsICZyZWZyZXNoX29ubHksIE5fKCJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiKSksCisJT1BUX0JPT0woIDAgLCAiaWdub3JlLWVycm9ycyIsICZpZ25vcmVfYWRkX2Vycm9ycywgTl8oImp1c3Qgc2tpcCBmaWxlcyB3aGljaCBjYW5ub3QgYmUgYWRkZWQgYmVjYXVzZSBvZiBlcnJvcnMiKSksCisJT1BUX0JPT0woIDAgLCAiaWdub3JlLW1pc3NpbmciLCAmaWdub3JlX21pc3NpbmcsIE5fKCJjaGVjayBpZiAtIGV2ZW4gbWlzc2luZyAtIGZpbGVzIGFyZSBpZ25vcmVkIGluIGRyeSBydW4iKSksCiAJT1BUX0VORCgpLAogfTsKIApAQCAtMzczLDYgKzQ1MSw4IEBACiAJaW50IGFkZF9uZXdfZmlsZXM7CiAJaW50IHJlcXVpcmVfcGF0aHNwZWM7CiAJY2hhciAqc2VlbiA9IE5VTEw7CisJaW50IGltcGxpY2l0X2RvdCA9IDA7CisJc3RydWN0IHVwZGF0ZV9jYWxsYmFja19kYXRhIHVwZGF0ZV9kYXRhOwogCiAJZ2l0X2NvbmZpZyhhZGRfY29uZmlnLCBOVUxMKTsKIApAQCAtMzg4LDE0ICs0NjgsNDQgQEAKIAlhcmdjLS07CiAJYXJndisrOwogCisJaWYgKDAgPD0gYWRkcmVtb3ZlX2V4cGxpY2l0KQorCQlhZGRyZW1vdmUgPSBhZGRyZW1vdmVfZXhwbGljaXQ7CisJZWxzZSBpZiAodGFrZV93b3JrdHJlZV9jaGFuZ2VzICYmIEFERFJFTU9WRV9ERUZBVUxUKQorCQlhZGRyZW1vdmUgPSAwOyAvKiAiLXUiIHdhcyBnaXZlbiBidXQgbm90ICItQSIgKi8KKwogCWlmIChhZGRyZW1vdmUgJiYgdGFrZV93b3JrdHJlZV9jaGFuZ2VzKQogCQlkaWUoXygiLUEgYW5kIC11IGFyZSBtdXR1YWxseSBpbmNvbXBhdGlibGUiKSk7CisKKwkvKgorCSAqIFdhcm4gd2hlbiAiZ2l0IGFkZCBwYXRoc3BlYy4uLiIgd2FzIGdpdmVuIHdpdGhvdXQgIi11IiBvciAiLUEiCisJICogYW5kIHBhdGhzcGVjLi4uIGNvdmVycyBhIHJlbW92ZWQgcGF0aC4KKwkgKi8KKwltZW1zZXQoJnVwZGF0ZV9kYXRhLCAwLCBzaXplb2YodXBkYXRlX2RhdGEpKTsKKwlpZiAoIXRha2Vfd29ya3RyZWVfY2hhbmdlcyAmJiBhZGRyZW1vdmVfZXhwbGljaXQgPCAwKQorCQl1cGRhdGVfZGF0YS53YXJuX2FkZF93b3VsZF9yZW1vdmUgPSAxOworCisJaWYgKCF0YWtlX3dvcmt0cmVlX2NoYW5nZXMgJiYgYWRkcmVtb3ZlX2V4cGxpY2l0IDwgMCAmJiBhcmdjKQorCQkvKgorCQkgKiBUdXJuICJnaXQgYWRkIHBhdGhzcGVjLi4uIiB0byAiZ2l0IGFkZCAtQSBwYXRoc3BlYy4uLiIKKwkJICogaW4gR2l0IDIuMCBidXQgbm90IHlldAorCQkgKi8KKwkJOyAvKiBhZGRyZW1vdmUgPSAxOyAqLworCiAJaWYgKCFzaG93X29ubHkgJiYgaWdub3JlX21pc3NpbmcpCiAJCWRpZShfKCJPcHRpb24gLS1pZ25vcmUtbWlzc2luZyBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLS1kcnktcnVuIikpOwotCWlmICgoYWRkcmVtb3ZlIHx8IHRha2Vfd29ya3RyZWVfY2hhbmdlcykgJiYgIWFyZ2MpIHsKKwlpZiAoYWRkcmVtb3ZlKSB7CisJCW9wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCA9ICItLWFsbCI7CisJCXNob3J0X29wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCA9ICItQSI7CisJfQorCWlmICh0YWtlX3dvcmt0cmVlX2NoYW5nZXMpIHsKKwkJb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90ID0gIi0tdXBkYXRlIjsKKwkJc2hvcnRfb3B0aW9uX3dpdGhfaW1wbGljaXRfZG90ID0gIi11IjsKKwl9CisJaWYgKG9wdGlvbl93aXRoX2ltcGxpY2l0X2RvdCAmJiAhYXJnYykgewogCQlzdGF0aWMgY29uc3QgY2hhciAqaGVyZVsyXSA9IHsgIi4iLCBOVUxMIH07CiAJCWFyZ2MgPSAxOwogCQlhcmd2ID0gaGVyZTsKKwkJaW1wbGljaXRfZG90ID0gMTsKIAl9CiAKIAlhZGRfbmV3X2ZpbGVzID0gIXRha2Vfd29ya3RyZWVfY2hhbmdlcyAmJiAhcmVmcmVzaF9vbmx5OwpAQCAtNDA4LDE0ICs1MTgsMTUgQEAKIAkJIChpbnRlbnRfdG9fYWRkID8gQUREX0NBQ0hFX0lOVEVOVCA6IDApIHwKIAkJIChpZ25vcmVfYWRkX2Vycm9ycyA/IEFERF9DQUNIRV9JR05PUkVfRVJST1JTIDogMCkgfAogCQkgKCEoYWRkcmVtb3ZlIHx8IHRha2Vfd29ya3RyZWVfY2hhbmdlcykKLQkJICA/IEFERF9DQUNIRV9JR05PUkVfUkVNT1ZBTCA6IDApKTsKKwkJICA/IEFERF9DQUNIRV9JR05PUkVfUkVNT1ZBTCA6IDApKSB8CisJCSAoaW1wbGljaXRfZG90ID8gQUREX0NBQ0hFX0lNUExJQ0lUX0RPVCA6IDApOwogCiAJaWYgKHJlcXVpcmVfcGF0aHNwZWMgJiYgYXJnYyA9PSAwKSB7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJOb3RoaW5nIHNwZWNpZmllZCwgbm90aGluZyBhZGRlZC5cbiIpKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIk1heWJlIHlvdSB3YW50ZWQgdG8gc2F5ICdnaXQgYWRkIC4nP1xuIikpOwogCQlyZXR1cm4gMDsKIAl9Ci0JcGF0aHNwZWMgPSB2YWxpZGF0ZV9wYXRoc3BlYyhhcmdjLCBhcmd2LCBwcmVmaXgpOworCXBhdGhzcGVjID0gdmFsaWRhdGVfcGF0aHNwZWMoYXJndiwgcHJlZml4KTsKIAogCWlmIChyZWFkX2NhY2hlKCkgPCAwKQogCQlkaWUoXygiaW5kZXggZmlsZSBjb3JydXB0IikpOwpAQCAtNDMyLDI5ICs1NDMsMzAgQEAKIAkJfQogCiAJCS8qIFRoaXMgcGlja3MgdXAgdGhlIHBhdGhzIHRoYXQgYXJlIG5vdCB0cmFja2VkICovCi0JCWJhc2VsZW4gPSBmaWxsX2RpcmVjdG9yeSgmZGlyLCBwYXRoc3BlYyk7CisJCWJhc2VsZW4gPSBmaWxsX2RpcmVjdG9yeSgmZGlyLCBpbXBsaWNpdF9kb3QgPyBOVUxMIDogcGF0aHNwZWMpOwogCQlpZiAocGF0aHNwZWMpCi0JCQlzZWVuID0gcHJ1bmVfZGlyZWN0b3J5KCZkaXIsIHBhdGhzcGVjLCBiYXNlbGVuKTsKKwkJCXNlZW4gPSBwcnVuZV9kaXJlY3RvcnkoJmRpciwgcGF0aHNwZWMsIGJhc2VsZW4sCisJCQkJCWltcGxpY2l0X2RvdCA/IFdBUk5fSU1QTElDSVRfRE9UIDogMCk7CiAJfQogCiAJaWYgKHJlZnJlc2hfb25seSkgewogCQlyZWZyZXNoKHZlcmJvc2UsIHBhdGhzcGVjKTsKIAkJZ290byBmaW5pc2g7CiAJfQorCWlmIChpbXBsaWNpdF9kb3QgJiYgcHJlZml4KQorCQlyZWZyZXNoX2NhY2hlKFJFRlJFU0hfUVVJRVQpOwogCiAJaWYgKHBhdGhzcGVjKSB7CiAJCWludCBpOwotCQlzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrIGNoZWNrOwogCi0JCXBhdGhfZXhjbHVkZV9jaGVja19pbml0KCZjaGVjaywgJmRpcik7CiAJCWlmICghc2VlbikKLQkJCXNlZW4gPSBmaW5kX3VzZWRfcGF0aHNwZWMocGF0aHNwZWMpOworCQkJc2VlbiA9IGZpbmRfcGF0aHNwZWNzX21hdGNoaW5nX2FnYWluc3RfaW5kZXgocGF0aHNwZWMpOwogCQlmb3IgKGkgPSAwOyBwYXRoc3BlY1tpXTsgaSsrKSB7CiAJCQlpZiAoIXNlZW5baV0gJiYgcGF0aHNwZWNbaV1bMF0KIAkJCSAgICAmJiAhZmlsZV9leGlzdHMocGF0aHNwZWNbaV0pKSB7CiAJCQkJaWYgKGlnbm9yZV9taXNzaW5nKSB7CiAJCQkJCWludCBkdHlwZSA9IERUX1VOS05PV047Ci0JCQkJCWlmIChwYXRoX2V4Y2x1ZGVkKCZjaGVjaywgcGF0aHNwZWNbaV0sIC0xLCAmZHR5cGUpKQorCQkJCQlpZiAoaXNfZXhjbHVkZWQoJmRpciwgcGF0aHNwZWNbaV0sICZkdHlwZSkpCiAJCQkJCQlkaXJfYWRkX2lnbm9yZWQoJmRpciwgcGF0aHNwZWNbaV0sIHN0cmxlbihwYXRoc3BlY1tpXSkpOwogCQkJCX0gZWxzZQogCQkJCQlkaWUoXygicGF0aHNwZWMgJyVzJyBkaWQgbm90IG1hdGNoIGFueSBmaWxlcyIpLApAQCAtNDYyLDEzICs1NzQsMjQgQEAKIAkJCX0KIAkJfQogCQlmcmVlKHNlZW4pOwotCQlwYXRoX2V4Y2x1ZGVfY2hlY2tfY2xlYXIoJmNoZWNrKTsKIAl9CiAKIAlwbHVnX2J1bGtfY2hlY2tpbigpOwogCi0JZXhpdF9zdGF0dXMgfD0gYWRkX2ZpbGVzX3RvX2NhY2hlKHByZWZpeCwgcGF0aHNwZWMsIGZsYWdzKTsKKwlpZiAoKGZsYWdzICYgQUREX0NBQ0hFX0lNUExJQ0lUX0RPVCkgJiYgcHJlZml4KSB7CisJCS8qCisJCSAqIENoZWNrIGZvciBtb2RpZmllZCBmaWxlcyB0aHJvdWdob3V0IHRoZSB3b3JrdHJlZSBzbworCQkgKiB1cGRhdGVfY2FsbGJhY2sgaGFzIGEgY2hhbmNlIHRvIHdhcm4gYWJvdXQgY2hhbmdlcworCQkgKiBvdXRzaWRlIHRoZSBjd2QuCisJCSAqLworCQl1cGRhdGVfZGF0YS5pbXBsaWNpdF9kb3QgPSBwcmVmaXg7CisJCXVwZGF0ZV9kYXRhLmltcGxpY2l0X2RvdF9sZW4gPSBzdHJsZW4ocHJlZml4KTsKKwkJcGF0aHNwZWMgPSBOVUxMOworCX0KKwl1cGRhdGVfZGF0YS5mbGFncyA9IGZsYWdzICYgfkFERF9DQUNIRV9JTVBMSUNJVF9ET1Q7CisJdXBkYXRlX2ZpbGVzX2luX2NhY2hlKHByZWZpeCwgcGF0aHNwZWMsICZ1cGRhdGVfZGF0YSk7CiAKKwlleGl0X3N0YXR1cyB8PSAhIXVwZGF0ZV9kYXRhLmFkZF9lcnJvcnM7CiAJaWYgKGFkZF9uZXdfZmlsZXMpCiAJCWV4aXRfc3RhdHVzIHw9IGFkZF9maWxlcygmZGlyLCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vYXBwbHkuYyBiL2J1aWx0aW4vYXBwbHkuYwppbmRleCAwODBjZTJlLi4wZTliNjMxIDEwMDY0NAotLS0gYS9idWlsdGluL2FwcGx5LmMKKysrIGIvYnVpbHRpbi9hcHBseS5jCkBAIC05MDYsNyArOTA2LDcgQEAKIAkJCXBhdGNoLT5vbGRfbmFtZSA9IG5hbWU7CiAJCX0gZWxzZSB7CiAJCQlwYXRjaC0+b2xkX25hbWUgPSBuYW1lOwotCQkJcGF0Y2gtPm5ld19uYW1lID0geHN0cmR1cChuYW1lKTsKKwkJCXBhdGNoLT5uZXdfbmFtZSA9IG51bGxfc3RyZHVwKG5hbWUpOwogCQl9CiAJfQogCWlmICghbmFtZSkKQEAgLTE5MjEsNyArMTkyMSw3IEBACiB9CiAKIC8qCi0gKiBSZWFkIHRoZSBwYXRjaCB0ZXh0IGluICJidWZmZXIiIHRhaHQgZXh0ZW5kcyBmb3IgInNpemUiIGJ5dGVzOyBzdG9wCisgKiBSZWFkIHRoZSBwYXRjaCB0ZXh0IGluICJidWZmZXIiIHRoYXQgZXh0ZW5kcyBmb3IgInNpemUiIGJ5dGVzOyBzdG9wCiAgKiByZWFkaW5nIGFmdGVyIHNlZWluZyBhIHNpbmdsZSBwYXRjaCAoaS5lLiBjaGFuZ2VzIHRvIGEgc2luZ2xlIGZpbGUpLgogICogQ3JlYXRlIGZyYWdtZW50cyAoaS5lLiBwYXRjaCBodW5rcykgYW5kIGhhbmcgdGhlbSB0byB0aGUgZ2l2ZW4gcGF0Y2guCiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb25zdW1lZCwgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiBjYWxsIHVzCkBAIC0yMTE3LDEwICsyMTE3LDEwIEBACiAKIAkvKgogCSAqIEFkanVzdCB0aGUgY29tbW9uIGNvbnRleHQgbGluZXMgaW4gcG9zdGltYWdlLiBUaGlzIGNhbiBiZQotCSAqIGRvbmUgaW4tcGxhY2Ugd2hlbiB3ZSBhcmUganVzdCBkb2luZyB3aGl0ZXNwYWNlIGZpeGluZywKLQkgKiB3aGljaCBkb2VzIG5vdCBtYWtlIHRoZSBzdHJpbmcgZ3JvdywgYnV0IG5lZWRzIGEgbmV3IGJ1ZmZlcgotCSAqIHdoZW4gaWdub3Jpbmcgd2hpdGVzcGFjZSBjYXVzZXMgdGhlIHVwZGF0ZSwgc2luY2UgaW4gdGhpcyBjYXNlCi0JICogd2UgY291bGQgaGF2ZSBlLmcuIHRhYnMgY29udmVydGVkIHRvIG11bHRpcGxlIHNwYWNlcy4KKwkgKiBkb25lIGluLXBsYWNlIHdoZW4gd2UgYXJlIHNocmlua2luZyBpdCB3aXRoIHdoaXRlc3BhY2UKKwkgKiBmaXhpbmcsIGJ1dCBuZWVkcyBhIG5ldyBidWZmZXIgd2hlbiBpZ25vcmluZyB3aGl0ZXNwYWNlIG9yCisJICogZXhwYW5kaW5nIGxlYWRpbmcgdGFicyB0byBzcGFjZXMuCisJICoKIAkgKiBXZSB0cnVzdCB0aGUgY2FsbGVyIHRvIHRlbGwgdXMgaWYgdGhlIHVwZGF0ZSBjYW4gYmUgZG9uZQogCSAqIGluIHBsYWNlIChwb3N0bGVuPT0wKSBvciBub3QuCiAJICovCkBAIC0yMTg1LDcgKzIxODUsNyBAQAogCWludCBpOwogCWNoYXIgKmZpeGVkX2J1ZiwgKmJ1ZiwgKm9yaWcsICp0YXJnZXQ7CiAJc3RydWN0IHN0cmJ1ZiBmaXhlZDsKLQlzaXplX3QgZml4ZWRfbGVuOworCXNpemVfdCBmaXhlZF9sZW4sIHBvc3RsZW47CiAJaW50IHByZWltYWdlX2xpbWl0OwogCiAJaWYgKHByZWltYWdlLT5uciArIHRyeV9sbm8gPD0gaW1nLT5ucikgewpAQCAtMjMzNSw2ICsyMzM1LDcgQEAKIAlzdHJidWZfaW5pdCgmZml4ZWQsIHByZWltYWdlLT5sZW4gKyAxKTsKIAlvcmlnID0gcHJlaW1hZ2UtPmJ1ZjsKIAl0YXJnZXQgPSBpbWctPmJ1ZiArIHRyeTsKKwlwb3N0bGVuID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgcHJlaW1hZ2VfbGltaXQ7IGkrKykgewogCQlzaXplX3Qgb2xkbGVuID0gcHJlaW1hZ2UtPmxpbmVbaV0ubGVuOwogCQlzaXplX3QgdGd0bGVuID0gaW1nLT5saW5lW3RyeV9sbm8gKyBpXS5sZW47CkBAIC0yMzYyLDYgKzIzNjMsNyBAQAogCQltYXRjaCA9ICh0Z3RmaXgubGVuID09IGZpeGVkLmxlbiAtIGZpeHN0YXJ0ICYmCiAJCQkgIW1lbWNtcCh0Z3RmaXguYnVmLCBmaXhlZC5idWYgKyBmaXhzdGFydCwKIAkJCQkJICAgICBmaXhlZC5sZW4gLSBmaXhzdGFydCkpOworCQlwb3N0bGVuICs9IHRndGZpeC5sZW47CiAKIAkJc3RyYnVmX3JlbGVhc2UoJnRndGZpeCk7CiAJCWlmICghbWF0Y2gpCkBAIC0yMzk5LDggKzI0MDEsMTAgQEAKIAkgKiBodW5rIG1hdGNoLiAgVXBkYXRlIHRoZSBjb250ZXh0IGxpbmVzIGluIHRoZSBwb3N0aW1hZ2UuCiAJICovCiAJZml4ZWRfYnVmID0gc3RyYnVmX2RldGFjaCgmZml4ZWQsICZmaXhlZF9sZW4pOworCWlmIChwb3N0bGVuIDwgcG9zdGltYWdlLT5sZW4pCisJCXBvc3RsZW4gPSAwOwogCXVwZGF0ZV9wcmVfcG9zdF9pbWFnZXMocHJlaW1hZ2UsIHBvc3RpbWFnZSwKLQkJCSAgICAgICBmaXhlZF9idWYsIGZpeGVkX2xlbiwgMCk7CisJCQkgICAgICAgZml4ZWRfYnVmLCBmaXhlZF9sZW4sIHBvc3RsZW4pOwogCXJldHVybiAxOwogCiAgdW5tYXRjaF9leGl0OgpAQCAtMzAyNSw3ICszMDI5LDcgQEAKICAqCiAgKiBUaGUgbGF0dGVyIGlzIG5lZWRlZCB0byBkZWFsIHdpdGggYSBjYXNlIHdoZXJlIHR3byBwYXRocyBBIGFuZCBCCiAgKiBhcmUgc3dhcHBlZCBieSBmaXJzdCByZW5hbWluZyBBIHRvIEIgYW5kIHRoZW4gcmVuYW1pbmcgQiB0byBBOwotICogbW92aW5nIEEgdG8gQiBzaG91bGQgbm90IGJlIHByZXZlbnRlZCBkdWUgdG8gcHJlc2Vuc2Ugb2YgQiBhcyB3ZQorICogbW92aW5nIEEgdG8gQiBzaG91bGQgbm90IGJlIHByZXZlbnRlZCBkdWUgdG8gcHJlc2VuY2Ugb2YgQiBhcyB3ZQogICogd2lsbCByZW1vdmUgaXQgaW4gYSBsYXRlciBwYXRjaC4KICAqLwogI2RlZmluZSBQQVRIX1RPX0JFX0RFTEVURUQgKChzdHJ1Y3QgcGF0Y2ggKikgLTIpCkBAIC0zNTA5LDcgKzM1MTMsNyBAQAogCSAqCiAJICogQSBwYXRjaCB0byBzd2FwLXJlbmFtZSBiZXR3ZWVuIEEgYW5kIEIgd291bGQgZmlyc3QgcmVuYW1lIEEKIAkgKiB0byBCIGFuZCB0aGVuIHJlbmFtZSBCIHRvIEEuICBXaGlsZSBhcHBseWluZyB0aGUgZmlyc3Qgb25lLAotCSAqIHRoZSBwcmVzZW5zZSBvZiBCIHNob3VsZCBub3Qgc3RvcCBBIGZyb20gZ2V0dGluZyByZW5hbWVkIHRvCisJICogdGhlIHByZXNlbmNlIG9mIEIgc2hvdWxkIG5vdCBzdG9wIEEgZnJvbSBnZXR0aW5nIHJlbmFtZWQgdG8KIAkgKiBCOyBhc2sgdG9fYmVfZGVsZXRlZCgpIGFib3V0IHRoZSBsYXRlciByZW5hbWUuICBSZW1vdmFsIG9mCiAJICogQiBhbmQgcmVuYW1lIGZyb20gQSB0byBCIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGJ5IGFza2luZwogCSAqIHdhc19kZWxldGVkKCkuCkBAIC0zNTIxLDcgKzM1MjUsNyBAQAogCQlva19pZl9leGlzdHMgPSAwOwogCiAJaWYgKG5ld19uYW1lICYmCi0JICAgICgoMCA8IHBhdGNoLT5pc19uZXcpIHwgKDAgPCBwYXRjaC0+aXNfcmVuYW1lKSB8IHBhdGNoLT5pc19jb3B5KSkgeworCSAgICAoKDAgPCBwYXRjaC0+aXNfbmV3KSB8fCBwYXRjaC0+aXNfcmVuYW1lIHx8IHBhdGNoLT5pc19jb3B5KSkgewogCQlpbnQgZXJyID0gY2hlY2tfdG9fY3JlYXRlKG5ld19uYW1lLCBva19pZl9leGlzdHMpOwogCiAJCWlmIChlcnIgJiYgdGhyZWV3YXkpIHsKQEAgLTM2MDAsNiArMzYwNCw0MCBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IHByZWltYWdlX3NoYTFfaW5fZ2l0bGlua19wYXRjaChzdHJ1Y3QgcGF0Y2ggKnAsIHVuc2lnbmVkIGNoYXIgc2hhMVsyMF0pCit7CisJLyoKKwkgKiBBIHVzYWJsZSBnaXRsaW5rIHBhdGNoIGhhcyBvbmx5IG9uZSBmcmFnbWVudCAoaHVuaykgdGhhdCBsb29rcyBsaWtlOgorCSAqIEBAIC0xICsxIEBACisJICogLVN1YnByb2plY3QgY29tbWl0IDxvbGQgc2hhMT4KKwkgKiArU3VicHJvamVjdCBjb21taXQgPG5ldyBzaGExPgorCSAqIG9yCisJICogQEAgLTEgKzAsMCBAQAorCSAqIC1TdWJwcm9qZWN0IGNvbW1pdCA8b2xkIHNoYTE+CisJICogZm9yIGEgcmVtb3ZhbCBwYXRjaC4KKwkgKi8KKwlzdHJ1Y3QgZnJhZ21lbnQgKmh1bmsgPSBwLT5mcmFnbWVudHM7CisJc3RhdGljIGNvbnN0IGNoYXIgaGVhZGluZ1tdID0gIi1TdWJwcm9qZWN0IGNvbW1pdCAiOworCWNoYXIgKnByZWltYWdlOworCisJaWYgKC8qIGRvZXMgdGhlIHBhdGNoIGhhdmUgb25seSBvbmUgaHVuaz8gKi8KKwkgICAgaHVuayAmJiAhaHVuay0+bmV4dCAmJgorCSAgICAvKiBpcyBpdHMgcHJlaW1hZ2Ugb25lIGxpbmU/ICovCisJICAgIGh1bmstPm9sZHBvcyA9PSAxICYmIGh1bmstPm9sZGxpbmVzID09IDEgJiYKKwkgICAgLyogZG9lcyBwcmVpbWFnZSBiZWdpbiB3aXRoIHRoZSBoZWFkaW5nPyAqLworCSAgICAocHJlaW1hZ2UgPSBtZW1jaHIoaHVuay0+cGF0Y2gsICdcbicsIGh1bmstPnNpemUpKSAhPSBOVUxMICYmCisJICAgICFwcmVmaXhjbXAoKytwcmVpbWFnZSwgaGVhZGluZykgJiYKKwkgICAgLyogZG9lcyBpdCByZWNvcmQgZnVsbCBTSEEtMT8gKi8KKwkgICAgIWdldF9zaGExX2hleChwcmVpbWFnZSArIHNpemVvZihoZWFkaW5nKSAtIDEsIHNoYTEpICYmCisJICAgIHByZWltYWdlW3NpemVvZihoZWFkaW5nKSArIDQwIC0gMV0gPT0gJ1xuJyAmJgorCSAgICAvKiBkb2VzIHRoZSBhYmJyZXZpYXRlZCBuYW1lIG9uIHRoZSBpbmRleCBsaW5lIGFncmVlIHdpdGggaXQ/ICovCisJICAgICFwcmVmaXhjbXAocHJlaW1hZ2UgKyBzaXplb2YoaGVhZGluZykgLSAxLCBwLT5vbGRfc2hhMV9wcmVmaXgpKQorCQlyZXR1cm4gMDsgLyogaXQgYWxsIGxvb2tzIGZpbmUgKi8KKworCS8qIHdlIG1heSBoYXZlIGZ1bGwgb2JqZWN0IG5hbWUgb24gdGhlIGluZGV4IGxpbmUgKi8KKwlyZXR1cm4gZ2V0X3NoYTFfaGV4KHAtPm9sZF9zaGExX3ByZWZpeCwgc2hhMSk7Cit9CisKIC8qIEJ1aWxkIGFuIGluZGV4IHRoYXQgY29udGFpbnMgdGhlIGp1c3QgdGhlIGZpbGVzIG5lZWRlZCBmb3IgYSAzd2F5IG1lcmdlICovCiBzdGF0aWMgdm9pZCBidWlsZF9mYWtlX2FuY2VzdG9yKHN0cnVjdCBwYXRjaCAqbGlzdCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CkBAIC0zNjIwLDggKzM2NTgsMTAgQEAKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChTX0lTR0lUTElOSyhwYXRjaC0+b2xkX21vZGUpKSB7Ci0JCQlpZiAoZ2V0X3NoYTFfaGV4KHBhdGNoLT5vbGRfc2hhMV9wcmVmaXgsIHNoYTEpKQotCQkJCWRpZSgic3VibW91bGUgY2hhbmdlIGZvciAlcyB3aXRob3V0IGZ1bGwgaW5kZXggbmFtZSIsCisJCQlpZiAoIXByZWltYWdlX3NoYTFfaW5fZ2l0bGlua19wYXRjaChwYXRjaCwgc2hhMSkpCisJCQkJOyAvKiBvaywgdGhlIHRleHR1YWwgcGFydCBsb29rcyBzYW5lICovCisJCQllbHNlCisJCQkJZGllKCJzaGExIGluZm9ybWF0aW9uIGlzIGxhY2tpbmcgb3IgdXNlbGVzcyBmb3Igc3VibW91bGUgJXMiLAogCQkJCSAgICBuYW1lKTsKIAkJfSBlbHNlIGlmICghZ2V0X3NoYTFfYmxvYihwYXRjaC0+b2xkX3NoYTFfcHJlZml4LCBzaGExKSkgewogCQkJOyAvKiBvayAqLwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9hcmNoaXZlLmMgYi9idWlsdGluL2FyY2hpdmUuYwppbmRleCA5YTFjZmQzLi40OTE3OGYxIDEwMDY0NAotLS0gYS9idWlsdGluL2FyY2hpdmUuYworKysgYi9idWlsdGluL2FyY2hpdmUuYwpAQCAtMjcsOCArMjcsOCBAQAogCQkJICAgICAgIGNvbnN0IGNoYXIgKnJlbW90ZSwgY29uc3QgY2hhciAqZXhlYywKIAkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lX2hpbnQpCiB7Ci0JY2hhciBidWZbTEFSR0VfUEFDS0VUX01BWF07Ci0JaW50IGZkWzJdLCBpLCBsZW4sIHJ2OworCWNoYXIgKmJ1ZjsKKwlpbnQgZmRbMl0sIGksIHJ2OwogCXN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydDsKIAlzdHJ1Y3QgcmVtb3RlICpfcmVtb3RlOwogCkBAIC01MywyMSArNTMsMTggQEAKIAkJcGFja2V0X3dyaXRlKGZkWzFdLCAiYXJndW1lbnQgJXNcbiIsIGFyZ3ZbaV0pOwogCXBhY2tldF9mbHVzaChmZFsxXSk7CiAKLQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKGZkWzBdLCBidWYsIHNpemVvZihidWYpKTsKLQlpZiAoIWxlbikKKwlidWYgPSBwYWNrZXRfcmVhZF9saW5lKGZkWzBdLCBOVUxMKTsKKwlpZiAoIWJ1ZikKIAkJZGllKF8oImdpdCBhcmNoaXZlOiBleHBlY3RlZCBBQ0svTkFLLCBnb3QgRU9GIikpOwotCWlmIChidWZbbGVuLTFdID09ICdcbicpCi0JCWJ1ZlstLWxlbl0gPSAwOwogCWlmIChzdHJjbXAoYnVmLCAiQUNLIikpIHsKLQkJaWYgKGxlbiA+IDUgJiYgIXByZWZpeGNtcChidWYsICJOQUNLICIpKQorCQlpZiAoIXByZWZpeGNtcChidWYsICJOQUNLICIpKQogCQkJZGllKF8oImdpdCBhcmNoaXZlOiBOQUNLICVzIiksIGJ1ZiArIDUpOwotCQlpZiAobGVuID4gNCAmJiAhcHJlZml4Y21wKGJ1ZiwgIkVSUiAiKSkKKwkJaWYgKCFwcmVmaXhjbXAoYnVmLCAiRVJSICIpKQogCQkJZGllKF8oInJlbW90ZSBlcnJvcjogJXMiKSwgYnVmICsgNCk7CiAJCWRpZShfKCJnaXQgYXJjaGl2ZTogcHJvdG9jb2wgZXJyb3IiKSk7CiAJfQogCi0JbGVuID0gcGFja2V0X3JlYWRfbGluZShmZFswXSwgYnVmLCBzaXplb2YoYnVmKSk7Ci0JaWYgKGxlbikKKwlpZiAocGFja2V0X3JlYWRfbGluZShmZFswXSwgTlVMTCkpCiAJCWRpZShfKCJnaXQgYXJjaGl2ZTogZXhwZWN0ZWQgYSBmbHVzaCIpKTsKIAogCS8qIE5vdywgc3RhcnQgcmVhZGluZyBmcm9tIGZkWzBdIGFuZCBzcGl0IGl0IG91dCB0byBzdGRvdXQgKi8KZGlmZiAtLWdpdCBhL2J1aWx0aW4vYmxhbWUuYyBiL2J1aWx0aW4vYmxhbWUuYwppbmRleCBjZmFlNTY5Li4wNzlkY2QzIDEwMDY0NAotLS0gYS9idWlsdGluL2JsYW1lLmMKKysrIGIvYnVpbHRpbi9ibGFtZS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogI2luY2x1ZGUgInV0ZjguaCIKICNpbmNsdWRlICJ1c2VyZGlmZi5oIgorI2luY2x1ZGUgImxpbmUtcmFuZ2UuaCIKIAogc3RhdGljIGNoYXIgYmxhbWVfdXNhZ2VbXSA9IE5fKCJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIik7CiAKQEAgLTQyLDYgKzQzLDcgQEAKIHN0YXRpYyBpbnQgaW5jcmVtZW50YWw7CiBzdGF0aWMgaW50IHhkbF9vcHRzOwogc3RhdGljIGludCBhYmJyZXYgPSAtMTsKK3N0YXRpYyBpbnQgbm9fd2hvbGVfZmlsZV9yZW5hbWU7CiAKIHN0YXRpYyBlbnVtIGRhdGVfbW9kZSBibGFtZV9kYXRlX21vZGUgPSBEQVRFX0lTTzg2MDE7CiBzdGF0aWMgc2l6ZV90IGJsYW1lX2RhdGVfd2lkdGg7CkBAIC01NjUsMTEgKzU2NywxNiBAQAogCWRzdC0+c2NvcmUgPSAwOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqbnRoX2xpbmUoc3RydWN0IHNjb3JlYm9hcmQgKnNiLCBpbnQgbG5vKQorc3RhdGljIGNvbnN0IGNoYXIgKm50aF9saW5lKHN0cnVjdCBzY29yZWJvYXJkICpzYiwgbG9uZyBsbm8pCiB7CiAJcmV0dXJuIHNiLT5maW5hbF9idWYgKyBzYi0+bGluZW5vW2xub107CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICpudGhfbGluZV9jYih2b2lkICpkYXRhLCBsb25nIGxubykKK3sKKwlyZXR1cm4gbnRoX2xpbmUoKHN0cnVjdCBzY29yZWJvYXJkICopZGF0YSwgbG5vKTsKK30KKwogLyoKICAqIEl0IGlzIGtub3duIHRoYXQgbGluZXMgYmV0d2VlbiB0bG5vIHRvIHNhbWUgY2FtZSBmcm9tIHBhcmVudCwgYW5kIGUKICAqIGhhcyBhbiBvdmVybGFwIHdpdGggdGhhdCByYW5nZS4gIGl0IGFsc28gaXMga25vd24gdGhhdCBwYXJlbnQncwpAQCAtMTIyNiw3ICsxMjMzLDcgQEAKIAkgKiBUaGUgZmlyc3QgcGFzcyBsb29rcyBmb3IgdW5yZW5hbWVkIHBhdGggdG8gb3B0aW1pemUgZm9yCiAJICogY29tbW9uIGNhc2VzLCB0aGVuIHdlIGxvb2sgZm9yIHJlbmFtZXMgaW4gdGhlIHNlY29uZCBwYXNzLgogCSAqLwotCWZvciAocGFzcyA9IDA7IHBhc3MgPCAyOyBwYXNzKyspIHsKKwlmb3IgKHBhc3MgPSAwOyBwYXNzIDwgMiAtIG5vX3dob2xlX2ZpbGVfcmVuYW1lOyBwYXNzKyspIHsKIAkJc3RydWN0IG9yaWdpbiAqKCpmaW5kKShzdHJ1Y3Qgc2NvcmVib2FyZCAqLAogCQkJCSAgICAgICBzdHJ1Y3QgY29tbWl0ICosIHN0cnVjdCBvcmlnaW4gKik7CiAJCWZpbmQgPSBwYXNzID8gZmluZF9yZW5hbWUgOiBmaW5kX29yaWdpbjsKQEAgLTEzMjEsMzAgKzEzMjgsMzEgQEAKICAqIEluZm9ybWF0aW9uIG9uIGNvbW1pdHMsIHVzZWQgZm9yIG91dHB1dC4KICAqLwogc3RydWN0IGNvbW1pdF9pbmZvIHsKLQljb25zdCBjaGFyICphdXRob3I7Ci0JY29uc3QgY2hhciAqYXV0aG9yX21haWw7CisJc3RydWN0IHN0cmJ1ZiBhdXRob3I7CisJc3RydWN0IHN0cmJ1ZiBhdXRob3JfbWFpbDsKIAl1bnNpZ25lZCBsb25nIGF1dGhvcl90aW1lOwotCWNvbnN0IGNoYXIgKmF1dGhvcl90ejsKKwlzdHJ1Y3Qgc3RyYnVmIGF1dGhvcl90ejsKIAogCS8qIGZpbGxlZCBvbmx5IHdoZW4gYXNrZWQgZm9yIGRldGFpbHMgKi8KLQljb25zdCBjaGFyICpjb21taXR0ZXI7Ci0JY29uc3QgY2hhciAqY29tbWl0dGVyX21haWw7CisJc3RydWN0IHN0cmJ1ZiBjb21taXR0ZXI7CisJc3RydWN0IHN0cmJ1ZiBjb21taXR0ZXJfbWFpbDsKIAl1bnNpZ25lZCBsb25nIGNvbW1pdHRlcl90aW1lOwotCWNvbnN0IGNoYXIgKmNvbW1pdHRlcl90ejsKKwlzdHJ1Y3Qgc3RyYnVmIGNvbW1pdHRlcl90ejsKIAotCWNvbnN0IGNoYXIgKnN1bW1hcnk7CisJc3RydWN0IHN0cmJ1ZiBzdW1tYXJ5OwogfTsKIAogLyoKICAqIFBhcnNlIGF1dGhvci9jb21taXR0ZXIgbGluZSBpbiB0aGUgY29tbWl0IG9iamVjdCBidWZmZXIKICAqLwogc3RhdGljIHZvaWQgZ2V0X2FjX2xpbmUoY29uc3QgY2hhciAqaW5idWYsIGNvbnN0IGNoYXIgKndoYXQsCi0JCQlpbnQgcGVyc29uX2xlbiwgY2hhciAqcGVyc29uLAotCQkJaW50IG1haWxfbGVuLCBjaGFyICptYWlsLAotCQkJdW5zaWduZWQgbG9uZyAqdGltZSwgY29uc3QgY2hhciAqKnR6KQorCXN0cnVjdCBzdHJidWYgKm5hbWUsIHN0cnVjdCBzdHJidWYgKm1haWwsCisJdW5zaWduZWQgbG9uZyAqdGltZSwgc3RydWN0IHN0cmJ1ZiAqdHopCiB7Ci0JaW50IGxlbiwgdHpsZW4sIG1haWxsZW47Ci0JY2hhciAqdG1wLCAqZW5kcCwgKnRpbWVwb3MsICptYWlscG9zOworCXN0cnVjdCBpZGVudF9zcGxpdCBpZGVudDsKKwlzaXplX3QgbGVuLCBtYWlsbGVuLCBuYW1lbGVuOworCWNoYXIgKnRtcCwgKmVuZHA7CisJY29uc3QgY2hhciAqbmFtZWJ1ZiwgKm1haWxidWY7CiAKIAl0bXAgPSBzdHJzdHIoaW5idWYsIHdoYXQpOwogCWlmICghdG1wKQpAQCAtMTM1NSw2OSArMTM2Myw2NiBAQAogCQlsZW4gPSBzdHJsZW4odG1wKTsKIAllbHNlCiAJCWxlbiA9IGVuZHAgLSB0bXA7Ci0JaWYgKHBlcnNvbl9sZW4gPD0gbGVuKSB7CisKKwlpZiAoc3BsaXRfaWRlbnRfbGluZSgmaWRlbnQsIHRtcCwgbGVuKSkgewogCWVycm9yX291dDoKIAkJLyogVWdoICovCi0JCSp0eiA9ICIodW5rbm93bikiOwotCQlzdHJjcHkocGVyc29uLCAqdHopOwotCQlzdHJjcHkobWFpbCwgKnR6KTsKKwkJdG1wID0gIih1bmtub3duKSI7CisJCXN0cmJ1Zl9hZGRzdHIobmFtZSwgdG1wKTsKKwkJc3RyYnVmX2FkZHN0cihtYWlsLCB0bXApOworCQlzdHJidWZfYWRkc3RyKHR6LCB0bXApOwogCQkqdGltZSA9IDA7CiAJCXJldHVybjsKIAl9Ci0JbWVtY3B5KHBlcnNvbiwgdG1wLCBsZW4pOwogCi0JdG1wID0gcGVyc29uOwotCXRtcCArPSBsZW47Ci0JKnRtcCA9IDA7Ci0Jd2hpbGUgKHBlcnNvbiA8IHRtcCAmJiAqdG1wICE9ICcgJykKLQkJdG1wLS07Ci0JaWYgKHRtcCA8PSBwZXJzb24pCi0JCWdvdG8gZXJyb3Jfb3V0OwotCSp0eiA9IHRtcCsxOwotCXR6bGVuID0gKHBlcnNvbitsZW4pLSh0bXArMSk7CisJbmFtZWxlbiA9IGlkZW50Lm5hbWVfZW5kIC0gaWRlbnQubmFtZV9iZWdpbjsKKwluYW1lYnVmID0gaWRlbnQubmFtZV9iZWdpbjsKIAotCSp0bXAgPSAwOwotCXdoaWxlIChwZXJzb24gPCB0bXAgJiYgKnRtcCAhPSAnICcpCi0JCXRtcC0tOwotCWlmICh0bXAgPD0gcGVyc29uKQotCQlnb3RvIGVycm9yX291dDsKLQkqdGltZSA9IHN0cnRvdWwodG1wLCBOVUxMLCAxMCk7Ci0JdGltZXBvcyA9IHRtcDsKKwltYWlsbGVuID0gaWRlbnQubWFpbF9lbmQgLSBpZGVudC5tYWlsX2JlZ2luOworCW1haWxidWYgPSBpZGVudC5tYWlsX2JlZ2luOwogCi0JKnRtcCA9IDA7Ci0Jd2hpbGUgKHBlcnNvbiA8IHRtcCAmJiAhKCp0bXAgPT0gJyAnICYmIHRtcFsxXSA9PSAnPCcpKQotCQl0bXAtLTsKLQlpZiAodG1wIDw9IHBlcnNvbikKLQkJcmV0dXJuOwotCW1haWxwb3MgPSB0bXAgKyAxOwotCSp0bXAgPSAwOwotCW1haWxsZW4gPSB0aW1lcG9zIC0gdG1wOwotCW1lbWNweShtYWlsLCBtYWlscG9zLCBtYWlsbGVuKTsKKwlpZiAoaWRlbnQuZGF0ZV9iZWdpbiAmJiBpZGVudC5kYXRlX2VuZCkKKwkJKnRpbWUgPSBzdHJ0b3VsKGlkZW50LmRhdGVfYmVnaW4sIE5VTEwsIDEwKTsKKwllbHNlCisJCSp0aW1lID0gMDsKIAotCWlmICghbWFpbG1hcC5ucikKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBtYWlsbWFwIGV4cGFuc2lvbiBtYXkgbWFrZSB0aGUgbmFtZSBsb25nZXIuCi0JICogbWFrZSByb29tIGJ5IHB1c2hpbmcgc3R1ZmYgZG93bi4KLQkgKi8KLQl0bXAgPSBwZXJzb24gKyBwZXJzb25fbGVuIC0gKHR6bGVuICsgMSk7Ci0JbWVtbW92ZSh0bXAsICp0eiwgdHpsZW4pOwotCXRtcFt0emxlbl0gPSAwOwotCSp0eiA9IHRtcDsKKwlpZiAoaWRlbnQudHpfYmVnaW4gJiYgaWRlbnQudHpfZW5kKQorCQlzdHJidWZfYWRkKHR6LCBpZGVudC50el9iZWdpbiwgaWRlbnQudHpfZW5kIC0gaWRlbnQudHpfYmVnaW4pOworCWVsc2UKKwkJc3RyYnVmX2FkZHN0cih0eiwgIih1bmtub3duKSIpOwogCiAJLyoKIAkgKiBOb3csIGNvbnZlcnQgYm90aCBuYW1lIGFuZCBlLW1haWwgdXNpbmcgbWFpbG1hcAogCSAqLwotCWlmIChtYXBfdXNlcigmbWFpbG1hcCwgbWFpbCsxLCBtYWlsX2xlbi0xLCBwZXJzb24sIHRtcC1wZXJzb24tMSkpIHsKLQkJLyogQWRkIGEgdHJhaWxpbmcgJz4nIHRvIGVtYWlsLCBzaW5jZSBtYXBfdXNlciByZXR1cm5zIHBsYWluIGVtYWlscwotCQkgICBOb3RlOiBJdCBhbHJlYWR5IGhhcyAnPCcsIHNpbmNlIHdlIHJlcGxhY2UgZnJvbSBtYWlsKzEgKi8KLQkJbWFpbHBvcyA9IG1lbWNocihtYWlsLCAnXDAnLCBtYWlsX2xlbik7Ci0JCWlmIChtYWlscG9zICYmIG1haWxwb3MtbWFpbCA8IG1haWxfbGVuIC0gMSkgewotCQkJKm1haWxwb3MgPSAnPic7Ci0JCQkqKG1haWxwb3MrMSkgPSAnXDAnOwotCQl9Ci0JfQorCW1hcF91c2VyKCZtYWlsbWFwLCAmbWFpbGJ1ZiwgJm1haWxsZW4sCisJCSAmbmFtZWJ1ZiwgJm5hbWVsZW4pOworCisJc3RyYnVmX2FkZGYobWFpbCwgIjwlLipzPiIsIChpbnQpbWFpbGxlbiwgbWFpbGJ1Zik7CisJc3RyYnVmX2FkZChuYW1lLCBuYW1lYnVmLCBuYW1lbGVuKTsKK30KKworc3RhdGljIHZvaWQgY29tbWl0X2luZm9faW5pdChzdHJ1Y3QgY29tbWl0X2luZm8gKmNpKQoreworCisJc3RyYnVmX2luaXQoJmNpLT5hdXRob3IsIDApOworCXN0cmJ1Zl9pbml0KCZjaS0+YXV0aG9yX21haWwsIDApOworCXN0cmJ1Zl9pbml0KCZjaS0+YXV0aG9yX3R6LCAwKTsKKwlzdHJidWZfaW5pdCgmY2ktPmNvbW1pdHRlciwgMCk7CisJc3RyYnVmX2luaXQoJmNpLT5jb21taXR0ZXJfbWFpbCwgMCk7CisJc3RyYnVmX2luaXQoJmNpLT5jb21taXR0ZXJfdHosIDApOworCXN0cmJ1Zl9pbml0KCZjaS0+c3VtbWFyeSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbW1pdF9pbmZvX2Rlc3Ryb3koc3RydWN0IGNvbW1pdF9pbmZvICpjaSkKK3sKKworCXN0cmJ1Zl9yZWxlYXNlKCZjaS0+YXV0aG9yKTsKKwlzdHJidWZfcmVsZWFzZSgmY2ktPmF1dGhvcl9tYWlsKTsKKwlzdHJidWZfcmVsZWFzZSgmY2ktPmF1dGhvcl90eik7CisJc3RyYnVmX3JlbGVhc2UoJmNpLT5jb21taXR0ZXIpOworCXN0cmJ1Zl9yZWxlYXNlKCZjaS0+Y29tbWl0dGVyX21haWwpOworCXN0cmJ1Zl9yZWxlYXNlKCZjaS0+Y29tbWl0dGVyX3R6KTsKKwlzdHJidWZfcmVsZWFzZSgmY2ktPnN1bW1hcnkpOwogfQogCiBzdGF0aWMgdm9pZCBnZXRfY29tbWl0X2luZm8oc3RydWN0IGNvbW1pdCAqY29tbWl0LApAQCAtMTQyNiw1NyArMTQzMSwzMiBAQAogewogCWludCBsZW47CiAJY29uc3QgY2hhciAqc3ViamVjdCwgKmVuY29kaW5nOwotCWNoYXIgKnJlZW5jb2RlZCwgKm1lc3NhZ2U7Ci0Jc3RhdGljIGNoYXIgYXV0aG9yX25hbWVbMTAyNF07Ci0Jc3RhdGljIGNoYXIgYXV0aG9yX21haWxbMTAyNF07Ci0Jc3RhdGljIGNoYXIgY29tbWl0dGVyX25hbWVbMTAyNF07Ci0Jc3RhdGljIGNoYXIgY29tbWl0dGVyX21haWxbMTAyNF07Ci0Jc3RhdGljIGNoYXIgc3VtbWFyeV9idWZbMTAyNF07CisJY2hhciAqbWVzc2FnZTsKIAotCS8qCi0JICogV2UndmUgb3BlcmF0ZWQgd2l0aG91dCBzYXZlX2NvbW1pdF9idWZmZXIsIHNvCi0JICogd2Ugbm93IG5lZWQgdG8gcG9wdWxhdGUgdGhlbSBmb3Igb3V0cHV0LgotCSAqLwotCWlmICghY29tbWl0LT5idWZmZXIpIHsKLQkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwotCQl1bnNpZ25lZCBsb25nIHNpemU7Ci0JCWNvbW1pdC0+YnVmZmVyID0KLQkJCXJlYWRfc2hhMV9maWxlKGNvbW1pdC0+b2JqZWN0LnNoYTEsICZ0eXBlLCAmc2l6ZSk7Ci0JCWlmICghY29tbWl0LT5idWZmZXIpCi0JCQlkaWUoIkNhbm5vdCByZWFkIGNvbW1pdCAlcyIsCi0JCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwotCX0KKwljb21taXRfaW5mb19pbml0KHJldCk7CisKIAllbmNvZGluZyA9IGdldF9sb2dfb3V0cHV0X2VuY29kaW5nKCk7Ci0JcmVlbmNvZGVkID0gbG9nbXNnX3JlZW5jb2RlKGNvbW1pdCwgZW5jb2RpbmcpOwotCW1lc3NhZ2UgICA9IHJlZW5jb2RlZCA/IHJlZW5jb2RlZCA6IGNvbW1pdC0+YnVmZmVyOwotCXJldC0+YXV0aG9yID0gYXV0aG9yX25hbWU7Ci0JcmV0LT5hdXRob3JfbWFpbCA9IGF1dGhvcl9tYWlsOworCW1lc3NhZ2UgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBlbmNvZGluZyk7CiAJZ2V0X2FjX2xpbmUobWVzc2FnZSwgIlxuYXV0aG9yICIsCi0JCSAgICBzaXplb2YoYXV0aG9yX25hbWUpLCBhdXRob3JfbmFtZSwKLQkJICAgIHNpemVvZihhdXRob3JfbWFpbCksIGF1dGhvcl9tYWlsLAorCQkgICAgJnJldC0+YXV0aG9yLCAmcmV0LT5hdXRob3JfbWFpbCwKIAkJICAgICZyZXQtPmF1dGhvcl90aW1lLCAmcmV0LT5hdXRob3JfdHopOwogCiAJaWYgKCFkZXRhaWxlZCkgewotCQlmcmVlKHJlZW5jb2RlZCk7CisJCWxvZ21zZ19mcmVlKG1lc3NhZ2UsIGNvbW1pdCk7CiAJCXJldHVybjsKIAl9CiAKLQlyZXQtPmNvbW1pdHRlciA9IGNvbW1pdHRlcl9uYW1lOwotCXJldC0+Y29tbWl0dGVyX21haWwgPSBjb21taXR0ZXJfbWFpbDsKIAlnZXRfYWNfbGluZShtZXNzYWdlLCAiXG5jb21taXR0ZXIgIiwKLQkJICAgIHNpemVvZihjb21taXR0ZXJfbmFtZSksIGNvbW1pdHRlcl9uYW1lLAotCQkgICAgc2l6ZW9mKGNvbW1pdHRlcl9tYWlsKSwgY29tbWl0dGVyX21haWwsCisJCSAgICAmcmV0LT5jb21taXR0ZXIsICZyZXQtPmNvbW1pdHRlcl9tYWlsLAogCQkgICAgJnJldC0+Y29tbWl0dGVyX3RpbWUsICZyZXQtPmNvbW1pdHRlcl90eik7CiAKLQlyZXQtPnN1bW1hcnkgPSBzdW1tYXJ5X2J1ZjsKIAlsZW4gPSBmaW5kX2NvbW1pdF9zdWJqZWN0KG1lc3NhZ2UsICZzdWJqZWN0KTsKLQlpZiAobGVuICYmIGxlbiA8IHNpemVvZihzdW1tYXJ5X2J1ZikpIHsKLQkJbWVtY3B5KHN1bW1hcnlfYnVmLCBzdWJqZWN0LCBsZW4pOwotCQlzdW1tYXJ5X2J1ZltsZW5dID0gMDsKLQl9IGVsc2UgewotCQlzcHJpbnRmKHN1bW1hcnlfYnVmLCAiKCVzKSIsIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKLQl9Ci0JZnJlZShyZWVuY29kZWQpOworCWlmIChsZW4pCisJCXN0cmJ1Zl9hZGQoJnJldC0+c3VtbWFyeSwgc3ViamVjdCwgbGVuKTsKKwllbHNlCisJCXN0cmJ1Zl9hZGRmKCZyZXQtPnN1bW1hcnksICIoJXMpIiwgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOworCisJbG9nbXNnX2ZyZWUobWVzc2FnZSwgY29tbWl0KTsKIH0KIAogLyoKQEAgLTE1MDQsMTUgKzE0ODQsMTUgQEAKIAogCXN1c3BlY3QtPmNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IE1FVEFJTkZPX1NIT1dOOwogCWdldF9jb21taXRfaW5mbyhzdXNwZWN0LT5jb21taXQsICZjaSwgMSk7Ci0JcHJpbnRmKCJhdXRob3IgJXNcbiIsIGNpLmF1dGhvcik7Ci0JcHJpbnRmKCJhdXRob3ItbWFpbCAlc1xuIiwgY2kuYXV0aG9yX21haWwpOworCXByaW50ZigiYXV0aG9yICVzXG4iLCBjaS5hdXRob3IuYnVmKTsKKwlwcmludGYoImF1dGhvci1tYWlsICVzXG4iLCBjaS5hdXRob3JfbWFpbC5idWYpOwogCXByaW50ZigiYXV0aG9yLXRpbWUgJWx1XG4iLCBjaS5hdXRob3JfdGltZSk7Ci0JcHJpbnRmKCJhdXRob3ItdHogJXNcbiIsIGNpLmF1dGhvcl90eik7Ci0JcHJpbnRmKCJjb21taXR0ZXIgJXNcbiIsIGNpLmNvbW1pdHRlcik7Ci0JcHJpbnRmKCJjb21taXR0ZXItbWFpbCAlc1xuIiwgY2kuY29tbWl0dGVyX21haWwpOworCXByaW50ZigiYXV0aG9yLXR6ICVzXG4iLCBjaS5hdXRob3JfdHouYnVmKTsKKwlwcmludGYoImNvbW1pdHRlciAlc1xuIiwgY2kuY29tbWl0dGVyLmJ1Zik7CisJcHJpbnRmKCJjb21taXR0ZXItbWFpbCAlc1xuIiwgY2kuY29tbWl0dGVyX21haWwuYnVmKTsKIAlwcmludGYoImNvbW1pdHRlci10aW1lICVsdVxuIiwgY2kuY29tbWl0dGVyX3RpbWUpOwotCXByaW50ZigiY29tbWl0dGVyLXR6ICVzXG4iLCBjaS5jb21taXR0ZXJfdHopOwotCXByaW50Zigic3VtbWFyeSAlc1xuIiwgY2kuc3VtbWFyeSk7CisJcHJpbnRmKCJjb21taXR0ZXItdHogJXNcbiIsIGNpLmNvbW1pdHRlcl90ei5idWYpOworCXByaW50Zigic3VtbWFyeSAlc1xuIiwgY2kuc3VtbWFyeS5idWYpOwogCWlmIChzdXNwZWN0LT5jb21taXQtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpCiAJCXByaW50ZigiYm91bmRhcnlcbiIpOwogCWlmIChzdXNwZWN0LT5wcmV2aW91cykgewpAQCAtMTUyMCw2ICsxNTAwLDkgQEAKIAkJcHJpbnRmKCJwcmV2aW91cyAlcyAiLCBzaGExX3RvX2hleChwcmV2LT5jb21taXQtPm9iamVjdC5zaGExKSk7CiAJCXdyaXRlX25hbWVfcXVvdGVkKHByZXYtPnBhdGgsIHN0ZG91dCwgJ1xuJyk7CiAJfQorCisJY29tbWl0X2luZm9fZGVzdHJveSgmY2kpOworCiAJcmV0dXJuIDE7CiB9CiAKQEAgLTE3MDYsMTEgKzE2ODksMTEgQEAKIAkJaWYgKG9wdCAmIE9VVFBVVF9BTk5PVEFURV9DT01QQVQpIHsKIAkJCWNvbnN0IGNoYXIgKm5hbWU7CiAJCQlpZiAob3B0ICYgT1VUUFVUX1NIT1dfRU1BSUwpCi0JCQkJbmFtZSA9IGNpLmF1dGhvcl9tYWlsOworCQkJCW5hbWUgPSBjaS5hdXRob3JfbWFpbC5idWY7CiAJCQllbHNlCi0JCQkJbmFtZSA9IGNpLmF1dGhvcjsKKwkJCQluYW1lID0gY2kuYXV0aG9yLmJ1ZjsKIAkJCXByaW50ZigiXHQoJTEwc1x0JTEwc1x0JWQpIiwgbmFtZSwKLQkJCSAgICAgICBmb3JtYXRfdGltZShjaS5hdXRob3JfdGltZSwgY2kuYXV0aG9yX3R6LAorCQkJICAgICAgIGZvcm1hdF90aW1lKGNpLmF1dGhvcl90aW1lLCBjaS5hdXRob3JfdHouYnVmLAogCQkJCQkgICBzaG93X3Jhd190aW1lKSwKIAkJCSAgICAgICBlbnQtPmxubyArIDEgKyBjbnQpOwogCQl9IGVsc2UgewpAQCAtMTcyOSwxNCArMTcxMiwxNCBAQAogCQkJCWNvbnN0IGNoYXIgKm5hbWU7CiAJCQkJaW50IHBhZDsKIAkJCQlpZiAob3B0ICYgT1VUUFVUX1NIT1dfRU1BSUwpCi0JCQkJCW5hbWUgPSBjaS5hdXRob3JfbWFpbDsKKwkJCQkJbmFtZSA9IGNpLmF1dGhvcl9tYWlsLmJ1ZjsKIAkJCQllbHNlCi0JCQkJCW5hbWUgPSBjaS5hdXRob3I7CisJCQkJCW5hbWUgPSBjaS5hdXRob3IuYnVmOwogCQkJCXBhZCA9IGxvbmdlc3RfYXV0aG9yIC0gdXRmOF9zdHJ3aWR0aChuYW1lKTsKIAkJCQlwcmludGYoIiAoJXMlKnMgJTEwcyIsCiAJCQkJICAgICAgIG5hbWUsIHBhZCwgIiIsCiAJCQkJICAgICAgIGZvcm1hdF90aW1lKGNpLmF1dGhvcl90aW1lLAotCQkJCQkJICAgY2kuYXV0aG9yX3R6LAorCQkJCQkJICAgY2kuYXV0aG9yX3R6LmJ1ZiwKIAkJCQkJCSAgIHNob3dfcmF3X3RpbWUpKTsKIAkJCX0KIAkJCXByaW50ZigiICUqZCkgIiwKQEAgLTE3NTEsNiArMTczNCw4IEBACiAKIAlpZiAoc2ItPmZpbmFsX2J1Zl9zaXplICYmIGNwWy0xXSAhPSAnXG4nKQogCQlwdXRjaGFyKCdcbicpOworCisJY29tbWl0X2luZm9fZGVzdHJveSgmY2kpOwogfQogCiBzdGF0aWMgdm9pZCBvdXRwdXQoc3RydWN0IHNjb3JlYm9hcmQgKnNiLCBpbnQgb3B0aW9uKQpAQCAtMTg3NSw5ICsxODYwLDkgQEAKIAkJCXN1c3BlY3QtPmNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IE1FVEFJTkZPX1NIT1dOOwogCQkJZ2V0X2NvbW1pdF9pbmZvKHN1c3BlY3QtPmNvbW1pdCwgJmNpLCAxKTsKIAkJCWlmICgqb3B0aW9uICYgT1VUUFVUX1NIT1dfRU1BSUwpCi0JCQkJbnVtID0gdXRmOF9zdHJ3aWR0aChjaS5hdXRob3JfbWFpbCk7CisJCQkJbnVtID0gdXRmOF9zdHJ3aWR0aChjaS5hdXRob3JfbWFpbC5idWYpOwogCQkJZWxzZQotCQkJCW51bSA9IHV0Zjhfc3Ryd2lkdGgoY2kuYXV0aG9yKTsKKwkJCQludW0gPSB1dGY4X3N0cndpZHRoKGNpLmF1dGhvci5idWYpOwogCQkJaWYgKGxvbmdlc3RfYXV0aG9yIDwgbnVtKQogCQkJCWxvbmdlc3RfYXV0aG9yID0gbnVtOwogCQl9CkBAIC0xODg5LDYgKzE4NzQsOCBAQAogCQkJbG9uZ2VzdF9kc3RfbGluZXMgPSBudW07CiAJCWlmIChsYXJnZXN0X3Njb3JlIDwgZW50X3Njb3JlKHNiLCBlKSkKIAkJCWxhcmdlc3Rfc2NvcmUgPSBlbnRfc2NvcmUoc2IsIGUpOworCisJCWNvbW1pdF9pbmZvX2Rlc3Ryb3koJmNpKTsKIAl9CiAJbWF4X29yaWdfZGlnaXRzID0gZGVjaW1hbF93aWR0aChsb25nZXN0X3NyY19saW5lcyk7CiAJbWF4X2RpZ2l0cyA9IGRlY2ltYWxfd2lkdGgobG9uZ2VzdF9kc3RfbGluZXMpOwpAQCAtMTk1MSw4MyArMTkzOCw2IEBACiB9CiAKIC8qCi0gKiBQYXJzaW5nIG9mIChjb21tYSBzZXBhcmF0ZWQpIG9uZSBpdGVtIGluIHRoZSAtTCBvcHRpb24KLSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnBhcnNlX2xvYyhjb25zdCBjaGFyICpzcGVjLAotCQkJICAgICBzdHJ1Y3Qgc2NvcmVib2FyZCAqc2IsIGxvbmcgbG5vLAotCQkJICAgICBsb25nIGJlZ2luLCBsb25nICpyZXQpCi17Ci0JY2hhciAqdGVybTsKLQljb25zdCBjaGFyICpsaW5lOwotCWxvbmcgbnVtOwotCWludCByZWdfZXJyb3I7Ci0JcmVnZXhfdCByZWdleHA7Ci0JcmVnbWF0Y2hfdCBtYXRjaFsxXTsKLQotCS8qIEFsbG93ICItTCA8c29tZXRoaW5nPiwrMjAiIHRvIG1lYW4gc3RhcnRpbmcgYXQgPHNvbWV0aGluZz4KLQkgKiBmb3IgMjAgbGluZXMsIG9yICItTCA8c29tZXRoaW5nPiwtNSIgZm9yIDUgbGluZXMgZW5kaW5nIGF0Ci0JICogPHNvbWV0aGluZz4uCi0JICovCi0JaWYgKDEgPCBiZWdpbiAmJiAoc3BlY1swXSA9PSAnKycgfHwgc3BlY1swXSA9PSAnLScpKSB7Ci0JCW51bSA9IHN0cnRvbChzcGVjICsgMSwgJnRlcm0sIDEwKTsKLQkJaWYgKHRlcm0gIT0gc3BlYyArIDEpIHsKLQkJCWlmIChzcGVjWzBdID09ICctJykKLQkJCQludW0gPSAwIC0gbnVtOwotCQkJaWYgKDAgPCBudW0pCi0JCQkJKnJldCA9IGJlZ2luICsgbnVtIC0gMjsKLQkJCWVsc2UgaWYgKCFudW0pCi0JCQkJKnJldCA9IGJlZ2luOwotCQkJZWxzZQotCQkJCSpyZXQgPSBiZWdpbiArIG51bTsKLQkJCXJldHVybiB0ZXJtOwotCQl9Ci0JCXJldHVybiBzcGVjOwotCX0KLQludW0gPSBzdHJ0b2woc3BlYywgJnRlcm0sIDEwKTsKLQlpZiAodGVybSAhPSBzcGVjKSB7Ci0JCSpyZXQgPSBudW07Ci0JCXJldHVybiB0ZXJtOwotCX0KLQlpZiAoc3BlY1swXSAhPSAnLycpCi0JCXJldHVybiBzcGVjOwotCi0JLyogaXQgY291bGQgYmUgYSByZWdleHAgb2YgZm9ybSAvLi4uLyAqLwotCWZvciAodGVybSA9IChjaGFyICopIHNwZWMgKyAxOyAqdGVybSAmJiAqdGVybSAhPSAnLyc7IHRlcm0rKykgewotCQlpZiAoKnRlcm0gPT0gJ1xcJykKLQkJCXRlcm0rKzsKLQl9Ci0JaWYgKCp0ZXJtICE9ICcvJykKLQkJcmV0dXJuIHNwZWM7Ci0KLQkvKiB0cnkgW3NwZWMrMSAuLiB0ZXJtLTFdIGFzIHJlZ2V4cCAqLwotCSp0ZXJtID0gMDsKLQliZWdpbi0tOyAvKiBpbnB1dCBpcyBpbiBodW1hbiB0ZXJtcyAqLwotCWxpbmUgPSBudGhfbGluZShzYiwgYmVnaW4pOwotCi0JaWYgKCEocmVnX2Vycm9yID0gcmVnY29tcCgmcmVnZXhwLCBzcGVjICsgMSwgUkVHX05FV0xJTkUpKSAmJgotCSAgICAhKHJlZ19lcnJvciA9IHJlZ2V4ZWMoJnJlZ2V4cCwgbGluZSwgMSwgbWF0Y2gsIDApKSkgewotCQljb25zdCBjaGFyICpjcCA9IGxpbmUgKyBtYXRjaFswXS5ybV9zbzsKLQkJY29uc3QgY2hhciAqbmxpbmU7Ci0KLQkJd2hpbGUgKGJlZ2luKysgPCBsbm8pIHsKLQkJCW5saW5lID0gbnRoX2xpbmUoc2IsIGJlZ2luKTsKLQkJCWlmIChsaW5lIDw9IGNwICYmIGNwIDwgbmxpbmUpCi0JCQkJYnJlYWs7Ci0JCQlsaW5lID0gbmxpbmU7Ci0JCX0KLQkJKnJldCA9IGJlZ2luOwotCQlyZWdmcmVlKCZyZWdleHApOwotCQkqdGVybSsrID0gJy8nOwotCQlyZXR1cm4gdGVybTsKLQl9Ci0JZWxzZSB7Ci0JCWNoYXIgZXJyYnVmWzEwMjRdOwotCQlyZWdlcnJvcihyZWdfZXJyb3IsICZyZWdleHAsIGVycmJ1ZiwgMTAyNCk7Ci0JCWRpZSgiLUwgcGFyYW1ldGVyICclcyc6ICVzIiwgc3BlYyArIDEsIGVycmJ1Zik7Ci0JfQotfQotCi0vKgogICogUGFyc2luZyBvZiAtTCBvcHRpb24KICAqLwogc3RhdGljIHZvaWQgcHJlcGFyZV9ibGFtZV9yYW5nZShzdHJ1Y3Qgc2NvcmVib2FyZCAqc2IsCkBAIC0yMDM1LDE1ICsxOTQ1LDcgQEAKIAkJCQlsb25nIGxubywKIAkJCQlsb25nICpib3R0b20sIGxvbmcgKnRvcCkKIHsKLQljb25zdCBjaGFyICp0ZXJtOwotCi0JdGVybSA9IHBhcnNlX2xvYyhib3R0b210b3AsIHNiLCBsbm8sIDEsIGJvdHRvbSk7Ci0JaWYgKCp0ZXJtID09ICcsJykgewotCQl0ZXJtID0gcGFyc2VfbG9jKHRlcm0gKyAxLCBzYiwgbG5vLCAqYm90dG9tICsgMSwgdG9wKTsKLQkJaWYgKCp0ZXJtKQotCQkJdXNhZ2UoYmxhbWVfdXNhZ2UpOwotCX0KLQlpZiAoKnRlcm0pCisJaWYgKHBhcnNlX3JhbmdlX2FyZyhib3R0b210b3AsIG50aF9saW5lX2NiLCBzYiwgbG5vLCBib3R0b20sIHRvcCwgc2ItPnBhdGgpKQogCQl1c2FnZShibGFtZV91c2FnZSk7CiB9CiAKQEAgLTI0MDMsNiArMjMwNSw3IEBACiAJaW5pdF9yZXZpc2lvbnMoJnJldnMsIE5VTEwpOwogCXJldnMuZGF0ZV9tb2RlID0gYmxhbWVfZGF0ZV9tb2RlOwogCURJRkZfT1BUX1NFVCgmcmV2cy5kaWZmb3B0LCBBTExPV19URVhUQ09OVik7CisJRElGRl9PUFRfU0VUKCZyZXZzLmRpZmZvcHQsIEZPTExPV19SRU5BTUVTKTsKIAogCXNhdmVfY29tbWl0X2J1ZmZlciA9IDA7CiAJZGFzaGRhc2hfcG9zID0gMDsKQEAgLTI0MjYsNiArMjMyOSw4IEBACiAJCXBhcnNlX3JldmlzaW9uX29wdCgmcmV2cywgJmN0eCwgb3B0aW9ucywgYmxhbWVfb3B0X3VzYWdlKTsKIAl9CiBwYXJzZV9kb25lOgorCW5vX3dob2xlX2ZpbGVfcmVuYW1lID0gIURJRkZfT1BUX1RTVCgmcmV2cy5kaWZmb3B0LCBGT0xMT1dfUkVOQU1FUyk7CisJRElGRl9PUFRfQ0xSKCZyZXZzLmRpZmZvcHQsIEZPTExPV19SRU5BTUVTKTsKIAlhcmdjID0gcGFyc2Vfb3B0aW9uc19lbmQoJmN0eCk7CiAKIAlpZiAoMCA8IGFiYnJldikKQEAgLTI1OTAsMTAgKzI0OTUsNiBAQAogCWJvdHRvbSA9IHRvcCA9IDA7CiAJaWYgKGJvdHRvbXRvcCkKIAkJcHJlcGFyZV9ibGFtZV9yYW5nZSgmc2IsIGJvdHRvbXRvcCwgbG5vLCAmYm90dG9tLCAmdG9wKTsKLQlpZiAoYm90dG9tICYmIHRvcCAmJiB0b3AgPCBib3R0b20pIHsKLQkJbG9uZyB0bXA7Ci0JCXRtcCA9IHRvcDsgdG9wID0gYm90dG9tOyBib3R0b20gPSB0bXA7Ci0JfQogCWlmIChib3R0b20gPCAxKQogCQlib3R0b20gPSAxOwogCWlmICh0b3AgPCAxKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9icmFuY2guYyBiL2J1aWx0aW4vYnJhbmNoLmMKaW5kZXggOTQ3Yzg0Yi4uMDgzNjg5MCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9icmFuY2guYworKysgYi9idWlsdGluL2JyYW5jaC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJjb2x1bW4uaCIKICNpbmNsdWRlICJ1dGY4LmgiCisjaW5jbHVkZSAid3Qtc3RhdHVzLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9icmFuY2hfdXNhZ2VbXSA9IHsKIAlOXygiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIpLApAQCAtNDAsMTMgKzQxLDE1IEBACiAJR0lUX0NPTE9SX1JFRCwJCS8qIFJFTU9URSAqLwogCUdJVF9DT0xPUl9OT1JNQUwsCS8qIExPQ0FMICovCiAJR0lUX0NPTE9SX0dSRUVOLAkvKiBDVVJSRU5UICovCisJR0lUX0NPTE9SX0JMVUUsCQkvKiBVUFNUUkVBTSAqLwogfTsKIGVudW0gY29sb3JfYnJhbmNoIHsKIAlCUkFOQ0hfQ09MT1JfUkVTRVQgPSAwLAogCUJSQU5DSF9DT0xPUl9QTEFJTiA9IDEsCiAJQlJBTkNIX0NPTE9SX1JFTU9URSA9IDIsCiAJQlJBTkNIX0NPTE9SX0xPQ0FMID0gMywKLQlCUkFOQ0hfQ09MT1JfQ1VSUkVOVCA9IDQKKwlCUkFOQ0hfQ09MT1JfQ1VSUkVOVCA9IDQsCisJQlJBTkNIX0NPTE9SX1VQU1RSRUFNID0gNQogfTsKIAogc3RhdGljIGVudW0gbWVyZ2VfZmlsdGVyIHsKQEAgLTcxLDYgKzc0LDggQEAKIAkJcmV0dXJuIEJSQU5DSF9DT0xPUl9MT0NBTDsKIAlpZiAoIXN0cmNhc2VjbXAodmFyK29mcywgImN1cnJlbnQiKSkKIAkJcmV0dXJuIEJSQU5DSF9DT0xPUl9DVVJSRU5UOworCWlmICghc3RyY2FzZWNtcCh2YXIrb2ZzLCAidXBzdHJlYW0iKSkKKwkJcmV0dXJuIEJSQU5DSF9DT0xPUl9VUFNUUkVBTTsKIAlyZXR1cm4gLTE7CiB9CiAKQEAgLTQxNywzNiArNDIyLDUyIEBACiAJaW50IG91cnMsIHRoZWlyczsKIAljaGFyICpyZWYgPSBOVUxMOwogCXN0cnVjdCBicmFuY2ggKmJyYW5jaCA9IGJyYW5jaF9nZXQoYnJhbmNoX25hbWUpOworCXN0cnVjdCBzdHJidWYgZmFuY3kgPSBTVFJCVUZfSU5JVDsKIAogCWlmICghc3RhdF90cmFja2luZ19pbmZvKGJyYW5jaCwgJm91cnMsICZ0aGVpcnMpKSB7CiAJCWlmIChicmFuY2ggJiYgYnJhbmNoLT5tZXJnZSAmJiBicmFuY2gtPm1lcmdlWzBdLT5kc3QgJiYKLQkJICAgIHNob3dfdXBzdHJlYW1fcmVmKQotCQkJc3RyYnVmX2FkZGYoc3RhdCwgIlslc10gIiwKLQkJCSAgICBzaG9ydGVuX3VuYW1iaWd1b3VzX3JlZihicmFuY2gtPm1lcmdlWzBdLT5kc3QsIDApKTsKKwkJICAgIHNob3dfdXBzdHJlYW1fcmVmKSB7CisJCQlyZWYgPSBzaG9ydGVuX3VuYW1iaWd1b3VzX3JlZihicmFuY2gtPm1lcmdlWzBdLT5kc3QsIDApOworCQkJaWYgKHdhbnRfY29sb3IoYnJhbmNoX3VzZV9jb2xvcikpCisJCQkJc3RyYnVmX2FkZGYoc3RhdCwgIlslcyVzJXNdICIsCisJCQkJCQlicmFuY2hfZ2V0X2NvbG9yKEJSQU5DSF9DT0xPUl9VUFNUUkVBTSksCisJCQkJCQlyZWYsIGJyYW5jaF9nZXRfY29sb3IoQlJBTkNIX0NPTE9SX1JFU0VUKSk7CisJCQllbHNlCisJCQkJc3RyYnVmX2FkZGYoc3RhdCwgIlslc10gIiwgcmVmKTsKKwkJfQogCQlyZXR1cm47CiAJfQogCi0JaWYgKHNob3dfdXBzdHJlYW1fcmVmKQorCWlmIChzaG93X3Vwc3RyZWFtX3JlZikgewogCQlyZWYgPSBzaG9ydGVuX3VuYW1iaWd1b3VzX3JlZihicmFuY2gtPm1lcmdlWzBdLT5kc3QsIDApOworCQlpZiAod2FudF9jb2xvcihicmFuY2hfdXNlX2NvbG9yKSkKKwkJCXN0cmJ1Zl9hZGRmKCZmYW5jeSwgIiVzJXMlcyIsCisJCQkJCWJyYW5jaF9nZXRfY29sb3IoQlJBTkNIX0NPTE9SX1VQU1RSRUFNKSwKKwkJCQkJcmVmLCBicmFuY2hfZ2V0X2NvbG9yKEJSQU5DSF9DT0xPUl9SRVNFVCkpOworCQllbHNlCisJCQlzdHJidWZfYWRkc3RyKCZmYW5jeSwgcmVmKTsKKwl9CisKIAlpZiAoIW91cnMpIHsKIAkJaWYgKHJlZikKLQkJCXN0cmJ1Zl9hZGRmKHN0YXQsIF8oIlslczogYmVoaW5kICVkXSIpLCByZWYsIHRoZWlycyk7CisJCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbJXM6IGJlaGluZCAlZF0iKSwgZmFuY3kuYnVmLCB0aGVpcnMpOwogCQllbHNlCiAJCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbYmVoaW5kICVkXSIpLCB0aGVpcnMpOwogCiAJfSBlbHNlIGlmICghdGhlaXJzKSB7CiAJCWlmIChyZWYpCi0JCQlzdHJidWZfYWRkZihzdGF0LCBfKCJbJXM6IGFoZWFkICVkXSIpLCByZWYsIG91cnMpOworCQkJc3RyYnVmX2FkZGYoc3RhdCwgXygiWyVzOiBhaGVhZCAlZF0iKSwgZmFuY3kuYnVmLCBvdXJzKTsKIAkJZWxzZQogCQkJc3RyYnVmX2FkZGYoc3RhdCwgXygiW2FoZWFkICVkXSIpLCBvdXJzKTsKIAl9IGVsc2UgewogCQlpZiAocmVmKQogCQkJc3RyYnVmX2FkZGYoc3RhdCwgXygiWyVzOiBhaGVhZCAlZCwgYmVoaW5kICVkXSIpLAotCQkJCSAgICByZWYsIG91cnMsIHRoZWlycyk7CisJCQkJICAgIGZhbmN5LmJ1Ziwgb3VycywgdGhlaXJzKTsKIAkJZWxzZQogCQkJc3RyYnVmX2FkZGYoc3RhdCwgXygiW2FoZWFkICVkLCBiZWhpbmQgJWRdIiksCiAJCQkJICAgIG91cnMsIHRoZWlycyk7CiAJfQorCXN0cmJ1Zl9yZWxlYXNlKCZmYW5jeSk7CiAJc3RyYnVmX2FkZGNoKHN0YXQsICcgJyk7CiAJZnJlZShyZWYpOwogfQpAQCAtNDY2LDcgKzQ4Nyw3IEBACiAJCQkgICAgIGludCB2ZXJib3NlLCBpbnQgYWJicmV2KQogewogCXN0cnVjdCBzdHJidWYgc3ViamVjdCA9IFNUUkJVRl9JTklULCBzdGF0ID0gU1RSQlVGX0lOSVQ7Ci0JY29uc3QgY2hhciAqc3ViID0gIiAqKioqIGludmFsaWQgcmVmICoqKioiOworCWNvbnN0IGNoYXIgKnN1YiA9IF8oIiAqKioqIGludmFsaWQgcmVmICoqKioiKTsKIAlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBpdGVtLT5jb21taXQ7CiAKIAlpZiAoY29tbWl0ICYmICFwYXJzZV9jb21taXQoY29tbWl0KSkgewpAQCAtNTUwLDYgKzU3MSwyOSBAQAogCXJldHVybiB3OwogfQogCitzdGF0aWMgY2hhciAqZ2V0X2hlYWRfZGVzY3JpcHRpb24odm9pZCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGRlc2MgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlIHN0YXRlOworCW1lbXNldCgmc3RhdGUsIDAsIHNpemVvZihzdGF0ZSkpOworCXd0X3N0YXR1c19nZXRfc3RhdGUoJnN0YXRlLCAxKTsKKwlpZiAoc3RhdGUucmViYXNlX2luX3Byb2dyZXNzIHx8CisJICAgIHN0YXRlLnJlYmFzZV9pbnRlcmFjdGl2ZV9pbl9wcm9ncmVzcykKKwkJc3RyYnVmX2FkZGYoJmRlc2MsIF8oIihubyBicmFuY2gsIHJlYmFzaW5nICVzKSIpLAorCQkJICAgIHN0YXRlLmJyYW5jaCk7CisJZWxzZSBpZiAoc3RhdGUuYmlzZWN0X2luX3Byb2dyZXNzKQorCQlzdHJidWZfYWRkZigmZGVzYywgXygiKG5vIGJyYW5jaCwgYmlzZWN0IHN0YXJ0ZWQgb24gJXMpIiksCisJCQkgICAgc3RhdGUuYnJhbmNoKTsKKwllbHNlIGlmIChzdGF0ZS5kZXRhY2hlZF9mcm9tKQorCQlzdHJidWZfYWRkZigmZGVzYywgXygiKGRldGFjaGVkIGZyb20gJXMpIiksCisJCQkgICAgc3RhdGUuZGV0YWNoZWRfZnJvbSk7CisJZWxzZQorCQlzdHJidWZfYWRkc3RyKCZkZXNjLCBfKCIobm8gYnJhbmNoKSIpKTsKKwlmcmVlKHN0YXRlLmJyYW5jaCk7CisJZnJlZShzdGF0ZS5vbnRvKTsKKwlmcmVlKHN0YXRlLmRldGFjaGVkX2Zyb20pOworCXJldHVybiBzdHJidWZfZGV0YWNoKCZkZXNjLCBOVUxMKTsKK30KIAogc3RhdGljIHZvaWQgc2hvd19kZXRhY2hlZChzdHJ1Y3QgcmVmX2xpc3QgKnJlZl9saXN0KQogewpAQCAtNTU3LDcgKzYwMSw3IEBACiAKIAlpZiAoaGVhZF9jb21taXQgJiYgaXNfZGVzY2VuZGFudF9vZihoZWFkX2NvbW1pdCwgcmVmX2xpc3QtPndpdGhfY29tbWl0KSkgewogCQlzdHJ1Y3QgcmVmX2l0ZW0gaXRlbTsKLQkJaXRlbS5uYW1lID0geHN0cmR1cChfKCIobm8gYnJhbmNoKSIpKTsKKwkJaXRlbS5uYW1lID0gZ2V0X2hlYWRfZGVzY3JpcHRpb24oKTsKIAkJaXRlbS53aWR0aCA9IHV0Zjhfc3Ryd2lkdGgoaXRlbS5uYW1lKTsKIAkJaXRlbS5raW5kID0gUkVGX0xPQ0FMX0JSQU5DSDsKIAkJaXRlbS5kZXN0ID0gTlVMTDsKQEAgLTU5MCw3ICs2MzQsNyBAQAogCQlzdHJ1Y3QgY29tbWl0ICpmaWx0ZXI7CiAJCWZpbHRlciA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShtZXJnZV9maWx0ZXJfcmVmLCAwKTsKIAkJaWYgKCFmaWx0ZXIpCi0JCQlkaWUoIm9iamVjdCAnJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgY29tbWl0IiwKKwkJCWRpZShfKCJvYmplY3QgJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIpLAogCQkJICAgIHNoYTFfdG9faGV4KG1lcmdlX2ZpbHRlcl9yZWYpKTsKIAogCQlmaWx0ZXItPm9iamVjdC5mbGFncyB8PSBVTklOVEVSRVNUSU5HOwpAQCAtNzA2LDExICs3NTAsMTEgQEAKIAlyZWFkX2JyYW5jaF9kZXNjKCZidWYsIGJyYW5jaF9uYW1lKTsKIAlpZiAoIWJ1Zi5sZW4gfHwgYnVmLmJ1ZltidWYubGVuLTFdICE9ICdcbicpCiAJCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsKLQlzdHJidWZfYWRkZigmYnVmLAotCQkgICAgIiMgUGxlYXNlIGVkaXQgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgYnJhbmNoXG4iCi0JCSAgICAiIyAgICVzXG4iCi0JCSAgICAiIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIHN0cmlwcGVkLlxuIiwKLQkJICAgIGJyYW5jaF9uYW1lKTsKKwlzdHJidWZfY29tbWVudGVkX2FkZGYoJmJ1ZiwKKwkJICAgICJQbGVhc2UgZWRpdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2hcbiIKKwkJICAgICIgICVzXG4iCisJCSAgICAiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUgc3RyaXBwZWQuXG4iLAorCQkgICAgYnJhbmNoX25hbWUsIGNvbW1lbnRfbGluZV9jaGFyKTsKIAlmcCA9IGZvcGVuKGdpdF9wYXRoKGVkaXRfZGVzY3JpcHRpb24pLCAidyIpOwogCWlmICgoZndyaXRlKGJ1Zi5idWYsIDEsIGJ1Zi5sZW4sIGZwKSA8IGJ1Zi5sZW4pIHx8IGZjbG9zZShmcCkpIHsKIAkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CkBAIC03MjUsNyArNzY5LDcgQEAKIAlzdHJpcHNwYWNlKCZidWYsIDEpOwogCiAJc3RyYnVmX2FkZGYoJm5hbWUsICJicmFuY2guJXMuZGVzY3JpcHRpb24iLCBicmFuY2hfbmFtZSk7Ci0Jc3RhdHVzID0gZ2l0X2NvbmZpZ19zZXQobmFtZS5idWYsIGJ1Zi5idWYpOworCXN0YXR1cyA9IGdpdF9jb25maWdfc2V0KG5hbWUuYnVmLCBidWYubGVuID8gYnVmLmJ1ZiA6IE5VTEwpOwogCXN0cmJ1Zl9yZWxlYXNlKCZuYW1lKTsKIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIApAQCAtODI1LDYgKzg2OSw5IEBACiAJaWYgKCFkZWxldGUgJiYgIXJlbmFtZSAmJiAhZWRpdF9kZXNjcmlwdGlvbiAmJiAhbmV3X3Vwc3RyZWFtICYmICF1bnNldF91cHN0cmVhbSAmJiBhcmdjID09IDApCiAJCWxpc3QgPSAxOwogCisJaWYgKHdpdGhfY29tbWl0IHx8IG1lcmdlX2ZpbHRlciAhPSBOT19GSUxURVIpCisJCWxpc3QgPSAxOworCiAJaWYgKCEhZGVsZXRlICsgISFyZW5hbWUgKyAhIWZvcmNlX2NyZWF0ZSArICEhbGlzdCArICEhbmV3X3Vwc3RyZWFtICsgISF1bnNldF91cHN0cmVhbSA+IDEpCiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX2JyYW5jaF91c2FnZSwgb3B0aW9ucyk7CiAKQEAgLTgzNyw5ICs4ODQsMTEgQEAKIAkJY29sb3B0cyA9IDA7CiAJfQogCi0JaWYgKGRlbGV0ZSkKKwlpZiAoZGVsZXRlKSB7CisJCWlmICghYXJnYykKKwkJCWRpZShfKCJicmFuY2ggbmFtZSByZXF1aXJlZCIpKTsKIAkJcmV0dXJuIGRlbGV0ZV9icmFuY2hlcyhhcmdjLCBhcmd2LCBkZWxldGUgPiAxLCBraW5kcywgcXVpZXQpOwotCWVsc2UgaWYgKGxpc3QpIHsKKwl9IGVsc2UgaWYgKGxpc3QpIHsKIAkJaW50IHJldCA9IHByaW50X3JlZl9saXN0KGtpbmRzLCBkZXRhY2hlZCwgdmVyYm9zZSwgYWJicmV2LAogCQkJCQkgd2l0aF9jb21taXQsIGFyZ3YpOwogCQlwcmludF9jb2x1bW5zKCZvdXRwdXQsIGNvbG9wdHMsIE5VTEwpOwpAQCAtODUyLDM3ICs5MDEsNTEgQEAKIAogCQlpZiAoIWFyZ2MpIHsKIAkJCWlmIChkZXRhY2hlZCkKLQkJCQlkaWUoIkNhbm5vdCBnaXZlIGRlc2NyaXB0aW9uIHRvIGRldGFjaGVkIEhFQUQiKTsKKwkJCQlkaWUoXygiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIpKTsKIAkJCWJyYW5jaF9uYW1lID0gaGVhZDsKIAkJfSBlbHNlIGlmIChhcmdjID09IDEpCiAJCQlicmFuY2hfbmFtZSA9IGFyZ3ZbMF07CiAJCWVsc2UKLQkJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX2JyYW5jaF91c2FnZSwgb3B0aW9ucyk7CisJCQlkaWUoXygiY2Fubm90IGVkaXQgZGVzY3JpcHRpb24gb2YgbW9yZSB0aGFuIG9uZSBicmFuY2giKSk7CiAKIAkJc3RyYnVmX2FkZGYoJmJyYW5jaF9yZWYsICJyZWZzL2hlYWRzLyVzIiwgYnJhbmNoX25hbWUpOwogCQlpZiAoIXJlZl9leGlzdHMoYnJhbmNoX3JlZi5idWYpKSB7CiAJCQlzdHJidWZfcmVsZWFzZSgmYnJhbmNoX3JlZik7CiAKIAkJCWlmICghYXJnYykKLQkJCQlyZXR1cm4gZXJyb3IoIk5vIGNvbW1pdCBvbiBicmFuY2ggJyVzJyB5ZXQuIiwKKwkJCQlyZXR1cm4gZXJyb3IoXygiTm8gY29tbWl0IG9uIGJyYW5jaCAnJXMnIHlldC4iKSwKIAkJCQkJICAgICBicmFuY2hfbmFtZSk7CiAJCQllbHNlCi0JCQkJcmV0dXJuIGVycm9yKCJObyBzdWNoIGJyYW5jaCAnJXMnLiIsIGJyYW5jaF9uYW1lKTsKKwkJCQlyZXR1cm4gZXJyb3IoXygiTm8gYnJhbmNoIG5hbWVkICclcycuIiksCisJCQkJCSAgICAgYnJhbmNoX25hbWUpOwogCQl9CiAJCXN0cmJ1Zl9yZWxlYXNlKCZicmFuY2hfcmVmKTsKIAogCQlpZiAoZWRpdF9icmFuY2hfZGVzY3JpcHRpb24oYnJhbmNoX25hbWUpKQogCQkJcmV0dXJuIDE7CiAJfSBlbHNlIGlmIChyZW5hbWUpIHsKLQkJaWYgKGFyZ2MgPT0gMSkKKwkJaWYgKCFhcmdjKQorCQkJZGllKF8oImJyYW5jaCBuYW1lIHJlcXVpcmVkIikpOworCQllbHNlIGlmIChhcmdjID09IDEpCiAJCQlyZW5hbWVfYnJhbmNoKGhlYWQsIGFyZ3ZbMF0sIHJlbmFtZSA+IDEpOwogCQllbHNlIGlmIChhcmdjID09IDIpCiAJCQlyZW5hbWVfYnJhbmNoKGFyZ3ZbMF0sIGFyZ3ZbMV0sIHJlbmFtZSA+IDEpOwogCQllbHNlCi0JCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9icmFuY2hfdXNhZ2UsIG9wdGlvbnMpOworCQkJZGllKF8oInRvbyBtYW55IGJyYW5jaGVzIGZvciBhIHJlbmFtZSBvcGVyYXRpb24iKSk7CiAJfSBlbHNlIGlmIChuZXdfdXBzdHJlYW0pIHsKIAkJc3RydWN0IGJyYW5jaCAqYnJhbmNoID0gYnJhbmNoX2dldChhcmd2WzBdKTsKIAorCQlpZiAoYXJnYyA+IDEpCisJCQlkaWUoXygidG9vIG1hbnkgYnJhbmNoZXMgdG8gc2V0IG5ldyB1cHN0cmVhbSIpKTsKKworCQlpZiAoIWJyYW5jaCkgeworCQkJaWYgKCFhcmdjIHx8ICFzdHJjbXAoYXJndlswXSwgIkhFQUQiKSkKKwkJCQlkaWUoXygiY291bGQgbm90IHNldCB1cHN0cmVhbSBvZiBIRUFEIHRvICVzIHdoZW4gIgorCQkJCSAgICAgICJpdCBkb2VzIG5vdCBwb2ludCB0byBhbnkgYnJhbmNoLiIpLAorCQkJCSAgICBuZXdfdXBzdHJlYW0pOworCQkJZGllKF8oIm5vIHN1Y2ggYnJhbmNoICclcyciKSwgYXJndlswXSk7CisJCX0KKwogCQlpZiAoIXJlZl9leGlzdHMoYnJhbmNoLT5yZWZuYW1lKSkKIAkJCWRpZShfKCJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIpLCBicmFuY2gtPm5hbWUpOwogCkBAIC04OTUsNiArOTU4LDE2IEBACiAJCXN0cnVjdCBicmFuY2ggKmJyYW5jaCA9IGJyYW5jaF9nZXQoYXJndlswXSk7CiAJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAKKwkJaWYgKGFyZ2MgPiAxKQorCQkJZGllKF8oInRvbyBtYW55IGJyYW5jaGVzIHRvIHVuc2V0IHVwc3RyZWFtIikpOworCisJCWlmICghYnJhbmNoKSB7CisJCQlpZiAoIWFyZ2MgfHwgIXN0cmNtcChhcmd2WzBdLCAiSEVBRCIpKQorCQkJCWRpZShfKCJjb3VsZCBub3QgdW5zZXQgdXBzdHJlYW0gb2YgSEVBRCB3aGVuICIKKwkJCQkgICAgICAiaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iKSk7CisJCQlkaWUoXygibm8gc3VjaCBicmFuY2ggJyVzJyIpLCBhcmd2WzBdKTsKKwkJfQorCiAJCWlmICghYnJhbmNoX2hhc19tZXJnZV9jb25maWcoYnJhbmNoKSkgewogCQkJZGllKF8oIkJyYW5jaCAnJXMnIGhhcyBubyB1cHN0cmVhbSBpbmZvcm1hdGlvbiIpLCBicmFuY2gtPm5hbWUpOwogCQl9CkBAIC05MTAsNiArOTgzLDEyIEBACiAJCWludCBicmFuY2hfZXhpc3RlZCA9IDAsIHJlbW90ZV90cmFja2luZyA9IDA7CiAJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAKKwkJaWYgKCFzdHJjbXAoYXJndlswXSwgIkhFQUQiKSkKKwkJCWRpZShfKCJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiKSk7CisKKwkJaWYgKCFicmFuY2gpCisJCQlkaWUoXygibm8gc3VjaCBicmFuY2ggJyVzJyIpLCBhcmd2WzBdKTsKKwogCQlpZiAoa2luZHMgIT0gUkVGX0xPQ0FMX0JSQU5DSCkKIAkJCWRpZShfKCItYSBhbmQgLXIgb3B0aW9ucyB0byAnZ2l0IGJyYW5jaCcgZG8gbm90IG1ha2Ugc2Vuc2Ugd2l0aCBhIGJyYW5jaCBuYW1lIikpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL2NhdC1maWxlLmMgYi9idWlsdGluL2NhdC1maWxlLmMKaW5kZXggMDA1MjhkZC4uMDQ1Y2VlNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jYXQtZmlsZS5jCisrKyBiL2J1aWx0aW4vY2F0LWZpbGUuYwpAQCAtMTYsNzMgKzE2LDYgQEAKICNkZWZpbmUgQkFUQ0ggMQogI2RlZmluZSBCQVRDSF9DSEVDSyAyCiAKLXN0YXRpYyB2b2lkIHBwcmludF90YWcoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUpCi17Ci0JLyogdGhlIHBhcnNlciBpbiB0YWcuYyBpcyB1c2VsZXNzIGhlcmUuICovCi0JY29uc3QgY2hhciAqZW5kcCA9IGJ1ZiArIHNpemU7Ci0JY29uc3QgY2hhciAqY3AgPSBidWY7Ci0KLQl3aGlsZSAoY3AgPCBlbmRwKSB7Ci0JCWNoYXIgYyA9ICpjcCsrOwotCQlpZiAoYyAhPSAnXG4nKQotCQkJY29udGludWU7Ci0JCWlmICg3IDw9IGVuZHAgLSBjcCAmJiAhbWVtY21wKCJ0YWdnZXIgIiwgY3AsIDcpKSB7Ci0JCQljb25zdCBjaGFyICp0YWdnZXIgPSBjcDsKLQotCQkJLyogRm91bmQgdGhlIHRhZ2dlciBsaW5lLiAgQ29weSBvdXQgdGhlIGNvbnRlbnRzCi0JCQkgKiBvZiB0aGUgYnVmZmVyIHNvIGZhci4KLQkJCSAqLwotCQkJd3JpdGVfb3JfZGllKDEsIGJ1ZiwgY3AgLSBidWYpOwotCi0JCQkvKgotCQkJICogRG8gc29tZXRoaW5nIGludGVsbGlnZW50LCBsaWtlIHByZXR0eS1wcmludGluZwotCQkJICogdGhlIGRhdGUuCi0JCQkgKi8KLQkJCXdoaWxlIChjcCA8IGVuZHApIHsKLQkJCQlpZiAoKmNwKysgPT0gJ1xuJykgewotCQkJCQkvKiB0YWdnZXIgdG8gY3AgaXMgYSBsaW5lCi0JCQkJCSAqIHRoYXQgaGFzIGlkZW50IGFuZCB0aW1lLgotCQkJCQkgKi8KLQkJCQkJY29uc3QgY2hhciAqc3AgPSB0YWdnZXI7Ci0JCQkJCWNoYXIgKmVwOwotCQkJCQl1bnNpZ25lZCBsb25nIGRhdGU7Ci0JCQkJCWxvbmcgdHo7Ci0JCQkJCXdoaWxlIChzcCA8IGNwICYmICpzcCAhPSAnPicpCi0JCQkJCQlzcCsrOwotCQkJCQlpZiAoc3AgPT0gY3ApIHsKLQkJCQkJCS8qIGdpdmUgdXAgKi8KLQkJCQkJCXdyaXRlX29yX2RpZSgxLCB0YWdnZXIsCi0JCQkJCQkJICAgICBjcCAtIHRhZ2dlcik7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCQl3aGlsZSAoc3AgPCBjcCAmJgotCQkJCQkgICAgICAgISgnMCcgPD0gKnNwICYmICpzcCA8PSAnOScpKQotCQkJCQkJc3ArKzsKLQkJCQkJd3JpdGVfb3JfZGllKDEsIHRhZ2dlciwgc3AgLSB0YWdnZXIpOwotCQkJCQlkYXRlID0gc3RydG91bChzcCwgJmVwLCAxMCk7Ci0JCQkJCXR6ID0gc3RydG9sKGVwLCBOVUxMLCAxMCk7Ci0JCQkJCXNwID0gc2hvd19kYXRlKGRhdGUsIHR6LCAwKTsKLQkJCQkJd3JpdGVfb3JfZGllKDEsIHNwLCBzdHJsZW4oc3ApKTsKLQkJCQkJeHdyaXRlKDEsICJcbiIsIDEpOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQlicmVhazsKLQkJfQotCQlpZiAoY3AgPCBlbmRwICYmICpjcCA9PSAnXG4nKQotCQkJLyogZW5kIG9mIGhlYWRlciAqLwotCQkJYnJlYWs7Ci0JfQotCS8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgY29waWVkIG91dCB0aGUgaGVhZGVyIHVwIHRvIHRoZSBlbmQgb2YKLQkgKiB0aGUgdGFnZ2VyIGxpbmUgYW5kIGNwIHBvaW50cyBhdCBvbmUgcGFzdCBcbi4gIEl0IGNvdWxkIGJlIHRoZQotCSAqIG5leHQgaGVhZGVyIGxpbmUgYWZ0ZXIgdGhlIHRhZ2dlciBsaW5lLCBvciBpdCBjb3VsZCBiZSBhbm90aGVyCi0JICogXG4gdGhhdCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBoZWFkZXJzLiAgV2UgbmVlZCB0byBjb3B5IG91dCB0aGUKLQkgKiByZW1haW5kZXIgYXMgaXMuCi0JICovCi0JaWYgKGNwIDwgZW5kcCkKLQkJd3JpdGVfb3JfZGllKDEsIGNwLCBlbmRwIC0gY3ApOwotfQotCiBzdGF0aWMgaW50IGNhdF9vbmVfZmlsZShpbnQgb3B0LCBjb25zdCBjaGFyICpleHBfdHlwZSwgY29uc3QgY2hhciAqb2JqX25hbWUpCiB7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKQEAgLTEzMywxMCArNjYsNiBAQAogCQlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOwogCQlpZiAoIWJ1ZikKIAkJCWRpZSgiQ2Fubm90IHJlYWQgb2JqZWN0ICVzIiwgb2JqX25hbWUpOwotCQlpZiAodHlwZSA9PSBPQkpfVEFHKSB7Ci0JCQlwcHJpbnRfdGFnKHNoYTEsIGJ1Ziwgc2l6ZSk7Ci0JCQlyZXR1cm4gMDsKLQkJfQogCiAJCS8qIG90aGVyd2lzZSBqdXN0IHNwaXQgb3V0IHRoZSBkYXRhICovCiAJCWJyZWFrOwpAQCAtMTkzLDcgKzEyMiw3IEBACiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAllbnVtIG9iamVjdF90eXBlIHR5cGUgPSAwOwogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQl2b2lkICpjb250ZW50cyA9IGNvbnRlbnRzOworCXZvaWQgKmNvbnRlbnRzID0gTlVMTDsKIAogCWlmICghb2JqX25hbWUpCiAJICAgcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9idWlsdGluL2NoZWNrLWlnbm9yZS5jIGIvYnVpbHRpbi9jaGVjay1pZ25vcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YThmYzcwCi0tLSAvZGV2L251bGwKKysrIGIvYnVpbHRpbi9jaGVjay1pZ25vcmUuYwpAQCAtMCwwICsxLDE3NiBAQAorI2luY2x1ZGUgImJ1aWx0aW4uaCIKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgImRpci5oIgorI2luY2x1ZGUgInF1b3RlLmgiCisjaW5jbHVkZSAicGF0aHNwZWMuaCIKKyNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCisKK3N0YXRpYyBpbnQgcXVpZXQsIHZlcmJvc2UsIHN0ZGluX3BhdGhzLCBzaG93X25vbl9tYXRjaGluZzsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2hlY2tfaWdub3JlX3VzYWdlW10gPSB7CisiZ2l0IGNoZWNrLWlnbm9yZSBbb3B0aW9uc10gcGF0aG5hbWUuLi4iLAorImdpdCBjaGVjay1pZ25vcmUgW29wdGlvbnNdIC0tc3RkaW4gPCA8bGlzdC1vZi1wYXRocz4iLAorTlVMTAorfTsKKworc3RhdGljIGludCBudWxsX3Rlcm1fbGluZTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gY2hlY2tfaWdub3JlX29wdGlvbnNbXSA9IHsKKwlPUFRfX1FVSUVUKCZxdWlldCwgTl8oInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIpKSwKKwlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJiZSB2ZXJib3NlIikpLAorCU9QVF9HUk9VUCgiIiksCisJT1BUX0JPT0xFQU4oMCwgInN0ZGluIiwgJnN0ZGluX3BhdGhzLAorCQkgICAgTl8oInJlYWQgZmlsZSBuYW1lcyBmcm9tIHN0ZGluIikpLAorCU9QVF9CT09MRUFOKCd6JywgTlVMTCwgJm51bGxfdGVybV9saW5lLAorCQkgICAgTl8oImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiKSksCisJT1BUX0JPT0xFQU4oJ24nLCAibm9uLW1hdGNoaW5nIiwgJnNob3dfbm9uX21hdGNoaW5nLAorCQkgICAgTl8oInNob3cgbm9uLW1hdGNoaW5nIGlucHV0IHBhdGhzIikpLAorCU9QVF9FTkQoKQorfTsKKworc3RhdGljIHZvaWQgb3V0cHV0X2V4Y2x1ZGUoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGV4Y2x1ZGUgKmV4Y2x1ZGUpCit7CisJY2hhciAqYmFuZyAgPSAoZXhjbHVkZSAmJiBleGNsdWRlLT5mbGFncyAmIEVYQ19GTEFHX05FR0FUSVZFKSAgPyAiISIgOiAiIjsKKwljaGFyICpzbGFzaCA9IChleGNsdWRlICYmIGV4Y2x1ZGUtPmZsYWdzICYgRVhDX0ZMQUdfTVVTVEJFRElSKSA/ICIvIiA6ICIiOworCWlmICghbnVsbF90ZXJtX2xpbmUpIHsKKwkJaWYgKCF2ZXJib3NlKSB7CisJCQl3cml0ZV9uYW1lX3F1b3RlZChwYXRoLCBzdGRvdXQsICdcbicpOworCQl9IGVsc2UgeworCQkJaWYgKGV4Y2x1ZGUpIHsKKwkJCQlxdW90ZV9jX3N0eWxlKGV4Y2x1ZGUtPmVsLT5zcmMsIE5VTEwsIHN0ZG91dCwgMCk7CisJCQkJcHJpbnRmKCI6JWQ6JXMlcyVzXHQiLAorCQkJCSAgICAgICBleGNsdWRlLT5zcmNwb3MsCisJCQkJICAgICAgIGJhbmcsIGV4Y2x1ZGUtPnBhdHRlcm4sIHNsYXNoKTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCXByaW50ZigiOjpcdCIpOworCQkJfQorCQkJcXVvdGVfY19zdHlsZShwYXRoLCBOVUxMLCBzdGRvdXQsIDApOworCQkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKwkJfQorCX0gZWxzZSB7CisJCWlmICghdmVyYm9zZSkgeworCQkJcHJpbnRmKCIlcyVjIiwgcGF0aCwgJ1wwJyk7CisJCX0gZWxzZSB7CisJCQlpZiAoZXhjbHVkZSkKKwkJCQlwcmludGYoIiVzJWMlZCVjJXMlcyVzJWMlcyVjIiwKKwkJCQkgICAgICAgZXhjbHVkZS0+ZWwtPnNyYywgJ1wwJywKKwkJCQkgICAgICAgZXhjbHVkZS0+c3JjcG9zLCAnXDAnLAorCQkJCSAgICAgICBiYW5nLCBleGNsdWRlLT5wYXR0ZXJuLCBzbGFzaCwgJ1wwJywKKwkJCQkgICAgICAgcGF0aCwgJ1wwJyk7CisJCQllbHNlCisJCQkJcHJpbnRmKCIlYyVjJWMlcyVjIiwgJ1wwJywgJ1wwJywgJ1wwJywgcGF0aCwgJ1wwJyk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfaWdub3JlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCQljb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKK3sKKwljb25zdCBjaGFyICpwYXRoLCAqZnVsbF9wYXRoOworCWNoYXIgKnNlZW47CisJaW50IG51bV9pZ25vcmVkID0gMCwgZHR5cGUgPSBEVF9VTktOT1dOLCBpOworCXN0cnVjdCBleGNsdWRlICpleGNsdWRlOworCisJaWYgKCFwYXRoc3BlYyB8fCAhKnBhdGhzcGVjKSB7CisJCWlmICghcXVpZXQpCisJCQlmcHJpbnRmKHN0ZGVyciwgIm5vIHBhdGhzcGVjIGdpdmVuLlxuIik7CisJCXJldHVybiAwOworCX0KKworCS8qCisJICogbG9vayBmb3IgcGF0aHNwZWNzIG1hdGNoaW5nIGVudHJpZXMgaW4gdGhlIGluZGV4LCBzaW5jZSB0aGVzZQorCSAqIHNob3VsZCBub3QgYmUgaWdub3JlZCwgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoCisJICogJ2dpdCBzdGF0dXMnLCAnZ2l0IGFkZCcgZXRjLgorCSAqLworCXNlZW4gPSBmaW5kX3BhdGhzcGVjc19tYXRjaGluZ19hZ2FpbnN0X2luZGV4KHBhdGhzcGVjKTsKKwlmb3IgKGkgPSAwOyBwYXRoc3BlY1tpXTsgaSsrKSB7CisJCXBhdGggPSBwYXRoc3BlY1tpXTsKKwkJZnVsbF9wYXRoID0gcHJlZml4X3BhdGgocHJlZml4LCBwcmVmaXgKKwkJCQkJPyBzdHJsZW4ocHJlZml4KSA6IDAsIHBhdGgpOworCQlmdWxsX3BhdGggPSBjaGVja19wYXRoX2Zvcl9naXRsaW5rKGZ1bGxfcGF0aCk7CisJCWRpZV9pZl9wYXRoX2JleW9uZF9zeW1saW5rKGZ1bGxfcGF0aCwgcHJlZml4KTsKKwkJZXhjbHVkZSA9IE5VTEw7CisJCWlmICghc2VlbltpXSkgeworCQkJZXhjbHVkZSA9IGxhc3RfZXhjbHVkZV9tYXRjaGluZyhkaXIsIGZ1bGxfcGF0aCwgJmR0eXBlKTsKKwkJfQorCQlpZiAoIXF1aWV0ICYmIChleGNsdWRlIHx8IHNob3dfbm9uX21hdGNoaW5nKSkKKwkJCW91dHB1dF9leGNsdWRlKHBhdGgsIGV4Y2x1ZGUpOworCQlpZiAoZXhjbHVkZSkKKwkJCW51bV9pZ25vcmVkKys7CisJfQorCWZyZWUoc2Vlbik7CisKKwlyZXR1cm4gbnVtX2lnbm9yZWQ7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfaWdub3JlX3N0ZGluX3BhdGhzKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiwgbmJ1ZjsKKwljaGFyICpwYXRoc3BlY1syXSA9IHsgTlVMTCwgTlVMTCB9OworCWludCBsaW5lX3Rlcm1pbmF0aW9uID0gbnVsbF90ZXJtX2xpbmUgPyAwIDogJ1xuJzsKKwlpbnQgbnVtX2lnbm9yZWQgPSAwOworCisJc3RyYnVmX2luaXQoJmJ1ZiwgMCk7CisJc3RyYnVmX2luaXQoJm5idWYsIDApOworCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmYnVmLCBzdGRpbiwgbGluZV90ZXJtaW5hdGlvbikgIT0gRU9GKSB7CisJCWlmIChsaW5lX3Rlcm1pbmF0aW9uICYmIGJ1Zi5idWZbMF0gPT0gJyInKSB7CisJCQlzdHJidWZfcmVzZXQoJm5idWYpOworCQkJaWYgKHVucXVvdGVfY19zdHlsZSgmbmJ1ZiwgYnVmLmJ1ZiwgTlVMTCkpCisJCQkJZGllKCJsaW5lIGlzIGJhZGx5IHF1b3RlZCIpOworCQkJc3RyYnVmX3N3YXAoJmJ1ZiwgJm5idWYpOworCQl9CisJCXBhdGhzcGVjWzBdID0gYnVmLmJ1ZjsKKwkJbnVtX2lnbm9yZWQgKz0gY2hlY2tfaWdub3JlKGRpciwgcHJlZml4LCAoY29uc3QgY2hhciAqKilwYXRoc3BlYyk7CisJCW1heWJlX2ZsdXNoX29yX2RpZShzdGRvdXQsICJjaGVjay1pZ25vcmUgdG8gc3Rkb3V0Iik7CisJfQorCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCXN0cmJ1Zl9yZWxlYXNlKCZuYnVmKTsKKwlyZXR1cm4gbnVtX2lnbm9yZWQ7Cit9CisKK2ludCBjbWRfY2hlY2tfaWdub3JlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQoreworCWludCBudW1faWdub3JlZDsKKwlzdHJ1Y3QgZGlyX3N0cnVjdCBkaXI7CisKKwlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CisKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIGNoZWNrX2lnbm9yZV9vcHRpb25zLAorCQkJICAgICBjaGVja19pZ25vcmVfdXNhZ2UsIDApOworCisJaWYgKHN0ZGluX3BhdGhzKSB7CisJCWlmIChhcmdjID4gMCkKKwkJCWRpZShfKCJjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIikpOworCX0gZWxzZSB7CisJCWlmIChudWxsX3Rlcm1fbGluZSkKKwkJCWRpZShfKCIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIpKTsKKwkJaWYgKGFyZ2MgPT0gMCkKKwkJCWRpZShfKCJubyBwYXRoIHNwZWNpZmllZCIpKTsKKwl9CisJaWYgKHF1aWV0KSB7CisJCWlmIChhcmdjID4gMSkKKwkJCWRpZShfKCItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIpKTsKKwkJaWYgKHZlcmJvc2UpCisJCQlkaWUoXygiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiKSk7CisJfQorCWlmIChzaG93X25vbl9tYXRjaGluZyAmJiAhdmVyYm9zZSkKKwkJZGllKF8oIi0tbm9uLW1hdGNoaW5nIGlzIG9ubHkgdmFsaWQgd2l0aCAtLXZlcmJvc2UiKSk7CisKKwkvKiByZWFkX2NhY2hlKCkgaXMgb25seSBuZWNlc3Nhcnkgc28gd2UgY2FuIHdhdGNoIG91dCBmb3Igc3VibW9kdWxlcy4gKi8KKwlpZiAocmVhZF9jYWNoZSgpIDwgMCkKKwkJZGllKF8oImluZGV4IGZpbGUgY29ycnVwdCIpKTsKKworCW1lbXNldCgmZGlyLCAwLCBzaXplb2YoZGlyKSk7CisJc2V0dXBfc3RhbmRhcmRfZXhjbHVkZXMoJmRpcik7CisKKwlpZiAoc3RkaW5fcGF0aHMpIHsKKwkJbnVtX2lnbm9yZWQgPSBjaGVja19pZ25vcmVfc3RkaW5fcGF0aHMoJmRpciwgcHJlZml4KTsKKwl9IGVsc2UgeworCQludW1faWdub3JlZCA9IGNoZWNrX2lnbm9yZSgmZGlyLCBwcmVmaXgsIGFyZ3YpOworCQltYXliZV9mbHVzaF9vcl9kaWUoc3Rkb3V0LCAiaWdub3JlIHRvIHN0ZG91dCIpOworCX0KKworCWNsZWFyX2RpcmVjdG9yeSgmZGlyKTsKKworCXJldHVybiAhbnVtX2lnbm9yZWQ7Cit9CmRpZmYgLS1naXQgYS9idWlsdGluL2NoZWNrb3V0LmMgYi9idWlsdGluL2NoZWNrb3V0LmMKaW5kZXggYTljMWI1YS4uM2JlMDAxOCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jaGVja291dC5jCisrKyBiL2J1aWx0aW4vY2hlY2tvdXQuYwpAQCAtMzUsNiArMzUsNyBAQAogCWludCBmb3JjZV9kZXRhY2g7CiAJaW50IHdyaXRlb3V0X3N0YWdlOwogCWludCBvdmVyd3JpdGVfaWdub3JlOworCWludCBpZ25vcmVfc2tpcHdvcmt0cmVlOwogCiAJY29uc3QgY2hhciAqbmV3X2JyYW5jaDsKIAljb25zdCBjaGFyICpuZXdfYnJhbmNoX2ZvcmNlOwpAQCAtMjcxLDI0ICsyNzIsNTcgQEAKIAkJOwogCXBzX21hdGNoZWQgPSB4Y2FsbG9jKDEsIHBvcyk7CiAKKwkvKgorCSAqIE1ha2Ugc3VyZSBhbGwgcGF0aHNwZWNzIHBhcnRpY2lwYXRlZCBpbiBsb2NhdGluZyB0aGUgcGF0aHMKKwkgKiB0byBiZSBjaGVja2VkIG91dC4KKwkgKi8KIAlmb3IgKHBvcyA9IDA7IHBvcyA8IGFjdGl2ZV9ucjsgcG9zKyspIHsKIAkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOwotCQlpZiAob3B0cy0+c291cmNlX3RyZWUgJiYgIShjZS0+Y2VfZmxhZ3MgJiBDRV9VUERBVEUpKQorCQljZS0+Y2VfZmxhZ3MgJj0gfkNFX01BVENIRUQ7CisJCWlmICghb3B0cy0+aWdub3JlX3NraXB3b3JrdHJlZSAmJiBjZV9za2lwX3dvcmt0cmVlKGNlKSkKIAkJCWNvbnRpbnVlOwotCQltYXRjaF9wYXRoc3BlYyhvcHRzLT5wYXRoc3BlYywgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCAwLCBwc19tYXRjaGVkKTsKKwkJaWYgKG9wdHMtPnNvdXJjZV90cmVlICYmICEoY2UtPmNlX2ZsYWdzICYgQ0VfVVBEQVRFKSkKKwkJCS8qCisJCQkgKiAiZ2l0IGNoZWNrb3V0IHRyZWUtaXNoIC0tIHBhdGgiLCBidXQgdGhpcyBlbnRyeQorCQkJICogaXMgaW4gdGhlIG9yaWdpbmFsIGluZGV4OyBpdCB3aWxsIG5vdCBiZSBjaGVja2VkCisJCQkgKiBvdXQgdG8gdGhlIHdvcmtpbmcgdHJlZSBhbmQgaXQgZG9lcyBub3QgbWF0dGVyCisJCQkgKiBpZiBwYXRoc3BlYyBtYXRjaGVkIHRoaXMgZW50cnkuICBXZSB3aWxsIG5vdCBkbworCQkJICogYW55dGhpbmcgdG8gdGhpcyBlbnRyeSBhdCBhbGwuCisJCQkgKi8KKwkJCWNvbnRpbnVlOworCQkvKgorCQkgKiBFaXRoZXIgdGhpcyBlbnRyeSBjYW1lIGZyb20gdGhlIHRyZWUtaXNoIHdlIGFyZQorCQkgKiBjaGVja2luZyB0aGUgcGF0aHMgb3V0IG9mLCBvciB3ZSBhcmUgY2hlY2tpbmcgb3V0CisJCSAqIG9mIHRoZSBpbmRleC4KKwkJICoKKwkJICogSWYgaXQgY29tZXMgZnJvbSB0aGUgdHJlZS1pc2gsIHdlIGFscmVhZHkga25vdyBpdAorCQkgKiBtYXRjaGVzIHRoZSBwYXRoc3BlYyBhbmQgY291bGQganVzdCBzdGFtcAorCQkgKiBDRV9NQVRDSEVEIHRvIGl0IGZyb20gdXBkYXRlX3NvbWUoKS4gQnV0IHdlIHN0aWxsCisJCSAqIG5lZWQgcHNfbWF0Y2hlZCBhbmQgcmVhZF90cmVlX3JlY3Vyc2l2ZSAoYW5kCisJCSAqIGV2ZW50dWFsbHkgdHJlZV9lbnRyeV9pbnRlcmVzdGluZykgY2Fubm90IGZpbGwKKwkJICogcHNfbWF0Y2hlZCB5ZXQuIE9uY2UgaXQgY2FuLCB3ZSBjYW4gYXZvaWQgY2FsbGluZworCQkgKiBtYXRjaF9wYXRoc3BlYygpIGZvciBfYWxsXyBlbnRyaWVzIHdoZW4KKwkJICogb3B0cy0+c291cmNlX3RyZWUgIT0gTlVMTC4KKwkJICovCisJCWlmIChtYXRjaF9wYXRoc3BlYyhvcHRzLT5wYXRoc3BlYywgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLAorCQkJCSAgIDAsIHBzX21hdGNoZWQpKQorCQkJY2UtPmNlX2ZsYWdzIHw9IENFX01BVENIRUQ7CiAJfQogCi0JaWYgKHJlcG9ydF9wYXRoX2Vycm9yKHBzX21hdGNoZWQsIG9wdHMtPnBhdGhzcGVjLCBvcHRzLT5wcmVmaXgpKQorCWlmIChyZXBvcnRfcGF0aF9lcnJvcihwc19tYXRjaGVkLCBvcHRzLT5wYXRoc3BlYywgb3B0cy0+cHJlZml4KSkgeworCQlmcmVlKHBzX21hdGNoZWQpOwogCQlyZXR1cm4gMTsKKwl9CisJZnJlZShwc19tYXRjaGVkKTsKIAogCS8qICJjaGVja291dCAtbSBwYXRoIiB0byByZWNyZWF0ZSBjb25mbGljdGVkIHN0YXRlICovCiAJaWYgKG9wdHMtPm1lcmdlKQotCQl1bm1lcmdlX2NhY2hlKG9wdHMtPnBhdGhzcGVjKTsKKwkJdW5tZXJnZV9tYXJrZWRfaW5kZXgoJnRoZV9pbmRleCk7CiAKIAkvKiBBbnkgdW5tZXJnZWQgcGF0aHM/ICovCiAJZm9yIChwb3MgPSAwOyBwb3MgPCBhY3RpdmVfbnI7IHBvcysrKSB7CiAJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKLQkJaWYgKG1hdGNoX3BhdGhzcGVjKG9wdHMtPnBhdGhzcGVjLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSksIDAsIE5VTEwpKSB7CisJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9NQVRDSEVEKSB7CiAJCQlpZiAoIWNlX3N0YWdlKGNlKSkKIAkJCQljb250aW51ZTsKIAkJCWlmIChvcHRzLT5mb3JjZSkgewpAQCAtMzEzLDkgKzM0Nyw3IEBACiAJc3RhdGUucmVmcmVzaF9jYWNoZSA9IDE7CiAJZm9yIChwb3MgPSAwOyBwb3MgPCBhY3RpdmVfbnI7IHBvcysrKSB7CiAJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKLQkJaWYgKG9wdHMtPnNvdXJjZV90cmVlICYmICEoY2UtPmNlX2ZsYWdzICYgQ0VfVVBEQVRFKSkKLQkJCWNvbnRpbnVlOwotCQlpZiAobWF0Y2hfcGF0aHNwZWMob3B0cy0+cGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgTlVMTCkpIHsKKwkJaWYgKGNlLT5jZV9mbGFncyAmIENFX01BVENIRUQpIHsKIAkJCWlmICghY2Vfc3RhZ2UoY2UpKSB7CiAJCQkJZXJycyB8PSBjaGVja291dF9lbnRyeShjZSwgJnN0YXRlLCBOVUxMKTsKIAkJCQljb250aW51ZTsKQEAgLTcwMCw3ICs3MzIsNyBAQAogCQkJIklmIHlvdSB3YW50IHRvIGtlZXAgdGhlbSBieSBjcmVhdGluZyBhIG5ldyBicmFuY2gsICIKIAkJCSJ0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxudG8gZG8gc28gd2l0aDpcblxuIgogCQkJIiBnaXQgYnJhbmNoIG5ld19icmFuY2hfbmFtZSAlc1xuXG4iKSwKLQkJCXNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKKwkJCWZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVikpOwogfQogCiAvKgpAQCAtNzkzLDM4ICs4MjUsNDMgQEAKIH0KIAogc3RydWN0IHRyYWNraW5nX25hbWVfZGF0YSB7Ci0JY29uc3QgY2hhciAqbmFtZTsKLQljaGFyICpyZW1vdGU7CisJLyogY29uc3QgKi8gY2hhciAqc3JjX3JlZjsKKwljaGFyICpkc3RfcmVmOworCXVuc2lnbmVkIGNoYXIgKmRzdF9zaGExOwogCWludCB1bmlxdWU7CiB9OwogCi1zdGF0aWMgaW50IGNoZWNrX3RyYWNraW5nX25hbWUoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJCSAgICAgICBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCitzdGF0aWMgaW50IGNoZWNrX3RyYWNraW5nX25hbWUoc3RydWN0IHJlbW90ZSAqcmVtb3RlLCB2b2lkICpjYl9kYXRhKQogewogCXN0cnVjdCB0cmFja2luZ19uYW1lX2RhdGEgKmNiID0gY2JfZGF0YTsKLQljb25zdCBjaGFyICpzbGFzaDsKLQotCWlmIChwcmVmaXhjbXAocmVmbmFtZSwgInJlZnMvcmVtb3Rlcy8iKSkKKwlzdHJ1Y3QgcmVmc3BlYyBxdWVyeTsKKwltZW1zZXQoJnF1ZXJ5LCAwLCBzaXplb2Yoc3RydWN0IHJlZnNwZWMpKTsKKwlxdWVyeS5zcmMgPSBjYi0+c3JjX3JlZjsKKwlpZiAocmVtb3RlX2ZpbmRfdHJhY2tpbmcocmVtb3RlLCAmcXVlcnkpIHx8CisJICAgIGdldF9zaGExKHF1ZXJ5LmRzdCwgY2ItPmRzdF9zaGExKSkgeworCQlmcmVlKHF1ZXJ5LmRzdCk7CiAJCXJldHVybiAwOwotCXNsYXNoID0gc3RyY2hyKHJlZm5hbWUgKyAxMywgJy8nKTsKLQlpZiAoIXNsYXNoIHx8IHN0cmNtcChzbGFzaCArIDEsIGNiLT5uYW1lKSkKLQkJcmV0dXJuIDA7Ci0JaWYgKGNiLT5yZW1vdGUpIHsKKwl9CisJaWYgKGNiLT5kc3RfcmVmKSB7CisJCWZyZWUocXVlcnkuZHN0KTsKIAkJY2ItPnVuaXF1ZSA9IDA7CiAJCXJldHVybiAwOwogCX0KLQljYi0+cmVtb3RlID0geHN0cmR1cChyZWZuYW1lKTsKKwljYi0+ZHN0X3JlZiA9IHF1ZXJ5LmRzdDsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKnVuaXF1ZV90cmFja2luZ19uYW1lKGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgY29uc3QgY2hhciAqdW5pcXVlX3RyYWNraW5nX25hbWUoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSkKIHsKLQlzdHJ1Y3QgdHJhY2tpbmdfbmFtZV9kYXRhIGNiX2RhdGEgPSB7IE5VTEwsIE5VTEwsIDEgfTsKLQljYl9kYXRhLm5hbWUgPSBuYW1lOwotCWZvcl9lYWNoX3JlZihjaGVja190cmFja2luZ19uYW1lLCAmY2JfZGF0YSk7CisJc3RydWN0IHRyYWNraW5nX25hbWVfZGF0YSBjYl9kYXRhID0geyBOVUxMLCBOVUxMLCBOVUxMLCAxIH07CisJY2hhciBzcmNfcmVmW1BBVEhfTUFYXTsKKwlzbnByaW50ZihzcmNfcmVmLCBQQVRIX01BWCwgInJlZnMvaGVhZHMvJXMiLCBuYW1lKTsKKwljYl9kYXRhLnNyY19yZWYgPSBzcmNfcmVmOworCWNiX2RhdGEuZHN0X3NoYTEgPSBzaGExOworCWZvcl9lYWNoX3JlbW90ZShjaGVja190cmFja2luZ19uYW1lLCAmY2JfZGF0YSk7CiAJaWYgKGNiX2RhdGEudW5pcXVlKQotCQlyZXR1cm4gY2JfZGF0YS5yZW1vdGU7Ci0JZnJlZShjYl9kYXRhLnJlbW90ZSk7CisJCXJldHVybiBjYl9kYXRhLmRzdF9yZWY7CisJZnJlZShjYl9kYXRhLmRzdF9yZWYpOwogCXJldHVybiBOVUxMOwogfQogCkBAIC04ODcsOCArOTI0LDggQEAKIAkJaWYgKGR3aW1fbmV3X2xvY2FsX2JyYW5jaF9vayAmJgogCQkgICAgIWNoZWNrX2ZpbGVuYW1lKE5VTEwsIGFyZykgJiYKIAkJICAgIGFyZ2MgPT0gMSkgewotCQkJY29uc3QgY2hhciAqcmVtb3RlID0gdW5pcXVlX3RyYWNraW5nX25hbWUoYXJnKTsKLQkJCWlmICghcmVtb3RlIHx8IGdldF9zaGExKHJlbW90ZSwgcmV2KSkKKwkJCWNvbnN0IGNoYXIgKnJlbW90ZSA9IHVuaXF1ZV90cmFja2luZ19uYW1lKGFyZywgcmV2KTsKKwkJCWlmICghcmVtb3RlKQogCQkJCXJldHVybiBhcmdjb3VudDsKIAkJCSpuZXdfYnJhbmNoID0gYXJnOwogCQkJYXJnID0gcmVtb3RlOwpAQCAtMTAyOSw2ICsxMDY2LDggQEAKIAkJT1BUX1NUUklORygwLCAiY29uZmxpY3QiLCAmY29uZmxpY3Rfc3R5bGUsIE5fKCJzdHlsZSIpLAogCQkJICAgTl8oImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiKSksCiAJCU9QVF9CT09MRUFOKCdwJywgInBhdGNoIiwgJm9wdHMucGF0Y2hfbW9kZSwgTl8oInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IikpLAorCQlPUFRfQk9PTCgwLCAiaWdub3JlLXNraXAtd29ya3RyZWUtYml0cyIsICZvcHRzLmlnbm9yZV9za2lwd29ya3RyZWUsCisJCQkgTl8oImRvIG5vdCBsaW1pdCBwYXRoc3BlY3MgdG8gc3BhcnNlIGVudHJpZXMgb25seSIpKSwKIAkJeyBPUFRJT05fQk9PTEVBTiwgMCwgImd1ZXNzIiwgJmR3aW1fbmV3X2xvY2FsX2JyYW5jaCwgTlVMTCwKIAkJICBOXygic2Vjb25kIGd1ZXNzICdnaXQgY2hlY2tvdXQgbm8tc3VjaC1icmFuY2gnIiksCiAJCSAgUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX0hJRERFTiB9LApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jbGVhbi5jIGIvYnVpbHRpbi9jbGVhbi5jCmluZGV4IGY0Yjc2MGIuLjA0ZTM5NmIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY2xlYW4uYworKysgYi9idWlsdGluL2NsZWFuLmMKQEAgLTE1Myw2ICsxNTMsNyBAQAogCXN0YXRpYyBjb25zdCBjaGFyICoqcGF0aHNwZWM7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhjbHVkZV9saXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKIAljb25zdCBjaGFyICpxbmFtZTsKIAljaGFyICpzZWVuID0gTlVMTDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKQEAgLTIwNSw5ICsyMDYsOSBAQAogCWlmICghaWdub3JlZCkKIAkJc2V0dXBfc3RhbmRhcmRfZXhjbHVkZXMoJmRpcik7CiAKKwllbCA9IGFkZF9leGNsdWRlX2xpc3QoJmRpciwgRVhDX0NNREwsICItLWV4Y2x1ZGUgb3B0aW9uIik7CiAJZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGVfbGlzdC5ucjsgaSsrKQotCQlhZGRfZXhjbHVkZShleGNsdWRlX2xpc3QuaXRlbXNbaV0uc3RyaW5nLCAiIiwgMCwKLQkJCSAgICAmZGlyLmV4Y2x1ZGVfbGlzdFtFWENfQ01ETF0pOworCQlhZGRfZXhjbHVkZShleGNsdWRlX2xpc3QuaXRlbXNbaV0uc3RyaW5nLCAiIiwgMCwgZWwsIC0oaSsxKSk7CiAKIAlwYXRoc3BlYyA9IGdldF9wYXRoc3BlYyhwcmVmaXgsIGFyZ3YpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL2Nsb25lLmMgYi9idWlsdGluL2Nsb25lLmMKaW5kZXggMzZlYzk5ZC4uNjZiZmY1NyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jbG9uZS5jCisrKyBiL2J1aWx0aW4vY2xvbmUuYwpAQCAtMTgsMTEgKzE4LDExIEBACiAjaW5jbHVkZSAidHJhbnNwb3J0LmgiCiAjaW5jbHVkZSAic3RyYnVmLmgiCiAjaW5jbHVkZSAiZGlyLmgiCi0jaW5jbHVkZSAicGFjay1yZWZzLmgiCiAjaW5jbHVkZSAic2lnY2hhaW4uaCIKICNpbmNsdWRlICJicmFuY2guaCIKICNpbmNsdWRlICJyZW1vdGUuaCIKICNpbmNsdWRlICJydW4tY29tbWFuZC5oIgorI2luY2x1ZGUgImNvbm5lY3RlZC5oIgogCiAvKgogICogT3ZlcmFsbCBGSVhNRXM6CkBAIC0yMzEsMTYgKzIzMSwyNiBAQAogc3RhdGljIGludCBhZGRfb25lX3JlZmVyZW5jZShzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSwgdm9pZCAqY2JfZGF0YSkKIHsKIAljaGFyICpyZWZfZ2l0OworCWNvbnN0IGNoYXIgKnJlcG87CiAJc3RydWN0IHN0cmJ1ZiBhbHRlcm5hdGUgPSBTVFJCVUZfSU5JVDsKIAotCS8qIEJld2FyZTogcmVhbF9wYXRoKCkgYW5kIG1rcGF0aCgpIHJldHVybiBzdGF0aWMgYnVmZmVyICovCisJLyogQmV3YXJlOiByZWFkX2dpdGZpbGUoKSwgcmVhbF9wYXRoKCkgYW5kIG1rcGF0aCgpIHJldHVybiBzdGF0aWMgYnVmZmVyICovCiAJcmVmX2dpdCA9IHhzdHJkdXAocmVhbF9wYXRoKGl0ZW0tPnN0cmluZykpOwotCWlmIChpc19kaXJlY3RvcnkobWtwYXRoKCIlcy8uZ2l0L29iamVjdHMiLCByZWZfZ2l0KSkpIHsKKworCXJlcG8gPSByZWFkX2dpdGZpbGUocmVmX2dpdCk7CisJaWYgKCFyZXBvKQorCQlyZXBvID0gcmVhZF9naXRmaWxlKG1rcGF0aCgiJXMvLmdpdCIsIHJlZl9naXQpKTsKKwlpZiAocmVwbykgeworCQlmcmVlKHJlZl9naXQpOworCQlyZWZfZ2l0ID0geHN0cmR1cChyZXBvKTsKKwl9CisKKwlpZiAoIXJlcG8gJiYgaXNfZGlyZWN0b3J5KG1rcGF0aCgiJXMvLmdpdC9vYmplY3RzIiwgcmVmX2dpdCkpKSB7CiAJCWNoYXIgKnJlZl9naXRfZ2l0ID0gbWtwYXRoZHVwKCIlcy8uZ2l0IiwgcmVmX2dpdCk7CiAJCWZyZWUocmVmX2dpdCk7CiAJCXJlZl9naXQgPSByZWZfZ2l0X2dpdDsKIAl9IGVsc2UgaWYgKCFpc19kaXJlY3RvcnkobWtwYXRoKCIlcy9vYmplY3RzIiwgcmVmX2dpdCkpKQotCQlkaWUoXygicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCBkaXJlY3RvcnkuIiksCisJCWRpZShfKCJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIHJlcG9zaXRvcnkuIiksCiAJCSAgICBpdGVtLT5zdHJpbmcpOwogCiAJc3RyYnVmX2FkZGYoJmFsdGVybmF0ZSwgIiVzL29iamVjdHMiLCByZWZfZ2l0KTsKQEAgLTM3NiwxMCArMzg2LDMyIEBACiBzdGF0aWMgY29uc3QgY2hhciAqanVua193b3JrX3RyZWU7CiBzdGF0aWMgY29uc3QgY2hhciAqanVua19naXRfZGlyOwogc3RhdGljIHBpZF90IGp1bmtfcGlkOworc3RhdGljIGVudW0geworCUpVTktfTEVBVkVfTk9ORSwKKwlKVU5LX0xFQVZFX1JFUE8sCisJSlVOS19MRUFWRV9BTEwKK30ganVua19tb2RlID0gSlVOS19MRUFWRV9OT05FOworCitzdGF0aWMgY29uc3QgY2hhciBqdW5rX2xlYXZlX3JlcG9fbXNnW10gPQorTl8oIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyAgICJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyAgICJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIik7CiAKIHN0YXRpYyB2b2lkIHJlbW92ZV9qdW5rKHZvaWQpCiB7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCisJc3dpdGNoIChqdW5rX21vZGUpIHsKKwljYXNlIEpVTktfTEVBVkVfUkVQTzoKKwkJd2FybmluZygiJXMiLCBfKGp1bmtfbGVhdmVfcmVwb19tc2cpKTsKKwkJLyogZmFsbC10aHJvdWdoICovCisJY2FzZSBKVU5LX0xFQVZFX0FMTDoKKwkJcmV0dXJuOworCWRlZmF1bHQ6CisJCS8qIHByb2NlZWQgdG8gcmVtb3ZhbCAqLworCQlicmVhazsKKwl9CisKIAlpZiAoZ2V0cGlkKCkgIT0ganVua19waWQpCiAJCXJldHVybjsKIAlpZiAoanVua19naXRfZGlyKSB7CkBAIC00ODUsMTIgKzUxNyw0MyBAQAogCX0KIH0KIAorc3RhdGljIGludCBpdGVyYXRlX3JlZl9tYXAodm9pZCAqY2JfZGF0YSwgdW5zaWduZWQgY2hhciBzaGExWzIwXSkKK3sKKwlzdHJ1Y3QgcmVmICoqcm0gPSBjYl9kYXRhOworCXN0cnVjdCByZWYgKnJlZiA9ICpybTsKKworCS8qCisJICogU2tpcCBhbnl0aGluZyBtaXNzaW5nIGEgcGVlcl9yZWYsIHdoaWNoIHdlIGFyZSBub3QKKwkgKiBhY3R1YWxseSBnb2luZyB0byB3cml0ZSBhIHJlZiBmb3IuCisJICovCisJd2hpbGUgKHJlZiAmJiAhcmVmLT5wZWVyX3JlZikKKwkJcmVmID0gcmVmLT5uZXh0OworCS8qIFJldHVybmluZyAtMSBub3RlcyAiZW5kIG9mIGxpc3QiIHRvIHRoZSBjYWxsZXIuICovCisJaWYgKCFyZWYpCisJCXJldHVybiAtMTsKKworCWhhc2hjcHkoc2hhMSwgcmVmLT5vbGRfc2hhMSk7CisJKnJtID0gcmVmLT5uZXh0OworCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVtb3RlX3JlZnMoY29uc3Qgc3RydWN0IHJlZiAqcmVmcywKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcmVmICptYXBwZWRfcmVmcywKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgcmVmICpyZW1vdGVfaGVhZF9wb2ludHNfYXQsCiAJCQkgICAgICAgY29uc3QgY2hhciAqYnJhbmNoX3RvcCwKLQkJCSAgICAgICBjb25zdCBjaGFyICptc2cpCisJCQkgICAgICAgY29uc3QgY2hhciAqbXNnLAorCQkJICAgICAgIHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCkKIHsKKwljb25zdCBzdHJ1Y3QgcmVmICpybSA9IG1hcHBlZF9yZWZzOworCisJaWYgKDAgPD0gb3B0aW9uX3ZlcmJvc2l0eSkKKwkJcHJpbnRmKF8oIkNoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiAiKSk7CisJaWYgKGNoZWNrX2V2ZXJ5dGhpbmdfY29ubmVjdGVkX3dpdGhfdHJhbnNwb3J0KGl0ZXJhdGVfcmVmX21hcCwKKwkJCQkJCSAgICAgIDAsICZybSwgdHJhbnNwb3J0KSkKKwkJZGllKF8oInJlbW90ZSBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzIikpOworCWlmICgwIDw9IG9wdGlvbl92ZXJib3NpdHkpCisJCXByaW50ZihfKCJkb25lXG4iKSk7CisKIAlpZiAocmVmcykgewogCQl3cml0ZV9yZW1vdGVfcmVmcyhtYXBwZWRfcmVmcyk7CiAJCWlmIChvcHRpb25fc2luZ2xlX2JyYW5jaCkKQEAgLTU3OSw3ICs2NDIsOCBAQAogCXRyZWUgPSBwYXJzZV90cmVlX2luZGlyZWN0KHNoYTEpOwogCXBhcnNlX3RyZWUodHJlZSk7CiAJaW5pdF90cmVlX2Rlc2MoJnQsIHRyZWUtPmJ1ZmZlciwgdHJlZS0+c2l6ZSk7Ci0JdW5wYWNrX3RyZWVzKDEsICZ0LCAmb3B0cyk7CisJaWYgKHVucGFja190cmVlcygxLCAmdCwgJm9wdHMpIDwgMCkKKwkJZGllKF8oInVuYWJsZSB0byBjaGVja291dCB3b3JraW5nIHRyZWUiKSk7CiAKIAlpZiAod3JpdGVfY2FjaGUoZmQsIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yKSB8fAogCSAgICBjb21taXRfbG9ja2VkX2luZGV4KGxvY2tfZmlsZSkpCkBAIC03MjQsNiArNzg4LDggQEAKIAlpc19sb2NhbCA9IG9wdGlvbl9sb2NhbCAhPSAwICYmIHBhdGggJiYgIWlzX2J1bmRsZTsKIAlpZiAoaXNfbG9jYWwgJiYgb3B0aW9uX2RlcHRoKQogCQl3YXJuaW5nKF8oIi0tZGVwdGggaXMgaWdub3JlZCBpbiBsb2NhbCBjbG9uZXM7IHVzZSBmaWxlOi8vIGluc3RlYWQuIikpOworCWlmIChvcHRpb25fbG9jYWwgPiAwICYmICFpc19sb2NhbCkKKwkJd2FybmluZyhfKCItLWxvY2FsIGlzIGlnbm9yZWQiKSk7CiAKIAlpZiAoYXJnYyA9PSAyKQogCQlkaXIgPSB4c3RyZHVwKGFyZ3ZbMV0pOwpAQCAtNzY3LDggKzgzMyw2IEBACiAJYXRleGl0KHJlbW92ZV9qdW5rKTsKIAlzaWdjaGFpbl9wdXNoX2NvbW1vbihyZW1vdmVfanVua19vbl9zaWduYWwpOwogCi0Jc2V0ZW52KENPTkZJR19FTlZJUk9OTUVOVCwgbWtwYXRoKCIlcy9jb25maWciLCBnaXRfZGlyKSwgMSk7Ci0KIAlpZiAoc2FmZV9jcmVhdGVfbGVhZGluZ19kaXJlY3Rvcmllc19jb25zdChnaXRfZGlyKSA8IDApCiAJCWRpZShfKCJjb3VsZCBub3QgY3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgb2YgJyVzJyIpLCBnaXRfZGlyKTsKIApAQCAtNzg3LDEzICs4NTEsNiBAQAogCWluaXRfZGIob3B0aW9uX3RlbXBsYXRlLCBJTklUX0RCX1FVSUVUKTsKIAl3cml0ZV9jb25maWcoJm9wdGlvbl9jb25maWcpOwogCi0JLyoKLQkgKiBBdCB0aGlzIHBvaW50LCB0aGUgY29uZmlnIGV4aXN0cywgc28gd2UgZG8gbm90IG5lZWQgdGhlCi0JICogZW52aXJvbm1lbnQgdmFyaWFibGUuICBXZSBhY3R1YWxseSBuZWVkIHRvIHVuc2V0IGl0LCB0b28sIHRvCi0JICogcmUtZW5hYmxlIHBhcnNpbmcgb2YgdGhlIGdsb2JhbCBjb25maWdzLgotCSAqLwotCXVuc2V0ZW52KENPTkZJR19FTlZJUk9OTUVOVCk7Ci0KIAlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CiAKIAlpZiAob3B0aW9uX2JhcmUpIHsKQEAgLTgzOSw2ICs4OTYsOSBAQAogCQlpZiAob3B0aW9uX3VwbG9hZF9wYWNrKQogCQkJdHJhbnNwb3J0X3NldF9vcHRpb24odHJhbnNwb3J0LCBUUkFOU19PUFRfVVBMT0FEUEFDSywKIAkJCQkJICAgICBvcHRpb25fdXBsb2FkX3BhY2spOworCisJCWlmICh0cmFuc3BvcnQtPnNtYXJ0X29wdGlvbnMgJiYgIW9wdGlvbl9kZXB0aCkKKwkJCXRyYW5zcG9ydC0+c21hcnRfb3B0aW9ucy0+Y2hlY2tfc2VsZl9jb250YWluZWRfYW5kX2Nvbm5lY3RlZCA9IDE7CiAJfQogCiAJcmVmcyA9IHRyYW5zcG9ydF9nZXRfcmVtb3RlX3JlZnModHJhbnNwb3J0KTsKQEAgLTkwMCwxOSArOTYwLDIwIEBACiAJCXRyYW5zcG9ydF9mZXRjaF9yZWZzKHRyYW5zcG9ydCwgbWFwcGVkX3JlZnMpOwogCiAJdXBkYXRlX3JlbW90ZV9yZWZzKHJlZnMsIG1hcHBlZF9yZWZzLCByZW1vdGVfaGVhZF9wb2ludHNfYXQsCi0JCQkgICBicmFuY2hfdG9wLmJ1ZiwgcmVmbG9nX21zZy5idWYpOworCQkJICAgYnJhbmNoX3RvcC5idWYsIHJlZmxvZ19tc2cuYnVmLCB0cmFuc3BvcnQpOwogCiAJdXBkYXRlX2hlYWQob3VyX2hlYWRfcG9pbnRzX2F0LCByZW1vdGVfaGVhZCwgcmVmbG9nX21zZy5idWYpOwogCiAJdHJhbnNwb3J0X3VubG9ja19wYWNrKHRyYW5zcG9ydCk7CiAJdHJhbnNwb3J0X2Rpc2Nvbm5lY3QodHJhbnNwb3J0KTsKIAorCWp1bmtfbW9kZSA9IEpVTktfTEVBVkVfUkVQTzsKIAllcnIgPSBjaGVja291dCgpOwogCiAJc3RyYnVmX3JlbGVhc2UoJnJlZmxvZ19tc2cpOwogCXN0cmJ1Zl9yZWxlYXNlKCZicmFuY2hfdG9wKTsKIAlzdHJidWZfcmVsZWFzZSgma2V5KTsKIAlzdHJidWZfcmVsZWFzZSgmdmFsdWUpOwotCWp1bmtfcGlkID0gMDsKKwlqdW5rX21vZGUgPSBKVU5LX0xFQVZFX0FMTDsKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb21taXQtdHJlZS5jIGIvYnVpbHRpbi9jb21taXQtdHJlZS5jCmluZGV4IGVhYzkwMWEuLmY2NDFmZjIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY29tbWl0LXRyZWUuYworKysgYi9idWlsdGluL2NvbW1pdC10cmVlLmMKQEAgLTEwLDcgKzEwLDcgQEAKICNpbmNsdWRlICJ1dGY4LmgiCiAjaW5jbHVkZSAiZ3BnLWludGVyZmFjZS5oIgogCi1zdGF0aWMgY29uc3QgY2hhciBjb21taXRfdHJlZV91c2FnZVtdID0gImdpdCBjb21taXQtdHJlZSBbKC1wIDxzaGExPikuLi5dIFstUzxzaWduZXI+XSBbLW0gPG1lc3NhZ2U+XSBbLUYgPGZpbGU+XSA8c2hhMT4gPGNoYW5nZWxvZyI7CitzdGF0aWMgY29uc3QgY2hhciBjb21taXRfdHJlZV91c2FnZVtdID0gImdpdCBjb21taXQtdHJlZSBbKC1wIDxzaGExPikuLi5dIFstU1s8a2V5aWQ+XV0gWy1tIDxtZXNzYWdlPl0gWy1GIDxmaWxlPl0gPHNoYTE+IDxjaGFuZ2Vsb2ciOwogCiBzdGF0aWMgdm9pZCBuZXdfcGFyZW50KHN0cnVjdCBjb21taXQgKnBhcmVudCwgc3RydWN0IGNvbW1pdF9saXN0ICoqcGFyZW50c19wKQogewpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb21taXQuYyBiL2J1aWx0aW4vY29tbWl0LmMKaW5kZXggOTY2ODQxMC4uNmI2OTNjMSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb21taXQuYworKysgYi9idWlsdGluL2NvbW1pdC5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiZ3BnLWludGVyZmFjZS5oIgogI2luY2x1ZGUgImNvbHVtbi5oIgogI2luY2x1ZGUgInNlcXVlbmNlci5oIgorI2luY2x1ZGUgIm5vdGVzLXV0aWxzLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9jb21taXRfdXNhZ2VbXSA9IHsKIAlOXygiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIiksCkBAIC0xMDMsMTEgKzEwNCwxMSBAQAogCUNMRUFOVVBfTk9ORSwKIAlDTEVBTlVQX0FMTAogfSBjbGVhbnVwX21vZGU7Ci1zdGF0aWMgY2hhciAqY2xlYW51cF9hcmc7CitzdGF0aWMgY29uc3QgY2hhciAqY2xlYW51cF9hcmc7CiAKIHN0YXRpYyBlbnVtIGNvbW1pdF93aGVuY2Ugd2hlbmNlOwogc3RhdGljIGludCB1c2VfZWRpdG9yID0gMSwgaW5jbHVkZV9zdGF0dXMgPSAxOwotc3RhdGljIGludCBzaG93X2lnbm9yZWRfaW5fc3RhdHVzOworc3RhdGljIGludCBzaG93X2lnbm9yZWRfaW5fc3RhdHVzLCBoYXZlX29wdGlvbl9tOwogc3RhdGljIGNvbnN0IGNoYXIgKm9ubHlfaW5jbHVkZV9hc3N1bWVkOwogc3RhdGljIHN0cnVjdCBzdHJidWYgbWVzc2FnZSA9IFNUUkJVRl9JTklUOwogCkBAIC0xMjEsMTEgKzEyMiwxNSBAQAogc3RhdGljIGludCBvcHRfcGFyc2VfbShjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQogewogCXN0cnVjdCBzdHJidWYgKmJ1ZiA9IG9wdC0+dmFsdWU7Ci0JaWYgKHVuc2V0KQorCWlmICh1bnNldCkgeworCQloYXZlX29wdGlvbl9tID0gMDsKIAkJc3RyYnVmX3NldGxlbihidWYsIDApOwotCWVsc2UgeworCX0gZWxzZSB7CisJCWhhdmVfb3B0aW9uX20gPSAxOworCQlpZiAoYnVmLT5sZW4pCisJCQlzdHJidWZfYWRkY2goYnVmLCAnXG4nKTsKIAkJc3RyYnVmX2FkZHN0cihidWYsIGFyZyk7Ci0JCXN0cmJ1Zl9hZGRzdHIoYnVmLCAiXG5cbiIpOworCQlzdHJidWZfY29tcGxldGVfbGluZShidWYpOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTcwMCw3ICs3MDUsNyBAQAogCQkJcHJldmlvdXMgPSBlb2w7CiAJCX0KIAotCQlhcHBlbmRfc2lnbm9mZigmc2IsIGlnbm9yZV9mb290ZXIpOworCQlhcHBlbmRfc2lnbm9mZigmc2IsIGlnbm9yZV9mb290ZXIsIDApOwogCX0KIAogCWlmIChmd3JpdGUoc2IuYnVmLCAxLCBzYi5sZW4sIHMtPmZwKSA8IHNiLmxlbikKQEAgLTczMywxNSArNzM4LDE1IEBACiAJCWlmIChjbGVhbnVwX21vZGUgPT0gQ0xFQU5VUF9BTEwpCiAJCQlzdGF0dXNfcHJpbnRmKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJXygiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiIKLQkJCQkiIExpbmVzIHN0YXJ0aW5nXG53aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSIKLQkJCQkiIG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iKSk7CisJCQkJICAiIExpbmVzIHN0YXJ0aW5nXG53aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkiCisJCQkJICAiIG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iKSwgY29tbWVudF9saW5lX2NoYXIpOwogCQllbHNlIC8qIENMRUFOVVBfU1BBQ0UsIHRoYXQgaXMuICovCiAJCQlzdGF0dXNfcHJpbnRmKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJXygiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiIKLQkJCQkiIExpbmVzIHN0YXJ0aW5nXG4iCi0JCQkJIndpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSIKLQkJCQkiIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgotCQkJCSJBbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIikpOworCQkJCSAgIiBMaW5lcyBzdGFydGluZ1xuIgorCQkJCSAgIndpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0iCisJCQkJICAiIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgorCQkJCSAgIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iKSwgY29tbWVudF9saW5lX2NoYXIpOwogCQlpZiAob25seV9pbmNsdWRlX2Fzc3VtZWQpCiAJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIEdJVF9DT0xPUl9OT1JNQUwsCiAJCQkJCSIlcyIsIG9ubHlfaW5jbHVkZV9hc3N1bWVkKTsKQEAgLTk0NiwyNCArOTUxLDE0IEBACiAKIHN0YXRpYyBjb25zdCBjaGFyICpyZWFkX2NvbW1pdF9tZXNzYWdlKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0JY29uc3QgY2hhciAqb3V0X2VuYywgKm91dDsKKwljb25zdCBjaGFyICpvdXRfZW5jOwogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAogCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2J5X25hbWUobmFtZSk7CiAJaWYgKCFjb21taXQpCiAJCWRpZShfKCJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIpLCBuYW1lKTsKIAlvdXRfZW5jID0gZ2V0X2NvbW1pdF9vdXRwdXRfZW5jb2RpbmcoKTsKLQlvdXQgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBvdXRfZW5jKTsKLQotCS8qCi0JICogSWYgd2UgZmFpbGVkIHRvIHJlZW5jb2RlIHRoZSBidWZmZXIsIGp1c3QgY29weSBpdAotCSAqIGJ5dGUgZm9yIGJ5dGUgc28gdGhlIHVzZXIgY2FuIHRyeSB0byBmaXggaXQgdXAuCi0JICogVGhpcyBhbHNvIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgaW5wdXQgYW5kIG91dHB1dAotCSAqIGVuY29kaW5ncyBhcmUgaWRlbnRpY2FsLgotCSAqLwotCWlmIChvdXQgPT0gTlVMTCkKLQkJb3V0ID0geHN0cmR1cChjb21taXQtPmJ1ZmZlcik7Ci0JcmV0dXJuIG91dDsKKwlyZXR1cm4gbG9nbXNnX3JlZW5jb2RlKGNvbW1pdCwgTlVMTCwgb3V0X2VuYyk7CiB9CiAKIHN0YXRpYyBpbnQgcGFyc2VfYW5kX3ZhbGlkYXRlX29wdGlvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSwKQEAgLTk4Myw3ICs5NzgsNyBAQAogCWlmIChmb3JjZV9hdXRob3IgJiYgcmVuZXdfYXV0aG9yc2hpcCkKIAkJZGllKF8oIlVzaW5nIGJvdGggLS1yZXNldC1hdXRob3IgYW5kIC0tYXV0aG9yIGRvZXMgbm90IG1ha2Ugc2Vuc2UiKSk7CiAKLQlpZiAobG9nZmlsZSB8fCBtZXNzYWdlLmxlbiB8fCB1c2VfbWVzc2FnZSB8fCBmaXh1cF9tZXNzYWdlKQorCWlmIChsb2dmaWxlIHx8IGhhdmVfb3B0aW9uX20gfHwgdXNlX21lc3NhZ2UgfHwgZml4dXBfbWVzc2FnZSkKIAkJdXNlX2VkaXRvciA9IDA7CiAJaWYgKDAgPD0gZWRpdF9mbGFnKQogCQl1c2VfZWRpdG9yID0gZWRpdF9mbGFnOwpAQCAtMTMyMCw2ICsxMzE1LDggQEAKIAkJaW5jbHVkZV9zdGF0dXMgPSBnaXRfY29uZmlnX2Jvb2woaywgdik7CiAJCXJldHVybiAwOwogCX0KKwlpZiAoIXN0cmNtcChrLCAiY29tbWl0LmNsZWFudXAiKSkKKwkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZjbGVhbnVwX2FyZywgaywgdik7CiAKIAlzdGF0dXMgPSBnaXRfZ3BnX2NvbmZpZyhrLCB2LCBOVUxMKTsKIAlpZiAoc3RhdHVzKQpAQCAtMTMyNyw4ICsxMzI0LDYgQEAKIAlyZXR1cm4gZ2l0X3N0YXR1c19jb25maWcoaywgdiwgcyk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyIHBvc3RfcmV3cml0ZV9ob29rW10gPSAiaG9va3MvcG9zdC1yZXdyaXRlIjsKLQogc3RhdGljIGludCBydW5fcmV3cml0ZV9ob29rKGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9sZHNoYTEsCiAJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbmV3c2hhMSkKIHsKQEAgLTEzMzksMTAgKzEzMzQsMTAgQEAKIAlpbnQgY29kZTsKIAlzaXplX3QgbjsKIAotCWlmIChhY2Nlc3MoZ2l0X3BhdGgocG9zdF9yZXdyaXRlX2hvb2spLCBYX09LKSA8IDApCisJYXJndlswXSA9IGZpbmRfaG9vaygicG9zdC1yZXdyaXRlIik7CisJaWYgKCFhcmd2WzBdKQogCQlyZXR1cm4gMDsKIAotCWFyZ3ZbMF0gPSBnaXRfcGF0aChwb3N0X3Jld3JpdGVfaG9vayk7CiAJYXJndlsxXSA9ICJhbWVuZCI7CiAJYXJndlsyXSA9IE5VTEw7CiAKQEAgLTE1OTksNyArMTU5NCw3IEBACiAJCWlmIChjZmcpIHsKIAkJCS8qIHdlIGFyZSBhbWVuZGluZywgc28gY3VycmVudF9oZWFkIGlzIG5vdCBOVUxMICovCiAJCQljb3B5X25vdGVfZm9yX3Jld3JpdGUoY2ZnLCBjdXJyZW50X2hlYWQtPm9iamVjdC5zaGExLCBzaGExKTsKLQkJCWZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGNmZyk7CisJCQlmaW5pc2hfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjZmcsICJOb3RlcyBhZGRlZCBieSAnZ2l0IGNvbW1pdCAtLWFtZW5kJyIpOwogCQl9CiAJCXJ1bl9yZXdyaXRlX2hvb2soY3VycmVudF9oZWFkLT5vYmplY3Quc2hhMSwgc2hhMSk7CiAJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb25maWcuYyBiL2J1aWx0aW4vY29uZmlnLmMKaW5kZXggMzNjOWJmOS4uNzc1OTY3MSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb25maWcuYworKysgYi9idWlsdGluL2NvbmZpZy5jCkBAIC0zMjksNiArMzI5LDcgQEAKIHsKIAlnZXRfY29sb3Jib29sX2ZvdW5kID0gLTE7CiAJZ2V0X2RpZmZfY29sb3JfZm91bmQgPSAtMTsKKwlnZXRfY29sb3JfdWlfZm91bmQgPSAtMTsKIAlnaXRfY29uZmlnX3dpdGhfb3B0aW9ucyhnaXRfZ2V0X2NvbG9yYm9vbF9jb25maWcsIE5VTEwsCiAJCQkJZ2l2ZW5fY29uZmlnX2ZpbGUsIHJlc3BlY3RfaW5jbHVkZXMpOwogCkBAIC0zMzksNiArMzQwLDEwIEBACiAJCQlnZXRfY29sb3Jib29sX2ZvdW5kID0gZ2V0X2NvbG9yX3VpX2ZvdW5kOwogCX0KIAorCWlmIChnZXRfY29sb3Jib29sX2ZvdW5kIDwgMCkKKwkJLyogZGVmYXVsdCB2YWx1ZSBpZiBub25lIGZvdW5kIGluIGNvbmZpZyAqLworCQlnZXRfY29sb3Jib29sX2ZvdW5kID0gR0lUX0NPTE9SX0FVVE87CisKIAlnZXRfY29sb3Jib29sX2ZvdW5kID0gd2FudF9jb2xvcihnZXRfY29sb3Jib29sX2ZvdW5kKTsKIAogCWlmIChwcmludCkgewpAQCAtMzc5LDggKzM4NCw4IEBACiAJCQkgKi8KIAkJCWRpZSgiJEhPTUUgbm90IHNldCIpOwogCi0JCWlmIChhY2Nlc3Nfb3Jfd2Fybih1c2VyX2NvbmZpZywgUl9PSykgJiYKLQkJICAgIHhkZ19jb25maWcgJiYgIWFjY2Vzc19vcl93YXJuKHhkZ19jb25maWcsIFJfT0spKQorCQlpZiAoYWNjZXNzX29yX3dhcm4odXNlcl9jb25maWcsIFJfT0ssIDApICYmCisJCSAgICB4ZGdfY29uZmlnICYmICFhY2Nlc3Nfb3Jfd2Fybih4ZGdfY29uZmlnLCBSX09LLCAwKSkKIAkJCWdpdmVuX2NvbmZpZ19maWxlID0geGRnX2NvbmZpZzsKIAkJZWxzZQogCQkJZ2l2ZW5fY29uZmlnX2ZpbGUgPSB1c2VyX2NvbmZpZzsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vY291bnQtb2JqZWN0cy5jIGIvYnVpbHRpbi9jb3VudC1vYmplY3RzLmMKaW5kZXggOWFmYWE4OC4uYTdmNzBjYiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb3VudC1vYmplY3RzLmMKKysrIGIvYnVpbHRpbi9jb3VudC1vYmplY3RzLmMKQEAgLTksMTEgKzksMjIgQEAKICNpbmNsdWRlICJidWlsdGluLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnYXJiYWdlOworc3RhdGljIG9mZl90IHNpemVfZ2FyYmFnZTsKKworc3RhdGljIHZvaWQgcmVhbF9yZXBvcnRfZ2FyYmFnZShjb25zdCBjaGFyICpkZXNjLCBjb25zdCBjaGFyICpwYXRoKQoreworCXN0cnVjdCBzdGF0IHN0OworCWlmICghc3RhdChwYXRoLCAmc3QpKQorCQlzaXplX2dhcmJhZ2UgKz0gc3Quc3Rfc2l6ZTsKKwl3YXJuaW5nKCIlczogJXMiLCBkZXNjLCBwYXRoKTsKKwlnYXJiYWdlKys7Cit9CisKIHN0YXRpYyB2b2lkIGNvdW50X29iamVjdHMoRElSICpkLCBjaGFyICpwYXRoLCBpbnQgbGVuLCBpbnQgdmVyYm9zZSwKIAkJCSAgdW5zaWduZWQgbG9uZyAqbG9vc2UsCiAJCQkgIG9mZl90ICpsb29zZV9zaXplLAotCQkJICB1bnNpZ25lZCBsb25nICpwYWNrZWRfbG9vc2UsCi0JCQkgIHVuc2lnbmVkIGxvbmcgKmdhcmJhZ2UpCisJCQkgIHVuc2lnbmVkIGxvbmcgKnBhY2tlZF9sb29zZSkKIHsKIAlzdHJ1Y3QgZGlyZW50ICplbnQ7CiAJd2hpbGUgKChlbnQgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7CkBAIC00Niw5ICs1NywxMSBAQAogCQl9CiAJCWlmIChiYWQpIHsKIAkJCWlmICh2ZXJib3NlKSB7Ci0JCQkJZXJyb3IoImdhcmJhZ2UgZm91bmQ6ICUuKnMvJXMiLAotCQkJCSAgICAgIGxlbiArIDIsIHBhdGgsIGVudC0+ZF9uYW1lKTsKLQkJCQkoKmdhcmJhZ2UpKys7CisJCQkJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCQkJCXN0cmJ1Zl9hZGRmKCZzYiwgIiUuKnMvJXMiLAorCQkJCQkgICAgbGVuICsgMiwgcGF0aCwgZW50LT5kX25hbWUpOworCQkJCXJlcG9ydF9nYXJiYWdlKCJnYXJiYWdlIGZvdW5kIiwgc2IuYnVmKTsKKwkJCQlzdHJidWZfcmVsZWFzZSgmc2IpOwogCQkJfQogCQkJY29udGludWU7CiAJCX0KQEAgLTY2LDIwICs3OSwyMiBAQAogfQogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IGNvdW50X29iamVjdHNfdXNhZ2VbXSA9IHsKLQlOXygiZ2l0IGNvdW50LW9iamVjdHMgWy12XSIpLAorCU5fKCJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIiksCiAJTlVMTAogfTsKIAogaW50IGNtZF9jb3VudF9vYmplY3RzKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCWludCBpLCB2ZXJib3NlID0gMDsKKwlpbnQgaSwgdmVyYm9zZSA9IDAsIGh1bWFuX3JlYWRhYmxlID0gMDsKIAljb25zdCBjaGFyICpvYmpkaXIgPSBnZXRfb2JqZWN0X2RpcmVjdG9yeSgpOwogCWludCBsZW4gPSBzdHJsZW4ob2JqZGlyKTsKIAljaGFyICpwYXRoID0geG1hbGxvYyhsZW4gKyA1MCk7Ci0JdW5zaWduZWQgbG9uZyBsb29zZSA9IDAsIHBhY2tlZCA9IDAsIHBhY2tlZF9sb29zZSA9IDAsIGdhcmJhZ2UgPSAwOworCXVuc2lnbmVkIGxvbmcgbG9vc2UgPSAwLCBwYWNrZWQgPSAwLCBwYWNrZWRfbG9vc2UgPSAwOwogCW9mZl90IGxvb3NlX3NpemUgPSAwOwogCXN0cnVjdCBvcHRpb24gb3B0c1tdID0gewogCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJiZSB2ZXJib3NlIikpLAorCQlPUFRfQk9PTCgnSCcsICJodW1hbi1yZWFkYWJsZSIsICZodW1hbl9yZWFkYWJsZSwKKwkJCSBOXygicHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IikpLAogCQlPUFRfRU5EKCksCiAJfTsKIApAQCAtODcsNiArMTAyLDggQEAKIAkvKiB3ZSBkbyBub3QgdGFrZSBhcmd1bWVudHMgb3RoZXIgdGhhbiBmbGFncyBmb3Igbm93ICovCiAJaWYgKGFyZ2MpCiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhjb3VudF9vYmplY3RzX3VzYWdlLCBvcHRzKTsKKwlpZiAodmVyYm9zZSkKKwkJcmVwb3J0X2dhcmJhZ2UgPSByZWFsX3JlcG9ydF9nYXJiYWdlOwogCW1lbWNweShwYXRoLCBvYmpkaXIsIGxlbik7CiAJaWYgKGxlbiAmJiBvYmpkaXJbbGVuLTFdICE9ICcvJykKIAkJcGF0aFtsZW4rK10gPSAnLyc7CkBAIC05NywxMyArMTE0LDE2IEBACiAJCWlmICghZCkKIAkJCWNvbnRpbnVlOwogCQljb3VudF9vYmplY3RzKGQsIHBhdGgsIGxlbiwgdmVyYm9zZSwKLQkJCSAgICAgICZsb29zZSwgJmxvb3NlX3NpemUsICZwYWNrZWRfbG9vc2UsICZnYXJiYWdlKTsKKwkJCSAgICAgICZsb29zZSwgJmxvb3NlX3NpemUsICZwYWNrZWRfbG9vc2UpOwogCQljbG9zZWRpcihkKTsKIAl9CiAJaWYgKHZlcmJvc2UpIHsKIAkJc3RydWN0IHBhY2tlZF9naXQgKnA7CiAJCXVuc2lnbmVkIGxvbmcgbnVtX3BhY2sgPSAwOwogCQlvZmZfdCBzaXplX3BhY2sgPSAwOworCQlzdHJ1Y3Qgc3RyYnVmIGxvb3NlX2J1ZiA9IFNUUkJVRl9JTklUOworCQlzdHJ1Y3Qgc3RyYnVmIHBhY2tfYnVmID0gU1RSQlVGX0lOSVQ7CisJCXN0cnVjdCBzdHJidWYgZ2FyYmFnZV9idWYgPSBTVFJCVUZfSU5JVDsKIAkJaWYgKCFwYWNrZWRfZ2l0KQogCQkJcHJlcGFyZV9wYWNrZWRfZ2l0KCk7CiAJCWZvciAocCA9IHBhY2tlZF9naXQ7IHA7IHAgPSBwLT5uZXh0KSB7CkBAIC0xMTUsMTYgKzEzNSw0MCBAQAogCQkJc2l6ZV9wYWNrICs9IHAtPnBhY2tfc2l6ZSArIHAtPmluZGV4X3NpemU7CiAJCQludW1fcGFjaysrOwogCQl9CisKKwkJaWYgKGh1bWFuX3JlYWRhYmxlKSB7CisJCQlzdHJidWZfaHVtYW5pc2VfYnl0ZXMoJmxvb3NlX2J1ZiwgbG9vc2Vfc2l6ZSk7CisJCQlzdHJidWZfaHVtYW5pc2VfYnl0ZXMoJnBhY2tfYnVmLCBzaXplX3BhY2spOworCQkJc3RyYnVmX2h1bWFuaXNlX2J5dGVzKCZnYXJiYWdlX2J1Ziwgc2l6ZV9nYXJiYWdlKTsKKwkJfSBlbHNlIHsKKwkJCXN0cmJ1Zl9hZGRmKCZsb29zZV9idWYsICIlbHUiLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykobG9vc2Vfc2l6ZSAvIDEwMjQpKTsKKwkJCXN0cmJ1Zl9hZGRmKCZwYWNrX2J1ZiwgIiVsdSIsCisJCQkJICAgICh1bnNpZ25lZCBsb25nKShzaXplX3BhY2sgLyAxMDI0KSk7CisJCQlzdHJidWZfYWRkZigmZ2FyYmFnZV9idWYsICIlbHUiLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykoc2l6ZV9nYXJiYWdlIC8gMTAyNCkpOworCQl9CisKIAkJcHJpbnRmKCJjb3VudDogJWx1XG4iLCBsb29zZSk7Ci0JCXByaW50Zigic2l6ZTogJWx1XG4iLCAodW5zaWduZWQgbG9uZykgKGxvb3NlX3NpemUgLyAxMDI0KSk7CisJCXByaW50Zigic2l6ZTogJXNcbiIsIGxvb3NlX2J1Zi5idWYpOwogCQlwcmludGYoImluLXBhY2s6ICVsdVxuIiwgcGFja2VkKTsKIAkJcHJpbnRmKCJwYWNrczogJWx1XG4iLCBudW1fcGFjayk7Ci0JCXByaW50Zigic2l6ZS1wYWNrOiAlbHVcbiIsICh1bnNpZ25lZCBsb25nKSAoc2l6ZV9wYWNrIC8gMTAyNCkpOworCQlwcmludGYoInNpemUtcGFjazogJXNcbiIsIHBhY2tfYnVmLmJ1Zik7CiAJCXByaW50ZigicHJ1bmUtcGFja2FibGU6ICVsdVxuIiwgcGFja2VkX2xvb3NlKTsKIAkJcHJpbnRmKCJnYXJiYWdlOiAlbHVcbiIsIGdhcmJhZ2UpOworCQlwcmludGYoInNpemUtZ2FyYmFnZTogJXNcbiIsIGdhcmJhZ2VfYnVmLmJ1Zik7CisJCXN0cmJ1Zl9yZWxlYXNlKCZsb29zZV9idWYpOworCQlzdHJidWZfcmVsZWFzZSgmcGFja19idWYpOworCQlzdHJidWZfcmVsZWFzZSgmZ2FyYmFnZV9idWYpOworCX0gZWxzZSB7CisJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJCWlmIChodW1hbl9yZWFkYWJsZSkKKwkJCXN0cmJ1Zl9odW1hbmlzZV9ieXRlcygmYnVmLCBsb29zZV9zaXplKTsKKwkJZWxzZQorCQkJc3RyYnVmX2FkZGYoJmJ1ZiwgIiVsdSBraWxvYnl0ZXMiLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykobG9vc2Vfc2l6ZSAvIDEwMjQpKTsKKwkJcHJpbnRmKCIlbHUgb2JqZWN0cywgJXNcbiIsIGxvb3NlLCBidWYuYnVmKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiAJfQotCWVsc2UKLQkJcHJpbnRmKCIlbHUgb2JqZWN0cywgJWx1IGtpbG9ieXRlc1xuIiwKLQkJICAgICAgIGxvb3NlLCAodW5zaWduZWQgbG9uZykgKGxvb3NlX3NpemUgLyAxMDI0KSk7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2Rlc2NyaWJlLmMgYi9idWlsdGluL2Rlc2NyaWJlLmMKaW5kZXggMDRjMTg1Yi4uNGU2NzVjMyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9kZXNjcmliZS5jCisrKyBiL2J1aWx0aW4vZGVzY3JpYmUuYwpAQCAtMjEsNiArMjEsNyBAQAogc3RhdGljIGludCBhbGw7CS8qIEFueSB2YWxpZCByZWYgY2FuIGJlIHVzZWQgKi8KIHN0YXRpYyBpbnQgdGFnczsJLyogQWxsb3cgbGlnaHR3ZWlnaHQgdGFncyAqLwogc3RhdGljIGludCBsb25nZm9ybWF0Oworc3RhdGljIGludCBmaXJzdF9wYXJlbnQ7CiBzdGF0aWMgaW50IGFiYnJldiA9IC0xOyAvKiB1bnNwZWNpZmllZCAqLwogc3RhdGljIGludCBtYXhfY2FuZGlkYXRlcyA9IDEwOwogc3RhdGljIHN0cnVjdCBoYXNoX3RhYmxlIG5hbWVzOwpAQCAtNDIsNyArNDMsNyBAQAogCXVuc2lnbmVkIHByaW86MjsgLyogYW5ub3RhdGVkIHRhZyA9IDIsIHRhZyA9IDEsIGhlYWQgPSAwICovCiAJdW5zaWduZWQgbmFtZV9jaGVja2VkOjE7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQljb25zdCBjaGFyICpwYXRoOworCWNoYXIgKnBhdGg7CiB9Owogc3RhdGljIGNvbnN0IGNoYXIgKnByaW9fbmFtZXNbXSA9IHsKIAkiaGVhZCIsICJsaWdodHdlaWdodCIsICJhbm5vdGF0ZWQiLApAQCAtMTI2LDUxICsxMjcsNTIgQEAKIAkJCX0gZWxzZSB7CiAJCQkJZS0+bmV4dCA9IE5VTEw7CiAJCQl9CisJCQllLT5wYXRoID0gTlVMTDsKIAkJfQogCQllLT50YWcgPSB0YWc7CiAJCWUtPnByaW8gPSBwcmlvOwogCQllLT5uYW1lX2NoZWNrZWQgPSAwOwogCQloYXNoY3B5KGUtPnNoYTEsIHNoYTEpOwotCQllLT5wYXRoID0gcGF0aDsKKwkJZnJlZShlLT5wYXRoKTsKKwkJZS0+cGF0aCA9IHhzdHJkdXAocGF0aCk7CiAJfQogfQogCiBzdGF0aWMgaW50IGdldF9uYW1lKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFnLCB2b2lkICpjYl9kYXRhKQogewotCWludCBtaWdodF9iZV90YWcgPSAhcHJlZml4Y21wKHBhdGgsICJyZWZzL3RhZ3MvIik7CisJaW50IGlzX3RhZyA9ICFwcmVmaXhjbXAocGF0aCwgInJlZnMvdGFncy8iKTsKIAl1bnNpZ25lZCBjaGFyIHBlZWxlZFsyMF07Ci0JaW50IGlzX3RhZywgcHJpbzsKKwlpbnQgaXNfYW5ub3RhdGVkLCBwcmlvOwogCi0JaWYgKCFhbGwgJiYgIW1pZ2h0X2JlX3RhZykKKwkvKiBSZWplY3QgYW55dGhpbmcgb3V0c2lkZSByZWZzL3RhZ3MvIHVubGVzcyAtLWFsbCAqLworCWlmICghYWxsICYmICFpc190YWcpCiAJCXJldHVybiAwOwogCisJLyogQWNjZXB0IG9ubHkgdGFncyB0aGF0IG1hdGNoIHRoZSBwYXR0ZXJuLCBpZiBnaXZlbiAqLworCWlmIChwYXR0ZXJuICYmICghaXNfdGFnIHx8IGZubWF0Y2gocGF0dGVybiwgcGF0aCArIDEwLCAwKSkpCisJCXJldHVybiAwOworCisJLyogSXMgaXQgYW5ub3RhdGVkPyAqLwogCWlmICghcGVlbF9yZWYocGF0aCwgcGVlbGVkKSkgewotCQlpc190YWcgPSAhIWhhc2hjbXAoc2hhMSwgcGVlbGVkKTsKKwkJaXNfYW5ub3RhdGVkID0gISFoYXNoY21wKHNoYTEsIHBlZWxlZCk7CiAJfSBlbHNlIHsKIAkJaGFzaGNweShwZWVsZWQsIHNoYTEpOwotCQlpc190YWcgPSAwOworCQlpc19hbm5vdGF0ZWQgPSAwOwogCX0KIAotCS8qIElmIC0tYWxsLCB0aGVuIGFueSByZWZzIGFyZSB1c2VkLgotCSAqIElmIC0tdGFncywgdGhlbiBhbnkgdGFncyBhcmUgdXNlZC4KLQkgKiBPdGhlcndpc2Ugb25seSBhbm5vdGF0ZWQgdGFncyBhcmUgdXNlZC4KKwkvKgorCSAqIEJ5IGRlZmF1bHQsIHdlIG9ubHkgdXNlIGFubm90YXRlZCB0YWdzLCBidXQgd2l0aCAtLXRhZ3MKKwkgKiB3ZSBmYWxsIGJhY2sgdG8gbGlnaHR3ZWlnaHQgb25lcyAoZXZlbiB3aXRob3V0IC0tdGFncywKKwkgKiB3ZSBzdGlsbCByZW1lbWJlciBsaWdodHdlaWdodCBvbmVzLCBvbmx5IHRvIGdpdmUgaGludHMKKwkgKiBpbiBhbiBlcnJvciBtZXNzYWdlKS4gIC0tYWxsIGFsbG93cyBhbnkgcmVmcyB0byBiZSB1c2VkLgogCSAqLwotCWlmIChtaWdodF9iZV90YWcpIHsKLQkJaWYgKGlzX3RhZykKLQkJCXByaW8gPSAyOwotCQllbHNlCi0JCQlwcmlvID0gMTsKLQotCQlpZiAocGF0dGVybiAmJiBmbm1hdGNoKHBhdHRlcm4sIHBhdGggKyAxMCwgMCkpCi0JCQlwcmlvID0gMDsKLQl9CisJaWYgKGlzX2Fubm90YXRlZCkKKwkJcHJpbyA9IDI7CisJZWxzZSBpZiAoaXNfdGFnKQorCQlwcmlvID0gMTsKIAllbHNlCiAJCXByaW8gPSAwOwogCi0JaWYgKCFhbGwpIHsKLQkJaWYgKCFwcmlvKQotCQkJcmV0dXJuIDA7Ci0JfQogCWFkZF90b19rbm93bl9uYW1lcyhhbGwgPyBwYXRoICsgNSA6IHBhdGggKyAxMCwgcGVlbGVkLCBwcmlvLCBzaGExKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTMzNyw2ICszMzksOSBAQAogCQkJCWNvbW1pdF9saXN0X2luc2VydF9ieV9kYXRlKHAsICZsaXN0KTsKIAkJCXAtPm9iamVjdC5mbGFncyB8PSBjLT5vYmplY3QuZmxhZ3M7CiAJCQlwYXJlbnRzID0gcGFyZW50cy0+bmV4dDsKKworCQkJaWYgKGZpcnN0X3BhcmVudCkKKwkJCQlicmVhazsKIAkJfQogCX0KIApAQCAtNDAyLDkgKzQwNywxMCBAQAogCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTEVBTigwLCAiY29udGFpbnMiLCAgICZjb250YWlucywgTl8oImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiKSksCiAJCU9QVF9CT09MRUFOKDAsICJkZWJ1ZyIsICAgICAgJmRlYnVnLCBOXygiZGVidWcgc2VhcmNoIHN0cmF0ZWd5IG9uIHN0ZGVyciIpKSwKLQkJT1BUX0JPT0xFQU4oMCwgImFsbCIsICAgICAgICAmYWxsLCBOXygidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIikpLAotCQlPUFRfQk9PTEVBTigwLCAidGFncyIsICAgICAgICZ0YWdzLCBOXygidXNlIGFueSB0YWcgaW4gLmdpdC9yZWZzL3RhZ3MiKSksCisJCU9QVF9CT09MRUFOKDAsICJhbGwiLCAgICAgICAgJmFsbCwgTl8oInVzZSBhbnkgcmVmIikpLAorCQlPUFRfQk9PTEVBTigwLCAidGFncyIsICAgICAgICZ0YWdzLCBOXygidXNlIGFueSB0YWcsIGV2ZW4gdW5hbm5vdGF0ZWQiKSksCiAJCU9QVF9CT09MRUFOKDAsICJsb25nIiwgICAgICAgJmxvbmdmb3JtYXQsIE5fKCJhbHdheXMgdXNlIGxvbmcgZm9ybWF0IikpLAorCQlPUFRfQk9PTEVBTigwLCAiZmlyc3QtcGFyZW50IiwgJmZpcnN0X3BhcmVudCwgTl8oIm9ubHkgZm9sbG93IGZpcnN0IHBhcmVudCIpKSwKIAkJT1BUX19BQkJSRVYoJmFiYnJldiksCiAJCU9QVF9TRVRfSU5UKDAsICJleGFjdC1tYXRjaCIsICZtYXhfY2FuZGlkYXRlcywKIAkJCSAgICBOXygib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIpLCAwKSwKZGlmZiAtLWdpdCBhL2J1aWx0aW4vZGlmZi5jIGIvYnVpbHRpbi9kaWZmLmMKaW5kZXggOGMyYWY2Yy4uOWZjMjczZCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9kaWZmLmMKKysrIGIvYnVpbHRpbi9kaWZmLmMKQEAgLTE1Myw3ICsxNTMsOCBAQAogCiBzdGF0aWMgaW50IGJ1aWx0aW5fZGlmZl90cmVlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKIAkJCSAgICAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LAotCQkJICAgICBzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICplbnQpCisJCQkgICAgIHN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmVudDAsCisJCQkgICAgIHN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmVudDEpCiB7CiAJY29uc3QgdW5zaWduZWQgY2hhciAqKHNoYTFbMl0pOwogCWludCBzd2FwID0gMDsKQEAgLTE2MSwxMyArMTYyLDE0IEBACiAJaWYgKGFyZ2MgPiAxKQogCQl1c2FnZShidWlsdGluX2RpZmZfdXNhZ2UpOwogCi0JLyogV2Ugc2F3IHR3byB0cmVlcywgZW50WzBdIGFuZCBlbnRbMV0uCi0JICogaWYgZW50WzFdIGlzIHVuaW50ZXJlc3RpbmcsIHRoZXkgYXJlIHN3YXBwZWQKKwkvKgorCSAqIFdlIHNhdyB0d28gdHJlZXMsIGVudDAgYW5kIGVudDEuICBJZiBlbnQxIGlzIHVuaW50ZXJlc3RpbmcsCisJICogc3dhcCB0aGVtLgogCSAqLwotCWlmIChlbnRbMV0uaXRlbS0+ZmxhZ3MgJiBVTklOVEVSRVNUSU5HKQorCWlmIChlbnQxLT5pdGVtLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpCiAJCXN3YXAgPSAxOwotCXNoYTFbc3dhcF0gPSBlbnRbMF0uaXRlbS0+c2hhMTsKLQlzaGExWzEtc3dhcF0gPSBlbnRbMV0uaXRlbS0+c2hhMTsKKwlzaGExW3N3YXBdID0gZW50MC0+aXRlbS0+c2hhMTsKKwlzaGExWzEtc3dhcF0gPSBlbnQxLT5pdGVtLT5zaGExOwogCWRpZmZfdHJlZV9zaGExKHNoYTFbMF0sIHNoYTFbMV0sICIiLCAmcmV2cy0+ZGlmZm9wdCk7CiAJbG9nX3RyZWVfZGlmZl9mbHVzaChyZXZzKTsKIAlyZXR1cm4gMDsKQEAgLTI1MSw4ICsyNTMsOCBAQAogewogCWludCBpOwogCXN0cnVjdCByZXZfaW5mbyByZXY7Ci0Jc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSBlbnRbMTAwXTsKLQlpbnQgZW50cyA9IDAsIGJsb2JzID0gMCwgcGF0aHMgPSAwOworCXN0cnVjdCBvYmplY3RfYXJyYXkgZW50ID0gT0JKRUNUX0FSUkFZX0lOSVQ7CisJaW50IGJsb2JzID0gMCwgcGF0aHMgPSAwOwogCWNvbnN0IGNoYXIgKnBhdGggPSBOVUxMOwogCXN0cnVjdCBibG9iaW5mbyBibG9iWzJdOwogCWludCBub25naXQ7CkBAIC0zMzcsOSArMzM5LDkgQEAKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgcmV2LnBlbmRpbmcubnI7IGkrKykgewotCQlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICpsaXN0ID0gcmV2LnBlbmRpbmcub2JqZWN0cytpOwotCQlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBsaXN0LT5pdGVtOwotCQljb25zdCBjaGFyICpuYW1lID0gbGlzdC0+bmFtZTsKKwkJc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqZW50cnkgPSAmcmV2LnBlbmRpbmcub2JqZWN0c1tpXTsKKwkJc3RydWN0IG9iamVjdCAqb2JqID0gZW50cnktPml0ZW07CisJCWNvbnN0IGNoYXIgKm5hbWUgPSBlbnRyeS0+bmFtZTsKIAkJaW50IGZsYWdzID0gKG9iai0+ZmxhZ3MgJiBVTklOVEVSRVNUSU5HKTsKIAkJaWYgKCFvYmotPnBhcnNlZCkKIAkJCW9iaiA9IHBhcnNlX29iamVjdChvYmotPnNoYTEpOwpAQCAtMzQ4LDI3ICszNTAsMjEgQEAKIAkJCWRpZShfKCJpbnZhbGlkIG9iamVjdCAnJXMnIGdpdmVuLiIpLCBuYW1lKTsKIAkJaWYgKG9iai0+dHlwZSA9PSBPQkpfQ09NTUlUKQogCQkJb2JqID0gJigoc3RydWN0IGNvbW1pdCAqKW9iaiktPnRyZWUtPm9iamVjdDsKKwogCQlpZiAob2JqLT50eXBlID09IE9CSl9UUkVFKSB7Ci0JCQlpZiAoQVJSQVlfU0laRShlbnQpIDw9IGVudHMpCi0JCQkJZGllKF8oIm1vcmUgdGhhbiAlZCB0cmVlcyBnaXZlbjogJyVzJyIpLAotCQkJCSAgICAoaW50KSBBUlJBWV9TSVpFKGVudCksIG5hbWUpOwogCQkJb2JqLT5mbGFncyB8PSBmbGFnczsKLQkJCWVudFtlbnRzXS5pdGVtID0gb2JqOwotCQkJZW50W2VudHNdLm5hbWUgPSBuYW1lOwotCQkJZW50cysrOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKG9iai0+dHlwZSA9PSBPQkpfQkxPQikgeworCQkJYWRkX29iamVjdF9hcnJheShvYmosIG5hbWUsICZlbnQpOworCQl9IGVsc2UgaWYgKG9iai0+dHlwZSA9PSBPQkpfQkxPQikgewogCQkJaWYgKDIgPD0gYmxvYnMpCiAJCQkJZGllKF8oIm1vcmUgdGhhbiB0d28gYmxvYnMgZ2l2ZW46ICclcyciKSwgbmFtZSk7CiAJCQloYXNoY3B5KGJsb2JbYmxvYnNdLnNoYTEsIG9iai0+c2hhMSk7CiAJCQlibG9iW2Jsb2JzXS5uYW1lID0gbmFtZTsKLQkJCWJsb2JbYmxvYnNdLm1vZGUgPSBsaXN0LT5tb2RlOworCQkJYmxvYltibG9ic10ubW9kZSA9IGVudHJ5LT5tb2RlOwogCQkJYmxvYnMrKzsKLQkJCWNvbnRpbnVlOwogCisJCX0gZWxzZSB7CisJCQlkaWUoXygidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIpLCBuYW1lKTsKIAkJfQotCQlkaWUoXygidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIpLCBuYW1lKTsKIAl9CiAJaWYgKHJldi5wcnVuZV9kYXRhLm5yKSB7CiAJCWlmICghcGF0aCkKQEAgLTM3OSw3ICszNzUsNyBAQAogCS8qCiAJICogTm93LCBkbyB0aGUgYXJndW1lbnRzIGxvb2sgcmVhc29uYWJsZT8KIAkgKi8KLQlpZiAoIWVudHMpIHsKKwlpZiAoIWVudC5ucikgewogCQlzd2l0Y2ggKGJsb2JzKSB7CiAJCWNhc2UgMDoKIAkJCXJlc3VsdCA9IGJ1aWx0aW5fZGlmZl9maWxlcygmcmV2LCBhcmdjLCBhcmd2KTsKQEAgLTQwMCwyMyArMzk2LDI2IEBACiAJfQogCWVsc2UgaWYgKGJsb2JzKQogCQl1c2FnZShidWlsdGluX2RpZmZfdXNhZ2UpOwotCWVsc2UgaWYgKGVudHMgPT0gMSkKKwllbHNlIGlmIChlbnQubnIgPT0gMSkKIAkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX2luZGV4KCZyZXYsIGFyZ2MsIGFyZ3YpOwotCWVsc2UgaWYgKGVudHMgPT0gMikKLQkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX3RyZWUoJnJldiwgYXJnYywgYXJndiwgZW50KTsKLQllbHNlIGlmIChlbnRbMF0uaXRlbS0+ZmxhZ3MgJiBVTklOVEVSRVNUSU5HKSB7CisJZWxzZSBpZiAoZW50Lm5yID09IDIpCisJCXJlc3VsdCA9IGJ1aWx0aW5fZGlmZl90cmVlKCZyZXYsIGFyZ2MsIGFyZ3YsCisJCQkJCSAgICZlbnQub2JqZWN0c1swXSwgJmVudC5vYmplY3RzWzFdKTsKKwllbHNlIGlmIChlbnQub2JqZWN0c1swXS5pdGVtLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpIHsKIAkJLyoKIAkJICogZGlmZiBBLi4uQiB3aGVyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgbWVyZ2UgYmFzZQotCQkgKiBiZXR3ZWVuIEEgYW5kIEIuICBXZSBoYXZlIGVudFswXSA9PSBtZXJnZS1iYXNlLAotCQkgKiBlbnRbZW50cy0yXSA9PSBBLCBhbmQgZW50W2VudHMtMV0gPT0gQi4gIFNob3cgZGlmZgotCQkgKiBiZXR3ZWVuIHRoZSBiYXNlIGFuZCBCLiAgTm90ZSB0aGF0IHdlIHBpY2sgb25lCi0JCSAqIG1lcmdlIGJhc2UgYXQgcmFuZG9tIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lLgorCQkgKiBiZXR3ZWVuIEEgYW5kIEIuICBXZSBoYXZlIGVudC5vYmplY3RzWzBdID09CisJCSAqIG1lcmdlLWJhc2UsIGVudC5vYmplY3RzW2VudHMtMl0gPT0gQSwgYW5kCisJCSAqIGVudC5vYmplY3RzW2VudHMtMV0gPT0gQi4gIFNob3cgZGlmZiBiZXR3ZWVuIHRoZQorCQkgKiBiYXNlIGFuZCBCLiAgTm90ZSB0aGF0IHdlIHBpY2sgb25lIG1lcmdlIGJhc2UgYXQKKwkJICogcmFuZG9tIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lLgogCQkgKi8KLQkJZW50WzFdID0gZW50W2VudHMtMV07Ci0JCXJlc3VsdCA9IGJ1aWx0aW5fZGlmZl90cmVlKCZyZXYsIGFyZ2MsIGFyZ3YsIGVudCk7CisJCXJlc3VsdCA9IGJ1aWx0aW5fZGlmZl90cmVlKCZyZXYsIGFyZ2MsIGFyZ3YsCisJCQkJCSAgICZlbnQub2JqZWN0c1swXSwKKwkJCQkJICAgJmVudC5vYmplY3RzW2VudC5uci0xXSk7CiAJfSBlbHNlCiAJCXJlc3VsdCA9IGJ1aWx0aW5fZGlmZl9jb21iaW5lZCgmcmV2LCBhcmdjLCBhcmd2LAotCQkJCQkgICAgICAgZW50LCBlbnRzKTsKKwkJCQkJICAgICAgIGVudC5vYmplY3RzLCBlbnQubnIpOwogCXJlc3VsdCA9IGRpZmZfcmVzdWx0X2NvZGUoJnJldi5kaWZmb3B0LCByZXN1bHQpOwogCWlmICgxIDwgcmV2LmRpZmZvcHQuc2tpcF9zdGF0X3VubWF0Y2gpCiAJCXJlZnJlc2hfaW5kZXhfcXVpZXRseSgpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mYXN0LWV4cG9ydC5jIGIvYnVpbHRpbi9mYXN0LWV4cG9ydC5jCmluZGV4IDA2YTUyNzkuLmQxZDY4ZTkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZmFzdC1leHBvcnQuYworKysgYi9idWlsdGluL2Zhc3QtZXhwb3J0LmMKQEAgLTI0LDcgKzI0LDcgQEAKIH07CiAKIHN0YXRpYyBpbnQgcHJvZ3Jlc3M7Ci1zdGF0aWMgZW51bSB7IEFCT1JULCBWRVJCQVRJTSwgV0FSTiwgU1RSSVAgfSBzaWduZWRfdGFnX21vZGUgPSBBQk9SVDsKK3N0YXRpYyBlbnVtIHsgQUJPUlQsIFZFUkJBVElNLCBXQVJOLCBXQVJOX1NUUklQLCBTVFJJUCB9IHNpZ25lZF90YWdfbW9kZSA9IEFCT1JUOwogc3RhdGljIGVudW0geyBFUlJPUiwgRFJPUCwgUkVXUklURSB9IHRhZ19vZl9maWx0ZXJlZF9tb2RlID0gRVJST1I7CiBzdGF0aWMgaW50IGZha2VfbWlzc2luZ190YWdnZXI7CiBzdGF0aWMgaW50IHVzZV9kb25lX2ZlYXR1cmU7CkBAIC00MCw2ICs0MCw4IEBACiAJCXNpZ25lZF90YWdfbW9kZSA9IFZFUkJBVElNOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAid2FybiIpKQogCQlzaWduZWRfdGFnX21vZGUgPSBXQVJOOworCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAid2Fybi1zdHJpcCIpKQorCQlzaWduZWRfdGFnX21vZGUgPSBXQVJOX1NUUklQOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAic3RyaXAiKSkKIAkJc2lnbmVkX3RhZ19tb2RlID0gU1RSSVA7CiAJZWxzZQpAQCAtMTEzLDEyICsxMTUsMTMgQEAKIAkJcHJpbnRmKCJwcm9ncmVzcyAlZCBvYmplY3RzXG4iLCBjb3VudGVyKTsKIH0KIAotc3RhdGljIHZvaWQgaGFuZGxlX29iamVjdChjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIHZvaWQgZXhwb3J0X2Jsb2IoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKIHsKIAl1bnNpZ25lZCBsb25nIHNpemU7CiAJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCWNoYXIgKmJ1ZjsKIAlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3Q7CisJaW50IGVhdGVuOwogCiAJaWYgKG5vX2RhdGEpCiAJCXJldHVybjsKQEAgLTEyNiwxNiArMTI5LDE4IEBACiAJaWYgKGlzX251bGxfc2hhMShzaGExKSkKIAkJcmV0dXJuOwogCi0Jb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwotCWlmICghb2JqZWN0KQotCQlkaWUgKCJDb3VsZCBub3QgcmVhZCBibG9iICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOwotCi0JaWYgKG9iamVjdC0+ZmxhZ3MgJiBTSE9XTikKKwlvYmplY3QgPSBsb29rdXBfb2JqZWN0KHNoYTEpOworCWlmIChvYmplY3QgJiYgb2JqZWN0LT5mbGFncyAmIFNIT1dOKQogCQlyZXR1cm47CiAKIAlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOwogCWlmICghYnVmKQogCQlkaWUgKCJDb3VsZCBub3QgcmVhZCBibG9iICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOworCWlmIChjaGVja19zaGExX3NpZ25hdHVyZShzaGExLCBidWYsIHNpemUsIHR5cGVuYW1lKHR5cGUpKSA8IDApCisJCWRpZSgic2hhMSBtaXNtYXRjaCBpbiBibG9iICVzIiwgc2hhMV90b19oZXgoc2hhMSkpOworCW9iamVjdCA9IHBhcnNlX29iamVjdF9idWZmZXIoc2hhMSwgdHlwZSwgc2l6ZSwgYnVmLCAmZWF0ZW4pOworCWlmICghb2JqZWN0KQorCQlkaWUoIkNvdWxkIG5vdCByZWFkIGJsb2IgJXMiLCBzaGExX3RvX2hleChzaGExKSk7CiAKIAltYXJrX25leHRfb2JqZWN0KG9iamVjdCk7CiAKQEAgLTE0Nyw3ICsxNTIsOCBAQAogCXNob3dfcHJvZ3Jlc3MoKTsKIAogCW9iamVjdC0+ZmxhZ3MgfD0gU0hPV047Ci0JZnJlZShidWYpOworCWlmICghZWF0ZW4pCisJCWZyZWUoYnVmKTsKIH0KIAogc3RhdGljIGludCBkZXB0aF9maXJzdChjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8pCkBAIC0zMTIsNyArMzE4LDcgQEAKIAkvKiBFeHBvcnQgdGhlIHJlZmVyZW5jZWQgYmxvYnMsIGFuZCByZW1lbWJlciB0aGUgbWFya3MuICovCiAJZm9yIChpID0gMDsgaSA8IGRpZmZfcXVldWVkX2RpZmYubnI7IGkrKykKIAkJaWYgKCFTX0lTR0lUTElOSyhkaWZmX3F1ZXVlZF9kaWZmLnF1ZXVlW2ldLT50d28tPm1vZGUpKQotCQkJaGFuZGxlX29iamVjdChkaWZmX3F1ZXVlZF9kaWZmLnF1ZXVlW2ldLT50d28tPnNoYTEpOworCQkJZXhwb3J0X2Jsb2IoZGlmZl9xdWV1ZWRfZGlmZi5xdWV1ZVtpXS0+dHdvLT5zaGExKTsKIAogCW1hcmtfbmV4dF9vYmplY3QoJmNvbW1pdC0+b2JqZWN0KTsKIAlpZiAoIWlzX2VuY29kaW5nX3V0ZjgoZW5jb2RpbmcpKQpAQCAtNDI0LDYgKzQzMCwxMCBAQAogCQkJCS8qIGZhbGx0aHJ1ICovCiAJCQljYXNlIFZFUkJBVElNOgogCQkJCWJyZWFrOworCQkJY2FzZSBXQVJOX1NUUklQOgorCQkJCXdhcm5pbmcgKCJTdHJpcHBpbmcgc2lnbmF0dXJlIGZyb20gdGFnICVzIiwKKwkJCQkJIHNoYTFfdG9faGV4KHRhZy0+b2JqZWN0LnNoYTEpKTsKKwkJCQkvKiBmYWxsdGhydSAqLwogCQkJY2FzZSBTVFJJUDoKIAkJCQltZXNzYWdlX3NpemUgPSBzaWduYXR1cmUgKyAxIC0gbWVzc2FnZTsKIAkJCQlicmVhazsKQEAgLTQ3NCwxOCArNDg0LDIxIEBACiAJICAgICAgIChpbnQpbWVzc2FnZV9zaXplLCAoaW50KW1lc3NhZ2Vfc2l6ZSwgbWVzc2FnZSA/IG1lc3NhZ2UgOiAiIik7CiB9CiAKLXN0YXRpYyB2b2lkIGdldF90YWdzX2FuZF9kdXBsaWNhdGVzKHN0cnVjdCBvYmplY3RfYXJyYXkgKnBlbmRpbmcsCitzdGF0aWMgdm9pZCBnZXRfdGFnc19hbmRfZHVwbGljYXRlcyhzdHJ1Y3QgcmV2X2NtZGxpbmVfaW5mbyAqaW5mbywKIAkJCQkgICAgc3RydWN0IHN0cmluZ19saXN0ICpleHRyYV9yZWZzKQogewogCXN0cnVjdCB0YWcgKnRhZzsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBwZW5kaW5nLT5ucjsgaSsrKSB7Ci0JCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmUgPSBwZW5kaW5nLT5vYmplY3RzICsgaTsKKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnI7IGkrKykgeworCQlzdHJ1Y3QgcmV2X2NtZGxpbmVfZW50cnkgKmUgPSBpbmZvLT5yZXYgKyBpOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBjb21taXQ7CisJCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAkJY2hhciAqZnVsbF9uYW1lOwogCisJCWlmIChlLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpCisJCQljb250aW51ZTsKKwogCQlpZiAoZHdpbV9yZWYoZS0+bmFtZSwgc3RybGVuKGUtPm5hbWUpLCBzaGExLCAmZnVsbF9uYW1lKSAhPSAxKQogCQkJY29udGludWU7CiAKQEAgLTUwOSw3ICs1MjIsNyBAQAogCQkJCWNvbW1pdCA9IChzdHJ1Y3QgY29tbWl0ICopdGFnOwogCQkJCWJyZWFrOwogCQkJY2FzZSBPQkpfQkxPQjoKLQkJCQloYW5kbGVfb2JqZWN0KHRhZy0+b2JqZWN0LnNoYTEpOworCQkJCWV4cG9ydF9ibG9iKHRhZy0+b2JqZWN0LnNoYTEpOwogCQkJCWNvbnRpbnVlOwogCQkJZGVmYXVsdDogLyogT0JKX1RBRyAobmVzdGVkIHRhZ3MpIGlzIGFscmVhZHkgaGFuZGxlZCAqLwogCQkJCXdhcm5pbmcoIlRhZyBwb2ludHMgdG8gb2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSAlcywgc2tpcHBpbmcuIiwKQEAgLTUyMywxMCArNTM2LDE0IEBACiAJCQkJdHlwZW5hbWUoZS0+aXRlbS0+dHlwZSkpOwogCQkJY29udGludWU7CiAJCX0KLQkJaWYgKGNvbW1pdC0+dXRpbCkKLQkJCS8qIG1vcmUgdGhhbiBvbmUgbmFtZSBmb3IgdGhlIHNhbWUgb2JqZWN0ICovCisKKwkJLyoKKwkJICogVGhpcyByZWYgd2lsbCBub3QgYmUgdXBkYXRlZCB0aHJvdWdoIGEgY29tbWl0LCBsZXRzIG1ha2UKKwkJICogc3VyZSBpdCBnZXRzIHByb3Blcmx5IHVwZGF0ZWQgZXZlbnR1YWxseS4KKwkJICovCisJCWlmIChjb21taXQtPnV0aWwgfHwgY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBTSE9XTikKIAkJCXN0cmluZ19saXN0X2FwcGVuZChleHRyYV9yZWZzLCBmdWxsX25hbWUpLT51dGlsID0gY29tbWl0OwotCQllbHNlCisJCWlmICghY29tbWl0LT51dGlsKQogCQkJY29tbWl0LT51dGlsID0gZnVsbF9uYW1lOwogCX0KIH0KQEAgLTU5Niw2ICs2MTMsOCBAQAogCQljaGFyICpsaW5lX2VuZCwgKm1hcmtfZW5kOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3Q7CisJCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKKwkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCiAJCWxpbmVfZW5kID0gc3RyY2hyKGxpbmUsICdcbicpOwogCQlpZiAobGluZVswXSAhPSAnOicgfHwgIWxpbmVfZW5kKQpAQCAtNjA0LDE5ICs2MjMsMzAgQEAKIAogCQltYXJrID0gc3RydG91bWF4KGxpbmUgKyAxLCAmbWFya19lbmQsIDEwKTsKIAkJaWYgKCFtYXJrIHx8IG1hcmtfZW5kID09IGxpbmUgKyAxCi0JCQl8fCAqbWFya19lbmQgIT0gJyAnIHx8IGdldF9zaGExKG1hcmtfZW5kICsgMSwgc2hhMSkpCisJCQl8fCAqbWFya19lbmQgIT0gJyAnIHx8IGdldF9zaGExX2hleChtYXJrX2VuZCArIDEsIHNoYTEpKQogCQkJZGllKCJjb3JydXB0IG1hcmsgbGluZTogJXMiLCBsaW5lKTsKIAotCQlvYmplY3QgPSBwYXJzZV9vYmplY3Qoc2hhMSk7Ci0JCWlmICghb2JqZWN0KQotCQkJZGllICgiQ291bGQgbm90IHJlYWQgYmxvYiAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJaWYgKGxhc3RfaWRudW0gPCBtYXJrKQorCQkJbGFzdF9pZG51bSA9IG1hcms7CisKKwkJdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgTlVMTCk7CisJCWlmICh0eXBlIDwgMCkKKwkJCWRpZSgib2JqZWN0IG5vdCBmb3VuZDogJXMiLCBzaGExX3RvX2hleChzaGExKSk7CisKKwkJaWYgKHR5cGUgIT0gT0JKX0NPTU1JVCkKKwkJCS8qIG9ubHkgY29tbWl0cyAqLworCQkJY29udGludWU7CisKKwkJY29tbWl0ID0gbG9va3VwX2NvbW1pdChzaGExKTsKKwkJaWYgKCFjb21taXQpCisJCQlkaWUoIm5vdCBhIGNvbW1pdD8gY2FuJ3QgaGFwcGVuOiAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKworCQlvYmplY3QgPSAmY29tbWl0LT5vYmplY3Q7CiAKIAkJaWYgKG9iamVjdC0+ZmxhZ3MgJiBTSE9XTikKIAkJCWVycm9yKCJPYmplY3QgJXMgYWxyZWFkeSBoYXMgYSBtYXJrIiwgc2hhMV90b19oZXgoc2hhMSkpOwogCiAJCW1hcmtfb2JqZWN0KG9iamVjdCwgbWFyayk7Ci0JCWlmIChsYXN0X2lkbnVtIDwgbWFyaykKLQkJCWxhc3RfaWRudW0gPSBtYXJrOwogCiAJCW9iamVjdC0+ZmxhZ3MgfD0gU0hPV047CiAJfQpAQCAtNjMwLDYgKzY2MCw3IEBACiAJc3RydWN0IHN0cmluZ19saXN0IGV4dHJhX3JlZnMgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAljaGFyICpleHBvcnRfZmlsZW5hbWUgPSBOVUxMLCAqaW1wb3J0X2ZpbGVuYW1lID0gTlVMTDsKKwl1aW50MzJfdCBsYXN0aW1wb3J0aWQ7CiAJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CiAJCU9QVF9JTlRFR0VSKDAsICJwcm9ncmVzcyIsICZwcm9ncmVzcywKIAkJCSAgICBOXygic2hvdyBwcm9ncmVzcyBhZnRlciA8bj4gb2JqZWN0cyIpKSwKQEAgLTY3MywxMSArNzA0LDEyIEBACiAKIAlpZiAoaW1wb3J0X2ZpbGVuYW1lKQogCQlpbXBvcnRfbWFya3MoaW1wb3J0X2ZpbGVuYW1lKTsKKwlsYXN0aW1wb3J0aWQgPSBsYXN0X2lkbnVtOwogCiAJaWYgKGltcG9ydF9maWxlbmFtZSAmJiByZXZzLnBydW5lX2RhdGEubnIpCiAJCWZ1bGxfdHJlZSA9IDE7CiAKLQlnZXRfdGFnc19hbmRfZHVwbGljYXRlcygmcmV2cy5wZW5kaW5nLCAmZXh0cmFfcmVmcyk7CisJZ2V0X3RhZ3NfYW5kX2R1cGxpY2F0ZXMoJnJldnMuY21kbGluZSwgJmV4dHJhX3JlZnMpOwogCiAJaWYgKHByZXBhcmVfcmV2aXNpb25fd2FsaygmcmV2cykpCiAJCWRpZSgicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiKTsKQEAgLTY5NSw3ICs3MjcsNyBAQAogCiAJaGFuZGxlX3RhZ3NfYW5kX2R1cGxpY2F0ZXMoJmV4dHJhX3JlZnMpOwogCi0JaWYgKGV4cG9ydF9maWxlbmFtZSkKKwlpZiAoZXhwb3J0X2ZpbGVuYW1lICYmIGxhc3RpbXBvcnRpZCAhPSBsYXN0X2lkbnVtKQogCQlleHBvcnRfbWFya3MoZXhwb3J0X2ZpbGVuYW1lKTsKIAogCWlmICh1c2VfZG9uZV9mZWF0dXJlKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mZXRjaC1wYWNrLmMgYi9idWlsdGluL2ZldGNoLXBhY2suYwppbmRleCA5NDBhZTM1Li5hYmE0NDY1IDEwMDY0NAotLS0gYS9idWlsdGluL2ZldGNoLXBhY2suYworKysgYi9idWlsdGluL2ZldGNoLXBhY2suYwpAQCAtNywxMiArNywzMSBAQAogIlstLWluY2x1ZGUtdGFnXSBbLS11cGxvYWQtcGFjaz08Z2l0LXVwbG9hZC1wYWNrPl0gWy0tZGVwdGg9PG4+XSAiCiAiWy0tbm8tcHJvZ3Jlc3NdIFstdl0gWzxob3N0PjpdPGRpcmVjdG9yeT4gWzxyZWZzPi4uLl0iOwogCitzdGF0aWMgdm9pZCBhZGRfc291Z2h0X2VudHJ5X21lbShzdHJ1Y3QgcmVmICoqKnNvdWdodCwgaW50ICpuciwgaW50ICphbGxvYywKKwkJCQkgY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4pCit7CisJc3RydWN0IHJlZiAqcmVmID0geGNhbGxvYygxLCBzaXplb2YoKnJlZikgKyBuYW1lbGVuICsgMSk7CisKKwltZW1jcHkocmVmLT5uYW1lLCBuYW1lLCBuYW1lbGVuKTsKKwlyZWYtPm5hbWVbbmFtZWxlbl0gPSAnXDAnOworCSgqbnIpKys7CisJQUxMT0NfR1JPVygqc291Z2h0LCAqbnIsICphbGxvYyk7CisJKCpzb3VnaHQpWypuciAtIDFdID0gcmVmOworfQorCitzdGF0aWMgdm9pZCBhZGRfc291Z2h0X2VudHJ5KHN0cnVjdCByZWYgKioqc291Z2h0LCBpbnQgKm5yLCBpbnQgKmFsbG9jLAorCQkJICAgICBjb25zdCBjaGFyICpzdHJpbmcpCit7CisJYWRkX3NvdWdodF9lbnRyeV9tZW0oc291Z2h0LCBuciwgYWxsb2MsIHN0cmluZywgc3RybGVuKHN0cmluZykpOworfQorCiBpbnQgY21kX2ZldGNoX3BhY2soaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJaW50IGksIHJldDsKIAlzdHJ1Y3QgcmVmICpyZWYgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmRlc3QgPSBOVUxMOwotCXN0cnVjdCBzdHJpbmdfbGlzdCBzb3VnaHQgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKKwlzdHJ1Y3QgcmVmICoqc291Z2h0ID0gTlVMTDsKKwlpbnQgbnJfc291Z2h0ID0gMCwgYWxsb2Nfc291Z2h0ID0gMDsKIAlpbnQgZmRbMl07CiAJY2hhciAqcGFja19sb2NrZmlsZSA9IE5VTEw7CiAJY2hhciAqKnBhY2tfbG9ja2ZpbGVfcHRyID0gTlVMTDsKQEAgLTk0LDI3ICsxMTMsMjQgQEAKIAkgKiByZWZzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0OgogCSAqLwogCWZvciAoOyBpIDwgYXJnYzsgaSsrKQotCQlzdHJpbmdfbGlzdF9hcHBlbmQoJnNvdWdodCwgeHN0cmR1cChhcmd2W2ldKSk7CisJCWFkZF9zb3VnaHRfZW50cnkoJnNvdWdodCwgJm5yX3NvdWdodCwgJmFsbG9jX3NvdWdodCwgYXJndltpXSk7CiAJaWYgKGFyZ3Muc3RkaW5fcmVmcykgewogCQlpZiAoYXJncy5zdGF0ZWxlc3NfcnBjKSB7CiAJCQkvKiBpbiBzdGF0ZWxlc3MgUlBDIG1vZGUgd2UgdXNlIHBrdC1saW5lIHRvIHJlYWQKIAkJCSAqIGZyb20gc3RkaW4sIHVudGlsIHdlIGdldCBhIGZsdXNoIHBhY2tldAogCQkJICovCi0JCQlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOwogCQkJZm9yICg7OykgewotCQkJCWludCBuID0gcGFja2V0X3JlYWRfbGluZSgwLCBsaW5lLCBzaXplb2YobGluZSkpOwotCQkJCWlmICghbikKKwkJCQljaGFyICpsaW5lID0gcGFja2V0X3JlYWRfbGluZSgwLCBOVUxMKTsKKwkJCQlpZiAoIWxpbmUpCiAJCQkJCWJyZWFrOwotCQkJCWlmIChsaW5lW24tMV0gPT0gJ1xuJykKLQkJCQkJbi0tOwotCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmc291Z2h0LCB4bWVtZHVweihsaW5lLCBuKSk7CisJCQkJYWRkX3NvdWdodF9lbnRyeSgmc291Z2h0LCAmbnJfc291Z2h0LCAgJmFsbG9jX3NvdWdodCwgbGluZSk7CiAJCQl9CiAJCX0KIAkJZWxzZSB7CiAJCQkvKiByZWFkIGZyb20gc3RkaW4gb25lIHJlZiBwZXIgbGluZSwgdW50aWwgRU9GICovCiAJCQlzdHJ1Y3Qgc3RyYnVmIGxpbmUgPSBTVFJCVUZfSU5JVDsKIAkJCXdoaWxlIChzdHJidWZfZ2V0bGluZSgmbGluZSwgc3RkaW4sICdcbicpICE9IEVPRikKLQkJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJnNvdWdodCwgc3RyYnVmX2RldGFjaCgmbGluZSwgTlVMTCkpOworCQkJCWFkZF9zb3VnaHRfZW50cnkoJnNvdWdodCwgJm5yX3NvdWdodCwgJmFsbG9jX3NvdWdodCwgbGluZS5idWYpOwogCQkJc3RyYnVmX3JlbGVhc2UoJmxpbmUpOwogCQl9CiAJfQpAQCAtMTI4LDEwICsxNDQsMTAgQEAKIAkJCQkgICBhcmdzLnZlcmJvc2UgPyBDT05ORUNUX1ZFUkJPU0UgOiAwKTsKIAl9CiAKLQlnZXRfcmVtb3RlX2hlYWRzKGZkWzBdLCAmcmVmLCAwLCBOVUxMKTsKKwlnZXRfcmVtb3RlX2hlYWRzKGZkWzBdLCBOVUxMLCAwLCAmcmVmLCAwLCBOVUxMKTsKIAogCXJlZiA9IGZldGNoX3BhY2soJmFyZ3MsIGZkLCBjb25uLCByZWYsIGRlc3QsCi0JCQkgJnNvdWdodCwgcGFja19sb2NrZmlsZV9wdHIpOworCQkJIHNvdWdodCwgbnJfc291Z2h0LCBwYWNrX2xvY2tmaWxlX3B0cik7CiAJaWYgKHBhY2tfbG9ja2ZpbGUpIHsKIAkJcHJpbnRmKCJsb2NrICVzXG4iLCBwYWNrX2xvY2tmaWxlKTsKIAkJZmZsdXNoKHN0ZG91dCk7CkBAIC0xNDEsNyArMTU3LDcgQEAKIAlpZiAoZmluaXNoX2Nvbm5lY3QoY29ubikpCiAJCXJldHVybiAxOwogCi0JcmV0ID0gIXJlZiB8fCBzb3VnaHQubnI7CisJcmV0ID0gIXJlZjsKIAogCS8qCiAJICogSWYgdGhlIGhlYWRzIHRvIHB1bGwgd2VyZSBnaXZlbiwgd2Ugc2hvdWxkIGhhdmUgY29uc3VtZWQKQEAgLTE0OSw4ICsxNjUsMTMgQEAKIAkgKiByZW1vdGUgbm8tc3VjaC1yZWYnIHdvdWxkIHNpbGVudGx5IHN1Y2NlZWQgd2l0aG91dCBpc3N1aW5nCiAJICogYW4gZXJyb3IuCiAJICovCi0JZm9yIChpID0gMDsgaSA8IHNvdWdodC5ucjsgaSsrKQotCQllcnJvcigibm8gc3VjaCByZW1vdGUgcmVmICVzIiwgc291Z2h0Lml0ZW1zW2ldLnN0cmluZyk7CisJZm9yIChpID0gMDsgaSA8IG5yX3NvdWdodDsgaSsrKSB7CisJCWlmICghc291Z2h0W2ldIHx8IHNvdWdodFtpXS0+bWF0Y2hlZCkKKwkJCWNvbnRpbnVlOworCQllcnJvcigibm8gc3VjaCByZW1vdGUgcmVmICVzIiwgc291Z2h0W2ldLT5uYW1lKTsKKwkJcmV0ID0gMTsKKwl9CisKIAl3aGlsZSAocmVmKSB7CiAJCXByaW50ZigiJXMgJXNcbiIsCiAJCSAgICAgICBzaGExX3RvX2hleChyZWYtPm9sZF9zaGExKSwgcmVmLT5uYW1lKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vZmV0Y2guYyBiL2J1aWx0aW4vZmV0Y2guYwppbmRleCA0YjVhODk4Li5kNzg0YjJlIDEwMDY0NAotLS0gYS9idWlsdGluL2ZldGNoLmMKKysrIGIvYnVpbHRpbi9mZXRjaC5jCkBAIC0zMiw3ICszMiw3IEBACiAKIHN0YXRpYyBpbnQgYWxsLCBhcHBlbmQsIGRyeV9ydW4sIGZvcmNlLCBrZWVwLCBtdWx0aXBsZSwgcHJ1bmUsIHVwZGF0ZV9oZWFkX29rLCB2ZXJib3NpdHk7CiBzdGF0aWMgaW50IHByb2dyZXNzID0gLTEsIHJlY3Vyc2Vfc3VibW9kdWxlcyA9IFJFQ1VSU0VfU1VCTU9EVUxFU19ERUZBVUxUOwotc3RhdGljIGludCB0YWdzID0gVEFHU19ERUZBVUxUOworc3RhdGljIGludCB0YWdzID0gVEFHU19ERUZBVUxULCB1bnNoYWxsb3c7CiBzdGF0aWMgY29uc3QgY2hhciAqZGVwdGg7CiBzdGF0aWMgY29uc3QgY2hhciAqdXBsb2FkX3BhY2s7CiBzdGF0aWMgc3RydWN0IHN0cmJ1ZiBkZWZhdWx0X3JsYSA9IFNUUkJVRl9JTklUOwpAQCAtODIsNiArODIsOSBAQAogCU9QVF9CT09MKDAsICJwcm9ncmVzcyIsICZwcm9ncmVzcywgTl8oImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIpKSwKIAlPUFRfU1RSSU5HKDAsICJkZXB0aCIsICZkZXB0aCwgTl8oImRlcHRoIiksCiAJCSAgIE5fKCJkZWVwZW4gaGlzdG9yeSBvZiBzaGFsbG93IGNsb25lIikpLAorCXsgT1BUSU9OX1NFVF9JTlQsIDAsICJ1bnNoYWxsb3ciLCAmdW5zaGFsbG93LCBOVUxMLAorCQkgICBOXygiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiKSwKKwkJICAgUEFSU0VfT1BUX05PTkVHIHwgUEFSU0VfT1BUX05PQVJHLCBOVUxMLCAxIH0sCiAJeyBPUFRJT05fU1RSSU5HLCAwLCAic3VibW9kdWxlLXByZWZpeCIsICZzdWJtb2R1bGVfcHJlZml4LCBOXygiZGlyIiksCiAJCSAgIE5fKCJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IiksIFBBUlNFX09QVF9ISURERU4gfSwKIAl7IE9QVElPTl9TVFJJTkcsIDAsICJyZWN1cnNlLXN1Ym1vZHVsZXMtZGVmYXVsdCIsCkBAIC0xMTYsNyArMTE5LDcgQEAKIAogCQlmb3IgKHJtID0gKmhlYWQ7IHJtOyBybSA9IHJtLT5uZXh0KSB7CiAJCQlpZiAoYnJhbmNoX21lcmdlX21hdGNoZXMoYnJhbmNoLCBpLCBybS0+bmFtZSkpIHsKLQkJCQlybS0+bWVyZ2UgPSAxOworCQkJCXJtLT5mZXRjaF9oZWFkX3N0YXR1cyA9IEZFVENIX0hFQURfTUVSR0U7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTEzNyw3ICsxNDAsNyBAQAogCQlyZWZzcGVjLnNyYyA9IGJyYW5jaC0+bWVyZ2VbaV0tPnNyYzsKIAkJZ2V0X2ZldGNoX21hcChyZW1vdGVfcmVmcywgJnJlZnNwZWMsIHRhaWwsIDEpOwogCQlmb3IgKHJtID0gKm9sZF90YWlsOyBybTsgcm0gPSBybS0+bmV4dCkKLQkJCXJtLT5tZXJnZSA9IDE7CisJCQlybS0+ZmV0Y2hfaGVhZF9zdGF0dXMgPSBGRVRDSF9IRUFEX01FUkdFOwogCX0KIH0KIApAQCAtMTU3LDYgKzE2MCw4IEBACiAJY29uc3Qgc3RydWN0IHJlZiAqcmVtb3RlX3JlZnMgPSB0cmFuc3BvcnRfZ2V0X3JlbW90ZV9yZWZzKHRyYW5zcG9ydCk7CiAKIAlpZiAocmVmX2NvdW50IHx8IHRhZ3MgPT0gVEFHU19TRVQpIHsKKwkJc3RydWN0IHJlZiAqKm9sZF90YWlsOworCiAJCWZvciAoaSA9IDA7IGkgPCByZWZfY291bnQ7IGkrKykgewogCQkJZ2V0X2ZldGNoX21hcChyZW1vdGVfcmVmcywgJnJlZnNbaV0sICZ0YWlsLCAwKTsKIAkJCWlmIChyZWZzW2ldLmRzdCAmJiByZWZzW2ldLmRzdFswXSkKQEAgLTE2NCw5ICsxNjksMjMgQEAKIAkJfQogCQkvKiBNZXJnZSBldmVyeXRoaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCBub3QgLS10YWdzICovCiAJCWZvciAocm0gPSByZWZfbWFwOyBybTsgcm0gPSBybS0+bmV4dCkKLQkJCXJtLT5tZXJnZSA9IDE7CisJCQlybS0+ZmV0Y2hfaGVhZF9zdGF0dXMgPSBGRVRDSF9IRUFEX01FUkdFOwogCQlpZiAodGFncyA9PSBUQUdTX1NFVCkKIAkJCWdldF9mZXRjaF9tYXAocmVtb3RlX3JlZnMsIHRhZ19yZWZzcGVjLCAmdGFpbCwgMCk7CisKKwkJLyoKKwkJICogRm9yIGFueSByZWZzIHRoYXQgd2UgaGFwcGVuIHRvIGJlIGZldGNoaW5nIHZpYSBjb21tYW5kLWxpbmUKKwkJICogYXJndW1lbnRzLCB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byB1cGRhdGUgdGhlaXIgY29uZmlndXJlZAorCQkgKiBjb3VudGVycGFydHMuIEhvd2V2ZXIsIHdlIGRvIG5vdCB3YW50IHRvIG1lbnRpb24gdGhlc2UKKwkJICogZW50cmllcyBpbiBGRVRDSF9IRUFEIGF0IGFsbCwgYXMgdGhleSB3b3VsZCBzaW1wbHkgYmUKKwkJICogZHVwbGljYXRlcyBvZiBleGlzdGluZyBlbnRyaWVzLgorCQkgKi8KKwkJb2xkX3RhaWwgPSB0YWlsOworCQlmb3IgKGkgPSAwOyBpIDwgdHJhbnNwb3J0LT5yZW1vdGUtPmZldGNoX3JlZnNwZWNfbnI7IGkrKykKKwkJCWdldF9mZXRjaF9tYXAocmVmX21hcCwgJnRyYW5zcG9ydC0+cmVtb3RlLT5mZXRjaFtpXSwKKwkJCQkgICAgICAmdGFpbCwgMSk7CisJCWZvciAocm0gPSAqb2xkX3RhaWw7IHJtOyBybSA9IHJtLT5uZXh0KQorCQkJcm0tPmZldGNoX2hlYWRfc3RhdHVzID0gRkVUQ0hfSEVBRF9JR05PUkU7CiAJfSBlbHNlIHsKIAkJLyogVXNlIHRoZSBkZWZhdWx0cyAqLwogCQlzdHJ1Y3QgcmVtb3RlICpyZW1vdGUgPSB0cmFuc3BvcnQtPnJlbW90ZTsKQEAgLTE4Myw3ICsyMDIsNyBAQAogCQkJCQkqYXV0b3RhZ3MgPSAxOwogCQkJCWlmICghaSAmJiAhaGFzX21lcmdlICYmIHJlZl9tYXAgJiYKIAkJCQkgICAgIXJlbW90ZS0+ZmV0Y2hbMF0ucGF0dGVybikKLQkJCQkJcmVmX21hcC0+bWVyZ2UgPSAxOworCQkJCQlyZWZfbWFwLT5mZXRjaF9oZWFkX3N0YXR1cyA9IEZFVENIX0hFQURfTUVSR0U7CiAJCQl9CiAJCQkvKgogCQkJICogaWYgdGhlIHJlbW90ZSB3ZSdyZSBmZXRjaGluZyBmcm9tIGlzIHRoZSBzYW1lCkBAIC0xOTksNyArMjE4LDcgQEAKIAkJCXJlZl9tYXAgPSBnZXRfcmVtb3RlX3JlZihyZW1vdGVfcmVmcywgIkhFQUQiKTsKIAkJCWlmICghcmVmX21hcCkKIAkJCQlkaWUoXygiQ291bGRuJ3QgZmluZCByZW1vdGUgcmVmIEhFQUQiKSk7Ci0JCQlyZWZfbWFwLT5tZXJnZSA9IDE7CisJCQlyZWZfbWFwLT5mZXRjaF9oZWFkX3N0YXR1cyA9IEZFVENIX0hFQURfTUVSR0U7CiAJCQl0YWlsID0gJnJlZl9tYXAtPm5leHQ7CiAJCX0KIAl9CkBAIC0zODYsNyArNDA1LDcgQEAKIAljb25zdCBjaGFyICp3aGF0LCAqa2luZDsKIAlzdHJ1Y3QgcmVmICpybTsKIAljaGFyICp1cmwsICpmaWxlbmFtZSA9IGRyeV9ydW4gPyAiL2Rldi9udWxsIiA6IGdpdF9wYXRoKCJGRVRDSF9IRUFEIik7Ci0JaW50IHdhbnRfbWVyZ2U7CisJaW50IHdhbnRfc3RhdHVzOwogCiAJZnAgPSBmb3BlbihmaWxlbmFtZSwgImEiKTsKIAlpZiAoIWZwKQpAQCAtNDA0LDE5ICs0MjMsMjIgQEAKIAl9CiAKIAkvKgotCSAqIFRoZSBmaXJzdCBwYXNzIHdyaXRlcyBvYmplY3RzIHRvIGJlIG1lcmdlZCBhbmQgdGhlbiB0aGUKLQkgKiBzZWNvbmQgcGFzcyB3cml0ZXMgdGhlIHJlc3QsIGluIG9yZGVyIHRvIGFsbG93IHVzaW5nCi0JICogRkVUQ0hfSEVBRCBhcyBhIHJlZm5hbWUgdG8gcmVmZXIgdG8gdGhlIHJlZiB0byBiZSBtZXJnZWQuCisJICogV2UgZG8gYSBwYXNzIGZvciBlYWNoIGZldGNoX2hlYWRfc3RhdHVzIHR5cGUgaW4gdGhlaXIgZW51bSBvcmRlciwgc28KKwkgKiBtZXJnZWQgZW50cmllcyBhcmUgd3JpdHRlbiBiZWZvcmUgbm90LWZvci1tZXJnZS4gVGhhdCBsZXRzIHJlYWRlcnMKKwkgKiB1c2UgRkVUQ0hfSEVBRCBhcyBhIHJlZm5hbWUgdG8gcmVmZXIgdG8gdGhlIHJlZiB0byBiZSBtZXJnZWQuCiAJICovCi0JZm9yICh3YW50X21lcmdlID0gMTsgMCA8PSB3YW50X21lcmdlOyB3YW50X21lcmdlLS0pIHsKKwlmb3IgKHdhbnRfc3RhdHVzID0gRkVUQ0hfSEVBRF9NRVJHRTsKKwkgICAgIHdhbnRfc3RhdHVzIDw9IEZFVENIX0hFQURfSUdOT1JFOworCSAgICAgd2FudF9zdGF0dXMrKykgewogCQlmb3IgKHJtID0gcmVmX21hcDsgcm07IHJtID0gcm0tPm5leHQpIHsKIAkJCXN0cnVjdCByZWYgKnJlZiA9IE5VTEw7CisJCQljb25zdCBjaGFyICptZXJnZV9zdGF0dXNfbWFya2VyID0gIiI7CiAKIAkJCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShybS0+b2xkX3NoYTEsIDEpOwogCQkJaWYgKCFjb21taXQpCi0JCQkJcm0tPm1lcmdlID0gMDsKKwkJCQlybS0+ZmV0Y2hfaGVhZF9zdGF0dXMgPSBGRVRDSF9IRUFEX05PVF9GT1JfTUVSR0U7CiAKLQkJCWlmIChybS0+bWVyZ2UgIT0gd2FudF9tZXJnZSkKKwkJCWlmIChybS0+ZmV0Y2hfaGVhZF9zdGF0dXMgIT0gd2FudF9zdGF0dXMpCiAJCQkJY29udGludWU7CiAKIAkJCWlmIChybS0+cGVlcl9yZWYpIHsKQEAgLTQ2MiwxNiArNDg0LDI2IEBACiAJCQkJCXN0cmJ1Zl9hZGRmKCZub3RlLCAiJXMgIiwga2luZCk7CiAJCQkJc3RyYnVmX2FkZGYoJm5vdGUsICInJXMnIG9mICIsIHdoYXQpOwogCQkJfQotCQkJZnByaW50ZihmcCwgIiVzXHQlc1x0JXMiLAotCQkJCXNoYTFfdG9faGV4KHJtLT5vbGRfc2hhMSksCi0JCQkJcm0tPm1lcmdlID8gIiIgOiAibm90LWZvci1tZXJnZSIsCi0JCQkJbm90ZS5idWYpOwotCQkJZm9yIChpID0gMDsgaSA8IHVybF9sZW47ICsraSkKLQkJCQlpZiAoJ1xuJyA9PSB1cmxbaV0pCi0JCQkJCWZwdXRzKCJcXG4iLCBmcCk7Ci0JCQkJZWxzZQotCQkJCQlmcHV0Yyh1cmxbaV0sIGZwKTsKLQkJCWZwdXRjKCdcbicsIGZwKTsKKwkJCXN3aXRjaCAocm0tPmZldGNoX2hlYWRfc3RhdHVzKSB7CisJCQljYXNlIEZFVENIX0hFQURfTk9UX0ZPUl9NRVJHRToKKwkJCQltZXJnZV9zdGF0dXNfbWFya2VyID0gIm5vdC1mb3ItbWVyZ2UiOworCQkJCS8qIGZhbGwtdGhyb3VnaCAqLworCQkJY2FzZSBGRVRDSF9IRUFEX01FUkdFOgorCQkJCWZwcmludGYoZnAsICIlc1x0JXNcdCVzIiwKKwkJCQkJc2hhMV90b19oZXgocm0tPm9sZF9zaGExKSwKKwkJCQkJbWVyZ2Vfc3RhdHVzX21hcmtlciwKKwkJCQkJbm90ZS5idWYpOworCQkJCWZvciAoaSA9IDA7IGkgPCB1cmxfbGVuOyArK2kpCisJCQkJCWlmICgnXG4nID09IHVybFtpXSkKKwkJCQkJCWZwdXRzKCJcXG4iLCBmcCk7CisJCQkJCWVsc2UKKwkJCQkJCWZwdXRjKHVybFtpXSwgZnApOworCQkJCWZwdXRjKCdcbicsIGZwKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJLyogZG8gbm90IHdyaXRlIGFueXRoaW5nIHRvIEZFVENIX0hFQUQgKi8KKwkJCQlicmVhazsKKwkJCX0KIAogCQkJc3RyYnVmX3Jlc2V0KCZub3RlKTsKIAkJCWlmIChyZWYpIHsKQEAgLTU2OCw3ICs2MDAsOCBAQAogewogCXN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCA9IChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKiljYmRhdGE7CiAJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQobGlzdCwgcmVmbmFtZSk7Ci0JaXRlbS0+dXRpbCA9ICh2b2lkICopc2hhMTsKKwlpdGVtLT51dGlsID0geG1hbGxvYygyMCk7CisJaGFzaGNweShpdGVtLT51dGlsLCBzaGExKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNTg3LDcgKzYyMCw3IEBACiAJCQlzdHJ1Y3QgcmVmICoqaGVhZCwKIAkJCXN0cnVjdCByZWYgKioqdGFpbCkKIHsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhpc3RpbmdfcmVmcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJc3RydWN0IHN0cmluZ19saXN0IGV4aXN0aW5nX3JlZnMgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgcmVtb3RlX3JlZnMgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogCWNvbnN0IHN0cnVjdCByZWYgKnJlZjsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSA9IE5VTEw7CkBAIC02MzMsNyArNjY2LDcgQEAKIAkJaXRlbSA9IHN0cmluZ19saXN0X2luc2VydCgmcmVtb3RlX3JlZnMsIHJlZi0+bmFtZSk7CiAJCWl0ZW0tPnV0aWwgPSAodm9pZCAqKXJlZi0+b2xkX3NoYTE7CiAJfQotCXN0cmluZ19saXN0X2NsZWFyKCZleGlzdGluZ19yZWZzLCAwKTsKKwlzdHJpbmdfbGlzdF9jbGVhcigmZXhpc3RpbmdfcmVmcywgMSk7CiAKIAkvKgogCSAqIFdlIG1heSBoYXZlIGEgZmluYWwgbGlnaHR3ZWlnaHQgdGFnIHRoYXQgbmVlZHMgdG8gYmUKQEAgLTY5MCwxMSArNzIzLDExIEBACiBzdGF0aWMgaW50IGRvX2ZldGNoKHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCwKIAkJICAgIHN0cnVjdCByZWZzcGVjICpyZWZzLCBpbnQgcmVmX2NvdW50KQogewotCXN0cnVjdCBzdHJpbmdfbGlzdCBleGlzdGluZ19yZWZzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqcGVlcl9pdGVtID0gTlVMTDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhpc3RpbmdfcmVmcyA9IFNUUklOR19MSVNUX0lOSVRfRFVQOwogCXN0cnVjdCByZWYgKnJlZl9tYXA7CiAJc3RydWN0IHJlZiAqcm07CiAJaW50IGF1dG90YWdzID0gKHRyYW5zcG9ydC0+cmVtb3RlLT5mZXRjaF90YWdzID09IDEpOworCWludCByZXRjb2RlID0gMDsKIAogCWZvcl9lYWNoX3JlZihhZGRfZXhpc3RpbmcsICZleGlzdGluZ19yZWZzKTsKIApAQCAtNzEwLDkgKzc0Myw5IEBACiAKIAkvKiBpZiBub3QgYXBwZW5kaW5nLCB0cnVuY2F0ZSBGRVRDSF9IRUFEICovCiAJaWYgKCFhcHBlbmQgJiYgIWRyeV9ydW4pIHsKLQkJaW50IGVycmNvZGUgPSB0cnVuY2F0ZV9mZXRjaF9oZWFkKCk7Ci0JCWlmIChlcnJjb2RlKQotCQkJcmV0dXJuIGVycmNvZGU7CisJCXJldGNvZGUgPSB0cnVuY2F0ZV9mZXRjaF9oZWFkKCk7CisJCWlmIChyZXRjb2RlKQorCQkJZ290byBjbGVhbnVwOwogCX0KIAogCXJlZl9tYXAgPSBnZXRfcmVmX21hcCh0cmFuc3BvcnQsIHJlZnMsIHJlZl9jb3VudCwgdGFncywgJmF1dG90YWdzKTsKQEAgLTcyMSw4ICs3NTQsOSBAQAogCiAJZm9yIChybSA9IHJlZl9tYXA7IHJtOyBybSA9IHJtLT5uZXh0KSB7CiAJCWlmIChybS0+cGVlcl9yZWYpIHsKLQkJCXBlZXJfaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cCgmZXhpc3RpbmdfcmVmcywKLQkJCQkJCSAgICAgICBybS0+cGVlcl9yZWYtPm5hbWUpOworCQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnBlZXJfaXRlbSA9CisJCQkJc3RyaW5nX2xpc3RfbG9va3VwKCZleGlzdGluZ19yZWZzLAorCQkJCQkJICAgcm0tPnBlZXJfcmVmLT5uYW1lKTsKIAkJCWlmIChwZWVyX2l0ZW0pCiAJCQkJaGFzaGNweShybS0+cGVlcl9yZWYtPm9sZF9zaGExLAogCQkJCQlwZWVyX2l0ZW0tPnV0aWwpOwpAQCAtNzMzLDcgKzc2Nyw4IEBACiAJCXRyYW5zcG9ydF9zZXRfb3B0aW9uKHRyYW5zcG9ydCwgVFJBTlNfT1BUX0ZPTExPV1RBR1MsICIxIik7CiAJaWYgKGZldGNoX3JlZnModHJhbnNwb3J0LCByZWZfbWFwKSkgewogCQlmcmVlX3JlZnMocmVmX21hcCk7Ci0JCXJldHVybiAxOworCQlyZXRjb2RlID0gMTsKKwkJZ290byBjbGVhbnVwOwogCX0KIAlpZiAocHJ1bmUpIHsKIAkJLyogSWYgLS10YWdzIHdhcyBzcGVjaWZpZWQsIHByZXRlbmQgdGhlIHVzZXIgZ2F2ZSB1cyB0aGUgY2Fub25pY2FsIHRhZ3MgcmVmc3BlYyAqLwpAQCAtNzc2LDcgKzgxMSw5IEBACiAJCWZyZWVfcmVmcyhyZWZfbWFwKTsKIAl9CiAKLQlyZXR1cm4gMDsKKyBjbGVhbnVwOgorCXN0cmluZ19saXN0X2NsZWFyKCZleGlzdGluZ19yZWZzLCAxKTsKKwlyZXR1cm4gcmV0Y29kZTsKIH0KIAogc3RhdGljIHZvaWQgc2V0X29wdGlvbihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKQEAgLTk1OSw2ICs5OTYsOSBAQAogCXN0cnVjdCBzdHJpbmdfbGlzdCBsaXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAlzdHJ1Y3QgcmVtb3RlICpyZW1vdGU7CiAJaW50IHJlc3VsdCA9IDA7CisJc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3ZfZ2NfYXV0b1tdID0geworCQkiZ2MiLCAiLS1hdXRvIiwgTlVMTCwKKwl9OwogCiAJcGFja2V0X3RyYWNlX2lkZW50aXR5KCJmZXRjaCIpOwogCkBAIC05NzAsNiArMTAxMCwxOCBAQAogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwKIAkJCSAgICAgYnVpbHRpbl9mZXRjaF9vcHRpb25zLCBidWlsdGluX2ZldGNoX3VzYWdlLCAwKTsKIAorCWlmICh1bnNoYWxsb3cpIHsKKwkJaWYgKGRlcHRoKQorCQkJZGllKF8oIi0tZGVwdGggYW5kIC0tdW5zaGFsbG93IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIikpOworCQllbHNlIGlmICghaXNfcmVwb3NpdG9yeV9zaGFsbG93KCkpCisJCQlkaWUoXygiLS11bnNoYWxsb3cgb24gYSBjb21wbGV0ZSByZXBvc2l0b3J5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiKSk7CisJCWVsc2UgeworCQkJc3RhdGljIGNoYXIgaW5mX2RlcHRoWzEyXTsKKwkJCXNwcmludGYoaW5mX2RlcHRoLCAiJWQiLCBJTkZJTklURV9ERVBUSCk7CisJCQlkZXB0aCA9IGluZl9kZXB0aDsKKwkJfQorCX0KKwogCWlmIChyZWN1cnNlX3N1Ym1vZHVsZXMgIT0gUkVDVVJTRV9TVUJNT0RVTEVTX09GRikgewogCQlpZiAocmVjdXJzZV9zdWJtb2R1bGVzX2RlZmF1bHQpIHsKIAkJCWludCBhcmcgPSBwYXJzZV9mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXNfYXJnKCItLXJlY3Vyc2Utc3VibW9kdWxlcy1kZWZhdWx0IiwgcmVjdXJzZV9zdWJtb2R1bGVzX2RlZmF1bHQpOwpAQCAtMTAyNiw1ICsxMDc4LDcgQEAKIAlsaXN0LnN0cmR1cF9zdHJpbmdzID0gMTsKIAlzdHJpbmdfbGlzdF9jbGVhcigmbGlzdCwgMCk7CiAKKwlydW5fY29tbWFuZF92X29wdChhcmd2X2djX2F1dG8sIFJVTl9HSVRfQ01EKTsKKwogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2ZtdC1tZXJnZS1tc2cuYyBiL2J1aWx0aW4vZm10LW1lcmdlLW1zZy5jCmluZGV4IGQ5YWY0M2MuLjFjMDQwNzAgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZm10LW1lcmdlLW1zZy5jCisrKyBiL2J1aWx0aW4vZm10LW1lcmdlLW1zZy5jCkBAIC0yODcsMTAgKzI4NywxMCBAQAogCWNvbnN0IGNoYXIgKm1lOwogCiAJaWYgKGtpbmQgPT0gJ2EnKSB7Ci0JCWxhYmVsID0gIlxuIyBCeSAiOworCQlsYWJlbCA9ICJCeSI7CiAJCW1lID0gZ2l0X2F1dGhvcl9pbmZvKElERU5UX05PX0RBVEUpOwogCX0gZWxzZSB7Ci0JCWxhYmVsID0gIlxuIyBWaWEgIjsKKwkJbGFiZWwgPSAiVmlhIjsKIAkJbWUgPSBnaXRfY29tbWl0dGVyX2luZm8oSURFTlRfTk9fREFURSk7CiAJfQogCkBAIC0zMDAsNyArMzAwLDcgQEAKIAkgICAgIChtZSA9IHNraXBfcHJlZml4KG1lLCB0aGVtLT5pdGVtcy0+c3RyaW5nKSkgIT0gTlVMTCAmJgogCSAgICAgc2tpcF9wcmVmaXgobWUsICIgPCIpKSkKIAkJcmV0dXJuOwotCXN0cmJ1Zl9hZGRzdHIob3V0LCBsYWJlbCk7CisJc3RyYnVmX2FkZGYob3V0LCAiXG4lYyAlcyAiLCBjb21tZW50X2xpbmVfY2hhciwgbGFiZWwpOwogCWFkZF9wZW9wbGVfY291bnQob3V0LCB0aGVtKTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBACiAJc3RyYnVmX2NvbXBsZXRlX2xpbmUodGFnYnVmKTsKIAlpZiAoc2lnLT5sZW4pIHsKIAkJc3RyYnVmX2FkZGNoKHRhZ2J1ZiwgJ1xuJyk7Ci0JCXN0cmJ1Zl9hZGRfbGluZXModGFnYnVmLCAiIyAiLCBzaWctPmJ1Ziwgc2lnLT5sZW4pOworCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcyh0YWdidWYsIHNpZy0+YnVmLCBzaWctPmxlbik7CiAJfQogfQogCkBAIC00OTIsNyArNDkyLDcgQEAKIAogCQlpZiAoc2l6ZSA9PSBsZW4pCiAJCQk7IC8qIG1lcmVseSBhbm5vdGF0ZWQgKi8KLQkJZWxzZSBpZiAodmVyaWZ5X3NpZ25lZF9idWZmZXIoYnVmLCBsZW4sIGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgJnNpZykpIHsKKwkJZWxzZSBpZiAodmVyaWZ5X3NpZ25lZF9idWZmZXIoYnVmLCBsZW4sIGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgJnNpZywgTlVMTCkpIHsKIAkJCWlmICghc2lnLmxlbikKIAkJCQlzdHJidWZfYWRkc3RyKCZzaWcsICJncGcgdmVyaWZpY2F0aW9uIGZhaWxlZC5cbiIpOwogCQl9CkBAIC01MDMsMTQgKzUwMywxOCBAQAogCQl9IGVsc2UgewogCQkJaWYgKHRhZ19udW1iZXIgPT0gMikgewogCQkJCXN0cnVjdCBzdHJidWYgdGFnbGluZSA9IFNUUkJVRl9JTklUOwotCQkJCXN0cmJ1Zl9hZGRmKCZ0YWdsaW5lLCAiXG4jICVzXG4iLAotCQkJCQkgICAgb3JpZ2lucy5pdGVtc1tmaXJzdF90YWddLnN0cmluZyk7CisJCQkJc3RyYnVmX2FkZGNoKCZ0YWdsaW5lLCAnXG4nKTsKKwkJCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcygmdGFnbGluZSwKKwkJCQkJCW9yaWdpbnMuaXRlbXNbZmlyc3RfdGFnXS5zdHJpbmcsCisJCQkJCQlzdHJsZW4ob3JpZ2lucy5pdGVtc1tmaXJzdF90YWddLnN0cmluZykpOwogCQkJCXN0cmJ1Zl9pbnNlcnQoJnRhZ2J1ZiwgMCwgdGFnbGluZS5idWYsCiAJCQkJCSAgICAgIHRhZ2xpbmUubGVuKTsKIAkJCQlzdHJidWZfcmVsZWFzZSgmdGFnbGluZSk7CiAJCQl9Ci0JCQlzdHJidWZfYWRkZigmdGFnYnVmLCAiXG4jICVzXG4iLAotCQkJCSAgICBvcmlnaW5zLml0ZW1zW2ldLnN0cmluZyk7CisJCQlzdHJidWZfYWRkY2goJnRhZ2J1ZiwgJ1xuJyk7CisJCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcygmdGFnYnVmLAorCQkJCQlvcmlnaW5zLml0ZW1zW2ldLnN0cmluZywKKwkJCQkJc3RybGVuKG9yaWdpbnMuaXRlbXNbaV0uc3RyaW5nKSk7CiAJCQlmbXRfdGFnX3NpZ25hdHVyZSgmdGFnYnVmLCAmc2lnLCBidWYsIGxlbik7CiAJCX0KIAkJc3RyYnVmX3JlbGVhc2UoJnNpZyk7CmRpZmYgLS1naXQgYS9idWlsdGluL2ZzY2suYyBiL2J1aWx0aW4vZnNjay5jCmluZGV4IGJiOWEyY2QuLjk5MDliNmQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZnNjay5jCisrKyBiL2J1aWx0aW4vZnNjay5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIAkJcmV0dXJuIDE7CiAJfQogCi0JYWRkX29iamVjdF9hcnJheShvYmosICh2b2lkICopIHBhcmVudCwgJnBlbmRpbmcpOworCWFkZF9vYmplY3RfYXJyYXkob2JqLCBOVUxMLCAmcGVuZGluZyk7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vZ3JlcC5jIGIvYnVpbHRpbi9ncmVwLmMKaW5kZXggZThmMGY5Mi4uMTU5ZTY1ZCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9ncmVwLmMKKysrIGIvYnVpbHRpbi9ncmVwLmMKQEAgLTgyMSw2ICs4MjEsOCBAQAogCQkvKiBJcyBpdCBhIHJldj8gKi8KIAkJaWYgKCFnZXRfc2hhMShhcmcsIHNoYTEpKSB7CiAJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QgPSBwYXJzZV9vYmplY3Rfb3JfZGllKHNoYTEsIGFyZyk7CisJCQlpZiAoIXNlZW5fZGFzaGRhc2gpCisJCQkJdmVyaWZ5X25vbl9maWxlbmFtZShwcmVmaXgsIGFyZyk7CiAJCQlhZGRfb2JqZWN0X2FycmF5KG9iamVjdCwgYXJnLCAmbGlzdCk7CiAJCQljb250aW51ZTsKIAkJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9oZWxwLmMgYi9idWlsdGluL2hlbHAuYwppbmRleCA2MDY3YTYxLi5mMWUyMzZiIDEwMDY0NAotLS0gYS9idWlsdGluL2hlbHAuYworKysgYi9idWlsdGluL2hlbHAuYwpAQCAtMSw2ICsxLDQgQEAKIC8qCi0gKiBidWlsdGluLWhlbHAuYwotICoKICAqIEJ1aWx0aW4gaGVscCBjb21tYW5kCiAgKi8KICNpbmNsdWRlICJjYWNoZS5oIgpAQCAtMzYsMTAgKzM0LDEyIEBACiBzdGF0aWMgY29uc3QgY2hhciAqaHRtbF9wYXRoOwogCiBzdGF0aWMgaW50IHNob3dfYWxsID0gMDsKK3N0YXRpYyBpbnQgc2hvd19ndWlkZXMgPSAwOwogc3RhdGljIHVuc2lnbmVkIGludCBjb2xvcHRzOwogc3RhdGljIGVudW0gaGVscF9mb3JtYXQgaGVscF9mb3JtYXQgPSBIRUxQX0ZPUk1BVF9OT05FOwogc3RhdGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9oZWxwX29wdGlvbnNbXSA9IHsKLQlPUFRfQk9PTEVBTignYScsICJhbGwiLCAmc2hvd19hbGwsIE5fKCJwcmludCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIikpLAorCU9QVF9CT09MKCdhJywgImFsbCIsICZzaG93X2FsbCwgTl8oInByaW50IGFsbCBhdmFpbGFibGUgY29tbWFuZHMiKSksCisJT1BUX0JPT0woJ2cnLCAiZ3VpZGVzIiwgJnNob3dfZ3VpZGVzLCBOXygicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIikpLAogCU9QVF9TRVRfSU5UKCdtJywgIm1hbiIsICZoZWxwX2Zvcm1hdCwgTl8oInNob3cgbWFuIHBhZ2UiKSwgSEVMUF9GT1JNQVRfTUFOKSwKIAlPUFRfU0VUX0lOVCgndycsICJ3ZWIiLCAmaGVscF9mb3JtYXQsIE5fKCJzaG93IG1hbnVhbCBpbiB3ZWIgYnJvd3NlciIpLAogCQkJSEVMUF9GT1JNQVRfV0VCKSwKQEAgLTQ5LDcgKzQ5LDcgQEAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9oZWxwX3VzYWdlW10gPSB7Ci0JTl8oImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIiksCisJTl8oImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iKSwKIAlOVUxMCiB9OwogCkBAIC0yMzYsMjEgKzIzNiwyMSBAQAogCiBzdGF0aWMgaW50IGFkZF9tYW5fdmlld2VyX2luZm8oY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLQljb25zdCBjaGFyICpuYW1lID0gdmFyICsgNDsKLQljb25zdCBjaGFyICpzdWJrZXkgPSBzdHJyY2hyKG5hbWUsICcuJyk7CisJY29uc3QgY2hhciAqbmFtZSwgKnN1YmtleTsKKwlpbnQgbmFtZWxlbjsKIAotCWlmICghc3Via2V5KQorCWlmIChwYXJzZV9jb25maWdfa2V5KHZhciwgIm1hbiIsICZuYW1lLCAmbmFtZWxlbiwgJnN1YmtleSkgPCAwIHx8ICFuYW1lKQogCQlyZXR1cm4gMDsKIAotCWlmICghc3RyY21wKHN1YmtleSwgIi5wYXRoIikpIHsKKwlpZiAoIXN0cmNtcChzdWJrZXksICJwYXRoIikpIHsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQlyZXR1cm4gYWRkX21hbl92aWV3ZXJfcGF0aChuYW1lLCBzdWJrZXkgLSBuYW1lLCB2YWx1ZSk7CisJCXJldHVybiBhZGRfbWFuX3ZpZXdlcl9wYXRoKG5hbWUsIG5hbWVsZW4sIHZhbHVlKTsKIAl9Ci0JaWYgKCFzdHJjbXAoc3Via2V5LCAiLmNtZCIpKSB7CisJaWYgKCFzdHJjbXAoc3Via2V5LCAiY21kIikpIHsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbCh2YXIpOwotCQlyZXR1cm4gYWRkX21hbl92aWV3ZXJfY21kKG5hbWUsIHN1YmtleSAtIG5hbWUsIHZhbHVlKTsKKwkJcmV0dXJuIGFkZF9tYW5fdmlld2VyX2NtZChuYW1lLCBuYW1lbGVuLCB2YWx1ZSk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC00MTMsNiArNDEzLDM3IEBACiAJb3Blbl9odG1sKHBhZ2VfcGF0aC5idWYpOwogfQogCitzdGF0aWMgc3RydWN0IHsKKwljb25zdCBjaGFyICpuYW1lOworCWNvbnN0IGNoYXIgKmhlbHA7Cit9IGNvbW1vbl9ndWlkZXNbXSA9IHsKKwl7ICJhdHRyaWJ1dGVzIiwgTl8oIkRlZmluaW5nIGF0dHJpYnV0ZXMgcGVyIHBhdGgiKSB9LAorCXsgImdsb3NzYXJ5IiwgTl8oIkEgR2l0IGdsb3NzYXJ5IikgfSwKKwl7ICJpZ25vcmUiLCBOXygiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIpIH0sCisJeyAibW9kdWxlcyIsIE5fKCJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIpIH0sCisJeyAicmV2aXNpb25zIiwgTl8oIlNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIEdpdCIpIH0sCisJeyAidHV0b3JpYWwiLCBOXygiQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gR2l0IChmb3IgdmVyc2lvbiAxLjUuMSBvciBuZXdlcikiKSB9LAorCXsgIndvcmtmbG93cyIsIE5fKCJBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBHaXQiKSB9LAorfTsKKworc3RhdGljIHZvaWQgbGlzdF9jb21tb25fZ3VpZGVzX2hlbHAodm9pZCkKK3sKKwlpbnQgaSwgbG9uZ2VzdCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb21tb25fZ3VpZGVzKTsgaSsrKSB7CisJCWlmIChsb25nZXN0IDwgc3RybGVuKGNvbW1vbl9ndWlkZXNbaV0ubmFtZSkpCisJCQlsb25nZXN0ID0gc3RybGVuKGNvbW1vbl9ndWlkZXNbaV0ubmFtZSk7CisJfQorCisJcHV0cyhfKCJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIikpOworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbW1vbl9ndWlkZXMpOyBpKyspIHsKKwkJcHJpbnRmKCIgICAlcyAgICIsIGNvbW1vbl9ndWlkZXNbaV0ubmFtZSk7CisJCW1wdXRfY2hhcignICcsIGxvbmdlc3QgLSBzdHJsZW4oY29tbW9uX2d1aWRlc1tpXS5uYW1lKSk7CisJCXB1dHMoXyhjb21tb25fZ3VpZGVzW2ldLmhlbHApKTsKKwl9CisJcHV0Y2hhcignXG4nKTsKK30KKwogaW50IGNtZF9oZWxwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBub25naXQ7CkBAIC00MjgsNyArNDU5LDE2IEBACiAJCWdpdF9jb25maWcoZ2l0X2hlbHBfY29uZmlnLCBOVUxMKTsKIAkJcHJpbnRmKF8oInVzYWdlOiAlcyVzIiksIF8oZ2l0X3VzYWdlX3N0cmluZyksICJcblxuIik7CiAJCWxpc3RfY29tbWFuZHMoY29sb3B0cywgJm1haW5fY21kcywgJm90aGVyX2NtZHMpOworCX0KKworCWlmIChzaG93X2d1aWRlcykKKwkJbGlzdF9jb21tb25fZ3VpZGVzX2hlbHAoKTsKKworCWlmIChzaG93X2FsbCB8fCBzaG93X2d1aWRlcykgewogCQlwcmludGYoIiVzXG4iLCBfKGdpdF9tb3JlX2luZm9fc3RyaW5nKSk7CisJCS8qCisJCSogV2UncmUgZG9uZS4gSWdub3JlIGFueSByZW1haW5pbmcgYXJncworCQkqLwogCQlyZXR1cm4gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vaW5kZXgtcGFjay5jIGIvYnVpbHRpbi9pbmRleC1wYWNrLmMKaW5kZXggZWY2MjEyNC4uOWMxY2ZhYyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9pbmRleC1wYWNrLmMKKysrIGIvYnVpbHRpbi9pbmRleC1wYWNrLmMKQEAgLTc3LDcgKzc3LDEwIEBACiAKIHN0YXRpYyBpbnQgZnJvbV9zdGRpbjsKIHN0YXRpYyBpbnQgc3RyaWN0Oworc3RhdGljIGludCBkb19mc2NrX29iamVjdDsKIHN0YXRpYyBpbnQgdmVyYm9zZTsKK3N0YXRpYyBpbnQgc2hvd19zdGF0Oworc3RhdGljIGludCBjaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkOwogCiBzdGF0aWMgc3RydWN0IHByb2dyZXNzICpwcm9ncmVzczsKIApAQCAtMTA4LDYgKzExMSwxMCBAQAogI2RlZmluZSB3b3JrX2xvY2soKQkJbG9ja19tdXRleCgmd29ya19tdXRleCkKICNkZWZpbmUgd29ya191bmxvY2soKQkJdW5sb2NrX211dGV4KCZ3b3JrX211dGV4KQogCitzdGF0aWMgcHRocmVhZF9tdXRleF90IGRlZXBlc3RfZGVsdGFfbXV0ZXg7CisjZGVmaW5lIGRlZXBlc3RfZGVsdGFfbG9jaygpCWxvY2tfbXV0ZXgoJmRlZXBlc3RfZGVsdGFfbXV0ZXgpCisjZGVmaW5lIGRlZXBlc3RfZGVsdGFfdW5sb2NrKCkJdW5sb2NrX211dGV4KCZkZWVwZXN0X2RlbHRhX211dGV4KQorCiBzdGF0aWMgcHRocmVhZF9rZXlfdCBrZXk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrX211dGV4KHB0aHJlYWRfbXV0ZXhfdCAqbXV0ZXgpCkBAIC0xMzAsNiArMTM3LDggQEAKIAlpbml0X3JlY3Vyc2l2ZV9tdXRleCgmcmVhZF9tdXRleCk7CiAJcHRocmVhZF9tdXRleF9pbml0KCZjb3VudGVyX211dGV4LCBOVUxMKTsKIAlwdGhyZWFkX211dGV4X2luaXQoJndvcmtfbXV0ZXgsIE5VTEwpOworCWlmIChzaG93X3N0YXQpCisJCXB0aHJlYWRfbXV0ZXhfaW5pdCgmZGVlcGVzdF9kZWx0YV9tdXRleCwgTlVMTCk7CiAJcHRocmVhZF9rZXlfY3JlYXRlKCZrZXksIE5VTEwpOwogCXRocmVhZF9kYXRhID0geGNhbGxvYyhucl90aHJlYWRzLCBzaXplb2YoKnRocmVhZF9kYXRhKSk7CiAJdGhyZWFkc19hY3RpdmUgPSAxOwpAQCAtMTQzLDYgKzE1Miw4IEBACiAJcHRocmVhZF9tdXRleF9kZXN0cm95KCZyZWFkX211dGV4KTsKIAlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmNvdW50ZXJfbXV0ZXgpOwogCXB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmd29ya19tdXRleCk7CisJaWYgKHNob3dfc3RhdCkKKwkJcHRocmVhZF9tdXRleF9kZXN0cm95KCZkZWVwZXN0X2RlbHRhX211dGV4KTsKIAlwdGhyZWFkX2tleV9kZWxldGUoa2V5KTsKIAlmcmVlKHRocmVhZF9kYXRhKTsKIH0KQEAgLTE1OCw2ICsxNjksOSBAQAogI2RlZmluZSB3b3JrX2xvY2soKQogI2RlZmluZSB3b3JrX3VubG9jaygpCiAKKyNkZWZpbmUgZGVlcGVzdF9kZWx0YV9sb2NrKCkKKyNkZWZpbmUgZGVlcGVzdF9kZWx0YV91bmxvY2soKQorCiAjZW5kaWYKIAogCkBAIC0xNzUsMTMgKzE4OSwxMyBAQAogCiAvKiBUaGUgY29udGVudCBvZiBlYWNoIGxpbmtlZCBvYmplY3QgbXVzdCBoYXZlIGJlZW4gY2hlY2tlZAogICAgb3IgaXQgbXVzdCBiZSBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIG9iamVjdCBkYXRhYmFzZSAqLwotc3RhdGljIHZvaWQgY2hlY2tfb2JqZWN0KHN0cnVjdCBvYmplY3QgKm9iaikKK3N0YXRpYyB1bnNpZ25lZCBjaGVja19vYmplY3Qoc3RydWN0IG9iamVjdCAqb2JqKQogewogCWlmICghb2JqKQotCQlyZXR1cm47CisJCXJldHVybiAwOwogCiAJaWYgKCEob2JqLT5mbGFncyAmIEZMQUdfTElOSykpCi0JCXJldHVybjsKKwkJcmV0dXJuIDA7CiAKIAlpZiAoIShvYmotPmZsYWdzICYgRkxBR19DSEVDS0VEKSkgewogCQl1bnNpZ25lZCBsb25nIHNpemU7CkBAIC0xODksMTcgKzIwMywyMCBAQAogCQlpZiAodHlwZSAhPSBvYmotPnR5cGUgfHwgdHlwZSA8PSAwKQogCQkJZGllKF8oIm9iamVjdCBvZiB1bmV4cGVjdGVkIHR5cGUiKSk7CiAJCW9iai0+ZmxhZ3MgfD0gRkxBR19DSEVDS0VEOwotCQlyZXR1cm47CisJCXJldHVybiAxOwogCX0KKworCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBjaGVja19vYmplY3RzKHZvaWQpCitzdGF0aWMgdW5zaWduZWQgY2hlY2tfb2JqZWN0cyh2b2lkKQogewotCXVuc2lnbmVkIGksIG1heDsKKwl1bnNpZ25lZCBpLCBtYXgsIGZvcmVpZ25fbnIgPSAwOwogCiAJbWF4ID0gZ2V0X21heF9vYmplY3RfaW5kZXgoKTsKIAlmb3IgKGkgPSAwOyBpIDwgbWF4OyBpKyspCi0JCWNoZWNrX29iamVjdChnZXRfaW5kZXhlZF9vYmplY3QoaSkpOworCQlmb3JlaWduX25yICs9IGNoZWNrX29iamVjdChnZXRfaW5kZXhlZF9vYmplY3QoaSkpOworCXJldHVybiBmb3JlaWduX25yOwogfQogCiAKQEAgLTczNSw4ICs3NTIsNyBAQAogCQkJaW50IGVhdGVuOwogCQkJdm9pZCAqYnVmID0gKHZvaWQgKikgZGF0YTsKIAotCQkJaWYgKCFidWYpCi0JCQkJYnVmID0gbmV3X2RhdGEgPSBnZXRfZGF0YV9mcm9tX3BhY2sob2JqX2VudHJ5KTsKKwkJCWFzc2VydChkYXRhICYmICJkYXRhIGNhbiBvbmx5IGJlIE5VTEwgZm9yIGxhcmdlIF9ibG9ic18iKTsKIAogCQkJLyoKIAkJCSAqIHdlIGRvIG5vdCBuZWVkIHRvIGZyZWUgdGhlIG1lbW9yeSBoZXJlLCBhcyB0aGUKQEAgLTc0NSw3ICs3NjEsOCBAQAogCQkJb2JqID0gcGFyc2Vfb2JqZWN0X2J1ZmZlcihzaGExLCB0eXBlLCBzaXplLCBidWYsICZlYXRlbik7CiAJCQlpZiAoIW9iaikKIAkJCQlkaWUoXygiaW52YWxpZCAlcyIpLCB0eXBlbmFtZSh0eXBlKSk7Ci0JCQlpZiAoZnNja19vYmplY3Qob2JqLCAxLCBmc2NrX2Vycm9yX2Z1bmN0aW9uKSkKKwkJCWlmIChkb19mc2NrX29iamVjdCAmJgorCQkJICAgIGZzY2tfb2JqZWN0KG9iaiwgMSwgZnNja19lcnJvcl9mdW5jdGlvbikpCiAJCQkJZGllKF8oIkVycm9yIGluIG9iamVjdCIpKTsKIAkJCWlmIChmc2NrX3dhbGsob2JqLCBtYXJrX2xpbmssIE5VTEwpKQogCQkJCWRpZShfKCJOb3QgYWxsIGNoaWxkIG9iamVjdHMgb2YgJXMgYXJlIHJlYWNoYWJsZSIpLCBzaGExX3RvX2hleChvYmotPnNoYTEpKTsKQEAgLTgzMyw5ICs4NTAsMTMgQEAKIAl2b2lkICpiYXNlX2RhdGEsICpkZWx0YV9kYXRhOwogCiAJZGVsdGFfb2JqLT5yZWFsX3R5cGUgPSBiYXNlLT5vYmotPnJlYWxfdHlwZTsKLQlkZWx0YV9vYmotPmRlbHRhX2RlcHRoID0gYmFzZS0+b2JqLT5kZWx0YV9kZXB0aCArIDE7Ci0JaWYgKGRlZXBlc3RfZGVsdGEgPCBkZWx0YV9vYmotPmRlbHRhX2RlcHRoKQotCQlkZWVwZXN0X2RlbHRhID0gZGVsdGFfb2JqLT5kZWx0YV9kZXB0aDsKKwlpZiAoc2hvd19zdGF0KSB7CisJCWRlbHRhX29iai0+ZGVsdGFfZGVwdGggPSBiYXNlLT5vYmotPmRlbHRhX2RlcHRoICsgMTsKKwkJZGVlcGVzdF9kZWx0YV9sb2NrKCk7CisJCWlmIChkZWVwZXN0X2RlbHRhIDwgZGVsdGFfb2JqLT5kZWx0YV9kZXB0aCkKKwkJCWRlZXBlc3RfZGVsdGEgPSBkZWx0YV9vYmotPmRlbHRhX2RlcHRoOworCQlkZWVwZXN0X2RlbHRhX3VubG9jaygpOworCX0KIAlkZWx0YV9vYmotPmJhc2Vfb2JqZWN0X25vID0gYmFzZS0+b2JqIC0gb2JqZWN0czsKIAlkZWx0YV9kYXRhID0gZ2V0X2RhdGFfZnJvbV9wYWNrKGRlbHRhX29iaik7CiAJYmFzZV9kYXRhID0gZ2V0X2Jhc2VfZGF0YShiYXNlKTsKQEAgLTk1MSw4ICs5NzIsMTAgQEAKIAlzZXRfdGhyZWFkX2RhdGEoZGF0YSk7CiAJZm9yICg7OykgewogCQlpbnQgaTsKLQkJd29ya19sb2NrKCk7CisJCWNvdW50ZXJfbG9jaygpOwogCQlkaXNwbGF5X3Byb2dyZXNzKHByb2dyZXNzLCBucl9yZXNvbHZlZF9kZWx0YXMpOworCQljb3VudGVyX3VubG9jaygpOworCQl3b3JrX2xvY2soKTsKIAkJd2hpbGUgKG5yX2Rpc3BhdGNoZWQgPCBucl9vYmplY3RzICYmCiAJCSAgICAgICBpc19kZWx0YV90eXBlKG9iamVjdHNbbnJfZGlzcGF0Y2hlZF0udHlwZSkpCiAJCQlucl9kaXNwYXRjaGVkKys7CkBAIC0xMTA3LDYgKzExMzAsOCBAQAogCQlvYmplY3RzID0geHJlYWxsb2Mob2JqZWN0cywKIAkJCQkgICAobnJfb2JqZWN0cyArIG5yX3VucmVzb2x2ZWQgKyAxKQogCQkJCSAgICogc2l6ZW9mKCpvYmplY3RzKSk7CisJCW1lbXNldChvYmplY3RzICsgbnJfb2JqZWN0cyArIDEsIDAsCisJCSAgICAgICBucl91bnJlc29sdmVkICogc2l6ZW9mKCpvYmplY3RzKSk7CiAJCWYgPSBzaGExZmQob3V0cHV0X2ZkLCBjdXJyX3BhY2spOwogCQlmaXhfdW5yZXNvbHZlZF9kZWx0YXMoZiwgbnJfdW5yZXNvbHZlZCk7CiAJCXN0cmJ1Zl9hZGRmKCZtc2csIF8oImNvbXBsZXRlZCB3aXRoICVkIGxvY2FsIG9iamVjdHMiKSwKQEAgLTE0NjMsNyArMTQ4OCw3IEBACiAKIGludCBjbWRfaW5kZXhfcGFjayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlpbnQgaSwgZml4X3RoaW5fcGFjayA9IDAsIHZlcmlmeSA9IDAsIHN0YXRfb25seSA9IDAsIHN0YXQgPSAwOworCWludCBpLCBmaXhfdGhpbl9wYWNrID0gMCwgdmVyaWZ5ID0gMCwgc3RhdF9vbmx5ID0gMDsKIAljb25zdCBjaGFyICpjdXJyX3BhY2ssICpjdXJyX2luZGV4OwogCWNvbnN0IGNoYXIgKmluZGV4X25hbWUgPSBOVUxMLCAqcGFja19uYW1lID0gTlVMTDsKIAljb25zdCBjaGFyICprZWVwX25hbWUgPSBOVUxMLCAqa2VlcF9tc2cgPSBOVUxMOwpAQCAtMTQ3MSw2ICsxNDk2LDcgQEAKIAlzdHJ1Y3QgcGFja19pZHhfZW50cnkgKippZHhfb2JqZWN0czsKIAlzdHJ1Y3QgcGFja19pZHhfb3B0aW9uIG9wdHM7CiAJdW5zaWduZWQgY2hhciBwYWNrX3NoYTFbMjBdOworCXVuc2lnbmVkIGZvcmVpZ25fbnIgPSAxOwkvKiB6ZXJvIGlzIGEgImdvb2QiIHZhbHVlLCBhc3N1bWUgYmFkICovCiAKIAlpZiAoYXJnYyA9PSAyICYmICFzdHJjbXAoYXJndlsxXSwgIi1oIikpCiAJCXVzYWdlKGluZGV4X3BhY2tfdXNhZ2UpOwpAQCAtMTQ5MiwxNCArMTUxOCwxOCBAQAogCQkJCWZpeF90aGluX3BhY2sgPSAxOwogCQkJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tc3RyaWN0IikpIHsKIAkJCQlzdHJpY3QgPSAxOworCQkJCWRvX2ZzY2tfb2JqZWN0ID0gMTsKKwkJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWNoZWNrLXNlbGYtY29udGFpbmVkLWFuZC1jb25uZWN0ZWQiKSkgeworCQkJCXN0cmljdCA9IDE7CisJCQkJY2hlY2tfc2VsZl9jb250YWluZWRfYW5kX2Nvbm5lY3RlZCA9IDE7CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS12ZXJpZnkiKSkgewogCQkJCXZlcmlmeSA9IDE7CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS12ZXJpZnktc3RhdCIpKSB7CiAJCQkJdmVyaWZ5ID0gMTsKLQkJCQlzdGF0ID0gMTsKKwkJCQlzaG93X3N0YXQgPSAxOwogCQkJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tdmVyaWZ5LXN0YXQtb25seSIpKSB7CiAJCQkJdmVyaWZ5ID0gMTsKLQkJCQlzdGF0ID0gMTsKKwkJCQlzaG93X3N0YXQgPSAxOwogCQkJCXN0YXRfb25seSA9IDE7CiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1rZWVwIikpIHsKIAkJCQlrZWVwX21zZyA9ICIiOwpAQCAtMTYwNSw5ICsxNjM1LDkgQEAKIAljb25jbHVkZV9wYWNrKGZpeF90aGluX3BhY2ssIGN1cnJfcGFjaywgcGFja19zaGExKTsKIAlmcmVlKGRlbHRhcyk7CiAJaWYgKHN0cmljdCkKLQkJY2hlY2tfb2JqZWN0cygpOworCQlmb3JlaWduX25yID0gY2hlY2tfb2JqZWN0cygpOwogCi0JaWYgKHN0YXQpCisJaWYgKHNob3dfc3RhdCkKIAkJc2hvd19wYWNrX2luZm8oc3RhdF9vbmx5KTsKIAogCWlkeF9vYmplY3RzID0geG1hbGxvYygobnJfb2JqZWN0cykgKiBzaXplb2Yoc3RydWN0IHBhY2tfaWR4X2VudHJ5ICopKTsKQEAgLTE2MzEsNSArMTY2MSwxMSBAQAogCWlmIChpbmRleF9uYW1lID09IE5VTEwpCiAJCWZyZWUoKHZvaWQgKikgY3Vycl9pbmRleCk7CiAKKwkvKgorCSAqIExldCB0aGUgY2FsbGVyIGtub3cgdGhpcyBwYWNrIGlzIG5vdCBzZWxmIGNvbnRhaW5lZAorCSAqLworCWlmIChjaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkICYmIGZvcmVpZ25fbnIpCisJCXJldHVybiAxOworCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2xvZy5jIGIvYnVpbHRpbi9sb2cuYwppbmRleCBlN2I3ZGIxLi45ZTIxMjMyIDEwMDY0NAotLS0gYS9idWlsdGluL2xvZy5jCisrKyBiL2J1aWx0aW4vbG9nLmMKQEAgLTE5LDkgKzE5LDEyIEBACiAjaW5jbHVkZSAicmVtb3RlLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCisjaW5jbHVkZSAibGluZS1sb2cuaCIKICNpbmNsdWRlICJicmFuY2guaCIKICNpbmNsdWRlICJzdHJlYW1pbmcuaCIKICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisjaW5jbHVkZSAibWFpbG1hcC5oIgorI2luY2x1ZGUgImdwZy1pbnRlcmZhY2UuaCIKIAogLyogU2V0IGEgZGVmYXVsdCBkYXRlLXRpbWUgZm9ybWF0IGZvciBnaXQgbG9nICgibG9nLmRhdGUiIGNvbmZpZyB2YXJpYWJsZSkgKi8KIHN0YXRpYyBjb25zdCBjaGFyICpkZWZhdWx0X2RhdGVfbW9kZSA9IE5VTEw7CkBAIC0zMCwxNSArMzMsMjIgQEAKIHN0YXRpYyBpbnQgZGVmYXVsdF9zaG93X3Jvb3QgPSAxOwogc3RhdGljIGludCBkZWNvcmF0aW9uX3N0eWxlOwogc3RhdGljIGludCBkZWNvcmF0aW9uX2dpdmVuOworc3RhdGljIGludCB1c2VfbWFpbG1hcF9jb25maWc7CiBzdGF0aWMgY29uc3QgY2hhciAqZm10X3BhdGNoX3N1YmplY3RfcHJlZml4ID0gIlBBVENIIjsKIHN0YXRpYyBjb25zdCBjaGFyICpmbXRfcHJldHR5OwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fbG9nX3VzYWdlW10gPSB7Ci0JTl8oImdpdCBsb2cgWzxvcHRpb25zPl0gWzxzaW5jZT4uLjx1bnRpbD5dIFtbLS1dIDxwYXRoPi4uLl1cbiIpCisJTl8oImdpdCBsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIDxwYXRoPi4uLl1cbiIpCiAJTl8oIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iKSwKIAlOVUxMCiB9OwogCitzdHJ1Y3QgbGluZV9vcHRfY2FsbGJhY2tfZGF0YSB7CisJc3RydWN0IHJldl9pbmZvICpyZXY7CisJY29uc3QgY2hhciAqcHJlZml4OworCXN0cnVjdCBzdHJpbmdfbGlzdCBhcmdzOworfTsKKwogc3RhdGljIGludCBwYXJzZV9kZWNvcmF0aW9uX3N0eWxlKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpCiB7CiAJc3dpdGNoIChnaXRfY29uZmlnX21heWJlX2Jvb2wodmFyLCB2YWx1ZSkpIHsKQEAgLTczLDYgKzgzLDE5IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgbG9nX2xpbmVfcmFuZ2VfY2FsbGJhY2soY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0aW9uLCBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKK3sKKwlzdHJ1Y3QgbGluZV9vcHRfY2FsbGJhY2tfZGF0YSAqZGF0YSA9IG9wdGlvbi0+dmFsdWU7CisKKwlpZiAoIWFyZykKKwkJcmV0dXJuIC0xOworCisJZGF0YS0+cmV2LT5saW5lX2xldmVsX3RyYXZlcnNlID0gMTsKKwlzdHJpbmdfbGlzdF9hcHBlbmQoJmRhdGEtPmFyZ3MsIGFyZyk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgY21kX2xvZ19pbml0X2RlZmF1bHRzKHN0cnVjdCByZXZfaW5mbyAqcmV2KQogewogCWlmIChmbXRfcHJldHR5KQpAQCAtOTQsMTYgKzExNywyNSBAQAogCQkJIHN0cnVjdCByZXZfaW5mbyAqcmV2LCBzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0ICpvcHQpCiB7CiAJc3RydWN0IHVzZXJmb3JtYXRfd2FudCB3OwotCWludCBxdWlldCA9IDAsIHNvdXJjZSA9IDA7CisJaW50IHF1aWV0ID0gMCwgc291cmNlID0gMCwgbWFpbG1hcCA9IDA7CisJc3RhdGljIHN0cnVjdCBsaW5lX29wdF9jYWxsYmFja19kYXRhIGxpbmVfY2IgPSB7TlVMTCwgTlVMTCwgU1RSSU5HX0xJU1RfSU5JVF9EVVB9OwogCiAJY29uc3Qgc3RydWN0IG9wdGlvbiBidWlsdGluX2xvZ19vcHRpb25zW10gPSB7Ci0JCU9QVF9CT09MRUFOKDAsICJxdWlldCIsICZxdWlldCwgTl8oInN1cHByZXNzIGRpZmYgb3V0cHV0IikpLAotCQlPUFRfQk9PTEVBTigwLCAic291cmNlIiwgJnNvdXJjZSwgTl8oInNob3cgc291cmNlIikpLAorCQlPUFRfQk9PTCgwLCAicXVpZXQiLCAmcXVpZXQsIE5fKCJzdXBwcmVzcyBkaWZmIG91dHB1dCIpKSwKKwkJT1BUX0JPT0woMCwgInNvdXJjZSIsICZzb3VyY2UsIE5fKCJzaG93IHNvdXJjZSIpKSwKKwkJT1BUX0JPT0woMCwgInVzZS1tYWlsbWFwIiwgJm1haWxtYXAsIE5fKCJVc2UgbWFpbCBtYXAgZmlsZSIpKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJkZWNvcmF0ZSIsIE5VTEwsIE5VTEwsIE5fKCJkZWNvcmF0ZSBvcHRpb25zIiksCiAJCSAgUEFSU0VfT1BUX09QVEFSRywgZGVjb3JhdGVfY2FsbGJhY2t9LAorCQlPUFRfQ0FMTEJBQ0soJ0wnLCBOVUxMLCAmbGluZV9jYiwgIm4sbTpmaWxlIiwKKwkJCSAgICAgIlByb2Nlc3MgbGluZSByYW5nZSBuLG0gaW4gZmlsZSwgY291bnRpbmcgZnJvbSAxIiwKKwkJCSAgICAgbG9nX2xpbmVfcmFuZ2VfY2FsbGJhY2spLAogCQlPUFRfRU5EKCkKIAl9OwogCisJbGluZV9jYi5yZXYgPSByZXY7CisJbGluZV9jYi5wcmVmaXggPSBwcmVmaXg7CisKKwltYWlsbWFwID0gdXNlX21haWxtYXBfY29uZmlnOwogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwKIAkJCSAgICAgYnVpbHRpbl9sb2dfb3B0aW9ucywgYnVpbHRpbl9sb2dfdXNhZ2UsCiAJCQkgICAgIFBBUlNFX09QVF9LRUVQX0FSR1YwIHwgUEFSU0VfT1BUX0tFRVBfVU5LTk9XTiB8CkBAIC0xMzYsNiArMTY4LDExIEBACiAJaWYgKHNvdXJjZSkKIAkJcmV2LT5zaG93X3NvdXJjZSA9IDE7CiAKKwlpZiAobWFpbG1hcCkgeworCQlyZXYtPm1haWxtYXAgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKKwkJcmVhZF9tYWlsbWFwKHJldi0+bWFpbG1hcCwgTlVMTCk7CisJfQorCiAJaWYgKHJldi0+cHJldHR5X2dpdmVuICYmIHJldi0+Y29tbWl0X2Zvcm1hdCA9PSBDTUlUX0ZNVF9SQVcpIHsKIAkJLyoKIAkJICogImxvZyAtLXByZXR0eT1yYXciIGlzIHNwZWNpYWw7IGlnbm9yZSBVSSBvcmllbnRlZApAQCAtMTUxLDYgKzE4OCwxMCBAQAogCQlyZXYtPnNob3dfZGVjb3JhdGlvbnMgPSAxOwogCQlsb2FkX3JlZl9kZWNvcmF0aW9ucyhkZWNvcmF0aW9uX3N0eWxlKTsKIAl9CisKKwlpZiAocmV2LT5saW5lX2xldmVsX3RyYXZlcnNlKQorCQlsaW5lX2xvZ19pbml0KHJldiwgbGluZV9jYi5wcmVmaXgsICZsaW5lX2NiLmFyZ3MpOworCiAJc2V0dXBfcGFnZXIoKTsKIH0KIApAQCAtMzUxLDggKzM5MiwxNSBAQAogCX0KIAlpZiAoIXByZWZpeGNtcCh2YXIsICJjb2xvci5kZWNvcmF0ZS4iKSkKIAkJcmV0dXJuIHBhcnNlX2RlY29yYXRlX2NvbG9yX2NvbmZpZyh2YXIsIDE1LCB2YWx1ZSk7CisJaWYgKCFzdHJjbXAodmFyLCAibG9nLm1haWxtYXAiKSkgeworCQl1c2VfbWFpbG1hcF9jb25maWcgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwogCWlmIChncmVwX2NvbmZpZyh2YXIsIHZhbHVlLCBjYikgPCAwKQogCQlyZXR1cm4gLTE7CisJaWYgKGdpdF9ncGdfY29uZmlnKHZhciwgdmFsdWUsIGNiKSA8IDApCisJCXJldHVybiAtMTsKIAlyZXR1cm4gZ2l0X2RpZmZfdWlfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KIApAQCAtNjA1LDYgKzY1MywxNCBAQAogc3RhdGljIGludCB0aHJlYWQ7CiBzdGF0aWMgaW50IGRvX3NpZ25vZmY7CiBzdGF0aWMgY29uc3QgY2hhciAqc2lnbmF0dXJlID0gZ2l0X3ZlcnNpb25fc3RyaW5nOworc3RhdGljIGludCBjb25maWdfY292ZXJfbGV0dGVyOworCitlbnVtIHsKKwlDT1ZFUl9VTlNFVCwKKwlDT1ZFUl9PRkYsCisJQ09WRVJfT04sCisJQ09WRVJfQVVUTworfTsKIAogc3RhdGljIGludCBnaXRfZm9ybWF0X2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKIHsKQEAgLTY2Niw2ICs3MjIsMTQgQEAKIAl9CiAJaWYgKCFzdHJjbXAodmFyLCAiZm9ybWF0LnNpZ25hdHVyZSIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJnNpZ25hdHVyZSwgdmFyLCB2YWx1ZSk7CisJaWYgKCFzdHJjbXAodmFyLCAiZm9ybWF0LmNvdmVybGV0dGVyIikpIHsKKwkJaWYgKHZhbHVlICYmICFzdHJjYXNlY21wKHZhbHVlLCAiYXV0byIpKSB7CisJCQljb25maWdfY292ZXJfbGV0dGVyID0gQ09WRVJfQVVUTzsKKwkJCXJldHVybiAwOworCQl9CisJCWNvbmZpZ19jb3Zlcl9sZXR0ZXIgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSkgPyBDT1ZFUl9PTiA6IENPVkVSX09GRjsKKwkJcmV0dXJuIDA7CisJfQogCiAJcmV0dXJuIGdpdF9sb2dfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KQEAgLTY3OCw3ICs3NDIsNyBAQAogCQkJIHN0cnVjdCByZXZfaW5mbyAqcmV2LCBpbnQgcXVpZXQpCiB7CiAJc3RydWN0IHN0cmJ1ZiBmaWxlbmFtZSA9IFNUUkJVRl9JTklUOwotCWludCBzdWZmaXhfbGVuID0gc3RybGVuKGZtdF9wYXRjaF9zdWZmaXgpICsgMTsKKwlpbnQgc3VmZml4X2xlbiA9IHN0cmxlbihyZXYtPnBhdGNoX3N1ZmZpeCkgKyAxOwogCiAJaWYgKG91dHB1dF9kaXJlY3RvcnkpIHsKIAkJc3RyYnVmX2FkZHN0cigmZmlsZW5hbWUsIG91dHB1dF9kaXJlY3RvcnkpOwpAQCAtNjg5LDcgKzc1MywxMiBAQAogCQkJc3RyYnVmX2FkZGNoKCZmaWxlbmFtZSwgJy8nKTsKIAl9CiAKLQlnZXRfcGF0Y2hfZmlsZW5hbWUoY29tbWl0LCBzdWJqZWN0LCByZXYtPm5yLCBmbXRfcGF0Y2hfc3VmZml4LCAmZmlsZW5hbWUpOworCWlmIChyZXYtPm51bWJlcmVkX2ZpbGVzKQorCQlzdHJidWZfYWRkZigmZmlsZW5hbWUsICIlZCIsIHJldi0+bnIpOworCWVsc2UgaWYgKGNvbW1pdCkKKwkJZm10X291dHB1dF9jb21taXQoJmZpbGVuYW1lLCBjb21taXQsIHJldik7CisJZWxzZQorCQlmbXRfb3V0cHV0X3N1YmplY3QoJmZpbGVuYW1lLCBzdWJqZWN0LCByZXYpOwogCiAJaWYgKCFxdWlldCkKIAkJZnByaW50ZihyZWFsc3Rkb3V0LCAiJXNcbiIsIGZpbGVuYW1lLmJ1ZiArIG91dGRpcl9vZmZzZXQpOwpAQCAtNzcyLDEwICs4NDEsMzcgQEAKIAl9CiB9CiAKK3N0YXRpYyBjaGFyICpmaW5kX2JyYW5jaF9uYW1lKHN0cnVjdCByZXZfaW5mbyAqcmV2KQoreworCWludCBpLCBwb3NpdGl2ZSA9IC0xOworCXVuc2lnbmVkIGNoYXIgYnJhbmNoX3NoYTFbMjBdOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnRpcF9zaGExOworCWNvbnN0IGNoYXIgKnJlZjsKKwljaGFyICpmdWxsX3JlZiwgKmJyYW5jaCA9IE5VTEw7CisKKwlmb3IgKGkgPSAwOyBpIDwgcmV2LT5jbWRsaW5lLm5yOyBpKyspIHsKKwkJaWYgKHJldi0+Y21kbGluZS5yZXZbaV0uZmxhZ3MgJiBVTklOVEVSRVNUSU5HKQorCQkJY29udGludWU7CisJCWlmIChwb3NpdGl2ZSA8IDApCisJCQlwb3NpdGl2ZSA9IGk7CisJCWVsc2UKKwkJCXJldHVybiBOVUxMOworCX0KKwlpZiAocG9zaXRpdmUgPCAwKQorCQlyZXR1cm4gTlVMTDsKKwlyZWYgPSByZXYtPmNtZGxpbmUucmV2W3Bvc2l0aXZlXS5uYW1lOworCXRpcF9zaGExID0gcmV2LT5jbWRsaW5lLnJldltwb3NpdGl2ZV0uaXRlbS0+c2hhMTsKKwlpZiAoZHdpbV9yZWYocmVmLCBzdHJsZW4ocmVmKSwgYnJhbmNoX3NoYTEsICZmdWxsX3JlZikgJiYKKwkgICAgIXByZWZpeGNtcChmdWxsX3JlZiwgInJlZnMvaGVhZHMvIikgJiYKKwkgICAgIWhhc2hjbXAodGlwX3NoYTEsIGJyYW5jaF9zaGExKSkKKwkJYnJhbmNoID0geHN0cmR1cChmdWxsX3JlZiArIHN0cmxlbigicmVmcy9oZWFkcy8iKSk7CisJZnJlZShmdWxsX3JlZik7CisJcmV0dXJuIGJyYW5jaDsKK30KKwogc3RhdGljIHZvaWQgbWFrZV9jb3Zlcl9sZXR0ZXIoc3RydWN0IHJldl9pbmZvICpyZXYsIGludCB1c2Vfc3Rkb3V0LAotCQkJICAgICAgaW50IG51bWJlcmVkLCBpbnQgbnVtYmVyZWRfZmlsZXMsCiAJCQkgICAgICBzdHJ1Y3QgY29tbWl0ICpvcmlnaW4sCi0JCQkgICAgICBpbnQgbnIsIHN0cnVjdCBjb21taXQgKipsaXN0LCBzdHJ1Y3QgY29tbWl0ICpoZWFkLAorCQkJICAgICAgaW50IG5yLCBzdHJ1Y3QgY29tbWl0ICoqbGlzdCwKIAkJCSAgICAgIGNvbnN0IGNoYXIgKmJyYW5jaF9uYW1lLAogCQkJICAgICAgaW50IHF1aWV0KQogewpAQCAtNzg5LDYgKzg4NSw3IEBACiAJc3RydWN0IGRpZmZfb3B0aW9ucyBvcHRzOwogCWludCBuZWVkXzhiaXRfY3RlID0gMDsKIAlzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgcHAgPSB7MH07CisJc3RydWN0IGNvbW1pdCAqaGVhZCA9IGxpc3RbMF07CiAKIAlpZiAocmV2LT5jb21taXRfZm9ybWF0ICE9IENNSVRfRk1UX0VNQUlMKQogCQlkaWUoXygiQ292ZXIgbGV0dGVyIG5lZWRzIGVtYWlsIGZvcm1hdCIpKTsKQEAgLTc5Niw3ICs4OTMsNyBAQAogCWNvbW1pdHRlciA9IGdpdF9jb21taXR0ZXJfaW5mbygwKTsKIAogCWlmICghdXNlX3N0ZG91dCAmJgotCSAgICByZW9wZW5fc3Rkb3V0KE5VTEwsIG51bWJlcmVkX2ZpbGVzID8gTlVMTCA6ICJjb3Zlci1sZXR0ZXIiLCByZXYsIHF1aWV0KSkKKwkgICAgcmVvcGVuX3N0ZG91dChOVUxMLCByZXYtPm51bWJlcmVkX2ZpbGVzID8gTlVMTCA6ICJjb3Zlci1sZXR0ZXIiLCByZXYsIHF1aWV0KSkKIAkJcmV0dXJuOwogCiAJbG9nX3dyaXRlX2VtYWlsX2hlYWRlcnMocmV2LCBoZWFkLCAmcHAuc3ViamVjdCwgJnBwLmFmdGVyX3N1YmplY3QsCkBAIC04MDYsNiArOTAzLDkgQEAKIAkJaWYgKGhhc19ub25fYXNjaWkobGlzdFtpXS0+YnVmZmVyKSkKIAkJCW5lZWRfOGJpdF9jdGUgPSAxOwogCisJaWYgKCFicmFuY2hfbmFtZSkKKwkJYnJhbmNoX25hbWUgPSBmaW5kX2JyYW5jaF9uYW1lKHJldik7CisKIAltc2cgPSBib2R5OwogCXBwLmZtdCA9IENNSVRfRk1UX0VNQUlMOwogCXBwLmRhdGVfbW9kZSA9IERBVEVfUkZDMjgyMjsKQEAgLTEwMTIsMzUgKzExMTIsNiBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgY2hhciAqZmluZF9icmFuY2hfbmFtZShzdHJ1Y3QgcmV2X2luZm8gKnJldikKLXsKLQlpbnQgaSwgcG9zaXRpdmUgPSAtMTsKLQl1bnNpZ25lZCBjaGFyIGJyYW5jaF9zaGExWzIwXTsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCWNvbnN0IGNoYXIgKmJyYW5jaDsKLQotCWZvciAoaSA9IDA7IGkgPCByZXYtPmNtZGxpbmUubnI7IGkrKykgewotCQlpZiAocmV2LT5jbWRsaW5lLnJldltpXS5mbGFncyAmIFVOSU5URVJFU1RJTkcpCi0JCQljb250aW51ZTsKLQkJaWYgKHBvc2l0aXZlIDwgMCkKLQkJCXBvc2l0aXZlID0gaTsKLQkJZWxzZQotCQkJcmV0dXJuIE5VTEw7Ci0JfQotCWlmIChwb3NpdGl2ZSA8IDApCi0JCXJldHVybiBOVUxMOwotCXN0cmJ1Zl9hZGRmKCZidWYsICJyZWZzL2hlYWRzLyVzIiwgcmV2LT5jbWRsaW5lLnJldltwb3NpdGl2ZV0ubmFtZSk7Ci0JYnJhbmNoID0gcmVzb2x2ZV9yZWZfdW5zYWZlKGJ1Zi5idWYsIGJyYW5jaF9zaGExLCAxLCBOVUxMKTsKLQlpZiAoIWJyYW5jaCB8fAotCSAgICBwcmVmaXhjbXAoYnJhbmNoLCAicmVmcy9oZWFkcy8iKSB8fAotCSAgICBoYXNoY21wKHJldi0+Y21kbGluZS5yZXZbcG9zaXRpdmVdLml0ZW0tPnNoYTEsIGJyYW5jaF9zaGExKSkKLQkJYnJhbmNoID0gTlVMTDsKLQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLQlpZiAoYnJhbmNoKQotCQlyZXR1cm4geHN0cmR1cChyZXYtPmNtZGxpbmUucmV2W3Bvc2l0aXZlXS5uYW1lKTsKLQlyZXR1cm4gTlVMTDsKLX0KLQogaW50IGNtZF9mb3JtYXRfcGF0Y2goaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwpAQCAtMTA1MCwxOCArMTEyMSwxOCBAQAogCWludCBuciA9IDAsIHRvdGFsLCBpOwogCWludCB1c2Vfc3Rkb3V0ID0gMDsKIAlpbnQgc3RhcnRfbnVtYmVyID0gLTE7Ci0JaW50IG51bWJlcmVkX2ZpbGVzID0gMDsJCS8qIF9qdXN0XyBudW1iZXJzICovCisJaW50IGp1c3RfbnVtYmVycyA9IDA7CiAJaW50IGlnbm9yZV9pZl9pbl91cHN0cmVhbSA9IDA7Ci0JaW50IGNvdmVyX2xldHRlciA9IDA7CisJaW50IGNvdmVyX2xldHRlciA9IC0xOwogCWludCBib3VuZGFyeV9jb3VudCA9IDA7CiAJaW50IG5vX2JpbmFyeV9kaWZmID0gMDsKLQlzdHJ1Y3QgY29tbWl0ICpvcmlnaW4gPSBOVUxMLCAqaGVhZCA9IE5VTEw7CisJc3RydWN0IGNvbW1pdCAqb3JpZ2luID0gTlVMTDsKIAljb25zdCBjaGFyICppbl9yZXBseV90byA9IE5VTEw7CiAJc3RydWN0IHBhdGNoX2lkcyBpZHM7Ci0JY2hhciAqYWRkX3NpZ25vZmYgPSBOVUxMOwogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IHVzZV9wYXRjaF9mb3JtYXQgPSAwOwogCWludCBxdWlldCA9IDA7CisJaW50IHJlcm9sbF9jb3VudCA9IC0xOwogCWNoYXIgKmJyYW5jaF9uYW1lID0gTlVMTDsKIAljb25zdCBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fZm9ybWF0X3BhdGNoX29wdGlvbnNbXSA9IHsKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssICduJywgIm51bWJlcmVkIiwgJm51bWJlcmVkLCBOVUxMLApAQCAtMTA3MCwxNyArMTE0MSwxOSBAQAogCQl7IE9QVElPTl9DQUxMQkFDSywgJ04nLCAibm8tbnVtYmVyZWQiLCAmbnVtYmVyZWQsIE5VTEwsCiAJCQkgICAgTl8oInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIiksCiAJCQkgICAgUEFSU0VfT1BUX05PQVJHLCBub19udW1iZXJlZF9jYWxsYmFjayB9LAotCQlPUFRfQk9PTEVBTigncycsICJzaWdub2ZmIiwgJmRvX3NpZ25vZmYsIE5fKCJhZGQgU2lnbmVkLW9mZi1ieToiKSksCi0JCU9QVF9CT09MRUFOKDAsICJzdGRvdXQiLCAmdXNlX3N0ZG91dCwKKwkJT1BUX0JPT0woJ3MnLCAic2lnbm9mZiIsICZkb19zaWdub2ZmLCBOXygiYWRkIFNpZ25lZC1vZmYtYnk6IikpLAorCQlPUFRfQk9PTCgwLCAic3Rkb3V0IiwgJnVzZV9zdGRvdXQsCiAJCQkgICAgTl8oInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IikpLAotCQlPUFRfQk9PTEVBTigwLCAiY292ZXItbGV0dGVyIiwgJmNvdmVyX2xldHRlciwKKwkJT1BUX0JPT0woMCwgImNvdmVyLWxldHRlciIsICZjb3Zlcl9sZXR0ZXIsCiAJCQkgICAgTl8oImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIikpLAotCQlPUFRfQk9PTEVBTigwLCAibnVtYmVyZWQtZmlsZXMiLCAmbnVtYmVyZWRfZmlsZXMsCisJCU9QVF9CT09MKDAsICJudW1iZXJlZC1maWxlcyIsICZqdXN0X251bWJlcnMsCiAJCQkgICAgTl8oInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIpKSwKIAkJT1BUX1NUUklORygwLCAic3VmZml4IiwgJmZtdF9wYXRjaF9zdWZmaXgsIE5fKCJzZngiKSwKIAkJCSAgICBOXygidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciKSksCiAJCU9QVF9JTlRFR0VSKDAsICJzdGFydC1udW1iZXIiLCAmc3RhcnRfbnVtYmVyLAogCQkJICAgIE5fKCJzdGFydCBudW1iZXJpbmcgcGF0Y2hlcyBhdCA8bj4gaW5zdGVhZCBvZiAxIikpLAorCQlPUFRfSU5URUdFUigndicsICJyZXJvbGwtY291bnQiLCAmcmVyb2xsX2NvdW50LAorCQkJICAgIE5fKCJtYXJrIHRoZSBzZXJpZXMgYXMgTnRoIHJlLXJvbGwiKSksCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAic3ViamVjdC1wcmVmaXgiLCAmcmV2LCBOXygicHJlZml4IiksCiAJCQkgICAgTl8oIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIpLAogCQkJICAgIFBBUlNFX09QVF9OT05FRywgc3ViamVjdF9wcmVmaXhfY2FsbGJhY2sgfSwKQEAgLTExNTQsMTQgKzEyMjcsMTIgQEAKIAkJCSAgICAgUEFSU0VfT1BUX0tFRVBfQVJHVjAgfCBQQVJTRV9PUFRfS0VFUF9VTktOT1dOIHwKIAkJCSAgICAgUEFSU0VfT1BUX0tFRVBfREFTSERBU0gpOwogCi0JaWYgKGRvX3NpZ25vZmYpIHsKLQkJY29uc3QgY2hhciAqY29tbWl0dGVyOwotCQljb25zdCBjaGFyICplbmRwb3M7Ci0JCWNvbW1pdHRlciA9IGdpdF9jb21taXR0ZXJfaW5mbyhJREVOVF9TVFJJQ1QpOwotCQllbmRwb3MgPSBzdHJjaHIoY29tbWl0dGVyLCAnPicpOwotCQlpZiAoIWVuZHBvcykKLQkJCWRpZShfKCJib2d1cyBjb21taXR0ZXIgaW5mbyAlcyIpLCBjb21taXR0ZXIpOwotCQlhZGRfc2lnbm9mZiA9IHhtZW1kdXB6KGNvbW1pdHRlciwgZW5kcG9zIC0gY29tbWl0dGVyICsgMSk7CisJaWYgKDAgPCByZXJvbGxfY291bnQpIHsKKwkJc3RydWN0IHN0cmJ1ZiBzcHJlZml4ID0gU1RSQlVGX0lOSVQ7CisJCXN0cmJ1Zl9hZGRmKCZzcHJlZml4LCAiJXMgdiVkIiwKKwkJCSAgICByZXYuc3ViamVjdF9wcmVmaXgsIHJlcm9sbF9jb3VudCk7CisJCXJldi5yZXJvbGxfY291bnQgPSByZXJvbGxfY291bnQ7CisJCXJldi5zdWJqZWN0X3ByZWZpeCA9IHN0cmJ1Zl9kZXRhY2goJnNwcmVmaXgsIE5VTEwpOwogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBleHRyYV9oZHIubnI7IGkrKykgewpAQCAtMTI0OSwyOCArMTMyMCwzNiBAQAogCX0KIAogCWlmIChyZXYucGVuZGluZy5uciA9PSAxKSB7CisJCWludCBjaGVja19oZWFkID0gMDsKKwogCQlpZiAocmV2Lm1heF9jb3VudCA8IDAgJiYgIXJldi5zaG93X3Jvb3RfZGlmZikgewogCQkJLyoKIAkJCSAqIFRoaXMgaXMgdHJhZGl0aW9uYWwgYmVoYXZpb3VyIG9mICJnaXQgZm9ybWF0LXBhdGNoCiAJCQkgKiBvcmlnaW4iIHRoYXQgcHJlcGFyZXMgd2hhdCB0aGUgb3JpZ2luIHNpZGUgc3RpbGwKIAkJCSAqIGRvZXMgbm90IGhhdmUuCiAJCQkgKi8KLQkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0JCQljb25zdCBjaGFyICpyZWY7Ci0KIAkJCXJldi5wZW5kaW5nLm9iamVjdHNbMF0uaXRlbS0+ZmxhZ3MgfD0gVU5JTlRFUkVTVElORzsKIAkJCWFkZF9oZWFkX3RvX3BlbmRpbmcoJnJldik7Ci0JCQlyZWYgPSByZXNvbHZlX3JlZl91bnNhZmUoIkhFQUQiLCBzaGExLCAxLCBOVUxMKTsKLQkJCWlmIChyZWYgJiYgIXByZWZpeGNtcChyZWYsICJyZWZzL2hlYWRzLyIpKQotCQkJCWJyYW5jaF9uYW1lID0geHN0cmR1cChyZWYgKyBzdHJsZW4oInJlZnMvaGVhZHMvIikpOwotCQkJZWxzZQotCQkJCWJyYW5jaF9uYW1lID0geHN0cmR1cCgiIik7IC8qIG5vIGJyYW5jaCAqLworCQkJY2hlY2tfaGVhZCA9IDE7CiAJCX0KIAkJLyoKIAkJICogT3RoZXJ3aXNlLCBpdCBpcyAiZm9ybWF0LXBhdGNoIC0yMiBIRUFEIiwgYW5kL29yCiAJCSAqICJmb3JtYXQtcGF0Y2ggLS1yb290IEhFQUQiLiAgVGhlIHVzZXIgd2FudHMKIAkJICogZ2V0X3JldmlzaW9uKCkgdG8gZG8gdGhlIHVzdWFsIHRyYXZlcnNhbC4KIAkJICovCisKKwkJaWYgKCFzdHJjbXAocmV2LnBlbmRpbmcub2JqZWN0c1swXS5uYW1lLCAiSEVBRCIpKQorCQkJY2hlY2tfaGVhZCA9IDE7CisKKwkJaWYgKGNoZWNrX2hlYWQpIHsKKwkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJCQljb25zdCBjaGFyICpyZWY7CisJCQlyZWYgPSByZXNvbHZlX3JlZl91bnNhZmUoIkhFQUQiLCBzaGExLCAxLCBOVUxMKTsKKwkJCWlmIChyZWYgJiYgIXByZWZpeGNtcChyZWYsICJyZWZzL2hlYWRzLyIpKQorCQkJCWJyYW5jaF9uYW1lID0geHN0cmR1cChyZWYgKyBzdHJsZW4oInJlZnMvaGVhZHMvIikpOworCQkJZWxzZQorCQkJCWJyYW5jaF9uYW1lID0geHN0cmR1cCgiIik7IC8qIG5vIGJyYW5jaCAqLworCQl9CiAJfQogCiAJLyoKQEAgLTEyNzksMjkgKzEzNTgsNiBAQAogCSAqLwogCXJldi5zaG93X3Jvb3RfZGlmZiA9IDE7CiAKLQlpZiAoY292ZXJfbGV0dGVyKSB7Ci0JCS8qCi0JCSAqIE5FRURTV09SSzpyYW5kb21seSBwaWNrIG9uZSBwb3NpdGl2ZSBjb21taXQgdG8gc2hvdwotCQkgKiBkaWZmc3RhdDsgdGhpcyBpcyBvZnRlbiB0aGUgdGlwIGFuZCB0aGUgY29tbWFuZAotCQkgKiBoYXBwZW5zIHRvIGRvIHRoZSByaWdodCB0aGluZyBpbiBtb3N0IGNhc2VzLCBidXQgYQotCQkgKiBjb21wbGV4IGNvbW1hbmQgbGlrZSAiLS1jb3Zlci1sZXR0ZXIgYSBiIGMgXmJvdHRvbSIKLQkJICogcGlja3MgImMiIGFuZCBzaG93cyBkaWZmc3RhdCBiZXR3ZWVuIGJvdHRvbS4uYwotCQkgKiB3aGljaCBtYXkgbm90IG1hdGNoIHdoYXQgdGhlIHNlcmllcyByZXByZXNlbnRzIGF0Ci0JCSAqIGFsbCBhbmQgdG90YWxseSBicm9rZW4uCi0JCSAqLwotCQlpbnQgaTsKLQkJZm9yIChpID0gMDsgaSA8IHJldi5wZW5kaW5nLm5yOyBpKyspIHsKLQkJCXN0cnVjdCBvYmplY3QgKm8gPSByZXYucGVuZGluZy5vYmplY3RzW2ldLml0ZW07Ci0JCQlpZiAoIShvLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpKQotCQkJCWhlYWQgPSAoc3RydWN0IGNvbW1pdCAqKW87Ci0JCX0KLQkJLyogVGhlcmUgaXMgbm90aGluZyB0byBzaG93OyBpdCBpcyBub3QgYW4gZXJyb3IsIHRob3VnaC4gKi8KLQkJaWYgKCFoZWFkKQotCQkJcmV0dXJuIDA7Ci0JCWlmICghYnJhbmNoX25hbWUpCi0JCQlicmFuY2hfbmFtZSA9IGZpbmRfYnJhbmNoX25hbWUoJnJldik7Ci0JfQotCiAJaWYgKGlnbm9yZV9pZl9pbl91cHN0cmVhbSkgewogCQkvKiBEb24ndCBzYXkgYW55dGhpbmcgaWYgaGVhZCBhbmQgdXBzdHJlYW0gYXJlIHRoZSBzYW1lLiAqLwogCQlpZiAocmV2LnBlbmRpbmcubnIgPT0gMikgewpAQCAtMTMzMywyOCArMTM4OSwzOCBAQAogCQlsaXN0ID0geHJlYWxsb2MobGlzdCwgbnIgKiBzaXplb2YobGlzdFswXSkpOwogCQlsaXN0W25yIC0gMV0gPSBjb21taXQ7CiAJfQorCWlmIChuciA9PSAwKQorCQkvKiBub3RoaW5nIHRvIGRvICovCisJCXJldHVybiAwOwogCXRvdGFsID0gbnI7CiAJaWYgKCFrZWVwX3N1YmplY3QgJiYgYXV0b19udW1iZXIgJiYgdG90YWwgPiAxKQogCQludW1iZXJlZCA9IDE7CiAJaWYgKG51bWJlcmVkKQogCQlyZXYudG90YWwgPSB0b3RhbCArIHN0YXJ0X251bWJlciAtIDE7CisJaWYgKGNvdmVyX2xldHRlciA9PSAtMSkgeworCQlpZiAoY29uZmlnX2NvdmVyX2xldHRlciA9PSBDT1ZFUl9BVVRPKQorCQkJY292ZXJfbGV0dGVyID0gKHRvdGFsID4gMSk7CisJCWVsc2UKKwkJCWNvdmVyX2xldHRlciA9IChjb25maWdfY292ZXJfbGV0dGVyID09IENPVkVSX09OKTsKKwl9CisKIAlpZiAoaW5fcmVwbHlfdG8gfHwgdGhyZWFkIHx8IGNvdmVyX2xldHRlcikKIAkJcmV2LnJlZl9tZXNzYWdlX2lkcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOwogCWlmIChpbl9yZXBseV90bykgewogCQljb25zdCBjaGFyICptc2dpZCA9IGNsZWFuX21lc3NhZ2VfaWQoaW5fcmVwbHlfdG8pOwogCQlzdHJpbmdfbGlzdF9hcHBlbmQocmV2LnJlZl9tZXNzYWdlX2lkcywgbXNnaWQpOwogCX0KLQlyZXYubnVtYmVyZWRfZmlsZXMgPSBudW1iZXJlZF9maWxlczsKKwlyZXYubnVtYmVyZWRfZmlsZXMgPSBqdXN0X251bWJlcnM7CiAJcmV2LnBhdGNoX3N1ZmZpeCA9IGZtdF9wYXRjaF9zdWZmaXg7CiAJaWYgKGNvdmVyX2xldHRlcikgewogCQlpZiAodGhyZWFkKQogCQkJZ2VuX21lc3NhZ2VfaWQoJnJldiwgImNvdmVyIik7Ci0JCW1ha2VfY292ZXJfbGV0dGVyKCZyZXYsIHVzZV9zdGRvdXQsIG51bWJlcmVkLCBudW1iZXJlZF9maWxlcywKLQkJCQkgIG9yaWdpbiwgbnIsIGxpc3QsIGhlYWQsIGJyYW5jaF9uYW1lLCBxdWlldCk7CisJCW1ha2VfY292ZXJfbGV0dGVyKCZyZXYsIHVzZV9zdGRvdXQsCisJCQkJICBvcmlnaW4sIG5yLCBsaXN0LCBicmFuY2hfbmFtZSwgcXVpZXQpOwogCQl0b3RhbCsrOwogCQlzdGFydF9udW1iZXItLTsKIAl9Ci0JcmV2LmFkZF9zaWdub2ZmID0gYWRkX3NpZ25vZmY7CisJcmV2LmFkZF9zaWdub2ZmID0gZG9fc2lnbm9mZjsKIAl3aGlsZSAoMCA8PSAtLW5yKSB7CiAJCWludCBzaG93bjsKIAkJY29tbWl0ID0gbGlzdFtucl07CkBAIC0xMzk2LDcgKzE0NjIsNyBAQAogCQl9CiAKIAkJaWYgKCF1c2Vfc3Rkb3V0ICYmCi0JCSAgICByZW9wZW5fc3Rkb3V0KG51bWJlcmVkX2ZpbGVzID8gTlVMTCA6IGNvbW1pdCwgTlVMTCwgJnJldiwgcXVpZXQpKQorCQkgICAgcmVvcGVuX3N0ZG91dChyZXYubnVtYmVyZWRfZmlsZXMgPyBOVUxMIDogY29tbWl0LCBOVUxMLCAmcmV2LCBxdWlldCkpCiAJCQlkaWUoXygiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgZmlsZXMiKSk7CiAJCXNob3duID0gbG9nX3RyZWVfY29tbWl0KCZyZXYsIGNvbW1pdCk7CiAJCWZyZWUoY29tbWl0LT5idWZmZXIpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9scy1maWxlcy5jIGIvYnVpbHRpbi9scy1maWxlcy5jCmluZGV4IGI1NDM0YWYuLjg3ZjNiMzMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbHMtZmlsZXMuYworKysgYi9idWlsdGluL2xzLWZpbGVzLmMKQEAgLTM1LDYgKzM1LDcgQEAKIHN0YXRpYyBjaGFyICpwc19tYXRjaGVkOwogc3RhdGljIGNvbnN0IGNoYXIgKndpdGhfdHJlZTsKIHN0YXRpYyBpbnQgZXhjX2dpdmVuOworc3RhdGljIGludCBleGNsdWRlX2FyZ3M7CiAKIHN0YXRpYyBjb25zdCBjaGFyICp0YWdfY2FjaGVkID0gIiI7CiBzdGF0aWMgY29uc3QgY2hhciAqdGFnX3VubWVyZ2VkID0gIiI7CkBAIC0yMDAsMTkgKzIwMSwxNSBAQAogCX0KIH0KIAotc3RhdGljIGludCBjZV9leGNsdWRlZChzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrICpjaGVjaywgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgY2VfZXhjbHVkZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlpbnQgZHR5cGUgPSBjZV90b19kdHlwZShjZSk7Ci0JcmV0dXJuIHBhdGhfZXhjbHVkZWQoY2hlY2ssIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgJmR0eXBlKTsKKwlyZXR1cm4gaXNfZXhjbHVkZWQoZGlyLCBjZS0+bmFtZSwgJmR0eXBlKTsKIH0KIAogc3RhdGljIHZvaWQgc2hvd19maWxlcyhzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyKQogewogCWludCBpOwotCXN0cnVjdCBwYXRoX2V4Y2x1ZGVfY2hlY2sgY2hlY2s7Ci0KLQlpZiAoKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKSkKLQkJcGF0aF9leGNsdWRlX2NoZWNrX2luaXQoJmNoZWNrLCBkaXIpOwogCiAJLyogRm9yIGNhY2hlZC9kZWxldGVkIGZpbGVzIHdlIGRvbid0IG5lZWQgdG8gZXZlbiBkbyB0aGUgcmVhZGRpciAqLwogCWlmIChzaG93X290aGVycyB8fCBzaG93X2tpbGxlZCkgewpAQCAtMjIyLDExICsyMTksMTEgQEAKIAkJaWYgKHNob3dfa2lsbGVkKQogCQkJc2hvd19raWxsZWRfZmlsZXMoZGlyKTsKIAl9Ci0JaWYgKHNob3dfY2FjaGVkIHwgc2hvd19zdGFnZSkgeworCWlmIChzaG93X2NhY2hlZCB8fCBzaG93X3N0YWdlKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewogCQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAkJCWlmICgoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRUQpICYmCi0JCQkgICAgIWNlX2V4Y2x1ZGVkKCZjaGVjaywgY2UpKQorCQkJICAgICFjZV9leGNsdWRlZChkaXIsIGNlKSkKIAkJCQljb250aW51ZTsKIAkJCWlmIChzaG93X3VubWVyZ2VkICYmICFjZV9zdGFnZShjZSkpCiAJCQkJY29udGludWU7CkBAIC0yMzYsMTMgKzIzMywxMyBAQAogCQkJCShjZV9za2lwX3dvcmt0cmVlKGNlKSA/IHRhZ19za2lwX3dvcmt0cmVlIDogdGFnX2NhY2hlZCksIGNlKTsKIAkJfQogCX0KLQlpZiAoc2hvd19kZWxldGVkIHwgc2hvd19tb2RpZmllZCkgeworCWlmIChzaG93X2RlbGV0ZWQgfHwgc2hvd19tb2RpZmllZCkgewogCQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKIAkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CiAJCQlzdHJ1Y3Qgc3RhdCBzdDsKIAkJCWludCBlcnI7CiAJCQlpZiAoKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKSAmJgotCQkJICAgICFjZV9leGNsdWRlZCgmY2hlY2ssIGNlKSkKKwkJCSAgICAhY2VfZXhjbHVkZWQoZGlyLCBjZSkpCiAJCQkJY29udGludWU7CiAJCQlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfVVBEQVRFKQogCQkJCWNvbnRpbnVlOwpAQCAtMjU1LDkgKzI1Miw2IEBACiAJCQkJc2hvd19jZV9lbnRyeSh0YWdfbW9kaWZpZWQsIGNlKTsKIAkJfQogCX0KLQotCWlmICgoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRUQpKQotCQlwYXRoX2V4Y2x1ZGVfY2hlY2tfY2xlYXIoJmNoZWNrKTsKIH0KIAogLyoKQEAgLTMzNyw3ICszMzEsNyBAQAogCQltYXRjaGJ1ZlswXSA9IHByZWZpeDsKIAkJbWF0Y2hidWZbMV0gPSBOVUxMOwogCQlpbml0X3BhdGhzcGVjKCZwYXRoc3BlYywgbWF0Y2hidWYpOwotCQlwYXRoc3BlYy5pdGVtc1swXS51c2Vfd2lsZGNhcmQgPSAwOworCQlwYXRoc3BlYy5pdGVtc1swXS5ub3dpbGRjYXJkX2xlbiA9IHBhdGhzcGVjLml0ZW1zWzBdLmxlbjsKIAl9IGVsc2UKIAkJaW5pdF9wYXRoc3BlYygmcGF0aHNwZWMsIE5VTEwpOwogCWlmIChyZWFkX3RyZWUodHJlZSwgMSwgJnBhdGhzcGVjKSkKQEAgLTQyMCwxMCArNDE0LDEwIEBACiBzdGF0aWMgaW50IG9wdGlvbl9wYXJzZV9leGNsdWRlKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwKIAkJCQljb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKIHsKLQlzdHJ1Y3QgZXhjbHVkZV9saXN0ICpsaXN0ID0gb3B0LT52YWx1ZTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmV4Y2x1ZGVfbGlzdCA9IG9wdC0+dmFsdWU7CiAKIAlleGNfZ2l2ZW4gPSAxOwotCWFkZF9leGNsdWRlKGFyZywgIiIsIDAsIGxpc3QpOworCXN0cmluZ19saXN0X2FwcGVuZChleGNsdWRlX2xpc3QsIGFyZyk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTQ1Miw5ICs0NDYsMTEgQEAKIAogaW50IGNtZF9sc19maWxlcyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmNtZF9wcmVmaXgpCiB7Ci0JaW50IHJlcXVpcmVfd29ya190cmVlID0gMCwgc2hvd190YWcgPSAwOworCWludCByZXF1aXJlX3dvcmtfdHJlZSA9IDAsIHNob3dfdGFnID0gMCwgaTsKIAljb25zdCBjaGFyICptYXhfcHJlZml4OwogCXN0cnVjdCBkaXJfc3RydWN0IGRpcjsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhjbHVkZV9saXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAlzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fbHNfZmlsZXNfb3B0aW9uc1tdID0gewogCQl7IE9QVElPTl9DQUxMQkFDSywgJ3onLCBOVUxMLCBOVUxMLCBOVUxMLAogCQkJTl8oInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIiksCkBAIC00ODgsNyArNDg0LDcgQEAKIAkJCU5fKCJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiKSksCiAJCU9QVF9CT09MRUFOKDAsICJyZXNvbHZlLXVuZG8iLCAmc2hvd19yZXNvbHZlX3VuZG8sCiAJCQkgICAgTl8oInNob3cgcmVzb2x2ZS11bmRvIGluZm9ybWF0aW9uIikpLAotCQl7IE9QVElPTl9DQUxMQkFDSywgJ3gnLCAiZXhjbHVkZSIsICZkaXIuZXhjbHVkZV9saXN0W0VYQ19DTURMXSwgTl8oInBhdHRlcm4iKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssICd4JywgImV4Y2x1ZGUiLCAmZXhjbHVkZV9saXN0LCBOXygicGF0dGVybiIpLAogCQkJTl8oInNraXAgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpLAogCQkJMCwgb3B0aW9uX3BhcnNlX2V4Y2x1ZGUgfSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssICdYJywgImV4Y2x1ZGUtZnJvbSIsICZkaXIsIE5fKCJmaWxlIiksCkBAIC01MjUsNiArNTIxLDEwIEBACiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIGJ1aWx0aW5fbHNfZmlsZXNfb3B0aW9ucywKIAkJCWxzX2ZpbGVzX3VzYWdlLCAwKTsKKwllbCA9IGFkZF9leGNsdWRlX2xpc3QoJmRpciwgRVhDX0NNREwsICItLWV4Y2x1ZGUgb3B0aW9uIik7CisJZm9yIChpID0gMDsgaSA8IGV4Y2x1ZGVfbGlzdC5ucjsgaSsrKSB7CisJCWFkZF9leGNsdWRlKGV4Y2x1ZGVfbGlzdC5pdGVtc1tpXS5zdHJpbmcsICIiLCAwLCBlbCwgLS1leGNsdWRlX2FyZ3MpOworCX0KIAlpZiAoc2hvd190YWcgfHwgc2hvd192YWxpZF9iaXQpIHsKIAkJdGFnX2NhY2hlZCA9ICJIICI7CiAJCXRhZ191bm1lcmdlZCA9ICJNICI7CkBAIC01NzEsOCArNTcxLDggQEAKIAkJZGllKCJscy1maWxlcyAtLWlnbm9yZWQgbmVlZHMgc29tZSBleGNsdWRlIHBhdHRlcm4iKTsKIAogCS8qIFdpdGggbm8gZmxhZ3MsIHdlIGRlZmF1bHQgdG8gc2hvd2luZyB0aGUgY2FjaGVkIGZpbGVzICovCi0JaWYgKCEoc2hvd19zdGFnZSB8IHNob3dfZGVsZXRlZCB8IHNob3dfb3RoZXJzIHwgc2hvd191bm1lcmdlZCB8Ci0JICAgICAgc2hvd19raWxsZWQgfCBzaG93X21vZGlmaWVkIHwgc2hvd19yZXNvbHZlX3VuZG8pKQorCWlmICghKHNob3dfc3RhZ2UgfHwgc2hvd19kZWxldGVkIHx8IHNob3dfb3RoZXJzIHx8IHNob3dfdW5tZXJnZWQgfHwKKwkgICAgICBzaG93X2tpbGxlZCB8fCBzaG93X21vZGlmaWVkIHx8IHNob3dfcmVzb2x2ZV91bmRvKSkKIAkJc2hvd19jYWNoZWQgPSAxOwogCiAJaWYgKG1heF9wcmVmaXgpCmRpZmYgLS1naXQgYS9idWlsdGluL2xzLXRyZWUuYyBiL2J1aWx0aW4vbHMtdHJlZS5jCmluZGV4IDIzNWMxN2MuLmZiNzZlMzggMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbHMtdHJlZS5jCisrKyBiL2J1aWx0aW4vbHMtdHJlZS5jCkBAIC0xNjgsNyArMTY4LDcgQEAKIAogCWluaXRfcGF0aHNwZWMoJnBhdGhzcGVjLCBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2ICsgMSkpOwogCWZvciAoaSA9IDA7IGkgPCBwYXRoc3BlYy5ucjsgaSsrKQotCQlwYXRoc3BlYy5pdGVtc1tpXS51c2Vfd2lsZGNhcmQgPSAwOworCQlwYXRoc3BlYy5pdGVtc1tpXS5ub3dpbGRjYXJkX2xlbiA9IHBhdGhzcGVjLml0ZW1zW2ldLmxlbjsKIAlwYXRoc3BlYy5oYXNfd2lsZGNhcmQgPSAwOwogCXRyZWUgPSBwYXJzZV90cmVlX2luZGlyZWN0KHNoYTEpOwogCWlmICghdHJlZSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vbWFpbHNwbGl0LmMgYi9idWlsdGluL21haWxzcGxpdC5jCmluZGV4IDJkNDMyNzguLjA2Mjk2ZDQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWFpbHNwbGl0LmMKKysrIGIvYnVpbHRpbi9tYWlsc3BsaXQuYwpAQCAtMTMwLDYgKzEzMCwyNyBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG1haWxkaXJfZmlsZW5hbWVfY21wKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIpCit7CisJd2hpbGUgKCphICYmICpiKSB7CisJCWlmIChpc2RpZ2l0KCphKSAmJiBpc2RpZ2l0KCpiKSkgeworCQkJbG9uZyBpbnQgbmEsIG5iOworCQkJbmEgPSBzdHJ0b2woYSwgKGNoYXIgKiopJmEsIDEwKTsKKwkJCW5iID0gc3RydG9sKGIsIChjaGFyICoqKSZiLCAxMCk7CisJCQlpZiAobmEgIT0gbmIpCisJCQkJcmV0dXJuIG5hIC0gbmI7CisJCQkvKiBzdHJ0b2wgYWR2YW5jZWQgb3VyIHBvaW50ZXJzICovCisJCX0KKwkJZWxzZSB7CisJCQlpZiAoKmEgIT0gKmIpCisJCQkJcmV0dXJuICh1bnNpZ25lZCBjaGFyKSphIC0gKHVuc2lnbmVkIGNoYXIpKmI7CisJCQlhKys7CisJCQliKys7CisJCX0KKwl9CisJcmV0dXJuICh1bnNpZ25lZCBjaGFyKSphIC0gKHVuc2lnbmVkIGNoYXIpKmI7Cit9CisKIHN0YXRpYyBpbnQgc3BsaXRfbWFpbGRpcihjb25zdCBjaGFyICptYWlsZGlyLCBjb25zdCBjaGFyICpkaXIsCiAJaW50IG5yX3ByZWMsIGludCBza2lwKQogewpAQCAtMTM5LDYgKzE2MCw4IEBACiAJaW50IGk7CiAJc3RydWN0IHN0cmluZ19saXN0IGxpc3QgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAorCWxpc3QuY21wID0gbWFpbGRpcl9maWxlbmFtZV9jbXA7CisKIAlpZiAocG9wdWxhdGVfbWFpbGRpcl9saXN0KCZsaXN0LCBtYWlsZGlyKSA8IDApCiAJCWdvdG8gb3V0OwogCmRpZmYgLS1naXQgYS9idWlsdGluL21lcmdlLWJhc2UuYyBiL2J1aWx0aW4vbWVyZ2UtYmFzZS5jCmluZGV4IDFiYzc5OTEuLjBjNGNkMmYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UtYmFzZS5jCisrKyBiL2J1aWx0aW4vbWVyZ2UtYmFzZS5jCkBAIC0xMDcsNyArMTA3LDcgQEAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIG9wdGlvbnMsIG1lcmdlX2Jhc2VfdXNhZ2UsIDApOwogCWlmICghb2N0b3B1cyAmJiAhcmVkdWNlICYmIGFyZ2MgPCAyKQogCQl1c2FnZV93aXRoX29wdGlvbnMobWVyZ2VfYmFzZV91c2FnZSwgb3B0aW9ucyk7Ci0JaWYgKGlzX2FuY2VzdG9yICYmIChzaG93X2FsbCB8IG9jdG9wdXMgfCByZWR1Y2UpKQorCWlmIChpc19hbmNlc3RvciAmJiAoc2hvd19hbGwgfHwgb2N0b3B1cyB8fCByZWR1Y2UpKQogCQlkaWUoIi0taXMtYW5jZXN0b3IgY2Fubm90IGJlIHVzZWQgd2l0aCBvdGhlciBvcHRpb25zIik7CiAJaWYgKGlzX2FuY2VzdG9yKQogCQlyZXR1cm4gaGFuZGxlX2lzX2FuY2VzdG9yKGFyZ2MsIGFyZ3YpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tZXJnZS10cmVlLmMgYi9idWlsdGluL21lcmdlLXRyZWUuYwppbmRleCBiYzkxMmUzLi42MWNiZGU0IDEwMDY0NAotLS0gYS9idWlsdGluL21lcmdlLXRyZWUuYworKysgYi9idWlsdGluL21lcmdlLXRyZWUuYwpAQCAtMTU1LDYgKzE1NSwxMSBAQAogCQlhLT5tb2RlID09IGItPm1vZGU7CiB9CiAKK3N0YXRpYyBpbnQgYm90aF9lbXB0eShzdHJ1Y3QgbmFtZV9lbnRyeSAqYSwgc3RydWN0IG5hbWVfZW50cnkgKmIpCit7CisJcmV0dXJuICEoYS0+c2hhMSB8fCBiLT5zaGExKTsKK30KKwogc3RhdGljIHN0cnVjdCBtZXJnZV9saXN0ICpjcmVhdGVfZW50cnkodW5zaWduZWQgc3RhZ2UsIHVuc2lnbmVkIG1vZGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJc3RydWN0IG1lcmdlX2xpc3QgKnJlcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpyZXMpKTsKQEAgLTI0Niw3ICsyNTEsMTEgQEAKIAogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKIAkJbWFzayB8PSAoMSA8PCBpKTsKLQkJaWYgKG5baV0ubW9kZSAmJiBTX0lTRElSKG5baV0ubW9kZSkpCisJCS8qCisJCSAqIFRyZWF0IG1pc3NpbmcgZW50cmllcyBhcyBkaXJlY3RvcmllcyBzbyB0aGF0IHdlIHJldHVybgorCQkgKiBhZnRlciB1bnJlc29sdmVkX2RpcmVjdG9yeSBoYXMgaGFuZGxlZCB0aGlzLgorCQkgKi8KKwkJaWYgKCFuW2ldLm1vZGUgfHwgU19JU0RJUihuW2ldLm1vZGUpKQogCQkJZGlybWFzayB8PSAoMSA8PCBpKTsKIAl9CiAKQEAgLTI5NywxMyArMzA2LDEwIEBACiBzdGF0aWMgaW50IHRocmVld2F5X2NhbGxiYWNrKGludCBuLCB1bnNpZ25lZCBsb25nIG1hc2ssIHVuc2lnbmVkIGxvbmcgZGlybWFzaywgc3RydWN0IG5hbWVfZW50cnkgKmVudHJ5LCBzdHJ1Y3QgdHJhdmVyc2VfaW5mbyAqaW5mbykKIHsKIAkvKiBTYW1lIGluIGJvdGg/ICovCi0JaWYgKHNhbWVfZW50cnkoZW50cnkrMSwgZW50cnkrMikpIHsKLQkJaWYgKGVudHJ5WzBdLnNoYTEpIHsKLQkJCS8qIE1vZGlmaWVkIGlkZW50aWNhbGx5ICovCi0JCQlyZXNvbHZlKGluZm8sIE5VTEwsIGVudHJ5KzEpOwotCQkJcmV0dXJuIG1hc2s7Ci0JCX0KLQkJLyogIkJvdGggYWRkZWQgdGhlIHNhbWUiIGlzIGxlZnQgdW5yZXNvbHZlZCAqLworCWlmIChzYW1lX2VudHJ5KGVudHJ5KzEsIGVudHJ5KzIpIHx8IGJvdGhfZW1wdHkoZW50cnkrMSwgZW50cnkrMikpIHsKKwkJLyogTW9kaWZpZWQsIGFkZGVkIG9yIHJlbW92ZWQgaWRlbnRpY2FsbHkgKi8KKwkJcmVzb2x2ZShpbmZvLCBOVUxMLCBlbnRyeSsxKTsKKwkJcmV0dXJuIG1hc2s7CiAJfQogCiAJaWYgKHNhbWVfZW50cnkoZW50cnkrMCwgZW50cnkrMSkpIHsKQEAgLTMxOSwxMiArMzI1LDEwIEBACiAJCSAqLwogCX0KIAotCWlmIChzYW1lX2VudHJ5KGVudHJ5KzAsIGVudHJ5KzIpKSB7Ci0JCWlmIChlbnRyeVsxXS5zaGExICYmICFTX0lTRElSKGVudHJ5WzFdLm1vZGUpKSB7Ci0JCQkvKiBXZSBtb2RpZmllZCwgdGhleSBkaWQgbm90IHRvdWNoIC0tIHRha2Ugb3VycyAqLwotCQkJcmVzb2x2ZShpbmZvLCBOVUxMLCBlbnRyeSsxKTsKLQkJCXJldHVybiBtYXNrOwotCQl9CisJaWYgKHNhbWVfZW50cnkoZW50cnkrMCwgZW50cnkrMikgfHwgYm90aF9lbXB0eShlbnRyeSswLCBlbnRyeSsyKSkgeworCQkvKiBXZSBhZGRlZCwgbW9kaWZpZWQgb3IgcmVtb3ZlZCwgdGhleSBkaWQgbm90IHRvdWNoIC0tIHRha2Ugb3VycyAqLworCQlyZXNvbHZlKGluZm8sIE5VTEwsIGVudHJ5KzEpOworCQlyZXR1cm4gbWFzazsKIAl9CiAKIAl1bnJlc29sdmVkKGluZm8sIGVudHJ5KTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vbWVyZ2UuYyBiL2J1aWx0aW4vbWVyZ2UuYwppbmRleCA5MzA3ZTljLi4yZWJlNzMyIDEwMDY0NAotLS0gYS9idWlsdGluL21lcmdlLmMKKysrIGIvYnVpbHRpbi9tZXJnZS5jCkBAIC00OSw3ICs0OSw3IEBACiBzdGF0aWMgaW50IHNob3dfZGlmZnN0YXQgPSAxLCBzaG9ydGxvZ19sZW4gPSAtMSwgc3F1YXNoOwogc3RhdGljIGludCBvcHRpb25fY29tbWl0ID0gMSwgYWxsb3dfZmFzdF9mb3J3YXJkID0gMTsKIHN0YXRpYyBpbnQgZmFzdF9mb3J3YXJkX29ubHksIG9wdGlvbl9lZGl0ID0gLTE7Ci1zdGF0aWMgaW50IGFsbG93X3RyaXZpYWwgPSAxLCBoYXZlX21lc3NhZ2U7CitzdGF0aWMgaW50IGFsbG93X3RyaXZpYWwgPSAxLCBoYXZlX21lc3NhZ2UsIHZlcmlmeV9zaWduYXR1cmVzOwogc3RhdGljIGludCBvdmVyd3JpdGVfaWdub3JlID0gMTsKIHN0YXRpYyBzdHJ1Y3Qgc3RyYnVmIG1lcmdlX21zZyA9IFNUUkJVRl9JTklUOwogc3RhdGljIHN0cnVjdCBzdHJhdGVneSAqKnVzZV9zdHJhdGVnaWVzOwpAQCAtMTk5LDYgKzE5OSw4IEBACiAJT1BUX0JPT0xFQU4oMCwgImZmLW9ubHkiLCAmZmFzdF9mb3J3YXJkX29ubHksCiAJCU5fKCJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIikpLAogCU9QVF9SRVJFUkVfQVVUT1VQREFURSgmYWxsb3dfcmVyZXJlX2F1dG8pLAorCU9QVF9CT09MKDAsICJ2ZXJpZnktc2lnbmF0dXJlcyIsICZ2ZXJpZnlfc2lnbmF0dXJlcywKKwkJTl8oIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIpKSwKIAlPUFRfQ0FMTEJBQ0soJ3MnLCAic3RyYXRlZ3kiLCAmdXNlX3N0cmF0ZWdpZXMsIE5fKCJzdHJhdGVneSIpLAogCQlOXygibWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIiksIG9wdGlvbl9wYXJzZV9zdHJhdGVneSksCiAJT1BUX0NBTExCQUNLKCdYJywgInN0cmF0ZWd5LW9wdGlvbiIsICZ4b3B0cywgTl8oIm9wdGlvbj12YWx1ZSIpLApAQCAtNTE2LDYgKzUxOCwxOSBAQAogCQlzdHJidWZfcmVsZWFzZSgmbGluZSk7CiAJCWdvdG8gY2xlYW51cDsKIAl9CisKKwlpZiAocmVtb3RlX2hlYWQtPnV0aWwpIHsKKwkJc3RydWN0IG1lcmdlX3JlbW90ZV9kZXNjICpkZXNjOworCQlkZXNjID0gbWVyZ2VfcmVtb3RlX3V0aWwocmVtb3RlX2hlYWQpOworCQlpZiAoZGVzYyAmJiBkZXNjLT5vYmogJiYgZGVzYy0+b2JqLT50eXBlID09IE9CSl9UQUcpIHsKKwkJCXN0cmJ1Zl9hZGRmKG1zZywgIiVzXHRcdCVzICclcydcbiIsCisJCQkJICAgIHNoYTFfdG9faGV4KGRlc2MtPm9iai0+c2hhMSksCisJCQkJICAgIHR5cGVuYW1lKGRlc2MtPm9iai0+dHlwZSksCisJCQkJICAgIHJlbW90ZSk7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9CisKIAlzdHJidWZfYWRkZihtc2csICIlc1x0XHRjb21taXQgJyVzJ1xuIiwKIAkJc2hhMV90b19oZXgocmVtb3RlX2hlYWQtPm9iamVjdC5zaGExKSwgcmVtb3RlKTsKIGNsZWFudXA6CkBAIC03ODgsMTcgKzgwMywxNiBAQAogTl8oIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgogICAgImVzcGVjaWFsbHkgaWYgaXQgbWVyZ2VzIGFuIHVwZGF0ZWQgdXBzdHJlYW0gaW50byBhIHRvcGljIGJyYW5jaC5cbiIKICAgICJcbiIKLSAgICJMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgorICAgIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgogICAgInRoZSBjb21taXQuXG4iKTsKIAogc3RhdGljIHZvaWQgcHJlcGFyZV90b19jb21taXQoc3RydWN0IGNvbW1pdF9saXN0ICpyZW1vdGVoZWFkcykKIHsKIAlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOwotCWNvbnN0IGNoYXIgKmNvbW1lbnQgPSBfKG1lcmdlX2VkaXRvcl9jb21tZW50KTsKIAlzdHJidWZfYWRkYnVmKCZtc2csICZtZXJnZV9tc2cpOwogCXN0cmJ1Zl9hZGRjaCgmbXNnLCAnXG4nKTsKIAlpZiAoMCA8IG9wdGlvbl9lZGl0KQotCQlzdHJidWZfYWRkX2xpbmVzKCZtc2csICIjICIsIGNvbW1lbnQsIHN0cmxlbihjb21tZW50KSk7CisJCXN0cmJ1Zl9jb21tZW50ZWRfYWRkZigmbXNnLCBfKG1lcmdlX2VkaXRvcl9jb21tZW50KSwgY29tbWVudF9saW5lX2NoYXIpOwogCXdyaXRlX21lcmdlX21zZygmbXNnKTsKIAlpZiAocnVuX2hvb2soZ2V0X2luZGV4X2ZpbGUoKSwgInByZXBhcmUtY29tbWl0LW1zZyIsCiAJCSAgICAgZ2l0X3BhdGgoIk1FUkdFX01TRyIpLCAibWVyZ2UiLCBOVUxMLCBOVUxMKSkKQEAgLTEwNDAsNyArMTA1NCw4IEBACiAJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBnZXRfbWVyZ2VfcGFyZW50KGFyZ3ZbaV0pOwogCQlpZiAoIWNvbW1pdCkKLQkJCWRpZShfKCIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIiksIGFyZ3ZbaV0pOworCQkJaGVscF91bmtub3duX3JlZihhcmd2W2ldLCAibWVyZ2UiLAorCQkJCQkgIm5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIik7CiAJCXJlbW90ZXMgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KGNvbW1pdCwgcmVtb3RlcyktPm5leHQ7CiAJfQogCSpyZW1vdGVzID0gTlVMTDsKQEAgLTEyMzQsNiArMTI0OSwzOSBAQAogCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9tZXJnZV91c2FnZSwKIAkJCWJ1aWx0aW5fbWVyZ2Vfb3B0aW9ucyk7CiAKKwlpZiAodmVyaWZ5X3NpZ25hdHVyZXMpIHsKKwkJZm9yIChwID0gcmVtb3RlaGVhZHM7IHA7IHAgPSBwLT5uZXh0KSB7CisJCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBwLT5pdGVtOworCQkJY2hhciBoZXhbNDFdOworCQkJc3RydWN0IHNpZ25hdHVyZV9jaGVjayBzaWduYXR1cmVfY2hlY2s7CisJCQltZW1zZXQoJnNpZ25hdHVyZV9jaGVjaywgMCwgc2l6ZW9mKHNpZ25hdHVyZV9jaGVjaykpOworCisJCQljaGVja19jb21taXRfc2lnbmF0dXJlKGNvbW1pdCwgJnNpZ25hdHVyZV9jaGVjayk7CisKKwkJCXN0cmNweShoZXgsIGZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVikpOworCQkJc3dpdGNoIChzaWduYXR1cmVfY2hlY2sucmVzdWx0KSB7CisJCQljYXNlICdHJzoKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1UnOgorCQkJCWRpZShfKCJDb21taXQgJXMgaGFzIGFuIHVudHJ1c3RlZCBHUEcgc2lnbmF0dXJlLCAiCisJCQkJICAgICAgImFsbGVnZWRseSBieSAlcy4iKSwgaGV4LCBzaWduYXR1cmVfY2hlY2suc2lnbmVyKTsKKwkJCWNhc2UgJ0InOgorCQkJCWRpZShfKCJDb21taXQgJXMgaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUgIgorCQkJCSAgICAgICJhbGxlZ2VkbHkgYnkgJXMuIiksIGhleCwgc2lnbmF0dXJlX2NoZWNrLnNpZ25lcik7CisJCQlkZWZhdWx0OiAvKiAnTicgKi8KKwkJCQlkaWUoXygiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgYSBHUEcgc2lnbmF0dXJlLiIpLCBoZXgpOworCQkJfQorCQkJaWYgKHZlcmJvc2l0eSA+PSAwICYmIHNpZ25hdHVyZV9jaGVjay5yZXN1bHQgPT0gJ0cnKQorCQkJCXByaW50ZihfKCJDb21taXQgJXMgaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIGJ5ICVzXG4iKSwKKwkJCQkgICAgICAgaGV4LCBzaWduYXR1cmVfY2hlY2suc2lnbmVyKTsKKworCQkJZnJlZShzaWduYXR1cmVfY2hlY2suZ3BnX291dHB1dCk7CisJCQlmcmVlKHNpZ25hdHVyZV9jaGVjay5ncGdfc3RhdHVzKTsKKwkJCWZyZWUoc2lnbmF0dXJlX2NoZWNrLnNpZ25lcik7CisJCQlmcmVlKHNpZ25hdHVyZV9jaGVjay5rZXkpOworCQl9CisJfQorCiAJc3RyYnVmX2FkZHN0cigmYnVmLCAibWVyZ2UiKTsKIAlmb3IgKHAgPSByZW1vdGVoZWFkczsgcDsgcCA9IHAtPm5leHQpCiAJCXN0cmJ1Zl9hZGRmKCZidWYsICIgJXMiLCBtZXJnZV9yZW1vdGVfdXRpbChwLT5pdGVtKS0+bmFtZSk7CmRpZmYgLS1naXQgYS9idWlsdGluL25vdGVzLmMgYi9idWlsdGluL25vdGVzLmMKaW5kZXggNDUzNDU3YS4uZTQxMDBjNCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9ub3Rlcy5jCisrKyBiL2J1aWx0aW4vbm90ZXMuYwpAQCAtNCw3ICs0LDcgQEAKICAqIENvcHlyaWdodCAoYykgMjAxMCBKb2hhbiBIZXJsYW5kIDxqb2hhbkBoZXJsYW5kLm5ldD4KICAqCiAgKiBCYXNlZCBvbiBnaXQtbm90ZXMuc2ggYnkgSm9oYW5uZXMgU2NoaW5kZWxpbiwKLSAqIGFuZCBidWlsdGluLXRhZy5jIGJ5IEtyaXN0aWFuIEjDuGdzYmVyZyBhbmQgQ2FybG9zIFJpY2EuCisgKiBhbmQgYnVpbHRpbi90YWcuYyBieSBLcmlzdGlhbiBIw7hnc2JlcmcgYW5kIENhcmxvcyBSaWNhLgogICovCiAKICNpbmNsdWRlICJjYWNoZS5oIgpAQCAtMTgsOSArMTgsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogI2luY2x1ZGUgIm5vdGVzLW1lcmdlLmgiCi0KLXN0YXRpYyB2b2lkIGNvbW1pdF9ub3RlcyhzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgY29uc3QgY2hhciAqbXNnKTsKLXN0YXRpYyBjb21iaW5lX25vdGVzX2ZuIHBhcnNlX2NvbWJpbmVfbm90ZXNfZm4oY29uc3QgY2hhciAqdik7CisjaW5jbHVkZSAibm90ZXMtdXRpbHMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBnaXRfbm90ZXNfdXNhZ2VbXSA9IHsKIAlOXygiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzxvYmplY3Q+XV0iKSwKQEAgLTkyLDEwICs5MCw3IEBACiB9OwogCiBzdGF0aWMgY29uc3QgY2hhciBub3RlX3RlbXBsYXRlW10gPQotCSJcbiIKLQkiI1xuIgotCSIjIFdyaXRlL2VkaXQgdGhlIG5vdGVzIGZvciB0aGUgZm9sbG93aW5nIG9iamVjdDpcbiIKLQkiI1xuIjsKKwkiXG5Xcml0ZS9lZGl0IHRoZSBub3RlcyBmb3IgdGhlIGZvbGxvd2luZyBvYmplY3Q6XG4iOwogCiBzdHJ1Y3QgbXNnX2FyZyB7CiAJaW50IGdpdmVuOwpAQCAtMTI5LDcgKzEyNCw3IEBACiAJCXsic2hvdyIsICItLXN0YXQiLCAiLS1uby1ub3RlcyIsIHNoYTFfdG9faGV4KG9iamVjdCksIE5VTEx9OwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHNob3c7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQlGSUxFICpzaG93X291dDsKKwlzdHJ1Y3Qgc3RyYnVmIGNidWYgPSBTVFJCVUZfSU5JVDsKIAogCS8qIEludm9rZSAiZ2l0IHNob3cgLS1zdGF0IC0tbm8tbm90ZXMgJG9iamVjdCIgKi8KIAltZW1zZXQoJnNob3csIDAsIHNpemVvZihzaG93KSk7CkBAIC0xNDIsMjEgKzEzNywxNCBAQAogCQlkaWUoXygidW5hYmxlIHRvIHN0YXJ0ICdzaG93JyBmb3Igb2JqZWN0ICclcyciKSwKIAkJICAgIHNoYTFfdG9faGV4KG9iamVjdCkpOwogCi0JLyogT3BlbiB0aGUgb3V0cHV0IGFzIEZJTEUqIHNvIHN0cmJ1Zl9nZXRsaW5lKCkgY2FuIGJlIHVzZWQuICovCi0Jc2hvd19vdXQgPSB4ZmRvcGVuKHNob3cub3V0LCAiciIpOwotCWlmIChzaG93X291dCA9PSBOVUxMKQotCQlkaWVfZXJybm8oXygiY2FuJ3QgZmRvcGVuICdzaG93JyBvdXRwdXQgZmQiKSk7CisJaWYgKHN0cmJ1Zl9yZWFkKCZidWYsIHNob3cub3V0LCAwKSA8IDApCisJCWRpZV9lcnJubyhfKCJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IikpOworCXN0cmJ1Zl9hZGRfY29tbWVudGVkX2xpbmVzKCZjYnVmLCBidWYuYnVmLCBidWYubGVuKTsKKwl3cml0ZV9vcl9kaWUoZmQsIGNidWYuYnVmLCBjYnVmLmxlbik7CiAKLQkvKiBQcmVwZW5kICIjICIgdG8gZWFjaCBvdXRwdXQgbGluZSBhbmQgd3JpdGUgcmVzdWx0IHRvICdmZCcgKi8KLQl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc2hvd19vdXQsICdcbicpICE9IEVPRikgewotCQl3cml0ZV9vcl9kaWUoZmQsICIjICIsIDIpOwotCQl3cml0ZV9vcl9kaWUoZmQsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwotCQl3cml0ZV9vcl9kaWUoZmQsICJcbiIsIDEpOwotCX0KKwlzdHJidWZfcmVsZWFzZSgmY2J1Zik7CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Ci0JaWYgKGZjbG9zZShzaG93X291dCkpCi0JCWRpZV9lcnJubyhfKCJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIiksCi0JCQkgIHNoYTFfdG9faGV4KG9iamVjdCkpOworCiAJaWYgKGZpbmlzaF9jb21tYW5kKCZzaG93KSkKIAkJZGllKF8oImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIpLAogCQkgICAgc2hhMV90b19oZXgob2JqZWN0KSk7CkBAIC0xNzAsNiArMTU4LDcgQEAKIAogCWlmIChtc2ctPnVzZV9lZGl0b3IgfHwgIW1zZy0+Z2l2ZW4pIHsKIAkJaW50IGZkOworCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCiAJCS8qIHdyaXRlIHRoZSB0ZW1wbGF0ZSBtZXNzYWdlIGJlZm9yZSBlZGl0aW5nOiAqLwogCQlwYXRoID0gZ2l0X3BhdGhkdXAoIk5PVEVTX0VESVRNU0ciKTsKQEAgLTE4MSwxMSArMTcwLDE2IEBACiAJCQl3cml0ZV9vcl9kaWUoZmQsIG1zZy0+YnVmLmJ1ZiwgbXNnLT5idWYubGVuKTsKIAkJZWxzZSBpZiAocHJldiAmJiAhYXBwZW5kX29ubHkpCiAJCQl3cml0ZV9ub3RlX2RhdGEoZmQsIHByZXYpOwotCQl3cml0ZV9vcl9kaWUoZmQsIG5vdGVfdGVtcGxhdGUsIHN0cmxlbihub3RlX3RlbXBsYXRlKSk7CisKKwkJc3RyYnVmX2FkZGNoKCZidWYsICdcbicpOworCQlzdHJidWZfYWRkX2NvbW1lbnRlZF9saW5lcygmYnVmLCBub3RlX3RlbXBsYXRlLCBzdHJsZW4obm90ZV90ZW1wbGF0ZSkpOworCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CisJCXdyaXRlX29yX2RpZShmZCwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAKIAkJd3JpdGVfY29tbWVudGVkX29iamVjdChmZCwgb2JqZWN0KTsKIAogCQljbG9zZShmZCk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCQlzdHJidWZfcmVzZXQoJihtc2ctPmJ1ZikpOwogCiAJCWlmIChsYXVuY2hfZWRpdG9yKHBhdGgsICYobXNnLT5idWYpLCBOVUxMKSkgewpAQCAtMjkxLDEzOSArMjg1LDEzIEBACiAJcmV0dXJuIHBhcnNlX3JldXNlX2FyZyhvcHQsIGFyZywgdW5zZXQpOwogfQogCi1zdGF0aWMgdm9pZCBjb21taXRfbm90ZXMoc3RydWN0IG5vdGVzX3RyZWUgKnQsIGNvbnN0IGNoYXIgKm1zZykKLXsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCXVuc2lnbmVkIGNoYXIgY29tbWl0X3NoYTFbMjBdOwotCi0JaWYgKCF0KQotCQl0ID0gJmRlZmF1bHRfbm90ZXNfdHJlZTsKLQlpZiAoIXQtPmluaXRpYWxpemVkIHx8ICF0LT5yZWYgfHwgISp0LT5yZWYpCi0JCWRpZShfKCJDYW5ub3QgY29tbWl0IHVuaW5pdGlhbGl6ZWQvdW5yZWZlcmVuY2VkIG5vdGVzIHRyZWUiKSk7Ci0JaWYgKCF0LT5kaXJ0eSkKLQkJcmV0dXJuOyAvKiBkb24ndCBoYXZlIHRvIGNvbW1pdCBhbiB1bmNoYW5nZWQgdHJlZSAqLwotCi0JLyogUHJlcGFyZSBjb21taXQgbWVzc2FnZSBhbmQgcmVmbG9nIG1lc3NhZ2UgKi8KLQlzdHJidWZfYWRkc3RyKCZidWYsIG1zZyk7Ci0JaWYgKGJ1Zi5idWZbYnVmLmxlbiAtIDFdICE9ICdcbicpCi0JCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsgLyogTWFrZSBzdXJlIG1zZyBlbmRzIHdpdGggbmV3bGluZSAqLwotCi0JY3JlYXRlX25vdGVzX2NvbW1pdCh0LCBOVUxMLCAmYnVmLCBjb21taXRfc2hhMSk7Ci0Jc3RyYnVmX2luc2VydCgmYnVmLCAwLCAibm90ZXM6ICIsIDcpOyAvKiBjb21taXQgbWVzc2FnZSBzdGFydHMgYXQgaW5kZXggNyAqLwotCXVwZGF0ZV9yZWYoYnVmLmJ1ZiwgdC0+cmVmLCBjb21taXRfc2hhMSwgTlVMTCwgMCwgRElFX09OX0VSUik7Ci0KLQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKLX0KLQotc3RhdGljIGNvbWJpbmVfbm90ZXNfZm4gcGFyc2VfY29tYmluZV9ub3Rlc19mbihjb25zdCBjaGFyICp2KQotewotCWlmICghc3RyY2FzZWNtcCh2LCAib3ZlcndyaXRlIikpCi0JCXJldHVybiBjb21iaW5lX25vdGVzX292ZXJ3cml0ZTsKLQllbHNlIGlmICghc3RyY2FzZWNtcCh2LCAiaWdub3JlIikpCi0JCXJldHVybiBjb21iaW5lX25vdGVzX2lnbm9yZTsKLQllbHNlIGlmICghc3RyY2FzZWNtcCh2LCAiY29uY2F0ZW5hdGUiKSkKLQkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfY29uY2F0ZW5hdGU7Ci0JZWxzZSBpZiAoIXN0cmNhc2VjbXAodiwgImNhdF9zb3J0X3VuaXEiKSkKLQkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfY2F0X3NvcnRfdW5pcTsKLQllbHNlCi0JCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgaW50IG5vdGVzX3Jld3JpdGVfY29uZmlnKGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYsIHZvaWQgKmNiKQotewotCXN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYyA9IGNiOwotCWlmICghcHJlZml4Y21wKGssICJub3Rlcy5yZXdyaXRlLiIpICYmICFzdHJjbXAoaysxNCwgYy0+Y21kKSkgewotCQljLT5lbmFibGVkID0gZ2l0X2NvbmZpZ19ib29sKGssIHYpOwotCQlyZXR1cm4gMDsKLQl9IGVsc2UgaWYgKCFjLT5tb2RlX2Zyb21fZW52ICYmICFzdHJjbXAoaywgIm5vdGVzLnJld3JpdGVtb2RlIikpIHsKLQkJaWYgKCF2KQotCQkJY29uZmlnX2Vycm9yX25vbmJvb2woayk7Ci0JCWMtPmNvbWJpbmUgPSBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKHYpOwotCQlpZiAoIWMtPmNvbWJpbmUpIHsKLQkJCWVycm9yKF8oIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIpLCB2KTsKLQkJCXJldHVybiAxOwotCQl9Ci0JCXJldHVybiAwOwotCX0gZWxzZSBpZiAoIWMtPnJlZnNfZnJvbV9lbnYgJiYgIXN0cmNtcChrLCAibm90ZXMucmV3cml0ZXJlZiIpKSB7Ci0JCS8qIG5vdGUgdGhhdCBhIHJlZnMvIHByZWZpeCBpcyBpbXBsaWVkIGluIHRoZQotCQkgKiB1bmRlcmx5aW5nIGZvcl9lYWNoX2dsb2JfcmVmICovCi0JCWlmICghcHJlZml4Y21wKHYsICJyZWZzL25vdGVzLyIpKQotCQkJc3RyaW5nX2xpc3RfYWRkX3JlZnNfYnlfZ2xvYihjLT5yZWZzLCB2KTsKLQkJZWxzZQotCQkJd2FybmluZyhfKCJSZWZ1c2luZyB0byByZXdyaXRlIG5vdGVzIGluICVzIgotCQkJCSIgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIiksIHYpOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotCi1zdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmluaXRfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjb25zdCBjaGFyICpjbWQpCi17Ci0Jc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnKSk7Ci0JY29uc3QgY2hhciAqcmV3cml0ZV9tb2RlX2VudiA9IGdldGVudihHSVRfTk9URVNfUkVXUklURV9NT0RFX0VOVklST05NRU5UKTsKLQljb25zdCBjaGFyICpyZXdyaXRlX3JlZnNfZW52ID0gZ2V0ZW52KEdJVF9OT1RFU19SRVdSSVRFX1JFRl9FTlZJUk9OTUVOVCk7Ci0JYy0+Y21kID0gY21kOwotCWMtPmVuYWJsZWQgPSAxOwotCWMtPmNvbWJpbmUgPSBjb21iaW5lX25vdGVzX2NvbmNhdGVuYXRlOwotCWMtPnJlZnMgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKLQljLT5yZWZzLT5zdHJkdXBfc3RyaW5ncyA9IDE7Ci0JYy0+cmVmc19mcm9tX2VudiA9IDA7Ci0JYy0+bW9kZV9mcm9tX2VudiA9IDA7Ci0JaWYgKHJld3JpdGVfbW9kZV9lbnYpIHsKLQkJYy0+bW9kZV9mcm9tX2VudiA9IDE7Ci0JCWMtPmNvbWJpbmUgPSBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKHJld3JpdGVfbW9kZV9lbnYpOwotCQlpZiAoIWMtPmNvbWJpbmUpCi0JCQkvKiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQotCQkJICAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlICovCi0JCQllcnJvcihfKCJCYWQgJXMgdmFsdWU6ICclcyciKSwgR0lUX05PVEVTX1JFV1JJVEVfTU9ERV9FTlZJUk9OTUVOVCwKLQkJCQkJcmV3cml0ZV9tb2RlX2Vudik7Ci0JfQotCWlmIChyZXdyaXRlX3JlZnNfZW52KSB7Ci0JCWMtPnJlZnNfZnJvbV9lbnYgPSAxOwotCQlzdHJpbmdfbGlzdF9hZGRfcmVmc19mcm9tX2NvbG9uX3NlcChjLT5yZWZzLCByZXdyaXRlX3JlZnNfZW52KTsKLQl9Ci0JZ2l0X2NvbmZpZyhub3Rlc19yZXdyaXRlX2NvbmZpZywgYyk7Ci0JaWYgKCFjLT5lbmFibGVkIHx8ICFjLT5yZWZzLT5ucikgewotCQlzdHJpbmdfbGlzdF9jbGVhcihjLT5yZWZzLCAwKTsKLQkJZnJlZShjLT5yZWZzKTsKLQkJZnJlZShjKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCWMtPnRyZWVzID0gbG9hZF9ub3Rlc190cmVlcyhjLT5yZWZzKTsKLQlzdHJpbmdfbGlzdF9jbGVhcihjLT5yZWZzLCAwKTsKLQlmcmVlKGMtPnJlZnMpOwotCXJldHVybiBjOwotfQotCi1pbnQgY29weV9ub3RlX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYywKLQkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbV9vYmosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRvX29iaikKLXsKLQlpbnQgcmV0ID0gMDsKLQlpbnQgaTsKLQlmb3IgKGkgPSAwOyBjLT50cmVlc1tpXTsgaSsrKQotCQlyZXQgPSBjb3B5X25vdGUoYy0+dHJlZXNbaV0sIGZyb21fb2JqLCB0b19vYmosIDEsIGMtPmNvbWJpbmUpIHx8IHJldDsKLQlyZXR1cm4gcmV0OwotfQotCi12b2lkIGZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYykKLXsKLQlpbnQgaTsKLQlmb3IgKGkgPSAwOyBjLT50cmVlc1tpXTsgaSsrKSB7Ci0JCWNvbW1pdF9ub3RlcyhjLT50cmVlc1tpXSwgIk5vdGVzIGFkZGVkIGJ5ICdnaXQgbm90ZXMgY29weSciKTsKLQkJZnJlZV9ub3RlcyhjLT50cmVlc1tpXSk7Ci0JfQotCWZyZWUoYy0+dHJlZXMpOwotCWZyZWUoYyk7Ci19Ci0KIHN0YXRpYyBpbnQgbm90ZXNfY29weV9mcm9tX3N0ZGluKGludCBmb3JjZSwgY29uc3QgY2hhciAqcmV3cml0ZV9jbWQpCiB7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMgPSBOVUxMOwogCXN0cnVjdCBub3Rlc190cmVlICp0ID0gTlVMTDsKIAlpbnQgcmV0ID0gMDsKKwljb25zdCBjaGFyICptc2cgPSAiTm90ZXMgYWRkZWQgYnkgJ2dpdCBub3RlcyBjb3B5JyI7CiAKIAlpZiAocmV3cml0ZV9jbWQpIHsKIAkJYyA9IGluaXRfY29weV9ub3Rlc19mb3JfcmV3cml0ZShyZXdyaXRlX2NtZCk7CkBAIC00NjUsMTAgKzMzMywxMCBAQAogCX0KIAogCWlmICghcmV3cml0ZV9jbWQpIHsKLQkJY29tbWl0X25vdGVzKHQsICJOb3RlcyBhZGRlZCBieSAnZ2l0IG5vdGVzIGNvcHknIik7CisJCWNvbW1pdF9ub3Rlcyh0LCBtc2cpOwogCQlmcmVlX25vdGVzKHQpOwogCX0gZWxzZSB7Ci0JCWZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGMpOworCQlmaW5pc2hfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjLCBtc2cpOwogCX0KIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9wYWNrLXJlZnMuYyBiL2J1aWx0aW4vcGFjay1yZWZzLmMKaW5kZXggYjVhMGY4OC4uYjIwYjFlYyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9wYWNrLXJlZnMuYworKysgYi9idWlsdGluL3BhY2stcmVmcy5jCkBAIC0xLDYgKzEsNiBAQAogI2luY2x1ZGUgImJ1aWx0aW4uaCIKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCi0jaW5jbHVkZSAicGFjay1yZWZzLmgiCisjaW5jbHVkZSAicmVmcy5oIgogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IHBhY2tfcmVmc191c2FnZVtdID0gewogCU5fKCJnaXQgcGFjay1yZWZzIFtvcHRpb25zXSIpLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9wcnVuZS1wYWNrZWQuYyBiL2J1aWx0aW4vcHJ1bmUtcGFja2VkLmMKaW5kZXggODMzODJjMS4uZmE2Y2U0MiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9wcnVuZS1wYWNrZWQuYworKysgYi9idWlsdGluL3BydW5lLXBhY2tlZC5jCkBAIC04LDkgKzgsNiBAQAogCU5VTEwKIH07CiAKLSNkZWZpbmUgRFJZX1JVTiAwMQotI2RlZmluZSBWRVJCT1NFIDAyCi0KIHN0YXRpYyBzdHJ1Y3QgcHJvZ3Jlc3MgKnByb2dyZXNzOwogCiBzdGF0aWMgdm9pZCBwcnVuZV9kaXIoaW50IGksIERJUiAqZGlyLCBjaGFyICpwYXRobmFtZSwgaW50IGxlbiwgaW50IG9wdHMpCkBAIC0yOSw3ICsyNiw3IEBACiAJCWlmICghaGFzX3NoYTFfcGFjayhzaGExKSkKIAkJCWNvbnRpbnVlOwogCQltZW1jcHkocGF0aG5hbWUgKyBsZW4sIGRlLT5kX25hbWUsIDM4KTsKLQkJaWYgKG9wdHMgJiBEUllfUlVOKQorCQlpZiAob3B0cyAmIFBSVU5FX1BBQ0tFRF9EUllfUlVOKQogCQkJcHJpbnRmKCJybSAtZiAlc1xuIiwgcGF0aG5hbWUpOwogCQllbHNlCiAJCQl1bmxpbmtfb3Jfd2FybihwYXRobmFtZSk7CkBAIC00NCw3ICs0MSw3IEBACiAJY29uc3QgY2hhciAqZGlyID0gZ2V0X29iamVjdF9kaXJlY3RvcnkoKTsKIAlpbnQgbGVuID0gc3RybGVuKGRpcik7CiAKLQlpZiAob3B0cyA9PSBWRVJCT1NFKQorCWlmIChvcHRzICYgUFJVTkVfUEFDS0VEX1ZFUkJPU0UpCiAJCXByb2dyZXNzID0gc3RhcnRfcHJvZ3Jlc3NfZGVsYXkoIlJlbW92aW5nIGR1cGxpY2F0ZSBvYmplY3RzIiwKIAkJCTI1NiwgOTUsIDIpOwogCkBAIC03MSwxMCArNjgsMTIgQEAKIAogaW50IGNtZF9wcnVuZV9wYWNrZWQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7Ci0JaW50IG9wdHMgPSBpc2F0dHkoMikgPyBWRVJCT1NFIDogMDsKKwlpbnQgb3B0cyA9IGlzYXR0eSgyKSA/IFBSVU5FX1BBQ0tFRF9WRVJCT1NFIDogMDsKIAljb25zdCBzdHJ1Y3Qgb3B0aW9uIHBydW5lX3BhY2tlZF9vcHRpb25zW10gPSB7Ci0JCU9QVF9CSVQoJ24nLCAiZHJ5LXJ1biIsICZvcHRzLCBOXygiZHJ5IHJ1biIpLCBEUllfUlVOKSwKLQkJT1BUX05FR0JJVCgncScsICJxdWlldCIsICZvcHRzLCBOXygiYmUgcXVpZXQiKSwgVkVSQk9TRSksCisJCU9QVF9CSVQoJ24nLCAiZHJ5LXJ1biIsICZvcHRzLCBOXygiZHJ5IHJ1biIpLAorCQkJUFJVTkVfUEFDS0VEX0RSWV9SVU4pLAorCQlPUFRfTkVHQklUKCdxJywgInF1aWV0IiwgJm9wdHMsIE5fKCJiZSBxdWlldCIpLAorCQkJICAgUFJVTkVfUEFDS0VEX1ZFUkJPU0UpLAogCQlPUFRfRU5EKCkKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL3BydW5lLmMgYi9idWlsdGluL3BydW5lLmMKaW5kZXggODU4NDNkNC4uNjM2NjkxNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9wcnVuZS5jCisrKyBiL2J1aWx0aW4vcHJ1bmUuYwpAQCAtMTMyLDggKzEzMiw4IEBACiAJCU9QVF9fRFJZX1JVTigmc2hvd19vbmx5LCBOXygiZG8gbm90IHJlbW92ZSwgc2hvdyBvbmx5IikpLAogCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJyZXBvcnQgcHJ1bmVkIG9iamVjdHMiKSksCiAJCU9QVF9CT09MKDAsICJwcm9ncmVzcyIsICZzaG93X3Byb2dyZXNzLCBOXygic2hvdyBwcm9ncmVzcyIpKSwKLQkJT1BUX0RBVEUoMCwgImV4cGlyZSIsICZleHBpcmUsCi0JCQkgTl8oImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IikpLAorCQlPUFRfRVhQSVJZX0RBVEUoMCwgImV4cGlyZSIsICZleHBpcmUsCisJCQkJTl8oImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IikpLAogCQlPUFRfRU5EKCkKIAl9OwogCWNoYXIgKnM7CkBAIC0xNjUsNyArMTY1LDcgQEAKIAlzdG9wX3Byb2dyZXNzKCZwcm9ncmVzcyk7CiAJcHJ1bmVfb2JqZWN0X2RpcihnZXRfb2JqZWN0X2RpcmVjdG9yeSgpKTsKIAotCXBydW5lX3BhY2tlZF9vYmplY3RzKHNob3dfb25seSk7CisJcHJ1bmVfcGFja2VkX29iamVjdHMoc2hvd19vbmx5ID8gUFJVTkVfUEFDS0VEX0RSWV9SVU4gOiAwKTsKIAlyZW1vdmVfdGVtcG9yYXJ5X2ZpbGVzKGdldF9vYmplY3RfZGlyZWN0b3J5KCkpOwogCXMgPSBta3BhdGhkdXAoIiVzL3BhY2siLCBnZXRfb2JqZWN0X2RpcmVjdG9yeSgpKTsKIAlyZW1vdmVfdGVtcG9yYXJ5X2ZpbGVzKHMpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9wdXNoLmMgYi9idWlsdGluL3B1c2guYwppbmRleCBkYjliYTMwLi4yZDg0ZDEwIDEwMDY0NAotLS0gYS9idWlsdGluL3B1c2guYworKysgYi9idWlsdGluL3B1c2guYwpAQCAtMTEzLDE3ICsxMTMsMTkgQEAKIAkgICAgcmVtb3RlLT5uYW1lLCBicmFuY2gtPm5hbWUsIGFkdmljZV9tYXliZSk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyIG1lc3NhZ2VfZGV0YWNoZWRfaGVhZF9kaWVbXSA9CisJTl8oIllvdSBhcmUgbm90IGN1cnJlbnRseSBvbiBhIGJyYW5jaC5cbiIKKwkgICAiVG8gcHVzaCB0aGUgaGlzdG9yeSBsZWFkaW5nIHRvIHRoZSBjdXJyZW50IChkZXRhY2hlZCBIRUFEKVxuIgorCSAgICJzdGF0ZSBub3csIHVzZVxuIgorCSAgICJcbiIKKwkgICAiICAgIGdpdCBwdXNoICVzIEhFQUQ6PG5hbWUtb2YtcmVtb3RlLWJyYW5jaD5cbiIpOworCiBzdGF0aWMgdm9pZCBzZXR1cF9wdXNoX3Vwc3RyZWFtKHN0cnVjdCByZW1vdGUgKnJlbW90ZSwgaW50IHNpbXBsZSkKIHsKIAlzdHJ1Y3Qgc3RyYnVmIHJlZnNwZWMgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3QgYnJhbmNoICpicmFuY2ggPSBicmFuY2hfZ2V0KE5VTEwpOwogCWlmICghYnJhbmNoKQotCQlkaWUoXygiWW91IGFyZSBub3QgY3VycmVudGx5IG9uIGEgYnJhbmNoLlxuIgotCQkgICAgIlRvIHB1c2ggdGhlIGhpc3RvcnkgbGVhZGluZyB0byB0aGUgY3VycmVudCAoZGV0YWNoZWQgSEVBRClcbiIKLQkJICAgICJzdGF0ZSBub3csIHVzZVxuIgotCQkgICAgIlxuIgotCQkgICAgIiAgICBnaXQgcHVzaCAlcyBIRUFEOjxuYW1lLW9mLXJlbW90ZS1icmFuY2g+XG4iKSwKLQkJICAgIHJlbW90ZS0+bmFtZSk7CisJCWRpZShfKG1lc3NhZ2VfZGV0YWNoZWRfaGVhZF9kaWUpLCByZW1vdGUtPm5hbWUpOwogCWlmICghYnJhbmNoLT5tZXJnZV9uciB8fCAhYnJhbmNoLT5tZXJnZSB8fCAhYnJhbmNoLT5yZW1vdGVfbmFtZSkKIAkJZGllKF8oIlRoZSBjdXJyZW50IGJyYW5jaCAlcyBoYXMgbm8gdXBzdHJlYW0gYnJhbmNoLlxuIgogCQkgICAgIlRvIHB1c2ggdGhlIGN1cnJlbnQgYnJhbmNoIGFuZCBzZXQgdGhlIHJlbW90ZSBhcyB1cHN0cmVhbSwgdXNlXG4iCkBAIC0xNzMsNiArMTc1LDggQEAKIAogc3RhdGljIHZvaWQgc2V0dXBfZGVmYXVsdF9wdXNoX3JlZnNwZWNzKHN0cnVjdCByZW1vdGUgKnJlbW90ZSkKIHsKKwlzdHJ1Y3QgYnJhbmNoICpicmFuY2g7CisKIAlzd2l0Y2ggKHB1c2hfZGVmYXVsdCkgewogCWRlZmF1bHQ6CiAJY2FzZSBQVVNIX0RFRkFVTFRfVU5TUEVDSUZJRUQ6CkBAIC0xOTIsNyArMTk2LDEwIEBACiAJCWJyZWFrOwogCiAJY2FzZSBQVVNIX0RFRkFVTFRfQ1VSUkVOVDoKLQkJYWRkX3JlZnNwZWMoIkhFQUQiKTsKKwkJYnJhbmNoID0gYnJhbmNoX2dldChOVUxMKTsKKwkJaWYgKCFicmFuY2gpCisJCQlkaWUoXyhtZXNzYWdlX2RldGFjaGVkX2hlYWRfZGllKSwgcmVtb3RlLT5uYW1lKTsKKwkJYWRkX3JlZnNwZWMoYnJhbmNoLT5uYW1lKTsKIAkJYnJlYWs7CiAKIAljYXNlIFBVU0hfREVGQVVMVF9OT1RISU5HOgpAQCAtMjIwLDMxICsyMjcsNjcgQEAKIAkgICAiKGUuZy4gJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAJICAgIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIik7CiAKK3N0YXRpYyBjb25zdCBjaGFyIG1lc3NhZ2VfYWR2aWNlX3JlZl9mZXRjaF9maXJzdFtdID0KKwlOXygiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHJlbW90ZSBjb250YWlucyB3b3JrIHRoYXQgeW91IGRvXG4iCisJICAgIm5vdCBoYXZlIGxvY2FsbHkuIFRoaXMgaXMgdXN1YWxseSBjYXVzZWQgYnkgYW5vdGhlciByZXBvc2l0b3J5IHB1c2hpbmdcbiIKKwkgICAidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgbWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuLFxuIgorCSAgICInZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKwkgICAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iKTsKKworc3RhdGljIGNvbnN0IGNoYXIgbWVzc2FnZV9hZHZpY2VfcmVmX2FscmVhZHlfZXhpc3RzW10gPQorCU5fKCJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIik7CisKK3N0YXRpYyBjb25zdCBjaGFyIG1lc3NhZ2VfYWR2aWNlX3JlZl9uZWVkc19mb3JjZVtdID0KKwlOXygiWW91IGNhbm5vdCB1cGRhdGUgYSByZW1vdGUgcmVmIHRoYXQgcG9pbnRzIGF0IGEgbm9uLWNvbW1pdCBvYmplY3QsXG4iCisJICAgIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorCSAgICJ3aXRob3V0IHVzaW5nIHRoZSAnLS1mb3JjZScgb3B0aW9uLlxuIik7CisKIHN0YXRpYyB2b2lkIGFkdmlzZV9wdWxsX2JlZm9yZV9wdXNoKHZvaWQpCiB7Ci0JaWYgKCFhZHZpY2VfcHVzaF9ub25fZmZfY3VycmVudCB8fCAhYWR2aWNlX3B1c2hfbm9uZmFzdGZvcndhcmQpCisJaWYgKCFhZHZpY2VfcHVzaF9ub25fZmZfY3VycmVudCB8fCAhYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkKQogCQlyZXR1cm47CiAJYWR2aXNlKF8obWVzc2FnZV9hZHZpY2VfcHVsbF9iZWZvcmVfcHVzaCkpOwogfQogCiBzdGF0aWMgdm9pZCBhZHZpc2VfdXNlX3Vwc3RyZWFtKHZvaWQpCiB7Ci0JaWYgKCFhZHZpY2VfcHVzaF9ub25fZmZfZGVmYXVsdCB8fCAhYWR2aWNlX3B1c2hfbm9uZmFzdGZvcndhcmQpCisJaWYgKCFhZHZpY2VfcHVzaF9ub25fZmZfZGVmYXVsdCB8fCAhYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkKQogCQlyZXR1cm47CiAJYWR2aXNlKF8obWVzc2FnZV9hZHZpY2VfdXNlX3Vwc3RyZWFtKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkdmlzZV9jaGVja291dF9wdWxsX3B1c2godm9pZCkKIHsKLQlpZiAoIWFkdmljZV9wdXNoX25vbl9mZl9tYXRjaGluZyB8fCAhYWR2aWNlX3B1c2hfbm9uZmFzdGZvcndhcmQpCisJaWYgKCFhZHZpY2VfcHVzaF9ub25fZmZfbWF0Y2hpbmcgfHwgIWFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCkKIAkJcmV0dXJuOwogCWFkdmlzZShfKG1lc3NhZ2VfYWR2aWNlX2NoZWNrb3V0X3B1bGxfcHVzaCkpOwogfQogCitzdGF0aWMgdm9pZCBhZHZpc2VfcmVmX2FscmVhZHlfZXhpc3RzKHZvaWQpCit7CisJaWYgKCFhZHZpY2VfcHVzaF9hbHJlYWR5X2V4aXN0cyB8fCAhYWR2aWNlX3B1c2hfdXBkYXRlX3JlamVjdGVkKQorCQlyZXR1cm47CisJYWR2aXNlKF8obWVzc2FnZV9hZHZpY2VfcmVmX2FscmVhZHlfZXhpc3RzKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFkdmlzZV9yZWZfZmV0Y2hfZmlyc3Qodm9pZCkKK3sKKwlpZiAoIWFkdmljZV9wdXNoX2ZldGNoX2ZpcnN0IHx8ICFhZHZpY2VfcHVzaF91cGRhdGVfcmVqZWN0ZWQpCisJCXJldHVybjsKKwlhZHZpc2UoXyhtZXNzYWdlX2FkdmljZV9yZWZfZmV0Y2hfZmlyc3QpKTsKK30KKworc3RhdGljIHZvaWQgYWR2aXNlX3JlZl9uZWVkc19mb3JjZSh2b2lkKQoreworCWlmICghYWR2aWNlX3B1c2hfbmVlZHNfZm9yY2UgfHwgIWFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCkKKwkJcmV0dXJuOworCWFkdmlzZShfKG1lc3NhZ2VfYWR2aWNlX3JlZl9uZWVkc19mb3JjZSkpOworfQorCiBzdGF0aWMgaW50IHB1c2hfd2l0aF9vcHRpb25zKHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCwgaW50IGZsYWdzKQogewogCWludCBlcnI7Ci0JaW50IG5vbmZhc3Rmb3J3YXJkOworCXVuc2lnbmVkIGludCByZWplY3RfcmVhc29uczsKIAogCXRyYW5zcG9ydF9zZXRfdmVyYm9zaXR5KHRyYW5zcG9ydCwgdmVyYm9zaXR5LCBwcm9ncmVzcyk7CiAKQEAgLTI1Nyw3ICszMDAsNyBAQAogCWlmICh2ZXJib3NpdHkgPiAwKQogCQlmcHJpbnRmKHN0ZGVyciwgXygiUHVzaGluZyB0byAlc1xuIiksIHRyYW5zcG9ydC0+dXJsKTsKIAllcnIgPSB0cmFuc3BvcnRfcHVzaCh0cmFuc3BvcnQsIHJlZnNwZWNfbnIsIHJlZnNwZWMsIGZsYWdzLAotCQkJICAgICAmbm9uZmFzdGZvcndhcmQpOworCQkJICAgICAmcmVqZWN0X3JlYXNvbnMpOwogCWlmIChlcnIgIT0gMCkKIAkJZXJyb3IoXygiZmFpbGVkIHRvIHB1c2ggc29tZSByZWZzIHRvICclcyciKSwgdHJhbnNwb3J0LT51cmwpOwogCkBAIC0yNjUsMTggKzMwOCwxOSBAQAogCWlmICghZXJyKQogCQlyZXR1cm4gMDsKIAotCXN3aXRjaCAobm9uZmFzdGZvcndhcmQpIHsKLQlkZWZhdWx0OgotCQlicmVhazsKLQljYXNlIE5PTl9GRl9IRUFEOgorCWlmIChyZWplY3RfcmVhc29ucyAmIFJFSkVDVF9OT05fRkZfSEVBRCkgewogCQlhZHZpc2VfcHVsbF9iZWZvcmVfcHVzaCgpOwotCQlicmVhazsKLQljYXNlIE5PTl9GRl9PVEhFUjoKKwl9IGVsc2UgaWYgKHJlamVjdF9yZWFzb25zICYgUkVKRUNUX05PTl9GRl9PVEhFUikgewogCQlpZiAoZGVmYXVsdF9tYXRjaGluZ191c2VkKQogCQkJYWR2aXNlX3VzZV91cHN0cmVhbSgpOwogCQllbHNlCiAJCQlhZHZpc2VfY2hlY2tvdXRfcHVsbF9wdXNoKCk7Ci0JCWJyZWFrOworCX0gZWxzZSBpZiAocmVqZWN0X3JlYXNvbnMgJiBSRUpFQ1RfQUxSRUFEWV9FWElTVFMpIHsKKwkJYWR2aXNlX3JlZl9hbHJlYWR5X2V4aXN0cygpOworCX0gZWxzZSBpZiAocmVqZWN0X3JlYXNvbnMgJiBSRUpFQ1RfRkVUQ0hfRklSU1QpIHsKKwkJYWR2aXNlX3JlZl9mZXRjaF9maXJzdCgpOworCX0gZWxzZSBpZiAocmVqZWN0X3JlYXNvbnMgJiBSRUpFQ1RfTkVFRFNfRk9SQ0UpIHsKKwkJYWR2aXNlX3JlZl9uZWVkc19mb3JjZSgpOwogCX0KIAogCXJldHVybiAxOwpAQCAtMjg1LDcgKzMyOSw3IEBACiBzdGF0aWMgaW50IGRvX3B1c2goY29uc3QgY2hhciAqcmVwbywgaW50IGZsYWdzKQogewogCWludCBpLCBlcnJzOwotCXN0cnVjdCByZW1vdGUgKnJlbW90ZSA9IHJlbW90ZV9nZXQocmVwbyk7CisJc3RydWN0IHJlbW90ZSAqcmVtb3RlID0gcHVzaHJlbW90ZV9nZXQocmVwbyk7CiAJY29uc3QgY2hhciAqKnVybDsKIAlpbnQgdXJsX25yOwogCkBAIC0zOTksNiArNDQzLDkgQEAKIAkJT1BUX0JPT0woMCwgInByb2dyZXNzIiwgJnByb2dyZXNzLCBOXygiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIikpLAogCQlPUFRfQklUKDAsICJwcnVuZSIsICZmbGFncywgTl8oInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIiksCiAJCQlUUkFOU1BPUlRfUFVTSF9QUlVORSksCisJCU9QVF9CSVQoMCwgIm5vLXZlcmlmeSIsICZmbGFncywgTl8oImJ5cGFzcyBwcmUtcHVzaCBob29rIiksIFRSQU5TUE9SVF9QVVNIX05PX0hPT0spLAorCQlPUFRfQklUKDAsICJmb2xsb3ctdGFncyIsICZmbGFncywgTl8oInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIpLAorCQkJVFJBTlNQT1JUX1BVU0hfRk9MTE9XX1RBR1MpLAogCQlPUFRfRU5EKCkKIAl9OwogCmRpZmYgLS1naXQgYS9idWlsdGluL3JlYWQtdHJlZS5jIGIvYnVpbHRpbi9yZWFkLXRyZWUuYwppbmRleCAwNDJhYzFiLi4wZjVkN2ZlIDEwMDY0NAotLS0gYS9idWlsdGluL3JlYWQtdHJlZS5jCisrKyBiL2J1aWx0aW4vcmVhZC10cmVlLmMKQEAgLTY2LDcgKzY2LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZGVidWdfc3RhZ2UoY29uc3QgY2hhciAqbGFiZWwsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCitzdGF0aWMgdm9pZCBkZWJ1Z19zdGFnZShjb25zdCBjaGFyICpsYWJlbCwgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKIAkJCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlwcmludGYoIiVzICIsIGxhYmVsKTsKQEAgLTgwLDcgKzgwLDggQEAKIAkJICAgICAgIHNoYTFfdG9faGV4KGNlLT5zaGExKSk7CiB9CiAKLXN0YXRpYyBpbnQgZGVidWdfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3RhZ2VzLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IGRlYnVnX21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzdGFnZXMsCisJCSAgICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJaW50IGk7CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmVjZWl2ZS1wYWNrLmMgYi9idWlsdGluL3JlY2VpdmUtcGFjay5jCmluZGV4IGZmNzgxZmUuLmUzZWI1ZmMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmVjZWl2ZS1wYWNrLmMKKysrIGIvYnVpbHRpbi9yZWNlaXZlLXBhY2suYwpAQCAtNTksNiArNTksMTEgQEAKIAogc3RhdGljIGludCByZWNlaXZlX3BhY2tfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogeworCWludCBzdGF0dXMgPSBwYXJzZV9oaWRlX3JlZnNfY29uZmlnKHZhciwgdmFsdWUsICJyZWNlaXZlIik7CisKKwlpZiAoc3RhdHVzKQorCQlyZXR1cm4gc3RhdHVzOworCiAJaWYgKHN0cmNtcCh2YXIsICJyZWNlaXZlLmRlbnlkZWxldGVzIikgPT0gMCkgewogCQlkZW55X2RlbGV0ZXMgPSBnaXRfY29uZmlnX2Jvb2wodmFyLCB2YWx1ZSk7CiAJCXJldHVybiAwOwpAQCAtMTE5LDYgKzEyNCw5IEBACiAKIHN0YXRpYyB2b2lkIHNob3dfcmVmKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CisJaWYgKHJlZl9pc19oaWRkZW4ocGF0aCkpCisJCXJldHVybjsKKwogCWlmIChzZW50X2NhcGFiaWxpdGllcykKIAkJcGFja2V0X3dyaXRlKDEsICIlcyAlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIHBhdGgpOwogCWVsc2UKQEAgLTE4Miw5ICsxOTAsNiBAQAogCWNoYXIgcmVmX25hbWVbRkxFWF9BUlJBWV07IC8qIG1vcmUgKi8KIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyIHByZV9yZWNlaXZlX2hvb2tbXSA9ICJob29rcy9wcmUtcmVjZWl2ZSI7Ci1zdGF0aWMgY29uc3QgY2hhciBwb3N0X3JlY2VpdmVfaG9va1tdID0gImhvb2tzL3Bvc3QtcmVjZWl2ZSI7Ci0KIHN0YXRpYyB2b2lkIHJwX2Vycm9yKGNvbnN0IGNoYXIgKmVyciwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKTsKIHN0YXRpYyB2b2lkIHJwX3dhcm5pbmcoY29uc3QgY2hhciAqZXJyLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogCkBAIC0yNDIsMTAgKzI0NywxMCBAQAogCWNvbnN0IGNoYXIgKmFyZ3ZbMl07CiAJaW50IGNvZGU7CiAKLQlpZiAoYWNjZXNzKGhvb2tfbmFtZSwgWF9PSykgPCAwKQorCWFyZ3ZbMF0gPSBmaW5kX2hvb2soaG9va19uYW1lKTsKKwlpZiAoIWFyZ3ZbMF0pCiAJCXJldHVybiAwOwogCi0JYXJndlswXSA9IGhvb2tfbmFtZTsKIAlhcmd2WzFdID0gTlVMTDsKIAogCW1lbXNldCgmcHJvYywgMCwgc2l6ZW9mKHByb2MpKTsKQEAgLTMzMSwxNSArMzM2LDE0IEBACiAKIHN0YXRpYyBpbnQgcnVuX3VwZGF0ZV9ob29rKHN0cnVjdCBjb21tYW5kICpjbWQpCiB7Ci0Jc3RhdGljIGNvbnN0IGNoYXIgdXBkYXRlX2hvb2tbXSA9ICJob29rcy91cGRhdGUiOwogCWNvbnN0IGNoYXIgKmFyZ3ZbNV07CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgcHJvYzsKIAlpbnQgY29kZTsKIAotCWlmIChhY2Nlc3ModXBkYXRlX2hvb2ssIFhfT0spIDwgMCkKKwlhcmd2WzBdID0gZmluZF9ob29rKCJ1cGRhdGUiKTsKKwlpZiAoIWFyZ3ZbMF0pCiAJCXJldHVybiAwOwogCi0JYXJndlswXSA9IHVwZGF0ZV9ob29rOwogCWFyZ3ZbMV0gPSBjbWQtPnJlZl9uYW1lOwogCWFyZ3ZbMl0gPSBzaGExX3RvX2hleChjbWQtPm9sZF9zaGExKTsKIAlhcmd2WzNdID0gc2hhMV90b19oZXgoY21kLT5uZXdfc2hhMSk7CkBAIC01MzIsMjQgKzUzNiwyNSBAQAogCX0KIH0KIAotc3RhdGljIGNoYXIgdXBkYXRlX3Bvc3RfaG9va1tdID0gImhvb2tzL3Bvc3QtdXBkYXRlIjsKLQogc3RhdGljIHZvaWQgcnVuX3VwZGF0ZV9wb3N0X2hvb2soc3RydWN0IGNvbW1hbmQgKmNvbW1hbmRzKQogewogCXN0cnVjdCBjb21tYW5kICpjbWQ7CiAJaW50IGFyZ2M7CiAJY29uc3QgY2hhciAqKmFyZ3Y7CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgcHJvYzsKKwljaGFyICpob29rOwogCisJaG9vayA9IGZpbmRfaG9vaygicG9zdC11cGRhdGUiKTsKIAlmb3IgKGFyZ2MgPSAwLCBjbWQgPSBjb21tYW5kczsgY21kOyBjbWQgPSBjbWQtPm5leHQpIHsKIAkJaWYgKGNtZC0+ZXJyb3Jfc3RyaW5nIHx8IGNtZC0+ZGlkX25vdF9leGlzdCkKIAkJCWNvbnRpbnVlOwogCQlhcmdjKys7CiAJfQotCWlmICghYXJnYyB8fCBhY2Nlc3ModXBkYXRlX3Bvc3RfaG9vaywgWF9PSykgPCAwKQorCWlmICghYXJnYyB8fCAhaG9vaykKIAkJcmV0dXJuOworCiAJYXJndiA9IHhtYWxsb2Moc2l6ZW9mKCphcmd2KSAqICgyICsgYXJnYykpOwotCWFyZ3ZbMF0gPSB1cGRhdGVfcG9zdF9ob29rOworCWFyZ3ZbMF0gPSBob29rOwogCiAJZm9yIChhcmdjID0gMSwgY21kID0gY29tbWFuZHM7IGNtZDsgY21kID0gY21kLT5uZXh0KSB7CiAJCWNoYXIgKnA7CkBAIC02ODgsNiArNjkzLDIwIEBACiAJcmV0dXJuIC0xOyAvKiBlbmQgb2YgbGlzdCAqLwogfQogCitzdGF0aWMgdm9pZCByZWplY3RfdXBkYXRlc190b19oaWRkZW4oc3RydWN0IGNvbW1hbmQgKmNvbW1hbmRzKQoreworCXN0cnVjdCBjb21tYW5kICpjbWQ7CisKKwlmb3IgKGNtZCA9IGNvbW1hbmRzOyBjbWQ7IGNtZCA9IGNtZC0+bmV4dCkgeworCQlpZiAoY21kLT5lcnJvcl9zdHJpbmcgfHwgIXJlZl9pc19oaWRkZW4oY21kLT5yZWZfbmFtZSkpCisJCQljb250aW51ZTsKKwkJaWYgKGlzX251bGxfc2hhMShjbWQtPm5ld19zaGExKSkKKwkJCWNtZC0+ZXJyb3Jfc3RyaW5nID0gImRlbnkgZGVsZXRpbmcgYSBoaWRkZW4gcmVmIjsKKwkJZWxzZQorCQkJY21kLT5lcnJvcl9zdHJpbmcgPSAiZGVueSB1cGRhdGluZyBhIGhpZGRlbiByZWYiOworCX0KK30KKwogc3RhdGljIHZvaWQgZXhlY3V0ZV9jb21tYW5kcyhzdHJ1Y3QgY29tbWFuZCAqY29tbWFuZHMsIGNvbnN0IGNoYXIgKnVucGFja2VyX2Vycm9yKQogewogCXN0cnVjdCBjb21tYW5kICpjbWQ7CkBAIC03MDQsNyArNzIzLDkgQEAKIAkJCQkgICAgICAgMCwgJmNtZCkpCiAJCXNldF9jb25uZWN0aXZpdHlfZXJyb3JzKGNvbW1hbmRzKTsKIAotCWlmIChydW5fcmVjZWl2ZV9ob29rKGNvbW1hbmRzLCBwcmVfcmVjZWl2ZV9ob29rLCAwKSkgeworCXJlamVjdF91cGRhdGVzX3RvX2hpZGRlbihjb21tYW5kcyk7CisKKwlpZiAocnVuX3JlY2VpdmVfaG9vayhjb21tYW5kcywgInByZS1yZWNlaXZlIiwgMCkpIHsKIAkJZm9yIChjbWQgPSBjb21tYW5kczsgY21kOyBjbWQgPSBjbWQtPm5leHQpIHsKIAkJCWlmICghY21kLT5lcnJvcl9zdHJpbmcpCiAJCQkJY21kLT5lcnJvcl9zdHJpbmcgPSAicHJlLXJlY2VpdmUgaG9vayBkZWNsaW5lZCI7CkBAIC03MzMsMTcgKzc1NCwxNSBAQAogCXN0cnVjdCBjb21tYW5kICpjb21tYW5kcyA9IE5VTEw7CiAJc3RydWN0IGNvbW1hbmQgKipwID0gJmNvbW1hbmRzOwogCWZvciAoOzspIHsKLQkJc3RhdGljIGNoYXIgbGluZVsxMDAwXTsKKwkJY2hhciAqbGluZTsKIAkJdW5zaWduZWQgY2hhciBvbGRfc2hhMVsyMF0sIG5ld19zaGExWzIwXTsKIAkJc3RydWN0IGNvbW1hbmQgKmNtZDsKIAkJY2hhciAqcmVmbmFtZTsKIAkJaW50IGxlbiwgcmVmbGVuOwogCi0JCWxlbiA9IHBhY2tldF9yZWFkX2xpbmUoMCwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKLQkJaWYgKCFsZW4pCisJCWxpbmUgPSBwYWNrZXRfcmVhZF9saW5lKDAsICZsZW4pOworCQlpZiAoIWxpbmUpCiAJCQlicmVhazsKLQkJaWYgKGxpbmVbbGVuLTFdID09ICdcbicpCi0JCQlsaW5lWy0tbGVuXSA9IDA7CiAJCWlmIChsZW4gPCA4MyB8fAogCQkgICAgbGluZVs0MF0gIT0gJyAnIHx8CiAJCSAgICBsaW5lWzgxXSAhPSAnICcgfHwKQEAgLTgwNyw4ICs4MjYsMTEgQEAKIAkJCSAgICA6IDApOwogCiAJaGRyX2VyciA9IHBhcnNlX3BhY2tfaGVhZGVyKCZoZHIpOwotCWlmIChoZHJfZXJyKQorCWlmIChoZHJfZXJyKSB7CisJCWlmIChlcnJfZmQgPiAwKQorCQkJY2xvc2UoZXJyX2ZkKTsKIAkJcmV0dXJuIGhkcl9lcnI7CisJfQogCXNucHJpbnRmKGhkcl9hcmcsIHNpemVvZihoZHJfYXJnKSwKIAkJCSItLXBhY2tfaGVhZGVyPSUiUFJJdTMyIiwlIlBSSXUzMiwKIAkJCW50b2hsKGhkci5oZHJfdmVyc2lvbiksIG50b2hsKGhkci5oZHJfZW50cmllcykpOwpAQCAtOTExLDcgKzkzMyw3IEBACiAJaWYgKHVzZV9zaWRlYmFuZCkKIAkJc2VuZF9zaWRlYmFuZCgxLCAxLCBidWYuYnVmLCBidWYubGVuLCB1c2Vfc2lkZWJhbmQpOwogCWVsc2UKLQkJc2FmZV93cml0ZSgxLCBidWYuYnVmLCBidWYubGVuKTsKKwkJd3JpdGVfb3JfZGllKDEsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogfQogCkBAIC05OTQsNyArMTAxNiw3IEBACiAJCQl1bmxpbmtfb3Jfd2FybihwYWNrX2xvY2tmaWxlKTsKIAkJaWYgKHJlcG9ydF9zdGF0dXMpCiAJCQlyZXBvcnQoY29tbWFuZHMsIHVucGFja19zdGF0dXMpOwotCQlydW5fcmVjZWl2ZV9ob29rKGNvbW1hbmRzLCBwb3N0X3JlY2VpdmVfaG9vaywgMSk7CisJCXJ1bl9yZWNlaXZlX2hvb2soY29tbWFuZHMsICJwb3N0LXJlY2VpdmUiLCAxKTsKIAkJcnVuX3VwZGF0ZV9wb3N0X2hvb2soY29tbWFuZHMpOwogCQlpZiAoYXV0b19nYykgewogCQkJY29uc3QgY2hhciAqYXJndl9nY19hdXRvW10gPSB7CmRpZmYgLS1naXQgYS9idWlsdGluL3JlZmxvZy5jIGIvYnVpbHRpbi9yZWZsb2cuYwppbmRleCBiM2M5ZTI3Li41NDE4NGIzIDEwMDY0NAotLS0gYS9idWlsdGluL3JlZmxvZy5jCisrKyBiL2J1aWx0aW4vcmVmbG9nLmMKQEAgLTQxNCw3ICs0MTQsNyBAQAogCQlpZiAoY2IudW5yZWFjaGFibGVfZXhwaXJlX2tpbmQgPT0gVUVfSEVBRCkgewogCQkJc3RydWN0IGNvbW1pdF9saXN0ICplbGVtOwogCQkJZm9yIChlbGVtID0gdGlwczsgZWxlbTsgZWxlbSA9IGVsZW0tPm5leHQpCi0JCQkJY2xlYXJfY29tbWl0X21hcmtzKHRpcF9jb21taXQsIFJFQUNIQUJMRSk7CisJCQkJY2xlYXJfY29tbWl0X21hcmtzKGVsZW0tPml0ZW0sIFJFQUNIQUJMRSk7CiAJCQlmcmVlX2NvbW1pdF9saXN0KHRpcHMpOwogCQl9IGVsc2UgewogCQkJY2xlYXJfY29tbWl0X21hcmtzKHRpcF9jb21taXQsIFJFQUNIQUJMRSk7CkBAIC00OTYsMTEgKzQ5Niw5IEBACiB7CiAJaWYgKCF2YWx1ZSkKIAkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7Ci0JaWYgKCFzdHJjbXAodmFsdWUsICJuZXZlciIpIHx8ICFzdHJjbXAodmFsdWUsICJmYWxzZSIpKSB7Ci0JCSpleHBpcmUgPSAwOwotCQlyZXR1cm4gMDsKLQl9Ci0JKmV4cGlyZSA9IGFwcHJveGlkYXRlKHZhbHVlKTsKKwlpZiAocGFyc2VfZXhwaXJ5X2RhdGUodmFsdWUsIGV4cGlyZSkpCisJCXJldHVybiBlcnJvcihfKCIlcycgZm9yICclcycgaXMgbm90IGEgdmFsaWQgdGltZXN0YW1wIiksCisJCQkgICAgIHZhbHVlLCB2YXIpOwogCXJldHVybiAwOwogfQogCkBAIC01MTAsMjYgKzUwOCwyNyBAQAogCiBzdGF0aWMgaW50IHJlZmxvZ19leHBpcmVfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogewotCWNvbnN0IGNoYXIgKmxhc3Rkb3QgPSBzdHJyY2hyKHZhciwgJy4nKTsKKwljb25zdCBjaGFyICpwYXR0ZXJuLCAqa2V5OworCWludCBwYXR0ZXJuX2xlbjsKIAl1bnNpZ25lZCBsb25nIGV4cGlyZTsKIAlpbnQgc2xvdDsKIAlzdHJ1Y3QgcmVmbG9nX2V4cGlyZV9jZmcgKmVudDsKIAotCWlmICghbGFzdGRvdCB8fCBwcmVmaXhjbXAodmFyLCAiZ2MuIikpCisJaWYgKHBhcnNlX2NvbmZpZ19rZXkodmFyLCAiZ2MiLCAmcGF0dGVybiwgJnBhdHRlcm5fbGVuLCAma2V5KSA8IDApCiAJCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogCi0JaWYgKCFzdHJjbXAobGFzdGRvdCwgIi5yZWZsb2dleHBpcmUiKSkgeworCWlmICghc3RyY21wKGtleSwgInJlZmxvZ2V4cGlyZSIpKSB7CiAJCXNsb3QgPSBFWFBJUkVfVE9UQUw7CiAJCWlmIChwYXJzZV9leHBpcmVfY2ZnX3ZhbHVlKHZhciwgdmFsdWUsICZleHBpcmUpKQogCQkJcmV0dXJuIC0xOwotCX0gZWxzZSBpZiAoIXN0cmNtcChsYXN0ZG90LCAiLnJlZmxvZ2V4cGlyZXVucmVhY2hhYmxlIikpIHsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoa2V5LCAicmVmbG9nZXhwaXJldW5yZWFjaGFibGUiKSkgewogCQlzbG90ID0gRVhQSVJFX1VOUkVBQ0g7CiAJCWlmIChwYXJzZV9leHBpcmVfY2ZnX3ZhbHVlKHZhciwgdmFsdWUsICZleHBpcmUpKQogCQkJcmV0dXJuIC0xOwogCX0gZWxzZQogCQlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIAotCWlmIChsYXN0ZG90ID09IHZhciArIDIpIHsKKwlpZiAoIXBhdHRlcm4pIHsKIAkJc3dpdGNoIChzbG90KSB7CiAJCWNhc2UgRVhQSVJFX1RPVEFMOgogCQkJZGVmYXVsdF9yZWZsb2dfZXhwaXJlID0gZXhwaXJlOwpAQCAtNTQxLDcgKzU0MCw3IEBACiAJCXJldHVybiAwOwogCX0KIAotCWVudCA9IGZpbmRfY2ZnX2VudCh2YXIgKyAzLCBsYXN0ZG90IC0gKHZhciszKSk7CisJZW50ID0gZmluZF9jZmdfZW50KHBhdHRlcm4sIHBhdHRlcm5fbGVuKTsKIAlpZiAoIWVudCkKIAkJcmV0dXJuIC0xOwogCXN3aXRjaCAoc2xvdCkgewpAQCAtNjEzLDExICs2MTIsMTMgQEAKIAkJaWYgKCFzdHJjbXAoYXJnLCAiLS1kcnktcnVuIikgfHwgIXN0cmNtcChhcmcsICItbiIpKQogCQkJY2IuZHJ5X3J1biA9IDE7CiAJCWVsc2UgaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1leHBpcmU9IikpIHsKLQkJCWNiLmV4cGlyZV90b3RhbCA9IGFwcHJveGlkYXRlKGFyZyArIDkpOworCQkJaWYgKHBhcnNlX2V4cGlyeV9kYXRlKGFyZyArIDksICZjYi5leHBpcmVfdG90YWwpKQorCQkJCWRpZShfKCInJXMnIGlzIG5vdCBhIHZhbGlkIHRpbWVzdGFtcCIpLCBhcmcpOwogCQkJZXhwbGljaXRfZXhwaXJ5IHw9IEVYUElSRV9UT1RBTDsKIAkJfQogCQllbHNlIGlmICghcHJlZml4Y21wKGFyZywgIi0tZXhwaXJlLXVucmVhY2hhYmxlPSIpKSB7Ci0JCQljYi5leHBpcmVfdW5yZWFjaGFibGUgPSBhcHByb3hpZGF0ZShhcmcgKyAyMSk7CisJCQlpZiAocGFyc2VfZXhwaXJ5X2RhdGUoYXJnICsgMjEsICZjYi5leHBpcmVfdW5yZWFjaGFibGUpKQorCQkJCWRpZShfKCInJXMnIGlzIG5vdCBhIHZhbGlkIHRpbWVzdGFtcCIpLCBhcmcpOwogCQkJZXhwbGljaXRfZXhwaXJ5IHw9IEVYUElSRV9VTlJFQUNIOwogCQl9CiAJCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1zdGFsZS1maXgiKSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmVtb3RlLmMgYi9idWlsdGluL3JlbW90ZS5jCmluZGV4IDkzNzQ4NGQuLjVlNTRkMzYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmVtb3RlLmMKKysrIGIvYnVpbHRpbi9yZW1vdGUuYwpAQCAtMTc4LDcgKzE3OCw3IEBACiAJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgTlVMTCwgb3B0aW9ucywgYnVpbHRpbl9yZW1vdGVfYWRkX3VzYWdlLAogCQkJICAgICAwKTsKIAotCWlmIChhcmdjIDwgMikKKwlpZiAoYXJnYyAhPSAyKQogCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9yZW1vdGVfYWRkX3VzYWdlLCBvcHRpb25zKTsKIAogCWlmIChtaXJyb3IgJiYgbWFzdGVyKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZXBsYWNlLmMgYi9idWlsdGluL3JlcGxhY2UuYwppbmRleCAzOThjY2Q1Li41OWQzMTE1IDEwMDY0NAotLS0gYS9idWlsdGluL3JlcGxhY2UuYworKysgYi9idWlsdGluL3JlcGxhY2UuYwpAQCAtMyw3ICszLDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDggQ2hyaXN0aWFuIENvdWRlciA8Y2hyaXNjb29sQHR1eGZhbWlseS5vcmc+CiAgKgotICogQmFzZWQgb24gYnVpbHRpbi10YWcuYyBieSBLcmlzdGlhbiBIw7hnc2JlcmcgPGtyaEByZWRoYXQuY29tPgorICogQmFzZWQgb24gYnVpbHRpbi90YWcuYyBieSBLcmlzdGlhbiBIw7hnc2JlcmcgPGtyaEByZWRoYXQuY29tPgogICogYW5kIENhcmxvcyBSaWNhIDxqYXNhbXBsZXJAZ21haWwuY29tPiB0aGF0IHdhcyBpdHNlbGYgYmFzZWQgb24KICAqIGdpdC10YWcuc2ggYW5kIG1rdGFnLmMgYnkgTGludXMgVG9ydmFsZHMuCiAgKi8KZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmVzZXQuYyBiL2J1aWx0aW4vcmVzZXQuYwppbmRleCA5MTVjYzlmLi42MDMyMTMxIDEwMDY0NAotLS0gYS9idWlsdGluL3Jlc2V0LmMKKysrIGIvYnVpbHRpbi9yZXNldC5jCkBAIC0yMyw4ICsyMyw4IEBACiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X3Jlc2V0X3VzYWdlW10gPSB7CiAJTl8oImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxjb21taXQ+XSIpLAotCU5fKCJnaXQgcmVzZXQgWy1xXSA8Y29tbWl0PiBbLS1dIDxwYXRocz4uLi4iKSwKLQlOXygiZ2l0IHJlc2V0IC0tcGF0Y2ggWzxjb21taXQ+XSBbLS1dIFs8cGF0aHM+Li4uXSIpLAorCU5fKCJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIpLAorCU5fKCJnaXQgcmVzZXQgLS1wYXRjaCBbPHRyZWUtaXNoPl0gWy0tXSBbPHBhdGhzPi4uLl0iKSwKIAlOVUxMCiB9OwogCkBAIC0zOCwxNCArMzgsMTIgQEAKIAlyZXR1cm4gIWFjY2VzcyhnaXRfcGF0aCgiTUVSR0VfSEVBRCIpLCBGX09LKTsKIH0KIAotc3RhdGljIGludCByZXNldF9pbmRleF9maWxlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCByZXNldF90eXBlLCBpbnQgcXVpZXQpCitzdGF0aWMgaW50IHJlc2V0X2luZGV4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCByZXNldF90eXBlLCBpbnQgcXVpZXQpCiB7CiAJaW50IG5yID0gMTsKLQlpbnQgbmV3ZmQ7CiAJc3RydWN0IHRyZWVfZGVzYyBkZXNjWzJdOwogCXN0cnVjdCB0cmVlICp0cmVlOwogCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyBvcHRzOwotCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2sgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7CiAKIAltZW1zZXQoJm9wdHMsIDAsIHNpemVvZihvcHRzKSk7CiAJb3B0cy5oZWFkX2lkeCA9IDE7CkBAIC02Nyw4ICs2NSw2IEBACiAJCW9wdHMucmVzZXQgPSAxOwogCX0KIAotCW5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgobG9jaywgMSk7Ci0KIAlyZWFkX2NhY2hlX3VubWVyZ2VkKCk7CiAKIAlpZiAocmVzZXRfdHlwZSA9PSBLRUVQKSB7CkBAIC05MSwxMCArODcsNiBAQAogCQlwcmltZV9jYWNoZV90cmVlKCZhY3RpdmVfY2FjaGVfdHJlZSwgdHJlZSk7CiAJfQogCi0JaWYgKHdyaXRlX2NhY2hlKG5ld2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKLQkgICAgY29tbWl0X2xvY2tlZF9pbmRleChsb2NrKSkKLQkJcmV0dXJuIGVycm9yKF8oIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iKSk7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtMTE3LDM2ICsxMDksMTAgQEAKIAkJcHJpbnRmKCJcbiIpOwogfQogCi1zdGF0aWMgaW50IHVwZGF0ZV9pbmRleF9yZWZyZXNoKGludCBmZCwgc3RydWN0IGxvY2tfZmlsZSAqaW5kZXhfbG9jaywgaW50IGZsYWdzKQotewotCWludCByZXN1bHQ7Ci0KLQlpZiAoIWluZGV4X2xvY2spIHsKLQkJaW5kZXhfbG9jayA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsb2NrX2ZpbGUpKTsKLQkJZmQgPSBob2xkX2xvY2tlZF9pbmRleChpbmRleF9sb2NrLCAxKTsKLQl9Ci0KLQlpZiAocmVhZF9jYWNoZSgpIDwgMCkKLQkJcmV0dXJuIGVycm9yKF8oIkNvdWxkIG5vdCByZWFkIGluZGV4IikpOwotCi0JcmVzdWx0ID0gcmVmcmVzaF9pbmRleCgmdGhlX2luZGV4LCAoZmxhZ3MpLCBOVUxMLCBOVUxMLAotCQkJICAgICAgIF8oIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IikpID8gMSA6IDA7Ci0JaWYgKHdyaXRlX2NhY2hlKGZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKLQkJCWNvbW1pdF9sb2NrZWRfaW5kZXgoaW5kZXhfbG9jaykpCi0JCXJldHVybiBlcnJvciAoIkNvdWxkIG5vdCByZWZyZXNoIGluZGV4Iik7Ci0JcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIHZvaWQgdXBkYXRlX2luZGV4X2Zyb21fZGlmZihzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnEsCiAJCXN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCwgdm9pZCAqZGF0YSkKIHsKIAlpbnQgaTsKLQlpbnQgKmRpc2NhcmRfZmxhZyA9IGRhdGE7Ci0KLQkvKiBkb19kaWZmX2NhY2hlKCkgbWFuZ2xlZCB0aGUgaW5kZXggKi8KLQlkaXNjYXJkX2NhY2hlKCk7Ci0JKmRpc2NhcmRfZmxhZyA9IDE7Ci0JcmVhZF9jYWNoZSgpOwogCiAJZm9yIChpID0gMDsgaSA8IHEtPm5yOyBpKyspIHsKIAkJc3RydWN0IGRpZmZfZmlsZXNwZWMgKm9uZSA9IHEtPnF1ZXVlW2ldLT5vbmU7CkBAIC0xNjQsMzIgKzEzMCwxNSBAQAogCX0KIH0KIAotc3RhdGljIGludCBpbnRlcmFjdGl2ZV9yZXNldChjb25zdCBjaGFyICpyZXZpc2lvbiwgY29uc3QgY2hhciAqKmFyZ3YsCi0JCQkgICAgIGNvbnN0IGNoYXIgKnByZWZpeCkKK3N0YXRpYyBpbnQgcmVhZF9mcm9tX3RyZWUoY29uc3QgY2hhciAqKnBhdGhzcGVjLCB1bnNpZ25lZCBjaGFyICp0cmVlX3NoYTEpCiB7Ci0JY29uc3QgY2hhciAqKnBhdGhzcGVjID0gTlVMTDsKLQotCWlmICgqYXJndikKLQkJcGF0aHNwZWMgPSBnZXRfcGF0aHNwZWMocHJlZml4LCBhcmd2KTsKLQotCXJldHVybiBydW5fYWRkX2ludGVyYWN0aXZlKHJldmlzaW9uLCAiLS1wYXRjaD1yZXNldCIsIHBhdGhzcGVjKTsKLX0KLQotc3RhdGljIGludCByZWFkX2Zyb21fdHJlZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKiphcmd2LAotCQl1bnNpZ25lZCBjaGFyICp0cmVlX3NoYTEsIGludCByZWZyZXNoX2ZsYWdzKQotewotCXN0cnVjdCBsb2NrX2ZpbGUgKmxvY2sgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbG9ja19maWxlKSk7Ci0JaW50IGluZGV4X2ZkLCBpbmRleF93YXNfZGlzY2FyZGVkID0gMDsKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zIG9wdDsKIAogCW1lbXNldCgmb3B0LCAwLCBzaXplb2Yob3B0KSk7Ci0JZGlmZl90cmVlX3NldHVwX3BhdGhzKGdldF9wYXRoc3BlYyhwcmVmaXgsIChjb25zdCBjaGFyICoqKWFyZ3YpLCAmb3B0KTsKKwlkaWZmX3RyZWVfc2V0dXBfcGF0aHMocGF0aHNwZWMsICZvcHQpOwogCW9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfQ0FMTEJBQ0s7CiAJb3B0LmZvcm1hdF9jYWxsYmFjayA9IHVwZGF0ZV9pbmRleF9mcm9tX2RpZmY7Ci0Jb3B0LmZvcm1hdF9jYWxsYmFja19kYXRhID0gJmluZGV4X3dhc19kaXNjYXJkZWQ7CiAKLQlpbmRleF9mZCA9IGhvbGRfbG9ja2VkX2luZGV4KGxvY2ssIDEpOwotCWluZGV4X3dhc19kaXNjYXJkZWQgPSAwOwogCXJlYWRfY2FjaGUoKTsKIAlpZiAoZG9fZGlmZl9jYWNoZSh0cmVlX3NoYTEsICZvcHQpKQogCQlyZXR1cm4gMTsKQEAgLTE5NywxMCArMTQ2LDcgQEAKIAlkaWZmX2ZsdXNoKCZvcHQpOwogCWRpZmZfdHJlZV9yZWxlYXNlX3BhdGhzKCZvcHQpOwogCi0JaWYgKCFpbmRleF93YXNfZGlzY2FyZGVkKQotCQkvKiBUaGUgaW5kZXggaXMgc3RpbGwgY2xvYmJlcmVkIGZyb20gZG9fZGlmZl9jYWNoZSgpICovCi0JCWRpc2NhcmRfY2FjaGUoKTsKLQlyZXR1cm4gdXBkYXRlX2luZGV4X3JlZnJlc2goaW5kZXhfZmQsIGxvY2ssIHJlZnJlc2hfZmxhZ3MpOworCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBzZXRfcmVmbG9nX21lc3NhZ2Uoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmFjdGlvbiwKQEAgLTIyNSwxNSArMTcxLDc5IEBACiAKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKipwYXJzZV9hcmdzKGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipyZXZfcmV0KQoreworCWNvbnN0IGNoYXIgKnJldiA9ICJIRUFEIjsKKwl1bnNpZ25lZCBjaGFyIHVudXNlZFsyMF07CisJLyoKKwkgKiBQb3NzaWJsZSBhcmd1bWVudHMgYXJlOgorCSAqCisJICogZ2l0IHJlc2V0IFstb3B0c10gWzxyZXY+XQorCSAqIGdpdCByZXNldCBbLW9wdHNdIDx0cmVlPiBbPHBhdGhzPi4uLl0KKwkgKiBnaXQgcmVzZXQgWy1vcHRzXSA8dHJlZT4gLS0gWzxwYXRocz4uLi5dCisJICogZ2l0IHJlc2V0IFstb3B0c10gLS0gWzxwYXRocz4uLi5dCisJICogZ2l0IHJlc2V0IFstb3B0c10gPHBhdGhzPi4uLgorCSAqCisJICogQXQgdGhpcyBwb2ludCwgYXJndiBwb2ludHMgaW1tZWRpYXRlbHkgYWZ0ZXIgWy1vcHRzXS4KKwkgKi8KKworCWlmIChhcmd2WzBdKSB7CisJCWlmICghc3RyY21wKGFyZ3ZbMF0sICItLSIpKSB7CisJCQlhcmd2Kys7IC8qIHJlc2V0IHRvIEhFQUQsIHBvc3NpYmx5IHdpdGggcGF0aHMgKi8KKwkJfSBlbHNlIGlmIChhcmd2WzFdICYmICFzdHJjbXAoYXJndlsxXSwgIi0tIikpIHsKKwkJCXJldiA9IGFyZ3ZbMF07CisJCQlhcmd2ICs9IDI7CisJCX0KKwkJLyoKKwkJICogT3RoZXJ3aXNlLCBhcmd2WzBdIGNvdWxkIGJlIGVpdGhlciA8cmV2PiBvciA8cGF0aHM+IGFuZAorCQkgKiBoYXMgdG8gYmUgdW5hbWJpZ3VvdXMuIElmIHRoZXJlIGlzIGEgc2luZ2xlIGFyZ3VtZW50LCBpdAorCQkgKiBjYW4gbm90IGJlIGEgdHJlZQorCQkgKi8KKwkJZWxzZSBpZiAoKCFhcmd2WzFdICYmICFnZXRfc2hhMV9jb21taXR0aXNoKGFyZ3ZbMF0sIHVudXNlZCkpIHx8CisJCQkgKGFyZ3ZbMV0gJiYgIWdldF9zaGExX3RyZWVpc2goYXJndlswXSwgdW51c2VkKSkpIHsKKwkJCS8qCisJCQkgKiBPaywgYXJndlswXSBsb29rcyBsaWtlIGEgY29tbWl0L3RyZWU7IGl0IHNob3VsZCBub3QKKwkJCSAqIGJlIGEgZmlsZW5hbWUuCisJCQkgKi8KKwkJCXZlcmlmeV9ub25fZmlsZW5hbWUocHJlZml4LCBhcmd2WzBdKTsKKwkJCXJldiA9ICphcmd2Kys7CisJCX0gZWxzZSB7CisJCQkvKiBPdGhlcndpc2Ugd2UgdHJlYXQgdGhpcyBhcyBhIGZpbGVuYW1lICovCisJCQl2ZXJpZnlfZmlsZW5hbWUocHJlZml4LCBhcmd2WzBdLCAxKTsKKwkJfQorCX0KKwkqcmV2X3JldCA9IHJldjsKKwlyZXR1cm4gYXJndlswXSA/IGdldF9wYXRoc3BlYyhwcmVmaXgsIGFyZ3YpIDogTlVMTDsKK30KKworc3RhdGljIGludCB1cGRhdGVfcmVmcyhjb25zdCBjaGFyICpyZXYsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJaW50IHVwZGF0ZV9yZWZfc3RhdHVzOworCXN0cnVjdCBzdHJidWYgbXNnID0gU1RSQlVGX0lOSVQ7CisJdW5zaWduZWQgY2hhciAqb3JpZyA9IE5VTEwsIHNoYTFfb3JpZ1syMF0sCisJCSpvbGRfb3JpZyA9IE5VTEwsIHNoYTFfb2xkX29yaWdbMjBdOworCisJaWYgKCFnZXRfc2hhMSgiT1JJR19IRUFEIiwgc2hhMV9vbGRfb3JpZykpCisJCW9sZF9vcmlnID0gc2hhMV9vbGRfb3JpZzsKKwlpZiAoIWdldF9zaGExKCJIRUFEIiwgc2hhMV9vcmlnKSkgeworCQlvcmlnID0gc2hhMV9vcmlnOworCQlzZXRfcmVmbG9nX21lc3NhZ2UoJm1zZywgInVwZGF0aW5nIE9SSUdfSEVBRCIsIE5VTEwpOworCQl1cGRhdGVfcmVmKG1zZy5idWYsICJPUklHX0hFQUQiLCBvcmlnLCBvbGRfb3JpZywgMCwgTVNHX09OX0VSUik7CisJfSBlbHNlIGlmIChvbGRfb3JpZykKKwkJZGVsZXRlX3JlZigiT1JJR19IRUFEIiwgb2xkX29yaWcsIDApOworCXNldF9yZWZsb2dfbWVzc2FnZSgmbXNnLCAidXBkYXRpbmcgSEVBRCIsIHJldik7CisJdXBkYXRlX3JlZl9zdGF0dXMgPSB1cGRhdGVfcmVmKG1zZy5idWYsICJIRUFEIiwgc2hhMSwgb3JpZywgMCwgTVNHX09OX0VSUik7CisJc3RyYnVmX3JlbGVhc2UoJm1zZyk7CisJcmV0dXJuIHVwZGF0ZV9yZWZfc3RhdHVzOworfQorCiBpbnQgY21kX3Jlc2V0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewotCWludCBpID0gMCwgcmVzZXRfdHlwZSA9IE5PTkUsIHVwZGF0ZV9yZWZfc3RhdHVzID0gMCwgcXVpZXQgPSAwOwotCWludCBwYXRjaF9tb2RlID0gMDsKLQljb25zdCBjaGFyICpyZXYgPSAiSEVBRCI7Ci0JdW5zaWduZWQgY2hhciBzaGExWzIwXSwgKm9yaWcgPSBOVUxMLCBzaGExX29yaWdbMjBdLAotCQkJCSpvbGRfb3JpZyA9IE5VTEwsIHNoYTFfb2xkX29yaWdbMjBdOwotCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKLQlzdHJ1Y3Qgc3RyYnVmIG1zZyA9IFNUUkJVRl9JTklUOworCWludCByZXNldF90eXBlID0gTk9ORSwgdXBkYXRlX3JlZl9zdGF0dXMgPSAwLCBxdWlldCA9IDA7CisJaW50IHBhdGNoX21vZGUgPSAwLCB1bmJvcm47CisJY29uc3QgY2hhciAqcmV2OworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJY29uc3QgY2hhciAqKnBhdGhzcGVjID0gTlVMTDsKIAljb25zdCBzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKIAkJT1BUX19RVUlFVCgmcXVpZXQsIE5fKCJiZSBxdWlldCwgb25seSByZXBvcnQgZXJyb3JzIikpLAogCQlPUFRfU0VUX0lOVCgwLCAibWl4ZWQiLCAmcmVzZXRfdHlwZSwKQEAgLTI1Myw3MyArMjYzLDQ1IEBACiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIG9wdGlvbnMsIGdpdF9yZXNldF91c2FnZSwKIAkJCQkJCVBBUlNFX09QVF9LRUVQX0RBU0hEQVNIKTsKKwlwYXRoc3BlYyA9IHBhcnNlX2FyZ3MoYXJndiwgcHJlZml4LCAmcmV2KTsKIAotCS8qCi0JICogUG9zc2libGUgYXJndW1lbnRzIGFyZToKLQkgKgotCSAqIGdpdCByZXNldCBbLW9wdHNdIDxyZXY+IDxwYXRocz4uLi4KLQkgKiBnaXQgcmVzZXQgWy1vcHRzXSA8cmV2PiAtLSA8cGF0aHM+Li4uCi0JICogZ2l0IHJlc2V0IFstb3B0c10gLS0gPHBhdGhzPi4uLgotCSAqIGdpdCByZXNldCBbLW9wdHNdIDxwYXRocz4uLi4KLQkgKgotCSAqIEF0IHRoaXMgcG9pbnQsIGFyZ3ZbaV0gcG9pbnRzIGltbWVkaWF0ZWx5IGFmdGVyIFstb3B0c10uCi0JICovCi0KLQlpZiAoaSA8IGFyZ2MpIHsKLQkJaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tIikpIHsKLQkJCWkrKzsgLyogcmVzZXQgdG8gSEVBRCwgcG9zc2libHkgd2l0aCBwYXRocyAqLwotCQl9IGVsc2UgaWYgKGkgKyAxIDwgYXJnYyAmJiAhc3RyY21wKGFyZ3ZbaSsxXSwgIi0tIikpIHsKLQkJCXJldiA9IGFyZ3ZbaV07Ci0JCQlpICs9IDI7Ci0JCX0KLQkJLyoKLQkJICogT3RoZXJ3aXNlLCBhcmd2W2ldIGNvdWxkIGJlIGVpdGhlciA8cmV2PiBvciA8cGF0aHM+IGFuZAotCQkgKiBoYXMgdG8gYmUgdW5hbWJpZ3VvdXMuCi0JCSAqLwotCQllbHNlIGlmICghZ2V0X3NoYTFfY29tbWl0dGlzaChhcmd2W2ldLCBzaGExKSkgewotCQkJLyoKLQkJCSAqIE9rLCBhcmd2W2ldIGxvb2tzIGxpa2UgYSByZXY7IGl0IHNob3VsZCBub3QKLQkJCSAqIGJlIGEgZmlsZW5hbWUuCi0JCQkgKi8KLQkJCXZlcmlmeV9ub25fZmlsZW5hbWUocHJlZml4LCBhcmd2W2ldKTsKLQkJCXJldiA9IGFyZ3ZbaSsrXTsKLQkJfSBlbHNlIHsKLQkJCS8qIE90aGVyd2lzZSB3ZSB0cmVhdCB0aGlzIGFzIGEgZmlsZW5hbWUgKi8KLQkJCXZlcmlmeV9maWxlbmFtZShwcmVmaXgsIGFyZ3ZbaV0sIDEpOwotCQl9CisJdW5ib3JuID0gIXN0cmNtcChyZXYsICJIRUFEIikgJiYgZ2V0X3NoYTEoIkhFQUQiLCBzaGExKTsKKwlpZiAodW5ib3JuKSB7CisJCS8qIHJlc2V0IG9uIHVuYm9ybiBicmFuY2g6IHRyZWF0IGFzIHJlc2V0IHRvIGVtcHR5IHRyZWUgKi8KKwkJaGFzaGNweShzaGExLCBFTVBUWV9UUkVFX1NIQTFfQklOKTsKKwl9IGVsc2UgaWYgKCFwYXRoc3BlYykgeworCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJCWlmIChnZXRfc2hhMV9jb21taXR0aXNoKHJldiwgc2hhMSkpCisJCQlkaWUoXygiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJldmlzaW9uLiIpLCByZXYpOworCQljb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZShzaGExKTsKKwkJaWYgKCFjb21taXQpCisJCQlkaWUoXygiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnLiIpLCByZXYpOworCQloYXNoY3B5KHNoYTEsIGNvbW1pdC0+b2JqZWN0LnNoYTEpOworCX0gZWxzZSB7CisJCXN0cnVjdCB0cmVlICp0cmVlOworCQlpZiAoZ2V0X3NoYTFfdHJlZWlzaChyZXYsIHNoYTEpKQorCQkJZGllKF8oIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCB0cmVlLiIpLCByZXYpOworCQl0cmVlID0gcGFyc2VfdHJlZV9pbmRpcmVjdChzaGExKTsKKwkJaWYgKCF0cmVlKQorCQkJZGllKF8oIkNvdWxkIG5vdCBwYXJzZSBvYmplY3QgJyVzJy4iKSwgcmV2KTsKKwkJaGFzaGNweShzaGExLCB0cmVlLT5vYmplY3Quc2hhMSk7CiAJfQogCi0JaWYgKGdldF9zaGExX2NvbW1pdHRpc2gocmV2LCBzaGExKSkKLQkJZGllKF8oIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZWYuIiksIHJldik7Ci0KLQkvKgotCSAqIE5PVEU6IEFzICJnaXQgcmVzZXQgJHRyZWVpc2ggLS0gJHBhdGgiIHNob3VsZCBiZSB1c2FibGUgb24KLQkgKiBhbnkgdHJlZS1pc2gsIHRoaXMgaXMgbm90IHN0cmljdGx5IGNvcnJlY3QuIFdlIGFyZSBub3QKLQkgKiBtb3ZpbmcgdGhlIEhFQUQgdG8gYW55IGNvbW1pdDsgd2UgYXJlIG1lcmVseSByZXNldHRpbmcgdGhlCi0JICogZW50cmllcyBpbiB0aGUgaW5kZXggdG8gdGhhdCBvZiBhIHRyZWVpc2guCi0JICovCi0JY29tbWl0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2Uoc2hhMSk7Ci0JaWYgKCFjb21taXQpCi0JCWRpZShfKCJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIiksIHJldik7Ci0JaGFzaGNweShzaGExLCBjb21taXQtPm9iamVjdC5zaGExKTsKLQogCWlmIChwYXRjaF9tb2RlKSB7CiAJCWlmIChyZXNldF90eXBlICE9IE5PTkUpCiAJCQlkaWUoXygiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IikpOwotCQlyZXR1cm4gaW50ZXJhY3RpdmVfcmVzZXQocmV2LCBhcmd2ICsgaSwgcHJlZml4KTsKKwkJcmV0dXJuIHJ1bl9hZGRfaW50ZXJhY3RpdmUoc2hhMV90b19oZXgoc2hhMSksICItLXBhdGNoPXJlc2V0IiwgcGF0aHNwZWMpOwogCX0KIAogCS8qIGdpdCByZXNldCB0cmVlIFstLV0gcGF0aHMuLi4gY2FuIGJlIHVzZWQgdG8KIAkgKiBsb2FkIGNob3NlbiBwYXRocyBmcm9tIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHdpdGhvdXQKIAkgKiBhZmZlY3RpbmcgdGhlIHdvcmtpbmcgdHJlZSBub3IgSEVBRC4gKi8KLQlpZiAoaSA8IGFyZ2MpIHsKKwlpZiAocGF0aHNwZWMpIHsKIAkJaWYgKHJlc2V0X3R5cGUgPT0gTUlYRUQpCiAJCQl3YXJuaW5nKF8oIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIpKTsKIAkJZWxzZSBpZiAocmVzZXRfdHlwZSAhPSBOT05FKQogCQkJZGllKF8oIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIpLAogCQkJCQlfKHJlc2V0X3R5cGVfbmFtZXNbcmVzZXRfdHlwZV0pKTsKLQkJcmV0dXJuIHJlYWRfZnJvbV90cmVlKHByZWZpeCwgYXJndiArIGksIHNoYTEsCi0JCQkJcXVpZXQgPyBSRUZSRVNIX1FVSUVUIDogUkVGUkVTSF9JTl9QT1JDRUxBSU4pOwogCX0KIAlpZiAocmVzZXRfdHlwZSA9PSBOT05FKQogCQlyZXNldF90eXBlID0gTUlYRUQ7IC8qIGJ5IGRlZmF1bHQgKi8KQEAgLTMzNCw0OSArMzE2LDQ0IEBACiAJLyogU29mdCByZXNldCBkb2VzIG5vdCB0b3VjaCB0aGUgaW5kZXggZmlsZSBub3IgdGhlIHdvcmtpbmcgdHJlZQogCSAqIGF0IGFsbCwgYnV0IHJlcXVpcmVzIHRoZW0gaW4gYSBnb29kIG9yZGVyLiAgT3RoZXIgcmVzZXRzIHJlc2V0CiAJICogdGhlIGluZGV4IGZpbGUgdG8gdGhlIHRyZWUgb2JqZWN0IHdlIGFyZSBzd2l0Y2hpbmcgdG8uICovCi0JaWYgKHJlc2V0X3R5cGUgPT0gU09GVCkKKwlpZiAocmVzZXRfdHlwZSA9PSBTT0ZUIHx8IHJlc2V0X3R5cGUgPT0gS0VFUCkKIAkJZGllX2lmX3VubWVyZ2VkX2NhY2hlKHJlc2V0X3R5cGUpOwotCWVsc2UgewotCQlpbnQgZXJyOwotCQlpZiAocmVzZXRfdHlwZSA9PSBLRUVQKQotCQkJZGllX2lmX3VubWVyZ2VkX2NhY2hlKHJlc2V0X3R5cGUpOwotCQllcnIgPSByZXNldF9pbmRleF9maWxlKHNoYTEsIHJlc2V0X3R5cGUsIHF1aWV0KTsKLQkJaWYgKHJlc2V0X3R5cGUgPT0gS0VFUCkKLQkJCWVyciA9IGVyciB8fCByZXNldF9pbmRleF9maWxlKHNoYTEsIE1JWEVELCBxdWlldCk7Ci0JCWlmIChlcnIpCi0JCQlkaWUoXygiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iKSwgcmV2KTsKKworCWlmIChyZXNldF90eXBlICE9IFNPRlQpIHsKKwkJc3RydWN0IGxvY2tfZmlsZSAqbG9jayA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsb2NrX2ZpbGUpKTsKKwkJaW50IG5ld2ZkID0gaG9sZF9sb2NrZWRfaW5kZXgobG9jaywgMSk7CisJCWlmIChyZXNldF90eXBlID09IE1JWEVEKSB7CisJCQlpZiAocmVhZF9mcm9tX3RyZWUocGF0aHNwZWMsIHNoYTEpKQorCQkJCXJldHVybiAxOworCQl9IGVsc2UgeworCQkJaW50IGVyciA9IHJlc2V0X2luZGV4KHNoYTEsIHJlc2V0X3R5cGUsIHF1aWV0KTsKKwkJCWlmIChyZXNldF90eXBlID09IEtFRVAgJiYgIWVycikKKwkJCQllcnIgPSByZXNldF9pbmRleChzaGExLCBNSVhFRCwgcXVpZXQpOworCQkJaWYgKGVycikKKwkJCQlkaWUoXygiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iKSwgcmV2KTsKKwkJfQorCisJCWlmIChyZXNldF90eXBlID09IE1JWEVEKSB7IC8qIFJlcG9ydCB3aGF0IGhhcyBub3QgYmVlbiB1cGRhdGVkLiAqLworCQkJaW50IGZsYWdzID0gcXVpZXQgPyBSRUZSRVNIX1FVSUVUIDogUkVGUkVTSF9JTl9QT1JDRUxBSU47CisJCQlyZWZyZXNoX2luZGV4KCZ0aGVfaW5kZXgsIGZsYWdzLCBOVUxMLCBOVUxMLAorCQkJCSAgICAgIF8oIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IikpOworCQl9CisKKwkJaWYgKHdyaXRlX2NhY2hlKG5ld2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgfHwKKwkJICAgIGNvbW1pdF9sb2NrZWRfaW5kZXgobG9jaykpCisJCQlkaWUoXygiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIpKTsKIAl9CiAKLQkvKiBBbnkgcmVzZXRzIHVwZGF0ZSBIRUFEIHRvIHRoZSBoZWFkIGJlaW5nIHN3aXRjaGVkIHRvLAotCSAqIHNhdmluZyB0aGUgcHJldmlvdXMgaGVhZCBpbiBPUklHX0hFQUQgYmVmb3JlLiAqLwotCWlmICghZ2V0X3NoYTEoIk9SSUdfSEVBRCIsIHNoYTFfb2xkX29yaWcpKQotCQlvbGRfb3JpZyA9IHNoYTFfb2xkX29yaWc7Ci0JaWYgKCFnZXRfc2hhMSgiSEVBRCIsIHNoYTFfb3JpZykpIHsKLQkJb3JpZyA9IHNoYTFfb3JpZzsKLQkJc2V0X3JlZmxvZ19tZXNzYWdlKCZtc2csICJ1cGRhdGluZyBPUklHX0hFQUQiLCBOVUxMKTsKLQkJdXBkYXRlX3JlZihtc2cuYnVmLCAiT1JJR19IRUFEIiwgb3JpZywgb2xkX29yaWcsIDAsIE1TR19PTl9FUlIpOworCWlmICghcGF0aHNwZWMgJiYgIXVuYm9ybikgeworCQkvKiBBbnkgcmVzZXRzIHdpdGhvdXQgcGF0aHMgdXBkYXRlIEhFQUQgdG8gdGhlIGhlYWQgYmVpbmcKKwkJICogc3dpdGNoZWQgdG8sIHNhdmluZyB0aGUgcHJldmlvdXMgaGVhZCBpbiBPUklHX0hFQUQgYmVmb3JlLiAqLworCQl1cGRhdGVfcmVmX3N0YXR1cyA9IHVwZGF0ZV9yZWZzKHJldiwgc2hhMSk7CisKKwkJaWYgKHJlc2V0X3R5cGUgPT0gSEFSRCAmJiAhdXBkYXRlX3JlZl9zdGF0dXMgJiYgIXF1aWV0KQorCQkJcHJpbnRfbmV3X2hlYWRfbGluZShsb29rdXBfY29tbWl0X3JlZmVyZW5jZShzaGExKSk7CiAJfQotCWVsc2UgaWYgKG9sZF9vcmlnKQotCQlkZWxldGVfcmVmKCJPUklHX0hFQUQiLCBvbGRfb3JpZywgMCk7Ci0Jc2V0X3JlZmxvZ19tZXNzYWdlKCZtc2csICJ1cGRhdGluZyBIRUFEIiwgcmV2KTsKLQl1cGRhdGVfcmVmX3N0YXR1cyA9IHVwZGF0ZV9yZWYobXNnLmJ1ZiwgIkhFQUQiLCBzaGExLCBvcmlnLCAwLCBNU0dfT05fRVJSKTsKLQotCXN3aXRjaCAocmVzZXRfdHlwZSkgewotCWNhc2UgSEFSRDoKLQkJaWYgKCF1cGRhdGVfcmVmX3N0YXR1cyAmJiAhcXVpZXQpCi0JCQlwcmludF9uZXdfaGVhZF9saW5lKGNvbW1pdCk7Ci0JCWJyZWFrOwotCWNhc2UgU09GVDogLyogTm90aGluZyBlbHNlIHRvIGRvLiAqLwotCQlicmVhazsKLQljYXNlIE1JWEVEOiAvKiBSZXBvcnQgd2hhdCBoYXMgbm90IGJlZW4gdXBkYXRlZC4gKi8KLQkJdXBkYXRlX2luZGV4X3JlZnJlc2goMCwgTlVMTCwKLQkJCQlxdWlldCA/IFJFRlJFU0hfUVVJRVQgOiBSRUZSRVNIX0lOX1BPUkNFTEFJTik7Ci0JCWJyZWFrOwotCX0KLQotCXJlbW92ZV9icmFuY2hfc3RhdGUoKTsKLQotCXN0cmJ1Zl9yZWxlYXNlKCZtc2cpOworCWlmICghcGF0aHNwZWMpCisJCXJlbW92ZV9icmFuY2hfc3RhdGUoKTsKIAogCXJldHVybiB1cGRhdGVfcmVmX3N0YXR1czsKIH0KZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmV2ZXJ0LmMgYi9idWlsdGluL3JldmVydC5jCmluZGV4IGM1ZTM2YjkuLjA0MDFmZGIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmV2ZXJ0LmMKKysrIGIvYnVpbHRpbi9yZXZlcnQuYwpAQCAtMTksMTMgKzE5LDEzIEBACiAgKi8KIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCByZXZlcnRfdXNhZ2VbXSA9IHsKLQlOXygiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+IiksCisJTl8oImdpdCByZXZlcnQgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIpLAogCU5fKCJnaXQgcmV2ZXJ0IDxzdWJjb21tYW5kPiIpLAogCU5VTEwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgY2hlcnJ5X3BpY2tfdXNhZ2VbXSA9IHsKLQlOXygiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4iKSwKKwlOXygiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iKSwKIAlOXygiZ2l0IGNoZXJyeS1waWNrIDxzdWJjb21tYW5kPiIpLAogCU5VTEwKIH07CmRpZmYgLS1naXQgYS9idWlsdGluL3JtLmMgYi9idWlsdGluL3JtLmMKaW5kZXggZGFiZmNmNi4uMDYwMjVhMiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9ybS5jCisrKyBiL2J1aWx0aW4vcm0uYwpAQCAtOSw2ICs5LDcgQEAKICNpbmNsdWRlICJjYWNoZS10cmVlLmgiCiAjaW5jbHVkZSAidHJlZS13YWxrLmgiCiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgorI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCiAjaW5jbHVkZSAic3VibW9kdWxlLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYnVpbHRpbl9ybV91c2FnZVtdID0gewpAQCAtMzYsMTAgKzM3LDMyIEBACiAJcmV0dXJuIC0xOwogfQogCitzdGF0aWMgdm9pZCBwcmludF9lcnJvcl9maWxlcyhzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmZpbGVzX2xpc3QsCisJCQkgICAgICBjb25zdCBjaGFyICptYWluX21zZywKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmhpbnRzX21zZywKKwkJCSAgICAgIGludCAqZXJycykKK3sKKwlpZiAoZmlsZXNfbGlzdC0+bnIpIHsKKwkJaW50IGk7CisJCXN0cnVjdCBzdHJidWYgZXJyX21zZyA9IFNUUkJVRl9JTklUOworCisJCXN0cmJ1Zl9hZGRzdHIoJmVycl9tc2csIG1haW5fbXNnKTsKKwkJZm9yIChpID0gMDsgaSA8IGZpbGVzX2xpc3QtPm5yOyBpKyspCisJCQlzdHJidWZfYWRkZigmZXJyX21zZywKKwkJCQkgICAgIlxuICAgICVzIiwKKwkJCQkgICAgZmlsZXNfbGlzdC0+aXRlbXNbaV0uc3RyaW5nKTsKKwkJaWYgKGFkdmljZV9ybV9oaW50cykKKwkJCXN0cmJ1Zl9hZGRzdHIoJmVycl9tc2csIGhpbnRzX21zZyk7CisJCSplcnJzID0gZXJyb3IoIiVzIiwgZXJyX21zZy5idWYpOworCQlzdHJidWZfcmVsZWFzZSgmZXJyX21zZyk7CisJfQorfQorCiBzdGF0aWMgaW50IGNoZWNrX3N1Ym1vZHVsZXNfdXNlX2dpdGZpbGVzKHZvaWQpCiB7CiAJaW50IGk7CiAJaW50IGVycnMgPSAwOworCXN0cnVjdCBzdHJpbmdfbGlzdCBmaWxlcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbGlzdC5ucjsgaSsrKSB7CiAJCWNvbnN0IGNoYXIgKm5hbWUgPSBsaXN0LmVudHJ5W2ldLm5hbWU7CkBAIC02MSwxMSArODQsMTggQEAKIAkJCWNvbnRpbnVlOwogCiAJCWlmICghc3VibW9kdWxlX3VzZXNfZ2l0ZmlsZShuYW1lKSkKLQkJCWVycnMgPSBlcnJvcihfKCJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgIgotCQkJCSAgICAgInN1Ym1vZHVsZXMpIHVzZXMgYSAuZ2l0IGRpcmVjdG9yeVxuIgotCQkJCSAgICAgIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSAiCi0JCQkJICAgICAiaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiKSwgbmFtZSk7CisJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJmZpbGVzLCBuYW1lKTsKIAl9CisJcHJpbnRfZXJyb3JfZmlsZXMoJmZpbGVzLAorCQkJICBRXygidGhlIGZvbGxvd2luZyBzdWJtb2R1bGUgKG9yIG9uZSBvZiBpdHMgbmVzdGVkICIKKwkJCSAgICAgInN1Ym1vZHVsZXMpXG4gdXNlcyBhIC5naXQgZGlyZWN0b3J5OiIsCisJCQkgICAgICJ0aGUgZm9sbG93aW5nIHN1Ym1vZHVsZXMgKG9yIG9uZSBvZiBpdHMgbmVzdGVkICIKKwkJCSAgICAgInN1Ym1vZHVsZXMpXG4gdXNlIGEgLmdpdCBkaXJlY3Rvcnk6IiwKKwkJCSAgICAgZmlsZXMubnIpLAorCQkJICBfKCJcbih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSAiCisJCQkgICAgIml0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIiksCisJCQkgICZlcnJzKTsKKwlzdHJpbmdfbGlzdF9jbGVhcigmZmlsZXMsIDApOwogCiAJcmV0dXJuIGVycnM7CiB9CkBAIC04MSw2ICsxMTEsMTAgQEAKIAkgKi8KIAlpbnQgaSwgbm9faGVhZDsKIAlpbnQgZXJycyA9IDA7CisJc3RydWN0IHN0cmluZ19saXN0IGZpbGVzX3N0YWdlZCA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJc3RydWN0IHN0cmluZ19saXN0IGZpbGVzX2NhY2hlZCA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJc3RydWN0IHN0cmluZ19saXN0IGZpbGVzX3N1Ym1vZHVsZSA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJc3RydWN0IHN0cmluZ19saXN0IGZpbGVzX2xvY2FsID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAogCW5vX2hlYWQgPSBpc19udWxsX3NoYTEoaGVhZCk7CiAJZm9yIChpID0gMDsgaSA8IGxpc3QubnI7IGkrKykgewpAQCAtMTEwLDcgKzE0NCw3IEBACiAJCWNlID0gYWN0aXZlX2NhY2hlW3Bvc107CiAKIAkJaWYgKGxzdGF0KGNlLT5uYW1lLCAmc3QpIDwgMCkgewotCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKKwkJCWlmIChlcnJubyAhPSBFTk9FTlQgJiYgZXJybm8gIT0gRU5PVERJUikKIAkJCQl3YXJuaW5nKCInJXMnOiAlcyIsIGNlLT5uYW1lLCBzdHJlcnJvcihlcnJubykpOwogCQkJLyogSXQgYWxyZWFkeSB2YW5pc2hlZCBmcm9tIHRoZSB3b3JraW5nIHRyZWUgKi8KIAkJCWNvbnRpbnVlOwpAQCAtMTcxLDI5ICsyMDUsNTggQEAKIAkJICovCiAJCWlmIChsb2NhbF9jaGFuZ2VzICYmIHN0YWdlZF9jaGFuZ2VzKSB7CiAJCQlpZiAoIWluZGV4X29ubHkgfHwgIShjZS0+Y2VfZmxhZ3MgJiBDRV9JTlRFTlRfVE9fQUREKSkKLQkJCQllcnJzID0gZXJyb3IoXygiJyVzJyBoYXMgc3RhZ2VkIGNvbnRlbnQgZGlmZmVyZW50ICIKLQkJCQkJICAgICAiZnJvbSBib3RoIHRoZSBmaWxlIGFuZCB0aGUgSEVBRFxuIgotCQkJCQkgICAgICIodXNlIC1mIHRvIGZvcmNlIHJlbW92YWwpIiksIG5hbWUpOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfc3RhZ2VkLCBuYW1lKTsKIAkJfQogCQllbHNlIGlmICghaW5kZXhfb25seSkgewogCQkJaWYgKHN0YWdlZF9jaGFuZ2VzKQotCQkJCWVycnMgPSBlcnJvcihfKCInJXMnIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXhcbiIKLQkJCQkJICAgICAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCAiCi0JCQkJCSAgICAgIm9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIiksIG5hbWUpOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfY2FjaGVkLCBuYW1lKTsKIAkJCWlmIChsb2NhbF9jaGFuZ2VzKSB7CiAJCQkJaWYgKFNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKSAmJgotCQkJCSAgICAhc3VibW9kdWxlX3VzZXNfZ2l0ZmlsZShuYW1lKSkgewotCQkJCQllcnJzID0gZXJyb3IoXygic3VibW9kdWxlICclcycgKG9yIG9uZSBvZiBpdHMgbmVzdGVkICIKLQkJCQkJCSAgICAgInN1Ym1vZHVsZXMpIHVzZXMgYSAuZ2l0IGRpcmVjdG9yeVxuIgotCQkJCQkJICAgICAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlICIKLQkJCQkJCSAgICAgIml0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIiksIG5hbWUpOwotCQkJCX0gZWxzZQotCQkJCQllcnJzID0gZXJyb3IoXygiJyVzJyBoYXMgbG9jYWwgbW9kaWZpY2F0aW9uc1xuIgotCQkJCQkJICAgICAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCAiCi0JCQkJCQkgICAgICJvciAtZiB0byBmb3JjZSByZW1vdmFsKSIpLCBuYW1lKTsKKwkJCQkgICAgIXN1Ym1vZHVsZV91c2VzX2dpdGZpbGUobmFtZSkpCisJCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfc3VibW9kdWxlLCBuYW1lKTsKKwkJCQllbHNlCisJCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfbG9jYWwsIG5hbWUpOwogCQkJfQogCQl9CiAJfQorCXByaW50X2Vycm9yX2ZpbGVzKCZmaWxlc19zdGFnZWQsCisJCQkgIFFfKCJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCAiCisJCQkgICAgICJmcm9tIGJvdGggdGhlXG5maWxlIGFuZCB0aGUgSEVBRDoiLAorCQkJICAgICAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCIKKwkJCSAgICAgIiBmcm9tIGJvdGggdGhlXG5maWxlIGFuZCB0aGUgSEVBRDoiLAorCQkJICAgICBmaWxlc19zdGFnZWQubnIpLAorCQkJICBfKCJcbih1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiKSwKKwkJCSAgJmVycnMpOworCXN0cmluZ19saXN0X2NsZWFyKCZmaWxlc19zdGFnZWQsIDApOworCXByaW50X2Vycm9yX2ZpbGVzKCZmaWxlc19jYWNoZWQsCisJCQkgIFFfKCJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGNoYW5nZXMgIgorCQkJICAgICAic3RhZ2VkIGluIHRoZSBpbmRleDoiLAorCQkJICAgICAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGNoYW5nZXMgIgorCQkJICAgICAic3RhZ2VkIGluIHRoZSBpbmRleDoiLCBmaWxlc19jYWNoZWQubnIpLAorCQkJICBfKCJcbih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwiCisJCQkgICAgIiBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIpLAorCQkJICAmZXJycyk7CisJc3RyaW5nX2xpc3RfY2xlYXIoJmZpbGVzX2NhY2hlZCwgMCk7CisJcHJpbnRfZXJyb3JfZmlsZXMoJmZpbGVzX3N1Ym1vZHVsZSwKKwkJCSAgUV8oInRoZSBmb2xsb3dpbmcgc3VibW9kdWxlIChvciBvbmUgb2YgaXRzIG5lc3RlZCAiCisJCQkgICAgICJzdWJtb2R1bGUpXG51c2VzIGEgLmdpdCBkaXJlY3Rvcnk6IiwKKwkJCSAgICAgInRoZSBmb2xsb3dpbmcgc3VibW9kdWxlcyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgIgorCQkJICAgICAic3VibW9kdWxlKVxudXNlIGEgLmdpdCBkaXJlY3Rvcnk6IiwKKwkJCSAgICAgZmlsZXNfc3VibW9kdWxlLm5yKSwKKwkJCSAgXygiXG4odXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgIgorCQkJICAgICJ3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsICIKKwkJCSAgICAib2YgaXRzIGhpc3RvcnkpIiksCisJCQkgICZlcnJzKTsKKwlzdHJpbmdfbGlzdF9jbGVhcigmZmlsZXNfc3VibW9kdWxlLCAwKTsKKwlwcmludF9lcnJvcl9maWxlcygmZmlsZXNfbG9jYWwsCisJCQkgIFFfKCJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnM6IiwKKwkJCSAgICAgInRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBsb2NhbCBtb2RpZmljYXRpb25zOiIsCisJCQkgICAgIGZpbGVzX2xvY2FsLm5yKSwKKwkJCSAgXygiXG4odXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIgorCQkJICAgICIgb3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiKSwKKwkJCSAgJmVycnMpOworCXN0cmluZ19saXN0X2NsZWFyKCZmaWxlc19sb2NhbCwgMCk7CisKIAlyZXR1cm4gZXJyczsKIH0KIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zZW5kLXBhY2suYyBiL2J1aWx0aW4vc2VuZC1wYWNrLmMKaW5kZXggZDM0MjAxMy4uMTUyYzRlYSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9zZW5kLXBhY2suYworKysgYi9idWlsdGluL3NlbmQtcGFjay5jCkBAIC00NCw2ICs0NCwyMSBAQAogCQkJbXNnID0gIm5vbi1mYXN0IGZvcndhcmQiOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVDoKKwkJCXJlcyA9ICJlcnJvciI7CisJCQltc2cgPSAiZmV0Y2ggZmlyc3QiOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRToKKwkJCXJlcyA9ICJlcnJvciI7CisJCQltc2cgPSAibmVlZHMgZm9yY2UiOworCQkJYnJlYWs7CisKKwkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUzoKKwkJCXJlcyA9ICJlcnJvciI7CisJCQltc2cgPSAiYWxyZWFkeSBleGlzdHMiOworCQkJYnJlYWs7CisKIAkJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9OT0RFTEVURToKIAkJY2FzZSBSRUZfU1RBVFVTX1JFTU9URV9SRUpFQ1Q6CiAJCQlyZXMgPSAiZXJyb3IiOwpAQCAtNjQsNyArNzksNyBAQAogCQl9CiAJCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsKIAotCQlzYWZlX3dyaXRlKDEsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworCQl3cml0ZV9vcl9kaWUoMSwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAJfQogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogfQpAQCAtODUsNyArMTAwLDcgQEAKIAlpbnQgc2VuZF9hbGwgPSAwOwogCWNvbnN0IGNoYXIgKnJlY2VpdmVwYWNrID0gImdpdC1yZWNlaXZlLXBhY2siOwogCWludCBmbGFnczsKLQlpbnQgbm9uZmFzdGZvcndhcmQgPSAwOworCXVuc2lnbmVkIGludCByZWplY3RfcmVhc29uczsKIAlpbnQgcHJvZ3Jlc3MgPSAtMTsKIAogCWFyZ3YrKzsKQEAgLTE5Miw3ICsyMDcsNyBAQAogCiAJbWVtc2V0KCZleHRyYV9oYXZlLCAwLCBzaXplb2YoZXh0cmFfaGF2ZSkpOwogCi0JZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgJnJlbW90ZV9yZWZzLCBSRUZfTk9STUFMLCAmZXh0cmFfaGF2ZSk7CisJZ2V0X3JlbW90ZV9oZWFkcyhmZFswXSwgTlVMTCwgMCwgJnJlbW90ZV9yZWZzLCBSRUZfTk9STUFMLCAmZXh0cmFfaGF2ZSk7CiAKIAl0cmFuc3BvcnRfdmVyaWZ5X3JlbW90ZV9uYW1lcyhucl9yZWZzcGVjcywgcmVmc3BlY3MpOwogCkBAIC0yMjMsNyArMjM4LDcgQEAKIAlyZXQgfD0gZmluaXNoX2Nvbm5lY3QoY29ubik7CiAKIAlpZiAoIWhlbHBlcl9zdGF0dXMpCi0JCXRyYW5zcG9ydF9wcmludF9wdXNoX3N0YXR1cyhkZXN0LCByZW1vdGVfcmVmcywgYXJncy52ZXJib3NlLCAwLCAmbm9uZmFzdGZvcndhcmQpOworCQl0cmFuc3BvcnRfcHJpbnRfcHVzaF9zdGF0dXMoZGVzdCwgcmVtb3RlX3JlZnMsIGFyZ3MudmVyYm9zZSwgMCwgJnJlamVjdF9yZWFzb25zKTsKIAogCWlmICghYXJncy5kcnlfcnVuICYmIHJlbW90ZSkgewogCQlzdHJ1Y3QgcmVmICpyZWY7CmRpZmYgLS1naXQgYS9idWlsdGluL3Nob3J0bG9nLmMgYi9idWlsdGluL3Nob3J0bG9nLmMKaW5kZXggODM2MDUxNC4uMWZkNmY4YSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9zaG9ydGxvZy5jCisrKyBiL2J1aWx0aW4vc2hvcnRsb2cuYwpAQCAtMTAsOSArMTAsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKIAogc3RhdGljIGNoYXIgY29uc3QgKiBjb25zdCBzaG9ydGxvZ191c2FnZVtdID0gewotCU5fKCJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iKSwKLQkiIiwKLQlOXygiW3Jldi1vcHRzXSBhcmUgZG9jdW1lbnRlZCBpbiBnaXQtcmV2LWxpc3QoMSkiKSwKKwlOXygiZ2l0IHNob3J0bG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSBbPHBhdGg+Li4uXV0iKSwKIAlOVUxMCiB9OwogCkBAIC0zNiw1MiArMzQsMjggQEAKIAljb25zdCBjaGFyICpkb3QzID0gbG9nLT5jb21tb25fcmVwb19wcmVmaXg7CiAJY2hhciAqYnVmZmVyLCAqcDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKLQljaGFyIG5hbWVidWZbMTAyNF07Ci0JY2hhciBlbWFpbGJ1ZlsxMDI0XTsKLQlzaXplX3QgbGVuOworCWNvbnN0IGNoYXIgKm1haWxidWYsICpuYW1lYnVmOworCXNpemVfdCBuYW1lbGVuLCBtYWlsbGVuOwogCWNvbnN0IGNoYXIgKmVvbDsKLQljb25zdCBjaGFyICpib2VtYWlsLCAqZW9lbWFpbDsKIAlzdHJ1Y3Qgc3RyYnVmIHN1YmplY3QgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIG5hbWVtYWlsYnVmID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IGlkZW50X3NwbGl0IGlkZW50OwogCi0JYm9lbWFpbCA9IHN0cmNocihhdXRob3IsICc8Jyk7Ci0JaWYgKCFib2VtYWlsKQotCQlyZXR1cm47Ci0JZW9lbWFpbCA9IHN0cmNocihib2VtYWlsLCAnPicpOwotCWlmICghZW9lbWFpbCkKKwlpZiAoc3BsaXRfaWRlbnRfbGluZSgmaWRlbnQsIGF1dGhvciwgc3RybGVuKGF1dGhvcikpKQogCQlyZXR1cm47CiAKLQkvKiBjb3B5IGF1dGhvciBuYW1lIHRvIG5hbWVidWYsIHRvIHN1cHBvcnQgbWF0Y2hpbmcgb24gYm90aCBuYW1lIGFuZCBlbWFpbCAqLwotCW1lbWNweShuYW1lYnVmLCBhdXRob3IsIGJvZW1haWwgLSBhdXRob3IpOwotCWxlbiA9IGJvZW1haWwgLSBhdXRob3I7Ci0Jd2hpbGUgKGxlbiA+IDAgJiYgaXNzcGFjZShuYW1lYnVmW2xlbi0xXSkpCi0JCWxlbi0tOwotCW5hbWVidWZbbGVuXSA9IDA7CisJbmFtZWJ1ZiA9IGlkZW50Lm5hbWVfYmVnaW47CisJbWFpbGJ1ZiA9IGlkZW50Lm1haWxfYmVnaW47CisJbmFtZWxlbiA9IGlkZW50Lm5hbWVfZW5kIC0gaWRlbnQubmFtZV9iZWdpbjsKKwltYWlsbGVuID0gaWRlbnQubWFpbF9lbmQgLSBpZGVudC5tYWlsX2JlZ2luOwogCi0JLyogY29weSBlbWFpbCBuYW1lIHRvIGVtYWlsYnVmLCB0byBhbGxvdyBlbWFpbCByZXBsYWNlbWVudCBhcyB3ZWxsICovCi0JbWVtY3B5KGVtYWlsYnVmLCBib2VtYWlsKzEsIGVvZW1haWwgLSBib2VtYWlsKTsKLQllbWFpbGJ1Zltlb2VtYWlsIC0gYm9lbWFpbCAtIDFdID0gMDsKKwltYXBfdXNlcigmbG9nLT5tYWlsbWFwLCAmbWFpbGJ1ZiwgJm1haWxsZW4sICZuYW1lYnVmLCAmbmFtZWxlbik7CisJc3RyYnVmX2FkZCgmbmFtZW1haWxidWYsIG5hbWVidWYsIG5hbWVsZW4pOwogCi0JaWYgKCFtYXBfdXNlcigmbG9nLT5tYWlsbWFwLCBlbWFpbGJ1Ziwgc2l6ZW9mKGVtYWlsYnVmKSwgbmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpKSkgewotCQl3aGlsZSAoYXV0aG9yIDwgYm9lbWFpbCAmJiBpc3NwYWNlKCphdXRob3IpKQotCQkJYXV0aG9yKys7Ci0JCWZvciAobGVuID0gMDsKLQkJICAgICBsZW4gPCBzaXplb2YobmFtZWJ1ZikgLSAxICYmIGF1dGhvciArIGxlbiA8IGJvZW1haWw7Ci0JCSAgICAgbGVuKyspCi0JCQluYW1lYnVmW2xlbl0gPSBhdXRob3JbbGVuXTsKLQkJd2hpbGUgKDAgPCBsZW4gJiYgaXNzcGFjZShuYW1lYnVmW2xlbi0xXSkpCi0JCQlsZW4tLTsKLQkJbmFtZWJ1ZltsZW5dID0gJ1wwJzsKLQl9Ci0JZWxzZQotCQlsZW4gPSBzdHJsZW4obmFtZWJ1Zik7CisJaWYgKGxvZy0+ZW1haWwpCisJCXN0cmJ1Zl9hZGRmKCZuYW1lbWFpbGJ1ZiwgIiA8JS4qcz4iLCAoaW50KW1haWxsZW4sIG1haWxidWYpOwogCi0JaWYgKGxvZy0+ZW1haWwpIHsKLQkJc2l6ZV90IHJvb20gPSBzaXplb2YobmFtZWJ1ZikgLSBsZW4gLSAxOwotCQlpbnQgbWFpbGxlbiA9IHN0cmxlbihlbWFpbGJ1Zik7Ci0JCXNucHJpbnRmKG5hbWVidWYgKyBsZW4sIHJvb20sICIgPCUuKnM+IiwgbWFpbGxlbiwgZW1haWxidWYpOwotCX0KLQotCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQoJmxvZy0+bGlzdCwgbmFtZWJ1Zik7CisJaXRlbSA9IHN0cmluZ19saXN0X2luc2VydCgmbG9nLT5saXN0LCBuYW1lbWFpbGJ1Zi5idWYpOwogCWlmIChpdGVtLT51dGlsID09IE5VTEwpCiAJCWl0ZW0tPnV0aWwgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKIApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zaG93LWJyYW5jaC5jIGIvYnVpbHRpbi9zaG93LWJyYW5jaC5jCmluZGV4IGQyMDhmZDYuLjkwZmM2YjEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc2hvdy1icmFuY2guYworKysgYi9idWlsdGluL3Nob3ctYnJhbmNoLmMKQEAgLTE2MiwyOSArMTYyLDI4IEBACiAJCQludGggPSAwOwogCQkJd2hpbGUgKHBhcmVudHMpIHsKIAkJCQlzdHJ1Y3QgY29tbWl0ICpwID0gcGFyZW50cy0+aXRlbTsKLQkJCQljaGFyIG5ld25hbWVbMTAwMF0sICplbjsKKwkJCQlzdHJ1Y3Qgc3RyYnVmIG5ld25hbWUgPSBTVFJCVUZfSU5JVDsKIAkJCQlwYXJlbnRzID0gcGFyZW50cy0+bmV4dDsKIAkJCQludGgrKzsKIAkJCQlpZiAocC0+dXRpbCkKIAkJCQkJY29udGludWU7Ci0JCQkJZW4gPSBuZXduYW1lOwogCQkJCXN3aXRjaCAobi0+Z2VuZXJhdGlvbikgewogCQkJCWNhc2UgMDoKLQkJCQkJZW4gKz0gc3ByaW50ZihlbiwgIiVzIiwgbi0+aGVhZF9uYW1lKTsKKwkJCQkJc3RyYnVmX2FkZHN0cigmbmV3bmFtZSwgbi0+aGVhZF9uYW1lKTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSAxOgotCQkJCQllbiArPSBzcHJpbnRmKGVuLCAiJXNeIiwgbi0+aGVhZF9uYW1lKTsKKwkJCQkJc3RyYnVmX2FkZGYoJm5ld25hbWUsICIlc14iLCBuLT5oZWFkX25hbWUpOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgotCQkJCQllbiArPSBzcHJpbnRmKGVuLCAiJXN+JWQiLAotCQkJCQkJbi0+aGVhZF9uYW1lLCBuLT5nZW5lcmF0aW9uKTsKKwkJCQkJc3RyYnVmX2FkZGYoJm5ld25hbWUsICIlc34lZCIsCisJCQkJCQkgICAgbi0+aGVhZF9uYW1lLCBuLT5nZW5lcmF0aW9uKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJCWlmIChudGggPT0gMSkKLQkJCQkJZW4gKz0gc3ByaW50ZihlbiwgIl4iKTsKKwkJCQkJc3RyYnVmX2FkZGNoKCZuZXduYW1lLCAnXicpOwogCQkJCWVsc2UKLQkJCQkJZW4gKz0gc3ByaW50ZihlbiwgIl4lZCIsIG50aCk7Ci0JCQkJbmFtZV9jb21taXQocCwgeHN0cmR1cChuZXduYW1lKSwgMCk7CisJCQkJCXN0cmJ1Zl9hZGRmKCZuZXduYW1lLCAiXiVkIiwgbnRoKTsKKwkJCQluYW1lX2NvbW1pdChwLCBzdHJidWZfZGV0YWNoKCZuZXduYW1lLCBOVUxMKSwgMCk7CiAJCQkJaSsrOwogCQkJCW5hbWVfZmlyc3RfcGFyZW50X2NoYWluKHApOwogCQkJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zaG93LXJlZi5jIGIvYnVpbHRpbi9zaG93LXJlZi5jCmluZGV4IDhkOWI3NmEuLjRhMDMxMGQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc2hvdy1yZWYuYworKysgYi9idWlsdGluL3Nob3ctcmVmLmMKQEAgLTEwMyw3ICsxMDMsNyBAQAogICovCiBzdGF0aWMgaW50IGV4Y2x1ZGVfZXhpc3RpbmcoY29uc3QgY2hhciAqbWF0Y2gpCiB7Ci0Jc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBleGlzdGluZ19yZWZzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGV4aXN0aW5nX3JlZnMgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAljaGFyIGJ1ZlsxMDI0XTsKIAlpbnQgbWF0Y2hsZW4gPSBtYXRjaCA/IHN0cmxlbihtYXRjaCkgOiAwOwogCmRpZmYgLS1naXQgYS9idWlsdGluL3N0cmlwc3BhY2UuYyBiL2J1aWx0aW4vc3RyaXBzcGFjZS5jCmluZGV4IGYxNjk4NmMuLmU5ODFkZmIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc3RyaXBzcGFjZS5jCisrKyBiL2J1aWx0aW4vc3RyaXBzcGFjZS5jCkBAIC0zMCw3ICszMCw4IEBACiAgKgogICogSWYgbGFzdCBsaW5lIGRvZXMgbm90IGhhdmUgYSBuZXdsaW5lIGF0IHRoZSBlbmQsIG9uZSBpcyBhZGRlZC4KICAqCi0gKiBFbmFibGUgc2tpcF9jb21tZW50cyB0byBza2lwIGV2ZXJ5IGxpbmUgc3RhcnRpbmcgd2l0aCAiIyIuCisgKiBFbmFibGUgc2tpcF9jb21tZW50cyB0byBza2lwIGV2ZXJ5IGxpbmUgc3RhcnRpbmcgd2l0aCBjb21tZW50CisgKiBjaGFyYWN0ZXIuCiAgKi8KIHZvaWQgc3RyaXBzcGFjZShzdHJ1Y3Qgc3RyYnVmICpzYiwgaW50IHNraXBfY29tbWVudHMpCiB7CkBAIC00NSw3ICs0Niw3IEBACiAJCWVvbCA9IG1lbWNocihzYi0+YnVmICsgaSwgJ1xuJywgc2ItPmxlbiAtIGkpOwogCQlsZW4gPSBlb2wgPyBlb2wgLSAoc2ItPmJ1ZiArIGkpICsgMSA6IHNiLT5sZW4gLSBpOwogCi0JCWlmIChza2lwX2NvbW1lbnRzICYmIGxlbiAmJiBzYi0+YnVmW2ldID09ICcjJykgeworCQlpZiAoc2tpcF9jb21tZW50cyAmJiBsZW4gJiYgc2ItPmJ1ZltpXSA9PSBjb21tZW50X2xpbmVfY2hhcikgewogCQkJbmV3bGVuID0gMDsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC02NiwyMSArNjcsNTMgQEAKIAlzdHJidWZfc2V0bGVuKHNiLCBqKTsKIH0KIAorc3RhdGljIHZvaWQgY29tbWVudF9saW5lcyhzdHJ1Y3Qgc3RyYnVmICpidWYpCit7CisJY2hhciAqbXNnOworCXNpemVfdCBsZW47CisKKwltc2cgPSBzdHJidWZfZGV0YWNoKGJ1ZiwgJmxlbik7CisJc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXMoYnVmLCBtc2csIGxlbik7CisJZnJlZShtc2cpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqdXNhZ2VfbXNnID0gIlxuIgorIiAgZ2l0IHN0cmlwc3BhY2UgWy1zIHwgLS1zdHJpcC1jb21tZW50c10gPCBpbnB1dFxuIgorIiAgZ2l0IHN0cmlwc3BhY2UgWy1jIHwgLS1jb21tZW50LWxpbmVzXSA8IGlucHV0IjsKKwogaW50IGNtZF9zdHJpcHNwYWNlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJaW50IHN0cmlwX2NvbW1lbnRzID0gMDsKKwllbnVtIHsgSU5WQUwgPSAwLCBTVFJJUF9TUEFDRSA9IDEsIENPTU1FTlRfTElORVMgPSAyIH0gbW9kZSA9IFNUUklQX1NQQUNFOwogCi0JaWYgKGFyZ2MgPT0gMiAmJiAoIXN0cmNtcChhcmd2WzFdLCAiLXMiKSB8fAotCQkJCSFzdHJjbXAoYXJndlsxXSwgIi0tc3RyaXAtY29tbWVudHMiKSkpCi0JCXN0cmlwX2NvbW1lbnRzID0gMTsKLQllbHNlIGlmIChhcmdjID4gMSkKLQkJdXNhZ2UoImdpdCBzdHJpcHNwYWNlIFstcyB8IC0tc3RyaXAtY29tbWVudHNdIDwgaW5wdXQiKTsKKwlpZiAoYXJnYyA9PSAyKSB7CisJCWlmICghc3RyY21wKGFyZ3ZbMV0sICItcyIpIHx8CisJCQkhc3RyY21wKGFyZ3ZbMV0sICItLXN0cmlwLWNvbW1lbnRzIikpIHsKKwkJCSBzdHJpcF9jb21tZW50cyA9IDE7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAiLWMiKSB8fAorCQkJCQkgIXN0cmNtcChhcmd2WzFdLCAiLS1jb21tZW50LWxpbmVzIikpIHsKKwkJCSBtb2RlID0gQ09NTUVOVF9MSU5FUzsKKwkJfSBlbHNlIHsKKwkJCW1vZGUgPSBJTlZBTDsKKwkJfQorCX0gZWxzZSBpZiAoYXJnYyA+IDEpIHsKKwkJbW9kZSA9IElOVkFMOworCX0KKworCWlmIChtb2RlID09IElOVkFMKQorCQl1c2FnZSh1c2FnZV9tc2cpOworCisJaWYgKHN0cmlwX2NvbW1lbnRzIHx8IG1vZGUgPT0gQ09NTUVOVF9MSU5FUykKKwkJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOwogCiAJaWYgKHN0cmJ1Zl9yZWFkKCZidWYsIDAsIDEwMjQpIDwgMCkKIAkJZGllX2Vycm5vKCJjb3VsZCBub3QgcmVhZCB0aGUgaW5wdXQiKTsKIAotCXN0cmlwc3BhY2UoJmJ1Ziwgc3RyaXBfY29tbWVudHMpOworCWlmIChtb2RlID09IFNUUklQX1NQQUNFKQorCQlzdHJpcHNwYWNlKCZidWYsIHN0cmlwX2NvbW1lbnRzKTsKKwllbHNlCisJCWNvbW1lbnRfbGluZXMoJmJ1Zik7CiAKIAl3cml0ZV9vcl9kaWUoMSwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CmRpZmYgLS1naXQgYS9idWlsdGluL3RhZy5jIGIvYnVpbHRpbi90YWcuYwppbmRleCA5YzNlMDY3Li5hZjNhZjNmIDEwMDY0NAotLS0gYS9idWlsdGluL3RhZy5jCisrKyBiL2J1aWx0aW4vdGFnLmMKQEAgLTI0NiwxOSArMjQ2LDEzIEBACiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIHRhZ190ZW1wbGF0ZVtdID0KLQlOXygiXG4iCi0JIiNcbiIKLQkiIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0JIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLlxuIgotCSIjXG4iKTsKKwlOXygiXG5Xcml0ZSBhIHRhZyBtZXNzYWdlXG4iCisJIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQuXG4iKTsKIAogc3RhdGljIGNvbnN0IGNoYXIgdGFnX3RlbXBsYXRlX25vY2xlYW51cFtdID0KLQlOXygiXG4iCi0JIiNcbiIKLQkiIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0JIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIgotCSIgeW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCi0JIiNcbiIpOworCU5fKCJcbldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKwkiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSIKKwkiIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIik7CiAKIHN0YXRpYyBpbnQgZ2l0X3RhZ19jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCiB7CkBAIC0zNDYsMTQgKzM0MCwxOCBAQAogCQlpZiAoZmQgPCAwKQogCQkJZGllX2Vycm5vKF8oImNvdWxkIG5vdCBjcmVhdGUgZmlsZSAnJXMnIiksIHBhdGgpOwogCi0JCWlmICghaXNfbnVsbF9zaGExKHByZXYpKQorCQlpZiAoIWlzX251bGxfc2hhMShwcmV2KSkgewogCQkJd3JpdGVfdGFnX2JvZHkoZmQsIHByZXYpOwotCQllbHNlIGlmIChvcHQtPmNsZWFudXBfbW9kZSA9PSBDTEVBTlVQX0FMTCkKLQkJCXdyaXRlX29yX2RpZShmZCwgXyh0YWdfdGVtcGxhdGUpLAotCQkJCQlzdHJsZW4oXyh0YWdfdGVtcGxhdGUpKSk7Ci0JCWVsc2UKLQkJCXdyaXRlX29yX2RpZShmZCwgXyh0YWdfdGVtcGxhdGVfbm9jbGVhbnVwKSwKLQkJCQkJc3RybGVuKF8odGFnX3RlbXBsYXRlX25vY2xlYW51cCkpKTsKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJCQlzdHJidWZfYWRkY2goJmJ1ZiwgJ1xuJyk7CisJCQlpZiAob3B0LT5jbGVhbnVwX21vZGUgPT0gQ0xFQU5VUF9BTEwpCisJCQkJc3RyYnVmX2NvbW1lbnRlZF9hZGRmKCZidWYsIF8odGFnX3RlbXBsYXRlKSwgY29tbWVudF9saW5lX2NoYXIpOworCQkJZWxzZQorCQkJCXN0cmJ1Zl9jb21tZW50ZWRfYWRkZigmYnVmLCBfKHRhZ190ZW1wbGF0ZV9ub2NsZWFudXApLCBjb21tZW50X2xpbmVfY2hhcik7CisJCQl3cml0ZV9vcl9kaWUoZmQsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworCQkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCX0KIAkJY2xvc2UoZmQpOwogCiAJCWlmIChsYXVuY2hfZWRpdG9yKHBhdGgsIGJ1ZiwgTlVMTCkpIHsKQEAgLTU4NCw3ICs1ODIsNyBAQAogCQlkaWUoXygiJXM6IGNhbm5vdCBsb2NrIHRoZSByZWYiKSwgcmVmLmJ1Zik7CiAJaWYgKHdyaXRlX3JlZl9zaGExKGxvY2ssIG9iamVjdCwgTlVMTCkgPCAwKQogCQlkaWUoXygiJXM6IGNhbm5vdCB1cGRhdGUgdGhlIHJlZiIpLCByZWYuYnVmKTsKLQlpZiAoZm9yY2UgJiYgaGFzaGNtcChwcmV2LCBvYmplY3QpKQorCWlmIChmb3JjZSAmJiAhaXNfbnVsbF9zaGExKHByZXYpICYmIGhhc2hjbXAocHJldiwgb2JqZWN0KSkKIAkJcHJpbnRmKF8oIlVwZGF0ZWQgdGFnICclcycgKHdhcyAlcylcbiIpLCB0YWcsIGZpbmRfdW5pcXVlX2FiYnJldihwcmV2LCBERUZBVUxUX0FCQlJFVikpOwogCiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CmRpZmYgLS1naXQgYS9idWlsdGluL3VwbG9hZC1hcmNoaXZlLmMgYi9idWlsdGluL3VwbG9hZC1hcmNoaXZlLmMKaW5kZXggYjkyOGJlYi4uYWYyZGEzNSAxMDA2NDQKLS0tIGEvYnVpbHRpbi91cGxvYWQtYXJjaGl2ZS5jCisrKyBiL2J1aWx0aW4vdXBsb2FkLWFyY2hpdmUuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlICJwa3QtbGluZS5oIgogI2luY2x1ZGUgInNpZGViYW5kLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKKyNpbmNsdWRlICJhcmd2LWFycmF5LmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyIHVwbG9hZF9hcmNoaXZlX3VzYWdlW10gPQogCSJnaXQgdXBsb2FkLWFyY2hpdmUgPHJlcG8+IjsKQEAgLTE4LDUxICsxOSwzMSBAQAogCiBpbnQgY21kX3VwbG9hZF9hcmNoaXZlX3dyaXRlcihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQljb25zdCBjaGFyICpzZW50X2FyZ3ZbTUFYX0FSR1NdOworCXN0cnVjdCBhcmd2X2FycmF5IHNlbnRfYXJndiA9IEFSR1ZfQVJSQVlfSU5JVDsKIAljb25zdCBjaGFyICphcmdfY21kID0gImFyZ3VtZW50ICI7Ci0JY2hhciAqcCwgYnVmWzQwOTZdOwotCWludCBzZW50X2FyZ2M7Ci0JaW50IGxlbjsKIAogCWlmIChhcmdjICE9IDIpCiAJCXVzYWdlKHVwbG9hZF9hcmNoaXZlX3VzYWdlKTsKIAotCWlmIChzdHJsZW4oYXJndlsxXSkgKyAxID4gc2l6ZW9mKGJ1ZikpCi0JCWRpZSgiaW5zYW5lbHkgbG9uZyByZXBvc2l0b3J5IG5hbWUiKTsKLQotCXN0cmNweShidWYsIGFyZ3ZbMV0pOyAvKiBlbnRlci1yZXBvIHNtdWRnZXMgaXRzIGFyZ3VtZW50ICovCi0KLQlpZiAoIWVudGVyX3JlcG8oYnVmLCAwKSkKLQkJZGllKCInJXMnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIGdpdCByZXBvc2l0b3J5IiwgYnVmKTsKKwlpZiAoIWVudGVyX3JlcG8oYXJndlsxXSwgMCkpCisJCWRpZSgiJyVzJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBnaXQgcmVwb3NpdG9yeSIsIGFyZ3ZbMV0pOwogCiAJLyogcHV0IHJlY2VpdmVkIG9wdGlvbnMgaW4gc2VudF9hcmd2W10gKi8KLQlzZW50X2FyZ2MgPSAxOwotCXNlbnRfYXJndlswXSA9ICJnaXQtdXBsb2FkLWFyY2hpdmUiOwotCWZvciAocCA9IGJ1Zjs7KSB7Ci0JCS8qIFRoaXMgd2lsbCBkaWUgaWYgbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIGJ1ZiAqLwotCQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKDAsIHAsIChidWYgKyBzaXplb2YgYnVmKSAtIHApOwotCQlpZiAobGVuID09IDApCisJYXJndl9hcnJheV9wdXNoKCZzZW50X2FyZ3YsICJnaXQtdXBsb2FkLWFyY2hpdmUiKTsKKwlmb3IgKDs7KSB7CisJCWNoYXIgKmJ1ZiA9IHBhY2tldF9yZWFkX2xpbmUoMCwgTlVMTCk7CisJCWlmICghYnVmKQogCQkJYnJlYWs7CS8qIGdvdCBhIGZsdXNoICovCi0JCWlmIChzZW50X2FyZ2MgPiBNQVhfQVJHUyAtIDIpCi0JCQlkaWUoIlRvbyBtYW55IG9wdGlvbnMgKD4lZCkiLCBNQVhfQVJHUyAtIDIpOworCQlpZiAoc2VudF9hcmd2LmFyZ2MgPiBNQVhfQVJHUykKKwkJCWRpZSgiVG9vIG1hbnkgb3B0aW9ucyAoPiVkKSIsIE1BWF9BUkdTIC0gMSk7CiAKLQkJaWYgKHBbbGVuLTFdID09ICdcbicpIHsKLQkJCXBbLS1sZW5dID0gMDsKLQkJfQotCQlpZiAobGVuIDwgc3RybGVuKGFyZ19jbWQpIHx8Ci0JCSAgICBzdHJuY21wKGFyZ19jbWQsIHAsIHN0cmxlbihhcmdfY21kKSkpCisJCWlmIChwcmVmaXhjbXAoYnVmLCBhcmdfY21kKSkKIAkJCWRpZSgiJ2FyZ3VtZW50JyB0b2tlbiBvciBmbHVzaCBleHBlY3RlZCIpOwotCi0JCWxlbiAtPSBzdHJsZW4oYXJnX2NtZCk7Ci0JCW1lbW1vdmUocCwgcCArIHN0cmxlbihhcmdfY21kKSwgbGVuKTsKLQkJc2VudF9hcmd2W3NlbnRfYXJnYysrXSA9IHA7Ci0JCXAgKz0gbGVuOwotCQkqcCsrID0gMDsKKwkJYXJndl9hcnJheV9wdXNoKCZzZW50X2FyZ3YsIGJ1ZiArIHN0cmxlbihhcmdfY21kKSk7CiAJfQotCXNlbnRfYXJndltzZW50X2FyZ2NdID0gTlVMTDsKIAogCS8qIHBhcnNlIGFsbCBvcHRpb25zIHNlbnQgYnkgdGhlIGNsaWVudCAqLwotCXJldHVybiB3cml0ZV9hcmNoaXZlKHNlbnRfYXJnYywgc2VudF9hcmd2LCBwcmVmaXgsIDAsIE5VTEwsIDEpOworCXJldHVybiB3cml0ZV9hcmNoaXZlKHNlbnRfYXJndi5hcmdjLCBzZW50X2FyZ3YuYXJndiwgcHJlZml4LCAwLCBOVUxMLCAxKTsKIH0KIAogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vdmVyaWZ5LXRhZy5jIGIvYnVpbHRpbi92ZXJpZnktdGFnLmMKaW5kZXggYThlZWU4OC4uOWNkZjMzMiAxMDA2NDQKLS0tIGEvYnVpbHRpbi92ZXJpZnktdGFnLmMKKysrIGIvYnVpbHRpbi92ZXJpZnktdGFnLmMKQEAgLTI5LDcgKzI5LDcgQEAKIAlpZiAoc2l6ZSA9PSBsZW4pCiAJCXJldHVybiBlcnJvcigibm8gc2lnbmF0dXJlIGZvdW5kIik7CiAKLQlyZXR1cm4gdmVyaWZ5X3NpZ25lZF9idWZmZXIoYnVmLCBsZW4sIGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgTlVMTCk7CisJcmV0dXJuIHZlcmlmeV9zaWduZWRfYnVmZmVyKGJ1ZiwgbGVuLCBidWYgKyBsZW4sIHNpemUgLSBsZW4sIE5VTEwsIE5VTEwpOwogfQogCiBzdGF0aWMgaW50IHZlcmlmeV90YWcoY29uc3QgY2hhciAqbmFtZSwgaW50IHZlcmJvc2UpCmRpZmYgLS1naXQgYS9idW5kbGUuYyBiL2J1bmRsZS5jCmluZGV4IDUwNWUwN2UuLjNkNjQzMTEgMTAwNjQ0Ci0tLSBhL2J1bmRsZS5jCisrKyBiL2J1bmRsZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiAJCSAqIGZvbGxvd2VkIGJ5IFNQIGFuZCBzdWJqZWN0IGxpbmUuCiAJCSAqLwogCQlpZiAoZ2V0X3NoYTFfaGV4KGJ1Zi5idWYsIHNoYTEpIHx8Ci0JCSAgICAoNDAgPD0gYnVmLmxlbiAmJiAhaXNzcGFjZShidWYuYnVmWzQwXSkpIHx8CisJCSAgICAoYnVmLmxlbiA+IDQwICYmICFpc3NwYWNlKGJ1Zi5idWZbNDBdKSkgfHwKIAkJICAgICghaXNfcHJlcmVxICYmIGJ1Zi5sZW4gPD0gNDApKSB7CiAJCQlpZiAocmVwb3J0X3BhdGgpCiAJCQkJZXJyb3IoXygidW5yZWNvZ25pemVkIGhlYWRlcjogJXMlcyAoJWQpIiksCkBAIC0yODEsNyArMjgxLDcgQEAKIAkJCWlmICghZ2V0X3NoYTFfaGV4KGJ1Zi5idWYgKyAxLCBzaGExKSkgewogCQkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHBhcnNlX29iamVjdF9vcl9kaWUoc2hhMSwgYnVmLmJ1Zik7CiAJCQkJb2JqZWN0LT5mbGFncyB8PSBVTklOVEVSRVNUSU5HOwotCQkJCWFkZF9wZW5kaW5nX29iamVjdCgmcmV2cywgb2JqZWN0LCB4c3RyZHVwKGJ1Zi5idWYpKTsKKwkJCQlhZGRfcGVuZGluZ19vYmplY3QoJnJldnMsIG9iamVjdCwgYnVmLmJ1Zik7CiAJCQl9CiAJCX0gZWxzZSBpZiAoIWdldF9zaGExX2hleChidWYuYnVmLCBzaGExKSkgewogCQkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gcGFyc2Vfb2JqZWN0X29yX2RpZShzaGExLCBidWYuYnVmKTsKZGlmZiAtLWdpdCBhL2NhY2hlLmggYi9jYWNoZS5oCmluZGV4IDM2MjJlMTguLmVjODI0MGYgMTAwNjQ0Ci0tLSBhL2NhY2hlLmgKKysrIGIvY2FjaGUuaApAQCAtMzQsNiArMzQsNyBAQAogCiB2b2lkIGdpdF9kZWZsYXRlX2luaXQoZ2l0X3pzdHJlYW0gKiwgaW50IGxldmVsKTsKIHZvaWQgZ2l0X2RlZmxhdGVfaW5pdF9nemlwKGdpdF96c3RyZWFtICosIGludCBsZXZlbCk7Cit2b2lkIGdpdF9kZWZsYXRlX2luaXRfcmF3KGdpdF96c3RyZWFtICosIGludCBsZXZlbCk7CiB2b2lkIGdpdF9kZWZsYXRlX2VuZChnaXRfenN0cmVhbSAqKTsKIGludCBnaXRfZGVmbGF0ZV9hYm9ydChnaXRfenN0cmVhbSAqKTsKIGludCBnaXRfZGVmbGF0ZV9lbmRfZ2VudGx5KGdpdF96c3RyZWFtICopOwpAQCAtMTYxLDYgKzE2Miw5IEBACiAjZGVmaW5lIENFX1VOUEFDS0VEICAgICAgICAgICgxIDw8IDI0KQogI2RlZmluZSBDRV9ORVdfU0tJUF9XT1JLVFJFRSAoMSA8PCAyNSkKIAorLyogdXNlZCB0byB0ZW1wb3JhcmlseSBtYXJrIHBhdGhzIG1hdGNoZWQgYnkgcGF0aHNwZWNzICovCisjZGVmaW5lIENFX01BVENIRUQgICAgICAgICAgICgxIDw8IDI2KQorCiAvKgogICogRXh0ZW5kZWQgb24tZGlzayBmbGFncwogICovCkBAIC0xODYsNyArMTkwLDggQEAKICAqIGFub3RoZXIuIEJ1dCB3ZSBuZXZlciBjaGFuZ2UgdGhlIG5hbWUsIG9yIHRoZSBoYXNoIHN0YXRlIQogICovCiAjZGVmaW5lIENFX1NUQVRFX01BU0sgKENFX0hBU0hFRCB8IENFX1VOSEFTSEVEKQotc3RhdGljIGlubGluZSB2b2lkIGNvcHlfY2FjaGVfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpkc3QsIHN0cnVjdCBjYWNoZV9lbnRyeSAqc3JjKQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfY2FjaGVfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpkc3QsCisJCQkJICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqc3JjKQogewogCXVuc2lnbmVkIGludCBzdGF0ZSA9IGRzdC0+Y2VfZmxhZ3MgJiBDRV9TVEFURV9NQVNLOwogCkBAIC0yMTgsNyArMjIzLDggQEAKIAkJcmV0dXJuIFNfSUZHSVRMSU5LOwogCXJldHVybiBTX0lGUkVHIHwgY2VfcGVybWlzc2lvbnMobW9kZSk7CiB9Ci1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjZV9tb2RlX2Zyb21fc3RhdChzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCB1bnNpZ25lZCBpbnQgbW9kZSkKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNlX21vZGVfZnJvbV9zdGF0KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJCSAgICAgdW5zaWduZWQgaW50IG1vZGUpCiB7CiAJZXh0ZXJuIGludCB0cnVzdF9leGVjdXRhYmxlX2JpdCwgaGFzX3N5bWxpbmtzOwogCWlmICghaGFzX3N5bWxpbmtzICYmIFNfSVNSRUcobW9kZSkgJiYKQEAgLTMwNyw2ICszMTMsNyBAQAogI2RlZmluZSByZXNvbHZlX3VuZG9fY2xlYXIoKSByZXNvbHZlX3VuZG9fY2xlYXJfaW5kZXgoJnRoZV9pbmRleCkKICNkZWZpbmUgdW5tZXJnZV9jYWNoZV9lbnRyeV9hdChhdCkgdW5tZXJnZV9pbmRleF9lbnRyeV9hdCgmdGhlX2luZGV4LCBhdCkKICNkZWZpbmUgdW5tZXJnZV9jYWNoZShwYXRoc3BlYykgdW5tZXJnZV9pbmRleCgmdGhlX2luZGV4LCBwYXRoc3BlYykKKyNkZWZpbmUgcmVhZF9ibG9iX2RhdGFfZnJvbV9jYWNoZShwYXRoLCBzeikgcmVhZF9ibG9iX2RhdGFfZnJvbV9pbmRleCgmdGhlX2luZGV4LCAocGF0aCksIChzeikpCiAjZW5kaWYKIAogZW51bSBvYmplY3RfdHlwZSB7CkBAIC0zMzAsOSArMzM3LDExIEBACiAJCU9CSl9CTE9COwogfQogCisvKiBEb3VibGUtY2hlY2sgbG9jYWxfcmVwb19lbnYgYmVsb3cgaWYgeW91IGFkZCB0byB0aGlzIGxpc3QuICovCiAjZGVmaW5lIEdJVF9ESVJfRU5WSVJPTk1FTlQgIkdJVF9ESVIiCiAjZGVmaW5lIEdJVF9OQU1FU1BBQ0VfRU5WSVJPTk1FTlQgIkdJVF9OQU1FU1BBQ0UiCiAjZGVmaW5lIEdJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQgIkdJVF9XT1JLX1RSRUUiCisjZGVmaW5lIEdJVF9QUkVGSVhfRU5WSVJPTk1FTlQgIkdJVF9QUkVGSVgiCiAjZGVmaW5lIERFRkFVTFRfR0lUX0RJUl9FTlZJUk9OTUVOVCAiLmdpdCIKICNkZWZpbmUgREJfRU5WSVJPTk1FTlQgIkdJVF9PQkpFQ1RfRElSRUNUT1JZIgogI2RlZmluZSBJTkRFWF9FTlZJUk9OTUVOVCAiR0lUX0lOREVYX0ZJTEUiCkBAIC0zNTEsMTUgKzM2MCwyNyBAQAogI2RlZmluZSBHSVRfTk9URVNfRElTUExBWV9SRUZfRU5WSVJPTk1FTlQgIkdJVF9OT1RFU19ESVNQTEFZX1JFRiIKICNkZWZpbmUgR0lUX05PVEVTX1JFV1JJVEVfUkVGX0VOVklST05NRU5UICJHSVRfTk9URVNfUkVXUklURV9SRUYiCiAjZGVmaW5lIEdJVF9OT1RFU19SRVdSSVRFX01PREVfRU5WSVJPTk1FTlQgIkdJVF9OT1RFU19SRVdSSVRFX01PREUiCisjZGVmaW5lIEdJVF9MSVRFUkFMX1BBVEhTUEVDU19FTlZJUk9OTUVOVCAiR0lUX0xJVEVSQUxfUEFUSFNQRUNTIgogCiAvKgotICogUmVwb3NpdG9yeS1sb2NhbCBHSVRfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAqIFRoZSBhcnJheSBpcyBOVUxMLXRlcm1pbmF0ZWQgdG8gc2ltcGxpZnkgaXRzIHVzYWdlIGluIGNvbnRleHRzIHN1Y2gKLSAqIGVudmlyb25tZW50IGNyZWF0aW9uIG9yIHNpbXBsZSB3YWxrIG9mIHRoZSBsaXN0LgotICogVGhlIG51bWJlciBvZiBub24tTlVMTCBlbnRyaWVzIGlzIGF2YWlsYWJsZSBhcyBhIG1hY3JvLgorICogVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBleHBlY3RlZCB0byBjb250YWluIGEgYm9vbGVhbiBpbmRpY2F0aW5nCisgKiB3aGV0aGVyIHdlIHNob3VsZCBvciBzaG91bGQgbm90IHRyZWF0OgorICoKKyAqICAgR0lUX0RJUj1mb28uZ2l0IGdpdCAuLi4KKyAqCisgKiBhcyBpZiBHSVRfV09SS19UUkVFPS4gd2FzIGdpdmVuLiBJdCdzIG5vdCBleHBlY3RlZCB0aGF0IHVzZXJzIHdpbGwgbWFrZSB1c2UKKyAqIG9mIHRoaXMsIGJ1dCB3ZSB1c2UgaXQgaW50ZXJuYWxseSB0byBjb21tdW5pY2F0ZSB0byBzdWItcHJvY2Vzc2VzIHRoYXQgd2UKKyAqIGFyZSBpbiBhIGJhcmUgcmVwby4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gdHJ1ZS4KICAqLwotI2RlZmluZSBMT0NBTF9SRVBPX0VOVl9TSVpFIDkKLWV4dGVybiBjb25zdCBjaGFyICpjb25zdCBsb2NhbF9yZXBvX2VudltMT0NBTF9SRVBPX0VOVl9TSVpFICsgMV07CisjZGVmaW5lIEdJVF9JTVBMSUNJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQgIkdJVF9JTVBMSUNJVF9XT1JLX1RSRUUiCisKKy8qCisgKiBSZXBvc2l0b3J5LWxvY2FsIEdJVF8qIGVudmlyb25tZW50IHZhcmlhYmxlczsgdGhlc2Ugd2lsbCBiZSBjbGVhcmVkCisgKiB3aGVuIGdpdCBzcGF3bnMgYSBzdWItcHJvY2VzcyB0aGF0IHJ1bnMgaW5zaWRlIGFub3RoZXIgcmVwb3NpdG9yeS4KKyAqIFRoZSBhcnJheSBpcyBOVUxMLXRlcm1pbmF0ZWQsIHdoaWNoIG1ha2VzIGl0IGVhc3kgdG8gcGFzcyBpbiB0aGUgImVudiIKKyAqIHBhcmFtZXRlciBvZiBhIHJ1bi1jb21tYW5kIGludm9jYXRpb24sIG9yIHRvIGRvIGEgc2ltcGxlIHdhbGsuCisgKi8KK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgbG9jYWxfcmVwb19lbnZbXTsKIAogZXh0ZXJuIGludCBpc19iYXJlX3JlcG9zaXRvcnlfY2ZnOwogZXh0ZXJuIGludCBpc19iYXJlX3JlcG9zaXRvcnkodm9pZCk7CkBAIC00NDcsMTEgKzQ2OCwxMyBAQAogI2RlZmluZSBBRERfQ0FDSEVfSUdOT1JFX0VSUk9SUwk0CiAjZGVmaW5lIEFERF9DQUNIRV9JR05PUkVfUkVNT1ZBTCA4CiAjZGVmaW5lIEFERF9DQUNIRV9JTlRFTlQgMTYKKyNkZWZpbmUgQUREX0NBQ0hFX0lNUExJQ0lUX0RPVCAzMgkvKiBpbnRlcm5hbCB0byAiZ2l0IGFkZCAtdS8tQSIgKi8KIGV4dGVybiBpbnQgYWRkX3RvX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIGludCBhZGRfZmlsZV90b19pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKTsKIGV4dGVybiBzdHJ1Y3QgY2FjaGVfZW50cnkgKm1ha2VfY2FjaGVfZW50cnkodW5zaWduZWQgaW50IG1vZGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBzdGFnZSwgaW50IHJlZnJlc2gpOwogZXh0ZXJuIGludCBjZV9zYW1lX25hbWUoc3RydWN0IGNhY2hlX2VudHJ5ICphLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmIpOwogZXh0ZXJuIGludCBpbmRleF9uYW1lX2lzX290aGVyKGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICosIGludCk7CitleHRlcm4gdm9pZCAqcmVhZF9ibG9iX2RhdGFfZnJvbV9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nICopOwogCiAvKiBkbyBzdGF0IGNvbXBhcmlzb24gZXZlbiBpZiBDRV9WQUxJRCBpcyB0cnVlICovCiAjZGVmaW5lIENFX01BVENIX0lHTk9SRV9WQUxJRAkJMDEKQEAgLTQ1OSw4ICs0ODIsMTAgQEAKICNkZWZpbmUgQ0VfTUFUQ0hfUkFDWV9JU19ESVJUWQkJMDIKIC8qIGRvIHN0YXQgY29tcGFyaXNvbiBldmVuIGlmIENFX1NLSVBfV09SS1RSRUUgaXMgdHJ1ZSAqLwogI2RlZmluZSBDRV9NQVRDSF9JR05PUkVfU0tJUF9XT1JLVFJFRQkwNAotZXh0ZXJuIGludCBpZV9tYXRjaF9zdGF0KGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiwgc3RydWN0IHN0YXQgKiwgdW5zaWduZWQgaW50KTsKLWV4dGVybiBpbnQgaWVfbW9kaWZpZWQoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICosIHN0cnVjdCBjYWNoZV9lbnRyeSAqLCBzdHJ1Y3Qgc3RhdCAqLCB1bnNpZ25lZCBpbnQpOworZXh0ZXJuIGludCBpZV9tYXRjaF9zdGF0KGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiwgc3RydWN0IHN0YXQgKiwgdW5zaWduZWQgaW50KTsKK2V4dGVybiBpbnQgaWVfbW9kaWZpZWQoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqLCBzdHJ1Y3Qgc3RhdCAqLCB1bnNpZ25lZCBpbnQpOworCisjZGVmaW5lIFBBVEhTUEVDX09ORVNUQVIgMQkvKiB0aGUgcGF0aHNwZWMgcGF0dGVybiBzYXN0aXNmaWVzIEdGTk1fT05FU1RBUiAqLwogCiBzdHJ1Y3QgcGF0aHNwZWMgewogCWNvbnN0IGNoYXIgKipyYXc7IC8qIGdldF9wYXRoc3BlYygpIHJlc3VsdCwgbm90IGZyZWVkIGJ5IGZyZWVfcGF0aHNwZWMoKSAqLwpAQCAtNDcxLDcgKzQ5Niw4IEBACiAJc3RydWN0IHBhdGhzcGVjX2l0ZW0gewogCQljb25zdCBjaGFyICptYXRjaDsKIAkJaW50IGxlbjsKLQkJdW5zaWduZWQgaW50IHVzZV93aWxkY2FyZDoxOworCQlpbnQgbm93aWxkY2FyZF9sZW47CisJCWludCBmbGFnczsKIAl9ICppdGVtczsKIH07CiAKQEAgLTQ3OSw2ICs1MDUsOCBAQAogZXh0ZXJuIHZvaWQgZnJlZV9wYXRoc3BlYyhzdHJ1Y3QgcGF0aHNwZWMgKik7CiBleHRlcm4gaW50IGNlX3BhdGhfbWF0Y2goY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgY29uc3Qgc3RydWN0IHBhdGhzcGVjICpwYXRoc3BlYyk7CiAKK2V4dGVybiBpbnQgbGltaXRfcGF0aHNwZWNfdG9fbGl0ZXJhbCh2b2lkKTsKKwogI2RlZmluZSBIQVNIX1dSSVRFX09CSkVDVCAxCiAjZGVmaW5lIEhBU0hfRk9STUFUX0NIRUNLIDIKIGV4dGVybiBpbnQgaW5kZXhfZmQodW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3QsIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwgY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgZmxhZ3MpOwpAQCAtNTE5LDYgKzU0Nyw3IEBACiAvKiBFbnZpcm9ubWVudCBiaXRzIGZyb20gY29uZmlndXJhdGlvbiBtZWNoYW5pc20gKi8KIGV4dGVybiBpbnQgdHJ1c3RfZXhlY3V0YWJsZV9iaXQ7CiBleHRlcm4gaW50IHRydXN0X2N0aW1lOworZXh0ZXJuIGludCBjaGVja19zdGF0OwogZXh0ZXJuIGludCBxdW90ZV9wYXRoX2Z1bGx5OwogZXh0ZXJuIGludCBoYXNfc3ltbGlua3M7CiBleHRlcm4gaW50IG1pbmltdW1fYWJicmV2LCBkZWZhdWx0X2FiYnJldjsKQEAgLTU0NSw2ICs1NzQsMTIgQEAKIGV4dGVybiBpbnQgY29yZV9hcHBseV9zcGFyc2VfY2hlY2tvdXQ7CiBleHRlcm4gaW50IHByZWNvbXBvc2VkX3VuaWNvZGU7CiAKKy8qCisgKiBUaGUgY2hhcmFjdGVyIHRoYXQgYmVnaW5zIGEgY29tbWVudGVkIGxpbmUgaW4gdXNlci1lZGl0YWJsZSBmaWxlCisgKiB0aGF0IGlzIHN1YmplY3QgdG8gc3RyaXBzcGFjZS4KKyAqLworZXh0ZXJuIGNoYXIgY29tbWVudF9saW5lX2NoYXI7CisKIGVudW0gYnJhbmNoX3RyYWNrIHsKIAlCUkFOQ0hfVFJBQ0tfVU5TUEVDSUZJRUQgPSAtMSwKIAlCUkFOQ0hfVFJBQ0tfTkVWRVIgPSAwLApAQCAtNjg5LDggKzcyNCw3IEBACiAJUEVSTV9FVkVSWUJPRFkgICAgICA9IDA2NjQKIH07CiBpbnQgZ2l0X2NvbmZpZ19wZXJtKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpOwotaW50IHNldF9zaGFyZWRfcGVybShjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSk7Ci0jZGVmaW5lIGFkanVzdF9zaGFyZWRfcGVybShwYXRoKSBzZXRfc2hhcmVkX3Blcm0oKHBhdGgpLCAwKQoraW50IGFkanVzdF9zaGFyZWRfcGVybShjb25zdCBjaGFyICpwYXRoKTsKIGludCBzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzKGNoYXIgKnBhdGgpOwogaW50IHNhZmVfY3JlYXRlX2xlYWRpbmdfZGlyZWN0b3JpZXNfY29uc3QoY29uc3QgY2hhciAqcGF0aCk7CiBpbnQgbWtkaXJfaW5fZ2l0ZGlyKGNvbnN0IGNoYXIgKnBhdGgpOwpAQCAtNzQwLDkgKzc3NCw2IEBACiAvKiBnbG9iYWwgZmxhZyB0byBlbmFibGUgZXh0cmEgY2hlY2tzIHdoZW4gYWNjZXNzaW5nIHBhY2tlZCBvYmplY3RzICovCiBleHRlcm4gaW50IGRvX2NoZWNrX3BhY2tlZF9vYmplY3RfY3JjOwogCi0vKiBmb3IgZGV2ZWxvcG1lbnQ6IGxvZyBvZmZzZXQgb2YgcGFjayBhY2Nlc3MgKi8KLWV4dGVybiBjb25zdCBjaGFyICpsb2dfcGFja19hY2Nlc3M7Ci0KIGV4dGVybiBpbnQgY2hlY2tfc2hhMV9zaWduYXR1cmUoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKnR5cGUpOwogCiBleHRlcm4gaW50IG1vdmVfdGVtcF90b19maWxlKGNvbnN0IGNoYXIgKnRtcGZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKQEAgLTg3OCw2ICs5MDksNyBAQAogCQkJc3RydWN0IHN0cmJ1ZiAqdGltZWJ1Zik7CiBpbnQgcGFyc2VfZGF0ZShjb25zdCBjaGFyICpkYXRlLCBjaGFyICpidWYsIGludCBidWZzaXplKTsKIGludCBwYXJzZV9kYXRlX2Jhc2ljKGNvbnN0IGNoYXIgKmRhdGUsIHVuc2lnbmVkIGxvbmcgKnRpbWVzdGFtcCwgaW50ICpvZmZzZXQpOworaW50IHBhcnNlX2V4cGlyeV9kYXRlKGNvbnN0IGNoYXIgKmRhdGUsIHVuc2lnbmVkIGxvbmcgKnRpbWVzdGFtcCk7CiB2b2lkIGRhdGVzdGFtcChjaGFyICpidWYsIGludCBidWZzaXplKTsKICNkZWZpbmUgYXBwcm94aWRhdGUocykgYXBwcm94aWRhdGVfY2FyZWZ1bCgocyksIE5VTEwpCiB1bnNpZ25lZCBsb25nIGFwcHJveGlkYXRlX2NhcmVmdWwoY29uc3QgY2hhciAqLCBpbnQgKik7CkBAIC05ODksMTUgKzEwMjEsMzIgQEAKIAl1bnNpZ25lZCBjaGFyIG9sZF9zaGExWzIwXTsKIAl1bnNpZ25lZCBjaGFyIG5ld19zaGExWzIwXTsKIAljaGFyICpzeW1yZWY7Ci0JdW5zaWduZWQgaW50IGZvcmNlOjEsCi0JCW1lcmdlOjEsCi0JCW5vbmZhc3Rmb3J3YXJkOjEsCi0JCWRlbGV0aW9uOjE7CisJdW5zaWduZWQgaW50CisJCWZvcmNlOjEsCisJCWZvcmNlZF91cGRhdGU6MSwKKwkJZGVsZXRpb246MSwKKwkJbWF0Y2hlZDoxOworCisJLyoKKwkgKiBPcmRlciBpcyBpbXBvcnRhbnQgaGVyZSwgYXMgd2Ugd3JpdGUgdG8gRkVUQ0hfSEVBRAorCSAqIGluIG51bWVyaWMgb3JkZXIuIEFuZCB0aGUgZGVmYXVsdCBOT1RfRk9SX01FUkdFCisJICogc2hvdWxkIGJlIDAsIHNvIHRoYXQgeGNhbGxvYydkIHN0cnVjdHVyZXMgZ2V0IGl0CisJICogYnkgZGVmYXVsdC4KKwkgKi8KKwllbnVtIHsKKwkJRkVUQ0hfSEVBRF9NRVJHRSA9IC0xLAorCQlGRVRDSF9IRUFEX05PVF9GT1JfTUVSR0UgPSAwLAorCQlGRVRDSF9IRUFEX0lHTk9SRSA9IDEKKwl9IGZldGNoX2hlYWRfc3RhdHVzOworCiAJZW51bSB7CiAJCVJFRl9TVEFUVVNfTk9ORSA9IDAsCiAJCVJFRl9TVEFUVVNfT0ssCiAJCVJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJELAorCQlSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUywKIAkJUkVGX1NUQVRVU19SRUpFQ1RfTk9ERUxFVEUsCisJCVJFRl9TVEFUVVNfUkVKRUNUX0ZFVENIX0ZJUlNULAorCQlSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRSwKIAkJUkVGX1NUQVRVU19VUFRPREFURSwKIAkJUkVGX1NUQVRVU19SRU1PVEVfUkVKRUNULAogCQlSRUZfU1RBVFVTX0VYUEVDVElOR19SRVBPUlQKQEAgLTEwMjEsNyArMTA3MCw5IEBACiAJaW50IG5yLCBhbGxvYzsKIAl1bnNpZ25lZCBjaGFyICgqYXJyYXkpWzIwXTsKIH07Ci1leHRlcm4gc3RydWN0IHJlZiAqKmdldF9yZW1vdGVfaGVhZHMoaW50IGluLCBzdHJ1Y3QgcmVmICoqbGlzdCwgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgZXh0cmFfaGF2ZV9vYmplY3RzICopOworZXh0ZXJuIHN0cnVjdCByZWYgKipnZXRfcmVtb3RlX2hlYWRzKGludCBpbiwgY2hhciAqc3JjX2J1Ziwgc2l6ZV90IHNyY19sZW4sCisJCQkJICAgICBzdHJ1Y3QgcmVmICoqbGlzdCwgdW5zaWduZWQgaW50IGZsYWdzLAorCQkJCSAgICAgc3RydWN0IGV4dHJhX2hhdmVfb2JqZWN0cyAqKTsKIGV4dGVybiBpbnQgc2VydmVyX3N1cHBvcnRzKGNvbnN0IGNoYXIgKmZlYXR1cmUpOwogZXh0ZXJuIGludCBwYXJzZV9mZWF0dXJlX3JlcXVlc3QoY29uc3QgY2hhciAqZmVhdHVyZXMsIGNvbnN0IGNoYXIgKmZlYXR1cmUpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKnNlcnZlcl9mZWF0dXJlX3ZhbHVlKGNvbnN0IGNoYXIgKmZlYXR1cmUsIGludCAqbGVuX3JldCk7CkBAIC0xMDI5LDYgKzEwODAsOSBAQAogCiBleHRlcm4gc3RydWN0IHBhY2tlZF9naXQgKnBhcnNlX3BhY2tfaW5kZXgodW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqaWR4X3BhdGgpOwogCisvKiBBIGhvb2sgZm9yIGNvdW50LW9iamVjdHMgdG8gcmVwb3J0IGludmFsaWQgZmlsZXMgaW4gcGFjayBkaXJlY3RvcnkgKi8KK2V4dGVybiB2b2lkICgqcmVwb3J0X2dhcmJhZ2UpKGNvbnN0IGNoYXIgKmRlc2MsIGNvbnN0IGNoYXIgKnBhdGgpOworCiBleHRlcm4gdm9pZCBwcmVwYXJlX3BhY2tlZF9naXQodm9pZCk7CiBleHRlcm4gdm9pZCByZXByZXBhcmVfcGFja2VkX2dpdCh2b2lkKTsKIGV4dGVybiB2b2lkIGluc3RhbGxfcGFja2VkX2dpdChzdHJ1Y3QgcGFja2VkX2dpdCAqcGFjayk7CkBAIC0xMTI2LDYgKzExODAsOSBAQAogZXh0ZXJuIGludCBnaXRfZW52X2Jvb2woY29uc3QgY2hhciAqLCBpbnQpOwogZXh0ZXJuIGludCBnaXRfY29uZmlnX3N5c3RlbSh2b2lkKTsKIGV4dGVybiBpbnQgY29uZmlnX2Vycm9yX25vbmJvb2woY29uc3QgY2hhciAqKTsKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhIGRlZmluZWQoX19jbGFuZ19fKQorI2RlZmluZSBjb25maWdfZXJyb3Jfbm9uYm9vbChzKSAoY29uZmlnX2Vycm9yX25vbmJvb2wocyksIC0xKQorI2VuZGlmCiBleHRlcm4gY29uc3QgY2hhciAqZ2V0X2xvZ19vdXRwdXRfZW5jb2Rpbmcodm9pZCk7CiBleHRlcm4gY29uc3QgY2hhciAqZ2V0X2NvbW1pdF9vdXRwdXRfZW5jb2Rpbmcodm9pZCk7CiAKQEAgLTExMzksMTIgKzExOTYsMjggQEAKICNkZWZpbmUgQ09ORklHX0lOQ0xVREVfSU5JVCB7IDAgfQogZXh0ZXJuIGludCBnaXRfY29uZmlnX2luY2x1ZGUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmRhdGEpOwogCisvKgorICogTWF0Y2ggYW5kIHBhcnNlIGEgY29uZmlnIGtleSBvZiB0aGUgZm9ybToKKyAqCisgKiAgIHNlY3Rpb24uKHN1YnNlY3Rpb24uKT9rZXkKKyAqCisgKiAoaS5lLiwgd2hhdCBnZXRzIGhhbmRlZCB0byBhIGNvbmZpZ19mbl90KS4gVGhlIGNhbGxlciBwcm92aWRlcyB0aGUgc2VjdGlvbjsKKyAqIHdlIHJldHVybiAtMSBpZiBpdCBkb2VzIG5vdCBtYXRjaCwgMCBvdGhlcndpc2UuIFRoZSBzdWJzZWN0aW9uIGFuZCBrZXkKKyAqIG91dC1wYXJhbWV0ZXJzIGFyZSBmaWxsZWQgYnkgdGhlIGZ1bmN0aW9uIChhbmQgc3Vic2VjdGlvbiBpcyBOVUxMIGlmIGl0IGlzCisgKiBtaXNzaW5nKS4KKyAqLworZXh0ZXJuIGludCBwYXJzZV9jb25maWdfa2V5KGNvbnN0IGNoYXIgKnZhciwKKwkJCSAgICBjb25zdCBjaGFyICpzZWN0aW9uLAorCQkJICAgIGNvbnN0IGNoYXIgKipzdWJzZWN0aW9uLCBpbnQgKnN1YnNlY3Rpb25fbGVuLAorCQkJICAgIGNvbnN0IGNoYXIgKiprZXkpOworCiBleHRlcm4gaW50IGNvbW1pdHRlcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4odm9pZCk7CiBleHRlcm4gaW50IGF1dGhvcl9pZGVudF9zdWZmaWNpZW50bHlfZ2l2ZW4odm9pZCk7CiAKIGV4dGVybiBjb25zdCBjaGFyICpnaXRfY29tbWl0X2VuY29kaW5nOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdpdF9sb2dfb3V0cHV0X2VuY29kaW5nOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdpdF9tYWlsbWFwX2ZpbGU7CitleHRlcm4gY29uc3QgY2hhciAqZ2l0X21haWxtYXBfYmxvYjsKIAogLyogSU8gaGVscGVyIGZ1bmN0aW9ucyAqLwogZXh0ZXJuIHZvaWQgbWF5YmVfZmx1c2hfb3JfZGllKEZJTEUgKiwgY29uc3QgY2hhciAqKTsKZGlmZiAtLWdpdCBhL2NvbG9yLmMgYi9jb2xvci5jCmluZGV4IGU4ZTI2ODEuLmY2NzI4ODUgMTAwNjQ0Ci0tLSBhL2NvbG9yLmMKKysrIGIvY29sb3IuYwpAQCAtMSw3ICsxLDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImNvbG9yLmgiCiAKLXN0YXRpYyBpbnQgZ2l0X3VzZV9jb2xvcl9kZWZhdWx0ID0gMDsKK3N0YXRpYyBpbnQgZ2l0X3VzZV9jb2xvcl9kZWZhdWx0ID0gR0lUX0NPTE9SX0FVVE87CiBpbnQgY29sb3Jfc3Rkb3V0X2lzX3R0eSA9IC0xOwogCiAvKgpkaWZmIC0tZ2l0IGEvY29tYmluZS1kaWZmLmMgYi9jb21iaW5lLWRpZmYuYwppbmRleCA3ZjYxODdmLi42ZGMwNjA5IDEwMDY0NAotLS0gYS9jb21iaW5lLWRpZmYuYworKysgYi9jb21iaW5lLWRpZmYuYwpAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlICJkaWZmY29yZS5oIgogI2luY2x1ZGUgInF1b3RlLmgiCiAjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAieGRpZmYveG1hY3Jvcy5oIgogI2luY2x1ZGUgImxvZy10cmVlLmgiCiAjaW5jbHVkZSAicmVmcy5oIgogI2luY2x1ZGUgInVzZXJkaWZmLmgiCkBAIC03MywxNiArNzQsMjQgQEAKIAogLyogTGluZXMgbG9zdCBmcm9tIHBhcmVudCAqLwogc3RydWN0IGxsaW5lIHsKLQlzdHJ1Y3QgbGxpbmUgKm5leHQ7CisJc3RydWN0IGxsaW5lICpuZXh0LCAqcHJldjsKIAlpbnQgbGVuOwogCXVuc2lnbmVkIGxvbmcgcGFyZW50X21hcDsKIAljaGFyIGxpbmVbRkxFWF9BUlJBWV07CiB9OwogCisvKiBMaW5lcyBsb3N0IGZyb20gY3VycmVudCBwYXJlbnQgKGJlZm9yZSBjb2FsZXNjaW5nKSAqLworc3RydWN0IHBsb3N0IHsKKwlzdHJ1Y3QgbGxpbmUgKmxvc3RfaGVhZCwgKmxvc3RfdGFpbDsKKwlpbnQgbGVuOworfTsKKwogLyogTGluZXMgc3Vydml2aW5nIGluIHRoZSBtZXJnZSByZXN1bHQgKi8KIHN0cnVjdCBzbGluZSB7Ci0Jc3RydWN0IGxsaW5lICpsb3N0X2hlYWQsICoqbG9zdF90YWlsOwotCXN0cnVjdCBsbGluZSAqbmV4dF9sb3N0OworCS8qIEFjY3VtdWxhdGVkIGFuZCBjb2FsZXNjZWQgbG9zdCBsaW5lcyAqLworCXN0cnVjdCBsbGluZSAqbG9zdDsKKwlpbnQgbGVubG9zdDsKKwlzdHJ1Y3QgcGxvc3QgcGxvc3Q7CiAJY2hhciAqYm9sOwogCWludCBsZW47CiAJLyogYml0IDAgdXAgdG8gKE4tMSkgYXJlIG9uIGlmIHRoZSBwYXJlbnQgaGFzIHRoaXMgbGluZSAoaS5lLgpAQCAtOTQsNiArMTAzLDE3MiBAQAogCXVuc2lnbmVkIGxvbmcgKnBfbG5vOwogfTsKIAorc3RhdGljIGludCBtYXRjaF9zdHJpbmdfc3BhY2VzKGNvbnN0IGNoYXIgKmxpbmUxLCBpbnQgbGVuMSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpsaW5lMiwgaW50IGxlbjIsCisJCQkgICAgICAgbG9uZyBmbGFncykKK3sKKwlpZiAoZmxhZ3MgJiBYREZfV0hJVEVTUEFDRV9GTEFHUykgeworCQlmb3IgKDsgbGVuMSA+IDAgJiYgWERMX0lTU1BBQ0UobGluZTFbbGVuMSAtIDFdKTsgbGVuMS0tKTsKKwkJZm9yICg7IGxlbjIgPiAwICYmIFhETF9JU1NQQUNFKGxpbmUyW2xlbjIgLSAxXSk7IGxlbjItLSk7CisJfQorCisJaWYgKCEoZmxhZ3MgJiAoWERGX0lHTk9SRV9XSElURVNQQUNFIHwgWERGX0lHTk9SRV9XSElURVNQQUNFX0NIQU5HRSkpKQorCQlyZXR1cm4gKGxlbjEgPT0gbGVuMiAmJiAhbWVtY21wKGxpbmUxLCBsaW5lMiwgbGVuMSkpOworCisJd2hpbGUgKGxlbjEgPiAwICYmIGxlbjIgPiAwKSB7CisJCWxlbjEtLTsKKwkJbGVuMi0tOworCQlpZiAoWERMX0lTU1BBQ0UobGluZTFbbGVuMV0pIHx8IFhETF9JU1NQQUNFKGxpbmUyW2xlbjJdKSkgeworCQkJaWYgKChmbGFncyAmIFhERl9JR05PUkVfV0hJVEVTUEFDRV9DSEFOR0UpICYmCisJCQkgICAgKCFYRExfSVNTUEFDRShsaW5lMVtsZW4xXSkgfHwgIVhETF9JU1NQQUNFKGxpbmUyW2xlbjJdKSkpCisJCQkJcmV0dXJuIDA7CisKKwkJCWZvciAoOyBsZW4xID4gMCAmJiBYRExfSVNTUEFDRShsaW5lMVtsZW4xXSk7IGxlbjEtLSk7CisJCQlmb3IgKDsgbGVuMiA+IDAgJiYgWERMX0lTU1BBQ0UobGluZTJbbGVuMl0pOyBsZW4yLS0pOworCQl9CisJCWlmIChsaW5lMVtsZW4xXSAhPSBsaW5lMltsZW4yXSkKKwkJCXJldHVybiAwOworCX0KKworCWlmIChmbGFncyAmIFhERl9JR05PUkVfV0hJVEVTUEFDRSkgeworCQkvKiBDb25zdW1lIHJlbWFpbmluZyBzcGFjZXMgKi8KKwkJZm9yICg7IGxlbjEgPiAwICYmIFhETF9JU1NQQUNFKGxpbmUxW2xlbjEgLSAxXSk7IGxlbjEtLSk7CisJCWZvciAoOyBsZW4yID4gMCAmJiBYRExfSVNTUEFDRShsaW5lMltsZW4yIC0gMV0pOyBsZW4yLS0pOworCX0KKworCS8qIFdlIG1hdGNoZWQgZnVsbCBsaW5lMSBhbmQgbGluZTIgKi8KKwlpZiAoIWxlbjEgJiYgIWxlbjIpCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKK2VudW0gY29hbGVzY2VfZGlyZWN0aW9uIHsgTUFUQ0gsIEJBU0UsIE5FVyB9OworCisvKiBDb2FsZXNjZSBuZXcgbGluZXMgaW50byBiYXNlIGJ5IGZpbmRpbmcgTENTICovCitzdGF0aWMgc3RydWN0IGxsaW5lICpjb2FsZXNjZV9saW5lcyhzdHJ1Y3QgbGxpbmUgKmJhc2UsIGludCAqbGVuYmFzZSwKKwkJCQkgICAgc3RydWN0IGxsaW5lICpuZXcsIGludCBsZW5uZXcsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgcGFyZW50LCBsb25nIGZsYWdzKQoreworCWludCAqKmxjczsKKwllbnVtIGNvYWxlc2NlX2RpcmVjdGlvbiAqKmRpcmVjdGlvbnM7CisJc3RydWN0IGxsaW5lICpiYXNlZW5kLCAqbmV3ZW5kID0gTlVMTDsKKwlpbnQgaSwgaiwgb3JpZ2Jhc2VsZW4gPSAqbGVuYmFzZTsKKworCWlmIChuZXcgPT0gTlVMTCkKKwkJcmV0dXJuIGJhc2U7CisKKwlpZiAoYmFzZSA9PSBOVUxMKSB7CisJCSpsZW5iYXNlID0gbGVubmV3OworCQlyZXR1cm4gbmV3OworCX0KKworCS8qCisJICogQ29hbGVzY2UgbmV3IGxpbmVzIGludG8gYmFzZSBieSBmaW5kaW5nIHRoZSBMQ1MKKwkgKiAtIENyZWF0ZSB0aGUgdGFibGUgdG8gcnVuIGR5bmFtaWMgcHJvZ3JhbWluZworCSAqIC0gQ29tcHV0ZSB0aGUgTENTCisJICogLSBUaGVuIHJldmVyc2UgcmVhZCB0aGUgZGlyZWN0aW9uIHN0cnVjdHVyZToKKwkgKiAgIC0gSWYgd2UgaGF2ZSBNQVRDSCwgYXNzaWduIHBhcmVudCB0byBiYXNlIGZsYWcsIGFuZCBjb25zdW1lCisJICogICBib3RoIGJhc2VlbmQgYW5kIG5ld2VuZAorCSAqICAgLSBFbHNlIGlmIHdlIGhhdmUgQkFTRSwgY29uc3VtZSBiYXNlZW5kCisJICogICAtIEVsc2UgaWYgd2UgaGF2ZSBORVcsIGluc2VydCBuZXdlbmQgbGxpbmUgaW50byBiYXNlIGFuZAorCSAqICAgY29uc3VtZSBuZXdlbmQKKwkgKi8KKwlsY3MgPSB4Y2FsbG9jKG9yaWdiYXNlbGVuICsgMSwgc2l6ZW9mKGludCopKTsKKwlkaXJlY3Rpb25zID0geGNhbGxvYyhvcmlnYmFzZWxlbiArIDEsIHNpemVvZihlbnVtIGNvYWxlc2NlX2RpcmVjdGlvbiopKTsKKwlmb3IgKGkgPSAwOyBpIDwgb3JpZ2Jhc2VsZW4gKyAxOyBpKyspIHsKKwkJbGNzW2ldID0geGNhbGxvYyhsZW5uZXcgKyAxLCBzaXplb2YoaW50KSk7CisJCWRpcmVjdGlvbnNbaV0gPSB4Y2FsbG9jKGxlbm5ldyArIDEsIHNpemVvZihlbnVtIGNvYWxlc2NlX2RpcmVjdGlvbikpOworCQlkaXJlY3Rpb25zW2ldWzBdID0gQkFTRTsKKwl9CisJZm9yIChqID0gMTsgaiA8IGxlbm5ldyArIDE7IGorKykKKwkJZGlyZWN0aW9uc1swXVtqXSA9IE5FVzsKKworCWZvciAoaSA9IDEsIGJhc2VlbmQgPSBiYXNlOyBpIDwgb3JpZ2Jhc2VsZW4gKyAxOyBpKyspIHsKKwkJZm9yIChqID0gMSwgbmV3ZW5kID0gbmV3OyBqIDwgbGVubmV3ICsgMTsgaisrKSB7CisJCQlpZiAobWF0Y2hfc3RyaW5nX3NwYWNlcyhiYXNlZW5kLT5saW5lLCBiYXNlZW5kLT5sZW4sCisJCQkJCQluZXdlbmQtPmxpbmUsIG5ld2VuZC0+bGVuLCBmbGFncykpIHsKKwkJCQlsY3NbaV1bal0gPSBsY3NbaSAtIDFdW2ogLSAxXSArIDE7CisJCQkJZGlyZWN0aW9uc1tpXVtqXSA9IE1BVENIOworCQkJfSBlbHNlIGlmIChsY3NbaV1baiAtIDFdID49IGxjc1tpIC0gMV1bal0pIHsKKwkJCQlsY3NbaV1bal0gPSBsY3NbaV1baiAtIDFdOworCQkJCWRpcmVjdGlvbnNbaV1bal0gPSBORVc7CisJCQl9IGVsc2UgeworCQkJCWxjc1tpXVtqXSA9IGxjc1tpIC0gMV1bal07CisJCQkJZGlyZWN0aW9uc1tpXVtqXSA9IEJBU0U7CisJCQl9CisJCQlpZiAobmV3ZW5kLT5uZXh0KQorCQkJCW5ld2VuZCA9IG5ld2VuZC0+bmV4dDsKKwkJfQorCQlpZiAoYmFzZWVuZC0+bmV4dCkKKwkJCWJhc2VlbmQgPSBiYXNlZW5kLT5uZXh0OworCX0KKworCWZvciAoaSA9IDA7IGkgPCBvcmlnYmFzZWxlbiArIDE7IGkrKykKKwkJZnJlZShsY3NbaV0pOworCWZyZWUobGNzKTsKKworCS8qIEF0IHRoaXMgcG9pbnQsIGJhc2VlbmQgYW5kIG5ld2VuZCBwb2ludCB0byB0aGUgZW5kIG9mIGVhY2ggbGlzdHMgKi8KKwlpLS07CisJai0tOworCXdoaWxlIChpICE9IDAgfHwgaiAhPSAwKSB7CisJCWlmIChkaXJlY3Rpb25zW2ldW2pdID09IE1BVENIKSB7CisJCQliYXNlZW5kLT5wYXJlbnRfbWFwIHw9IDE8PHBhcmVudDsKKwkJCWJhc2VlbmQgPSBiYXNlZW5kLT5wcmV2OworCQkJbmV3ZW5kID0gbmV3ZW5kLT5wcmV2OworCQkJaS0tOworCQkJai0tOworCQl9IGVsc2UgaWYgKGRpcmVjdGlvbnNbaV1bal0gPT0gTkVXKSB7CisJCQlzdHJ1Y3QgbGxpbmUgKmxsaW5lOworCisJCQlsbGluZSA9IG5ld2VuZDsKKwkJCS8qIFJlbW92ZSBsbGluZSBmcm9tIG5ldyBsaXN0IGFuZCB1cGRhdGUgbmV3ZW5kICovCisJCQlpZiAobGxpbmUtPnByZXYpCisJCQkJbGxpbmUtPnByZXYtPm5leHQgPSBsbGluZS0+bmV4dDsKKwkJCWVsc2UKKwkJCQluZXcgPSBsbGluZS0+bmV4dDsKKwkJCWlmIChsbGluZS0+bmV4dCkKKwkJCQlsbGluZS0+bmV4dC0+cHJldiA9IGxsaW5lLT5wcmV2OworCisJCQluZXdlbmQgPSBsbGluZS0+cHJldjsKKwkJCWotLTsKKworCQkJLyogQWRkIGxsaW5lIHRvIGJhc2UgbGlzdCAqLworCQkJaWYgKGJhc2VlbmQpIHsKKwkJCQlsbGluZS0+bmV4dCA9IGJhc2VlbmQtPm5leHQ7CisJCQkJbGxpbmUtPnByZXYgPSBiYXNlZW5kOworCQkJCWlmIChsbGluZS0+cHJldikKKwkJCQkJbGxpbmUtPnByZXYtPm5leHQgPSBsbGluZTsKKwkJCX0KKwkJCWVsc2UgeworCQkJCWxsaW5lLT5uZXh0ID0gYmFzZTsKKwkJCQliYXNlID0gbGxpbmU7CisJCQl9CisJCQkoKmxlbmJhc2UpKys7CisKKwkJCWlmIChsbGluZS0+bmV4dCkKKwkJCQlsbGluZS0+bmV4dC0+cHJldiA9IGxsaW5lOworCisJCX0gZWxzZSB7CisJCQliYXNlZW5kID0gYmFzZWVuZC0+cHJldjsKKwkJCWktLTsKKwkJfQorCX0KKworCW5ld2VuZCA9IG5ldzsKKwl3aGlsZSAobmV3ZW5kKSB7CisJCXN0cnVjdCBsbGluZSAqbGxpbmUgPSBuZXdlbmQ7CisJCW5ld2VuZCA9IG5ld2VuZC0+bmV4dDsKKwkJZnJlZShsbGluZSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG9yaWdiYXNlbGVuICsgMTsgaSsrKQorCQlmcmVlKGRpcmVjdGlvbnNbaV0pOworCWZyZWUoZGlyZWN0aW9ucyk7CisKKwlyZXR1cm4gYmFzZTsKK30KKwogc3RhdGljIGNoYXIgKmdyYWJfYmxvYihjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCB1bnNpZ25lZCBpbnQgbW9kZSwKIAkJICAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemUsIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnRleHRjb252LAogCQkgICAgICAgY29uc3QgY2hhciAqcGF0aCkKQEAgLTEyOSwyOSArMzA0LDE5IEBACiAJaWYgKGxpbmVbbGVuLTFdID09ICdcbicpCiAJCWxlbi0tOwogCi0JLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBzcXVhc2ggdGhpbmdzICovCi0JaWYgKHNsaW5lLT5sb3N0X2hlYWQpIHsKLQkJbGxpbmUgPSBzbGluZS0+bmV4dF9sb3N0OwotCQl3aGlsZSAobGxpbmUpIHsKLQkJCWlmIChsbGluZS0+bGVuID09IGxlbiAmJgotCQkJICAgICFtZW1jbXAobGxpbmUtPmxpbmUsIGxpbmUsIGxlbikpIHsKLQkJCQlsbGluZS0+cGFyZW50X21hcCB8PSB0aGlzX21hc2s7Ci0JCQkJc2xpbmUtPm5leHRfbG9zdCA9IGxsaW5lLT5uZXh0OwotCQkJCXJldHVybjsKLQkJCX0KLQkJCWxsaW5lID0gbGxpbmUtPm5leHQ7Ci0JCX0KLQl9Ci0KIAlsbGluZSA9IHhtYWxsb2Moc2l6ZW9mKCpsbGluZSkgKyBsZW4gKyAxKTsKIAlsbGluZS0+bGVuID0gbGVuOwogCWxsaW5lLT5uZXh0ID0gTlVMTDsKKwlsbGluZS0+cHJldiA9IHNsaW5lLT5wbG9zdC5sb3N0X3RhaWw7CisJaWYgKGxsaW5lLT5wcmV2KQorCQlsbGluZS0+cHJldi0+bmV4dCA9IGxsaW5lOworCWVsc2UKKwkJc2xpbmUtPnBsb3N0Lmxvc3RfaGVhZCA9IGxsaW5lOworCXNsaW5lLT5wbG9zdC5sb3N0X3RhaWwgPSBsbGluZTsKKwlzbGluZS0+cGxvc3QubGVuKys7CiAJbGxpbmUtPnBhcmVudF9tYXAgPSB0aGlzX21hc2s7CiAJbWVtY3B5KGxsaW5lLT5saW5lLCBsaW5lLCBsZW4pOwogCWxsaW5lLT5saW5lW2xlbl0gPSAwOwotCSpzbGluZS0+bG9zdF90YWlsID0gbGxpbmU7Ci0Jc2xpbmUtPmxvc3RfdGFpbCA9ICZsbGluZS0+bmV4dDsKLQlzbGluZS0+bmV4dF9sb3N0ID0gTlVMTDsKIH0KIAogc3RydWN0IGNvbWJpbmVfZGlmZl9zdGF0ZSB7CkBAIC0xOTQsNyArMzU5LDYgQEAKIAkJCQl4Y2FsbG9jKHN0YXRlLT5udW1fcGFyZW50LAogCQkJCQlzaXplb2YodW5zaWduZWQgbG9uZykpOwogCQlzdGF0ZS0+c2xpbmVbc3RhdGUtPm5iLTFdLnBfbG5vW3N0YXRlLT5uXSA9IHN0YXRlLT5vYjsKLQkJc3RhdGUtPmxvc3RfYnVja2V0LT5uZXh0X2xvc3QgPSBzdGF0ZS0+bG9zdF9idWNrZXQtPmxvc3RfaGVhZDsKIAkJcmV0dXJuOwogCX0KIAlpZiAoIXN0YXRlLT5sb3N0X2J1Y2tldCkKQEAgLTIxNSw3ICszNzksNyBAQAogCQkJIHN0cnVjdCBzbGluZSAqc2xpbmUsIHVuc2lnbmVkIGludCBjbnQsIGludCBuLAogCQkJIGludCBudW1fcGFyZW50LCBpbnQgcmVzdWx0X2RlbGV0ZWQsCiAJCQkgc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnYsCi0JCQkgY29uc3QgY2hhciAqcGF0aCkKKwkJCSBjb25zdCBjaGFyICpwYXRoLCBsb25nIGZsYWdzKQogewogCXVuc2lnbmVkIGludCBwX2xubywgbG5vOwogCXVuc2lnbmVkIGxvbmcgbm1hc2sgPSAoMVVMIDw8IG4pOwpAQCAtMjMxLDcgKzM5NSw3IEBACiAJcGFyZW50X2ZpbGUucHRyID0gZ3JhYl9ibG9iKHBhcmVudCwgbW9kZSwgJnN6LCB0ZXh0Y29udiwgcGF0aCk7CiAJcGFyZW50X2ZpbGUuc2l6ZSA9IHN6OwogCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7Ci0JeHBwLmZsYWdzID0gMDsKKwl4cHAuZmxhZ3MgPSBmbGFnczsKIAltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKIAltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKTsKIAlzdGF0ZS5ubWFzayA9IG5tYXNrOwpAQCAtMjU1LDggKzQxOSwxOCBAQAogCQlzdHJ1Y3QgbGxpbmUgKmxsOwogCQlzbGluZVtsbm9dLnBfbG5vW25dID0gcF9sbm87CiAKKwkJLyogQ29hbGVzY2UgbmV3IGxpbmVzICovCisJCWlmIChzbGluZVtsbm9dLnBsb3N0Lmxvc3RfaGVhZCkgeworCQkJc3RydWN0IHNsaW5lICpzbCA9ICZzbGluZVtsbm9dOworCQkJc2wtPmxvc3QgPSBjb2FsZXNjZV9saW5lcyhzbC0+bG9zdCwgJnNsLT5sZW5sb3N0LAorCQkJCQkJICBzbC0+cGxvc3QubG9zdF9oZWFkLAorCQkJCQkJICBzbC0+cGxvc3QubGVuLCBuLCBmbGFncyk7CisJCQlzbC0+cGxvc3QubG9zdF9oZWFkID0gc2wtPnBsb3N0Lmxvc3RfdGFpbCA9IE5VTEw7CisJCQlzbC0+cGxvc3QubGVuID0gMDsKKwkJfQorCiAJCS8qIEhvdyBtYW55IGxpbmVzIHdvdWxkIHRoaXMgc2xpbmUgYWR2YW5jZSB0aGUgcF9sbm8/ICovCi0JCWxsID0gc2xpbmVbbG5vXS5sb3N0X2hlYWQ7CisJCWxsID0gc2xpbmVbbG5vXS5sb3N0OwogCQl3aGlsZSAobGwpIHsKIAkJCWlmIChsbC0+cGFyZW50X21hcCAmIG5tYXNrKQogCQkJCXBfbG5vKys7IC8qICctJyBtZWFucyBwYXJlbnQgaGFkIGl0ICovCkBAIC0yNzYsNyArNDUwLDcgQEAKIAkvKiBJZiBzb21lIHBhcmVudHMgbG9zdCBsaW5lcyBoZXJlLCBvciBpZiB3ZSBoYXZlIGFkZGVkIHRvCiAJICogc29tZSBwYXJlbnQsIGl0IGlzIGludGVyZXN0aW5nLgogCSAqLwotCXJldHVybiAoKHNsaW5lLT5mbGFnICYgYWxsX21hc2spIHx8IHNsaW5lLT5sb3N0X2hlYWQpOworCXJldHVybiAoKHNsaW5lLT5mbGFnICYgYWxsX21hc2spIHx8IHNsaW5lLT5sb3N0KTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGxvbmcgYWRqdXN0X2h1bmtfdGFpbChzdHJ1Y3Qgc2xpbmUgKnNsaW5lLApAQCAtMzQ0LDggKzUxOCwxMSBAQAogCQl1bnNpZ25lZCBsb25nIGs7CiAKIAkJLyogUGFpbnQgYSBmZXcgbGluZXMgYmVmb3JlIHRoZSBmaXJzdCBpbnRlcmVzdGluZyBsaW5lLiAqLwotCQl3aGlsZSAoaiA8IGkpCi0JCQlzbGluZVtqKytdLmZsYWcgfD0gbWFyayB8IG5vX3ByZV9kZWxldGU7CisJCXdoaWxlIChqIDwgaSkgeworCQkJaWYgKCEoc2xpbmVbal0uZmxhZyAmIG1hcmspKQorCQkJCXNsaW5lW2pdLmZsYWcgfD0gbm9fcHJlX2RlbGV0ZTsKKwkJCXNsaW5lW2orK10uZmxhZyB8PSBtYXJrOworCQl9CiAKIAlhZ2FpbjoKIAkJLyogd2Uga25vdyB1cCB0byBpIGlzIHRvIGJlIGluY2x1ZGVkLiAgd2hlcmUgZG9lcyB0aGUKQEAgLTQ1OSw3ICs2MzYsNyBAQAogCQloYXNfaW50ZXJlc3RpbmcgPSAwOwogCQlmb3IgKGogPSBpOyBqIDwgaHVua19lbmQgJiYgIWhhc19pbnRlcmVzdGluZzsgaisrKSB7CiAJCQl1bnNpZ25lZCBsb25nIHRoaXNfZGlmZiA9IHNsaW5lW2pdLmZsYWcgJiBhbGxfbWFzazsKLQkJCXN0cnVjdCBsbGluZSAqbGwgPSBzbGluZVtqXS5sb3N0X2hlYWQ7CisJCQlzdHJ1Y3QgbGxpbmUgKmxsID0gc2xpbmVbal0ubG9zdDsKIAkJCWlmICh0aGlzX2RpZmYpIHsKIAkJCQkvKiBUaGlzIGhhcyBzb21lIGNoYW5nZXMuICBJcyBpdCB0aGUKIAkJCQkgKiBzYW1lIGFzIG90aGVycz8KQEAgLTUyNiw3ICs3MDMsOCBAQAogCSAgICAgICBzYXdfY3JfYXRfZW9sID8gIlxyIiA6ICIiKTsKIH0KIAotc3RhdGljIHZvaWQgZHVtcF9zbGluZShzdHJ1Y3Qgc2xpbmUgKnNsaW5lLCB1bnNpZ25lZCBsb25nIGNudCwgaW50IG51bV9wYXJlbnQsCitzdGF0aWMgdm9pZCBkdW1wX3NsaW5lKHN0cnVjdCBzbGluZSAqc2xpbmUsIGNvbnN0IGNoYXIgKmxpbmVfcHJlZml4LAorCQkgICAgICAgdW5zaWduZWQgbG9uZyBjbnQsIGludCBudW1fcGFyZW50LAogCQkgICAgICAgaW50IHVzZV9jb2xvciwgaW50IHJlc3VsdF9kZWxldGVkKQogewogCXVuc2lnbmVkIGxvbmcgbWFyayA9ICgxVUw8PG51bV9wYXJlbnQpOwpAQCAtNTgyLDcgKzc2MCw3IEBACiAJCQlybGluZXMgLT0gbnVsbF9jb250ZXh0OwogCQl9CiAKLQkJZnB1dHMoY19mcmFnLCBzdGRvdXQpOworCQlwcmludGYoIiVzJXMiLCBsaW5lX3ByZWZpeCwgY19mcmFnKTsKIAkJZm9yIChpID0gMDsgaSA8PSBudW1fcGFyZW50OyBpKyspIHB1dGNoYXIoY29tYmluZV9tYXJrZXIpOwogCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmVudDsgaSsrKQogCQkJc2hvd19wYXJlbnRfbG5vKHNsaW5lLCBsbm8sIGh1bmtfZW5kLCBpLCBudWxsX2NvbnRleHQpOwpAQCAtNjEyLDkgKzc5MCw5IEBACiAJCQlpbnQgajsKIAkJCXVuc2lnbmVkIGxvbmcgcF9tYXNrOwogCQkJc3RydWN0IHNsaW5lICpzbCA9ICZzbGluZVtsbm8rK107Ci0JCQlsbCA9IChzbC0+ZmxhZyAmIG5vX3ByZV9kZWxldGUpID8gTlVMTCA6IHNsLT5sb3N0X2hlYWQ7CisJCQlsbCA9IChzbC0+ZmxhZyAmIG5vX3ByZV9kZWxldGUpID8gTlVMTCA6IHNsLT5sb3N0OwogCQkJd2hpbGUgKGxsKSB7Ci0JCQkJZnB1dHMoY19vbGQsIHN0ZG91dCk7CisJCQkJcHJpbnRmKCIlcyVzIiwgbGluZV9wcmVmaXgsIGNfb2xkKTsKIAkJCQlmb3IgKGogPSAwOyBqIDwgbnVtX3BhcmVudDsgaisrKSB7CiAJCQkJCWlmIChsbC0+cGFyZW50X21hcCAmICgxVUw8PGopKQogCQkJCQkJcHV0Y2hhcignLScpOwpAQCAtNjI3LDYgKzgwNSw3IEBACiAJCQlpZiAoY250IDwgbG5vKQogCQkJCWJyZWFrOwogCQkJcF9tYXNrID0gMTsKKwkJCWZwdXRzKGxpbmVfcHJlZml4LCBzdGRvdXQpOwogCQkJaWYgKCEoc2wtPmZsYWcgJiAobWFyay0xKSkpIHsKIAkJCQkvKgogCQkJCSAqIFRoaXMgc2xpbmUgd2FzIGhlcmUgdG8gaGFuZyB0aGUKQEAgLTY2Miw3ICs4NDEsNyBAQAogCWptYXNrID0gKDFVTDw8aik7CiAKIAlmb3IgKGxubyA9IDA7IGxubyA8PSBjbnQ7IGxubysrKSB7Ci0JCXN0cnVjdCBsbGluZSAqbGwgPSBzbGluZS0+bG9zdF9oZWFkOworCQlzdHJ1Y3QgbGxpbmUgKmxsID0gc2xpbmUtPmxvc3Q7CiAJCXNsaW5lLT5wX2xub1tpXSA9IHNsaW5lLT5wX2xub1tqXTsKIAkJd2hpbGUgKGxsKSB7CiAJCQlpZiAobGwtPnBhcmVudF9tYXAgJiBqbWFzaykKQEAgLTY4MCwxMSArODU5LDEzIEBACiBzdGF0aWMgdm9pZCBkdW1wX3F1b3RlZF9wYXRoKGNvbnN0IGNoYXIgKmhlYWQsCiAJCQkgICAgIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCSAgICAgY29uc3QgY2hhciAqcGF0aCwKKwkJCSAgICAgY29uc3QgY2hhciAqbGluZV9wcmVmaXgsCiAJCQkgICAgIGNvbnN0IGNoYXIgKmNfbWV0YSwgY29uc3QgY2hhciAqY19yZXNldCkKIHsKIAlzdGF0aWMgc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAogCXN0cmJ1Zl9yZXNldCgmYnVmKTsKKwlzdHJidWZfYWRkc3RyKCZidWYsIGxpbmVfcHJlZml4KTsKIAlzdHJidWZfYWRkc3RyKCZidWYsIGNfbWV0YSk7CiAJc3RyYnVmX2FkZHN0cigmYnVmLCBoZWFkKTsKIAlxdW90ZV90d29fY19zdHlsZSgmYnVmLCBwcmVmaXgsIHBhdGgsIDApOwpAQCAtNjk2LDYgKzg3Nyw3IEBACiAJCQkJIGludCBudW1fcGFyZW50LAogCQkJCSBpbnQgZGVuc2UsCiAJCQkJIHN0cnVjdCByZXZfaW5mbyAqcmV2LAorCQkJCSBjb25zdCBjaGFyICpsaW5lX3ByZWZpeCwKIAkJCQkgaW50IG1vZGVfZGlmZmVycywKIAkJCQkgaW50IHNob3dfZmlsZV9oZWFkZXIpCiB7CkBAIC03MTQsOCArODk2LDggQEAKIAkJc2hvd19sb2cocmV2KTsKIAogCWR1bXBfcXVvdGVkX3BhdGgoZGVuc2UgPyAiZGlmZiAtLWNjICIgOiAiZGlmZiAtLWNvbWJpbmVkICIsCi0JCQkgIiIsIGVsZW0tPnBhdGgsIGNfbWV0YSwgY19yZXNldCk7Ci0JcHJpbnRmKCIlc2luZGV4ICIsIGNfbWV0YSk7CisJCQkgIiIsIGVsZW0tPnBhdGgsIGxpbmVfcHJlZml4LCBjX21ldGEsIGNfcmVzZXQpOworCXByaW50ZigiJXMlc2luZGV4ICIsIGxpbmVfcHJlZml4LCBjX21ldGEpOwogCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyZW50OyBpKyspIHsKIAkJYWJiID0gZmluZF91bmlxdWVfYWJicmV2KGVsZW0tPnBhcmVudFtpXS5zaGExLAogCQkJCQkgYWJicmV2KTsKQEAgLTczNCwxMSArOTE2LDEyIEBACiAJCQkgICAgRElGRl9TVEFUVVNfQURERUQpCiAJCQkJYWRkZWQgPSAwOwogCQlpZiAoYWRkZWQpCi0JCQlwcmludGYoIiVzbmV3IGZpbGUgbW9kZSAlMDZvIiwKLQkJCSAgICAgICBjX21ldGEsIGVsZW0tPm1vZGUpOworCQkJcHJpbnRmKCIlcyVzbmV3IGZpbGUgbW9kZSAlMDZvIiwKKwkJCSAgICAgICBsaW5lX3ByZWZpeCwgY19tZXRhLCBlbGVtLT5tb2RlKTsKIAkJZWxzZSB7CiAJCQlpZiAoZGVsZXRlZCkKLQkJCQlwcmludGYoIiVzZGVsZXRlZCBmaWxlICIsIGNfbWV0YSk7CisJCQkJcHJpbnRmKCIlcyVzZGVsZXRlZCBmaWxlICIsCisJCQkJICAgICAgIGxpbmVfcHJlZml4LCBjX21ldGEpOwogCQkJcHJpbnRmKCJtb2RlICIpOwogCQkJZm9yIChpID0gMDsgaSA8IG51bV9wYXJlbnQ7IGkrKykgewogCQkJCXByaW50ZigiJXMlMDZvIiwgaSA/ICIsIiA6ICIiLApAQCAtNzU1LDE2ICs5MzgsMTYgQEAKIAogCWlmIChhZGRlZCkKIAkJZHVtcF9xdW90ZWRfcGF0aCgiLS0tICIsICIiLCAiL2Rldi9udWxsIiwKLQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKKwkJCQkgbGluZV9wcmVmaXgsIGNfbWV0YSwgY19yZXNldCk7CiAJZWxzZQogCQlkdW1wX3F1b3RlZF9wYXRoKCItLS0gIiwgYV9wcmVmaXgsIGVsZW0tPnBhdGgsCi0JCQkJIGNfbWV0YSwgY19yZXNldCk7CisJCQkJIGxpbmVfcHJlZml4LCBjX21ldGEsIGNfcmVzZXQpOwogCWlmIChkZWxldGVkKQogCQlkdW1wX3F1b3RlZF9wYXRoKCIrKysgIiwgIiIsICIvZGV2L251bGwiLAotCQkJCSBjX21ldGEsIGNfcmVzZXQpOworCQkJCSBsaW5lX3ByZWZpeCwgY19tZXRhLCBjX3Jlc2V0KTsKIAllbHNlCiAJCWR1bXBfcXVvdGVkX3BhdGgoIisrKyAiLCBiX3ByZWZpeCwgZWxlbS0+cGF0aCwKLQkJCQkgY19tZXRhLCBjX3Jlc2V0KTsKKwkJCQkgbGluZV9wcmVmaXgsIGNfbWV0YSwgY19yZXNldCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNob3dfcGF0Y2hfZGlmZihzdHJ1Y3QgY29tYmluZV9kaWZmX3BhdGggKmVsZW0sIGludCBudW1fcGFyZW50LApAQCAtNzgyLDYgKzk2NSw3IEBACiAJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdXNlcmRpZmY7CiAJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnYgPSBOVUxMOwogCWludCBpc19iaW5hcnk7CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG9wdCk7CiAKIAljb250ZXh0ID0gb3B0LT5jb250ZXh0OwogCXVzZXJkaWZmID0gdXNlcmRpZmZfZmluZF9ieV9wYXRoKGVsZW0tPnBhdGgpOwpAQCAtOTAxLDcgKzEwODUsNyBAQAogCX0KIAlpZiAoaXNfYmluYXJ5KSB7CiAJCXNob3dfY29tYmluZWRfaGVhZGVyKGVsZW0sIG51bV9wYXJlbnQsIGRlbnNlLCByZXYsCi0JCQkJICAgICBtb2RlX2RpZmZlcnMsIDApOworCQkJCSAgICAgbGluZV9wcmVmaXgsIG1vZGVfZGlmZmVycywgMCk7CiAJCXByaW50ZigiQmluYXJ5IGZpbGVzIGRpZmZlclxuIik7CiAJCWZyZWUocmVzdWx0KTsKIAkJcmV0dXJuOwpAQCAtOTE2LDEwICsxMTAwLDYgQEAKIAogCXNsaW5lID0geGNhbGxvYyhjbnQrMiwgc2l6ZW9mKCpzbGluZSkpOwogCXNsaW5lWzBdLmJvbCA9IHJlc3VsdDsKLQlmb3IgKGxubyA9IDA7IGxubyA8PSBjbnQgKyAxOyBsbm8rKykgewotCQlzbGluZVtsbm9dLmxvc3RfdGFpbCA9ICZzbGluZVtsbm9dLmxvc3RfaGVhZDsKLQkJc2xpbmVbbG5vXS5mbGFnID0gMDsKLQl9CiAJZm9yIChsbm8gPSAwLCBjcCA9IHJlc3VsdDsgY3AgPCByZXN1bHQgKyByZXN1bHRfc2l6ZTsgY3ArKykgewogCQlpZiAoKmNwID09ICdcbicpIHsKIAkJCXNsaW5lW2xub10ubGVuID0gY3AgLSBzbGluZVtsbm9dLmJvbDsKQEAgLTk1NSwyMiArMTEzNSwyMiBAQAogCQkJCSAgICAgZWxlbS0+cGFyZW50W2ldLm1vZGUsCiAJCQkJICAgICAmcmVzdWx0X2ZpbGUsIHNsaW5lLAogCQkJCSAgICAgY250LCBpLCBudW1fcGFyZW50LCByZXN1bHRfZGVsZXRlZCwKLQkJCQkgICAgIHRleHRjb252LCBlbGVtLT5wYXRoKTsKKwkJCQkgICAgIHRleHRjb252LCBlbGVtLT5wYXRoLCBvcHQtPnhkbF9vcHRzKTsKIAl9CiAKIAlzaG93X2h1bmtzID0gbWFrZV9odW5rcyhzbGluZSwgY250LCBudW1fcGFyZW50LCBkZW5zZSk7CiAKIAlpZiAoc2hvd19odW5rcyB8fCBtb2RlX2RpZmZlcnMgfHwgd29ya2luZ190cmVlX2ZpbGUpIHsKIAkJc2hvd19jb21iaW5lZF9oZWFkZXIoZWxlbSwgbnVtX3BhcmVudCwgZGVuc2UsIHJldiwKLQkJCQkgICAgIG1vZGVfZGlmZmVycywgMSk7Ci0JCWR1bXBfc2xpbmUoc2xpbmUsIGNudCwgbnVtX3BhcmVudCwKKwkJCQkgICAgIGxpbmVfcHJlZml4LCBtb2RlX2RpZmZlcnMsIDEpOworCQlkdW1wX3NsaW5lKHNsaW5lLCBsaW5lX3ByZWZpeCwgY250LCBudW1fcGFyZW50LAogCQkJICAgb3B0LT51c2VfY29sb3IsIHJlc3VsdF9kZWxldGVkKTsKIAl9CiAJZnJlZShyZXN1bHQpOwogCiAJZm9yIChsbm8gPSAwOyBsbm8gPCBjbnQ7IGxubysrKSB7Ci0JCWlmIChzbGluZVtsbm9dLmxvc3RfaGVhZCkgewotCQkJc3RydWN0IGxsaW5lICpsbCA9IHNsaW5lW2xub10ubG9zdF9oZWFkOworCQlpZiAoc2xpbmVbbG5vXS5sb3N0KSB7CisJCQlzdHJ1Y3QgbGxpbmUgKmxsID0gc2xpbmVbbG5vXS5sb3N0OwogCQkJd2hpbGUgKGxsKSB7CiAJCQkJc3RydWN0IGxsaW5lICp0bXAgPSBsbDsKIAkJCQlsbCA9IGxsLT5uZXh0OwpAQCAtOTg2LDYgKzExNjYsNyBAQAogewogCXN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCA9ICZyZXYtPmRpZmZvcHQ7CiAJaW50IGxpbmVfdGVybWluYXRpb24sIGludGVyX25hbWVfdGVybWluYXRpb24sIGk7CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG9wdCk7CiAKIAlsaW5lX3Rlcm1pbmF0aW9uID0gb3B0LT5saW5lX3Rlcm1pbmF0aW9uOwogCWludGVyX25hbWVfdGVybWluYXRpb24gPSAnXHQnOwpAQCAtOTk1LDcgKzExNzYsMTAgQEAKIAlpZiAocmV2LT5sb2dpbmZvICYmICFyZXYtPm5vX2NvbW1pdF9pZCkKIAkJc2hvd19sb2cocmV2KTsKIAorCiAJaWYgKG9wdC0+b3V0cHV0X2Zvcm1hdCAmIERJRkZfRk9STUFUX1JBVykgeworCQlwcmludGYoIiVzIiwgbGluZV9wcmVmaXgpOworCiAJCS8qIEFzIG1hbnkgY29sb25zIGFzIHRoZXJlIGFyZSBwYXJlbnRzICovCiAJCWZvciAoaSA9IDA7IGkgPCBudW1fcGFyZW50OyBpKyspCiAJCQlwdXRjaGFyKCc6Jyk7CkBAIC0xMDMzLDYgKzEyMTcsNyBAQAogCQkgICAgICAgc3RydWN0IHJldl9pbmZvICpyZXYpCiB7CiAJc3RydWN0IGRpZmZfb3B0aW9ucyAqb3B0ID0gJnJldi0+ZGlmZm9wdDsKKwogCWlmICghcC0+bGVuKQogCQlyZXR1cm47CiAJaWYgKG9wdC0+b3V0cHV0X2Zvcm1hdCAmIChESUZGX0ZPUk1BVF9SQVcgfApAQCAtMTEyMCw2ICsxMzA1LDcgQEAKIAlpbnQgaSwgbnVtX3BhdGhzLCBuZWVkc2VwLCBzaG93X2xvZ19maXJzdCwgbnVtX3BhcmVudCA9IHBhcmVudHMtPm5yOwogCiAJZGlmZm9wdHMgPSAqb3B0OworCWRpZmZfdHJlZV9zZXR1cF9wYXRocyhkaWZmb3B0cy5wYXRoc3BlYy5yYXcsICZkaWZmb3B0cyk7CiAJZGlmZm9wdHMub3V0cHV0X2Zvcm1hdCA9IERJRkZfRk9STUFUX05PX09VVFBVVDsKIAlESUZGX09QVF9TRVQoJmRpZmZvcHRzLCBSRUNVUlNJVkUpOwogCURJRkZfT1BUX0NMUigmZGlmZm9wdHMsIEFMTE9XX0VYVEVSTkFMKTsKQEAgLTExNDMsOCArMTMyOSwxMCBAQAogCiAJCWlmIChzaG93X2xvZ19maXJzdCAmJiBpID09IDApIHsKIAkJCXNob3dfbG9nKHJldik7CisKIAkJCWlmIChyZXYtPnZlcmJvc2VfaGVhZGVyICYmIG9wdC0+b3V0cHV0X2Zvcm1hdCkKLQkJCQlwdXRjaGFyKG9wdC0+bGluZV90ZXJtaW5hdGlvbik7CisJCQkJcHJpbnRmKCIlcyVjIiwgZGlmZl9saW5lX3ByZWZpeChvcHQpLAorCQkJCSAgICAgICBvcHQtPmxpbmVfdGVybWluYXRpb24pOwogCQl9CiAJCWRpZmZfZmx1c2goJmRpZmZvcHRzKTsKIAl9CkBAIC0xMTcyLDcgKzEzNjAsOCBAQAogCiAJCWlmIChvcHQtPm91dHB1dF9mb3JtYXQgJiBESUZGX0ZPUk1BVF9QQVRDSCkgewogCQkJaWYgKG5lZWRzZXApCi0JCQkJcHV0Y2hhcihvcHQtPmxpbmVfdGVybWluYXRpb24pOworCQkJCXByaW50ZigiJXMlYyIsIGRpZmZfbGluZV9wcmVmaXgob3B0KSwKKwkJCQkgICAgICAgb3B0LT5saW5lX3Rlcm1pbmF0aW9uKTsKIAkJCWZvciAocCA9IHBhdGhzOyBwOyBwID0gcC0+bmV4dCkgewogCQkJCWlmIChwLT5sZW4pCiAJCQkJCXNob3dfcGF0Y2hfZGlmZihwLCBudW1fcGFyZW50LCBkZW5zZSwKQEAgLTExODcsNiArMTM3Niw4IEBACiAJCXBhdGhzID0gcGF0aHMtPm5leHQ7CiAJCWZyZWUodG1wKTsKIAl9CisKKwlkaWZmX3RyZWVfcmVsZWFzZV9wYXRocygmZGlmZm9wdHMpOwogfQogCiB2b2lkIGRpZmZfdHJlZV9jb21iaW5lZF9tZXJnZShjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGludCBkZW5zZSwKZGlmZiAtLWdpdCBhL2NvbW1hbmQtbGlzdC50eHQgYi9jb21tYW5kLWxpc3QudHh0CmluZGV4IDdlOGNmZWMuLmJmODMzMDMgMTAwNjQ0Ci0tLSBhL2NvbW1hbmQtbGlzdC50eHQKKysrIGIvY29tbWFuZC1saXN0LnR4dApAQCAtMTIsNiArMTIsNyBAQAogZ2l0LWJ1bmRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5wb3JjZWxhaW4KIGdpdC1jYXQtZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ2ludGVycm9nYXRvcnMKIGdpdC1jaGVjay1hdHRyICAgICAgICAgICAgICAgICAgICAgICAgICBwdXJlaGVscGVycworZ2l0LWNoZWNrLWlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVoZWxwZXJzCiBnaXQtY2hlY2tvdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnBvcmNlbGFpbiBjb21tb24KIGdpdC1jaGVja291dC1pbmRleCAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ21hbmlwdWxhdG9ycwogZ2l0LWNoZWNrLXJlZi1mb3JtYXQgICAgICAgICAgICAgICAgICAgIHB1cmVoZWxwZXJzCmRpZmYgLS1naXQgYS9jb21taXQuYyBiL2NvbW1pdC5jCmluZGV4IGU4ZWIwYWUuLjg4OGUwMmEgMTAwNjQ0Ci0tLSBhL2NvbW1pdC5jCisrKyBiL2NvbW1pdC5jCkBAIC00NjMsMTQgKzQ2MywyMyBAQAogCX0KIH0KIAotdm9pZCBjbGVhcl9jb21taXRfbWFya3Moc3RydWN0IGNvbW1pdCAqY29tbWl0LCB1bnNpZ25lZCBpbnQgbWFyaykKK3ZvaWQgY2xlYXJfY29tbWl0X21hcmtzX21hbnkoaW50IG5yLCBzdHJ1Y3QgY29tbWl0ICoqY29tbWl0LCB1bnNpZ25lZCBpbnQgbWFyaykKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QgPSBOVUxMOwotCWNvbW1pdF9saXN0X2luc2VydChjb21taXQsICZsaXN0KTsKKworCXdoaWxlIChuci0tKSB7CisJCWNvbW1pdF9saXN0X2luc2VydCgqY29tbWl0LCAmbGlzdCk7CisJCWNvbW1pdCsrOworCX0KIAl3aGlsZSAobGlzdCkKIAkJY2xlYXJfY29tbWl0X21hcmtzXzEoJmxpc3QsIHBvcF9jb21taXQoJmxpc3QpLCBtYXJrKTsKIH0KIAordm9pZCBjbGVhcl9jb21taXRfbWFya3Moc3RydWN0IGNvbW1pdCAqY29tbWl0LCB1bnNpZ25lZCBpbnQgbWFyaykKK3sKKwljbGVhcl9jb21taXRfbWFya3NfbWFueSgxLCAmY29tbWl0LCBtYXJrKTsKK30KKwogdm9pZCBjbGVhcl9jb21taXRfbWFya3NfZm9yX29iamVjdF9hcnJheShzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphLCB1bnNpZ25lZCBtYXJrKQogewogCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKQEAgLTc5Nyw4ICs4MDYsNyBAQAogCWlmICghcmVzdWx0IHx8ICFyZXN1bHQtPm5leHQpIHsKIAkJaWYgKGNsZWFudXApIHsKIAkJCWNsZWFyX2NvbW1pdF9tYXJrcyhvbmUsIGFsbF9mbGFncyk7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQotCQkJCWNsZWFyX2NvbW1pdF9tYXJrcyh0d29zW2ldLCBhbGxfZmxhZ3MpOworCQkJY2xlYXJfY29tbWl0X21hcmtzX21hbnkobiwgdHdvcywgYWxsX2ZsYWdzKTsKIAkJfQogCQlyZXR1cm4gcmVzdWx0OwogCX0KQEAgLTgxNiw4ICs4MjQsNyBAQAogCWZyZWVfY29tbWl0X2xpc3QocmVzdWx0KTsKIAogCWNsZWFyX2NvbW1pdF9tYXJrcyhvbmUsIGFsbF9mbGFncyk7Ci0JZm9yIChpID0gMDsgaSA8IG47IGkrKykKLQkJY2xlYXJfY29tbWl0X21hcmtzKHR3b3NbaV0sIGFsbF9mbGFncyk7CisJY2xlYXJfY29tbWl0X21hcmtzX21hbnkobiwgdHdvcywgYWxsX2ZsYWdzKTsKIAogCWNudCA9IHJlbW92ZV9yZWR1bmRhbnQocnNsdCwgY250KTsKIAlyZXN1bHQgPSBOVUxMOwpAQCAtODM0LDcgKzg0MSw3IEBACiB9CiAKIC8qCi0gKiBJcyAiY29tbWl0IiBhIGRlY2VuZGFudCBvZiBvbmUgb2YgdGhlIGVsZW1lbnRzIG9uIHRoZSAid2l0aF9jb21taXQiIGxpc3Q/CisgKiBJcyAiY29tbWl0IiBhIGRlc2NlbmRhbnQgb2Ygb25lIG9mIHRoZSBlbGVtZW50cyBvbiB0aGUgIndpdGhfY29tbWl0IiBsaXN0PwogICovCiBpbnQgaXNfZGVzY2VuZGFudF9vZihzdHJ1Y3QgY29tbWl0ICpjb21taXQsIHN0cnVjdCBjb21taXRfbGlzdCAqd2l0aF9jb21taXQpCiB7CkBAIC04NTIsMjMgKzg1OSwzNCBAQAogfQogCiAvKgorICogSXMgImNvbW1pdCIgYW4gYW5jZXN0b3Igb2Ygb25lIG9mIHRoZSAicmVmZXJlbmNlcyI/CisgKi8KK2ludCBpbl9tZXJnZV9iYXNlc19tYW55KHN0cnVjdCBjb21taXQgKmNvbW1pdCwgaW50IG5yX3JlZmVyZW5jZSwgc3RydWN0IGNvbW1pdCAqKnJlZmVyZW5jZSkKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKmJhc2VzOworCWludCByZXQgPSAwLCBpOworCisJaWYgKHBhcnNlX2NvbW1pdChjb21taXQpKQorCQlyZXR1cm4gcmV0OworCWZvciAoaSA9IDA7IGkgPCBucl9yZWZlcmVuY2U7IGkrKykKKwkJaWYgKHBhcnNlX2NvbW1pdChyZWZlcmVuY2VbaV0pKQorCQkJcmV0dXJuIHJldDsKKworCWJhc2VzID0gcGFpbnRfZG93bl90b19jb21tb24oY29tbWl0LCBucl9yZWZlcmVuY2UsIHJlZmVyZW5jZSk7CisJaWYgKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgUEFSRU5UMikKKwkJcmV0ID0gMTsKKwljbGVhcl9jb21taXRfbWFya3MoY29tbWl0LCBhbGxfZmxhZ3MpOworCWNsZWFyX2NvbW1pdF9tYXJrc19tYW55KG5yX3JlZmVyZW5jZSwgcmVmZXJlbmNlLCBhbGxfZmxhZ3MpOworCWZyZWVfY29tbWl0X2xpc3QoYmFzZXMpOworCXJldHVybiByZXQ7Cit9CisKKy8qCiAgKiBJcyAiY29tbWl0IiBhbiBhbmNlc3RvciBvZiAoaS5lLiByZWFjaGFibGUgZnJvbSkgdGhlICJyZWZlcmVuY2UiPwogICovCiBpbnQgaW5fbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgY29tbWl0ICpyZWZlcmVuY2UpCiB7Ci0Jc3RydWN0IGNvbW1pdF9saXN0ICpiYXNlczsKLQlpbnQgcmV0ID0gMDsKLQotCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSB8fCBwYXJzZV9jb21taXQocmVmZXJlbmNlKSkKLQkJcmV0dXJuIHJldDsKLQotCWJhc2VzID0gcGFpbnRfZG93bl90b19jb21tb24oY29tbWl0LCAxLCAmcmVmZXJlbmNlKTsKLQlpZiAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBQQVJFTlQyKQotCQlyZXQgPSAxOwotCWNsZWFyX2NvbW1pdF9tYXJrcyhjb21taXQsIGFsbF9mbGFncyk7Ci0JY2xlYXJfY29tbWl0X21hcmtzKHJlZmVyZW5jZSwgYWxsX2ZsYWdzKTsKLQlmcmVlX2NvbW1pdF9saXN0KGJhc2VzKTsKLQlyZXR1cm4gcmV0OworCXJldHVybiBpbl9tZXJnZV9iYXNlc19tYW55KGNvbW1pdCwgMSwgJnJlZmVyZW5jZSk7CiB9CiAKIHN0cnVjdCBjb21taXRfbGlzdCAqcmVkdWNlX2hlYWRzKHN0cnVjdCBjb21taXRfbGlzdCAqaGVhZHMpCkBAIC0xMDIzLDYgKzEwNDEsNzYgQEAKIAlmcmVlKGJ1Zik7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgeworCWNoYXIgcmVzdWx0OworCWNvbnN0IGNoYXIgKmNoZWNrOworfSBzaWdjaGVja19ncGdfc3RhdHVzW10gPSB7CisJeyAnRycsICJcbltHTlVQRzpdIEdPT0RTSUcgIiB9LAorCXsgJ0InLCAiXG5bR05VUEc6XSBCQURTSUcgIiB9LAorCXsgJ1UnLCAiXG5bR05VUEc6XSBUUlVTVF9ORVZFUiIgfSwKKwl7ICdVJywgIlxuW0dOVVBHOl0gVFJVU1RfVU5ERUZJTkVEIiB9LAorfTsKKworc3RhdGljIHZvaWQgcGFyc2VfZ3BnX291dHB1dChzdHJ1Y3Qgc2lnbmF0dXJlX2NoZWNrICpzaWdjKQoreworCWNvbnN0IGNoYXIgKmJ1ZiA9IHNpZ2MtPmdwZ19zdGF0dXM7CisJaW50IGk7CisKKwkvKiBJdGVyYXRlIG92ZXIgYWxsIHNlYXJjaCBzdHJpbmdzICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2lnY2hlY2tfZ3BnX3N0YXR1cyk7IGkrKykgeworCQljb25zdCBjaGFyICpmb3VuZCwgKm5leHQ7CisKKwkJaWYgKCFwcmVmaXhjbXAoYnVmLCBzaWdjaGVja19ncGdfc3RhdHVzW2ldLmNoZWNrICsgMSkpIHsKKwkJCS8qIEF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyICovCisJCQlmb3VuZCA9IGJ1ZiArIHN0cmxlbihzaWdjaGVja19ncGdfc3RhdHVzW2ldLmNoZWNrICsgMSk7CisJCX0gZWxzZSB7CisJCQlmb3VuZCA9IHN0cnN0cihidWYsIHNpZ2NoZWNrX2dwZ19zdGF0dXNbaV0uY2hlY2spOworCQkJaWYgKCFmb3VuZCkKKwkJCQljb250aW51ZTsKKwkJCWZvdW5kICs9IHN0cmxlbihzaWdjaGVja19ncGdfc3RhdHVzW2ldLmNoZWNrKTsKKwkJfQorCQlzaWdjLT5yZXN1bHQgPSBzaWdjaGVja19ncGdfc3RhdHVzW2ldLnJlc3VsdDsKKwkJLyogVGhlIHRydXN0IG1lc3NhZ2VzIGFyZSBub3QgZm9sbG93ZWQgYnkga2V5L3NpZ25lciBpbmZvcm1hdGlvbiAqLworCQlpZiAoc2lnYy0+cmVzdWx0ICE9ICdVJykgeworCQkJc2lnYy0+a2V5ID0geG1lbWR1cHooZm91bmQsIDE2KTsKKwkJCWZvdW5kICs9IDE3OworCQkJbmV4dCA9IHN0cmNocm51bChmb3VuZCwgJ1xuJyk7CisJCQlzaWdjLT5zaWduZXIgPSB4bWVtZHVweihmb3VuZCwgbmV4dCAtIGZvdW5kKTsKKwkJfQorCX0KK30KKwordm9pZCBjaGVja19jb21taXRfc2lnbmF0dXJlKGNvbnN0IHN0cnVjdCBjb21taXQqIGNvbW1pdCwgc3RydWN0IHNpZ25hdHVyZV9jaGVjayAqc2lnYykKK3sKKwlzdHJ1Y3Qgc3RyYnVmIHBheWxvYWQgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIHNpZ25hdHVyZSA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgZ3BnX291dHB1dCA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgZ3BnX3N0YXR1cyA9IFNUUkJVRl9JTklUOworCWludCBzdGF0dXM7CisKKwlzaWdjLT5yZXN1bHQgPSAnTic7CisKKwlpZiAocGFyc2Vfc2lnbmVkX2NvbW1pdChjb21taXQtPm9iamVjdC5zaGExLAorCQkJCSZwYXlsb2FkLCAmc2lnbmF0dXJlKSA8PSAwKQorCQlnb3RvIG91dDsKKwlzdGF0dXMgPSB2ZXJpZnlfc2lnbmVkX2J1ZmZlcihwYXlsb2FkLmJ1ZiwgcGF5bG9hZC5sZW4sCisJCQkJICAgICAgc2lnbmF0dXJlLmJ1Ziwgc2lnbmF0dXJlLmxlbiwKKwkJCQkgICAgICAmZ3BnX291dHB1dCwgJmdwZ19zdGF0dXMpOworCWlmIChzdGF0dXMgJiYgIWdwZ19vdXRwdXQubGVuKQorCQlnb3RvIG91dDsKKwlzaWdjLT5ncGdfb3V0cHV0ID0gc3RyYnVmX2RldGFjaCgmZ3BnX291dHB1dCwgTlVMTCk7CisJc2lnYy0+Z3BnX3N0YXR1cyA9IHN0cmJ1Zl9kZXRhY2goJmdwZ19zdGF0dXMsIE5VTEwpOworCXBhcnNlX2dwZ19vdXRwdXQoc2lnYyk7CisKKyBvdXQ6CisJc3RyYnVmX3JlbGVhc2UoJmdwZ19zdGF0dXMpOworCXN0cmJ1Zl9yZWxlYXNlKCZncGdfb3V0cHV0KTsKKwlzdHJidWZfcmVsZWFzZSgmcGF5bG9hZCk7CisJc3RyYnVmX3JlbGVhc2UoJnNpZ25hdHVyZSk7Cit9CisKKworCiB2b2lkIGFwcGVuZF9tZXJnZV90YWdfaGVhZGVycyhzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsCiAJCQkgICAgICBzdHJ1Y3QgY29tbWl0X2V4dHJhX2hlYWRlciAqKip0YWlsKQogewpkaWZmIC0tZ2l0IGEvY29tbWl0LmggYi9jb21taXQuaAppbmRleCBiNmFkOGYzLi42ZTljN2NkIDEwMDY0NAotLS0gYS9jb21taXQuaAorKysgYi9jb21taXQuaApAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlICJ0cmVlLmgiCiAjaW5jbHVkZSAic3RyYnVmLmgiCiAjaW5jbHVkZSAiZGVjb3JhdGUuaCIKKyNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCiAKIHN0cnVjdCBjb21taXRfbGlzdCB7CiAJc3RydWN0IGNvbW1pdCAqaXRlbTsKQEAgLTg5LDYgKzkwLDggQEAKIAljaGFyICpub3Rlc19tZXNzYWdlOwogCXN0cnVjdCByZWZsb2dfd2Fsa19pbmZvICpyZWZsb2dfaW5mbzsKIAljb25zdCBjaGFyICpvdXRwdXRfZW5jb2Rpbmc7CisJc3RydWN0IHN0cmluZ19saXN0ICptYWlsbWFwOworCWludCBjb2xvcjsKIH07CiAKIHN0cnVjdCB1c2VyZm9ybWF0X3dhbnQgewpAQCAtOTgsNyArMTAxLDkgQEAKIGV4dGVybiBpbnQgaGFzX25vbl9hc2NpaShjb25zdCBjaGFyICp0ZXh0KTsKIHN0cnVjdCByZXZfaW5mbzsgLyogaW4gcmV2aXNpb24uaCwgaXQgY2lyY3VsYXJseSB1c2VzIGVudW0gY21pdF9mbXQgKi8KIGV4dGVybiBjaGFyICpsb2dtc2dfcmVlbmNvZGUoY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJICAgICBjaGFyICoqY29tbWl0X2VuY29kaW5nLAogCQkJICAgICBjb25zdCBjaGFyICpvdXRwdXRfZW5jb2RpbmcpOworZXh0ZXJuIHZvaWQgbG9nbXNnX2ZyZWUoY2hhciAqbXNnLCBjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwogZXh0ZXJuIHZvaWQgZ2V0X2NvbW1pdF9mb3JtYXQoY29uc3QgY2hhciAqYXJnLCBzdHJ1Y3QgcmV2X2luZm8gKik7CiBleHRlcm4gY29uc3QgY2hhciAqZm9ybWF0X3N1YmplY3Qoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm1zZywKIAkJCQkgIGNvbnN0IGNoYXIgKmxpbmVfc2VwYXJhdG9yKTsKQEAgLTEzNCw2ICsxMzksNyBAQAogc3RydWN0IGNvbW1pdCAqcG9wX2NvbW1pdChzdHJ1Y3QgY29tbWl0X2xpc3QgKipzdGFjayk7CiAKIHZvaWQgY2xlYXJfY29tbWl0X21hcmtzKHN0cnVjdCBjb21taXQgKmNvbW1pdCwgdW5zaWduZWQgaW50IG1hcmspOwordm9pZCBjbGVhcl9jb21taXRfbWFya3NfbWFueShpbnQgbnIsIHN0cnVjdCBjb21taXQgKipjb21taXQsIHVuc2lnbmVkIGludCBtYXJrKTsKIHZvaWQgY2xlYXJfY29tbWl0X21hcmtzX2Zvcl9vYmplY3RfYXJyYXkoc3RydWN0IG9iamVjdF9hcnJheSAqYSwgdW5zaWduZWQgbWFyayk7CiAKIC8qCkBAIC0xNjEsMTUgKzE2NywyMSBAQAogZXh0ZXJuIHN0cnVjdCBjb21taXRfbGlzdCAqZ2V0X21lcmdlX2Jhc2VzX21hbnkoc3RydWN0IGNvbW1pdCAqb25lLCBpbnQgbiwgc3RydWN0IGNvbW1pdCAqKnR3b3MsIGludCBjbGVhbnVwKTsKIGV4dGVybiBzdHJ1Y3QgY29tbWl0X2xpc3QgKmdldF9vY3RvcHVzX21lcmdlX2Jhc2VzKHN0cnVjdCBjb21taXRfbGlzdCAqaW4pOwogCisvKiBsYXJnZXN0IHBvc2l0aXZlIG51bWJlciBhIHNpZ25lZCAzMi1iaXQgaW50ZWdlciBjYW4gY29udGFpbiAqLworI2RlZmluZSBJTkZJTklURV9ERVBUSCAweDdmZmZmZmZmCisKIGV4dGVybiBpbnQgcmVnaXN0ZXJfc2hhbGxvdyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKTsKIGV4dGVybiBpbnQgdW5yZWdpc3Rlcl9zaGFsbG93KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwogZXh0ZXJuIGludCBmb3JfZWFjaF9jb21taXRfZ3JhZnQoZWFjaF9jb21taXRfZ3JhZnRfZm4sIHZvaWQgKik7CiBleHRlcm4gaW50IGlzX3JlcG9zaXRvcnlfc2hhbGxvdyh2b2lkKTsKIGV4dGVybiBzdHJ1Y3QgY29tbWl0X2xpc3QgKmdldF9zaGFsbG93X2NvbW1pdHMoc3RydWN0IG9iamVjdF9hcnJheSAqaGVhZHMsCiAJCWludCBkZXB0aCwgaW50IHNoYWxsb3dfZmxhZywgaW50IG5vdF9zaGFsbG93X2ZsYWcpOworZXh0ZXJuIHZvaWQgY2hlY2tfc2hhbGxvd19maWxlX2Zvcl91cGRhdGUodm9pZCk7CitleHRlcm4gdm9pZCBzZXRfYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZShjb25zdCBjaGFyICpwYXRoKTsKIAogaW50IGlzX2Rlc2NlbmRhbnRfb2Yoc3RydWN0IGNvbW1pdCAqLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKik7CiBpbnQgaW5fbWVyZ2VfYmFzZXMoc3RydWN0IGNvbW1pdCAqLCBzdHJ1Y3QgY29tbWl0ICopOworaW50IGluX21lcmdlX2Jhc2VzX21hbnkoc3RydWN0IGNvbW1pdCAqLCBpbnQsIHN0cnVjdCBjb21taXQgKiopOwogCiBleHRlcm4gaW50IGludGVyYWN0aXZlX2FkZChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCwgaW50IHBhdGNoKTsKIGV4dGVybiBpbnQgcnVuX2FkZF9pbnRlcmFjdGl2ZShjb25zdCBjaGFyICpyZXZpc2lvbiwgY29uc3QgY2hhciAqcGF0Y2hfbW9kZSwKQEAgLTIyNCw0ICsyMzYsMTMgQEAKIAkJCSAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdF9jdXIsCiAJCQkgICAgICBjb25zdCBjaGFyICpmb3JtYXRfbGFzdCk7CiAKKy8qCisgKiBDaGVjayB0aGUgc2lnbmF0dXJlIG9mIHRoZSBnaXZlbiBjb21taXQuIFRoZSByZXN1bHQgb2YgdGhlIGNoZWNrIGlzIHN0b3JlZAorICogaW4gc2lnLT5jaGVja19yZXN1bHQsICdHJyBmb3IgYSBnb29kIHNpZ25hdHVyZSwgJ1UnIGZvciBhIGdvb2Qgc2lnbmF0dXJlCisgKiBmcm9tIGFuIHVudHJ1c3RlZCBzaWduZXIsICdCJyBmb3IgYSBiYWQgc2lnbmF0dXJlIGFuZCAnTicgZm9yIG5vIHNpZ25hdHVyZQorICogYXQgYWxsLiAgVGhpcyBtYXkgYWxsb2NhdGUgbWVtb3J5IGZvciBzaWctPmdwZ19vdXRwdXQsIHNpZy0+Z3BnX3N0YXR1cywKKyAqIHNpZy0+c2lnbmVyIGFuZCBzaWctPmtleS4KKyAqLworZXh0ZXJuIHZvaWQgY2hlY2tfY29tbWl0X3NpZ25hdHVyZShjb25zdCBzdHJ1Y3QgY29tbWl0KiBjb21taXQsIHN0cnVjdCBzaWduYXR1cmVfY2hlY2sgKnNpZ2MpOworCiAjZW5kaWYgLyogQ09NTUlUX0ggKi8KZGlmZiAtLWdpdCBhL2NvbXBhdC9jbGlwcGVkLXdyaXRlLmMgYi9jb21wYXQvY2xpcHBlZC13cml0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Zjk4ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb21wYXQvY2xpcHBlZC13cml0ZS5jCkBAIC0wLDAgKzEsMTMgQEAKKyNpbmNsdWRlICIuLi9naXQtY29tcGF0LXV0aWwuaCIKKyN1bmRlZiB3cml0ZQorCisvKgorICogVmVyc2lvbiBvZiB3cml0ZSB0aGF0IHdpbGwgd3JpdGUgYXQgbW9zdCBJTlRfTUFYIGJ5dGVzLgorICogV29ya2Fyb3VuZCBhIHhudSBidWcgb24gTWFjIE9TIFgKKyAqLworc3NpemVfdCBjbGlwcGVkX3dyaXRlKGludCBmaWxkZXMsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IG5ieXRlKQoreworCWlmIChuYnl0ZSA+IElOVF9NQVgpCisJCW5ieXRlID0gSU5UX01BWDsKKwlyZXR1cm4gd3JpdGUoZmlsZGVzLCBidWYsIG5ieXRlKTsKK30KZGlmZiAtLWdpdCBhL2NvbXBhdC9jeWd3aW4uYyBiL2NvbXBhdC9jeWd3aW4uYwppbmRleCA1NDI4ODU4Li45MWNlNWQ0IDEwMDY0NAotLS0gYS9jb21wYXQvY3lnd2luLmMKKysrIGIvY29tcGF0L2N5Z3dpbi5jCkBAIC0xLDE1ICsxLDIzIEBACisjZGVmaW5lIENZR1dJTl9DCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSNpZmRlZiBDWUdXSU5fVjE1X1dJTjMyQVBJCi0jaW5jbHVkZSAiLi4vZ2l0LWNvbXBhdC11dGlsLmgiCi0jaW5jbHVkZSAid2luMzIuaCIKLSNlbHNlCiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDxzeXMvZXJybm8uaD4KICNpbmNsdWRlICJ3aW4zMi5oIgogI2luY2x1ZGUgIi4uL2dpdC1jb21wYXQtdXRpbC5oIgotI2VuZGlmCiAjaW5jbHVkZSAiLi4vY2FjaGUuaCIgLyogdG8gcmVhZCBjb25maWd1cmF0aW9uICovCiAKKy8qCisgKiBSZXR1cm4gUE9TSVggcGVybWlzc2lvbiBiaXRzLCByZWdhcmRsZXNzIG9mIGNvcmUuaWdub3JlY3lnd2luZnN0cmlja3MKKyAqLworaW50IGN5Z3dpbl9nZXRfc3RfbW9kZV9iaXRzKGNvbnN0IGNoYXIgKnBhdGgsIGludCAqbW9kZSkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwlpZiAobHN0YXQocGF0aCwgJnN0KSA8IDApCisJCXJldHVybiAtMTsKKwkqbW9kZSA9IHN0LnN0X21vZGU7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxldGltZV90b190aW1lc3BlYyhjb25zdCBGSUxFVElNRSAqZnQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCiB7CiAJbG9uZyBsb25nIHdpblRpbWUgPSAoKGxvbmcgbG9uZylmdC0+ZHdIaWdoRGF0ZVRpbWUgPDwgMzIpICsKZGlmZiAtLWdpdCBhL2NvbXBhdC9jeWd3aW4uaCBiL2NvbXBhdC9jeWd3aW4uaAppbmRleCBhMzIyOWY1Li5jMDQ5NjVhIDEwMDY0NAotLS0gYS9jb21wYXQvY3lnd2luLmgKKysrIGIvY29tcGF0L2N5Z3dpbi5oCkBAIC00LDYgKzQsMTEgQEAKIHR5cGVkZWYgaW50ICgqc3RhdF9mbl90KShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKIGV4dGVybiBzdGF0X2ZuX3QgY3lnd2luX3N0YXRfZm47CiBleHRlcm4gc3RhdF9mbl90IGN5Z3dpbl9sc3RhdF9mbjsKK2ludCBjeWd3aW5fZ2V0X3N0X21vZGVfYml0cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgKm1vZGUpOwogCisjZGVmaW5lIGdldF9zdF9tb2RlX2JpdHMocCxtKSBjeWd3aW5fZ2V0X3N0X21vZGVfYml0cygocCksKG0pKQorI2lmbmRlZiBDWUdXSU5fQworLyogY3lnd2luLmMgbmVlZHMgdGhlIG9yaWdpbmFsIGxzdGF0KCkgKi8KICNkZWZpbmUgc3RhdChwYXRoLCBidWYpICgqY3lnd2luX3N0YXRfZm4pKHBhdGgsIGJ1ZikKICNkZWZpbmUgbHN0YXQocGF0aCwgYnVmKSAoKmN5Z3dpbl9sc3RhdF9mbikocGF0aCwgYnVmKQorI2VuZGlmCmRpZmYgLS1naXQgYS9jb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMgYi9jb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMKaW5kZXggYjhiN2RjMi4uMzc4YzQ2NyAxMDA2NDQKLS0tIGEvY29tcGF0L2ZubWF0Y2gvZm5tYXRjaC5jCisrKyBiL2NvbXBhdC9mbm1hdGNoL2ZubWF0Y2guYwpAQCAtMjUsNiArMjUsNyBAQAogIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQogI2VuZGlmCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZubWF0Y2guaD4KICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtNTUsNyArNTYsOCBAQAogICAgcHJvZ3JhbSB1bmRlcnN0YW5kIGBjb25maWd1cmUgLS13aXRoLWdudS1saWJjJyBhbmQgb21pdCB0aGUgb2JqZWN0IGZpbGVzLAogICAgaXQgaXMgc2ltcGxlciB0byBqdXN0IGRvIHRoaXMgaW4gdGhlIHNvdXJjZSBmb3IgZWFjaCBzdWNoIGZpbGUuICAqLwogCi0jaWYgZGVmaW5lZCBfTElCQyB8fCAhZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18KKyNpZiBkZWZpbmVkIE5PX0ZOTUFUQ0ggfHwgZGVmaW5lZCBOT19GTk1BVENIX0NBU0VGT0xEIHx8IFwKKyAgICBkZWZpbmVkIF9MSUJDIHx8ICFkZWZpbmVkIF9fR05VX0xJQlJBUllfXwogCiAKICMgaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgIWRlZmluZWQgaXNhc2NpaQpAQCAtMTIwLDcgKzEyMiw3IEBACiAgICB3aG9zZSBuYW1lcyBhcmUgaW5jb25zaXN0ZW50LiAgKi8KIAogIyBpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBnZXRlbnYKLWV4dGVybiBjaGFyICpnZXRlbnYgKCk7CitleHRlcm4gY2hhciAqZ2V0ZW52IChjb25zdCBjaGFyICpuYW1lKTsKICMgZW5kaWYKIAogIyBpZm5kZWYgZXJybm8KZGlmZiAtLWdpdCBhL2NvbXBhdC9taW5ndy5jIGIvY29tcGF0L21pbmd3LmMKaW5kZXggYjY3MzYyNS4uYmI5MmM0MyAxMDA2NDQKLS0tIGEvY29tcGF0L21pbmd3LmMKKysrIGIvY29tcGF0L21pbmd3LmMKQEAgLTg0MSw4ICs4NDEsOCBAQAogCXN0cnVjdCBwaW5mb190ICpuZXh0OwogCXBpZF90IHBpZDsKIAlIQU5ETEUgcHJvYzsKLX0gcGluZm9fdDsKLXN0cnVjdCBwaW5mb190ICpwaW5mbyA9IE5VTEw7Cit9Oworc3RhdGljIHN0cnVjdCBwaW5mb190ICpwaW5mbyA9IE5VTEw7CiBDUklUSUNBTF9TRUNUSU9OIHBpbmZvX2NzOwogCiBzdGF0aWMgcGlkX3QgbWluZ3dfc3Bhd252ZV9mZChjb25zdCBjaGFyICpjbWQsIGNvbnN0IGNoYXIgKiphcmd2LCBjaGFyICoqZW52LApAQCAtMTI1Myw3ICsxMjUzLDcgQEAKIAllbHNlCiAJCXNpbi0+c2luX2FkZHIuc19hZGRyID0gSU5BRERSX0xPT1BCQUNLOwogCWFpLT5haV9hZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKXNpbjsKLQlhaS0+YWlfbmV4dCA9IDA7CisJYWktPmFpX25leHQgPSBOVUxMOwogCXJldHVybiAwOwogfQogCkBAIC0xNjc3LDE0ICsxNjc3LDE2IEBACiAjdW5kZWYgc2lnbmFsCiBzaWdfaGFuZGxlcl90IG1pbmd3X3NpZ25hbChpbnQgc2lnLCBzaWdfaGFuZGxlcl90IGhhbmRsZXIpCiB7Ci0Jc2lnX2hhbmRsZXJfdCBvbGQgPSB0aW1lcl9mbjsKKwlzaWdfaGFuZGxlcl90IG9sZDsKIAogCXN3aXRjaCAoc2lnKSB7CiAJY2FzZSBTSUdBTFJNOgorCQlvbGQgPSB0aW1lcl9mbjsKIAkJdGltZXJfZm4gPSBoYW5kbGVyOwogCQlicmVhazsKIAogCWNhc2UgU0lHSU5UOgorCQlvbGQgPSBzaWdpbnRfZm47CiAJCXNpZ2ludF9mbiA9IGhhbmRsZXI7CiAJCWJyZWFrOwogCmRpZmYgLS1naXQgYS9jb21wYXQvbWluZ3cuaCBiL2NvbXBhdC9taW5ndy5oCmluZGV4IDY4NWNkMmMuLmJkMGE4OGIgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9taW5ndy5oCisrKyBiL2NvbXBhdC9taW5ndy5oCkBAIC0zMzQsMTMgKzMzNCwyMCBAQAogdm9pZCBmcmVlX2Vudmlyb24oY2hhciAqKmVudik7CiAKIC8qCisgKiBBIGNyaXRpY2FsIHNlY3Rpb24gdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNwYXduCisgKiBmdW5jdGlvbnMgKG1pbmd3X3NwYXdudltwXWUoKSkgYW5kIHdhaXRwaWQoKS4gSW50aWFsaXNlZCBpbgorICogdGhlIHJlcGxhY2VtZW50IG1haW4oKSBtYWNybyBiZWxvdy4KKyAqLworZXh0ZXJuIENSSVRJQ0FMX1NFQ1RJT04gcGluZm9fY3M7CisKKy8qCiAgKiBBIHJlcGxhY2VtZW50IG9mIG1haW4oKSB0aGF0IGVuc3VyZXMgdGhhdCBhcmd2WzBdIGhhcyBhIHBhdGgKICAqIGFuZCB0aGF0IGRlZmF1bHQgZm1vZGUgYW5kIHN0ZChpbnxvdXR8ZXJyKSBhcmUgaW4gYmluYXJ5IG1vZGUKICAqLwogCiAjZGVmaW5lIG1haW4oYyx2KSBkdW1teV9kZWNsX21pbmd3X21haW4oKTsgXAotc3RhdGljIGludCBtaW5nd19tYWluKCk7IFwKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikgXAorc3RhdGljIGludCBtaW5nd19tYWluKGMsdik7IFwKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgXAogeyBcCiAJZXh0ZXJuIENSSVRJQ0FMX1NFQ1RJT04gcGluZm9fY3M7IFwKIAlfZm1vZGUgPSBfT19CSU5BUlk7IFwKZGlmZiAtLWdpdCBhL2NvbXBhdC9tc3ZjLmggYi9jb21wYXQvbXN2Yy5oCmluZGV4IGFhNGI1NjMuLjk2YjZkNjAgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9tc3ZjLmgKKysrIGIvY29tcGF0L21zdmMuaApAQCAtMTIsNiArMTIsOCBAQAogI2RlZmluZSBfX2F0dHJpYnV0ZV9fKHgpCiAjZGVmaW5lIHN0cm5jYXNlY21wICBfc3RybmljbXAKICNkZWZpbmUgZnRydW5jYXRlICAgIF9jaHNpemUKKyNkZWZpbmUgc3RydG91bGwgICAgIF9zdHJ0b3VpNjQKKyNkZWZpbmUgc3RydG9sbCAgICAgIF9zdHJ0b2k2NAogCiBzdGF0aWMgX19pbmxpbmUgaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKnMxLCBjb25zdCBjaGFyICpzMikKIHsKZGlmZiAtLWdpdCBhL2NvbXBhdC9uZWRtYWxsb2MvbWFsbG9jLmMuaCBiL2NvbXBhdC9uZWRtYWxsb2MvbWFsbG9jLmMuaAppbmRleCBmZjdjMmM0Li41YTQ0ZGVhIDEwMDY0NAotLS0gYS9jb21wYXQvbmVkbWFsbG9jL21hbGxvYy5jLmgKKysrIGIvY29tcGF0L25lZG1hbGxvYy9tYWxsb2MuYy5oCkBAIC00ODQsNiArNDg0LDEwIEBACiAjZGVmaW5lIERMTUFMTE9DX1ZFUlNJT04gMjA4MDQKICNlbmRpZiAvKiBETE1BTExPQ19WRVJTSU9OICovCiAKKyNpZiBkZWZpbmVkKGxpbnV4KQorI2RlZmluZSBfR05VX1NPVVJDRSAxCisjZW5kaWYKKwogI2lmbmRlZiBXSU4zMgogI2lmZGVmIF9XSU4zMgogI2RlZmluZSBXSU4zMiAxCkBAIC0xODAyLDcgKzE4MDYsNyBAQAogCiBzdGF0aWMgTUxPQ0tfVCBtYWxsb2NfZ2xvYmFsX211dGV4ID0geyAwLCAwLCAwfTsKIAotc3RhdGljIEZPUkNFSU5MSU5FIGxvbmcgd2luMzJfZ2V0Y3VycmVudHRocmVhZGlkKCkgeworc3RhdGljIEZPUkNFSU5MSU5FIGxvbmcgd2luMzJfZ2V0Y3VycmVudHRocmVhZGlkKHZvaWQpIHsKICNpZmRlZiBfTVNDX1ZFUgogI2lmIGRlZmluZWQoX01fSVg4NikKICAgbG9uZyAqdGhyZWFkc3RydWN0PShsb25nICopX19yZWFkZnNkd29yZCgweDE4KTsKQEAgLTQ3NzgsNyArNDc4Miw3IEBACiAKIHZvaWQgZGxmcmVlKHZvaWQqIG1lbSkgewogICAvKgotICAgICBDb25zb2xpZGF0ZSBmcmVlZCBjaHVua3Mgd2l0aCBwcmVjZWVkaW5nIG9yIHN1Y2NlZWRpbmcgYm9yZGVyaW5nCisgICAgIENvbnNvbGlkYXRlIGZyZWVkIGNodW5rcyB3aXRoIHByZWNlZGluZyBvciBzdWNjZWVkaW5nIGJvcmRlcmluZwogICAgICBmcmVlIGNodW5rcywgaWYgdGhleSBleGlzdCwgYW5kIHRoZW4gcGxhY2UgaW4gYSBiaW4uICBJbnRlcm1peGVkCiAgICAgIHdpdGggc3BlY2lhbCBjYXNlcyBmb3IgdG9wLCBkdiwgbW1hcHBlZCBjaHVua3MsIGFuZCB1c2FnZSBlcnJvcnMuCiAgICovCkBAIC01NjgwLDEwICs1Njg0LDEwIEBACiAJV29sZnJhbSBHbG9nZXIgKEdsb2dlckBscnoudW5pLW11ZW5jaGVuLmRlKS4KICAgICAgICogVXNlIGxhc3RfcmVtYWluZGVyIGluIG1vcmUgY2FzZXMuCiAgICAgICAqIFBhY2sgYmlucyB1c2luZyBpZGVhIGZyb20gIGNvbGluQG55eDEwLmNzLmR1LmVkdQotICAgICAgKiBVc2Ugb3JkZXJlZCBiaW5zIGluc3RlYWQgb2YgYmVzdC1maXQgdGhyZXNoaG9sZAorICAgICAgKiBVc2Ugb3JkZXJlZCBiaW5zIGluc3RlYWQgb2YgYmVzdC1maXQgdGhyZXNob2xkCiAgICAgICAqIEVsaW1pbmF0ZSBibG9jay1sb2NhbCBkZWNscyB0byBzaW1wbGlmeSB0cmFjaW5nIGFuZCBkZWJ1Z2dpbmcuCiAgICAgICAqIFN1cHBvcnQgYW5vdGhlciBjYXNlIG9mIHJlYWxsb2MgdmlhIG1vdmUgaW50byB0b3AKLSAgICAgICogRml4IGVycm9yIG9jY3VyaW5nIHdoZW4gaW5pdGlhbCBzYnJrX2Jhc2Ugbm90IHdvcmQtYWxpZ25lZC4KKyAgICAgICogRml4IGVycm9yIG9jY3VycmluZyB3aGVuIGluaXRpYWwgc2Jya19iYXNlIG5vdCB3b3JkLWFsaWduZWQuCiAgICAgICAqIFJlbHkgb24gcGFnZSBzaXplIGZvciB1bml0cyBpbnN0ZWFkIG9mIFNCUktfVU5JVCB0bwogCWF2b2lkIHN1cnByaXNlcyBhYm91dCBzYnJrIGFsaWdubWVudCBjb252ZW50aW9ucy4KICAgICAgICogQWRkIG1hbGxpbmZvLCBtYWxsb3B0LiBUaGFua3MgdG8gUmF5bW9uZCBOaWpzc2VuCmRpZmYgLS1naXQgYS9jb21wYXQvbmVkbWFsbG9jL25lZG1hbGxvYy5jIGIvY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2MuYwppbmRleCA5MWM0ZTdmLi42MDllYmJhIDEwMDY0NAotLS0gYS9jb21wYXQvbmVkbWFsbG9jL25lZG1hbGxvYy5jCisrKyBiL2NvbXBhdC9uZWRtYWxsb2MvbmVkbWFsbG9jLmMKQEAgLTE1OSw4ICsxNTksOCBAQAogI2VuZGlmCiBpbnQgICAgbmVkbWFsbG9wdChpbnQgcGFybm8sIGludCB2YWx1ZSkgVEhST1dTUEVDCXsgcmV0dXJuIG5lZHBtYWxsb3B0KDAsIHBhcm5vLCB2YWx1ZSk7IH0KIGludCAgICBuZWRtYWxsb2NfdHJpbShzaXplX3QgcGFkKSBUSFJPV1NQRUMJCQl7IHJldHVybiBuZWRwbWFsbG9jX3RyaW0oMCwgcGFkKTsgfQotdm9pZCAgIG5lZG1hbGxvY19zdGF0cygpIFRIUk9XU1BFQwkJCQkJeyBuZWRwbWFsbG9jX3N0YXRzKDApOyB9Ci1zaXplX3QgbmVkbWFsbG9jX2Zvb3RwcmludCgpIFRIUk9XU1BFQwkJCQl7IHJldHVybiBuZWRwbWFsbG9jX2Zvb3RwcmludCgwKTsgfQordm9pZCAgIG5lZG1hbGxvY19zdGF0cyh2b2lkKSBUSFJPV1NQRUMJCQkJCXsgbmVkcG1hbGxvY19zdGF0cygwKTsgfQorc2l6ZV90IG5lZG1hbGxvY19mb290cHJpbnQodm9pZCkgVEhST1dTUEVDCQkJCXsgcmV0dXJuIG5lZHBtYWxsb2NfZm9vdHByaW50KDApOyB9CiB2b2lkICoqbmVkaW5kZXBlbmRlbnRfY2FsbG9jKHNpemVfdCBlbGVtc25vLCBzaXplX3QgZWxlbXNpemUsIHZvaWQgKipjaHVua3MpIFRIUk9XU1BFQwl7IHJldHVybiBuZWRwaW5kZXBlbmRlbnRfY2FsbG9jKDAsIGVsZW1zbm8sIGVsZW1zaXplLCBjaHVua3MpOyB9CiB2b2lkICoqbmVkaW5kZXBlbmRlbnRfY29tYWxsb2Moc2l6ZV90IGVsZW1zLCBzaXplX3QgKnNpemVzLCB2b2lkICoqY2h1bmtzKSBUSFJPV1NQRUMJeyByZXR1cm4gbmVkcGluZGVwZW5kZW50X2NvbWFsbG9jKDAsIGVsZW1zLCBzaXplcywgY2h1bmtzKTsgfQogCmRpZmYgLS1naXQgYS9jb21wYXQvb2JzdGFjay5oIGIvY29tcGF0L29ic3RhY2suaAppbmRleCBkMTc4YmQ2Li5jZWI0YmRiIDEwMDY0NAotLS0gYS9jb21wYXQvb2JzdGFjay5oCisrKyBiL2NvbXBhdC9vYnN0YWNrLmgKQEAgLTEyOCw3ICsxMjgsNyBAQAogCiAjZGVmaW5lIF9fQlBUUl9BTElHTihCLCBQLCBBKSAoKEIpICsgKCgoUCkgLSAoQikgKyAoQSkpICYgfihBKSkpCiAKLS8qIFNpbWlsaWFyIHRvIF9CUFRSX0FMSUdOIChCLCBQLCBBKSwgZXhjZXB0IG9wdGltaXplIHRoZSBjb21tb24gY2FzZQorLyogU2ltaWxhciB0byBfQlBUUl9BTElHTiAoQiwgUCwgQSksIGV4Y2VwdCBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2UKICAgIHdoZXJlIHBvaW50ZXJzIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50ZWdlcnMsIGFsaWduZWQgYXMgaW50ZWdlcnMsCiAgICBhbmQgY29udmVydGVkIGJhY2sgYWdhaW4uICBJZiBQVFJfSU5UX1RZUEUgaXMgbmFycm93ZXIgdGhhbiBhCiAgICBwb2ludGVyIChlLmcuLCB0aGUgQVMvNDAwKSwgcGxheSBpdCBzYWZlIGFuZCBjb21wdXRlIHRoZSBhbGlnbm1lbnQKZGlmZiAtLWdpdCBhL2NvbXBhdC9wb2xsL3BvbGwuYyBiL2NvbXBhdC9wb2xsL3BvbGwuYwppbmRleCA3ZDIyNmVjLi40NDEwMzEwIDEwMDY0NAotLS0gYS9jb21wYXQvcG9sbC9wb2xsLmMKKysrIGIvY29tcGF0L3BvbGwvcG9sbC5jCkBAIC01NzYsNyArNTc2LDcgQEAKIAl7CiAJICAvKiBJdCdzIGEgc29ja2V0LiAgKi8KIAkgIFdTQUVudW1OZXR3b3JrRXZlbnRzICgoU09DS0VUKSBoLCBOVUxMLCAmZXYpOwotCSAgV1NBRXZlbnRTZWxlY3QgKChTT0NLRVQpIGgsIDAsIDApOworCSAgV1NBRXZlbnRTZWxlY3QgKChTT0NLRVQpIGgsIE5VTEwsIDApOwogCiAJICAvKiBJZiB3ZSdyZSBsdWNreSwgV1NBRW51bU5ldHdvcmtFdmVudHMgYWxyZWFkeSBwcm92aWRlZCBhIHdheQogCSAgICAgdG8gZGlzdGluZ3Vpc2ggRkRfUkVBRCBhbmQgRkRfQUNDRVBUOyB0aGlzIHNhdmVzIGEgcmVjdiBsYXRlci4gICovCmRpZmYgLS1naXQgYS9jb21wYXQvcHJlY29tcG9zZV91dGY4LmMgYi9jb21wYXQvcHJlY29tcG9zZV91dGY4LmMKaW5kZXggOGNmNTk1NS4uNzk4MGFiZCAxMDA2NDQKLS0tIGEvY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jCisrKyBiL2NvbXBhdC9wcmVjb21wb3NlX3V0ZjguYwpAQCAtNzgsNyArNzgsNyBAQAogCQlzaXplX3QgbmFtZWxlbjsKIAkJb2xkYXJnID0gYXJndltpXTsKIAkJaWYgKGhhc19ub25fYXNjaWkob2xkYXJnLCAoc2l6ZV90KS0xLCAmbmFtZWxlbikpIHsKLQkJCW5ld2FyZyA9IHJlZW5jb2RlX3N0cmluZ19pY29udihvbGRhcmcsIG5hbWVsZW4sIGljX3ByZWNvbXBvc2UpOworCQkJbmV3YXJnID0gcmVlbmNvZGVfc3RyaW5nX2ljb252KG9sZGFyZywgbmFtZWxlbiwgaWNfcHJlY29tcG9zZSwgTlVMTCk7CiAJCQlpZiAobmV3YXJnKQogCQkJCWFyZ3ZbaV0gPSBuZXdhcmc7CiAJCX0KQEAgLTEzNCw3ICsxMzQsNyBAQAogCQkJaWYgKHByZWNfZGlyLT5pY19wcmVjb21wb3NlID09IChpY29udl90KS0xKSB7CiAJCQkJZGllKCJpY29udl9vcGVuKCVzLCVzKSBmYWlsZWQsIGJ1dCBuZWVkZWQ6XG4iCiAJCQkJCQkiICAgIHByZWNvbXBvc2VkIHVuaWNvZGUgaXMgbm90IHN1cHBvcnRlZC5cbiIKLQkJCQkJCSIgICAgSWYgeW91IHduYXQgdG8gdXNlIGRlY29tcG9zZWQgdW5pY29kZSwgcnVuXG4iCisJCQkJCQkiICAgIElmIHlvdSB3YW50IHRvIHVzZSBkZWNvbXBvc2VkIHVuaWNvZGUsIHJ1blxuIgogCQkJCQkJIiAgICBcImdpdCBjb25maWcgY29yZS5wcmVjb21wb3NldW5pY29kZSBmYWxzZVwiXG4iLAogCQkJCQkJcmVwb19lbmNvZGluZywgcGF0aF9lbmNvZGluZyk7CiAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvY29tcGF0L3JlZ2V4L3JlZ2NvbXAuYyBiL2NvbXBhdC9yZWdleC9yZWdjb21wLmMKaW5kZXggOGM5NmVkOS4uZDAwMjViZCAxMDA2NDQKLS0tIGEvY29tcGF0L3JlZ2V4L3JlZ2NvbXAuYworKysgYi9jb21wYXQvcmVnZXgvcmVnY29tcC5jCkBAIC0yMDk1LDcgKzIwOTUsNyBAQAogCiAvKiBFbnRyeSBwb2ludCBvZiB0aGUgcGFyc2VyLgogICAgUGFyc2UgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBSRUdFWFAgYW5kIHJldHVybiB0aGUgc3RydWN0dXJlIHRyZWUuCi0gICBJZiBhbiBlcnJvciBpcyBvY2N1cmVkLCBFUlIgaXMgc2V0IGJ5IGVycm9yIGNvZGUsIGFuZCByZXR1cm4gTlVMTC4KKyAgIElmIGFuIGVycm9yIGhhcyBvY2N1cnJlZCwgRVJSIGlzIHNldCBieSBlcnJvciBjb2RlLCBhbmQgcmV0dXJuIE5VTEwuCiAgICBUaGlzIGZ1bmN0aW9uIGJ1aWxkIHRoZSBmb2xsb3dpbmcgdHJlZSwgZnJvbSByZWd1bGFyIGV4cHJlc3Npb24gPHJlZ19leHA+OgogCSAgIENBVAogCSAgIC8gXApAQCAtMzcxNSw3ICszNzE1LDcgQEAKIC8qIFRoaXMgaXMgaW50ZW5kZWQgZm9yIHRoZSBleHByZXNzaW9ucyBsaWtlICJhezEsM30iLgogICAgRmV0Y2ggYSBudW1iZXIgZnJvbSBgaW5wdXQnLCBhbmQgcmV0dXJuIHRoZSBudW1iZXIuCiAgICBSZXR1cm4gLTEsIGlmIHRoZSBudW1iZXIgZmllbGQgaXMgZW1wdHkgbGlrZSAieywxfSIuCi0gICBSZXR1cm4gLTIsIElmIGFuIGVycm9yIGlzIG9jY3VyZWQuICAqLworICAgUmV0dXJuIC0yLCBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQuICAqLwogCiBzdGF0aWMgaW50CiBmZXRjaF9udW1iZXIgKHJlX3N0cmluZ190ICppbnB1dCwgcmVfdG9rZW5fdCAqdG9rZW4sIHJlZ19zeW50YXhfdCBzeW50YXgpCmRpZmYgLS1naXQgYS9jb21wYXQvcmVnZXgvcmVnZXguYyBiL2NvbXBhdC9yZWdleC9yZWdleC5jCmluZGV4IDNkZDhkZmEuLjZhYWFlMDAgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9yZWdleC9yZWdleC5jCisrKyBiL2NvbXBhdC9yZWdleC9yZWdleC5jCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjZW5kaWYKIAotLyogTWFrZSBzdXJlIG5vb25lIGNvbXBpbGVzIHRoaXMgY29kZSB3aXRoIGEgQysrIGNvbXBpbGVyLiAgKi8KKy8qIE1ha2Ugc3VyZSBubyBvbmUgY29tcGlsZXMgdGhpcyBjb2RlIHdpdGggYSBDKysgY29tcGlsZXIuICAqLwogI2lmZGVmIF9fY3BsdXNwbHVzCiAjIGVycm9yICJUaGlzIGlzIEMgY29kZSwgdXNlIGEgQyBjb21waWxlciIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvY29tcGF0L3JlZ2V4L3JlZ2V4X2ludGVybmFsLmMgYi9jb21wYXQvcmVnZXgvcmVnZXhfaW50ZXJuYWwuYwppbmRleCAxOTM4NTRjLi5kNDEyMWYyIDEwMDY0NAotLS0gYS9jb21wYXQvcmVnZXgvcmVnZXhfaW50ZXJuYWwuYworKysgYi9jb21wYXQvcmVnZXgvcmVnZXhfaW50ZXJuYWwuYwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAKIAogLyogSW5zZXJ0IHRoZSBuZXcgZWxlbWVudCBFTEVNIHRvIHRoZSByZV9ub2RlX3NldCogU0VULgogICAgU0VUIHNob3VsZCBub3QgYWxyZWFkeSBoYXZlIEVMRU0uCi0gICByZXR1cm4gLTEgaWYgYW4gZXJyb3IgaXMgb2NjdXJlZCwgcmV0dXJuIDEgb3RoZXJ3aXNlLiAgKi8KKyAgIHJldHVybiAtMSBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQsIHJldHVybiAxIG90aGVyd2lzZS4gICovCiAKIHN0YXRpYyBpbnQKIGludGVybmFsX2Z1bmN0aW9uCkBAIC0xMzQxLDcgKzEzNDEsNyBAQAogCiAvKiBJbnNlcnQgdGhlIG5ldyBlbGVtZW50IEVMRU0gdG8gdGhlIHJlX25vZGVfc2V0KiBTRVQuCiAgICBTRVQgc2hvdWxkIG5vdCBhbHJlYWR5IGhhdmUgYW55IGVsZW1lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVMRU0uCi0gICBSZXR1cm4gLTEgaWYgYW4gZXJyb3IgaXMgb2NjdXJlZCwgcmV0dXJuIDEgb3RoZXJ3aXNlLiAgKi8KKyAgIFJldHVybiAtMSBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQsIHJldHVybiAxIG90aGVyd2lzZS4gICovCiAKIHN0YXRpYyBpbnQKIGludGVybmFsX2Z1bmN0aW9uCkBAIC0xNDE2LDcgKzE0MTYsNyBAQAogDAogCiAvKiBBZGQgdGhlIHRva2VuIFRPS0VOIHRvIGRmYS0+bm9kZXMsIGFuZCByZXR1cm4gdGhlIGluZGV4IG9mIHRoZSB0b2tlbi4KLSAgIE9yIHJldHVybiAtMSwgaWYgYW4gZXJyb3Igd2lsbCBiZSBvY2N1cmVkLiAgKi8KKyAgIE9yIHJldHVybiAtMSwgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLiAgKi8KIAogc3RhdGljIGludAogaW50ZXJuYWxfZnVuY3Rpb24KZGlmZiAtLWdpdCBhL2NvbXBhdC9yZWdleC9yZWdleGVjLmMgYi9jb21wYXQvcmVnZXgvcmVnZXhlYy5jCmluZGV4IDAxOTQ5NjUuLjBjZDZlMGUgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9yZWdleC9yZWdleGVjLmMKKysrIGIvY29tcGF0L3JlZ2V4L3JlZ2V4ZWMuYwpAQCAtMjMxMyw3ICsyMzEzLDcgQEAKIH0KIAogLyogVXBkYXRlIHRoZSBzdGF0ZV9sb2cgaWYgd2UgbmVlZCAqLwotcmVfZGZhc3RhdGVfdCAqCitzdGF0aWMgcmVfZGZhc3RhdGVfdCAqCiBpbnRlcm5hbF9mdW5jdGlvbgogbWVyZ2Vfc3RhdGVfd2l0aF9sb2cgKHJlZ19lcnJjb2RlX3QgKmVyciwgcmVfbWF0Y2hfY29udGV4dF90ICptY3R4LAogCQkgICAgICByZV9kZmFzdGF0ZV90ICpuZXh0X3N0YXRlKQpAQCAtMjMyNiw3ICsyMzI2LDcgQEAKICAgICAgIG1jdHgtPnN0YXRlX2xvZ1tjdXJfaWR4XSA9IG5leHRfc3RhdGU7CiAgICAgICBtY3R4LT5zdGF0ZV9sb2dfdG9wID0gY3VyX2lkeDsKICAgICB9Ci0gIGVsc2UgaWYgKG1jdHgtPnN0YXRlX2xvZ1tjdXJfaWR4XSA9PSAwKQorICBlbHNlIGlmIChtY3R4LT5zdGF0ZV9sb2dbY3VyX2lkeF0gPT0gTlVMTCkKICAgICB7CiAgICAgICBtY3R4LT5zdGF0ZV9sb2dbY3VyX2lkeF0gPSBuZXh0X3N0YXRlOwogICAgIH0KQEAgLTIzOTIsNyArMjM5Miw3IEBACiAvKiBTa2lwIGJ5dGVzIGluIHRoZSBpbnB1dCB0aGF0IGNvcnJlc3BvbmQgdG8gcGFydCBvZiBhCiAgICBtdWx0aS1ieXRlIG1hdGNoLCB0aGVuIGxvb2sgaW4gdGhlIGxvZyBmb3IgYSBzdGF0ZQogICAgZnJvbSB3aGljaCB0byByZXN0YXJ0IG1hdGNoaW5nLiAgKi8KLXJlX2RmYXN0YXRlX3QgKgorc3RhdGljIHJlX2RmYXN0YXRlX3QgKgogaW50ZXJuYWxfZnVuY3Rpb24KIGZpbmRfcmVjb3Zlcl9zdGF0ZSAocmVnX2VycmNvZGVfdCAqZXJyLCByZV9tYXRjaF9jb250ZXh0X3QgKm1jdHgpCiB7CmRpZmYgLS1naXQgYS9jb21wYXQvc3RydG9rX3IuYyBiL2NvbXBhdC9zdHJ0b2tfci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjVkNTY4Li4wMDAwMDAwCi0tLSBhL2NvbXBhdC9zdHJ0b2tfci5jCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyogUmVlbnRyYW50IHN0cmluZyB0b2tlbml6ZXIuICBHZW5lcmljIHZlcnNpb24uCi0gICBDb3B5cmlnaHQgKEMpIDE5OTEsMTk5Ni0xOTk5LDIwMDEsMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotCi0gICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLQotI2luY2x1ZGUgIi4uL2dpdC1jb21wYXQtdXRpbC5oIgotCi0vKiBQYXJzZSBTIGludG8gdG9rZW5zIHNlcGFyYXRlZCBieSBjaGFyYWN0ZXJzIGluIERFTElNLgotICAgSWYgUyBpcyBOVUxMLCB0aGUgc2F2ZWQgcG9pbnRlciBpbiBTQVZFX1BUUiBpcyB1c2VkIGFzCi0gICB0aGUgbmV4dCBzdGFydGluZyBwb2ludC4gIEZvciBleGFtcGxlOgotCWNoYXIgc1tdID0gIi1hYmMtPS1kZWYiOwotCWNoYXIgKnNwOwotCXggPSBzdHJ0b2tfcihzLCAiLSIsICZzcCk7CS8vIHggPSAiYWJjIiwgc3AgPSAiPS1kZWYiCi0JeCA9IHN0cnRva19yKE5VTEwsICItPSIsICZzcCk7CS8vIHggPSAiZGVmIiwgc3AgPSBOVUxMCi0JeCA9IHN0cnRva19yKE5VTEwsICI9IiwgJnNwKTsJLy8geCA9IE5VTEwKLQkJLy8gcyA9ICJhYmNcMC1kZWZcMCIKLSovCi1jaGFyICoKLWdpdHN0cnRva19yIChjaGFyICpzLCBjb25zdCBjaGFyICpkZWxpbSwgY2hhciAqKnNhdmVfcHRyKQotewotICBjaGFyICp0b2tlbjsKLQotICBpZiAocyA9PSBOVUxMKQotICAgIHMgPSAqc2F2ZV9wdHI7Ci0KLSAgLyogU2NhbiBsZWFkaW5nIGRlbGltaXRlcnMuICAqLwotICBzICs9IHN0cnNwbiAocywgZGVsaW0pOwotICBpZiAoKnMgPT0gJ1wwJykKLSAgICB7Ci0gICAgICAqc2F2ZV9wdHIgPSBzOwotICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gIC8qIEZpbmQgdGhlIGVuZCBvZiB0aGUgdG9rZW4uICAqLwotICB0b2tlbiA9IHM7Ci0gIHMgPSBzdHJwYnJrICh0b2tlbiwgZGVsaW0pOwotICBpZiAocyA9PSBOVUxMKQotICAgIC8qIFRoaXMgdG9rZW4gZmluaXNoZXMgdGhlIHN0cmluZy4gICovCi0gICAgKnNhdmVfcHRyID0gdG9rZW4gKyBzdHJsZW4gKHRva2VuKTsKLSAgZWxzZQotICAgIHsKLSAgICAgIC8qIFRlcm1pbmF0ZSB0aGUgdG9rZW4gYW5kIG1ha2UgKlNBVkVfUFRSIHBvaW50IHBhc3QgaXQuICAqLwotICAgICAgKnMgPSAnXDAnOwotICAgICAgKnNhdmVfcHRyID0gcyArIDE7Ci0gICAgfQotICByZXR1cm4gdG9rZW47Ci19CmRpZmYgLS1naXQgYS9jb21wYXQvdGVybWluYWwuYyBiL2NvbXBhdC90ZXJtaW5hbC5jCmluZGV4IDliNWUzZDEuLjMxMzg5N2QgMTAwNjQ0Ci0tLSBhL2NvbXBhdC90ZXJtaW5hbC5jCisrKyBiL2NvbXBhdC90ZXJtaW5hbC5jCkBAIC0zLDcgKzMsNyBAQAogI2luY2x1ZGUgInNpZ2NoYWluLmgiCiAjaW5jbHVkZSAic3RyYnVmLmgiCiAKLSNpZiBkZWZpbmVkKEhBVkVfREVWX1RUWSkgfHwgZGVmaW5lZChXSU4zMikKKyNpZiBkZWZpbmVkKEhBVkVfREVWX1RUWSkgfHwgZGVmaW5lZChHSVRfV0lORE9XU19OQVRJVkUpCiAKIHN0YXRpYyB2b2lkIHJlc3RvcmVfdGVybSh2b2lkKTsKIApAQCAtNTMsNyArNTMsNyBAQAogCXJldHVybiAtMTsKIH0KIAotI2VsaWYgZGVmaW5lZChXSU4zMikKKyNlbGlmIGRlZmluZWQoR0lUX1dJTkRPV1NfTkFUSVZFKQogCiAjZGVmaW5lIElOUFVUX1BBVEggIkNPTklOJCIKICNkZWZpbmUgT1VUUFVUX1BBVEggIkNPTk9VVCQiCmRpZmYgLS1naXQgYS9jb21wYXQvdW5zZXRlbnYuYyBiL2NvbXBhdC91bnNldGVudi5jCmluZGV4IGViMjlmNWUuLjRlYTE4NTYgMTAwNjQ0Ci0tLSBhL2NvbXBhdC91bnNldGVudi5jCisrKyBiL2NvbXBhdC91bnNldGVudi5jCkBAIC0yLDcgKzIsNiBAQAogCiB2b2lkIGdpdHVuc2V0ZW52IChjb25zdCBjaGFyICpuYW1lKQogewotICAgICBleHRlcm4gY2hhciAqKmVudmlyb247CiAgICAgIGludCBzcmMsIGRzdDsKICAgICAgc2l6ZV90IG5tbG47CiAKZGlmZiAtLWdpdCBhL2NvbXBhdC92Y2J1aWxkL2luY2x1ZGUvc3lzL3BvbGwuaCBiL2NvbXBhdC92Y2J1aWxkL2luY2x1ZGUvc3lzL3BvbGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ4NTUyYS4uMDAwMDAwMAotLS0gYS9jb21wYXQvdmNidWlsZC9pbmNsdWRlL3N5cy9wb2xsLmgKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0vKiBJbnRlbnRpb25hbGx5IGVtcHR5IGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyBnaXQgd2l0aCBNU1ZDICovCmRpZmYgLS1naXQgYS9jb21wYXQvdmNidWlsZC9pbmNsdWRlL3VuaXN0ZC5oIGIvY29tcGF0L3ZjYnVpbGQvaW5jbHVkZS91bmlzdGQuaAppbmRleCBiMTRmY2Y5Li5jNjVjMmNkIDEwMDY0NAotLS0gYS9jb21wYXQvdmNidWlsZC9pbmNsdWRlL3VuaXN0ZC5oCisrKyBiL2NvbXBhdC92Y2J1aWxkL2luY2x1ZGUvdW5pc3RkLmgKQEAgLTQ5LDYgKzQ5LDkgQEAKICNkZWZpbmUgSU5UTUFYX01BWCAgX0k2NF9NQVgKICNkZWZpbmUgVUlOVE1BWF9NQVggX1VJNjRfTUFYCiAKKyNkZWZpbmUgVUlOVDMyX01BWCAweGZmZmZmZmZmICAvKiA0Mjk0OTY3Mjk1VSAqLworCisjZGVmaW5lIFNURElOX0ZJTEVOTyAgMAogI2RlZmluZSBTVERPVVRfRklMRU5PIDEKICNkZWZpbmUgU1RERVJSX0ZJTEVOTyAyCiAKZGlmZiAtLWdpdCBhL2NvbXBhdC93aW4zMi5oIGIvY29tcGF0L3dpbjMyLmgKaW5kZXggOGNlOTEwNC4uYTk3ZTg4MCAxMDA2NDQKLS0tIGEvY29tcGF0L3dpbjMyLmgKKysrIGIvY29tcGF0L3dpbjMyLmgKQEAgLTIsNyArMiw3IEBACiAjZGVmaW5lIFdJTjMyX0gKIAogLyogY29tbW9uIFdpbjMyIGZ1bmN0aW9ucyBmb3IgTWluR1cgYW5kIEN5Z3dpbiAqLwotI2lmbmRlZiBXSU4zMiAgICAgICAgIC8qIE5vdCBkZWZpbmVkIGJ5IEN5Z3dpbiAqLworI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUJLyogTm90IGRlZmluZWQgZm9yIEN5Z3dpbiAqLwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCmRpZmYgLS1naXQgYS9jb21wYXQvd2luMzIvcHRocmVhZC5jIGIvY29tcGF0L3dpbjMyL3B0aHJlYWQuYwppbmRleCAwMTBlODc1Li5lMThmNWM2IDEwMDY0NAotLS0gYS9jb21wYXQvd2luMzIvcHRocmVhZC5jCisrKyBiL2NvbXBhdC93aW4zMi9wdGhyZWFkLmMKQEAgLTUyLDcgKzUyLDcgQEAKIAogcHRocmVhZF90IHB0aHJlYWRfc2VsZih2b2lkKQogewotCXB0aHJlYWRfdCB0ID0geyAwIH07CisJcHRocmVhZF90IHQgPSB7IE5VTEwgfTsKIAl0LnRpZCA9IEdldEN1cnJlbnRUaHJlYWRJZCgpOwogCXJldHVybiB0OwogfQpkaWZmIC0tZ2l0IGEvY29tcGF0L3dpbjMybW1hcC5jIGIvY29tcGF0L3dpbjMybW1hcC5jCmluZGV4IDYxZDJlZjguLjgwYThjOWEgMTAwNjQ0Ci0tLSBhL2NvbXBhdC93aW4zMm1tYXAuYworKysgYi9jb21wYXQvd2luMzJtbWFwLmMKQEAgLTIxLDggKzIxLDggQEAKIAlpZiAoIShmbGFncyAmIE1BUF9QUklWQVRFKSkKIAkJZGllKCJJbnZhbGlkIHVzYWdlIG9mIG1tYXAgd2hlbiBidWlsdCB3aXRoIFVTRV9XSU4zMl9NTUFQIik7CiAKLQlobWFwID0gQ3JlYXRlRmlsZU1hcHBpbmcoKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCksIDAsIFBBR0VfV1JJVEVDT1BZLAotCQkwLCAwLCAwKTsKKwlobWFwID0gQ3JlYXRlRmlsZU1hcHBpbmcoKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCksIE5VTEwsCisJCVBBR0VfV1JJVEVDT1BZLCAwLCAwLCBOVUxMKTsKIAogCWlmICghaG1hcCkKIAkJcmV0dXJuIE1BUF9GQUlMRUQ7CmRpZmYgLS1naXQgYS9jb25maWcuYyBiL2NvbmZpZy5jCmluZGV4IGI1Njk2MzUuLmQwNGU4MTUgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5jCisrKyBiL2NvbmZpZy5jCkBAIC01OCw3ICs1OCw3IEBACiAJCXBhdGggPSBidWYuYnVmOwogCX0KIAotCWlmICghYWNjZXNzX29yX2RpZShwYXRoLCBSX09LKSkgeworCWlmICghYWNjZXNzX29yX2RpZShwYXRoLCBSX09LLCAwKSkgewogCQlpZiAoKytpbmMtPmRlcHRoID4gTUFYX0lOQ0xVREVfREVQVEgpCiAJCQlkaWUoaW5jbHVkZV9kZXB0aF9hZHZpY2UsIE1BWF9JTkNMVURFX0RFUFRILCBwYXRoLAogCQkJICAgIGNmICYmIGNmLT5uYW1lID8gY2YtPm5hbWUgOiAidGhlIGNvbW1hbmQgbGluZSIpOwpAQCAtNTY2LDYgKzU2NiwyNSBAQAogCQl0cnVzdF9jdGltZSA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKIAkJcmV0dXJuIDA7CiAJfQorCWlmICghc3RyY21wKHZhciwgImNvcmUuc3RhdGluZm8iKSB8fAorCSAgICAhc3RyY21wKHZhciwgImNvcmUuY2hlY2tzdGF0IikpIHsKKwkJLyoKKwkJICogTkVFRFNXT1JLOiBzdGF0aW5mbyB3YXMgYSB0eXBvIGluIHYxLjguMiB0aGF0IGhhcworCQkgKiBuZXZlciBiZWVuIGFkdmVydGlzZWQuICB3ZSB3aWxsIHJlbW92ZSBpdCBhdCBHaXQKKwkJICogMi4wIGJvdW5kYXJ5LgorCQkgKi8KKwkJaWYgKCFzdHJjbXAodmFyLCAiY29yZS5zdGF0aW5mbyIpKSB7CisJCQlzdGF0aWMgaW50IHdhcm5lZDsKKwkJCWlmICghd2FybmVkKyspIHsKKwkJCQl3YXJuaW5nKCInY29yZS5zdGF0aW5mbycgd2lsbCBiZSByZW1vdmVkIGluIEdpdCAyLjA7ICIKKwkJCQkJInVzZSAnY29yZS5jaGVja3N0YXQnIGluc3RlYWQuIik7CisJCQl9CisJCX0KKwkJaWYgKCFzdHJjYXNlY21wKHZhbHVlLCAiZGVmYXVsdCIpKQorCQkJY2hlY2tfc3RhdCA9IDE7CisJCWVsc2UgaWYgKCFzdHJjYXNlY21wKHZhbHVlLCAibWluaW1hbCIpKQorCQkJY2hlY2tfc3RhdCA9IDA7CisJfQogCiAJaWYgKCFzdHJjbXAodmFyLCAiY29yZS5xdW90ZXBhdGgiKSkgewogCQlxdW90ZV9wYXRoX2Z1bGx5ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOwpAQCAtNjY5LDkgKzY4OCw2IEBACiAJCXJldHVybiAwOwogCX0KIAotCWlmICghc3RyY21wKHZhciwgImNvcmUubG9ncGFja2FjY2VzcyIpKQotCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmxvZ19wYWNrX2FjY2VzcywgdmFyLCB2YWx1ZSk7Ci0KIAlpZiAoIXN0cmNtcCh2YXIsICJjb3JlLmF1dG9jcmxmIikpIHsKIAkJaWYgKHZhbHVlICYmICFzdHJjYXNlY21wKHZhbHVlLCAiaW5wdXQiKSkgewogCQkJaWYgKGNvcmVfZW9sID09IEVPTF9DUkxGKQpAQCAtNzE3LDYgKzczMywxNCBAQAogCWlmICghc3RyY21wKHZhciwgImNvcmUuZWRpdG9yIikpCiAJCXJldHVybiBnaXRfY29uZmlnX3N0cmluZygmZWRpdG9yX3Byb2dyYW0sIHZhciwgdmFsdWUpOwogCisJaWYgKCFzdHJjbXAodmFyLCAiY29yZS5jb21tZW50Y2hhciIpKSB7CisJCWNvbnN0IGNoYXIgKmNvbW1lbnQ7CisJCWludCByZXQgPSBnaXRfY29uZmlnX3N0cmluZygmY29tbWVudCwgdmFyLCB2YWx1ZSk7CisJCWlmICghcmV0KQorCQkJY29tbWVudF9saW5lX2NoYXIgPSBjb21tZW50WzBdOworCQlyZXR1cm4gcmV0OworCX0KKwogCWlmICghc3RyY21wKHZhciwgImNvcmUuYXNrcGFzcyIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmFza3Bhc3NfcHJvZ3JhbSwgdmFyLCB2YWx1ZSk7CiAKQEAgLTgzOSw2ICs4NjMsOCBAQAogewogCWlmICghc3RyY21wKHZhciwgIm1haWxtYXAuZmlsZSIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmdpdF9tYWlsbWFwX2ZpbGUsIHZhciwgdmFsdWUpOworCWlmICghc3RyY21wKHZhciwgIm1haWxtYXAuYmxvYiIpKQorCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmdpdF9tYWlsbWFwX2Jsb2IsIHZhciwgdmFsdWUpOwogCiAJLyogQWRkIG90aGVyIGNvbmZpZyB2YXJpYWJsZXMgaGVyZSBhbmQgdG8gRG9jdW1lbnRhdGlvbi9jb25maWcudHh0LiAqLwogCXJldHVybiAwOwpAQCAtOTM4LDIzICs5NjQsMjMgQEAKIAogCWhvbWVfY29uZmlnX3BhdGhzKCZ1c2VyX2NvbmZpZywgJnhkZ19jb25maWcsICJjb25maWciKTsKIAotCWlmIChnaXRfY29uZmlnX3N5c3RlbSgpICYmICFhY2Nlc3Nfb3JfZGllKGdpdF9ldGNfZ2l0Y29uZmlnKCksIFJfT0spKSB7CisJaWYgKGdpdF9jb25maWdfc3lzdGVtKCkgJiYgIWFjY2Vzc19vcl9kaWUoZ2l0X2V0Y19naXRjb25maWcoKSwgUl9PSywgMCkpIHsKIAkJcmV0ICs9IGdpdF9jb25maWdfZnJvbV9maWxlKGZuLCBnaXRfZXRjX2dpdGNvbmZpZygpLAogCQkJCQkgICAgZGF0YSk7CiAJCWZvdW5kICs9IDE7CiAJfQogCi0JaWYgKHhkZ19jb25maWcgJiYgIWFjY2Vzc19vcl9kaWUoeGRnX2NvbmZpZywgUl9PSykpIHsKKwlpZiAoeGRnX2NvbmZpZyAmJiAhYWNjZXNzX29yX2RpZSh4ZGdfY29uZmlnLCBSX09LLCBBQ0NFU1NfRUFDQ0VTX09LKSkgewogCQlyZXQgKz0gZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoZm4sIHhkZ19jb25maWcsIGRhdGEpOwogCQlmb3VuZCArPSAxOwogCX0KIAotCWlmICh1c2VyX2NvbmZpZyAmJiAhYWNjZXNzX29yX2RpZSh1c2VyX2NvbmZpZywgUl9PSykpIHsKKwlpZiAodXNlcl9jb25maWcgJiYgIWFjY2Vzc19vcl9kaWUodXNlcl9jb25maWcsIFJfT0ssIEFDQ0VTU19FQUNDRVNfT0spKSB7CiAJCXJldCArPSBnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgdXNlcl9jb25maWcsIGRhdGEpOwogCQlmb3VuZCArPSAxOwogCX0KIAotCWlmIChyZXBvX2NvbmZpZyAmJiAhYWNjZXNzX29yX2RpZShyZXBvX2NvbmZpZywgUl9PSykpIHsKKwlpZiAocmVwb19jb25maWcgJiYgIWFjY2Vzc19vcl9kaWUocmVwb19jb25maWcsIFJfT0ssIDApKSB7CiAJCXJldCArPSBnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgcmVwb19jb25maWcsIGRhdGEpOwogCQlmb3VuZCArPSAxOwogCX0KQEAgLTE2NjAsNyArMTY4Niw0MSBAQAogICogQ2FsbCB0aGlzIHRvIHJlcG9ydCBlcnJvciBmb3IgeW91ciB2YXJpYWJsZSB0aGF0IHNob3VsZCBub3QKICAqIGdldCBhIGJvb2xlYW4gdmFsdWUgKGkuZS4gIltteV0gdmFyIiBtZWFucyAidHJ1ZSIpLgogICovCisjdW5kZWYgY29uZmlnX2Vycm9yX25vbmJvb2wKIGludCBjb25maWdfZXJyb3Jfbm9uYm9vbChjb25zdCBjaGFyICp2YXIpCiB7CiAJcmV0dXJuIGVycm9yKCJNaXNzaW5nIHZhbHVlIGZvciAnJXMnIiwgdmFyKTsKIH0KKworaW50IHBhcnNlX2NvbmZpZ19rZXkoY29uc3QgY2hhciAqdmFyLAorCQkgICAgIGNvbnN0IGNoYXIgKnNlY3Rpb24sCisJCSAgICAgY29uc3QgY2hhciAqKnN1YnNlY3Rpb24sIGludCAqc3Vic2VjdGlvbl9sZW4sCisJCSAgICAgY29uc3QgY2hhciAqKmtleSkKK3sKKwlpbnQgc2VjdGlvbl9sZW4gPSBzdHJsZW4oc2VjdGlvbik7CisJY29uc3QgY2hhciAqZG90OworCisJLyogRG9lcyBpdCBzdGFydCB3aXRoICJzZWN0aW9uLiIgPyAqLworCWlmIChwcmVmaXhjbXAodmFyLCBzZWN0aW9uKSB8fCB2YXJbc2VjdGlvbl9sZW5dICE9ICcuJykKKwkJcmV0dXJuIC0xOworCisJLyoKKwkgKiBGaW5kIHRoZSBrZXk7IHdlIGRvbid0IGtub3cgeWV0IGlmIHdlIGhhdmUgYSBzdWJzZWN0aW9uLCBidXQgd2UgbXVzdAorCSAqIHBhcnNlIGJhY2t3YXJkcyBmcm9tIHRoZSBlbmQsIHNpbmNlIHRoZSBzdWJzZWN0aW9uIG1heSBoYXZlIGRvdHMgaW4KKwkgKiBpdCwgdG9vLgorCSAqLworCWRvdCA9IHN0cnJjaHIodmFyLCAnLicpOworCSprZXkgPSBkb3QgKyAxOworCisJLyogRGlkIHdlIGhhdmUgYSBzdWJzZWN0aW9uIGF0IGFsbD8gKi8KKwlpZiAoZG90ID09IHZhciArIHNlY3Rpb25fbGVuKSB7CisJCSpzdWJzZWN0aW9uID0gTlVMTDsKKwkJKnN1YnNlY3Rpb25fbGVuID0gMDsKKwl9CisJZWxzZSB7CisJCSpzdWJzZWN0aW9uID0gdmFyICsgc2VjdGlvbl9sZW4gKyAxOworCQkqc3Vic2VjdGlvbl9sZW4gPSBkb3QgLSAqc3Vic2VjdGlvbjsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2NvbmZpZy5tYWsuaW4gYi9jb25maWcubWFrLmluCmluZGV4IGU4YTliYjQuLmU2YTZkMGYgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5tYWsuaW4KKysrIGIvY29uZmlnLm1hay5pbgpAQCAtOCw2ICs4LDcgQEAKIEFSID0gQEFSQAogVEFSID0gQFRBUkAKIERJRkYgPSBARElGRkAKK1BBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACiAjSU5TVEFMTCA9IEBJTlNUQUxMQAkJIyBuZWVkcyBpbnN0YWxsLXNoIG9yIGluc3RhbGwuc2ggaW4gc291cmNlcwogCiBwcmVmaXggPSBAcHJlZml4QApAQCAtMTcsMTEgKzE4LDcgQEAKIGRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAogdGVtcGxhdGVfZGlyID0gQGRhdGFkaXJAL2dpdC1jb3JlL3RlbXBsYXRlcwogc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAorZG9jZGlyID0gQGRvY2RpckAKIAogbWFuZGlyID0gQG1hbmRpckAKLQotc3JjZGlyID0gQHNyY2RpckAKLVZQQVRIID0gQHNyY2RpckAKLQotZXhwb3J0IGV4ZWNfcHJlZml4IG1hbmRpcgotZXhwb3J0IHNyY2RpciBWUEFUSAoraHRtbGRpciA9IEBodG1sZGlyQApkaWZmIC0tZ2l0IGEvY29uZmlnLm1hay51bmFtZSBiL2NvbmZpZy5tYWsudW5hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjNTQxZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy5tYWsudW5hbWUKQEAgLTAsMCArMSw1NDUgQEAKKyMgUGxhdGZvcm0gc3BlY2lmaWMgTWFrZWZpbGUgdHdlYWtzIGJhc2VkIG9uIHVuYW1lIGRldGVjdGlvbgorCit1bmFtZV9TIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1zIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKK3VuYW1lX00gOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLW0gMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQordW5hbWVfTyA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbyAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCit1bmFtZV9SIDo9ICQoc2hlbGwgc2ggLWMgJ3VuYW1lIC1yIDI+L2Rldi9udWxsIHx8IGVjaG8gbm90JykKK3VuYW1lX1AgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXAgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQordW5hbWVfViA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtdiAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCisKK2lmZGVmIE1TVkMKKwkjIGF2b2lkIHRoZSBNaW5nVyBhbmQgQ3lnd2luIGNvbmZpZ3VyYXRpb24gc2VjdGlvbnMKKwl1bmFtZV9TIDo9IFdpbmRvd3MKKwl1bmFtZV9PIDo9IFdpbmRvd3MKK2VuZGlmCisKKyMgV2UgY2hvb3NlIHRvIGF2b2lkICJpZiAuLiBlbHNlIGlmIC4uIGVsc2UgLi4gZW5kaWYgZW5kaWYiCisjIGJlY2F1c2UgbWFpbnRhaW5pbmcgdGhlIG5lc3RpbmcgdG8gbWF0Y2ggaXMgYSBwYWluLiAgSWYKKyMgd2UgaGFkICJlbGlmIiB0aGluZ3Mgd291bGQgaGF2ZSBiZWVuIG11Y2ggbmljZXIuLi4KKworaWZlcSAoJCh1bmFtZV9NKSx4ODZfNjQpCisJWERMX0ZBU1RfSEFTSCA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksT1NGMSkKKwkjIE5lZWQgdGhpcyBmb3IgdV9zaG9ydCBkZWZpbml0aW9ucyBldCBhbAorCUJBU0lDX0NGTEFHUyArPSAtRF9PU0ZfU09VUkNFCisJU09DS0xFTl9UID0gaW50CisJTk9fU1RSVE9VTEwgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxMaW51eCkKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKKwlMSUJDX0NPTlRBSU5TX0xJQklOVEwgPSBZZXNQbGVhc2UKKwlIQVZFX0RFVl9UVFkgPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLEdOVS9rRnJlZUJTRCkKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKKwlESVJfSEFTX0JTRF9HUk9VUF9TRU1BTlRJQ1MgPSBZZXNQbGVhc2UKKwlMSUJDX0NPTlRBSU5TX0xJQklOVEwgPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLFVuaXhXYXJlKQorCUNDID0gY2MKKwlORUVEU19TT0NLRVQgPSBZZXNQbGVhc2UKKwlORUVEU19OU0wgPSBZZXNQbGVhc2UKKwlORUVEU19TU0xfV0lUSF9DUllQVE8gPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCVNIRUxMX1BBVEggPSAvdXNyL2xvY2FsL2Jpbi9iYXNoCisJTk9fSVBWNiA9IFllc1BsZWFzZQorCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJQkFTSUNfQ0ZMQUdTICs9IC1LdGhyZWFkCisJQkFTSUNfQ0ZMQUdTICs9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCisJQkFTSUNfTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliCisJSU5TVEFMTCA9IGdpbnN0YWxsCisJVEFSID0gZ3RhcgorCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLFNDT19TVikKKwlpZmVxICgkKHVuYW1lX1IpLDMuMikKKwkJQ0ZMQUdTID0gLU8yCisJZW5kaWYKKwlpZmVxICgkKHVuYW1lX1IpLDUpCisJCUNDID0gY2MKKwkJQkFTSUNfQ0ZMQUdTICs9IC1LdGhyZWFkCisJZW5kaWYKKwlORUVEU19TT0NLRVQgPSBZZXNQbGVhc2UKKwlORUVEU19OU0wgPSBZZXNQbGVhc2UKKwlORUVEU19TU0xfV0lUSF9DUllQVE8gPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCVNIRUxMX1BBVEggPSAvdXNyL2Jpbi9iYXNoCisJTk9fSVBWNiA9IFllc1BsZWFzZQorCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJQkFTSUNfQ0ZMQUdTICs9IC1JL3Vzci9sb2NhbC9pbmNsdWRlCisJQkFTSUNfTERGTEFHUyArPSAtTC91c3IvbG9jYWwvbGliCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCUlOU1RBTEwgPSBnaW5zdGFsbAorCVRBUiA9IGd0YXIKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLERhcndpbikKKwlORUVEU19DUllQVE9fV0lUSF9TU0wgPSBZZXNQbGVhc2UKKwlORUVEU19TU0xfV0lUSF9DUllQVE8gPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnWzE1Njc4XVwuJyksMikKKwkJT0xEX0lDT05WID0gVW5mb3J0dW5hdGVseVllcworCWVuZGlmCisJaWZlcSAoJChzaGVsbCBleHByICIkKHVuYW1lX1IpIiA6ICdbMTVdXC4nKSwyKQorCQlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJZW5kaWYKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKKwlIQVZFX0RFVl9UVFkgPSBZZXNQbGVhc2UKKwlORUVEU19DTElQUEVEX1dSSVRFID0gWWVzUGxlYXNlCisJQ09NUEFUX09CSlMgKz0gY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5vCisJQkFTSUNfQ0ZMQUdTICs9IC1EUFJFQ09NUE9TRV9VTklDT0RFCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxTdW5PUykKKwlORUVEU19TT0NLRVQgPSBZZXNQbGVhc2UKKwlORUVEU19OU0wgPSBZZXNQbGVhc2UKKwlTSEVMTF9QQVRIID0gL2Jpbi9iYXNoCisJU0FORV9UT09MX1BBVEggPSAvdXNyL3hwZzYvYmluOi91c3IveHBnNC9iaW4KKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJTk9fUkVHRVggPSBZZXNQbGVhc2UKKwlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCisJTk9fTVNHRk1UX0VYVEVOREVEX09QVElPTlMgPSBZZXNQbGVhc2UKKwlIQVZFX0RFVl9UVFkgPSBZZXNQbGVhc2UKKwlpZmVxICgkKHVuYW1lX1IpLDUuNikKKwkJU09DS0xFTl9UID0gaW50CisJCU5PX0hTVFJFUlJPUiA9IFllc1BsZWFzZQorCQlOT19JUFY2ID0gWWVzUGxlYXNlCisJCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKKwkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJCUdJVF9URVNUX0NNUCA9IGNtcAorCWVuZGlmCisJaWZlcSAoJCh1bmFtZV9SKSw1LjcpCisJCU5FRURTX1JFU09MViA9IFllc1BsZWFzZQorCQlOT19JUFY2ID0gWWVzUGxlYXNlCisJCU5PX1NPQ0tBRERSX1NUT1JBR0UgPSBZZXNQbGVhc2UKKwkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwkJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJCUdJVF9URVNUX0NNUCA9IGNtcAorCWVuZGlmCisJaWZlcSAoJCh1bmFtZV9SKSw1LjgpCisJCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJCU5PX1NFVEVOViA9IFllc1BsZWFzZQorCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKKwkJR0lUX1RFU1RfQ01QID0gY21wCisJZW5kaWYKKwlpZmVxICgkKHVuYW1lX1IpLDUuOSkKKwkJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwkJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQorCQlHSVRfVEVTVF9DTVAgPSBjbXAKKwllbmRpZgorCUlOU1RBTEwgPSAvdXNyL3VjYi9pbnN0YWxsCisJVEFSID0gZ3RhcgorCUJBU0lDX0NGTEFHUyArPSAtRF9fRVhURU5TSU9OU19fIC1EX19zdW5fXyAtREhBVkVfQUxMT0NBX0gKK2VuZGlmCitpZmVxICgkKHVuYW1lX08pLEN5Z3dpbikKKwlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJzFcLlsxLTZdXC4nKSw0KQorCQlOT19EX1RZUEVfSU5fRElSRU5UID0gWWVzUGxlYXNlCisJCU5PX0RfSU5PX0lOX0RJUkVOVCA9IFllc1BsZWFzZQorCQlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCQlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCQlOT19TWU1MSU5LX0hFQUQgPSBZZXNQbGVhc2UKKwkJTk9fSVBWNiA9IFllc1BsZWFzZQorCQlPTERfSUNPTlYgPSBVbmZvcnR1bmF0ZWx5WWVzCisJZW5kaWYKKwlOT19USFJFQURfU0FGRV9QUkVBRCA9IFllc1BsZWFzZQorCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCisJTk9fRkFTVF9XT1JLSU5HX0RJUkVDVE9SWSA9IFVuZm9ydHVuYXRlbHlZZXMKKwlOT19UUlVTVEFCTEVfRklMRU1PREUgPSBVbmZvcnR1bmF0ZWx5WWVzCisJTk9fU1RfQkxPQ0tTX0lOX1NUUlVDVF9TVEFUID0gWWVzUGxlYXNlCisJIyBUaGVyZSBhcmUgY29uZmxpY3RpbmcgcmVwb3J0cyBhYm91dCB0aGlzLgorCSMgT24gc29tZSBib3hlcyBOT19NTUFQIGlzIG5lZWRlZCwgYW5kIG5vdCBzbyBlbHNld2hlcmUuCisJIyBUcnkgY29tbWVudGluZyB0aGlzIG91dCBpZiB5b3Ugc3VzcGVjdCBNTUFQIGlzIG1vcmUgZWZmaWNpZW50CisJTk9fTU1BUCA9IFllc1BsZWFzZQorCVggPSAuZXhlCisJQ09NUEFUX09CSlMgKz0gY29tcGF0L2N5Z3dpbi5vCisJVU5SRUxJQUJMRV9GU1RBVCA9IFVuZm9ydHVuYXRlbHlZZXMKKwlTUEFSU0VfRkxBR1MgPSAtaXN5c3RlbSAvdXNyL2luY2x1ZGUvdzMyYXBpIC1Xbm8tb25lLWJpdC1zaWduZWQtYml0ZmllbGQKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLEZyZWVCU0QpCisJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlPTERfSUNPTlYgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlCQVNJQ19DRkxBR1MgKz0gLUkvdXNyL2xvY2FsL2luY2x1ZGUKKwlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9sb2NhbC9saWIKKwlESVJfSEFTX0JTRF9HUk9VUF9TRU1BTlRJQ1MgPSBZZXNQbGVhc2UKKwlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKKwlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfUikiIDogJzRcLicpLDIpCisJCVBUSFJFQURfTElCUyA9IC1wdGhyZWFkCisJCU5PX1VJTlRNQVhfVCA9IFllc1BsZWFzZQorCQlOT19TVFJUT1VNQVggPSBZZXNQbGVhc2UKKwllbmRpZgorCVBZVEhPTl9QQVRIID0gL3Vzci9sb2NhbC9iaW4vcHl0aG9uCisJSEFWRV9QQVRIU19IID0gWWVzUGxlYXNlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxPcGVuQlNEKQorCU5PX1NUUkNBU0VTVFIgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvbG9jYWwvaW5jbHVkZQorCUJBU0lDX0xERkxBR1MgKz0gLUwvdXNyL2xvY2FsL2xpYgorCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksTmV0QlNEKQorCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9SKSIgOiAnWzAxXVwuJyksMikKKwkJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwllbmRpZgorCUJBU0lDX0NGTEFHUyArPSAtSS91c3IvcGtnL2luY2x1ZGUKKwlCQVNJQ19MREZMQUdTICs9IC1ML3Vzci9wa2cvbGliICQoQ0NfTERfRFlOUEFUSCkvdXNyL3BrZy9saWIKKwlVU0VfU1RfVElNRVNQRUMgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCUhBVkVfUEFUSFNfSCA9IFllc1BsZWFzZQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksQUlYKQorCURFRkFVTFRfUEFHRVIgPSBtb3JlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX01FTU1FTSA9IFllc1BsZWFzZQorCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJRlJFQURfUkVBRFNfRElSRUNUT1JJRVMgPSBVbmZvcnR1bmF0ZWx5WWVzCisJSU5URVJOQUxfUVNPUlQgPSBVbmZvcnR1bmF0ZWx5WWVzCisJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlCQVNJQ19DRkxBR1MgKz0gLURfTEFSR0VfRklMRVMKKwlpZmVxICgkKHNoZWxsIGV4cHIgIiQodW5hbWVfVikiIDogJ1sxMjM0XScpLDEpCisJCU5PX1BUSFJFQURTID0gWWVzUGxlYXNlCisJZWxzZQorCQlQVEhSRUFEX0xJQlMgPSAtbHB0aHJlYWQKKwllbmRpZgorCWlmZXEgKCQoc2hlbGwgZXhwciAiJCh1bmFtZV9WKS4kKHVuYW1lX1IpIiA6ICc1XC4xJyksMykKKwkJSU5MSU5FID0gJycKKwllbmRpZgorCUdJVF9URVNUX0NNUCA9IGNtcAorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksR05VKQorCSMgR05VL0h1cmQKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlIQVZFX1BBVEhTX0ggPSBZZXNQbGVhc2UKKwlMSUJDX0NPTlRBSU5TX0xJQklOVEwgPSBZZXNQbGVhc2UKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLElSSVgpCisJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJIyBXaGVuIGNvbXBpbGVkIHdpdGggdGhlIE1JUFNwcm8gNy40LjRtIGNvbXBpbGVyLCBhbmQgd2l0aG91dCBwdGhyZWFkcworCSMgKGkuZS4gTk9fUFRIUkVBRFMgaXMgc2V0KSwgYW5kIF93aXRoXyBNTUFQIChpLmUuIE5PX01NQVAgaXMgbm90IHNldCksCisJIyBnaXQgZGllcyB3aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgZmlyc3QKKwkjIGVudHJ5IG9mIGEgcmVmbG9nLiAgVGhlIGNvbnNlcnZhdGl2ZSBjaG9pY2UgaXMgbWFkZSB0byBhbHdheXMgc2V0CisJIyBOT19NTUFQLiAgSWYgeW91IHN1c3BlY3QgdGhhdCB5b3VyIGNvbXBpbGVyIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzCisJIyBpc3N1ZSwgY29tbWVudCBvdXQgdGhlIE5PX01NQVAgc3RhdGVtZW50LgorCU5PX01NQVAgPSBZZXNQbGVhc2UKKwlOT19SRUdFWCA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwlTTlBSSU5URl9SRVRVUk5TX0JPR1VTID0gWWVzUGxlYXNlCisJU0hFTExfUEFUSCA9IC91c3IvZ251L2Jpbi9iYXNoCisJTkVFRFNfTElCR0VOID0gWWVzUGxlYXNlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxJUklYNjQpCisJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJIyBXaGVuIGNvbXBpbGVkIHdpdGggdGhlIE1JUFNwcm8gNy40LjRtIGNvbXBpbGVyLCBhbmQgd2l0aG91dCBwdGhyZWFkcworCSMgKGkuZS4gTk9fUFRIUkVBRFMgaXMgc2V0KSwgYW5kIF93aXRoXyBNTUFQIChpLmUuIE5PX01NQVAgaXMgbm90IHNldCksCisJIyBnaXQgZGllcyB3aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgZmlyc3QKKwkjIGVudHJ5IG9mIGEgcmVmbG9nLiAgVGhlIGNvbnNlcnZhdGl2ZSBjaG9pY2UgaXMgbWFkZSB0byBhbHdheXMgc2V0CisJIyBOT19NTUFQLiAgSWYgeW91IHN1c3BlY3QgdGhhdCB5b3VyIGNvbXBpbGVyIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzCisJIyBpc3N1ZSwgY29tbWVudCBvdXQgdGhlIE5PX01NQVAgc3RhdGVtZW50LgorCU5PX01NQVAgPSBZZXNQbGVhc2UKKwlOT19SRUdFWCA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwlTTlBSSU5URl9SRVRVUk5TX0JPR1VTID0gWWVzUGxlYXNlCisJU0hFTExfUEFUSCA9IC91c3IvZ251L2Jpbi9iYXNoCisJTkVFRFNfTElCR0VOID0gWWVzUGxlYXNlCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxIUC1VWCkKKwlJTkxJTkUgPSBfX2lubGluZQorCU5PX0lQVjYgPSBZZXNQbGVhc2UKKwlOT19TRVRFTlYgPSBZZXNQbGVhc2UKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCisJTk9fU1lTX1NFTEVDVF9IID0gWWVzUGxlYXNlCisJTk9fRk5NQVRDSF9DQVNFRk9MRCA9IFllc1BsZWFzZQorCVNOUFJJTlRGX1JFVFVSTlNfQk9HVVMgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJaWZlcSAoJCh1bmFtZV9SKSxCLjExLjAwKQorCQlOT19JTkVUX05UT1AgPSBZZXNQbGVhc2UKKwkJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCisJZW5kaWYKKwlpZmVxICgkKHVuYW1lX1IpLEIuMTAuMjApCisJCSMgT3ZlcnJpZGUgSFAtVVggMTEueCBzZXR0aW5nOgorCQlJTkxJTkUgPQorCQlTT0NLTEVOX1QgPSBzaXplX3QKKwkJTk9fUFJFQUQgPSBZZXNQbGVhc2UKKwkJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCisJCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQorCWVuZGlmCisJR0lUX1RFU1RfQ01QID0gY21wCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxXaW5kb3dzKQorCUdJVF9WRVJTSU9OIDo9ICQoR0lUX1ZFUlNJT04pLk1TVkMKKwlwYXRoc2VwID0gOworCU5PX1BSRUFEID0gWWVzUGxlYXNlCisJTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCisJTk9fTElCR0VOX0ggPSBZZXNQbGVhc2UKKwlOT19QT0xMID0gWWVzUGxlYXNlCisJTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCisJTk9fSVBWNiA9IFllc1BsZWFzZQorCU5PX1VOSVhfU09DS0VUUyA9IFllc1BsZWFzZQorCU5PX1NFVEVOViA9IFllc1BsZWFzZQorCU5PX1VOU0VURU5WID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKKwlOT19GTk1BVENIID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJIyBORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCU5PX0lDT05WID0gWWVzUGxlYXNlCisJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJU05QUklOVEZfUkVUVVJOU19CT0dVUyA9IFllc1BsZWFzZQorCU5PX1NWTl9URVNUUyA9IFllc1BsZWFzZQorCU5PX1BFUkxfTUFLRU1BS0VSID0gWWVzUGxlYXNlCisJUlVOVElNRV9QUkVGSVggPSBZZXNQbGVhc2UKKwlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJVVNFX1dJTjMyX01NQVAgPSBZZXNQbGVhc2UKKwkjIFVTRV9ORURfQUxMT0NBVE9SID0gWWVzUGxlYXNlCisJVU5SRUxJQUJMRV9GU1RBVCA9IFVuZm9ydHVuYXRlbHlZZXMKKwlPQkpFQ1RfQ1JFQVRJT05fVVNFU19SRU5BTUVTID0gVW5mb3J0dW5hdGVseU5lZWRzVG8KKwlOT19SRUdFWCA9IFllc1BsZWFzZQorCU5PX0NVUkwgPSBZZXNQbGVhc2UKKwlOT19QWVRIT04gPSBZZXNQbGVhc2UKKwlCTEtfU0hBMSA9IFllc1BsZWFzZQorCUVUQUdTX1RBUkdFVCA9IEVUQUdTCisJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCisJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCisJTk9fUE9TSVhfR09PRElFUyA9IFVuZm9ydHVuYXRlbHlZZXMKKwlOQVRJVkVfQ1JMRiA9IFllc1BsZWFzZQorCURFRkFVTFRfSEVMUF9GT1JNQVQgPSBodG1sCisKKwlDQyA9IGNvbXBhdC92Y2J1aWxkL3NjcmlwdHMvY2xpbmsucGwKKwlBUiA9IGNvbXBhdC92Y2J1aWxkL3NjcmlwdHMvbGliLnBsCisJQ0ZMQUdTID0KKwlCQVNJQ19DRkxBR1MgPSAtbm9sb2dvIC1JLiAtSS4uL3psaWIgLUljb21wYXQvdmNidWlsZCAtSWNvbXBhdC92Y2J1aWxkL2luY2x1ZGUgLURXSU4zMiAtRF9DT05TT0xFIC1ESEFWRV9TVFJJTkdfSCAtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC1EX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURQorCUNPTVBBVF9PQkpTID0gY29tcGF0L21zdmMubyBjb21wYXQvd2luYW5zaS5vIFwKKwkJY29tcGF0L3dpbjMyL3B0aHJlYWQubyBjb21wYXQvd2luMzIvc3lzbG9nLm8gXAorCQljb21wYXQvd2luMzIvZGlyZW50Lm8KKwlDT01QQVRfQ0ZMQUdTID0gLURfX1VTRV9NSU5HV19BQ0NFU1MgLUROT0dESSAtREhBVkVfU1RSSU5HX0ggLURIQVZFX0FMTE9DQV9IIC1JY29tcGF0IC1JY29tcGF0L3JlZ2V4IC1JY29tcGF0L3dpbjMyIC1EU1RSSVBfRVhURU5TSU9OPVwiLmV4ZVwiCisJQkFTSUNfTERGTEFHUyA9IC1JR05PUkU6NDIxNyAtSUdOT1JFOjQwNDkgLU5PTE9HTyAtU1VCU1lTVEVNOkNPTlNPTEUgLU5PREVGQVVMVExJQjpNU1ZDUlQubGliCisJRVhUTElCUyA9IHVzZXIzMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIHdpbmluZXQubGliIHdzMl8zMi5saWIKKwlQVEhSRUFEX0xJQlMgPQorCWxpYiA9CitpZm5kZWYgREVCVUcKKwlCQVNJQ19DRkxBR1MgKz0gLUdMIC1PcyAtTVQKKwlCQVNJQ19MREZMQUdTICs9IC1MVENHCisJQVIgKz0gLUxUQ0cKK2Vsc2UKKwlCQVNJQ19DRkxBR1MgKz0gLVppIC1NVGQKK2VuZGlmCisJWCA9IC5leGUKK2VuZGlmCitpZmVxICgkKHVuYW1lX1MpLEludGVyaXgpCisJTk9fSU5JVEdST1VQUyA9IFllc1BsZWFzZQorCU5PX0lQVjYgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCisJTk9fTlNFQyA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJaWZlcSAoJCh1bmFtZV9SKSwzLjUpCisJCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQorCQlOT19JTkVUX1BUT04gPSBZZXNQbGVhc2UKKwkJTk9fU09DS0FERFJfU1RPUkFHRSA9IFllc1BsZWFzZQorCQlOT19GTk1BVENIX0NBU0VGT0xEID0gWWVzUGxlYXNlCisJZW5kaWYKKwlpZmVxICgkKHVuYW1lX1IpLDUuMikKKwkJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCisJCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQorCQlOT19TT0NLQUREUl9TVE9SQUdFID0gWWVzUGxlYXNlCisJCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwllbmRpZgorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksTWluaXgpCisJTk9fSVBWNiA9IFllc1BsZWFzZQorCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQorCU5PX05TRUMgPSBZZXNQbGVhc2UKKwlORUVEU19MSUJHRU4gPQorCU5FRURTX0NSWVBUT19XSVRIX1NTTCA9IFllc1BsZWFzZQorCU5FRURTX0lETl9XSVRIX0NVUkwgPSBZZXNQbGVhc2UKKwlORUVEU19TU0xfV0lUSF9DVVJMID0gWWVzUGxlYXNlCisJTkVFRFNfUkVTT0xWID0KKwlOT19IU1RSRVJST1IgPSBZZXNQbGVhc2UKKwlOT19NTUFQID0gWWVzUGxlYXNlCisJTk9fQ1VSTCA9CisJTk9fRVhQQVQgPQorZW5kaWYKK2lmZXEgKCQodW5hbWVfUyksTk9OU1RPUF9LRVJORUwpCisJIyBOZWVkcyBzb21lIEM5OSBmZWF0dXJlcywgImlubGluZSIgaXMganVzdCBvbmUgb2YgdGhlbS4KKwkjIElOTElORT0nJyB3b3VsZCBqdXN0IHJlcGxhY2Ugb25lIHNldCBvZiB3YXJuaW5ncyB3aXRoIGFub3RoZXIgYW5kCisJIyBzdGlsbCBub3QgY29tcGlsZSBpbiBjODkgbW9kZSwgZHVlIHRvIG5vbi1jb25zdCBhcnJheSBpbml0aWFsaXphdGlvbnMuCisJQ0MgPSBjYyAtYzk5CisJIyBEaXNhYmxlIGFsbCBvcHRpbWl6YXRpb24sIHNlZW1zIHRvIHJlc3VsdCBpbiBiYWQgY29kZSwgd2l0aCAtTyBvciAtTzIKKwkjIG9yIGV2ZW4gLU8xIChkZWZhdWx0KSwgL3Vzci9sb2NhbC9saWJleGVjL2dpdC1jb3JlL2dpdC1wYWNrLW9iamVjdHMKKwkjIGFiZW5kcyBvbiAiZ2l0IHB1c2giLiBOZWVkcyBtb3JlIGludmVzdGlnYXRpb24uCisJQ0ZMQUdTID0gLWcgLU8wCisJIyBXZSdkIHdhbnQgaXQgdG8gYmUgaGVyZS4KKwlwcmVmaXggPSAvdXNyL2xvY2FsCisJIyBPdXIncyBhcmUgaW4gJHtwcmVmaXh9L2JpbiAocGVybCBtaWdodCBhbHNvIGJlIGluIC91c3IvYmluL3BlcmwpLgorCVBFUkxfUEFUSCA9ICR7cHJlZml4fS9iaW4vcGVybAorCVBZVEhPTl9QQVRIID0gJHtwcmVmaXh9L2Jpbi9weXRob24KKworCSMgQXMgZGV0ZWN0ZWQgYnkgJy4vY29uZmlndXJlJy4KKwkjIE1pc3NkZXRlY3RlZCwgaGVuY2UgY29tbWVudGVkIG91dCwgc2VlIGJlbG93LgorCSNOT19DVVJMID0gWWVzUGxlYXNlCisJIyBBZGRlZCBtYW51YWxseSwgc2VlIGFib3ZlLgorCU5FRURTX1NTTF9XSVRIX0NVUkwgPSBZZXNQbGVhc2UKKwlIQVZFX0xJQkNIQVJTRVRfSCA9IFllc1BsZWFzZQorCUhBVkVfU1RSSU5HU19IID0gWWVzUGxlYXNlCisJTkVFRFNfTElCSUNPTlYgPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJTlRMX0JFRk9SRV9MSUJJQ09OViA9IFllc1BsZWFzZQorCU5PX1NZU19TRUxFQ1RfSCA9IFVuZm9ydHVuYXRlbHlZZXMKKwlOT19EX1RZUEVfSU5fRElSRU5UID0gWWVzUGxlYXNlCisJTk9fSFNUUkVSUk9SID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlOT19TVFJMQ1BZID0gWWVzUGxlYXNlCisJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwlOT19NS0RURU1QID0gWWVzUGxlYXNlCisJTk9fTUtTVEVNUFMgPSBZZXNQbGVhc2UKKwkjIEN1cnJlbnRseSBsaWJpY29udi0xLjkuMS4KKwlPTERfSUNPTlYgPSBVbmZvcnR1bmF0ZWx5WWVzCisJTk9fUkVHRVggPSBZZXNQbGVhc2UKKwlOT19QVEhSRUFEUyA9IFVuZm9ydHVuYXRlbHlZZXMKKworCSMgTm90IGRldGVjdGVkIChub3IgY2hlY2tlZCBmb3IpIGJ5ICcuL2NvbmZpZ3VyZScuCisJIyBXZSBkb24ndCBoYXZlIFNBX1JFU1RBUlQgb24gTm9uU3RvcCwgdW5mb3J0dW5hbGV0eS4KKwlDT01QQVRfQ0ZMQUdTICs9IC1EU0FfUkVTVEFSVD0wCisJIyBBcHBhcmVudGx5IG5lZWRlZCBpbiBjb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMuCisJQ09NUEFUX0NGTEFHUyArPSAtREhBVkVfU1RSSU5HX0g9MQorCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQorCU5PX05TRUMgPSBZZXNQbGVhc2UKKwlOT19QUkVBRCA9IFllc1BsZWFzZQorCU5PX01NQVAgPSBZZXNQbGVhc2UKKwlOT19QT0xMID0gWWVzUGxlYXNlCisJTk9fSU5UUFRSX1QgPSBVbmZvcnR1bmF0ZWx5WWVzCisJIyBCdWcgcmVwb3J0IDEwLTEyMDgyMi00NDc3IHN1Ym1pdHRlZCB0byBIUCBOb25TdG9wIGRldmVsb3BtZW50LgorCU1LRElSX1dPX1RSQUlMSU5HX1NMQVNIID0gWWVzUGxlYXNlCisJIyBSRkUgMTAtMTIwOTEyLTQ2OTMgc3VibWl0dGVkIHRvIEhQIE5vblN0b3AgZGV2ZWxvcG1lbnQuCisJTk9fU0VUSVRJTUVSID0gVW5mb3J0dW5hdGVseVllcworCVNBTkVfVE9PTF9QQVRIID0gL3Vzci9jb3JldXRpbHMvYmluOi91c3IvbG9jYWwvYmluCisJU0hFTExfUEFUSCA9IC91c3IvbG9jYWwvYmluL2Jhc2gKKwkjIGFzIG9mIEgwNi4yNS9KMDYuMTQsIHdlIG1pZ2h0IGJldHRlciB1c2UgdGhpcworCSNTSEVMTF9QQVRIID0gL3Vzci9jb3JldXRpbHMvYmluL2Jhc2gKK2VuZGlmCitpZm5lcSAoLCQoZmluZHN0cmluZyBNSU5HVywkKHVuYW1lX1MpKSkKKwlwYXRoc2VwID0gOworCU5PX1BSRUFEID0gWWVzUGxlYXNlCisJTkVFRFNfQ1JZUFRPX1dJVEhfU1NMID0gWWVzUGxlYXNlCisJTk9fTElCR0VOX0ggPSBZZXNQbGVhc2UKKwlOT19QT0xMID0gWWVzUGxlYXNlCisJTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCisJTk9fVU5JWF9TT0NLRVRTID0gWWVzUGxlYXNlCisJTk9fU0VURU5WID0gWWVzUGxlYXNlCisJTk9fVU5TRVRFTlYgPSBZZXNQbGVhc2UKKwlOT19TVFJDQVNFU1RSID0gWWVzUGxlYXNlCisJTk9fU1RSTENQWSA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0ggPSBZZXNQbGVhc2UKKwlOT19NRU1NRU0gPSBZZXNQbGVhc2UKKwlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQorCU5PX1NUUlRPVU1BWCA9IFllc1BsZWFzZQorCU5PX01LRFRFTVAgPSBZZXNQbGVhc2UKKwlOT19NS1NURU1QUyA9IFllc1BsZWFzZQorCU5PX1NWTl9URVNUUyA9IFllc1BsZWFzZQorCU5PX1BFUkxfTUFLRU1BS0VSID0gWWVzUGxlYXNlCisJUlVOVElNRV9QUkVGSVggPSBZZXNQbGVhc2UKKwlOT19TVF9CTE9DS1NfSU5fU1RSVUNUX1NUQVQgPSBZZXNQbGVhc2UKKwlOT19OU0VDID0gWWVzUGxlYXNlCisJVVNFX1dJTjMyX01NQVAgPSBZZXNQbGVhc2UKKwlVU0VfTkVEX0FMTE9DQVRPUiA9IFllc1BsZWFzZQorCVVOUkVMSUFCTEVfRlNUQVQgPSBVbmZvcnR1bmF0ZWx5WWVzCisJT0JKRUNUX0NSRUFUSU9OX1VTRVNfUkVOQU1FUyA9IFVuZm9ydHVuYXRlbHlOZWVkc1RvCisJTk9fUkVHRVggPSBZZXNQbGVhc2UKKwlOT19QWVRIT04gPSBZZXNQbGVhc2UKKwlCTEtfU0hBMSA9IFllc1BsZWFzZQorCUVUQUdTX1RBUkdFVCA9IEVUQUdTCisJTk9fSU5FVF9QVE9OID0gWWVzUGxlYXNlCisJTk9fSU5FVF9OVE9QID0gWWVzUGxlYXNlCisJTk9fUE9TSVhfR09PRElFUyA9IFVuZm9ydHVuYXRlbHlZZXMKKwlERUZBVUxUX0hFTFBfRk9STUFUID0gaHRtbAorCUNPTVBBVF9DRkxBR1MgKz0gLURfX1VTRV9NSU5HV19BQ0NFU1MgLUROT0dESSAtSWNvbXBhdCAtSWNvbXBhdC93aW4zMgorCUNPTVBBVF9DRkxBR1MgKz0gLURTVFJJUF9FWFRFTlNJT049XCIuZXhlXCIKKwlDT01QQVRfT0JKUyArPSBjb21wYXQvbWluZ3cubyBjb21wYXQvd2luYW5zaS5vIFwKKwkJY29tcGF0L3dpbjMyL3B0aHJlYWQubyBjb21wYXQvd2luMzIvc3lzbG9nLm8gXAorCQljb21wYXQvd2luMzIvZGlyZW50Lm8KKwlCQVNJQ19MREZMQUdTICs9IC1XbCwtLWxhcmdlLWFkZHJlc3MtYXdhcmUKKwlFWFRMSUJTICs9IC1sd3MyXzMyCisJR0lUTElCUyArPSBnaXQucmVzCisJUFRIUkVBRF9MSUJTID0KKwlSQyA9IHdpbmRyZXMgLU8gY29mZgorCU5BVElWRV9DUkxGID0gWWVzUGxlYXNlCisJWCA9IC5leGUKKwlTUEFSU0VfRkxBR1MgPSAtV25vLW9uZS1iaXQtc2lnbmVkLWJpdGZpZWxkCitpZm5lcSAoLCQod2lsZGNhcmQgLi4vVEhJU19JU19NU1lTR0lUKSkKKwlodG1sZGlyID0gZG9jL2dpdC9odG1sLworCXByZWZpeCA9CisJSU5TVEFMTCA9IC9iaW4vaW5zdGFsbAorCUVYVExJQlMgKz0gL21pbmd3L2xpYi9saWJ6LmEKKwlOT19SX1RPX0dDQ19MSU5LRVIgPSBZZXNQbGVhc2UKKwlJTlRFUk5BTF9RU09SVCA9IFllc1BsZWFzZQorCUhBVkVfTElCQ0hBUlNFVF9IID0gWWVzUGxlYXNlCisJTk9fR0VUVEVYVCA9IFllc1BsZWFzZQorZWxzZQorCU5PX0NVUkwgPSBZZXNQbGVhc2UKK2VuZGlmCitlbmRpZgoraWZlcSAoJCh1bmFtZV9TKSxRTlgpCisJQ09NUEFUX0NGTEFHUyArPSAtRFNBX1JFU1RBUlQ9MAorCUVYUEFUX05FRURTX1hNTFBBUlNFX0ggPSBZZXNQbGVhc2UKKwlIQVZFX1NUUklOR1NfSCA9IFllc1BsZWFzZQorCU5FRURTX1NPQ0tFVCA9IFllc1BsZWFzZQorCU5PX0ZOTUFUQ0hfQ0FTRUZPTEQgPSBZZXNQbGVhc2UKKwlOT19HRVRQQUdFU0laRSA9IFllc1BsZWFzZQorCU5PX0lDT05WID0gWWVzUGxlYXNlCisJTk9fTUVNTUVNID0gWWVzUGxlYXNlCisJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQorCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCisJTk9fTlNFQyA9IFllc1BsZWFzZQorCU5PX1BUSFJFQURTID0gWWVzUGxlYXNlCisJTk9fUl9UT19HQ0NfTElOS0VSID0gWWVzUGxlYXNlCisJTk9fU1RSQ0FTRVNUUiA9IFllc1BsZWFzZQorCU5PX1NUUkxDUFkgPSBZZXNQbGVhc2UKK2VuZGlmCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNDFhYzlhNS4uZjM0NjJkOSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNzUzLDYgKzc1MywxNCBAQAogWyNpbmNsdWRlIDxkaXJlbnQuaD5dKQogR0lUX0NPTkZfU1VCU1QoW05PX0RfVFlQRV9JTl9ESVJFTlRdKQogIworIyBEZWZpbmUgTk9fR0VDT1NfSU5fUFdFTlQgaWYgeW91IGRvbid0IGhhdmUgcHdfZ2Vjb3MgaW4gc3RydWN0IHBhc3N3ZAorIyBpbiB0aGUgQyBsaWJyYXJ5LgorQUNfQ0hFQ0tfTUVNQkVSKHN0cnVjdCBwYXNzd2QucHdfZ2Vjb3MsCitbTk9fR0VDT1NfSU5fUFdFTlQ9XSwKK1tOT19HRUNPU19JTl9QV0VOVD1ZZXNQbGVhc2VdLAorWyNpbmNsdWRlIDxwd2QuaD5dKQorR0lUX0NPTkZfU1VCU1QoW05PX0dFQ09TX0lOX1BXRU5UXSkKKyMKICMgRGVmaW5lIE5PX1NPQ0tBRERSX1NUT1JBR0UgaWYgeW91ciBwbGF0Zm9ybSBkb2VzIG5vdCBoYXZlIHN0cnVjdAogIyBzb2NrYWRkcl9zdG9yYWdlLgogQUNfQ0hFQ0tfVFlQRShzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSwKQEAgLTg3Miw2ICs4ODAsMTIgQEAKIFtIQVZFX0xJQkNIQVJTRVRfSD1ZZXNQbGVhc2VdLAogW0hBVkVfTElCQ0hBUlNFVF9IPV0pCiBHSVRfQ09ORl9TVUJTVChbSEFWRV9MSUJDSEFSU0VUX0hdKQorIworIyBEZWZpbmUgSEFWRV9TVFJJTkdTX0ggaWYgeW91IGhhdmUgc3RyaW5ncy5oCitBQ19DSEVDS19IRUFERVIoW3N0cmluZ3MuaF0sCitbSEFWRV9TVFJJTkdTX0g9WWVzUGxlYXNlXSwKK1tIQVZFX1NUUklOR1NfSD1dKQorR0lUX0NPTkZfU1VCU1QoW0hBVkVfU1RSSU5HU19IXSkKICMgRGVmaW5lIENIQVJTRVRfTElCIGlmIGxpYmljb252IGRvZXMgbm90IGV4cG9ydCB0aGUgbG9jYWxlX2NoYXJzZXQgc3ltYm9sCiAjIGFuZCBsaWJjaGFyc2V0IGRvZXMKIENIQVJTRVRfTElCPQpAQCAtODg3LDEyICs5MDEsNiBAQAogW05PX1NUUkNBU0VTVFI9WWVzUGxlYXNlXSkKIEdJVF9DT05GX1NVQlNUKFtOT19TVFJDQVNFU1RSXSkKICMKLSMgRGVmaW5lIE5PX1NUUlRPS19SIGlmIHlvdSBkb24ndCBoYXZlIHN0cnRva19yCi1HSVRfQ0hFQ0tfRlVOQyhzdHJ0b2tfciwKLVtOT19TVFJUT0tfUj1dLAotW05PX1NUUlRPS19SPVllc1BsZWFzZV0pCi1HSVRfQ09ORl9TVUJTVChbTk9fU1RSVE9LX1JdKQotIwogIyBEZWZpbmUgTk9fRk5NQVRDSCBpZiB5b3UgZG9uJ3QgaGF2ZSBmbm1hdGNoCiBHSVRfQ0hFQ0tfRlVOQyhmbm1hdGNoLAogW05PX0ZOTUFUQ0g9XSwKZGlmZiAtLWdpdCBhL2Nvbm5lY3QuYyBiL2Nvbm5lY3QuYwppbmRleCA0OWU1NmJhLi5hMDc4M2Q0IDEwMDY0NAotLS0gYS9jb25uZWN0LmMKKysrIGIvY29ubmVjdC5jCkBAIC02Miw4ICs2Miw4IEBACiAvKgogICogUmVhZCBhbGwgdGhlIHJlZnMgZnJvbSB0aGUgb3RoZXIgZW5kCiAgKi8KLXN0cnVjdCByZWYgKipnZXRfcmVtb3RlX2hlYWRzKGludCBpbiwgc3RydWN0IHJlZiAqKmxpc3QsCi0JCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCitzdHJ1Y3QgcmVmICoqZ2V0X3JlbW90ZV9oZWFkcyhpbnQgaW4sIGNoYXIgKnNyY19idWYsIHNpemVfdCBzcmNfbGVuLAorCQkJICAgICAgc3RydWN0IHJlZiAqKmxpc3QsIHVuc2lnbmVkIGludCBmbGFncywKIAkJCSAgICAgIHN0cnVjdCBleHRyYV9oYXZlX29iamVjdHMgKmV4dHJhX2hhdmUpCiB7CiAJaW50IGdvdF9hdF9sZWFzdF9vbmVfaGVhZCA9IDA7CkBAIC03MiwxOCArNzIsMTkgQEAKIAlmb3IgKDs7KSB7CiAJCXN0cnVjdCByZWYgKnJlZjsKIAkJdW5zaWduZWQgY2hhciBvbGRfc2hhMVsyMF07Ci0JCXN0YXRpYyBjaGFyIGJ1ZmZlclsxMDAwXTsKIAkJY2hhciAqbmFtZTsKIAkJaW50IGxlbiwgbmFtZV9sZW47CisJCWNoYXIgKmJ1ZmZlciA9IHBhY2tldF9idWZmZXI7CiAKLQkJbGVuID0gcGFja2V0X3JlYWQoaW4sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworCQlsZW4gPSBwYWNrZXRfcmVhZChpbiwgJnNyY19idWYsICZzcmNfbGVuLAorCQkJCSAgcGFja2V0X2J1ZmZlciwgc2l6ZW9mKHBhY2tldF9idWZmZXIpLAorCQkJCSAgUEFDS0VUX1JFQURfR0VOVExFX09OX0VPRiB8CisJCQkJICBQQUNLRVRfUkVBRF9DSE9NUF9ORVdMSU5FKTsKIAkJaWYgKGxlbiA8IDApCiAJCQlkaWVfaW5pdGlhbF9jb250YWN0KGdvdF9hdF9sZWFzdF9vbmVfaGVhZCk7CiAKIAkJaWYgKCFsZW4pCiAJCQlicmVhazsKLQkJaWYgKGJ1ZmZlcltsZW4tMV0gPT0gJ1xuJykKLQkJCWJ1ZmZlclstLWxlbl0gPSAwOwogCiAJCWlmIChsZW4gPiA0ICYmICFwcmVmaXhjbXAoYnVmZmVyLCAiRVJSICIpKQogCQkJZGllKCJyZW1vdGUgZXJyb3I6ICVzIiwgYnVmZmVyICsgNCk7CkBAIC01NTAsOCArNTUxLDExIEBACiAJcGF0aCA9IHN0cmNocihlbmQsIGMpOwogCWlmIChwYXRoICYmICFoYXNfZG9zX2RyaXZlX3ByZWZpeChlbmQpKSB7CiAJCWlmIChjID09ICc6JykgewotCQkJcHJvdG9jb2wgPSBQUk9UT19TU0g7Ci0JCQkqcGF0aCsrID0gJ1wwJzsKKwkJCWlmIChwYXRoIDwgc3RyY2hybnVsKGhvc3QsICcvJykpIHsKKwkJCQlwcm90b2NvbCA9IFBST1RPX1NTSDsKKwkJCQkqcGF0aCsrID0gJ1wwJzsKKwkJCX0gZWxzZSAvKiAnLycgaW4gdGhlIGhvc3QgcGFydCwgYXNzdW1lIGxvY2FsIHBhdGggKi8KKwkJCQlwYXRoID0gZW5kOwogCQl9CiAJfSBlbHNlCiAJCXBhdGggPSBlbmQ7CmRpZmYgLS1naXQgYS9jb25uZWN0ZWQuYyBiL2Nvbm5lY3RlZC5jCmluZGV4IDFlODljMWMuLmZhZThkNjQgMTAwNjQ0Ci0tLSBhL2Nvbm5lY3RlZC5jCisrKyBiL2Nvbm5lY3RlZC5jCkBAIC0yLDcgKzIsMTIgQEAKICNpbmNsdWRlICJydW4tY29tbWFuZC5oIgogI2luY2x1ZGUgInNpZ2NoYWluLmgiCiAjaW5jbHVkZSAiY29ubmVjdGVkLmgiCisjaW5jbHVkZSAidHJhbnNwb3J0LmgiCiAKK2ludCBjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZChzaGExX2l0ZXJhdGVfZm4gZm4sIGludCBxdWlldCwgdm9pZCAqY2JfZGF0YSkKK3sKKwlyZXR1cm4gY2hlY2tfZXZlcnl0aGluZ19jb25uZWN0ZWRfd2l0aF90cmFuc3BvcnQoZm4sIHF1aWV0LCBjYl9kYXRhLCBOVUxMKTsKK30KIC8qCiAgKiBJZiB3ZSBmZWVkIGFsbCB0aGUgY29tbWl0cyB3ZSB3YW50IHRvIHZlcmlmeSB0byB0aGlzIGNvbW1hbmQKICAqCkBAIC0xNCw3ICsxOSwxMCBAQAogICoKICAqIFJldHVybnMgMCBpZiBldmVyeXRoaW5nIGlzIGNvbm5lY3RlZCwgbm9uLXplcm8gb3RoZXJ3aXNlLgogICovCi1pbnQgY2hlY2tfZXZlcnl0aGluZ19jb25uZWN0ZWQoc2hhMV9pdGVyYXRlX2ZuIGZuLCBpbnQgcXVpZXQsIHZvaWQgKmNiX2RhdGEpCitpbnQgY2hlY2tfZXZlcnl0aGluZ19jb25uZWN0ZWRfd2l0aF90cmFuc3BvcnQoc2hhMV9pdGVyYXRlX2ZuIGZuLAorCQkJCQkgICAgICBpbnQgcXVpZXQsCisJCQkJCSAgICAgIHZvaWQgKmNiX2RhdGEsCisJCQkJCSAgICAgIHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCkKIHsKIAlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyByZXZfbGlzdDsKIAljb25zdCBjaGFyICphcmd2W10gPSB7InJldi1saXN0IiwgIi0tb2JqZWN0cyIsCkBAIC0yMiwxMCArMzAsMjMgQEAKIAljaGFyIGNvbW1pdFs0MV07CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAlpbnQgZXJyID0gMDsKKwlzdHJ1Y3QgcGFja2VkX2dpdCAqbmV3X3BhY2sgPSBOVUxMOwogCiAJaWYgKGZuKGNiX2RhdGEsIHNoYTEpKQogCQlyZXR1cm4gZXJyOwogCisJaWYgKHRyYW5zcG9ydCAmJiB0cmFuc3BvcnQtPnNtYXJ0X29wdGlvbnMgJiYKKwkgICAgdHJhbnNwb3J0LT5zbWFydF9vcHRpb25zLT5zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkICYmCisJICAgIHRyYW5zcG9ydC0+cGFja19sb2NrZmlsZSAmJgorCSAgICAhc3VmZml4Y21wKHRyYW5zcG9ydC0+cGFja19sb2NrZmlsZSwgIi5rZWVwIikpIHsKKwkJc3RydWN0IHN0cmJ1ZiBpZHhfZmlsZSA9IFNUUkJVRl9JTklUOworCQlzdHJidWZfYWRkc3RyKCZpZHhfZmlsZSwgdHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlKTsKKwkJc3RyYnVmX3NldGxlbigmaWR4X2ZpbGUsIGlkeF9maWxlLmxlbiAtIDUpOyAvKiAiLmtlZXAiICovCisJCXN0cmJ1Zl9hZGRzdHIoJmlkeF9maWxlLCAiLmlkeCIpOworCQluZXdfcGFjayA9IGFkZF9wYWNrZWRfZ2l0KGlkeF9maWxlLmJ1ZiwgaWR4X2ZpbGUubGVuLCAxKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmlkeF9maWxlKTsKKwl9CisKIAlpZiAocXVpZXQpCiAJCWFyZ3ZbNV0gPSAiLS1xdWlldCI7CiAKQEAgLTQyLDYgKzYzLDE3IEBACiAKIAljb21taXRbNDBdID0gJ1xuJzsKIAlkbyB7CisJCS8qCisJCSAqIElmIGluZGV4LXBhY2sgYWxyZWFkeSBjaGVja2VkIHRoYXQ6CisJCSAqIC0gdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBvaW50ZXJzIGluIHRoZSBuZXcgcGFjaworCQkgKiAtIHRoZSBwYWNrIGlzIHNlbGYgY29udGFpbmVkCisJCSAqIFRoZW4gaWYgdGhlIHVwZGF0ZWQgcmVmIGlzIGluIHRoZSBuZXcgcGFjaywgdGhlbiB3ZQorCQkgKiBhcmUgc3VyZSB0aGUgcmVmIGlzIGdvb2QgYW5kIG5vdCBzZW5kaW5nIGl0IHRvCisJCSAqIHJldi1saXN0IGZvciB2ZXJpZmljYXRpb24uCisJCSAqLworCQlpZiAobmV3X3BhY2sgJiYgZmluZF9wYWNrX2VudHJ5X29uZShzaGExLCBuZXdfcGFjaykpCisJCQljb250aW51ZTsKKwogCQltZW1jcHkoY29tbWl0LCBzaGExX3RvX2hleChzaGExKSwgNDApOwogCQlpZiAod3JpdGVfaW5fZnVsbChyZXZfbGlzdC5pbiwgY29tbWl0LCA0MSkgPCAwKSB7CiAJCQlpZiAoZXJybm8gIT0gRVBJUEUgJiYgZXJybm8gIT0gRUlOVkFMKQpkaWZmIC0tZ2l0IGEvY29ubmVjdGVkLmggYi9jb25uZWN0ZWQuaAppbmRleCA3ZTQ1ODVhLi4wYjA2MGI3IDEwMDY0NAotLS0gYS9jb25uZWN0ZWQuaAorKysgYi9jb25uZWN0ZWQuaApAQCAtMSw2ICsxLDggQEAKICNpZm5kZWYgQ09OTkVDVEVEX0gKICNkZWZpbmUgQ09OTkVDVEVEX0gKIAorc3RydWN0IHRyYW5zcG9ydDsKKwogLyoKICAqIFRha2UgY2FsbGJhY2sgZGF0YSwgYW5kIHJldHVybiBuZXh0IG9iamVjdCBuYW1lIGluIHRoZSBidWZmZXIuCiAgKiBXaGVuIGNhbGxlZCBhZnRlciByZXR1cm5pbmcgdGhlIG5hbWUgZm9yIHRoZSBsYXN0IG9iamVjdCwgcmV0dXJuIC0xCkBAIC0xNiw1ICsxOCw4IEBACiAgKiBSZXR1cm4gMCBpZiBPaywgbm9uIHplcm8gb3RoZXJ3aXNlIChpLmUuIHNvbWUgbWlzc2luZyBvYmplY3RzKQogICovCiBleHRlcm4gaW50IGNoZWNrX2V2ZXJ5dGhpbmdfY29ubmVjdGVkKHNoYTFfaXRlcmF0ZV9mbiwgaW50IHF1aWV0LCB2b2lkICpjYl9kYXRhKTsKK2V4dGVybiBpbnQgY2hlY2tfZXZlcnl0aGluZ19jb25uZWN0ZWRfd2l0aF90cmFuc3BvcnQoc2hhMV9pdGVyYXRlX2ZuLCBpbnQgcXVpZXQsCisJCQkJCQkgICAgIHZvaWQgKmNiX2RhdGEsCisJCQkJCQkgICAgIHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCk7CiAKICNlbmRpZiAvKiBDT05ORUNURURfSCAqLwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ibGFtZXZpZXcvUkVBRE1FIGIvY29udHJpYi9ibGFtZXZpZXcvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWRhNWNlLi4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvYmxhbWV2aWV3L1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotVGhpcyBpcyBhIHNhbXBsZSBwcm9ncmFtIHRvIHVzZSAnZ2l0LWJsYW1lIC0taW5jcmVtZW50YWwnLCBiYXNlZAotb24gdGhpcyBtZXNzYWdlLgotCi1Gcm9tOiBKZWZmIEtpbmcgPHBlZmZAcGVmZi5uZXQ+Ci1TdWJqZWN0OiBSZTogTW9yZSBwcmVjaXNlIHRhZyBmb2xsb3dpbmcKLVRvOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+Ci1DYzogZ2l0QHZnZXIua2VybmVsLm9yZwotRGF0ZTogU2F0LCAyNyBKYW4gMjAwNyAxODo1MjozOCAtMDUwMAotTWVzc2FnZS1JRDogPDIwMDcwMTI3MjM1MjM4LkdBMjg3MDZAY29yZWR1bXAuaW50cmEucGVmZi5uZXQ+CmRpZmYgLS1naXQgYS9jb250cmliL2JsYW1ldmlldy9ibGFtZXZpZXcucGVybCBiL2NvbnRyaWIvYmxhbWV2aWV3L2JsYW1ldmlldy5wZXJsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxZGVjMDAxLi4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvYmxhbWV2aWV3L2JsYW1ldmlldy5wZXJsCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybAotCi11c2UgR3RrMiAtaW5pdDsKLXVzZSBHdGsyOjpTaW1wbGVMaXN0OwotCi1teSAkaGFzaDsKLW15ICRmbjsKLWlmICggQEFSR1YgPT0gMSApIHsKLQkkaGFzaCA9ICJIRUFEIjsKLQkkZm4gPSBzaGlmdDsKLX0gZWxzaWYgKCBAQVJHViA9PSAyICkgewotCSRoYXNoID0gc2hpZnQ7Ci0JJGZuID0gc2hpZnQ7Ci19IGVsc2UgewotCWRpZSAiVXNhZ2UgYmxhbWV2aWV3IFs8cmV2Pl0gPGZpbGVuYW1lPiI7Ci19Ci0KLUd0azI6OlJjLT5wYXJzZV9zdHJpbmcoPDwnRU9TJyk7Ci1zdHlsZSAidHJlZXZpZXdfc3R5bGUiCi17Ci0gIEd0a1RyZWVWaWV3Ojp2ZXJ0aWNhbC1zZXBhcmF0b3IgPSAwCi19Ci1jbGFzcyAiR3RrVHJlZVZpZXciIHN0eWxlICJ0cmVldmlld19zdHlsZSIKLUVPUwotCi1teSAkd2luZG93ID0gR3RrMjo6V2luZG93LT5uZXcoJ3RvcGxldmVsJyk7Ci0kd2luZG93LT5zaWduYWxfY29ubmVjdChkZXN0cm95ID0+IHN1YiB7IEd0azItPm1haW5fcXVpdCB9KTsKLW15ICR2cGFuID0gR3RrMjo6VlBhbmVkLT5uZXcoKTsKLSR3aW5kb3ctPmFkZCgkdnBhbik7Ci1teSAkc2Nyb2xsZWRfd2luZG93ID0gR3RrMjo6U2Nyb2xsZWRXaW5kb3ctPm5ldzsKLSR2cGFuLT5wYWNrMSgkc2Nyb2xsZWRfd2luZG93LCAxLCAxKTsKLW15ICRmaWxldmlldyA9IEd0azI6OlNpbXBsZUxpc3QtPm5ldygKLSAgICAnQ29tbWl0JyA9PiAndGV4dCcsCi0gICAgJ0ZpbGVMaW5lJyA9PiAndGV4dCcsCi0gICAgJ0RhdGEnID0+ICd0ZXh0JwotKTsKLSRzY3JvbGxlZF93aW5kb3ctPmFkZCgkZmlsZXZpZXcpOwotJGZpbGV2aWV3LT5nZXRfY29sdW1uKDApLT5zZXRfc3BhY2luZygwKTsKLSRmaWxldmlldy0+c2V0X3NpemVfcmVxdWVzdCgxMDI0LCA3NjgpOwotJGZpbGV2aWV3LT5zZXRfcnVsZXNfaGludCgxKTsKLSRmaWxldmlldy0+c2lnbmFsX2Nvbm5lY3QgKHJvd19hY3RpdmF0ZWQgPT4gc3ViIHsKLQkJbXkgKCRzbCwgJHBhdGgsICRjb2x1bW4pID0gQF87Ci0JCW15ICRyb3dfcmVmID0gJHNsLT5nZXRfcm93X2RhdGFfZnJvbV9wYXRoICgkcGF0aCk7Ci0JCXN5c3RlbSgiYmxhbWV2aWV3IEAkcm93X3JlZlswXX4xICRmbiAmIik7Ci0JCX0pOwotCi1teSAkY29tbWl0d2luZG93ID0gR3RrMjo6U2Nyb2xsZWRXaW5kb3ctPm5ldygpOwotJGNvbW1pdHdpbmRvdy0+c2V0X3BvbGljeSAoJ0dUS19QT0xJQ1lfQVVUT01BVElDJywnR1RLX1BPTElDWV9BVVRPTUFUSUMnKTsKLSR2cGFuLT5wYWNrMigkY29tbWl0d2luZG93LCAxLCAxKTsKLW15ICRjb21taXRfdGV4dCA9IEd0azI6OlRleHRWaWV3LT5uZXcoKTsKLW15ICRjb21taXRfYnVmZmVyID0gR3RrMjo6VGV4dEJ1ZmZlci0+bmV3KCk7Ci0kY29tbWl0X3RleHQtPnNldF9idWZmZXIoJGNvbW1pdF9idWZmZXIpOwotJGNvbW1pdHdpbmRvdy0+YWRkKCRjb21taXRfdGV4dCk7Ci0KLSRmaWxldmlldy0+c2lnbmFsX2Nvbm5lY3QgKGN1cnNvcl9jaGFuZ2VkID0+IHN1YiB7Ci0JCW15ICgkc2wpID0gQF87Ci0JCW15ICgkcGF0aCwgJGZvY3VzX2NvbHVtbikgPSAkc2wtPmdldF9jdXJzb3IoKTsKLQkJbXkgJHJvd19yZWYgPSAkc2wtPmdldF9yb3dfZGF0YV9mcm9tX3BhdGggKCRwYXRoKTsKLQkJbXkgJGNfZmg7Ci0JCW9wZW4oJGNfZmgsICAnLXwnLCAiZ2l0IGNhdC1maWxlIGNvbW1pdCBAJHJvd19yZWZbMF0iKQotCQkJCQlvciBkaWUgInVuYWJsZSB0byBmaW5kIGNvbW1pdCBAJHJvd19yZWZbMF0iOwotCQlteSBAYnVmZmVyID0gPCRjX2ZoPjsKLQkJJGNvbW1pdF9idWZmZXItPnNldF90ZXh0KCJAYnVmZmVyIik7Ci0JCWNsb3NlKCRjX2ZoKTsKLQkJfSk7Ci0KLW15ICRmaDsKLW9wZW4oJGZoLCAnLXwnLCAiZ2l0IGNhdC1maWxlIGJsb2IgJGhhc2g6JGZuIikKLSAgb3IgZGllICJ1bmFibGUgdG8gb3BlbiAkZm46ICQhIjsKLQotd2hpbGUoPCRmaD4pIHsKLSAgY2hvbXA7Ci0gICRmaWxldmlldy0+e2RhdGF9LT5bJC5dID0gWydIRUFEJywgIiRmbjokLiIsICRfXTsKLX0KLQotbXkgJGJsYW1lOwotb3BlbigkYmxhbWUsICctfCcsIHF3KGdpdCBibGFtZSAtLWluY3JlbWVudGFsIC0tKSwgJGZuLCAkaGFzaCkKLSAgICBvciBkaWUgImNhbm5vdCBzdGFydCBnaXQtYmxhbWUgJGZuIjsKLQotR2xpYjo6SU8tPmFkZF93YXRjaChmaWxlbm8oJGJsYW1lKSwgJ2luJywgXCZyZWFkX2JsYW1lX2xpbmUpOwotCi0kd2luZG93LT5zaG93X2FsbDsKLUd0azItPm1haW47Ci1leGl0IDA7Ci0KLW15ICVjb21taXRpbmZvID0gKCk7Ci0KLXN1YiBmbHVzaF9ibGFtZV9saW5lIHsKLQlteSAoJGF0dHIpID0gQF87Ci0KLQlyZXR1cm4gdW5sZXNzIGRlZmluZWQgJGF0dHI7Ci0KLQlteSAoJGNvbW1pdCwgJHNfbG5vLCAkbG5vLCAkY250KSA9Ci0JICAgIEB7JGF0dHJ9e3F3KENPTU1JVCBTX0xOTyBMTk8gQ05UKX07Ci0KLQlteSAoJGZpbGVuYW1lLCAkYXV0aG9yLCAkYXV0aG9yX3RpbWUsICRhdXRob3JfdHopID0KLQkgICAgQHskY29tbWl0aW5mb3skY29tbWl0fX17cXcoRklMRU5BTUUgQVVUSE9SIEFVVEhPUi1USU1FIEFVVEhPUi1UWil9OwotCW15ICRpbmZvID0gJGF1dGhvciAuICcgJyAuIGZvcm1hdF90aW1lKCRhdXRob3JfdGltZSwgJGF1dGhvcl90eik7Ci0KLQlmb3IobXkgJGkgPSAwOyAkaSA8ICRjbnQ7ICRpKyspIHsKLQkJQHskZmlsZXZpZXctPntkYXRhfS0+WyRsbm8rJGktMV19WzAsMSwyXSA9Ci0JCShzdWJzdHIoJGNvbW1pdCwgMCwgOCksICRmaWxlbmFtZSAuICc6JyAuICgkc19sbm8rJGkpKTsKLQl9Ci19Ci0KLW15ICRidWY7Ci1teSAkY3VycmVudDsKLXN1YiByZWFkX2JsYW1lX2xpbmUgewotCi0JbXkgJHIgPSBzeXNyZWFkKCRibGFtZSwgJGJ1ZiwgMTAyNCwgbGVuZ3RoKCRidWYpKTsKLQlkaWUgIkkvTyBlcnJvciIgdW5sZXNzIGRlZmluZWQgJHI7Ci0KLQlpZiAoJHIgPT0gMCkgewotCQlmbHVzaF9ibGFtZV9saW5lKCRjdXJyZW50KTsKLQkJJGN1cnJlbnQgPSB1bmRlZjsKLQkJcmV0dXJuIDA7Ci0JfQotCi0Jd2hpbGUgKCRidWYgPX4gcy8oW15cbl0qKVxuLy8pIHsKLQkJbXkgJGxpbmUgPSAkMTsKLQotCQlpZiAoKCRjb21taXQsICRzX2xubywgJGxubywgJGNudCkgPQotCQkgICAgKCRsaW5lID1+IC9eKFswLTlhLWZdezQwfSkgKFxkKykgKFxkKykgKFxkKykkLykpIHsKLQkJCWZsdXNoX2JsYW1lX2xpbmUoJGN1cnJlbnQpOwotCQkJJGN1cnJlbnQgPSArewotCQkJCUNPTU1JVCA9PiAkMSwKLQkJCQlTX0xOTyA9PiAkMiwKLQkJCQlMTk8gPT4gJDMsCi0JCQkJQ05UID0+ICQ0LAotCQkJfTsKLQkJCW5leHQ7Ci0JCX0KLQotCQkjIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZXMKLQkJaWYgKCRsaW5lID1+IC9eKGF1dGhvcnxhdXRob3ItbWFpbHxhdXRob3ItdGltZXxhdXRob3ItdHp8Y29tbWl0dGVyfGNvbW1pdHRlci1tYWlsfGNvbW1pdHRlci10aW1lfGNvbW1pdHRlci10enxzdW1tYXJ5fGZpbGVuYW1lKSAoLiopJC8pIHsKLQkJCW15ICRjb21taXQgPSAkY3VycmVudC0+e0NPTU1JVH07Ci0JCQkkY29tbWl0aW5mb3skY29tbWl0fXt1YygkMSl9ID0gJDI7Ci0JCQluZXh0OwotCQl9Ci0JfQotCXJldHVybiAxOwotfQotCi1zdWIgZm9ybWF0X3RpbWUgewotICBteSAkdGltZSA9IHNoaWZ0OwotICBteSAkdHogPSBzaGlmdDsKLQotICBteSAkbWludXRlcyA9ICR0eiA8IDAgPyAwLSR0eiA6ICR0ejsKLSAgJG1pbnV0ZXMgPSAoJG1pbnV0ZXMgLyAxMDApKjYwICsgKCRtaW51dGVzICUgMTAwKTsKLSAgJG1pbnV0ZXMgPSAkdHogPCAwID8gMC0kbWludXRlcyA6ICRtaW51dGVzOwotICAkdGltZSArPSAkbWludXRlcyAqIDYwOwotICBteSBAdCA9IGdtdGltZSgkdGltZSk7Ci0gIHJldHVybiBzcHJpbnRmKCclMDRkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6JTAyZCAlcycsCi0JCSAkdFs1XSArIDE5MDAsIEB0WzQsMywyLDEsMF0sICR0eik7Ci19CmRpZmYgLS1naXQgYS9jb250cmliL2NpYWJvdC9jaWFib3QucHkgYi9jb250cmliL2NpYWJvdC9jaWFib3QucHkKaW5kZXggYmQyNDM5NS4uMzZiNTY2NSAxMDA3NTUKLS0tIGEvY29udHJpYi9jaWFib3QvY2lhYm90LnB5CisrKyBiL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5weQpAQCAtNDcsNyArNDcsMTMgQEAKICMgd2UgZGVmYXVsdCB0byB0aGF0LgogIwogCi1pbXBvcnQgb3MsIHN5cywgY29tbWFuZHMsIHNvY2tldCwgdXJsbGliCitpbXBvcnQgc3lzCitpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDIwMDAwMDA6CisgICAgICAgICMgVGhlIGxpbWl0ZXIgaXMgdGhlIHhtbC5zYXggbW9kdWxlCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoImNpYWJvdC5weTogcmVxdWlyZXMgUHl0aG9uIDIuMC4wIG9yIGxhdGVyLlxuIikKKyAgICAgICAgc3lzLmV4aXQoMSkKKworaW1wb3J0IG9zLCBjb21tYW5kcywgc29ja2V0LCB1cmxsaWIKIGZyb20geG1sLnNheC5zYXh1dGlscyBpbXBvcnQgZXNjYXBlCiAKICMgQ2hhbmdlc2V0IFVSTCBwcmVmaXggZm9yIHlvdXIgcmVwbzogd2hlbiB0aGUgY29tbWl0IElEIGlzIGFwcGVuZGVkCmRpZmYgLS1naXQgYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uYmFzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCmluZGV4IDIxODZiNGIuLjZjM2JhZmUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCkBAIC0xMyw2ICsxMyw3IEBACiAjICAgICopIC5naXQvcmVtb3RlcyBmaWxlIG5hbWVzCiAjICAgICopIGdpdCAnc3ViY29tbWFuZHMnCiAjICAgICopIHRyZWUgcGF0aHMgd2l0aGluICdyZWY6cGF0aC90by9maWxlJyBleHByZXNzaW9ucworIyAgICAqKSBmaWxlIHBhdGhzIHdpdGhpbiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBpbmRleAogIyAgICAqKSBjb21tb24gLS1sb25nLW9wdGlvbnMKICMKICMgVG8gdXNlIHRoZXNlIHJvdXRpbmVzOgpAQCAtNTIsMTkgKzUzLDYgQEAKIAlmaQogfQogCi1fX2dpdGNvbXBfMSAoKQotewotCWxvY2FsIGMgSUZTPSQnIFx0XG4nCi0JZm9yIGMgaW4gJDE7IGRvCi0JCWM9IiRjJDIiCi0JCWNhc2UgJGMgaW4KLQkJLS0qPSp8Ki4pIDs7Ci0JCSopIGM9IiRjICIgOzsKLQkJZXNhYwotCQlwcmludGYgJyVzXG4nICIkYyIKLQlkb25lCi19Ci0KICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBiYXNlZCBvbiBjb2RlIGZyb206CiAjCiAjICAgYmFzaF9jb21wbGV0aW9uIC0gcHJvZ3JhbW1hYmxlIGNvbXBsZXRpb24gZnVuY3Rpb25zIGZvciBiYXNoIDMuMisKQEAgLTE5NCw4ICsxODIsMTggQEAKIH0KIGZpCiAKLSMgR2VuZXJhdGVzIGNvbXBsZXRpb24gcmVwbHkgd2l0aCBjb21wZ2VuLCBhcHBlbmRpbmcgYSBzcGFjZSB0byBwb3NzaWJsZQotIyBjb21wbGV0aW9uIHdvcmRzLCBpZiBuZWNlc3NhcnkuCitfX2dpdGNvbXBhZGQgKCkKK3sKKwlsb2NhbCBpPTAKKwlmb3IgeCBpbiAkMTsgZG8KKwkJaWYgW1sgIiR4IiA9PSAiJDMiKiBdXTsgdGhlbgorCQkJQ09NUFJFUExZW2krK109IiQyJHgkNCIKKwkJZmkKKwlkb25lCit9CisKKyMgR2VuZXJhdGVzIGNvbXBsZXRpb24gcmVwbHksIGFwcGVuZGluZyBhIHNwYWNlIHRvIHBvc3NpYmxlIGNvbXBsZXRpb24gd29yZHMsCisjIGlmIG5lY2Vzc2FyeS4KICMgSXQgYWNjZXB0cyAxIHRvIDQgYXJndW1lbnRzOgogIyAxOiBMaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb24gd29yZHMuCiAjIDI6IEEgcHJlZml4IHRvIGJlIGFkZGVkIHRvIGVhY2ggcG9zc2libGUgY29tcGxldGlvbiB3b3JkIChvcHRpb25hbCkuCkBAIC0yMDcsMTkgKzIwNSwyNSBAQAogCiAJY2FzZSAiJGN1cl8iIGluCiAJLS0qPSkKLQkJQ09NUFJFUExZPSgpCiAJCTs7CiAJKikKLQkJbG9jYWwgSUZTPSQnXG4nCi0JCUNPTVBSRVBMWT0oJChjb21wZ2VuIC1QICIkezItfSIgXAotCQkJLVcgIiQoX19naXRjb21wXzEgIiR7MS19IiAiJHs0LX0iKSIgXAotCQkJLS0gIiRjdXJfIikpCisJCWxvY2FsIGMgaT0wIElGUz0kJyBcdFxuJworCQlmb3IgYyBpbiAkMTsgZG8KKwkJCWM9IiRjJHs0LX0iCisJCQlpZiBbWyAkYyA9PSAiJGN1cl8iKiBdXTsgdGhlbgorCQkJCWNhc2UgJGMgaW4KKwkJCQktLSo9KnwqLikgOzsKKwkJCQkqKSBjPSIkYyAiIDs7CisJCQkJZXNhYworCQkJCUNPTVBSRVBMWVtpKytdPSIkezItfSRjIgorCQkJZmkKKwkJZG9uZQogCQk7OwogCWVzYWMKIH0KIAotIyBHZW5lcmF0ZXMgY29tcGxldGlvbiByZXBseSB3aXRoIGNvbXBnZW4gZnJvbSBuZXdsaW5lLXNlcGFyYXRlZCBwb3NzaWJsZQotIyBjb21wbGV0aW9uIHdvcmRzIGJ5IGFwcGVuZGluZyBhIHNwYWNlIHRvIGFsbCBvZiB0aGVtLgorIyBHZW5lcmF0ZXMgY29tcGxldGlvbiByZXBseSBmcm9tIG5ld2xpbmUtc2VwYXJhdGVkIHBvc3NpYmxlIGNvbXBsZXRpb24gd29yZHMKKyMgYnkgYXBwZW5kaW5nIGEgc3BhY2UgdG8gYWxsIG9mIHRoZW0uCiAjIEl0IGFjY2VwdHMgMSB0byA0IGFyZ3VtZW50czoKICMgMTogTGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9uIHdvcmRzLCBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgbmV3bGluZS4KICMgMjogQSBwcmVmaXggdG8gYmUgYWRkZWQgdG8gZWFjaCBwb3NzaWJsZSBjb21wbGV0aW9uIHdvcmQgKG9wdGlvbmFsKS4KQEAgLTIzMCw3ICsyMzQsNjkgQEAKIF9fZ2l0Y29tcF9ubCAoKQogewogCWxvY2FsIElGUz0kJ1xuJwotCUNPTVBSRVBMWT0oJChjb21wZ2VuIC1QICIkezItfSIgLVMgIiR7NC0gfSIgLVcgIiQxIiAtLSAiJHszLSRjdXJ9IikpCisJX19naXRjb21wYWRkICIkMSIgIiR7Mi19IiAiJHszLSRjdXJ9IiAiJHs0LSB9IgorfQorCisjIEdlbmVyYXRlcyBjb21wbGV0aW9uIHJlcGx5IHdpdGggY29tcGdlbiBmcm9tIG5ld2xpbmUtc2VwYXJhdGVkIHBvc3NpYmxlCisjIGNvbXBsZXRpb24gZmlsZW5hbWVzLgorIyBJdCBhY2NlcHRzIDEgdG8gMyBhcmd1bWVudHM6CisjIDE6IExpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbiBmaWxlbmFtZXMsIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBuZXdsaW5lLgorIyAyOiBBIGRpcmVjdG9yeSBwcmVmaXggdG8gYmUgYWRkZWQgdG8gZWFjaCBwb3NzaWJsZSBjb21wbGV0aW9uIGZpbGVuYW1lCisjICAgIChvcHRpb25hbCkuCisjIDM6IEdlbmVyYXRlIHBvc3NpYmxlIGNvbXBsZXRpb24gbWF0Y2hlcyBmb3IgdGhpcyB3b3JkIChvcHRpb25hbCkuCitfX2dpdGNvbXBfZmlsZSAoKQoreworCWxvY2FsIElGUz0kJ1xuJworCisJIyBYWFggZG9lcyBub3Qgd29yayB3aGVuIHRoZSBkaXJlY3RvcnkgcHJlZml4IGNvbnRhaW5zIGEgdGlsZGUsCisJIyBzaW5jZSB0aWxkZSBleHBhbnNpb24gaXMgbm90IGFwcGxpZWQuCisJIyBUaGlzIG1lYW5zIHRoYXQgQ09NUFJFUExZIHdpbGwgYmUgZW1wdHkgYW5kIEJhc2ggZGVmYXVsdAorCSMgY29tcGxldGlvbiB3aWxsIGJlIHVzZWQuCisJX19naXRjb21wYWRkICIkMSIgIiR7Mi19IiAiJHszLSRjdXJ9IiAiIgorCisJIyB1c2UgYSBoYWNrIHRvIGVuYWJsZSBmaWxlIG1vZGUgaW4gYmFzaCA8IDQKKwljb21wb3B0IC1vIGZpbGVuYW1lcyArbyBub3NwYWNlIDI+L2Rldi9udWxsIHx8CisJY29tcGdlbiAtZiAvbm9uLWV4aXN0aW5nLWRpci8gPiAvZGV2L251bGwKK30KKworIyBFeGVjdXRlICdnaXQgbHMtZmlsZXMnLCB1bmxlc3MgdGhlIC0tY29tbWl0dGFibGUgb3B0aW9uIGlzIHNwZWNpZmllZCwgaW4KKyMgd2hpY2ggY2FzZSBpdCBydW5zICdnaXQgZGlmZi1pbmRleCcgdG8gZmluZCBvdXQgdGhlIGZpbGVzIHRoYXQgY2FuIGJlCisjIGNvbW1pdHRlZC4gIEl0IHJldHVybiBwYXRocyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBpbiB0aGUgZmlyc3QKKyMgYXJndW1lbnQsIGFuZCB1c2luZyB0aGUgb3B0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIHNlY29uZCBhcmd1bWVudC4KK19fZ2l0X2xzX2ZpbGVzX2hlbHBlciAoKQoreworCSgKKwkJdGVzdCAtbiAiJHtDRFBBVEgrc2V0fSIgJiYgdW5zZXQgQ0RQQVRICisJCWNkICIkMSIKKwkJaWYgWyAiJDIiID09ICItLWNvbW1pdHRhYmxlIiBdOyB0aGVuCisJCQlnaXQgZGlmZi1pbmRleCAtLW5hbWUtb25seSAtLXJlbGF0aXZlIEhFQUQKKwkJZWxzZQorCQkJIyBOT1RFOiAkMiBpcyBub3QgcXVvdGVkIGluIG9yZGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgb3B0aW9ucworCQkJZ2l0IGxzLWZpbGVzIC0tZXhjbHVkZS1zdGFuZGFyZCAkMgorCQlmaQorCSkgMj4vZGV2L251bGwKK30KKworCisjIF9fZ2l0X2luZGV4X2ZpbGVzIGFjY2VwdHMgMSBvciAyIGFyZ3VtZW50czoKKyMgMTogT3B0aW9ucyB0byBwYXNzIHRvIGxzLWZpbGVzIChyZXF1aXJlZCkuCisjIDI6IEEgZGlyZWN0b3J5IHBhdGggKG9wdGlvbmFsKS4KKyMgICAgSWYgcHJvdmlkZWQsIG9ubHkgZmlsZXMgd2l0aGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGFyZSBsaXN0ZWQuCisjICAgIFN1YiBkaXJlY3RvcmllcyBhcmUgbmV2ZXIgcmVjdXJzZWQuICBQYXRoIG11c3QgaGF2ZSBhIHRyYWlsaW5nCisjICAgIHNsYXNoLgorX19naXRfaW5kZXhfZmlsZXMgKCkKK3sKKwlsb2NhbCBkaXI9IiQoX19naXRkaXIpIiByb290PSIkezItLn0iIGZpbGUKKworCWlmIFsgLWQgIiRkaXIiIF07IHRoZW4KKwkJX19naXRfbHNfZmlsZXNfaGVscGVyICIkcm9vdCIgIiQxIiB8CisJCXdoaWxlIHJlYWQgLXIgZmlsZTsgZG8KKwkJCWNhc2UgIiRmaWxlIiBpbgorCQkJPyovKikgZWNobyAiJHtmaWxlJSUvKn0iIDs7CisJCQkqKSBlY2hvICIkZmlsZSIgOzsKKwkJCWVzYWMKKwkJZG9uZSB8IHNvcnQgfCB1bmlxCisJZmkKIH0KIAogX19naXRfaGVhZHMgKCkKQEAgLTMwNSwxNCArMzcxLDggQEAKIAkJZG9uZQogCQk7OwogCSopCi0JCWdpdCBscy1yZW1vdGUgIiRkaXIiIEhFQUQgT1JJR19IRUFEICdyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKicgJ3JlZnMvcmVtb3Rlcy8qJyAyPi9kZXYvbnVsbCB8IFwKLQkJd2hpbGUgcmVhZCAtciBoYXNoIGk7IGRvCi0JCQljYXNlICIkaSIgaW4KLQkJCSpee30pIDs7Ci0JCQlyZWZzLyopIGVjaG8gIiR7aSNyZWZzLyovfSIgOzsKLQkJCSopIGVjaG8gIiRpIiA7OwotCQkJZXNhYwotCQlkb25lCisJCWVjaG8gIkhFQUQiCisJCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9IiUocmVmbmFtZTpzaG9ydCkiIC0tICJyZWZzL3JlbW90ZXMvJGRpci8iIHwgc2VkIC1lICJzI14kZGlyLyMjIgogCQk7OwogCWVzYWMKIH0KQEAgLTQzMCw2ICs0OTAsMjUgQEAKIH0KIAogCisjIF9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgcmVxdWlyZXMgMSBhcmd1bWVudDoKKyMgMTogdGhlIG9wdGlvbnMgdG8gcGFzcyB0byBscy1maWxlCisjCisjIFRoZSBleGNlcHRpb24gaXMgLS1jb21taXR0YWJsZSwgd2hpY2ggZmluZHMgdGhlIGZpbGVzIGFwcHJvcHJpYXRlIGNvbW1pdC4KK19fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgKCkKK3sKKwlsb2NhbCBwZng9IiIgY3VyXz0iJGN1ciIKKworCWNhc2UgIiRjdXJfIiBpbgorCT8qLyopCisJCXBmeD0iJHtjdXJfJS8qfSIKKwkJY3VyXz0iJHtjdXJfIyMqL30iCisJCXBmeD0iJHtwZnh9LyIKKwkJOzsKKwllc2FjCisKKwlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9pbmRleF9maWxlcyAiJDEiICIkcGZ4IikiICIkcGZ4IiAiJGN1cl8iCit9CisKIF9fZ2l0X2NvbXBsZXRlX2ZpbGUgKCkKIHsKIAlfX2dpdF9jb21wbGV0ZV9yZXZsaXN0X2ZpbGUKQEAgLTQ1NSw3ICs1MzQsNiBAQAogCQkJY2FzZSAiJGNtZCIgaW4KIAkJCXB1c2gpIG5vX2NvbXBsZXRlX3JlZnNwZWM9MSA7OwogCQkJZmV0Y2gpCi0JCQkJQ09NUFJFUExZPSgpCiAJCQkJcmV0dXJuCiAJCQkJOzsKIAkJCSopIDs7CkBAIC00NzEsNyArNTQ5LDYgQEAKIAkJcmV0dXJuCiAJZmkKIAlpZiBbICRub19jb21wbGV0ZV9yZWZzcGVjID0gMSBdOyB0aGVuCi0JCUNPTVBSRVBMWT0oKQogCQlyZXR1cm4KIAlmaQogCVsgIiRyZW1vdGUiID0gIi4iIF0gJiYgcmVtb3RlPQpAQCAtNTcyLDYgKzY0OSw3IEBACiAJCWFyY2hpbXBvcnQpICAgICAgIDogaW1wb3J0OzsKIAkJY2F0LWZpbGUpICAgICAgICAgOiBwbHVtYmluZzs7CiAJCWNoZWNrLWF0dHIpICAgICAgIDogcGx1bWJpbmc7OworCQljaGVjay1pZ25vcmUpICAgICA6IHBsdW1iaW5nOzsKIAkJY2hlY2stcmVmLWZvcm1hdCkgOiBwbHVtYmluZzs7CiAJCWNoZWNrb3V0LWluZGV4KSAgIDogcGx1bWJpbmc7OwogCQljb21taXQtdHJlZSkgICAgICA6IHBsdW1iaW5nOzsKQEAgLTczMSw2ICs4MDksNDMgQEAKIAlyZXR1cm4gMQogfQogCisjIFRyeSB0byBjb3VudCBub24gb3B0aW9uIGFyZ3VtZW50cyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZSBmb3IgdGhlCisjIHNwZWNpZmllZCBnaXQgY29tbWFuZC4KKyMgV2hlbiBvcHRpb25zIGFyZSB1c2VkLCBpdCBpcyBuZWNlc3NhcnkgdG8gdXNlIHRoZSBzcGVjaWFsIC0tIG9wdGlvbiB0bworIyB0ZWxsIHRoZSBpbXBsZW1lbnRhdGlvbiB3ZXJlIG5vbiBvcHRpb24gYXJndW1lbnRzIGJlZ2luLgorIyBYWFggdGhpcyBjYW4gbm90IGJlIGltcHJvdmVkLCBzaW5jZSBvcHRpb25zIGNhbiBhcHBlYXIgZXZlcnl3aGVyZSwgYXMKKyMgYW4gZXhhbXBsZToKKyMJZ2l0IG12IHggLW4geQorIworIyBfX2dpdF9jb3VudF9hcmd1bWVudHMgcmVxdWlyZXMgMSBhcmd1bWVudDogdGhlIGdpdCBjb21tYW5kIGV4ZWN1dGVkLgorX19naXRfY291bnRfYXJndW1lbnRzICgpCit7CisJbG9jYWwgd29yZCBpIGM9MAorCisJIyBTa2lwICJnaXQiIChmaXJzdCBhcmd1bWVudCkKKwlmb3IgKChpPTE7IGkgPCAkeyN3b3Jkc1tAXX07IGkrKykpOyBkbworCQl3b3JkPSIke3dvcmRzW2ldfSIKKworCQljYXNlICIkd29yZCIgaW4KKwkJCS0tKQorCQkJCSMgR29vZDsgd2UgY2FuIGFzc3VtZSB0aGF0IHRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgbm9uCisJCQkJIyBvcHRpb24gYXJndW1lbnRzLgorCQkJCSgoYyA9IDApKQorCQkJCTs7CisJCQkiJDEiKQorCQkJCSMgU2tpcCB0aGUgc3BlY2lmaWVkIGdpdCBjb21tYW5kIGFuZCBkaXNjYXJkIGdpdAorCQkJCSMgbWFpbiBvcHRpb25zCisJCQkJKChjID0gMCkpCisJCQkJOzsKKwkJCT8qKQorCQkJCSgoYysrKSkKKwkJCQk7OworCQllc2FjCisJZG9uZQorCisJcHJpbnRmICIlZCIgJGMKK30KKwogX19naXRfd2hpdGVzcGFjZWxpc3Q9Im5vd2FybiB3YXJuIGVycm9yIGVycm9yLWFsbCBmaXgiCiAKIF9naXRfYW0gKCkKQEAgLTc1NCw3ICs4NjksNiBAQAogCQkJIgogCQlyZXR1cm4KIAllc2FjCi0JQ09NUFJFUExZPSgpCiB9CiAKIF9naXRfYXBwbHkgKCkKQEAgLTc3NCwxMyArODg4LDEwIEBACiAJCQkiCiAJCXJldHVybgogCWVzYWMKLQlDT01QUkVQTFk9KCkKIH0KIAogX2dpdF9hZGQgKCkKIHsKLQlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KLQogCWNhc2UgIiRjdXIiIGluCiAJLS0qKQogCQlfX2dpdGNvbXAgIgpAQCAtNzg5LDcgKzkwMCw5IEBACiAJCQkiCiAJCXJldHVybgogCWVzYWMKLQlDT01QUkVQTFk9KCkKKworCSMgWFhYIHNob3VsZCB3ZSBjaGVjayBmb3IgLS11cGRhdGUgYW5kIC0tYWxsIG9wdGlvbnMgPworCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tb3RoZXJzIC0tbW9kaWZpZWQiCiB9CiAKIF9naXRfYXJjaGl2ZSAoKQpAQCAtODM0LDcgKzk0Nyw2IEBACiAJCV9fZ2l0Y29tcF9ubCAiJChfX2dpdF9yZWZzKSIKIAkJOzsKIAkqKQotCQlDT01QUkVQTFk9KCkKIAkJOzsKIAllc2FjCiB9CkBAIC05MjcsOSArMTAzOSwxNCBAQAogCiBfZ2l0X2NoZXJyeV9waWNrICgpCiB7CisJbG9jYWwgZGlyPSIkKF9fZ2l0ZGlyKSIKKwlpZiBbIC1mICIkZGlyIi9DSEVSUllfUElDS19IRUFEIF07IHRoZW4KKwkJX19naXRjb21wICItLWNvbnRpbnVlIC0tcXVpdCAtLWFib3J0IgorCQlyZXR1cm4KKwlmaQogCWNhc2UgIiRjdXIiIGluCiAJLS0qKQotCQlfX2dpdGNvbXAgIi0tZWRpdCAtLW5vLWNvbW1pdCIKKwkJX19naXRjb21wICItLWVkaXQgLS1uby1jb21taXQgLS1zaWdub2ZmIC0tc3RyYXRlZ3k9IC0tbWFpbmxpbmUiCiAJCTs7CiAJKikKIAkJX19naXRjb21wX25sICIkKF9fZ2l0X3JlZnMpIgpAQCAtOTM5LDE1ICsxMDU2LDE1IEBACiAKIF9naXRfY2xlYW4gKCkKIHsKLQlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KLQogCWNhc2UgIiRjdXIiIGluCiAJLS0qKQogCQlfX2dpdGNvbXAgIi0tZHJ5LXJ1biAtLXF1aWV0IgogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwkjIFhYWCBzaG91bGQgd2UgY2hlY2sgZm9yIC14IG9wdGlvbiA/CisJX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSAiLS1vdGhlcnMiCiB9CiAKIF9naXRfY2xvbmUgKCkKQEAgLTk3MywxMyArMTA5MCwxMCBAQAogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCiB9CiAKIF9naXRfY29tbWl0ICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCi0KIAljYXNlICIkcHJldiIgaW4KIAktY3wtQykKIAkJX19naXRjb21wX25sICIkKF9fZ2l0X3JlZnMpIiAiIiAiJHtjdXJ9IgpAQCAtMTAxNCw3ICsxMTI4LDEzIEBACiAJCQkiCiAJCXJldHVybgogCWVzYWMKLQlDT01QUkVQTFk9KCkKKworCWlmIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1xdWlldCBIRUFEID4vZGV2L251bGw7IHRoZW4KKwkJX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSAiLS1jb21taXR0YWJsZSIKKwllbHNlCisJCSMgVGhpcyBpcyB0aGUgZmlyc3QgY29tbWl0CisJCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tY2FjaGVkIgorCWZpCiB9CiAKIF9naXRfZGVzY3JpYmUgKCkKQEAgLTEwMzAsNiArMTE1MCw4IEBACiAJX19naXRjb21wX25sICIkKF9fZ2l0X3JlZnMpIgogfQogCitfX2dpdF9kaWZmX2FsZ29yaXRobXM9Im15ZXJzIG1pbmltYWwgcGF0aWVuY2UgaGlzdG9ncmFtIgorCiBfX2dpdF9kaWZmX2NvbW1vbl9vcHRpb25zPSItLXN0YXQgLS1udW1zdGF0IC0tc2hvcnRzdGF0IC0tc3VtbWFyeQogCQkJLS1wYXRjaC13aXRoLXN0YXQgLS1uYW1lLW9ubHkgLS1uYW1lLXN0YXR1cyAtLWNvbG9yCiAJCQktLW5vLWNvbG9yIC0tY29sb3Itd29yZHMgLS1uby1yZW5hbWVzIC0tY2hlY2sKQEAgLTEwNDAsMTAgKzExNjIsMTEgQEAKIAkJCS0tbm8tZXh0LWRpZmYKIAkJCS0tbm8tcHJlZml4IC0tc3JjLXByZWZpeD0gLS1kc3QtcHJlZml4PQogCQkJLS1pbnRlci1odW5rLWNvbnRleHQ9Ci0JCQktLXBhdGllbmNlCi0JCQktLXJhdworCQkJLS1wYXRpZW5jZSAtLWhpc3RvZ3JhbSAtLW1pbmltYWwKKwkJCS0tcmF3IC0td29yZC1kaWZmCiAJCQktLWRpcnN0YXQgLS1kaXJzdGF0PSAtLWRpcnN0YXQtYnktZmlsZQogCQkJLS1kaXJzdGF0LWJ5LWZpbGU9IC0tY3VtdWxhdGl2ZQorCQkJLS1kaWZmLWFsZ29yaXRobT0KICIKIAogX2dpdF9kaWZmICgpCkBAIC0xMDUxLDYgKzExNzQsMTAgQEAKIAlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KIAogCWNhc2UgIiRjdXIiIGluCisJLS1kaWZmLWFsZ29yaXRobT0qKQorCQlfX2dpdGNvbXAgIiRfX2dpdF9kaWZmX2FsZ29yaXRobXMiICIiICIke2N1ciMjLS1kaWZmLWFsZ29yaXRobT19IgorCQlyZXR1cm4KKwkJOzsKIAktLSopCiAJCV9fZ2l0Y29tcCAiLS1jYWNoZWQgLS1zdGFnZWQgLS1waWNrYXhlLWFsbCAtLXBpY2theGUtcmVnZXgKIAkJCS0tYmFzZSAtLW91cnMgLS10aGVpcnMgLS1uby1pbmRleApAQCAtMTA4NCw3ICsxMjExLDcgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCV9fZ2l0X2NvbXBsZXRlX2ZpbGUKKwlfX2dpdF9jb21wbGV0ZV9yZXZsaXN0X2ZpbGUKIH0KIAogX19naXRfZmV0Y2hfb3B0aW9ucz0iCkBAIC0xMTA0LDExICsxMjMxLDEyIEBACiB9CiAKIF9fZ2l0X2Zvcm1hdF9wYXRjaF9vcHRpb25zPSIKLQktLXN0ZG91dCAtLWF0dGFjaCAtLW5vLWF0dGFjaCAtLXRocmVhZCAtLXRocmVhZD0gLS1vdXRwdXQtZGlyZWN0b3J5CisJLS1zdGRvdXQgLS1hdHRhY2ggLS1uby1hdHRhY2ggLS10aHJlYWQgLS10aHJlYWQ9IC0tbm8tdGhyZWFkCiAJLS1udW1iZXJlZCAtLXN0YXJ0LW51bWJlciAtLW51bWJlcmVkLWZpbGVzIC0ta2VlcC1zdWJqZWN0IC0tc2lnbm9mZgogCS0tc2lnbmF0dXJlIC0tbm8tc2lnbmF0dXJlIC0taW4tcmVwbHktdG89IC0tY2M9IC0tZnVsbC1pbmRleCAtLWJpbmFyeQogCS0tbm90IC0tYWxsIC0tY292ZXItbGV0dGVyIC0tbm8tcHJlZml4IC0tc3JjLXByZWZpeD0gLS1kc3QtcHJlZml4PQogCS0taW5saW5lIC0tc3VmZml4PSAtLWlnbm9yZS1pZi1pbi11cHN0cmVhbSAtLXN1YmplY3QtcHJlZml4PQorCS0tb3V0cHV0LWRpcmVjdG9yeSAtLXJlcm9sbC1jb3VudCAtLXRvPSAtLXF1aWV0IC0tbm90ZXMKICIKIAogX2dpdF9mb3JtYXRfcGF0Y2ggKCkKQEAgLTExMzksNyArMTI2Nyw2IEBACiAJCXJldHVybgogCQk7OwogCWVzYWMKLQlDT01QUkVQTFk9KCkKIH0KIAogX2dpdF9nYyAoKQpAQCAtMTE1MCw3ICsxMjc3LDYgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQogfQogCiBfZ2l0X2dpdGsgKCkKQEAgLTEyMjcsMTMgKzEzNTMsMTAgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQogfQogCiBfZ2l0X2xzX2ZpbGVzICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCi0KIAljYXNlICIkY3VyIiBpbgogCS0tKikKIAkJX19naXRjb21wICItLWNhY2hlZCAtLWRlbGV0ZWQgLS1tb2RpZmllZCAtLW90aGVycyAtLWlnbm9yZWQKQEAgLTEyNDYsNyArMTM2OSwxMCBAQAogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwkjIFhYWCBpZ25vcmUgb3B0aW9ucyBsaWtlIC0tbW9kaWZpZWQgYW5kIGFsd2F5cyBzdWdnZXN0IGFsbCBjYWNoZWQKKwkjIGZpbGVzLgorCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tY2FjaGVkIgogfQogCiBfZ2l0X2xzX3JlbW90ZSAoKQpAQCAtMTM2Miw3ICsxNDg4LDYgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCUNPTVBSRVBMWT0oKQogfQogCiBfZ2l0X21lcmdlX2Jhc2UgKCkKQEAgLTEzNzgsNyArMTUwMywxNCBAQAogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwlpZiBbICQoX19naXRfY291bnRfYXJndW1lbnRzICJtdiIpIC1ndCAwIF07IHRoZW4KKwkJIyBXZSBuZWVkIHRvIHNob3cgYm90aCBjYWNoZWQgYW5kIHVudHJhY2tlZCBmaWxlcyAoaW5jbHVkaW5nCisJCSMgZW1wdHkgZGlyZWN0b3JpZXMpIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgbGFzdCBhcmd1bWVudC4KKwkJX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSAiLS1jYWNoZWQgLS1vdGhlcnMgLS1kaXJlY3RvcnkiCisJZWxzZQorCQlfX2dpdF9jb21wbGV0ZV9pbmRleF9maWxlICItLWNhY2hlZCIKKwlmaQogfQogCiBfZ2l0X25hbWVfcmV2ICgpCkBAIC0xNTY5LDcgKzE3MDEsNyBAQAogCXdoaWxlIFsgJGMgLWd0IDEgXTsgZG8KIAkJd29yZD0iJHt3b3Jkc1tjXX0iCiAJCWNhc2UgIiR3b3JkIiBpbgotCQktLWdsb2JhbHwtLXN5c3RlbXwtLWZpbGU9KikKKwkJLS1zeXN0ZW18LS1nbG9iYWx8LS1sb2NhbHwtLWZpbGU9KikKIAkJCWNvbmZpZ19maWxlPSIkd29yZCIKIAkJCWJyZWFrCiAJCQk7OwpAQCAtMTU5Niw3ICsxNzI4LDcgQEAKIF9naXRfY29uZmlnICgpCiB7CiAJY2FzZSAiJHByZXYiIGluCi0JYnJhbmNoLioucmVtb3RlKQorCWJyYW5jaC4qLnJlbW90ZXxicmFuY2guKi5wdXNocmVtb3RlKQogCQlfX2dpdGNvbXBfbmwgIiQoX19naXRfcmVtb3RlcykiCiAJCXJldHVybgogCQk7OwpAQCAtMTYwNCwxMSArMTczNiwxOSBAQAogCQlfX2dpdGNvbXBfbmwgIiQoX19naXRfcmVmcykiCiAJCXJldHVybgogCQk7OworCWJyYW5jaC4qLnJlYmFzZSkKKwkJX19naXRjb21wICJmYWxzZSB0cnVlIgorCQlyZXR1cm4KKwkJOzsKKwlyZW1vdGUucHVzaGRlZmF1bHQpCisJCV9fZ2l0Y29tcF9ubCAiJChfX2dpdF9yZW1vdGVzKSIKKwkJcmV0dXJuCisJCTs7CiAJcmVtb3RlLiouZmV0Y2gpCiAJCWxvY2FsIHJlbW90ZT0iJHtwcmV2I3JlbW90ZS59IgogCQlyZW1vdGU9IiR7cmVtb3RlJS5mZXRjaH0iCiAJCWlmIFsgLXogIiRjdXIiIF07IHRoZW4KLQkJCUNPTVBSRVBMWT0oInJlZnMvaGVhZHMvIikKKwkJCV9fZ2l0Y29tcF9ubCAicmVmcy9oZWFkcy8iICIiICIiICIiCiAJCQlyZXR1cm4KIAkJZmkKIAkJX19naXRjb21wX25sICIkKF9fZ2l0X3JlZnNfcmVtb3RlcyAiJHJlbW90ZSIpIgpAQCAtMTY0Myw2ICsxNzgzLDEwIEBACiAJCQkiCiAJCXJldHVybgogCQk7OworCWRpZmYuc3VibW9kdWxlKQorCQlfX2dpdGNvbXAgImxvZyBzaG9ydCIKKwkJcmV0dXJuCisJCTs7CiAJaGVscC5mb3JtYXQpCiAJCV9fZ2l0Y29tcCAibWFuIGluZm8gd2ViIGh0bWwiCiAJCXJldHVybgpAQCAtMTY2OCwxNCArMTgxMiwxMyBAQAogCQlyZXR1cm4KIAkJOzsKIAkqLiopCi0JCUNPTVBSRVBMWT0oKQogCQlyZXR1cm4KIAkJOzsKIAllc2FjCiAJY2FzZSAiJGN1ciIgaW4KIAktLSopCiAJCV9fZ2l0Y29tcCAiCi0JCQktLWdsb2JhbCAtLXN5c3RlbSAtLWZpbGU9CisJCQktLXN5c3RlbSAtLWdsb2JhbCAtLWxvY2FsIC0tZmlsZT0KIAkJCS0tbGlzdCAtLXJlcGxhY2UtYWxsCiAJCQktLWdldCAtLWdldC1hbGwgLS1nZXQtcmVnZXhwCiAJCQktLWFkZCAtLXVuc2V0IC0tdW5zZXQtYWxsCkBAIC0xNjg1LDcgKzE4MjgsNyBAQAogCQk7OwogCWJyYW5jaC4qLiopCiAJCWxvY2FsIHBmeD0iJHtjdXIlLip9LiIgY3VyXz0iJHtjdXIjIyoufSIKLQkJX19naXRjb21wICJyZW1vdGUgbWVyZ2UgbWVyZ2VvcHRpb25zIHJlYmFzZSIgIiRwZngiICIkY3VyXyIKKwkJX19naXRjb21wICJyZW1vdGUgcHVzaHJlbW90ZSBtZXJnZSBtZXJnZW9wdGlvbnMgcmViYXNlIiAiJHBmeCIgIiRjdXJfIgogCQlyZXR1cm4KIAkJOzsKIAlicmFuY2guKikKQEAgLTE4MzgsMTYgKzE5ODEsMTggQEAKIAkJY29yZS53aGl0ZXNwYWNlCiAJCWNvcmUud29ya3RyZWUKIAkJZGlmZi5hdXRvcmVmcmVzaGluZGV4Ci0JCWRpZmYuc3RhdEdyYXBoV2lkdGgKIAkJZGlmZi5leHRlcm5hbAogCQlkaWZmLmlnbm9yZVN1Ym1vZHVsZXMKIAkJZGlmZi5tbmVtb25pY3ByZWZpeAogCQlkaWZmLm5vcHJlZml4CiAJCWRpZmYucmVuYW1lTGltaXQKIAkJZGlmZi5yZW5hbWVzCisJCWRpZmYuc3RhdEdyYXBoV2lkdGgKKwkJZGlmZi5zdWJtb2R1bGUKIAkJZGlmZi5zdXBwcmVzc0JsYW5rRW1wdHkKIAkJZGlmZi50b29sCiAJCWRpZmYud29yZFJlZ2V4CisJCWRpZmYuYWxnb3JpdGhtCiAJCWRpZmZ0b29sLgogCQlkaWZmdG9vbC5wcm9tcHQKIAkJZmV0Y2gucmVjdXJzZVN1Ym1vZHVsZXMKQEAgLTE5NzgsNiArMjEyMyw3IEBACiAJCXJlY2VpdmUuZnNja09iamVjdHMKIAkJcmVjZWl2ZS51bnBhY2tMaW1pdAogCQlyZWNlaXZlLnVwZGF0ZXNlcnZlcmluZm8KKwkJcmVtb3RlLnB1c2hkZWZhdWx0CiAJCXJlbW90ZXMuCiAJCXJlcGFjay51c2VkZWx0YWJhc2VvZmZzZXQKIAkJcmVyZXJlLmF1dG91cGRhdGUKQEAgLTIwNDgsNyArMjE5NCw2IEBACiAJCV9fZ2l0Y29tcCAiJGMiCiAJCTs7CiAJKikKLQkJQ09NUFJFUExZPSgpCiAJCTs7CiAJZXNhYwogfQpAQCAtMjA4NCwxNSArMjIyOSwxNCBAQAogCiBfZ2l0X3JtICgpCiB7Ci0JX19naXRfaGFzX2RvdWJsZWRhc2ggJiYgcmV0dXJuCi0KIAljYXNlICIkY3VyIiBpbgogCS0tKikKIAkJX19naXRjb21wICItLWNhY2hlZCAtLWRyeS1ydW4gLS1pZ25vcmUtdW5tYXRjaCAtLXF1aWV0IgogCQlyZXR1cm4KIAkJOzsKIAllc2FjCi0JQ09NUFJFUExZPSgpCisKKwlfX2dpdF9jb21wbGV0ZV9pbmRleF9maWxlICItLWNhY2hlZCIKIH0KIAogX2dpdF9zaG9ydGxvZyAoKQpAQCAtMjEyMiw2ICsyMjY2LDEwIEBACiAJCQkiICIiICIke2N1ciMqPX0iCiAJCXJldHVybgogCQk7OworCS0tZGlmZi1hbGdvcml0aG09KikKKwkJX19naXRjb21wICIkX19naXRfZGlmZl9hbGdvcml0aG1zIiAiIiAiJHtjdXIjIy0tZGlmZi1hbGdvcml0aG09fSIKKwkJcmV0dXJuCisJCTs7CiAJLS0qKQogCQlfX2dpdGNvbXAgIi0tcHJldHR5PSAtLWZvcm1hdD0gLS1hYmJyZXYtY29tbWl0IC0tb25lbGluZQogCQkJJF9fZ2l0X2RpZmZfY29tbW9uX29wdGlvbnMKQEAgLTIxMjksNyArMjI3Nyw3IEBACiAJCXJldHVybgogCQk7OwogCWVzYWMKLQlfX2dpdF9jb21wbGV0ZV9maWxlCisJX19naXRfY29tcGxldGVfcmV2bGlzdF9maWxlCiB9CiAKIF9naXRfc2hvd19icmFuY2ggKCkKQEAgLTIxNjEsOCArMjMwOSw2IEBACiAJCSopCiAJCQlpZiBbIC16ICIkKF9fZ2l0X2ZpbmRfb25fY21kbGluZSAiJHNhdmVfb3B0cyIpIiBdOyB0aGVuCiAJCQkJX19naXRjb21wICIkc3ViY29tbWFuZHMiCi0JCQllbHNlCi0JCQkJQ09NUFJFUExZPSgpCiAJCQlmaQogCQkJOzsKIAkJZXNhYwpAQCAtMjE3NSwxNCArMjMyMSwxMiBAQAogCQkJX19naXRjb21wICItLWluZGV4IC0tcXVpZXQiCiAJCQk7OwogCQlzaG93LC0tKnxkcm9wLC0tKnxicmFuY2gsLS0qKQotCQkJQ09NUFJFUExZPSgpCiAJCQk7OwogCQlzaG93LCp8YXBwbHksKnxkcm9wLCp8cG9wLCp8YnJhbmNoLCopCiAJCQlfX2dpdGNvbXBfbmwgIiQoZ2l0IC0tZ2l0LWRpcj0iJChfX2dpdGRpcikiIHN0YXNoIGxpc3QgXAogCQkJCQl8IHNlZCAtbiAtZSAncy86LiovL3AnKSIKIAkJCTs7CiAJCSopCi0JCQlDT01QUkVQTFk9KCkKIAkJCTs7CiAJCWVzYWMKIAlmaQpAQCAtMjE5Miw3ICsyMzM2LDcgQEAKIHsKIAlfX2dpdF9oYXNfZG91YmxlZGFzaCAmJiByZXR1cm4KIAotCWxvY2FsIHN1YmNvbW1hbmRzPSJhZGQgc3RhdHVzIGluaXQgdXBkYXRlIHN1bW1hcnkgZm9yZWFjaCBzeW5jIgorCWxvY2FsIHN1YmNvbW1hbmRzPSJhZGQgc3RhdHVzIGluaXQgZGVpbml0IHVwZGF0ZSBzdW1tYXJ5IGZvcmVhY2ggc3luYyIKIAlpZiBbIC16ICIkKF9fZ2l0X2ZpbmRfb25fY21kbGluZSAiJHN1YmNvbW1hbmRzIikiIF07IHRoZW4KIAkJY2FzZSAiJGN1ciIgaW4KIAkJLS0qKQpAQCAtMjIyNCw3ICsyMzY4LDcgQEAKIAkJCS0tbm8tbWV0YWRhdGEgLS11c2Utc3ZtLXByb3BzIC0tdXNlLXN2bnN5bmMtcHJvcHMKIAkJCS0tbG9nLXdpbmRvdy1zaXplPSAtLW5vLWNoZWNrb3V0IC0tcXVpZXQKIAkJCS0tcmVwYWNrLWZsYWdzIC0tdXNlLWxvZy1hdXRob3IgLS1sb2NhbHRpbWUKLQkJCS0taWdub3JlLXBhdGhzPSAkcmVtb3RlX29wdHMKKwkJCS0taWdub3JlLXBhdGhzPSAtLWluY2x1ZGUtcGF0aHM9ICRyZW1vdGVfb3B0cwogCQkJIgogCQlsb2NhbCBpbml0X29wdHM9IgogCQkJLS10ZW1wbGF0ZT0gLS1zaGFyZWQ9IC0tdHJ1bms9IC0tdGFncz0KQEAgLTIyOTksNyArMjQ0Myw2IEBACiAJCQlfX2dpdGNvbXAgIi0tcmV2aXNpb249IC0tcGFyZW50IgogCQkJOzsKIAkJKikKLQkJCUNPTVBSRVBMWT0oKQogCQkJOzsKIAkJZXNhYwogCWZpCkBAIC0yMzI0LDEzICsyNDY3LDEwIEBACiAKIAljYXNlICIkcHJldiIgaW4KIAktbXwtRikKLQkJQ09NUFJFUExZPSgpCiAJCTs7CiAJLSp8dGFnKQogCQlpZiBbICRmID0gMSBdOyB0aGVuCiAJCQlfX2dpdGNvbXBfbmwgIiQoX19naXRfdGFncykiCi0JCWVsc2UKLQkJCUNPTVBSRVBMWT0oKQogCQlmaQogCQk7OwogCSopCkBAIC0yNDQwLDcgKzI1ODAsNyBAQAogCQkJCS0tKj0qfCouKSA7OwogCQkJCSopIGM9IiRjICIgOzsKIAkJCQllc2FjCi0JCQkJYXJyYXlbJCNhcnJheSsxXT0iJGMiCisJCQkJYXJyYXkrPSgiJGMiKQogCQkJZG9uZQogCQkJY29tcHNldCAtUCAnKls9Ol0nCiAJCQljb21wYWRkIC1RIC1TICcnIC1wICIkezItfSIgLWEgLS0gYXJyYXkgJiYgX3JldD0wCkBAIC0yNDU3LDIyICsyNTk3LDIzIEBACiAJCWNvbXBhZGQgLVEgLVMgIiR7NC0gfSIgLXAgIiR7Mi19IiAtLSAkez0xfSAmJiBfcmV0PTAKIAl9CiAKLQlfX2dpdF96c2hfaGVscGVyICgpCisJX19naXRjb21wX2ZpbGUgKCkKIAl7Ci0JCWVtdWxhdGUgLUwga3NoCi0JCWxvY2FsIGN1ciBjd29yZCBwcmV2Ci0JCWN1cj0ke3dvcmRzW0NVUlJFTlQtMV19Ci0JCXByZXY9JHt3b3Jkc1tDVVJSRU5ULTJdfQotCQlsZXQgY3dvcmQ9Q1VSUkVOVC0xCi0JCV9fJHtzZXJ2aWNlfV9tYWluCisJCWVtdWxhdGUgLUwgenNoCisKKwkJbG9jYWwgSUZTPSQnXG4nCisJCWNvbXBzZXQgLVAgJypbPTpdJworCQljb21wYWRkIC1RIC1wICIkezItfSIgLWYgLS0gJHs9MX0gJiYgX3JldD0wCiAJfQogCiAJX2dpdCAoKQogCXsKLQkJZW11bGF0ZSAtTCB6c2gKLQkJbG9jYWwgX3JldD0xCi0JCV9fZ2l0X3pzaF9oZWxwZXIKLQkJbGV0IF9yZXQgJiYgX2RlZmF1bHQgLVMgJycgJiYgX3JldD0wCisJCWxvY2FsIF9yZXQ9MSBjdXIgY3dvcmQgcHJldgorCQljdXI9JHt3b3Jkc1tDVVJSRU5UXX0KKwkJcHJldj0ke3dvcmRzW0NVUlJFTlQtMV19CisJCWxldCBjd29yZD1DVVJSRU5ULTEKKwkJZW11bGF0ZSBrc2ggLWMgX18ke3NlcnZpY2V9X21haW4KKwkJbGV0IF9yZXQgJiYgX2RlZmF1bHQgJiYgX3JldD0wCiAJCXJldHVybiBfcmV0CiAJfQogCmRpZmYgLS1naXQgYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24udGNzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi50Y3NoCmluZGV4IDNlMzg4OWYuLmVhYWNhZjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi50Y3NoCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi50Y3NoCkBAIC01Miw2ICs1MiwxOCBAQAogCiBzb3VyY2UgJHtfX2dpdF90Y3NoX2NvbXBsZXRpb25fb3JpZ2luYWxfc2NyaXB0fQogCisjIFJlbW92ZSB0aGUgY29sb24gYXMgYSBjb21wbGV0aW9uIHNlcGFyYXRvciBiZWNhdXNlIHRjc2ggY2Fubm90IGhhbmRsZSBpdAorQ09NUF9XT1JEQlJFQUtTPVwke0NPTVBfV09SREJSRUFLUy8vOn0KKworIyBGb3IgZmlsZSBjb21wbGV0aW9uLCB0Y3NoIG5lZWRzIHRoZSAnLycgdG8gYmUgYXBwZW5kZWQgdG8gZGlyZWN0b3JpZXMuCisjIEJ5IGRlZmF1bHQsIHRoZSBiYXNoIHNjcmlwdCBkb2VzIG5vdCBkbyB0aGF0LgorIyBXZSBjYW4gYWNoaWV2ZSB0aGlzIGJ5IHVzaW5nIHRoZSBiZWxvdyBjb21wYXRpYmlsaXR5CisjIG1ldGhvZCBvZiB0aGUgZ2l0LWNvbXBsZXRpb24uYmFzaCBzY3JpcHQuCitfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyICgpCit7CisJX19naXRfaW5kZXhfZmlsZV9saXN0X2ZpbHRlcl9jb21wYXQKK30KKwogIyBTZXQgQ09NUF9XT1JEUyBpbiBhIHdheSB0aGF0IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBiYXNoIHNjcmlwdC4KIENPTVBfV09SRFM9KFwkMikKIApkaWZmIC0tZ2l0IGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLnpzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi56c2gKaW5kZXggNDU3NzUwMi4uZmFjNWU3MSAxMDA2NDQKLS0tIGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLnpzaAorKysgYi9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uenNoCkBAIC0yLDE4ICsyLDE5IEBACiAKICMgenNoIGNvbXBsZXRpb24gd3JhcHBlciBmb3IgZ2l0CiAjCi0jIFlvdSBuZWVkIGdpdCdzIGJhc2ggY29tcGxldGlvbiBzY3JpcHQgaW5zdGFsbGVkIHNvbWV3aGVyZSwgYnkgZGVmYXVsdCBvbiB0aGUKLSMgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcyBzY3JpcHQuCisjIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIEZlbGlwZSBDb250cmVyYXMgPGZlbGlwZS5jb250cmVyYXNAZ21haWwuY29tPgogIwotIyBJZiB5b3VyIHNjcmlwdCBpcyBvbiB+Ly5naXQtY29tcGxldGlvbi5zaCBpbnN0ZWFkLCB5b3UgY2FuIGNvbmZpZ3VyZSBpdCBvbgotIyB5b3VyIH4vLnpzaHJjOgorIyBZb3UgbmVlZCBnaXQncyBiYXNoIGNvbXBsZXRpb24gc2NyaXB0IGluc3RhbGxlZCBzb21ld2hlcmUsIGJ5IGRlZmF1bHQgaXQKKyMgd291bGQgYmUgdGhlIGxvY2F0aW9uIGJhc2gtY29tcGxldGlvbiB1c2VzLgorIworIyBJZiB5b3VyIHNjcmlwdCBpcyBzb21ld2hlcmUgZWxzZSwgeW91IGNhbiBjb25maWd1cmUgaXQgb24geW91ciB+Ly56c2hyYzoKICMKICMgIHpzdHlsZSAnOmNvbXBsZXRpb246KjoqOmdpdDoqJyBzY3JpcHQgfi8uZ2l0LWNvbXBsZXRpb24uc2gKICMKLSMgVGhlIHJlY29tbWVuZGVkIHdheSB0byBpbnN0YWxsIHRoaXMgc2NyaXB0IGlzIHRvIGNvcHkgdG8KLSMgJ34vLnpzaC9jb21wbGV0aW9uL19naXQnLCBhbmQgdGhlbiBhZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyIH4vLnpzaHJjIGZpbGU6CisjIFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zdGFsbCB0aGlzIHNjcmlwdCBpcyB0byBjb3B5IHRvICd+Ly56c2gvX2dpdCcsIGFuZAorIyB0aGVuIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgfi8uenNocmMgZmlsZToKICMKLSMgIGZwYXRoPSh+Ly56c2gvY29tcGxldGlvbiAkZnBhdGgpCisjICBmcGF0aD0ofi8uenNoICRmcGF0aCkKIAogY29tcGxldGUgKCkKIHsKQEAgLTIxLDggKzIyLDIzIEBACiAJcmV0dXJuIDAKIH0KIAorenN0eWxlIC1UICc6Y29tcGxldGlvbjoqOio6Z2l0OionIHRhZy1vcmRlciAmJiBcCisJenN0eWxlICc6Y29tcGxldGlvbjoqOio6Z2l0OionIHRhZy1vcmRlciAnY29tbW9uLWNvbW1hbmRzJworCiB6c3R5bGUgLXMgIjpjb21wbGV0aW9uOio6KjpnaXQ6KiIgc2NyaXB0IHNjcmlwdAotdGVzdCAteiAiJHNjcmlwdCIgJiYgc2NyaXB0PSIkKGRpcm5hbWUgJHtmdW5jc291cmNldHJhY2VbMV0lOip9KSIvZ2l0LWNvbXBsZXRpb24uYmFzaAoraWYgWyAteiAiJHNjcmlwdCIgXTsgdGhlbgorCWxvY2FsIC1hIGxvY2F0aW9ucworCWxvY2FsIGUKKwlsb2NhdGlvbnM9KAorCQknL2V0Yy9iYXNoX2NvbXBsZXRpb24uZC9naXQnICMgZmVkb3JhLCBvbGQgZGViaWFuCisJCScvdXNyL3NoYXJlL2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy9naXQnICMgYXJjaCwgdWJ1bnR1LCBuZXcgZGViaWFuCisJCScvdXNyL3NoYXJlL2Jhc2gtY29tcGxldGlvbi9naXQnICMgZ2VudG9vCisJCSQoZGlybmFtZSAke2Z1bmNzb3VyY2V0cmFjZVsxXSU6Kn0pL2dpdC1jb21wbGV0aW9uLmJhc2gKKwkJKQorCWZvciBlIGluICRsb2NhdGlvbnM7IGRvCisJCXRlc3QgLWYgJGUgJiYgc2NyaXB0PSIkZSIgJiYgYnJlYWsKKwlkb25lCitmaQogWlNIX1ZFUlNJT049JycgLiAiJHNjcmlwdCIKIAogX19naXRjb21wICgpCkBAIC02MCwxOCArNzYsMTQwIEBACiAJY29tcGFkZCAtUSAtUyAiJHs0LSB9IiAtcCAiJHsyLX0iIC0tICR7PTF9ICYmIF9yZXQ9MAogfQogCitfX2dpdGNvbXBfZmlsZSAoKQoreworCWVtdWxhdGUgLUwgenNoCisKKwlsb2NhbCBJRlM9JCdcbicKKwljb21wc2V0IC1QICcqWz06XScKKwljb21wYWRkIC1RIC1wICIkezItfSIgLWYgLS0gJHs9MX0gJiYgX3JldD0wCit9CisKK19fZ2l0X3pzaF9iYXNoX2Z1bmMgKCkKK3sKKwllbXVsYXRlIC1MIGtzaAorCisJbG9jYWwgY29tbWFuZD0kMQorCisJbG9jYWwgY29tcGxldGlvbl9mdW5jPSJfZ2l0XyR7Y29tbWFuZC8vLS9ffSIKKwlkZWNsYXJlIC1mICRjb21wbGV0aW9uX2Z1bmMgPi9kZXYvbnVsbCAmJiAkY29tcGxldGlvbl9mdW5jICYmIHJldHVybgorCisJbG9jYWwgZXhwYW5zaW9uPSQoX19naXRfYWxpYXNlZF9jb21tYW5kICIkY29tbWFuZCIpCisJaWYgWyAtbiAiJGV4cGFuc2lvbiIgXTsgdGhlbgorCQljb21wbGV0aW9uX2Z1bmM9Il9naXRfJHtleHBhbnNpb24vLy0vX30iCisJCWRlY2xhcmUgLWYgJGNvbXBsZXRpb25fZnVuYyA+L2Rldi9udWxsICYmICRjb21wbGV0aW9uX2Z1bmMKKwlmaQorfQorCitfX2dpdF96c2hfY21kX2NvbW1vbiAoKQoreworCWxvY2FsIC1hIGxpc3QKKwlsaXN0PSgKKwlhZGQ6J2FkZCBmaWxlIGNvbnRlbnRzIHRvIHRoZSBpbmRleCcKKwliaXNlY3Q6J2ZpbmQgYnkgYmluYXJ5IHNlYXJjaCB0aGUgY2hhbmdlIHRoYXQgaW50cm9kdWNlZCBhIGJ1ZycKKwlicmFuY2g6J2xpc3QsIGNyZWF0ZSwgb3IgZGVsZXRlIGJyYW5jaGVzJworCWNoZWNrb3V0OidjaGVja291dCBhIGJyYW5jaCBvciBwYXRocyB0byB0aGUgd29ya2luZyB0cmVlJworCWNsb25lOidjbG9uZSBhIHJlcG9zaXRvcnkgaW50byBhIG5ldyBkaXJlY3RvcnknCisJY29tbWl0OidyZWNvcmQgY2hhbmdlcyB0byB0aGUgcmVwb3NpdG9yeScKKwlkaWZmOidzaG93IGNoYW5nZXMgYmV0d2VlbiBjb21taXRzLCBjb21taXQgYW5kIHdvcmtpbmcgdHJlZSwgZXRjJworCWZldGNoOidkb3dubG9hZCBvYmplY3RzIGFuZCByZWZzIGZyb20gYW5vdGhlciByZXBvc2l0b3J5JworCWdyZXA6J3ByaW50IGxpbmVzIG1hdGNoaW5nIGEgcGF0dGVybicKKwlpbml0OidjcmVhdGUgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZScKKwlsb2c6J3Nob3cgY29tbWl0IGxvZ3MnCisJbWVyZ2U6J2pvaW4gdHdvIG9yIG1vcmUgZGV2ZWxvcG1lbnQgaGlzdG9yaWVzIHRvZ2V0aGVyJworCW12Oidtb3ZlIG9yIHJlbmFtZSBhIGZpbGUsIGEgZGlyZWN0b3J5LCBvciBhIHN5bWxpbmsnCisJcHVsbDonZmV0Y2ggZnJvbSBhbmQgbWVyZ2Ugd2l0aCBhbm90aGVyIHJlcG9zaXRvcnkgb3IgYSBsb2NhbCBicmFuY2gnCisJcHVzaDondXBkYXRlIHJlbW90ZSByZWZzIGFsb25nIHdpdGggYXNzb2NpYXRlZCBvYmplY3RzJworCXJlYmFzZTonZm9yd2FyZC1wb3J0IGxvY2FsIGNvbW1pdHMgdG8gdGhlIHVwZGF0ZWQgdXBzdHJlYW0gaGVhZCcKKwlyZXNldDoncmVzZXQgY3VycmVudCBIRUFEIHRvIHRoZSBzcGVjaWZpZWQgc3RhdGUnCisJcm06J3JlbW92ZSBmaWxlcyBmcm9tIHRoZSB3b3JraW5nIHRyZWUgYW5kIGZyb20gdGhlIGluZGV4JworCXNob3c6J3Nob3cgdmFyaW91cyB0eXBlcyBvZiBvYmplY3RzJworCXN0YXR1czonc2hvdyB0aGUgd29ya2luZyB0cmVlIHN0YXR1cycKKwl0YWc6J2NyZWF0ZSwgbGlzdCwgZGVsZXRlIG9yIHZlcmlmeSBhIHRhZyBvYmplY3Qgc2lnbmVkIHdpdGggR1BHJykKKwlfZGVzY3JpYmUgLXQgY29tbW9uLWNvbW1hbmRzICdjb21tb24gY29tbWFuZHMnIGxpc3QgJiYgX3JldD0wCit9CisKK19fZ2l0X3pzaF9jbWRfYWxpYXMgKCkKK3sKKwlsb2NhbCAtYSBsaXN0CisJbGlzdD0oJHskeyR7KDApIiQoZ2l0IGNvbmZpZyAteiAtLWdldC1yZWdleHAgJ15hbGlhc1wuJykifSNhbGlhcy59JSQnXG4nKn0pCisJX2Rlc2NyaWJlIC10IGFsaWFzLWNvbW1hbmRzICdhbGlhc2VzJyBsaXN0ICQqICYmIF9yZXQ9MAorfQorCitfX2dpdF96c2hfY21kX2FsbCAoKQoreworCWxvY2FsIC1hIGxpc3QKKwllbXVsYXRlIGtzaCAtYyBfX2dpdF9jb21wdXRlX2FsbF9jb21tYW5kcworCWxpc3Q9KCAkez1fX2dpdF9hbGxfY29tbWFuZHN9ICkKKwlfZGVzY3JpYmUgLXQgYWxsLWNvbW1hbmRzICdhbGwgY29tbWFuZHMnIGxpc3QgJiYgX3JldD0wCit9CisKK19fZ2l0X3pzaF9tYWluICgpCit7CisJbG9jYWwgY3VyY29udGV4dD0iJGN1cmNvbnRleHQiIHN0YXRlIHN0YXRlX2Rlc2NyIGxpbmUKKwl0eXBlc2V0IC1BIG9wdF9hcmdzCisJbG9jYWwgLWEgb3JpZ193b3JkcworCisJb3JpZ193b3Jkcz0oICR7d29yZHNbQF19ICkKKworCV9hcmd1bWVudHMgLUMgXAorCQknKC1wIC0tcGFnaW5hdGUgLS1uby1wYWdlcikney1wLC0tcGFnaW5hdGV9J1twaXBlIGFsbCBvdXRwdXQgaW50byAnJ2xlc3MnJ10nIFwKKwkJJygtcCAtLXBhZ2luYXRlKS0tbm8tcGFnZXJbZG8gbm90IHBpcGUgZ2l0IG91dHB1dCBpbnRvIGEgcGFnZXJdJyBcCisJCSctLWdpdC1kaXI9LVtzZXQgdGhlIHBhdGggdG8gdGhlIHJlcG9zaXRvcnldOiA6X2RpcmVjdG9yaWVzJyBcCisJCSctLWJhcmVbdHJlYXQgdGhlIHJlcG9zaXRvcnkgYXMgYSBiYXJlIHJlcG9zaXRvcnldJyBcCisJCScoLSA6KS0tdmVyc2lvbltwcmludHMgdGhlIGdpdCBzdWl0ZSB2ZXJzaW9uXScgXAorCQknLS1leGVjLXBhdGg9LVtwYXRoIHRvIHdoZXJlIHlvdXIgY29yZSBnaXQgcHJvZ3JhbXMgYXJlIGluc3RhbGxlZF06OiA6X2RpcmVjdG9yaWVzJyBcCisJCSctLWh0bWwtcGF0aFtwcmludCB0aGUgcGF0aCB3aGVyZSBnaXQnJ3MgSFRNTCBkb2N1bWVudGF0aW9uIGlzIGluc3RhbGxlZF0nIFwKKwkJJy0taW5mby1wYXRoW3ByaW50IHRoZSBwYXRoIHdoZXJlIHRoZSBJbmZvIGZpbGVzIGFyZSBpbnN0YWxsZWRdJyBcCisJCSctLW1hbi1wYXRoW3ByaW50IHRoZSBtYW5wYXRoIChzZWUgYG1hbigxKWApIGZvciB0aGUgbWFuIHBhZ2VzXScgXAorCQknLS13b3JrLXRyZWU9LVtzZXQgdGhlIHBhdGggdG8gdGhlIHdvcmtpbmcgdHJlZV06IDpfZGlyZWN0b3JpZXMnIFwKKwkJJy0tbmFtZXNwYWNlPS1bc2V0IHRoZSBnaXQgbmFtZXNwYWNlXScgXAorCQknLS1uby1yZXBsYWNlLW9iamVjdHNbZG8gbm90IHVzZSByZXBsYWNlbWVudCByZWZzIHRvIHJlcGxhY2UgZ2l0IG9iamVjdHNdJyBcCisJCScoLSA6KS0taGVscFtwcmludHMgdGhlIHN5bm9wc2lzIGFuZCBhIGxpc3Qgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBjb21tYW5kc106IDotPmFyZycgXAorCQknKC0pOiA6LT5jb21tYW5kJyBcCisJCScoLSkqOjogOi0+YXJnJyAmJiByZXR1cm4KKworCWNhc2UgJHN0YXRlIGluCisJKGNvbW1hbmQpCisJCV9hbHRlcm5hdGl2ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzLWNvbW1hbmRzOmFsaWFzOl9fZ2l0X3pzaF9jbWRfYWxpYXMnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnY29tbW9uLWNvbW1hbmRzOmNvbW1vbjpfX2dpdF96c2hfY21kX2NvbW1vbicgXAorICAgICAgICAgICAgICAgICAgICAgICAgICdhbGwtY29tbWFuZHM6YWxsOl9fZ2l0X3pzaF9jbWRfYWxsJyAmJiBfcmV0PTAKKwkJOzsKKwkoYXJnKQorCQlsb2NhbCBjb21tYW5kPSIke3dvcmRzWzFdfSIgX19naXRfZGlyCisKKwkJaWYgKCggJCtvcHRfYXJnc1stLWJhcmVdICkpOyB0aGVuCisJCQlfX2dpdF9kaXI9Jy4nCisJCWVsc2UKKwkJCV9fZ2l0X2Rpcj0ke29wdF9hcmdzWy0tZ2l0LWRpcl19CisJCWZpCisKKwkJKCggJCtvcHRfYXJnc1stLWhlbHBdICkpICYmIGNvbW1hbmQ9J2hlbHAnCisKKwkJd29yZHM9KCAke29yaWdfd29yZHNbQF19ICkKKworCQlfX2dpdF96c2hfYmFzaF9mdW5jICRjb21tYW5kCisJCTs7CisJZXNhYworfQorCiBfZ2l0ICgpCiB7CiAJbG9jYWwgX3JldD0xCi0JKCkgewotCQllbXVsYXRlIC1MIGtzaAotCQlsb2NhbCBjdXIgY3dvcmQgcHJldgotCQljdXI9JHt3b3Jkc1tDVVJSRU5ULTFdfQotCQlwcmV2PSR7d29yZHNbQ1VSUkVOVC0yXX0KLQkJbGV0IGN3b3JkPUNVUlJFTlQtMQotCQlfXyR7c2VydmljZX1fbWFpbgotCX0KLQlsZXQgX3JldCAmJiBfZGVmYXVsdCAtUyAnJyAmJiBfcmV0PTAKKwlsb2NhbCBjdXIgY3dvcmQgcHJldgorCisJY3VyPSR7d29yZHNbQ1VSUkVOVF19CisJcHJldj0ke3dvcmRzW0NVUlJFTlQtMV19CisJbGV0IGN3b3JkPUNVUlJFTlQtMQorCisJaWYgKCggJCtmdW5jdGlvbnNbX18ke3NlcnZpY2V9X3pzaF9tYWluXSApKTsgdGhlbgorCQlfXyR7c2VydmljZX1fenNoX21haW4KKwllbHNlCisJCWVtdWxhdGUga3NoIC1jIF9fJHtzZXJ2aWNlfV9tYWluCisJZmkKKworCWxldCBfcmV0ICYmIF9kZWZhdWx0ICYmIF9yZXQ9MAogCXJldHVybiBfcmV0CiB9CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtcHJvbXB0LnNoIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKaW5kZXggOWJlZjA1My4uMDdhNjIxOCAxMDA2NDQKLS0tIGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKKysrIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKQEAgLTIwLDcgKzIwLDggQEAKICMgICAgICAgIDxwb3N0Piwgd2hpY2ggYXJlIHN0cmluZ3MgeW91IHdvdWxkIHB1dCBpbiAkUFMxIGJlZm9yZQogIyAgICAgICAgYW5kIGFmdGVyIHRoZSBzdGF0dXMgc3RyaW5nIGdlbmVyYXRlZCBieSB0aGUgZ2l0LXByb21wdAogIyAgICAgICAgbWFjaGluZXJ5LiAgZS5nLgotIyAgICAgICAgICAgUFJPTVBUX0NPTU1BTkQ9J19fZ2l0X3BzMSAiXHVAXGg6XHciICJcXFwkICInCisjICAgICAgICBCYXNoOiBQUk9NUFRfQ09NTUFORD0nX19naXRfcHMxICJcdUBcaDpcdyIgIlxcXCQgIicKKyMgICAgICAgIFpTSDogIHByZWNtZCAoKSB7IF9fZ2l0X3BzMSAiJW4iICI6JX4kICIgInwlcyIgfQogIyAgICAgICAgd2lsbCBzaG93IHVzZXJuYW1lLCBhdC1zaWduLCBob3N0LCBjb2xvbiwgY3dkLCB0aGVuCiAjICAgICAgICB2YXJpb3VzIHN0YXR1cyBzdHJpbmcsIGZvbGxvd2VkIGJ5IGRvbGxhciBhbmQgU1AsIGFzCiAjICAgICAgICB5b3VyIHByb21wdC4KQEAgLTQzLDcgKzQ0LDEwIEBACiAjCiAjIElmIHlvdSB3b3VsZCBsaWtlIHRvIHNlZSBpZiB0aGVyZSdyZSB1bnRyYWNrZWQgZmlsZXMsIHRoZW4geW91IGNhbiBzZXQKICMgR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVMgdG8gYSBub25lbXB0eSB2YWx1ZS4gSWYgdGhlcmUncmUgdW50cmFja2VkCi0jIGZpbGVzLCB0aGVuIGEgJyUnIHdpbGwgYmUgc2hvd24gbmV4dCB0byB0aGUgYnJhbmNoIG5hbWUuCisjIGZpbGVzLCB0aGVuIGEgJyUnIHdpbGwgYmUgc2hvd24gbmV4dCB0byB0aGUgYnJhbmNoIG5hbWUuICBZb3UgY2FuCisjIGNvbmZpZ3VyZSB0aGlzIHBlci1yZXBvc2l0b3J5IHdpdGggdGhlIGJhc2guc2hvd1VudHJhY2tlZEZpbGVzCisjIHZhcmlhYmxlLCB3aGljaCBkZWZhdWx0cyB0byB0cnVlIG9uY2UgR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVMgaXMKKyMgZW5hYmxlZC4KICMKICMgSWYgeW91IHdvdWxkIGxpa2UgdG8gc2VlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gSEVBRCBhbmQgaXRzIHVwc3RyZWFtLAogIyBzZXQgR0lUX1BTMV9TSE9XVVBTVFJFQU09ImF1dG8iLiAgQSAiPCIgaW5kaWNhdGVzIHlvdSBhcmUgYmVoaW5kLCAiPiIKQEAgLTEyMSw3ICsxMjUsNyBAQAogCQkJZmkKIAkJCTs7CiAJCXN2bi1yZW1vdGUuKi51cmwpCi0JCQlzdm5fcmVtb3RlWyAkKCgkeyNzdm5fcmVtb3RlW0BdfSArIDEpKSBdPSIkdmFsdWUiCisJCQlzdm5fcmVtb3RlWyQoKCR7I3N2bl9yZW1vdGVbQF19ICsgMSkpXT0iJHZhbHVlIgogCQkJc3ZuX3VybF9wYXR0ZXJuKz0iXFx8JHZhbHVlIgogCQkJdXBzdHJlYW09c3ZuK2dpdCAjIGRlZmF1bHQgdXBzdHJlYW0gaXMgU1ZOIGlmIGF2YWlsYWJsZSwgZWxzZSBnaXQKIAkJCTs7CkBAIC0xNDMsMTAgKzE0NywxMSBAQAogCXN2biopCiAJCSMgZ2V0IHRoZSB1cHN0cmVhbSBmcm9tIHRoZSAiZ2l0LXN2bi1pZDogLi4uIiBpbiBhIGNvbW1pdCBtZXNzYWdlCiAJCSMgKGdpdC1zdm4gdXNlcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBwcm9jZWR1cmUgaW50ZXJuYWxseSkKLQkJbG9jYWwgc3ZuX3Vwc3RyZWFtPSgkKGdpdCBsb2cgLS1maXJzdC1wYXJlbnQgLTEgXAorCQlsb2NhbCAtYSBzdm5fdXBzdHJlYW0KKwkJc3ZuX3Vwc3RyZWFtPSgkKGdpdCBsb2cgLS1maXJzdC1wYXJlbnQgLTEgXAogCQkJCQktLWdyZXA9Il5naXQtc3ZuLWlkOiBcKCR7c3ZuX3VybF9wYXR0ZXJuIz8/fVwpIiAyPi9kZXYvbnVsbCkpCiAJCWlmIFtbIDAgLW5lICR7I3N2bl91cHN0cmVhbVtAXX0gXV07IHRoZW4KLQkJCXN2bl91cHN0cmVhbT0ke3N2bl91cHN0cmVhbVsgJHsjc3ZuX3Vwc3RyZWFtW0BdfSAtIDIgXX0KKwkJCXN2bl91cHN0cmVhbT0ke3N2bl91cHN0cmVhbVskeyNzdm5fdXBzdHJlYW1bQF19IC0gMl19CiAJCQlzdm5fdXBzdHJlYW09JHtzdm5fdXBzdHJlYW0lQCp9CiAJCQlsb2NhbCBuX3N0b3A9IiR7I3N2bl9yZW1vdGVbQF19IgogCQkJZm9yICgobj0xOyBuIDw9IG5fc3RvcDsgbisrKSk7IGRvCkBAIC0yMTksNiArMjI0LDg1IEBACiAKIH0KIAorIyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBpcyBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBfX2dpdF9wczEuICBJdAorIyBidWlsZHMgdXAgYSBnaXRzdHJpbmcgaW5qZWN0aW5nIGNvbG9yIGNvZGVzIGludG8gdGhlIGFwcHJvcHJpYXRlCisjIHBsYWNlcy4KK19fZ2l0X3BzMV9jb2xvcml6ZV9naXRzdHJpbmcgKCkKK3sKKwlpZiBbWyAtbiAke1pTSF9WRVJTSU9OLX0gXV07IHRoZW4KKwkJbG9jYWwgY19yZWQ9JyVGe3JlZH0nCisJCWxvY2FsIGNfZ3JlZW49JyVGe2dyZWVufScKKwkJbG9jYWwgY19sYmx1ZT0nJUZ7Ymx1ZX0nCisJCWxvY2FsIGNfY2xlYXI9JyVmJworCQlsb2NhbCBiYWRfY29sb3I9JGNfcmVkCisJCWxvY2FsIG9rX2NvbG9yPSRjX2dyZWVuCisJCWxvY2FsIGJyYW5jaF9jb2xvcj0iJGNfY2xlYXIiCisJCWxvY2FsIGZsYWdzX2NvbG9yPSIkY19sYmx1ZSIKKwkJbG9jYWwgYnJhbmNoc3RyaW5nPSIkYyR7YiMjcmVmcy9oZWFkcy99IgorCisJCWlmIFsgJGRldGFjaGVkID0gbm8gXTsgdGhlbgorCQkJYnJhbmNoX2NvbG9yPSIkb2tfY29sb3IiCisJCWVsc2UKKwkJCWJyYW5jaF9jb2xvcj0iJGJhZF9jb2xvciIKKwkJZmkKKworCQlnaXRzdHJpbmc9IiRicmFuY2hfY29sb3IkYnJhbmNoc3RyaW5nJGNfY2xlYXIiCisKKwkJaWYgWyAtbiAiJHckaSRzJHUkciRwIiBdOyB0aGVuCisJCQlnaXRzdHJpbmc9IiRnaXRzdHJpbmckeiIKKwkJZmkKKwkJaWYgWyAiJHciID0gIioiIF07IHRoZW4KKwkJCWdpdHN0cmluZz0iJGdpdHN0cmluZyRiYWRfY29sb3IkdyIKKwkJZmkKKwkJaWYgWyAtbiAiJGkiIF07IHRoZW4KKwkJCWdpdHN0cmluZz0iJGdpdHN0cmluZyRva19jb2xvciRpIgorCQlmaQorCQlpZiBbIC1uICIkcyIgXTsgdGhlbgorCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nJGZsYWdzX2NvbG9yJHMiCisJCWZpCisJCWlmIFsgLW4gIiR1IiBdOyB0aGVuCisJCQlnaXRzdHJpbmc9IiRnaXRzdHJpbmckYmFkX2NvbG9yJHUiCisJCWZpCisJCWdpdHN0cmluZz0iJGdpdHN0cmluZyRjX2NsZWFyJHIkcCIKKwkJcmV0dXJuCisJZmkKKwlsb2NhbCBjX3JlZD0nXGVbMzFtJworCWxvY2FsIGNfZ3JlZW49J1xlWzMybScKKwlsb2NhbCBjX2xibHVlPSdcZVsxOzM0bScKKwlsb2NhbCBjX2NsZWFyPSdcZVswbScKKwlsb2NhbCBiYWRfY29sb3I9JGNfcmVkCisJbG9jYWwgb2tfY29sb3I9JGNfZ3JlZW4KKwlsb2NhbCBicmFuY2hfY29sb3I9IiRjX2NsZWFyIgorCWxvY2FsIGZsYWdzX2NvbG9yPSIkY19sYmx1ZSIKKwlsb2NhbCBicmFuY2hzdHJpbmc9IiRjJHtiIyNyZWZzL2hlYWRzL30iCisKKwlpZiBbICRkZXRhY2hlZCA9IG5vIF07IHRoZW4KKwkJYnJhbmNoX2NvbG9yPSIkb2tfY29sb3IiCisJZWxzZQorCQlicmFuY2hfY29sb3I9IiRiYWRfY29sb3IiCisJZmkKKworCSMgU2V0dGluZyBnaXRzdHJpbmcgZGlyZWN0bHkgd2l0aCBcWyBhbmQgXF0gYXJvdW5kIGNvbG9ycworCSMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgd3JhcHBpbmcgaXNzdWVzIQorCWdpdHN0cmluZz0iXFskYnJhbmNoX2NvbG9yXF0kYnJhbmNoc3RyaW5nXFskY19jbGVhclxdIgorCisJaWYgWyAtbiAiJHckaSRzJHUkciRwIiBdOyB0aGVuCisJCWdpdHN0cmluZz0iJGdpdHN0cmluZyR6IgorCWZpCisJaWYgWyAiJHciID0gIioiIF07IHRoZW4KKwkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskYmFkX2NvbG9yXF0kdyIKKwlmaQorCWlmIFsgLW4gIiRpIiBdOyB0aGVuCisJCWdpdHN0cmluZz0iJGdpdHN0cmluZ1xbJG9rX2NvbG9yXF0kaSIKKwlmaQorCWlmIFsgLW4gIiRzIiBdOyB0aGVuCisJCWdpdHN0cmluZz0iJGdpdHN0cmluZ1xbJGZsYWdzX2NvbG9yXF0kcyIKKwlmaQorCWlmIFsgLW4gIiR1IiBdOyB0aGVuCisJCWdpdHN0cmluZz0iJGdpdHN0cmluZ1xbJGJhZF9jb2xvclxdJHUiCisJZmkKKwlnaXRzdHJpbmc9IiRnaXRzdHJpbmdcWyRjX2NsZWFyXF0kciRwIgorfQogCiAjIF9fZ2l0X3BzMSBhY2NlcHRzIDAgb3IgMSBhcmd1bWVudHMgKGkuZS4sIGZvcm1hdCBzdHJpbmcpCiAjIHdoZW4gY2FsbGVkIGZyb20gUFMxIHVzaW5nIGNvbW1hbmQgc3Vic3RpdHV0aW9uCkBAIC0yNjAsMTUgKzM0NCwyMyBAQAogCWVsc2UKIAkJbG9jYWwgcj0iIgogCQlsb2NhbCBiPSIiCi0JCWlmIFsgLWYgIiRnL3JlYmFzZS1tZXJnZS9pbnRlcmFjdGl2ZSIgXTsgdGhlbgotCQkJcj0ifFJFQkFTRS1pIgotCQkJYj0iJChjYXQgIiRnL3JlYmFzZS1tZXJnZS9oZWFkLW5hbWUiKSIKLQkJZWxpZiBbIC1kICIkZy9yZWJhc2UtbWVyZ2UiIF07IHRoZW4KLQkJCXI9InxSRUJBU0UtbSIKLQkJCWI9IiQoY2F0ICIkZy9yZWJhc2UtbWVyZ2UvaGVhZC1uYW1lIikiCisJCWxvY2FsIHN0ZXA9IiIKKwkJbG9jYWwgdG90YWw9IiIKKwkJaWYgWyAtZCAiJGcvcmViYXNlLW1lcmdlIiBdOyB0aGVuCisJCQliPSIkKGNhdCAiJGcvcmViYXNlLW1lcmdlL2hlYWQtbmFtZSIgMj4vZGV2L251bGwpIgorCQkJc3RlcD0kKGNhdCAiJGcvcmViYXNlLW1lcmdlL21zZ251bSIgMj4vZGV2L251bGwpCisJCQl0b3RhbD0kKGNhdCAiJGcvcmViYXNlLW1lcmdlL2VuZCIgMj4vZGV2L251bGwpCisJCQlpZiBbIC1mICIkZy9yZWJhc2UtbWVyZ2UvaW50ZXJhY3RpdmUiIF07IHRoZW4KKwkJCQlyPSJ8UkVCQVNFLWkiCisJCQllbHNlCisJCQkJcj0ifFJFQkFTRS1tIgorCQkJZmkKIAkJZWxzZQogCQkJaWYgWyAtZCAiJGcvcmViYXNlLWFwcGx5IiBdOyB0aGVuCisJCQkJc3RlcD0kKGNhdCAiJGcvcmViYXNlLWFwcGx5L25leHQiIDI+L2Rldi9udWxsKQorCQkJCXRvdGFsPSQoY2F0ICIkZy9yZWJhc2UtYXBwbHkvbGFzdCIgMj4vZGV2L251bGwpCiAJCQkJaWYgWyAtZiAiJGcvcmViYXNlLWFwcGx5L3JlYmFzaW5nIiBdOyB0aGVuCisJCQkJCWI9IiQoY2F0ICIkZy9yZWJhc2UtYXBwbHkvaGVhZC1uYW1lIiAyPi9kZXYvbnVsbCkiCiAJCQkJCXI9InxSRUJBU0UiCiAJCQkJZWxpZiBbIC1mICIkZy9yZWJhc2UtYXBwbHkvYXBwbHlpbmciIF07IHRoZW4KIAkJCQkJcj0ifEFNIgpAQCAtMjc5LDEwICszNzEsMTMgQEAKIAkJCQlyPSJ8TUVSR0lORyIKIAkJCWVsaWYgWyAtZiAiJGcvQ0hFUlJZX1BJQ0tfSEVBRCIgXTsgdGhlbgogCQkJCXI9InxDSEVSUlktUElDS0lORyIKKwkJCWVsaWYgWyAtZiAiJGcvUkVWRVJUX0hFQUQiIF07IHRoZW4KKwkJCQlyPSJ8UkVWRVJUSU5HIgogCQkJZWxpZiBbIC1mICIkZy9CSVNFQ1RfTE9HIiBdOyB0aGVuCiAJCQkJcj0ifEJJU0VDVElORyIKIAkJCWZpCiAKKwkJCXRlc3QgLW4gIiRiIiB8fAogCQkJYj0iJChnaXQgc3ltYm9saWMtcmVmIEhFQUQgMj4vZGV2L251bGwpIiB8fCB7CiAJCQkJZGV0YWNoZWQ9eWVzCiAJCQkJYj0iJCgKQEAgLTMwMyw2ICszOTgsMTAgQEAKIAkJCX0KIAkJZmkKIAorCQlpZiBbIC1uICIkc3RlcCIgXSAmJiBbIC1uICIkdG90YWwiIF07IHRoZW4KKwkJCXI9IiRyICRzdGVwLyR0b3RhbCIKKwkJZmkKKwogCQlsb2NhbCB3PSIiCiAJCWxvY2FsIGk9IiIKIAkJbG9jYWwgcz0iIgpAQCAtMzE3LDI0ICs0MTYsMjUgQEAKIAkJCQliPSJHSVRfRElSISIKIAkJCWZpCiAJCWVsaWYgWyAidHJ1ZSIgPSAiJChnaXQgcmV2LXBhcnNlIC0taXMtaW5zaWRlLXdvcmstdHJlZSAyPi9kZXYvbnVsbCkiIF07IHRoZW4KLQkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XRElSVFlTVEFURS19IiBdOyB0aGVuCi0JCQkJaWYgWyAiJChnaXQgY29uZmlnIC0tYm9vbCBiYXNoLnNob3dEaXJ0eVN0YXRlKSIgIT0gImZhbHNlIiBdOyB0aGVuCi0JCQkJCWdpdCBkaWZmIC0tbm8tZXh0LWRpZmYgLS1xdWlldCAtLWV4aXQtY29kZSB8fCB3PSIqIgotCQkJCQlpZiBnaXQgcmV2LXBhcnNlIC0tcXVpZXQgLS12ZXJpZnkgSEVBRCA+L2Rldi9udWxsOyB0aGVuCi0JCQkJCQlnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAtLXF1aWV0IEhFQUQgLS0gfHwgaT0iKyIKLQkJCQkJZWxzZQotCQkJCQkJaT0iIyIKLQkJCQkJZmkKKwkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XRElSVFlTVEFURS19IiBdICYmCisJCQkgICBbICIkKGdpdCBjb25maWcgLS1ib29sIGJhc2guc2hvd0RpcnR5U3RhdGUpIiAhPSAiZmFsc2UiIF0KKwkJCXRoZW4KKwkJCQlnaXQgZGlmZiAtLW5vLWV4dC1kaWZmIC0tcXVpZXQgLS1leGl0LWNvZGUgfHwgdz0iKiIKKwkJCQlpZiBnaXQgcmV2LXBhcnNlIC0tcXVpZXQgLS12ZXJpZnkgSEVBRCA+L2Rldi9udWxsOyB0aGVuCisJCQkJCWdpdCBkaWZmLWluZGV4IC0tY2FjaGVkIC0tcXVpZXQgSEVBRCAtLSB8fCBpPSIrIgorCQkJCWVsc2UKKwkJCQkJaT0iIyIKIAkJCQlmaQogCQkJZmkKIAkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XU1RBU0hTVEFURS19IiBdOyB0aGVuCiAJCQkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3N0YXNoID4vZGV2L251bGwgMj4mMSAmJiBzPSIkIgogCQkJZmkKIAotCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUy19IiBdOyB0aGVuCi0JCQkJaWYgWyAtbiAiJChnaXQgbHMtZmlsZXMgLS1vdGhlcnMgLS1leGNsdWRlLXN0YW5kYXJkKSIgXTsgdGhlbgotCQkJCQl1PSIlIgotCQkJCWZpCisJCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTLX0iIF0gJiYKKwkJCSAgIFsgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYmFzaC5zaG93VW50cmFja2VkRmlsZXMpIiAhPSAiZmFsc2UiIF0gJiYKKwkJCSAgIFsgLW4gIiQoZ2l0IGxzLWZpbGVzIC0tb3RoZXJzIC0tZXhjbHVkZS1zdGFuZGFyZCkiIF0KKwkJCXRoZW4KKwkJCQl1PSIlJHtaU0hfVkVSU0lPTislfSIKIAkJCWZpCiAKIAkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XVVBTVFJFQU0tfSIgXTsgdGhlbgpAQCAtMzQyLDU0ICs0NDIsMjAgQEAKIAkJCWZpCiAJCWZpCiAKKwkJbG9jYWwgej0iJHtHSVRfUFMxX1NUQVRFU0VQQVJBVE9SLSIgIn0iCiAJCWxvY2FsIGY9IiR3JGkkcyR1IgogCQlpZiBbICRwY21vZGUgPSB5ZXMgXTsgdGhlbgogCQkJbG9jYWwgZ2l0c3RyaW5nPQogCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dDT0xPUkhJTlRTLX0iIF07IHRoZW4KLQkJCQlsb2NhbCBjX3JlZD0nXGVbMzFtJwotCQkJCWxvY2FsIGNfZ3JlZW49J1xlWzMybScKLQkJCQlsb2NhbCBjX2xibHVlPSdcZVsxOzM0bScKLQkJCQlsb2NhbCBjX2NsZWFyPSdcZVswbScKLQkJCQlsb2NhbCBiYWRfY29sb3I9JGNfcmVkCi0JCQkJbG9jYWwgb2tfY29sb3I9JGNfZ3JlZW4KLQkJCQlsb2NhbCBicmFuY2hfY29sb3I9IiRjX2NsZWFyIgotCQkJCWxvY2FsIGZsYWdzX2NvbG9yPSIkY19sYmx1ZSIKLQkJCQlsb2NhbCBicmFuY2hzdHJpbmc9IiRjJHtiIyNyZWZzL2hlYWRzL30iCi0KLQkJCQlpZiBbICRkZXRhY2hlZCA9IG5vIF07IHRoZW4KLQkJCQkJYnJhbmNoX2NvbG9yPSIkb2tfY29sb3IiCi0JCQkJZWxzZQotCQkJCQlicmFuY2hfY29sb3I9IiRiYWRfY29sb3IiCi0JCQkJZmkKLQotCQkJCSMgU2V0dGluZyBnaXRzdHJpbmcgZGlyZWN0bHkgd2l0aCBcWyBhbmQgXF0gYXJvdW5kIGNvbG9ycwotCQkJCSMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgd3JhcHBpbmcgaXNzdWVzIQotCQkJCWdpdHN0cmluZz0iXFskYnJhbmNoX2NvbG9yXF0kYnJhbmNoc3RyaW5nXFskY19jbGVhclxdIgotCi0JCQkJaWYgWyAtbiAiJHckaSRzJHUkciRwIiBdOyB0aGVuCi0JCQkJCWdpdHN0cmluZz0iJGdpdHN0cmluZyAiCi0JCQkJZmkKLQkJCQlpZiBbICIkdyIgPSAiKiIgXTsgdGhlbgotCQkJCQlnaXRzdHJpbmc9IiRnaXRzdHJpbmdcWyRiYWRfY29sb3JcXSR3IgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJGkiIF07IHRoZW4KLQkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskb2tfY29sb3JcXSRpIgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJHMiIF07IHRoZW4KLQkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskZmxhZ3NfY29sb3JcXSRzIgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJHUiIF07IHRoZW4KLQkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskYmFkX2NvbG9yXF0kdSIKLQkJCQlmaQotCQkJCWdpdHN0cmluZz0iJGdpdHN0cmluZ1xbJGNfY2xlYXJcXSRyJHAiCisJCQkJX19naXRfcHMxX2NvbG9yaXplX2dpdHN0cmluZwogCQkJZWxzZQotCQkJCWdpdHN0cmluZz0iJGMke2IjI3JlZnMvaGVhZHMvfSR7ZjorICRmfSRyJHAiCisJCQkJZ2l0c3RyaW5nPSIkYyR7YiMjcmVmcy9oZWFkcy99JHtmOiskeiRmfSRyJHAiCiAJCQlmaQogCQkJZ2l0c3RyaW5nPSQocHJpbnRmIC0tICIkcHJpbnRmX2Zvcm1hdCIgIiRnaXRzdHJpbmciKQogCQkJUFMxPSIkcHMxcGNfc3RhcnQkZ2l0c3RyaW5nJHBzMXBjX2VuZCIKIAkJZWxzZQogCQkJIyBOTyBjb2xvciBvcHRpb24gdW5sZXNzIGluIFBST01QVF9DT01NQU5EIG1vZGUKLQkJCXByaW50ZiAtLSAiJHByaW50Zl9mb3JtYXQiICIkYyR7YiMjcmVmcy9oZWFkcy99JHtmOisgJGZ9JHIkcCIKKwkJCXByaW50ZiAtLSAiJHByaW50Zl9mb3JtYXQiICIkYyR7YiMjcmVmcy9oZWFkcy99JHtmOiskeiRmfSRyJHAiCiAJCWZpCiAJZmkKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29udGludW91cy9jaWRhZW1vbiBiL2NvbnRyaWIvY29udGludW91cy9jaWRhZW1vbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAwOWExNS4uMDAwMDAwMAotLS0gYS9jb250cmliL2NvbnRpbnVvdXMvY2lkYWVtb24KKysrIC9kZXYvbnVsbApAQCAtMSw1MDMgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jCi0jIEEgZGFlbW9uIHRoYXQgd2FpdHMgZm9yIHVwZGF0ZSBldmVudHMgc2VudCBieSBpdHMgY29tcGFuaW9uCi0jIHBvc3QtcmVjZWl2ZS1jaW5vdGlmeSBob29rLCBjaGVja3Mgb3V0IGEgbmV3IGNvcHkgb2Ygc291cmNlLAotIyBjb21waWxlcyBpdCwgYW5kIGVtYWlscyB0aGUgZ3VpbHR5IHBhcnRpZXMgaWYgdGhlIGNvbXBpbGUKLSMgKGFuZCBvcHRpb25hbGx5IHRlc3Qgc3VpdGUpIGZhaWxzLgotIwotIyBUbyB1c2UgdGhpcyBkYWVtb24sIGNvbmZpZ3VyZSBpdCBhbmQgcnVuIGl0LiAgSXQgd2lsbCBkaXNjb25uZWN0Ci0jIGZyb20geW91ciB0ZXJtaW5hbCBhbmQgZm9yayBpbnRvIHRoZSBiYWNrZ3JvdW5kLiAgVGhlIGRhZW1vbiBtdXN0Ci0jIGhhdmUgbG9jYWwgZmlsZXN5c3RlbSBhY2Nlc3MgdG8gdGhlIHNvdXJjZSByZXBvc2l0b3JpZXMsIGFzIGl0Ci0jIHVzZXMgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMgdG8gYXZvaWQgY29weWluZyBvYmplY3RzLgotIwotIyBBZGQgaXRzIGNvbXBhbmlvbiBwb3N0LXJlY2VpdmUtY2lub3RpZnkgaG9vayBhcyB0aGUgcG9zdC1yZWNlaXZlCi0jIGhvb2sgdG8gZWFjaCByZXBvc2l0b3J5IHRoYXQgdGhlIGRhZW1vbiBzaG91bGQgbW9uaXRvci4gIFllcywgYQotIyBzaW5nbGUgZGFlbW9uIGNhbiBtb25pdG9yIG1vcmUgdGhhbiBvbmUgcmVwb3NpdG9yeS4KLSMKLSMgVG8gdXNlIG11bHRpcGxlIGRhZW1vbnMgb24gdGhlIHNhbWUgc3lzdGVtLCBnaXZlIHRoZW0gZWFjaCBhCi0jIHVuaXF1ZSBxdWV1ZSBmaWxlIGFuZCB0bXBkaXIuCi0jCi0jIEdsb2JhbCBDb25maWcKLSMgLS0tLS0tLS0tLS0tLQotIyBSZWFkcyBmcm9tIGEgR2l0IHN0eWxlIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgd2lsbCBiZQotIyB+Ly5naXRjb25maWcgYnkgZGVmYXVsdCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZwotIyB0aGUgR0lUX0NPTkZJR19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBzdGFydGluZy4KLSMKLSMgY2lkYWVtb24uc210cEhvc3QKLSMgICBIb3N0bmFtZSBvZiB0aGUgU01UUCBzZXJ2ZXIgdGhlIGRhZW1vbiB3aWxsIHNlbmQgZW1haWwKLSMgICB0aHJvdWdoLiAgRGVmYXVsdHMgdG8gJ2xvY2FsaG9zdCcuCi0jCi0jIGNpZGFlbW9uLnNtdHBVc2VyCi0jICAgVXNlcm5hbWUgdG8gYXV0aGVudGljYXRlIHRvIHRoZSBTTVRQIHNlcnZlciBhcy4gIFRoaXMKLSMgICB2YXJpYWJsZSBpcyBvcHRpb25hbDsgaWYgaXQgaXMgbm90IHN1cHBsaWVkIHRoZW4gbm8KLSMgICBhdXRoZW50aWNhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZC4KLSMKLSMgY2lkYWVtb24uc210cFBhc3N3b3JkCi0jICAgUGFzc3dvcmQgdG8gYXV0aGVudGljYXRlIHRvIHRoZSBTTVRQIHNlcnZlciBhcy4gIFRoaXMKLSMgICB2YXJpYWJsZSBpcyBvcHRpb25hbC4gIElmIG5vdCBzdXBwbGllZCBidXQgc210cFVzZXIgd2FzLAotIyAgIHRoZSBkYWVtb24gcHJvbXB0cyBmb3IgdGhlIHBhc3N3b3JkIGJlZm9yZSBmb3JraW5nIGludG8KLSMgICB0aGUgYmFja2dyb3VuZC4KLSMKLSMgY2lkYWVtb24uc210cEF1dGgKLSMgICBUeXBlIG9mIGF1dGhlbnRpY2F0aW9uIHRvIHBlcmZvcm0gd2l0aCB0aGUgU01UUCBzZXJ2ZXIuCi0jICAgSWYgc2V0IHRvICdsb2dpbicgYW5kIHNtdHBVc2VyIHdhcyBkZWZpbmVkLCB0aGlzIHdpbGwKLSMgICB1c2UgdGhlIEFVVEggTE9HSU4gY29tbWFuZCwgd2hpY2ggaXMgc3VpdGFibGUgZm9yIHVzZQotIyAgIHdpdGggYXQgbGVhc3Qgb25lIHZlcnNpb24gb2YgTWljcm9zb2Z0IEV4Y2hhbmdlIFNlcnZlci4KLSMgICBJZiBub3Qgc2V0IHRoZSBkYWVtb24gd2lsbCB1c2Ugd2hhdGV2ZXIgYXV0aCBtZXRob2RzCi0jICAgYXJlIHN1cHBvcnRlZCBieSB5b3VyIHZlcnNpb24gb2YgTmV0OjpTTVRQLgotIwotIyBjaWRhZW1vbi5lbWFpbAotIyAgIEVtYWlsIGFkZHJlc3MgdGhhdCBkYWVtb24gZ2VuZXJhdGVkIGVtYWlscyB3aWxsIGJlIHNlbnQKLSMgICBmcm9tLiAgVGhpcyBzaG91bGQgYmUgYSB1c2VmdWwgZW1haWwgYWRkcmVzcyB3aXRoaW4geW91cgotIyAgIG9yZ2FuaXphdGlvbi4gIFJlcXVpcmVkLgotIwotIyBjaWRhZW1vbi5uYW1lCi0jICAgSHVtYW4gZnJpZW5kbHkgbmFtZSB0aGF0IHRoZSBkYWVtb24gd2lsbCBzZW5kIGVtYWlscyBhcy4KLSMgICBEZWZhdWx0cyB0byAnY2lkYWVtb24nLgotIwotIyBjaWRhZW1vbi5zY2FuRGVsYXkKLSMgICBOdW1iZXIgb2Ygc2Vjb25kcyB0byBzbGVlcCBiZXR3ZWVuIHBvbGxzIG9mIHRoZSBxdWV1ZSBmaWxlLgotIyAgIERlZmF1bHRzIHRvIDYwLgotIwotIyBjaWRhZW1vbi5yZWNlbnRDYWNoZQotIyAgIE51bWJlciBvZiByZWNlbnQgY29tbWl0IFNIQS0xcyBwZXIgcmVwb3NpdG9yeSB0byBjYWNoZSBhbmQKLSMgICBza2lwIGJ1aWxkaW5nIGlmIHRoZXkgYXBwZWFyIGFnYWluLiAgVGhpcyBpcyB1c2VmdWwgdG8gYXZvaWQKLSMgICByZWJ1aWxkaW5nIHRoZSBzYW1lIGNvbW1pdCBtdWx0aXBsZSB0aW1lcyBqdXN0IGJlY2F1c2UgaXQgd2FzCi0jICAgcHVzaGVkIGludG8gbW9yZSB0aGFuIG9uZSBicmFuY2guICBEZWZhdWx0cyB0byAxMDAuCi0jCi0jIGNpZGFlbW9uLnRtcGRpcgotIyAgIFNjcmF0Y2ggZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgYnVpbGRzIHdpdGhpbi4gIFRoZSBkYWVtb24KLSMgICBtYWtlcyBhIG5ldyBzdWJkaXJlY3RvcnkgZm9yIGVhY2ggYnVpbGQsIHRoZW4gZGVsZXRlcyBpdCB3aGVuCi0jICAgdGhlIGJ1aWxkIGhhcyBmaW5pc2hlZC4gIFRoZSBwaWQgZmlsZSBpcyBhbHNvIHBsYWNlZCBoZXJlLgotIyAgIERlZmF1bHRzIHRvICcvdG1wJy4KLSMKLSMgY2lkYWVtb24ucXVldWUKLSMgICBQYXRoIHRvIHRoZSBxdWV1ZSBmaWxlIHRoYXQgdGhlIHBvc3QtcmVjZWl2ZS1jaW5vdGlmeSBob29rCi0jICAgYXBwZW5kcyBldmVudHMgdG8uICBUaGlzIGZpbGUgaXMgcG9sbGVkIGJ5IHRoZSBkYWVtb24uICBJdAotIyAgIG11c3Qgbm90IGJlIG9uIGFuIE5GUyBtb3VudCAodXNlcyBmbG9jaykuICBSZXF1aXJlZC4KLSMKLSMgY2lkYWVtb24ubm9jYwotIyAgIFBlcmwgcmVnZXggcGF0dGVybnMgdG8gbWF0Y2ggYWdhaW5zdCBhdXRob3IgYW5kIGNvbW1pdHRlcgotIyAgIGxpbmVzLiAgSWYgYSBwYXR0ZXJuIG1hdGNoZXMsIHRoYXQgYXV0aG9yIG9yIGNvbW1pdHRlciB3aWxsCi0jICAgbm90IGJlIG5vdGlmaWVkIG9mIGEgYnVpbGQgZmFpbHVyZS4KLSMKLSMgUGVyIFJlcG9zaXRvcnkgQ29uZmlnCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUmVhZCBmcm9tIHRoZSBzb3VyY2UgcmVwb3NpdG9yeSdzIGNvbmZpZyBmaWxlLgotIwotIyBidWlsZGVyLmNvbW1hbmQKLSMgICBTaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGUgdGhlIGJ1aWxkLiAgVGhpcyBjb21tYW5kIG11c3QKLSMgICByZXR1cm4gMCBvbiAic3VjY2VzcyIgYW5kIG5vbi16ZXJvIG9uIGZhaWx1cmUuICBJZiB5b3UKLSMgICBhbHNvIHdhbnQgdG8gcnVuIGEgdGVzdCBzdWl0ZSwgbWFrZSBzdXJlIHlvdXIgY29tbWFuZAotIyAgIGRvZXMgdGhhdCB0b28uICBSZXF1aXJlZC4KLSMKLSMgYnVpbGRlci5xdWV1ZQotIyAgIFF1ZXVlIGZpbGUgdG8gbm90aWZ5IHRoZSBjaWRhZW1vbiB0aHJvdWdoLiAgU2hvdWxkIG1hdGNoCi0jICAgY2lkYWVtb24ucXVldWUuICBJZiBub3Qgc2V0IHRoZSBob29rIHdpbGwgbm90IG5vdGlmeSB0aGUKLSMgICBjaWRhZW1vbi4KLSMKLSMgYnVpbGRlci5za2lwCi0jICAgUGVybCByZWdleCBwYXR0ZXJucyBvZiByZWZzIHRoYXQgc2hvdWxkIG5vdCBiZSBzZW50IHRvCi0jICAgY2lkYWVtb24uICBVcGRhdGVzIG9mIHRoZXNlIHJlZnMgd2lsbCBiZSBpZ25vcmVkLgotIwotIyBidWlsZGVyLm5ld0JyYW5jaEJhc2UKLSMgICBHbG9iIHBhdHRlcm5zIG9mIHJlZnMgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmb3JtIHRoZQotIyAgICdvbGQnIHJldmlvbnMgb2YgYSBuZXdseSBjcmVhdGVkIHJlZi4gIFRoaXMgc2hvdWxkIHNldAotIyAgIHRvIGJlIGdsb2JzIHRoYXQgbWF0Y2ggeW91ciAnbWFpbmxpbmUnIGJyYW5jaGVzLiAgVGhpcwotIyAgIHdheSBhIGJ1aWxkIGZhaWx1cmUgb2YgYSBicmFuZCBuZXcgdG9waWMgYnJhbmNoIGRvZXMgbm90Ci0jICAgYXR0ZW1wdCB0byBlbWFpbCBldmVyeW9uZSBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRpbWU7Ci0jICAgaW5zdGVhZCBpdCBvbmx5IGVtYWlscyB0aG9zZSBhdXRob3JzIG9mIGNvbW1pdHMgbm90IGluCi0jICAgdGhlc2UgJ21haW5saW5lJyBicmFuY2hlcy4KLQotbG9jYWwgJEVOVntQQVRIfSA9IGpvaW4gJzonLCBxdygKLQkvb3B0L2dpdC9iaW4KLQkvdXNyL2JpbgotCS9iaW4KLQkpOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwotdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwotdXNlIEZpbGU6OlNwZWM7Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGZpbGUoJFJlYWxCaW4sICcuLicsICdwZXJsNScpOwotdXNlIFN0b3JhYmxlIHF3KHJldHJpZXZlIG5zdG9yZSk7Ci11c2UgRmNudGwgJzpmbG9jayc7Ci11c2UgUE9TSVggcXcoc3RyZnRpbWUpOwotdXNlIEdldG9wdDo6TG9uZyBxdyg6Y29uZmlnIG5vX2F1dG9fYWJicmV2IGF1dG9faGVscCk7Ci0KLXN1YiBnaXRfY29uZmlnICgkOyQpCi17Ci0JbXkgJHZhciA9IHNoaWZ0OwotCW15ICRyZXF1aXJlZCA9IHNoaWZ0IHx8IDA7Ci0JbG9jYWwgKkdJVDsKLQlvcGVuIEdJVCwgJy18JywnZ2l0JywnY29uZmlnJywnLS1nZXQnLCR2YXI7Ci0JbXkgJHIgPSA8R0lUPjsKLQljaG9wICRyIGlmICRyOwotCWNsb3NlIEdJVDsKLQlkaWUgImVycm9yOiAkdmFyIG5vdCBzZXQuXG4iIGlmICgkcmVxdWlyZWQgJiYgISRyKTsKLQlyZXR1cm4gJHI7Ci19Ci0KLXBhY2thZ2UgRVhDSEFOR0VfTkVUX1NNVFA7Ci0KLSMgTWljcm9zb2Z0IEV4Y2hhbmdlIFNlcnZlciByZXF1aXJlcyBhbiAnQVVUSCBMT0dJTicKLSMgc3R5bGUgb2YgYXV0aGVudGljYXRpb24uICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tCi0jIHRoZSBkZWZhdWx0IHN1cHBvcnRlZCBieSBOZXQ6OlNNVFAgc28gd2Ugc3ViY2xhc3MKLSMgYW5kIG92ZXJyaWRlIHRoZSBhdXRoIG1ldGhvZCB0byBzdXBwb3J0IHRoYXQuCi0KLXVzZSBOZXQ6OlNNVFA7Ci11c2UgTmV0OjpDbWQ7Ci11c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwotb3VyIEBJU0EgPSBxdyhOZXQ6OlNNVFApOwotb3VyICRhdXRoX3R5cGUgPSA6OmdpdF9jb25maWcgJ2NpZGFlbW9uLnNtdHBBdXRoJzsKLQotc3ViIG5ldwotewotCW15ICRzZWxmID0gc2hpZnQ7Ci0JbXkgJHR5cGUgPSByZWYoJHNlbGYpIHx8ICRzZWxmOwotCSR0eXBlLT5TVVBFUjo6bmV3KEBfKTsKLX0KLQotc3ViIGF1dGgKLXsKLQlteSAkc2VsZiA9IHNoaWZ0OwotCXJldHVybiAkc2VsZi0+U1VQRVI6OmF1dGgoQF8pIHVubGVzcyAkYXV0aF90eXBlIGVxICdsb2dpbic7Ci0KLQlteSAkdXNlciA9IGVuY29kZV9iYXNlNjQgc2hpZnQsICcnOwotCW15ICRwYXNzID0gZW5jb2RlX2Jhc2U2NCBzaGlmdCwgJyc7Ci0JcmV0dXJuIDAgdW5sZXNzIENNRF9NT1JFID09ICRzZWxmLT5jb21tYW5kKCJBVVRIIExPR0lOIiktPnJlc3BvbnNlOwotCXJldHVybiAwIHVubGVzcyBDTURfTU9SRSA9PSAkc2VsZi0+Y29tbWFuZCgkdXNlciktPnJlc3BvbnNlOwotCUNNRF9PSyA9PSAkc2VsZi0+Y29tbWFuZCgkcGFzcyktPnJlc3BvbnNlOwotfQotCi1wYWNrYWdlIG1haW47Ci0KLW15ICgkZGVidWdfZmxhZywgJXJlY2VudCk7Ci0KLW15ICRleF9ob3N0ID0gZ2l0X2NvbmZpZygnY2lkYWVtb24uc210cEhvc3QnKSB8fCAnbG9jYWxob3N0JzsKLW15ICRleF91c2VyID0gZ2l0X2NvbmZpZygnY2lkYWVtb24uc210cFVzZXInKTsKLW15ICRleF9wYXNzID0gZ2l0X2NvbmZpZygnY2lkYWVtb24uc210cFBhc3N3b3JkJyk7Ci0KLW15ICRleF9mcm9tX2FkZHIgPSBnaXRfY29uZmlnKCdjaWRhZW1vbi5lbWFpbCcsIDEpOwotbXkgJGV4X2Zyb21fbmFtZSA9IGdpdF9jb25maWcoJ2NpZGFlbW9uLm5hbWUnKSB8fCAnY2lkYWVtb24nOwotCi1teSAkc2Nhbl9kZWxheSA9IGdpdF9jb25maWcoJ2NpZGFlbW9uLnNjYW5EZWxheScpIHx8IDYwOwotbXkgJHJlY2VudF9zaXplID0gZ2l0X2NvbmZpZygnY2lkYWVtb24ucmVjZW50Q2FjaGUnKSB8fCAxMDA7Ci1teSAkdG1wZGlyID0gZ2l0X2NvbmZpZygnY2lkYWVtb24udG1wZGlyJykgfHwgJy90bXAnOwotbXkgJHF1ZXVlX25hbWUgPSBnaXRfY29uZmlnKCdjaWRhZW1vbi5xdWV1ZScsIDEpOwotbXkgJHF1ZXVlX2xvY2sgPSAiJHF1ZXVlX25hbWUubG9jayI7Ci0KLW15IEBub2NjX2xpc3Q7Ci1vcGVuIEdJVCwnZ2l0IGNvbmZpZyAtLWdldC1hbGwgY2lkYWVtb24ubm9jY3wnOwotd2hpbGUgKDxHSVQ+KSB7Ci0JY2hvcDsKLQlwdXNoIEBub2NjX2xpc3QsICRfOwotfQotY2xvc2UgR0lUOwotCi1zdWIgbm9jY19hdXRob3IgKCQpCi17Ci0JbG9jYWwgJF8gPSBzaGlmdDsKLQlmb3JlYWNoIG15ICRwYXQgKEBub2NjX2xpc3QpIHsKLQkJcmV0dXJuIDEgaWYgLyRwYXQvOwotCX0KLQkwOwotfQotCi1zdWIgaW5wdXRfZWNobyAoJCkKLXsKLQlteSAkcHJvbXB0ID0gc2hpZnQ7Ci0KLQlsb2NhbCAkfCA9IDE7Ci0JcHJpbnQgJHByb21wdDsKLQlteSAkaW5wdXQgPSA8U1RESU4+OwotCWNob3AgJGlucHV0OwotCXJldHVybiAkaW5wdXQ7Ci19Ci0KLXN1YiBpbnB1dF9ub2VjaG8gKCQpCi17Ci0JbXkgJHByb21wdCA9IHNoaWZ0OwotCi0JbXkgJGVuZCA9IHN1YiB7c3lzdGVtKCdzdHR5JywnZWNobycpO3ByaW50ICJcbiI7ZXhpdH07Ci0JbG9jYWwgJFNJR3tURVJNfSA9ICRlbmQ7Ci0JbG9jYWwgJFNJR3tJTlR9ID0gJGVuZDsKLQlzeXN0ZW0oJ3N0dHknLCctZWNobycpOwotCi0JbG9jYWwgJHwgPSAxOwotCXByaW50ICRwcm9tcHQ7Ci0JbXkgJGlucHV0ID0gPFNURElOPjsKLQlzeXN0ZW0oJ3N0dHknLCdlY2hvJyk7Ci0JcHJpbnQgIlxuIjsKLQljaG9wICRpbnB1dDsKLQlyZXR1cm4gJGlucHV0OwotfQotCi1zdWIgcmZjMjgyMl9kYXRlICgpCi17Ci0JIHN0cmZ0aW1lKCIlYSwgJWQgJWIgJVkgJUg6JU06JVMgJVoiLCBsb2NhbHRpbWUpOwotfQotCi1zdWIgc2VuZF9lbWFpbCAoJCQkKQotewotCW15ICgkc3ViaiwgJGJvZHksICR0bykgPSBAXzsKLQlteSAkbm93ID0gcmZjMjgyMl9kYXRlOwotCW15ICR0b19zdHIgPSAnJzsKLQlteSBAcmNwdF90bzsKLQlmb3JlYWNoIChAJHRvKSB7Ci0JCW15ICRzID0gJF87Ci0JCSRzID1+IHMvXi8iLzsKLQkJJHMgPX4gcy8oXHMrPCkvIiQxLzsKLQkJJHRvX3N0ciAuPSAnLCAnIGlmICR0b19zdHI7Ci0JCSR0b19zdHIgLj0gJHM7Ci0JCXB1c2ggQHJjcHRfdG8sICQxIGlmICRzID1+IC88KC4qKT4vOwotCX0KLQlkaWUgIk5vYm9keSB0byBzZW5kIHRvLlxuIiB1bmxlc3MgQHJjcHRfdG87Ci0JbXkgJG1zZyA9IDw8RU9GOwotRnJvbTogIiRleF9mcm9tX25hbWUiIDwkZXhfZnJvbV9hZGRyPgotVG86ICR0b19zdHIKLURhdGU6ICRub3cKLVN1YmplY3Q6ICRzdWJqCi0KLSRib2R5Ci1FT0YKLQotCW15ICRzbXRwID0gRVhDSEFOR0VfTkVUX1NNVFAtPm5ldyhIb3N0ID0+ICRleF9ob3N0KQotCQlvciBkaWUgIkNhbm5vdCBjb25uZWN0IHRvICRleF9ob3N0OiAkIVxuIjsKLQlpZiAoJGV4X3VzZXIgJiYgJGV4X3Bhc3MpIHsKLQkJJHNtdHAtPmF1dGgoJGV4X3VzZXIsJGV4X3Bhc3MpCi0JCQlvciBkaWUgIiRleF9ob3N0IHJlamVjdGVkICRleF91c2VyXG4iOwotCX0KLQkkc210cC0+bWFpbCgkZXhfZnJvbV9hZGRyKQotCQlvciBkaWUgIiRleF9ob3N0IHJlamVjdGVkICRleF9mcm9tX2FkZHJcbiI7Ci0Jc2NhbGFyKCRzbXRwLT5yZWNpcGllbnQoQHJjcHRfdG8sIHsgU2tpcEJhZCA9PiAxIH0pKQotCQlvciBkaWUgIiRleF9ob3N0IGRpZCBub3QgYWNjZXB0IGFueSBhZGRyZXNzZXMuXG4iOwotCSRzbXRwLT5kYXRhKCRtc2cpCi0JCW9yIGRpZSAiJGV4X2hvc3QgcmVqZWN0ZWQgbWVzc2FnZSBkYXRhXG4iOwotCSRzbXRwLT5xdWl0OwotfQotCi1zdWIgcG9wX3F1ZXVlICgpCi17Ci0Jb3BlbiBMT0NLLCAiPiRxdWV1ZV9sb2NrIiBvciBkaWUgIkNhbid0IG9wZW4gJHF1ZXVlX2xvY2s6ICQhIjsKLQlmbG9jayBMT0NLLCBMT0NLX0VYOwotCi0JbXkgJHF1ZXVlID0gLWYgJHF1ZXVlX25hbWUgPyByZXRyaWV2ZSAkcXVldWVfbmFtZSA6IFtdOwotCW15ICRlbnQgPSBzaGlmdCBAJHF1ZXVlOwotCW5zdG9yZSAkcXVldWUsICRxdWV1ZV9uYW1lOwotCi0JZmxvY2sgTE9DSywgTE9DS19VTjsKLQljbG9zZSBMT0NLOwotCSRlbnQ7Ci19Ci0KLXN1YiBnaXRfZXhlYyAoQCkKLXsKLQlzeXN0ZW0oJ2dpdCcsQF8pID09IDAgb3IgZGllICJDYW5ub3QgZ2l0ICIgLiBqb2luKCcgJywgQF8pIC4gIlxuIjsKLX0KLQotc3ViIGdpdF92YWwgKEApCi17Ci0Jb3BlbihDLCAnLXwnLCdnaXQnLEBfKTsKLQlteSAkciA9IDxDPjsKLQljaG9wICRyIGlmICRyOwotCWNsb3NlIEM7Ci0JJHI7Ci19Ci0KLXN1YiBkb19idWlsZCAoJCQpCi17Ci0JbXkgKCRnaXRfZGlyLCAkbmV3KSA9IEBfOwotCi0JbXkgJHRtcCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcGRpciwgImJ1aWxkZXIkJCIpOwotCXN5c3RlbSgncm0nLCctcmYnLCR0bXApID09IDAgb3IgZGllICJDYW5ub3QgY2xlYXIgJHRtcFxuIjsKLQlkaWUgIkNhbm5vdCBjbGVhciAkdG1wLlxuIiBpZiAtZSAkdG1wOwotCi0JbXkgJHJlc3VsdCA9IDE7Ci0JZXZhbCB7Ci0JCW15ICRjb21tYW5kOwotCQl7Ci0JCQlsb2NhbCAkRU5We0dJVF9ESVJ9ID0gJGdpdF9kaXI7Ci0JCQkkY29tbWFuZCA9IGdpdF92YWwgJ2NvbmZpZycsJ2J1aWxkZXIuY29tbWFuZCc7Ci0JCX0KLQkJZGllICJObyBidWlsZGVyLmNvbW1hbmQgZm9yICRnaXRfZGlyLlxuIiB1bmxlc3MgJGNvbW1hbmQ7Ci0KLQkJZ2l0X2V4ZWMgJ2Nsb25lJywnLW4nLCctbCcsJy1zJywkZ2l0X2RpciwkdG1wOwotCQljaG1vZCAwNzAwLCAkdG1wIG9yIGRpZSAiQ2Fubm90IGxvY2sgJHRtcFxuIjsKLQkJY2hkaXIgJHRtcCBvciBkaWUgIkNhbm5vdCBlbnRlciAkdG1wXG4iOwotCi0JCWdpdF9leGVjICd1cGRhdGUtcmVmJywnSEVBRCcsJG5ldzsKLQkJZ2l0X2V4ZWMgJ3JlYWQtdHJlZScsJy1tJywnLXUnLCdIRUFEJywnSEVBRCc7Ci0JCXN5c3RlbSAkY29tbWFuZDsKLQkJaWYgKCQ/ID09IC0xKSB7Ci0JCQlwcmludCBTVERFUlIgImZhaWxlZCB0byBleGVjdXRlICckY29tbWFuZCc6ICQhXG4iOwotCQkJJHJlc3VsdCA9IDE7Ci0JCX0gZWxzaWYgKCQ/ICYgMTI3KSB7Ci0JCQlteSAkc2lnID0gJD8gJiAxMjc7Ci0JCQlwcmludCBTVERFUlIgIickY29tbWFuZCcgZGllZCBmcm9tIHNpZ25hbCAkc2lnXG4iOwotCQkJJHJlc3VsdCA9IDE7Ci0JCX0gZWxzZSB7Ci0JCQlteSAkciA9ICQ/ID4+IDg7Ci0JCQlwcmludCBTVERFUlIgIickY29tbWFuZCcgZXhpdGVkIHdpdGggJHJcbiIgaWYgJHI7Ci0JCQkkcmVzdWx0ID0gJHI7Ci0JCX0KLQl9OwotCWlmICgkQCkgewotCQkkcmVzdWx0ID0gMjsKLQkJcHJpbnQgU1RERVJSICIkQFxuIjsKLQl9Ci0KLQljaGRpciAnLyc7Ci0Jc3lzdGVtKCdybScsJy1yZicsJHRtcCk7Ci0Jcm1kaXIgJHRtcDsKLQkkcmVzdWx0OwotfQotCi1zdWIgYnVpbGRfZmFpbGVkICgkJCQkJCkKLXsKLQlteSAoJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcsICRtc2cpID0gQF87Ci0KLQkkZ2l0X2RpciA9fiBtLC8oW14vXSspJCw7Ci0JbXkgJHJlcG9fbmFtZSA9ICQxOwotCSRyZWYgPX4gcyxecmVmcy8oaGVhZHN8dGFncykvLCw7Ci0KLQlteSAlYXV0aG9yczsKLQlteSAkc2hvcnRsb2c7Ci0JbXkgJHJldnN0cjsKLQl7Ci0JCWxvY2FsICRFTlZ7R0lUX0RJUn0gPSAkZ2l0X2RpcjsKLQkJbXkgQHJldnMgPSAoJG5ldyk7Ci0JCXB1c2ggQHJldnMsICctLW5vdCcsIEAkb2xkIGlmIEAkb2xkOwotCQlvcGVuIExPRywnLXwnLCdnaXQnLCdyZXYtbGlzdCcsJy0tcHJldHR5PXJhdycsQHJldnM7Ci0JCXdoaWxlICg8TE9HPikgewotCQkJaWYgKHMvXihhdXRob3J8Y29tbWl0dGVyKSAvLykgewotCQkJCWNob21wOwotCQkJCXMvPi4qJC8+LzsKLQkJCQkkYXV0aG9yc3skX30gPSAxIHVubGVzcyBub2NjX2F1dGhvciAkXzsKLQkJCX0KLQkJfQotCQljbG9zZSBMT0c7Ci0JCW9wZW4gTE9HLCctfCcsJ2dpdCcsJ3Nob3J0bG9nJyxAcmV2czsKLQkJJHNob3J0bG9nIC49ICRfIHdoaWxlIDxMT0c+OwotCQljbG9zZSBMT0c7Ci0JCSRyZXZzdHIgPSBqb2luKCcgJywgQHJldnMpOwotCX0KLQotCW15IEB0byA9IHNvcnQga2V5cyAlYXV0aG9yczsKLQl1bmxlc3MgKEB0bykgewotCQlwcmludCBTVERFUlIgImVycm9yOiBObyBhdXRob3JzIGluICRyZXZzdHJcbiI7Ci0JCXJldHVybjsKLQl9Ci0KLQlteSAkc3ViamVjdCA9ICJbJHJlcG9fbmFtZV0gJHJlZiA6IEJ1aWxkIEZhaWxlZCI7Ci0JbXkgJGJvZHkgPSA8PEVPRjsKLVByb2plY3Q6ICRnaXRfZGlyCi1CcmFuY2g6ICAkcmVmCi1Db21taXRzOiAkcmV2c3RyCi0KLSRzaG9ydGxvZwotQnVpbGQgT3V0cHV0OgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSRtc2cKLUVPRgotCXNlbmRfZW1haWwoJHN1YmplY3QsICRib2R5LCBcQHRvKTsKLX0KLQotc3ViIHJ1bl9idWlsZCAoJCQkJCkKLXsKLQlteSAoJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcpID0gQF87Ci0KLQlpZiAoJGRlYnVnX2ZsYWcpIHsKLQkJbXkgQHJldnMgPSAoJG5ldyk7Ci0JCXB1c2ggQHJldnMsICctLW5vdCcsIEAkb2xkIGlmIEAkb2xkOwotCQlwcmludCAiQlVJTERJTkcgJGdpdF9kaXJcbiI7Ci0JCXByaW50ICIgIEJSQU5DSDogJHJlZlxuIjsKLQkJcHJpbnQgIiAgQ09NTUlUUzogIiwgam9pbignICcsIEByZXZzKSwgIlxuIjsKLQl9Ci0KLQlsb2NhbCgqUiwgKlcpOwotCXBpcGUgUiwgVyBvciBkaWUgImNhbm5vdCBwaXBlIGJ1aWxkZXI6ICQhIjsKLQotCW15ICRidWlsZGVyID0gZm9yaygpOwotCWlmICghZGVmaW5lZCAkYnVpbGRlcikgewotCQlkaWUgImNhbm5vdCBmb3JrIGJ1aWxkZXI6ICQhIjsKLQl9IGVsc2lmICgwID09ICRidWlsZGVyKSB7Ci0JCWNsb3NlIFI7Ci0JCWNsb3NlIFNURElOO29wZW4oU1RESU4sICcvZGV2L251bGwnKTsKLQkJb3BlbihTVERPVVQsICc+JlcnKTsKLQkJb3BlbihTVERFUlIsICc+JlcnKTsKLQkJZXhpdCBkb19idWlsZCAkZ2l0X2RpciwgJG5ldzsKLQl9IGVsc2UgewotCQljbG9zZSBXOwotCQlteSAkb3V0ID0gJyc7Ci0JCSRvdXQgLj0gJF8gd2hpbGUgPFI+OwotCQljbG9zZSBSOwotCQl3YWl0cGlkICRidWlsZGVyLCAwOwotCQlidWlsZF9mYWlsZWQgJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcsICRvdXQgaWYgJD87Ci0JfQotCi0JcHJpbnQgIkRPTkVcblxuIiBpZiAkZGVidWdfZmxhZzsKLX0KLQotc3ViIGRhZW1vbl9sb29wICgpCi17Ci0JbXkgJHJ1biA9IDE7Ci0JbXkgJHN0b3Bfc3ViID0gc3ViIHskcnVuID0gMH07Ci0JJFNJR3tIVVB9ID0gJHN0b3Bfc3ViOwotCSRTSUd7SU5UfSA9ICRzdG9wX3N1YjsKLQkkU0lHe1RFUk19ID0gJHN0b3Bfc3ViOwotCi0JbWtkaXIgJHRtcGRpciwgMDc1NTsKLQlteSAkcGlkZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcGRpciwgImNpZGFlbW9uLnBpZCIpOwotCW9wZW4oTywgIj4kcGlkZmlsZSIpOyBwcmludCBPICIkJFxuIjsgY2xvc2UgTzsKLQotCXdoaWxlICgkcnVuKSB7Ci0JCW15ICRlbnQgPSBwb3BfcXVldWU7Ci0JCWlmICgkZW50KSB7Ci0JCQlteSAoJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcpID0gQCRlbnQ7Ci0KLQkJCSRlbnQgPSAkcmVjZW50eyRnaXRfZGlyfTsKLQkJCSRyZWNlbnR7JGdpdF9kaXJ9ID0gJGVudCA9IFtbXSwge31dIHVubGVzcyAkZW50OwotCQkJbXkgKCRyZWNfYXJyLCAkcmVjX2hhc2gpID0gQCRlbnQ7Ci0JCQluZXh0IGlmICRyZWNfaGFzaC0+eyRuZXd9Kys7Ci0JCQl3aGlsZSAoQCRyZWNfYXJyID49ICRyZWNlbnRfc2l6ZSkgewotCQkJCW15ICR0b19raWxsID0gc2hpZnQgQCRyZWNfYXJyOwotCQkJCWRlbGV0ZSAkcmVjX2hhc2gtPnskdG9fa2lsbH07Ci0JCQl9Ci0JCQlwdXNoIEAkcmVjX2FyciwgJG5ldzsKLQotCQkJcnVuX2J1aWxkICRnaXRfZGlyLCAkcmVmLCAkb2xkLCAkbmV3OwotCQl9IGVsc2UgewotCQkJc2xlZXAgJHNjYW5fZGVsYXk7Ci0JCX0KLQl9Ci0KLQl1bmxpbmsgJHBpZGZpbGU7Ci19Ci0KLSRkZWJ1Z19mbGFnID0gMDsKLUdldE9wdGlvbnMoCi0JJ2RlYnVnfGQnID0+IFwkZGVidWdfZmxhZywKLQknc210cC11c2VyPXMnID0+IFwkZXhfdXNlciwKLSkgb3IgZGllICJ1c2FnZTogJDAgWy0tZGVidWddIFstLXNtdHAtdXNlcj11c2VyXVxuIjsKLQotJGV4X3Bhc3MgPSBpbnB1dF9ub2VjaG8oIiRleF91c2VyIFNNVFAgcGFzc3dvcmQ6ICIpCi0JaWYgKCRleF91c2VyICYmICEkZXhfcGFzcyk7Ci0KLWlmICgkZGVidWdfZmxhZykgewotCWRhZW1vbl9sb29wOwotCWV4aXQgMDsKLX0KLQotbXkgJGRhZW1vbiA9IGZvcmsoKTsKLWlmICghZGVmaW5lZCAkZGFlbW9uKSB7Ci0JZGllICJjYW5ub3QgZm9yayBkYWVtb246ICQhIjsKLX0gZWxzaWYgKDAgPT0gJGRhZW1vbikgewotCWNsb3NlIFNURElOO29wZW4oU1RESU4sICcvZGV2L251bGwnKTsKLQljbG9zZSBTVERPVVQ7b3BlbihTVERPVVQsICc+L2Rldi9udWxsJyk7Ci0JY2xvc2UgU1RERVJSO29wZW4oU1RERVJSLCAnPi9kZXYvbnVsbCcpOwotCWRhZW1vbl9sb29wOwotCWV4aXQgMDsKLX0gZWxzZSB7Ci0JcHJpbnQgIkRhZW1vbiAkZGFlbW9uIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQuXG4iOwotfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9jb250aW51b3VzL3Bvc3QtcmVjZWl2ZS1jaW5vdGlmeSBiL2NvbnRyaWIvY29udGludW91cy9wb3N0LXJlY2VpdmUtY2lub3RpZnkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZjVhNjAuLjAwMDAwMDAKLS0tIGEvY29udHJpYi9jb250aW51b3VzL3Bvc3QtcmVjZWl2ZS1jaW5vdGlmeQorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0jIS91c3IvYmluL3BlcmwKLSMKLSMgQSBob29rIHRoYXQgbm90aWZpZXMgaXRzIGNvbXBhbmlvbiBjaWRhZW1vbiB0aHJvdWdoIGEgc2ltcGxlCi0jIHF1ZXVlIGZpbGUgdGhhdCBhIHJlZiBoYXMgYmVlbiB1cGRhdGVkIHZpYSBhIHB1c2ggKGFjdHVhbGx5Ci0jIGJ5IGEgcmVjZWl2ZS1wYWNrIHJ1bm5pbmcgb24gdGhlIHNlcnZlcikuCi0jCi0jIFNlZSBjaWRhZW1vbiBmb3IgcGVyLXJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBkZXRhaWxzLgotIwotIyBUbyB1c2UgdGhpcyBob29rLCBhZGQgaXQgYXMgdGhlIHBvc3QtcmVjZWl2ZSBob29rLCBtYWtlIGl0Ci0jIGV4ZWN1dGFibGUsIGFuZCBzZXQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KLSMKLQotbG9jYWwgJEVOVntQQVRIfSA9ICcvb3B0L2dpdC9iaW4nOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwotdXNlIEZpbGU6OlNwZWM7Ci11c2UgU3RvcmFibGUgcXcocmV0cmlldmUgbnN0b3JlKTsKLXVzZSBGY250bCAnOmZsb2NrJzsKLQotbXkgJGdpdF9kaXIgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCRFTlZ7R0lUX0RJUn0pOwotbXkgJHF1ZXVlX25hbWUgPSBgZ2l0IGNvbmZpZyAtLWdldCBidWlsZGVyLnF1ZXVlYDtjaG9wICRxdWV1ZV9uYW1lOwotJHF1ZXVlX25hbWUgPX4gbSxeKFteXHNdKykkLDsgJHF1ZXVlX25hbWUgPSAkMTsgIyB1bnRhaW50Ci11bmxlc3MgKCRxdWV1ZV9uYW1lKSB7Ci0JMSB3aGlsZSA8U1RESU4+OwotCXByaW50IFNUREVSUiAiXG5lcnJvcjogYnVpbGRlci5xdWV1ZSBub3Qgc2V0LiAgTm90IGVucXVlaW5nLlxuXG4iOwotCWV4aXQ7Ci19Ci1teSAkcXVldWVfbG9jayA9ICIkcXVldWVfbmFtZS5sb2NrIjsKLQotbXkgQHNraXA7Ci1vcGVuIFMsICJnaXQgY29uZmlnIC0tZ2V0LWFsbCBidWlsZGVyLnNraXB8IjsKLXdoaWxlICg8Uz4pIHsKLQljaG9wOwotCXB1c2ggQHNraXAsICRfOwotfQotY2xvc2UgUzsKLQotbXkgQG5ld19icmFuY2hfYmFzZTsKLW9wZW4gUywgImdpdCBjb25maWcgLS1nZXQtYWxsIGJ1aWxkZXIubmV3QnJhbmNoQmFzZXwiOwotd2hpbGUgKDxTPikgewotCWNob3A7Ci0JcHVzaCBAbmV3X2JyYW5jaF9iYXNlLCAkXzsKLX0KLWNsb3NlIFM7Ci0KLXN1YiBza2lwICgkKQotewotCWxvY2FsICRfID0gc2hpZnQ7Ci0JZm9yZWFjaCBteSAkcCAoQHNraXApIHsKLQkJcmV0dXJuIDEgaWYgL14kcC87Ci0JfQotCTA7Ci19Ci0KLW9wZW4gTE9DSywgIj4kcXVldWVfbG9jayIgb3IgZGllICJDYW4ndCBvcGVuICRxdWV1ZV9sb2NrOiAkISI7Ci1mbG9jayBMT0NLLCBMT0NLX0VYOwotCi1teSAkcXVldWUgPSAtZiAkcXVldWVfbmFtZSA/IHJldHJpZXZlICRxdWV1ZV9uYW1lIDogW107Ci1teSAlZXhpc3Rpbmc7Ci1mb3JlYWNoIG15ICRyIChAJHF1ZXVlKSB7Ci0JbXkgKCRnZCwgJHJlZikgPSBAJHI7Ci0JJGV4aXN0aW5neyRnZH17JHJlZn0gPSAkcjsKLX0KLQotbXkgQG5ld19icmFuY2hfY29tbWl0czsKLW15ICRsb2FkZWRfbmV3X2JyYW5jaF9jb21taXRzID0gMDsKLQotd2hpbGUgKDxTVERJTj4pIHsKLQljaG9wOwotCW15ICgkb2xkLCAkbmV3LCAkcmVmKSA9IHNwbGl0IC8gLywgJF8sIDM7Ci0KLQluZXh0IGlmICRvbGQgZXEgJG5ldzsKLQluZXh0IGlmICRuZXcgPX4gL14wezQwfSQvOwotCW5leHQgaWYgc2tpcCAkcmVmOwotCi0JbXkgJHIgPSAkZXhpc3Rpbmd7JGdpdF9kaXJ9eyRyZWZ9OwotCWlmICgkcikgewotCQkkci0+WzNdID0gJG5ldzsKLQl9IGVsc2UgewotCQlpZiAoJG9sZCA9fiAvXjB7NDB9JC8pIHsKLQkJCWlmICghJGxvYWRlZF9uZXdfYnJhbmNoX2NvbW1pdHMgJiYgQG5ld19icmFuY2hfYmFzZSkgewotCQkJCW9wZW4gTSwnLXwnLCdnaXQnLCdzaG93LXJlZicsQG5ld19icmFuY2hfYmFzZTsKLQkJCQl3aGlsZSAoPE0+KSB7Ci0JCQkJCSgkXykgPSBzcGxpdCAvIC8sICRfOwotCQkJCQlwdXNoIEBuZXdfYnJhbmNoX2NvbW1pdHMsICRfOwotCQkJCX0KLQkJCQljbG9zZSBNOwotCQkJCSRsb2FkZWRfbmV3X2JyYW5jaF9jb21taXRzID0gMTsKLQkJCX0KLQkJCSRvbGQgPSBbQG5ld19icmFuY2hfY29tbWl0c107Ci0JCX0gZWxzZSB7Ci0JCQkkb2xkID0gWyRvbGRdOwotCQl9Ci0KLQkJJHIgPSBbJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXddOwotCQkkZXhpc3Rpbmd7JGdpdF9kaXJ9eyRyZWZ9ID0gJHI7Ci0JCXB1c2ggQCRxdWV1ZSwgJHI7Ci0JfQotfQotbnN0b3JlICRxdWV1ZSwgJHF1ZXVlX25hbWU7Ci0KLWZsb2NrIExPQ0ssIExPQ0tfVU47Ci1jbG9zZSBMT0NLOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL2dub21lLWtleXJpbmcvZ2l0LWNyZWRlbnRpYWwtZ25vbWUta2V5cmluZy5jIGIvY29udHJpYi9jcmVkZW50aWFsL2dub21lLWtleXJpbmcvZ2l0LWNyZWRlbnRpYWwtZ25vbWUta2V5cmluZy5jCmluZGV4IDQxZjYxYzUuLmYyY2RlZmUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY3JlZGVudGlhbC9nbm9tZS1rZXlyaW5nL2dpdC1jcmVkZW50aWFsLWdub21lLWtleXJpbmcuYworKysgYi9jb250cmliL2NyZWRlbnRpYWwvZ25vbWUta2V5cmluZy9naXQtY3JlZGVudGlhbC1nbm9tZS1rZXlyaW5nLmMKQEAgLTQwMSw3ICs0MDEsNyBAQAogCWNvbnN0IGNoYXIgKmJhc2VuYW1lID0gc3RycmNocihuYW1lLCcvJyk7CiAKIAliYXNlbmFtZSA9IChiYXNlbmFtZSkgPyBiYXNlbmFtZSArIDEgOiBuYW1lOwotCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIDwiLCBiYXNlbmFtZSk7CisJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgPCIsIGJhc2VuYW1lKTsKIAl3aGlsZSh0cnlfb3AtPm5hbWUpIHsKIAkJZnByaW50ZihzdGRlcnIsIiVzIiwodHJ5X29wKyspLT5uYW1lKTsKIAkJaWYodHJ5X29wLT5uYW1lKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL01ha2VmaWxlIGIvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYjc2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvTWFrZWZpbGUKQEAgLTAsMCArMSw1IEBACit0ZXN0OgorCS4vdGVzdC5wbAorCit0ZXN0dmVyYm9zZToKKwkuL3Rlc3QucGwgLWQgLXYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy9naXQtY3JlZGVudGlhbC1uZXRyYyBiL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy9naXQtY3JlZGVudGlhbC1uZXRyYwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YzUxYzQzCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL2dpdC1jcmVkZW50aWFsLW5ldHJjCkBAIC0wLDAgKzEsNDIxIEBACisjIS91c3IvYmluL3BlcmwKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEdldG9wdDo6TG9uZzsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKKworbXkgJFZFUlNJT04gPSAiMC4xIjsKKworbXkgJW9wdGlvbnMgPSAoCisJICAgICAgIGhlbHAgPT4gMCwKKwkgICAgICAgZGVidWcgPT4gMCwKKwkgICAgICAgdmVyYm9zZSA9PiAwLAorCSAgICAgICBpbnNlY3VyZSA9PiAwLAorCSAgICAgICBmaWxlID0+IFtdLAorCisJICAgICAgICMgaWRlbnRpY2FsIHRva2VuIG1hcHMsIGUuZy4gaG9zdCAtPiBob3N0LCB3aWxsIGJlIGluc2VydGVkIGxhdGVyCisJICAgICAgIHRtYXAgPT4geworCQkJcG9ydCA9PiAncHJvdG9jb2wnLAorCQkJbWFjaGluZSA9PiAnaG9zdCcsCisJCQlwYXRoID0+ICdwYXRoJywKKwkJCWxvZ2luID0+ICd1c2VybmFtZScsCisJCQl1c2VyID0+ICd1c2VybmFtZScsCisJCQlwYXNzd29yZCA9PiAncGFzc3dvcmQnLAorCQkgICAgICAgfQorCSAgICAgICk7CisKKyMgTWFwIGVhY2ggY3JlZGVudGlhbCBwcm90b2NvbCB0b2tlbiB0byBpdHNlbGYgb24gdGhlIG5ldHJjIHNpZGUuCitmb3JlYWNoICh2YWx1ZXMgJXskb3B0aW9uc3t0bWFwfX0pIHsKKwkkb3B0aW9uc3t0bWFwfS0+eyRffSA9ICRfOworfQorCisjIE5vdywgJG9wdGlvbnN7dG1hcH0gaGFzIGEgbWFwcGluZyBmcm9tIHRoZSBuZXRyYyBmb3JtYXQgdG8gdGhlIEdpdCBjcmVkZW50aWFsCisjIGhlbHBlciBwcm90b2NvbC4KKworIyBOZXh0LCB3ZSBidWlsZCB0aGUgcmV2ZXJzZSB0b2tlbiBtYXAuCisKKyMgV2hlbiAkcm1hcHtmb299IGNvbnRhaW5zICdiYXInLCB0aGF0IG1lYW5zIHRoYXQgd2hhdCB0aGUgR2l0IGNyZWRlbnRpYWwgaGVscGVyCisjIHByb3RvY29sIGNhbGxzICdiYXInIGlzIGZvdW5kIGFzICdmb28nIGluIHRoZSBuZXRyYy9hdXRoaW5mbyBmaWxlLiAgS2V5cyBpbgorIyAlcm1hcCBhcmUgd2hhdCB3ZSBleHBlY3QgdG8gcmVhZCBmcm9tIHRoZSBuZXRyYy9hdXRoaW5mbyBmaWxlLgorCitteSAlcm1hcDsKK2ZvcmVhY2ggbXkgJGsgKGtleXMgJXskb3B0aW9uc3t0bWFwfX0pIHsKKwlwdXNoIEB7JHJtYXB7JG9wdGlvbnN7dG1hcH0tPnska319fSwgJGs7Cit9CisKK0dldG9wdDo6TG9uZzo6Q29uZmlndXJlKCJidW5kbGluZyIpOworCisjIFRPRE86IG1heWJlIGFsbG93IHRoZSB0b2tlbiBtYXAgJG9wdGlvbnN7dG1hcH0gdG8gYmUgY29uZmlndXJhYmxlLgorR2V0T3B0aW9ucyhcJW9wdGlvbnMsCisgICAgICAgICAgICJoZWxwfGgiLAorICAgICAgICAgICAiZGVidWd8ZCIsCisgICAgICAgICAgICJpbnNlY3VyZXxrIiwKKyAgICAgICAgICAgInZlcmJvc2V8diIsCisgICAgICAgICAgICJmaWxlfGY9c0AiLAorICAgICAgICAgICk7CisKK2lmICgkb3B0aW9uc3toZWxwfSkgeworCW15ICRzaG9ydG5hbWUgPSBiYXNlbmFtZSgkMCk7CisJJHNob3J0bmFtZSA9fiBzL2dpdC1jcmVkZW50aWFsLS8vOworCisJcHJpbnQgPDxFT0hJUFBVUzsKKworJDAgWy1mIEFVVEhGSUxFMV0gWy1mIEFVVEhGSUxFTl0gWy1kXSBbLXZdIFsta10gZ2V0CisKK1ZlcnNpb24gJFZFUlNJT04gYnkgdHp6XEBsaWZlbG9ncy5jb20uICBMaWNlbnNlOiBCU0QuCisKK09wdGlvbnM6CisKKyAgLWZ8LS1maWxlIEFVVEhGSUxFIDogc3BlY2lmeSBuZXRyYy1zdHlsZSBmaWxlcy4gIEZpbGVzIHdpdGggdGhlIC5ncGcgZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgZGVjcnlwdGVkIGJ5IEdQRyBiZWZvcmUgcGFyc2luZy4gIE11bHRpcGxlIC1mCisgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgT0suICBUaGV5IGFyZSBwcm9jZXNzZWQgaW4gb3JkZXIsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgbWF0Y2hpbmcgZW50cnkgZm91bmQgaXMgcmV0dXJuZWQgdmlhIHRoZSBjcmVkZW50aWFsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHBlciBwcm90b2NvbCAoc2VlIGJlbG93KS4KKworICAgICAgICAgICAgICAgICAgICAgICBXaGVuIG5vIC1mIG9wdGlvbiBpcyBnaXZlbiwgLmF1dGhpbmZvLmdwZywgLm5ldHJjLmdwZywKKwkJICAgICAgIC5hdXRoaW5mbywgYW5kIC5uZXRyYyBmaWxlcyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IGFyZSB1c2VkCisJCSAgICAgICBpbiB0aGlzIG9yZGVyLgorCisgIC1rfC0taW5zZWN1cmUgICAgICA6IGlnbm9yZSBiYWQgZmlsZSBvd25lcnNoaXAgb3IgcGVybWlzc2lvbnMKKworICAtZHwtLWRlYnVnICAgICAgICAgOiB0dXJuIG9uIGRlYnVnZ2luZyAoZGV2ZWxvcGVyIGluZm8pCisKKyAgLXZ8LS12ZXJib3NlICAgICAgIDogYmUgbW9yZSB2ZXJib3NlIChzaG93IGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBmb3VuZCkKKworVG8gZW5hYmxlIHRoaXMgY3JlZGVudGlhbCBoZWxwZXI6CisKKyAgZ2l0IGNvbmZpZyBjcmVkZW50aWFsLmhlbHBlciAnJHNob3J0bmFtZSAtZiBBVVRIRklMRTEgLWYgQVVUSEZJTEUyJworCisoTm90ZSB0aGF0IEdpdCB3aWxsIHByZXBlbmQgImdpdC1jcmVkZW50aWFsLSIgdG8gdGhlIGhlbHBlciBuYW1lIGFuZCBsb29rIGZvciBpdAoraW4gdGhlIHBhdGguKQorCisuLi5hbmQgaWYgeW91IHdhbnQgbG90cyBvZiBkZWJ1Z2dpbmcgaW5mbzoKKworICBnaXQgY29uZmlnIGNyZWRlbnRpYWwuaGVscGVyICckc2hvcnRuYW1lIC1mIEFVVEhGSUxFIC1kJworCisuLi5vciB0byBzZWUgdGhlIGZpbGVzIG9wZW5lZCBhbmQgZGF0YSBmb3VuZDoKKworICBnaXQgY29uZmlnIGNyZWRlbnRpYWwuaGVscGVyICckc2hvcnRuYW1lIC1mIEFVVEhGSUxFIC12JworCitPbmx5ICJnZXQiIG1vZGUgaXMgc3VwcG9ydGVkIGJ5IHRoaXMgY3JlZGVudGlhbCBoZWxwZXIuICBJdCBvcGVucyBldmVyeSBBVVRIRklMRQorYW5kIGxvb2tzIGZvciB0aGUgZmlyc3QgZW50cnkgdGhhdCBtYXRjaGVzIHRoZSByZXF1ZXN0ZWQgc2VhcmNoIGNyaXRlcmlhOgorCisgJ3BvcnR8cHJvdG9jb2wnOgorICAgVGhlIHByb3RvY29sIHRoYXQgd2lsbCBiZSB1c2VkIChlLmcuLCBodHRwcykuIChwcm90b2NvbD1YKQorCisgJ21hY2hpbmV8aG9zdCc6CisgICBUaGUgcmVtb3RlIGhvc3RuYW1lIGZvciBhIG5ldHdvcmsgY3JlZGVudGlhbC4gKGhvc3Q9WCkKKworICdwYXRoJzoKKyAgIFRoZSBwYXRoIHdpdGggd2hpY2ggdGhlIGNyZWRlbnRpYWwgd2lsbCBiZSB1c2VkLiAocGF0aD1YKQorCisgJ2xvZ2lufHVzZXJ8dXNlcm5hbWUnOgorICAgVGhlIGNyZWRlbnRpYWzigJlzIHVzZXJuYW1lLCBpZiB3ZSBhbHJlYWR5IGhhdmUgb25lLiAodXNlcm5hbWU9WCkKKworVGh1cywgd2hlbiB3ZSBnZXQgdGhpcyBxdWVyeSBvbiBTVERJTjoKKworaG9zdD1naXRodWIuY29tCitwcm90b2NvbD1odHRwcwordXNlcm5hbWU9dHp6CisKK3RoaXMgY3JlZGVudGlhbCBoZWxwZXIgd2lsbCBsb29rIGZvciB0aGUgZmlyc3QgZW50cnkgaW4gZXZlcnkgQVVUSEZJTEUgdGhhdAorbWF0Y2hlcworCittYWNoaW5lIGdpdGh1Yi5jb20gcG9ydCBodHRwcyBsb2dpbiB0enoKKworT1IKKworbWFjaGluZSBnaXRodWIuY29tIHByb3RvY29sIGh0dHBzIGxvZ2luIHR6egorCitPUi4uLiBldGMuIGFjY2VwdGFibGUgdG9rZW5zIGFzIGxpc3RlZCBhYm92ZS4gIEFueSB1bmtub3duIHRva2VucyBhcmUKK3NpbXBseSBpZ25vcmVkLgorCitUaGVuLCB0aGUgaGVscGVyIHdpbGwgcHJpbnQgb3V0IHdoYXRldmVyIHRva2VucyBpdCBnb3QgZnJvbSB0aGUgZW50cnksIGluY2x1ZGluZworInBhc3N3b3JkIiB0b2tlbnMsIG1hcHBpbmcgYmFjayB0byBHaXQncyBoZWxwZXIgcHJvdG9jb2w7IGUuZy4gInBvcnQiIGlzIG1hcHBlZAorYmFjayB0byAicHJvdG9jb2wiLiAgQW55IHJlZHVuZGFudCBlbnRyeSB0b2tlbnMgKHBhcnQgb2YgdGhlIG9yaWdpbmFsIHF1ZXJ5KSBhcmUKK3NraXBwZWQuCisKK0FnYWluLCBub3RlIHRoYXQgb25seSB0aGUgZmlyc3QgbWF0Y2hpbmcgZW50cnkgZnJvbSBhbGwgdGhlIEFVVEhGSUxFcywgcHJvY2Vzc2VkCitpbiB0aGUgc2VxdWVuY2UgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSwgaXMgdXNlZC4KKworTmV0cmMvYXV0aGluZm8gdG9rZW5zIGNhbiBiZSBxdW90ZWQgYXMgJ1NUUklORycgb3IgIlNUUklORyIuCisKK05vIGNhY2hpbmcgaXMgcGVyZm9ybWVkIGJ5IHRoaXMgY3JlZGVudGlhbCBoZWxwZXIuCisKK0VPSElQUFVTCisKKwlleGl0IDA7Cit9CisKK215ICRtb2RlID0gc2hpZnQgQEFSR1Y7CisKKyMgQ3JlZGVudGlhbHMgbXVzdCBnZXQgYSBwYXJhbWV0ZXIsIHNvIGRpZSBpZiBpdCdzIG1pc3NpbmcuCitkaWUgIlN5bnRheDogJDAgWy1mIEFVVEhGSUxFMV0gWy1mIEFVVEhGSUxFTl0gWy1kXSBnZXQiIHVubGVzcyBkZWZpbmVkICRtb2RlOworCisjIE9ubHkgc3VwcG9ydCAnZ2V0JyBtb2RlOyB3aXRoIGFueSBvdGhlciB1bnN1cHBvcnRlZCBvbmVzIHdlIGp1c3QgZXhpdC4KK2V4aXQgMCB1bmxlc3MgJG1vZGUgZXEgJ2dldCc7CisKK215ICRmaWxlcyA9ICRvcHRpb25ze2ZpbGV9OworCisjIGlmIG5vIGZpbGVzIHdlcmUgZ2l2ZW4sIHVzZSBhIHByZWRlZmluZWQgbGlzdC4KKyMgbm90ZSB0aGF0IC5ncGcgZmlsZXMgY29tZSBmaXJzdAordW5sZXNzIChzY2FsYXIgQCRmaWxlcykgeworCW15IEBjYW5kaWRhdGVzID0gcXdbCisJCQkJICAgfi8uYXV0aGluZm8uZ3BnCisJCQkJICAgfi8ubmV0cmMuZ3BnCisJCQkJICAgfi8uYXV0aGluZm8KKwkJCQkgICB+Ly5uZXRyYworCQkJICBdOworCisJJGZpbGVzID0gJG9wdGlvbnN7ZmlsZX0gPSBbIG1hcCB7IGdsb2IgJF8gfSBAY2FuZGlkYXRlcyBdOworfQorCitteSAkcXVlcnkgPSByZWFkX2NyZWRlbnRpYWxfZGF0YV9mcm9tX3N0ZGluKCk7CisKK0ZJTEU6Citmb3JlYWNoIG15ICRmaWxlIChAJGZpbGVzKSB7CisJbXkgJGdwZ21vZGUgPSAkZmlsZSA9fiBtL1wuZ3BnJC87CisJdW5sZXNzICgtciAkZmlsZSkgeworCQlsb2dfdmVyYm9zZSgiVW5hYmxlIHRvIHJlYWQgJGZpbGU7IHNraXBwaW5nIGl0Iik7CisJCW5leHQgRklMRTsKKwl9CisKKwkjIHRoZSBmb2xsb3dpbmcgY2hlY2sgaXMgY29waWVkIGZyb20gTmV0OjpOZXRyYywgZm9yIG5vbi1HUEcgZmlsZXMKKwkjIE9TLzIgYW5kIFdpbjMyIGRvIG5vdCBoYW5kbGUgc3RhdCBpbiBhIHdheSBjb21wYXRpYmxlIHdpdGggdGhpcyBjaGVjayA6LSgKKwl1bmxlc3MgKCRncGdtb2RlIHx8ICRvcHRpb25ze2luc2VjdXJlfSB8fAorCQkkXk8gZXEgJ29zMicKKwkJfHwgJF5PIGVxICdNU1dpbjMyJworCQl8fCAkXk8gZXEgJ01hY09TJworCQl8fCAkXk8gPX4gL15jeWd3aW4vKSB7CisJCW15IEBzdGF0ID0gc3RhdCgkZmlsZSk7CisKKwkJaWYgKEBzdGF0KSB7CisJCQlpZiAoJHN0YXRbMl0gJiAwNzcpIHsKKwkJCQlsb2dfdmVyYm9zZSgiSW5zZWN1cmUgJGZpbGUgKG1vZGU9JTA0byk7IHNraXBwaW5nIGl0IiwKKwkJCQkJICAgICRzdGF0WzJdICYgMDc3NzcpOworCQkJCW5leHQgRklMRTsKKwkJCX0KKworCQkJaWYgKCRzdGF0WzRdICE9ICQ8KSB7CisJCQkJbG9nX3ZlcmJvc2UoIk5vdCBvd25lciBvZiAkZmlsZTsgc2tpcHBpbmcgaXQiKTsKKwkJCQluZXh0IEZJTEU7CisJCQl9CisJCX0KKwl9CisKKwlteSBAZW50cmllcyA9IGxvYWRfbmV0cmMoJGZpbGUsICRncGdtb2RlKTsKKworCXVubGVzcyAoc2NhbGFyIEBlbnRyaWVzKSB7CisJCWlmICgkISkgeworCQkJbG9nX3ZlcmJvc2UoIlVuYWJsZSB0byBvcGVuICRmaWxlOiAkISIpOworCQl9IGVsc2UgeworCQkJbG9nX3ZlcmJvc2UoIk5vIG5ldHJjIGVudHJpZXMgZm91bmQgaW4gJGZpbGUiKTsKKwkJfQorCisJCW5leHQgRklMRTsKKwl9CisKKwlteSAkZW50cnkgPSBmaW5kX25ldHJjX2VudHJ5KCRxdWVyeSwgQGVudHJpZXMpOworCWlmICgkZW50cnkpIHsKKwkJcHJpbnRfY3JlZGVudGlhbF9kYXRhKCRlbnRyeSwgJHF1ZXJ5KTsKKwkJIyB3ZSdyZSBkb25lIQorCQlsYXN0IEZJTEU7CisJfQorfQorCitleGl0IDA7CisKK3N1YiBsb2FkX25ldHJjIHsKKwlteSAkZmlsZSA9IHNoaWZ0IEBfOworCW15ICRncGdtb2RlID0gc2hpZnQgQF87CisKKwlteSAkaW87CisJaWYgKCRncGdtb2RlKSB7CisJCW15IEBjbWQgPSAocXcoZ3BnIC0tZGVjcnlwdCksICRmaWxlKTsKKwkJbG9nX3ZlcmJvc2UoIlVzaW5nIEdQRyB0byBvcGVuICRmaWxlOiBbQGNtZF0iKTsKKwkJb3BlbiAkaW8sICItfCIsIEBjbWQ7CisJfSBlbHNlIHsKKwkJbG9nX3ZlcmJvc2UoIk9wZW5pbmcgJGZpbGUuLi4iKTsKKwkJb3BlbiAkaW8sICc8JywgJGZpbGU7CisJfQorCisJIyBub3RoaW5nIHRvIGRvIGlmIHRoZSBvcGVuIGZhaWxlZCAod2UgbG9nIHRoZSBlcnJvciBsYXRlcikKKwlyZXR1cm4gdW5sZXNzICRpbzsKKworCSMgTmV0OjpOZXRyYyBkb2VzIHRoaXMsIGJ1dCB0aGUgZnVuY3Rpb25hbGl0eSBpcyBtZXJnZWQgd2l0aCB0aGUgZmlsZQorCSMgZGV0ZWN0aW9uIGxvZ2ljLCBzbyB3ZSBoYXZlIHRvIGV4dHJhY3QganVzdCB0aGUgcGFydCB3ZSBuZWVkCisJbXkgQG5ldHJjX2VudHJpZXMgPSBuZXRfbmV0cmNfbG9hZGVyKCRpbyk7CisKKwkjIHRoZXNlIGVudHJpZXMgd2lsbCB1c2UgdGhlIGNyZWRlbnRpYWwgaGVscGVyIHByb3RvY29sIHRva2VuIG5hbWVzCisJbXkgQGVudHJpZXM7CisKKwlmb3JlYWNoIG15ICRuZW50cnkgKEBuZXRyY19lbnRyaWVzKSB7CisJCW15ICVlbnRyeTsKKwkJbXkgJG51bV9wb3J0OworCisJCWlmICghZGVmaW5lZCAkbmVudHJ5LT57bWFjaGluZX0pIHsKKwkJCW5leHQ7CisJCX0KKwkJaWYgKGRlZmluZWQgJG5lbnRyeS0+e3BvcnR9ICYmICRuZW50cnktPntwb3J0fSA9fiBtL15cZCskLykgeworCQkJJG51bV9wb3J0ID0gJG5lbnRyeS0+e3BvcnR9OworCQkJZGVsZXRlICRuZW50cnktPntwb3J0fTsKKwkJfQorCisJCSMgY3JlYXRlIHRoZSBuZXcgZW50cnkgZm9yIHRoZSBjcmVkZW50aWFsIGhlbHBlciBwcm90b2NvbAorCQkkZW50cnl7JG9wdGlvbnN7dG1hcH0tPnskX319ID0gJG5lbnRyeS0+eyRffSBmb3JlYWNoIGtleXMgJSRuZW50cnk7CisKKwkJIyBmb3IgImhvc3QgWCBwb3J0IFkiIHdoZXJlIFkgaXMgYW4gaW50ZWdlciAoY2FwdHVyZWQgYnkKKwkJIyAkbnVtX3BvcnQgYWJvdmUpLCBzZXQgdGhlIGhvc3QgdG8gIlg6WSIKKwkJaWYgKGRlZmluZWQgJGVudHJ5e2hvc3R9ICYmIGRlZmluZWQgJG51bV9wb3J0KSB7CisJCQkkZW50cnl7aG9zdH0gPSBqb2luKCc6JywgJGVudHJ5e2hvc3R9LCAkbnVtX3BvcnQpOworCQl9CisKKwkJcHVzaCBAZW50cmllcywgXCVlbnRyeTsKKwl9CisKKwlyZXR1cm4gQGVudHJpZXM7Cit9CisKK3N1YiBuZXRfbmV0cmNfbG9hZGVyIHsKKwlteSAkZmggPSBzaGlmdCBAXzsKKwlteSBAZW50cmllczsKKwlteSAoJG1hY2gsICRtYWNkZWYsICR0b2ssIEB0b2spOworCisgICAgTElORToKKwl3aGlsZSAoPCRmaD4pIHsKKwkJdW5kZWYgJG1hY2RlZiBpZiAvXEFcblxaLzsKKworCQlpZiAoJG1hY2RlZikgeworCQkJbmV4dCBMSU5FOworCQl9CisKKwkJcy9eXHMqLy87CisJCWNob21wOworCisJCXdoaWxlIChsZW5ndGggJiYgcy9eKCIoKD86W14iXSt8XFwuKSopInwoKD86W15cXFxzXSt8XFwuKSopKVxzKi8vKSB7CisJCQkobXkgJHRvayA9ICQrKSA9fiBzL1xcKC4pLyQxL2c7CisJCQlwdXNoKEB0b2ssICR0b2spOworCQl9CisKKwkgICAgVE9LRU46CisJCXdoaWxlIChAdG9rKSB7CisJCQlpZiAoJHRva1swXSBlcSAiZGVmYXVsdCIpIHsKKwkJCQlzaGlmdChAdG9rKTsKKwkJCQkkbWFjaCA9IHsgbWFjaGluZSA9PiB1bmRlZiB9OworCQkJCW5leHQgVE9LRU47CisJCQl9CisKKwkJCSR0b2sgPSBzaGlmdChAdG9rKTsKKworCQkJaWYgKCR0b2sgZXEgIm1hY2hpbmUiKSB7CisJCQkJbXkgJGhvc3QgPSBzaGlmdCBAdG9rOworCQkJCSRtYWNoID0geyBtYWNoaW5lID0+ICRob3N0IH07CisJCQkJcHVzaCBAZW50cmllcywgJG1hY2g7CisJCQl9IGVsc2lmIChleGlzdHMgJG9wdGlvbnN7dG1hcH0tPnskdG9rfSkgeworCQkJCXVubGVzcyAoJG1hY2gpIHsKKwkJCQkJbG9nX2RlYnVnKCJTa2lwcGluZyB0b2tlbiAkdG9rIGJlY2F1c2Ugbm8gbWFjaGluZSB3YXMgZ2l2ZW4iKTsKKwkJCQkJbmV4dCBUT0tFTjsKKwkJCQl9CisKKwkJCQlteSAkdmFsdWUgPSBzaGlmdCBAdG9rOworCQkJCXVubGVzcyAoZGVmaW5lZCAkdmFsdWUpIHsKKwkJCQkJbG9nX2RlYnVnKCJUb2tlbiAkdG9rIGhhZCBubyB2YWx1ZSwgc2tpcHBpbmcgaXQuIik7CisJCQkJCW5leHQgVE9LRU47CisJCQkJfQorCisJCQkJIyBGb2xsb3dpbmcgbGluZSBhZGRlZCBieSBybWVycmVsbCB0byByZW1vdmUgJy8nIGVzY2FwZSBjaGFyIGluIC5uZXRyYworCQkJCSR2YWx1ZSA9fiBzL1wvXFwvXFwvZzsKKwkJCQkkbWFjaC0+eyR0b2t9ID0gJHZhbHVlOworCQkJfSBlbHNpZiAoJHRvayBlcSAibWFjZGVmIikgeyAjIHdlIGlnbm9yZSBtYWNyb3MKKwkJCQluZXh0IFRPS0VOIHVubGVzcyAkbWFjaDsKKwkJCQlteSAkdmFsdWUgPSBzaGlmdCBAdG9rOworCQkJCSRtYWNkZWYgPSAxOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIEBlbnRyaWVzOworfQorCitzdWIgcmVhZF9jcmVkZW50aWFsX2RhdGFfZnJvbV9zdGRpbiB7CisJIyB0aGUgcXVlcnk6IHN0YXJ0IHdpdGggZXZlcnkgdG9rZW4gd2l0aCBubyB2YWx1ZQorCW15ICVxID0gbWFwIHsgJF8gPT4gdW5kZWYgfSB2YWx1ZXMoJXskb3B0aW9uc3t0bWFwfX0pOworCisJd2hpbGUgKDxTVERJTj4pIHsKKwkJbmV4dCB1bmxlc3MgbS9eKFtePV0rKT0oLispLzsKKworCQlteSAoJHRva2VuLCAkdmFsdWUpID0gKCQxLCAkMik7CisJCWRpZSAiVW5rbm93biBzZWFyY2ggdG9rZW4gJHRva2VuIiB1bmxlc3MgZXhpc3RzICRxeyR0b2tlbn07CisJCSRxeyR0b2tlbn0gPSAkdmFsdWU7CisJCWxvZ19kZWJ1ZygiV2Ugd2VyZSBnaXZlbiBzZWFyY2ggdG9rZW4gJHRva2VuIGFuZCB2YWx1ZSAkdmFsdWUiKTsKKwl9CisKKwlmb3JlYWNoIChzb3J0IGtleXMgJXEpIHsKKwkJbG9nX2RlYnVnKCJTZWFyY2hpbmcgZm9yICVzID0gJXMiLCAkXywgJHF7JF99IHx8ICcoYW55IHZhbHVlKScpOworCX0KKworCXJldHVybiBcJXE7Cit9CisKKyMgdGFrZXMgdGhlIHNlYXJjaCB0b2tlbnMgYW5kIHRoZW4gYSBsaXN0IG9mIGVudHJpZXMKKyMgZWFjaCBlbnRyeSBpcyBhIGhhc2ggcmVmZXJlbmNlCitzdWIgZmluZF9uZXRyY19lbnRyeSB7CisJbXkgJHF1ZXJ5ID0gc2hpZnQgQF87CisKKyAgICBFTlRSWToKKwlmb3JlYWNoIG15ICRlbnRyeSAoQF8pCisJeworCQlteSAkZW50cnlfdGV4dCA9IGpvaW4gJywgJywgbWFwIHsgIiRfPSRlbnRyeS0+eyRffSIgfSBrZXlzICUkZW50cnk7CisJCWZvcmVhY2ggbXkgJGNoZWNrIChzb3J0IGtleXMgJSRxdWVyeSkgeworCQkJaWYgKGRlZmluZWQgJHF1ZXJ5LT57JGNoZWNrfSkgeworCQkJCWxvZ19kZWJ1ZygiY29tcGFyZSAlcyBbJXNdIHRvIFslc10gKGVudHJ5OiAlcykiLAorCQkJCQkgICRjaGVjaywKKwkJCQkJICAkZW50cnktPnskY2hlY2t9LAorCQkJCQkgICRxdWVyeS0+eyRjaGVja30sCisJCQkJCSAgJGVudHJ5X3RleHQpOworCQkJCXVubGVzcyAoJHF1ZXJ5LT57JGNoZWNrfSBlcSAkZW50cnktPnskY2hlY2t9KSB7CisJCQkJCW5leHQgRU5UUlk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlsb2dfZGVidWcoIk9LOiBhbnkgdmFsdWUgc2F0aXNmaWVzIGNoZWNrICRjaGVjayIpOworCQkJfQorCQl9CisKKwkJcmV0dXJuICRlbnRyeTsKKwl9CisKKwkjIG5vdGhpbmcgd2FzIGZvdW5kCisJcmV0dXJuOworfQorCitzdWIgcHJpbnRfY3JlZGVudGlhbF9kYXRhIHsKKwlteSAkZW50cnkgPSBzaGlmdCBAXzsKKwlteSAkcXVlcnkgPSBzaGlmdCBAXzsKKworCWxvZ19kZWJ1ZygiZW50cnkgaGFzIHBhc3NlZCBhbGwgdGhlIHNlYXJjaCBjaGVja3MiKTsKKyBUT0tFTjoKKwlmb3JlYWNoIG15ICRnaXRfdG9rZW4gKHNvcnQga2V5cyAlJGVudHJ5KSB7CisJCWxvZ19kZWJ1ZygibG9va2luZyBmb3IgdXNlZnVsIHRva2VuICRnaXRfdG9rZW4iKTsKKwkJIyBkb24ndCBwcmludCB1bmtub3duICh0byB0aGUgY3JlZGVudGlhbCBoZWxwZXIgcHJvdG9jb2wpIHRva2VucworCQluZXh0IFRPS0VOIHVubGVzcyBleGlzdHMgJHF1ZXJ5LT57JGdpdF90b2tlbn07CisKKwkJIyBkb24ndCBwcmludCB0aGluZ3MgYXNrZWQgaW4gdGhlIHF1ZXJ5ICh0aGUgZW50cnkgbWF0Y2hlcyB0aGVtKQorCQluZXh0IFRPS0VOIGlmIGRlZmluZWQgJHF1ZXJ5LT57JGdpdF90b2tlbn07CisKKwkJbG9nX2RlYnVnKCJGT1VORDogJGdpdF90b2tlbj0kZW50cnktPnskZ2l0X3Rva2VufSIpOworCQlwcmludGYgIiVzPSVzXG4iLCAkZ2l0X3Rva2VuLCAkZW50cnktPnskZ2l0X3Rva2VufTsKKwl9Cit9CitzdWIgbG9nX3ZlcmJvc2UgeworCXJldHVybiB1bmxlc3MgJG9wdGlvbnN7dmVyYm9zZX07CisJcHJpbnRmIFNUREVSUiBAXzsKKwlwcmludGYgU1RERVJSICJcbiI7Cit9CisKK3N1YiBsb2dfZGVidWcgeworCXJldHVybiB1bmxlc3MgJG9wdGlvbnN7ZGVidWd9OworCXByaW50ZiBTVERFUlIgQF87CisJcHJpbnRmIFNUREVSUiAiXG4iOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL3Rlc3QubmV0cmMgYi9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvdGVzdC5uZXRyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTExOWE5Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9jcmVkZW50aWFsL25ldHJjL3Rlc3QubmV0cmMKQEAgLTAsMCArMSwxMyBAQAorbWFjaGluZSBpbWFwIGxvZ2luIHR6ekBsaWZlbG9ncy5jb20gcG9ydCBpbWFwcyBwYXNzd29yZCBsZXRtZWtub3cKK21hY2hpbmUgaW1hcCBsb2dpbiBib2IgcG9ydCBpbWFwcyBwYXNzd29yZCBib2J3aWxsa25vdworCisjIGNvbW1lbnQgdGVzdAorCittYWNoaW5lIGltYXAyIGxvZ2luIHR6eiBwb3J0IDEwOTkgcGFzc3dvcmQgdHp6a25vdworbWFjaGluZSBpbWFwMiBsb2dpbiBib2IgcGFzc3dvcmQgYm9id2lsbGtub3cKKworIyBhbm90aGVyIGNvbW1hbmQKKworbWFjaGluZSBnaXRodWIuY29tCisgIG11bHRpbGluZXRva2VuIGFub3RoZXJ2YWx1ZQorICBsb2dpbiBjYXJvbCBwYXNzd29yZCBjYXJvbGtub3dzCmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvdGVzdC5wbCBiL2NvbnRyaWIvY3JlZGVudGlhbC9uZXRyYy90ZXN0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE2OWI2NDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2NyZWRlbnRpYWwvbmV0cmMvdGVzdC5wbApAQCAtMCwwICsxLDEwNiBAQAorIyEvdXNyL2Jpbi9wZXJsCisKK3VzZSB3YXJuaW5nczsKK3VzZSBzdHJpY3Q7Cit1c2UgVGVzdDsKK3VzZSBJUEM6Ok9wZW4yOworCitCRUdJTiB7IHBsYW4gdGVzdHMgPT4gMTUgfQorCitteSBAZ2xvYmFsX2NyZWRlbnRpYWxfYXJncyA9IEBBUkdWOworbXkgJG5ldHJjID0gJy4vdGVzdC5uZXRyYyc7CitwcmludCAiIyBUZXN0aW5nIGluc2VjdXJlIGZpbGUsIG5vdGhpbmcgc2hvdWxkIGJlIGZvdW5kXG4iOworY2htb2QgMDY0NCwgJG5ldHJjOworbXkgJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCQkgIHsgaG9zdCA9PiAnZ2l0aHViLmNvbScgfSk7CisKK29rKHNjYWxhciBrZXlzICUkY3JlZCwgMCwgIkdvdCAwIGtleXMgZnJvbSBpbnNlY3VyZSBmaWxlIik7CisKK3ByaW50ICIjIFRlc3RpbmcgbWlzc2luZyBmaWxlLCBub3RoaW5nIHNob3VsZCBiZSBmb3VuZFxuIjsKK2NobW9kIDA2NDQsICRuZXRyYzsKKyRjcmVkID0gcnVuX2NyZWRlbnRpYWwoWyctZicsICcvLy9ub3N1Y2hmaWxlLy8vJywgJ2dldCddLAorCQkgICAgICAgeyBob3N0ID0+ICdnaXRodWIuY29tJyB9KTsKKworb2soc2NhbGFyIGtleXMgJSRjcmVkLCAwLCAiR290IDAga2V5cyBmcm9tIG1pc3NpbmcgZmlsZSIpOworCitjaG1vZCAwNjAwLCAkbmV0cmM7CisKK3ByaW50ICIjIFRlc3Rpbmcgd2l0aCBpbnZhbGlkIGRhdGFcbiI7CiskY3JlZCA9IHJ1bl9jcmVkZW50aWFsKFsnLWYnLCAkbmV0cmMsICdnZXQnXSwKKwkJICAgICAgICJiYWQgZGF0YSIpOworb2soc2NhbGFyIGtleXMgJSRjcmVkLCA0LCAiR290IGZpcnN0IGZvdW5kIGtleXMgd2l0aCBiYWQgZGF0YSIpOworCitwcmludCAiIyBUZXN0aW5nIG5ldHJjIGZpbGUgZm9yIGEgbWlzc2luZyBjb3JvdmFtaWxrYmFyIGVudHJ5XG4iOworJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCSAgICAgICB7IGhvc3QgPT4gJ2Nvcm92YW1pbGtiYXInIH0pOworCitvayhzY2FsYXIga2V5cyAlJGNyZWQsIDAsICJHb3Qgbm8gY29yb3ZhbWlsa2JhciBrZXlzIik7CisKK3ByaW50ICIjIFRlc3RpbmcgbmV0cmMgZmlsZSBmb3IgYSBnaXRodWIuY29tIGVudHJ5XG4iOworJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCSAgICAgICB7IGhvc3QgPT4gJ2dpdGh1Yi5jb20nIH0pOworCitvayhzY2FsYXIga2V5cyAlJGNyZWQsIDIsICJHb3QgMiBHaXRodWIga2V5cyIpOworCitvaygkY3JlZC0+e3Bhc3N3b3JkfSwgJ2Nhcm9sa25vd3MnLCAiR290IGNvcnJlY3QgR2l0aHViIHBhc3N3b3JkIik7CitvaygkY3JlZC0+e3VzZXJuYW1lfSwgJ2Nhcm9sJywgIkdvdCBjb3JyZWN0IEdpdGh1YiB1c2VybmFtZSIpOworCitwcmludCAiIyBUZXN0aW5nIG5ldHJjIGZpbGUgZm9yIGEgdXNlcm5hbWUtc3BlY2lmaWMgZW50cnlcbiI7CiskY3JlZCA9IHJ1bl9jcmVkZW50aWFsKFsnLWYnLCAkbmV0cmMsICdnZXQnXSwKKwkJICAgICAgIHsgaG9zdCA9PiAnaW1hcCcsIHVzZXJuYW1lID0+ICdib2InIH0pOworCitvayhzY2FsYXIga2V5cyAlJGNyZWQsIDIsICJHb3QgMiB1c2VybmFtZS1zcGVjaWZpYyBrZXlzIik7CisKK29rKCRjcmVkLT57cGFzc3dvcmR9LCAnYm9id2lsbGtub3cnLCAiR290IGNvcnJlY3QgdXNlci1zcGVjaWZpYyBwYXNzd29yZCIpOworb2soJGNyZWQtPntwcm90b2NvbH0sICdpbWFwcycsICJHb3QgY29ycmVjdCB1c2VyLXNwZWNpZmljIHByb3RvY29sIik7CisKK3ByaW50ICIjIFRlc3RpbmcgbmV0cmMgZmlsZSBmb3IgYSBob3N0OnBvcnQtc3BlY2lmaWMgZW50cnlcbiI7CiskY3JlZCA9IHJ1bl9jcmVkZW50aWFsKFsnLWYnLCAkbmV0cmMsICdnZXQnXSwKKwkJICAgICAgIHsgaG9zdCA9PiAnaW1hcDI6MTA5OScgfSk7CisKK29rKHNjYWxhciBrZXlzICUkY3JlZCwgMiwgIkdvdCAyIGhvc3Q6cG9ydC1zcGVjaWZpYyBrZXlzIik7CisKK29rKCRjcmVkLT57cGFzc3dvcmR9LCAndHp6a25vdycsICJHb3QgY29ycmVjdCBob3N0OnBvcnQtc3BlY2lmaWMgcGFzc3dvcmQiKTsKK29rKCRjcmVkLT57dXNlcm5hbWV9LCAndHp6JywgIkdvdCBjb3JyZWN0IGhvc3Q6cG9ydC1zcGVjaWZpYyB1c2VybmFtZSIpOworCitwcmludCAiIyBUZXN0aW5nIG5ldHJjIGZpbGUgdGhhdCAnaG9zdDpwb3J0IGtpbGxzIGhvc3QnIGVudHJ5XG4iOworJGNyZWQgPSBydW5fY3JlZGVudGlhbChbJy1mJywgJG5ldHJjLCAnZ2V0J10sCisJCSAgICAgICB7IGhvc3QgPT4gJ2ltYXAyJyB9KTsKKworb2soc2NhbGFyIGtleXMgJSRjcmVkLCAyLCAiR290IDIgJ2hvc3Q6cG9ydCBraWxscyBob3N0JyBrZXlzIik7CisKK29rKCRjcmVkLT57cGFzc3dvcmR9LCAnYm9id2lsbGtub3cnLCAiR290IGNvcnJlY3QgJ2hvc3Q6cG9ydCBraWxscyBob3N0JyBwYXNzd29yZCIpOworb2soJGNyZWQtPnt1c2VybmFtZX0sICdib2InLCAiR290IGNvcnJlY3QgJ2hvc3Q6cG9ydCBraWxscyBob3N0JyB1c2VybmFtZSIpOworCitzdWIgcnVuX2NyZWRlbnRpYWwKK3sKKwlteSAkYXJncyA9IHNoaWZ0IEBfOworCW15ICRkYXRhID0gc2hpZnQgQF87CisJbXkgJHBpZCA9IG9wZW4yKG15ICRjaGxkX291dCwgbXkgJGNobGRfaW4sCisJCQknLi9naXQtY3JlZGVudGlhbC1uZXRyYycsIEBnbG9iYWxfY3JlZGVudGlhbF9hcmdzLAorCQkJQCRhcmdzKTsKKworCWRpZSAiQ291bGRuJ3Qgb3BlbiBwaXBlIHRvIG5ldHJjIGNyZWRlbnRpYWwgaGVscGVyOiAkISIgdW5sZXNzICRwaWQ7CisKKwlpZiAocmVmICRkYXRhIGVxICdIQVNIJykKKwl7CisJCXByaW50ICRjaGxkX2luICIkXz0kZGF0YS0+eyRffVxuIiBmb3JlYWNoIHNvcnQga2V5cyAlJGRhdGE7CisJfQorCWVsc2UKKwl7CisJCXByaW50ICRjaGxkX2luICIkZGF0YVxuIjsKKwl9CisKKwljbG9zZSAkY2hsZF9pbjsKKwlteSAlcmV0OworCisJd2hpbGUgKDwkY2hsZF9vdXQ+KQorCXsKKwkJY2hvbXA7CisJCW5leHQgdW5sZXNzIG0vXihbXj1dKyk9KC4rKS87CisKKwkJJHJldHskMX0gPSAkMjsKKwl9CisKKwlyZXR1cm4gXCVyZXQ7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYyBiL2NvbnRyaWIvY3JlZGVudGlhbC9vc3hrZXljaGFpbi9naXQtY3JlZGVudGlhbC1vc3hrZXljaGFpbi5jCmluZGV4IDZiZWVkMTIuLmJjZDNmNTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY3JlZGVudGlhbC9vc3hrZXljaGFpbi9naXQtY3JlZGVudGlhbC1vc3hrZXljaGFpbi5jCisrKyBiL2NvbnRyaWIvY3JlZGVudGlhbC9vc3hrZXljaGFpbi9naXQtY3JlZGVudGlhbC1vc3hrZXljaGFpbi5jCkBAIC0xMjcsMTAgKzEyNywyMCBAQAogCQkqdisrID0gJ1wwJzsKIAogCQlpZiAoIXN0cmNtcChidWYsICJwcm90b2NvbCIpKSB7Ci0JCQlpZiAoIXN0cmNtcCh2LCAiaHR0cHMiKSkKKwkJCWlmICghc3RyY21wKHYsICJpbWFwIikpCisJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlSU1BUDsKKwkJCWVsc2UgaWYgKCFzdHJjbXAodiwgImltYXBzIikpCisJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlSU1BUFM7CisJCQllbHNlIGlmICghc3RyY21wKHYsICJmdHAiKSkKKwkJCQlwcm90b2NvbCA9IGtTZWNQcm90b2NvbFR5cGVGVFA7CisJCQllbHNlIGlmICghc3RyY21wKHYsICJmdHBzIikpCisJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlRlRQUzsKKwkJCWVsc2UgaWYgKCFzdHJjbXAodiwgImh0dHBzIikpCiAJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlSFRUUFM7CiAJCQllbHNlIGlmICghc3RyY21wKHYsICJodHRwIikpCiAJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlSFRUUDsKKwkJCWVsc2UgaWYgKCFzdHJjbXAodiwgInNtdHAiKSkKKwkJCQlwcm90b2NvbCA9IGtTZWNQcm90b2NvbFR5cGVTTVRQOwogCQkJZWxzZSAvKiB3ZSBkb24ndCB5ZXQgaGFuZGxlIG90aGVyIHByb3RvY29scyAqLwogCQkJCWV4aXQoMCk7CiAJCX0KQEAgLTE1NCw3ICsxNjQsNyBAQAogaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogewogCWNvbnN0IGNoYXIgKnVzYWdlID0KLQkJIlVzYWdlOiBnaXQgY3JlZGVudGlhbC1vc3hrZXljaGFpbiA8Z2V0fHN0b3JlfGVyYXNlPiI7CisJCSJ1c2FnZTogZ2l0IGNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4gPGdldHxzdG9yZXxlcmFzZT4iOwogCiAJaWYgKCFhcmd2WzFdKQogCQlkaWUodXNhZ2UpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL3dpbmNyZWQvZ2l0LWNyZWRlbnRpYWwtd2luY3JlZC5jIGIvY29udHJpYi9jcmVkZW50aWFsL3dpbmNyZWQvZ2l0LWNyZWRlbnRpYWwtd2luY3JlZC5jCmluZGV4IGNiYWVjNWYuLmExZDM4ZjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY3JlZGVudGlhbC93aW5jcmVkL2dpdC1jcmVkZW50aWFsLXdpbmNyZWQuYworKysgYi9jb250cmliL2NyZWRlbnRpYWwvd2luY3JlZC9naXQtY3JlZGVudGlhbC13aW5jcmVkLmMKQEAgLTksNiArOSw4IEBACiAKIC8qIGNvbW1vbiBoZWxwZXJzICovCiAKKyNkZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpL3NpemVvZih4WzBdKSkKKwogc3RhdGljIHZvaWQgZGllKGNvbnN0IGNoYXIgKmVyciwgLi4uKQogewogCWNoYXIgbXNnWzQwOTZdOwpAQCAtMzAsMTQgKzMyLDYgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgY2hhciAqeHN0cmR1cChjb25zdCBjaGFyICpzdHIpCi17Ci0JY2hhciAqcmV0ID0gc3RyZHVwKHN0cik7Ci0JaWYgKCFyZXQpCi0JCWRpZSgiT3V0IG9mIG1lbW9yeSIpOwotCXJldHVybiByZXQ7Ci19Ci0KIC8qIE1pbkdXIGRvZXNuJ3QgaGF2ZSB3aW5jcmVkLmgsIHNvIHdlIG5lZWQgdG8gZGVmaW5lIHN0dWZmICovCiAKIHR5cGVkZWYgc3RydWN0IF9DUkVERU5USUFMX0FUVFJJQlVURVcgewpAQCAtNjcsMjAgKzYxLDE0IEBACiAjZGVmaW5lIENSRURfTUFYX0FUVFJJQlVURVMgNjQKIAogdHlwZWRlZiBCT09MIChXSU5BUEkgKkNyZWRXcml0ZVdUKShQQ1JFREVOVElBTFcsIERXT1JEKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICpDcmVkVW5QYWNrQXV0aGVudGljYXRpb25CdWZmZXJXVCkoRFdPUkQsIFBWT0lELCBEV09SRCwKLSAgICBMUFdTVFIsIERXT1JEICosIExQV1NUUiwgRFdPUkQgKiwgTFBXU1RSLCBEV09SRCAqKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICpDcmVkRW51bWVyYXRlV1QpKExQQ1dTVFIsIERXT1JELCBEV09SRCAqLAogICAgIFBDUkVERU5USUFMVyAqKik7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqQ3JlZFBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlcldUKShEV09SRCwgTFBXU1RSLCBMUFdTVFIsCi0gICAgUEJZVEUsIERXT1JEICopOwogdHlwZWRlZiBWT0lEIChXSU5BUEkgKkNyZWRGcmVlVCkoUFZPSUQpOwogdHlwZWRlZiBCT09MIChXSU5BUEkgKkNyZWREZWxldGVXVCkoTFBDV1NUUiwgRFdPUkQsIERXT1JEKTsKIAotc3RhdGljIEhNT0RVTEUgYWR2YXBpLCBjcmVkdWk7CitzdGF0aWMgSE1PRFVMRSBhZHZhcGk7CiBzdGF0aWMgQ3JlZFdyaXRlV1QgQ3JlZFdyaXRlVzsKLXN0YXRpYyBDcmVkVW5QYWNrQXV0aGVudGljYXRpb25CdWZmZXJXVCBDcmVkVW5QYWNrQXV0aGVudGljYXRpb25CdWZmZXJXOwogc3RhdGljIENyZWRFbnVtZXJhdGVXVCBDcmVkRW51bWVyYXRlVzsKLXN0YXRpYyBDcmVkUGFja0F1dGhlbnRpY2F0aW9uQnVmZmVyV1QgQ3JlZFBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlclc7CiBzdGF0aWMgQ3JlZEZyZWVUIENyZWRGcmVlOwogc3RhdGljIENyZWREZWxldGVXVCBDcmVkRGVsZXRlVzsKIApAQCAtODgsNzQgKzc2LDg0IEBACiB7CiAJLyogbG9hZCBETExzICovCiAJYWR2YXBpID0gTG9hZExpYnJhcnkoImFkdmFwaTMyLmRsbCIpOwotCWNyZWR1aSA9IExvYWRMaWJyYXJ5KCJjcmVkdWkuZGxsIik7Ci0JaWYgKCFhZHZhcGkgfHwgIWNyZWR1aSkKLQkJZGllKCJmYWlsZWQgdG8gbG9hZCBETExzIik7CisJaWYgKCFhZHZhcGkpCisJCWRpZSgiZmFpbGVkIHRvIGxvYWQgYWR2YXBpMzIuZGxsIik7CiAKIAkvKiBnZXQgZnVuY3Rpb24gcG9pbnRlcnMgKi8KIAlDcmVkV3JpdGVXID0gKENyZWRXcml0ZVdUKUdldFByb2NBZGRyZXNzKGFkdmFwaSwgIkNyZWRXcml0ZVciKTsKLQlDcmVkVW5QYWNrQXV0aGVudGljYXRpb25CdWZmZXJXID0gKENyZWRVblBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlcldUKQotCSAgICBHZXRQcm9jQWRkcmVzcyhjcmVkdWksICJDcmVkVW5QYWNrQXV0aGVudGljYXRpb25CdWZmZXJXIik7CiAJQ3JlZEVudW1lcmF0ZVcgPSAoQ3JlZEVudW1lcmF0ZVdUKUdldFByb2NBZGRyZXNzKGFkdmFwaSwKIAkgICAgIkNyZWRFbnVtZXJhdGVXIik7Ci0JQ3JlZFBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlclcgPSAoQ3JlZFBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlcldUKQotCSAgICBHZXRQcm9jQWRkcmVzcyhjcmVkdWksICJDcmVkUGFja0F1dGhlbnRpY2F0aW9uQnVmZmVyVyIpOwogCUNyZWRGcmVlID0gKENyZWRGcmVlVClHZXRQcm9jQWRkcmVzcyhhZHZhcGksICJDcmVkRnJlZSIpOwogCUNyZWREZWxldGVXID0gKENyZWREZWxldGVXVClHZXRQcm9jQWRkcmVzcyhhZHZhcGksICJDcmVkRGVsZXRlVyIpOwotCWlmICghQ3JlZFdyaXRlVyB8fCAhQ3JlZFVuUGFja0F1dGhlbnRpY2F0aW9uQnVmZmVyVyB8fAotCSAgICAhQ3JlZEVudW1lcmF0ZVcgfHwgIUNyZWRQYWNrQXV0aGVudGljYXRpb25CdWZmZXJXIHx8ICFDcmVkRnJlZSB8fAotCSAgICAhQ3JlZERlbGV0ZVcpCisJaWYgKCFDcmVkV3JpdGVXIHx8ICFDcmVkRW51bWVyYXRlVyB8fCAhQ3JlZEZyZWUgfHwgIUNyZWREZWxldGVXKQogCQlkaWUoImZhaWxlZCB0byBsb2FkIGZ1bmN0aW9ucyIpOwogfQogCi1zdGF0aWMgY2hhciB0YXJnZXRfYnVmWzEwMjRdOwotc3RhdGljIGNoYXIgKnByb3RvY29sLCAqaG9zdCwgKnBhdGgsICp1c2VybmFtZTsKLXN0YXRpYyBXQ0hBUiAqd3VzZXJuYW1lLCAqcGFzc3dvcmQsICp0YXJnZXQ7CitzdGF0aWMgV0NIQVIgKnd1c2VybmFtZSwgKnBhc3N3b3JkLCAqcHJvdG9jb2wsICpob3N0LCAqcGF0aCwgdGFyZ2V0WzEwMjRdOwogCi1zdGF0aWMgdm9pZCB3cml0ZV9pdGVtKGNvbnN0IGNoYXIgKndoYXQsIFdDSEFSICp3YnVmKQorc3RhdGljIHZvaWQgd3JpdGVfaXRlbShjb25zdCBjaGFyICp3aGF0LCBMUENXU1RSIHdidWYsIGludCB3bGVuKQogewogCWNoYXIgKmJ1ZjsKLQlpbnQgbGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCAtMSwgTlVMTCwgMCwgTlVMTCwKKwlpbnQgbGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB3bGVuLCBOVUxMLCAwLCBOVUxMLAogCSAgICBGQUxTRSk7CiAJYnVmID0geG1hbGxvYyhsZW4pOwogCi0JaWYgKCFXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIC0xLCBidWYsIGxlbiwgTlVMTCwgRkFMU0UpKQorCWlmICghV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB3bGVuLCBidWYsIGxlbiwgTlVMTCwgRkFMU0UpKQogCQlkaWUoIldpZGVDaGFyVG9NdWx0aUJ5dGUgZmFpbGVkISIpOwogCiAJcHJpbnRmKCIlcz0iLCB3aGF0KTsKLQlmd3JpdGUoYnVmLCAxLCBsZW4gLSAxLCBzdGRvdXQpOworCWZ3cml0ZShidWYsIDEsIGxlbiwgc3Rkb3V0KTsKIAlwdXRjaGFyKCdcbicpOwogCWZyZWUoYnVmKTsKIH0KIAotc3RhdGljIGludCBtYXRjaF9hdHRyKGNvbnN0IENSRURFTlRJQUxXICpjcmVkLCBjb25zdCBXQ0hBUiAqa2V5d29yZCwKLSAgICBjb25zdCBjaGFyICp3YW50KQorLyoKKyAqIE1hdGNoIGFuIChvcHRpb25hbCkgZXhwZWN0ZWQgc3RyaW5nIGFuZCBhIGRlbGltaXRlciBpbiB0aGUgdGFyZ2V0IHN0cmluZywKKyAqIGNvbnN1bWluZyB0aGUgbWF0Y2hlZCB0ZXh0IGJ5IHVwZGF0aW5nIHRoZSB0YXJnZXQgcG9pbnRlci4KKyAqLworc3RhdGljIGludCBtYXRjaF9wYXJ0KExQQ1dTVFIgKnB0YXJnZXQsIExQQ1dTVFIgd2FudCwgTFBDV1NUUiBkZWxpbSkKIHsKLQlpbnQgaTsKLQlpZiAoIXdhbnQpCi0JCXJldHVybiAxOworCUxQQ1dTVFIgZGVsaW1fcG9zLCBzdGFydCA9ICpwdGFyZ2V0OworCWludCBsZW47CiAKLQlmb3IgKGkgPSAwOyBpIDwgY3JlZC0+QXR0cmlidXRlQ291bnQ7ICsraSkKLQkJaWYgKCF3Y3NjbXAoY3JlZC0+QXR0cmlidXRlc1tpXS5LZXl3b3JkLCBrZXl3b3JkKSkKLQkJCXJldHVybiAhc3RyY21wKChjb25zdCBjaGFyICopY3JlZC0+QXR0cmlidXRlc1tpXS5WYWx1ZSwKLQkJCSAgICB3YW50KTsKKwkvKiBmaW5kIHN0YXJ0IG9mIGRlbGltaXRlciAob3IgZW5kLW9mLXN0cmluZyBpZiBkZWxpbSBpcyBlbXB0eSkgKi8KKwlpZiAoKmRlbGltKQorCQlkZWxpbV9wb3MgPSB3Y3NzdHIoc3RhcnQsIGRlbGltKTsKKwllbHNlCisJCWRlbGltX3BvcyA9IHN0YXJ0ICsgd2NzbGVuKHN0YXJ0KTsKIAotCXJldHVybiAwOyAvKiBub3QgZm91bmQgKi8KKwkvKgorCSAqIG1hdGNoIHRleHQgdXAgdG8gZGVsaW1pdGVyLCBvciBlbmQgb2Ygc3RyaW5nIChlLmcuIHRoZSAnLycgYWZ0ZXIKKwkgKiBob3N0IGlzIG9wdGlvbmFsIGlmIG5vdCBmb2xsb3dlZCBieSBhIHBhdGgpCisJICovCisJaWYgKGRlbGltX3BvcykKKwkJbGVuID0gZGVsaW1fcG9zIC0gc3RhcnQ7CisJZWxzZQorCQlsZW4gPSB3Y3NsZW4oc3RhcnQpOworCisJLyogdXBkYXRlIHB0YXJnZXQgaWYgd2UgZWl0aGVyIGZvdW5kIGEgZGVsaW1pdGVyIG9yIG5lZWQgYSBtYXRjaCAqLworCWlmIChkZWxpbV9wb3MgfHwgd2FudCkKKwkJKnB0YXJnZXQgPSBkZWxpbV9wb3MgPyBkZWxpbV9wb3MgKyB3Y3NsZW4oZGVsaW0pIDogc3RhcnQgKyBsZW47CisKKwlyZXR1cm4gIXdhbnQgfHwgKCF3Y3NuY21wKHdhbnQsIHN0YXJ0LCBsZW4pICYmICF3YW50W2xlbl0pOwogfQogCiBzdGF0aWMgaW50IG1hdGNoX2NyZWQoY29uc3QgQ1JFREVOVElBTFcgKmNyZWQpCiB7Ci0JcmV0dXJuICghd3VzZXJuYW1lIHx8ICF3Y3NjbXAod3VzZXJuYW1lLCBjcmVkLT5Vc2VyTmFtZSkpICYmCi0JICAgIG1hdGNoX2F0dHIoY3JlZCwgTCJnaXRfcHJvdG9jb2wiLCBwcm90b2NvbCkgJiYKLQkgICAgbWF0Y2hfYXR0cihjcmVkLCBMImdpdF9ob3N0IiwgaG9zdCkgJiYKLQkgICAgbWF0Y2hfYXR0cihjcmVkLCBMImdpdF9wYXRoIiwgcGF0aCk7CisJTFBDV1NUUiB0YXJnZXQgPSBjcmVkLT5UYXJnZXROYW1lOworCWlmICh3dXNlcm5hbWUgJiYgd2NzY21wKHd1c2VybmFtZSwgY3JlZC0+VXNlck5hbWUpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBtYXRjaF9wYXJ0KCZ0YXJnZXQsIEwiZ2l0IiwgTCI6IikgJiYKKwkJbWF0Y2hfcGFydCgmdGFyZ2V0LCBwcm90b2NvbCwgTCI6Ly8iKSAmJgorCQltYXRjaF9wYXJ0KCZ0YXJnZXQsIHd1c2VybmFtZSwgTCJAIikgJiYKKwkJbWF0Y2hfcGFydCgmdGFyZ2V0LCBob3N0LCBMIi8iKSAmJgorCQltYXRjaF9wYXJ0KCZ0YXJnZXQsIHBhdGgsIEwiIik7CiB9CiAKIHN0YXRpYyB2b2lkIGdldF9jcmVkZW50aWFsKHZvaWQpCiB7Ci0JV0NIQVIgKnVzZXJfYnVmLCAqcGFzc19idWY7Ci0JRFdPUkQgdXNlcl9idWZfc2l6ZSA9IDAsIHBhc3NfYnVmX3NpemUgPSAwOwotCUNSRURFTlRJQUxXICoqY3JlZHMsICpjcmVkID0gTlVMTDsKKwlDUkVERU5USUFMVyAqKmNyZWRzOwogCURXT1JEIG51bV9jcmVkczsKIAlpbnQgaTsKIApAQCAtMTY1LDkwICsxNjMsMzYgQEAKIAkvKiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBjcmVkZW50aWFsIHRoYXQgbWF0Y2hlcyB1c2VybmFtZSAqLwogCWZvciAoaSA9IDA7IGkgPCBudW1fY3JlZHM7ICsraSkKIAkJaWYgKG1hdGNoX2NyZWQoY3JlZHNbaV0pKSB7Ci0JCQljcmVkID0gY3JlZHNbaV07CisJCQl3cml0ZV9pdGVtKCJ1c2VybmFtZSIsIGNyZWRzW2ldLT5Vc2VyTmFtZSwKKwkJCQl3Y3NsZW4oY3JlZHNbaV0tPlVzZXJOYW1lKSk7CisJCQl3cml0ZV9pdGVtKCJwYXNzd29yZCIsCisJCQkJKExQQ1dTVFIpY3JlZHNbaV0tPkNyZWRlbnRpYWxCbG9iLAorCQkJCWNyZWRzW2ldLT5DcmVkZW50aWFsQmxvYlNpemUgLyBzaXplb2YoV0NIQVIpKTsKIAkJCWJyZWFrOwogCQl9Ci0JaWYgKCFjcmVkKQotCQlyZXR1cm47Ci0KLQlDcmVkVW5QYWNrQXV0aGVudGljYXRpb25CdWZmZXJXKDAsIGNyZWQtPkNyZWRlbnRpYWxCbG9iLAotCSAgICBjcmVkLT5DcmVkZW50aWFsQmxvYlNpemUsIE5VTEwsICZ1c2VyX2J1Zl9zaXplLCBOVUxMLCBOVUxMLAotCSAgICBOVUxMLCAmcGFzc19idWZfc2l6ZSk7Ci0KLQl1c2VyX2J1ZiA9IHhtYWxsb2ModXNlcl9idWZfc2l6ZSAqIHNpemVvZihXQ0hBUikpOwotCXBhc3NfYnVmID0geG1hbGxvYyhwYXNzX2J1Zl9zaXplICogc2l6ZW9mKFdDSEFSKSk7Ci0KLQlpZiAoIUNyZWRVblBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlclcoMCwgY3JlZC0+Q3JlZGVudGlhbEJsb2IsCi0JICAgIGNyZWQtPkNyZWRlbnRpYWxCbG9iU2l6ZSwgdXNlcl9idWYsICZ1c2VyX2J1Zl9zaXplLCBOVUxMLCBOVUxMLAotCSAgICBwYXNzX2J1ZiwgJnBhc3NfYnVmX3NpemUpKQotCQlkaWUoIkNyZWRVblBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlciBmYWlsZWQiKTsKIAogCUNyZWRGcmVlKGNyZWRzKTsKLQotCS8qIHplcm8tdGVybWluYXRlIChzaXplcyBpbmNsdWRlIHplcm8tdGVybWluYXRpb24pICovCi0JdXNlcl9idWZbdXNlcl9idWZfc2l6ZSAtIDFdID0gTCdcMCc7Ci0JcGFzc19idWZbcGFzc19idWZfc2l6ZSAtIDFdID0gTCdcMCc7Ci0KLQl3cml0ZV9pdGVtKCJ1c2VybmFtZSIsIHVzZXJfYnVmKTsKLQl3cml0ZV9pdGVtKCJwYXNzd29yZCIsIHBhc3NfYnVmKTsKLQotCWZyZWUodXNlcl9idWYpOwotCWZyZWUocGFzc19idWYpOwotfQotCi1zdGF0aWMgdm9pZCB3cml0ZV9hdHRyKENSRURFTlRJQUxfQVRUUklCVVRFVyAqYXR0ciwgY29uc3QgV0NIQVIgKmtleXdvcmQsCi0gICAgY29uc3QgY2hhciAqdmFsdWUpCi17Ci0JYXR0ci0+S2V5d29yZCA9IChMUFdTVFIpa2V5d29yZDsKLQlhdHRyLT5GbGFncyA9IDA7Ci0JYXR0ci0+VmFsdWVTaXplID0gc3RybGVuKHZhbHVlKSArIDE7IC8qIHN0b3JlIHplcm8tdGVybWluYXRpb24gKi8KLQlhdHRyLT5WYWx1ZSA9IChMUEJZVEUpdmFsdWU7CiB9CiAKIHN0YXRpYyB2b2lkIHN0b3JlX2NyZWRlbnRpYWwodm9pZCkKIHsKIAlDUkVERU5USUFMVyBjcmVkOwotCUJZVEUgKmF1dGhfYnVmOwotCURXT1JEIGF1dGhfYnVmX3NpemUgPSAwOwotCUNSRURFTlRJQUxfQVRUUklCVVRFVyBhdHRyc1tDUkVEX01BWF9BVFRSSUJVVEVTXTsKIAogCWlmICghd3VzZXJuYW1lIHx8ICFwYXNzd29yZCkKIAkJcmV0dXJuOwogCi0JLyogcXVlcnkgYnVmZmVyIHNpemUgKi8KLQlDcmVkUGFja0F1dGhlbnRpY2F0aW9uQnVmZmVyVygwLCB3dXNlcm5hbWUsIHBhc3N3b3JkLAotCSAgICBOVUxMLCAmYXV0aF9idWZfc2l6ZSk7Ci0KLQlhdXRoX2J1ZiA9IHhtYWxsb2MoYXV0aF9idWZfc2l6ZSk7Ci0KLQlpZiAoIUNyZWRQYWNrQXV0aGVudGljYXRpb25CdWZmZXJXKDAsIHd1c2VybmFtZSwgcGFzc3dvcmQsCi0JICAgIGF1dGhfYnVmLCAmYXV0aF9idWZfc2l6ZSkpCi0JCWRpZSgiQ3JlZFBhY2tBdXRoZW50aWNhdGlvbkJ1ZmZlciBmYWlsZWQiKTsKLQogCWNyZWQuRmxhZ3MgPSAwOwogCWNyZWQuVHlwZSA9IENSRURfVFlQRV9HRU5FUklDOwogCWNyZWQuVGFyZ2V0TmFtZSA9IHRhcmdldDsKIAljcmVkLkNvbW1lbnQgPSBMInNhdmVkIGJ5IGdpdC1jcmVkZW50aWFsLXdpbmNyZWQiOwotCWNyZWQuQ3JlZGVudGlhbEJsb2JTaXplID0gYXV0aF9idWZfc2l6ZTsKLQljcmVkLkNyZWRlbnRpYWxCbG9iID0gYXV0aF9idWY7CisJY3JlZC5DcmVkZW50aWFsQmxvYlNpemUgPSAod2NzbGVuKHBhc3N3b3JkKSkgKiBzaXplb2YoV0NIQVIpOworCWNyZWQuQ3JlZGVudGlhbEJsb2IgPSAoTFBWT0lEKXBhc3N3b3JkOwogCWNyZWQuUGVyc2lzdCA9IENSRURfUEVSU0lTVF9MT0NBTF9NQUNISU5FOwotCWNyZWQuQXR0cmlidXRlQ291bnQgPSAxOwotCWNyZWQuQXR0cmlidXRlcyA9IGF0dHJzOworCWNyZWQuQXR0cmlidXRlQ291bnQgPSAwOworCWNyZWQuQXR0cmlidXRlcyA9IE5VTEw7CiAJY3JlZC5UYXJnZXRBbGlhcyA9IE5VTEw7CiAJY3JlZC5Vc2VyTmFtZSA9IHd1c2VybmFtZTsKIAotCXdyaXRlX2F0dHIoYXR0cnMsIEwiZ2l0X3Byb3RvY29sIiwgcHJvdG9jb2wpOwotCi0JaWYgKGhvc3QpIHsKLQkJd3JpdGVfYXR0cihhdHRycyArIGNyZWQuQXR0cmlidXRlQ291bnQsIEwiZ2l0X2hvc3QiLCBob3N0KTsKLQkJY3JlZC5BdHRyaWJ1dGVDb3VudCsrOwotCX0KLQotCWlmIChwYXRoKSB7Ci0JCXdyaXRlX2F0dHIoYXR0cnMgKyBjcmVkLkF0dHJpYnV0ZUNvdW50LCBMImdpdF9wYXRoIiwgcGF0aCk7Ci0JCWNyZWQuQXR0cmlidXRlQ291bnQrKzsKLQl9Ci0KIAlpZiAoIUNyZWRXcml0ZVcoJmNyZWQsIDApKQogCQlkaWUoIkNyZWRXcml0ZSBmYWlsZWQiKTsKIH0KQEAgLTI4NCwxMCArMjI4LDEzIEBACiAKIAl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgc3RkaW4pKSB7CiAJCWNoYXIgKnY7CisJCWludCBsZW4gPSBzdHJsZW4oYnVmKTsKKwkJLyogc3RyaXAgdHJhaWxpbmcgQ1IgLyBMRiAqLworCQl3aGlsZSAobGVuICYmIHN0cmNocigiXHJcbiIsIGJ1ZltsZW4gLSAxXSkpCisJCQlidWZbLS1sZW5dID0gMDsKIAotCQlpZiAoIXN0cmNtcChidWYsICJcbiIpKQorCQlpZiAoISpidWYpCiAJCQlicmVhazsKLQkJYnVmW3N0cmxlbihidWYpLTFdID0gJ1wwJzsKIAogCQl2ID0gc3RyY2hyKGJ1ZiwgJz0nKTsKIAkJaWYgKCF2KQpAQCAtMjk1LDEzICsyNDIsMTIgQEAKIAkJKnYrKyA9ICdcMCc7CiAKIAkJaWYgKCFzdHJjbXAoYnVmLCAicHJvdG9jb2wiKSkKLQkJCXByb3RvY29sID0geHN0cmR1cCh2KTsKKwkJCXByb3RvY29sID0gdXRmOF90b191dGYxNl9kdXAodik7CiAJCWVsc2UgaWYgKCFzdHJjbXAoYnVmLCAiaG9zdCIpKQotCQkJaG9zdCA9IHhzdHJkdXAodik7CisJCQlob3N0ID0gdXRmOF90b191dGYxNl9kdXAodik7CiAJCWVsc2UgaWYgKCFzdHJjbXAoYnVmLCAicGF0aCIpKQotCQkJcGF0aCA9IHhzdHJkdXAodik7CisJCQlwYXRoID0gdXRmOF90b191dGYxNl9kdXAodik7CiAJCWVsc2UgaWYgKCFzdHJjbXAoYnVmLCAidXNlcm5hbWUiKSkgewotCQkJdXNlcm5hbWUgPSB4c3RyZHVwKHYpOwogCQkJd3VzZXJuYW1lID0gdXRmOF90b191dGYxNl9kdXAodik7CiAJCX0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJwYXNzd29yZCIpKQogCQkJcGFzc3dvcmQgPSB1dGY4X3RvX3V0ZjE2X2R1cCh2KTsKQEAgLTMxMyw3ICsyNTksNyBAQAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAljb25zdCBjaGFyICp1c2FnZSA9Ci0JICAgICJVc2FnZTogZ2l0IGNyZWRlbnRpYWwtd2luY3JlZCA8Z2V0fHN0b3JlfGVyYXNlPlxuIjsKKwkgICAgInVzYWdlOiBnaXQgY3JlZGVudGlhbC13aW5jcmVkIDxnZXR8c3RvcmV8ZXJhc2U+XG4iOwogCiAJaWYgKCFhcmd2WzFdKQogCQlkaWUodXNhZ2UpOwpAQCAtMzMwLDIyICsyNzYsMjAgQEAKIAkJcmV0dXJuIDA7CiAKIAkvKiBwcmVwYXJlICd0YXJnZXQnLCB0aGUgdW5pcXVlIGtleSBmb3IgdGhlIGNyZWRlbnRpYWwgKi8KLQlzdHJuY2F0KHRhcmdldF9idWYsICJnaXQ6Iiwgc2l6ZW9mKHRhcmdldF9idWYpKTsKLQlzdHJuY2F0KHRhcmdldF9idWYsIHByb3RvY29sLCBzaXplb2YodGFyZ2V0X2J1ZikpOwotCXN0cm5jYXQodGFyZ2V0X2J1ZiwgIjovLyIsIHNpemVvZih0YXJnZXRfYnVmKSk7Ci0JaWYgKHVzZXJuYW1lKSB7Ci0JCXN0cm5jYXQodGFyZ2V0X2J1ZiwgdXNlcm5hbWUsIHNpemVvZih0YXJnZXRfYnVmKSk7Ci0JCXN0cm5jYXQodGFyZ2V0X2J1ZiwgIkAiLCBzaXplb2YodGFyZ2V0X2J1ZikpOworCXdjc2NweSh0YXJnZXQsIEwiZ2l0OiIpOworCXdjc25jYXQodGFyZ2V0LCBwcm90b2NvbCwgQVJSQVlfU0laRSh0YXJnZXQpKTsKKwl3Y3NuY2F0KHRhcmdldCwgTCI6Ly8iLCBBUlJBWV9TSVpFKHRhcmdldCkpOworCWlmICh3dXNlcm5hbWUpIHsKKwkJd2NzbmNhdCh0YXJnZXQsIHd1c2VybmFtZSwgQVJSQVlfU0laRSh0YXJnZXQpKTsKKwkJd2NzbmNhdCh0YXJnZXQsIEwiQCIsIEFSUkFZX1NJWkUodGFyZ2V0KSk7CiAJfQogCWlmIChob3N0KQotCQlzdHJuY2F0KHRhcmdldF9idWYsIGhvc3QsIHNpemVvZih0YXJnZXRfYnVmKSk7CisJCXdjc25jYXQodGFyZ2V0LCBob3N0LCBBUlJBWV9TSVpFKHRhcmdldCkpOwogCWlmIChwYXRoKSB7Ci0JCXN0cm5jYXQodGFyZ2V0X2J1ZiwgIi8iLCBzaXplb2YodGFyZ2V0X2J1ZikpOwotCQlzdHJuY2F0KHRhcmdldF9idWYsIHBhdGgsIHNpemVvZih0YXJnZXRfYnVmKSk7CisJCXdjc25jYXQodGFyZ2V0LCBMIi8iLCBBUlJBWV9TSVpFKHRhcmdldCkpOworCQl3Y3NuY2F0KHRhcmdldCwgcGF0aCwgQVJSQVlfU0laRSh0YXJnZXQpKTsKIAl9CiAKLQl0YXJnZXQgPSB1dGY4X3RvX3V0ZjE2X2R1cCh0YXJnZXRfYnVmKTsKLQogCWlmICghc3RyY21wKGFyZ3ZbMV0sICJnZXQiKSkKIAkJZ2V0X2NyZWRlbnRpYWwoKTsKIAllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJzdG9yZSIpKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9leGFtcGxlcy9naXQtcmVtb3RlLnBlcmwgYi9jb250cmliL2V4YW1wbGVzL2dpdC1yZW1vdGUucGVybAppbmRleCBiMTc5NTJhLi5kNDJkZjdiIDEwMDc1NQotLS0gYS9jb250cmliL2V4YW1wbGVzL2dpdC1yZW1vdGUucGVybAorKysgYi9jb250cmliL2V4YW1wbGVzL2dpdC1yZW1vdGUucGVybApAQCAtMzQ3LDcgKzM0Nyw3IEBACiB9CiAKIHN1YiBhZGRfdXNhZ2UgewotCXByaW50IFNUREVSUiAiVXNhZ2U6IGdpdCByZW1vdGUgYWRkIFstZl0gWy10IHRyYWNrXSogWy1tIG1hc3Rlcl0gPG5hbWU+IDx1cmw+XG4iOworCXByaW50IFNUREVSUiAidXNhZ2U6IGdpdCByZW1vdGUgYWRkIFstZl0gWy10IHRyYWNrXSogWy1tIG1hc3Rlcl0gPG5hbWU+IDx1cmw+XG4iOwogCWV4aXQoMSk7CiB9CiAKQEAgLTM4MCw3ICszODAsNyBAQAogCQl9CiAJfQogCWlmICgkaSA+PSBAQVJHVikgewotCQlwcmludCBTVERFUlIgIlVzYWdlOiBnaXQgcmVtb3RlIHNob3cgPHJlbW90ZT5cbiI7CisJCXByaW50IFNUREVSUiAidXNhZ2U6IGdpdCByZW1vdGUgc2hvdyA8cmVtb3RlPlxuIjsKIAkJZXhpdCgxKTsKIAl9CiAJbXkgJHN0YXR1cyA9IDA7CkBAIC00MTAsNyArNDEwLDcgQEAKIAkJfQogCX0KIAlpZiAoJGkgPj0gQEFSR1YpIHsKLQkJcHJpbnQgU1RERVJSICJVc2FnZTogZ2l0IHJlbW90ZSBwcnVuZSA8cmVtb3RlPlxuIjsKKwkJcHJpbnQgU1RERVJSICJ1c2FnZTogZ2l0IHJlbW90ZSBwcnVuZSA8cmVtb3RlPlxuIjsKIAkJZXhpdCgxKTsKIAl9CiAJbXkgJHN0YXR1cyA9IDA7CkBAIC00NTgsMTMgKzQ1OCwxMyBAQAogfQogZWxzaWYgKCRBUkdWWzBdIGVxICdybScpIHsKIAlpZiAoQEFSR1YgPD0gMSkgewotCQlwcmludCBTVERFUlIgIlVzYWdlOiBnaXQgcmVtb3RlIHJtIDxyZW1vdGU+XG4iOworCQlwcmludCBTVERFUlIgInVzYWdlOiBnaXQgcmVtb3RlIHJtIDxyZW1vdGU+XG4iOwogCQlleGl0KDEpOwogCX0KIAlleGl0KHJtX3JlbW90ZSgkQVJHVlsxXSkpOwogfQogZWxzZSB7Ci0JcHJpbnQgU1RERVJSICJVc2FnZTogZ2l0IHJlbW90ZVxuIjsKKwlwcmludCBTVERFUlIgInVzYWdlOiBnaXQgcmVtb3RlXG4iOwogCXByaW50IFNUREVSUiAiICAgICAgIGdpdCByZW1vdGUgYWRkIDxuYW1lPiA8dXJsPlxuIjsKIAlwcmludCBTVERFUlIgIiAgICAgICBnaXQgcmVtb3RlIHJtIDxuYW1lPlxuIjsKIAlwcmludCBTVERFUlIgIiAgICAgICBnaXQgcmVtb3RlIHNob3cgPG5hbWU+XG4iOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9leGFtcGxlcy9naXQtc3ZuaW1wb3J0LnBlcmwgYi9jb250cmliL2V4YW1wbGVzL2dpdC1zdm5pbXBvcnQucGVybAppbmRleCBiMDlmZjhmLi5jNDE0ZjBkIDEwMDc1NQotLS0gYS9jb250cmliL2V4YW1wbGVzL2dpdC1zdm5pbXBvcnQucGVybAorKysgYi9jb250cmliL2V4YW1wbGVzL2dpdC1zdm5pbXBvcnQucGVybApAQCAtMzYsNyArMzYsNyBAQAogCiBzdWIgdXNhZ2UoKSB7CiAJcHJpbnQgU1RERVJSIDw8RU5EOwotVXNhZ2U6ICR7XGJhc2VuYW1lICQwfSAgICAgIyBmZXRjaC91cGRhdGUgR0lUIGZyb20gU1ZOCit1c2FnZTogJHtcYmFzZW5hbWUgJDB9ICAgICAjIGZldGNoL3VwZGF0ZSBHSVQgZnJvbSBTVk4KICAgICAgICBbLW8gYnJhbmNoLWZvci1IRUFEXSBbLWhdIFstdl0gWy1sIG1heF9yZXZdIFstUiByZXBhY2tfZWFjaF9yZXZzXQogICAgICAgIFstQyBHSVRfcmVwb3NpdG9yeV0gWy10IHRhZ25hbWVdIFstVCB0cnVua25hbWVdIFstYiBicmFuY2huYW1lXQogICAgICAgIFstZHwtRF0gWy1pXSBbLXVdIFstcl0gWy1JIGlnbm9yZWZpbGVuYW1lXSBbLXMgc3RhcnRfY2hnXQpkaWZmIC0tZ2l0IGEvY29udHJpYi9mYXN0LWltcG9ydC9naXQtaW1wb3J0LnBlcmwgYi9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1pbXBvcnQucGVybAppbmRleCBmOWZlZjZkLi4wODkxYjllIDEwMDc1NQotLS0gYS9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1pbXBvcnQucGVybAorKysgYi9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1pbXBvcnQucGVybApAQCAtNyw3ICs3LDcgQEAKIHVzZSBzdHJpY3Q7CiB1c2UgRmlsZTo6RmluZDsKIAotbXkgJFVTQUdFID0gJ1VzYWdlOiBnaXQtaW1wb3J0IGJyYW5jaCBpbXBvcnQtbWVzc2FnZSc7CitteSAkVVNBR0UgPSAndXNhZ2U6IGdpdC1pbXBvcnQgYnJhbmNoIGltcG9ydC1tZXNzYWdlJzsKIG15ICRicmFuY2ggPSBzaGlmdCBvciBkaWUgIiRVU0FHRVxuIjsKIG15ICRtZXNzYWdlID0gc2hpZnQgb3IgZGllICIkVVNBR0VcbiI7CiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LWltcG9ydC5zaCBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvZ2l0LWltcG9ydC5zaAppbmRleCAwY2E3NzE4Li5mOGQ4MDNjIDEwMDc1NQotLS0gYS9jb250cmliL2Zhc3QtaW1wb3J0L2dpdC1pbXBvcnQuc2gKKysrIGIvY29udHJpYi9mYXN0LWltcG9ydC9naXQtaW1wb3J0LnNoCkBAIC01LDcgKzUsNyBAQAogIyBidXQgaXMgbWVhbnQgdG8gYmUgYSBzaW1wbGUgZmFzdC1pbXBvcnQgZXhhbXBsZS4KIAogaWYgWyAteiAiJDEiIC1vIC16ICIkMiIgXTsgdGhlbgotCWVjaG8gIlVzYWdlOiBnaXQtaW1wb3J0IGJyYW5jaCBpbXBvcnQtbWVzc2FnZSIKKwllY2hvICJ1c2FnZTogZ2l0LWltcG9ydCBicmFuY2ggaW1wb3J0LW1lc3NhZ2UiCiAJZXhpdCAxCiBmaQogCmRpZmYgLS1naXQgYS9jb250cmliL2Zhc3QtaW1wb3J0L2ltcG9ydC16aXBzLnB5IGIvY29udHJpYi9mYXN0LWltcG9ydC9pbXBvcnQtemlwcy5weQppbmRleCA4MmY1ZWQzLi5kMTJjMjk2IDEwMDc1NQotLS0gYS9jb250cmliL2Zhc3QtaW1wb3J0L2ltcG9ydC16aXBzLnB5CisrKyBiL2NvbnRyaWIvZmFzdC1pbXBvcnQvaW1wb3J0LXppcHMucHkKQEAgLTksMTMgKzksMTggQEAKICMjICBnaXQgbG9nIC0tc3RhdCBpbXBvcnQtemlwcwogCiBmcm9tIG9zIGltcG9ydCBwb3BlbiwgcGF0aAotZnJvbSBzeXMgaW1wb3J0IGFyZ3YsIGV4aXQKK2Zyb20gc3lzIGltcG9ydCBhcmd2LCBleGl0LCBoZXh2ZXJzaW9uLCBzdGRlcnIKIGZyb20gdGltZSBpbXBvcnQgbWt0aW1lCiBmcm9tIHppcGZpbGUgaW1wb3J0IFppcEZpbGUKIAoraWYgaGV4dmVyc2lvbiA8IDB4MDEwNjAwMDA6CisgICAgIyBUaGUgbGltaXRlciBpcyB0aGUgemlwZmlsZSBtb2R1bGUKKyAgICBzdGRlcnIud3JpdGUoImltcG9ydC16aXBzLnB5OiByZXF1aXJlcyBQeXRob24gMS42LjAgb3IgbGF0ZXIuXG4iKQorICAgIGV4aXQoMSkKKwogaWYgbGVuKGFyZ3YpIDwgMjoKLQlwcmludCAnVXNhZ2U6JywgYXJndlswXSwgJzx6aXBmaWxlPi4uLicKLQlleGl0KDEpCisgICAgcHJpbnQgJ3VzYWdlOicsIGFyZ3ZbMF0sICc8emlwZmlsZT4uLi4nCisgICAgZXhpdCgxKQogCiBicmFuY2hfcmVmID0gJ3JlZnMvaGVhZHMvaW1wb3J0LXppcHMnCiBjb21taXR0ZXJfbmFtZSA9ICdaIElwIENyZWF0b3InCkBAIC0yMyw1MSArMjgsNTEgQEAKIAogZmFzdF9pbXBvcnQgPSBwb3BlbignZ2l0IGZhc3QtaW1wb3J0IC0tcXVpZXQnLCAndycpCiBkZWYgcHJpbnRsaW5lcyhsaXN0KToKLQlmb3Igc3RyIGluIGxpc3Q6Ci0JCWZhc3RfaW1wb3J0LndyaXRlKHN0ciArICJcbiIpCisgICAgZm9yIHN0ciBpbiBsaXN0OgorICAgICAgICBmYXN0X2ltcG9ydC53cml0ZShzdHIgKyAiXG4iKQogCiBmb3IgemlwZmlsZSBpbiBhcmd2WzE6XToKLQljb21taXRfdGltZSA9IDAKLQluZXh0X21hcmsgPSAxCi0JY29tbW9uX3ByZWZpeCA9IE5vbmUKLQltYXJrID0gZGljdCgpCisgICAgY29tbWl0X3RpbWUgPSAwCisgICAgbmV4dF9tYXJrID0gMQorICAgIGNvbW1vbl9wcmVmaXggPSBOb25lCisgICAgbWFyayA9IGRpY3QoKQogCi0JemlwID0gWmlwRmlsZSh6aXBmaWxlLCAncicpCi0JZm9yIG5hbWUgaW4gemlwLm5hbWVsaXN0KCk6Ci0JCWlmIG5hbWUuZW5kc3dpdGgoJy8nKToKLQkJCWNvbnRpbnVlCi0JCWluZm8gPSB6aXAuZ2V0aW5mbyhuYW1lKQorICAgIHppcCA9IFppcEZpbGUoemlwZmlsZSwgJ3InKQorICAgIGZvciBuYW1lIGluIHppcC5uYW1lbGlzdCgpOgorICAgICAgICBpZiBuYW1lLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpbmZvID0gemlwLmdldGluZm8obmFtZSkKIAotCQlpZiBjb21taXRfdGltZSA8IGluZm8uZGF0ZV90aW1lOgotCQkJY29tbWl0X3RpbWUgPSBpbmZvLmRhdGVfdGltZQotCQlpZiBjb21tb25fcHJlZml4ID09IE5vbmU6Ci0JCQljb21tb25fcHJlZml4ID0gbmFtZVs6bmFtZS5yZmluZCgnLycpICsgMV0KLQkJZWxzZToKLQkJCXdoaWxlIG5vdCBuYW1lLnN0YXJ0c3dpdGgoY29tbW9uX3ByZWZpeCk6Ci0JCQkJbGFzdF9zbGFzaCA9IGNvbW1vbl9wcmVmaXhbOi0xXS5yZmluZCgnLycpICsgMQotCQkJCWNvbW1vbl9wcmVmaXggPSBjb21tb25fcHJlZml4WzpsYXN0X3NsYXNoXQorICAgICAgICBpZiBjb21taXRfdGltZSA8IGluZm8uZGF0ZV90aW1lOgorICAgICAgICAgICAgY29tbWl0X3RpbWUgPSBpbmZvLmRhdGVfdGltZQorICAgICAgICBpZiBjb21tb25fcHJlZml4ID09IE5vbmU6CisgICAgICAgICAgICBjb21tb25fcHJlZml4ID0gbmFtZVs6bmFtZS5yZmluZCgnLycpICsgMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdoaWxlIG5vdCBuYW1lLnN0YXJ0c3dpdGgoY29tbW9uX3ByZWZpeCk6CisgICAgICAgICAgICAgICAgbGFzdF9zbGFzaCA9IGNvbW1vbl9wcmVmaXhbOi0xXS5yZmluZCgnLycpICsgMQorICAgICAgICAgICAgICAgIGNvbW1vbl9wcmVmaXggPSBjb21tb25fcHJlZml4WzpsYXN0X3NsYXNoXQogCi0JCW1hcmtbbmFtZV0gPSAnOicgKyBzdHIobmV4dF9tYXJrKQotCQluZXh0X21hcmsgKz0gMQorICAgICAgICBtYXJrW25hbWVdID0gJzonICsgc3RyKG5leHRfbWFyaykKKyAgICAgICAgbmV4dF9tYXJrICs9IDEKIAotCQlwcmludGxpbmVzKCgnYmxvYicsICdtYXJrICcgKyBtYXJrW25hbWVdLCBcCi0JCQkJCSdkYXRhICcgKyBzdHIoaW5mby5maWxlX3NpemUpKSkKLQkJZmFzdF9pbXBvcnQud3JpdGUoemlwLnJlYWQobmFtZSkgKyAiXG4iKQorICAgICAgICBwcmludGxpbmVzKCgnYmxvYicsICdtYXJrICcgKyBtYXJrW25hbWVdLCBcCisgICAgICAgICAgICAgICAgICAgICdkYXRhICcgKyBzdHIoaW5mby5maWxlX3NpemUpKSkKKyAgICAgICAgZmFzdF9pbXBvcnQud3JpdGUoemlwLnJlYWQobmFtZSkgKyAiXG4iKQogCi0JY29tbWl0dGVyID0gY29tbWl0dGVyX25hbWUgKyAnIDwnICsgY29tbWl0dGVyX2VtYWlsICsgJz4gJWQgKzAwMDAnICUgXAotCQlta3RpbWUoY29tbWl0X3RpbWUgKyAoMCwgMCwgMCkpCisgICAgY29tbWl0dGVyID0gY29tbWl0dGVyX25hbWUgKyAnIDwnICsgY29tbWl0dGVyX2VtYWlsICsgJz4gJWQgKzAwMDAnICUgXAorICAgICAgICBta3RpbWUoY29tbWl0X3RpbWUgKyAoMCwgMCwgMCkpCiAKLQlwcmludGxpbmVzKCgnY29tbWl0ICcgKyBicmFuY2hfcmVmLCAnY29tbWl0dGVyICcgKyBjb21taXR0ZXIsIFwKLQkJJ2RhdGEgPDxFT00nLCAnSW1wb3J0ZWQgZnJvbSAnICsgemlwZmlsZSArICcuJywgJ0VPTScsIFwKLQkJJycsICdkZWxldGVhbGwnKSkKKyAgICBwcmludGxpbmVzKCgnY29tbWl0ICcgKyBicmFuY2hfcmVmLCAnY29tbWl0dGVyICcgKyBjb21taXR0ZXIsIFwKKyAgICAgICAgJ2RhdGEgPDxFT00nLCAnSW1wb3J0ZWQgZnJvbSAnICsgemlwZmlsZSArICcuJywgJ0VPTScsIFwKKyAgICAgICAgJycsICdkZWxldGVhbGwnKSkKIAotCWZvciBuYW1lIGluIG1hcmsua2V5cygpOgotCQlmYXN0X2ltcG9ydC53cml0ZSgnTSAxMDA2NDQgJyArIG1hcmtbbmFtZV0gKyAnICcgKwotCQkJbmFtZVtsZW4oY29tbW9uX3ByZWZpeCk6XSArICJcbiIpCisgICAgZm9yIG5hbWUgaW4gbWFyay5rZXlzKCk6CisgICAgICAgIGZhc3RfaW1wb3J0LndyaXRlKCdNIDEwMDY0NCAnICsgbWFya1tuYW1lXSArICcgJyArCisgICAgICAgICAgICBuYW1lW2xlbihjb21tb25fcHJlZml4KTpdICsgIlxuIikKIAotCXByaW50bGluZXMoKCcnLCAgJ3RhZyAnICsgcGF0aC5iYXNlbmFtZSh6aXBmaWxlKSwgXAotCQknZnJvbSAnICsgYnJhbmNoX3JlZiwgJ3RhZ2dlciAnICsgY29tbWl0dGVyLCBcCi0JCSdkYXRhIDw8RU9NJywgJ1BhY2thZ2UgJyArIHppcGZpbGUsICdFT00nLCAnJykpCisgICAgcHJpbnRsaW5lcygoJycsICAndGFnICcgKyBwYXRoLmJhc2VuYW1lKHppcGZpbGUpLCBcCisgICAgICAgICdmcm9tICcgKyBicmFuY2hfcmVmLCAndGFnZ2VyICcgKyBjb21taXR0ZXIsIFwKKyAgICAgICAgJ2RhdGEgPDxFT00nLCAnUGFja2FnZSAnICsgemlwZmlsZSwgJ0VPTScsICcnKSkKIAogaWYgZmFzdF9pbXBvcnQuY2xvc2UoKToKLQlleGl0KDEpCisgICAgZXhpdCgxKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9oZy10by1naXQvaGctdG8tZ2l0LnB5IGIvY29udHJpYi9oZy10by1naXQvaGctdG8tZ2l0LnB5CmluZGV4IDA0NmNiMmIuLjIzMjYyNWEgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvaGctdG8tZ2l0L2hnLXRvLWdpdC5weQorKysgYi9jb250cmliL2hnLXRvLWdpdC9oZy10by1naXQucHkKQEAgLTIzLDYgKzIzLDExIEBACiBpbXBvcnQgdGVtcGZpbGUsIHBpY2tsZSwgZ2V0b3B0CiBpbXBvcnQgcmUKIAoraWYgc3lzLmhleHZlcnNpb24gPCAweDAyMDMwMDAwOgorICAgIyBUaGUgYmVoYXZpb3Igb2YgdGhlIHBpY2tsZSBtb2R1bGUgY2hhbmdlZCBzaWduaWZpY2FudGx5IGluIDIuMworICAgc3lzLnN0ZGVyci53cml0ZSgiaGctdG8tZ2l0LnB5OiByZXF1aXJlcyBQeXRob24gMi4zIG9yIGxhdGVyLlxuIikKKyAgIHN5cy5leGl0KDEpCisKICMgTWFwcyBoZyB2ZXJzaW9uIC0+IGdpdCB2ZXJzaW9uCiBoZ3ZlcnMgPSB7fQogIyBMaXN0IG9mIGNoaWxkcmVuIGZvciBlYWNoIGhnIHJldmlzaW9uCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL3Bvc3QtcmVjZWl2ZS1lbWFpbCBiL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCmluZGV4IGIyMTcxYTAuLjBlNWI3MmQgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCisrKyBiL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCkBAIC0yMzcsNiArMjM3LDcgQEAKIAlYLUdpdC1SZWZ0eXBlOiAkcmVmbmFtZV90eXBlCiAJWC1HaXQtT2xkcmV2OiAkb2xkcmV2CiAJWC1HaXQtTmV3cmV2OiAkbmV3cmV2CisJQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkCiAKIAlUaGlzIGlzIGFuIGF1dG9tYXRlZCBlbWFpbCBmcm9tIHRoZSBnaXQgaG9va3MvcG9zdC1yZWNlaXZlIHNjcmlwdC4gSXQgd2FzCiAJZ2VuZXJhdGVkIGJlY2F1c2UgYSByZWYgY2hhbmdlIHdhcyBwdXNoZWQgdG8gdGhlIHJlcG9zaXRvcnkgY29udGFpbmluZwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ob29rcy9zZXRnaXRwZXJtcy5wZXJsIGIvY29udHJpYi9ob29rcy9zZXRnaXRwZXJtcy5wZXJsCmluZGV4IGE1NzdhZDAuLjI3NzBhMWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvaG9va3Mvc2V0Z2l0cGVybXMucGVybAorKysgYi9jb250cmliL2hvb2tzL3NldGdpdHBlcm1zLnBlcmwKQEAgLTI0LDcgKzI0LDcgQEAKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIAogbXkgJHVzYWdlID0KLSJVc2FnZTogc2V0Z2l0cGVybXMucGVybCBbT1BUSU9OXS4uLiA8LS1yZWFkfC0td3JpdGU+CisidXNhZ2U6IHNldGdpdHBlcm1zLnBlcmwgW09QVElPTl0uLi4gPC0tcmVhZHwtLXdyaXRlPgogVGhpcyBwcm9ncmFtIHVzZXMgYSBmaWxlIGAuZ2l0bWV0YWAgdG8gc3RvcmUvcmVzdG9yZSBwZXJtaXNzaW9ucyBhbmQgdWlkL2dpZAogaW5mbyBmb3IgYWxsIGZpbGVzL2RpcnMgdHJhY2tlZCBieSBnaXQgaW4gdGhlIHJlcG9zaXRvcnkuCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0Ly5naXRpZ25vcmUgYi9jb250cmliL213LXRvLWdpdC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MTk2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEgQEAKK2dpdC1yZW1vdGUtbWVkaWF3aWtpCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC8ucGVybGNyaXRpY3JjIGIvY29udHJpYi9tdy10by1naXQvLnBlcmxjcml0aWNyYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTk5NTVkCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9tdy10by1naXQvLnBlcmxjcml0aWNyYwpAQCAtMCwwICsxLDI4IEBACisjIFRoZXNlIDMgcnVsZXMgZGVtYW5kIHRvIGFkZCB0aGUgcywgbSBhbmQgeCBmbGFnIHRvICpldmVyeSogcmVnZXhwLiBUaGlzIGlzCisjIG92ZXJraWxsIGFuZCB3b3VsZCBiZSBoYXJtZnVsIGZvciByZWFkYWJpbGl0eS4KK1stUmVndWxhckV4cHJlc3Npb25zOjpSZXF1aXJlRXh0ZW5kZWRGb3JtYXR0aW5nXQorWy1SZWd1bGFyRXhwcmVzc2lvbnM6OlJlcXVpcmVEb3RNYXRjaEFueXRoaW5nXQorWy1SZWd1bGFyRXhwcmVzc2lvbnM6OlJlcXVpcmVMaW5lQm91bmRhcnlNYXRjaGluZ10KKworIyBUaGlzIHJ1bGUgc2F5cyB0aGF0IGJ1aWx0aW4gZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggcGFyZW50aGVzZXMKKyMgZS5nLjogKHRha2VuIGZyb20gQ1BBTidzIGRvY3VtZW50YXRpb24pCisjIG9wZW4oJGhhbmRsZSwgJz4nLCAkZmlsZW5hbWUpOyAjbm90IG9rCisjIG9wZW4gJGhhbmRsZSwgJz4nLCAkZmlsZW5hbWU7ICAjb2sKKyMgQXBwbHlpbmcgc3VjaCBhIHJ1bGUgd291bGQgbWVhbiBtb2RpZnlpbmcgYSBodWdlIG51bWJlciBvZiBsaW5lcyBmb3IgYQorIyBxdWVzdGlvbiBvZiBzdHlsZS4KK1stQ29kZUxheW91dDo6UHJvaGliaXRQYXJlbnNXaXRoQnVpbHRpbnNdCisKKyMgVGhpcyBydWxlIHN0YXRlcyB0aGF0IGVhY2ggc3lzdGVtIGNhbGwgc2hvdWxkIGhhdmUgaXRzIHJldHVybiB2YWx1ZSBjaGVja2VkCisjIFRoZSBwcm9ibGVtIGlzIHRoYXQgaXQgaW5jbHVkZXMgdGhlIHByaW50IGNhbGwuIENoZWNraW5nIGV2ZXJ5IHByaW50IGNhbGwncworIyByZXR1cm4gdmFsdWUgd291bGQgYmUgaGFybWZ1bCB0byB0aGUgY29kZSByZWFkYWJpbHR5LgorIyBUaGlzIGNvbmZpZ3VyYXRpb24ga2VlcHMgYWxsIGRlZmF1bHQgZnVuY3Rpb24gYnV0IHByaW50LgorW0lucHV0T3V0cHV0OjpSZXF1aXJlQ2hlY2tlZFN5c2NhbGxzXQorZnVuY3Rpb25zID0gb3BlbiBzYXkgY2xvc2UKKworIyBUaGlzIHJ1bGVzIGRlbWFuZHMgdG8gYWRkIGEgZGVwZW5kYW5jeSBmb3IgdGhlIFJlYWRvbmx5IG1vZHVsZS4gVGhpcyBpcyBub3QKKyMgd2lzaGVkLgorWy1WYWx1ZXNBbmRFeHByZXNzaW9uczo6UHJvaGliaXRDb25zdGFudFByYWdtYV0KKworIyBUaGlzIHJ1bGUgaXMgbm90IHJlYWxseSB1c2VmdWwgKHJhdGhlciBhIHF1ZXN0aW9uIG9mIHN0eWxlKSBhbmQgcHJvZHVjZXMgbWFueQorIyB3YXJuaW5ncyBhbW9uZyB0aGUgY29kZS4KK1stVmFsdWVzQW5kRXhwcmVzc2lvbnM6OlByb2hpYml0Tm9pc3lRdW90ZXNdCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC9NYWtlZmlsZSBiL2NvbnRyaWIvbXctdG8tZ2l0L01ha2VmaWxlCmluZGV4IDNlZDcyOGIuLjFmYjI0MjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L01ha2VmaWxlCkBAIC0xLDQ3ICsxLDE5IEBACiAjCi0jIENvcHlyaWdodCAoQykgMjAxMgotIyAgICAgQ2hhcmxlcyBSb3Vzc2VsIDxjaGFybGVzLnJvdXNzZWxAZW5zaW1hZy5pbWFnLmZyPgotIyAgICAgU2ltb24gQ2F0aGVicmFzIDxzaW1vbi5jYXRoZWJyYXNAZW5zaW1hZy5pbWFnLmZyPgotIyAgICAgSnVsaWVuIEtoYXlhdCA8anVsaWVuLmtoYXlhdEBlbnNpbWFnLmltYWcuZnI+Ci0jICAgICBHdWlsbGF1bWUgU2FzZHkgPGd1aWxsYXVtZS5zYXNkeUBlbnNpbWFnLmltYWcuZnI+Ci0jICAgICBTaW1vbiBQZXJyYXQgPHNpbW9uLnBlcnJhdEBlbnNpbWFnLmltYWcuZnI+CisjIENvcHlyaWdodCAoQykgMjAxMworIyAgICAgTWF0dGhpZXUgTW95IDxNYXR0aGlldS5Nb3lAaW1hZy5mcj4KICMKICMjIEJ1aWxkIGdpdC1yZW1vdGUtbWVkaWF3aWtpCiAKLS1pbmNsdWRlIC4uLy4uL2NvbmZpZy5tYWsuYXV0b2dlbgotLWluY2x1ZGUgLi4vLi4vY29uZmlnLm1haworU0NSSVBUX1BFUkw9Z2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybAorR0lUX1JPT1RfRElSPS4uLy4uCitIRVJFPWNvbnRyaWIvbXctdG8tZ2l0LwogCi1pZm5kZWYgUEVSTF9QQVRICi0JUEVSTF9QQVRIID0gL3Vzci9iaW4vcGVybAotZW5kaWYKLWlmbmRlZiBnaXRleGVjZGlyCi0JZ2l0ZXhlY2RpciA9ICQoc2hlbGwgZ2l0IC0tZXhlYy1wYXRoKQotZW5kaWYKK1NDUklQVF9QRVJMX0ZVTEw9JChwYXRzdWJzdCAlLCQoSEVSRSkvJSwkKFNDUklQVF9QRVJMKSkKIAotUEVSTF9QQVRIX1NRID0gJChzdWJzdCAnLCdcJycsJChQRVJMX1BBVEgpKQotZ2l0ZXhlY2Rpcl9TUSA9ICQoc3Vic3QgJywnXCcnLCQoZ2l0ZXhlY2RpcikpCi1TQ1JJUFQgPSBnaXQtcmVtb3RlLW1lZGlhd2lraQorYWxsOiBidWlsZAogCi0uUEhPTlk6IGluc3RhbGwgaGVscCBkb2MgdGVzdCBjbGVhbgotCi1oZWxwOgotCUBlY2hvICdUaGlzIGlzIHRoZSBoZWxwIHRhcmdldCBvZiB0aGUgTWFrZWZpbGUuIEN1cnJlbnQgY29uZmlndXJhdGlvbjonCi0JQGVjaG8gJyAgZ2l0ZXhlY2RpciA9ICQoZ2l0ZXhlY2Rpcl9TUSknCi0JQGVjaG8gJyAgUEVSTF9QQVRIID0gJChQRVJMX1BBVEhfU1EpJwotCUBlY2hvICdSdW4gIiQoTUFLRSkgaW5zdGFsbCIgdG8gaW5zdGFsbCAkKFNDUklQVCkgaW4gZ2l0ZXhlY2RpcicKLQlAZWNobyAnUnVuICIkKE1BS0UpIHRlc3QiIHRvIHJ1biB0aGUgdGVzdHN1aXRlJwotCi1pbnN0YWxsOgotCXNlZCAtZSAnMXN8IyEuKi9wZXJsfCMhJChQRVJMX1BBVEhfU1EpfCcgJChTQ1JJUFQpIFwKLQkJPiAnJChnaXRleGVjZGlyX1NRKS8kKFNDUklQVCknCi0JY2htb2QgK3ggJyQoZ2l0ZXhlY2RpcikvJChTQ1JJUFQpJwotCi1kb2M6Ci0JQGVjaG8gJ1NvcnJ5LCAibWFrZSBkb2MiIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yICQoU0NSSVBUKScKLQotdGVzdDoKLQkkKE1BS0UpIC1DIHQvIHRlc3QKLQotY2xlYW46Ci0JJChSTSkgJyQoZ2l0ZXhlY2RpcikvJChTQ1JJUFQpJwotCSQoTUFLRSkgLUMgdC8gY2xlYW4KK2J1aWxkIGluc3RhbGwgY2xlYW46CisJJChNQUtFKSAtQyAkKEdJVF9ST09UX0RJUikgU0NSSVBUX1BFUkw9JChTQ1JJUFRfUEVSTF9GVUxMKSBcCisgICAgICAgICAgICAgICAgJEAtcGVybC1zY3JpcHQKK3Blcmxjcml0aWM6CisJcGVybGNyaXRpYyAtMiAqLnBlcmwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpIGIvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybApzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBjb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraQpyZW5hbWUgdG8gY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybAppbmRleCAwOTQxMjlkLi43MWJhZjhhIDEwMDc1NQotLS0gYS9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraQorKysgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS5wZXJsCkBAIC0xMywyMiArMTMsMjEgQEAKIAogdXNlIHN0cmljdDsKIHVzZSBNZWRpYVdpa2k6OkFQSTsKK3VzZSBHaXQ7CiB1c2UgRGF0ZVRpbWU6OkZvcm1hdDo6SVNPODYwMTsKLQotIyBCeSBkZWZhdWx0LCB1c2UgVVRGLTggdG8gY29tbXVuaWNhdGUgd2l0aCBHaXQgYW5kIHRoZSB1c2VyCi1iaW5tb2RlIFNUREVSUiwgIjp1dGY4IjsKLWJpbm1vZGUgU1RET1VULCAiOnV0ZjgiOwotCi11c2UgVVJJOjpFc2NhcGU7Ci11c2UgSVBDOjpPcGVuMjsKLQogdXNlIHdhcm5pbmdzOwogCisjIEJ5IGRlZmF1bHQsIHVzZSBVVEYtOCB0byBjb21tdW5pY2F0ZSB3aXRoIEdpdCBhbmQgdGhlIHVzZXIKK2Jpbm1vZGUgU1RERVJSLCAnOmVuY29kaW5nKFVURi04KSc7CitiaW5tb2RlIFNURE9VVCwgJzplbmNvZGluZyhVVEYtOCknOworCit1c2UgVVJJOjpFc2NhcGU7CisKICMgTWVkaWF3aWtpIGZpbGVuYW1lcyBjYW4gY29udGFpbiBmb3J3YXJkIHNsYXNoZXMuIFRoaXMgdmFyaWFibGUgZGVjaWRlcyBieSB3aGljaCBwYXR0ZXJuIHRoZXkgc2hvdWxkIGJlIHJlcGxhY2VkCi11c2UgY29uc3RhbnQgU0xBU0hfUkVQTEFDRU1FTlQgPT4gIiUyRiI7Cit1c2UgY29uc3RhbnQgU0xBU0hfUkVQTEFDRU1FTlQgPT4gJyUyRic7CiAKICMgSXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRlbGV0ZSBwYWdlcyAobWF5IHJlcXVpcmUgc29tZQotIyBwcml2aWxlZGdlcykuIERlbGV0ZWQgcGFnZXMgYXJlIHJlcGxhY2VkIHdpdGggdGhpcyBjb250ZW50LgorIyBwcml2aWxlZ2VzKS4gRGVsZXRlZCBwYWdlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGlzIGNvbnRlbnQuCiB1c2UgY29uc3RhbnQgREVMRVRFRF9DT05URU5UID0+ICJbW0NhdGVnb3J5OkRlbGV0ZWRdXVxuIjsKIAogIyBJdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgZW1wdHkgcGFnZXMuIE5ldyBlbXB0eSBmaWxlcyBpbiBHaXQgYXJlCkBAIC0zNiw0NSArMzUsNjEgQEAKIHVzZSBjb25zdGFudCBFTVBUWV9DT05URU5UID0+ICI8IS0tIGVtcHR5IHBhZ2UgLS0+XG4iOwogCiAjIHVzZWQgdG8gcmVmbGVjdCBmaWxlIGNyZWF0aW9uIG9yIGRlbGV0aW9uIGluIGRpZmYuCi11c2UgY29uc3RhbnQgTlVMTF9TSEExID0+ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKK3VzZSBjb25zdGFudCBOVUxMX1NIQTEgPT4gJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnOwogCiAjIFVzZWQgb24gR2l0J3Mgc2lkZSB0byByZWZsZWN0IGVtcHR5IGVkaXQgbWVzc2FnZXMgb24gdGhlIHdpa2kKIHVzZSBjb25zdGFudCBFTVBUWV9NRVNTQUdFID0+ICcqRW1wdHkgTWVkaWFXaWtpIE1lc3NhZ2UqJzsKIAordXNlIGNvbnN0YW50IEVNUFRZID0+IHF7fTsKKworIyBOdW1iZXIgb2YgcGFnZXMgdGFrZW4gaW50byBhY2NvdW50IGF0IG9uY2UgaW4gc3VibW9kdWxlIGdldF9td19wYWdlX2xpc3QKK3VzZSBjb25zdGFudCBTTElDRV9TSVpFID0+IDUwOworCisjIE51bWJlciBvZiBsaW5rZWQgbWVkaWFmaWxlIHRvIGdldCBhdCBvbmNlIGluIGdldF9saW5rZWRfbWVkaWFmaWxlcworIyBUaGUgcXVlcnkgaXMgc3BsaXQgaW4gc21hbGwgYmF0Y2hlcyBiZWNhdXNlIG9mIHRoZSBNVyBBUEkgbGltaXQgb2YKKyMgdGhlIG51bWJlciBvZiBsaW5rcyB0byBiZSByZXR1cm5lZCAoNTAwIGxpbmtzIG1heCkuCit1c2UgY29uc3RhbnQgQkFUQ0hfU0laRSA9PiAxMDsKKwordXNlIGNvbnN0YW50IEhUVFBfQ09ERV9PSyA9PiAyMDA7CisKK2lmIChAQVJHViAhPSAyKSB7CisJZXhpdF9lcnJvcl91c2FnZSgpOworfQorCiBteSAkcmVtb3RlbmFtZSA9ICRBUkdWWzBdOwogbXkgJHVybCA9ICRBUkdWWzFdOwogCiAjIEFjY2VwdCBib3RoIHNwYWNlLXNlcGFyYXRlZCBhbmQgbXVsdGlwbGUga2V5cyBpbiBjb25maWcgZmlsZS4KICMgU3BhY2VzIHNob3VsZCBiZSB3cml0dGVuIGFzIF8gYW55d2F5IGJlY2F1c2Ugd2UnbGwgdXNlIGNob21wLgotbXkgQHRyYWNrZWRfcGFnZXMgPSBzcGxpdCgvWyBcbl0vLCBydW5fZ2l0KCJjb25maWcgLS1nZXQtYWxsIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5wYWdlcyIpKTsKK215IEB0cmFja2VkX3BhZ2VzID0gc3BsaXQoL1sgXG5dLywgcnVuX2dpdCgiY29uZmlnIC0tZ2V0LWFsbCByZW1vdGUuJHtyZW1vdGVuYW1lfS5wYWdlcyIpKTsKIGNob21wKEB0cmFja2VkX3BhZ2VzKTsKIAogIyBKdXN0IGxpa2UgQHRyYWNrZWRfcGFnZXMsIGJ1dCBmb3IgTWVkaWFXaWtpIGNhdGVnb3JpZXMuCi1teSBAdHJhY2tlZF9jYXRlZ29yaWVzID0gc3BsaXQoL1sgXG5dLywgcnVuX2dpdCgiY29uZmlnIC0tZ2V0LWFsbCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIuY2F0ZWdvcmllcyIpKTsKK215IEB0cmFja2VkX2NhdGVnb3JpZXMgPSBzcGxpdCgvWyBcbl0vLCBydW5fZ2l0KCJjb25maWcgLS1nZXQtYWxsIHJlbW90ZS4ke3JlbW90ZW5hbWV9LmNhdGVnb3JpZXMiKSk7CiBjaG9tcChAdHJhY2tlZF9jYXRlZ29yaWVzKTsKIAogIyBJbXBvcnQgbWVkaWEgZmlsZXMgb24gcHVsbAotbXkgJGltcG9ydF9tZWRpYSA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCAtLWJvb2wgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm1lZGlhaW1wb3J0Iik7CitteSAkaW1wb3J0X21lZGlhID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuJHtyZW1vdGVuYW1lfS5tZWRpYWltcG9ydCIpOwogY2hvbXAoJGltcG9ydF9tZWRpYSk7Ci0kaW1wb3J0X21lZGlhID0gKCRpbXBvcnRfbWVkaWEgZXEgInRydWUiKTsKKyRpbXBvcnRfbWVkaWEgPSAoJGltcG9ydF9tZWRpYSBlcSAndHJ1ZScpOwogCiAjIEV4cG9ydCBtZWRpYSBmaWxlcyBvbiBwdXNoCi1teSAkZXhwb3J0X21lZGlhID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIubWVkaWFleHBvcnQiKTsKK215ICRleHBvcnRfbWVkaWEgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4ke3JlbW90ZW5hbWV9Lm1lZGlhZXhwb3J0Iik7CiBjaG9tcCgkZXhwb3J0X21lZGlhKTsKLSRleHBvcnRfbWVkaWEgPSAhKCRleHBvcnRfbWVkaWEgZXEgImZhbHNlIik7CiskZXhwb3J0X21lZGlhID0gISgkZXhwb3J0X21lZGlhIGVxICdmYWxzZScpOwogCi1teSAkd2lraV9sb2dpbiA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIubXdMb2dpbiIpOworbXkgJHdpa2lfbG9naW4gPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubXdMb2dpbiIpOwogIyBOb3RlOiBtd1Bhc3N3b3JkIGlzIGRpc2NvdXJyYWdlZC4gVXNlIHRoZSBjcmVkZW50aWFsIHN5c3RlbSBpbnN0ZWFkLgotbXkgJHdpa2lfcGFzc3dkID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5td1Bhc3N3b3JkIik7Ci1teSAkd2lraV9kb21haW4gPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm13RG9tYWluIik7CitteSAkd2lraV9wYXNzd2QgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubXdQYXNzd29yZCIpOworbXkgJHdpa2lfZG9tYWluID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IHJlbW90ZS4ke3JlbW90ZW5hbWV9Lm13RG9tYWluIik7CiBjaG9tcCgkd2lraV9sb2dpbik7CiBjaG9tcCgkd2lraV9wYXNzd2QpOwogY2hvbXAoJHdpa2lfZG9tYWluKTsKIAogIyBJbXBvcnQgb25seSBsYXN0IHJldmlzaW9ucyAoYm90aCBmb3IgY2xvbmUgYW5kIGZldGNoKQotbXkgJHNoYWxsb3dfaW1wb3J0ID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIuc2hhbGxvdyIpOworbXkgJHNoYWxsb3dfaW1wb3J0ID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuJHtyZW1vdGVuYW1lfS5zaGFsbG93Iik7CiBjaG9tcCgkc2hhbGxvd19pbXBvcnQpOwotJHNoYWxsb3dfaW1wb3J0ID0gKCRzaGFsbG93X2ltcG9ydCBlcSAidHJ1ZSIpOworJHNoYWxsb3dfaW1wb3J0ID0gKCRzaGFsbG93X2ltcG9ydCBlcSAndHJ1ZScpOwogCiAjIEZldGNoIChjbG9uZSBhbmQgcHVsbCkgYnkgcmV2aXNpb25zIGluc3RlYWQgb2YgYnkgcGFnZXMuIFRoaXMgYmVoYXZpb3IKICMgaXMgbW9yZSBlZmZpY2llbnQgd2hlbiB3ZSBoYXZlIGEgd2lraSB3aXRoIGxvdHMgb2YgcGFnZXMgYW5kIHdlIGZldGNoCkBAIC04MiwxNSArOTcsMTggQEAKICMgUG9zc2libGUgdmFsdWVzOgogIyAtIGJ5X3JldjogcGVyZm9ybSBvbmUgcXVlcnkgcGVyIG5ldyByZXZpc2lvbiBvbiB0aGUgcmVtb3RlIHdpa2kKICMgLSBieV9wYWdlOiBxdWVyeSBlYWNoIHRyYWNrZWQgcGFnZSBmb3IgbmV3IHJldmlzaW9uCi1teSAkZmV0Y2hfc3RyYXRlZ3kgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiRyZW1vdGVuYW1lLmZldGNoU3RyYXRlZ3kiKTsKLXVubGVzcyAoJGZldGNoX3N0cmF0ZWd5KSB7Ci0JJGZldGNoX3N0cmF0ZWd5ID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IG1lZGlhd2lraS5mZXRjaFN0cmF0ZWd5Iik7CitteSAkZmV0Y2hfc3RyYXRlZ3kgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiR7cmVtb3RlbmFtZX0uZmV0Y2hTdHJhdGVneSIpOworaWYgKCEkZmV0Y2hfc3RyYXRlZ3kpIHsKKwkkZmV0Y2hfc3RyYXRlZ3kgPSBydW5fZ2l0KCdjb25maWcgLS1nZXQgbWVkaWF3aWtpLmZldGNoU3RyYXRlZ3knKTsKIH0KIGNob21wKCRmZXRjaF9zdHJhdGVneSk7Ci11bmxlc3MgKCRmZXRjaF9zdHJhdGVneSkgewotCSRmZXRjaF9zdHJhdGVneSA9ICJieV9wYWdlIjsKK2lmICghJGZldGNoX3N0cmF0ZWd5KSB7CisJJGZldGNoX3N0cmF0ZWd5ID0gJ2J5X3BhZ2UnOwogfQogCisjIFJlbWVtYmVyIHRoZSB0aW1lc3RhbXAgY29ycmVzcG9uZGluZyB0byBhIHJldmlzaW9uIGlkLgorbXkgJWJhc2V0aW1lc3RhbXBzOworCiAjIER1bWIgcHVzaDogZG9uJ3QgdXBkYXRlIG5vdGVzIGFuZCBtZWRpYXdpa2kgcmVmIHRvIHJlZmxlY3QgdGhlIGxhc3QgcHVzaC4KICMKICMgQ29uZmlndXJhYmxlIHdpdGggbWVkaWF3aWtpLmR1bWJQdXNoLCBvciBwZXItcmVtb3RlIHdpdGgKQEAgLTEwNSw0OCArMTIzLDI1IEBACiAjIHdpbGwgZ2V0IHRoZSBoaXN0b3J5IHdpdGggaW5mb3JtYXRpb24gbG9zdCkuIElmIHRoZSBpbXBvcnQgaXMKICMgZGV0ZXJtaW5pc3RpYywgdGhpcyBtZWFucyBldmVyeWJvZHkgZ2V0cyB0aGUgc2FtZSBzaGExIGZvciBlYWNoCiAjIE1lZGlhV2lraSByZXZpc2lvbi4KLW15ICRkdW1iX3B1c2ggPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4kcmVtb3RlbmFtZS5kdW1iUHVzaCIpOwotdW5sZXNzICgkZHVtYl9wdXNoKSB7Ci0JJGR1bWJfcHVzaCA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCAtLWJvb2wgbWVkaWF3aWtpLmR1bWJQdXNoIik7CitteSAkZHVtYl9wdXNoID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuJHtyZW1vdGVuYW1lfS5kdW1iUHVzaCIpOworaWYgKCEkZHVtYl9wdXNoKSB7CisJJGR1bWJfcHVzaCA9IHJ1bl9naXQoJ2NvbmZpZyAtLWdldCAtLWJvb2wgbWVkaWF3aWtpLmR1bWJQdXNoJyk7CiB9CiBjaG9tcCgkZHVtYl9wdXNoKTsKLSRkdW1iX3B1c2ggPSAoJGR1bWJfcHVzaCBlcSAidHJ1ZSIpOworJGR1bWJfcHVzaCA9ICgkZHVtYl9wdXNoIGVxICd0cnVlJyk7CiAKIG15ICR3aWtpX25hbWUgPSAkdXJsOwotJHdpa2lfbmFtZSA9fiBzL1teXC9dKjpcL1wvLy87Ciskd2lraV9uYW1lID1+IHN7W14vXSo6Ly99e307CiAjIElmIFVSTCBpcyBsaWtlIGh0dHA6Ly91c2VyOnBhc3N3b3JkQGV4YW1wbGUuY29tLywgd2UgY2xlYXJseSBkb24ndAogIyB3YW50IHRoZSBwYXNzd29yZCBpbiAkd2lraV9uYW1lLiBXaGlsZSB3ZSdyZSB0aGVyZSwgYWxzbyByZW1vdmUgdXNlcgogIyBhbmQgJ0AnIHNpZ24sIHRvIGF2b2lkIGF1dGhvciBsaWtlIE1XVXNlckBIVFRQVXNlckBob3N0LmNvbQogJHdpa2lfbmFtZSA9fiBzL14uKkAvLzsKIAogIyBDb21tYW5kcyBwYXJzZXIKLW15ICRlbnRyeTsKLW15IEBjbWQ7CiB3aGlsZSAoPFNURElOPikgewogCWNob21wOwotCUBjbWQgPSBzcGxpdCgvIC8pOwotCWlmIChkZWZpbmVkKCRjbWRbMF0pKSB7Ci0JCSMgTGluZSBub3QgYmxhbmsKLQkJaWYgKCRjbWRbMF0gZXEgImNhcGFiaWxpdGllcyIpIHsKLQkJCWRpZSgiVG9vIG1hbnkgYXJndW1lbnRzIGZvciBjYXBhYmlsaXRpZXMiKSB1bmxlc3MgKCFkZWZpbmVkKCRjbWRbMV0pKTsKLQkJCW13X2NhcGFiaWxpdGllcygpOwotCQl9IGVsc2lmICgkY21kWzBdIGVxICJsaXN0IikgewotCQkJZGllKCJUb28gbWFueSBhcmd1bWVudHMgZm9yIGxpc3QiKSB1bmxlc3MgKCFkZWZpbmVkKCRjbWRbMl0pKTsKLQkJCW13X2xpc3QoJGNtZFsxXSk7Ci0JCX0gZWxzaWYgKCRjbWRbMF0gZXEgImltcG9ydCIpIHsKLQkJCWRpZSgiSW52YWxpZCBhcmd1bWVudHMgZm9yIGltcG9ydCIpIHVubGVzcyAoJGNtZFsxXSBuZSAiIiAmJiAhZGVmaW5lZCgkY21kWzJdKSk7Ci0JCQltd19pbXBvcnQoJGNtZFsxXSk7Ci0JCX0gZWxzaWYgKCRjbWRbMF0gZXEgIm9wdGlvbiIpIHsKLQkJCWRpZSgiVG9vIG1hbnkgYXJndW1lbnRzIGZvciBvcHRpb24iKSB1bmxlc3MgKCRjbWRbMV0gbmUgIiIgJiYgJGNtZFsyXSBuZSAiIiAmJiAhZGVmaW5lZCgkY21kWzNdKSk7Ci0JCQltd19vcHRpb24oJGNtZFsxXSwkY21kWzJdKTsKLQkJfSBlbHNpZiAoJGNtZFswXSBlcSAicHVzaCIpIHsKLQkJCW13X3B1c2goJGNtZFsxXSk7Ci0JCX0gZWxzZSB7Ci0JCQlwcmludCBTVERFUlIgIlVua25vd24gY29tbWFuZC4gQWJvcnRpbmcuLi5cbiI7Ci0JCQlsYXN0OwotCQl9Ci0JfSBlbHNlIHsKLQkJIyBibGFuayBsaW5lOiB3ZSBzaG91bGQgdGVybWluYXRlCisKKwlpZiAoIXBhcnNlX2NvbW1hbmQoJF8pKSB7CiAJCWxhc3Q7CiAJfQogCkBAIC0xNTYsNTUgKzE1MSw0OSBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMjIGNyZWRlbnRpYWwgQVBJIG1hbmFnZW1lbnQgKGdlbmVyaWMgZnVuY3Rpb25zKQotCi1zdWIgY3JlZGVudGlhbF9yZWFkIHsKLQlteSAlY3JlZGVudGlhbDsKLQlteSAkcmVhZGVyID0gc2hpZnQ7Ci0JbXkgJG9wID0gc2hpZnQ7Ci0Jd2hpbGUgKDwkcmVhZGVyPikgewotCQlteSAoJGtleSwgJHZhbHVlKSA9IC8oW149XSopPSguKikvOwotCQlpZiAobm90IGRlZmluZWQgJGtleSkgewotCQkJZGllICJFUlJPUiByZWNlaXZpbmcgcmVzcG9uc2UgZnJvbSBnaXQgY3JlZGVudGlhbCAkb3A6XG4kX1xuIjsKLQkJfQotCQkkY3JlZGVudGlhbHska2V5fSA9ICR2YWx1ZTsKLQl9Ci0JcmV0dXJuICVjcmVkZW50aWFsOworIyMgZXJyb3IgaGFuZGxpbmcKK3N1YiBleGl0X2Vycm9yX3VzYWdlIHsKKwlkaWUgIkVSUk9SOiBnaXQtcmVtb3RlLW1lZGlhd2lraSBtb2R1bGUgd2FzIG5vdCBjYWxsZWQgd2l0aCBhIGNvcnJlY3QgbnVtYmVyIG9mXG4iIC4KKwkgICAgInBhcmFtZXRlcnNcbiIgLgorCSAgICAiWW91IG1heSBvYnRhaW4gdGhpcyBlcnJvciBiZWNhdXNlIHlvdSBhdHRlbXB0ZWQgdG8gcnVuIHRoZSBnaXQtcmVtb3RlLW1lZGlhd2lraVxuIiAuCisgICAgICAgICAgICAibW9kdWxlIGRpcmVjdGx5LlxuIiAuCisJICAgICJUaGlzIG1vZHVsZSBjYW4gYmUgdXNlZCB0aGUgZm9sbG93aW5nIHdheTpcbiIgLgorCSAgICAiXHRnaXQgY2xvbmUgbWVkaWF3aWtpOi8vPGFkZHJlc3Mgb2YgYSBtZWRpYXdpa2k+XG4iIC4KKwkgICAgIlRoZW4sIHVzZSBnaXQgY29tbWl0LCBwdXNoIGFuZCBwdWxsIGFzIHdpdGggZXZlcnkgbm9ybWFsIGdpdCByZXBvc2l0b3J5LlxuIjsKIH0KIAotc3ViIGNyZWRlbnRpYWxfd3JpdGUgewotCW15ICRjcmVkZW50aWFsID0gc2hpZnQ7Ci0JbXkgJHdyaXRlciA9IHNoaWZ0OwotCSMgdXJsIG92ZXJ3cml0ZXMgb3RoZXIgZmllbGRzLCBzbyBpdCBtdXN0IGNvbWUgZmlyc3QKLQlwcmludCAkd3JpdGVyICJ1cmw9JGNyZWRlbnRpYWwtPnt1cmx9XG4iIGlmIGV4aXN0cyAkY3JlZGVudGlhbC0+e3VybH07Ci0Jd2hpbGUgKG15ICgka2V5LCAkdmFsdWUpID0gZWFjaCglJGNyZWRlbnRpYWwpICkgewotCQlpZiAobGVuZ3RoICR2YWx1ZSAmJiAka2V5IG5lICd1cmwnKSB7Ci0JCQlwcmludCAkd3JpdGVyICIka2V5PSR2YWx1ZVxuIjsKLQkJfQorc3ViIHBhcnNlX2NvbW1hbmQgeworCW15ICgkbGluZSkgPSBAXzsKKwlteSBAY21kID0gc3BsaXQoLyAvLCAkbGluZSk7CisJaWYgKCFkZWZpbmVkICRjbWRbMF0pIHsKKwkJcmV0dXJuIDA7CiAJfQotfQotCi1zdWIgY3JlZGVudGlhbF9ydW4gewotCW15ICRvcCA9IHNoaWZ0OwotCW15ICRjcmVkZW50aWFsID0gc2hpZnQ7Ci0JbXkgJHBpZCA9IG9wZW4yKG15ICRyZWFkZXIsIG15ICR3cml0ZXIsICJnaXQgY3JlZGVudGlhbCAkb3AiKTsKLQljcmVkZW50aWFsX3dyaXRlKCRjcmVkZW50aWFsLCAkd3JpdGVyKTsKLQlwcmludCAkd3JpdGVyICJcbiI7Ci0JY2xvc2UoJHdyaXRlcik7Ci0KLQlpZiAoJG9wIGVxICJmaWxsIikgewotCQklJGNyZWRlbnRpYWwgPSBjcmVkZW50aWFsX3JlYWQoJHJlYWRlciwgJG9wKTsKKwlpZiAoJGNtZFswXSBlcSAnY2FwYWJpbGl0aWVzJykgeworCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3IgY2FwYWJpbGl0aWVzXG4iKQorCQkgICAgaWYgKGRlZmluZWQoJGNtZFsxXSkpOworCQltd19jYXBhYmlsaXRpZXMoKTsKKwl9IGVsc2lmICgkY21kWzBdIGVxICdsaXN0JykgeworCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3IgbGlzdFxuIikgaWYgKGRlZmluZWQoJGNtZFsyXSkpOworCQltd19saXN0KCRjbWRbMV0pOworCX0gZWxzaWYgKCRjbWRbMF0gZXEgJ2ltcG9ydCcpIHsKKwkJZGllKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBpbXBvcnRcbiIpCisJCSAgICBpZiAoJGNtZFsxXSBlcSBFTVBUWSk7CisJCWRpZSgiVG9vIG1hbnkgYXJndW1lbnRzIGZvciBpbXBvcnRcbiIpCisJCSAgICBpZiAoZGVmaW5lZCgkY21kWzJdKSk7CisJCW13X2ltcG9ydCgkY21kWzFdKTsKKwl9IGVsc2lmICgkY21kWzBdIGVxICdvcHRpb24nKSB7CisJCWRpZSgiSW52YWxpZCBhcmd1bWVudHMgZm9yIG9wdGlvblxuIikKKwkJICAgIGlmICgkY21kWzFdIGVxIEVNUFRZIHx8ICRjbWRbMl0gZXEgRU1QVFkpOworCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3Igb3B0aW9uXG4iKQorCQkgICAgaWYgKGRlZmluZWQoJGNtZFszXSkpOworCQltd19vcHRpb24oJGNtZFsxXSwkY21kWzJdKTsKKwl9IGVsc2lmICgkY21kWzBdIGVxICdwdXNoJykgeworCQltd19wdXNoKCRjbWRbMV0pOwogCX0gZWxzZSB7Ci0JCWlmICg8JHJlYWRlcj4pIHsKLQkJCWRpZSAiRVJST1Igd2hpbGUgcnVubmluZyBnaXQgY3JlZGVudGlhbCAkb3A6XG4kXyI7Ci0JCX0KKwkJcHJpbnQgeypTVERFUlJ9ICJVbmtub3duIGNvbW1hbmQuIEFib3J0aW5nLi4uXG4iOworCQlyZXR1cm4gMDsKIAl9Ci0JY2xvc2UoJHJlYWRlcik7Ci0Jd2FpdHBpZCgkcGlkLCAwKTsKLQlteSAkY2hpbGRfZXhpdF9zdGF0dXMgPSAkPyA+PiA4OwotCWlmICgkY2hpbGRfZXhpdF9zdGF0dXMgIT0gMCkgewotCQlkaWUgIidnaXQgY3JlZGVudGlhbCAkb3AnIGZhaWxlZCB3aXRoIGNvZGUgJGNoaWxkX2V4aXRfc3RhdHVzLiI7Ci0JfQorCXJldHVybiAxOwogfQogCiAjIE1lZGlhV2lraSBBUEkgaW5zdGFuY2UsIGNyZWF0ZWQgbGF6aWx5LgpAQCAtMjE1LDQ4ICsyMDQsNjkgQEAKIAkJcmV0dXJuOwogCX0KIAkkbWVkaWF3aWtpID0gTWVkaWFXaWtpOjpBUEktPm5ldzsKLQkkbWVkaWF3aWtpLT57Y29uZmlnfS0+e2FwaV91cmx9ID0gIiR1cmwvYXBpLnBocCI7CisJJG1lZGlhd2lraS0+e2NvbmZpZ30tPnthcGlfdXJsfSA9ICIke3VybH0vYXBpLnBocCI7CiAJaWYgKCR3aWtpX2xvZ2luKSB7Ci0JCW15ICVjcmVkZW50aWFsID0gKHVybCA9PiAkdXJsKTsKLQkJJGNyZWRlbnRpYWx7dXNlcm5hbWV9ID0gJHdpa2lfbG9naW47Ci0JCSRjcmVkZW50aWFse3Bhc3N3b3JkfSA9ICR3aWtpX3Bhc3N3ZDsKLQkJY3JlZGVudGlhbF9ydW4oImZpbGwiLCBcJWNyZWRlbnRpYWwpOworCQlteSAlY3JlZGVudGlhbCA9ICgKKwkJCSd1cmwnID0+ICR1cmwsCisJCQkndXNlcm5hbWUnID0+ICR3aWtpX2xvZ2luLAorCQkJJ3Bhc3N3b3JkJyA9PiAkd2lraV9wYXNzd2QKKwkJKTsKKwkJR2l0OjpjcmVkZW50aWFsKFwlY3JlZGVudGlhbCk7CiAJCW15ICRyZXF1ZXN0ID0ge2xnbmFtZSA9PiAkY3JlZGVudGlhbHt1c2VybmFtZX0sCiAJCQkgICAgICAgbGdwYXNzd29yZCA9PiAkY3JlZGVudGlhbHtwYXNzd29yZH0sCiAJCQkgICAgICAgbGdkb21haW4gPT4gJHdpa2lfZG9tYWlufTsKIAkJaWYgKCRtZWRpYXdpa2ktPmxvZ2luKCRyZXF1ZXN0KSkgewotCQkJY3JlZGVudGlhbF9ydW4oImFwcHJvdmUiLCBcJWNyZWRlbnRpYWwpOwotCQkJcHJpbnQgU1RERVJSICJMb2dnZWQgaW4gbWVkaWF3aWtpIHVzZXIgXCIkY3JlZGVudGlhbHt1c2VybmFtZX1cIi5cbiI7CisJCQlHaXQ6OmNyZWRlbnRpYWwoXCVjcmVkZW50aWFsLCAnYXBwcm92ZScpOworCQkJcHJpbnQgeypTVERFUlJ9IHFxKExvZ2dlZCBpbiBtZWRpYXdpa2kgdXNlciAiJGNyZWRlbnRpYWx7dXNlcm5hbWV9Ii5cbik7CiAJCX0gZWxzZSB7Ci0JCQlwcmludCBTVERFUlIgIkZhaWxlZCB0byBsb2cgaW4gbWVkaWF3aWtpIHVzZXIgXCIkY3JlZGVudGlhbHt1c2VybmFtZX1cIiBvbiAkdXJsXG4iOwotCQkJcHJpbnQgU1RERVJSICIgIChlcnJvciAiIC4KKwkJCXByaW50IHsqU1RERVJSfSBxcShGYWlsZWQgdG8gbG9nIGluIG1lZGlhd2lraSB1c2VyICIkY3JlZGVudGlhbHt1c2VybmFtZX0iIG9uICR7dXJsfVxuKTsKKwkJCXByaW50IHsqU1RERVJSfSAnICAoZXJyb3IgJyAuCiAJCQkJJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzogJyAuCiAJCQkJJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9IC4gIilcbiI7Ci0JCQljcmVkZW50aWFsX3J1bigicmVqZWN0IiwgXCVjcmVkZW50aWFsKTsKKwkJCUdpdDo6Y3JlZGVudGlhbChcJWNyZWRlbnRpYWwsICdyZWplY3QnKTsKIAkJCWV4aXQgMTsKIAkJfQogCX0KKwlyZXR1cm47Cit9CisKK3N1YiBmYXRhbF9td19lcnJvciB7CisJbXkgJGFjdGlvbiA9IHNoaWZ0OworCXByaW50IFNUREVSUiAiZmF0YWw6IGNvdWxkIG5vdCAkYWN0aW9uLlxuIjsKKwlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOworCWlmICgkdXJsID1+IC9eaHR0cHMvKSB7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2VcbiI7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IGFuZCB0aGUgU1NMIGNlcnRpZmljYXRlIGlzIGNvcnJlY3QuXG4iOworCX0gZWxzZSB7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOworCX0KKwlwcmludCBTVERFUlIgImZhdGFsOiAoZXJyb3IgIiAuCisJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6ICcgLgorCSAgICAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLiAiKVxuIjsKKwlleGl0IDE7CiB9CiAKICMjIEZ1bmN0aW9ucyBmb3IgbGlzdGluZyBwYWdlcyBvbiB0aGUgcmVtb3RlIHdpa2kKIHN1YiBnZXRfbXdfdHJhY2tlZF9wYWdlcyB7CiAJbXkgJHBhZ2VzID0gc2hpZnQ7CiAJZ2V0X213X3BhZ2VfbGlzdChcQHRyYWNrZWRfcGFnZXMsICRwYWdlcyk7CisJcmV0dXJuOwogfQogCiBzdWIgZ2V0X213X3BhZ2VfbGlzdCB7CiAJbXkgJHBhZ2VfbGlzdCA9IHNoaWZ0OwogCW15ICRwYWdlcyA9IHNoaWZ0OwotCW15IEBzb21lX3BhZ2VzID0gQCRwYWdlX2xpc3Q7CisJbXkgQHNvbWVfcGFnZXMgPSBAeyRwYWdlX2xpc3R9OwogCXdoaWxlIChAc29tZV9wYWdlcykgewotCQlteSAkbGFzdCA9IDUwOwotCQlpZiAoJCNzb21lX3BhZ2VzIDwgJGxhc3QpIHsKLQkJCSRsYXN0ID0gJCNzb21lX3BhZ2VzOworCQlteSAkbGFzdF9wYWdlID0gU0xJQ0VfU0laRTsKKwkJaWYgKCQjc29tZV9wYWdlcyA8ICRsYXN0X3BhZ2UpIHsKKwkJCSRsYXN0X3BhZ2UgPSAkI3NvbWVfcGFnZXM7CiAJCX0KLQkJbXkgQHNsaWNlID0gQHNvbWVfcGFnZXNbMC4uJGxhc3RdOworCQlteSBAc2xpY2UgPSBAc29tZV9wYWdlc1swLi4kbGFzdF9wYWdlXTsKIAkJZ2V0X213X2ZpcnN0X3BhZ2VzKFxAc2xpY2UsICRwYWdlcyk7Ci0JCUBzb21lX3BhZ2VzID0gQHNvbWVfcGFnZXNbNTEuLiQjc29tZV9wYWdlc107CisJCUBzb21lX3BhZ2VzID0gQHNvbWVfcGFnZXNbKFNMSUNFX1NJWkUgKyAxKS4uJCNzb21lX3BhZ2VzXTsKIAl9CisJcmV0dXJuOwogfQogCiBzdWIgZ2V0X213X3RyYWNrZWRfY2F0ZWdvcmllcyB7CkBAIC0yNjYsNyArMjc2LDcgQEAKIAkJCSMgTWVkaWF3aWtpIHJlcXVpcmVzIHRoZSBDYXRlZ29yeQogCQkJIyBwcmVmaXgsIGJ1dCBsZXQncyBub3QgZm9yY2UgdGhlIHVzZXIKIAkJCSMgdG8gc3BlY2lmeSBpdC4KLQkJCSRjYXRlZ29yeSA9ICJDYXRlZ29yeToiIC4gJGNhdGVnb3J5OworCQkJJGNhdGVnb3J5ID0gIkNhdGVnb3J5OiR7Y2F0ZWdvcnl9IjsKIAkJfQogCQlteSAkbXdfcGFnZXMgPSAkbWVkaWF3aWtpLT5saXN0KCB7CiAJCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKQEAgLTI3NCwxMSArMjg0LDEyIEBACiAJCQljbXRpdGxlID0+ICRjYXRlZ29yeSwKIAkJCWNtbGltaXQgPT4gJ21heCcgfSApCiAJCQl8fCBkaWUgJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzogJwotCQkJCS4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9OworCQkJCS4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9IC4gIlxuIjsKIAkJZm9yZWFjaCBteSAkcGFnZSAoQHskbXdfcGFnZXN9KSB7CiAJCQkkcGFnZXMtPnskcGFnZS0+e3RpdGxlfX0gPSAkcGFnZTsKIAkJfQogCX0KKwlyZXR1cm47CiB9CiAKIHN1YiBnZXRfbXdfYWxsX3BhZ2VzIHsKQEAgLTI5MCwxNCArMzAxLDEyIEBACiAJCWFwbGltaXQgPT4gJ21heCcKIAl9KTsKIAlpZiAoIWRlZmluZWQoJG13X3BhZ2VzKSkgewotCQlwcmludCBTVERFUlIgImZhdGFsOiBjb3VsZCBub3QgZ2V0IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMuXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiBtYWtlIHN1cmUgJyR1cmwvYXBpLnBocCcgaXMgYSB2YWxpZCBwYWdlLlxuIjsKLQkJZXhpdCAxOworCQlmYXRhbF9td19lcnJvcigiZ2V0IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMiKTsKIAl9CiAJZm9yZWFjaCBteSAkcGFnZSAoQHskbXdfcGFnZXN9KSB7CiAJCSRwYWdlcy0+eyRwYWdlLT57dGl0bGV9fSA9ICRwYWdlOwogCX0KKwlyZXR1cm47CiB9CiAKICMgcXVlcmllcyB0aGUgd2lraSBmb3IgYSBzZXQgb2YgcGFnZXMuIE1lYW50IHRvIGJlIHVzZWQgd2l0aGluIGEgbG9vcApAQCAtMzE2LDI1ICszMjUsMjMgQEAKIAkJdGl0bGVzID0+ICR0aXRsZXMsCiAJfSk7CiAJaWYgKCFkZWZpbmVkKCRtd19wYWdlcykpIHsKLQkJcHJpbnQgU1RERVJSICJmYXRhbDogY291bGQgbm90IHF1ZXJ5IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMuXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiBtYWtlIHN1cmUgJyR1cmwvYXBpLnBocCcgaXMgYSB2YWxpZCBwYWdlLlxuIjsKLQkJZXhpdCAxOworCQlmYXRhbF9td19lcnJvcigicXVlcnkgdGhlIGxpc3Qgb2Ygd2lraSBwYWdlcyIpOwogCX0KIAl3aGlsZSAobXkgKCRpZCwgJHBhZ2UpID0gZWFjaCgleyRtd19wYWdlcy0+e3F1ZXJ5fS0+e3BhZ2VzfX0pKSB7CiAJCWlmICgkaWQgPCAwKSB7Ci0JCQlwcmludCBTVERFUlIgIldhcm5pbmc6IHBhZ2UgJHBhZ2UtPnt0aXRsZX0gbm90IGZvdW5kIG9uIHdpa2lcbiI7CisJCQlwcmludCB7KlNUREVSUn0gIldhcm5pbmc6IHBhZ2UgJHBhZ2UtPnt0aXRsZX0gbm90IGZvdW5kIG9uIHdpa2lcbiI7CiAJCX0gZWxzZSB7CiAJCQkkcGFnZXMtPnskcGFnZS0+e3RpdGxlfX0gPSAkcGFnZTsKIAkJfQogCX0KKwlyZXR1cm47CiB9CiAKICMgR2V0IHRoZSBsaXN0IG9mIHBhZ2VzIHRvIGJlIGZldGNoZWQgYWNjb3JkaW5nIHRvIGNvbmZpZ3VyYXRpb24uCiBzdWIgZ2V0X213X3BhZ2VzIHsKIAltd19jb25uZWN0X21heWJlKCk7CiAKLQlwcmludCBTVERFUlIgIkxpc3RpbmcgcGFnZXMgb24gcmVtb3RlIHdpa2kuLi5cbiI7CisJcHJpbnQgeypTVERFUlJ9ICJMaXN0aW5nIHBhZ2VzIG9uIHJlbW90ZSB3aWtpLi4uXG4iOwogCiAJbXkgJXBhZ2VzOyAjIGhhc2ggb24gcGFnZSB0aXRsZXMgdG8gYXZvaWQgZHVwbGljYXRlcwogCW15ICR1c2VyX2RlZmluZWQ7CkBAIC0zNTIsMTQgKzM1OSwxNCBAQAogCQlnZXRfbXdfYWxsX3BhZ2VzKFwlcGFnZXMpOwogCX0KIAlpZiAoJGltcG9ydF9tZWRpYSkgewotCQlwcmludCBTVERFUlIgIkdldHRpbmcgbWVkaWEgZmlsZXMgZm9yIHNlbGVjdGVkIHBhZ2VzLi4uXG4iOworCQlwcmludCB7KlNUREVSUn0gIkdldHRpbmcgbWVkaWEgZmlsZXMgZm9yIHNlbGVjdGVkIHBhZ2VzLi4uXG4iOwogCQlpZiAoJHVzZXJfZGVmaW5lZCkgewogCQkJZ2V0X2xpbmtlZF9tZWRpYWZpbGVzKFwlcGFnZXMpOwogCQl9IGVsc2UgewogCQkJZ2V0X2FsbF9tZWRpYWZpbGVzKFwlcGFnZXMpOwogCQl9CiAJfQotCXByaW50IFNUREVSUiAoc2NhbGFyIGtleXMgJXBhZ2VzKSAuICIgcGFnZXMgZm91bmQuXG4iOworCXByaW50IHsqU1RERVJSfSAoc2NhbGFyIGtleXMgJXBhZ2VzKSAuICIgcGFnZXMgZm91bmQuXG4iOwogCXJldHVybiAlcGFnZXM7CiB9CiAKQEAgLTM2Nyw5ICszNzQsMTMgQEAKICMgICAgICAgICRvdXQgPSBydW5fZ2l0KCJjb21tYW5kIGFyZ3MiLCAicmF3Iik7ICMgZG9uJ3QgaW50ZXJwcmV0IG91dHB1dCBhcyBVVEYtOC4KIHN1YiBydW5fZ2l0IHsKIAlteSAkYXJncyA9IHNoaWZ0OwotCW15ICRlbmNvZGluZyA9IChzaGlmdCB8fCAiZW5jb2RpbmcoVVRGLTgpIik7Ci0Jb3BlbihteSAkZ2l0LCAiLXw6JGVuY29kaW5nIiwgImdpdCAiIC4gJGFyZ3MpOwotCW15ICRyZXMgPSBkbyB7IGxvY2FsICQvOyA8JGdpdD4gfTsKKwlteSAkZW5jb2RpbmcgPSAoc2hpZnQgfHwgJ2VuY29kaW5nKFVURi04KScpOworCW9wZW4obXkgJGdpdCwgIi18OiR7ZW5jb2Rpbmd9IiwgImdpdCAke2FyZ3N9IikKKwkgICAgb3IgZGllICJVbmFibGUgdG8gZm9yazogJCFcbiI7CisJbXkgJHJlcyA9IGRvIHsKKwkJbG9jYWwgJC8gPSB1bmRlZjsKKwkJPCRnaXQ+CisJfTsKIAljbG9zZSgkZ2l0KTsKIAogCXJldHVybiAkcmVzOwpAQCAtMzg0LDI3ICszOTUsMjYgQEAKIAlteSAkbXdfcGFnZXMgPSAkbWVkaWF3aWtpLT5saXN0KHsKIAkJYWN0aW9uID0+ICdxdWVyeScsCiAJCWxpc3QgPT4gJ2FsbHBhZ2VzJywKLQkJYXBuYW1lc3BhY2UgPT4gZ2V0X213X25hbWVzcGFjZV9pZCgiRmlsZSIpLAorCQlhcG5hbWVzcGFjZSA9PiBnZXRfbXdfbmFtZXNwYWNlX2lkKCdGaWxlJyksCiAJCWFwbGltaXQgPT4gJ21heCcKIAl9KTsKIAlpZiAoIWRlZmluZWQoJG13X3BhZ2VzKSkgewotCQlwcmludCBTVERFUlIgImZhdGFsOiBjb3VsZCBub3QgZ2V0IHRoZSBsaXN0IG9mIHBhZ2VzIGZvciBtZWRpYSBmaWxlcy5cbiI7Ci0JCXByaW50IFNUREVSUiAiZmF0YWw6ICckdXJsJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBtZWRpYXdpa2lcbiI7Ci0JCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOworCQlwcmludCB7KlNUREVSUn0gImZhdGFsOiBjb3VsZCBub3QgZ2V0IHRoZSBsaXN0IG9mIHBhZ2VzIGZvciBtZWRpYSBmaWxlcy5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiZmF0YWw6ICckdXJsJyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSBtZWRpYXdpa2lcbiI7CisJCXByaW50IHsqU1RERVJSfSAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOwogCQlleGl0IDE7CiAJfQogCWZvcmVhY2ggbXkgJHBhZ2UgKEB7JG13X3BhZ2VzfSkgewogCQkkcGFnZXMtPnskcGFnZS0+e3RpdGxlfX0gPSAkcGFnZTsKIAl9CisJcmV0dXJuOwogfQogCiBzdWIgZ2V0X2xpbmtlZF9tZWRpYWZpbGVzIHsKIAlteSAkcGFnZXMgPSBzaGlmdDsKLQlteSBAdGl0bGVzID0gbWFwICRfLT57dGl0bGV9LCB2YWx1ZXMoJXskcGFnZXN9KTsKKwlteSBAdGl0bGVzID0gbWFwIHsgJF8tPnt0aXRsZX0gfSB2YWx1ZXMoJXskcGFnZXN9KTsKIAotCSMgVGhlIHF1ZXJ5IGlzIHNwbGl0IGluIHNtYWxsIGJhdGNoZXMgYmVjYXVzZSBvZiB0aGUgTVcgQVBJIGxpbWl0IG9mCi0JIyB0aGUgbnVtYmVyIG9mIGxpbmtzIHRvIGJlIHJldHVybmVkICg1MDAgbGlua3MgbWF4KS4KLQlteSAkYmF0Y2ggPSAxMDsKKwlteSAkYmF0Y2ggPSBCQVRDSF9TSVpFOwogCXdoaWxlIChAdGl0bGVzKSB7CiAJCWlmICgkI3RpdGxlcyA8ICRiYXRjaCkgewogCQkJJGJhdGNoID0gJCN0aXRsZXM7CkBAIC00MjAsNyArNDMwLDcgQEAKIAkJCWFjdGlvbiA9PiAncXVlcnknLAogCQkJcHJvcCA9PiAnbGlua3N8aW1hZ2VzJywKIAkJCXRpdGxlcyA9PiAkbXdfdGl0bGVzLAotCQkJcGxuYW1lc3BhY2UgPT4gZ2V0X213X25hbWVzcGFjZV9pZCgiRmlsZSIpLAorCQkJcGxuYW1lc3BhY2UgPT4gZ2V0X213X25hbWVzcGFjZV9pZCgnRmlsZScpLAogCQkJcGxsaW1pdCA9PiAnbWF4JwogCQl9OwogCQlteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+YXBpKCRxdWVyeSk7CkBAIC00MjgsMTEgKzQzOCwxMyBAQAogCQl3aGlsZSAobXkgKCRpZCwgJHBhZ2UpID0gZWFjaCgleyRyZXN1bHQtPntxdWVyeX0tPntwYWdlc319KSkgewogCQkJbXkgQG1lZGlhX3RpdGxlczsKIAkJCWlmIChkZWZpbmVkKCRwYWdlLT57bGlua3N9KSkgewotCQkJCW15IEBsaW5rX3RpdGxlcyA9IG1hcCAkXy0+e3RpdGxlfSwgQHskcGFnZS0+e2xpbmtzfX07CisJCQkJbXkgQGxpbmtfdGl0bGVzCisJCQkJICAgID0gbWFwIHsgJF8tPnt0aXRsZX0gfSBAeyRwYWdlLT57bGlua3N9fTsKIAkJCQlwdXNoKEBtZWRpYV90aXRsZXMsIEBsaW5rX3RpdGxlcyk7CiAJCQl9CiAJCQlpZiAoZGVmaW5lZCgkcGFnZS0+e2ltYWdlc30pKSB7Ci0JCQkJbXkgQGltYWdlX3RpdGxlcyA9IG1hcCAkXy0+e3RpdGxlfSwgQHskcGFnZS0+e2ltYWdlc319OworCQkJCW15IEBpbWFnZV90aXRsZXMKKwkJCQkgICAgPSBtYXAgeyAkXy0+e3RpdGxlfSB9IEB7JHBhZ2UtPntpbWFnZXN9fTsKIAkJCQlwdXNoKEBtZWRpYV90aXRsZXMsIEBpbWFnZV90aXRsZXMpOwogCQkJfQogCQkJaWYgKEBtZWRpYV90aXRsZXMpIHsKQEAgLTQ0Miw2ICs0NTQsNyBAQAogCiAJCUB0aXRsZXMgPSBAdGl0bGVzWygkYmF0Y2grMSkuLiQjdGl0bGVzXTsKIAl9CisJcmV0dXJuOwogfQogCiBzdWIgZ2V0X213X21lZGlhZmlsZV9mb3JfcGFnZV9yZXZpc2lvbiB7CkBAIC00NTUsNyArNDY4LDcgQEAKIAlteSAkcXVlcnkgPSB7CiAJCWFjdGlvbiA9PiAncXVlcnknLAogCQlwcm9wID0+ICdpbWFnZWluZm8nLAotCQl0aXRsZXMgPT4gIkZpbGU6IiAuICRmaWxlbmFtZSwKKwkJdGl0bGVzID0+ICJGaWxlOiR7ZmlsZW5hbWV9IiwKIAkJaWlzdGFydCA9PiAkdGltZXN0YW1wLAogCQlpaWVuZCA9PiAkdGltZXN0YW1wLAogCQlpaXByb3AgPT4gJ3RpbWVzdGFtcHxhcmNoaXZlbmFtZXx1cmwnLApAQCAtNDczLDQ3ICs0ODYsNDQgQEAKIAkJJG1lZGlhZmlsZXt0aW1lc3RhbXB9ID0gJGZpbGVpbmZvLT57dGltZXN0YW1wfTsKIAkJIyBNZWRpYXdpa2k6OkFQSSdzIGRvd25sb2FkIGZ1bmN0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBodHRwcyBVUkxzCiAJCSMgYW5kIGNhbid0IGRvd25sb2FkIG9sZCB2ZXJzaW9ucyBvZiBmaWxlcy4KLQkJcHJpbnQgU1RERVJSICJcdERvd25sb2FkaW5nIGZpbGUgJG1lZGlhZmlsZXt0aXRsZX0sIHZlcnNpb24gJG1lZGlhZmlsZXt0aW1lc3RhbXB9XG4iOworCQlwcmludCB7KlNUREVSUn0gIlx0RG93bmxvYWRpbmcgZmlsZSAkbWVkaWFmaWxle3RpdGxlfSwgdmVyc2lvbiAkbWVkaWFmaWxle3RpbWVzdGFtcH1cbiI7CiAJCSRtZWRpYWZpbGV7Y29udGVudH0gPSBkb3dubG9hZF9td19tZWRpYWZpbGUoJGZpbGVpbmZvLT57dXJsfSk7CiAJfQogCXJldHVybiAlbWVkaWFmaWxlOwogfQogCiBzdWIgZG93bmxvYWRfbXdfbWVkaWFmaWxlIHsKLQlteSAkdXJsID0gc2hpZnQ7CisJbXkgJGRvd25sb2FkX3VybCA9IHNoaWZ0OwogCi0JbXkgJHJlc3BvbnNlID0gJG1lZGlhd2lraS0+e3VhfS0+Z2V0KCR1cmwpOwotCWlmICgkcmVzcG9uc2UtPmNvZGUgPT0gMjAwKSB7CisJbXkgJHJlc3BvbnNlID0gJG1lZGlhd2lraS0+e3VhfS0+Z2V0KCRkb3dubG9hZF91cmwpOworCWlmICgkcmVzcG9uc2UtPmNvZGUgPT0gSFRUUF9DT0RFX09LKSB7CiAJCXJldHVybiAkcmVzcG9uc2UtPmRlY29kZWRfY29udGVudDsKIAl9IGVsc2UgewotCQlwcmludCBTVERFUlIgIkVycm9yIGRvd25sb2FkaW5nIG1lZGlhZmlsZSBmcm9tIDpcbiI7Ci0JCXByaW50IFNUREVSUiAiVVJMOiAkdXJsXG4iOwotCQlwcmludCBTVERFUlIgIlNlcnZlciByZXNwb25zZTogIiAuICRyZXNwb25zZS0+Y29kZSAuICIgIiAuICRyZXNwb25zZS0+bWVzc2FnZSAuICJcbiI7CisJCXByaW50IHsqU1RERVJSfSAiRXJyb3IgZG93bmxvYWRpbmcgbWVkaWFmaWxlIGZyb20gOlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJVUkw6ICR7ZG93bmxvYWRfdXJsfVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICdTZXJ2ZXIgcmVzcG9uc2U6ICcgLiAkcmVzcG9uc2UtPmNvZGUgLiBxeyB9IC4gJHJlc3BvbnNlLT5tZXNzYWdlIC4gIlxuIjsKIAkJZXhpdCAxOwogCX0KIH0KIAogc3ViIGdldF9sYXN0X2xvY2FsX3JldmlzaW9uIHsKIAkjIEdldCBub3RlIHJlZ2FyZGluZyBsYXN0IG1lZGlhd2lraSByZXZpc2lvbgotCW15ICRub3RlID0gcnVuX2dpdCgibm90ZXMgLS1yZWY9JHJlbW90ZW5hbWUvbWVkaWF3aWtpIHNob3cgcmVmcy9tZWRpYXdpa2kvJHJlbW90ZW5hbWUvbWFzdGVyIDI+L2Rldi9udWxsIik7CisJbXkgJG5vdGUgPSBydW5fZ2l0KCJub3RlcyAtLXJlZj0ke3JlbW90ZW5hbWV9L21lZGlhd2lraSBzaG93IHJlZnMvbWVkaWF3aWtpLyR7cmVtb3RlbmFtZX0vbWFzdGVyIDI+L2Rldi9udWxsIik7CiAJbXkgQG5vdGVfaW5mbyA9IHNwbGl0KC8gLywgJG5vdGUpOwogCiAJbXkgJGxhc3RyZXZpc2lvbl9udW1iZXI7Ci0JaWYgKCEoZGVmaW5lZCgkbm90ZV9pbmZvWzBdKSAmJiAkbm90ZV9pbmZvWzBdIGVxICJtZWRpYXdpa2lfcmV2aXNpb246IikpIHsKLQkJcHJpbnQgU1RERVJSICJObyBwcmV2aW91cyBtZWRpYXdpa2kgcmV2aXNpb24gZm91bmQiOworCWlmICghKGRlZmluZWQoJG5vdGVfaW5mb1swXSkgJiYgJG5vdGVfaW5mb1swXSBlcSAnbWVkaWF3aWtpX3JldmlzaW9uOicpKSB7CisJCXByaW50IHsqU1RERVJSfSAnTm8gcHJldmlvdXMgbWVkaWF3aWtpIHJldmlzaW9uIGZvdW5kJzsKIAkJJGxhc3RyZXZpc2lvbl9udW1iZXIgPSAwOwogCX0gZWxzZSB7CiAJCSMgTm90ZXMgYXJlIGZvcm1hdHRlZCA6IG1lZGlhd2lraV9yZXZpc2lvbjogI251bWJlcgogCQkkbGFzdHJldmlzaW9uX251bWJlciA9ICRub3RlX2luZm9bMV07CiAJCWNob21wKCRsYXN0cmV2aXNpb25fbnVtYmVyKTsKLQkJcHJpbnQgU1RERVJSICJMYXN0IGxvY2FsIG1lZGlhd2lraSByZXZpc2lvbiBmb3VuZCBpcyAkbGFzdHJldmlzaW9uX251bWJlciI7CisJCXByaW50IHsqU1RERVJSfSAiTGFzdCBsb2NhbCBtZWRpYXdpa2kgcmV2aXNpb24gZm91bmQgaXMgJHtsYXN0cmV2aXNpb25fbnVtYmVyfSI7CiAJfQogCXJldHVybiAkbGFzdHJldmlzaW9uX251bWJlcjsKIH0KIAotIyBSZW1lbWJlciB0aGUgdGltZXN0YW1wIGNvcnJlc3BvbmRpbmcgdG8gYSByZXZpc2lvbiBpZC4KLW15ICViYXNldGltZXN0YW1wczsKLQogIyBHZXQgdGhlIGxhc3QgcmVtb3RlIHJldmlzaW9uIHdpdGhvdXQgdGFraW5nIGluIGFjY291bnQgd2hpY2ggcGFnZXMgYXJlCiAjIHRyYWNrZWQgb3Igbm90LiBUaGlzIGZ1bmN0aW9uIG1ha2VzIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhlIHdpa2kgdGh1cwogIyBhdm9pZCBhIGxvb3Agb250byBhbGwgdHJhY2tlZCBwYWdlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHRoZSBmZXRjaC1ieS1yZXYKQEAgLTU0Miw3ICs1NTIsNyBAQAogCiAJbXkgJG1heF9yZXZfbnVtID0gMDsKIAotCXByaW50IFNUREVSUiAiR2V0dGluZyBsYXN0IHJldmlzaW9uIGlkIG9uIHRyYWNrZWQgcGFnZXMuLi5cbiI7CisJcHJpbnQgeypTVERFUlJ9ICJHZXR0aW5nIGxhc3QgcmV2aXNpb24gaWQgb24gdHJhY2tlZCBwYWdlcy4uLlxuIjsKIAogCWZvcmVhY2ggbXkgJHBhZ2UgKEBwYWdlcykgewogCQlteSAkaWQgPSAkcGFnZS0+e3BhZ2VpZH07CkBAIC01NjMsNyArNTczLDcgQEAKIAkJJG1heF9yZXZfbnVtID0gKCRsYXN0cmV2LT57cmV2aWR9ID4gJG1heF9yZXZfbnVtID8gJGxhc3RyZXYtPntyZXZpZH0gOiAkbWF4X3Jldl9udW0pOwogCX0KIAotCXByaW50IFNUREVSUiAiTGFzdCByZW1vdGUgcmV2aXNpb24gZm91bmQgaXMgJG1heF9yZXZfbnVtLlxuIjsKKwlwcmludCB7KlNUREVSUn0gIkxhc3QgcmVtb3RlIHJldmlzaW9uIGZvdW5kIGlzICRtYXhfcmV2X251bS5cbiI7CiAJcmV0dXJuICRtYXhfcmV2X251bTsKIH0KIApAQCAtNTc0LDcgKzU4NCw3IEBACiAJIyBNZWRpYXdpa2kgZG9lcyBub3QgYWxsb3cgYmxhbmsgc3BhY2UgYXQgdGhlIGVuZCBvZiBhIHBhZ2UgYW5kIGVuZHMgd2l0aCBhIHNpbmdsZSBcbi4KIAkjIFRoaXMgZnVuY3Rpb24gcmlnaHQgdHJpbXMgYSBzdHJpbmcgYW5kIGFkZHMgYSBcbiBhdCB0aGUgZW5kIHRvIGZvbGxvdyB0aGlzIHJ1bGUKIAkkc3RyaW5nID1+IHMvXHMrJC8vOwotCWlmICgkc3RyaW5nIGVxICIiICYmICRwYWdlX2NyZWF0ZWQpIHsKKwlpZiAoJHN0cmluZyBlcSBFTVBUWSAmJiAkcGFnZV9jcmVhdGVkKSB7CiAJCSMgQ3JlYXRpbmcgZW1wdHkgcGFnZXMgaXMgZm9yYmlkZGVuLgogCQkkc3RyaW5nID0gRU1QVFlfQ09OVEVOVDsKIAl9CkBAIC01ODUsMTUgKzU5NSwxNSBAQAogc3ViIG1lZGlhd2lraV9zbXVkZ2UgewogCW15ICRzdHJpbmcgPSBzaGlmdDsKIAlpZiAoJHN0cmluZyBlcSBFTVBUWV9DT05URU5UKSB7Ci0JCSRzdHJpbmcgPSAiIjsKKwkJJHN0cmluZyA9IEVNUFRZOwogCX0KIAkjIFRoaXMgXG4gaXMgaW1wb3J0YW50LiBUaGlzIGlzIGR1ZSB0byBtZWRpYXdpa2kncyB3YXkgdG8gaGFuZGxlIGVuZCBvZiBmaWxlcy4KLQlyZXR1cm4gJHN0cmluZy4iXG4iOworCXJldHVybiAiJHtzdHJpbmd9XG4iOwogfQogCiBzdWIgbWVkaWF3aWtpX2NsZWFuX2ZpbGVuYW1lIHsKIAlteSAkZmlsZW5hbWUgPSBzaGlmdDsKLQkkZmlsZW5hbWUgPX4gcy9Ae1tTTEFTSF9SRVBMQUNFTUVOVF19L1wvL2c7CisJJGZpbGVuYW1lID1+IHN7QHtbU0xBU0hfUkVQTEFDRU1FTlRdfX17L31nOwogCSMgWywgXSwgfCwgeywgYW5kIH0gYXJlIGZvcmJpZGRlbiBieSBNZWRpYVdpa2ksIGV2ZW4gVVJMLWVuY29kZWQuCiAJIyBEbyBhIHZhcmlhbnQgb2YgVVJMLWVuY29kaW5nLCBpLmUuIGxvb2tzIGxpa2UgVVJMLWVuY29kaW5nLAogCSMgYnV0IHdpdGggXyBhZGRlZCB0byBwcmV2ZW50IE1lZGlhV2lraSBmcm9tIHRoaW5raW5nIHRoaXMgaXMKQEAgLTYwNywxNiArNjE3LDE3IEBACiAKIHN1YiBtZWRpYXdpa2lfc211ZGdlX2ZpbGVuYW1lIHsKIAlteSAkZmlsZW5hbWUgPSBzaGlmdDsKLQkkZmlsZW5hbWUgPX4gcy9cLy9Ae1tTTEFTSF9SRVBMQUNFTUVOVF19L2c7CisJJGZpbGVuYW1lID1+IHN7L317QHtbU0xBU0hfUkVQTEFDRU1FTlRdfX1nOwogCSRmaWxlbmFtZSA9fiBzLyAvXy9nOwogCSMgRGVjb2RlIGZvcmJpZGRlbiBjaGFyYWN0ZXJzIGVuY29kZWQgaW4gbWVkaWF3aWtpX2NsZWFuX2ZpbGVuYW1lCi0JJGZpbGVuYW1lID1+IHMvXyVfKFswLTlhLWZBLUZdWzAtOWEtZkEtRl0pL3NwcmludGYoIiVjIiwgaGV4KCQxKSkvZ2U7CisJJGZpbGVuYW1lID1+IHMvXyVfKFswLTlhLWZBLUZdWzAtOWEtZkEtRl0pL3NwcmludGYoJyVjJywgaGV4KCQxKSkvZ2U7CiAJcmV0dXJuICRmaWxlbmFtZTsKIH0KIAogc3ViIGxpdGVyYWxfZGF0YSB7CiAJbXkgKCRjb250ZW50KSA9IEBfOwotCXByaW50IFNURE9VVCAiZGF0YSAiLCBieXRlczo6bGVuZ3RoKCRjb250ZW50KSwgIlxuIiwgJGNvbnRlbnQ7CisJcHJpbnQgeypTVERPVVR9ICdkYXRhICcsIGJ5dGVzOjpsZW5ndGgoJGNvbnRlbnQpLCAiXG4iLCAkY29udGVudDsKKwlyZXR1cm47CiB9CiAKIHN1YiBsaXRlcmFsX2RhdGFfcmF3IHsKQEAgLTYyNCwzMyArNjM1LDM3IEBACiAJbXkgKCRjb250ZW50KSA9IEBfOwogCSMgQXZvaWQgY29uZnVzaW9uIGJldHdlZW4gc2l6ZSBpbiBieXRlcyBhbmQgaW4gY2hhcmFjdGVycwogCXV0Zjg6OmRvd25ncmFkZSgkY29udGVudCk7Ci0JYmlubW9kZSBTVERPVVQsICI6cmF3IjsKLQlwcmludCBTVERPVVQgImRhdGEgIiwgYnl0ZXM6Omxlbmd0aCgkY29udGVudCksICJcbiIsICRjb250ZW50OwotCWJpbm1vZGUgU1RET1VULCAiOnV0ZjgiOworCWJpbm1vZGUgeypTVERPVVR9LCAnOnJhdyc7CisJcHJpbnQgeypTVERPVVR9ICdkYXRhICcsIGJ5dGVzOjpsZW5ndGgoJGNvbnRlbnQpLCAiXG4iLCAkY29udGVudDsKKwliaW5tb2RlIHsqU1RET1VUfSwgJzplbmNvZGluZyhVVEYtOCknOworCXJldHVybjsKIH0KIAogc3ViIG13X2NhcGFiaWxpdGllcyB7CiAJIyBSZXZpc2lvbnMgYXJlIGltcG9ydGVkIHRvIHRoZSBwcml2YXRlIG5hbWVzcGFjZQogCSMgcmVmcy9tZWRpYXdpa2kvJHJlbW90ZW5hbWUvIGJ5IHRoZSBoZWxwZXIgYW5kIGZldGNoZWQgaW50bwogCSMgcmVmcy9yZW1vdGVzLyRyZW1vdGVuYW1lIGxhdGVyIGJ5IGZldGNoLgotCXByaW50IFNURE9VVCAicmVmc3BlYyByZWZzL2hlYWRzLyo6cmVmcy9tZWRpYXdpa2kvJHJlbW90ZW5hbWUvKlxuIjsKLQlwcmludCBTVERPVVQgImltcG9ydFxuIjsKLQlwcmludCBTVERPVVQgImxpc3RcbiI7Ci0JcHJpbnQgU1RET1VUICJwdXNoXG4iOwotCXByaW50IFNURE9VVCAiXG4iOworCXByaW50IHsqU1RET1VUfSAicmVmc3BlYyByZWZzL2hlYWRzLyo6cmVmcy9tZWRpYXdpa2kvJHtyZW1vdGVuYW1lfS8qXG4iOworCXByaW50IHsqU1RET1VUfSAiaW1wb3J0XG4iOworCXByaW50IHsqU1RET1VUfSAibGlzdFxuIjsKKwlwcmludCB7KlNURE9VVH0gInB1c2hcbiI7CisJcHJpbnQgeypTVERPVVR9ICJcbiI7CisJcmV0dXJuOwogfQogCiBzdWIgbXdfbGlzdCB7CiAJIyBNZWRpYVdpa2kgZG8gbm90IGhhdmUgYnJhbmNoZXMsIHdlIGNvbnNpZGVyIG9uZSBicmFuY2ggYXJiaXRyYXJpbHkKIAkjIGNhbGxlZCBtYXN0ZXIsIGFuZCBIRUFEIHBvaW50aW5nIHRvIGl0LgotCXByaW50IFNURE9VVCAiPyByZWZzL2hlYWRzL21hc3RlclxuIjsKLQlwcmludCBTVERPVVQgIlxAcmVmcy9oZWFkcy9tYXN0ZXIgSEVBRFxuIjsKLQlwcmludCBTVERPVVQgIlxuIjsKKwlwcmludCB7KlNURE9VVH0gIj8gcmVmcy9oZWFkcy9tYXN0ZXJcbiI7CisJcHJpbnQgeypTVERPVVR9ICJcQHJlZnMvaGVhZHMvbWFzdGVyIEhFQURcbiI7CisJcHJpbnQgeypTVERPVVR9ICJcbiI7CisJcmV0dXJuOwogfQogCiBzdWIgbXdfb3B0aW9uIHsKLQlwcmludCBTVERFUlIgInJlbW90ZS1oZWxwZXIgY29tbWFuZCAnb3B0aW9uICRfWzBdJyBub3QgeWV0IGltcGxlbWVudGVkXG4iOwotCXByaW50IFNURE9VVCAidW5zdXBwb3J0ZWRcbiI7CisJcHJpbnQgeypTVERFUlJ9ICJyZW1vdGUtaGVscGVyIGNvbW1hbmQgJ29wdGlvbiAkX1swXScgbm90IHlldCBpbXBsZW1lbnRlZFxuIjsKKwlwcmludCB7KlNURE9VVH0gInVuc3VwcG9ydGVkXG4iOworCXJldHVybjsKIH0KIAogc3ViIGZldGNoX213X3JldmlzaW9uc19mb3JfcGFnZSB7CkBAIC02ODEsMTUgKzY5NiwxNSBAQAogCQkJcHVzaChAcGFnZV9yZXZzLCAkcGFnZV9yZXZfaWRzKTsKIAkJCSRyZXZudW0rKzsKIAkJfQotCQlsYXN0IHVubGVzcyAkcmVzdWx0LT57J3F1ZXJ5LWNvbnRpbnVlJ307CisJCWxhc3QgaWYgKCEkcmVzdWx0LT57J3F1ZXJ5LWNvbnRpbnVlJ30pOwogCQkkcXVlcnktPntydnN0YXJ0aWR9ID0gJHJlc3VsdC0+eydxdWVyeS1jb250aW51ZSd9LT57cmV2aXNpb25zfS0+e3J2c3RhcnRpZH07CiAJfQogCWlmICgkc2hhbGxvd19pbXBvcnQgJiYgQHBhZ2VfcmV2cykgewotCQlwcmludCBTVERFUlIgIiAgRm91bmQgMSByZXZpc2lvbiAoc2hhbGxvdyBpbXBvcnQpLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICIgIEZvdW5kIDEgcmV2aXNpb24gKHNoYWxsb3cgaW1wb3J0KS5cbiI7CiAJCUBwYWdlX3JldnMgPSBzb3J0IHskYi0+e3JldmlkfSA8PT4gJGEtPntyZXZpZH19IChAcGFnZV9yZXZzKTsKIAkJcmV0dXJuICRwYWdlX3JldnNbMF07CiAJfQotCXByaW50IFNUREVSUiAiICBGb3VuZCAiLCAkcmV2bnVtLCAiIHJldmlzaW9uKHMpLlxuIjsKKwlwcmludCB7KlNUREVSUn0gIiAgRm91bmQgJHtyZXZudW19IHJldmlzaW9uKHMpLlxuIjsKIAlyZXR1cm4gQHBhZ2VfcmV2czsKIH0KIApAQCAtNzAxLDggKzcxNiw3IEBACiAJbXkgJG4gPSAxOwogCWZvcmVhY2ggbXkgJHBhZ2UgKEBwYWdlcykgewogCQlteSAkaWQgPSAkcGFnZS0+e3BhZ2VpZH07Ci0KLQkJcHJpbnQgU1RERVJSICJwYWdlICRuLyIsIHNjYWxhcihAcGFnZXMpLCAiOiAiLiAkcGFnZS0+e3RpdGxlfSAuIlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJwYWdlICR7bn0vIiwgc2NhbGFyKEBwYWdlcyksICc6ICcsICRwYWdlLT57dGl0bGV9LCAiXG4iOwogCQkkbisrOwogCQlteSBAcGFnZV9yZXZzID0gZmV0Y2hfbXdfcmV2aXNpb25zX2Zvcl9wYWdlKCRwYWdlLCAkaWQsICRmZXRjaF9mcm9tKTsKIAkJQHJldmlzaW9ucyA9IChAcGFnZV9yZXZzLCBAcmV2aXNpb25zKTsKQEAgLTcxNiw3ICs3MzAsNyBAQAogICAgICRwYXRoID1+IHMvXFwvXFxcXC9nOwogICAgICRwYXRoID1+IHMvIi9cXCIvZzsKICAgICAkcGF0aCA9fiBzL1xuL1xcbi9nOwotICAgIHJldHVybiAnIicgLiAkcGF0aCAuICciJzsKKyAgICByZXR1cm4gcXEoIiR7cGF0aH0iKTsKIH0KIAogc3ViIGltcG9ydF9maWxlX3JldmlzaW9uIHsKQEAgLTczNiw0MiArNzUwLDQzIEBACiAJbXkgJGF1dGhvciA9ICRjb21taXR7YXV0aG9yfTsKIAlteSAkZGF0ZSA9ICRjb21taXR7ZGF0ZX07CiAKLQlwcmludCBTVERPVVQgImNvbW1pdCByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXJcbiI7Ci0JcHJpbnQgU1RET1VUICJtYXJrIDokblxuIjsKLQlwcmludCBTVERPVVQgImNvbW1pdHRlciAkYXV0aG9yIDwkYXV0aG9yXEAkd2lraV9uYW1lPiAiLCAkZGF0ZS0+ZXBvY2gsICIgKzAwMDBcbiI7CisJcHJpbnQgeypTVERPVVR9ICJjb21taXQgcmVmcy9tZWRpYXdpa2kvJHtyZW1vdGVuYW1lfS9tYXN0ZXJcbiI7CisJcHJpbnQgeypTVERPVVR9ICJtYXJrIDoke259XG4iOworCXByaW50IHsqU1RET1VUfSAiY29tbWl0dGVyICR7YXV0aG9yfSA8JHthdXRob3J9XEAke3dpa2lfbmFtZX0+ICIgLiAkZGF0ZS0+ZXBvY2ggLiAiICswMDAwXG4iOwogCWxpdGVyYWxfZGF0YSgkY29tbWVudCk7CiAKIAkjIElmIGl0J3Mgbm90IGEgY2xvbmUsIHdlIG5lZWQgdG8ga25vdyB3aGVyZSB0byBzdGFydCBmcm9tCiAJaWYgKCEkZnVsbF9pbXBvcnQgJiYgJG4gPT0gMSkgewotCQlwcmludCBTVERPVVQgImZyb20gcmVmcy9tZWRpYXdpa2kvJHJlbW90ZW5hbWUvbWFzdGVyXjBcbiI7CisJCXByaW50IHsqU1RET1VUfSAiZnJvbSByZWZzL21lZGlhd2lraS8ke3JlbW90ZW5hbWV9L21hc3Rlcl4wXG4iOwogCX0KIAlpZiAoJGNvbnRlbnQgbmUgREVMRVRFRF9DT05URU5UKSB7Ci0JCXByaW50IFNURE9VVCAiTSA2NDQgaW5saW5lICIgLgotCQkgICAgZmVfZXNjYXBlX3BhdGgoJHRpdGxlIC4gIi5tdyIpIC4gIlxuIjsKKwkJcHJpbnQgeypTVERPVVR9ICdNIDY0NCBpbmxpbmUgJyAuCisJCSAgICBmZV9lc2NhcGVfcGF0aCgiJHt0aXRsZX0ubXciKSAuICJcbiI7CiAJCWxpdGVyYWxfZGF0YSgkY29udGVudCk7CiAJCWlmICglbWVkaWFmaWxlKSB7Ci0JCQlwcmludCBTVERPVVQgIk0gNjQ0IGlubGluZSAiCisJCQlwcmludCB7KlNURE9VVH0gJ00gNjQ0IGlubGluZSAnCiAJCQkgICAgLiBmZV9lc2NhcGVfcGF0aCgkbWVkaWFmaWxle3RpdGxlfSkgLiAiXG4iOwogCQkJbGl0ZXJhbF9kYXRhX3JhdygkbWVkaWFmaWxle2NvbnRlbnR9KTsKIAkJfQotCQlwcmludCBTVERPVVQgIlxuXG4iOworCQlwcmludCB7KlNURE9VVH0gIlxuXG4iOwogCX0gZWxzZSB7Ci0JCXByaW50IFNURE9VVCAiRCAiIC4gZmVfZXNjYXBlX3BhdGgoJHRpdGxlIC4gIi5tdyIpIC4gIlxuIjsKKwkJcHJpbnQgeypTVERPVVR9ICdEICcgLiBmZV9lc2NhcGVfcGF0aCgiJHt0aXRsZX0ubXciKSAuICJcbiI7CiAJfQogCiAJIyBtZWRpYXdpa2kgcmV2aXNpb24gbnVtYmVyIGluIHRoZSBnaXQgbm90ZQogCWlmICgkZnVsbF9pbXBvcnQgJiYgJG4gPT0gMSkgewotCQlwcmludCBTVERPVVQgInJlc2V0IHJlZnMvbm90ZXMvJHJlbW90ZW5hbWUvbWVkaWF3aWtpXG4iOworCQlwcmludCB7KlNURE9VVH0gInJlc2V0IHJlZnMvbm90ZXMvJHtyZW1vdGVuYW1lfS9tZWRpYXdpa2lcbiI7CiAJfQotCXByaW50IFNURE9VVCAiY29tbWl0IHJlZnMvbm90ZXMvJHJlbW90ZW5hbWUvbWVkaWF3aWtpXG4iOwotCXByaW50IFNURE9VVCAiY29tbWl0dGVyICRhdXRob3IgPCRhdXRob3JcQCR3aWtpX25hbWU+ICIsICRkYXRlLT5lcG9jaCwgIiArMDAwMFxuIjsKLQlsaXRlcmFsX2RhdGEoIk5vdGUgYWRkZWQgYnkgZ2l0LW1lZGlhd2lraSBkdXJpbmcgaW1wb3J0Iik7CisJcHJpbnQgeypTVERPVVR9ICJjb21taXQgcmVmcy9ub3Rlcy8ke3JlbW90ZW5hbWV9L21lZGlhd2lraVxuIjsKKwlwcmludCB7KlNURE9VVH0gImNvbW1pdHRlciAke2F1dGhvcn0gPCR7YXV0aG9yfVxAJHt3aWtpX25hbWV9PiAiIC4gJGRhdGUtPmVwb2NoIC4gIiArMDAwMFxuIjsKKwlsaXRlcmFsX2RhdGEoJ05vdGUgYWRkZWQgYnkgZ2l0LW1lZGlhd2lraSBkdXJpbmcgaW1wb3J0Jyk7CiAJaWYgKCEkZnVsbF9pbXBvcnQgJiYgJG4gPT0gMSkgewotCQlwcmludCBTVERPVVQgImZyb20gcmVmcy9ub3Rlcy8kcmVtb3RlbmFtZS9tZWRpYXdpa2leMFxuIjsKKwkJcHJpbnQgeypTVERPVVR9ICJmcm9tIHJlZnMvbm90ZXMvJHtyZW1vdGVuYW1lfS9tZWRpYXdpa2leMFxuIjsKIAl9Ci0JcHJpbnQgU1RET1VUICJOIGlubGluZSA6JG5cbiI7Ci0JbGl0ZXJhbF9kYXRhKCJtZWRpYXdpa2lfcmV2aXNpb246ICIgLiAkY29tbWl0e213X3JldmlzaW9ufSk7Ci0JcHJpbnQgU1RET1VUICJcblxuIjsKKwlwcmludCB7KlNURE9VVH0gIk4gaW5saW5lIDoke259XG4iOworCWxpdGVyYWxfZGF0YSgibWVkaWF3aWtpX3JldmlzaW9uOiAkY29tbWl0e213X3JldmlzaW9ufSIpOworCXByaW50IHsqU1RET1VUfSAiXG5cbiI7CisJcmV0dXJuOwogfQogCiAjIHBhcnNlIGEgc2VxdWVuY2Ugb2YKQEAgLTc4NCwyMyArNzk5LDI1IEBACiAJbXkgQHJlZnM7CiAJd2hpbGUgKDEpIHsKIAkJbXkgJGxpbmUgPSA8U1RESU4+OwotCQlpZiAoJGxpbmUgPX4gbS9eJGNtZCAoLiopJC8pIHsKKwkJaWYgKCRsaW5lID1+IC9eJGNtZCAoLiopJC8pIHsKIAkJCXB1c2goQHJlZnMsICQxKTsKIAkJfSBlbHNpZiAoJGxpbmUgZXEgIlxuIikgewogCQkJcmV0dXJuIEByZWZzOwogCQl9IGVsc2UgewotCQkJZGllKCJJbnZhbGlkIGNvbW1hbmQgaW4gYSAnJGNtZCcgYmF0Y2g6ICIuICRfKTsKKwkJCWRpZSgiSW52YWxpZCBjb21tYW5kIGluIGEgJyRjbWQnIGJhdGNoOiAkX1xuIik7CiAJCX0KIAl9CisJcmV0dXJuOwogfQogCiBzdWIgbXdfaW1wb3J0IHsKIAkjIG11bHRpcGxlIGltcG9ydCBjb21tYW5kcyBjYW4gZm9sbG93IGVhY2ggb3RoZXIuCi0JbXkgQHJlZnMgPSAoc2hpZnQsIGdldF9tb3JlX3JlZnMoImltcG9ydCIpKTsKKwlteSBAcmVmcyA9IChzaGlmdCwgZ2V0X21vcmVfcmVmcygnaW1wb3J0JykpOwogCWZvcmVhY2ggbXkgJHJlZiAoQHJlZnMpIHsKIAkJbXdfaW1wb3J0X3JlZigkcmVmKTsKIAl9Ci0JcHJpbnQgU1RET1VUICJkb25lXG4iOworCXByaW50IHsqU1RET1VUfSAiZG9uZVxuIjsKKwlyZXR1cm47CiB9CiAKIHN1YiBtd19pbXBvcnRfcmVmIHsKQEAgLTgxMCw0MCArODI3LDQxIEBACiAJIyBTaW5jZSBIRUFEIGlzIGEgc3ltYm9saWMgcmVmIHRvIG1hc3RlciAoYnkgY29udmVudGlvbiwKIAkjIGZvbGxvd2VkIGJ5IHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgImxpc3QiIHRoYXQgd2UgZ2F2ZSksCiAJIyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGluIHRoaXMgY2FzZS4KLQlpZiAoJHJlZiBlcSAiSEVBRCIpIHsKKwlpZiAoJHJlZiBlcSAnSEVBRCcpIHsKIAkJcmV0dXJuOwogCX0KIAogCW13X2Nvbm5lY3RfbWF5YmUoKTsKIAotCXByaW50IFNUREVSUiAiU2VhcmNoaW5nIHJldmlzaW9ucy4uLlxuIjsKKwlwcmludCB7KlNUREVSUn0gIlNlYXJjaGluZyByZXZpc2lvbnMuLi5cbiI7CiAJbXkgJGxhc3RfbG9jYWwgPSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpOwogCW15ICRmZXRjaF9mcm9tID0gJGxhc3RfbG9jYWwgKyAxOwogCWlmICgkZmV0Y2hfZnJvbSA9PSAxKSB7Ci0JCXByaW50IFNUREVSUiAiLCBmZXRjaGluZyBmcm9tIGJlZ2lubmluZy5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiLCBmZXRjaGluZyBmcm9tIGJlZ2lubmluZy5cbiI7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICIsIGZldGNoaW5nIGZyb20gaGVyZS5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiLCBmZXRjaGluZyBmcm9tIGhlcmUuXG4iOwogCX0KIAogCW15ICRuID0gMDsKLQlpZiAoJGZldGNoX3N0cmF0ZWd5IGVxICJieV9yZXYiKSB7Ci0JCXByaW50IFNUREVSUiAiRmV0Y2hpbmcgJiB3cml0aW5nIGV4cG9ydCBkYXRhIGJ5IHJldnMuLi5cbiI7CisJaWYgKCRmZXRjaF9zdHJhdGVneSBlcSAnYnlfcmV2JykgeworCQlwcmludCB7KlNUREVSUn0gIkZldGNoaW5nICYgd3JpdGluZyBleHBvcnQgZGF0YSBieSByZXZzLi4uXG4iOwogCQkkbiA9IG13X2ltcG9ydF9yZWZfYnlfcmV2cygkZmV0Y2hfZnJvbSk7Ci0JfSBlbHNpZiAoJGZldGNoX3N0cmF0ZWd5IGVxICJieV9wYWdlIikgewotCQlwcmludCBTVERFUlIgIkZldGNoaW5nICYgd3JpdGluZyBleHBvcnQgZGF0YSBieSBwYWdlcy4uLlxuIjsKKwl9IGVsc2lmICgkZmV0Y2hfc3RyYXRlZ3kgZXEgJ2J5X3BhZ2UnKSB7CisJCXByaW50IHsqU1RERVJSfSAiRmV0Y2hpbmcgJiB3cml0aW5nIGV4cG9ydCBkYXRhIGJ5IHBhZ2VzLi4uXG4iOwogCQkkbiA9IG13X2ltcG9ydF9yZWZfYnlfcGFnZXMoJGZldGNoX2Zyb20pOwogCX0gZWxzZSB7Ci0JCXByaW50IFNUREVSUiAiZmF0YWw6IGludmFsaWQgZmV0Y2ggc3RyYXRlZ3kgXCIkZmV0Y2hfc3RyYXRlZ3lcIi5cbiI7Ci0JCXByaW50IFNUREVSUiAiQ2hlY2sgeW91ciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyByZW1vdGUuJHJlbW90ZW5hbWUuZmV0Y2hTdHJhdGVneSBhbmQgbWVkaWF3aWtpLmZldGNoU3RyYXRlZ3lcbiI7CisJCXByaW50IHsqU1RERVJSfSBxcShmYXRhbDogaW52YWxpZCBmZXRjaCBzdHJhdGVneSAiJHtmZXRjaF9zdHJhdGVneX0iLlxuKTsKKwkJcHJpbnQgeypTVERFUlJ9ICJDaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHJlbW90ZS4ke3JlbW90ZW5hbWV9LmZldGNoU3RyYXRlZ3kgYW5kIG1lZGlhd2lraS5mZXRjaFN0cmF0ZWd5XG4iOwogCQlleGl0IDE7CiAJfQogCiAJaWYgKCRmZXRjaF9mcm9tID09IDEgJiYgJG4gPT0gMCkgewotCQlwcmludCBTVERFUlIgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgTWVkaWFXaWtpLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJZb3UgYXBwZWFyIHRvIGhhdmUgY2xvbmVkIGFuIGVtcHR5IE1lZGlhV2lraS5cbiI7CiAJCSMgU29tZXRoaW5nIGhhcyB0byBiZSBkb25lIHJlbW90ZS1oZWxwZXIgc2lkZS4gSWYgbm90aGluZyBpcyBkb25lLCBhbiBlcnJvciBpcwotCQkjIHRocm93biBzYXlpbmcgdGhhdCBIRUFEIGlzIHJlZmVyaW5nIHRvIHVua25vd24gb2JqZWN0IDAwMDAwMDAwMDAwMDAwMDAwMDAKKwkJIyB0aHJvd24gc2F5aW5nIHRoYXQgSEVBRCBpcyByZWZlcnJpbmcgdG8gdW5rbm93biBvYmplY3QgMDAwMDAwMDAwMDAwMDAwMDAwMAogCQkjIGFuZCB0aGUgY2xvbmUgZmFpbHMuCiAJfQorCXJldHVybjsKIH0KIAogc3ViIG13X2ltcG9ydF9yZWZfYnlfcGFnZXMgewpAQCAtODU1LDcgKzg3Myw3IEBACiAJbXkgKCRuLCBAcmV2aXNpb25zKSA9IGZldGNoX213X3JldmlzaW9ucyhcQHBhZ2VzLCAkZmV0Y2hfZnJvbSk7CiAKIAlAcmV2aXNpb25zID0gc29ydCB7JGEtPntyZXZpZH0gPD0+ICRiLT57cmV2aWR9fSBAcmV2aXNpb25zOwotCW15IEByZXZpc2lvbl9pZHMgPSBtYXAgJF8tPntyZXZpZH0sIEByZXZpc2lvbnM7CisJbXkgQHJldmlzaW9uX2lkcyA9IG1hcCB7ICRfLT57cmV2aWR9IH0gQHJldmlzaW9uczsKIAogCXJldHVybiBtd19pbXBvcnRfcmV2aWRzKCRmZXRjaF9mcm9tLCBcQHJldmlzaW9uX2lkcywgXCVwYWdlc19oYXNoKTsKIH0KQEAgLTg4Miw3ICs5MDAsNyBAQAogCW15ICRuX2FjdHVhbCA9IDA7CiAJbXkgJGxhc3RfdGltZXN0YW1wID0gMDsgIyBQbGFjZWhvbGVyIGluIGNhc2UgJHJldi0+dGltZXN0YW1wIGlzIHVuZGVmaW5lZAogCi0JZm9yZWFjaCBteSAkcGFnZXJldmlkIChAJHJldmlzaW9uX2lkcykgeworCWZvcmVhY2ggbXkgJHBhZ2VyZXZpZCAoQHskcmV2aXNpb25faWRzfSkgewogCSAgICAgICAgIyBDb3VudCBwYWdlIGV2ZW4gaWYgd2Ugc2tpcCBpdCwgc2luY2Ugd2UgZGlzcGxheQogCQkjICRuLyR0b3RhbCBhbmQgJHRvdGFsIGluY2x1ZGVzIHNraXBwZWQgcGFnZXMuCiAJCSRuKys7CkBAIC04OTgsNyArOTE2LDcgQEAKIAkJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOwogCiAJCWlmICghJHJlc3VsdCkgewotCQkJZGllICJGYWlsZWQgdG8gcmV0cmlldmUgbW9kaWZpZWQgcGFnZSBmb3IgcmV2aXNpb24gJHBhZ2VyZXZpZCI7CisJCQlkaWUgIkZhaWxlZCB0byByZXRyaWV2ZSBtb2RpZmllZCBwYWdlIGZvciByZXZpc2lvbiAkcGFnZXJldmlkXG4iOwogCQl9CiAKIAkJaWYgKGRlZmluZWQoJHJlc3VsdC0+e3F1ZXJ5fS0+e2JhZHJldmlkc30tPnskcGFnZXJldmlkfSkpIHsKQEAgLTkwNyw3ICs5MjUsNyBAQAogCQl9CiAKIAkJaWYgKCFkZWZpbmVkKCRyZXN1bHQtPntxdWVyeX0tPntwYWdlc30pKSB7Ci0JCQlkaWUgIkludmFsaWQgcmV2aXNpb24gJHBhZ2VyZXZpZC4iOworCQkJZGllICJJbnZhbGlkIHJldmlzaW9uICR7cGFnZXJldmlkfS5cbiI7CiAJCX0KIAogCQlteSBAcmVzdWx0X3BhZ2VzID0gdmFsdWVzKCV7JHJlc3VsdC0+e3F1ZXJ5fS0+e3BhZ2VzfX0pOwpAQCAtOTE3LDggKzkzNSw4IEBACiAJCW15ICRwYWdlX3RpdGxlID0gJHJlc3VsdF9wYWdlLT57dGl0bGV9OwogCiAJCWlmICghZXhpc3RzKCRwYWdlcy0+eyRwYWdlX3RpdGxlfSkpIHsKLQkJCXByaW50IFNUREVSUiAiJG4vIiwgc2NhbGFyKEAkcmV2aXNpb25faWRzKSwKLQkJCQkiOiBTa2lwcGluZyByZXZpc2lvbiAjJHJldi0+e3JldmlkfSBvZiAkcGFnZV90aXRsZVxuIjsKKwkJCXByaW50IHsqU1RERVJSfSAiJHtufS8iLCBzY2FsYXIoQHskcmV2aXNpb25faWRzfSksCisJCQkJIjogU2tpcHBpbmcgcmV2aXNpb24gIyRyZXYtPntyZXZpZH0gb2YgJHtwYWdlX3RpdGxlfVxuIjsKIAkJCW5leHQ7CiAJCX0KIApAQCAtOTQzLDE0ICs5NjEsMTQgQEAKIAkJbXkgJW1lZGlhZmlsZTsKIAkJaWYgKCRuYW1lc3BhY2UpIHsKIAkJCW15ICRpZCA9IGdldF9td19uYW1lc3BhY2VfaWQoJG5hbWVzcGFjZSk7Ci0JCQlpZiAoJGlkICYmICRpZCA9PSBnZXRfbXdfbmFtZXNwYWNlX2lkKCJGaWxlIikpIHsKKwkJCWlmICgkaWQgJiYgJGlkID09IGdldF9td19uYW1lc3BhY2VfaWQoJ0ZpbGUnKSkgewogCQkJCSVtZWRpYWZpbGUgPSBnZXRfbXdfbWVkaWFmaWxlX2Zvcl9wYWdlX3JldmlzaW9uKCRmaWxlbmFtZSwgJHJldi0+e3RpbWVzdGFtcH0pOwogCQkJfQogCQl9CiAJCSMgSWYgdGhpcyBpcyBhIHJldmlzaW9uIG9mIHRoZSBtZWRpYSBwYWdlIGZvciBuZXcgdmVyc2lvbgogCQkjIG9mIGEgZmlsZSBkbyBvbmUgY29tbW9uIGNvbW1pdCBmb3IgYm90aCBmaWxlIGFuZCBtZWRpYSBwYWdlLgogCQkjIEVsc2UgZG8gY29tbWl0IG9ubHkgZm9yIHRoYXQgcGFnZS4KLQkJcHJpbnQgU1RERVJSICIkbi8iLCBzY2FsYXIoQCRyZXZpc2lvbl9pZHMpLCAiOiBSZXZpc2lvbiAjJHJldi0+e3JldmlkfSBvZiAkY29tbWl0e3RpdGxlfVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICIke259LyIsIHNjYWxhcihAeyRyZXZpc2lvbl9pZHN9KSwgIjogUmV2aXNpb24gIyRyZXYtPntyZXZpZH0gb2YgJGNvbW1pdHt0aXRsZX1cbiI7CiAJCWltcG9ydF9maWxlX3JldmlzaW9uKFwlY29tbWl0LCAoJGZldGNoX2Zyb20gPT0gMSksICRuX2FjdHVhbCwgXCVtZWRpYWZpbGUpOwogCX0KIApAQCAtOTU4LDE3ICs5NzYsMTcgQEAKIH0KIAogc3ViIGVycm9yX25vbl9mYXN0X2ZvcndhcmQgewotCW15ICRhZHZpY2UgPSBydW5fZ2l0KCJjb25maWcgLS1ib29sIGFkdmljZS5wdXNoTm9uRmFzdEZvcndhcmQiKTsKKwlteSAkYWR2aWNlID0gcnVuX2dpdCgnY29uZmlnIC0tYm9vbCBhZHZpY2UucHVzaE5vbkZhc3RGb3J3YXJkJyk7CiAJY2hvbXAoJGFkdmljZSk7Ci0JaWYgKCRhZHZpY2UgbmUgImZhbHNlIikgeworCWlmICgkYWR2aWNlIG5lICdmYWxzZScpIHsKIAkJIyBOYXRpdmUgZ2l0LXB1c2ggd291bGQgc2hvdyB0aGlzIGFmdGVyIHRoZSBzdW1tYXJ5LgogCQkjIFdlIGNhbid0IGFzayBpdCB0byBkaXNwbGF5IGl0IGNsZWFubHksIHNvIHByaW50IGl0CiAJCSMgb3Vyc2VsdmVzIGJlZm9yZS4KLQkJcHJpbnQgU1RERVJSICJUbyBwcmV2ZW50IHlvdSBmcm9tIGxvc2luZyBoaXN0b3J5LCBub24tZmFzdC1mb3J3YXJkIHVwZGF0ZXMgd2VyZSByZWplY3RlZFxuIjsKLQkJcHJpbnQgU1RERVJSICJNZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4gJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uIFNlZSB0aGVcbiI7Ci0JCXByaW50IFNUREVSUiAiJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgc2VjdGlvbiBvZiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiVG8gcHJldmVudCB5b3UgZnJvbSBsb3NpbmcgaGlzdG9yeSwgbm9uLWZhc3QtZm9yd2FyZCB1cGRhdGVzIHdlcmUgcmVqZWN0ZWRcbiI7CisJCXByaW50IHsqU1RERVJSfSAiTWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuICdnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLiBTZWUgdGhlXG4iOworCQlwcmludCB7KlNUREVSUn0gIidOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIHNlY3Rpb24gb2YgJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuXG4iOwogCX0KLQlwcmludCBTVERPVVQgImVycm9yICRfWzBdIFwibm9uLWZhc3QtZm9yd2FyZFwiXG4iOworCXByaW50IHsqU1RET1VUfSBxcShlcnJvciAkX1swXSAibm9uLWZhc3QtZm9yd2FyZCJcbik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTk3OSwxMSArOTk3LDExIEBACiAJbXkgJGZpbGVfZGVsZXRlZCA9IHNoaWZ0OwogCW15ICRzdW1tYXJ5ID0gc2hpZnQ7CiAJbXkgJG5ld3JldmlkOwotCW15ICRwYXRoID0gIkZpbGU6IiAuICRjb21wbGV0ZV9maWxlX25hbWU7CisJbXkgJHBhdGggPSAiRmlsZToke2NvbXBsZXRlX2ZpbGVfbmFtZX0iOwogCW15ICVoYXNoRmlsZXMgPSBnZXRfYWxsb3dlZF9maWxlX2V4dGVuc2lvbnMoKTsKIAlpZiAoIWV4aXN0cygkaGFzaEZpbGVzeyRleHRlbnNpb259KSkgewotCQlwcmludCBTVERFUlIgIiRjb21wbGV0ZV9maWxlX25hbWUgaXMgbm90IGEgcGVybWl0dGVkIGZpbGUgb24gdGhpcyB3aWtpLlxuIjsKLQkJcHJpbnQgU1RERVJSICJDaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBmaWxlIHVwbG9hZHMgaW4geW91ciBtZWRpYXdpa2kuXG4iOworCQlwcmludCB7KlNUREVSUn0gIiR7Y29tcGxldGVfZmlsZV9uYW1lfSBpcyBub3QgYSBwZXJtaXR0ZWQgZmlsZSBvbiB0aGlzIHdpa2kuXG4iOworCQlwcmludCB7KlNUREVSUn0gIkNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9mIGZpbGUgdXBsb2FkcyBpbiB5b3VyIG1lZGlhd2lraS5cbiI7CiAJCXJldHVybiAkbmV3cmV2aWQ7CiAJfQogCSMgRGVsZXRpbmcgYW5kIHVwbG9hZGluZyBhIGZpbGUgcmVxdWlyZXMgYSBwcml2aWxlZGdlZCB1c2VyCkBAIC05OTUsMTggKzEwMTMsMTggQEAKIAkJCXJlYXNvbiA9PiAkc3VtbWFyeQogCQl9OwogCQlpZiAoISRtZWRpYXdpa2ktPmVkaXQoJHF1ZXJ5KSkgewotCQkJcHJpbnQgU1RERVJSICJGYWlsZWQgdG8gZGVsZXRlIGZpbGUgb24gcmVtb3RlIHdpa2lcbiI7Ci0JCQlwcmludCBTVERFUlIgIkNoZWNrIHlvdXIgcGVybWlzc2lvbnMgb24gdGhlIHJlbW90ZSBzaXRlLiBFcnJvciBjb2RlOlxuIjsKLQkJCXByaW50IFNUREVSUiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLiAnOicgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307CisJCQlwcmludCB7KlNUREVSUn0gIkZhaWxlZCB0byBkZWxldGUgZmlsZSBvbiByZW1vdGUgd2lraVxuIjsKKwkJCXByaW50IHsqU1RERVJSfSAiQ2hlY2sgeW91ciBwZXJtaXNzaW9ucyBvbiB0aGUgcmVtb3RlIHNpdGUuIEVycm9yIGNvZGU6XG4iOworCQkJcHJpbnQgeypTVERFUlJ9ICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6JyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfTsKIAkJCWV4aXQgMTsKIAkJfQogCX0gZWxzZSB7CiAJCSMgRG9uJ3QgbGV0IHBlcmwgdHJ5IHRvIGludGVycHJldCBmaWxlIGNvbnRlbnQgYXMgVVRGLTggPT4gdXNlICJyYXciCi0JCW15ICRjb250ZW50ID0gcnVuX2dpdCgiY2F0LWZpbGUgYmxvYiAkbmV3X3NoYTEiLCAicmF3Iik7Ci0JCWlmICgkY29udGVudCBuZSAiIikgeworCQlteSAkY29udGVudCA9IHJ1bl9naXQoImNhdC1maWxlIGJsb2IgJHtuZXdfc2hhMX0iLCAncmF3Jyk7CisJCWlmICgkY29udGVudCBuZSBFTVBUWSkgewogCQkJbXdfY29ubmVjdF9tYXliZSgpOwogCQkJJG1lZGlhd2lraS0+e2NvbmZpZ30tPnt1cGxvYWRfdXJsfSA9Ci0JCQkJIiR1cmwvaW5kZXgucGhwL1NwZWNpYWw6VXBsb2FkIjsKKwkJCQkiJHt1cmx9L2luZGV4LnBocC9TcGVjaWFsOlVwbG9hZCI7CiAJCQkkbWVkaWF3aWtpLT5lZGl0KHsKIAkJCQlhY3Rpb24gPT4gJ3VwbG9hZCcsCiAJCQkJZmlsZW5hbWUgPT4gJGNvbXBsZXRlX2ZpbGVfbmFtZSwKQEAgLTEwMTgsMTIgKzEwMzYsMTIgQEAKIAkJCX0sIHsKIAkJCQlza2lwX2VuY29kaW5nID0+IDEKIAkJCX0gKSB8fCBkaWUgJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzonCi0JCQkJIC4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9OworCQkJCSAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfSAuICJcbiI7CiAJCQlteSAkbGFzdF9maWxlX3BhZ2UgPSAkbWVkaWF3aWtpLT5nZXRfcGFnZSh7dGl0bGUgPT4gJHBhdGh9KTsKIAkJCSRuZXdyZXZpZCA9ICRsYXN0X2ZpbGVfcGFnZS0+e3JldmlkfTsKLQkJCXByaW50IFNUREVSUiAiUHVzaGVkIGZpbGU6ICRuZXdfc2hhMSAtICRjb21wbGV0ZV9maWxlX25hbWUuXG4iOworCQkJcHJpbnQgeypTVERFUlJ9ICJQdXNoZWQgZmlsZTogJHtuZXdfc2hhMX0gLSAke2NvbXBsZXRlX2ZpbGVfbmFtZX0uXG4iOwogCQl9IGVsc2UgewotCQkJcHJpbnQgU1RERVJSICJFbXB0eSBmaWxlICRjb21wbGV0ZV9maWxlX25hbWUgbm90IHB1c2hlZC5cbiI7CisJCQlwcmludCB7KlNUREVSUn0gIkVtcHR5IGZpbGUgJHtjb21wbGV0ZV9maWxlX25hbWV9IG5vdCBwdXNoZWQuXG4iOwogCQl9CiAJfQogCXJldHVybiAkbmV3cmV2aWQ7CkBAIC0xMDQ1LDcgKzEwNjMsNyBAQAogCW15ICRuZXdyZXZpZDsKIAogCWlmICgkc3VtbWFyeSBlcSBFTVBUWV9NRVNTQUdFKSB7Ci0JCSRzdW1tYXJ5ID0gJyc7CisJCSRzdW1tYXJ5ID0gRU1QVFk7CiAJfQogCiAJbXkgJG5ld19zaGExID0gJGRpZmZfaW5mb19zcGxpdFszXTsKQEAgLTEwNTYsMjMgKzEwNzQsMjMgQEAKIAogCW15ICgkdGl0bGUsICRleHRlbnNpb24pID0gJGNvbXBsZXRlX2ZpbGVfbmFtZSA9fiAvXiguKilcLihbXlwuXSopJC87CiAJaWYgKCFkZWZpbmVkKCRleHRlbnNpb24pKSB7Ci0JCSRleHRlbnNpb24gPSAiIjsKKwkJJGV4dGVuc2lvbiA9IEVNUFRZOwogCX0KLQlpZiAoJGV4dGVuc2lvbiBlcSAibXciKSB7CisJaWYgKCRleHRlbnNpb24gZXEgJ213JykgewogCQlteSAkbnMgPSBnZXRfbXdfbmFtZXNwYWNlX2lkX2Zvcl9wYWdlKCRjb21wbGV0ZV9maWxlX25hbWUpOwotCQlpZiAoJG5zICYmICRucyA9PSBnZXRfbXdfbmFtZXNwYWNlX2lkKCJGaWxlIikgJiYgKCEkZXhwb3J0X21lZGlhKSkgewotCQkJcHJpbnQgU1RERVJSICJJZ25vcmluZyBtZWRpYSBmaWxlIHJlbGF0ZWQgcGFnZTogJGNvbXBsZXRlX2ZpbGVfbmFtZVxuIjsKLQkJCXJldHVybiAoJG9sZHJldmlkLCAib2siKTsKKwkJaWYgKCRucyAmJiAkbnMgPT0gZ2V0X213X25hbWVzcGFjZV9pZCgnRmlsZScpICYmICghJGV4cG9ydF9tZWRpYSkpIHsKKwkJCXByaW50IHsqU1RERVJSfSAiSWdub3JpbmcgbWVkaWEgZmlsZSByZWxhdGVkIHBhZ2U6ICR7Y29tcGxldGVfZmlsZV9uYW1lfVxuIjsKKwkJCXJldHVybiAoJG9sZHJldmlkLCAnb2snKTsKIAkJfQogCQlteSAkZmlsZV9jb250ZW50OwogCQlpZiAoJHBhZ2VfZGVsZXRlZCkgewogCQkJIyBEZWxldGluZyBhIHBhZ2UgdXN1YWxseSByZXF1aXJlcwotCQkJIyBzcGVjaWFsIHByaXZpbGVkZ2VzLiBBIGNvbW1vbgorCQkJIyBzcGVjaWFsIHByaXZpbGVnZXMuIEEgY29tbW9uCiAJCQkjIGNvbnZlbnRpb24gaXMgdG8gcmVwbGFjZSB0aGUgcGFnZQogCQkJIyB3aXRoIHRoaXMgY29udGVudCBpbnN0ZWFkOgogCQkJJGZpbGVfY29udGVudCA9IERFTEVURURfQ09OVEVOVDsKIAkJfSBlbHNlIHsKLQkJCSRmaWxlX2NvbnRlbnQgPSBydW5fZ2l0KCJjYXQtZmlsZSBibG9iICRuZXdfc2hhMSIpOworCQkJJGZpbGVfY29udGVudCA9IHJ1bl9naXQoImNhdC1maWxlIGJsb2IgJHtuZXdfc2hhMX0iKTsKIAkJfQogCiAJCW13X2Nvbm5lY3RfbWF5YmUoKTsKQEAgLTEwODksNDkgKzExMDcsNDkgQEAKIAkJaWYgKCEkcmVzdWx0KSB7CiAJCQlpZiAoJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9ID09IDMpIHsKIAkJCQkjIGVkaXQgY29uZmxpY3RzLCBjb25zaWRlcmVkIGFzIG5vbi1mYXN0LWZvcndhcmQKLQkJCQlwcmludCBTVERFUlIgJ1dhcm5pbmc6IEVycm9yICcgLgorCQkJCXByaW50IHsqU1RERVJSfSAnV2FybmluZzogRXJyb3IgJyAuCiAJCQkJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuCi0JCQkJICAgICcgZnJvbSBtZWRpd2lraTogJyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfSAuCisJCQkJICAgICcgZnJvbSBtZWRpYXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLgogCQkJCSAgICAiLlxuIjsKLQkJCQlyZXR1cm4gKCRvbGRyZXZpZCwgIm5vbi1mYXN0LWZvcndhcmQiKTsKKwkJCQlyZXR1cm4gKCRvbGRyZXZpZCwgJ25vbi1mYXN0LWZvcndhcmQnKTsKIAkJCX0gZWxzZSB7CiAJCQkJIyBPdGhlciBlcnJvcnMuIFNob3VsZG4ndCBoYXBwZW4gPT4ganVzdCBkaWUoKQogCQkJCWRpZSAnRmF0YWw6IEVycm9yICcgLgogCQkJCSAgICAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLgotCQkJCSAgICAnIGZyb20gbWVkaXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307CisJCQkJICAgICcgZnJvbSBtZWRpYXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLiAiXG4iOwogCQkJfQogCQl9CiAJCSRuZXdyZXZpZCA9ICRyZXN1bHQtPntlZGl0fS0+e25ld3JldmlkfTsKLQkJcHJpbnQgU1RERVJSICJQdXNoZWQgZmlsZTogJG5ld19zaGExIC0gJHRpdGxlXG4iOworCQlwcmludCB7KlNUREVSUn0gIlB1c2hlZCBmaWxlOiAke25ld19zaGExfSAtICR7dGl0bGV9XG4iOwogCX0gZWxzaWYgKCRleHBvcnRfbWVkaWEpIHsKIAkJJG5ld3JldmlkID0gbXdfdXBsb2FkX2ZpbGUoJGNvbXBsZXRlX2ZpbGVfbmFtZSwgJG5ld19zaGExLAogCQkJCQkgICAkZXh0ZW5zaW9uLCAkcGFnZV9kZWxldGVkLAogCQkJCQkgICAkc3VtbWFyeSk7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICJJZ25vcmluZyBtZWRpYSBmaWxlICR0aXRsZVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJJZ25vcmluZyBtZWRpYSBmaWxlICR7dGl0bGV9XG4iOwogCX0KIAkkbmV3cmV2aWQgPSAoJG5ld3JldmlkIG9yICRvbGRyZXZpZCk7Ci0JcmV0dXJuICgkbmV3cmV2aWQsICJvayIpOworCXJldHVybiAoJG5ld3JldmlkLCAnb2snKTsKIH0KIAogc3ViIG13X3B1c2ggewogCSMgbXVsdGlwbGUgcHVzaCBzdGF0ZW1lbnRzIGNhbiBmb2xsb3cgZWFjaCBvdGhlcgotCW15IEByZWZzc3BlY3MgPSAoc2hpZnQsIGdldF9tb3JlX3JlZnMoInB1c2giKSk7CisJbXkgQHJlZnNzcGVjcyA9IChzaGlmdCwgZ2V0X21vcmVfcmVmcygncHVzaCcpKTsKIAlteSAkcHVzaGVkOwogCWZvciBteSAkcmVmc3BlYyAoQHJlZnNzcGVjcykgewogCQlteSAoJGZvcmNlLCAkbG9jYWwsICRyZW1vdGUpID0gJHJlZnNwZWMgPX4gL14oXCspPyhbXjpdKik6KFteOl0qKSQvCi0JCSAgICBvciBkaWUoIkludmFsaWQgcmVmc3BlYyBmb3IgcHVzaC4gRXhwZWN0ZWQgPHNyYz46PGRzdD4gb3IgKzxzcmM+Ojxkc3Q+Iik7CisJCSAgICBvciBkaWUoIkludmFsaWQgcmVmc3BlYyBmb3IgcHVzaC4gRXhwZWN0ZWQgPHNyYz46PGRzdD4gb3IgKzxzcmM+Ojxkc3Q+XG4iKTsKIAkJaWYgKCRmb3JjZSkgewotCQkJcHJpbnQgU1RERVJSICJXYXJuaW5nOiBmb3JjZWQgcHVzaCBub3QgYWxsb3dlZCBvbiBhIE1lZGlhV2lraS5cbiI7CisJCQlwcmludCB7KlNUREVSUn0gIldhcm5pbmc6IGZvcmNlZCBwdXNoIG5vdCBhbGxvd2VkIG9uIGEgTWVkaWFXaWtpLlxuIjsKIAkJfQotCQlpZiAoJGxvY2FsIGVxICIiKSB7Ci0JCQlwcmludCBTVERFUlIgIkNhbm5vdCBkZWxldGUgcmVtb3RlIGJyYW5jaCBvbiBhIE1lZGlhV2lraVxuIjsKLQkJCXByaW50IFNURE9VVCAiZXJyb3IgJHJlbW90ZSBjYW5ub3QgZGVsZXRlXG4iOworCQlpZiAoJGxvY2FsIGVxIEVNUFRZKSB7CisJCQlwcmludCB7KlNUREVSUn0gIkNhbm5vdCBkZWxldGUgcmVtb3RlIGJyYW5jaCBvbiBhIE1lZGlhV2lraVxuIjsKKwkJCXByaW50IHsqU1RET1VUfSAiZXJyb3IgJHtyZW1vdGV9IGNhbm5vdCBkZWxldGVcbiI7CiAJCQluZXh0OwogCQl9Ci0JCWlmICgkcmVtb3RlIG5lICJyZWZzL2hlYWRzL21hc3RlciIpIHsKLQkJCXByaW50IFNUREVSUiAiT25seSBwdXNoIHRvIHRoZSBicmFuY2ggJ21hc3RlcicgaXMgc3VwcG9ydGVkIG9uIGEgTWVkaWFXaWtpXG4iOwotCQkJcHJpbnQgU1RET1VUICJlcnJvciAkcmVtb3RlIG9ubHkgbWFzdGVyIGFsbG93ZWRcbiI7CisJCWlmICgkcmVtb3RlIG5lICdyZWZzL2hlYWRzL21hc3RlcicpIHsKKwkJCXByaW50IHsqU1RERVJSfSAiT25seSBwdXNoIHRvIHRoZSBicmFuY2ggJ21hc3RlcicgaXMgc3VwcG9ydGVkIG9uIGEgTWVkaWFXaWtpXG4iOworCQkJcHJpbnQgeypTVERPVVR9ICJlcnJvciAke3JlbW90ZX0gb25seSBtYXN0ZXIgYWxsb3dlZFxuIjsKIAkJCW5leHQ7CiAJCX0KIAkJaWYgKG13X3B1c2hfcmV2aXNpb24oJGxvY2FsLCAkcmVtb3RlKSkgewpAQCAtMTE0MCwzMCArMTE1OCwzMiBAQAogCX0KIAogCSMgTm90aWZ5IEdpdCB0aGF0IHRoZSBwdXNoIGlzIGRvbmUKLQlwcmludCBTVERPVVQgIlxuIjsKKwlwcmludCB7KlNURE9VVH0gIlxuIjsKIAogCWlmICgkcHVzaGVkICYmICRkdW1iX3B1c2gpIHsKLQkJcHJpbnQgU1RERVJSICJKdXN0IHB1c2hlZCBzb21lIHJldmlzaW9ucyB0byBNZWRpYVdpa2kuXG4iOwotCQlwcmludCBTVERFUlIgIlRoZSBwdXNoZWQgcmV2aXNpb25zIG5vdyBoYXZlIHRvIGJlIHJlLWltcG9ydGVkLCBhbmQgeW91ciBjdXJyZW50IGJyYW5jaFxuIjsKLQkJcHJpbnQgU1RERVJSICJuZWVkcyB0byBiZSB1cGRhdGVkIHdpdGggdGhlc2UgcmUtaW1wb3J0ZWQgY29tbWl0cy4gWW91IGNhbiBkbyB0aGlzIHdpdGhcbiI7Ci0JCXByaW50IFNUREVSUiAiXG4iOwotCQlwcmludCBTVERFUlIgIiAgZ2l0IHB1bGwgLS1yZWJhc2VcbiI7Ci0JCXByaW50IFNUREVSUiAiXG4iOworCQlwcmludCB7KlNUREVSUn0gIkp1c3QgcHVzaGVkIHNvbWUgcmV2aXNpb25zIHRvIE1lZGlhV2lraS5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiVGhlIHB1c2hlZCByZXZpc2lvbnMgbm93IGhhdmUgdG8gYmUgcmUtaW1wb3J0ZWQsIGFuZCB5b3VyIGN1cnJlbnQgYnJhbmNoXG4iOworCQlwcmludCB7KlNUREVSUn0gIm5lZWRzIHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGVzZSByZS1pbXBvcnRlZCBjb21taXRzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aFxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJcbiI7CisJCXByaW50IHsqU1RERVJSfSAiICBnaXQgcHVsbCAtLXJlYmFzZVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJcbiI7CiAJfQorCXJldHVybjsKIH0KIAogc3ViIG13X3B1c2hfcmV2aXNpb24gewogCW15ICRsb2NhbCA9IHNoaWZ0OwogCW15ICRyZW1vdGUgPSBzaGlmdDsgIyBhY3R1YWxseSwgdGhpcyBoYXMgdG8gYmUgInJlZnMvaGVhZHMvbWFzdGVyIiBhdCB0aGlzIHBvaW50LgogCW15ICRsYXN0X2xvY2FsX3JldmlkID0gZ2V0X2xhc3RfbG9jYWxfcmV2aXNpb24oKTsKLQlwcmludCBTVERFUlIgIi5cbiI7ICMgRmluaXNoIHNlbnRlbmNlIHN0YXJ0ZWQgYnkgZ2V0X2xhc3RfbG9jYWxfcmV2aXNpb24oKQorCXByaW50IHsqU1RERVJSfSAiLlxuIjsgIyBGaW5pc2ggc2VudGVuY2Ugc3RhcnRlZCBieSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpCiAJbXkgJGxhc3RfcmVtb3RlX3JldmlkID0gZ2V0X2xhc3RfcmVtb3RlX3JldmlzaW9uKCk7CiAJbXkgJG13X3JldmlzaW9uID0gJGxhc3RfcmVtb3RlX3JldmlkOwogCiAJIyBHZXQgc2hhMSBvZiBjb21taXQgcG9pbnRlZCBieSBsb2NhbCBIRUFECi0JbXkgJEhFQURfc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSAkbG9jYWwgMj4vZGV2L251bGwiKTsgY2hvbXAoJEhFQURfc2hhMSk7CisJbXkgJEhFQURfc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSAke2xvY2FsfSAyPi9kZXYvbnVsbCIpOworCWNob21wKCRIRUFEX3NoYTEpOwogCSMgR2V0IHNoYTEgb2YgY29tbWl0IHBvaW50ZWQgYnkgcmVtb3Rlcy8kcmVtb3RlbmFtZS9tYXN0ZXIKLQlteSAkcmVtb3Rlb3JpZ2luX3NoYTEgPSBydW5fZ2l0KCJyZXYtcGFyc2UgcmVmcy9yZW1vdGVzLyRyZW1vdGVuYW1lL21hc3RlciAyPi9kZXYvbnVsbCIpOworCW15ICRyZW1vdGVvcmlnaW5fc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSByZWZzL3JlbW90ZXMvJHtyZW1vdGVuYW1lfS9tYXN0ZXIgMj4vZGV2L251bGwiKTsKIAljaG9tcCgkcmVtb3Rlb3JpZ2luX3NoYTEpOwogCiAJaWYgKCRsYXN0X2xvY2FsX3JldmlkID4gMCAmJgpAQCAtMTE4MiwyMiArMTIwMiwyMiBAQAogCWlmICgkbGFzdF9sb2NhbF9yZXZpZCA+IDApIHsKIAkJbXkgJHBhcnNlZF9zaGExID0gJHJlbW90ZW9yaWdpbl9zaGExOwogCQkjIEZpbmQgYSBwYXRoIGZyb20gbGFzdCBNZWRpYVdpa2kgY29tbWl0IHRvIHB1c2hlZCBjb21taXQKLQkJcHJpbnQgU1RERVJSICJDb21wdXRpbmcgcGF0aCBmcm9tIGxvY2FsIHRvIHJlbW90ZSAuLi5cbiI7Ci0JCW15IEBsb2NhbF9hbmNlc3RyeSA9IHNwbGl0KC9cbi8sIHJ1bl9naXQoInJldi1saXN0IC0tYm91bmRhcnkgLS1wYXJlbnRzICRsb2NhbCBeJHBhcnNlZF9zaGExIikpOworCQlwcmludCB7KlNUREVSUn0gIkNvbXB1dGluZyBwYXRoIGZyb20gbG9jYWwgdG8gcmVtb3RlIC4uLlxuIjsKKwkJbXkgQGxvY2FsX2FuY2VzdHJ5ID0gc3BsaXQoL1xuLywgcnVuX2dpdCgicmV2LWxpc3QgLS1ib3VuZGFyeSAtLXBhcmVudHMgJHtsb2NhbH0gXiR7cGFyc2VkX3NoYTF9IikpOwogCQlteSAlbG9jYWxfYW5jZXN0cnk7CiAJCWZvcmVhY2ggbXkgJGxpbmUgKEBsb2NhbF9hbmNlc3RyeSkgewotCQkJaWYgKG15ICgkY2hpbGQsICRwYXJlbnRzKSA9ICRsaW5lID1+IG0vXi0/KFthLWYwLTldKykgKFthLWYwLTkgXSspLykgewotCQkJCWZvcmVhY2ggbXkgJHBhcmVudCAoc3BsaXQoJyAnLCAkcGFyZW50cykpIHsKKwkJCWlmIChteSAoJGNoaWxkLCAkcGFyZW50cykgPSAkbGluZSA9fiAvXi0/KFthLWYwLTldKykgKFthLWYwLTkgXSspLykgeworCQkJCWZvcmVhY2ggbXkgJHBhcmVudCAoc3BsaXQoLyAvLCAkcGFyZW50cykpIHsKIAkJCQkJJGxvY2FsX2FuY2VzdHJ5eyRwYXJlbnR9ID0gJGNoaWxkOwogCQkJCX0KLQkJCX0gZWxzaWYgKCEkbGluZSA9fiBtL14oW2EtZjAtOV0rKS8pIHsKLQkJCQlkaWUgIlVuZXhwZWN0ZWQgb3V0cHV0IGZyb20gZ2l0IHJldi1saXN0OiAkbGluZSI7CisJCQl9IGVsc2lmICghJGxpbmUgPX4gL14oW2EtZjAtOV0rKS8pIHsKKwkJCQlkaWUgIlVuZXhwZWN0ZWQgb3V0cHV0IGZyb20gZ2l0IHJldi1saXN0OiAke2xpbmV9XG4iOwogCQkJfQogCQl9CiAJCXdoaWxlICgkcGFyc2VkX3NoYTEgbmUgJEhFQURfc2hhMSkgewogCQkJbXkgJGNoaWxkID0gJGxvY2FsX2FuY2VzdHJ5eyRwYXJzZWRfc2hhMX07CiAJCQlpZiAoISRjaGlsZCkgewotCQkJCXByaW50ZiBTVERFUlIgIkNhbm5vdCBmaW5kIGEgcGF0aCBpbiBoaXN0b3J5IGZyb20gcmVtb3RlIGNvbW1pdCB0byBsYXN0IGNvbW1pdFxuIjsKKwkJCQlwcmludCB7KlNUREVSUn0gIkNhbm5vdCBmaW5kIGEgcGF0aCBpbiBoaXN0b3J5IGZyb20gcmVtb3RlIGNvbW1pdCB0byBsYXN0IGNvbW1pdFxuIjsKIAkJCQlyZXR1cm4gZXJyb3Jfbm9uX2Zhc3RfZm9yd2FyZCgkcmVtb3RlKTsKIAkJCX0KIAkJCXB1c2goQGNvbW1pdF9wYWlycywgWyRwYXJzZWRfc2hhMSwgJGNoaWxkXSk7CkBAIC0xMjA2LDEyICsxMjI2LDEyIEBACiAJfSBlbHNlIHsKIAkJIyBObyByZW1vdGUgbWVkaWF3aWtpIHJldmlzaW9uLiBFeHBvcnQgdGhlIHdob2xlCiAJCSMgaGlzdG9yeSAobGluZWFyaXplZCB3aXRoIC0tZmlyc3QtcGFyZW50KQotCQlwcmludCBTVERFUlIgIldhcm5pbmc6IG5vIGNvbW1vbiBhbmNlc3RvciwgcHVzaGluZyBjb21wbGV0ZSBoaXN0b3J5XG4iOwotCQlteSAkaGlzdG9yeSA9IHJ1bl9naXQoInJldi1saXN0IC0tZmlyc3QtcGFyZW50IC0tY2hpbGRyZW4gJGxvY2FsIik7Ci0JCW15IEBoaXN0b3J5ID0gc3BsaXQoJ1xuJywgJGhpc3RvcnkpOworCQlwcmludCB7KlNUREVSUn0gIldhcm5pbmc6IG5vIGNvbW1vbiBhbmNlc3RvciwgcHVzaGluZyBjb21wbGV0ZSBoaXN0b3J5XG4iOworCQlteSAkaGlzdG9yeSA9IHJ1bl9naXQoInJldi1saXN0IC0tZmlyc3QtcGFyZW50IC0tY2hpbGRyZW4gJHtsb2NhbH0iKTsKKwkJbXkgQGhpc3RvcnkgPSBzcGxpdCgvXG4vLCAkaGlzdG9yeSk7CiAJCUBoaXN0b3J5ID0gQGhpc3RvcnlbMS4uJCNoaXN0b3J5XTsKIAkJZm9yZWFjaCBteSAkbGluZSAocmV2ZXJzZSBAaGlzdG9yeSkgewotCQkJbXkgQGNvbW1pdF9pbmZvX3NwbGl0ID0gc3BsaXQoLyB8XG4vLCAkbGluZSk7CisJCQlteSBAY29tbWl0X2luZm9fc3BsaXQgPSBzcGxpdCgvWyBcbl0vLCAkbGluZSk7CiAJCQlwdXNoKEBjb21taXRfcGFpcnMsIFxAY29tbWl0X2luZm9fc3BsaXQpOwogCQl9CiAJfQpAQCAtMTIxOSwxMiArMTIzOSwxMiBAQAogCWZvcmVhY2ggbXkgJGNvbW1pdF9pbmZvX3NwbGl0IChAY29tbWl0X3BhaXJzKSB7CiAJCW15ICRzaGExX2NoaWxkID0gQHskY29tbWl0X2luZm9fc3BsaXR9WzBdOwogCQlteSAkc2hhMV9jb21taXQgPSBAeyRjb21taXRfaW5mb19zcGxpdH1bMV07Ci0JCW15ICRkaWZmX2luZm9zID0gcnVuX2dpdCgiZGlmZi10cmVlIC1yIC0tcmF3IC16ICRzaGExX2NoaWxkICRzaGExX2NvbW1pdCIpOworCQlteSAkZGlmZl9pbmZvcyA9IHJ1bl9naXQoImRpZmYtdHJlZSAtciAtLXJhdyAteiAke3NoYTFfY2hpbGR9ICR7c2hhMV9jb21taXR9Iik7CiAJCSMgVE9ETzogd2UgY291bGQgZGV0ZWN0IHJlbmFtZSwgYW5kIGVuY29kZSB0aGVtIHdpdGggYSAjcmVkaXJlY3Qgb24gdGhlIHdpa2kuCiAJCSMgVE9ETzogZm9yIG5vdywgaXQncyBqdXN0IGEgZGVsZXRlK2FkZAogCQlteSBAZGlmZl9pbmZvX2xpc3QgPSBzcGxpdCgvXDAvLCAkZGlmZl9pbmZvcyk7CiAJCSMgS2VlcCB0aGUgc3ViamVjdCBsaW5lIG9mIHRoZSBjb21taXQgbWVzc2FnZSBhcyBtZWRpYXdpa2kgY29tbWVudCBmb3IgdGhlIHJldmlzaW9uCi0JCW15ICRjb21taXRfbXNnID0gcnVuX2dpdCgibG9nIC0tbm8td2FsayAtLWZvcm1hdD1cIiVzXCIgJHNoYTFfY29tbWl0Iik7CisJCW15ICRjb21taXRfbXNnID0gcnVuX2dpdChxcShsb2cgLS1uby13YWxrIC0tZm9ybWF0PSIlcyIgJHtzaGExX2NvbW1pdH0pKTsKIAkJY2hvbXAoJGNvbW1pdF9tc2cpOwogCQkjIFB1c2ggZXZlcnkgYmxvYgogCQl3aGlsZSAoQGRpZmZfaW5mb19saXN0KSB7CkBAIC0xMjM2LDcgKzEyNTYsNyBAQAogCQkJbXkgJGluZm8gPSBzaGlmdChAZGlmZl9pbmZvX2xpc3QpOwogCQkJbXkgJGZpbGUgPSBzaGlmdChAZGlmZl9pbmZvX2xpc3QpOwogCQkJKCRtd19yZXZpc2lvbiwgJHN0YXR1cykgPSBtd19wdXNoX2ZpbGUoJGluZm8sICRmaWxlLCAkY29tbWl0X21zZywgJG13X3JldmlzaW9uKTsKLQkJCWlmICgkc3RhdHVzIGVxICJub24tZmFzdC1mb3J3YXJkIikgeworCQkJaWYgKCRzdGF0dXMgZXEgJ25vbi1mYXN0LWZvcndhcmQnKSB7CiAJCQkJIyB3ZSBtYXkgYWxyZWFkeSBoYXZlIHNlbnQgcGFydCBvZiB0aGUKIAkJCQkjIGNvbW1pdCB0byBNZWRpYVdpa2ksIGJ1dCBpdCdzIHRvbwogCQkJCSMgbGF0ZSB0byBjYW5jZWwgaXQuIFN0b3AgdGhlIHB1c2ggaW4KQEAgLTEyNDQsMTcgKzEyNjQsMTcgQEAKIAkJCQkjIGFjY3VyYXRlIGVycm9yIG1lc3NhZ2UuCiAJCQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7CiAJCQl9Ci0JCQlpZiAoJHN0YXR1cyBuZSAib2siKSB7Ci0JCQkJZGllKCJVbmtub3duIGVycm9yIGZyb20gbXdfcHVzaF9maWxlKCkiKTsKKwkJCWlmICgkc3RhdHVzIG5lICdvaycpIHsKKwkJCQlkaWUoIlVua25vd24gZXJyb3IgZnJvbSBtd19wdXNoX2ZpbGUoKVxuIik7CiAJCQl9CiAJCX0KLQkJdW5sZXNzICgkZHVtYl9wdXNoKSB7Ci0JCQlydW5fZ2l0KCJub3RlcyAtLXJlZj0kcmVtb3RlbmFtZS9tZWRpYXdpa2kgYWRkIC1mIC1tIFwibWVkaWF3aWtpX3JldmlzaW9uOiAkbXdfcmV2aXNpb25cIiAkc2hhMV9jb21taXQiKTsKLQkJCXJ1bl9naXQoInVwZGF0ZS1yZWYgLW0gXCJHaXQtTWVkaWFXaWtpIHB1c2hcIiByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXIgJHNoYTFfY29tbWl0ICRzaGExX2NoaWxkIik7CisJCWlmICghJGR1bWJfcHVzaCkgeworCQkJcnVuX2dpdChxcShub3RlcyAtLXJlZj0ke3JlbW90ZW5hbWV9L21lZGlhd2lraSBhZGQgLWYgLW0gIm1lZGlhd2lraV9yZXZpc2lvbjogJHttd19yZXZpc2lvbn0iICR7c2hhMV9jb21taXR9KSk7CisJCQlydW5fZ2l0KHFxKHVwZGF0ZS1yZWYgLW0gIkdpdC1NZWRpYVdpa2kgcHVzaCIgcmVmcy9tZWRpYXdpa2kvJHtyZW1vdGVuYW1lfS9tYXN0ZXIgJHtzaGExX2NvbW1pdH0gJHtzaGExX2NoaWxkfSkpOwogCQl9CiAJfQogCi0JcHJpbnQgU1RET1VUICJvayAkcmVtb3RlXG4iOworCXByaW50IHsqU1RET1VUfSAib2sgJHtyZW1vdGV9XG4iOwogCXJldHVybiAxOwogfQogCkBAIC0xMjY3LDggKzEyODcsOCBAQAogCQlzaXByb3AgPT4gJ2ZpbGVleHRlbnNpb25zJwogCQl9OwogCW15ICRyZXN1bHQgPSAkbWVkaWF3aWtpLT5hcGkoJHF1ZXJ5KTsKLQlteSBAZmlsZV9leHRlbnNpb25zPSBtYXAgJF8tPntleHR9LEB7JHJlc3VsdC0+e3F1ZXJ5fS0+e2ZpbGVleHRlbnNpb25zfX07Ci0JbXkgJWhhc2hGaWxlID0gbWFwIHskXyA9PiAxfUBmaWxlX2V4dGVuc2lvbnM7CisJbXkgQGZpbGVfZXh0ZW5zaW9ucyA9IG1hcCB7ICRfLT57ZXh0fX0gQHskcmVzdWx0LT57cXVlcnl9LT57ZmlsZWV4dGVuc2lvbnN9fTsKKwlteSAlaGFzaEZpbGUgPSBtYXAgeyAkXyA9PiAxIH0gQGZpbGVfZXh0ZW5zaW9uczsKIAogCXJldHVybiAlaGFzaEZpbGU7CiB9CkBAIC0xMjkwLDggKzEzMTAsOCBAQAogCQkjIExvb2sgYXQgY29uZmlndXJhdGlvbiBmaWxlLCBpZiB0aGUgcmVjb3JkIGZvciB0aGF0IG5hbWVzcGFjZSBpcwogCQkjIGFscmVhZHkgY2FjaGVkLiBOYW1lc3BhY2VzIGFyZSBzdG9yZWQgaW4gZm9ybToKIAkJIyAiTmFtZV9vZl9uYW1lc3BhY2U6SWRfbmFtZXNwYWNlIiwgZXguOiAiRmlsZTo2Ii4KLQkJbXkgQHRlbXAgPSBzcGxpdCgvW1xuXS8sIHJ1bl9naXQoImNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLiIKLQkJCQkJCS4gJHJlbW90ZW5hbWUgLiIubmFtZXNwYWNlQ2FjaGUiKSk7CisJCW15IEB0ZW1wID0gc3BsaXQoL1xuLywKKwkJCQkgcnVuX2dpdCgiY29uZmlnIC0tZ2V0LWFsbCByZW1vdGUuJHtyZW1vdGVuYW1lfS5uYW1lc3BhY2VDYWNoZSIpKTsKIAkJY2hvbXAoQHRlbXApOwogCQlmb3JlYWNoIG15ICRucyAoQHRlbXApIHsKIAkJCW15ICgkbiwgJGlkKSA9IHNwbGl0KC86LywgJG5zKTsKQEAgLTEzMDUsNyArMTMyNSw3IEBACiAJfQogCiAJaWYgKCFleGlzdHMgJG5hbWVzcGFjZV9pZHskbmFtZX0pIHsKLQkJcHJpbnQgU1RERVJSICJOYW1lc3BhY2UgJG5hbWUgbm90IGZvdW5kIGluIGNhY2hlLCBxdWVyeWluZyB0aGUgd2lraSAuLi5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiTmFtZXNwYWNlICR7bmFtZX0gbm90IGZvdW5kIGluIGNhY2hlLCBxdWVyeWluZyB0aGUgd2lraSAuLi5cbiI7CiAJCSMgTlMgbm90IGZvdW5kID0+IGdldCBuYW1lc3BhY2UgaWQgZnJvbSBNVyBhbmQgc3RvcmUgaXQgaW4KIAkgICAgICAgICMgY29uZmlndXJhdGlvbiBmaWxlLgogCSAgICAgICAgbXkgJHF1ZXJ5ID0gewpAQCAtMTMyOSw4ICsxMzQ5LDggQEAKIAlteSAkbnMgPSAkbmFtZXNwYWNlX2lkeyRuYW1lfTsKIAlteSAkaWQ7CiAKLQl1bmxlc3MgKGRlZmluZWQgJG5zKSB7Ci0JCXByaW50IFNUREVSUiAiTm8gc3VjaCBuYW1lc3BhY2UgJG5hbWUgb24gTWVkaWFXaWtpLlxuIjsKKwlpZiAoIWRlZmluZWQgJG5zKSB7CisJCXByaW50IHsqU1RERVJSfSAiTm8gc3VjaCBuYW1lc3BhY2UgJHtuYW1lfSBvbiBNZWRpYVdpa2kuXG4iOwogCQkkbnMgPSB7aXNfbmFtZXNwYWNlID0+IDB9OwogCQkkbmFtZXNwYWNlX2lkeyRuYW1lfSA9ICRuczsKIAl9CkBAIC0xMzQ0LDE1ICsxMzY0LDE1IEBACiAKIAkjIFN0b3JlIGV4cGxpY2l0ZWx5IHJlcXVlc3RlZCBuYW1lc3BhY2VzIG9uIGRpc2sKIAlpZiAoIWV4aXN0cyAkY2FjaGVkX213X25hbWVzcGFjZV9pZHskbmFtZX0pIHsKLQkJcnVuX2dpdCgiY29uZmlnIC0tYWRkIHJlbW90ZS4iLiAkcmVtb3RlbmFtZQotCQkJLiIubmFtZXNwYWNlQ2FjaGUgXCIiLiAkbmFtZSAuIjoiLiAkc3RvcmVfaWQgLiJcIiIpOworCQlydW5fZ2l0KHFxKGNvbmZpZyAtLWFkZCByZW1vdGUuJHtyZW1vdGVuYW1lfS5uYW1lc3BhY2VDYWNoZSAiJHtuYW1lfToke3N0b3JlX2lkfSIpKTsKIAkJJGNhY2hlZF9td19uYW1lc3BhY2VfaWR7JG5hbWV9ID0gMTsKIAl9CiAJcmV0dXJuICRpZDsKIH0KIAogc3ViIGdldF9td19uYW1lc3BhY2VfaWRfZm9yX3BhZ2UgewotCWlmIChteSAoJG5hbWVzcGFjZSkgPSAkX1swXSA9fiAvXihbXjpdKik6LykgeworCW15ICRuYW1lc3BhY2UgPSBzaGlmdDsKKwlpZiAoJG5hbWVzcGFjZSA9fiAvXihbXjpdKik6LykgewogCQlyZXR1cm4gZ2V0X213X25hbWVzcGFjZV9pZCgkbmFtZXNwYWNlKTsKIAl9IGVsc2UgewogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS50eHQgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS50eHQKaW5kZXggNGQyMTFmNS4uMjNiN2VmOSAxMDA2NDQKLS0tIGEvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kudHh0CisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpLnR4dApAQCAtNCw0ICs0LDQgQEAKIHJlcG9zaXRvcnkgdGhhbmtzIHRvIHJlbW90ZS1oZWxwZXJzLgogCiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdmlzaXQgdGhlIHdpa2kgYXQKLWh0dHBzOi8vZ2l0aHViLmNvbS9CaWJ6YmFsbC9HaXQtTWVkaWF3aWtpL3dpa2kKK2h0dHBzOi8vZ2l0aHViLmNvbS9tb3kvR2l0LU1lZGlhd2lraS93aWtpCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L1JFQURNRSBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvUkVBRE1FCmluZGV4IDk2ZTk3MzkuLjAzZjZlZTUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvUkVBRE1FCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvUkVBRE1FCkBAIC0yNSw3ICsyNSw3IEBACiAKIFRoZSB0ZXN0IGVudmlyb25tZW50IG1ha2VzIGl0IGVhc3kgdG8gaW5zdGFsbCBhbmQgbWFuaXB1bGF0ZSBvbmUgb3IKIHNldmVyYWwgTWVkaWFXaWtpIGluc3RhbmNlcy4gVG8gYWxsb3cgZGV2ZWxvcGVycyB0byBydW4gdGhlIHRlc3RzdWl0ZQotZWFzaWx5LCB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3QgcmVxdWlyZSByb290IHByaXZpbGVkZ2UgKGV4Y2VwdCB0bworZWFzaWx5LCB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3QgcmVxdWlyZSByb290IHByaXZpbGVnZSAoZXhjZXB0IHRvCiBpbnN0YWxsIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBpZiBuZWVkZWQpLiBJdCBzdGFydHMgYSB3ZWJzZXJ2ZXIKIGluc3RhbmNlIG9uIHRoZSB1c2VyJ3MgYWNjb3VudCAodXNpbmcgbGlnaHR0cGQgZ3JlYXRseSBoZWxwcyBmb3IKIHRoYXQpLCBhbmQgZG9lcyBub3QgbmVlZCBhIHNlcGFyYXRlIGRhdGFiYXNlIGRhZW1vbiAodGhhbmtzIHRvIHRoZSB1c2UKQEAgLTgxLDcgKzgxLDcgQEAKIAogKiogYHRlc3RfY2hlY2tfd2lraV9wcmVjb25kYDoKIENoZWNrIGlmIHRoZSB0ZXN0cyBtdXN0IGJlIHNraXBwZWQgb3Igbm90LiBQbGVhc2UgdXNlIHRoaXMgZnVuY3Rpb24KLWF0IHRoZSBiZWdnaW5pbmcgb2YgZWFjaCBuZXcgdGVzdCBmaWxlLgorYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIG5ldyB0ZXN0IGZpbGUuCiAKICoqIGB3aWtpX2dldHBhZ2VgOgogRmV0Y2ggYSBnaXZlbiBwYWdlIGZyb20gdGhlIHdpa2kgYW5kIHB1dHMgaXRzIGNvbnRlbnQgaW4gdGhlCkBAIC0xMTMsNyArMTEzLDcgQEAKIAogKiogYHdpa2lfcmVzZXRgOgogUmVzZXQgdGhlIHdpa2ksIGkuZS4gZmx1c2ggdGhlIGRhdGFiYXNlLiBVc2UgdGhpcyBmdW5jdGlvbiBhdCB0aGUKLWJlZ2luaW5nIG9mIGVhY2ggbmV3IHRlc3QsIGV4Y2VwdCBpZiB0aGUgdGVzdCByZS11c2VzIHRoZSBzYW1lIHdpa2kKK2JlZ2lubmluZyBvZiBlYWNoIG5ldyB0ZXN0LCBleGNlcHQgaWYgdGhlIHRlc3QgcmUtdXNlcyB0aGUgc2FtZSB3aWtpCiAoYW5kIGhpc3RvcnkpIGFzIHRoZSBwcmV2aW91cyB0ZXN0LgogCiBIb3cgdG8gd3JpdGUgYSBuZXcgdGVzdApkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kuc2ggYi9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS5zaAppbmRleCBjNmQ2ZmEzLi43MGE1M2Y2IDEwMDc1NQotLS0gYS9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS5zaAorKysgYi9jb250cmliL213LXRvLWdpdC90L2luc3RhbGwtd2lraS5zaApAQCAtMTUsNyArMTUsNyBAQAogCiAuICIkV0lLSV9URVNUX0RJUiIvdGVzdC1naXRtdy1saWIuc2gKIHVzYWdlICgpIHsKLQllY2hvICJVc2FnZTogIgorCWVjaG8gInVzYWdlOiAiCiAJZWNobyAiCS4vaW5zdGFsbC13aWtpLnNoIDxpbnN0YWxsIHwgZGVsZXRlIHwgLS1oZWxwPiIKIAllY2hvICIJCWluc3RhbGwgfCAtaSA6CUluc3RhbGwgYSB3aWtpIG9uIHlvdXIgY29tcHV0ZXIuIgogCWVjaG8gIgkJZGVsZXRlIHwgLWQgOiBEZWxldGUgdGhlIHdpa2kgYW5kIGFsbCBpdHMgcGFnZXMgYW5kICIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvaW5zdGFsbC13aWtpL0xvY2FsU2V0dGluZ3MucGhwIGIvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvTG9jYWxTZXR0aW5ncy5waHAKaW5kZXggMjlmMTI1MS4uNzQ1ZTQ3ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvTG9jYWxTZXR0aW5ncy5waHAKKysrIGIvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvTG9jYWxTZXR0aW5ncy5waHAKQEAgLTg4LDcgKzg4LDcgQEAKIAogIyMgU2V0ICR3Z0NhY2hlRGlyZWN0b3J5IHRvIGEgd3JpdGFibGUgZGlyZWN0b3J5IG9uIHRoZSB3ZWIgc2VydmVyCiAjIyB0byBtYWtlIHlvdXIgd2lraSBnbyBzbGlnaHRseSBmYXN0ZXIuIFRoZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdAotIyMgYmUgcHVibGljYWxseSBhY2Nlc3NpYmxlIGZyb20gdGhlIHdlYi4KKyMjIGJlIHB1YmxpY2x5IGFjY2Vzc2libGUgZnJvbSB0aGUgd2ViLgogIyR3Z0NhY2hlRGlyZWN0b3J5ID0gIiRJUC9jYWNoZSI7CiAKICMgU2l0ZSBsYW5ndWFnZSBjb2RlLCBzaG91bGQgYmUgb25lIG9mIHRoZSBsaXN0IGluIC4vbGFuZ3VhZ2VzL05hbWVzLnBocApkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC90OTM2Mi1tdy10by1naXQtdXRmOC5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjItbXctdG8tZ2l0LXV0Zjguc2gKaW5kZXggYjY0MDVjZS4uMzcwMjFlMiAxMDA3NTUKLS0tIGEvY29udHJpYi9tdy10by1naXQvdC90OTM2Mi1tdy10by1naXQtdXRmOC5zaAorKysgYi9jb250cmliL213LXRvLWdpdC90L3Q5MzYyLW13LXRvLWdpdC11dGY4LnNoCkBAIC0xMzksNyArMTM5LDcgQEAKICcKIAogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdjYXBpdGFsIGF0IHRoZSBiZWdpbmluZyBvZiBmaWxlIG5hbWVzJyAnCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdjYXBpdGFsIGF0IHRoZSBiZWdpbm5pbmcgb2YgZmlsZSBuYW1lcycgJwogCXdpa2lfcmVzZXQgJiYKIAlnaXQgY2xvbmUgbWVkaWF3aWtpOjonIiRXSUtJX1VSTCInIG13X2Rpcl8xMCAmJgogCSgKQEAgLTE1Niw3ICsxNTYsNyBAQAogJwogCiAKLXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3NwZWNpYWwgY2hhcmFjdGVyIGF0IHRoZSBiZWdpbmluZyBvZiBmaWxlIG5hbWUgZnJvbSBtdyB0byBnaXQnICcKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3NwZWNpYWwgY2hhcmFjdGVyIGF0IHRoZSBiZWdpbm5pbmcgb2YgZmlsZSBuYW1lIGZyb20gbXcgdG8gZ2l0JyAnCiAJd2lraV9yZXNldCAmJgogCWdpdCBjbG9uZSBtZWRpYXdpa2k6OiciJFdJS0lfVVJMIicgbXdfZGlyXzExICYmCiAJd2lraV9lZGl0cGFnZSB7Y2hhcl8xICJleHBlY3QgdG8gYmUgcmVuYW1lZCB7Y2hhcl8xIiBmYWxzZSAmJgpAQCAtMTg5LDcgKzE4OSw3IEBACiAJd2lraV9wYWdlX2V4aXN0IE5vdEFOYW1lU3BhY2U6UGFnZQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IG9mIGNvcnJlY3QgZm9ybWF0aW5nIGZvciBmaWxlIG5hbWUgZnJvbSBtdyB0byBnaXQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3Qgb2YgY29ycmVjdCBmb3JtYXR0aW5nIGZvciBmaWxlIG5hbWUgZnJvbSBtdyB0byBnaXQnICcKIAl3aWtpX3Jlc2V0ICYmCiAJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTIgJiYKIAl3aWtpX2VkaXRwYWdlIGNoYXJfJV83Yl8xICJleHBlY3QgdG8gYmUgcmVuYW1lZCBjaGFye18xIiBmYWxzZSAmJgpAQCAtMjA3LDcgKzIwNyw3IEBACiAnCiAKIAotdGVzdF9leHBlY3RfZmFpbHVyZSAndGVzdCBvZiBjb3JyZWN0IGZvcm1hdGluZyBmb3IgZmlsZSBuYW1lIGJlZ2luaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXInICcKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3Rlc3Qgb2YgY29ycmVjdCBmb3JtYXR0aW5nIGZvciBmaWxlIG5hbWUgYmVnaW5uaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXInICcKIAl3aWtpX3Jlc2V0ICYmCiAJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTMgJiYKIAkoCkBAIC0yMTUsNyArMjE1LDcgQEAKIAkJZWNobyAibXkgbmV3IGZpbGUge2NoYXJfMSIgPlx7Y2hhcl8xLm13ICYmCiAJCWVjaG8gIm15IG5ldyBmaWxlIFtjaGFyXzIiID5cW2NoYXJfMi5tdyAmJgogCQlnaXQgYWRkIC4gJiYKLQkJZ2l0IGNvbW1pdCAtYW0gImNvbW1pdGluZyBzb21lIGV4b3RpYyBmaWxlIG5hbWUuLi4iICYmCisJCWdpdCBjb21taXQgLWFtICJjb21taXR0aW5nIHNvbWUgZXhvdGljIGZpbGUgbmFtZS4uLiIgJiYKIAkJZ2l0IHB1c2ggJiYKIAkJZ2l0IHB1bGwKIAkpICYmCkBAIC0yMjYsNyArMjI2LDcgQEAKICcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IG9mIGNvcnJlY3QgZm9ybWF0aW5nIGZvciBmaWxlIG5hbWUgZnJvbSBnaXQgdG8gbXcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3Qgb2YgY29ycmVjdCBmb3JtYXR0aW5nIGZvciBmaWxlIG5hbWUgZnJvbSBnaXQgdG8gbXcnICcKIAl3aWtpX3Jlc2V0ICYmCiAJZ2l0IGNsb25lIG1lZGlhd2lraTo6JyIkV0lLSV9VUkwiJyBtd19kaXJfMTQgJiYKIAkoCkBAIC0yMzQsNyArMjM0LDcgQEAKIAkJZWNobyAibXkgbmV3IGZpbGUgY2hhcntfMSIgPkNoYXJce18xLm13ICYmCiAJCWVjaG8gIm15IG5ldyBmaWxlIGNoYXJbXzIiID5DaGFyXFtfMi5tdyAmJgogCQlnaXQgYWRkIC4gJiYKLQkJZ2l0IGNvbW1pdCAtbSAiY29tbWl0aW5nIHNvbWUgZXhvdGljIGZpbGUgbmFtZS4uLiIgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiY29tbWl0dGluZyBzb21lIGV4b3RpYyBmaWxlIG5hbWUuLi4iICYmCiAJCWdpdCBwdXNoCiAJKSAmJgogCXdpa2lfZ2V0YWxscGFnZSByZWZfcGFnZV8xNCAmJgpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC90ZXN0LWdpdG13LWxpYi5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy1saWIuc2gKaW5kZXggM2IyY2ZhYy4uYmI3NmNlZSAxMDA3NTUKLS0tIGEvY29udHJpYi9tdy10by1naXQvdC90ZXN0LWdpdG13LWxpYi5zaAorKysgYi9jb250cmliL213LXRvLWdpdC90L3Rlc3QtZ2l0bXctbGliLnNoCkBAIC0zMzYsMjAgKzMzNiwyMSBAQAogCWZpCiAKIAkjIEZldGNoIE1lZGlhV2lraSdzIGFyY2hpdmUgaWYgbm90IGFscmVhZHkgcHJlc2VudCBpbiB0aGUgVE1QIGRpcmVjdG9yeQorCU1XX0ZJTEVOQU1FPSJtZWRpYXdpa2ktJE1XX1ZFUlNJT05fTUFKT1IuJE1XX1ZFUlNJT05fTUlOT1IudGFyLmd6IgogCWNkICIkVE1QIgotCWlmIFsgISAtZiAiJE1XX1ZFUlNJT04udGFyLmd6IiBdIDsgdGhlbgotCQllY2hvICJEb3dubG9hZGluZyAkTVdfVkVSU0lPTiBzb3VyY2VzIC4uLiIKLQkJd2dldCAiaHR0cDovL2Rvd25sb2FkLndpa2ltZWRpYS5vcmcvbWVkaWF3aWtpLzEuMTkvbWVkaWF3aWtpLTEuMTkuMC50YXIuZ3oiIHx8CisJaWYgWyAhIC1mICRNV19GSUxFTkFNRSBdIDsgdGhlbgorCQllY2hvICJEb3dubG9hZGluZyAkTVdfVkVSU0lPTl9NQUpPUi4kTVdfVkVSU0lPTl9NSU5PUiBzb3VyY2VzIC4uLiIKKwkJd2dldCAiaHR0cDovL2Rvd25sb2FkLndpa2ltZWRpYS5vcmcvbWVkaWF3aWtpLyRNV19WRVJTSU9OX01BSk9SLyRNV19GSUxFTkFNRSIgfHwKIAkJCWVycm9yICJVbmFibGUgdG8gZG93bmxvYWQgIlwKLQkJCSJodHRwOi8vZG93bmxvYWQud2lraW1lZGlhLm9yZy9tZWRpYXdpa2kvMS4xOS8iXAotCQkJIm1lZGlhd2lraS0xLjE5LjAudGFyLmd6LiAiXAorCQkJImh0dHA6Ly9kb3dubG9hZC53aWtpbWVkaWEub3JnL21lZGlhd2lraS8kTVdfVkVSU0lPTl9NQUpPUi8iXAorCQkJIiRNV19GSUxFTkFNRS4gIlwKIAkJCSJQbGVhc2UgZml4IHlvdXIgY29ubmVjdGlvbiBhbmQgbGF1bmNoIHRoZSBzY3JpcHQgYWdhaW4uIgotCQllY2hvICIkTVdfVkVSU0lPTi50YXIuZ3ogZG93bmxvYWRlZCBpbiBgcHdkYC4gIlwKKwkJZWNobyAiJE1XX0ZJTEVOQU1FIGRvd25sb2FkZWQgaW4gYHB3ZGAuICJcCiAJCQkiWW91IGNhbiBkZWxldGUgaXQgbGF0ZXIgaWYgeW91IHdhbnQuIgogCWVsc2UKLQkJZWNobyAiUmV1c2luZyBleGlzdGluZyAkTVdfVkVSU0lPTi50YXIuZ3ogZG93bmxvYWRlZCBpbiBgcHdkYC4iCisJCWVjaG8gIlJldXNpbmcgZXhpc3RpbmcgJE1XX0ZJTEVOQU1FIGRvd25sb2FkZWQgaW4gYHB3ZGAuIgogCWZpCi0JYXJjaGl2ZV9hYnNfcGF0aD0kKHB3ZCkvIiRNV19WRVJTSU9OLnRhci5neiIKKwlhcmNoaXZlX2Fic19wYXRoPSQocHdkKS8kTVdfRklMRU5BTUUKIAljZCAiJFdJS0lfRElSX0lOU1QvJFdJS0lfRElSX05BTUUvIiB8fAogCQllcnJvciAiY2FuJ3QgY2QgdG8gJFdJS0lfRElSX0lOU1QvJFdJS0lfRElSX05BTUUvIgogCXRhciB4emYgIiRhcmNoaXZlX2Fic19wYXRoIiAtLXN0cmlwLWNvbXBvbmVudHM9MSB8fApAQCAtNDMxLDUgKzQzMiw1IEBACiAJIyBEZWxldGUgdGhlIHdpa2kncyBTUUxpdGUgZGF0YWJhc2UKIAlybSAtZiAiJFRNUC8kREJfRklMRSIgfHwgZXJyb3IgIkRhdGFiYXNlICRUTVAvJERCX0ZJTEUgY291bGQgbm90IGJlIGRlbGV0ZWQuIgogCXJtIC1mICIkRklMRVNfRk9MREVSLyREQl9GSUxFIgotCXJtIC1yZiAiJFRNUC8kTVdfVkVSU0lPTiIKKwlybSAtcmYgIiRUTVAvbWVkaWF3aWtpLSRNV19WRVJTSU9OX01BSk9SLiRNV19WRVJTSU9OX01JTk9SLnRhci5neiIKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC5jb25maWcgYi9jb250cmliL213LXRvLWdpdC90L3Rlc3QuY29uZmlnCmluZGV4IDk1OGIzN2IuLjRjZmViZTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC5jb25maWcKKysrIGIvY29udHJpYi9tdy10by1naXQvdC90ZXN0LmNvbmZpZwpAQCAtMzAsNiArMzAsOCBAQAogCiAjIFRoZSB2YXJpYWJsZXMgYmVsb3cgYXJlIHVzZWQgYnkgdGhlIHNjcmlwdCB0byBpbnN0YWxsIGEgd2lraS4KICMgWW91IHNob3VsZCBub3QgbW9kaWZ5IHRoZXNlIHVubGVzcyB5b3UgYXJlIG1vZGlmeWluZyB0aGUgc2NyaXB0IGl0c2VsZi4KLU1XX1ZFUlNJT049bWVkaWF3aWtpLTEuMTkuMAorIyB0ZXN0ZWQgdmVyc2lvbnM6IDEuMTkuWCAtPiAxLjIxLjEKK01XX1ZFUlNJT05fTUFKT1I9MS4yMQorTVdfVkVSU0lPTl9NSU5PUj0xCiBGSUxFU19GT0xERVI9aW5zdGFsbC13aWtpCiBEQl9JTlNUQUxMX1NDUklQVD1kYl9pbnN0YWxsLnBocApkaWZmIC0tZ2l0IGEvY29udHJpYi9wNGltcG9ydC9naXQtcDRpbXBvcnQucHkgYi9jb250cmliL3A0aW1wb3J0L2dpdC1wNGltcG9ydC5weQppbmRleCBiNmU1MzRiLi41OTNkNmEwIDEwMDY0NAotLS0gYS9jb250cmliL3A0aW1wb3J0L2dpdC1wNGltcG9ydC5weQorKysgYi9jb250cmliL3A0aW1wb3J0L2dpdC1wNGltcG9ydC5weQpAQCAtMTQsNiArMTQsMTEgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgZ2V0b3B0CiAKK2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjAyMDAwMDoKKyAgICMgVGhlIGJlaGF2aW9yIG9mIHRoZSBtYXJzaGFsIG1vZHVsZSBjaGFuZ2VkIHNpZ25pZmljYW50bHkgaW4gMi4yCisgICBzeXMuc3RkZXJyLndyaXRlKCJnaXQtcDRpbXBvcnQucHk6IHJlcXVpcmVzIFB5dGhvbiAyLjIgb3IgbGF0ZXIuXG4iKQorICAgc3lzLmV4aXQoMSkKKwogZnJvbSBzaWduYWwgaW1wb3J0IHNpZ25hbCwgXAogICAgU0lHUElQRSwgU0lHSU5ULCBTSUdfREZMLCBcCiAgICBkZWZhdWx0X2ludF9oYW5kbGVyCmRpZmYgLS1naXQgYS9jb250cmliL3BhdGNoZXMvZG9jYm9vay14c2wtbWFucGFnZXMtY2hhcm1hcC5wYXRjaCBiL2NvbnRyaWIvcGF0Y2hlcy9kb2Nib29rLXhzbC1tYW5wYWdlcy1jaGFybWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmIwOGI0Li4wMDAwMDAwCi0tLSBhL2NvbnRyaWIvcGF0Y2hlcy9kb2Nib29rLXhzbC1tYW5wYWdlcy1jaGFybWFwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotRnJvbTogSXNtYWlsIETDtm5tZXogPGlzbWFpbEBwYXJkdXMub3JnLnRyPgotCi1UcnlpbmcgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24gd2l0aCBkb2Nib29rLXhzbCAxLjczIG1heSByZXN1bHQgaW4KLXRoZSBmb2xsb3dpbmcgZXJyb3IuICBUaGlzIHBhdGNoIGZpeGVzIGl0LgotCi0kIHhtbHRvIC1tIGNhbGxvdXRzLnhzbCBtYW4gZ2l0LWFkZC54bWwKLXJ1bnRpbWUgZXJyb3I6IGZpbGUKLWZpbGU6Ly8vdXNyL3NoYXJlL3NnbWwvZG9jYm9vay94c2wtc3R5bGVzaGVldHMtMS43My4wL21hbnBhZ2VzL290aGVyLnhzbCBsaW5lCi0xMjkgZWxlbWVudCBjYWxsLXRlbXBsYXRlCi1UaGUgY2FsbGVkIHRlbXBsYXRlICdyZWFkLWNoYXJhY3Rlci1tYXAnIHdhcyBub3QgZm91bmQuCi0KLS0tLSBkb2Nib29rLXhzbC0xLjczLjAvbWFucGFnZXMvZG9jYm9vay54c2wubWFucGFnZXMtY2hhcm1hcAkyMDA3LTA3LTIzIDE2OjI0OjIzLjAwMDAwMDAwMCArMDEwMAotKysrIGRvY2Jvb2steHNsLTEuNzMuMC9tYW5wYWdlcy9kb2Nib29rLnhzbAkyMDA3LTA3LTIzIDE2OjI1OjE2LjAwMDAwMDAwMCArMDEwMAotQEAgLTM3LDYgKzM3LDcgQEAKLSAgIDx4c2w6aW5jbHVkZSBocmVmPSJsaXN0cy54c2wiLz4KLSAgIDx4c2w6aW5jbHVkZSBocmVmPSJlbmRub3Rlcy54c2wiLz4KLSAgIDx4c2w6aW5jbHVkZSBocmVmPSJ0YWJsZS54c2wiLz4KLSsgIDx4c2w6aW5jbHVkZSBocmVmPSIuLi9jb21tb24vY2hhcm1hcC54c2wiLz4KLQotICAgPCEtLSAqIHdlIHJlbmFtZSB0aGUgZm9sbG93aW5nIGp1c3QgdG8gYXZvaWQgdXNpbmcgcGFyYW1zIHdpdGggIm1hbiIgLS0+Ci0gICA8IS0tICogcHJlZml4ZXMgaW4gdGhlIHRhYmxlLnhzbCBzdHlsZXNoZWV0IChiZWNhdXNlIHRoYXQgc3R5bGVzaGVldCAtLT4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvTWFrZWZpbGUgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL01ha2VmaWxlCmluZGV4IDlhNzY1NzUuLjIzOTE2MWQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvTWFrZWZpbGUKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9NYWtlZmlsZQpAQCAtMyw2ICszLDcgQEAKIGV4cG9ydCBUIDo9ICQoYWRkcHJlZml4ICQoQ1VSRElSKS8sJChURVNUUykpCiBleHBvcnQgTUFLRSA6PSAkKE1BS0UpIC1lCiBleHBvcnQgUEFUSCA6PSAkKENVUkRJUik6JChQQVRIKQorZXhwb3J0IFRFU1RfTElOVCA6PSB0ZXN0LWxpbnQtZXhlY3V0YWJsZSB0ZXN0LWxpbnQtc2hlbGwtc3ludGF4CiAKIHRlc3Q6CiAJJChNQUtFKSAtQyAuLi8uLi90ICRACmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtYnpyIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWJ6cgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jM2EzY2FjCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWJ6cgpAQCAtMCwwICsxLDk2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAoYykgMjAxMiBGZWxpcGUgQ29udHJlcmFzCisjCisKKyMKKyMgSnVzdCBjb3B5IHRvIHlvdXIgfi9iaW4sIG9yIGFueXdoZXJlIGluIHlvdXIgJFBBVEguCisjIFRoZW4geW91IGNhbiBjbG9uZSB3aXRoOgorIyAlIGdpdCBjbG9uZSBienI6Oi9wYXRoL3RvL2J6ci9yZXBvL29yL3VybAorIworIyBGb3IgZXhhbXBsZToKKyMgJSBnaXQgY2xvbmUgYnpyOjokSE9NRS9teXJlcG8KKyMgb3IKKyMgJSBnaXQgY2xvbmUgYnpyOjpscDpteXJlcG8KKyMKKyMgSWYgeW91IHdhbnQgdG8gc3BlY2lmeSB3aGljaCBicmFuY2hlcyB5b3Ugd2FudCB0cmFjayAocGVyIHJlcG8pOgorIyBnaXQgY29uZmlnIHJlbW90ZS1ienIuYnJhbmNoZXMgJ3RydW5rLCBkZXZlbCwgdGVzdCcKKyMKKworaW1wb3J0IHN5cworCitpbXBvcnQgYnpybGliCitpZiBoYXNhdHRyKGJ6cmxpYiwgImluaXRpYWxpemUiKToKKyAgICBienJsaWIuaW5pdGlhbGl6ZSgpCisKK2ltcG9ydCBienJsaWIucGx1Z2luCitienJsaWIucGx1Z2luLmxvYWRfcGx1Z2lucygpCisKK2ltcG9ydCBienJsaWIuZ2VuZXJhdGVfaWRzCitpbXBvcnQgYnpybGliLnRyYW5zcG9ydAoraW1wb3J0IGJ6cmxpYi5lcnJvcnMKK2ltcG9ydCBienJsaWIudWkKK2ltcG9ydCBienJsaWIudXJsdXRpbHMKK2ltcG9ydCBienJsaWIuYnJhbmNoCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IGpzb24KK2ltcG9ydCByZQoraW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgYXRleGl0LCBzaHV0aWwsIGhhc2hsaWIsIHVybHBhcnNlLCBzdWJwcm9jZXNzCisKK05BTUVfUkUgPSByZS5jb21waWxlKCdeKFtePD5dKyknKQorQVVUSE9SX1JFID0gcmUuY29tcGlsZSgnXihbXjw+XSs/KT8gPzwoW148Pl0qKT4kJykKK0VNQUlMX1JFID0gcmUuY29tcGlsZSgnXihbXjw+XStbXiBcXFx0PD5dKT9cXGIoPzpbIFxcdDw+XSo/KVxcYihbXiBcXHQ8Pl0rQFteIFxcdDw+XSspJykKK1JBV19BVVRIT1JfUkUgPSByZS5jb21waWxlKCdeKFx3KykgKC4rKT8gPCguKik+IChcZCspIChbKy1dXGQrKScpCisKK2RlZiBkaWUobXNnLCAqYXJncyk6CisgICAgc3lzLnN0ZGVyci53cml0ZSgnRVJST1I6ICVzXG4nICUgKG1zZyAlIGFyZ3MpKQorICAgIHN5cy5leGl0KDEpCisKK2RlZiB3YXJuKG1zZywgKmFyZ3MpOgorICAgIHN5cy5zdGRlcnIud3JpdGUoJ1dBUk5JTkc6ICVzXG4nICUgKG1zZyAlIGFyZ3MpKQorCitkZWYgZ2l0dHoodHopOgorICAgIHJldHVybiAnJSswM2QlMDJkJyAlICh0eiAvIDM2MDAsIHR6ICUgMzYwMCAvIDYwKQorCitkZWYgZ2V0X2NvbmZpZyhjb25maWcpOgorICAgIGNtZCA9IFsnZ2l0JywgJ2NvbmZpZycsICctLWdldCcsIGNvbmZpZ10KKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgb3V0cHV0LCBfID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgcmV0dXJuIG91dHB1dAorCitjbGFzcyBNYXJrczoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBzZWxmLnRpcHMgPSB7fQorICAgICAgICBzZWxmLm1hcmtzID0ge30KKyAgICAgICAgc2VsZi5yZXZfbWFya3MgPSB7fQorICAgICAgICBzZWxmLmxhc3RfbWFyayA9IDAKKyAgICAgICAgc2VsZi5sb2FkKCkKKworICAgIGRlZiBsb2FkKHNlbGYpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5wYXRoKToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRtcCA9IGpzb24ubG9hZChvcGVuKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYudGlwcyA9IHRtcFsndGlwcyddCisgICAgICAgIHNlbGYubWFya3MgPSB0bXBbJ21hcmtzJ10KKyAgICAgICAgc2VsZi5sYXN0X21hcmsgPSB0bXBbJ2xhc3QtbWFyayddCisKKyAgICAgICAgZm9yIHJldiwgbWFyayBpbiBzZWxmLm1hcmtzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgc2VsZi5yZXZfbWFya3NbbWFya10gPSByZXYKKworICAgIGRlZiBkaWN0KHNlbGYpOgorICAgICAgICByZXR1cm4geyAndGlwcyc6IHNlbGYudGlwcywgJ21hcmtzJzogc2VsZi5tYXJrcywgJ2xhc3QtbWFyaycgOiBzZWxmLmxhc3RfbWFyayB9CisKKyAgICBkZWYgc3RvcmUoc2VsZik6CisgICAgICAgIGpzb24uZHVtcChzZWxmLmRpY3QoKSwgb3BlbihzZWxmLnBhdGgsICd3JykpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLmRpY3QoKSkKKworICAgIGRlZiBmcm9tX3JldihzZWxmLCByZXYpOgorICAgICAgICByZXR1cm4gc2VsZi5tYXJrc1tyZXZdCisKKyAgICBkZWYgdG9fcmV2KHNlbGYsIG1hcmspOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYucmV2X21hcmtzW21hcmtdKQorCisgICAgZGVmIG5leHRfbWFyayhzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X21hcmsgKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X21hcmsKKworICAgIGRlZiBnZXRfbWFyayhzZWxmLCByZXYpOgorICAgICAgICBzZWxmLmxhc3RfbWFyayArPSAxCisgICAgICAgIHNlbGYubWFya3NbcmV2XSA9IHNlbGYubGFzdF9tYXJrCisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfbWFyaworCisgICAgZGVmIGlzX21hcmtlZChzZWxmLCByZXYpOgorICAgICAgICByZXR1cm4gcmV2IGluIHNlbGYubWFya3MKKworICAgIGRlZiBuZXdfbWFyayhzZWxmLCByZXYsIG1hcmspOgorICAgICAgICBzZWxmLm1hcmtzW3Jldl0gPSBtYXJrCisgICAgICAgIHNlbGYucmV2X21hcmtzW21hcmtdID0gcmV2CisgICAgICAgIHNlbGYubGFzdF9tYXJrID0gbWFyaworCisgICAgZGVmIGdldF90aXAoc2VsZiwgYnJhbmNoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLnRpcHNbYnJhbmNoXSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBzZXRfdGlwKHNlbGYsIGJyYW5jaCwgdGlwKToKKyAgICAgICAgc2VsZi50aXBzW2JyYW5jaF0gPSB0aXAKKworY2xhc3MgUGFyc2VyOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcG8pOgorICAgICAgICBzZWxmLnJlcG8gPSByZXBvCisgICAgICAgIHNlbGYubGluZSA9IHNlbGYuZ2V0X2xpbmUoKQorCisgICAgZGVmIGdldF9saW5lKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAoKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorICAgICAgICByZXR1cm4gc2VsZi5saW5lLnNwbGl0KClbaV0KKworICAgIGRlZiBjaGVjayhzZWxmLCB3b3JkKToKKyAgICAgICAgcmV0dXJuIHNlbGYubGluZS5zdGFydHN3aXRoKHdvcmQpCisKKyAgICBkZWYgZWFjaF9ibG9jayhzZWxmLCBzZXBhcmF0b3IpOgorICAgICAgICB3aGlsZSBzZWxmLmxpbmUgIT0gc2VwYXJhdG9yOgorICAgICAgICAgICAgeWllbGQgc2VsZi5saW5lCisgICAgICAgICAgICBzZWxmLmxpbmUgPSBzZWxmLmdldF9saW5lKCkKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZWFjaF9ibG9jaygnJykKKworICAgIGRlZiBuZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmxpbmUgPSBzZWxmLmdldF9saW5lKCkKKyAgICAgICAgaWYgc2VsZi5saW5lID09ICdkb25lJzoKKyAgICAgICAgICAgIHNlbGYubGluZSA9IE5vbmUKKworICAgIGRlZiBnZXRfbWFyayhzZWxmKToKKyAgICAgICAgaSA9IHNlbGYubGluZS5pbmRleCgnOicpICsgMQorICAgICAgICByZXR1cm4gaW50KHNlbGYubGluZVtpOl0pCisKKyAgICBkZWYgZ2V0X2RhdGEoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrKCdkYXRhJyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpID0gc2VsZi5saW5lLmluZGV4KCcgJykgKyAxCisgICAgICAgIHNpemUgPSBpbnQoc2VsZi5saW5lW2k6XSkKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRpbi5yZWFkKHNpemUpCisKKyAgICBkZWYgZ2V0X2F1dGhvcihzZWxmKToKKyAgICAgICAgbSA9IFJBV19BVVRIT1JfUkUubWF0Y2goc2VsZi5saW5lKQorICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIF8sIG5hbWUsIGVtYWlsLCBkYXRlLCB0eiA9IG0uZ3JvdXBzKCkKKyAgICAgICAgY29tbWl0dGVyID0gJyVzIDwlcz4nICUgKG5hbWUsIGVtYWlsKQorICAgICAgICB0eiA9IGludCh0eikKKyAgICAgICAgdHogPSAoKHR6IC8gMTAwKSAqIDM2MDApICsgKCh0eiAlIDEwMCkgKiA2MCkKKyAgICAgICAgcmV0dXJuIChjb21taXR0ZXIsIGludChkYXRlKSwgdHopCisKK2RlZiByZXZfdG9fbWFyayhyZXYpOgorICAgIGdsb2JhbCBtYXJrcworICAgIHJldHVybiBtYXJrcy5mcm9tX3JldihyZXYpCisKK2RlZiBtYXJrX3RvX3JldihtYXJrKToKKyAgICBnbG9iYWwgbWFya3MKKyAgICByZXR1cm4gbWFya3MudG9fcmV2KG1hcmspCisKK2RlZiBmaXh1cF91c2VyKHVzZXIpOgorICAgIG5hbWUgPSBtYWlsID0gTm9uZQorICAgIHVzZXIgPSB1c2VyLnJlcGxhY2UoJyInLCAnJykKKyAgICBtID0gQVVUSE9SX1JFLm1hdGNoKHVzZXIpCisgICAgaWYgbToKKyAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgbWFpbCA9IG0uZ3JvdXAoMikuc3RyaXAoKQorICAgIGVsc2U6CisgICAgICAgIG0gPSBFTUFJTF9SRS5tYXRjaCh1c2VyKQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgICAgIG1haWwgPSBtLmdyb3VwKDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtID0gTkFNRV9SRS5tYXRjaCh1c2VyKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBuYW1lID0gbS5ncm91cCgxKS5zdHJpcCgpCisKKyAgICBpZiBub3QgbmFtZToKKyAgICAgICAgbmFtZSA9ICd1bmtub3duJworICAgIGlmIG5vdCBtYWlsOgorICAgICAgICBtYWlsID0gJ1Vua25vd24nCisKKyAgICByZXR1cm4gJyVzIDwlcz4nICUgKG5hbWUsIG1haWwpCisKK2RlZiBnZXRfZmlsZWNoYW5nZXMoY3VyLCBwcmV2KToKKyAgICBtb2RpZmllZCA9IHt9CisgICAgcmVtb3ZlZCA9IHt9CisKKyAgICBjaGFuZ2VzID0gY3VyLmNoYW5nZXNfZnJvbShwcmV2KQorCisgICAgZGVmIHUocyk6CisgICAgICAgIHJldHVybiBzLmVuY29kZSgndXRmLTgnKQorCisgICAgZm9yIHBhdGgsIGZpZCwga2luZCBpbiBjaGFuZ2VzLmFkZGVkOgorICAgICAgICBtb2RpZmllZFt1KHBhdGgpXSA9IGZpZAorICAgIGZvciBwYXRoLCBmaWQsIGtpbmQgaW4gY2hhbmdlcy5yZW1vdmVkOgorICAgICAgICByZW1vdmVkW3UocGF0aCldID0gTm9uZQorICAgIGZvciBwYXRoLCBmaWQsIGtpbmQsIG1vZCwgXyBpbiBjaGFuZ2VzLm1vZGlmaWVkOgorICAgICAgICBtb2RpZmllZFt1KHBhdGgpXSA9IGZpZAorICAgIGZvciBvbGRwYXRoLCBuZXdwYXRoLCBmaWQsIGtpbmQsIG1vZCwgXyBpbiBjaGFuZ2VzLnJlbmFtZWQ6CisgICAgICAgIHJlbW92ZWRbdShvbGRwYXRoKV0gPSBOb25lCisgICAgICAgIGlmIGtpbmQgPT0gJ2RpcmVjdG9yeSc6CisgICAgICAgICAgICBsc3QgPSBjdXIubGlzdF9maWxlcyhmcm9tX2Rpcj1uZXdwYXRoLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgICAgIGZvciBwYXRoLCBmaWxlX2NsYXNzLCBraW5kLCBmaWQsIGVudHJ5IGluIGxzdDoKKyAgICAgICAgICAgICAgICBpZiBraW5kICE9ICdkaXJlY3RvcnknOgorICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFt1KG5ld3BhdGggKyAnLycgKyBwYXRoKV0gPSBmaWQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1vZGlmaWVkW3UobmV3cGF0aCldID0gZmlkCisKKyAgICByZXR1cm4gbW9kaWZpZWQsIHJlbW92ZWQKKworZGVmIGV4cG9ydF9maWxlcyh0cmVlLCBmaWxlcyk6CisgICAgZ2xvYmFsIG1hcmtzLCBmaWxlbm9kZXMKKworICAgIGZpbmFsID0gW10KKyAgICBmb3IgcGF0aCwgZmlkIGluIGZpbGVzLml0ZXJpdGVtcygpOgorICAgICAgICBraW5kID0gdHJlZS5raW5kKGZpZCkKKworICAgICAgICBoID0gdHJlZS5nZXRfZmlsZV9zaGExKGZpZCkKKworICAgICAgICBpZiBraW5kID09ICdzeW1saW5rJzoKKyAgICAgICAgICAgIGQgPSB0cmVlLmdldF9zeW1saW5rX3RhcmdldChmaWQpCisgICAgICAgICAgICBtb2RlID0gJzEyMDAwMCcKKyAgICAgICAgZWxpZiBraW5kID09ICdmaWxlJzoKKworICAgICAgICAgICAgaWYgdHJlZS5pc19leGVjdXRhYmxlKGZpZCk6CisgICAgICAgICAgICAgICAgbW9kZSA9ICcxMDA3NTUnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZGUgPSAnMTAwNjQ0JworCisgICAgICAgICAgICAjIGlzIHRoZSBibG9iIGFscmVhZHkgZXhwb3J0ZWQ/CisgICAgICAgICAgICBpZiBoIGluIGZpbGVub2RlczoKKyAgICAgICAgICAgICAgICBtYXJrID0gZmlsZW5vZGVzW2hdCisgICAgICAgICAgICAgICAgZmluYWwuYXBwZW5kKChtb2RlLCBtYXJrLCBwYXRoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBkID0gdHJlZS5nZXRfZmlsZV90ZXh0KGZpZCkKKyAgICAgICAgZWxpZiBraW5kID09ICdkaXJlY3RvcnknOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpZSgiVW5oYW5kbGVkIGtpbmQgJyVzJyBmb3IgcGF0aCAnJXMnIiAlIChraW5kLCBwYXRoKSkKKworICAgICAgICBtYXJrID0gbWFya3MubmV4dF9tYXJrKCkKKyAgICAgICAgZmlsZW5vZGVzW2hdID0gbWFyaworCisgICAgICAgIHByaW50ICJibG9iIgorICAgICAgICBwcmludCAibWFyayA6JXUiICUgbWFyaworICAgICAgICBwcmludCAiZGF0YSAlZCIgJSBsZW4oZCkKKyAgICAgICAgcHJpbnQgZAorCisgICAgICAgIGZpbmFsLmFwcGVuZCgobW9kZSwgbWFyaywgcGF0aCkpCisKKyAgICByZXR1cm4gZmluYWwKKworZGVmIGV4cG9ydF9icmFuY2gocmVwbywgbmFtZSk6CisgICAgZ2xvYmFsIHByZWZpeAorCisgICAgcmVmID0gJyVzL2hlYWRzLyVzJyAlIChwcmVmaXgsIG5hbWUpCisgICAgdGlwID0gbWFya3MuZ2V0X3RpcChuYW1lKQorCisgICAgYnJhbmNoID0gZ2V0X3JlbW90ZV9icmFuY2gobmFtZSkKKyAgICByZXBvID0gYnJhbmNoLnJlcG9zaXRvcnkKKworICAgIGJyYW5jaC5sb2NrX3JlYWQoKQorICAgIHJldnMgPSBicmFuY2guaXRlcl9tZXJnZV9zb3J0ZWRfcmV2aXNpb25zKE5vbmUsIHRpcCwgJ2V4Y2x1ZGUnLCAnZm9yd2FyZCcpCisgICAgdHJ5OgorICAgICAgICB0aXBfcmV2bm8gPSBicmFuY2gucmV2aXNpb25faWRfdG9fcmV2bm8odGlwKQorICAgICAgICBsYXN0X3Jldm5vLCBfID0gYnJhbmNoLmxhc3RfcmV2aXNpb25faW5mbygpCisgICAgICAgIHRvdGFsID0gbGFzdF9yZXZubyAtIHRpcF9yZXZubworICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLk5vU3VjaFJldmlzaW9uOgorICAgICAgICB0aXBfcmV2bm8gPSAwCisgICAgICAgIHRvdGFsID0gMAorCisgICAgZm9yIHJldmlkLCBfLCBzZXEsIF8gaW4gcmV2czoKKworICAgICAgICBpZiBtYXJrcy5pc19tYXJrZWQocmV2aWQpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICByZXYgPSByZXBvLmdldF9yZXZpc2lvbihyZXZpZCkKKyAgICAgICAgcmV2bm8gPSBzZXFbMF0KKworICAgICAgICBwYXJlbnRzID0gcmV2LnBhcmVudF9pZHMKKyAgICAgICAgdGltZSA9IHJldi50aW1lc3RhbXAKKyAgICAgICAgdHogPSByZXYudGltZXpvbmUKKyAgICAgICAgY29tbWl0dGVyID0gcmV2LmNvbW1pdHRlci5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgY29tbWl0dGVyID0gIiVzICV1ICVzIiAlIChmaXh1cF91c2VyKGNvbW1pdHRlciksIHRpbWUsIGdpdHR6KHR6KSkKKyAgICAgICAgYXV0aG9ycyA9IHJldi5nZXRfYXBwYXJlbnRfYXV0aG9ycygpCisgICAgICAgIGlmIGF1dGhvcnM6CisgICAgICAgICAgICBhdXRob3IgPSBhdXRob3JzWzBdLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgYXV0aG9yID0gIiVzICV1ICVzIiAlIChmaXh1cF91c2VyKGF1dGhvciksIHRpbWUsIGdpdHR6KHR6KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGF1dGhvciA9IGNvbW1pdHRlcgorICAgICAgICBtc2cgPSByZXYubWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKKworICAgICAgICBtc2cgKz0gJ1xuJworCisgICAgICAgIGlmIGxlbihwYXJlbnRzKSA9PSAwOgorICAgICAgICAgICAgcGFyZW50ID0gYnpybGliLnJldmlzaW9uLk5VTExfUkVWSVNJT04KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudHNbMF0KKworICAgICAgICBjdXJfdHJlZSA9IHJlcG8ucmV2aXNpb25fdHJlZShyZXZpZCkKKyAgICAgICAgcHJldiA9IHJlcG8ucmV2aXNpb25fdHJlZShwYXJlbnQpCisgICAgICAgIG1vZGlmaWVkLCByZW1vdmVkID0gZ2V0X2ZpbGVjaGFuZ2VzKGN1cl90cmVlLCBwcmV2KQorCisgICAgICAgIG1vZGlmaWVkX2ZpbmFsID0gZXhwb3J0X2ZpbGVzKGN1cl90cmVlLCBtb2RpZmllZCkKKworICAgICAgICBpZiBsZW4ocGFyZW50cykgPT0gMDoKKyAgICAgICAgICAgIHByaW50ICdyZXNldCAlcycgJSByZWYKKworICAgICAgICBwcmludCAiY29tbWl0ICVzIiAlIHJlZgorICAgICAgICBwcmludCAibWFyayA6JWQiICUgKG1hcmtzLmdldF9tYXJrKHJldmlkKSkKKyAgICAgICAgcHJpbnQgImF1dGhvciAlcyIgJSAoYXV0aG9yKQorICAgICAgICBwcmludCAiY29tbWl0dGVyICVzIiAlIChjb21taXR0ZXIpCisgICAgICAgIHByaW50ICJkYXRhICVkIiAlIChsZW4obXNnKSkKKyAgICAgICAgcHJpbnQgbXNnCisKKyAgICAgICAgZm9yIGksIHAgaW4gZW51bWVyYXRlKHBhcmVudHMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0gPSByZXZfdG9fbWFyayhwKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgZ2hvc3Q/CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGkgPT0gMDoKKyAgICAgICAgICAgICAgICBwcmludCAiZnJvbSA6JXMiICUgbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAibWVyZ2UgOiVzIiAlIG0KKworICAgICAgICBmb3IgZiBpbiByZW1vdmVkOgorICAgICAgICAgICAgcHJpbnQgIkQgJXMiICUgKGYsKQorICAgICAgICBmb3IgZiBpbiBtb2RpZmllZF9maW5hbDoKKyAgICAgICAgICAgIHByaW50ICJNICVzIDoldSAlcyIgJSBmCisgICAgICAgIHByaW50CisKKyAgICAgICAgaWYgbGVuKHNlcSkgPiAxOgorICAgICAgICAgICAgIyBsZXQncyBza2lwIGJyYW5jaCByZXZpc2lvbnMgZnJvbSB0aGUgcHJvZ3Jlc3MgcmVwb3J0CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHByb2dyZXNzID0gKHJldm5vIC0gdGlwX3Jldm5vKQorICAgICAgICBpZiAocHJvZ3Jlc3MgJSAxMDAgPT0gMCk6CisgICAgICAgICAgICBpZiB0b3RhbDoKKyAgICAgICAgICAgICAgICBwcmludCAicHJvZ3Jlc3MgcmV2aXNpb24gJWQgJyVzJyAoJWQvJWQpIiAlIChyZXZubywgbmFtZSwgcHJvZ3Jlc3MsIHRvdGFsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAicHJvZ3Jlc3MgcmV2aXNpb24gJWQgJyVzJyAoJWQpIiAlIChyZXZubywgbmFtZSwgcHJvZ3Jlc3MpCisKKyAgICBicmFuY2gudW5sb2NrKCkKKworICAgIHJldmlkID0gYnJhbmNoLmxhc3RfcmV2aXNpb24oKQorCisgICAgIyBtYWtlIHN1cmUgdGhlIHJlZiBpcyB1cGRhdGVkCisgICAgcHJpbnQgInJlc2V0ICVzIiAlIHJlZgorICAgIHByaW50ICJmcm9tIDoldSIgJSByZXZfdG9fbWFyayhyZXZpZCkKKyAgICBwcmludAorCisgICAgbWFya3Muc2V0X3RpcChuYW1lLCByZXZpZCkKKworZGVmIGV4cG9ydF90YWcocmVwbywgbmFtZSk6CisgICAgZ2xvYmFsIHRhZ3MsIHByZWZpeAorCisgICAgcmVmID0gJyVzL3RhZ3MvJXMnICUgKHByZWZpeCwgbmFtZSkKKyAgICBwcmludCAicmVzZXQgJXMiICUgcmVmCisgICAgcHJpbnQgImZyb20gOiV1IiAlIHJldl90b19tYXJrKHRhZ3NbbmFtZV0pCisgICAgcHJpbnQKKworZGVmIGRvX2ltcG9ydChwYXJzZXIpOgorICAgIGdsb2JhbCBkaXJuYW1lCisKKyAgICByZXBvID0gcGFyc2VyLnJlcG8KKyAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsICdtYXJrcy1naXQnKQorCisgICAgcHJpbnQgImZlYXR1cmUgZG9uZSIKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgcHJpbnQgImZlYXR1cmUgaW1wb3J0LW1hcmtzPSVzIiAlIHBhdGgKKyAgICBwcmludCAiZmVhdHVyZSBleHBvcnQtbWFya3M9JXMiICUgcGF0aAorICAgIHByaW50ICJmZWF0dXJlIGZvcmNlIgorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgd2hpbGUgcGFyc2VyLmNoZWNrKCdpbXBvcnQnKToKKyAgICAgICAgcmVmID0gcGFyc2VyWzFdCisgICAgICAgIGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzLycpOgorICAgICAgICAgICAgbmFtZSA9IHJlZltsZW4oJ3JlZnMvaGVhZHMvJyk6XQorICAgICAgICAgICAgZXhwb3J0X2JyYW5jaChyZXBvLCBuYW1lKQorICAgICAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy90YWdzLycpOgorICAgICAgICAgICAgbmFtZSA9IHJlZltsZW4oJ3JlZnMvdGFncy8nKTpdCisgICAgICAgICAgICBleHBvcnRfdGFnKHJlcG8sIG5hbWUpCisgICAgICAgIHBhcnNlci5uZXh0KCkKKworICAgIHByaW50ICdkb25lJworCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKK2RlZiBwYXJzZV9ibG9iKHBhcnNlcik6CisgICAgZ2xvYmFsIGJsb2JfbWFya3MKKworICAgIHBhcnNlci5uZXh0KCkKKyAgICBtYXJrID0gcGFyc2VyLmdldF9tYXJrKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgZGF0YSA9IHBhcnNlci5nZXRfZGF0YSgpCisgICAgYmxvYl9tYXJrc1ttYXJrXSA9IGRhdGEKKyAgICBwYXJzZXIubmV4dCgpCisKK2NsYXNzIEN1c3RvbVRyZWUoKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicmFuY2gsIHJldmlkLCBwYXJlbnRzLCBmaWxlcyk6CisgICAgICAgIGdsb2JhbCBmaWxlc19jYWNoZQorCisgICAgICAgIHNlbGYudXBkYXRlcyA9IHt9CisgICAgICAgIHNlbGYuYnJhbmNoID0gYnJhbmNoCisKKyAgICAgICAgZGVmIGNvcHlfdHJlZShyZXZpZCk6CisgICAgICAgICAgICBmaWxlcyA9IGZpbGVzX2NhY2hlW3JldmlkXSA9IHt9CisgICAgICAgICAgICBicmFuY2gubG9ja19yZWFkKCkKKyAgICAgICAgICAgIHRyZWUgPSBicmFuY2gucmVwb3NpdG9yeS5yZXZpc2lvbl90cmVlKHJldmlkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwYXRoLCBlbnRyeSBpbiB0cmVlLml0ZXJfZW50cmllc19ieV9kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgZmlsZXNbcGF0aF0gPSBbZW50cnkuZmlsZV9pZCwgTm9uZV0KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYnJhbmNoLnVubG9jaygpCisgICAgICAgICAgICByZXR1cm4gZmlsZXMKKworICAgICAgICBpZiBsZW4ocGFyZW50cykgPT0gMDoKKyAgICAgICAgICAgIHNlbGYuYmFzZV9pZCA9IGJ6cmxpYi5yZXZpc2lvbi5OVUxMX1JFVklTSU9OCisgICAgICAgICAgICBzZWxmLmJhc2VfZmlsZXMgPSB7fQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5iYXNlX2lkID0gcGFyZW50c1swXQorICAgICAgICAgICAgc2VsZi5iYXNlX2ZpbGVzID0gZmlsZXNfY2FjaGUuZ2V0KHNlbGYuYmFzZV9pZCwgTm9uZSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmJhc2VfZmlsZXM6CisgICAgICAgICAgICAgICAgc2VsZi5iYXNlX2ZpbGVzID0gY29weV90cmVlKHNlbGYuYmFzZV9pZCkKKworICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXNfY2FjaGVbcmV2aWRdID0gc2VsZi5iYXNlX2ZpbGVzLmNvcHkoKQorICAgICAgICBzZWxmLnJldl9maWxlcyA9IHt9CisKKyAgICAgICAgZm9yIHBhdGgsIGRhdGEgaW4gc2VsZi5maWxlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGZpZCwgbWFyayA9IGRhdGEKKyAgICAgICAgICAgIHNlbGYucmV2X2ZpbGVzW2ZpZF0gPSBbcGF0aCwgbWFya10KKworICAgICAgICBmb3IgcGF0aCwgZiBpbiBmaWxlcy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGZpZCwgbWFyayA9IHNlbGYuZmlsZXMuZ2V0KHBhdGgsIFtOb25lLCBOb25lXSkKKyAgICAgICAgICAgIGlmIG5vdCBmaWQ6CisgICAgICAgICAgICAgICAgZmlkID0gYnpybGliLmdlbmVyYXRlX2lkcy5nZW5fZmlsZV9pZChwYXRoKQorICAgICAgICAgICAgZlsncGF0aCddID0gcGF0aAorICAgICAgICAgICAgc2VsZi5yZXZfZmlsZXNbZmlkXSA9IFtwYXRoLCBtYXJrXQorICAgICAgICAgICAgc2VsZi51cGRhdGVzW2ZpZF0gPSBmCisKKyAgICBkZWYgbGFzdF9yZXZpc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYmFzZV9pZAorCisgICAgZGVmIGl0ZXJfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgY2hhbmdlcyA9IFtdCisKKyAgICAgICAgZGVmIGdldF9wYXJlbnQoZGlybmFtZSwgYmFzZW5hbWUpOgorICAgICAgICAgICAgcGFyZW50X2ZpZCwgbWFyayA9IHNlbGYuYmFzZV9maWxlcy5nZXQoZGlybmFtZSwgW05vbmUsIE5vbmVdKQorICAgICAgICAgICAgaWYgcGFyZW50X2ZpZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50X2ZpZAorICAgICAgICAgICAgcGFyZW50X2ZpZCwgbWFyayA9IHNlbGYuZmlsZXMuZ2V0KGRpcm5hbWUsIFtOb25lLCBOb25lXSkKKyAgICAgICAgICAgIGlmIHBhcmVudF9maWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudF9maWQKKyAgICAgICAgICAgIGlmIGJhc2VuYW1lID09ICcnOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBmaWQgPSBienJsaWIuZ2VuZXJhdGVfaWRzLmdlbl9maWxlX2lkKHBhdGgpCisgICAgICAgICAgICBhZGRfZW50cnkoZmlkLCBkaXJuYW1lLCAnZGlyZWN0b3J5JykKKyAgICAgICAgICAgIHJldHVybiBmaWQKKworICAgICAgICBkZWYgYWRkX2VudHJ5KGZpZCwgcGF0aCwga2luZCwgbW9kZSA9IE5vbmUpOgorICAgICAgICAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgICAgICAgICBwYXJlbnRfZmlkID0gZ2V0X3BhcmVudChkaXJuYW1lLCBiYXNlbmFtZSkKKworICAgICAgICAgICAgZXhlY3V0YWJsZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBtb2RlID09ICcxMDA3NTUnOgorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBUcnVlCisgICAgICAgICAgICBlbGlmIG1vZGUgPT0gJzEyMDAwMCc6CisgICAgICAgICAgICAgICAga2luZCA9ICdzeW1saW5rJworCisgICAgICAgICAgICBjaGFuZ2UgPSAoZmlkLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgcGF0aCksCisgICAgICAgICAgICAgICAgICAgIFRydWUsCisgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBwYXJlbnRfZmlkKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIGJhc2VuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIGtpbmQpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgZXhlY3V0YWJsZSkpCisgICAgICAgICAgICBzZWxmLmZpbGVzW3BhdGhdID0gW2NoYW5nZVswXSwgTm9uZV0KKyAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKGNoYW5nZSkKKworICAgICAgICBkZWYgdXBkYXRlX2VudHJ5KGZpZCwgcGF0aCwga2luZCwgbW9kZSA9IE5vbmUpOgorICAgICAgICAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgICAgICAgICBwYXJlbnRfZmlkID0gZ2V0X3BhcmVudChkaXJuYW1lLCBiYXNlbmFtZSkKKworICAgICAgICAgICAgZXhlY3V0YWJsZSA9IEZhbHNlCisgICAgICAgICAgICBpZiBtb2RlID09ICcxMDA3NTUnOgorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBUcnVlCisgICAgICAgICAgICBlbGlmIG1vZGUgPT0gJzEyMDAwMCc6CisgICAgICAgICAgICAgICAga2luZCA9ICdzeW1saW5rJworCisgICAgICAgICAgICBjaGFuZ2UgPSAoZmlkLAorICAgICAgICAgICAgICAgICAgICAocGF0aCwgcGF0aCksCisgICAgICAgICAgICAgICAgICAgIFRydWUsCisgICAgICAgICAgICAgICAgICAgIChUcnVlLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIHBhcmVudF9maWQpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgYmFzZW5hbWUpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwga2luZCksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBleGVjdXRhYmxlKSkKKyAgICAgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBbY2hhbmdlWzBdLCBOb25lXQorICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoY2hhbmdlKQorCisgICAgICAgIGRlZiByZW1vdmVfZW50cnkoZmlkLCBwYXRoLCBraW5kKToKKyAgICAgICAgICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAgICAgICAgICAgcGFyZW50X2ZpZCA9IGdldF9wYXJlbnQoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICBjaGFuZ2UgPSAoZmlkLAorICAgICAgICAgICAgICAgICAgICAocGF0aCwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgIFRydWUsCisgICAgICAgICAgICAgICAgICAgIChUcnVlLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAgIChwYXJlbnRfZmlkLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSkKKyAgICAgICAgICAgIGRlbCBzZWxmLmZpbGVzW3BhdGhdCisgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChjaGFuZ2UpCisKKyAgICAgICAgZm9yIGZpZCwgZiBpbiBzZWxmLnVwZGF0ZXMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBwYXRoID0gZlsncGF0aCddCisKKyAgICAgICAgICAgIGlmICdkZWxldGVkJyBpbiBmOgorICAgICAgICAgICAgICAgIHJlbW92ZV9lbnRyeShmaWQsIHBhdGgsICdmaWxlJykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYuYmFzZV9maWxlczoKKyAgICAgICAgICAgICAgICB1cGRhdGVfZW50cnkoZmlkLCBwYXRoLCAnZmlsZScsIGZbJ21vZGUnXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYWRkX2VudHJ5KGZpZCwgcGF0aCwgJ2ZpbGUnLCBmWydtb2RlJ10pCisKKyAgICAgICAgICAgIHNlbGYuZmlsZXNbcGF0aF1bMV0gPSBmWydtYXJrJ10KKyAgICAgICAgICAgIHNlbGYucmV2X2ZpbGVzW2ZpZF1bMV0gPSBmWydtYXJrJ10KKworICAgICAgICByZXR1cm4gY2hhbmdlcworCisgICAgZGVmIGdldF9jb250ZW50KHNlbGYsIGZpbGVfaWQpOgorICAgICAgICBwYXRoLCBtYXJrID0gc2VsZi5yZXZfZmlsZXNbZmlsZV9pZF0KKyAgICAgICAgaWYgbWFyazoKKyAgICAgICAgICAgIHJldHVybiBibG9iX21hcmtzW21hcmtdCisKKyAgICAgICAgIyBsYXN0IHJlc29ydAorICAgICAgICB0cmVlID0gc2VsZi5icmFuY2gucmVwb3NpdG9yeS5yZXZpc2lvbl90cmVlKHNlbGYuYmFzZV9pZCkKKyAgICAgICAgcmV0dXJuIHRyZWUuZ2V0X2ZpbGVfdGV4dChmaWxlX2lkKQorCisgICAgZGVmIGdldF9maWxlX3dpdGhfc3RhdChzZWxmLCBmaWxlX2lkLCBwYXRoPU5vbmUpOgorICAgICAgICBjb250ZW50ID0gc2VsZi5nZXRfY29udGVudChmaWxlX2lkKQorICAgICAgICByZXR1cm4gKFN0cmluZ0lPLlN0cmluZ0lPKGNvbnRlbnQpLCBOb25lKQorCisgICAgZGVmIGdldF9zeW1saW5rX3RhcmdldChzZWxmLCBmaWxlX2lkKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2NvbnRlbnQoZmlsZV9pZCkKKworICAgIGRlZiBpZDJwYXRoKHNlbGYsIGZpbGVfaWQpOgorICAgICAgICBwYXRoLCBtYXJrID0gc2VsZi5yZXZfZmlsZXNbZmlsZV9pZF0KKyAgICAgICAgcmV0dXJuIHBhdGgKKworZGVmIGNfc3R5bGVfdW5lc2NhcGUoc3RyaW5nKToKKyAgICBpZiBzdHJpbmdbMF0gPT0gc3RyaW5nWy0xXSA9PSAnIic6CisgICAgICAgIHJldHVybiBzdHJpbmcuZGVjb2RlKCdzdHJpbmctZXNjYXBlJylbMTotMV0KKyAgICByZXR1cm4gc3RyaW5nCisKK2RlZiBwYXJzZV9jb21taXQocGFyc2VyKToKKyAgICBnbG9iYWwgbWFya3MsIGJsb2JfbWFya3MsIHBhcnNlZF9yZWZzCisgICAgZ2xvYmFsIG1vZGUKKworICAgIHBhcmVudHMgPSBbXQorCisgICAgcmVmID0gcGFyc2VyWzFdCisgICAgcGFyc2VyLm5leHQoKQorCisgICAgaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvaGVhZHMvJyk6CisgICAgICAgIG5hbWUgPSByZWZbbGVuKCdyZWZzL2hlYWRzLycpOl0KKyAgICAgICAgYnJhbmNoID0gZ2V0X3JlbW90ZV9icmFuY2gobmFtZSkKKyAgICBlbHNlOgorICAgICAgICBkaWUoJ3Vua25vd24gcmVmJykKKworICAgIGNvbW1pdF9tYXJrID0gcGFyc2VyLmdldF9tYXJrKCkKKyAgICBwYXJzZXIubmV4dCgpCisgICAgYXV0aG9yID0gcGFyc2VyLmdldF9hdXRob3IoKQorICAgIHBhcnNlci5uZXh0KCkKKyAgICBjb21taXR0ZXIgPSBwYXJzZXIuZ2V0X2F1dGhvcigpCisgICAgcGFyc2VyLm5leHQoKQorICAgIGRhdGEgPSBwYXJzZXIuZ2V0X2RhdGEoKQorICAgIHBhcnNlci5uZXh0KCkKKyAgICBpZiBwYXJzZXIuY2hlY2soJ2Zyb20nKToKKyAgICAgICAgcGFyZW50cy5hcHBlbmQocGFyc2VyLmdldF9tYXJrKCkpCisgICAgICAgIHBhcnNlci5uZXh0KCkKKyAgICB3aGlsZSBwYXJzZXIuY2hlY2soJ21lcmdlJyk6CisgICAgICAgIHBhcmVudHMuYXBwZW5kKHBhcnNlci5nZXRfbWFyaygpKQorICAgICAgICBwYXJzZXIubmV4dCgpCisKKyAgICAjIGZhc3QtZXhwb3J0IGFkZHMgYW4gZXh0cmEgbmV3bGluZQorICAgIGlmIGRhdGFbLTFdID09ICdcbic6CisgICAgICAgIGRhdGEgPSBkYXRhWzotMV0KKworICAgIGZpbGVzID0ge30KKworICAgIGZvciBsaW5lIGluIHBhcnNlcjoKKyAgICAgICAgaWYgcGFyc2VyLmNoZWNrKCdNJyk6CisgICAgICAgICAgICB0LCBtLCBtYXJrX3JlZiwgcGF0aCA9IGxpbmUuc3BsaXQoJyAnLCAzKQorICAgICAgICAgICAgbWFyayA9IGludChtYXJrX3JlZlsxOl0pCisgICAgICAgICAgICBmID0geyAnbW9kZScgOiBtLCAnbWFyaycgOiBtYXJrIH0KKyAgICAgICAgZWxpZiBwYXJzZXIuY2hlY2soJ0QnKToKKyAgICAgICAgICAgIHQsIHBhdGggPSBsaW5lLnNwbGl0KCcgJywgMSkKKyAgICAgICAgICAgIGYgPSB7ICdkZWxldGVkJyA6IFRydWUgfQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGllKCdVbmtub3duIGZpbGUgY29tbWFuZDogJXMnICUgbGluZSkKKyAgICAgICAgcGF0aCA9IGNfc3R5bGVfdW5lc2NhcGUocGF0aCkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgIGZpbGVzW3BhdGhdID0gZgorCisgICAgY29tbWl0dGVyLCBkYXRlLCB0eiA9IGNvbW1pdHRlcgorICAgIHBhcmVudHMgPSBbbWFya190b19yZXYocCkgZm9yIHAgaW4gcGFyZW50c10KKyAgICByZXZpZCA9IGJ6cmxpYi5nZW5lcmF0ZV9pZHMuZ2VuX3JldmlzaW9uX2lkKGNvbW1pdHRlciwgZGF0ZSkKKyAgICBwcm9wcyA9IHt9CisgICAgcHJvcHNbJ2JyYW5jaC1uaWNrJ10gPSBicmFuY2gubmljaworCisgICAgbXRyZWUgPSBDdXN0b21UcmVlKGJyYW5jaCwgcmV2aWQsIHBhcmVudHMsIGZpbGVzKQorICAgIGNoYW5nZXMgPSBtdHJlZS5pdGVyX2NoYW5nZXMoKQorCisgICAgYnJhbmNoLmxvY2tfd3JpdGUoKQorICAgIHRyeToKKyAgICAgICAgYnVpbGRlciA9IGJyYW5jaC5nZXRfY29tbWl0X2J1aWxkZXIocGFyZW50cywgTm9uZSwgZGF0ZSwgdHosIGNvbW1pdHRlciwgcHJvcHMsIHJldmlkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsaXN0KGJ1aWxkZXIucmVjb3JkX2l0ZXJfY2hhbmdlcyhtdHJlZSwgbXRyZWUubGFzdF9yZXZpc2lvbigpLCBjaGFuZ2VzKSkKKyAgICAgICAgICAgIGJ1aWxkZXIuZmluaXNoX2ludmVudG9yeSgpCisgICAgICAgICAgICBidWlsZGVyLmNvbW1pdChkYXRhLmRlY29kZSgndXRmLTgnLCAncmVwbGFjZScpKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgYnVpbGRlci5hYm9ydCgpCisgICAgICAgICAgICByYWlzZQorICAgIGZpbmFsbHk6CisgICAgICAgIGJyYW5jaC51bmxvY2soKQorCisgICAgcGFyc2VkX3JlZnNbcmVmXSA9IHJldmlkCisgICAgbWFya3MubmV3X21hcmsocmV2aWQsIGNvbW1pdF9tYXJrKQorCitkZWYgcGFyc2VfcmVzZXQocGFyc2VyKToKKyAgICBnbG9iYWwgcGFyc2VkX3JlZnMKKworICAgIHJlZiA9IHBhcnNlclsxXQorICAgIHBhcnNlci5uZXh0KCkKKworICAgICMgdWdoCisgICAgaWYgcGFyc2VyLmNoZWNrKCdjb21taXQnKToKKyAgICAgICAgcGFyc2VfY29tbWl0KHBhcnNlcikKKyAgICAgICAgcmV0dXJuCisgICAgaWYgbm90IHBhcnNlci5jaGVjaygnZnJvbScpOgorICAgICAgICByZXR1cm4KKyAgICBmcm9tX21hcmsgPSBwYXJzZXIuZ2V0X21hcmsoKQorICAgIHBhcnNlci5uZXh0KCkKKworICAgIHBhcnNlZF9yZWZzW3JlZl0gPSBtYXJrX3RvX3Jldihmcm9tX21hcmspCisKK2RlZiBkb19leHBvcnQocGFyc2VyKToKKyAgICBnbG9iYWwgcGFyc2VkX3JlZnMsIGRpcm5hbWUKKworICAgIHBhcnNlci5uZXh0KCkKKworICAgIGZvciBsaW5lIGluIHBhcnNlci5lYWNoX2Jsb2NrKCdkb25lJyk6CisgICAgICAgIGlmIHBhcnNlci5jaGVjaygnYmxvYicpOgorICAgICAgICAgICAgcGFyc2VfYmxvYihwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdjb21taXQnKToKKyAgICAgICAgICAgIHBhcnNlX2NvbW1pdChwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdyZXNldCcpOgorICAgICAgICAgICAgcGFyc2VfcmVzZXQocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygndGFnJyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdmZWF0dXJlJyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaWUoJ3VuaGFuZGxlZCBleHBvcnQgY29tbWFuZDogJXMnICUgbGluZSkKKworICAgIGZvciByZWYsIHJldmlkIGluIHBhcnNlZF9yZWZzLml0ZXJpdGVtcygpOgorICAgICAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy8nKToKKyAgICAgICAgICAgIG5hbWUgPSByZWZbbGVuKCdyZWZzL2hlYWRzLycpOl0KKyAgICAgICAgICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG5hbWUpCisgICAgICAgICAgICBicmFuY2guZ2VuZXJhdGVfcmV2aXNpb25faGlzdG9yeShyZXZpZCwgbWFya3MuZ2V0X3RpcChuYW1lKSkKKworICAgICAgICAgICAgaWYgbmFtZSBpbiBwZWVyczoKKyAgICAgICAgICAgICAgICBwZWVyID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3BlbihwZWVyc1tuYW1lXSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBlZXIuYnpyZGlyLnB1c2hfYnJhbmNoKGJyYW5jaCwgcmV2aXNpb25faWQ9cmV2aWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuRGl2ZXJnZWRCcmFuY2hlczoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgImVycm9yICVzIG5vbi1mYXN0IGZvcndhcmQiICUgcmVmCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3dCA9IGJyYW5jaC5ienJkaXIub3Blbl93b3JraW5ndHJlZSgpCisgICAgICAgICAgICAgICAgd3QudXBkYXRlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLk5vV29ya2luZ1RyZWU6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL3RhZ3MvJyk6CisgICAgICAgICAgICAjIFRPRE86IGltcGxlbWVudCB0YWcgcHVzaAorICAgICAgICAgICAgcHJpbnQgImVycm9yICVzIHB1c2hpbmcgdGFncyBub3Qgc3VwcG9ydGVkIiAlIHJlZgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdHJhbnNwb3J0LWhlbHBlci9mYXN0LWV4cG9ydCBidWdzCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKworICAgIHByaW50CisKK2RlZiBkb19jYXBhYmlsaXRpZXMocGFyc2VyKToKKyAgICBnbG9iYWwgZGlybmFtZQorCisgICAgcHJpbnQgImltcG9ydCIKKyAgICBwcmludCAiZXhwb3J0IgorICAgIHByaW50ICJyZWZzcGVjIHJlZnMvaGVhZHMvKjolcy9oZWFkcy8qIiAlIHByZWZpeAorICAgIHByaW50ICJyZWZzcGVjIHJlZnMvdGFncy8qOiVzL3RhZ3MvKiIgJSBwcmVmaXgKKworICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ21hcmtzLWdpdCcpCisKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgcHJpbnQgIippbXBvcnQtbWFya3MgJXMiICUgcGF0aAorICAgIHByaW50ICIqZXhwb3J0LW1hcmtzICVzIiAlIHBhdGgKKworICAgIHByaW50CisKK2RlZiByZWZfaXNfdmFsaWQobmFtZSk6CisgICAgcmV0dXJuIG5vdCBUcnVlIGluIFtjIGluIG5hbWUgZm9yIGMgaW4gJ35eOiBcXCddCisKK2RlZiBkb19saXN0KHBhcnNlcik6CisgICAgZ2xvYmFsIHRhZ3MKKworICAgIG1hc3Rlcl9icmFuY2ggPSBOb25lCisKKyAgICBmb3IgbmFtZSBpbiBicmFuY2hlczoKKyAgICAgICAgaWYgbm90IG1hc3Rlcl9icmFuY2g6CisgICAgICAgICAgICBtYXN0ZXJfYnJhbmNoID0gbmFtZQorICAgICAgICBwcmludCAiPyByZWZzL2hlYWRzLyVzIiAlIG5hbWUKKworICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG1hc3Rlcl9icmFuY2gpCisgICAgYnJhbmNoLmxvY2tfcmVhZCgpCisgICAgZm9yIHRhZywgcmV2aWQgaW4gYnJhbmNoLnRhZ3MuZ2V0X3RhZ19kaWN0KCkuaXRlbXMoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnJhbmNoLnJldmlzaW9uX2lkX3RvX2RvdHRlZF9yZXZubyhyZXZpZCkKKyAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9TdWNoUmV2aXNpb246CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBub3QgcmVmX2lzX3ZhbGlkKHRhZyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwcmludCAiPyByZWZzL3RhZ3MvJXMiICUgdGFnCisgICAgICAgIHRhZ3NbdGFnXSA9IHJldmlkCisgICAgYnJhbmNoLnVubG9jaygpCisKKyAgICBwcmludCAiQHJlZnMvaGVhZHMvJXMgSEVBRCIgJSBtYXN0ZXJfYnJhbmNoCisgICAgcHJpbnQKKworZGVmIGNsb25lKHBhdGgsIHJlbW90ZV9icmFuY2gpOgorICAgIHRyeToKKyAgICAgICAgYmRpciA9IGJ6cmxpYi5ienJkaXIuQnpyRGlyLmNyZWF0ZShwYXRoKQorICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLkFscmVhZHlDb250cm9sRGlyRXJyb3I6CisgICAgICAgIGJkaXIgPSBienJsaWIuYnpyZGlyLkJ6ckRpci5vcGVuKHBhdGgpCisgICAgcmVwbyA9IGJkaXIuZmluZF9yZXBvc2l0b3J5KCkKKyAgICByZXBvLmZldGNoKHJlbW90ZV9icmFuY2gucmVwb3NpdG9yeSkKKyAgICByZXR1cm4gcmVtb3RlX2JyYW5jaC5zcHJvdXQoYmRpciwgcmVwb3NpdG9yeT1yZXBvKQorCitkZWYgZ2V0X3JlbW90ZV9icmFuY2gobmFtZSk6CisgICAgZ2xvYmFsIGRpcm5hbWUsIGJyYW5jaGVzCisKKyAgICByZW1vdGVfYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3BlbihicmFuY2hlc1tuYW1lXSkKKyAgICBpZiBpc2luc3RhbmNlKHJlbW90ZV9icmFuY2gudXNlcl90cmFuc3BvcnQsIGJ6cmxpYi50cmFuc3BvcnQubG9jYWwuTG9jYWxUcmFuc3BvcnQpOgorICAgICAgICByZXR1cm4gcmVtb3RlX2JyYW5jaAorCisgICAgYnJhbmNoX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ2Nsb25lJywgbmFtZSkKKworICAgIHRyeToKKyAgICAgICAgYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3BlbihicmFuY2hfcGF0aCkKKyAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob3RCcmFuY2hFcnJvcjoKKyAgICAgICAgIyBjbG9uZQorICAgICAgICBicmFuY2ggPSBjbG9uZShicmFuY2hfcGF0aCwgcmVtb3RlX2JyYW5jaCkKKyAgICBlbHNlOgorICAgICAgICAjIHB1bGwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnJhbmNoLnB1bGwocmVtb3RlX2JyYW5jaCwgb3ZlcndyaXRlPVRydWUpCisgICAgICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLkRpdmVyZ2VkQnJhbmNoZXM6CisgICAgICAgICAgICAjIHVzZSByZW1vdGUgYnJhbmNoIGZvciBub3cKKyAgICAgICAgICAgIHJldHVybiByZW1vdGVfYnJhbmNoCisKKyAgICByZXR1cm4gYnJhbmNoCisKK2RlZiBmaW5kX2JyYW5jaGVzKHJlcG8pOgorICAgIHRyYW5zcG9ydCA9IHJlcG8uYnpyZGlyLnJvb3RfdHJhbnNwb3J0CisKKyAgICBmb3IgZm4gaW4gdHJhbnNwb3J0Lml0ZXJfZmlsZXNfcmVjdXJzaXZlKCk6CisgICAgICAgIGlmIG5vdCBmbi5lbmRzd2l0aCgnLmJ6ci9icmFuY2gtZm9ybWF0Jyk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIG5hbWUgPSBzdWJkaXIgPSBmbls6LWxlbignLy5ienIvYnJhbmNoLWZvcm1hdCcpXQorICAgICAgICBuYW1lID0gbmFtZSBpZiBuYW1lICE9ICcnIGVsc2UgJ21hc3RlcicKKyAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgnLycsICcrJykKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBjdXIgPSB0cmFuc3BvcnQuY2xvbmUoc3ViZGlyKQorICAgICAgICAgICAgYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3Blbl9mcm9tX3RyYW5zcG9ydChjdXIpCisgICAgICAgIGV4Y2VwdCBienJsaWIuZXJyb3JzLk5vdEJyYW5jaEVycm9yOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIGJyYW5jaC5iYXNlCisKK2RlZiBnZXRfcmVwbyh1cmwsIGFsaWFzKToKKyAgICBnbG9iYWwgZGlybmFtZSwgcGVlciwgYnJhbmNoZXMKKworICAgIG5vcm1hbF91cmwgPSBienJsaWIudXJsdXRpbHMubm9ybWFsaXplX3VybCh1cmwpCisgICAgb3JpZ2luID0gYnpybGliLmJ6cmRpci5CenJEaXIub3Blbih1cmwpCisgICAgaXNfbG9jYWwgPSBpc2luc3RhbmNlKG9yaWdpbi50cmFuc3BvcnQsIGJ6cmxpYi50cmFuc3BvcnQubG9jYWwuTG9jYWxUcmFuc3BvcnQpCisKKyAgICBzaGFyZWRfcGF0aCA9IG9zLnBhdGguam9pbihnaXRkaXIsICdienInKQorICAgIHRyeToKKyAgICAgICAgc2hhcmVkX2RpciA9IGJ6cmxpYi5ienJkaXIuQnpyRGlyLm9wZW4oc2hhcmVkX3BhdGgpCisgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm90QnJhbmNoRXJyb3I6CisgICAgICAgIHNoYXJlZF9kaXIgPSBienJsaWIuYnpyZGlyLkJ6ckRpci5jcmVhdGUoc2hhcmVkX3BhdGgpCisgICAgdHJ5OgorICAgICAgICBzaGFyZWRfcmVwbyA9IHNoYXJlZF9kaXIub3Blbl9yZXBvc2l0b3J5KCkKKyAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob1JlcG9zaXRvcnlQcmVzZW50OgorICAgICAgICBzaGFyZWRfcmVwbyA9IHNoYXJlZF9kaXIuY3JlYXRlX3JlcG9zaXRvcnkoc2hhcmVkPVRydWUpCisKKyAgICBpZiBub3QgaXNfbG9jYWw6CisgICAgICAgIGNsb25lX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ2Nsb25lJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNsb25lX3BhdGgpOgorICAgICAgICAgICAgb3MubWtkaXIoY2xvbmVfcGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgY2hlY2sgYW5kIHJlbW92ZSBvbGQgb3JnYW5pemF0aW9uCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYmRpciA9IGJ6cmxpYi5ienJkaXIuQnpyRGlyLm9wZW4oY2xvbmVfcGF0aCkKKyAgICAgICAgICAgICAgICBiZGlyLmRlc3Ryb3lfcmVwb3NpdG9yeSgpCisgICAgICAgICAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob3RCcmFuY2hFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob1JlcG9zaXRvcnlQcmVzZW50OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIHdhbnRlZCA9IGdldF9jb25maWcoJ3JlbW90ZS1ienIuYnJhbmNoZXMnKS5yc3RyaXAoKS5zcGxpdCgnLCAnKQorICAgICMgc3R1cGlkIHB5dGhvbgorICAgIHdhbnRlZCA9IFtlIGZvciBlIGluIHdhbnRlZCBpZiBlXQorCisgICAgaWYgbm90IHdhbnRlZDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVwbyA9IG9yaWdpbi5vcGVuX3JlcG9zaXRvcnkoKQorICAgICAgICAgICAgaWYgbm90IHJlcG8udXNlcl90cmFuc3BvcnQubGlzdGFibGUoKToKKyAgICAgICAgICAgICAgICAjIHRoaXMgcmVwb3NpdG9yeSBpcyBub3QgdXNhYmxlIGZvciB1cworICAgICAgICAgICAgICAgIHJhaXNlIGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudChyZXBvLmJ6cmRpcikKKyAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKKyAgICAgICAgICAgIHdhbnRlZCA9IFsnbWFzdGVyJ10KKworICAgIGlmIHdhbnRlZDoKKyAgICAgICAgZGVmIGxpc3Rfd2FudGVkKHVybCwgd2FudGVkKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHdhbnRlZDoKKyAgICAgICAgICAgICAgICBzdWJkaXIgPSBuYW1lIGlmIG5hbWUgIT0gJ21hc3RlcicgZWxzZSAnJworICAgICAgICAgICAgICAgIHlpZWxkIG5hbWUsIGJ6cmxpYi51cmx1dGlscy5qb2luKHVybCwgc3ViZGlyKQorCisgICAgICAgIGJyYW5jaF9saXN0ID0gbGlzdF93YW50ZWQodXJsLCB3YW50ZWQpCisgICAgZWxzZToKKyAgICAgICAgYnJhbmNoX2xpc3QgPSBmaW5kX2JyYW5jaGVzKHJlcG8pCisKKyAgICBmb3IgbmFtZSwgdXJsIGluIGJyYW5jaF9saXN0OgorICAgICAgICBpZiBub3QgaXNfbG9jYWw6CisgICAgICAgICAgICBwZWVyc1tuYW1lXSA9IHVybAorICAgICAgICBicmFuY2hlc1tuYW1lXSA9IHVybAorCisgICAgcmV0dXJuIG9yaWdpbgorCitkZWYgZml4X3BhdGgoYWxpYXMsIG9yaWdfdXJsKToKKyAgICB1cmwgPSB1cmxwYXJzZS51cmxwYXJzZShvcmlnX3VybCwgJ2ZpbGUnKQorICAgIGlmIHVybC5zY2hlbWUgIT0gJ2ZpbGUnIG9yIG9zLnBhdGguaXNhYnModXJsLnBhdGgpOgorICAgICAgICByZXR1cm4KKyAgICBhYnNfdXJsID0gdXJscGFyc2UudXJsam9pbigiJXMvIiAlIG9zLmdldGN3ZCgpLCBvcmlnX3VybCkKKyAgICBjbWQgPSBbJ2dpdCcsICdjb25maWcnLCAncmVtb3RlLiVzLnVybCcgJSBhbGlhcywgImJ6cjo6JXMiICUgYWJzX3VybF0KKyAgICBzdWJwcm9jZXNzLmNhbGwoY21kKQorCitkZWYgbWFpbihhcmdzKToKKyAgICBnbG9iYWwgbWFya3MsIHByZWZpeCwgZ2l0ZGlyLCBkaXJuYW1lCisgICAgZ2xvYmFsIHRhZ3MsIGZpbGVub2RlcworICAgIGdsb2JhbCBibG9iX21hcmtzCisgICAgZ2xvYmFsIHBhcnNlZF9yZWZzCisgICAgZ2xvYmFsIGZpbGVzX2NhY2hlCisgICAgZ2xvYmFsIGlzX3RtcAorICAgIGdsb2JhbCBicmFuY2hlcywgcGVlcnMKKworICAgIGFsaWFzID0gYXJnc1sxXQorICAgIHVybCA9IGFyZ3NbMl0KKworICAgIHRhZ3MgPSB7fQorICAgIGZpbGVub2RlcyA9IHt9CisgICAgYmxvYl9tYXJrcyA9IHt9CisgICAgcGFyc2VkX3JlZnMgPSB7fQorICAgIGZpbGVzX2NhY2hlID0ge30KKyAgICBtYXJrcyA9IE5vbmUKKyAgICBicmFuY2hlcyA9IHt9CisgICAgcGVlcnMgPSB7fQorCisgICAgaWYgYWxpYXNbNTpdID09IHVybDoKKyAgICAgICAgaXNfdG1wID0gVHJ1ZQorICAgICAgICBhbGlhcyA9IGhhc2hsaWIuc2hhMShhbGlhcykuaGV4ZGlnZXN0KCkKKyAgICBlbHNlOgorICAgICAgICBpc190bXAgPSBGYWxzZQorCisgICAgcHJlZml4ID0gJ3JlZnMvYnpyLyVzJyAlIGFsaWFzCisgICAgZ2l0ZGlyID0gb3MuZW52aXJvblsnR0lUX0RJUiddCisgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihnaXRkaXIsICdienInLCBhbGlhcykKKworICAgIGlmIG5vdCBpc190bXA6CisgICAgICAgIGZpeF9wYXRoKGFsaWFzLCB1cmwpCisKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6CisgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCisKKyAgICBpZiBoYXNhdHRyKGJ6cmxpYi51aS51aV9mYWN0b3J5LCAnYmVfcXVpZXQnKToKKyAgICAgICAgYnpybGliLnVpLnVpX2ZhY3RvcnkuYmVfcXVpZXQoVHJ1ZSkKKworICAgIHJlcG8gPSBnZXRfcmVwbyh1cmwsIGFsaWFzKQorCisgICAgbWFya3NfcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnbWFya3MtaW50JykKKyAgICBtYXJrcyA9IE1hcmtzKG1hcmtzX3BhdGgpCisKKyAgICBwYXJzZXIgPSBQYXJzZXIocmVwbykKKyAgICBmb3IgbGluZSBpbiBwYXJzZXI6CisgICAgICAgIGlmIHBhcnNlci5jaGVjaygnY2FwYWJpbGl0aWVzJyk6CisgICAgICAgICAgICBkb19jYXBhYmlsaXRpZXMocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnbGlzdCcpOgorICAgICAgICAgICAgZG9fbGlzdChwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdpbXBvcnQnKToKKyAgICAgICAgICAgIGRvX2ltcG9ydChwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdleHBvcnQnKToKKyAgICAgICAgICAgIGRvX2V4cG9ydChwYXJzZXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaWUoJ3VuaGFuZGxlZCBjb21tYW5kOiAlcycgJSBsaW5lKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworZGVmIGJ5ZSgpOgorICAgIGlmIG5vdCBtYXJrczoKKyAgICAgICAgcmV0dXJuCisgICAgaWYgbm90IGlzX3RtcDoKKyAgICAgICAgbWFya3Muc3RvcmUoKQorICAgIGVsc2U6CisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZSkKKworYXRleGl0LnJlZ2lzdGVyKGJ5ZSkKK3N5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWhnIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWhnCmluZGV4IGM3MDA2MDAuLjAxOTRjNjcgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1oZworKysgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtaGcKQEAgLTgsOCArOCwxMSBAQAogIyBKdXN0IGNvcHkgdG8geW91ciB+L2Jpbiwgb3IgYW55d2hlcmUgaW4geW91ciAkUEFUSC4KICMgVGhlbiB5b3UgY2FuIGNsb25lIHdpdGg6CiAjIGdpdCBjbG9uZSBoZzo6L3BhdGgvdG8vbWVyY3VyaWFsL3JlcG8vCisjCisjIEZvciByZW1vdGUgcmVwb3NpdG9yaWVzIGEgbG9jYWwgY2xvbmUgaXMgc3RvcmVkIGluCisjICIkR0lUX0RJUi9oZy9vcmlnaW4vY2xvbmUvLmhnLyIuCiAKLWZyb20gbWVyY3VyaWFsIGltcG9ydCBoZywgdWksIGJvb2ttYXJrcywgY29udGV4dCwgdXRpbCwgZW5jb2RpbmcKK2Zyb20gbWVyY3VyaWFsIGltcG9ydCBoZywgdWksIGJvb2ttYXJrcywgY29udGV4dCwgZW5jb2RpbmcsIG5vZGUsIGVycm9yLCBleHRlbnNpb25zLCBkaXNjb3ZlcnksIHV0aWwKIAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkBAIC0xOCw4ICsyMSwxNyBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB1cmxsaWIKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCB1cmxwYXJzZSwgaGFzaGxpYgogCiAjCisjIElmIHlvdSBhcmUgbm90IGluIGhnLWdpdC1jb21wYXQgbW9kZSBhbmQgd2FudCB0byBkaXNhYmxlIHRoZSB0cmFja2luZyBvZgorIyBuYW1lZCBicmFuY2hlczoKKyMgZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcudHJhY2stYnJhbmNoZXMgZmFsc2UKKyMKKyMgSWYgeW91IHdhbnQgdGhlIGVxdWl2YWxlbnQgb2YgaGcncyBjbG9uZS9wdWxsLS1pbnNlY3VyZSBvcHRpb246CisjIGdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLmluc2VjdXJlIHRydWUKKyMKICMgSWYgeW91IHdhbnQgdG8gc3dpdGNoIHRvIGhnLWdpdCBjb21wYXRpYmlsaXR5IG1vZGU6CiAjIGdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLmhnLWdpdC1jb21wYXQgdHJ1ZQogIwpAQCAtMzYsOSArNDgsMTIgQEAKIAogTkFNRV9SRSA9IHJlLmNvbXBpbGUoJ14oW148Pl0rKScpCiBBVVRIT1JfUkUgPSByZS5jb21waWxlKCdeKFtePD5dKz8pPyA/PChbXjw+XSopPiQnKQorRU1BSUxfUkUgPSByZS5jb21waWxlKCdeKFtePD5dK1teIFxcXHQ8Pl0pP1xcYig/OlsgXFx0PD5dKj8pXFxiKFteIFxcdDw+XStAW14gXFx0PD5dKyknKQogQVVUSE9SX0hHX1JFID0gcmUuY29tcGlsZSgnXiguKj8pID88KC4qPykoPzo+KC4rKT8pPyQnKQogUkFXX0FVVEhPUl9SRSA9IHJlLmNvbXBpbGUoJ14oXHcrKSAoPzooLispPyApPzwoLiopPiAoXGQrKSAoWystXVxkKyknKQogCitWRVJTSU9OID0gMgorCiBkZWYgZGllKG1zZywgKmFyZ3MpOgogICAgIHN5cy5zdGRlcnIud3JpdGUoJ0VSUk9SOiAlc1xuJyAlIChtc2cgJSBhcmdzKSkKICAgICBzeXMuZXhpdCgxKQpAQCAtNTMsMjUgKzY4LDY0IEBACiAgICAgcmV0dXJuICclKzAzZCUwMmQnICUgKC10eiAvIDM2MDAsIC10eiAlIDM2MDAgLyA2MCkKIAogZGVmIGhnbW9kZShtb2RlKToKLSAgICBtID0geyAnMDEwMDc1NSc6ICd4JywgJzAxMjAwMDAnOiAnbCcgfQorICAgIG0gPSB7ICcxMDA3NTUnOiAneCcsICcxMjAwMDAnOiAnbCcgfQogICAgIHJldHVybiBtLmdldChtb2RlLCAnJykKIAorZGVmIGhnaGV4KG4pOgorICAgIHJldHVybiBub2RlLmhleChuKQorCitkZWYgaGdiaW4obik6CisgICAgcmV0dXJuIG5vZGUuYmluKG4pCisKK2RlZiBoZ3JlZihyZWYpOgorICAgIHJldHVybiByZWYucmVwbGFjZSgnX19fJywgJyAnKQorCitkZWYgZ2l0cmVmKHJlZik6CisgICAgcmV0dXJuIHJlZi5yZXBsYWNlKCcgJywgJ19fXycpCisKK2RlZiBjaGVja192ZXJzaW9uKCpjaGVjayk6CisgICAgaWYgbm90IGhnX3ZlcnNpb246CisgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIGhnX3ZlcnNpb24gPj0gY2hlY2sKKwogZGVmIGdldF9jb25maWcoY29uZmlnKToKICAgICBjbWQgPSBbJ2dpdCcsICdjb25maWcnLCAnLS1nZXQnLCBjb25maWddCiAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQogICAgIG91dHB1dCwgXyA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQogICAgIHJldHVybiBvdXRwdXQKIAorZGVmIGdldF9jb25maWdfYm9vbChjb25maWcsIGRlZmF1bHQ9RmFsc2UpOgorICAgIHZhbHVlID0gZ2V0X2NvbmZpZyhjb25maWcpLnJzdHJpcCgnXG4nKQorICAgIGlmIHZhbHVlID09ICJ0cnVlIjoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBlbGlmIHZhbHVlID09ICJmYWxzZSI6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBkZWZhdWx0CisKIGNsYXNzIE1hcmtzOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCByZXBvKToKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBzZWxmLnJlcG8gPSByZXBvCisgICAgICAgIHNlbGYuY2xlYXIoKQorICAgICAgICBzZWxmLmxvYWQoKQorCisgICAgICAgIGlmIHNlbGYudmVyc2lvbiA8IFZFUlNJT046CisgICAgICAgICAgICBpZiBzZWxmLnZlcnNpb24gPT0gMToKKyAgICAgICAgICAgICAgICBzZWxmLnVwZ3JhZGVfb25lKCkKKworICAgICAgICAgICAgIyB1cGdyYWRlZD8KKyAgICAgICAgICAgIGlmIHNlbGYudmVyc2lvbiA8IFZFUlNJT046CisgICAgICAgICAgICAgICAgc2VsZi5jbGVhcigpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uID0gVkVSU0lPTgorCisgICAgZGVmIGNsZWFyKHNlbGYpOgogICAgICAgICBzZWxmLnRpcHMgPSB7fQogICAgICAgICBzZWxmLm1hcmtzID0ge30KICAgICAgICAgc2VsZi5yZXZfbWFya3MgPSB7fQogICAgICAgICBzZWxmLmxhc3RfbWFyayA9IDAKLQotICAgICAgICBzZWxmLmxvYWQoKQorICAgICAgICBzZWxmLnZlcnNpb24gPSAwCiAKICAgICBkZWYgbG9hZChzZWxmKToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucGF0aCk6CkBAIC04MiwxMiArMTM2LDIxIEBACiAgICAgICAgIHNlbGYudGlwcyA9IHRtcFsndGlwcyddCiAgICAgICAgIHNlbGYubWFya3MgPSB0bXBbJ21hcmtzJ10KICAgICAgICAgc2VsZi5sYXN0X21hcmsgPSB0bXBbJ2xhc3QtbWFyayddCisgICAgICAgIHNlbGYudmVyc2lvbiA9IHRtcC5nZXQoJ3ZlcnNpb24nLCAxKQogCiAgICAgICAgIGZvciByZXYsIG1hcmsgaW4gc2VsZi5tYXJrcy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYucmV2X21hcmtzW21hcmtdID0gaW50KHJldikKKyAgICAgICAgICAgIHNlbGYucmV2X21hcmtzW21hcmtdID0gcmV2CisKKyAgICBkZWYgdXBncmFkZV9vbmUoc2VsZik6CisgICAgICAgIGRlZiBnZXRfaWQocmV2KToKKyAgICAgICAgICAgIHJldHVybiBoZ2hleChzZWxmLnJlcG8uY2hhbmdlbG9nLm5vZGUoaW50KHJldikpKQorICAgICAgICBzZWxmLnRpcHMgPSBkaWN0KChuYW1lLCBnZXRfaWQocmV2KSkgZm9yIG5hbWUsIHJldiBpbiBzZWxmLnRpcHMuaXRlcml0ZW1zKCkpCisgICAgICAgIHNlbGYubWFya3MgPSBkaWN0KChnZXRfaWQocmV2KSwgbWFyaykgZm9yIHJldiwgbWFyayBpbiBzZWxmLm1hcmtzLml0ZXJpdGVtcygpKQorICAgICAgICBzZWxmLnJldl9tYXJrcyA9IGRpY3QoKG1hcmssIGdldF9pZChyZXYpKSBmb3IgbWFyaywgcmV2IGluIHNlbGYucmV2X21hcmtzLml0ZXJpdGVtcygpKQorICAgICAgICBzZWxmLnZlcnNpb24gPSAyCiAKICAgICBkZWYgZGljdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHsgJ3RpcHMnOiBzZWxmLnRpcHMsICdtYXJrcyc6IHNlbGYubWFya3MsICdsYXN0LW1hcmsnIDogc2VsZi5sYXN0X21hcmsgfQorICAgICAgICByZXR1cm4geyAndGlwcyc6IHNlbGYudGlwcywgJ21hcmtzJzogc2VsZi5tYXJrcywgJ2xhc3QtbWFyaycgOiBzZWxmLmxhc3RfbWFyaywgJ3ZlcnNpb24nIDogc2VsZi52ZXJzaW9uIH0KIAogICAgIGRlZiBzdG9yZShzZWxmKToKICAgICAgICAganNvbi5kdW1wKHNlbGYuZGljdCgpLCBvcGVuKHNlbGYucGF0aCwgJ3cnKSkKQEAgLTk2LDI2ICsxNTksMzAgQEAKICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmRpY3QoKSkKIAogICAgIGRlZiBmcm9tX3JldihzZWxmLCByZXYpOgotICAgICAgICByZXR1cm4gc2VsZi5tYXJrc1tzdHIocmV2KV0KKyAgICAgICAgcmV0dXJuIHNlbGYubWFya3NbcmV2XQogCiAgICAgZGVmIHRvX3JldihzZWxmLCBtYXJrKToKLSAgICAgICAgcmV0dXJuIHNlbGYucmV2X21hcmtzW21hcmtdCisgICAgICAgIHJldHVybiBzdHIoc2VsZi5yZXZfbWFya3NbbWFya10pCisKKyAgICBkZWYgbmV4dF9tYXJrKHNlbGYpOgorICAgICAgICBzZWxmLmxhc3RfbWFyayArPSAxCisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfbWFyawogCiAgICAgZGVmIGdldF9tYXJrKHNlbGYsIHJldik6CiAgICAgICAgIHNlbGYubGFzdF9tYXJrICs9IDEKLSAgICAgICAgc2VsZi5tYXJrc1tzdHIocmV2KV0gPSBzZWxmLmxhc3RfbWFyaworICAgICAgICBzZWxmLm1hcmtzW3Jldl0gPSBzZWxmLmxhc3RfbWFyawogICAgICAgICByZXR1cm4gc2VsZi5sYXN0X21hcmsKIAogICAgIGRlZiBuZXdfbWFyayhzZWxmLCByZXYsIG1hcmspOgotICAgICAgICBzZWxmLm1hcmtzW3N0cihyZXYpXSA9IG1hcmsKKyAgICAgICAgc2VsZi5tYXJrc1tyZXZdID0gbWFyawogICAgICAgICBzZWxmLnJldl9tYXJrc1ttYXJrXSA9IHJldgogICAgICAgICBzZWxmLmxhc3RfbWFyayA9IG1hcmsKIAogICAgIGRlZiBpc19tYXJrZWQoc2VsZiwgcmV2KToKLSAgICAgICAgcmV0dXJuIHNlbGYubWFya3MuaGFzX2tleShzdHIocmV2KSkKKyAgICAgICAgcmV0dXJuIHJldiBpbiBzZWxmLm1hcmtzCiAKICAgICBkZWYgZ2V0X3RpcChzZWxmLCBicmFuY2gpOgotICAgICAgICByZXR1cm4gc2VsZi50aXBzLmdldChicmFuY2gsIDApCisgICAgICAgIHJldHVybiBzdHIoc2VsZi50aXBzW2JyYW5jaF0pCiAKICAgICBkZWYgc2V0X3RpcChzZWxmLCBicmFuY2gsIHRpcCk6CiAgICAgICAgIHNlbGYudGlwc1ticmFuY2hdID0gdGlwCkBAIC0xODgsMTkgKzI1NSw0MyBAQAogICAgICAgICB0eiA9ICgodHogLyAxMDApICogMzYwMCkgKyAoKHR6ICUgMTAwKSAqIDYwKQogICAgICAgICByZXR1cm4gKHVzZXIsIGludChkYXRlKSwgLXR6KQogCi1kZWYgZXhwb3J0X2ZpbGUoZmMpOgotICAgIGQgPSBmYy5kYXRhKCkKLSAgICBwcmludCAiTSAlcyBpbmxpbmUgJXMiICUgKGdpdG1vZGUoZmMuZmxhZ3MoKSksIGZjLnBhdGgoKSkKLSAgICBwcmludCAiZGF0YSAlZCIgJSBsZW4oZCkKLSAgICBwcmludCBkCitkZWYgZml4X2ZpbGVfcGF0aChwYXRoKToKKyAgICBpZiBub3Qgb3MucGF0aC5pc2FicyhwYXRoKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKyAgICByZXR1cm4gb3MucGF0aC5yZWxwYXRoKHBhdGgsICcvJykKKworZGVmIGV4cG9ydF9maWxlcyhmaWxlcyk6CisgICAgZ2xvYmFsIG1hcmtzLCBmaWxlbm9kZXMKKworICAgIGZpbmFsID0gW10KKyAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgZmlkID0gbm9kZS5oZXgoZi5maWxlbm9kZSgpKQorCisgICAgICAgIGlmIGZpZCBpbiBmaWxlbm9kZXM6CisgICAgICAgICAgICBtYXJrID0gZmlsZW5vZGVzW2ZpZF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1hcmsgPSBtYXJrcy5uZXh0X21hcmsoKQorICAgICAgICAgICAgZmlsZW5vZGVzW2ZpZF0gPSBtYXJrCisgICAgICAgICAgICBkID0gZi5kYXRhKCkKKworICAgICAgICAgICAgcHJpbnQgImJsb2IiCisgICAgICAgICAgICBwcmludCAibWFyayA6JXUiICUgbWFyaworICAgICAgICAgICAgcHJpbnQgImRhdGEgJWQiICUgbGVuKGQpCisgICAgICAgICAgICBwcmludCBkCisKKyAgICAgICAgcGF0aCA9IGZpeF9maWxlX3BhdGgoZi5wYXRoKCkpCisgICAgICAgIGZpbmFsLmFwcGVuZCgoZ2l0bW9kZShmLmZsYWdzKCkpLCBtYXJrLCBwYXRoKSkKKworICAgIHJldHVybiBmaW5hbAogCiBkZWYgZ2V0X2ZpbGVjaGFuZ2VzKHJlcG8sIGN0eCwgcGFyZW50KToKICAgICBtb2RpZmllZCA9IHNldCgpCiAgICAgYWRkZWQgPSBzZXQoKQogICAgIHJlbW92ZWQgPSBzZXQoKQogCisgICAgIyBsb2FkIGVhcmxpZXN0IG1hbmlmZXN0IGZpcnN0IGZvciBjYWNoaW5nIHJlYXNvbnMKKyAgICBwcmV2ID0gcGFyZW50Lm1hbmlmZXN0KCkuY29weSgpCiAgICAgY3VyID0gY3R4Lm1hbmlmZXN0KCkKLSAgICBwcmV2ID0gcmVwb1twYXJlbnRdLm1hbmlmZXN0KCkuY29weSgpCiAKICAgICBmb3IgZm4gaW4gY3VyOgogICAgICAgICBpZiBmbiBpbiBwcmV2OgpAQCAtMjIxLDkgKzMxMiwxNCBAQAogICAgICAgICBuYW1lID0gbS5ncm91cCgxKQogICAgICAgICBtYWlsID0gbS5ncm91cCgyKS5zdHJpcCgpCiAgICAgZWxzZToKLSAgICAgICAgbSA9IE5BTUVfUkUubWF0Y2godXNlcikKKyAgICAgICAgbSA9IEVNQUlMX1JFLm1hdGNoKHVzZXIpCiAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICBuYW1lID0gbS5ncm91cCgxKS5zdHJpcCgpCisgICAgICAgICAgICBuYW1lID0gbS5ncm91cCgxKQorICAgICAgICAgICAgbWFpbCA9IG0uZ3JvdXAoMikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG0gPSBOQU1FX1JFLm1hdGNoKHVzZXIpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIG5hbWUgPSBtLmdyb3VwKDEpLnN0cmlwKCkKICAgICByZXR1cm4gKG5hbWUsIG1haWwpCiAKIGRlZiBmaXh1cF91c2VyX2hnKHVzZXIpOgpAQCAtMjYyLDI5ICszNTgsNjYgQEAKIAogICAgIHJldHVybiAnJXMgPCVzPicgJSAobmFtZSwgbWFpbCkKIAorZGVmIHVwZGF0ZWJvb2ttYXJrcyhyZXBvLCBwZWVyKToKKyAgICByZW1vdGVtYXJrcyA9IHBlZXIubGlzdGtleXMoJ2Jvb2ttYXJrcycpCisgICAgbG9jYWxtYXJrcyA9IHJlcG8uX2Jvb2ttYXJrcworCisgICAgaWYgbm90IHJlbW90ZW1hcmtzOgorICAgICAgICByZXR1cm4KKworICAgIGZvciBrLCB2IGluIHJlbW90ZW1hcmtzLml0ZXJpdGVtcygpOgorICAgICAgICBsb2NhbG1hcmtzW2tdID0gaGdiaW4odikKKworICAgIGlmIGhhc2F0dHIobG9jYWxtYXJrcywgJ3dyaXRlJyk6CisgICAgICAgIGxvY2FsbWFya3Mud3JpdGUoKQorICAgIGVsc2U6CisgICAgICAgIGJvb2ttYXJrcy53cml0ZShyZXBvKQorCiBkZWYgZ2V0X3JlcG8odXJsLCBhbGlhcyk6CiAgICAgZ2xvYmFsIGRpcm5hbWUsIHBlZXIKIAogICAgIG15dWkgPSB1aS51aSgpCiAgICAgbXl1aS5zZXRjb25maWcoJ3VpJywgJ2ludGVyYWN0aXZlJywgJ29mZicpCisgICAgbXl1aS5mb3V0ID0gc3lzLnN0ZGVycgogCi0gICAgaWYgaGcuaXNsb2NhbCh1cmwpOgorICAgIGlmIGdldF9jb25maWdfYm9vbCgncmVtb3RlLWhnLmluc2VjdXJlJyk6CisgICAgICAgIG15dWkuc2V0Y29uZmlnKCd3ZWInLCAnY2FjZXJ0cycsICcnKQorCisgICAgZXh0ZW5zaW9ucy5sb2FkYWxsKG15dWkpCisKKyAgICBpZiBoZy5pc2xvY2FsKHVybCkgYW5kIG5vdCBvcy5lbnZpcm9uLmdldCgnR0lUX1JFTU9URV9IR19URVNUX1JFTU9URScpOgogICAgICAgICByZXBvID0gaGcucmVwb3NpdG9yeShteXVpLCB1cmwpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCiAgICAgZWxzZToKKyAgICAgICAgc2hhcmVkX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2l0ZGlyLCAnaGcnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2hhcmVkX3BhdGgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhnLmNsb25lKG15dWksIHt9LCB1cmwsIHNoYXJlZF9wYXRoLCB1cGRhdGU9RmFsc2UsIHB1bGw9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBkaWUoJ1JlcG9zaXRvcnkgZXJyb3InKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCisKICAgICAgICAgbG9jYWxfcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnY2xvbmUnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobG9jYWxfcGF0aCk6Ci0gICAgICAgICAgICBwZWVyLCBkc3RwZWVyID0gaGcuY2xvbmUobXl1aSwge30sIHVybCwgbG9jYWxfcGF0aCwgdXBkYXRlPUZhbHNlLCBwdWxsPVRydWUpCi0gICAgICAgICAgICByZXBvID0gZHN0cGVlci5sb2NhbCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXBvID0gaGcucmVwb3NpdG9yeShteXVpLCBsb2NhbF9wYXRoKQorICAgICAgICAgICAgaGcuc2hhcmUobXl1aSwgc2hhcmVkX3BhdGgsIGxvY2FsX3BhdGgsIHVwZGF0ZT1GYWxzZSkKKworICAgICAgICByZXBvID0gaGcucmVwb3NpdG9yeShteXVpLCBsb2NhbF9wYXRoKQorICAgICAgICB0cnk6CiAgICAgICAgICAgICBwZWVyID0gaGcucGVlcihteXVpLCB7fSwgdXJsKQotICAgICAgICAgICAgcmVwby5wdWxsKHBlZXIsIGhlYWRzPU5vbmUsIGZvcmNlPVRydWUpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGRpZSgnUmVwb3NpdG9yeSBlcnJvcicpCisgICAgICAgIHJlcG8ucHVsbChwZWVyLCBoZWFkcz1Ob25lLCBmb3JjZT1UcnVlKQorCisgICAgICAgIHVwZGF0ZWJvb2ttYXJrcyhyZXBvLCBwZWVyKQogCiAgICAgcmV0dXJuIHJlcG8KIAogZGVmIHJldl90b19tYXJrKHJldik6CiAgICAgZ2xvYmFsIG1hcmtzCi0gICAgcmV0dXJuIG1hcmtzLmZyb21fcmV2KHJldikKKyAgICByZXR1cm4gbWFya3MuZnJvbV9yZXYocmV2LmhleCgpKQogCiBkZWYgbWFya190b19yZXYobWFyayk6CiAgICAgZ2xvYmFsIG1hcmtzCkBAIC0yOTQsMjEgKzQyNywyNCBAQAogICAgIGdsb2JhbCBwcmVmaXgsIG1hcmtzLCBtb2RlCiAKICAgICBlbmFtZSA9ICclcy8lcycgJSAoa2luZCwgbmFtZSkKLSAgICB0aXAgPSBtYXJrcy5nZXRfdGlwKGVuYW1lKQorICAgIHRyeToKKyAgICAgICAgdGlwID0gbWFya3MuZ2V0X3RpcChlbmFtZSkKKyAgICAgICAgdGlwID0gcmVwb1t0aXBdLnJldigpCisgICAgZXhjZXB0OgorICAgICAgICB0aXAgPSAwCiAKLSAgICAjIG1lcmN1cmlhbCB0YWtlcyB0b28gbXVjaCB0aW1lIGNoZWNraW5nIHRoaXMKLSAgICBpZiB0aXAgYW5kIHRpcCA9PSBoZWFkLnJldigpOgotICAgICAgICAjIG5vdGhpbmcgdG8gZG8KLSAgICAgICAgcmV0dXJuCiAgICAgcmV2cyA9IHhyYW5nZSh0aXAsIGhlYWQucmV2KCkgKyAxKQotICAgIGNvdW50ID0gMAotCi0gICAgcmV2cyA9IFtyZXYgZm9yIHJldiBpbiByZXZzIGlmIG5vdCBtYXJrcy5pc19tYXJrZWQocmV2KV0KKyAgICB0b3RhbCA9IGxlbihyZXZzKQogCiAgICAgZm9yIHJldiBpbiByZXZzOgogCiAgICAgICAgIGMgPSByZXBvW3Jldl0KLSAgICAgICAgKG1hbmlmZXN0LCB1c2VyLCAodGltZSwgdHopLCBmaWxlcywgZGVzYywgZXh0cmEpID0gcmVwby5jaGFuZ2Vsb2cucmVhZChjLm5vZGUoKSkKKyAgICAgICAgbm9kZSA9IGMubm9kZSgpCisKKyAgICAgICAgaWYgbWFya3MuaXNfbWFya2VkKGMuaGV4KCkpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAobWFuaWZlc3QsIHVzZXIsICh0aW1lLCB0eiksIGZpbGVzLCBkZXNjLCBleHRyYSkgPSByZXBvLmNoYW5nZWxvZy5yZWFkKG5vZGUpCiAgICAgICAgIHJldl9icmFuY2ggPSBleHRyYVsnYnJhbmNoJ10KIAogICAgICAgICBhdXRob3IgPSAiJXMgJWQgJXMiICUgKGZpeHVwX3VzZXIodXNlciksIHRpbWUsIGdpdHR6KHR6KSkKQEAgLTMxOCw3ICs0NTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29tbWl0dGVyID0gYXV0aG9yCiAKLSAgICAgICAgcGFyZW50cyA9IFtwIGZvciBwIGluIHJlcG8uY2hhbmdlbG9nLnBhcmVudHJldnMocmV2KSBpZiBwID49IDBdCisgICAgICAgIHBhcmVudHMgPSBbcmVwb1twXSBmb3IgcCBpbiByZXBvLmNoYW5nZWxvZy5wYXJlbnRyZXZzKHJldikgaWYgcCA+PSAwXQogCiAgICAgICAgIGlmIGxlbihwYXJlbnRzKSA9PSAwOgogICAgICAgICAgICAgbW9kaWZpZWQgPSBjLm1hbmlmZXN0KCkua2V5cygpCkBAIC0zMjYsNiArNDYyLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1vZGlmaWVkLCByZW1vdmVkID0gZ2V0X2ZpbGVjaGFuZ2VzKHJlcG8sIGMsIHBhcmVudHNbMF0pCiAKKyAgICAgICAgZGVzYyArPSAnXG4nCisKICAgICAgICAgaWYgbW9kZSA9PSAnaGcnOgogICAgICAgICAgICAgZXh0cmFfbXNnID0gJycKIApAQCAtMzQ5LDE1ICs0ODcsMTYgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBleHRyYV9tc2cgKz0gImV4dHJhIDogJXMgOiAlc1xuIiAlIChrZXksIHVybGxpYi5xdW90ZSh2YWx1ZSkpCiAKLSAgICAgICAgICAgIGRlc2MgKz0gJ1xuJwogICAgICAgICAgICAgaWYgZXh0cmFfbXNnOgogICAgICAgICAgICAgICAgIGRlc2MgKz0gJ1xuLS1IRy0tXG4nICsgZXh0cmFfbXNnCiAKICAgICAgICAgaWYgbGVuKHBhcmVudHMpID09IDAgYW5kIHJldjoKICAgICAgICAgICAgIHByaW50ICdyZXNldCAlcy8lcycgJSAocHJlZml4LCBlbmFtZSkKIAorICAgICAgICBtb2RpZmllZF9maW5hbCA9IGV4cG9ydF9maWxlcyhjLmZpbGVjdHgoZikgZm9yIGYgaW4gbW9kaWZpZWQpCisKICAgICAgICAgcHJpbnQgImNvbW1pdCAlcy8lcyIgJSAocHJlZml4LCBlbmFtZSkKLSAgICAgICAgcHJpbnQgIm1hcmsgOiVkIiAlIChtYXJrcy5nZXRfbWFyayhyZXYpKQorICAgICAgICBwcmludCAibWFyayA6JWQiICUgKG1hcmtzLmdldF9tYXJrKGMuaGV4KCkpKQogICAgICAgICBwcmludCAiYXV0aG9yICVzIiAlIChhdXRob3IpCiAgICAgICAgIHByaW50ICJjb21taXR0ZXIgJXMiICUgKGNvbW1pdHRlcikKICAgICAgICAgcHJpbnQgImRhdGEgJWQiICUgKGxlbihkZXNjKSkKQEAgLTM2OCwyOSArNTA3LDI4IEBACiAgICAgICAgICAgICBpZiBsZW4ocGFyZW50cykgPiAxOgogICAgICAgICAgICAgICAgIHByaW50ICJtZXJnZSA6JXMiICUgKHJldl90b19tYXJrKHBhcmVudHNbMV0pKQogCi0gICAgICAgIGZvciBmIGluIG1vZGlmaWVkOgotICAgICAgICAgICAgZXhwb3J0X2ZpbGUoYy5maWxlY3R4KGYpKQogICAgICAgICBmb3IgZiBpbiByZW1vdmVkOgotICAgICAgICAgICAgcHJpbnQgIkQgJXMiICUgKGYpCisgICAgICAgICAgICBwcmludCAiRCAlcyIgJSAoZml4X2ZpbGVfcGF0aChmKSkKKyAgICAgICAgZm9yIGYgaW4gbW9kaWZpZWRfZmluYWw6CisgICAgICAgICAgICBwcmludCAiTSAlcyA6JXUgJXMiICUgZgogICAgICAgICBwcmludAogCi0gICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgaWYgKGNvdW50ICUgMTAwID09IDApOgotICAgICAgICAgICAgcHJpbnQgInByb2dyZXNzIHJldmlzaW9uICVkICclcycgKCVkLyVkKSIgJSAocmV2LCBuYW1lLCBjb3VudCwgbGVuKHJldnMpKQotICAgICAgICAgICAgcHJpbnQgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCisgICAgICAgIHByb2dyZXNzID0gKHJldiAtIHRpcCkKKyAgICAgICAgaWYgKHByb2dyZXNzICUgMTAwID09IDApOgorICAgICAgICAgICAgcHJpbnQgInByb2dyZXNzIHJldmlzaW9uICVkICclcycgKCVkLyVkKSIgJSAocmV2LCBuYW1lLCBwcm9ncmVzcywgdG90YWwpCiAKICAgICAjIG1ha2Ugc3VyZSB0aGUgcmVmIGlzIHVwZGF0ZWQKICAgICBwcmludCAicmVzZXQgJXMvJXMiICUgKHByZWZpeCwgZW5hbWUpCi0gICAgcHJpbnQgImZyb20gOiV1IiAlIHJldl90b19tYXJrKHJldikKKyAgICBwcmludCAiZnJvbSA6JXUiICUgcmV2X3RvX21hcmsoaGVhZCkKICAgICBwcmludAogCi0gICAgbWFya3Muc2V0X3RpcChlbmFtZSwgcmV2KQorICAgIG1hcmtzLnNldF90aXAoZW5hbWUsIGhlYWQuaGV4KCkpCiAKIGRlZiBleHBvcnRfdGFnKHJlcG8sIHRhZyk6Ci0gICAgZXhwb3J0X3JlZihyZXBvLCB0YWcsICd0YWdzJywgcmVwb1t0YWddKQorICAgIGV4cG9ydF9yZWYocmVwbywgdGFnLCAndGFncycsIHJlcG9baGdyZWYodGFnKV0pCiAKIGRlZiBleHBvcnRfYm9va21hcmsocmVwbywgYm1hcmspOgotICAgIGhlYWQgPSBibWFya3NbYm1hcmtdCisgICAgaGVhZCA9IGJtYXJrc1toZ3JlZihibWFyayldCiAgICAgZXhwb3J0X3JlZihyZXBvLCBibWFyaywgJ2Jvb2ttYXJrcycsIGhlYWQpCiAKIGRlZiBleHBvcnRfYnJhbmNoKHJlcG8sIGJyYW5jaCk6CkBAIC00MTYsNzMgKzU1NCw3MiBAQAogICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgogICAgICAgICBwcmludCAiKmltcG9ydC1tYXJrcyAlcyIgJSBwYXRoCiAgICAgcHJpbnQgIipleHBvcnQtbWFya3MgJXMiICUgcGF0aAorICAgIHByaW50ICJvcHRpb24iCiAKICAgICBwcmludAogCitkZWYgYnJhbmNoX3RpcChicmFuY2gpOgorICAgIHJldHVybiBicmFuY2hlc1ticmFuY2hdWy0xXQorCiBkZWYgZ2V0X2JyYW5jaF90aXAocmVwbywgYnJhbmNoKToKICAgICBnbG9iYWwgYnJhbmNoZXMKIAotICAgIGhlYWRzID0gYnJhbmNoZXMuZ2V0KGJyYW5jaCwgTm9uZSkKKyAgICBoZWFkcyA9IGJyYW5jaGVzLmdldChoZ3JlZihicmFuY2gpLCBOb25lKQogICAgIGlmIG5vdCBoZWFkczoKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICMgdmVyaWZ5IHRoZXJlJ3Mgb25seSBvbmUgaGVhZAogICAgIGlmIChsZW4oaGVhZHMpID4gMSk6CiAgICAgICAgIHdhcm4oIkJyYW5jaCAnJXMnIGhhcyBtb3JlIHRoYW4gb25lIGhlYWQsIGNvbnNpZGVyIG1lcmdpbmciICUgYnJhbmNoKQotICAgICAgICAjIG9sZGVyIHZlcnNpb25zIG9mIG1lcmN1cmlhbCBkb24ndCBoYXZlIHRoaXMKLSAgICAgICAgaWYgaGFzYXR0cihyZXBvLCAiYnJhbmNodGlwIik6Ci0gICAgICAgICAgICByZXR1cm4gcmVwby5icmFuY2h0aXAoYnJhbmNoKQorICAgICAgICByZXR1cm4gYnJhbmNoX3RpcChoZ3JlZihicmFuY2gpKQogCiAgICAgcmV0dXJuIGhlYWRzWzBdCiAKIGRlZiBsaXN0X2hlYWQocmVwbywgY3VyKToKLSAgICBnbG9iYWwgZ19oZWFkLCBibWFya3MKKyAgICBnbG9iYWwgZ19oZWFkLCBibWFya3MsIGZha2VfYm1hcmsKIAotICAgIGhlYWQgPSBib29rbWFya3MucmVhZGN1cnJlbnQocmVwbykKLSAgICBpZiBoZWFkOgotICAgICAgICBub2RlID0gcmVwb1toZWFkXQotICAgIGVsc2U6Ci0gICAgICAgICMgZmFrZSBib29rbWFyayBmcm9tIGN1cnJlbnQgYnJhbmNoCi0gICAgICAgIGhlYWQgPSBjdXIKLSAgICAgICAgbm9kZSA9IHJlcG9bJy4nXQotICAgICAgICBpZiBub3Qgbm9kZToKLSAgICAgICAgICAgIG5vZGUgPSByZXBvWyd0aXAnXQotICAgICAgICBpZiBub3Qgbm9kZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBoZWFkID09ICdkZWZhdWx0JzoKLSAgICAgICAgICAgIGhlYWQgPSAnbWFzdGVyJwotICAgICAgICBibWFya3NbaGVhZF0gPSBub2RlCisgICAgaWYgJ2RlZmF1bHQnIG5vdCBpbiBicmFuY2hlczoKKyAgICAgICAgIyBlbXB0eSByZXBvCisgICAgICAgIHJldHVybgogCisgICAgbm9kZSA9IHJlcG9bYnJhbmNoX3RpcCgnZGVmYXVsdCcpXQorICAgIGhlYWQgPSAnbWFzdGVyJyBpZiBub3QgJ21hc3RlcicgaW4gYm1hcmtzIGVsc2UgJ2RlZmF1bHQnCisgICAgZmFrZV9ibWFyayA9IGhlYWQKKyAgICBibWFya3NbaGVhZF0gPSBub2RlCisKKyAgICBoZWFkID0gZ2l0cmVmKGhlYWQpCiAgICAgcHJpbnQgIkByZWZzL2hlYWRzLyVzIEhFQUQiICUgaGVhZAogICAgIGdfaGVhZCA9IChoZWFkLCBub2RlKQogCiBkZWYgZG9fbGlzdChwYXJzZXIpOgotICAgIGdsb2JhbCBicmFuY2hlcywgYm1hcmtzLCBtb2RlLCB0cmFja19icmFuY2hlcworICAgIGdsb2JhbCBicmFuY2hlcywgYm1hcmtzLCB0cmFja19icmFuY2hlcwogCiAgICAgcmVwbyA9IHBhcnNlci5yZXBvCiAgICAgZm9yIGJtYXJrLCBub2RlIGluIGJvb2ttYXJrcy5saXN0Ym9va21hcmtzKHJlcG8pLml0ZXJpdGVtcygpOgogICAgICAgICBibWFya3NbYm1hcmtdID0gcmVwb1tub2RlXQogCiAgICAgY3VyID0gcmVwby5kaXJzdGF0ZS5icmFuY2goKQorICAgIG9yaWcgPSBwZWVyIGlmIHBlZXIgZWxzZSByZXBvCisKKyAgICBmb3IgYnJhbmNoLCBoZWFkcyBpbiBvcmlnLmJyYW5jaG1hcCgpLml0ZXJpdGVtcygpOgorICAgICAgICAjIG9ubHkgb3BlbiBoZWFkcworICAgICAgICBoZWFkcyA9IFtoIGZvciBoIGluIGhlYWRzIGlmICdjbG9zZScgbm90IGluIHJlcG8uY2hhbmdlbG9nLnJlYWQoaClbNV1dCisgICAgICAgIGlmIGhlYWRzOgorICAgICAgICAgICAgYnJhbmNoZXNbYnJhbmNoXSA9IGhlYWRzCiAKICAgICBsaXN0X2hlYWQocmVwbywgY3VyKQogCiAgICAgaWYgdHJhY2tfYnJhbmNoZXM6Ci0gICAgICAgIGZvciBicmFuY2ggaW4gcmVwby5icmFuY2htYXAoKToKLSAgICAgICAgICAgIGhlYWRzID0gcmVwby5icmFuY2hoZWFkcyhicmFuY2gpCi0gICAgICAgICAgICBpZiBsZW4oaGVhZHMpOgotICAgICAgICAgICAgICAgIGJyYW5jaGVzW2JyYW5jaF0gPSBoZWFkcwotCiAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6Ci0gICAgICAgICAgICBwcmludCAiPyByZWZzL2hlYWRzL2JyYW5jaGVzLyVzIiAlIGJyYW5jaAorICAgICAgICAgICAgcHJpbnQgIj8gcmVmcy9oZWFkcy9icmFuY2hlcy8lcyIgJSBnaXRyZWYoYnJhbmNoKQogCiAgICAgZm9yIGJtYXJrIGluIGJtYXJrczoKLSAgICAgICAgcHJpbnQgIj8gcmVmcy9oZWFkcy8lcyIgJSBibWFyaworICAgICAgICBwcmludCAiPyByZWZzL2hlYWRzLyVzIiAlIGdpdHJlZihibWFyaykKIAogICAgIGZvciB0YWcsIG5vZGUgaW4gcmVwby50YWdzbGlzdCgpOgogICAgICAgICBpZiB0YWcgPT0gJ3RpcCc6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBwcmludCAiPyByZWZzL3RhZ3MvJXMiICUgdGFnCisgICAgICAgIHByaW50ICI/IHJlZnMvdGFncy8lcyIgJSBnaXRyZWYodGFnKQogCiAgICAgcHJpbnQKIApAQCAtNDk1LDYgKzYzMiw3IEBACiAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CiAgICAgICAgIHByaW50ICJmZWF0dXJlIGltcG9ydC1tYXJrcz0lcyIgJSBwYXRoCiAgICAgcHJpbnQgImZlYXR1cmUgZXhwb3J0LW1hcmtzPSVzIiAlIHBhdGgKKyAgICBwcmludCAiZmVhdHVyZSBmb3JjZSIKICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAogICAgIHRtcCA9IGVuY29kaW5nLmVuY29kaW5nCkBAIC01MzEsNyArNjY5LDYgQEAKICAgICBkYXRhID0gcGFyc2VyLmdldF9kYXRhKCkKICAgICBibG9iX21hcmtzW21hcmtdID0gZGF0YQogICAgIHBhcnNlci5uZXh0KCkKLSAgICByZXR1cm4KIAogZGVmIGdldF9tZXJnZV9maWxlcyhyZXBvLCBwMSwgcDIsIGZpbGVzKToKICAgICBmb3IgZSBpbiByZXBvW3AxXS5maWxlcygpOgpAQCAtNTQyLDcgKzY3OSw3IEBACiAgICAgICAgICAgICBmaWxlc1tlXSA9IGYKIAogZGVmIHBhcnNlX2NvbW1pdChwYXJzZXIpOgotICAgIGdsb2JhbCBtYXJrcywgYmxvYl9tYXJrcywgYm1hcmtzLCBwYXJzZWRfcmVmcworICAgIGdsb2JhbCBtYXJrcywgYmxvYl9tYXJrcywgcGFyc2VkX3JlZnMKICAgICBnbG9iYWwgbW9kZQogCiAgICAgZnJvbV9tYXJrID0gbWVyZ2VfbWFyayA9IE5vbmUKQEAgLTU2Nyw2ICs3MDQsMTAgQEAKICAgICAgICAgaWYgcGFyc2VyLmNoZWNrKCdtZXJnZScpOgogICAgICAgICAgICAgZGllKCdvY3RvcHVzIG1lcmdlcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQnKQogCisgICAgIyBmYXN0LWV4cG9ydCBhZGRzIGFuIGV4dHJhIG5ld2xpbmUKKyAgICBpZiBkYXRhWy0xXSA9PSAnXG4nOgorICAgICAgICBkYXRhID0gZGF0YVs6LTFdCisKICAgICBmaWxlcyA9IHt9CiAKICAgICBmb3IgbGluZSBpbiBwYXJzZXI6CkBAIC01NzUsMTIgKzcxNiwxNyBAQAogICAgICAgICAgICAgbWFyayA9IGludChtYXJrX3JlZlsxOl0pCiAgICAgICAgICAgICBmID0geyAnbW9kZScgOiBoZ21vZGUobSksICdkYXRhJyA6IGJsb2JfbWFya3NbbWFya10gfQogICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnRCcpOgotICAgICAgICAgICAgdCwgcGF0aCA9IGxpbmUuc3BsaXQoJyAnKQorICAgICAgICAgICAgdCwgcGF0aCA9IGxpbmUuc3BsaXQoJyAnLCAxKQogICAgICAgICAgICAgZiA9IHsgJ2RlbGV0ZWQnIDogVHJ1ZSB9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWUoJ1Vua25vd24gZmlsZSBjb21tYW5kOiAlcycgJSBsaW5lKQogICAgICAgICBmaWxlc1twYXRoXSA9IGYKIAorICAgICMgb25seSBleHBvcnQgdGhlIGNvbW1pdHMgaWYgd2UgYXJlIG9uIGFuIGludGVybmFsIHByb3h5IHJlcG8KKyAgICBpZiBkcnlfcnVuIGFuZCBub3QgcGVlcjoKKyAgICAgICAgcGFyc2VkX3JlZnNbcmVmXSA9IE5vbmUKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgZ2V0ZmlsZWN0eChyZXBvLCBtZW1jdHgsIGYpOgogICAgICAgICBvZiA9IGZpbGVzW2ZdCiAgICAgICAgIGlmICdkZWxldGVkJyBpbiBvZjoKQEAgLTYwMiwxNCArNzQ4LDE0IEBACiAgICAgICAgIGV4dHJhWydjb21taXR0ZXInXSA9ICIlcyAldSAldSIgJSBjb21taXR0ZXIKIAogICAgIGlmIGZyb21fbWFyazoKLSAgICAgICAgcDEgPSByZXBvLmNoYW5nZWxvZy5ub2RlKG1hcmtfdG9fcmV2KGZyb21fbWFyaykpCisgICAgICAgIHAxID0gbWFya190b19yZXYoZnJvbV9tYXJrKQogICAgIGVsc2U6Ci0gICAgICAgIHAxID0gJ1wwJyAqIDIwCisgICAgICAgIHAxID0gJzAnICogNDAKIAogICAgIGlmIG1lcmdlX21hcms6Ci0gICAgICAgIHAyID0gcmVwby5jaGFuZ2Vsb2cubm9kZShtYXJrX3RvX3JldihtZXJnZV9tYXJrKSkKKyAgICAgICAgcDIgPSBtYXJrX3RvX3JldihtZXJnZV9tYXJrKQogICAgIGVsc2U6Ci0gICAgICAgIHAyID0gJ1wwJyAqIDIwCisgICAgICAgIHAyID0gJzAnICogNDAKIAogICAgICMKICAgICAjIElmIGZpbGVzIGNoYW5nZWQgZnJvbSBhbnkgb2YgdGhlIHBhcmVudHMsIGhnIHdhbnRzIHRvIGtub3csIGJ1dCBpbiBnaXQgaWYKQEAgLTYxOCwxMSArNzY0LDE2IEBACiAgICAgaWYgbWVyZ2VfbWFyazoKICAgICAgICAgZ2V0X21lcmdlX2ZpbGVzKHJlcG8sIHAxLCBwMiwgZmlsZXMpCiAKKyAgICAjIENoZWNrIGlmIHRoZSByZWYgaXMgc3VwcG9zZWQgdG8gYmUgYSBuYW1lZCBicmFuY2gKKyAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy9icmFuY2hlcy8nKToKKyAgICAgICAgYnJhbmNoID0gcmVmW2xlbigncmVmcy9oZWFkcy9icmFuY2hlcy8nKTpdCisgICAgICAgIGV4dHJhWydicmFuY2gnXSA9IGhncmVmKGJyYW5jaCkKKwogICAgIGlmIG1vZGUgPT0gJ2hnJzoKICAgICAgICAgaSA9IGRhdGEuZmluZCgnXG4tLUhHLS1cbicpCiAgICAgICAgIGlmIGkgPj0gMDoKICAgICAgICAgICAgIHRtcCA9IGRhdGFbaSArIGxlbignXG4tLUhHLS1cbicpOl0uc3RyaXAoKQotICAgICAgICAgICAgZm9yIGssIHYgaW4gW2Uuc3BsaXQoJyA6ICcpIGZvciBlIGluIHRtcC5zcGxpdCgnXG4nKV06CisgICAgICAgICAgICBmb3IgaywgdiBpbiBbZS5zcGxpdCgnIDogJywgMSkgZm9yIGUgaW4gdG1wLnNwbGl0KCdcbicpXToKICAgICAgICAgICAgICAgICBpZiBrID09ICdyZW5hbWUnOgogICAgICAgICAgICAgICAgICAgICBvbGQsIG5ldyA9IHYuc3BsaXQoJyA9PiAnLCAxKQogICAgICAgICAgICAgICAgICAgICBmaWxlc1tuZXddWydyZW5hbWUnXSA9IG9sZApAQCAtNjQwLDE3ICs3OTEsMTYgQEAKICAgICB0bXAgPSBlbmNvZGluZy5lbmNvZGluZwogICAgIGVuY29kaW5nLmVuY29kaW5nID0gJ3V0Zi04JwogCi0gICAgbm9kZSA9IHJlcG8uY29tbWl0Y3R4KGN0eCkKKyAgICBub2RlID0gaGdoZXgocmVwby5jb21taXRjdHgoY3R4KSkKIAogICAgIGVuY29kaW5nLmVuY29kaW5nID0gdG1wCiAKLSAgICByZXYgPSByZXBvW25vZGVdLnJldigpCi0KICAgICBwYXJzZWRfcmVmc1tyZWZdID0gbm9kZQotCi0gICAgbWFya3MubmV3X21hcmsocmV2LCBjb21taXRfbWFyaykKKyAgICBtYXJrcy5uZXdfbWFyayhub2RlLCBjb21taXRfbWFyaykKIAogZGVmIHBhcnNlX3Jlc2V0KHBhcnNlcik6CisgICAgZ2xvYmFsIHBhcnNlZF9yZWZzCisKICAgICByZWYgPSBwYXJzZXJbMV0KICAgICBwYXJzZXIubmV4dCgpCiAgICAgIyB1Z2gKQEAgLTY2Miw4ICs4MTIsMTEgQEAKICAgICBmcm9tX21hcmsgPSBwYXJzZXIuZ2V0X21hcmsoKQogICAgIHBhcnNlci5uZXh0KCkKIAotICAgIG5vZGUgPSBwYXJzZXIucmVwby5jaGFuZ2Vsb2cubm9kZShtYXJrX3RvX3Jldihmcm9tX21hcmspKQotICAgIHBhcnNlZF9yZWZzW3JlZl0gPSBub2RlCisgICAgdHJ5OgorICAgICAgICByZXYgPSBtYXJrX3RvX3Jldihmcm9tX21hcmspCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICByZXYgPSBOb25lCisgICAgcGFyc2VkX3JlZnNbcmVmXSA9IHJldgogCiBkZWYgcGFyc2VfdGFnKHBhcnNlcik6CiAgICAgbmFtZSA9IHBhcnNlclsxXQpAQCAtNjc1LDExICs4MjgsMTc2IEBACiAgICAgZGF0YSA9IHBhcnNlci5nZXRfZGF0YSgpCiAgICAgcGFyc2VyLm5leHQoKQogCi0gICAgIyBub3RoaW5nIHRvIGRvCisgICAgcGFyc2VkX3RhZ3NbbmFtZV0gPSAodGFnZ2VyLCBkYXRhKQorCitkZWYgd3JpdGVfdGFnKHJlcG8sIHRhZywgbm9kZSwgbXNnLCBhdXRob3IpOgorICAgIGJyYW5jaCA9IHJlcG9bbm9kZV0uYnJhbmNoKCkKKyAgICB0aXAgPSBicmFuY2hfdGlwKGJyYW5jaCkKKyAgICB0aXAgPSByZXBvW3RpcF0KKworICAgIGRlZiBnZXRmaWxlY3R4KHJlcG8sIG1lbWN0eCwgZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZjdHggPSB0aXAuZmlsZWN0eChmKQorICAgICAgICAgICAgZGF0YSA9IGZjdHguZGF0YSgpCisgICAgICAgIGV4Y2VwdCBlcnJvci5NYW5pZmVzdExvb2t1cEVycm9yOgorICAgICAgICAgICAgZGF0YSA9ICIiCisgICAgICAgIGNvbnRlbnQgPSBkYXRhICsgIiVzICVzXG4iICUgKG5vZGUsIHRhZykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQubWVtZmlsZWN0eChmLCBjb250ZW50LCBGYWxzZSwgRmFsc2UsIE5vbmUpCisKKyAgICBwMSA9IHRpcC5oZXgoKQorICAgIHAyID0gJzAnICogNDAKKyAgICBpZiBhdXRob3I6CisgICAgICAgIHVzZXIsIGRhdGUsIHR6ID0gYXV0aG9yCisgICAgICAgIGRhdGVfdHogPSAoZGF0ZSwgdHopCisgICAgZWxzZToKKyAgICAgICAgY21kID0gWydnaXQnLCAndmFyJywgJ0dJVF9DT01NSVRURVJfSURFTlQnXQorICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dHB1dCwgXyA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICBtID0gcmUubWF0Y2goJ14uKiA8Lio+Jywgb3V0cHV0KQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgdXNlciA9IG0uZ3JvdXAoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVzZXIgPSByZXBvLnVpLnVzZXJuYW1lKCkKKyAgICAgICAgZGF0ZV90eiA9IE5vbmUKKworICAgIGN0eCA9IGNvbnRleHQubWVtY3R4KHJlcG8sIChwMSwgcDIpLCBtc2csCisgICAgICAgICAgICBbJy5oZ3RhZ3MnXSwgZ2V0ZmlsZWN0eCwKKyAgICAgICAgICAgIHVzZXIsIGRhdGVfdHosIHsnYnJhbmNoJyA6IGJyYW5jaH0pCisKKyAgICB0bXAgPSBlbmNvZGluZy5lbmNvZGluZworICAgIGVuY29kaW5nLmVuY29kaW5nID0gJ3V0Zi04JworCisgICAgdGFnbm9kZSA9IHJlcG8uY29tbWl0Y3R4KGN0eCkKKworICAgIGVuY29kaW5nLmVuY29kaW5nID0gdG1wCisKKyAgICByZXR1cm4gKHRhZ25vZGUsIGJyYW5jaCkKKworZGVmIGNoZWNraGVhZHNfYm1hcmsocmVwbywgcmVmLCBjdHgpOgorICAgIGJtYXJrID0gcmVmW2xlbigncmVmcy9oZWFkcy8nKTpdCisgICAgaWYgbm90IGJtYXJrIGluIGJtYXJrczoKKyAgICAgICAgIyBuZXcgYm1hcmsKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGN0eF9vbGQgPSBibWFya3NbYm1hcmtdCisgICAgY3R4X25ldyA9IGN0eAorICAgIGlmIG5vdCByZXBvLmNoYW5nZWxvZy5kZXNjZW5kYW50KGN0eF9vbGQucmV2KCksIGN0eF9uZXcucmV2KCkpOgorICAgICAgICBpZiBmb3JjZV9wdXNoOgorICAgICAgICAgICAgcHJpbnQgIm9rICVzIGZvcmNlZCB1cGRhdGUiICUgcmVmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMgbm9uLWZhc3QgZm9yd2FyZCIgJSByZWYKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgcmV0dXJuIFRydWUKKworZGVmIGNoZWNraGVhZHMocmVwbywgcmVtb3RlLCBwX3JldnMpOgorCisgICAgcmVtb3RlbWFwID0gcmVtb3RlLmJyYW5jaG1hcCgpCisgICAgaWYgbm90IHJlbW90ZW1hcDoKKyAgICAgICAgIyBlbXB0eSByZXBvCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBuZXcgPSB7fQorICAgIHJldCA9IFRydWUKKworICAgIGZvciBub2RlLCByZWYgaW4gcF9yZXZzLml0ZXJpdGVtcygpOgorICAgICAgICBjdHggPSByZXBvW25vZGVdCisgICAgICAgIGJyYW5jaCA9IGN0eC5icmFuY2goKQorICAgICAgICBpZiBub3QgYnJhbmNoIGluIHJlbW90ZW1hcDoKKyAgICAgICAgICAgICMgbmV3IGJyYW5jaAorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgbm90IHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzL2JyYW5jaGVzJyk6CisgICAgICAgICAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy8nKToKKyAgICAgICAgICAgICAgICBpZiBub3QgY2hlY2toZWFkc19ibWFyayhyZXBvLCByZWYsIGN0eCk6CisgICAgICAgICAgICAgICAgICAgIHJldCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgb25seSBjaGVjayBicmFuY2hlcworICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbmV3LnNldGRlZmF1bHQoYnJhbmNoLCBbXSkuYXBwZW5kKGN0eC5yZXYoKSkKKworICAgIGZvciBicmFuY2gsIGhlYWRzIGluIG5ldy5pdGVyaXRlbXMoKToKKyAgICAgICAgb2xkID0gW3JlcG8uY2hhbmdlbG9nLnJldih4KSBmb3IgeCBpbiByZW1vdGVtYXBbYnJhbmNoXV0KKyAgICAgICAgZm9yIHJldiBpbiBoZWFkczoKKyAgICAgICAgICAgIGlmIGNoZWNrX3ZlcnNpb24oMiwgMyk6CisgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gcmVwby5jaGFuZ2Vsb2cuYW5jZXN0b3JzKFtyZXZdLCBzdG9wcmV2PW1pbihvbGQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSByZXBvLmNoYW5nZWxvZy5hbmNlc3RvcnMocmV2KQorICAgICAgICAgICAgZm91bmQgPSBGYWxzZQorCisgICAgICAgICAgICBmb3IgeCBpbiBvbGQ6CisgICAgICAgICAgICAgICAgaWYgeCBpbiBhbmNlc3RvcnM6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiBmb3VuZDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBub2RlID0gcmVwby5jaGFuZ2Vsb2cubm9kZShyZXYpCisgICAgICAgICAgICByZWYgPSBwX3JldnNbbm9kZV0KKyAgICAgICAgICAgIGlmIGZvcmNlX3B1c2g6CisgICAgICAgICAgICAgICAgcHJpbnQgIm9rICVzIGZvcmNlZCB1cGRhdGUiICUgcmVmCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50ICJlcnJvciAlcyBub24tZmFzdCBmb3J3YXJkIiAlIHJlZgorICAgICAgICAgICAgICAgIHJldCA9IEZhbHNlCisKKyAgICByZXR1cm4gcmV0CisKK2RlZiBwdXNoX3Vuc2FmZShyZXBvLCByZW1vdGUsIHBhcnNlZF9yZWZzLCBwX3JldnMpOgorCisgICAgZm9yY2UgPSBmb3JjZV9wdXNoCisKKyAgICBmY2kgPSBkaXNjb3ZlcnkuZmluZGNvbW1vbmluY29taW5nCisgICAgY29tbW9uaW5jID0gZmNpKHJlcG8sIHJlbW90ZSwgZm9yY2U9Zm9yY2UpCisgICAgY29tbW9uLCBfLCByZW1vdGVoZWFkcyA9IGNvbW1vbmluYworCisgICAgaWYgbm90IGNoZWNraGVhZHMocmVwbywgcmVtb3RlLCBwX3JldnMpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgY2cgPSByZXBvLmdldGJ1bmRsZSgncHVzaCcsIGhlYWRzPWxpc3QocF9yZXZzKSwgY29tbW9uPWNvbW1vbikKKworICAgIHVuYnVuZGxlID0gcmVtb3RlLmNhcGFibGUoJ3VuYnVuZGxlJykKKyAgICBpZiB1bmJ1bmRsZToKKyAgICAgICAgaWYgZm9yY2U6CisgICAgICAgICAgICByZW1vdGVoZWFkcyA9IFsnZm9yY2UnXQorICAgICAgICByZXR1cm4gcmVtb3RlLnVuYnVuZGxlKGNnLCByZW1vdGVoZWFkcywgJ3B1c2gnKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiByZW1vdGUuYWRkY2hhbmdlZ3JvdXAoY2csICdwdXNoJywgcmVwby51cmwoKSkKKworZGVmIHB1c2gocmVwbywgcmVtb3RlLCBwYXJzZWRfcmVmcywgcF9yZXZzKToKKyAgICBpZiBoYXNhdHRyKHJlbW90ZSwgJ2NhbnB1c2gnKSBhbmQgbm90IHJlbW90ZS5jYW5wdXNoKCk6CisgICAgICAgIHByaW50ICJlcnJvciBjYW5ub3QgcHVzaCIKKworICAgIGlmIG5vdCBwX3JldnM6CisgICAgICAgICMgbm90aGluZyB0byBwdXNoCisgICAgICAgIHJldHVybgorCisgICAgbG9jayA9IE5vbmUKKyAgICB1bmJ1bmRsZSA9IHJlbW90ZS5jYXBhYmxlKCd1bmJ1bmRsZScpCisgICAgaWYgbm90IHVuYnVuZGxlOgorICAgICAgICBsb2NrID0gcmVtb3RlLmxvY2soKQorICAgIHRyeToKKyAgICAgICAgcmV0ID0gcHVzaF91bnNhZmUocmVwbywgcmVtb3RlLCBwYXJzZWRfcmVmcywgcF9yZXZzKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGxvY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2NrLnJlbGVhc2UoKQorCisgICAgcmV0dXJuIHJldAorCitkZWYgY2hlY2tfdGlwKHJlZiwga2luZCwgbmFtZSwgaGVhZHMpOgorICAgIHRyeToKKyAgICAgICAgZW5hbWUgPSAnJXMvJXMnICUgKGtpbmQsIG5hbWUpCisgICAgICAgIHRpcCA9IG1hcmtzLmdldF90aXAoZW5hbWUpCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiB0aXAgaW4gaGVhZHMKIAogZGVmIGRvX2V4cG9ydChwYXJzZXIpOgogICAgIGdsb2JhbCBwYXJzZWRfcmVmcywgYm1hcmtzLCBwZWVyCiAKKyAgICBwX2JtYXJrcyA9IFtdCisgICAgcF9yZXZzID0ge30KKwogICAgIHBhcnNlci5uZXh0KCkKIAogICAgIGZvciBsaW5lIGluIHBhcnNlci5lYWNoX2Jsb2NrKCdkb25lJyk6CkBAIC02OTYsNTAgKzEwMTQsMTM5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWUoJ3VuaGFuZGxlZCBleHBvcnQgY29tbWFuZDogJXMnICUgbGluZSkKIAorICAgIG5lZWRfZmV0Y2ggPSBGYWxzZQorCiAgICAgZm9yIHJlZiwgbm9kZSBpbiBwYXJzZWRfcmVmcy5pdGVyaXRlbXMoKToKKyAgICAgICAgYm5vZGUgPSBoZ2Jpbihub2RlKSBpZiBub2RlIGVsc2UgTm9uZQogICAgICAgICBpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy9icmFuY2hlcycpOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYnJhbmNoID0gcmVmW2xlbigncmVmcy9oZWFkcy9icmFuY2hlcy8nKTpdCisgICAgICAgICAgICBpZiBicmFuY2ggaW4gYnJhbmNoZXMgYW5kIGJub2RlIGluIGJyYW5jaGVzW2JyYW5jaF06CisgICAgICAgICAgICAgICAgIyB1cCB0byBkYXRlCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgcGVlcjoKKyAgICAgICAgICAgICAgICByZW1vdGVtYXAgPSBwZWVyLmJyYW5jaG1hcCgpCisgICAgICAgICAgICAgICAgaWYgcmVtb3RlbWFwIGFuZCBicmFuY2ggaW4gcmVtb3RlbWFwOgorICAgICAgICAgICAgICAgICAgICBoZWFkcyA9IFtoZ2hleChlKSBmb3IgZSBpbiByZW1vdGVtYXBbYnJhbmNoXV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNoZWNrX3RpcChyZWYsICdicmFuY2hlcycsIGJyYW5jaCwgaGVhZHMpOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgImVycm9yICVzIGZldGNoIGZpcnN0IiAlIHJlZgorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9mZXRjaCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBfcmV2c1tibm9kZV0gPSByZWYKKyAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKICAgICAgICAgZWxpZiByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy8nKToKICAgICAgICAgICAgIGJtYXJrID0gcmVmW2xlbigncmVmcy9oZWFkcy8nKTpdCi0gICAgICAgICAgICBpZiBibWFyayBpbiBibWFya3M6Ci0gICAgICAgICAgICAgICAgb2xkID0gYm1hcmtzW2JtYXJrXS5oZXgoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvbGQgPSAnJwotICAgICAgICAgICAgaWYgbm90IGJvb2ttYXJrcy5wdXNoYm9va21hcmsocGFyc2VyLnJlcG8sIGJtYXJrLCBvbGQsIG5vZGUpOgorICAgICAgICAgICAgbmV3ID0gbm9kZQorICAgICAgICAgICAgb2xkID0gYm1hcmtzW2JtYXJrXS5oZXgoKSBpZiBibWFyayBpbiBibWFya3MgZWxzZSAnJworCisgICAgICAgICAgICBpZiBvbGQgPT0gbmV3OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKyAgICAgICAgICAgIGlmIGJtYXJrICE9IGZha2VfYm1hcmsgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgbm90IChibWFyayA9PSAnbWFzdGVyJyBhbmQgYm1hcmsgbm90IGluIHBhcnNlci5yZXBvLl9ib29rbWFya3MpOgorICAgICAgICAgICAgICAgIHBfYm1hcmtzLmFwcGVuZCgocmVmLCBibWFyaywgb2xkLCBuZXcpKQorCisgICAgICAgICAgICBpZiBwZWVyOgorICAgICAgICAgICAgICAgIHJlbW90ZV9vbGQgPSBwZWVyLmxpc3RrZXlzKCdib29rbWFya3MnKS5nZXQoYm1hcmspCisgICAgICAgICAgICAgICAgaWYgcmVtb3RlX29sZDoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNoZWNrX3RpcChyZWYsICdib29rbWFya3MnLCBibWFyaywgcmVtb3RlX29sZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMgZmV0Y2ggZmlyc3QiICUgcmVmCisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkX2ZldGNoID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcF9yZXZzW2Jub2RlXSA9IHJlZgogICAgICAgICBlbGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL3RhZ3MvJyk6CisgICAgICAgICAgICBpZiBkcnlfcnVuOgorICAgICAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdGFnID0gcmVmW2xlbigncmVmcy90YWdzLycpOl0KLSAgICAgICAgICAgIHBhcnNlci5yZXBvLnRhZyhbdGFnXSwgbm9kZSwgTm9uZSwgVHJ1ZSwgTm9uZSwge30pCisgICAgICAgICAgICB0YWcgPSBoZ3JlZih0YWcpCisgICAgICAgICAgICBhdXRob3IsIG1zZyA9IHBhcnNlZF90YWdzLmdldCh0YWcsIChOb25lLCBOb25lKSkKKyAgICAgICAgICAgIGlmIG1vZGUgPT0gJ2dpdCc6CisgICAgICAgICAgICAgICAgaWYgbm90IG1zZzoKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ0FkZGVkIHRhZyAlcyBmb3IgY2hhbmdlc2V0ICVzJyAlICh0YWcsIG5vZGVbOjEyXSk7CisgICAgICAgICAgICAgICAgdGFnbm9kZSwgYnJhbmNoID0gd3JpdGVfdGFnKHBhcnNlci5yZXBvLCB0YWcsIG5vZGUsIG1zZywgYXV0aG9yKQorICAgICAgICAgICAgICAgIHBfcmV2c1t0YWdub2RlXSA9ICdyZWZzL2hlYWRzL2JyYW5jaGVzLycgKyBnaXRyZWYoYnJhbmNoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmcCA9IHBhcnNlci5yZXBvLm9wZW5lcignbG9jYWx0YWdzJywgJ2EnKQorICAgICAgICAgICAgICAgIGZwLndyaXRlKCclcyAlc1xuJyAlIChub2RlLCB0YWcpKQorICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgICAgIHBfcmV2c1tibm9kZV0gPSByZWYKKyAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgdHJhbnNwb3J0LWhlbHBlci9mYXN0LWV4cG9ydCBidWdzCiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBwcmludCAib2sgJXMiICUgcmVmCisKKyAgICBpZiBuZWVkX2ZldGNoOgorICAgICAgICBwcmludAorICAgICAgICByZXR1cm4KKworICAgIGlmIGRyeV9ydW46CisgICAgICAgIGlmIHBlZXIgYW5kIG5vdCBmb3JjZV9wdXNoOgorICAgICAgICAgICAgY2hlY2toZWFkcyhwYXJzZXIucmVwbywgcGVlciwgcF9yZXZzKQorICAgICAgICBwcmludAorICAgICAgICByZXR1cm4KKworICAgIGlmIHBlZXI6CisgICAgICAgIGlmIG5vdCBwdXNoKHBhcnNlci5yZXBvLCBwZWVyLCBwYXJzZWRfcmVmcywgcF9yZXZzKToKKyAgICAgICAgICAgICMgZG8gbm90IHVwZGF0ZSBib29rbWFya3MKKyAgICAgICAgICAgIHByaW50CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIHVwZGF0ZSByZW1vdGUgYm9va21hcmtzCisgICAgICAgIHJlbW90ZV9ibWFya3MgPSBwZWVyLmxpc3RrZXlzKCdib29rbWFya3MnKQorICAgICAgICBmb3IgcmVmLCBibWFyaywgb2xkLCBuZXcgaW4gcF9ibWFya3M6CisgICAgICAgICAgICBpZiBmb3JjZV9wdXNoOgorICAgICAgICAgICAgICAgIG9sZCA9IHJlbW90ZV9ibWFya3MuZ2V0KGJtYXJrLCAnJykKKyAgICAgICAgICAgIGlmIG5vdCBwZWVyLnB1c2hrZXkoJ2Jvb2ttYXJrcycsIGJtYXJrLCBvbGQsIG5ldyk6CisgICAgICAgICAgICAgICAgcHJpbnQgImVycm9yICVzIiAlIHJlZgorICAgIGVsc2U6CisgICAgICAgICMgdXBkYXRlIGxvY2FsIGJvb2ttYXJrcworICAgICAgICBmb3IgcmVmLCBibWFyaywgb2xkLCBuZXcgaW4gcF9ibWFya3M6CisgICAgICAgICAgICBpZiBub3QgYm9va21hcmtzLnB1c2hib29rbWFyayhwYXJzZXIucmVwbywgYm1hcmssIG9sZCwgbmV3KToKKyAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMiICUgcmVmCiAKICAgICBwcmludAogCi0gICAgaWYgcGVlcjoKLSAgICAgICAgcGFyc2VyLnJlcG8ucHVzaChwZWVyLCBmb3JjZT1GYWxzZSkKK2RlZiBkb19vcHRpb24ocGFyc2VyKToKKyAgICBnbG9iYWwgZHJ5X3J1biwgZm9yY2VfcHVzaAorICAgIF8sIGtleSwgdmFsdWUgPSBwYXJzZXIubGluZS5zcGxpdCgnICcpCisgICAgaWYga2V5ID09ICdkcnktcnVuJzoKKyAgICAgICAgZHJ5X3J1biA9ICh2YWx1ZSA9PSAndHJ1ZScpCisgICAgICAgIHByaW50ICdvaycKKyAgICBlbGlmIGtleSA9PSAnZm9yY2UnOgorICAgICAgICBmb3JjZV9wdXNoID0gKHZhbHVlID09ICd0cnVlJykKKyAgICAgICAgcHJpbnQgJ29rJworICAgIGVsc2U6CisgICAgICAgIHByaW50ICd1bnN1cHBvcnRlZCcKKworZGVmIGZpeF9wYXRoKGFsaWFzLCByZXBvLCBvcmlnX3VybCk6CisgICAgdXJsID0gdXJscGFyc2UudXJscGFyc2Uob3JpZ191cmwsICdmaWxlJykKKyAgICBpZiB1cmwuc2NoZW1lICE9ICdmaWxlJyBvciBvcy5wYXRoLmlzYWJzKHVybC5wYXRoKToKKyAgICAgICAgcmV0dXJuCisgICAgYWJzX3VybCA9IHVybHBhcnNlLnVybGpvaW4oIiVzLyIgJSBvcy5nZXRjd2QoKSwgb3JpZ191cmwpCisgICAgY21kID0gWydnaXQnLCAnY29uZmlnJywgJ3JlbW90ZS4lcy51cmwnICUgYWxpYXMsICJoZzo6JXMiICUgYWJzX3VybF0KKyAgICBzdWJwcm9jZXNzLmNhbGwoY21kKQogCiBkZWYgbWFpbihhcmdzKToKLSAgICBnbG9iYWwgcHJlZml4LCBkaXJuYW1lLCBicmFuY2hlcywgYm1hcmtzCisgICAgZ2xvYmFsIHByZWZpeCwgZ2l0ZGlyLCBkaXJuYW1lLCBicmFuY2hlcywgYm1hcmtzCiAgICAgZ2xvYmFsIG1hcmtzLCBibG9iX21hcmtzLCBwYXJzZWRfcmVmcwogICAgIGdsb2JhbCBwZWVyLCBtb2RlLCBiYWRfbWFpbCwgYmFkX25hbWUKLSAgICBnbG9iYWwgdHJhY2tfYnJhbmNoZXMKKyAgICBnbG9iYWwgdHJhY2tfYnJhbmNoZXMsIGZvcmNlX3B1c2gsIGlzX3RtcAorICAgIGdsb2JhbCBwYXJzZWRfdGFncworICAgIGdsb2JhbCBmaWxlbm9kZXMKKyAgICBnbG9iYWwgZmFrZV9ibWFyaywgaGdfdmVyc2lvbgorICAgIGdsb2JhbCBkcnlfcnVuCiAKICAgICBhbGlhcyA9IGFyZ3NbMV0KICAgICB1cmwgPSBhcmdzWzJdCiAgICAgcGVlciA9IE5vbmUKIAotICAgIGhnX2dpdF9jb21wYXQgPSBGYWxzZQotICAgIHRyYWNrX2JyYW5jaGVzID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgaWYgZ2V0X2NvbmZpZygncmVtb3RlLWhnLmhnLWdpdC1jb21wYXQnKSA9PSAndHJ1ZVxuJzoKLSAgICAgICAgICAgIGhnX2dpdF9jb21wYXQgPSBUcnVlCi0gICAgICAgICAgICB0cmFja19icmFuY2hlcyA9IEZhbHNlCi0gICAgICAgIGlmIGdldF9jb25maWcoJ3JlbW90ZS1oZy50cmFjay1icmFuY2hlcycpID09ICdmYWxzZVxuJzoKLSAgICAgICAgICAgIHRyYWNrX2JyYW5jaGVzID0gRmFsc2UKLSAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICBoZ19naXRfY29tcGF0ID0gZ2V0X2NvbmZpZ19ib29sKCdyZW1vdGUtaGcuaGctZ2l0LWNvbXBhdCcpCisgICAgdHJhY2tfYnJhbmNoZXMgPSBnZXRfY29uZmlnX2Jvb2woJ3JlbW90ZS1oZy50cmFjay1icmFuY2hlcycsIFRydWUpCisgICAgZm9yY2VfcHVzaCA9IEZhbHNlCiAKICAgICBpZiBoZ19naXRfY29tcGF0OgogICAgICAgICBtb2RlID0gJ2hnJwpAQCAtNzUyLDcgKzExNTksNyBAQAogCiAgICAgaWYgYWxpYXNbNDpdID09IHVybDoKICAgICAgICAgaXNfdG1wID0gVHJ1ZQotICAgICAgICBhbGlhcyA9IHV0aWwuc2hhMShhbGlhcykuaGV4ZGlnZXN0KCkKKyAgICAgICAgYWxpYXMgPSBoYXNobGliLnNoYTEoYWxpYXMpLmhleGRpZ2VzdCgpCiAgICAgZWxzZToKICAgICAgICAgaXNfdG1wID0gRmFsc2UKIApAQCAtNzYyLDE1ICsxMTY5LDI4IEBACiAgICAgYm1hcmtzID0ge30KICAgICBibG9iX21hcmtzID0ge30KICAgICBwYXJzZWRfcmVmcyA9IHt9CisgICAgbWFya3MgPSBOb25lCisgICAgcGFyc2VkX3RhZ3MgPSB7fQorICAgIGZpbGVub2RlcyA9IHt9CisgICAgZmFrZV9ibWFyayA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGhnX3ZlcnNpb24gPSB0dXBsZShpbnQoZSkgZm9yIGUgaW4gdXRpbC52ZXJzaW9uKCkuc3BsaXQoJy4nKSkKKyAgICBleGNlcHQ6CisgICAgICAgIGhnX3ZlcnNpb24gPSBOb25lCisgICAgZHJ5X3J1biA9IEZhbHNlCiAKICAgICByZXBvID0gZ2V0X3JlcG8odXJsLCBhbGlhcykKICAgICBwcmVmaXggPSAncmVmcy9oZy8lcycgJSBhbGlhcwogCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcm5hbWUpOgotICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQorICAgIGlmIG5vdCBpc190bXA6CisgICAgICAgIGZpeF9wYXRoKGFsaWFzLCBwZWVyIG9yIHJlcG8sIHVybCkKIAogICAgIG1hcmtzX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ21hcmtzLWhnJykKLSAgICBtYXJrcyA9IE1hcmtzKG1hcmtzX3BhdGgpCisgICAgbWFya3MgPSBNYXJrcyhtYXJrc19wYXRoLCByZXBvKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgbXN2Y3J0LnNldG1vZGUoc3lzLnN0ZG91dC5maWxlbm8oKSwgb3MuT19CSU5BUlkpCiAKICAgICBwYXJzZXIgPSBQYXJzZXIocmVwbykKICAgICBmb3IgbGluZSBpbiBwYXJzZXI6CkBAIC03ODIsMTMgKzEyMDIsMTkgQEAKICAgICAgICAgICAgIGRvX2ltcG9ydChwYXJzZXIpCiAgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdleHBvcnQnKToKICAgICAgICAgICAgIGRvX2V4cG9ydChwYXJzZXIpCisgICAgICAgIGVsaWYgcGFyc2VyLmNoZWNrKCdvcHRpb24nKToKKyAgICAgICAgICAgIGRvX29wdGlvbihwYXJzZXIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWUoJ3VuaGFuZGxlZCBjb21tYW5kOiAlcycgJSBsaW5lKQogICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAorZGVmIGJ5ZSgpOgorICAgIGlmIG5vdCBtYXJrczoKKyAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGlzX3RtcDoKICAgICAgICAgbWFya3Muc3RvcmUoKQogICAgIGVsc2U6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZSkKIAorYXRleGl0LnJlZ2lzdGVyKGJ5ZSkKIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWJ6ci5zaCBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1ienIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGNlMjgxZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1ienIuc2gKQEAgLTAsMCArMSwzNjEgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTIgRmVsaXBlIENvbnRyZXJhcworIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHJlbW90ZS1ienInCisKKy4gLi90ZXN0LWxpYi5zaAorCitpZiAhIHRlc3RfaGF2ZV9wcmVyZXEgUFlUSE9OOyB0aGVuCisJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1ienIgdGVzdHM7IHB5dGhvbiBub3QgYXZhaWxhYmxlJworCXRlc3RfZG9uZQorZmkKKworaWYgISBweXRob24gLWMgJ2ltcG9ydCBienJsaWInOyB0aGVuCisJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1ienIgdGVzdHM7IGJ6ciBub3QgYXZhaWxhYmxlJworCXRlc3RfZG9uZQorZmkKKworY2hlY2sgKCkgeworCWVjaG8gJDMgPiBleHBlY3RlZCAmJgorCWdpdCAtLWdpdC1kaXI9JDEvLmdpdCBsb2cgLS1mb3JtYXQ9JyVzJyAtMSAkMiA+IGFjdHVhbAorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorfQorCitienIgd2hvYW1pICJBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZycgJworCSgKKwlienIgaW5pdCBienJyZXBvICYmCisJY2QgYnpycmVwbyAmJgorCWVjaG8gb25lID4gY29udGVudCAmJgorCWJ6ciBhZGQgY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gb25lCisJKSAmJgorCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIEhFQUQgb25lCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcnICcKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gdHdvID4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gdHdvCisJKSAmJgorCisJKGNkIGdpdHJlcG8gJiYgZ2l0IHB1bGwpICYmCisKKwljaGVjayBnaXRyZXBvIEhFQUQgdHdvCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2hpbmcnICcKKwkoCisJY2QgZ2l0cmVwbyAmJgorCWVjaG8gdGhyZWUgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSB0aHJlZSAmJgorCWdpdCBwdXNoCisJKSAmJgorCisJZWNobyB0aHJlZSA+IGV4cGVjdGVkICYmCisJY2F0IGJ6cnJlcG8vY29udGVudCA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyb3VuZHRyaXAnICcKKwkoCisJY2QgZ2l0cmVwbyAmJgorCWdpdCBwdWxsICYmCisJZ2l0IGxvZyAtLWZvcm1hdD0iJXMiIC0xIG9yaWdpbi9tYXN0ZXIgPiBhY3R1YWwKKwkpICYmCisJZWNobyB0aHJlZSA+IGV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsICYmCisKKwkoY2QgZ2l0cmVwbyAmJiBnaXQgcHVzaCAmJiBnaXQgcHVsbCkgJiYKKworCSgKKwljZCBienJyZXBvICYmCisJZWNobyBmb3VyID4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gZm91cgorCSkgJiYKKworCShjZCBnaXRyZXBvICYmIGdpdCBwdWxsICYmIGdpdCBwdXNoKSAmJgorCisJY2hlY2sgZ2l0cmVwbyBIRUFEIGZvdXIgJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZWNobyBmaXZlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gZml2ZSAmJgorCWdpdCBwdXNoICYmIGdpdCBwdWxsCisJKSAmJgorCisJKGNkIGJ6cnJlcG8gJiYgYnpyIHJldmVydCkgJiYKKworCWVjaG8gZml2ZSA+IGV4cGVjdGVkICYmCisJY2F0IGJ6cnJlcG8vY29udGVudCA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPiBleHBlY3RlZCA8PEVPRgorMTAwNjQ0IGJsb2IgNTRmOWQ2ZGE1YzkxZDU1NmU2YjU0MzQwYjEzMjc1NzMwNzMwMzBhZgljb250ZW50CisxMDA3NTUgYmxvYiA2ODc2OTU3OWMzZWFhZGJlNTU1Mzc5YjljMzUzOGU2NjI4YmFlMWViCWV4ZWN1dGFibGUKKzEyMDAwMCBibG9iIDZiNTg0ZThlY2U1NjJlYmZmYzE1ZDM4ODA4Y2Q2Yjk4ZmMzZDk3ZWEJbGluaworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NwZWNpYWwgbW9kZXMnICcKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gZXhlYyA+IGV4ZWN1dGFibGUKKwljaG1vZCAreCBleGVjdXRhYmxlICYmCisJYnpyIGFkZCBleGVjdXRhYmxlCisJYnpyIGNvbW1pdCAtbSBleGVjICYmCisJbG4gLXMgY29udGVudCBsaW5rCisJYnpyIGFkZCBsaW5rCisJYnpyIGNvbW1pdCAtbSBsaW5rICYmCisJbWtkaXIgZGlyICYmCisJYnpyIGFkZCBkaXIgJiYKKwlienIgY29tbWl0IC1tIGRpcgorCSkgJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZ2l0IHB1bGwKKwlnaXQgbHMtdHJlZSBIRUFEID4gLi4vYWN0dWFsCisJKSAmJgorCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsICYmCisKKwkoCisJY2QgZ2l0cmVwbyAmJgorCWdpdCBjYXQtZmlsZSAtcCBIRUFEOmxpbmsgPiAuLi9hY3R1YWwKKwkpICYmCisKKwlwcmludGYgY29udGVudCA+IGV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+IGV4cGVjdGVkIDw8RU9GCisxMDA2NDQgYmxvYiA1NGY5ZDZkYTVjOTFkNTU2ZTZiNTQzNDBiMTMyNzU3MzA3MzAzMGFmCWNvbnRlbnQKKzEwMDc1NSBibG9iIDY4NzY5NTc5YzNlYWFkYmU1NTUzNzliOWMzNTM4ZTY2MjhiYWUxZWIJZXhlY3V0YWJsZQorMTIwMDAwIGJsb2IgNmI1ODRlOGVjZTU2MmViZmZjMTVkMzg4MDhjZDZiOThmYzNkOTdlYQlsaW5rCiswNDAwMDAgdHJlZSAzNWMwY2FhNDY2OTNjZWY2MjI0N2FjODlhNjgwZjBjNWNlMzJiMzdiCW1vdmVkaXItbmV3CitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbW92aW5nIGRpcmVjdG9yeScgJworCSgKKwljZCBienJyZXBvICYmCisJbWtkaXIgbW92ZWRpciAmJgorCWVjaG8gb25lID4gbW92ZWRpci9vbmUgJiYKKwllY2hvIHR3byA+IG1vdmVkaXIvdHdvICYmCisJYnpyIGFkZCBtb3ZlZGlyICYmCisJYnpyIGNvbW1pdCAtbSBtb3ZlZGlyICYmCisJYnpyIG12IG1vdmVkaXIgbW92ZWRpci1uZXcgJiYKKwlienIgY29tbWl0IC1tIG1vdmVkaXItbmV3CisJKSAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgcHVsbCAmJgorCWdpdCBscy10cmVlIEhFQUQgPiAuLi9hY3R1YWwKKwkpICYmCisKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZmVyZW50IGF1dGhvcnMnICcKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gam9obiA+PiBjb250ZW50ICYmCisJYnpyIGNvbW1pdCAtbSBqb2huIFwKKwkgIC0tYXV0aG9yICJKYW5lIFJleSA8anJleUBleGFtcGxlLmNvbT4iIFwKKwkgIC0tYXV0aG9yICJKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4iCisJKSAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgcHVsbCAmJgorCWdpdCBzaG93IC0tZm9ybWF0PSIlYW4gPCVhZT4sICVjbiA8JWNlPiIgLS1xdWlldCA+IC4uL2FjdHVhbAorCSkgJiYKKworCWVjaG8gIkphbmUgUmV5IDxqcmV5QGV4YW1wbGUuY29tPiwgQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4iID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworIyBjbGVhbnVwIHByZXZpb3VzIHN0dWZmCitybSAtcmYgYnpycmVwbyBnaXRyZXBvCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHV0Zi04IGZpbGVuYW1lcycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGJ6cnJlcG8gZ2l0cmVwbyAmJiBMQ19BTEw9QyIgJiYKKworCUxDX0FMTD1lbl9VUy5VVEYtOAorCWV4cG9ydCBMQ19BTEwKKworCSgKKwlienIgaW5pdCBienJyZXBvICYmCisJY2QgYnpycmVwbyAmJgorCisJZWNobyB0ZXN0ID4+ICLDpnLDuCIgJiYKKwlienIgYWRkICLDpnLDuCIgJiYKKwllY2hvIHRlc3QgPj4gIsO4fj8iICYmCisJYnpyIGFkZCAiw7h+PyIgJiYKKwlienIgY29tbWl0IC1tIGFkZC11dGYtOCAmJgorCWVjaG8gdGVzdCA+PiAiw6Zyw7giICYmCisJYnpyIGNvbW1pdCAtbSB0ZXN0LXV0Zi04ICYmCisJYnpyIHJtICLDuH4/IiAmJgorCWJ6ciBtdiAiw6Zyw7giICLDuH4/IiAmJgorCWJ6ciBjb21taXQgLW0gYnpyLW12LXV0Zi04CisJKSAmJgorCisJKAorCWdpdCBjbG9uZSAiYnpyOjpienJyZXBvIiBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWdpdCAtYyBjb3JlLnF1b3RlcGF0aD1mYWxzZSBscy1maWxlcyA+IC4uL2FjdHVhbAorCSkgJiYKKwllY2hvICLDuH4/IiA+IGV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdXRmLTggZmlsZW5hbWVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgYnpycmVwbyBnaXRyZXBvICYmIExDX0FMTD1DIiAmJgorCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgorCisJTENfQUxMPWVuX1VTLlVURi04CisJZXhwb3J0IExDX0FMTAorCisJKAorCWJ6ciBpbml0IGJ6cnJlcG8gJiYKKwljZCBienJyZXBvICYmCisKKwllY2hvIG9uZSA+PiBjb250ZW50ICYmCisJYnpyIGFkZCBjb250ZW50ICYmCisJYnpyIGNvbW1pdCAtbSBvbmUKKwkpICYmCisKKwkoCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisKKwllY2hvIHRlc3QgPj4gIsOmcsO4IiAmJgorCWdpdCBhZGQgIsOmcsO4IiAmJgorCWdpdCBjb21taXQgLW0gdXRmLTggJiYKKworCWdpdCBwdXNoCisJKSAmJgorCisJKGNkIGJ6cnJlcG8gJiYgYnpyIGxzID4gLi4vYWN0dWFsKSAmJgorCXByaW50ZiAiY29udGVudFxuw6Zyw7hcbiIgPiBleHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoaW5nIGEgbWVyZ2UnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBienJyZXBvIGdpdHJlcG8iICYmCisKKwkoCisJYnpyIGluaXQgYnpycmVwbyAmJgorCWNkIGJ6cnJlcG8gJiYKKwllY2hvIG9uZSA+IGNvbnRlbnQgJiYKKwlienIgYWRkIGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIG9uZQorCSkgJiYKKworCWdpdCBjbG9uZSAiYnpyOjpienJyZXBvIiBnaXRyZXBvICYmCisKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gdHdvID4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gdHdvCisJKSAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwllY2hvIHRocmVlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gdGhyZWUgJiYKKwlnaXQgZmV0Y2ggJiYKKwlnaXQgbWVyZ2Ugb3JpZ2luL21hc3RlciB8fCB0cnVlICYmCisJZWNobyB0aHJlZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC0tbm8tZWRpdCAmJgorCWdpdCBwdXNoCisJKSAmJgorCisJZWNobyB0aHJlZSA+IGV4cGVjdGVkICYmCisJY2F0IGJ6cnJlcG8vY29udGVudCA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPiBleHBlY3RlZCA8PEVPRgorb3JpZ2luL0hFQUQKK29yaWdpbi9icmFuY2gKK29yaWdpbi90cnVuaworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb3BlciBienIgcmVwbycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGJ6cnJlcG8gZ2l0cmVwbyIgJiYKKworCWJ6ciBpbml0LXJlcG8gYnpycmVwbyAmJgorCisJKAorCWJ6ciBpbml0IGJ6cnJlcG8vdHJ1bmsgJiYKKwljZCBienJyZXBvL3RydW5rICYmCisJZWNobyBvbmUgPj4gY29udGVudCAmJgorCWJ6ciBhZGQgY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gb25lCisJKSAmJgorCisJKAorCWJ6ciBicmFuY2ggYnpycmVwby90cnVuayBienJyZXBvL2JyYW5jaCAmJgorCWNkIGJ6cnJlcG8vYnJhbmNoICYmCisJZWNobyB0d28gPj4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gb25lCisJKSAmJgorCisJKAorCWdpdCBjbG9uZSAiYnpyOjpienJyZXBvIiBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQgIiUocmVmbmFtZTpzaG9ydCkiIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPiAuLi9hY3R1YWwKKwkpICYmCisKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RyaXAnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBienJyZXBvIGdpdHJlcG8iICYmCisKKwkoCisJYnpyIGluaXQgYnpycmVwbyAmJgorCWNkIGJ6cnJlcG8gJiYKKworCWVjaG8gb25lID4+IGNvbnRlbnQgJiYKKwlienIgYWRkIGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIG9uZSAmJgorCisJZWNobyB0d28gPj4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gdHdvCisJKSAmJgorCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKKworCSgKKwljZCBienJyZXBvICYmCisJYnpyIHVuY29tbWl0IC0tZm9yY2UgJiYKKworCWVjaG8gdGhyZWUgPj4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gdGhyZWUgJiYKKworCWVjaG8gZm91ciA+PiBjb250ZW50ICYmCisJYnpyIGNvbW1pdCAtbSBmb3VyICYmCisJYnpyIGxvZyAtLWxpbmUgfCBzZWQgLWUgInMvXlswLTldWzAtOV0qOiAvLyIgPiAuLi9leHBlY3RlZAorCSkgJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZ2l0IGZldGNoICYmCisJZ2l0IGxvZyAtLWZvcm1hdD0iJWFuICVhZCAlcyIgLS1kYXRlPXNob3J0IG9yaWdpbi9tYXN0ZXIgPiAuLi9hY3R1YWwKKwkpICYmCisKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctYmlkaS5zaCBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCmluZGV4IDFkNjE5ODIuLmY4M2Q2N2QgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCisrKyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCkBAIC0xNSwxNSArMTUsMTQgQEAKIAl0ZXN0X2RvbmUKIGZpCiAKLWlmICEgIiRQWVRIT05fUEFUSCIgLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCitpZiAhIHB5dGhvbiAtYyAnaW1wb3J0IG1lcmN1cmlhbCc7IHRoZW4KIAlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWhnIHRlc3RzOyBtZXJjdXJpYWwgbm90IGF2YWlsYWJsZScKIAl0ZXN0X2RvbmUKIGZpCiAKICMgY2xvbmUgdG8gYSBnaXQgcmVwbwogZ2l0X2Nsb25lICgpIHsKLQloZyAtUiAkMSBib29rbWFyayAtZiAtciB0aXAgbWFzdGVyICYmCi0JZ2l0IGNsb25lIC1xICJoZzo6JFBXRC8kMSIgJDIKKwlnaXQgY2xvbmUgLXEgImhnOjokMSIgJDIKIH0KIAogIyBjbG9uZSB0byBhbiBoZyByZXBvCkBAIC0zMSw3ICszMCw3IEBACiAJKAogCWhnIGluaXQgJDIgJiYKIAljZCAkMSAmJgotCWdpdCBwdXNoIC1xICJoZzo6JFBXRC8uLi8kMiIgJ3JlZnMvdGFncy8qOnJlZnMvdGFncy8qJyAncmVmcy9oZWFkcy8qOnJlZnMvaGVhZHMvKicKKwlnaXQgcHVzaCAtcSAiaGc6Oi4uLyQyIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJwogCSkgJiYKIAogCShjZCAkMiAmJiBoZyAtcSB1cGRhdGUpCkBAIC00MSwxNiArNDAsMTUgQEAKIGhnX3B1c2ggKCkgewogCSgKIAljZCAkMgotCW9sZD0kKGdpdCBzeW1ib2xpYy1yZWYgLS1zaG9ydCBIRUFEKQogCWdpdCBjaGVja291dCAtcSAtYiB0bXAgJiYKLQlnaXQgZmV0Y2ggLXEgImhnOjokUFdELy4uLyQxIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJyAmJgotCWdpdCBjaGVja291dCAtcSAkb2xkICYmCisJZ2l0IGZldGNoIC1xICJoZzo6Li4vJDEiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonICYmCisJZ2l0IGNoZWNrb3V0IC1xIEB7LTF9ICYmCiAJZ2l0IGJyYW5jaCAtcSAtRCB0bXAgMj4gL2Rldi9udWxsIHx8IHRydWUKIAkpCiB9CiAKIGhnX2xvZyAoKSB7Ci0JaGcgLVIgJDEgbG9nIC0tZ3JhcGggLS1kZWJ1ZyB8IGdyZXAgLXYgJ3RhZzogKmRlZmF1bHQvJworCWhnIC1SICQxIGxvZyAtLWdyYXBoIC0tZGVidWcKIH0KIAogc2V0dXAgKCkgewpAQCAtNjIsMjAgKzYwLDIyIEBACiAJZWNobyAiY29tbWl0ID0gLWQgXCIwIDBcIiIKIAllY2hvICJkZWJ1Z3Jhd2NvbW1pdCA9IC1kIFwiMCAwXCIiCiAJZWNobyAidGFnID0gLWQgXCIwIDBcIiIKKwllY2hvICJbZXh0ZW5zaW9uc10iCisJZWNobyAiZ3JhcGhsb2cgPSIKIAkpID4+ICIkSE9NRSIvLmhncmMgJiYKIAlnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy5oZy1naXQtY29tcGF0IHRydWUKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy50cmFjay1icmFuY2hlcyB0cnVlCiAKLQlleHBvcnQgSEdFRElUT1I9L3Vzci9iaW4vdHJ1ZQotCi0JZXhwb3J0IEdJVF9BVVRIT1JfREFURT0iMjAwNy0wMS0wMSAwMDowMDowMCArMDIzMCIKLQlleHBvcnQgR0lUX0NPTU1JVFRFUl9EQVRFPSIkR0lUX0FVVEhPUl9EQVRFIgorCUhHRURJVE9SPS91c3IvYmluL3RydWUKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDctMDEtMDEgMDA6MDA6MDAgKzAyMzAiCisJR0lUX0NPTU1JVFRFUl9EQVRFPSIkR0lUX0FVVEhPUl9EQVRFIgorCWV4cG9ydCBIR0VESVRPUiBHSVRfQVVUSE9SX0RBVEUgR0lUX0NPTU1JVFRFUl9EQVRFCiB9CiAKIHNldHVwCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2VuY29kaW5nJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKQEAgLTg1LDcgKzg1LDggQEAKIAlnaXQgYWRkIGFscGhhICYmCiAJZ2l0IGNvbW1pdCAtbSAiYWRkIMOkbHBow6AiICYmCiAKLQlleHBvcnQgR0lUX0FVVEhPUl9OQU1FPSJ0w6lzdCDDqG5jw7Zkw65uZyIgJiYKKwlHSVRfQVVUSE9SX05BTUU9InTDqXN0IMOobmPDtmTDrm5nIiAmJgorCWV4cG9ydCBHSVRfQVVUSE9SX05BTUUgJiYKIAllY2hvIGJldGEgPiBiZXRhICYmCiAJZ2l0IGFkZCBiZXRhICYmCiAJZ2l0IGNvbW1pdCAtbSAiYWRkIGJldGEiICYmCkBAIC0xMTEsOCArMTEyLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSByZW1vdmFsJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKQEAgLTE0NCw4ICsxNDQsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgdGFncycgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCkBAIC0xNzMsOCArMTcyLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgYnJhbmNoJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKQEAgLTE5MCw3ICsxODgsNyBAQAogCWhnX2Nsb25lIGdpdHJlcG8gaGdyZXBvICYmCiAKIAljZCBoZ3JlcG8gJiYKLQloZyAtcSBjbyBtYXN0ZXIgJiYKKwloZyAtcSBjbyBkZWZhdWx0ICYmCiAJaGcgbXYgYWxwaGEgYmV0YSAmJgogCWhnIC1xIGNvbW1pdCAtbSAicmVuYW1lIGFscGhhIHRvIGJldGEiICYmCiAJaGcgYnJhbmNoIGdhbW1hIHwgZ3JlcCAtdiAicGVybWFuZW50IGFuZCBnbG9iYWwiICYmCkBAIC0yMDAsOCArMTk4LDggQEAKIAloZ19wdXNoIGhncmVwbyBnaXRyZXBvICYmCiAJaGdfY2xvbmUgZ2l0cmVwbyBoZ3JlcG8yICYmCiAKLQk6IFRPRE8sIGF2b2lkICJtYXN0ZXIiIGJvb2ttYXJrICYmCi0JKGNkIGhncmVwbzIgJiYgaGcgY2hlY2tvdXQgZ2FtbWEpICYmCisJOiBCYWNrIHRvIHRoZSBjb21tb24gcmV2aXNpb24gJiYKKwkoY2QgaGdyZXBvICYmIGhnIGNoZWNrb3V0IGRlZmF1bHQpICYmCiAKIAloZ19sb2cgaGdyZXBvID4gZXhwZWN0ZWQgJiYKIAloZ19sb2cgaGdyZXBvMiA+IGFjdHVhbCAmJgpAQCAtMjEwLDggKzIwOCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2hnIHRhZ3MnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMjI3LDcgKzIyNCw3IEBACiAJaGdfY2xvbmUgZ2l0cmVwbyBoZ3JlcG8gJiYKIAogCWNkIGhncmVwbyAmJgotCWhnIGNvIG1hc3RlciAmJgorCWhnIGNvIGRlZmF1bHQgJiYKIAloZyB0YWcgYWxwaGEKIAkpICYmCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1oZy1naXQuc2ggYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctaGctZ2l0LnNoCmluZGV4IDNlNzZkOWYuLjIyMTkyODQgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1oZy1naXQuc2gKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLWhnLWdpdC5zaApAQCAtMTUsMjggKzE1LDI5IEBACiAJdGVzdF9kb25lCiBmaQogCi1pZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgbWVyY3VyaWFsJzsgdGhlbgoraWYgISBweXRob24gLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCiAJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1oZyB0ZXN0czsgbWVyY3VyaWFsIG5vdCBhdmFpbGFibGUnCiAJdGVzdF9kb25lCiBmaQogCi1pZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgaGdnaXQnOyB0aGVuCitpZiAhIHB5dGhvbiAtYyAnaW1wb3J0IGhnZ2l0JzsgdGhlbgogCXNraXBfYWxsPSdza2lwcGluZyByZW1vdGUtaGcgdGVzdHM7IGhnLWdpdCBub3QgYXZhaWxhYmxlJwogCXRlc3RfZG9uZQogZmkKIAogIyBjbG9uZSB0byBhIGdpdCByZXBvIHdpdGggZ2l0CiBnaXRfY2xvbmVfZ2l0ICgpIHsKLQloZyAtUiAkMSBib29rbWFyayAtZiAtciB0aXAgbWFzdGVyICYmCi0JZ2l0IGNsb25lIC1xICJoZzo6JFBXRC8kMSIgJDIKKwlnaXQgY2xvbmUgLXEgImhnOjokMSIgJDIgJiYKKwkoY2QgJDIgJiYgZ2l0IGNoZWNrb3V0IG1hc3RlciAmJiBnaXQgYnJhbmNoIC1EIGRlZmF1bHQpCiB9CiAKICMgY2xvbmUgdG8gYW4gaGcgcmVwbyB3aXRoIGdpdAogaGdfY2xvbmVfZ2l0ICgpIHsKIAkoCiAJaGcgaW5pdCAkMiAmJgorCWhnIC1SICQyIGJvb2ttYXJrIC1pIG1hc3RlciAmJgogCWNkICQxICYmCi0JZ2l0IHB1c2ggLXEgImhnOjokUFdELy4uLyQyIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJworCWdpdCBwdXNoIC1xICJoZzo6Li4vJDIiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonCiAJKSAmJgogCiAJKGNkICQyICYmIGhnIC1xIHVwZGF0ZSkKQEAgLTQ3LDcgKzQ4LDcgQEAKIAkoCiAJZ2l0IGluaXQgLXEgJDIgJiYKIAljZCAkMSAmJgotCWhnIGJvb2ttYXJrIC1mIC1yIHRpcCBtYXN0ZXIgJiYKKwloZyBib29rbWFyayAtaSAtZiAtciB0aXAgbWFzdGVyICYmCiAJaGcgLXEgcHVzaCAtciBtYXN0ZXIgLi4vJDIgfHwgdHJ1ZQogCSkKIH0KQEAgLTYxLDEwICs2MiwxMCBAQAogaGdfcHVzaF9naXQgKCkgewogCSgKIAljZCAkMgotCW9sZD0kKGdpdCBzeW1ib2xpYy1yZWYgLS1zaG9ydCBIRUFEKQogCWdpdCBjaGVja291dCAtcSAtYiB0bXAgJiYKLQlnaXQgZmV0Y2ggLXEgImhnOjokUFdELy4uLyQxIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJyAmJgotCWdpdCBjaGVja291dCAtcSAkb2xkICYmCisJZ2l0IGZldGNoIC1xICJoZzo6Li4vJDEiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonICYmCisJZ2l0IGJyYW5jaCAtRCBkZWZhdWx0ICYmCisJZ2l0IGNoZWNrb3V0IC1xIEB7LTF9ICYmCiAJZ2l0IGJyYW5jaCAtcSAtRCB0bXAgMj4gL2Rldi9udWxsIHx8IHRydWUKIAkpCiB9CkBAIC03OCw3ICs3OSw4IEBACiB9CiAKIGhnX2xvZyAoKSB7Ci0JaGcgLVIgJDEgbG9nIC0tZ3JhcGggLS1kZWJ1ZyB8IGdyZXAgLXYgJ3RhZzogKmRlZmF1bHQvJworCWhnIC1SICQxIGxvZyAtLWdyYXBoIC0tZGVidWcgPmxvZyAmJgorCWdyZXAgLXYgJ3RhZzogKmRlZmF1bHQvJyBsb2cKIH0KIAogZ2l0X2xvZyAoKSB7CkBAIC05NywyMSArOTksODkgQEAKIAllY2hvICJbZXh0ZW5zaW9uc10iCiAJZWNobyAiaGdleHQuYm9va21hcmtzID0iCiAJZWNobyAiaGdnaXQgPSIKKwllY2hvICJncmFwaGxvZyA9IgogCSkgPj4gIiRIT01FIi8uaGdyYyAmJgogCWdpdCBjb25maWcgLS1nbG9iYWwgcmVjZWl2ZS5kZW55Y3VycmVudGJyYW5jaCB3YXJuCiAJZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcuaGctZ2l0LWNvbXBhdCB0cnVlCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcudHJhY2stYnJhbmNoZXMgZmFsc2UKIAotCWV4cG9ydCBIR0VESVRPUj0vdXNyL2Jpbi90cnVlCisJSEdFRElUT1I9dHJ1ZQorCUhHTUVSR0U9dHJ1ZQogCi0JZXhwb3J0IEdJVF9BVVRIT1JfREFURT0iMjAwNy0wMS0wMSAwMDowMDowMCArMDIzMCIKLQlleHBvcnQgR0lUX0NPTU1JVFRFUl9EQVRFPSIkR0lUX0FVVEhPUl9EQVRFIgorCUdJVF9BVVRIT1JfREFURT0iMjAwNy0wMS0wMSAwMDowMDowMCArMDIzMCIKKwlHSVRfQ09NTUlUVEVSX0RBVEU9IiRHSVRfQVVUSE9SX0RBVEUiCisJZXhwb3J0IEhHRURJVE9SIEhHTUVSR0UgR0lUX0FVVEhPUl9EQVRFIEdJVF9DT01NSVRURVJfREFURQogfQogCiBzZXR1cAogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleGVjdXRhYmxlIGJpdCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCisKKwkoCisJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwllY2hvIGFscGhhID4gYWxwaGEgJiYKKwljaG1vZCAwNjQ0IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBhbHBoYSIgJiYKKwljaG1vZCAwNzU1IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gInNldCBleGVjdXRhYmxlIGJpdCIgJiYKKwljaG1vZCAwNjQ0IGFscGhhICYmCisJZ2l0IGFkZCBhbHBoYSAmJgorCWdpdCBjb21taXQgLW0gImNsZWFyIGV4ZWN1dGFibGUgYml0IgorCSkgJiYKKworCWZvciB4IGluIGhnIGdpdDsgZG8KKwkJKAorCQloZ19jbG9uZV8keCBnaXRyZXBvIGhncmVwby0keCAmJgorCQljZCBoZ3JlcG8tJHggJiYKKwkJaGdfbG9nIC4gJiYKKwkJaGcgbWFuaWZlc3QgLXIgMSAtdiAmJgorCQloZyBtYW5pZmVzdCAtdgorCQkpID4gb3V0cHV0LSR4ICYmCisKKwkJZ2l0X2Nsb25lXyR4IGhncmVwby0keCBnaXRyZXBvMi0keCAmJgorCQlnaXRfbG9nIGdpdHJlcG8yLSR4ID4gbG9nLSR4CisJZG9uZSAmJgorCisJdGVzdF9jbXAgb3V0cHV0LWhnIG91dHB1dC1naXQgJiYKKwl0ZXN0X2NtcCBsb2ctaGcgbG9nLWdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW1saW5rJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKKworCSgKKwlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWVjaG8gYWxwaGEgPiBhbHBoYSAmJgorCWdpdCBhZGQgYWxwaGEgJiYKKwlnaXQgY29tbWl0IC1tICJhZGQgYWxwaGEiICYmCisJbG4gLXMgYWxwaGEgYmV0YSAmJgorCWdpdCBhZGQgYmV0YSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBiZXRhIgorCSkgJiYKKworCWZvciB4IGluIGhnIGdpdDsgZG8KKwkJKAorCQloZ19jbG9uZV8keCBnaXRyZXBvIGhncmVwby0keCAmJgorCQljZCBoZ3JlcG8tJHggJiYKKwkJaGdfbG9nIC4gJiYKKwkJaGcgbWFuaWZlc3QgLXYKKwkJKSA+IG91dHB1dC0keCAmJgorCisJCWdpdF9jbG9uZV8keCBoZ3JlcG8tJHggZ2l0cmVwbzItJHggJiYKKwkJZ2l0X2xvZyBnaXRyZXBvMi0keCA+IGxvZy0keAorCWRvbmUgJiYKKworCXRlc3RfY21wIG91dHB1dC1oZyBvdXRwdXQtZ2l0ICYmCisJdGVzdF9jbXAgbG9nLWhnIGxvZy1naXQKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgY29uZmxpY3QgMScgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAloZyBpbml0IGhncmVwbzEgJiYKQEAgLTEyNyw3ICsxOTcsNyBAQAogCWVjaG8gQyA+IGFmaWxlICYmCiAJaGcgY2kgLW0gIkEtPkMiICYmCiAKLQloZyBtZXJnZSAtcjEgfHwgdHJ1ZSAmJgorCWhnIG1lcmdlIC1yMSAmJgogCWVjaG8gQyA+IGFmaWxlICYmCiAJaGcgcmVzb2x2ZSAtbSBhZmlsZSAmJgogCWhnIGNpIC1tICJtZXJnZSB0byBDIgpAQCAtMTQ1LDggKzIxNSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGNvbmZsaWN0IDInICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJaGcgaW5pdCBoZ3JlcG8xICYmCkBAIC0xODAsOCArMjQ5LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29udmVyZ2VkIG1lcmdlJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWhnIGluaXQgaGdyZXBvMSAmJgpAQCAtMjE2LDggKzI4NCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2VuY29kaW5nJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKQEAgLTIyNyw3ICsyOTQsOCBAQAogCWdpdCBhZGQgYWxwaGEgJiYKIAlnaXQgY29tbWl0IC1tICJhZGQgw6RscGjDoCIgJiYKIAotCWV4cG9ydCBHSVRfQVVUSE9SX05BTUU9InTDqXN0IMOobmPDtmTDrm5nIiAmJgorCUdJVF9BVVRIT1JfTkFNRT0idMOpc3Qgw6huY8O2ZMOubmciICYmCisJZXhwb3J0IEdJVF9BVVRIT1JfTkFNRSAmJgogCWVjaG8gYmV0YSA+IGJldGEgJiYKIAlnaXQgYWRkIGJldGEgJiYKIAlnaXQgY29tbWl0IC1tICJhZGQgYmV0YSIgJiYKQEAgLTI1NSw4ICszMjMsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIHJlbW92YWwnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMjk1LDggKzM2Miw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCB0YWdzJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKQEAgLTMyMiw4ICszODgsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdoZyBhdXRob3InICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAlmb3IgeCBpbiBoZyBnaXQ7IGRvCiAJCSgKQEAgLTM4NCwxNSArNDQ5LDEyIEBACiAJCWdpdF9sb2cgZ2l0cmVwby0keCA+IGdpdC1sb2ctJHgKIAlkb25lICYmCiAKLQl0ZXN0X2NtcCBnaXQtbG9nLWhnIGdpdC1sb2ctZ2l0ICYmCi0KIAl0ZXN0X2NtcCBoZy1sb2ctaGcgaGctbG9nLWdpdCAmJgogCXRlc3RfY21wIGdpdC1sb2ctaGcgZ2l0LWxvZy1naXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgYnJhbmNoJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJZm9yIHggaW4gaGcgZ2l0OyBkbwogCQkoCkBAIC00MjgsOCArNDkwLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgdGFncycgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCWZvciB4IGluIGhnIGdpdDsgZG8KIAkJKApkaWZmIC0tZ2l0IGEvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLnNoIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLnNoCmluZGV4IDdiYjgxZjIuLmY3Y2U4YWEgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy5zaAorKysgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGcuc2gKQEAgLTE1LDEwNyArMTUsNjc4IEBACiAJdGVzdF9kb25lCiBmaQogCi1pZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgbWVyY3VyaWFsJzsgdGhlbgoraWYgISBweXRob24gLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCiAJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1oZyB0ZXN0czsgbWVyY3VyaWFsIG5vdCBhdmFpbGFibGUnCiAJdGVzdF9kb25lCiBmaQogCiBjaGVjayAoKSB7Ci0JKGNkICQxICYmCi0JZ2l0IGxvZyAtLWZvcm1hdD0nJXMnIC0xICYmCi0JZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSA+IGFjdHVhbCAmJgotCShlY2hvICQyICYmCi0JZWNobyAicmVmcy9oZWFkcy8kMyIpID4gZXhwZWN0ZWQgJiYKKwllY2hvICQzID4gZXhwZWN0ZWQgJiYKKwlnaXQgLS1naXQtZGlyPSQxLy5naXQgbG9nIC0tZm9ybWF0PSclcycgLTEgJDIgPiBhY3R1YWwKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKIH0KIAorY2hlY2tfYnJhbmNoICgpIHsKKwlpZiBbIC1uICIkMyIgXTsgdGhlbgorCQllY2hvICQzID4gZXhwZWN0ZWQgJiYKKwkJaGcgLVIgJDEgbG9nIC1yICQyIC0tdGVtcGxhdGUgJ3tkZXNjfVxuJyA+IGFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwllbHNlCisJCWhnIC1SICQxIGJyYW5jaGVzID4gb3V0ICYmCisJCSEgZ3JlcCAkMiBvdXQKKwlmaQorfQorCitjaGVja19ib29rbWFyayAoKSB7CisJaWYgWyAtbiAiJDMiIF07IHRoZW4KKwkJZWNobyAkMyA+IGV4cGVjdGVkICYmCisJCWhnIC1SICQxIGxvZyAtciAiYm9va21hcmsoJyQyJykiIC0tdGVtcGxhdGUgJ3tkZXNjfVxuJyA+IGFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwllbHNlCisJCWhnIC1SICQxIGJvb2ttYXJrcyA+IG91dCAmJgorCQkhIGdyZXAgJDIgb3V0CisJZmkKK30KKworY2hlY2tfcHVzaCAoKSB7CisJbG9jYWwgZXhwZWN0ZWRfcmV0PSQxIHJldD0wIHJlZl9yZXQ9MCBJRlM9JzonCisKKwlzaGlmdAorCWdpdCBwdXNoIG9yaWdpbiAiJEAiIDI+IGVycm9yCisJcmV0PSQ/CisJY2F0IGVycm9yCisKKwl3aGlsZSByZWFkIGJyYW5jaCBraW5kCisJZG8KKwkJY2FzZSAiJGtpbmQiIGluCisJCSduZXcnKQorCQkJZ3JlcCAiXiBcKiBcW25ldyBicmFuY2hcXSAqJHticmFuY2h9IC0+ICR7YnJhbmNofSQiIGVycm9yIHx8IHJlZl9yZXQ9MQorCQkJOzsKKwkJJ25vbi1mYXN0LWZvcndhcmQnKQorCQkJZ3JlcCAiXiAhIFxbcmVqZWN0ZWRcXSAqJHticmFuY2h9IC0+ICR7YnJhbmNofSAobm9uLWZhc3QtZm9yd2FyZCkkIiBlcnJvciB8fCByZWZfcmV0PTEKKwkJCTs7CisJCSdmZXRjaC1maXJzdCcpCisJCQlncmVwICJeICEgXFtyZWplY3RlZFxdICoke2JyYW5jaH0gLT4gJHticmFuY2h9IChmZXRjaCBmaXJzdCkkIiBlcnJvciB8fCByZWZfcmV0PTEKKwkJCTs7CisJCSdmb3JjZWQtdXBkYXRlJykKKwkJCWdyZXAgIl4gKyBbYS1mMC05XSpcLlwuXC5bYS1mMC05XSogKiR7YnJhbmNofSAtPiAke2JyYW5jaH0gKGZvcmNlZCB1cGRhdGUpJCIgZXJyb3IgfHwgcmVmX3JldD0xCisJCQk7OworCQknJykKKwkJCWdyZXAgIl4gICBbYS1mMC05XSpcLlwuW2EtZjAtOV0qICoke2JyYW5jaH0gLT4gJHticmFuY2h9JCIgZXJyb3IgfHwgcmVmX3JldD0xCisJCQk7OworCQllc2FjCisJCWxldCAncmVmX3JldCcgJiYgZWNobyAibWF0Y2ggZm9yICckYnJhbmNoJyBmYWlsZWQiICYmIGJyZWFrCisJZG9uZQorCisJaWYgbGV0ICdleHBlY3RlZF9yZXQgIT0gcmV0IHx8IHJlZl9yZXQnCisJdGhlbgorCQlyZXR1cm4gMQorCWZpCisKKwlyZXR1cm4gMAorfQorCiBzZXR1cCAoKSB7CiAJKAogCWVjaG8gIlt1aV0iCiAJZWNobyAidXNlcm5hbWUgPSBIIEcgV2VsbHMgPHdlbGxzQGV4YW1wbGUuY29tPiIKLQkpID4+ICIkSE9NRSIvLmhncmMKKwllY2hvICJbZXh0ZW5zaW9uc10iCisJZWNobyAibXEgPSIKKwkpID4+ICIkSE9NRSIvLmhncmMgJiYKKworCUdJVF9BVVRIT1JfREFURT0iMjAwNy0wMS0wMSAwMDowMDowMCArMDIzMCIgJiYKKwlHSVRfQ09NTUlUVEVSX0RBVEU9IiRHSVRfQVVUSE9SX0RBVEUiICYmCisJZXhwb3J0IEdJVF9DT01NSVRURVJfREFURSBHSVRfQVVUSE9SX0RBVEUKIH0KIAogc2V0dXAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZycgJwotICB0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKIAotICAoCi0gIGhnIGluaXQgaGdyZXBvICYmCi0gIGNkIGhncmVwbyAmJgotICBlY2hvIHplcm8gPiBjb250ZW50ICYmCi0gIGhnIGFkZCBjb250ZW50ICYmCi0gIGhnIGNvbW1pdCAtbSB6ZXJvCi0gICkgJiYKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKwllY2hvIHplcm8gPiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gemVybworCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBjaGVjayBnaXRyZXBvIHplcm8gbWFzdGVyCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJY2hlY2sgZ2l0cmVwbyBIRUFEIHplcm8KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGJyYW5jaGVzJyAnCi0gIHRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgogCi0gICgKLSAgY2QgaGdyZXBvICYmCi0gIGhnIGJyYW5jaCBuZXh0ICYmCi0gIGVjaG8gbmV4dCA+IGNvbnRlbnQgJiYKLSAgaGcgY29tbWl0IC1tIG5leHQKLSAgKSAmJgorCSgKKwljZCBoZ3JlcG8gJiYKKwloZyBicmFuY2ggbmV4dCAmJgorCWVjaG8gbmV4dCA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gbmV4dAorCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBjaGVjayBnaXRyZXBvIG5leHQgbmV4dCAmJgotCi0gIChjZCBoZ3JlcG8gJiYgaGcgY2hlY2tvdXQgZGVmYXVsdCkgJiYKLQotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbzIgJiYKLSAgY2hlY2sgZ2l0cmVwbzIgemVybyBtYXN0ZXIKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIG9yaWdpbi9icmFuY2hlcy9uZXh0IG5leHQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGJvb2ttYXJrcycgJwotICB0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKIAotICAoCi0gIGNkIGhncmVwbyAmJgotICBoZyBib29rbWFyayBmZWF0dXJlLWEgJiYKLSAgZWNobyBmZWF0dXJlLWEgPiBjb250ZW50ICYmCi0gIGhnIGNvbW1pdCAtbSBmZWF0dXJlLWEKLSAgKSAmJgorCSgKKwljZCBoZ3JlcG8gJiYKKwloZyBjaGVja291dCBkZWZhdWx0ICYmCisJaGcgYm9va21hcmsgZmVhdHVyZS1hICYmCisJZWNobyBmZWF0dXJlLWEgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIGZlYXR1cmUtYQorCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBjaGVjayBnaXRyZXBvIGZlYXR1cmUtYSBmZWF0dXJlLWEKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGRldGFjaGVkIGhlYWQnICcKLSAgdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCi0KLSAgKAotICBjZCBoZ3JlcG8gJiYKLSAgaGcgdXBkYXRlIC1yIDAKLSAgKSAmJgotCi0gIGdpdCBjbG9uZSAiaGc6OiRQV0QvaGdyZXBvIiBnaXRyZXBvICYmCi0gIGNoZWNrIGdpdHJlcG8gemVybyBtYXN0ZXIKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIG9yaWdpbi9mZWF0dXJlLWEgZmVhdHVyZS1hCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBib29rbWFyaycgJwotICB0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKIAotICAoCi0gIGNkIGhncmVwbyAmJgotICBoZyBib29rbWFyayBkZXZlbAotICApICYmCisJKAorCWNkIGhncmVwbyAmJgorCWhnIGJvb2ttYXJrIGRldmVsCisJKSAmJgogCi0gICgKLSAgZ2l0IGNsb25lICJoZzo6JFBXRC9oZ3JlcG8iIGdpdHJlcG8gJiYKLSAgY2QgZ2l0cmVwbyAmJgotICBnaXQgY2hlY2tvdXQgZGV2ZWwgJiYKLSAgZWNobyBkZXZlbCA+IGNvbnRlbnQgJiYKLSAgZ2l0IGNvbW1pdCAtYSAtbSBkZXZlbCAmJgotICBnaXQgcHVzaAotICApICYmCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2hlY2tvdXQgLS1xdWlldCBkZXZlbCAmJgorCWVjaG8gZGV2ZWwgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBkZXZlbCAmJgorCWdpdCBwdXNoIC0tcXVpZXQKKwkpICYmCiAKLSAgaGcgLVIgaGdyZXBvIGJvb2ttYXJrcyB8IGVncmVwICJkZXZlbFsJIF0rMzoiCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGRldmVsIGRldmVsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25ldyBib29rbWFyaycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2hlY2tvdXQgLS1xdWlldCAtYiBmZWF0dXJlLWIgJiYKKwllY2hvIGZlYXR1cmUtYiA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGZlYXR1cmUtYiAmJgorCWdpdCBwdXNoIC0tcXVpZXQgb3JpZ2luIGZlYXR1cmUtYgorCSkgJiYKKworCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBmZWF0dXJlLWIgZmVhdHVyZS1iCisnCisKKyMgY2xlYW51cCBwcmV2aW91cyBzdHVmZgorcm0gLXJmIGhncmVwbworCithdXRob3JfdGVzdCAoKSB7CisJZWNobyAkMSA+PiBjb250ZW50ICYmCisJaGcgY29tbWl0IC11ICIkMiIgLW0gImFkZCAkMSIgJiYKKwllY2hvICIkMyIgPj4gLi4vZXhwZWN0ZWQKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXV0aG9ycycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisKKwl0b3VjaCBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKworCT4gLi4vZXhwZWN0ZWQgJiYKKwlhdXRob3JfdGVzdCBhbHBoYSAiIiAiSCBHIFdlbGxzIDx3ZWxsc0BleGFtcGxlLmNvbT4iICYmCisJYXV0aG9yX3Rlc3QgYmV0YSAidGVzdCIgInRlc3QgPHVua25vd24+IiAmJgorCWF1dGhvcl90ZXN0IGJldGEgInRlc3QgPHRlc3RAZXhhbXBsZS5jb20+IChjb21tZW50KSIgInRlc3QgPHRlc3RAZXhhbXBsZS5jb20+IiAmJgorCWF1dGhvcl90ZXN0IGdhbW1hICI8dGVzdEBleGFtcGxlLmNvbT4iICJVbmtub3duIDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKwlhdXRob3JfdGVzdCBkZWx0YSAibmFtZTx0ZXN0QGV4YW1wbGUuY29tPiIgIm5hbWUgPHRlc3RAZXhhbXBsZS5jb20+IiAmJgorCWF1dGhvcl90ZXN0IGVwc2lsb24gIm5hbWUgPHRlc3RAZXhhbXBsZS5jb20iICJuYW1lIDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKwlhdXRob3JfdGVzdCB6ZXRhICIgdGVzdCAiICJ0ZXN0IDx1bmtub3duPiIgJiYKKwlhdXRob3JfdGVzdCBldGEgInRlc3QgPCB0ZXN0QGV4YW1wbGUuY29tID4iICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKwlhdXRob3JfdGVzdCB0aGV0YSAidGVzdCA+dGVzdEBleGFtcGxlLmNvbT4iICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKwlhdXRob3JfdGVzdCBpb3RhICJ0ZXN0IDwgdGVzdCA8YXQ+IGV4YW1wbGUgPGRvdD4gY29tPiIgInRlc3QgPHVua25vd24+IiAmJgorCWF1dGhvcl90ZXN0IGthcHBhICJ0ZXN0QGV4YW1wbGUuY29tIiAiVW5rbm93biA8dGVzdEBleGFtcGxlLmNvbT4iCisJKSAmJgorCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJZ2l0IC0tZ2l0LWRpcj1naXRyZXBvLy5naXQgbG9nIC0tcmV2ZXJzZSAtLWZvcm1hdD0iJWFuIDwlYWU+IiA+IGFjdHVhbCAmJgorCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0cmlwJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgaGdyZXBvIGdpdHJlcG8iICYmCisKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKworCWVjaG8gb25lID4+IGNvbnRlbnQgJiYKKwloZyBhZGQgY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSBvbmUgJiYKKworCWVjaG8gdHdvID4+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gdHdvCisJKSAmJgorCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisKKwkoCisJY2QgaGdyZXBvICYmCisJaGcgc3RyaXAgMSAmJgorCisJZWNobyB0aHJlZSA+PiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHRocmVlICYmCisKKwllY2hvIGZvdXIgPj4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSBmb3VyCisJKSAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgZmV0Y2ggJiYKKwlnaXQgbG9nIC0tZm9ybWF0PSIlcyIgb3JpZ2luL21hc3RlciA+IC4uL2FjdHVhbAorCSkgJiYKKworCWhnIC1SIGhncmVwbyBsb2cgLS10ZW1wbGF0ZSAie2Rlc2N9XG4iID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBhY3R1YWwgZXhwZWN0ZWQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3RlIHB1c2ggd2l0aCBtYXN0ZXIgYm9va21hcmsnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBoZ3JlcG8gZ2l0cmVwbyoiICYmCisKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKwllY2hvIHplcm8gPiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gemVybyAmJgorCWhnIGJvb2ttYXJrIG1hc3RlciAmJgorCWVjaG8gb25lID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSBvbmUKKwkpICYmCisKKwkoCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWVjaG8gdHdvID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gdHdvICYmCisJZ2l0IHB1c2gKKwkpICYmCisKKwljaGVja19icmFuY2ggaGdyZXBvIGRlZmF1bHQgdHdvCisnCisKK2NhdCA+IGV4cGVjdGVkIDw8RU9GCitjaGFuZ2VzZXQ6ICAgMDo2ZTIxMjY0ODlkM2QKK3RhZzogICAgICAgICB0aXAKK3VzZXI6ICAgICAgICBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorZGF0ZTogICAgICAgIE1vbiBKYW4gMDEgMDA6MDA6MDAgMjAwNyArMDIzMAorc3VtbWFyeTogICAgIG9uZQorCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3RlIHB1c2ggZnJvbSBtYXN0ZXIgYnJhbmNoJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgaGdyZXBvIGdpdHJlcG8qIiAmJgorCisJaGcgaW5pdCBoZ3JlcG8gJiYKKworCSgKKwlnaXQgaW5pdCBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWdpdCByZW1vdGUgYWRkIG9yaWdpbiAiaGc6Oi4uL2hncmVwbyIgJiYKKwllY2hvIG9uZSA+IGNvbnRlbnQgJiYKKwlnaXQgYWRkIGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIG9uZSAmJgorCWdpdCBwdXNoIG9yaWdpbiBtYXN0ZXIKKwkpICYmCisKKwloZyAtUiBoZ3JlcG8gbG9nID4gYWN0dWFsICYmCisJY2F0IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgorCisJY2hlY2tfYnJhbmNoIGhncmVwbyBkZWZhdWx0IG9uZQorJworCitHSVRfUkVNT1RFX0hHX1RFU1RfUkVNT1RFPTEKK2V4cG9ydCBHSVRfUkVNT1RFX0hHX1RFU1RfUkVNT1RFCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBjbG9uaW5nJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKwllY2hvIHplcm8gPiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gemVybworCSkgJiYKKworCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNoZWNrIGdpdHJlcG8gSEVBRCB6ZXJvCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSB1cGRhdGUgYm9va21hcmsnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKworCSgKKwljZCBoZ3JlcG8gJiYKKwloZyBib29rbWFyayBkZXZlbAorCSkgJiYKKworCSgKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZ2l0IGNoZWNrb3V0IC0tcXVpZXQgZGV2ZWwgJiYKKwllY2hvIGRldmVsID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gZGV2ZWwgJiYKKwlnaXQgcHVzaCAtLXF1aWV0CisJKSAmJgorCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGRldmVsIGRldmVsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBuZXcgYm9va21hcmsnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKworCSgKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZ2l0IGNoZWNrb3V0IC0tcXVpZXQgLWIgZmVhdHVyZS1iICYmCisJZWNobyBmZWF0dXJlLWIgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBmZWF0dXJlLWIgJiYKKwlnaXQgcHVzaCAtLXF1aWV0IG9yaWdpbiBmZWF0dXJlLWIKKwkpICYmCisKKwljaGVja19ib29rbWFyayBoZ3JlcG8gZmVhdHVyZS1iIGZlYXR1cmUtYgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgcHVzaCBkaXZlcmdlZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisKKwkoCisJY2QgaGdyZXBvICYmCisJaGcgY2hlY2tvdXQgZGVmYXVsdCAmJgorCWVjaG8gYnVtcCA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gYnVtcAorCSkgJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZWNobyBkaXZlcmdlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gZGl2ZXJnZWQgJiYKKwljaGVja19wdXNoIDEgPDwtRU9GCisJbWFzdGVyOm5vbi1mYXN0LWZvcndhcmQKKwlFT0YKKwkpICYmCisKKwljaGVja19icmFuY2ggaGdyZXBvIGRlZmF1bHQgYnVtcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgdXBkYXRlIGJvb2ttYXJrIGRpdmVyZ2UnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKworCSgKKwljZCBoZ3JlcG8gJiYKKwloZyBjaGVja291dCB0aXBeICYmCisJaGcgYm9va21hcmsgZGl2ZXJnZQorCSkgJiYKKworCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCisJKAorCWNkIGhncmVwbyAmJgorCWVjaG8gImJ1bXAgYm9va21hcmsiID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSAiYnVtcCBib29rbWFyayIKKwkpICYmCisKKwkoCisJY2QgZ2l0cmVwbyAmJgorCWdpdCBjaGVja291dCAtLXF1aWV0IGRpdmVyZ2UgJiYKKwllY2hvIGRpdmVyZ2UgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBkaXZlcmdlICYmCisJY2hlY2tfcHVzaCAxIDw8LUVPRgorCWRpdmVyZ2U6ZmV0Y2gtZmlyc3QKKwlFT0YKKwkpICYmCisKKwljaGVja19ib29rbWFyayBoZ3JlcG8gZGl2ZXJnZSAiYnVtcCBib29rbWFyayIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3RlIG5ldyBib29rbWFyayBtdWx0aXBsZSBicmFuY2ggaGVhZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2hlY2tvdXQgLS1xdWlldCAtYiBmZWF0dXJlLWMgSEVBRF4gJiYKKwllY2hvIGZlYXR1cmUtYyA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGZlYXR1cmUtYyAmJgorCWdpdCBwdXNoIC0tcXVpZXQgb3JpZ2luIGZlYXR1cmUtYworCSkgJiYKKworCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBmZWF0dXJlLWMgZmVhdHVyZS1jCisnCisKKyMgY2xlYW51cCBwcmV2aW91cyBzdHVmZgorcm0gLXJmIGhncmVwbworCitzZXR1cF9iaWdfcHVzaCAoKSB7CisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisJZWNobyB6ZXJvID4gY29udGVudCAmJgorCWhnIGFkZCBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHplcm8gJiYKKwloZyBib29rbWFyayBiYWRfYm1hcmsxICYmCisJZWNobyBvbmUgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIG9uZSAmJgorCWhnIGJvb2ttYXJrIGJhZF9ibWFyazIgJiYKKwloZyBib29rbWFyayBnb29kX2JtYXJrICYmCisJaGcgYm9va21hcmsgLWkgZ29vZF9ibWFyayAmJgorCWhnIC1xIGJyYW5jaCBnb29kX2JyYW5jaCAmJgorCWVjaG8gImdvb2QgYnJhbmNoIiA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gImdvb2QgYnJhbmNoIiAmJgorCWhnIC1xIGJyYW5jaCBiYWRfYnJhbmNoICYmCisJZWNobyAiYmFkIGJyYW5jaCIgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tICJiYWQgYnJhbmNoIgorCSkgJiYKKworCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwllY2hvIHR3byA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIHR3byAmJgorCisJZ2l0IGNoZWNrb3V0IC1xIGdvb2RfYm1hcmsgJiYKKwllY2hvIHRocmVlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gdGhyZWUgJiYKKworCWdpdCBjaGVja291dCAtcSBiYWRfYm1hcmsxICYmCisJZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgorCWVjaG8gZm91ciA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIGZvdXIgJiYKKworCWdpdCBjaGVja291dCAtcSBiYWRfYm1hcmsyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgorCWVjaG8gZml2ZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIGZpdmUgJiYKKworCWdpdCBjaGVja291dCAtcSAtYiBuZXdfYm1hcmsgbWFzdGVyICYmCisJZWNobyBzaXggPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBzaXggJiYKKworCWdpdCBjaGVja291dCAtcSBicmFuY2hlcy9nb29kX2JyYW5jaCAmJgorCWVjaG8gc2V2ZW4gPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBzZXZlbiAmJgorCWVjaG8gZWlnaHQgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBlaWdodCAmJgorCisJZ2l0IGNoZWNrb3V0IC1xIGJyYW5jaGVzL2JhZF9icmFuY2ggJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCisJZWNobyBuaW5lID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gbmluZSAmJgorCisJZ2l0IGNoZWNrb3V0IC1xIC1iIGJyYW5jaGVzL25ld19icmFuY2ggbWFzdGVyICYmCisJZWNobyB0ZW4gPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSB0ZW4KKwkpCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBiaWcgcHVzaCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvKiIgJiYKKworCXNldHVwX2JpZ19wdXNoCisKKwkoCisJY2QgZ2l0cmVwbyAmJgorCisJY2hlY2tfcHVzaCAxIC0tYWxsIDw8LUVPRgorCW1hc3RlcgorCWdvb2RfYm1hcmsKKwlicmFuY2hlcy9nb29kX2JyYW5jaAorCW5ld19ibWFyazpuZXcKKwlicmFuY2hlcy9uZXdfYnJhbmNoOm5ldworCWJhZF9ibWFyazE6bm9uLWZhc3QtZm9yd2FyZAorCWJhZF9ibWFyazI6bm9uLWZhc3QtZm9yd2FyZAorCWJyYW5jaGVzL2JhZF9icmFuY2g6bm9uLWZhc3QtZm9yd2FyZAorCUVPRgorCSkgJiYKKworCWNoZWNrX2JyYW5jaCBoZ3JlcG8gZGVmYXVsdCBvbmUgJiYKKwljaGVja19icmFuY2ggaGdyZXBvIGdvb2RfYnJhbmNoICJnb29kIGJyYW5jaCIgJiYKKwljaGVja19icmFuY2ggaGdyZXBvIGJhZF9icmFuY2ggImJhZCBicmFuY2giICYmCisJY2hlY2tfYnJhbmNoIGhncmVwbyBuZXdfYnJhbmNoICcnICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGdvb2RfYm1hcmsgb25lICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGJhZF9ibWFyazEgb25lICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGJhZF9ibWFyazIgb25lICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIG5ld19ibWFyayAnJworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgYmlnIHB1c2ggZmV0Y2ggZmlyc3QnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBoZ3JlcG8gZ2l0cmVwbyoiICYmCisKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKwllY2hvIHplcm8gPiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gemVybyAmJgorCWhnIGJvb2ttYXJrIGJhZF9ibWFyayAmJgorCWhnIGJvb2ttYXJrIGdvb2RfYm1hcmsgJiYKKwloZyBib29rbWFyayAtaSBnb29kX2JtYXJrICYmCisJaGcgLXEgYnJhbmNoIGdvb2RfYnJhbmNoICYmCisJZWNobyAiZ29vZCBicmFuY2giID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSAiZ29vZCBicmFuY2giICYmCisJaGcgLXEgYnJhbmNoIGJhZF9icmFuY2ggJiYKKwllY2hvICJiYWQgYnJhbmNoIiA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gImJhZCBicmFuY2giCisJKSAmJgorCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisKKwkoCisJY2QgaGdyZXBvICYmCisJaGcgYm9va21hcmsgLWYgYmFkX2JtYXJrICYmCisJZWNobyB1cGRhdGVfYm1hcmsgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tICJ1cGRhdGUgYm1hcmsiCisJKSAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwllY2hvIHR3byA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIHR3byAmJgorCisJZ2l0IGNoZWNrb3V0IC1xIGdvb2RfYm1hcmsgJiYKKwllY2hvIHRocmVlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gdGhyZWUgJiYKKworCWdpdCBjaGVja291dCAtcSBiYWRfYm1hcmsgJiYKKwllY2hvIGZvdXIgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBmb3VyICYmCisKKwlnaXQgY2hlY2tvdXQgLXEgYnJhbmNoZXMvYmFkX2JyYW5jaCAmJgorCWVjaG8gZml2ZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIGZpdmUgJiYKKworCWNoZWNrX3B1c2ggMSAtLWFsbCA8PC1FT0YKKwltYXN0ZXIKKwlnb29kX2JtYXJrCisJbmV3X2JtYXJrOm5ldworCW5ld19icmFuY2g6bmV3CisJYmFkX2JtYXJrOmZldGNoLWZpcnN0CisJYnJhbmNoZXMvYmFkX2JyYW5jaDpmZXN0Y2gtZmlyc3QKKwlFT0YKKworCWdpdCBmZXRjaCAmJgorCisJY2hlY2tfcHVzaCAxIC0tYWxsIDw8LUVPRgorCW1hc3RlcgorCWdvb2RfYm1hcmsKKwliYWRfYm1hcms6bm9uLWZhc3QtZm9yd2FyZAorCWJyYW5jaGVzL2JhZF9icmFuY2g6bm9uLWZhc3QtZm9yd2FyZAorCUVPRgorCSkKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAncmVtb3RlIGJpZyBwdXNoIGZvcmNlJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgaGdyZXBvIGdpdHJlcG8qIiAmJgorCisJc2V0dXBfYmlnX3B1c2gKKworCSgKKwljZCBnaXRyZXBvICYmCisKKwljaGVja19wdXNoIDAgLS1mb3JjZSAtLWFsbCA8PC1FT0YKKwltYXN0ZXIKKwlnb29kX2JtYXJrCisJYnJhbmNoZXMvZ29vZF9icmFuY2gKKwluZXdfYm1hcms6bmV3CisJYnJhbmNoZXMvbmV3X2JyYW5jaDpuZXcKKwliYWRfYm1hcmsxOmZvcmNlZC11cGRhdGUKKwliYWRfYm1hcmsyOmZvcmNlZC11cGRhdGUKKwlicmFuY2hlcy9iYWRfYnJhbmNoOmZvcmNlZC11cGRhdGUKKwlFT0YKKwkpICYmCisKKwljaGVja19icmFuY2ggaGdyZXBvIGRlZmF1bHQgc2l4ICYmCisJY2hlY2tfYnJhbmNoIGhncmVwbyBnb29kX2JyYW5jaCBlaWdodCAmJgorCWNoZWNrX2JyYW5jaCBoZ3JlcG8gYmFkX2JyYW5jaCBuaW5lICYmCisJY2hlY2tfYnJhbmNoIGhncmVwbyBuZXdfYnJhbmNoIHRlbiAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBnb29kX2JtYXJrIHRocmVlICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGJhZF9ibWFyazEgZm91ciAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBiYWRfYm1hcmsyIGZpdmUgJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gbmV3X2JtYXJrIHNpeAorJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdyZW1vdGUgYmlnIHB1c2ggZHJ5LXJ1bicgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvKiIgJiYKKworCXNldHVwX2JpZ19wdXNoCisKKwkoCisJY2QgZ2l0cmVwbyAmJgorCisJY2hlY2tfcHVzaCAwIC0tZHJ5LXJ1biAtLWFsbCA8PC1FT0YKKwltYXN0ZXIKKwlnb29kX2JtYXJrCisJYnJhbmNoZXMvZ29vZF9icmFuY2gKKwluZXdfYm1hcms6bmV3CisJYnJhbmNoZXMvbmV3X2JyYW5jaDpuZXcKKwliYWRfYm1hcmsxOm5vbi1mYXN0LWZvcndhcmQKKwliYWRfYm1hcmsyOm5vbi1mYXN0LWZvcndhcmQKKwlicmFuY2hlcy9iYWRfYnJhbmNoOm5vbi1mYXN0LWZvcndhcmQKKwlFT0YKKworCWNoZWNrX3B1c2ggMCAtLWRyeS1ydW4gbWFzdGVyIGdvb2RfYm1hcmsgbmV3X2JtYXJrIGJyYW5jaGVzL2dvb2RfYnJhbmNoIGJyYW5jaGVzL25ld19icmFuY2ggPDwtRU9GCisJbWFzdGVyCisJZ29vZF9ibWFyaworCWJyYW5jaGVzL2dvb2RfYnJhbmNoCisJbmV3X2JtYXJrOm5ldworCWJyYW5jaGVzL25ld19icmFuY2g6bmV3CisJRU9GCisJKSAmJgorCisJY2hlY2tfYnJhbmNoIGhncmVwbyBkZWZhdWx0IG9uZSAmJgorCWNoZWNrX2JyYW5jaCBoZ3JlcG8gZ29vZF9icmFuY2ggImdvb2QgYnJhbmNoIiAmJgorCWNoZWNrX2JyYW5jaCBoZ3JlcG8gYmFkX2JyYW5jaCAiYmFkIGJyYW5jaCIgJiYKKwljaGVja19icmFuY2ggaGdyZXBvIG5ld19icmFuY2ggJycgJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gZ29vZF9ibWFyayBvbmUgJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gYmFkX2JtYXJrMSBvbmUgJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gYmFkX2JtYXJrMiBvbmUgJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gbmV3X2JtYXJrICcnCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBkb3VibGUgZmFpbGVkIHB1c2gnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBoZ3JlcG8gZ2l0cmVwbyoiICYmCisKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKwllY2hvIHplcm8gPiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gemVybyAmJgorCWVjaG8gb25lID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSBvbmUKKwkpICYmCisKKwkoCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwllY2hvIHR3byA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHR3byAmJgorCXRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcHVzaCAmJgorCXRlc3RfZXhwZWN0X2NvZGUgMSBnaXQgcHVzaAorCSkKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS9jb250cmliL3N1YnRyZWUvTWFrZWZpbGUgYi9jb250cmliL3N1YnRyZWUvTWFrZWZpbGUKaW5kZXggMDVjZGQ1Yy4uYjUwNzUwNSAxMDA2NDQKLS0tIGEvY29udHJpYi9zdWJ0cmVlL01ha2VmaWxlCisrKyBiL2NvbnRyaWIvc3VidHJlZS9NYWtlZmlsZQpAQCAtMzAsMTIgKzMwLDEzIEBACiBkb2M6ICQoR0lUX1NVQlRSRUVfRE9DKQogCiBpbnN0YWxsOiAkKEdJVF9TVUJUUkVFKQotCSQoSU5TVEFMTCkgLW0gNzU1ICQoR0lUX1NVQlRSRUUpICQobGliZXhlY2RpcikKKwkkKElOU1RBTEwpIC1tIDc1NSAkKEdJVF9TVUJUUkVFKSAkKERFU1RESVIpJChsaWJleGVjZGlyKQogCiBpbnN0YWxsLWRvYzogaW5zdGFsbC1tYW4KIAogaW5zdGFsbC1tYW46ICQoR0lUX1NVQlRSRUVfRE9DKQotCSQoSU5TVEFMTCkgLW0gNjQ0ICReICQobWFuMWRpcikKKwkkKElOU1RBTEwpIC1kIC1tIDc1NSAkKERFU1RESVIpJChtYW4xZGlyKQorCSQoSU5TVEFMTCkgLW0gNjQ0ICReICQoREVTVERJUikkKG1hbjFkaXIpCiAKICQoR0lUX1NVQlRSRUVfRE9DKTogJChHSVRfU1VCVFJFRV9YTUwpCiAJeG1sdG8gLW0gJChNQU5QQUdFX05PUk1BTF9YU0wpICBtYW4gJF4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS5zaCBiL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS5zaAppbmRleCA5MjBjNjY0Li41MWFlOTMyIDEwMDc1NQotLS0gYS9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUuc2gKKysrIGIvY29udHJpYi9zdWJ0cmVlL2dpdC1zdWJ0cmVlLnNoCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS50eHQgYi9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUudHh0CmluZGV4IGM1YmNlNDEuLjdiYTg1M2UgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS50eHQKKysrIGIvY29udHJpYi9zdWJ0cmVlL2dpdC1zdWJ0cmVlLnR4dApAQCAtOSw3ICs5LDggQEAKIFNZTk9QU0lTCiAtLS0tLS0tLQogW3ZlcnNlXQotJ2dpdCBzdWJ0cmVlJyBhZGQgICAtUCA8cHJlZml4PiA8Y29tbWl0PgorJ2dpdCBzdWJ0cmVlJyBhZGQgICAtUCA8cHJlZml4PiA8cmVmc3BlYz4KKydnaXQgc3VidHJlZScgYWRkICAgLVAgPHByZWZpeD4gPHJlcG9zaXRvcnk+IDxyZWZzcGVjPgogJ2dpdCBzdWJ0cmVlJyBwdWxsICAtUCA8cHJlZml4PiA8cmVwb3NpdG9yeT4gPHJlZnNwZWMuLi4+CiAnZ2l0IHN1YnRyZWUnIHB1c2ggIC1QIDxwcmVmaXg+IDxyZXBvc2l0b3J5PiA8cmVmc3BlYy4uLj4KICdnaXQgc3VidHJlZScgbWVyZ2UgLVAgPHByZWZpeD4gPGNvbW1pdD4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3VidHJlZS90L3Q3OTAwLXN1YnRyZWUuc2ggYi9jb250cmliL3N1YnRyZWUvdC90NzkwMC1zdWJ0cmVlLnNoCmluZGV4IGJjMmVlYjAuLmIwZjg1MzYgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvc3VidHJlZS90L3Q3OTAwLXN1YnRyZWUuc2gKKysrIGIvY29udHJpYi9zdWJ0cmVlL3QvdDc5MDAtc3VidHJlZS5zaApAQCAtNjAsNyArNjAsNiBAQAogCWdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiVzIC0xCiB9CiAKLSMgMQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCBzdWJwcm9qJyAnCiAgICAgICAgIHRlc3RfY3JlYXRlX3JlcG8gc3VicHJvagogJwpAQCAtNjgsNyArNjcsNiBAQAogIyBUbyB0aGUgc3VicHJvamVjdCEKIGNkIHN1YnByb2oKIAotIyAyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViMScgJwogICAgICAgICBjcmVhdGUgc3ViMSAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJzdWIxIiAmJgpAQCAtNzYsMTQgKzc0LDE2IEBACiAgICAgICAgIGdpdCBicmFuY2ggLW0gbWFzdGVyIHN1YnByb2oKICcKIAotIyAzCisjIFNhdmUgdGhpcyBoYXNoIGZvciB0ZXN0aW5nIGxhdGVyLgorCitzdWJkaXJfaGFzaD1gZ2l0IHJldi1wYXJzZSBIRUFEYAorCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViMicgJwogICAgICAgICBjcmVhdGUgc3ViMiAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJzdWIyIiAmJgogICAgICAgICBnaXQgYnJhbmNoIHN1YjIKICcKIAotIyA0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViMycgJwogICAgICAgICBjcmVhdGUgc3ViMyAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJzdWIzIiAmJgpAQCAtOTMsNyArOTMsNiBAQAogIyBCYWNrIHRvIG1haW5saW5lCiBjZCAuLgogCi0jIDUKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluNCcgJwogICAgICAgICBjcmVhdGUgbWFpbjQgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbjQiICYmCkBAIC0xMDEsMTAxICsxMDAsODUgQEAKICAgICAgICAgZ2l0IGJyYW5jaCBzdWJkaXIKICcKIAotIyA2CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBzdWJwcm9qIGhpc3RvcnknICcKICAgICAgICAgZ2l0IGZldGNoIC4vc3VicHJvaiBzdWIxICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3ViMSBGRVRDSF9IRUFECiAnCiAKLSMgNwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gc3VidHJlZSBleGlzdHMgaW4gbWFpbiB0cmVlJyAnCiAgICAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJ0cmVlIG1lcmdlIC0tcHJlZml4PXN1YmRpciBzdWIxCiAnCiAKLSMgOAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gcHVsbCBmcm9tIG5vbi1leGlzdGFudCBzdWJ0cmVlJyAnCiAgICAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJ0cmVlIHB1bGwgLS1wcmVmaXg9c3ViZGlyIC4vc3VicHJvaiBzdWIxCiAnCiAKLSMgOQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaWYgLS1tZXNzYWdlIHdvcmtzIGZvciBhZGQnICcKICAgICAgICAgZ2l0IHN1YnRyZWUgYWRkIC0tcHJlZml4PXN1YmRpciAtLW1lc3NhZ2U9IkFkZGVkIHN1YnByb2plY3QiIHN1YjEgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChsYXN0X2NvbW1pdF9tZXNzYWdlKSInJyAiQWRkZWQgc3VicHJvamVjdCIgJiYKICAgICAgICAgdW5kbwogJwogCi0jIDEwCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBpZiAtLW1lc3NhZ2Ugd29ya3MgYXMgLW0gYW5kIC0tcHJlZml4IGFzIC1QJyAnCiAgICAgICAgIGdpdCBzdWJ0cmVlIGFkZCAtUCBzdWJkaXIgLW0gIkFkZGVkIHN1YnByb2plY3QgdXNpbmcgZ2l0IHN1YnRyZWUiIHN1YjEgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChsYXN0X2NvbW1pdF9tZXNzYWdlKSInJyAiQWRkZWQgc3VicHJvamVjdCB1c2luZyBnaXQgc3VidHJlZSIgJiYKICAgICAgICAgdW5kbwogJwogCi0jIDExCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBpZiAtLW1lc3NhZ2Ugd29ya3Mgd2l0aCBzcXVhc2ggdG9vJyAnCiAgICAgICAgIGdpdCBzdWJ0cmVlIGFkZCAtUCBzdWJkaXIgLW0gIkFkZGVkIHN1YnByb2plY3Qgd2l0aCBzcXVhc2giIC0tc3F1YXNoIHN1YjEgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChsYXN0X2NvbW1pdF9tZXNzYWdlKSInJyAiQWRkZWQgc3VicHJvamVjdCB3aXRoIHNxdWFzaCIgJiYKICAgICAgICAgdW5kbwogJwogCi0jIDEyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3VicHJvaiB0byBtYWlubGluZScgJwogICAgICAgICBnaXQgc3VidHJlZSBhZGQgLS1wcmVmaXg9c3ViZGlyLyBGRVRDSF9IRUFEICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIkFkZCAnIidzdWJkaXIvJyInIGZyb20gY29tbWl0ICciJyInJyciJChnaXQgcmV2LXBhcnNlIHN1YjEpIicnJyInIiciCiAnCiAKLSMgMTMKICMgdGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcsIHNpbmNlIEZFVENIX0hFQUQgaXMgYWxyZWFkeSBhIHBhcmVudAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgZmV0Y2hlZCBzdWJwcm9qJyAnCiAgICAgICAgIGdpdCBtZXJnZSAtbSAibWVyZ2UgLXMgLW91cnMiIC1zIG91cnMgRkVUQ0hfSEVBRAogJwogCi0jIDE0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbi1zdWI1JyAnCiAgICAgICAgIGNyZWF0ZSBzdWJkaXIvbWFpbi1zdWI1ICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gIm1haW4tc3ViNSIKICcKIAotIyAxNQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIG1haW42JyAnCiAgICAgICAgIGNyZWF0ZSBtYWluNiAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJtYWluNiBib3JpbmciCiAnCiAKLSMgMTYKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluLXN1YjcnICcKICAgICAgICAgY3JlYXRlIHN1YmRpci9tYWluLXN1YjcgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbi1zdWI3IgogJwogCi0jIDE3CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBuZXcgc3VicHJvaiBoaXN0b3J5JyAnCiAgICAgICAgIGdpdCBmZXRjaCAuL3N1YnByb2ogc3ViMiAmJgogICAgICAgICBnaXQgYnJhbmNoIHN1YjIgRkVUQ0hfSEVBRAogJwogCi0jIDE4CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBpZiAtLW1lc3NhZ2Ugd29ya3MgZm9yIG1lcmdlJyAnCiAgICAgICAgIGdpdCBzdWJ0cmVlIG1lcmdlIC0tcHJlZml4PXN1YmRpciAtbSAiTWVyZ2VkIGNoYW5nZXMgZnJvbSBzdWJwcm9qZWN0IiBzdWIyICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIk1lcmdlZCBjaGFuZ2VzIGZyb20gc3VicHJvamVjdCIgJiYKICAgICAgICAgdW5kbwogJwogCi0jIDE5CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBpZiAtLW1lc3NhZ2UgZm9yIG1lcmdlIHdvcmtzIHdpdGggc3F1YXNoIHRvbycgJwogICAgICAgICBnaXQgc3VidHJlZSBtZXJnZSAtLXByZWZpeCBzdWJkaXIgLW0gIk1lcmdlZCBjaGFuZ2VzIGZyb20gc3VicHJvamVjdCB1c2luZyBzcXVhc2giIC0tc3F1YXNoIHN1YjIgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChsYXN0X2NvbW1pdF9tZXNzYWdlKSInJyAiTWVyZ2VkIGNoYW5nZXMgZnJvbSBzdWJwcm9qZWN0IHVzaW5nIHNxdWFzaCIgJiYKICAgICAgICAgdW5kbwogJwogCi0jIDIwCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBuZXcgc3VicHJvaiBoaXN0b3J5IGludG8gc3ViZGlyJyAnCiAgICAgICAgIGdpdCBzdWJ0cmVlIG1lcmdlIC0tcHJlZml4PXN1YmRpciBGRVRDSF9IRUFEICYmCiAgICAgICAgIGdpdCBicmFuY2ggcHJlLXNwbGl0ICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQobGFzdF9jb21taXRfbWVzc2FnZSkiJycgIk1lcmdlIGNvbW1pdCAnIiciJyIkKGdpdCByZXYtcGFyc2Ugc3ViMikiJyInIicgaW50byBtYWlubGluZSIKICcKIAotIyAyMQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQ2hlY2sgdGhhdCBwcmVmaXggYXJndW1lbnQgaXMgcmVxdWlyZWQgZm9yIHNwbGl0JyAnCiAgICAgICAgIGVjaG8gIllvdSBtdXN0IHByb3ZpZGUgdGhlIC0tcHJlZml4IG9wdGlvbi4iID4gZXhwZWN0ZWQgJiYKICAgICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1YnRyZWUgc3BsaXQgPiBhY3R1YWwgMj4mMSAmJgpAQCAtMjA3LDcgKzE5MCw2IEBACiAgICAgICAgIHJtIC1mIGV4cGVjdGVkIGFjdHVhbAogJwogCi0jIDIyCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdDaGVjayB0aGF0IHRoZSA8cHJlZml4PiBleGlzdHMgZm9yIGEgc3BsaXQnICcKICAgICAgICAgZWNobyAiJyInIidub24tZXhpc3RlbnQtZGlyZWN0b3J5JyInIiciIGRvZXMgbm90IGV4aXN0XDsgdXNlICInIiciJ2dpdCBzdWJ0cmVlIGFkZCciJyInIiA+IGV4cGVjdGVkICYmCiAgICAgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBzdWJ0cmVlIHNwbGl0IC0tcHJlZml4PW5vbi1leGlzdGVudC1kaXJlY3RvcnkgPiBhY3R1YWwgMj4mMSAmJgpAQCAtMjE5LDcgKzIwMSw2IEBACiAjICAgICAgICBybSAtZiBleHBlY3RlZCBhY3R1YWwKICcKIAotIyAyMwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgaWYgLS1tZXNzYWdlIHdvcmtzIGZvciBzcGxpdCtyZWpvaW4nICcKICAgICAgICAgc3BsMT0nJyIkKGdpdCBzdWJ0cmVlIHNwbGl0IC0tYW5ub3RhdGU9JyInKiciJyAtLXByZWZpeCBzdWJkaXIgLS1vbnRvIEZFVENIX0hFQUQgLS1tZXNzYWdlICJTcGxpdCAmIHJlam9pbiIgLS1yZWpvaW4pIicnICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3BsMSAiJHNwbDEiICYmCkBAIC0yMjcsMTUgKzIwOCwyNCBAQAogICAgICAgICB1bmRvCiAnCiAKLSMgMjQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHNwbGl0IHdpdGggLS1icmFuY2gnICcKLSAgICAgICAgc3BsMT0kKGdpdCBzdWJ0cmVlIHNwbGl0IC0tYW5ub3RhdGU9JyInKiciJyAtLXByZWZpeCBzdWJkaXIgLS1vbnRvIEZFVENIX0hFQUQgLS1tZXNzYWdlICJTcGxpdCAmIHJlam9pbiIgLS1yZWpvaW4pICYmCi0gICAgICAgIHVuZG8gJiYKLSAgICAgICAgZ2l0IHN1YnRyZWUgc3BsaXQgLS1hbm5vdGF0ZT0nIicqJyInIC0tcHJlZml4IHN1YmRpciAtLW9udG8gRkVUQ0hfSEVBRCAtLWJyYW5jaCBzcGxpdGJyMSAmJgotICAgICAgICBjaGVja19lcXVhbCAnJyIkKGdpdCByZXYtcGFyc2Ugc3BsaXRicjEpIicnICIkc3BsMSIKKwlzcGwxPSQoZ2l0IHN1YnRyZWUgc3BsaXQgLS1hbm5vdGF0ZT0nIicqJyInIC0tcHJlZml4IHN1YmRpciAtLW9udG8gRkVUQ0hfSEVBRCAtLW1lc3NhZ2UgIlNwbGl0ICYgcmVqb2luIiAtLXJlam9pbikgJiYKKwl1bmRvICYmCisJZ2l0IHN1YnRyZWUgc3BsaXQgLS1hbm5vdGF0ZT0nIicqJyInIC0tcHJlZml4IHN1YmRpciAtLW9udG8gRkVUQ0hfSEVBRCAtLWJyYW5jaCBzcGxpdGJyMSAmJgorCWNoZWNrX2VxdWFsICcnIiQoZ2l0IHJldi1wYXJzZSBzcGxpdGJyMSkiJycgIiRzcGwxIgogJwogCi0jIDI1Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBoYXNoIG9mIHNwbGl0JyAnCisJc3BsMT0kKGdpdCBzdWJ0cmVlIHNwbGl0IC0tcHJlZml4IHN1YmRpcikgJiYKKwl1bmRvICYmCisJZ2l0IHN1YnRyZWUgc3BsaXQgLS1wcmVmaXggc3ViZGlyIC0tYnJhbmNoIHNwbGl0YnIxdGVzdCAmJgorCWNoZWNrX2VxdWFsICcnIiQoZ2l0IHJldi1wYXJzZSBzcGxpdGJyMXRlc3QpIicnICIkc3BsMSIKKwlnaXQgY2hlY2tvdXQgc3BsaXRicjF0ZXN0ICYmCisJbmV3X2hhc2g9JChnaXQgcmV2LXBhcnNlIEhFQUR+MikgJiYKKwlnaXQgY2hlY2tvdXQgbWFpbmxpbmUgJiYKKwljaGVja19lcXVhbCAnJyIkbmV3X2hhc2giJycgIiRzdWJkaXJfaGFzaCIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgc3BsaXQgd2l0aCAtLWJyYW5jaCBmb3IgYW4gZXhpc3RpbmcgYnJhbmNoJyAnCiAgICAgICAgIHNwbDE9JyciJChnaXQgc3VidHJlZSBzcGxpdCAtLWFubm90YXRlPSciJyonIicgLS1wcmVmaXggc3ViZGlyIC0tb250byBGRVRDSF9IRUFEIC0tbWVzc2FnZSAiU3BsaXQgJiByZWpvaW4iIC0tcmVqb2luKSInJyAmJgogICAgICAgICB1bmRvICYmCkBAIC0yNDQsMTMgKzIzNCwxMCBAQAogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGdpdCByZXYtcGFyc2Ugc3BsaXRicjIpIicnICIkc3BsMSIKICcKIAotIyAyNgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgc3BsaXQgd2l0aCAtLWJyYW5jaCBmb3IgYW4gaW5jb21wYXRpYmxlIGJyYW5jaCcgJwogICAgICAgICB0ZXN0X211c3RfZmFpbCBnaXQgc3VidHJlZSBzcGxpdCAtLXByZWZpeCBzdWJkaXIgLS1vbnRvIEZFVENIX0hFQUQgLS1icmFuY2ggc3ViZGlyCiAnCiAKLQotIyAyNwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgc3BsaXQrcmVqb2luJyAnCiAgICAgICAgIHNwbDE9JyciJChnaXQgc3VidHJlZSBzcGxpdCAtLWFubm90YXRlPSciJyonIicgLS1wcmVmaXggc3ViZGlyIC0tb250byBGRVRDSF9IRUFEIC0tbWVzc2FnZSAiU3BsaXQgJiByZWpvaW4iIC0tcmVqb2luKSInJyAmJgogICAgICAgICB1bmRvICYmCkBAIC0yNTgsNyArMjQ1LDYgQEAKICAgICAgICAgY2hlY2tfZXF1YWwgJyciJChsYXN0X2NvbW1pdF9tZXNzYWdlKSInJyAiU3BsaXQgJyInIidzdWJkaXIvJyInIicgaW50byBjb21taXQgJyInIiciJHNwbDEiJyInIiciCiAnCiAKLSMgMjgKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluLXN1YjgnICcKICAgICAgICAgY3JlYXRlIHN1YmRpci9tYWluLXN1YjggJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbi1zdWI4IgpAQCAtMjY3LDE0ICsyNTMsMTIgQEAKICMgVG8gdGhlIHN1YnByb2plY3QhCiBjZCAuL3N1YnByb2oKIAotIyAyOQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2Ugc3BsaXQgaW50byBzdWJwcm9qJyAnCiAgICAgICAgIGdpdCBmZXRjaCAuLiBzcGwxICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3BsMSBGRVRDSF9IRUFEICYmCiAgICAgICAgIGdpdCBtZXJnZSBGRVRDSF9IRUFECiAnCiAKLSMgMzAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBzdWI5JyAnCiAgICAgICAgIGNyZWF0ZSBzdWI5ICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gInN1YjkiCkBAIC0yODMsMTkgKzI2NywxNiBAQAogIyBCYWNrIHRvIG1haW5saW5lCiBjZCAuLgogCi0jIDMxCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcGxpdCBmb3Igc3ViOCcgJwogICAgICAgICBzcGxpdDI9JyciJChnaXQgc3VidHJlZSBzcGxpdCAtLWFubm90YXRlPSciJyonIicgLS1wcmVmaXggc3ViZGlyLyAtLXJlam9pbikiJycKICAgICAgICAgZ2l0IGJyYW5jaCBzcGxpdDIgIiRzcGxpdDIiCiAnCiAKLSMgMzIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluLXN1YjEwJyAnCiAgICAgICAgIGNyZWF0ZSBzdWJkaXIvbWFpbi1zdWIxMCAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJtYWluLXN1YjEwIgogJwogCi0jIDMzCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcGxpdCBmb3Igc3ViMTAnICcKICAgICAgICAgc3BsMz0nJyIkKGdpdCBzdWJ0cmVlIHNwbGl0IC0tYW5ub3RhdGU9JyInKiciJyAtLXByZWZpeCBzdWJkaXIgLS1yZWpvaW4pIicnICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3BsMyAiJHNwbDMiCkBAIC0zMDQsNyArMjg1LDYgQEAKICMgVG8gdGhlIHN1YnByb2plY3QhCiBjZCAuL3N1YnByb2oKIAotIyAzNAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2Ugc3BsaXQgaW50byBzdWJwcm9qJyAnCiAgICAgICAgIGdpdCBmZXRjaCAuLiBzcGwzICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3BsMyBGRVRDSF9IRUFEICYmCkBAIC0zMTgsMTMgKzI5OCwxMSBAQAogY2hrcz0ic3ViMSBzdWIyIHN1YjMgc3ViOSIKIGNoa3Nfc3ViPSQoZWNobyAkY2hrcyB8IG11bHRpbGluZSB8IHNlZCAncyxeLHN1YmRpci8sJyB8IGZpeG5sKQogCi0jIDM1CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWtlIHN1cmUgZXhhY3RseSB0aGUgcmlnaHQgc2V0IG9mIGZpbGVzIGVuZHMgdXAgaW4gdGhlIHN1YnByb2onICcKICAgICAgICAgc3ViZmlsZXM9JyciJChnaXQgbHMtZmlsZXMgfCBmaXhubCkiJycgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgIiRzdWJmaWxlcyIgIiRjaGttcyAkY2hrcyIKICcKIAotIyAzNgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFrZSBzdXJlIHRoZSBzdWJwcm9qIGhpc3RvcnkgKm9ubHkqIGNvbnRhaW5zIGNvbW1pdHMgdGhhdCBhZmZlY3QgdGhlIHN1YmRpcicgJwogICAgICAgICBhbGxjaGFuZ2VzPScnIiQoZ2l0IGxvZyAtLW5hbWUtb25seSAtLXByZXR0eT1mb3JtYXQ6JyInJyInIHwgc29ydCB8IGZpeG5sKSInJyAmJgogICAgICAgICBjaGVja19lcXVhbCAiJGFsbGNoYW5nZXMiICIkY2hrbXMgJGNoa3MiCkBAIC0zMzMsMjAgKzMxMSwxNyBAQAogIyBCYWNrIHRvIG1haW5saW5lCiBjZCAuLgogCi0jIDM3CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdWxsIGZyb20gc3VicHJvaicgJwogICAgICAgICBnaXQgZmV0Y2ggLi9zdWJwcm9qIHN1YnByb2otbWVyZ2Utc3BsMyAmJgogICAgICAgICBnaXQgYnJhbmNoIHN1YnByb2otbWVyZ2Utc3BsMyBGRVRDSF9IRUFEICYmCiAgICAgICAgIGdpdCBzdWJ0cmVlIHB1bGwgLS1wcmVmaXg9c3ViZGlyIC4vc3VicHJvaiBzdWJwcm9qLW1lcmdlLXNwbDMKICcKIAotIyAzOAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFrZSBzdXJlIGV4YWN0bHkgdGhlIHJpZ2h0IHNldCBvZiBmaWxlcyBlbmRzIHVwIGluIHRoZSBtYWlubGluZScgJwogICAgICAgICBtYWluZmlsZXM9JyciJChnaXQgbHMtZmlsZXMgfCBmaXhubCkiJycgJiYKICAgICAgICAgY2hlY2tfZXF1YWwgIiRtYWluZmlsZXMiICIkY2hrbSAkY2hrbXNfc3ViICRjaGtzX3N1YiIKICcKIAotIyAzOQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFrZSBzdXJlIGVhY2ggZmlsZW5hbWUgY2hhbmdlZCBleGFjdGx5IG9uY2UgaW4gdGhlIGVudGlyZSBoaXN0b3J5JyAnCiAgICAgICAgICMgbWFpbi1zdWI/PyBhbmQgL3N1YmRpci9tYWluLXN1Yj8/IGJvdGggY2hhbmdlLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUKICAgICAgICAgIyBjaGFuZ2VzIHRoYXQgd2VyZSBzcGxpdCBpbnRvIHRoZWlyIG93biBoaXN0b3J5LiAgQW5kIHN1YmRpci9zdWI/PyBuZXZlcgpAQCAtMzU1LDEyICszMzAsMTAgQEAKICAgICAgICAgY2hlY2tfZXF1YWwgIiRhbGxjaGFuZ2VzIiAnJyIkKGVjaG8gJGNoa21zICRjaGttICRjaGtzICRjaGttc19zdWIgfCBtdWx0aWxpbmUgfCBzb3J0IHwgZml4bmwpIicnCiAnCiAKLSMgNDAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2Ugc3VyZSB0aGUgLS1yZWpvaW4gY29tbWl0cyBuZXZlciBtYWtlIGl0IGludG8gc3VicHJvaicgJwogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiciJyVzJyInIEhFQUReMiB8IGdyZXAgLWkgc3BsaXQpIicnICIiCiAnCiAKLSMgNDEKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21ha2Ugc3VyZSBubyAiZ2l0IHN1YnRyZWUiIHRhZ2dlZCBjb21taXRzIG1ha2UgaXQgaW50byBzdWJwcm9qJyAnCiAgICAgICAgICMgVGhleSBhcmUgbWVhbmluZ2xlc3MgdG8gc3VicHJvaiBzaW5jZSBvbmUgc2lkZSBvZiB0aGUgbWVyZ2UgcmVmZXJzIHRvIHRoZSBtYWlubGluZQogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiciJyVzJW4lYiciJyBIRUFEXjIgfCBncmVwICJnaXQtc3VidHJlZS4qOiIpIicnICIiCkBAIC0zNzAsMTQgKzM0MywxMiBAQAogbWtkaXIgdGVzdDIKIGNkIHRlc3QyCiAKLSMgNDIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXQgbWFpbicgJwogICAgICAgICB0ZXN0X2NyZWF0ZV9yZXBvIG1haW4KICcKIAogY2QgbWFpbgogCi0jIDQzCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbWFpbjEnICcKICAgICAgICAgY3JlYXRlIG1haW4xICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gIm1haW4xIgpAQCAtMzg1LDE0ICszNTYsMTIgQEAKIAogY2QgLi4KIAotIyA0NAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5pdCBzdWInICcKICAgICAgICAgdGVzdF9jcmVhdGVfcmVwbyBzdWIKICcKIAogY2Qgc3ViCiAKLSMgNDUKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBzdWIyJyAnCiAgICAgICAgIGNyZWF0ZSBzdWIyICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gInN1YjIiCkBAIC00MDIsNyArMzcxLDYgQEAKIAogIyBjaGVjayBpZiBzcGxpdCBjYW4gZmluZCBwcm9wZXIgYmFzZSB3aXRob3V0IC0tb250bwogCi0jIDQ2CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgc3ViIGFzIHN1YmRpciBpbiBtYWluJyAnCiAgICAgICAgIGdpdCBmZXRjaCAuLi9zdWIgbWFzdGVyICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3ViMiBGRVRDSF9IRUFEICYmCkBAIC00MTEsNyArMzc5LDYgQEAKIAogY2QgLi4vc3ViCiAKLSMgNDcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBzdWIzJyAnCiAgICAgICAgIGNyZWF0ZSBzdWIzICYmCiAgICAgICAgIGdpdCBjb21taXQgLW0gInN1YjMiCkBAIC00MTksMjAgKzM4NiwxNyBAQAogCiBjZCAuLi9tYWluCiAKLSMgNDgKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGZyb20gc3ViJyAnCiAgICAgICAgIGdpdCBmZXRjaCAuLi9zdWIgbWFzdGVyICYmCiAgICAgICAgIGdpdCBicmFuY2ggc3ViMyBGRVRDSF9IRUFEICYmCiAgICAgICAgIGdpdCBzdWJ0cmVlIG1lcmdlIC0tcHJlZml4IHN1YmRpciBzdWIzCiAnCiAKLSMgNDkKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBtYWluLXN1YjQnICcKICAgICAgICAgY3JlYXRlIHN1YmRpci9tYWluLXN1YjQgJiYKICAgICAgICAgZ2l0IGNvbW1pdCAtbSAibWFpbi1zdWI0IgogJwogCi0jIDUwCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcGxpdCBmb3IgbWFpbi1zdWI0IHdpdGhvdXQgLS1vbnRvJyAnCiAgICAgICAgIGdpdCBzdWJ0cmVlIHNwbGl0IC0tcHJlZml4IHN1YmRpciAtLWJyYW5jaCBtYWluc3ViNAogJwpAQCAtNDQyLDIzICs0MDYsMjAgQEAKICMgaGF2ZSBiZWVuIHN1YjMsIGJ1dCBpdCB3YXMgbm90LCBiZWNhdXNlIGl0cyBjYWNoZSB3YXMgbm90IHNldCB0bwogIyBpdHNlbGYpCiAKLSMgNTEKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIHRoYXQgdGhlIGNvbW1pdCBwYXJlbnQgaXMgc3ViMycgJwogICAgICAgICBjaGVja19lcXVhbCAnJyIkKGdpdCBsb2cgLS1wcmV0dHk9Zm9ybWF0OiVQIC0xIG1haW5zdWI0KSInJyAnJyIkKGdpdCByZXYtcGFyc2Ugc3ViMykiJycKICcKIAotIyA1MgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIG1haW4tc3ViNScgJwogICAgICAgICBta2RpciBzdWJkaXIyICYmCiAgICAgICAgIGNyZWF0ZSBzdWJkaXIyL21haW4tc3ViNSAmJgogICAgICAgICBnaXQgY29tbWl0IC1tICJtYWluLXN1YjUiCiAnCiAKLSMgNTMKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NwbGl0IGZvciBtYWluLXN1YjUgd2l0aG91dCAtLW9udG8nICcKICAgICAgICAgIyBhbHNvIHRlc3QgdGhhdCB3ZSBzdGlsbCBjYW4gc3BsaXQgb3V0IGFuIGVudGlyZWx5IG5ldyBzdWJ0cmVlCiAgICAgICAgICMgaWYgdGhlIHBhcmVudCBvZiB0aGUgZmlyc3QgY29tbWl0IGluIHRoZSB0cmVlIGlzIG5vdCBlbXB0eSwKLSAgICAgICAgIyB0aGVuIHRoZSBuZXcgc3VidHJlZSBoYXMgYWNjaWRlbnRseSBiZWVuIGF0dGFjaGVkIHRvIHNvbWV0aGluZworCSMgdGhlbiB0aGUgbmV3IHN1YnRyZWUgaGFzIGFjY2lkZW50YWxseSBiZWVuIGF0dGFjaGVkIHRvIHNvbWV0aGluZwogICAgICAgICBnaXQgc3VidHJlZSBzcGxpdCAtLXByZWZpeCBzdWJkaXIyIC0tYnJhbmNoIG1haW5zdWI1ICYmCiAgICAgICAgIGNoZWNrX2VxdWFsICcnIiQoZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6JVAgLTEgbWFpbnN1YjUpIicnICIiCiAnCkBAIC00ODcsNyArNDQ4LDYgQEAKIAllY2hvICIkY29tbWl0ICRhbGwiCiB9CiAKLSMgNTQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBvbmUgZmlsZSBjaGFuZ2UgcGVyIGNvbW1pdCcgJwogICAgICAgICB4PSAmJgogICAgICAgICBsaXN0PScnIiQoZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6JyInY29tbWl0OiAlSCciJyB8IGpvaW5jb21taXRzKSInJyAmJgpkaWZmIC0tZ2l0IGEvY29udHJpYi9zdm4tZmUvc3ZucmR1bXBfc2ltLnB5IGIvY29udHJpYi9zdm4tZmUvc3ZucmR1bXBfc2ltLnB5CmluZGV4IDFjZmFjNGEuLjRlNzhhMWMgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvc3ZuLWZlL3N2bnJkdW1wX3NpbS5weQorKysgYi9jb250cmliL3N2bi1mZS9zdm5yZHVtcF9zaW0ucHkKQEAgLTcsMTAgKzcsMTQgQEAKICIiIgogaW1wb3J0IHN5cywgb3MKIAoraWYgc3lzLmhleHZlcnNpb24gPCAweDAyMDQwMDAwOgorICAgICAgICAjIFRoZSBsaW1pdGVyIGlzIHRoZSBWYWx1ZUVycm9yKCkgY2FsbHMuIFRoaXMgbWF5IGJlIHRvbyBjb25zZXJ2YXRpdmUKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgic3ZucmR1bXAtc2ltLnB5OiByZXF1aXJlcyBQeXRob24gMi40IG9yIGxhdGVyLlxuIikKKyAgICAgICAgc3lzLmV4aXQoMSkKIAogZGVmIGdldHJldmxpbWl0KCk6CiAgICAgICAgIHZhciA9ICdTVk5STUFYJwotICAgICAgICBpZiBvcy5lbnZpcm9uLmhhc19rZXkodmFyKToKKyAgICAgICAgaWYgdmFyIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bdmFyXQogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC00MCw3ICs0NCw3IEBACiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgIGlmIG5vdCAobGVuKHN5cy5hcmd2KSBpbiAoMywgNCwgNSkpOgotICAgICAgICAgICAgICAgIHByaW50ICJ1c2FnZTogJXMgZHVtcCBVUkwgLXJMT1dFUjpVUFBFUiIKKyAgICAgICAgICAgICAgICBwcmludCgidXNhZ2U6ICVzIGR1bXAgVVJMIC1yTE9XRVI6VVBQRVIiKQogICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgIGlmIG5vdCBzeXMuYXJndlsxXSA9PSAnZHVtcCc6IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ29ubHkgImR1bXAiIGlzIHN1cHBwb3J0ZWQuJykKICAgICAgICAgdXJsID0gc3lzLmFyZ3ZbMl0KZGlmZiAtLWdpdCBhL2NvbnZlcnQuYyBiL2NvbnZlcnQuYwppbmRleCA2NjAyMTU1Li4yYTJlNDZjIDEwMDY0NAotLS0gYS9jb252ZXJ0LmMKKysrIGIvY29udmVydC5jCkBAIC0xNTMsMzYgKzE1MywxMyBAQAogCiBzdGF0aWMgaW50IGhhc19jcl9pbl9pbmRleChjb25zdCBjaGFyICpwYXRoKQogewotCWludCBwb3MsIGxlbjsKIAl1bnNpZ25lZCBsb25nIHN6OwotCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKIAl2b2lkICpkYXRhOwogCWludCBoYXNfY3I7Ci0Jc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUgPSAmdGhlX2luZGV4OwogCi0JbGVuID0gc3RybGVuKHBhdGgpOwotCXBvcyA9IGluZGV4X25hbWVfcG9zKGlzdGF0ZSwgcGF0aCwgbGVuKTsKLQlpZiAocG9zIDwgMCkgewotCQkvKgotCQkgKiBXZSBtaWdodCBiZSBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UsIGluIHdoaWNoCi0JCSAqIGNhc2Ugd2Ugd291bGQgcmVhZCBzdGFnZSAjMiAob3VycykuCi0JCSAqLwotCQlpbnQgaTsKLQkJZm9yIChpID0gLXBvcyAtIDE7Ci0JCSAgICAgKHBvcyA8IDAgJiYgaSA8IGlzdGF0ZS0+Y2FjaGVfbnIgJiYKLQkJICAgICAgIXN0cmNtcChpc3RhdGUtPmNhY2hlW2ldLT5uYW1lLCBwYXRoKSk7Ci0JCSAgICAgaSsrKQotCQkJaWYgKGNlX3N0YWdlKGlzdGF0ZS0+Y2FjaGVbaV0pID09IDIpCi0JCQkJcG9zID0gaTsKLQl9Ci0JaWYgKHBvcyA8IDApCisJZGF0YSA9IHJlYWRfYmxvYl9kYXRhX2Zyb21fY2FjaGUocGF0aCwgJnN6KTsKKwlpZiAoIWRhdGEpCiAJCXJldHVybiAwOwotCWRhdGEgPSByZWFkX3NoYTFfZmlsZShpc3RhdGUtPmNhY2hlW3Bvc10tPnNoYTEsICZ0eXBlLCAmc3opOwotCWlmICghZGF0YSB8fCB0eXBlICE9IE9CSl9CTE9CKSB7Ci0JCWZyZWUoZGF0YSk7Ci0JCXJldHVybiAwOwotCX0KLQogCWhhc19jciA9IG1lbWNocihkYXRhLCAnXHInLCBzeikgIT0gTlVMTDsKIAlmcmVlKGRhdGEpOwogCXJldHVybiBoYXNfY3I7CkBAIC00NTcsNyArNDM0LDcgQEAKIAogc3RhdGljIGludCByZWFkX2NvbnZlcnRfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogewotCWNvbnN0IGNoYXIgKmVwLCAqbmFtZTsKKwljb25zdCBjaGFyICprZXksICpuYW1lOwogCWludCBuYW1lbGVuOwogCXN0cnVjdCBjb252ZXJ0X2RyaXZlciAqZHJ2OwogCkBAIC00NjUsMTAgKzQ0Miw4IEBACiAJICogRXh0ZXJuYWwgY29udmVyc2lvbiBkcml2ZXJzIGFyZSBjb25maWd1cmVkIHVzaW5nCiAJICogImZpbHRlci48bmFtZT4udmFyaWFibGUiLgogCSAqLwotCWlmIChwcmVmaXhjbXAodmFyLCAiZmlsdGVyLiIpIHx8IChlcCA9IHN0cnJjaHIodmFyLCAnLicpKSA9PSB2YXIgKyA2KQorCWlmIChwYXJzZV9jb25maWdfa2V5KHZhciwgImZpbHRlciIsICZuYW1lLCAmbmFtZWxlbiwgJmtleSkgPCAwIHx8ICFuYW1lKQogCQlyZXR1cm4gMDsKLQluYW1lID0gdmFyICsgNzsKLQluYW1lbGVuID0gZXAgLSBuYW1lOwogCWZvciAoZHJ2ID0gdXNlcl9jb252ZXJ0OyBkcnY7IGRydiA9IGRydi0+bmV4dCkKIAkJaWYgKCFzdHJuY21wKGRydi0+bmFtZSwgbmFtZSwgbmFtZWxlbikgJiYgIWRydi0+bmFtZVtuYW1lbGVuXSkKIAkJCWJyZWFrOwpAQCAtNDc5LDggKzQ1NCw2IEBACiAJCXVzZXJfY29udmVydF90YWlsID0gJihkcnYtPm5leHQpOwogCX0KIAotCWVwKys7Ci0KIAkvKgogCSAqIGZpbHRlci48bmFtZT4uc211ZGdlIGFuZCBmaWx0ZXIuPG5hbWU+LmNsZWFuIHNwZWNpZmllcwogCSAqIHRoZSBjb21tYW5kIGxpbmU6CkBAIC00OTAsMTMgKzQ2MywxMyBAQAogCSAqIFRoZSBjb21tYW5kLWxpbmUgd2lsbCBub3QgYmUgaW50ZXJwb2xhdGVkIGluIGFueSB3YXkuCiAJICovCiAKLQlpZiAoIXN0cmNtcCgic211ZGdlIiwgZXApKQorCWlmICghc3RyY21wKCJzbXVkZ2UiLCBrZXkpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmRydi0+c211ZGdlLCB2YXIsIHZhbHVlKTsKIAotCWlmICghc3RyY21wKCJjbGVhbiIsIGVwKSkKKwlpZiAoIXN0cmNtcCgiY2xlYW4iLCBrZXkpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmRydi0+Y2xlYW4sIHZhciwgdmFsdWUpOwogCi0JaWYgKCFzdHJjbXAoInJlcXVpcmVkIiwgZXApKSB7CisJaWYgKCFzdHJjbXAoInJlcXVpcmVkIiwga2V5KSkgewogCQlkcnYtPnJlcXVpcmVkID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOwogCQlyZXR1cm4gMDsKIAl9CmRpZmYgLS1naXQgYS9jcmVkZW50aWFsLXN0b3JlLmMgYi9jcmVkZW50aWFsLXN0b3JlLmMKaW5kZXggMjZmNzU4OS4uZjkxNDZlNSAxMDA2NDQKLS0tIGEvY3JlZGVudGlhbC1zdG9yZS5jCisrKyBiL2NyZWRlbnRpYWwtc3RvcmUuYwpAQCAtMTE0LDcgKzExNCw3IEBACiAJcmV0dXJuIGMtPnVzZXJuYW1lICYmIGMtPnBhc3N3b3JkOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJY29uc3QgY2hhciAqIGNvbnN0IHVzYWdlW10gPSB7CiAJCSJnaXQgY3JlZGVudGlhbC1zdG9yZSBbb3B0aW9uc10gPGFjdGlvbj4iLApAQCAtMTMxLDcgKzEzMSw3IEBACiAKIAl1bWFzaygwNzcpOwogCi0JYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgTlVMTCwgb3B0aW9ucywgdXNhZ2UsIDApOworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIChjb25zdCBjaGFyICoqKWFyZ3YsIE5VTEwsIG9wdGlvbnMsIHVzYWdlLCAwKTsKIAlpZiAoYXJnYyAhPSAxKQogCQl1c2FnZV93aXRoX29wdGlvbnModXNhZ2UsIG9wdGlvbnMpOwogCW9wID0gYXJndlswXTsKZGlmZiAtLWdpdCBhL2N0eXBlLmMgYi9jdHlwZS5jCmluZGV4IDkzNTMyNzEuLjBiZmViYjQgMTAwNjQ0Ci0tLSBhL2N0eXBlLmMKKysrIGIvY3R5cGUuYwpAQCAtMTEsMTggKzExLDIxIEBACiAJRCA9IEdJVF9ESUdJVCwKIAlHID0gR0lUX0dMT0JfU1BFQ0lBTCwJLyogKiwgPywgWywgXFwgKi8KIAlSID0gR0lUX1JFR0VYX1NQRUNJQUwsCS8qICQsICgsICksICssIC4sIF4sIHssIHwgKi8KLQlQID0gR0lUX1BBVEhTUEVDX01BR0lDICAvKiBvdGhlciBub24tYWxudW0sIGV4Y2VwdCBmb3IgXSBhbmQgfSAqLworCVAgPSBHSVRfUEFUSFNQRUNfTUFHSUMsIC8qIG90aGVyIG5vbi1hbG51bSwgZXhjZXB0IGZvciBdIGFuZCB9ICovCisJWCA9IEdJVF9DTlRSTCwKKwlVID0gR0lUX1BVTkNULAorCVogPSBHSVRfQ05UUkwgfCBHSVRfU1BBQ0UKIH07CiAKLXVuc2lnbmVkIGNoYXIgc2FuZV9jdHlwZVsyNTZdID0gewotCTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFMsIFMsIDAsIDAsIFMsIDAsIDAsCQkvKiAgIDAuLiAxNSAqLwotCTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCQkvKiAgMTYuLiAzMSAqLworY29uc3QgdW5zaWduZWQgY2hhciBzYW5lX2N0eXBlWzI1Nl0gPSB7CisJWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWiwgWiwgWCwgWCwgWiwgWCwgWCwJCS8qICAgMC4uIDE1ICovCisJWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwgWCwJCS8qICAxNi4uIDMxICovCiAJUywgUCwgUCwgUCwgUiwgUCwgUCwgUCwgUiwgUiwgRywgUiwgUCwgUCwgUiwgUCwJCS8qICAzMi4uIDQ3ICovCiAJRCwgRCwgRCwgRCwgRCwgRCwgRCwgRCwgRCwgRCwgUCwgUCwgUCwgUCwgUCwgRywJCS8qICA0OC4uIDYzICovCiAJUCwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwJCS8qICA2NC4uIDc5ICovCi0JQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgRywgRywgMCwgUiwgUCwJCS8qICA4MC4uIDk1ICovCisJQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgRywgRywgVSwgUiwgUCwJCS8qICA4MC4uIDk1ICovCiAJUCwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwJCS8qICA5Ni4uMTExICovCi0JQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgUiwgUiwgMCwgUCwgMCwJCS8qIDExMi4uMTI3ICovCisJQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgQSwgUiwgUiwgVSwgUCwgWCwJCS8qIDExMi4uMTI3ICovCiAJLyogTm90aGluZyBpbiB0aGUgMTI4Li4gcmFuZ2UgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2RhZW1vbi5jIGIvZGFlbW9uLmMKaW5kZXggZGY4YzBhYi4uNmFlZGRjYiAxMDA2NDQKLS0tIGEvZGFlbW9uLmMKKysrIGIvZGFlbW9uLmMKQEAgLTYwMCw3ICs2MDAsNyBAQAogCiBzdGF0aWMgaW50IGV4ZWN1dGUodm9pZCkKIHsKLQlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOworCWNoYXIgKmxpbmUgPSBwYWNrZXRfYnVmZmVyOwogCWludCBwa3RsZW4sIGxlbiwgaTsKIAljaGFyICphZGRyID0gZ2V0ZW52KCJSRU1PVEVfQUREUiIpLCAqcG9ydCA9IGdldGVudigiUkVNT1RFX1BPUlQiKTsKIApAQCAtNjA4LDcgKzYwOCw3IEBACiAJCWxvZ2luZm8oIkNvbm5lY3Rpb24gZnJvbSAlczolcyIsIGFkZHIsIHBvcnQpOwogCiAJYWxhcm0oaW5pdF90aW1lb3V0ID8gaW5pdF90aW1lb3V0IDogdGltZW91dCk7Ci0JcGt0bGVuID0gcGFja2V0X3JlYWRfbGluZSgwLCBsaW5lLCBzaXplb2YobGluZSkpOworCXBrdGxlbiA9IHBhY2tldF9yZWFkKDAsIE5VTEwsIE5VTEwsIHBhY2tldF9idWZmZXIsIHNpemVvZihwYWNrZXRfYnVmZmVyKSwgMCk7CiAJYWxhcm0oMCk7CiAKIAlsZW4gPSBzdHJsZW4obGluZSk7CmRpZmYgLS1naXQgYS9kYXRlLmMgYi9kYXRlLmMKaW5kZXggNTczMzFlZC4uMjlmMTU0MCAxMDA2NDQKLS0tIGEvZGF0ZS5jCisrKyBiL2RhdGUuYwpAQCAtMzgzLDcgKzM4Myw3IEBACiAJCSAqIHNlbnNlIHRvIHNwZWNpZnkgdGltZXN0YW1wIHdheSBpbnRvIHRoZSBmdXR1cmUuICBNYWtlCiAJCSAqIHN1cmUgaXQgaXMgbm90IGxhdGVyIHRoYW4gdGVuIGRheXMgZnJvbSBub3cuLi4KIAkJICovCi0JCWlmIChub3cgKyAxMCoyNCozNjAwIDwgc3BlY2lmaWVkKQorCQlpZiAoKHNwZWNpZmllZCAhPSAtMSkgJiYgKG5vdyArIDEwKjI0KjM2MDAgPCBzcGVjaWZpZWQpKQogCQkJcmV0dXJuIDA7CiAJCXRtLT50bV9tb24gPSByLT50bV9tb247CiAJCXRtLT50bV9tZGF5ID0gci0+dG1fbWRheTsKQEAgLTY5NCw4ICs2OTQsMTQgQEAKIAogCS8qIG1rdGltZSB1c2VzIGxvY2FsIHRpbWV6b25lICovCiAJKnRpbWVzdGFtcCA9IHRtX3RvX3RpbWVfdCgmdG0pOwotCWlmICgqb2Zmc2V0ID09IC0xKQotCQkqb2Zmc2V0ID0gKCh0aW1lX3QpKnRpbWVzdGFtcCAtIG1rdGltZSgmdG0pKSAvIDYwOworCWlmICgqb2Zmc2V0ID09IC0xKSB7CisJCXRpbWVfdCB0ZW1wX3RpbWUgPSBta3RpbWUoJnRtKTsKKwkJaWYgKCh0aW1lX3QpKnRpbWVzdGFtcCA+IHRlbXBfdGltZSkgeworCQkJKm9mZnNldCA9ICgodGltZV90KSp0aW1lc3RhbXAgLSB0ZW1wX3RpbWUpIC8gNjA7CisJCX0gZWxzZSB7CisJCQkqb2Zmc2V0ID0gLShpbnQpKCh0ZW1wX3RpbWUgLSAodGltZV90KSp0aW1lc3RhbXApIC8gNjApOworCQl9CisJfQogCiAJaWYgKCp0aW1lc3RhbXAgPT0gLTEpCiAJCXJldHVybiAtMTsKQEAgLTcwNSw2ICs3MTEsMjggQEAKIAlyZXR1cm4gMDsgLyogc3VjY2VzcyAqLwogfQogCitpbnQgcGFyc2VfZXhwaXJ5X2RhdGUoY29uc3QgY2hhciAqZGF0ZSwgdW5zaWduZWQgbG9uZyAqdGltZXN0YW1wKQoreworCWludCBlcnJvcnMgPSAwOworCisJaWYgKCFzdHJjbXAoZGF0ZSwgIm5ldmVyIikgfHwgIXN0cmNtcChkYXRlLCAiZmFsc2UiKSkKKwkJKnRpbWVzdGFtcCA9IDA7CisJZWxzZSBpZiAoIXN0cmNtcChkYXRlLCAiYWxsIikgfHwgIXN0cmNtcChkYXRlLCAibm93IikpCisJCS8qCisJCSAqIFdlIHRha2Ugb3ZlciAibm93IiBoZXJlLCB3aGljaCB1c3VhbGx5IHRyYW5zbGF0ZXMKKwkJICogdG8gdGhlIGN1cnJlbnQgdGltZXN0YW1wLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSB1c2VyCisJCSAqIHJlYWxseSBtZWFucyB0byBleHBpcmUgZXZlcnl0aGluZyBzaGUgaGFzIGRvbmUgaW4KKwkJICogdGhlIHBhc3QsIGFuZCBieSBkZWZpbml0aW9uIHJlZmxvZ3MgYXJlIHRoZSByZWNvcmQKKwkJICogb2YgdGhlIHBhc3QsIGFuZCB0aGVyZSBpcyBub3RoaW5nIGZyb20gdGhlIGZ1dHVyZQorCQkgKiB0byBiZSBrZXB0LgorCQkgKi8KKwkJKnRpbWVzdGFtcCA9IFVMT05HX01BWDsKKwllbHNlCisJCSp0aW1lc3RhbXAgPSBhcHByb3hpZGF0ZV9jYXJlZnVsKGRhdGUsICZlcnJvcnMpOworCisJcmV0dXJuIGVycm9yczsKK30KKwogaW50IHBhcnNlX2RhdGUoY29uc3QgY2hhciAqZGF0ZSwgY2hhciAqcmVzdWx0LCBpbnQgbWF4bGVuKQogewogCXVuc2lnbmVkIGxvbmcgdGltZXN0YW1wOwpkaWZmIC0tZ2l0IGEvZGVjb3JhdGUuYyBiL2RlY29yYXRlLmMKaW5kZXggMmY4YTYzZS4uN2NiNWQyOSAxMDA2NDQKLS0tIGEvZGVjb3JhdGUuYworKysgYi9kZWNvcmF0ZS5jCkBAIC00OSw3ICs0OSw3IEBACiAJCWNvbnN0IHN0cnVjdCBvYmplY3QgKmJhc2UgPSBvbGRfaGFzaFtpXS5iYXNlOwogCQl2b2lkICpkZWNvcmF0aW9uID0gb2xkX2hhc2hbaV0uZGVjb3JhdGlvbjsKIAotCQlpZiAoIWJhc2UpCisJCWlmICghZGVjb3JhdGlvbikKIAkJCWNvbnRpbnVlOwogCQlpbnNlcnRfZGVjb3JhdGlvbihuLCBiYXNlLCBkZWNvcmF0aW9uKTsKIAl9CmRpZmYgLS1naXQgYS9kaWZmLWxpYi5jIGIvZGlmZi1saWIuYwppbmRleCBmMzVkZTBmLi5iNmY0YjIxIDEwMDY0NAotLS0gYS9kaWZmLWxpYi5jCisrKyBiL2RpZmYtbGliLmMKQEAgLTY0LDggKzY0LDkgQEAKICAqIGNvbW1pdHMsIHVudHJhY2tlZCBjb250ZW50IGFuZC9vciBtb2RpZmllZCBjb250ZW50KS4KICAqLwogc3RhdGljIGludCBtYXRjaF9zdGF0X3dpdGhfc3VibW9kdWxlKHN0cnVjdCBkaWZmX29wdGlvbnMgKmRpZmZvcHQsCi0JCQkJICAgICAgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0LAotCQkJCSAgICAgIHVuc2lnbmVkIGNlX29wdGlvbiwgdW5zaWduZWQgKmRpcnR5X3N1Ym1vZHVsZSkKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJICAgICBzdHJ1Y3Qgc3RhdCAqc3QsIHVuc2lnbmVkIGNlX29wdGlvbiwKKwkJCQkgICAgIHVuc2lnbmVkICpkaXJ0eV9zdWJtb2R1bGUpCiB7CiAJaW50IGNoYW5nZWQgPSBjZV9tYXRjaF9zdGF0KGNlLCBzdCwgY2Vfb3B0aW9uKTsKIAlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7CkBAIC0yMzcsNyArMjM4LDcgQEAKIC8qIEEgZmlsZSBlbnRyeSB3ZW50IGF3YXkgb3IgYXBwZWFyZWQgKi8KIHN0YXRpYyB2b2lkIGRpZmZfaW5kZXhfc2hvd19maWxlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKIAkJCQkgY29uc3QgY2hhciAqcHJlZml4LAotCQkJCSBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCSBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAogCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgc2hhMV92YWxpZCwKIAkJCQkgdW5zaWduZWQgaW50IG1vZGUsCiAJCQkJIHVuc2lnbmVkIGRpcnR5X3N1Ym1vZHVsZSkKQEAgLTI0Niw3ICsyNDcsNyBAQAogCQkgICAgICAgc2hhMSwgc2hhMV92YWxpZCwgY2UtPm5hbWUsIGRpcnR5X3N1Ym1vZHVsZSk7CiB9CiAKLXN0YXRpYyBpbnQgZ2V0X3N0YXRfZGF0YShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIGludCBnZXRfc3RhdF9kYXRhKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqKnNoYTFwLAogCQkJIHVuc2lnbmVkIGludCAqbW9kZXAsCiAJCQkgaW50IGNhY2hlZCwgaW50IG1hdGNoX21pc3NpbmcsCkBAIC0yODMsNyArMjg0LDcgQEAKIH0KIAogc3RhdGljIHZvaWQgc2hvd19uZXdfZmlsZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCi0JCQkgIHN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3LAorCQkJICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm5ldywKIAkJCSAgaW50IGNhY2hlZCwgaW50IG1hdGNoX21pc3NpbmcpCiB7CiAJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMTsKQEAgLTMwMiw4ICszMDMsOCBAQAogfQogCiBzdGF0aWMgaW50IHNob3dfbW9kaWZpZWQoc3RydWN0IHJldl9pbmZvICpyZXZzLAotCQkJIHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAotCQkJIHN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3LAorCQkJIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAorCQkJIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3LAogCQkJIGludCByZXBvcnRfbWlzc2luZywKIAkJCSBpbnQgY2FjaGVkLCBpbnQgbWF0Y2hfbWlzc2luZykKIHsKQEAgLTM2Miw4ICszNjMsOCBAQAogICogZ2l2ZSB5b3UgdGhlIHBvc2l0aW9uIGFuZCBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgaW5kZXgpLgogICovCiBzdGF0aWMgdm9pZCBkb19vbmV3YXlfZGlmZihzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8sCi0Jc3RydWN0IGNhY2hlX2VudHJ5ICppZHgsCi0Jc3RydWN0IGNhY2hlX2VudHJ5ICp0cmVlKQorCQkJICAgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICppZHgsCisJCQkgICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnRyZWUpCiB7CiAJc3RydWN0IHJldl9pbmZvICpyZXZzID0gby0+dW5wYWNrX2RhdGE7CiAJaW50IG1hdGNoX21pc3NpbmcsIGNhY2hlZDsKQEAgLTQyMywxMCArNDI0LDExIEBACiAgKiB0aGUgZmFpcmx5IGNvbXBsZXggdW5wYWNrX3RyZWVzKCkgc2VtYW50aWMgcmVxdWlyZW1lbnRzLCBpbmNsdWRpbmcKICAqIHRoZSBza2lwcGluZywgdGhlIHBhdGggbWF0Y2hpbmcsIHRoZSB0eXBlIGNvbmZsaWN0IGNhc2VzIGV0Yy4KICAqLwotc3RhdGljIGludCBvbmV3YXlfZGlmZihzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyBpbnQgb25ld2F5X2RpZmYoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKnNyYywKKwkJICAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmlkeCA9IHNyY1swXTsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnRyZWUgPSBzcmNbMV07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICppZHggPSBzcmNbMF07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICp0cmVlID0gc3JjWzFdOwogCXN0cnVjdCByZXZfaW5mbyAqcmV2cyA9IG8tPnVucGFja19kYXRhOwogCiAJLyoKZGlmZiAtLWdpdCBhL2RpZmYtbm8taW5kZXguYyBiL2RpZmYtbm8taW5kZXguYwppbmRleCA3NGRhNjU5Li5lNjZmZGYzIDEwMDY0NAotLS0gYS9kaWZmLW5vLWluZGV4LmMKKysrIGIvZGlmZi1uby1pbmRleC5jCkBAIC00NSw3ICs0NSw3IEBACiAKIAlpZiAoIXBhdGggfHwgIXN0cmNtcChwYXRoLCAiL2Rldi9udWxsIikpCiAJCSptb2RlID0gMDsKLSNpZmRlZiBfV0lOMzIKKyNpZmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIAllbHNlIGlmICghc3RyY2FzZWNtcChwYXRoLCAibnVsIikpCiAJCSptb2RlID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZGlmZi5jIGIvZGlmZi5jCmluZGV4IGYwNDFhYjQuLmYwYjNlN2MgMTAwNjQ0Ci0tLSBhL2RpZmYuYworKysgYi9kaWZmLmMKQEAgLTM2LDYgKzM2LDcgQEAKIHN0YXRpYyBpbnQgZGlmZl9zdGF0X2dyYXBoX3dpZHRoOwogc3RhdGljIGludCBkaWZmX2RpcnN0YXRfcGVybWlsbGVfZGVmYXVsdCA9IDMwOwogc3RhdGljIHN0cnVjdCBkaWZmX29wdGlvbnMgZGVmYXVsdF9kaWZmX29wdGlvbnM7CitzdGF0aWMgbG9uZyBkaWZmX2FsZ29yaXRobTsKIAogc3RhdGljIGNoYXIgZGlmZl9jb2xvcnNbXVtDT0xPUl9NQVhMRU5dID0gewogCUdJVF9DT0xPUl9SRVNFVCwKQEAgLTE0Myw2ICsxNDQsMjEgQEAKIAlyZXR1cm4gZ2l0X2NvbmZpZ19ib29sKHZhcix2YWx1ZSkgPyBESUZGX0RFVEVDVF9SRU5BTUUgOiAwOwogfQogCitsb25nIHBhcnNlX2FsZ29yaXRobV92YWx1ZShjb25zdCBjaGFyICp2YWx1ZSkKK3sKKwlpZiAoIXZhbHVlKQorCQlyZXR1cm4gLTE7CisJZWxzZSBpZiAoIXN0cmNhc2VjbXAodmFsdWUsICJteWVycyIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAiZGVmYXVsdCIpKQorCQlyZXR1cm4gMDsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2YWx1ZSwgIm1pbmltYWwiKSkKKwkJcmV0dXJuIFhERl9ORUVEX01JTklNQUw7CisJZWxzZSBpZiAoIXN0cmNhc2VjbXAodmFsdWUsICJwYXRpZW5jZSIpKQorCQlyZXR1cm4gWERGX1BBVElFTkNFX0RJRkY7CisJZWxzZSBpZiAoIXN0cmNhc2VjbXAodmFsdWUsICJoaXN0b2dyYW0iKSkKKwkJcmV0dXJuIFhERl9ISVNUT0dSQU1fRElGRjsKKwlyZXR1cm4gLTE7Cit9CisKIC8qCiAgKiBUaGVzZSBhcmUgdG8gZ2l2ZSBVSSBsYXllciBkZWZhdWx0cy4KICAqIFRoZSBjb3JlLWxldmVsIGNvbW1hbmRzIHN1Y2ggYXMgZ2l0LWRpZmYtZmlsZXMgc2hvdWxkCkBAIC0xOTYsNiArMjEyLDEzIEBACiAJCXJldHVybiAwOwogCX0KIAorCWlmICghc3RyY21wKHZhciwgImRpZmYuYWxnb3JpdGhtIikpIHsKKwkJZGlmZl9hbGdvcml0aG0gPSBwYXJzZV9hbGdvcml0aG1fdmFsdWUodmFsdWUpOworCQlpZiAoZGlmZl9hbGdvcml0aG0gPCAwKQorCQkJcmV0dXJuIC0xOworCQlyZXR1cm4gMDsKKwl9CisKIAlpZiAoZ2l0X2NvbG9yX2NvbmZpZyh2YXIsIHZhbHVlLCBjYikgPCAwKQogCQlyZXR1cm4gLTE7CiAKQEAgLTQwMiwxMiArNDI1LDcgQEAKIAlpbnQgbm9maXJzdDsKIAlGSUxFICpmaWxlID0gby0+ZmlsZTsKIAotCWlmIChvLT5vdXRwdXRfcHJlZml4KSB7Ci0JCXN0cnVjdCBzdHJidWYgKm1zZyA9IE5VTEw7Ci0JCW1zZyA9IG8tPm91dHB1dF9wcmVmaXgobywgby0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJYXNzZXJ0KG1zZyk7Ci0JCWZ3cml0ZShtc2ctPmJ1ZiwgbXNnLT5sZW4sIDEsIGZpbGUpOwotCX0KKwlmcHV0cyhkaWZmX2xpbmVfcHJlZml4KG8pLCBmaWxlKTsKIAogCWlmIChsZW4gPT0gMCkgewogCQloYXNfdHJhaWxpbmdfbmV3bGluZSA9IChmaXJzdCA9PSAnXG4nKTsKQEAgLTYyNSwxMyArNjQzLDcgQEAKIAljaGFyICpkYXRhX29uZSwgKmRhdGFfdHdvOwogCXNpemVfdCBzaXplX29uZSwgc2l6ZV90d287CiAJc3RydWN0IGVtaXRfY2FsbGJhY2sgZWNiZGF0YTsKLQljaGFyICpsaW5lX3ByZWZpeCA9ICIiOwotCXN0cnVjdCBzdHJidWYgKm1zZ2J1ZjsKLQotCWlmIChvICYmIG8tPm91dHB1dF9wcmVmaXgpIHsKLQkJbXNnYnVmID0gby0+b3V0cHV0X3ByZWZpeChvLCBvLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IG1zZ2J1Zi0+YnVmOwotCX0KKwljb25zdCBjaGFyICpsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgobyk7CiAKIAlpZiAoZGlmZl9tbmVtb25pY19wcmVmaXggJiYgRElGRl9PUFRfVFNUKG8sIFJFVkVSU0VfRElGRikpIHsKIAkJYV9wcmVmaXggPSBvLT5iX3ByZWZpeDsKQEAgLTgyNywxOCArODM5LDE0IEBACiAJaW50IG1pbnVzX2ZpcnN0LCBtaW51c19sZW4sIHBsdXNfZmlyc3QsIHBsdXNfbGVuOwogCWNvbnN0IGNoYXIgKm1pbnVzX2JlZ2luLCAqbWludXNfZW5kLCAqcGx1c19iZWdpbiwgKnBsdXNfZW5kOwogCXN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCA9IGRpZmZfd29yZHMtPm9wdDsKLQlzdHJ1Y3Qgc3RyYnVmICptc2didWY7Ci0JY2hhciAqbGluZV9wcmVmaXggPSAiIjsKKwljb25zdCBjaGFyICpsaW5lX3ByZWZpeDsKIAogCWlmIChsaW5lWzBdICE9ICdAJyB8fCBwYXJzZV9odW5rX2hlYWRlcihsaW5lLCBsZW4sCiAJCQkmbWludXNfZmlyc3QsICZtaW51c19sZW4sICZwbHVzX2ZpcnN0LCAmcGx1c19sZW4pKQogCQlyZXR1cm47CiAKIAlhc3NlcnQob3B0KTsKLQlpZiAob3B0LT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IG9wdC0+b3V0cHV0X3ByZWZpeChvcHQsIG9wdC0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2didWYtPmJ1ZjsKLQl9CisJbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG9wdCk7CiAKIAkvKiBQT1NJWCByZXF1aXJlcyB0aGF0IGZpcnN0IGJlIGRlY3JlbWVudGVkIGJ5IG9uZSBpZiBsZW4gPT0gMC4uLiAqLwogCWlmIChtaW51c19sZW4pIHsKQEAgLTk2MiwxNCArOTcwLDEwIEBACiAJc3RydWN0IGRpZmZfd29yZHNfc3R5bGUgKnN0eWxlID0gZGlmZl93b3Jkcy0+c3R5bGU7CiAKIAlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQgPSBkaWZmX3dvcmRzLT5vcHQ7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXg7CiAKIAlhc3NlcnQob3B0KTsKLQlpZiAob3B0LT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IG9wdC0+b3V0cHV0X3ByZWZpeChvcHQsIG9wdC0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2didWYtPmJ1ZjsKLQl9CisJbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG9wdCk7CiAKIAkvKiBzcGVjaWFsIGNhc2U6IG9ubHkgcmVtb3ZhbCAqLwogCWlmICghZGlmZl93b3Jkcy0+cGx1cy50ZXh0LnNpemUpIHsKQEAgLTExMDUsNiArMTEwOSwxNiBAQAogCXJldHVybiAiIjsKIH0KIAorY29uc3QgY2hhciAqZGlmZl9saW5lX3ByZWZpeChzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQpCit7CisJc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOworCWlmICghb3B0LT5vdXRwdXRfcHJlZml4KQorCQlyZXR1cm4gIiI7CisKKwltc2didWYgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7CisJcmV0dXJuIG1zZ2J1Zi0+YnVmOworfQorCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBzYW5lX3RydW5jYXRlX2xpbmUoc3RydWN0IGVtaXRfY2FsbGJhY2sgKmVjYiwgY2hhciAqbGluZSwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJY29uc3QgY2hhciAqY3A7CkBAIC0xMTQ1LDEzICsxMTU5LDcgQEAKIAljb25zdCBjaGFyICpwbGFpbiA9IGRpZmZfZ2V0X2NvbG9yKGVjYmRhdGEtPmNvbG9yX2RpZmYsIERJRkZfUExBSU4pOwogCWNvbnN0IGNoYXIgKnJlc2V0ID0gZGlmZl9nZXRfY29sb3IoZWNiZGF0YS0+Y29sb3JfZGlmZiwgRElGRl9SRVNFVCk7CiAJc3RydWN0IGRpZmZfb3B0aW9ucyAqbyA9IGVjYmRhdGEtPm9wdDsKLQljaGFyICpsaW5lX3ByZWZpeCA9ICIiOwotCXN0cnVjdCBzdHJidWYgKm1zZ2J1ZjsKLQotCWlmIChvICYmIG8tPm91dHB1dF9wcmVmaXgpIHsKLQkJbXNnYnVmID0gby0+b3V0cHV0X3ByZWZpeChvLCBvLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IG1zZ2J1Zi0+YnVmOwotCX0KKwljb25zdCBjaGFyICpsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgobyk7CiAKIAlpZiAoZWNiZGF0YS0+aGVhZGVyKSB7CiAJCWZwcmludGYoZWNiZGF0YS0+b3B0LT5maWxlLCAiJXMiLCBlY2JkYXRhLT5oZWFkZXItPmJ1Zik7CkBAIC0xNDg3LDE2ICsxNDk1LDExIEBACiAJY29uc3QgY2hhciAqcmVzZXQsICphZGRfYywgKmRlbF9jOwogCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4ID0gIiI7CiAJaW50IGV4dHJhX3Nob3duID0gMDsKLQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwogCiAJaWYgKGRhdGEtPm5yID09IDApCiAJCXJldHVybjsKIAotCWlmIChvcHRpb25zLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZyA9IG9wdGlvbnMtPm91dHB1dF9wcmVmaXgob3B0aW9ucywgb3B0aW9ucy0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2ctPmJ1ZjsKLQl9Ci0KKwlsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgob3B0aW9ucyk7CiAJY291bnQgPSBvcHRpb25zLT5zdGF0X2NvdW50ID8gb3B0aW9ucy0+c3RhdF9jb3VudCA6IGRhdGEtPm5yOwogCiAJcmVzZXQgPSBkaWZmX2dldF9jb2xvcl9vcHQob3B0aW9ucywgRElGRl9SRVNFVCk7CkBAIC0xNTYyLDcgKzE1NjUsNyBAQAogCSAqIEJpbmFyeSBmaWxlcyBhcmUgZGlzcGxheWVkIHdpdGggIkJpbiBYWFggLT4gWVlZIGJ5dGVzIgogCSAqIGluc3RlYWQgb2YgdGhlIGNoYW5nZSBjb3VudCBhbmQgZ3JhcGguIFRoaXMgcGFydCBpcyB0cmVhdGVkCiAJICogc2ltaWxhcmx5IHRvIHRoZSBncmFwaCBwYXJ0LCBleGNlcHQgdGhhdCBpdCBpcyBub3QKLQkgKiAic2NhbGVkIi4gSWYgdG90YWwgd2lkdGggaXMgdG9vIHNtYWxsIHRvIGFjY29tb2RhdGUgdGhlCisJICogInNjYWxlZCIuIElmIHRvdGFsIHdpZHRoIGlzIHRvbyBzbWFsbCB0byBhY2NvbW1vZGF0ZSB0aGUKIAkgKiBndWFyYW50ZWVkIG1pbmltdW0gd2lkdGggb2YgdGhlIGZpbGVuYW1lIHBhcnQgYW5kIHRoZQogCSAqIHNlcGFyYXRvcnMgYW5kIHRoaXMgbWVzc2FnZSwgdGhpcyBtZXNzYWdlIHdpbGwgIm92ZXJmbG93IgogCSAqIG1ha2luZyB0aGUgbGluZSBsb25nZXIgdGhhbiB0aGUgbWF4aW11bSB3aWR0aC4KQEAgLTE3NDgsMTIgKzE3NTEsNyBAQAogCQkJZGVscyArPSBkZWxldGVkOwogCQl9CiAJfQotCWlmIChvcHRpb25zLT5vdXRwdXRfcHJlZml4KSB7Ci0JCXN0cnVjdCBzdHJidWYgKm1zZyA9IE5VTEw7Ci0JCW1zZyA9IG9wdGlvbnMtPm91dHB1dF9wcmVmaXgob3B0aW9ucywKLQkJCQlvcHRpb25zLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlmcHJpbnRmKG9wdGlvbnMtPmZpbGUsICIlcyIsIG1zZy0+YnVmKTsKLQl9CisJZnByaW50ZihvcHRpb25zLT5maWxlLCAiJXMiLCBkaWZmX2xpbmVfcHJlZml4KG9wdGlvbnMpKTsKIAlwcmludF9zdGF0X3N1bW1hcnkob3B0aW9ucy0+ZmlsZSwgdG90YWxfZmlsZXMsIGFkZHMsIGRlbHMpOwogfQogCkBAIC0xNzY3LDEyICsxNzY1LDcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bnI7IGkrKykgewogCQlzdHJ1Y3QgZGlmZnN0YXRfZmlsZSAqZmlsZSA9IGRhdGEtPmZpbGVzW2ldOwogCi0JCWlmIChvcHRpb25zLT5vdXRwdXRfcHJlZml4KSB7Ci0JCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCQkJbXNnID0gb3B0aW9ucy0+b3V0cHV0X3ByZWZpeChvcHRpb25zLAotCQkJCQlvcHRpb25zLT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiJXMiLCBtc2ctPmJ1Zik7Ci0JCX0KKwkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiJXMiLCBkaWZmX2xpbmVfcHJlZml4KG9wdGlvbnMpKTsKIAogCQlpZiAoZmlsZS0+aXNfYmluYXJ5KQogCQkJZnByaW50ZihvcHRpb25zLT5maWxlLCAiLVx0LVx0Iik7CkBAIC0xODE0LDEzICsxODA3LDcgQEAKIHsKIAl1bnNpZ25lZCBsb25nIHRoaXNfZGlyID0gMDsKIAl1bnNpZ25lZCBpbnQgc291cmNlcyA9IDA7Ci0JY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSAiIjsKLQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCi0JaWYgKG9wdC0+b3V0cHV0X3ByZWZpeCkgewotCQltc2cgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWxpbmVfcHJlZml4ID0gbXNnLT5idWY7Ci0JfQorCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChvcHQpOwogCiAJd2hpbGUgKGRpci0+bnIpIHsKIAkJc3RydWN0IGRpcnN0YXRfZmlsZSAqZiA9IGRpci0+ZmlsZXM7CkBAIC0yMDcwLDE1ICsyMDU3LDEwIEBACiAJY29uc3QgY2hhciAqcmVzZXQgPSBkaWZmX2dldF9jb2xvcihkYXRhLT5vLT51c2VfY29sb3IsIERJRkZfUkVTRVQpOwogCWNvbnN0IGNoYXIgKnNldCA9IGRpZmZfZ2V0X2NvbG9yKGRhdGEtPm8tPnVzZV9jb2xvciwgRElGRl9GSUxFX05FVyk7CiAJY2hhciAqZXJyOwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOworCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4OwogCiAJYXNzZXJ0KGRhdGEtPm8pOwotCWlmIChkYXRhLT5vLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IGRhdGEtPm8tPm91dHB1dF9wcmVmaXgoZGF0YS0+bywKLQkJCWRhdGEtPm8tPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWxpbmVfcHJlZml4ID0gbXNnYnVmLT5idWY7Ci0JfQorCWxpbmVfcHJlZml4ID0gZGlmZl9saW5lX3ByZWZpeChkYXRhLT5vKTsKIAogCWlmIChsaW5lWzBdID09ICcrJykgewogCQl1bnNpZ25lZCBiYWQ7CkBAIC0yMTM1LDcgKzIxMTcsOCBAQAogCXJldHVybiBkZWZsYXRlZDsKIH0KIAotc3RhdGljIHZvaWQgZW1pdF9iaW5hcnlfZGlmZl9ib2R5KEZJTEUgKmZpbGUsIG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sIGNoYXIgKnByZWZpeCkKK3N0YXRpYyB2b2lkIGVtaXRfYmluYXJ5X2RpZmZfYm9keShGSUxFICpmaWxlLCBtbWZpbGVfdCAqb25lLCBtbWZpbGVfdCAqdHdvLAorCQkJCSAgY29uc3QgY2hhciAqcHJlZml4KQogewogCXZvaWQgKmNwOwogCXZvaWQgKmRlbHRhOwpAQCAtMjE5Niw3ICsyMTc5LDggQEAKIAlmcmVlKGRhdGEpOwogfQogCi1zdGF0aWMgdm9pZCBlbWl0X2JpbmFyeV9kaWZmKEZJTEUgKmZpbGUsIG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sIGNoYXIgKnByZWZpeCkKK3N0YXRpYyB2b2lkIGVtaXRfYmluYXJ5X2RpZmYoRklMRSAqZmlsZSwgbW1maWxlX3QgKm9uZSwgbW1maWxlX3QgKnR3bywKKwkJCSAgICAgY29uc3QgY2hhciAqcHJlZml4KQogewogCWZwcmludGYoZmlsZSwgIiVzR0lUIGJpbmFyeSBwYXRjaFxuIiwgcHJlZml4KTsKIAllbWl0X2JpbmFyeV9kaWZmX2JvZHkoZmlsZSwgb25lLCB0d28sIHByZWZpeCk7CkBAIC0yMjYzLDEzICsyMjQ3LDcgQEAKIAlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl9vbmUgPSBOVUxMOwogCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnRleHRjb252X3R3byA9IE5VTEw7CiAJc3RydWN0IHN0cmJ1ZiBoZWFkZXIgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmICptc2didWY7Ci0JY2hhciAqbGluZV9wcmVmaXggPSAiIjsKLQotCWlmIChvLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IG8tPm91dHB1dF9wcmVmaXgobywgby0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2didWYtPmJ1ZjsKLQl9CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG8pOwogCiAJaWYgKERJRkZfT1BUX1RTVChvLCBTVUJNT0RVTEVfTE9HKSAmJgogCQkJKCFvbmUtPm1vZGUgfHwgU19JU0dJVExJTksob25lLT5tb2RlKSkgJiYKQEAgLTIyNzcsNiArMjI1NSw3IEBACiAJCWNvbnN0IGNoYXIgKmRlbCA9IGRpZmZfZ2V0X2NvbG9yX29wdChvLCBESUZGX0ZJTEVfT0xEKTsKIAkJY29uc3QgY2hhciAqYWRkID0gZGlmZl9nZXRfY29sb3Jfb3B0KG8sIERJRkZfRklMRV9ORVcpOwogCQlzaG93X3N1Ym1vZHVsZV9zdW1tYXJ5KG8tPmZpbGUsIG9uZSA/IG9uZS0+cGF0aCA6IHR3by0+cGF0aCwKKwkJCQlsaW5lX3ByZWZpeCwKIAkJCQlvbmUtPnNoYTEsIHR3by0+c2hhMSwgdHdvLT5kaXJ0eV9zdWJtb2R1bGUsCiAJCQkJbWV0YSwgZGVsLCBhZGQsIHJlc2V0KTsKIAkJcmV0dXJuOwpAQCAtMjk2OCwxNCArMjk0Nyw5IEBACiB7CiAJY29uc3QgY2hhciAqc2V0ID0gZGlmZl9nZXRfY29sb3IodXNlX2NvbG9yLCBESUZGX01FVEFJTkZPKTsKIAljb25zdCBjaGFyICpyZXNldCA9IGRpZmZfZ2V0X2NvbG9yKHVzZV9jb2xvciwgRElGRl9SRVNFVCk7Ci0Jc3RydWN0IHN0cmJ1ZiAqbXNnYnVmOwotCWNoYXIgKmxpbmVfcHJlZml4ID0gIiI7CisJY29uc3QgY2hhciAqbGluZV9wcmVmaXggPSBkaWZmX2xpbmVfcHJlZml4KG8pOwogCiAJKm11c3Rfc2hvd19oZWFkZXIgPSAxOwotCWlmIChvLT5vdXRwdXRfcHJlZml4KSB7Ci0JCW1zZ2J1ZiA9IG8tPm91dHB1dF9wcmVmaXgobywgby0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJbGluZV9wcmVmaXggPSBtc2didWYtPmJ1ZjsKLQl9CiAJc3RyYnVmX2luaXQobXNnLCBQQVRIX01BWCAqIDIgKyAzMDApOwogCXN3aXRjaCAocC0+c3RhdHVzKSB7CiAJY2FzZSBESUZGX1NUQVRVU19DT1BJRUQ6CkBAIC0zMjI1LDYgKzMxOTksNyBAQAogCW9wdGlvbnMtPmFkZF9yZW1vdmUgPSBkaWZmX2FkZHJlbW92ZTsKIAlvcHRpb25zLT51c2VfY29sb3IgPSBkaWZmX3VzZV9jb2xvcl9kZWZhdWx0OwogCW9wdGlvbnMtPmRldGVjdF9yZW5hbWUgPSBkaWZmX2RldGVjdF9yZW5hbWVfZGVmYXVsdDsKKwlvcHRpb25zLT54ZGxfb3B0cyB8PSBkaWZmX2FsZ29yaXRobTsKIAogCWlmIChkaWZmX25vX3ByZWZpeCkgewogCQlvcHRpb25zLT5hX3ByZWZpeCA9IG9wdGlvbnMtPmJfcHJlZml4ID0gIiI7CkBAIC0zNjIyLDYgKzM1OTcsMTcgQEAKIAkJb3B0aW9ucy0+eGRsX29wdHMgPSBESUZGX1dJVEhfQUxHKG9wdGlvbnMsIFBBVElFTkNFX0RJRkYpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1oaXN0b2dyYW0iKSkKIAkJb3B0aW9ucy0+eGRsX29wdHMgPSBESUZGX1dJVEhfQUxHKG9wdGlvbnMsIEhJU1RPR1JBTV9ESUZGKTsKKwllbHNlIGlmICgoYXJnY291bnQgPSBwYXJzZV9sb25nX29wdCgiZGlmZi1hbGdvcml0aG0iLCBhdiwgJm9wdGFyZykpKSB7CisJCWxvbmcgdmFsdWUgPSBwYXJzZV9hbGdvcml0aG1fdmFsdWUob3B0YXJnKTsKKwkJaWYgKHZhbHVlIDwgMCkKKwkJCXJldHVybiBlcnJvcigib3B0aW9uIGRpZmYtYWxnb3JpdGhtIGFjY2VwdHMgXCJteWVyc1wiLCAiCisJCQkJICAgICAiXCJtaW5pbWFsXCIsIFwicGF0aWVuY2VcIiBhbmQgXCJoaXN0b2dyYW1cIiIpOworCQkvKiBjbGVhciBvdXQgcHJldmlvdXMgc2V0dGluZ3MgKi8KKwkJRElGRl9YRExfQ0xSKG9wdGlvbnMsIE5FRURfTUlOSU1BTCk7CisJCW9wdGlvbnMtPnhkbF9vcHRzICY9IH5YREZfRElGRl9BTEdPUklUSE1fTUFTSzsKKwkJb3B0aW9ucy0+eGRsX29wdHMgfD0gdmFsdWU7CisJCXJldHVybiBhcmdjb3VudDsKKwl9CiAKIAkvKiBmbGFncyBvcHRpb25zICovCiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWJpbmFyeSIpKSB7CkBAIC0zNjM4LDYgKzM2MjQsOCBAQAogCQlESUZGX09QVF9TRVQob3B0aW9ucywgRklORF9DT1BJRVNfSEFSREVSKTsKIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0tZm9sbG93IikpCiAJCURJRkZfT1BUX1NFVChvcHRpb25zLCBGT0xMT1dfUkVOQU1FUyk7CisJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5vLWZvbGxvdyIpKQorCQlESUZGX09QVF9DTFIob3B0aW9ucywgRk9MTE9XX1JFTkFNRVMpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1jb2xvciIpKQogCQlvcHRpb25zLT51c2VfY29sb3IgPSAxOwogCWVsc2UgaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1jb2xvcj0iKSkgewpAQCAtMzkxMCwxMiArMzg5OCw4IEBACiB7CiAJaW50IGxpbmVfdGVybWluYXRpb24gPSBvcHQtPmxpbmVfdGVybWluYXRpb247CiAJaW50IGludGVyX25hbWVfdGVybWluYXRpb24gPSBsaW5lX3Rlcm1pbmF0aW9uID8gJ1x0JyA6ICdcMCc7Ci0JaWYgKG9wdC0+b3V0cHV0X3ByZWZpeCkgewotCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCQltc2cgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7Ci0JCWZwcmludGYob3B0LT5maWxlLCAiJXMiLCBtc2ctPmJ1Zik7Ci0JfQogCisJZnByaW50ZihvcHQtPmZpbGUsICIlcyIsIGRpZmZfbGluZV9wcmVmaXgob3B0KSk7CiAJaWYgKCEob3B0LT5vdXRwdXRfZm9ybWF0ICYgRElGRl9GT1JNQVRfTkFNRV9TVEFUVVMpKSB7CiAJCWZwcmludGYob3B0LT5maWxlLCAiOiUwNm8gJTA2byAlcyAiLCBwLT5vbmUtPm1vZGUsIHAtPnR3by0+bW9kZSwKIAkJCWRpZmZfdW5pcXVlX2FiYnJldihwLT5vbmUtPnNoYTEsIG9wdC0+YWJicmV2KSk7CkBAIC00MTg1LDEyICs0MTY5LDcgQEAKIHN0YXRpYyB2b2lkIGRpZmZfc3VtbWFyeShzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsIHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwKQogewogCUZJTEUgKmZpbGUgPSBvcHQtPmZpbGU7Ci0JY2hhciAqbGluZV9wcmVmaXggPSAiIjsKLQotCWlmIChvcHQtPm91dHB1dF9wcmVmaXgpIHsKLQkJc3RydWN0IHN0cmJ1ZiAqYnVmID0gb3B0LT5vdXRwdXRfcHJlZml4KG9wdCwgb3B0LT5vdXRwdXRfcHJlZml4X2RhdGEpOwotCQlsaW5lX3ByZWZpeCA9IGJ1Zi0+YnVmOwotCX0KKwljb25zdCBjaGFyICpsaW5lX3ByZWZpeCA9IGRpZmZfbGluZV9wcmVmaXgob3B0KTsKIAogCXN3aXRjaChwLT5zdGF0dXMpIHsKIAljYXNlIERJRkZfU1RBVFVTX0RFTEVURUQ6CkBAIC00NDkxLDEzICs0NDcwLDkgQEAKIAogCWlmIChvdXRwdXRfZm9ybWF0ICYgRElGRl9GT1JNQVRfUEFUQ0gpIHsKIAkJaWYgKHNlcGFyYXRvcikgewotCQkJaWYgKG9wdGlvbnMtPm91dHB1dF9wcmVmaXgpIHsKLQkJCQlzdHJ1Y3Qgc3RyYnVmICptc2cgPSBOVUxMOwotCQkJCW1zZyA9IG9wdGlvbnMtPm91dHB1dF9wcmVmaXgob3B0aW9ucywKLQkJCQkJb3B0aW9ucy0+b3V0cHV0X3ByZWZpeF9kYXRhKTsKLQkJCQlmd3JpdGUobXNnLT5idWYsIG1zZy0+bGVuLCAxLCBzdGRvdXQpOwotCQkJfQotCQkJcHV0YyhvcHRpb25zLT5saW5lX3Rlcm1pbmF0aW9uLCBvcHRpb25zLT5maWxlKTsKKwkJCWZwcmludGYob3B0aW9ucy0+ZmlsZSwgIiVzJWMiLAorCQkJCWRpZmZfbGluZV9wcmVmaXgob3B0aW9ucyksCisJCQkJb3B0aW9ucy0+bGluZV90ZXJtaW5hdGlvbik7CiAJCQlpZiAob3B0aW9ucy0+c3RhdF9zZXApIHsKIAkJCQkvKiBhdHRhY2ggcGF0Y2ggaW5zdGVhZCBvZiBpbmxpbmUgKi8KIAkJCQlmcHV0cyhvcHRpb25zLT5zdGF0X3NlcCwgb3B0aW9ucy0+ZmlsZSk7CkBAIC00NzAxLDcgKzQ2NzYsNyBAQAogewogCWludCByZXN1bHQgPSAwOwogCi0JZGlmZl93YXJuX3JlbmFtZV9saW1pdCgiZGlmZi5yZW5hbWVsaW1pdCIsCisJZGlmZl93YXJuX3JlbmFtZV9saW1pdCgiZGlmZi5yZW5hbWVMaW1pdCIsCiAJCQkgICAgICAgb3B0LT5uZWVkZWRfcmVuYW1lX2xpbWl0LAogCQkJICAgICAgIG9wdC0+ZGVncmFkZWRfY2NfdG9fYyk7CiAJaWYgKCFESUZGX09QVF9UU1Qob3B0LCBFWElUX1dJVEhfU1RBVFVTKSAmJgpkaWZmIC0tZ2l0IGEvZGlmZi5oIGIvZGlmZi5oCmluZGV4IGE0N2JhZTQuLjc4YjQwOTEgMTAwNjQ0Ci0tLSBhL2RpZmYuaAorKysgYi9kaWZmLmgKQEAgLTE3NCw2ICsxNzQsOSBAQAogCWRpZmZfZ2V0X2NvbG9yKChvKS0+dXNlX2NvbG9yLCBpeCkKIAogCitjb25zdCBjaGFyICpkaWZmX2xpbmVfcHJlZml4KHN0cnVjdCBkaWZmX29wdGlvbnMgKik7CisKKwogZXh0ZXJuIGNvbnN0IGNoYXIgbWltZV9ib3VuZGFyeV9sZWFkZXJbXTsKIAogZXh0ZXJuIHZvaWQgZGlmZl90cmVlX3NldHVwX3BhdGhzKGNvbnN0IGNoYXIgKipwYXRocywgc3RydWN0IGRpZmZfb3B0aW9ucyAqKTsKQEAgLTMzMyw2ICszMzYsOCBAQAogCiBleHRlcm4gaW50IHBhcnNlX3JlbmFtZV9zY29yZShjb25zdCBjaGFyICoqY3BfcCk7CiAKK2V4dGVybiBsb25nIHBhcnNlX2FsZ29yaXRobV92YWx1ZShjb25zdCBjaGFyICp2YWx1ZSk7CisKIGV4dGVybiBpbnQgcHJpbnRfc3RhdF9zdW1tYXJ5KEZJTEUgKmZwLCBpbnQgZmlsZXMsCiAJCQkgICAgICBpbnQgaW5zZXJ0aW9ucywgaW50IGRlbGV0aW9ucyk7CiBleHRlcm4gdm9pZCBzZXR1cF9kaWZmX3BhZ2VyKHN0cnVjdCBkaWZmX29wdGlvbnMgKik7CmRpZmYgLS1naXQgYS9kaWZmY29yZS1icmVhay5jIGIvZGlmZmNvcmUtYnJlYWsuYwppbmRleCA0NGY4Njc4Li4xZDllNTMwIDEwMDY0NAotLS0gYS9kaWZmY29yZS1icmVhay5jCisrKyBiL2RpZmZjb3JlLWJyZWFrLmMKQEAgLTY4LDYgKzY4LDkgQEAKIAlpZiAobWF4X3NpemUgPCBNSU5JTVVNX0JSRUFLX1NJWkUpCiAJCXJldHVybiAwOyAvKiB3ZSBkbyBub3QgYnJlYWsgdG9vIHNtYWxsIGZpbGVwYWlyICovCiAKKwlpZiAoIXNyYy0+c2l6ZSkKKwkJcmV0dXJuIDA7IC8qIHdlIGRvIG5vdCBsZXQgZW1wdHkgZmlsZXMgZ2V0IHJlbmFtZWQgKi8KKwogCWlmIChkaWZmY29yZV9jb3VudF9jaGFuZ2VzKHNyYywgZHN0LAogCQkJCSAgICZzcmMtPmNudF9kYXRhLCAmZHN0LT5jbnRfZGF0YSwKIAkJCQkgICAwLApkaWZmIC0tZ2l0IGEvZGlmZmNvcmUtcGlja2F4ZS5jIGIvZGlmZmNvcmUtcGlja2F4ZS5jCmluZGV4IGIwOTdmYTcuLmM5N2FjOWIgMTAwNjQ0Ci0tLSBhL2RpZmZjb3JlLXBpY2theGUuYworKysgYi9kaWZmY29yZS1waWNrYXhlLmMKQEAgLTgsNyArOCwxMiBAQAogI2luY2x1ZGUgInhkaWZmLWludGVyZmFjZS5oIgogI2luY2x1ZGUgImt3c2V0LmgiCiAKLXR5cGVkZWYgaW50ICgqcGlja2F4ZV9mbikoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAsIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8sIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MpOwordHlwZWRlZiBpbnQgKCpwaWNrYXhlX2ZuKShtbWZpbGVfdCAqb25lLCBtbWZpbGVfdCAqdHdvLAorCQkJICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAorCQkJICByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKTsKKworc3RhdGljIGludCBwaWNrYXhlX21hdGNoKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwLCBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAorCQkJIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MsIHBpY2theGVfZm4gZm4pOwogCiBzdGF0aWMgdm9pZCBwaWNrYXhlKHN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKIAkJICAgIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MsIHBpY2theGVfZm4gZm4pCkBAIC0yMiw3ICsyNyw3IEBACiAJCS8qIFNob3dpbmcgdGhlIHdob2xlIGNoYW5nZXNldCBpZiBuZWVkbGUgZXhpc3RzICovCiAJCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOwotCQkJaWYgKGZuKHAsIG8sIHJlZ2V4cCwga3dzKSkKKwkJCWlmIChwaWNrYXhlX21hdGNoKHAsIG8sIHJlZ2V4cCwga3dzLCBmbikpCiAJCQkJcmV0dXJuOyAvKiBkbyBub3QgbXVuZ2UgdGhlIHF1ZXVlICovCiAJCX0KIApAQCAtMzcsNyArNDIsNyBAQAogCQkvKiBTaG93aW5nIG9ubHkgdGhlIGZpbGVwYWlycyB0aGF0IGhhcyB0aGUgbmVlZGxlICovCiAJCWZvciAoaSA9IDA7IGkgPCBxLT5ucjsgaSsrKSB7CiAJCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IHEtPnF1ZXVlW2ldOwotCQkJaWYgKGZuKHAsIG8sIHJlZ2V4cCwga3dzKSkKKwkJCWlmIChwaWNrYXhlX21hdGNoKHAsIG8sIHJlZ2V4cCwga3dzLCBmbikpCiAJCQkJZGlmZl9xKCZvdXRxLCBwKTsKIAkJCWVsc2UKIAkJCQlkaWZmX2ZyZWVfZmlsZXBhaXIocCk7CkBAIC03NCw2NCArNzksMzMgQEAKIAlsaW5lW2xlbl0gPSBob2xkOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX29uZShzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqb25lLAotCQkgICAgIG1tZmlsZV90ICptZiwgc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqKnRleHRjb252KQotewotCWlmIChESUZGX0ZJTEVfVkFMSUQob25lKSkgewotCQkqdGV4dGNvbnYgPSBnZXRfdGV4dGNvbnYob25lKTsKLQkJbWYtPnNpemUgPSBmaWxsX3RleHRjb252KCp0ZXh0Y29udiwgb25lLCAmbWYtPnB0cik7Ci0JfSBlbHNlIHsKLQkJbWVtc2V0KG1mLCAwLCBzaXplb2YoKm1mKSk7Ci0JfQotfQotCi1zdGF0aWMgaW50IGRpZmZfZ3JlcChzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKK3N0YXRpYyBpbnQgZGlmZl9ncmVwKG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sCisJCSAgICAgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKIAkJICAgICByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKQogewogCXJlZ21hdGNoX3QgcmVnbWF0Y2g7Ci0Jc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnZfb25lID0gTlVMTDsKLQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl90d28gPSBOVUxMOwotCW1tZmlsZV90IG1mMSwgbWYyOwotCWludCBoaXQ7CisJc3RydWN0IGRpZmZncmVwX2NiIGVjYmRhdGE7CisJeHBwYXJhbV90IHhwcDsKKwl4ZGVtaXRjb25mX3QgeGVjZmc7CiAKLQlpZiAoZGlmZl91bm1vZGlmaWVkX3BhaXIocCkpCi0JCXJldHVybiAwOworCWlmICghb25lKQorCQlyZXR1cm4gIXJlZ2V4ZWMocmVnZXhwLCB0d28tPnB0ciwgMSwgJnJlZ21hdGNoLCAwKTsKKwlpZiAoIXR3bykKKwkJcmV0dXJuICFyZWdleGVjKHJlZ2V4cCwgb25lLT5wdHIsIDEsICZyZWdtYXRjaCwgMCk7CiAKLQlmaWxsX29uZShwLT5vbmUsICZtZjEsICZ0ZXh0Y29udl9vbmUpOwotCWZpbGxfb25lKHAtPnR3bywgJm1mMiwgJnRleHRjb252X3R3byk7Ci0KLQlpZiAoIW1mMS5wdHIpIHsKLQkJaWYgKCFtZjIucHRyKQotCQkJcmV0dXJuIDA7IC8qIGlnbm9yZSB1bm1lcmdlZCAqLwotCQkvKiBjcmVhdGVkICJ0d28iIC0tIGRvZXMgaXQgaGF2ZSB3aGF0IHdlIGFyZSBsb29raW5nIGZvcj8gKi8KLQkJaGl0ID0gIXJlZ2V4ZWMocmVnZXhwLCBtZjIucHRyLCAxLCAmcmVnbWF0Y2gsIDApOwotCX0gZWxzZSBpZiAoIW1mMi5wdHIpIHsKLQkJLyogcmVtb3ZlZCAib25lIiAtLSBkaWQgaXQgaGF2ZSB3aGF0IHdlIGFyZSBsb29raW5nIGZvcj8gKi8KLQkJaGl0ID0gIXJlZ2V4ZWMocmVnZXhwLCBtZjEucHRyLCAxLCAmcmVnbWF0Y2gsIDApOwotCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIFdlIGhhdmUgYm90aCBzaWRlczsgbmVlZCB0byBydW4gdGV4dHVhbCBkaWZmIGFuZCBzZWUgaWYKLQkJICogdGhlIHBhdHRlcm4gYXBwZWFycyBvbiBhZGRlZC9kZWxldGVkIGxpbmVzLgotCQkgKi8KLQkJc3RydWN0IGRpZmZncmVwX2NiIGVjYmRhdGE7Ci0JCXhwcGFyYW1fdCB4cHA7Ci0JCXhkZW1pdGNvbmZfdCB4ZWNmZzsKLQotCQltZW1zZXQoJnhwcCwgMCwgc2l6ZW9mKHhwcCkpOwotCQltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKLQkJZWNiZGF0YS5yZWdleHAgPSByZWdleHA7Ci0JCWVjYmRhdGEuaGl0ID0gMDsKLQkJeGVjZmcuY3R4bGVuID0gby0+Y29udGV4dDsKLQkJeGVjZmcuaW50ZXJodW5rY3R4bGVuID0gby0+aW50ZXJodW5rY29udGV4dDsKLQkJeGRpX2RpZmZfb3V0ZigmbWYxLCAmbWYyLCBkaWZmZ3JlcF9jb25zdW1lLCAmZWNiZGF0YSwKLQkJCSAgICAgICZ4cHAsICZ4ZWNmZyk7Ci0JCWhpdCA9IGVjYmRhdGEuaGl0OwotCX0KLQlpZiAodGV4dGNvbnZfb25lKQotCQlmcmVlKG1mMS5wdHIpOwotCWlmICh0ZXh0Y29udl90d28pCi0JCWZyZWUobWYyLnB0cik7Ci0JcmV0dXJuIGhpdDsKKwkvKgorCSAqIFdlIGhhdmUgYm90aCBzaWRlczsgbmVlZCB0byBydW4gdGV4dHVhbCBkaWZmIGFuZCBzZWUgaWYKKwkgKiB0aGUgcGF0dGVybiBhcHBlYXJzIG9uIGFkZGVkL2RlbGV0ZWQgbGluZXMuCisJICovCisJbWVtc2V0KCZ4cHAsIDAsIHNpemVvZih4cHApKTsKKwltZW1zZXQoJnhlY2ZnLCAwLCBzaXplb2YoeGVjZmcpKTsKKwllY2JkYXRhLnJlZ2V4cCA9IHJlZ2V4cDsKKwllY2JkYXRhLmhpdCA9IDA7CisJeGVjZmcuY3R4bGVuID0gby0+Y29udGV4dDsKKwl4ZWNmZy5pbnRlcmh1bmtjdHhsZW4gPSBvLT5pbnRlcmh1bmtjb250ZXh0OworCXhkaV9kaWZmX291dGYob25lLCB0d28sIGRpZmZncmVwX2NvbnN1bWUsICZlY2JkYXRhLAorCQkgICAgICAmeHBwLCAmeGVjZmcpOworCXJldHVybiBlY2JkYXRhLmhpdDsKIH0KIAogc3RhdGljIHZvaWQgZGlmZmNvcmVfcGlja2F4ZV9ncmVwKHN0cnVjdCBkaWZmX29wdGlvbnMgKm8pCkBAIC0xNDgsNyArMTIyLDcgQEAKIAkJY2hhciBlcnJidWZbMTAyNF07CiAJCXJlZ2Vycm9yKGVyciwgJnJlZ2V4LCBlcnJidWYsIDEwMjQpOwogCQlyZWdmcmVlKCZyZWdleCk7Ci0JCWRpZSgiaW52YWxpZCBsb2ctZ3JlcCByZWdleDogJXMiLCBlcnJidWYpOworCQlkaWUoImludmFsaWQgcmVnZXg6ICVzIiwgZXJyYnVmKTsKIAl9CiAKIAlwaWNrYXhlKCZkaWZmX3F1ZXVlZF9kaWZmLCBvLCAmcmVnZXgsIE5VTEwsIGRpZmZfZ3JlcCk7CkBAIC0xOTgsMTcgKzE3MiwzNyBAQAogCXJldHVybiBjbnQ7CiB9CiAKLXN0YXRpYyBpbnQgaGFzX2NoYW5nZXMoc3RydWN0IGRpZmZfZmlsZXBhaXIgKnAsIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8sCitzdGF0aWMgaW50IGhhc19jaGFuZ2VzKG1tZmlsZV90ICpvbmUsIG1tZmlsZV90ICp0d28sCisJCSAgICAgICBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAogCQkgICAgICAgcmVnZXhfdCAqcmVnZXhwLCBrd3NldF90IGt3cykKIHsKLQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl9vbmUgPSBnZXRfdGV4dGNvbnYocC0+b25lKTsKLQlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl90d28gPSBnZXRfdGV4dGNvbnYocC0+dHdvKTsKKwlpZiAoIW9uZSkKKwkJcmV0dXJuIGNvbnRhaW5zKHR3bywgbywgcmVnZXhwLCBrd3MpICE9IDA7CisJaWYgKCF0d28pCisJCXJldHVybiBjb250YWlucyhvbmUsIG8sIHJlZ2V4cCwga3dzKSAhPSAwOworCXJldHVybiBjb250YWlucyhvbmUsIG8sIHJlZ2V4cCwga3dzKSAhPSBjb250YWlucyh0d28sIG8sIHJlZ2V4cCwga3dzKTsKK30KKworc3RhdGljIGludCBwaWNrYXhlX21hdGNoKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwLCBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLAorCQkJIHJlZ2V4X3QgKnJlZ2V4cCwga3dzZXRfdCBrd3MsIHBpY2theGVfZm4gZm4pCit7CisJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqdGV4dGNvbnZfb25lID0gTlVMTDsKKwlzdHJ1Y3QgdXNlcmRpZmZfZHJpdmVyICp0ZXh0Y29udl90d28gPSBOVUxMOwogCW1tZmlsZV90IG1mMSwgbWYyOwogCWludCByZXQ7CiAKIAlpZiAoIW8tPnBpY2theGVbMF0pCiAJCXJldHVybiAwOwogCisJLyogaWdub3JlIHVubWVyZ2VkICovCisJaWYgKCFESUZGX0ZJTEVfVkFMSUQocC0+b25lKSAmJiAhRElGRl9GSUxFX1ZBTElEKHAtPnR3bykpCisJCXJldHVybiAwOworCisJaWYgKERJRkZfT1BUX1RTVChvLCBBTExPV19URVhUQ09OVikpIHsKKwkJdGV4dGNvbnZfb25lID0gZ2V0X3RleHRjb252KHAtPm9uZSk7CisJCXRleHRjb252X3R3byA9IGdldF90ZXh0Y29udihwLT50d28pOworCX0KKwogCS8qCiAJICogSWYgd2UgaGF2ZSBhbiB1bm1vZGlmaWVkIHBhaXIsIHdlIGtub3cgdGhhdCB0aGUgY291bnQgd2lsbCBiZSB0aGUKIAkgKiBzYW1lIGFuZCBkb24ndCBldmVuIGhhdmUgdG8gbG9hZCB0aGUgYmxvYnMuIFVubGVzcyB0ZXh0Y29udiBpcyBpbgpAQCAtMjE5LDIwICsyMTMsMTIgQEAKIAlpZiAodGV4dGNvbnZfb25lID09IHRleHRjb252X3R3byAmJiBkaWZmX3VubW9kaWZpZWRfcGFpcihwKSkKIAkJcmV0dXJuIDA7CiAKLQlmaWxsX29uZShwLT5vbmUsICZtZjEsICZ0ZXh0Y29udl9vbmUpOwotCWZpbGxfb25lKHAtPnR3bywgJm1mMiwgJnRleHRjb252X3R3byk7CisJbWYxLnNpemUgPSBmaWxsX3RleHRjb252KHRleHRjb252X29uZSwgcC0+b25lLCAmbWYxLnB0cik7CisJbWYyLnNpemUgPSBmaWxsX3RleHRjb252KHRleHRjb252X3R3bywgcC0+dHdvLCAmbWYyLnB0cik7CiAKLQlpZiAoIW1mMS5wdHIpIHsKLQkJaWYgKCFtZjIucHRyKQotCQkJcmV0ID0gMDsgLyogaWdub3JlIHVubWVyZ2VkICovCi0JCS8qIGNyZWF0ZWQgKi8KLQkJcmV0ID0gY29udGFpbnMoJm1mMiwgbywgcmVnZXhwLCBrd3MpICE9IDA7Ci0JfQotCWVsc2UgaWYgKCFtZjIucHRyKSAvKiByZW1vdmVkICovCi0JCXJldCA9IGNvbnRhaW5zKCZtZjEsIG8sIHJlZ2V4cCwga3dzKSAhPSAwOwotCWVsc2UKLQkJcmV0ID0gY29udGFpbnMoJm1mMSwgbywgcmVnZXhwLCBrd3MpICE9Ci0JCSAgICAgIGNvbnRhaW5zKCZtZjIsIG8sIHJlZ2V4cCwga3dzKTsKKwlyZXQgPSBmbihESUZGX0ZJTEVfVkFMSUQocC0+b25lKSA/ICZtZjEgOiBOVUxMLAorCQkgRElGRl9GSUxFX1ZBTElEKHAtPnR3bykgPyAmbWYyIDogTlVMTCwKKwkJIG8sIHJlZ2V4cCwga3dzKTsKIAogCWlmICh0ZXh0Y29udl9vbmUpCiAJCWZyZWUobWYxLnB0cik7CkBAIC0yNjAsNyArMjQ2LDcgQEAKIAkJCWNoYXIgZXJyYnVmWzEwMjRdOwogCQkJcmVnZXJyb3IoZXJyLCAmcmVnZXgsIGVycmJ1ZiwgMTAyNCk7CiAJCQlyZWdmcmVlKCZyZWdleCk7Ci0JCQlkaWUoImludmFsaWQgcGlja2F4ZSByZWdleDogJXMiLCBlcnJidWYpOworCQkJZGllKCJpbnZhbGlkIHJlZ2V4OiAlcyIsIGVycmJ1Zik7CiAJCX0KIAkJcmVnZXhwID0gJnJlZ2V4OwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kaWZmY29yZS1yZW5hbWUuYyBiL2RpZmZjb3JlLXJlbmFtZS5jCmluZGV4IDUxMmQwYWMuLjZjN2E3MmYgMTAwNjQ0Ci0tLSBhL2RpZmZjb3JlLXJlbmFtZS5jCisrKyBiL2RpZmZjb3JlLXJlbmFtZS5jCkBAIC0zODksNiArMzg5LDcgQEAKIAlzdHJ1Y3QgaGFzaF90YWJsZSBmaWxlX3RhYmxlOwogCiAJaW5pdF9oYXNoKCZmaWxlX3RhYmxlKTsKKwlwcmVhbGxvY2F0ZV9oYXNoKCZmaWxlX3RhYmxlLCByZW5hbWVfc3JjX25yICsgcmVuYW1lX2RzdF9ucik7CiAJZm9yIChpID0gMDsgaSA8IHJlbmFtZV9zcmNfbnI7IGkrKykKIAkJaW5zZXJ0X2ZpbGVfdGFibGUoJmZpbGVfdGFibGUsIC0xLCBpLCByZW5hbWVfc3JjW2ldLnAtPm9uZSk7CiAKZGlmZiAtLWdpdCBhL2Rpci5jIGIvZGlyLmMKaW5kZXggNmZkZDNiMi4uODk3Yzg3NCAxMDA2NDQKLS0tIGEvZGlyLmMKKysrIGIvZGlyLmMKQEAgLTIsMTkgKzIsMzYgQEAKICAqIFRoaXMgaGFuZGxlcyByZWN1cnNpdmUgZmlsZW5hbWUgZGV0ZWN0aW9uIHdpdGggZXhjbHVkZQogICogZmlsZXMsIGluZGV4IGtub3dsZWRnZSBldGMuLgogICoKKyAqIFNlZSBEb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktZGlyZWN0b3J5LWxpc3RpbmcudHh0CisgKgogICogQ29weXJpZ2h0IChDKSBMaW51cyBUb3J2YWxkcywgMjAwNS0yMDA2CiAgKgkJIEp1bmlvIEhhbWFubywgMjAwNS0yMDA2CiAgKi8KICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgImRpci5oIgogI2luY2x1ZGUgInJlZnMuaCIKKyNpbmNsdWRlICJ3aWxkbWF0Y2guaCIKIAogc3RydWN0IHBhdGhfc2ltcGxpZnkgewogCWludCBsZW47CiAJY29uc3QgY2hhciAqcGF0aDsKIH07CiAKLXN0YXRpYyBpbnQgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBsZW4sCisvKgorICogVGVsbHMgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlIGhvdyBhIGZpbGUgb3IgZGlyZWN0b3J5IHNob3VsZCBiZSB0cmVhdGVkLgorICogVmFsdWVzIGFyZSBvcmRlcmVkIGJ5IHNpZ25pZmljYW5jZSwgZS5nLiBpZiBhIGRpcmVjdG9yeSBjb250YWlucyBib3RoCisgKiBleGNsdWRlZCBhbmQgdW50cmFja2VkIGZpbGVzLCBpdCBpcyBsaXN0ZWQgYXMgdW50cmFja2VkIGJlY2F1c2UKKyAqIHBhdGhfdW50cmFja2VkID4gcGF0aF9leGNsdWRlZC4KKyAqLworZW51bSBwYXRoX3RyZWF0bWVudCB7CisJcGF0aF9ub25lID0gMCwKKwlwYXRoX3JlY3Vyc2UsCisJcGF0aF9leGNsdWRlZCwKKwlwYXRoX3VudHJhY2tlZAorfTsKKworc3RhdGljIGVudW0gcGF0aF90cmVhdG1lbnQgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJY29uc3QgY2hhciAqcGF0aCwgaW50IGxlbiwKIAlpbnQgY2hlY2tfb25seSwgY29uc3Qgc3RydWN0IHBhdGhfc2ltcGxpZnkgKnNpbXBsaWZ5KTsKIHN0YXRpYyBpbnQgZ2V0X2R0eXBlKHN0cnVjdCBkaXJlbnQgKmRlLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbGVuKTsKIApAQCAtMzQsNiArNTEsMjggQEAKIAlyZXR1cm4gZm5tYXRjaChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzIHwgKGlnbm9yZV9jYXNlID8gRk5NX0NBU0VGT0xEIDogMCkpOwogfQogCitpbmxpbmUgaW50IGdpdF9mbm1hdGNoKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0IGNoYXIgKnN0cmluZywKKwkJICAgICAgIGludCBmbGFncywgaW50IHByZWZpeCkKK3sKKwlpbnQgZm5tX2ZsYWdzID0gMDsKKwlpZiAoZmxhZ3MgJiBHRk5NX1BBVEhOQU1FKQorCQlmbm1fZmxhZ3MgfD0gRk5NX1BBVEhOQU1FOworCWlmIChwcmVmaXggPiAwKSB7CisJCWlmIChzdHJuY21wKHBhdHRlcm4sIHN0cmluZywgcHJlZml4KSkKKwkJCXJldHVybiBGTk1fTk9NQVRDSDsKKwkJcGF0dGVybiArPSBwcmVmaXg7CisJCXN0cmluZyArPSBwcmVmaXg7CisJfQorCWlmIChmbGFncyAmIEdGTk1fT05FU1RBUikgeworCQlpbnQgcGF0dGVybl9sZW4gPSBzdHJsZW4oKytwYXR0ZXJuKTsKKwkJaW50IHN0cmluZ19sZW4gPSBzdHJsZW4oc3RyaW5nKTsKKwkJcmV0dXJuIHN0cmluZ19sZW4gPCBwYXR0ZXJuX2xlbiB8fAorCQkgICAgICAgc3RyY21wKHBhdHRlcm4sCisJCQkgICAgICBzdHJpbmcgKyBzdHJpbmdfbGVuIC0gcGF0dGVybl9sZW4pOworCX0KKwlyZXR1cm4gZm5tYXRjaChwYXR0ZXJuLCBzdHJpbmcsIGZubV9mbGFncyk7Cit9CisKIHN0YXRpYyBpbnQgZm5tYXRjaF9pY2FzZV9tZW0oY29uc3QgY2hhciAqcGF0dGVybiwgaW50IHBhdHRlcm5sZW4sCiAJCQkgICAgIGNvbnN0IGNoYXIgKnN0cmluZywgaW50IHN0cmluZ2xlbiwKIAkJCSAgICAgaW50IGZsYWdzKQpAQCAtNTMsNyArOTIsOSBAQAogCQl1c2Vfc3RyID0gc3RyX2J1Zi5idWY7CiAJfQogCi0JbWF0Y2hfc3RhdHVzID0gZm5tYXRjaF9pY2FzZSh1c2VfcGF0LCB1c2Vfc3RyLCBmbGFncyk7CisJaWYgKGlnbm9yZV9jYXNlKQorCQlmbGFncyB8PSBXTV9DQVNFRk9MRDsKKwltYXRjaF9zdGF0dXMgPSB3aWxkbWF0Y2godXNlX3BhdCwgdXNlX3N0ciwgZmxhZ3MsIE5VTEwpOwogCiAJc3RyYnVmX3JlbGVhc2UoJnBhdF9idWYpOwogCXN0cmJ1Zl9yZWxlYXNlKCZzdHJfYnVmKTsKQEAgLTY1LDYgKzEwNiw3IEBACiB7CiAJY29uc3QgY2hhciAqbiwgKmZpcnN0OwogCXNpemVfdCBtYXggPSAwOworCWludCBsaXRlcmFsID0gbGltaXRfcGF0aHNwZWNfdG9fbGl0ZXJhbCgpOwogCiAJaWYgKCFwYXRoc3BlYykKIAkJcmV0dXJuIG1heDsKQEAgLTc0LDcgKzExNiw3IEBACiAJCXNpemVfdCBpLCBsZW4gPSAwOwogCQlmb3IgKGkgPSAwOyBmaXJzdCA9PSBuIHx8IGkgPCBtYXg7IGkrKykgewogCQkJY2hhciBjID0gbltpXTsKLQkJCWlmICghYyB8fCBjICE9IGZpcnN0W2ldIHx8IGlzX2dsb2Jfc3BlY2lhbChjKSkKKwkJCWlmICghYyB8fCBjICE9IGZpcnN0W2ldIHx8ICghbGl0ZXJhbCAmJiBpc19nbG9iX3NwZWNpYWwoYykpKQogCQkJCWJyZWFrOwogCQkJaWYgKGMgPT0gJy8nKQogCQkJCWxlbiA9IGkgKyAxOwpAQCAtMTQ0LDYgKzE4Niw3IEBACiBzdGF0aWMgaW50IG1hdGNoX29uZShjb25zdCBjaGFyICptYXRjaCwgY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4pCiB7CiAJaW50IG1hdGNobGVuOworCWludCBsaXRlcmFsID0gbGltaXRfcGF0aHNwZWNfdG9fbGl0ZXJhbCgpOwogCiAJLyogSWYgdGhlIG1hdGNoIHdhcyBqdXN0IHRoZSBwcmVmaXgsIHdlIG1hdGNoZWQgKi8KIAlpZiAoISptYXRjaCkKQEAgLTE1Myw3ICsxOTYsNyBAQAogCQlmb3IgKDs7KSB7CiAJCQl1bnNpZ25lZCBjaGFyIGMxID0gdG9sb3dlcigqbWF0Y2gpOwogCQkJdW5zaWduZWQgY2hhciBjMiA9IHRvbG93ZXIoKm5hbWUpOwotCQkJaWYgKGMxID09ICdcMCcgfHwgaXNfZ2xvYl9zcGVjaWFsKGMxKSkKKwkJCWlmIChjMSA9PSAnXDAnIHx8ICghbGl0ZXJhbCAmJiBpc19nbG9iX3NwZWNpYWwoYzEpKSkKIAkJCQlicmVhazsKIAkJCWlmIChjMSAhPSBjMikKIAkJCQlyZXR1cm4gMDsKQEAgLTE2NSw3ICsyMDgsNyBAQAogCQlmb3IgKDs7KSB7CiAJCQl1bnNpZ25lZCBjaGFyIGMxID0gKm1hdGNoOwogCQkJdW5zaWduZWQgY2hhciBjMiA9ICpuYW1lOwotCQkJaWYgKGMxID09ICdcMCcgfHwgaXNfZ2xvYl9zcGVjaWFsKGMxKSkKKwkJCWlmIChjMSA9PSAnXDAnIHx8ICghbGl0ZXJhbCAmJiBpc19nbG9iX3NwZWNpYWwoYzEpKSkKIAkJCQlicmVhazsKIAkJCWlmIChjMSAhPSBjMikKIAkJCQlyZXR1cm4gMDsKQEAgLTE3NSwxNCArMjE4LDE2IEBACiAJCX0KIAl9CiAKLQogCS8qCiAJICogSWYgd2UgZG9uJ3QgbWF0Y2ggdGhlIG1hdGNoc3RyaW5nIGV4YWN0bHksCiAJICogd2UgbmVlZCB0byBtYXRjaCBieSBmbm1hdGNoCiAJICovCiAJbWF0Y2hsZW4gPSBzdHJsZW4obWF0Y2gpOwotCWlmIChzdHJuY21wX2ljYXNlKG1hdGNoLCBuYW1lLCBtYXRjaGxlbikpCisJaWYgKHN0cm5jbXBfaWNhc2UobWF0Y2gsIG5hbWUsIG1hdGNobGVuKSkgeworCQlpZiAobGl0ZXJhbCkKKwkJCXJldHVybiAwOwogCQlyZXR1cm4gIWZubWF0Y2hfaWNhc2UobWF0Y2gsIG5hbWUsIDApID8gTUFUQ0hFRF9GTk1BVENIIDogMDsKKwl9CiAKIAlpZiAobmFtZWxlbiA9PSBtYXRjaGxlbikKIAkJcmV0dXJuIE1BVENIRURfRVhBQ1RMWTsKQEAgLTE5MiwxMiArMjM3LDE5IEBACiB9CiAKIC8qCi0gKiBHaXZlbiBhIG5hbWUgYW5kIGEgbGlzdCBvZiBwYXRoc3BlY3MsIHNlZSBpZiB0aGUgbmFtZSBtYXRjaGVzCi0gKiBhbnkgb2YgdGhlIHBhdGhzcGVjcy4gIFRoZSBjYWxsZXIgaXMgYWxzbyBpbnRlcmVzdGVkIGluIHNlZWluZwotICogYWxsIHBhdGhzcGVjIG1hdGNoZXMgc29tZSBuYW1lcyBpdCBjYWxscyB0aGlzIGZ1bmN0aW9uIHdpdGgKLSAqIChvdGhlcndpc2UgdGhlIHVzZXIgY291bGQgaGF2ZSBtaXN0eXBlZCB0aGUgdW5tYXRjaGVkIHBhdGhzcGVjKSwKLSAqIGFuZCBhIG1hcmsgaXMgbGVmdCBpbiBzZWVuW10gYXJyYXkgZm9yIHBhdGhzcGVjIGVsZW1lbnQgdGhhdAotICogYWN0dWFsbHkgbWF0Y2hlZCBhbnl0aGluZy4KKyAqIEdpdmVuIGEgbmFtZSBhbmQgYSBsaXN0IG9mIHBhdGhzcGVjcywgcmV0dXJucyB0aGUgbmF0dXJlIG9mIHRoZQorICogY2xvc2VzdCAoaS5lLiBtb3N0IHNwZWNpZmljKSBtYXRjaCBvZiB0aGUgbmFtZSB0byBhbnkgb2YgdGhlCisgKiBwYXRoc3BlY3MuCisgKgorICogVGhlIGNhbGxlciB0eXBpY2FsbHkgY2FsbHMgdGhpcyBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lCisgKiBwYXRoc3BlYyBhbmQgc2VlbltdIGFycmF5IGJ1dCB3aXRoIGRpZmZlcmVudCBuYW1lL25hbWVsZW4KKyAqIChlLmcuIGVudHJpZXMgZnJvbSB0aGUgaW5kZXgpIGFuZCBpcyBpbnRlcmVzdGVkIGluIHNlZWluZyBpZiBhbmQKKyAqIGhvdyBlYWNoIHBhdGhzcGVjIG1hdGNoZXMgYWxsIHRoZSBuYW1lcyBpdCBjYWxscyB0aGlzIGZ1bmN0aW9uCisgKiB3aXRoLiAgQSBtYXJrIGlzIGxlZnQgaW4gdGhlIHNlZW5bXSBhcnJheSBmb3IgZWFjaCBwYXRoc3BlYyBlbGVtZW50CisgKiBpbmRpY2F0aW5nIHRoZSBjbG9zZXN0IHR5cGUgb2YgbWF0Y2ggdGhhdCBlbGVtZW50IGFjaGlldmVkLCBzbyBpZgorICogc2VlbltuXSByZW1haW5zIHplcm8gYWZ0ZXIgbXVsdGlwbGUgaW52b2NhdGlvbnMsIHRoYXQgbWVhbnMgdGhlIG50aAorICogcGF0aHNwZWMgZGlkIG5vdCBtYXRjaCBhbnkgbmFtZXMsIHdoaWNoIGNvdWxkIGluZGljYXRlIHRoYXQgdGhlCisgKiB1c2VyIG1pc3R5cGVkIHRoZSBudGggcGF0aHNwZWMuCiAgKi8KIGludCBtYXRjaF9wYXRoc3BlYyhjb25zdCBjaGFyICoqcGF0aHNwZWMsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLAogCQlpbnQgcHJlZml4LCBjaGFyICpzZWVuKQpAQCAtMjU3LDE5ICszMDksMjkgQEAKIAkJCXJldHVybiBNQVRDSEVEX1JFQ1VSU0lWRUxZOwogCX0KIAotCWlmIChpdGVtLT51c2Vfd2lsZGNhcmQgJiYgIWZubWF0Y2gobWF0Y2gsIG5hbWUsIDApKQorCWlmIChpdGVtLT5ub3dpbGRjYXJkX2xlbiA8IGl0ZW0tPmxlbiAmJgorCSAgICAhZ2l0X2ZubWF0Y2gobWF0Y2gsIG5hbWUsCisJCQkgaXRlbS0+ZmxhZ3MgJiBQQVRIU1BFQ19PTkVTVEFSID8gR0ZOTV9PTkVTVEFSIDogMCwKKwkJCSBpdGVtLT5ub3dpbGRjYXJkX2xlbiAtIHByZWZpeCkpCiAJCXJldHVybiBNQVRDSEVEX0ZOTUFUQ0g7CiAKIAlyZXR1cm4gMDsKIH0KIAogLyoKLSAqIEdpdmVuIGEgbmFtZSBhbmQgYSBsaXN0IG9mIHBhdGhzcGVjcywgc2VlIGlmIHRoZSBuYW1lIG1hdGNoZXMKLSAqIGFueSBvZiB0aGUgcGF0aHNwZWNzLiAgVGhlIGNhbGxlciBpcyBhbHNvIGludGVyZXN0ZWQgaW4gc2VlaW5nCi0gKiBhbGwgcGF0aHNwZWMgbWF0Y2hlcyBzb21lIG5hbWVzIGl0IGNhbGxzIHRoaXMgZnVuY3Rpb24gd2l0aAotICogKG90aGVyd2lzZSB0aGUgdXNlciBjb3VsZCBoYXZlIG1pc3R5cGVkIHRoZSB1bm1hdGNoZWQgcGF0aHNwZWMpLAotICogYW5kIGEgbWFyayBpcyBsZWZ0IGluIHNlZW5bXSBhcnJheSBmb3IgcGF0aHNwZWMgZWxlbWVudCB0aGF0Ci0gKiBhY3R1YWxseSBtYXRjaGVkIGFueXRoaW5nLgorICogR2l2ZW4gYSBuYW1lIGFuZCBhIGxpc3Qgb2YgcGF0aHNwZWNzLCByZXR1cm5zIHRoZSBuYXR1cmUgb2YgdGhlCisgKiBjbG9zZXN0IChpLmUuIG1vc3Qgc3BlY2lmaWMpIG1hdGNoIG9mIHRoZSBuYW1lIHRvIGFueSBvZiB0aGUKKyAqIHBhdGhzcGVjcy4KKyAqCisgKiBUaGUgY2FsbGVyIHR5cGljYWxseSBjYWxscyB0aGlzIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUKKyAqIHBhdGhzcGVjIGFuZCBzZWVuW10gYXJyYXkgYnV0IHdpdGggZGlmZmVyZW50IG5hbWUvbmFtZWxlbgorICogKGUuZy4gZW50cmllcyBmcm9tIHRoZSBpbmRleCkgYW5kIGlzIGludGVyZXN0ZWQgaW4gc2VlaW5nIGlmIGFuZAorICogaG93IGVhY2ggcGF0aHNwZWMgbWF0Y2hlcyBhbGwgdGhlIG5hbWVzIGl0IGNhbGxzIHRoaXMgZnVuY3Rpb24KKyAqIHdpdGguICBBIG1hcmsgaXMgbGVmdCBpbiB0aGUgc2VlbltdIGFycmF5IGZvciBlYWNoIHBhdGhzcGVjIGVsZW1lbnQKKyAqIGluZGljYXRpbmcgdGhlIGNsb3Nlc3QgdHlwZSBvZiBtYXRjaCB0aGF0IGVsZW1lbnQgYWNoaWV2ZWQsIHNvIGlmCisgKiBzZWVuW25dIHJlbWFpbnMgemVybyBhZnRlciBtdWx0aXBsZSBpbnZvY2F0aW9ucywgdGhhdCBtZWFucyB0aGUgbnRoCisgKiBwYXRoc3BlYyBkaWQgbm90IG1hdGNoIGFueSBuYW1lcywgd2hpY2ggY291bGQgaW5kaWNhdGUgdGhhdCB0aGUKKyAqIHVzZXIgbWlzdHlwZWQgdGhlIG50aCBwYXRoc3BlYy4KICAqLwogaW50IG1hdGNoX3BhdGhzcGVjX2RlcHRoKGNvbnN0IHN0cnVjdCBwYXRoc3BlYyAqcHMsCiAJCQkgY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sCkBAIC0zNzQsNyArNDM2LDcgQEAKIH0KIAogdm9pZCBhZGRfZXhjbHVkZShjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKmJhc2UsCi0JCSBpbnQgYmFzZWxlbiwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqd2hpY2gpCisJCSBpbnQgYmFzZWxlbiwgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwsIGludCBzcmNwb3MpCiB7CiAJc3RydWN0IGV4Y2x1ZGUgKng7CiAJaW50IHBhdHRlcm5sZW47CkBAIC0zOTgsOCArNDYwLDEwIEBACiAJeC0+YmFzZSA9IGJhc2U7CiAJeC0+YmFzZWxlbiA9IGJhc2VsZW47CiAJeC0+ZmxhZ3MgPSBmbGFnczsKLQlBTExPQ19HUk9XKHdoaWNoLT5leGNsdWRlcywgd2hpY2gtPm5yICsgMSwgd2hpY2gtPmFsbG9jKTsKLQl3aGljaC0+ZXhjbHVkZXNbd2hpY2gtPm5yKytdID0geDsKKwl4LT5zcmNwb3MgPSBzcmNwb3M7CisJQUxMT0NfR1JPVyhlbC0+ZXhjbHVkZXMsIGVsLT5uciArIDEsIGVsLT5hbGxvYyk7CisJZWwtPmV4Y2x1ZGVzW2VsLT5ucisrXSA9IHg7CisJeC0+ZWwgPSBlbDsKIH0KIAogc3RhdGljIHZvaWQgKnJlYWRfc2tpcF93b3JrdHJlZV9maWxlX2Zyb21faW5kZXgoY29uc3QgY2hhciAqcGF0aCwgc2l6ZV90ICpzaXplKQpAQCAtNDI1LDI3ICs0ODksMzIgQEAKIAlyZXR1cm4gZGF0YTsKIH0KIAotdm9pZCBmcmVlX2V4Y2x1ZGVzKHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKQorLyoKKyAqIEZyZWVzIG1lbW9yeSB3aXRoaW4gZWwgd2hpY2ggd2FzIGFsbG9jYXRlZCBmb3IgZXhjbHVkZSBwYXR0ZXJucyBhbmQKKyAqIHRoZSBmaWxlIGJ1ZmZlci4gIERvZXMgbm90IGZyZWUgZWwgaXRzZWxmLgorICovCit2b2lkIGNsZWFyX2V4Y2x1ZGVfbGlzdChzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCkKIHsKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBlbC0+bnI7IGkrKykKIAkJZnJlZShlbC0+ZXhjbHVkZXNbaV0pOwogCWZyZWUoZWwtPmV4Y2x1ZGVzKTsKKwlmcmVlKGVsLT5maWxlYnVmKTsKIAogCWVsLT5uciA9IDA7CiAJZWwtPmV4Y2x1ZGVzID0gTlVMTDsKKwllbC0+ZmlsZWJ1ZiA9IE5VTEw7CiB9CiAKIGludCBhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoY29uc3QgY2hhciAqZm5hbWUsCiAJCQkJICAgY29uc3QgY2hhciAqYmFzZSwKIAkJCQkgICBpbnQgYmFzZWxlbiwKLQkJCQkgICBjaGFyICoqYnVmX3AsCi0JCQkJICAgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqd2hpY2gsCisJCQkJICAgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwsCiAJCQkJICAgaW50IGNoZWNrX2luZGV4KQogewogCXN0cnVjdCBzdGF0IHN0OwotCWludCBmZCwgaTsKKwlpbnQgZmQsIGksIGxpbmVubyA9IDE7CiAJc2l6ZV90IHNpemUgPSAwOwogCWNoYXIgKmJ1ZiwgKmVudHJ5OwogCkBAIC00ODMsODAgKzU1Miw0NCBAQAogCQljbG9zZShmZCk7CiAJfQogCi0JaWYgKGJ1Zl9wKQotCQkqYnVmX3AgPSBidWY7CisJZWwtPmZpbGVidWYgPSBidWY7CiAJZW50cnkgPSBidWY7CiAJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewogCQlpZiAoYnVmW2ldID09ICdcbicpIHsKIAkJCWlmIChlbnRyeSAhPSBidWYgKyBpICYmIGVudHJ5WzBdICE9ICcjJykgewogCQkJCWJ1ZltpIC0gKGkgJiYgYnVmW2ktMV0gPT0gJ1xyJyldID0gMDsKLQkJCQlhZGRfZXhjbHVkZShlbnRyeSwgYmFzZSwgYmFzZWxlbiwgd2hpY2gpOworCQkJCWFkZF9leGNsdWRlKGVudHJ5LCBiYXNlLCBiYXNlbGVuLCBlbCwgbGluZW5vKTsKIAkJCX0KKwkJCWxpbmVubysrOwogCQkJZW50cnkgPSBidWYgKyBpICsgMTsKIAkJfQogCX0KIAlyZXR1cm4gMDsKIH0KIAotdm9pZCBhZGRfZXhjbHVkZXNfZnJvbV9maWxlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsIGNvbnN0IGNoYXIgKmZuYW1lKQotewotCWlmIChhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZm5hbWUsICIiLCAwLCBOVUxMLAotCQkJCQkgICAmZGlyLT5leGNsdWRlX2xpc3RbRVhDX0ZJTEVdLCAwKSA8IDApCi0JCWRpZSgiY2Fubm90IHVzZSAlcyBhcyBhbiBleGNsdWRlIGZpbGUiLCBmbmFtZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHByZXBfZXhjbHVkZShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbikKK3N0cnVjdCBleGNsdWRlX2xpc3QgKmFkZF9leGNsdWRlX2xpc3Qoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKKwkJCQkgICAgICBpbnQgZ3JvdXBfdHlwZSwgY29uc3QgY2hhciAqc3JjKQogewogCXN0cnVjdCBleGNsdWRlX2xpc3QgKmVsOwotCXN0cnVjdCBleGNsdWRlX3N0YWNrICpzdGsgPSBOVUxMOwotCWludCBjdXJyZW50OworCXN0cnVjdCBleGNsdWRlX2xpc3RfZ3JvdXAgKmdyb3VwOwogCi0JaWYgKCghZGlyLT5leGNsdWRlX3Blcl9kaXIpIHx8Ci0JICAgIChiYXNlbGVuICsgc3RybGVuKGRpci0+ZXhjbHVkZV9wZXJfZGlyKSA+PSBQQVRIX01BWCkpCi0JCXJldHVybjsgLyogdG9vIGxvbmcgYSBwYXRoIC0tIGlnbm9yZSAqLworCWdyb3VwID0gJmRpci0+ZXhjbHVkZV9saXN0X2dyb3VwW2dyb3VwX3R5cGVdOworCUFMTE9DX0dST1coZ3JvdXAtPmVsLCBncm91cC0+bnIgKyAxLCBncm91cC0+YWxsb2MpOworCWVsID0gJmdyb3VwLT5lbFtncm91cC0+bnIrK107CisJbWVtc2V0KGVsLCAwLCBzaXplb2YoKmVsKSk7CisJZWwtPnNyYyA9IHNyYzsKKwlyZXR1cm4gZWw7Cit9CiAKLQkvKiBQb3AgdGhlIG9uZXMgdGhhdCBhcmUgbm90IHRoZSBwcmVmaXggb2YgdGhlIHBhdGggYmVpbmcgY2hlY2tlZC4gKi8KLQllbCA9ICZkaXItPmV4Y2x1ZGVfbGlzdFtFWENfRElSU107Ci0Jd2hpbGUgKChzdGsgPSBkaXItPmV4Y2x1ZGVfc3RhY2spICE9IE5VTEwpIHsKLQkJaWYgKHN0ay0+YmFzZWxlbiA8PSBiYXNlbGVuICYmCi0JCSAgICAhc3RybmNtcChkaXItPmJhc2VidWYsIGJhc2UsIHN0ay0+YmFzZWxlbikpCi0JCQlicmVhazsKLQkJZGlyLT5leGNsdWRlX3N0YWNrID0gc3RrLT5wcmV2OwotCQl3aGlsZSAoc3RrLT5leGNsdWRlX2l4IDwgZWwtPm5yKQotCQkJZnJlZShlbC0+ZXhjbHVkZXNbLS1lbC0+bnJdKTsKLQkJZnJlZShzdGstPmZpbGVidWYpOwotCQlmcmVlKHN0ayk7Ci0JfQotCi0JLyogUmVhZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgYW5kIHB1c2ggdGhlbSBkb3duLiAqLwotCWN1cnJlbnQgPSBzdGsgPyBzdGstPmJhc2VsZW4gOiAtMTsKLQl3aGlsZSAoY3VycmVudCA8IGJhc2VsZW4pIHsKLQkJc3RydWN0IGV4Y2x1ZGVfc3RhY2sgKnN0ayA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpzdGspKTsKLQkJY29uc3QgY2hhciAqY3A7Ci0KLQkJaWYgKGN1cnJlbnQgPCAwKSB7Ci0JCQljcCA9IGJhc2U7Ci0JCQljdXJyZW50ID0gMDsKLQkJfQotCQllbHNlIHsKLQkJCWNwID0gc3RyY2hyKGJhc2UgKyBjdXJyZW50ICsgMSwgJy8nKTsKLQkJCWlmICghY3ApCi0JCQkJZGllKCJvb3BzIGluIHByZXBfZXhjbHVkZSIpOwotCQkJY3ArKzsKLQkJfQotCQlzdGstPnByZXYgPSBkaXItPmV4Y2x1ZGVfc3RhY2s7Ci0JCXN0ay0+YmFzZWxlbiA9IGNwIC0gYmFzZTsKLQkJc3RrLT5leGNsdWRlX2l4ID0gZWwtPm5yOwotCQltZW1jcHkoZGlyLT5iYXNlYnVmICsgY3VycmVudCwgYmFzZSArIGN1cnJlbnQsCi0JCSAgICAgICBzdGstPmJhc2VsZW4gLSBjdXJyZW50KTsKLQkJc3RyY3B5KGRpci0+YmFzZWJ1ZiArIHN0ay0+YmFzZWxlbiwgZGlyLT5leGNsdWRlX3Blcl9kaXIpOwotCQlhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZGlyLT5iYXNlYnVmLAotCQkJCQkgICAgICAgZGlyLT5iYXNlYnVmLCBzdGstPmJhc2VsZW4sCi0JCQkJCSAgICAgICAmc3RrLT5maWxlYnVmLCBlbCwgMSk7Ci0JCWRpci0+ZXhjbHVkZV9zdGFjayA9IHN0azsKLQkJY3VycmVudCA9IHN0ay0+YmFzZWxlbjsKLQl9Ci0JZGlyLT5iYXNlYnVmW2Jhc2VsZW5dID0gJ1wwJzsKKy8qCisgKiBVc2VkIHRvIHNldCB1cCBjb3JlLmV4Y2x1ZGVzZmlsZSBhbmQgLmdpdC9pbmZvL2V4Y2x1ZGUgbGlzdHMuCisgKi8KK3ZvaWQgYWRkX2V4Y2x1ZGVzX2Zyb21fZmlsZShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpmbmFtZSkKK3sKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwllbCA9IGFkZF9leGNsdWRlX2xpc3QoZGlyLCBFWENfRklMRSwgZm5hbWUpOworCWlmIChhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZm5hbWUsICIiLCAwLCBlbCwgMCkgPCAwKQorCQlkaWUoImNhbm5vdCB1c2UgJXMgYXMgYW4gZXhjbHVkZSBmaWxlIiwgZm5hbWUpOwogfQogCiBpbnQgbWF0Y2hfYmFzZW5hbWUoY29uc3QgY2hhciAqYmFzZW5hbWUsIGludCBiYXNlbmFtZWxlbiwKQEAgLTYzOSwyNSArNjcyLDI5IEBACiAKIAlyZXR1cm4gZm5tYXRjaF9pY2FzZV9tZW0ocGF0dGVybiwgcGF0dGVybmxlbiwKIAkJCQkgbmFtZSwgbmFtZWxlbiwKLQkJCQkgRk5NX1BBVEhOQU1FKSA9PSAwOworCQkJCSBXTV9QQVRITkFNRSkgPT0gMDsKIH0KIAotLyogU2NhbiB0aGUgbGlzdCBhbmQgbGV0IHRoZSBsYXN0IG1hdGNoIGRldGVybWluZSB0aGUgZmF0ZS4KLSAqIFJldHVybiAxIGZvciBleGNsdWRlLCAwIGZvciBpbmNsdWRlIGFuZCAtMSBmb3IgdW5kZWNpZGVkLgorLyoKKyAqIFNjYW4gdGhlIGdpdmVuIGV4Y2x1ZGUgbGlzdCBpbiByZXZlcnNlIHRvIHNlZSB3aGV0aGVyIHBhdGhuYW1lCisgKiBzaG91bGQgYmUgaWdub3JlZC4gIFRoZSBmaXJzdCBtYXRjaCAoaS5lLiB0aGUgbGFzdCBvbiB0aGUgbGlzdCksIGlmCisgKiBhbnksIGRldGVybWluZXMgdGhlIGZhdGUuICBSZXR1cm5zIHRoZSBleGNsdWRlX2xpc3QgZWxlbWVudCB3aGljaAorICogbWF0Y2hlZCwgb3IgTlVMTCBmb3IgdW5kZWNpZGVkLgogICovCi1pbnQgZXhjbHVkZWRfZnJvbV9saXN0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLAotCQkgICAgICAgaW50IHBhdGhsZW4sIGNvbnN0IGNoYXIgKmJhc2VuYW1lLCBpbnQgKmR0eXBlLAotCQkgICAgICAgc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwpCitzdGF0aWMgc3RydWN0IGV4Y2x1ZGUgKmxhc3RfZXhjbHVkZV9tYXRjaGluZ19mcm9tX2xpc3QoY29uc3QgY2hhciAqcGF0aG5hbWUsCisJCQkJCQkgICAgICAgaW50IHBhdGhsZW4sCisJCQkJCQkgICAgICAgY29uc3QgY2hhciAqYmFzZW5hbWUsCisJCQkJCQkgICAgICAgaW50ICpkdHlwZSwKKwkJCQkJCSAgICAgICBzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCkKIHsKIAlpbnQgaTsKIAogCWlmICghZWwtPm5yKQotCQlyZXR1cm4gLTE7CS8qIHVuZGVmaW5lZCAqLworCQlyZXR1cm4gTlVMTDsJLyogdW5kZWZpbmVkICovCiAKIAlmb3IgKGkgPSBlbC0+bnIgLSAxOyAwIDw9IGk7IGktLSkgewogCQlzdHJ1Y3QgZXhjbHVkZSAqeCA9IGVsLT5leGNsdWRlc1tpXTsKIAkJY29uc3QgY2hhciAqZXhjbHVkZSA9IHgtPnBhdHRlcm47Ci0JCWludCB0b19leGNsdWRlID0geC0+ZmxhZ3MgJiBFWENfRkxBR19ORUdBVElWRSA/IDAgOiAxOwogCQlpbnQgcHJlZml4ID0geC0+bm93aWxkY2FyZGxlbjsKIAogCQlpZiAoeC0+ZmxhZ3MgJiBFWENfRkxBR19NVVNUQkVESVIpIHsKQEAgLTY3Miw3ICs3MDksNyBAQAogCQkJCQkgICBwYXRobGVuIC0gKGJhc2VuYW1lIC0gcGF0aG5hbWUpLAogCQkJCQkgICBleGNsdWRlLCBwcmVmaXgsIHgtPnBhdHRlcm5sZW4sCiAJCQkJCSAgIHgtPmZsYWdzKSkKLQkJCQlyZXR1cm4gdG9fZXhjbHVkZTsKKwkJCQlyZXR1cm4geDsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTY4MCw4NyArNzE3LDE3OCBAQAogCQlpZiAobWF0Y2hfcGF0aG5hbWUocGF0aG5hbWUsIHBhdGhsZW4sCiAJCQkJICAgeC0+YmFzZSwgeC0+YmFzZWxlbiA/IHgtPmJhc2VsZW4gLSAxIDogMCwKIAkJCQkgICBleGNsdWRlLCBwcmVmaXgsIHgtPnBhdHRlcm5sZW4sIHgtPmZsYWdzKSkKLQkJCXJldHVybiB0b19leGNsdWRlOworCQkJcmV0dXJuIHg7CiAJfQorCXJldHVybiBOVUxMOyAvKiB1bmRlY2lkZWQgKi8KK30KKworLyoKKyAqIFNjYW4gdGhlIGxpc3QgYW5kIGxldCB0aGUgbGFzdCBtYXRjaCBkZXRlcm1pbmUgdGhlIGZhdGUuCisgKiBSZXR1cm4gMSBmb3IgZXhjbHVkZSwgMCBmb3IgaW5jbHVkZSBhbmQgLTEgZm9yIHVuZGVjaWRlZC4KKyAqLworaW50IGlzX2V4Y2x1ZGVkX2Zyb21fbGlzdChjb25zdCBjaGFyICpwYXRobmFtZSwKKwkJCSAgaW50IHBhdGhsZW4sIGNvbnN0IGNoYXIgKmJhc2VuYW1lLCBpbnQgKmR0eXBlLAorCQkJICBzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCkKK3sKKwlzdHJ1Y3QgZXhjbHVkZSAqZXhjbHVkZTsKKwlleGNsdWRlID0gbGFzdF9leGNsdWRlX21hdGNoaW5nX2Zyb21fbGlzdChwYXRobmFtZSwgcGF0aGxlbiwgYmFzZW5hbWUsIGR0eXBlLCBlbCk7CisJaWYgKGV4Y2x1ZGUpCisJCXJldHVybiBleGNsdWRlLT5mbGFncyAmIEVYQ19GTEFHX05FR0FUSVZFID8gMCA6IDE7CiAJcmV0dXJuIC0xOyAvKiB1bmRlY2lkZWQgKi8KIH0KIAotc3RhdGljIGludCBleGNsdWRlZChzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50ICpkdHlwZV9wKQorc3RhdGljIHN0cnVjdCBleGNsdWRlICpsYXN0X2V4Y2x1ZGVfbWF0Y2hpbmdfZnJvbV9saXN0cyhzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLAorCQljb25zdCBjaGFyICpwYXRobmFtZSwgaW50IHBhdGhsZW4sIGNvbnN0IGNoYXIgKmJhc2VuYW1lLAorCQlpbnQgKmR0eXBlX3ApCit7CisJaW50IGksIGo7CisJc3RydWN0IGV4Y2x1ZGVfbGlzdF9ncm91cCAqZ3JvdXA7CisJc3RydWN0IGV4Y2x1ZGUgKmV4Y2x1ZGU7CisJZm9yIChpID0gRVhDX0NNREw7IGkgPD0gRVhDX0ZJTEU7IGkrKykgeworCQlncm91cCA9ICZkaXItPmV4Y2x1ZGVfbGlzdF9ncm91cFtpXTsKKwkJZm9yIChqID0gZ3JvdXAtPm5yIC0gMTsgaiA+PSAwOyBqLS0pIHsKKwkJCWV4Y2x1ZGUgPSBsYXN0X2V4Y2x1ZGVfbWF0Y2hpbmdfZnJvbV9saXN0KAorCQkJCXBhdGhuYW1lLCBwYXRobGVuLCBiYXNlbmFtZSwgZHR5cGVfcCwKKwkJCQkmZ3JvdXAtPmVsW2pdKTsKKwkJCWlmIChleGNsdWRlKQorCQkJCXJldHVybiBleGNsdWRlOworCQl9CisJfQorCXJldHVybiBOVUxMOworfQorCisvKgorICogTG9hZHMgdGhlIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBsaXN0IGZvciB0aGUgc3Vic3RyaW5nIG9mIGJhc2UKKyAqIHdoaWNoIGhhcyBhIGNoYXIgbGVuZ3RoIG9mIGJhc2VsZW4uCisgKi8KK3N0YXRpYyB2b2lkIHByZXBfZXhjbHVkZShzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbikKK3sKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0X2dyb3VwICpncm91cDsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqc3RrID0gTlVMTDsKKwlpbnQgY3VycmVudDsKKworCWdyb3VwID0gJmRpci0+ZXhjbHVkZV9saXN0X2dyb3VwW0VYQ19ESVJTXTsKKworCS8qIFBvcCB0aGUgZXhjbHVkZSBsaXN0cyBmcm9tIHRoZSBFWENMX0RJUlMgZXhjbHVkZV9saXN0X2dyb3VwCisJICogd2hpY2ggb3JpZ2luYXRlIGZyb20gZGlyZWN0b3JpZXMgbm90IGluIHRoZSBwcmVmaXggb2YgdGhlCisJICogcGF0aCBiZWluZyBjaGVja2VkLiAqLworCXdoaWxlICgoc3RrID0gZGlyLT5leGNsdWRlX3N0YWNrKSAhPSBOVUxMKSB7CisJCWlmIChzdGstPmJhc2VsZW4gPD0gYmFzZWxlbiAmJgorCQkgICAgIXN0cm5jbXAoZGlyLT5iYXNlYnVmLCBiYXNlLCBzdGstPmJhc2VsZW4pKQorCQkJYnJlYWs7CisJCWVsID0gJmdyb3VwLT5lbFtkaXItPmV4Y2x1ZGVfc3RhY2stPmV4Y2x1ZGVfaXhdOworCQlkaXItPmV4Y2x1ZGVfc3RhY2sgPSBzdGstPnByZXY7CisJCWRpci0+ZXhjbHVkZSA9IE5VTEw7CisJCWZyZWUoKGNoYXIgKillbC0+c3JjKTsgLyogc2VlIHN0cmR1cCgpIGJlbG93ICovCisJCWNsZWFyX2V4Y2x1ZGVfbGlzdChlbCk7CisJCWZyZWUoc3RrKTsKKwkJZ3JvdXAtPm5yLS07CisJfQorCisJLyogU2tpcCB0cmF2ZXJzaW5nIGludG8gc3ViIGRpcmVjdG9yaWVzIGlmIHRoZSBwYXJlbnQgaXMgZXhjbHVkZWQgKi8KKwlpZiAoZGlyLT5leGNsdWRlKQorCQlyZXR1cm47CisKKwkvKiBSZWFkIGZyb20gdGhlIHBhcmVudCBkaXJlY3RvcmllcyBhbmQgcHVzaCB0aGVtIGRvd24uICovCisJY3VycmVudCA9IHN0ayA/IHN0ay0+YmFzZWxlbiA6IC0xOworCXdoaWxlIChjdXJyZW50IDwgYmFzZWxlbikgeworCQlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqc3RrID0geGNhbGxvYygxLCBzaXplb2YoKnN0aykpOworCQljb25zdCBjaGFyICpjcDsKKworCQlpZiAoY3VycmVudCA8IDApIHsKKwkJCWNwID0gYmFzZTsKKwkJCWN1cnJlbnQgPSAwOworCQl9CisJCWVsc2UgeworCQkJY3AgPSBzdHJjaHIoYmFzZSArIGN1cnJlbnQgKyAxLCAnLycpOworCQkJaWYgKCFjcCkKKwkJCQlkaWUoIm9vcHMgaW4gcHJlcF9leGNsdWRlIik7CisJCQljcCsrOworCQl9CisJCXN0ay0+cHJldiA9IGRpci0+ZXhjbHVkZV9zdGFjazsKKwkJc3RrLT5iYXNlbGVuID0gY3AgLSBiYXNlOworCQlzdGstPmV4Y2x1ZGVfaXggPSBncm91cC0+bnI7CisJCWVsID0gYWRkX2V4Y2x1ZGVfbGlzdChkaXIsIEVYQ19ESVJTLCBOVUxMKTsKKwkJbWVtY3B5KGRpci0+YmFzZWJ1ZiArIGN1cnJlbnQsIGJhc2UgKyBjdXJyZW50LAorCQkgICAgICAgc3RrLT5iYXNlbGVuIC0gY3VycmVudCk7CisKKwkJLyogQWJvcnQgaWYgdGhlIGRpcmVjdG9yeSBpcyBleGNsdWRlZCAqLworCQlpZiAoc3RrLT5iYXNlbGVuKSB7CisJCQlpbnQgZHQgPSBEVF9ESVI7CisJCQlkaXItPmJhc2VidWZbc3RrLT5iYXNlbGVuIC0gMV0gPSAwOworCQkJZGlyLT5leGNsdWRlID0gbGFzdF9leGNsdWRlX21hdGNoaW5nX2Zyb21fbGlzdHMoZGlyLAorCQkJCWRpci0+YmFzZWJ1Ziwgc3RrLT5iYXNlbGVuIC0gMSwKKwkJCQlkaXItPmJhc2VidWYgKyBjdXJyZW50LCAmZHQpOworCQkJZGlyLT5iYXNlYnVmW3N0ay0+YmFzZWxlbiAtIDFdID0gJy8nOworCQkJaWYgKGRpci0+ZXhjbHVkZSAmJgorCQkJICAgIGRpci0+ZXhjbHVkZS0+ZmxhZ3MgJiBFWENfRkxBR19ORUdBVElWRSkKKwkJCQlkaXItPmV4Y2x1ZGUgPSBOVUxMOworCQkJaWYgKGRpci0+ZXhjbHVkZSkgeworCQkJCWRpci0+YmFzZWJ1ZltzdGstPmJhc2VsZW5dID0gMDsKKwkJCQlkaXItPmV4Y2x1ZGVfc3RhY2sgPSBzdGs7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJLyogVHJ5IHRvIHJlYWQgcGVyLWRpcmVjdG9yeSBmaWxlIHVubGVzcyBwYXRoIGlzIHRvbyBsb25nICovCisJCWlmIChkaXItPmV4Y2x1ZGVfcGVyX2RpciAmJgorCQkgICAgc3RrLT5iYXNlbGVuICsgc3RybGVuKGRpci0+ZXhjbHVkZV9wZXJfZGlyKSA8IFBBVEhfTUFYKSB7CisJCQlzdHJjcHkoZGlyLT5iYXNlYnVmICsgc3RrLT5iYXNlbGVuLAorCQkJCQlkaXItPmV4Y2x1ZGVfcGVyX2Rpcik7CisJCQkvKgorCQkJICogZGlyLT5iYXNlYnVmIGdldHMgcmV1c2VkIGJ5IHRoZSB0cmF2ZXJzYWwsIGJ1dCB3ZQorCQkJICogbmVlZCBmbmFtZSB0byByZW1haW4gdW5jaGFuZ2VkIHRvIGVuc3VyZSB0aGUgc3JjCisJCQkgKiBtZW1iZXIgb2YgZWFjaCBzdHJ1Y3QgZXhjbHVkZSBjb3JyZWN0bHkKKwkJCSAqIGJhY2stcmVmZXJlbmNlcyBpdHMgc291cmNlIGZpbGUuICBPdGhlciBpbnZvY2F0aW9ucworCQkJICogb2YgYWRkX2V4Y2x1ZGVfbGlzdCBwcm92aWRlIHN0YWJsZSBzdHJpbmdzLCBzbyB3ZQorCQkJICogc3RyZHVwKCkgYW5kIGZyZWUoKSBoZXJlIGluIHRoZSBjYWxsZXIuCisJCQkgKi8KKwkJCWVsLT5zcmMgPSBzdHJkdXAoZGlyLT5iYXNlYnVmKTsKKwkJCWFkZF9leGNsdWRlc19mcm9tX2ZpbGVfdG9fbGlzdChkaXItPmJhc2VidWYsCisJCQkJCWRpci0+YmFzZWJ1Ziwgc3RrLT5iYXNlbGVuLCBlbCwgMSk7CisJCX0KKwkJZGlyLT5leGNsdWRlX3N0YWNrID0gc3RrOworCQljdXJyZW50ID0gc3RrLT5iYXNlbGVuOworCX0KKwlkaXItPmJhc2VidWZbYmFzZWxlbl0gPSAnXDAnOworfQorCisvKgorICogTG9hZHMgdGhlIGV4Y2x1ZGUgbGlzdHMgZm9yIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBwYXRobmFtZSwgdGhlbgorICogc2NhbnMgYWxsIGV4Y2x1ZGUgbGlzdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgcGF0aG5hbWUgaXMgZXhjbHVkZWQuCisgKiBSZXR1cm5zIHRoZSBleGNsdWRlX2xpc3QgZWxlbWVudCB3aGljaCBtYXRjaGVkLCBvciBOVUxMIGZvcgorICogdW5kZWNpZGVkLgorICovCitzdHJ1Y3QgZXhjbHVkZSAqbGFzdF9leGNsdWRlX21hdGNoaW5nKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCQkJCSAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsCisJCQkJCSAgICAgaW50ICpkdHlwZV9wKQogewogCWludCBwYXRobGVuID0gc3RybGVuKHBhdGhuYW1lKTsKLQlpbnQgc3Q7CiAJY29uc3QgY2hhciAqYmFzZW5hbWUgPSBzdHJyY2hyKHBhdGhuYW1lLCAnLycpOwogCWJhc2VuYW1lID0gKGJhc2VuYW1lKSA/IGJhc2VuYW1lKzEgOiBwYXRobmFtZTsKIAogCXByZXBfZXhjbHVkZShkaXIsIHBhdGhuYW1lLCBiYXNlbmFtZS1wYXRobmFtZSk7Ci0JZm9yIChzdCA9IEVYQ19DTURMOyBzdCA8PSBFWENfRklMRTsgc3QrKykgewotCQlzd2l0Y2ggKGV4Y2x1ZGVkX2Zyb21fbGlzdChwYXRobmFtZSwgcGF0aGxlbiwgYmFzZW5hbWUsCi0JCQkJCSAgIGR0eXBlX3AsICZkaXItPmV4Y2x1ZGVfbGlzdFtzdF0pKSB7Ci0JCWNhc2UgMDoKLQkJCXJldHVybiAwOwotCQljYXNlIDE6Ci0JCQlyZXR1cm4gMTsKLQkJfQotCX0KLQlyZXR1cm4gMDsKLX0KIAotdm9pZCBwYXRoX2V4Y2x1ZGVfY2hlY2tfaW5pdChzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrICpjaGVjaywKLQkJCSAgICAgc3RydWN0IGRpcl9zdHJ1Y3QgKmRpcikKLXsKLQljaGVjay0+ZGlyID0gZGlyOwotCXN0cmJ1Zl9pbml0KCZjaGVjay0+cGF0aCwgMjU2KTsKLX0KKwlpZiAoZGlyLT5leGNsdWRlKQorCQlyZXR1cm4gZGlyLT5leGNsdWRlOwogCi12b2lkIHBhdGhfZXhjbHVkZV9jaGVja19jbGVhcihzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrICpjaGVjaykKLXsKLQlzdHJidWZfcmVsZWFzZSgmY2hlY2stPnBhdGgpOworCXJldHVybiBsYXN0X2V4Y2x1ZGVfbWF0Y2hpbmdfZnJvbV9saXN0cyhkaXIsIHBhdGhuYW1lLCBwYXRobGVuLAorCQkJYmFzZW5hbWUsIGR0eXBlX3ApOwogfQogCiAvKgotICogSXMgdGhpcyBuYW1lIGV4Y2x1ZGVkPyAgVGhpcyBpcyBmb3IgYSBjYWxsZXIgbGlrZSBzaG93X2ZpbGVzKCkgdGhhdAotICogZG8gbm90IGhvbm9yIGRpcmVjdG9yeSBoaWVyYXJjaHkgYW5kIGl0ZXJhdGUgdGhyb3VnaCBwYXRocyB0aGF0IGFyZQotICogcG9zc2libHkgaW4gYW4gaWdub3JlZCBkaXJlY3RvcnkuCi0gKgotICogQSBwYXRoIHRvIGEgZGlyZWN0b3J5IGtub3duIHRvIGJlIGV4Y2x1ZGVkIGlzIGxlZnQgaW4gY2hlY2stPnBhdGggdG8KLSAqIG9wdGltaXplIGZvciByZXBlYXRlZCBjaGVja3MgZm9yIGZpbGVzIGluIHRoZSBzYW1lIGV4Y2x1ZGVkIGRpcmVjdG9yeS4KKyAqIExvYWRzIHRoZSBleGNsdWRlIGxpc3RzIGZvciB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgcGF0aG5hbWUsIHRoZW4KKyAqIHNjYW5zIGFsbCBleGNsdWRlIGxpc3RzIHRvIGRldGVybWluZSB3aGV0aGVyIHBhdGhuYW1lIGlzIGV4Y2x1ZGVkLgorICogUmV0dXJucyAxIGlmIHRydWUsIG90aGVyd2lzZSAwLgogICovCi1pbnQgcGF0aF9leGNsdWRlZChzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrICpjaGVjaywKLQkJICBjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwgaW50ICpkdHlwZSkKK2ludCBpc19leGNsdWRlZChzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50ICpkdHlwZV9wKQogewotCWludCBpOwotCXN0cnVjdCBzdHJidWYgKnBhdGggPSAmY2hlY2stPnBhdGg7Ci0KLQkvKgotCSAqIHdlIGFsbG93IHRoZSBjYWxsZXIgdG8gcGFzcyBuYW1lbGVuIGFzIGFuIG9wdGltaXphdGlvbjsgaXQKLQkgKiBtdXN0IG1hdGNoIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUsIGFzIHdlIGV2ZW50dWFsbHkgY2FsbAotCSAqIGV4Y2x1ZGVkKCkgb24gdGhlIHdob2xlIG5hbWUgc3RyaW5nLgotCSAqLwotCWlmIChuYW1lbGVuIDwgMCkKLQkJbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLQotCWlmIChwYXRoLT5sZW4gJiYKLQkgICAgcGF0aC0+bGVuIDw9IG5hbWVsZW4gJiYKLQkgICAgIW1lbWNtcChuYW1lLCBwYXRoLT5idWYsIHBhdGgtPmxlbikgJiYKLQkgICAgKCFuYW1lW3BhdGgtPmxlbl0gfHwgbmFtZVtwYXRoLT5sZW5dID09ICcvJykpCi0JCXJldHVybiAxOwotCi0Jc3RyYnVmX3NldGxlbihwYXRoLCAwKTsKLQlmb3IgKGkgPSAwOyBuYW1lW2ldOyBpKyspIHsKLQkJaW50IGNoID0gbmFtZVtpXTsKLQotCQlpZiAoY2ggPT0gJy8nKSB7Ci0JCQlpbnQgZHQgPSBEVF9ESVI7Ci0JCQlpZiAoZXhjbHVkZWQoY2hlY2stPmRpciwgcGF0aC0+YnVmLCAmZHQpKQotCQkJCXJldHVybiAxOwotCQl9Ci0JCXN0cmJ1Zl9hZGRjaChwYXRoLCBjaCk7Ci0JfQotCi0JLyogQW4gZW50cnkgaW4gdGhlIGluZGV4OyBjYW5ub3QgYmUgYSBkaXJlY3Rvcnkgd2l0aCBzdWJlbnRyaWVzICovCi0Jc3RyYnVmX3NldGxlbihwYXRoLCAwKTsKLQotCXJldHVybiBleGNsdWRlZChjaGVjay0+ZGlyLCBuYW1lLCBkdHlwZSk7CisJc3RydWN0IGV4Y2x1ZGUgKmV4Y2x1ZGUgPQorCQlsYXN0X2V4Y2x1ZGVfbWF0Y2hpbmcoZGlyLCBwYXRobmFtZSwgZHR5cGVfcCk7CisJaWYgKGV4Y2x1ZGUpCisJCXJldHVybiBleGNsdWRlLT5mbGFncyAmIEVYQ19GTEFHX05FR0FUSVZFID8gMCA6IDE7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfZW50cnlfbmV3KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgbGVuKQpAQCAtNzc2LDggKzkwNCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgZGlyX2VudHJ5ICpkaXJfYWRkX25hbWUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBsZW4pCiB7Ci0JaWYgKCEoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRUQpICYmCi0JICAgIGNhY2hlX25hbWVfZXhpc3RzKHBhdGhuYW1lLCBsZW4sIGlnbm9yZV9jYXNlKSkKKwlpZiAoY2FjaGVfbmFtZV9leGlzdHMocGF0aG5hbWUsIGxlbiwgaWdub3JlX2Nhc2UpKQogCQlyZXR1cm4gTlVMTDsKIAogCUFMTE9DX0dST1coZGlyLT5lbnRyaWVzLCBkaXItPm5yKzEsIGRpci0+YWxsb2MpOwpAQCAtODc5LDkgKzEwMDYsOCBAQAogICogdHJhdmVyc2FsIHJvdXRpbmUuCiAgKgogICogQ2FzZSAxOiBJZiB3ZSAqYWxyZWFkeSogaGF2ZSBlbnRyaWVzIGluIHRoZSBpbmRleCB1bmRlciB0aGF0Ci0gKiBkaXJlY3RvcnkgbmFtZSwgd2UgcmVjdXJzZSBpbnRvIHRoZSBkaXJlY3RvcnkgdG8gc2VlIGFsbCB0aGUgZmlsZXMsCi0gKiB1bmxlc3MgdGhlIGRpcmVjdG9yeSBpcyBleGNsdWRlZCBhbmQgd2Ugd2FudCB0byBzaG93IGlnbm9yZWQKLSAqIGRpcmVjdG9yaWVzCisgKiBkaXJlY3RvcnkgbmFtZSwgd2UgYWx3YXlzIHJlY3Vyc2UgaW50byB0aGUgZGlyZWN0b3J5IHRvIHNlZQorICogYWxsIHRoZSBmaWxlcy4KICAqCiAgKiBDYXNlIDI6IElmIHdlICphbHJlYWR5KiBoYXZlIHRoYXQgZGlyZWN0b3J5IG5hbWUgYXMgYSBnaXRsaW5rLAogICogd2UgYWx3YXlzIGNvbnRpbnVlIHRvIHNlZSBpdCBhcyBhIGdpdGxpbmssIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgpAQCAtODkzLDM4ICsxMDE5LDI2IEBACiAgKgogICogIChhKSBpZiAic2hvd19vdGhlcl9kaXJlY3RvcmllcyIgaXMgdHJ1ZSwgd2Ugc2hvdyBpdCBhcwogICogICAgICBqdXN0IGEgZGlyZWN0b3J5LCB1bmxlc3MgImhpZGVfZW1wdHlfZGlyZWN0b3JpZXMiIGlzCi0gKiAgICAgIGFsc28gdHJ1ZSBhbmQgdGhlIGRpcmVjdG9yeSBpcyBlbXB0eSwgaW4gd2hpY2ggY2FzZQotICogICAgICB3ZSBqdXN0IGlnbm9yZSBpdCBlbnRpcmVseS4KLSAqICAgICAgaWYgd2UgYXJlIGxvb2tpbmcgZm9yIGlnbm9yZWQgZGlyZWN0b3JpZXMsIGxvb2sgaWYgaXQKLSAqICAgICAgY29udGFpbnMgb25seSBpZ25vcmVkIGZpbGVzIHRvIGRlY2lkZSBpZiBpdCBtdXN0IGJlIHNob3duIGFzCi0gKiAgICAgIGlnbm9yZWQgb3Igbm90LgorICogICAgICBhbHNvIHRydWUsIGluIHdoaWNoIGNhc2Ugd2UgbmVlZCB0byBjaGVjayBpZiBpdCBjb250YWlucyBhbnkKKyAqICAgICAgdW50cmFja2VkIGFuZCAvIG9yIGlnbm9yZWQgZmlsZXMuCiAgKiAgKGIpIGlmIGl0IGxvb2tzIGxpa2UgYSBnaXQgZGlyZWN0b3J5LCBhbmQgd2UgZG9uJ3QgaGF2ZQogICogICAgICAnbm9fZ2l0bGlua3MnIHNldCB3ZSB0cmVhdCBpdCBhcyBhIGdpdGxpbmssIGFuZCBzaG93IGl0CiAgKiAgICAgIGFzIGEgZGlyZWN0b3J5LgogICogIChjKSBvdGhlcndpc2UsIHdlIHJlY3Vyc2UgaW50byBpdC4KICAqLwotZW51bSBkaXJlY3RvcnlfdHJlYXRtZW50IHsKLQlzaG93X2RpcmVjdG9yeSwKLQlpZ25vcmVfZGlyZWN0b3J5LAotCXJlY3Vyc2VfaW50b19kaXJlY3RvcnkKLX07Ci0KLXN0YXRpYyBlbnVtIGRpcmVjdG9yeV90cmVhdG1lbnQgdHJlYXRfZGlyZWN0b3J5KHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCitzdGF0aWMgZW51bSBwYXRoX3RyZWF0bWVudCB0cmVhdF9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKIAljb25zdCBjaGFyICpkaXJuYW1lLCBpbnQgbGVuLCBpbnQgZXhjbHVkZSwKIAljb25zdCBzdHJ1Y3QgcGF0aF9zaW1wbGlmeSAqc2ltcGxpZnkpCiB7CiAJLyogVGhlICJsZW4tMSIgaXMgdG8gc3RyaXAgdGhlIGZpbmFsICcvJyAqLwogCXN3aXRjaCAoZGlyZWN0b3J5X2V4aXN0c19pbl9pbmRleChkaXJuYW1lLCBsZW4tMSkpIHsKIAljYXNlIGluZGV4X2RpcmVjdG9yeToKLQkJaWYgKChkaXItPmZsYWdzICYgRElSX1NIT1dfT1RIRVJfRElSRUNUT1JJRVMpICYmIGV4Y2x1ZGUpCi0JCQlicmVhazsKLQotCQlyZXR1cm4gcmVjdXJzZV9pbnRvX2RpcmVjdG9yeTsKKwkJcmV0dXJuIHBhdGhfcmVjdXJzZTsKIAogCWNhc2UgaW5kZXhfZ2l0ZGlyOgogCQlpZiAoZGlyLT5mbGFncyAmIERJUl9TSE9XX09USEVSX0RJUkVDVE9SSUVTKQotCQkJcmV0dXJuIGlnbm9yZV9kaXJlY3Rvcnk7Ci0JCXJldHVybiBzaG93X2RpcmVjdG9yeTsKKwkJCXJldHVybiBwYXRoX25vbmU7CisJCXJldHVybiBwYXRoX3VudHJhY2tlZDsKIAogCWNhc2UgaW5kZXhfbm9uZXhpc3RlbnQ6CiAJCWlmIChkaXItPmZsYWdzICYgRElSX1NIT1dfT1RIRVJfRElSRUNUT1JJRVMpCkBAIC05MzIsNzIgKzEwNDYsMTcgQEAKIAkJaWYgKCEoZGlyLT5mbGFncyAmIERJUl9OT19HSVRMSU5LUykpIHsKIAkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCQlpZiAocmVzb2x2ZV9naXRsaW5rX3JlZihkaXJuYW1lLCAiSEVBRCIsIHNoYTEpID09IDApCi0JCQkJcmV0dXJuIHNob3dfZGlyZWN0b3J5OworCQkJCXJldHVybiBwYXRoX3VudHJhY2tlZDsKIAkJfQotCQlyZXR1cm4gcmVjdXJzZV9pbnRvX2RpcmVjdG9yeTsKKwkJcmV0dXJuIHBhdGhfcmVjdXJzZTsKIAl9CiAKIAkvKiBUaGlzIGlzIHRoZSAic2hvd19vdGhlcl9kaXJlY3RvcmllcyIgY2FzZSAqLwogCi0JLyoKLQkgKiBXZSBhcmUgbG9va2luZyBmb3IgaWdub3JlZCBmaWxlcyBhbmQgb3VyIGRpcmVjdG9yeSBpcyBub3QgaWdub3JlZCwKLQkgKiBjaGVjayBpZiBpdCBjb250YWlucyBvbmx5IGlnbm9yZWQgZmlsZXMKLQkgKi8KLQlpZiAoKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKSAmJiAhZXhjbHVkZSkgewotCQlpbnQgaWdub3JlZDsKLQkJZGlyLT5mbGFncyAmPSB+RElSX1NIT1dfSUdOT1JFRDsKLQkJZGlyLT5mbGFncyB8PSBESVJfSElERV9FTVBUWV9ESVJFQ1RPUklFUzsKLQkJaWdub3JlZCA9IHJlYWRfZGlyZWN0b3J5X3JlY3Vyc2l2ZShkaXIsIGRpcm5hbWUsIGxlbiwgMSwgc2ltcGxpZnkpOwotCQlkaXItPmZsYWdzICY9IH5ESVJfSElERV9FTVBUWV9ESVJFQ1RPUklFUzsKLQkJZGlyLT5mbGFncyB8PSBESVJfU0hPV19JR05PUkVEOworCWlmICghKGRpci0+ZmxhZ3MgJiBESVJfSElERV9FTVBUWV9ESVJFQ1RPUklFUykpCisJCXJldHVybiBleGNsdWRlID8gcGF0aF9leGNsdWRlZCA6IHBhdGhfdW50cmFja2VkOwogCi0JCXJldHVybiBpZ25vcmVkID8gaWdub3JlX2RpcmVjdG9yeSA6IHNob3dfZGlyZWN0b3J5OwotCX0KLQlpZiAoIShkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkgJiYKLQkgICAgIShkaXItPmZsYWdzICYgRElSX0hJREVfRU1QVFlfRElSRUNUT1JJRVMpKQotCQlyZXR1cm4gc2hvd19kaXJlY3Rvcnk7Ci0JaWYgKCFyZWFkX2RpcmVjdG9yeV9yZWN1cnNpdmUoZGlyLCBkaXJuYW1lLCBsZW4sIDEsIHNpbXBsaWZ5KSkKLQkJcmV0dXJuIGlnbm9yZV9kaXJlY3Rvcnk7Ci0JcmV0dXJuIHNob3dfZGlyZWN0b3J5OwotfQotCi0vKgotICogRGVjaWRlIHdoYXQgdG8gZG8gd2hlbiB3ZSBmaW5kIGEgZmlsZSB3aGlsZSB0cmF2ZXJzaW5nIHRoZQotICogZmlsZXN5c3RlbS4gTW9zdGx5IHR3byBjYXNlczoKLSAqCi0gKiAgMS4gV2UgYXJlIGxvb2tpbmcgZm9yIGlnbm9yZWQgZmlsZXMKLSAqICAgKGEpIEZpbGUgaXMgaWdub3JlZCwgaW5jbHVkZSBpdAotICogICAoYikgRmlsZSBpcyBpbiBpZ25vcmVkIHBhdGgsIGluY2x1ZGUgaXQKLSAqICAgKGMpIEZpbGUgaXMgbm90IGlnbm9yZWQsIGV4Y2x1ZGUgaXQKLSAqCi0gKiAgMi4gT3RoZXIgc2NlbmFyaW9zLCBpbmNsdWRlIHRoZSBmaWxlIGlmIG5vdCBleGNsdWRlZAotICoKLSAqIFJldHVybiAxIGZvciBleGNsdWRlLCAwIGZvciBpbmNsdWRlLgotICovCi1zdGF0aWMgaW50IHRyZWF0X2ZpbGUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgc3RydWN0IHN0cmJ1ZiAqcGF0aCwgaW50IGV4Y2x1ZGUsIGludCAqZHR5cGUpCi17Ci0Jc3RydWN0IHBhdGhfZXhjbHVkZV9jaGVjayBjaGVjazsKLQlpbnQgZXhjbHVkZV9maWxlID0gMDsKLQotCWlmIChleGNsdWRlKQotCQlleGNsdWRlX2ZpbGUgPSAhKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEKTsKLQllbHNlIGlmIChkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkgewotCQkvKiBBbHdheXMgZXhjbHVkZSBpbmRleGVkIGZpbGVzICovCi0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBpbmRleF9uYW1lX2V4aXN0cygmdGhlX2luZGV4LAotCQkgICAgcGF0aC0+YnVmLCBwYXRoLT5sZW4sIGlnbm9yZV9jYXNlKTsKLQotCQlpZiAoY2UpCi0JCQlyZXR1cm4gMTsKLQotCQlwYXRoX2V4Y2x1ZGVfY2hlY2tfaW5pdCgmY2hlY2ssIGRpcik7Ci0KLQkJaWYgKCFwYXRoX2V4Y2x1ZGVkKCZjaGVjaywgcGF0aC0+YnVmLCBwYXRoLT5sZW4sIGR0eXBlKSkKLQkJCWV4Y2x1ZGVfZmlsZSA9IDE7Ci0KLQkJcGF0aF9leGNsdWRlX2NoZWNrX2NsZWFyKCZjaGVjayk7Ci0JfQotCi0JcmV0dXJuIGV4Y2x1ZGVfZmlsZTsKKwlyZXR1cm4gcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKGRpciwgZGlybmFtZSwgbGVuLCAxLCBzaW1wbGlmeSk7CiB9CiAKIC8qCkBAIC0xMTEyLDU3ICsxMTcxLDQwIEBACiAJcmV0dXJuIGR0eXBlOwogfQogCi1lbnVtIHBhdGhfdHJlYXRtZW50IHsKLQlwYXRoX2lnbm9yZWQsCi0JcGF0aF9oYW5kbGVkLAotCXBhdGhfcmVjdXJzZQotfTsKLQogc3RhdGljIGVudW0gcGF0aF90cmVhdG1lbnQgdHJlYXRfb25lX3BhdGgoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKIAkJCQkJICBzdHJ1Y3Qgc3RyYnVmICpwYXRoLAogCQkJCQkgIGNvbnN0IHN0cnVjdCBwYXRoX3NpbXBsaWZ5ICpzaW1wbGlmeSwKIAkJCQkJICBpbnQgZHR5cGUsIHN0cnVjdCBkaXJlbnQgKmRlKQogewotCWludCBleGNsdWRlID0gZXhjbHVkZWQoZGlyLCBwYXRoLT5idWYsICZkdHlwZSk7Ci0JaWYgKGV4Y2x1ZGUgJiYgKGRpci0+ZmxhZ3MgJiBESVJfQ09MTEVDVF9JR05PUkVEKQotCSAgICAmJiBleGNsdWRlX21hdGNoZXNfcGF0aHNwZWMocGF0aC0+YnVmLCBwYXRoLT5sZW4sIHNpbXBsaWZ5KSkKLQkJZGlyX2FkZF9pZ25vcmVkKGRpciwgcGF0aC0+YnVmLCBwYXRoLT5sZW4pOworCWludCBleGNsdWRlOworCWlmIChkdHlwZSA9PSBEVF9VTktOT1dOKQorCQlkdHlwZSA9IGdldF9kdHlwZShkZSwgcGF0aC0+YnVmLCBwYXRoLT5sZW4pOworCisJLyogQWx3YXlzIGV4Y2x1ZGUgaW5kZXhlZCBmaWxlcyAqLworCWlmIChkdHlwZSAhPSBEVF9ESVIgJiYKKwkgICAgY2FjaGVfbmFtZV9leGlzdHMocGF0aC0+YnVmLCBwYXRoLT5sZW4sIGlnbm9yZV9jYXNlKSkKKwkJcmV0dXJuIHBhdGhfbm9uZTsKKworCWV4Y2x1ZGUgPSBpc19leGNsdWRlZChkaXIsIHBhdGgtPmJ1ZiwgJmR0eXBlKTsKIAogCS8qCiAJICogRXhjbHVkZWQ/IElmIHdlIGRvbid0IGV4cGxpY2l0bHkgd2FudCB0byBzaG93CiAJICogaWdub3JlZCBmaWxlcywgaWdub3JlIGl0CiAJICovCi0JaWYgKGV4Y2x1ZGUgJiYgIShkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkpCi0JCXJldHVybiBwYXRoX2lnbm9yZWQ7Ci0KLQlpZiAoZHR5cGUgPT0gRFRfVU5LTk9XTikKLQkJZHR5cGUgPSBnZXRfZHR5cGUoZGUsIHBhdGgtPmJ1ZiwgcGF0aC0+bGVuKTsKKwlpZiAoZXhjbHVkZSAmJiAhKGRpci0+ZmxhZ3MgJiAoRElSX1NIT1dfSUdOT1JFRHxESVJfU0hPV19JR05PUkVEX1RPTykpKQorCQlyZXR1cm4gcGF0aF9leGNsdWRlZDsKIAogCXN3aXRjaCAoZHR5cGUpIHsKIAlkZWZhdWx0OgotCQlyZXR1cm4gcGF0aF9pZ25vcmVkOworCQlyZXR1cm4gcGF0aF9ub25lOwogCWNhc2UgRFRfRElSOgogCQlzdHJidWZfYWRkY2gocGF0aCwgJy8nKTsKLQotCQlzd2l0Y2ggKHRyZWF0X2RpcmVjdG9yeShkaXIsIHBhdGgtPmJ1ZiwgcGF0aC0+bGVuLCBleGNsdWRlLCBzaW1wbGlmeSkpIHsKLQkJY2FzZSBzaG93X2RpcmVjdG9yeToKLQkJCWJyZWFrOwotCQljYXNlIHJlY3Vyc2VfaW50b19kaXJlY3Rvcnk6Ci0JCQlyZXR1cm4gcGF0aF9yZWN1cnNlOwotCQljYXNlIGlnbm9yZV9kaXJlY3Rvcnk6Ci0JCQlyZXR1cm4gcGF0aF9pZ25vcmVkOwotCQl9Ci0JCWJyZWFrOworCQlyZXR1cm4gdHJlYXRfZGlyZWN0b3J5KGRpciwgcGF0aC0+YnVmLCBwYXRoLT5sZW4sIGV4Y2x1ZGUsCisJCQlzaW1wbGlmeSk7CiAJY2FzZSBEVF9SRUc6CiAJY2FzZSBEVF9MTks6Ci0JCXN3aXRjaCAodHJlYXRfZmlsZShkaXIsIHBhdGgsIGV4Y2x1ZGUsICZkdHlwZSkpIHsKLQkJY2FzZSAxOgotCQkJcmV0dXJuIHBhdGhfaWdub3JlZDsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOwotCQl9CisJCXJldHVybiBleGNsdWRlID8gcGF0aF9leGNsdWRlZCA6IHBhdGhfdW50cmFja2VkOwogCX0KLQlyZXR1cm4gcGF0aF9oYW5kbGVkOwogfQogCiBzdGF0aWMgZW51bSBwYXRoX3RyZWF0bWVudCB0cmVhdF9wYXRoKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCkBAIC0xMTc0LDExICsxMjE2LDExIEBACiAJaW50IGR0eXBlOwogCiAJaWYgKGlzX2RvdF9vcl9kb3Rkb3QoZGUtPmRfbmFtZSkgfHwgIXN0cmNtcChkZS0+ZF9uYW1lLCAiLmdpdCIpKQotCQlyZXR1cm4gcGF0aF9pZ25vcmVkOworCQlyZXR1cm4gcGF0aF9ub25lOwogCXN0cmJ1Zl9zZXRsZW4ocGF0aCwgYmFzZWxlbik7CiAJc3RyYnVmX2FkZHN0cihwYXRoLCBkZS0+ZF9uYW1lKTsKIAlpZiAoc2ltcGxpZnlfYXdheShwYXRoLT5idWYsIHBhdGgtPmxlbiwgc2ltcGxpZnkpKQotCQlyZXR1cm4gcGF0aF9pZ25vcmVkOworCQlyZXR1cm4gcGF0aF9ub25lOwogCiAJZHR5cGUgPSBEVFlQRShkZSk7CiAJcmV0dXJuIHRyZWF0X29uZV9wYXRoKGRpciwgcGF0aCwgc2ltcGxpZnksIGR0eXBlLCBkZSk7CkBAIC0xMTkyLDE0ICsxMjM0LDE2IEBACiAgKgogICogQWxzbywgd2UgaWdub3JlIHRoZSBuYW1lICIuZ2l0IiAoZXZlbiBpZiBpdCBpcyBub3QgYSBkaXJlY3RvcnkpLgogICogVGhhdCBsaWtlbHkgd2lsbCBub3QgY2hhbmdlLgorICoKKyAqIFJldHVybnMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgcGF0aF90cmVhdG1lbnQgdmFsdWUgZW5jb3VudGVyZWQgaW4gdGhlIHNjYW4uCiAgKi8KLXN0YXRpYyBpbnQgcmVhZF9kaXJlY3RvcnlfcmVjdXJzaXZlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCitzdGF0aWMgZW51bSBwYXRoX3RyZWF0bWVudCByZWFkX2RpcmVjdG9yeV9yZWN1cnNpdmUoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwKIAkJCQkgICAgY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sCiAJCQkJICAgIGludCBjaGVja19vbmx5LAogCQkJCSAgICBjb25zdCBzdHJ1Y3QgcGF0aF9zaW1wbGlmeSAqc2ltcGxpZnkpCiB7CiAJRElSICpmZGlyOwotCWludCBjb250ZW50cyA9IDA7CisJZW51bSBwYXRoX3RyZWF0bWVudCBzdGF0ZSwgc3ViZGlyX3N0YXRlLCBkaXJfc3RhdGUgPSBwYXRoX25vbmU7CiAJc3RydWN0IGRpcmVudCAqZGU7CiAJc3RydWN0IHN0cmJ1ZiBwYXRoID0gU1RSQlVGX0lOSVQ7CiAKQEAgLTEyMTAsMjcgKzEyNTQsNTMgQEAKIAkJZ290byBvdXQ7CiAKIAl3aGlsZSAoKGRlID0gcmVhZGRpcihmZGlyKSkgIT0gTlVMTCkgewotCQlzd2l0Y2ggKHRyZWF0X3BhdGgoZGlyLCBkZSwgJnBhdGgsIGJhc2VsZW4sIHNpbXBsaWZ5KSkgewotCQljYXNlIHBhdGhfcmVjdXJzZToKLQkJCWNvbnRlbnRzICs9IHJlYWRfZGlyZWN0b3J5X3JlY3Vyc2l2ZShkaXIsIHBhdGguYnVmLAotCQkJCQkJCSAgICAgcGF0aC5sZW4sIDAsCi0JCQkJCQkJICAgICBzaW1wbGlmeSk7CisJCS8qIGNoZWNrIGhvdyB0aGUgZmlsZSBvciBkaXJlY3Rvcnkgc2hvdWxkIGJlIHRyZWF0ZWQgKi8KKwkJc3RhdGUgPSB0cmVhdF9wYXRoKGRpciwgZGUsICZwYXRoLCBiYXNlbGVuLCBzaW1wbGlmeSk7CisJCWlmIChzdGF0ZSA+IGRpcl9zdGF0ZSkKKwkJCWRpcl9zdGF0ZSA9IHN0YXRlOworCisJCS8qIHJlY3Vyc2UgaW50byBzdWJkaXIgaWYgaW5zdHJ1Y3RlZCBieSB0cmVhdF9wYXRoICovCisJCWlmIChzdGF0ZSA9PSBwYXRoX3JlY3Vyc2UpIHsKKwkJCXN1YmRpcl9zdGF0ZSA9IHJlYWRfZGlyZWN0b3J5X3JlY3Vyc2l2ZShkaXIsIHBhdGguYnVmLAorCQkJCXBhdGgubGVuLCBjaGVja19vbmx5LCBzaW1wbGlmeSk7CisJCQlpZiAoc3ViZGlyX3N0YXRlID4gZGlyX3N0YXRlKQorCQkJCWRpcl9zdGF0ZSA9IHN1YmRpcl9zdGF0ZTsKKwkJfQorCisJCWlmIChjaGVja19vbmx5KSB7CisJCQkvKiBhYm9ydCBlYXJseSBpZiBtYXhpbXVtIHN0YXRlIGhhcyBiZWVuIHJlYWNoZWQgKi8KKwkJCWlmIChkaXJfc3RhdGUgPT0gcGF0aF91bnRyYWNrZWQpCisJCQkJYnJlYWs7CisJCQkvKiBza2lwIHRoZSBkaXJfYWRkXyogcGFydCAqLwogCQkJY29udGludWU7Ci0JCWNhc2UgcGF0aF9pZ25vcmVkOgotCQkJY29udGludWU7Ci0JCWNhc2UgcGF0aF9oYW5kbGVkOgorCQl9CisKKwkJLyogYWRkIHRoZSBwYXRoIHRvIHRoZSBhcHByb3ByaWF0ZSByZXN1bHQgbGlzdCAqLworCQlzd2l0Y2ggKHN0YXRlKSB7CisJCWNhc2UgcGF0aF9leGNsdWRlZDoKKwkJCWlmIChkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkKKwkJCQlkaXJfYWRkX25hbWUoZGlyLCBwYXRoLmJ1ZiwgcGF0aC5sZW4pOworCQkJZWxzZSBpZiAoKGRpci0+ZmxhZ3MgJiBESVJfU0hPV19JR05PUkVEX1RPTykgfHwKKwkJCQkoKGRpci0+ZmxhZ3MgJiBESVJfQ09MTEVDVF9JR05PUkVEKSAmJgorCQkJCWV4Y2x1ZGVfbWF0Y2hlc19wYXRoc3BlYyhwYXRoLmJ1ZiwgcGF0aC5sZW4sCisJCQkJCXNpbXBsaWZ5KSkpCisJCQkJZGlyX2FkZF9pZ25vcmVkKGRpciwgcGF0aC5idWYsIHBhdGgubGVuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgcGF0aF91bnRyYWNrZWQ6CisJCQlpZiAoIShkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkpCisJCQkJZGlyX2FkZF9uYW1lKGRpciwgcGF0aC5idWYsIHBhdGgubGVuKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CiAJCQlicmVhazsKIAkJfQotCQljb250ZW50cysrOwotCQlpZiAoY2hlY2tfb25seSkKLQkJCWJyZWFrOwotCQlkaXJfYWRkX25hbWUoZGlyLCBwYXRoLmJ1ZiwgcGF0aC5sZW4pOwogCX0KIAljbG9zZWRpcihmZGlyKTsKICBvdXQ6CiAJc3RyYnVmX3JlbGVhc2UoJnBhdGgpOwogCi0JcmV0dXJuIGNvbnRlbnRzOworCXJldHVybiBkaXJfc3RhdGU7CiB9CiAKIHN0YXRpYyBpbnQgY21wX25hbWUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQpAQCAtMTI3OSwxMiArMTM0OSwxNCBAQAogCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAlpbnQgYmFzZWxlbiwgcmMgPSAwOwogCWNvbnN0IGNoYXIgKmNwOworCWludCBvbGRfZmxhZ3MgPSBkaXItPmZsYWdzOwogCiAJd2hpbGUgKGxlbiAmJiBwYXRoW2xlbiAtIDFdID09ICcvJykKIAkJbGVuLS07CiAJaWYgKCFsZW4pCiAJCXJldHVybiAxOwogCWJhc2VsZW4gPSAwOworCWRpci0+ZmxhZ3MgJj0gfkRJUl9TSE9XX09USEVSX0RJUkVDVE9SSUVTOwogCXdoaWxlICgxKSB7CiAJCWNwID0gcGF0aCArIGJhc2VsZW4gKyAhIWJhc2VsZW47CiAJCWNwID0gbWVtY2hyKGNwLCAnLycsIHBhdGggKyBsZW4gLSBjcCk7CkBAIC0xMjk5LDcgKzEzNzEsNyBAQAogCQlpZiAoc2ltcGxpZnlfYXdheShzYi5idWYsIHNiLmxlbiwgc2ltcGxpZnkpKQogCQkJYnJlYWs7CiAJCWlmICh0cmVhdF9vbmVfcGF0aChkaXIsICZzYiwgc2ltcGxpZnksCi0JCQkJICAgRFRfRElSLCBOVUxMKSA9PSBwYXRoX2lnbm9yZWQpCisJCQkJICAgRFRfRElSLCBOVUxMKSA9PSBwYXRoX25vbmUpCiAJCQlicmVhazsgLyogZG8gbm90IHJlY3Vyc2UgaW50byBpdCAqLwogCQlpZiAobGVuIDw9IGJhc2VsZW4pIHsKIAkJCXJjID0gMTsKQEAgLTEzMDcsNiArMTM3OSw3IEBACiAJCX0KIAl9CiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKKwlkaXItPmZsYWdzID0gb2xkX2ZsYWdzOwogCXJldHVybiByYzsKIH0KIApAQCAtMTQ3Miw5ICsxNTQ1LDkgQEAKIAkJaG9tZV9jb25maWdfcGF0aHMoTlVMTCwgJnhkZ19wYXRoLCAiaWdub3JlIik7CiAJCWV4Y2x1ZGVzX2ZpbGUgPSB4ZGdfcGF0aDsKIAl9Ci0JaWYgKCFhY2Nlc3Nfb3Jfd2FybihwYXRoLCBSX09LKSkKKwlpZiAoIWFjY2Vzc19vcl93YXJuKHBhdGgsIFJfT0ssIDApKQogCQlhZGRfZXhjbHVkZXNfZnJvbV9maWxlKGRpciwgcGF0aCk7Ci0JaWYgKGV4Y2x1ZGVzX2ZpbGUgJiYgIWFjY2Vzc19vcl93YXJuKGV4Y2x1ZGVzX2ZpbGUsIFJfT0spKQorCWlmIChleGNsdWRlc19maWxlICYmICFhY2Nlc3Nfb3Jfd2FybihleGNsdWRlc19maWxlLCBSX09LLCAwKSkKIAkJYWRkX2V4Y2x1ZGVzX2Zyb21fZmlsZShkaXIsIGV4Y2x1ZGVzX2ZpbGUpOwogfQogCkBAIC0xNDgyLDcgKzE1NTUsNyBAQAogewogCWNoYXIgKnNsYXNoOwogCi0JaWYgKHVubGluayhuYW1lKSAmJiBlcnJubyAhPSBFTk9FTlQpCisJaWYgKHVubGluayhuYW1lKSAmJiBlcnJubyAhPSBFTk9FTlQgJiYgZXJybm8gIT0gRU5PVERJUikKIAkJcmV0dXJuIC0xOwogCiAJc2xhc2ggPSBzdHJyY2hyKG5hbWUsICcvJyk7CkBAIC0xNTI4LDkgKzE2MDEsMTggQEAKIAogCQlpdGVtLT5tYXRjaCA9IHBhdGg7CiAJCWl0ZW0tPmxlbiA9IHN0cmxlbihwYXRoKTsKLQkJaXRlbS0+dXNlX3dpbGRjYXJkID0gIW5vX3dpbGRjYXJkKHBhdGgpOwotCQlpZiAoaXRlbS0+dXNlX3dpbGRjYXJkKQotCQkJcGF0aHNwZWMtPmhhc193aWxkY2FyZCA9IDE7CisJCWl0ZW0tPmZsYWdzID0gMDsKKwkJaWYgKGxpbWl0X3BhdGhzcGVjX3RvX2xpdGVyYWwoKSkgeworCQkJaXRlbS0+bm93aWxkY2FyZF9sZW4gPSBpdGVtLT5sZW47CisJCX0gZWxzZSB7CisJCQlpdGVtLT5ub3dpbGRjYXJkX2xlbiA9IHNpbXBsZV9sZW5ndGgocGF0aCk7CisJCQlpZiAoaXRlbS0+bm93aWxkY2FyZF9sZW4gPCBpdGVtLT5sZW4pIHsKKwkJCQlwYXRoc3BlYy0+aGFzX3dpbGRjYXJkID0gMTsKKwkJCQlpZiAocGF0aFtpdGVtLT5ub3dpbGRjYXJkX2xlbl0gPT0gJyonICYmCisJCQkJICAgIG5vX3dpbGRjYXJkKHBhdGggKyBpdGVtLT5ub3dpbGRjYXJkX2xlbiArIDEpKQorCQkJCQlpdGVtLT5mbGFncyB8PSBQQVRIU1BFQ19PTkVTVEFSOworCQkJfQorCQl9CiAJfQogCiAJcXNvcnQocGF0aHNwZWMtPml0ZW1zLCBwYXRoc3BlYy0+bnIsCkBAIC0xNTQ0LDMgKzE2MjYsNDEgQEAKIAlmcmVlKHBhdGhzcGVjLT5pdGVtcyk7CiAJcGF0aHNwZWMtPml0ZW1zID0gTlVMTDsKIH0KKworaW50IGxpbWl0X3BhdGhzcGVjX3RvX2xpdGVyYWwodm9pZCkKK3sKKwlzdGF0aWMgaW50IGZsYWcgPSAtMTsKKwlpZiAoZmxhZyA8IDApCisJCWZsYWcgPSBnaXRfZW52X2Jvb2woR0lUX0xJVEVSQUxfUEFUSFNQRUNTX0VOVklST05NRU5ULCAwKTsKKwlyZXR1cm4gZmxhZzsKK30KKworLyoKKyAqIEZyZWVzIG1lbW9yeSB3aXRoaW4gZGlyIHdoaWNoIHdhcyBhbGxvY2F0ZWQgZm9yIGV4Y2x1ZGUgbGlzdHMgYW5kCisgKiB0aGUgZXhjbHVkZV9zdGFjay4gIERvZXMgbm90IGZyZWUgZGlyIGl0c2VsZi4KKyAqLwordm9pZCBjbGVhcl9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpcikKK3sKKwlpbnQgaSwgajsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0X2dyb3VwICpncm91cDsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqc3RrOworCisJZm9yIChpID0gRVhDX0NNREw7IGkgPD0gRVhDX0ZJTEU7IGkrKykgeworCQlncm91cCA9ICZkaXItPmV4Y2x1ZGVfbGlzdF9ncm91cFtpXTsKKwkJZm9yIChqID0gMDsgaiA8IGdyb3VwLT5ucjsgaisrKSB7CisJCQllbCA9ICZncm91cC0+ZWxbal07CisJCQlpZiAoaSA9PSBFWENfRElSUykKKwkJCQlmcmVlKChjaGFyICopZWwtPnNyYyk7CisJCQljbGVhcl9leGNsdWRlX2xpc3QoZWwpOworCQl9CisJCWZyZWUoZ3JvdXAtPmVsKTsKKwl9CisKKwlzdGsgPSBkaXItPmV4Y2x1ZGVfc3RhY2s7CisJd2hpbGUgKHN0aykgeworCQlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqcHJldiA9IHN0ay0+cHJldjsKKwkJZnJlZShzdGspOworCQlzdGsgPSBwcmV2OworCX0KK30KZGlmZiAtLWdpdCBhL2Rpci5oIGIvZGlyLmgKaW5kZXggZjVjODllMy4uM2Q2YjgwYyAxMDA2NDQKLS0tIGEvZGlyLmgKKysrIGIvZGlyLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIERJUl9ICiAjZGVmaW5lIERJUl9ICiAKKy8qIFNlZSBEb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktZGlyZWN0b3J5LWxpc3RpbmcudHh0ICovCisKICNpbmNsdWRlICJzdHJidWYuaCIKIAogc3RydWN0IGRpcl9lbnRyeSB7CkBAIC0xMywyNCArMTUsNjAgQEAKICNkZWZpbmUgRVhDX0ZMQUdfTVVTVEJFRElSIDgKICNkZWZpbmUgRVhDX0ZMQUdfTkVHQVRJVkUgMTYKIAorLyoKKyAqIEVhY2ggZXhjbHVkZXMgZmlsZSB3aWxsIGJlIHBhcnNlZCBpbnRvIGEgZnJlc2ggZXhjbHVkZV9saXN0IHdoaWNoCisgKiBpcyBhcHBlbmRlZCB0byB0aGUgcmVsZXZhbnQgZXhjbHVkZV9saXN0X2dyb3VwIChlaXRoZXIgRVhDX0RJUlMgb3IKKyAqIEVYQ19GSUxFKS4gIEFuIGV4Y2x1ZGVfbGlzdCB3aXRoaW4gdGhlIEVYQ19DTURMIGV4Y2x1ZGVfbGlzdF9ncm91cAorICogY2FuIGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQgdGhlIGxpc3Qgb2YgLS1leGNsdWRlIHZhbHVlcyBwYXNzZWQKKyAqIHZpYSBDTEkgYXJncy4KKyAqLwogc3RydWN0IGV4Y2x1ZGVfbGlzdCB7CiAJaW50IG5yOwogCWludCBhbGxvYzsKKworCS8qIHJlbWVtYmVyIHBvaW50ZXIgdG8gZXhjbHVkZSBmaWxlIGNvbnRlbnRzIHNvIHdlIGNhbiBmcmVlKCkgKi8KKwljaGFyICpmaWxlYnVmOworCisJLyogb3JpZ2luIG9mIGxpc3QsIGUuZy4gcGF0aCB0byBmaWxlbmFtZSwgb3IgZGVzY3JpcHRpdmUgc3RyaW5nICovCisJY29uc3QgY2hhciAqc3JjOworCiAJc3RydWN0IGV4Y2x1ZGUgeworCQkvKgorCQkgKiBUaGlzIGFsbG93cyBjYWxsZXJzIG9mIGxhc3RfZXhjbHVkZV9tYXRjaGluZygpIGV0Yy4KKwkJICogdG8gZGV0ZXJtaW5lIHRoZSBvcmlnaW4gb2YgdGhlIG1hdGNoaW5nIHBhdHRlcm4uCisJCSAqLworCQlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwogCQljb25zdCBjaGFyICpwYXR0ZXJuOwogCQlpbnQgcGF0dGVybmxlbjsKIAkJaW50IG5vd2lsZGNhcmRsZW47CiAJCWNvbnN0IGNoYXIgKmJhc2U7CiAJCWludCBiYXNlbGVuOwogCQlpbnQgZmxhZ3M7CisKKwkJLyoKKwkJICogQ291bnRpbmcgc3RhcnRzIGZyb20gMSBmb3IgbGluZSBudW1iZXJzIGluIGlnbm9yZSBmaWxlcywKKwkJICogYW5kIGZyb20gLTEgZGVjcmVtZW50aW5nIGZvciBwYXR0ZXJucyBmcm9tIENMSSBhcmdzLgorCQkgKi8KKwkJaW50IHNyY3BvczsKIAl9ICoqZXhjbHVkZXM7CiB9OwogCisvKgorICogVGhlIGNvbnRlbnRzIG9mIHRoZSBwZXItZGlyZWN0b3J5IGV4Y2x1ZGUgZmlsZXMgYXJlIGxhemlseSByZWFkIG9uCisgKiBkZW1hbmQgYW5kIHRoZW4gY2FjaGVkIGluIG1lbW9yeSwgb25lIHBlciBleGNsdWRlX3N0YWNrIHN0cnVjdCwgaW4KKyAqIG9yZGVyIHRvIGF2b2lkIG9wZW5pbmcgYW5kIHBhcnNpbmcgZWFjaCBvbmUgZXZlcnkgdGltZSB0aGF0CisgKiBkaXJlY3RvcnkgaXMgdHJhdmVyc2VkLgorICovCiBzdHJ1Y3QgZXhjbHVkZV9zdGFjayB7Ci0Jc3RydWN0IGV4Y2x1ZGVfc3RhY2sgKnByZXY7Ci0JY2hhciAqZmlsZWJ1ZjsKKwlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqcHJldjsgLyogdGhlIHN0cnVjdCBleGNsdWRlX3N0YWNrIGZvciB0aGUgcGFyZW50IGRpcmVjdG9yeSAqLwogCWludCBiYXNlbGVuOwotCWludCBleGNsdWRlX2l4OworCWludCBleGNsdWRlX2l4OyAvKiBpbmRleCBvZiBleGNsdWRlX2xpc3Qgd2l0aGluIEVYQ19ESVJTIGV4Y2x1ZGVfbGlzdF9ncm91cCAqLworfTsKKworc3RydWN0IGV4Y2x1ZGVfbGlzdF9ncm91cCB7CisJaW50IG5yLCBhbGxvYzsKKwlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKIH07CiAKIHN0cnVjdCBkaXJfc3RydWN0IHsKQEAgLTQxLDI4ICs3OSw1MiBAQAogCQlESVJfU0hPV19PVEhFUl9ESVJFQ1RPUklFUyA9IDE8PDEsCiAJCURJUl9ISURFX0VNUFRZX0RJUkVDVE9SSUVTID0gMTw8MiwKIAkJRElSX05PX0dJVExJTktTID0gMTw8MywKLQkJRElSX0NPTExFQ1RfSUdOT1JFRCA9IDE8PDQKKwkJRElSX0NPTExFQ1RfSUdOT1JFRCA9IDE8PDQsCisJCURJUl9TSE9XX0lHTk9SRURfVE9PID0gMTw8NQogCX0gZmxhZ3M7CiAJc3RydWN0IGRpcl9lbnRyeSAqKmVudHJpZXM7CiAJc3RydWN0IGRpcl9lbnRyeSAqKmlnbm9yZWQ7CiAKIAkvKiBFeGNsdWRlIGluZm8gKi8KIAljb25zdCBjaGFyICpleGNsdWRlX3Blcl9kaXI7Ci0Jc3RydWN0IGV4Y2x1ZGVfbGlzdCBleGNsdWRlX2xpc3RbM107CisKIAkvKgotCSAqIFdlIG1haW50YWluIHRocmVlIGV4Y2x1ZGUgcGF0dGVybiBsaXN0czoKKwkgKiBXZSBtYWludGFpbiB0aHJlZSBncm91cHMgb2YgZXhjbHVkZSBwYXR0ZXJuIGxpc3RzOgorCSAqCiAJICogRVhDX0NNREwgbGlzdHMgcGF0dGVybnMgZXhwbGljaXRseSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgogCSAqIEVYQ19ESVJTIGxpc3RzIHBhdHRlcm5zIG9idGFpbmVkIGZyb20gcGVyLWRpcmVjdG9yeSBpZ25vcmUgZmlsZXMuCi0JICogRVhDX0ZJTEUgbGlzdHMgcGF0dGVybnMgZnJvbSBmYWxsYmFjayBpZ25vcmUgZmlsZXMuCisJICogRVhDX0ZJTEUgbGlzdHMgcGF0dGVybnMgZnJvbSBmYWxsYmFjayBpZ25vcmUgZmlsZXMsIGUuZy4KKwkgKiAgIC0gLmdpdC9pbmZvL2V4Y2x1ZGUKKwkgKiAgIC0gY29yZS5leGNsdWRlc2ZpbGUKKwkgKgorCSAqIEVhY2ggZ3JvdXAgY29udGFpbnMgbXVsdGlwbGUgZXhjbHVkZSBsaXN0cywgYSBzaW5nbGUgbGlzdAorCSAqIHBlciBzb3VyY2UuCiAJICovCiAjZGVmaW5lIEVYQ19DTURMIDAKICNkZWZpbmUgRVhDX0RJUlMgMQogI2RlZmluZSBFWENfRklMRSAyCisJc3RydWN0IGV4Y2x1ZGVfbGlzdF9ncm91cCBleGNsdWRlX2xpc3RfZ3JvdXBbM107CiAKKwkvKgorCSAqIFRlbXBvcmFyeSB2YXJpYWJsZXMgd2hpY2ggYXJlIHVzZWQgZHVyaW5nIGxvYWRpbmcgb2YgdGhlCisJICogcGVyLWRpcmVjdG9yeSBleGNsdWRlIGxpc3RzLgorCSAqCisJICogZXhjbHVkZV9zdGFjayBwb2ludHMgdG8gdGhlIHRvcCBvZiB0aGUgZXhjbHVkZV9zdGFjaywgYW5kCisJICogYmFzZWJ1ZiBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBjdXJyZW50CisJICogKHN1YilkaXJlY3RvcnkgaW4gdGhlIHRyYXZlcnNhbC4gRXhjbHVkZSBwb2ludHMgdG8gdGhlCisJICogbWF0Y2hpbmcgZXhjbHVkZSBzdHJ1Y3QgaWYgdGhlIGRpcmVjdG9yeSBpcyBleGNsdWRlZC4KKwkgKi8KIAlzdHJ1Y3QgZXhjbHVkZV9zdGFjayAqZXhjbHVkZV9zdGFjazsKKwlzdHJ1Y3QgZXhjbHVkZSAqZXhjbHVkZTsKIAljaGFyIGJhc2VidWZbUEFUSF9NQVhdOwogfTsKIAorLyoKKyAqIFRoZSBvcmRlcmluZyBvZiB0aGVzZSBjb25zdGFudHMgaXMgc2lnbmlmaWNhbnQsIHdpdGgKKyAqIGhpZ2hlci1udW1iZXJlZCBtYXRjaCB0eXBlcyBzaWduaWZ5aW5nICJjbG9zZXIiIChpLmUuIG1vcmUKKyAqIHNwZWNpZmljKSBtYXRjaGVzIHdoaWNoIHdpbGwgb3ZlcnJpZGUgbG93ZXItbnVtYmVyZWQgbWF0Y2ggdHlwZXMKKyAqIHdoZW4gcG9wdWxhdGluZyB0aGUgc2VlbltdIGFycmF5LgorICovCiAjZGVmaW5lIE1BVENIRURfUkVDVVJTSVZFTFkgMQogI2RlZmluZSBNQVRDSEVEX0ZOTUFUQ0ggMgogI2RlZmluZSBNQVRDSEVEX0VYQUNUTFkgMwpAQCAtNzYsOCArMTM4LDggQEAKIGV4dGVybiBpbnQgZmlsbF9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqKnBhdGhzcGVjKTsKIGV4dGVybiBpbnQgcmVhZF9kaXJlY3Rvcnkoc3RydWN0IGRpcl9zdHJ1Y3QgKiwgY29uc3QgY2hhciAqcGF0aCwgaW50IGxlbiwgY29uc3QgY2hhciAqKnBhdGhzcGVjKTsKIAotZXh0ZXJuIGludCBleGNsdWRlZF9mcm9tX2xpc3QoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBwYXRobGVuLCBjb25zdCBjaGFyICpiYXNlbmFtZSwKLQkJCSAgICAgIGludCAqZHR5cGUsIHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKTsKK2V4dGVybiBpbnQgaXNfZXhjbHVkZWRfZnJvbV9saXN0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgcGF0aGxlbiwgY29uc3QgY2hhciAqYmFzZW5hbWUsCisJCQkJIGludCAqZHR5cGUsIHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKTsKIHN0cnVjdCBkaXJfZW50cnkgKmRpcl9hZGRfaWdub3JlZChzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGxlbik7CiAKIC8qCkBAIC05MCwyNyArMTUyLDIxIEBACiAJCQkgIGNvbnN0IGNoYXIgKiwgaW50LAogCQkJICBjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQpOwogCi0vKgotICogVGhlIGV4Y2x1ZGVkKCkgQVBJIGlzIG1lYW50IGZvciBjYWxsZXJzIHRoYXQgY2hlY2sgZWFjaCBsZXZlbCBvZiBsZWFkaW5nCi0gKiBkaXJlY3RvcnkgaGllcmFyY2hpZXMgd2l0aCBleGNsdWRlZCgpIHRvIGF2b2lkIHJlY3Vyc2luZyBpbnRvIGV4Y2x1ZGVkCi0gKiBkaXJlY3Rvcmllcy4gIENhbGxlcnMgdGhhdCBkbyBub3QgZG8gc28gc2hvdWxkIHVzZSB0aGlzIEFQSSBpbnN0ZWFkLgotICovCi1zdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrIHsKLQlzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyOwotCXN0cnVjdCBzdHJidWYgcGF0aDsKLX07Ci1leHRlcm4gdm9pZCBwYXRoX2V4Y2x1ZGVfY2hlY2tfaW5pdChzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrICosIHN0cnVjdCBkaXJfc3RydWN0ICopOwotZXh0ZXJuIHZvaWQgcGF0aF9leGNsdWRlX2NoZWNrX2NsZWFyKHN0cnVjdCBwYXRoX2V4Y2x1ZGVfY2hlY2sgKik7Ci1leHRlcm4gaW50IHBhdGhfZXhjbHVkZWQoc3RydWN0IHBhdGhfZXhjbHVkZV9jaGVjayAqLCBjb25zdCBjaGFyICosIGludCBuYW1lbGVuLCBpbnQgKmR0eXBlKTsKK2V4dGVybiBzdHJ1Y3QgZXhjbHVkZSAqbGFzdF9leGNsdWRlX21hdGNoaW5nKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgaW50ICpkdHlwZSk7CiAKK2V4dGVybiBpbnQgaXNfZXhjbHVkZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3QgY2hhciAqbmFtZSwgaW50ICpkdHlwZSk7CiAKK2V4dGVybiBzdHJ1Y3QgZXhjbHVkZV9saXN0ICphZGRfZXhjbHVkZV9saXN0KHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCQkJCSAgICAgaW50IGdyb3VwX3R5cGUsIGNvbnN0IGNoYXIgKnNyYyk7CiBleHRlcm4gaW50IGFkZF9leGNsdWRlc19mcm9tX2ZpbGVfdG9fbGlzdChjb25zdCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqYmFzZSwgaW50IGJhc2VsZW4sCi0JCQkJCSAgY2hhciAqKmJ1Zl9wLCBzdHJ1Y3QgZXhjbHVkZV9saXN0ICp3aGljaCwgaW50IGNoZWNrX2luZGV4KTsKKwkJCQkJICBzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCwgaW50IGNoZWNrX2luZGV4KTsKIGV4dGVybiB2b2lkIGFkZF9leGNsdWRlc19mcm9tX2ZpbGUoc3RydWN0IGRpcl9zdHJ1Y3QgKiwgY29uc3QgY2hhciAqZm5hbWUpOwogZXh0ZXJuIHZvaWQgcGFyc2VfZXhjbHVkZV9wYXR0ZXJuKGNvbnN0IGNoYXIgKipzdHJpbmcsIGludCAqcGF0dGVybmxlbiwgaW50ICpmbGFncywgaW50ICpub3dpbGRjYXJkbGVuKTsKIGV4dGVybiB2b2lkIGFkZF9leGNsdWRlKGNvbnN0IGNoYXIgKnN0cmluZywgY29uc3QgY2hhciAqYmFzZSwKLQkJCWludCBiYXNlbGVuLCBzdHJ1Y3QgZXhjbHVkZV9saXN0ICp3aGljaCk7Ci1leHRlcm4gdm9pZCBmcmVlX2V4Y2x1ZGVzKHN0cnVjdCBleGNsdWRlX2xpc3QgKmVsKTsKKwkJCWludCBiYXNlbGVuLCBzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbCwgaW50IHNyY3Bvcyk7CitleHRlcm4gdm9pZCBjbGVhcl9leGNsdWRlX2xpc3Qoc3RydWN0IGV4Y2x1ZGVfbGlzdCAqZWwpOworZXh0ZXJuIHZvaWQgY2xlYXJfZGlyZWN0b3J5KHN0cnVjdCBkaXJfc3RydWN0ICpkaXIpOwogZXh0ZXJuIGludCBmaWxlX2V4aXN0cyhjb25zdCBjaGFyICopOwogCiBleHRlcm4gaW50IGlzX2luc2lkZV9kaXIoY29uc3QgY2hhciAqZGlyKTsKQEAgLTEzOSw0ICsxOTUsMTMgQEAKIGV4dGVybiBpbnQgc3RybmNtcF9pY2FzZShjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiLCBzaXplX3QgY291bnQpOwogZXh0ZXJuIGludCBmbm1hdGNoX2ljYXNlKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0IGNoYXIgKnN0cmluZywgaW50IGZsYWdzKTsKIAorLyoKKyAqIFRoZSBwcmVmaXggcGFydCBvZiBwYXR0ZXJuIG11c3Qgbm90IGNvbnRhaW5zIHdpbGRjYXJkcy4KKyAqLworI2RlZmluZSBHRk5NX1BBVEhOQU1FIDEJCS8qIHNpbWlsYXIgdG8gRk5NX1BBVEhOQU1FICovCisjZGVmaW5lIEdGTk1fT05FU1RBUiAgMgkJLyogdGhlcmUgaXMgb25seSBfb25lXyB3aWxkY2FyZCwgYSBzdGFyICovCisKK2V4dGVybiBpbnQgZ2l0X2ZubWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nLAorCQkgICAgICAgaW50IGZsYWdzLCBpbnQgcHJlZml4KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9lbnRyeS5jIGIvZW50cnkuYwppbmRleCA2M2M1MmVkLi5kN2MxMzFkIDEwMDY0NAotLS0gYS9lbnRyeS5jCisrKyBiL2VudHJ5LmMKQEAgLTEyMCwxNiArMTIwLDE4IEBACiAJCQkJIGNvbnN0IHN0cnVjdCBjaGVja291dCAqc3RhdGUsIGludCB0b190ZW1wZmlsZSwKIAkJCQkgaW50ICpmc3RhdF9kb25lLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKIHsKLQlpbnQgcmVzdWx0ID0gLTE7CisJaW50IHJlc3VsdCA9IDA7CiAJaW50IGZkOwogCiAJZmQgPSBvcGVuX291dHB1dF9mZChwYXRoLCBjZSwgdG9fdGVtcGZpbGUpOwotCWlmICgwIDw9IGZkKSB7Ci0JCXJlc3VsdCA9IHN0cmVhbV9ibG9iX3RvX2ZkKGZkLCBjZS0+c2hhMSwgZmlsdGVyLCAxKTsKLQkJKmZzdGF0X2RvbmUgPSBmc3RhdF9vdXRwdXQoZmQsIHN0YXRlLCBzdGF0YnVmKTsKLQkJcmVzdWx0ID0gY2xvc2UoZmQpOwotCX0KLQlpZiAocmVzdWx0ICYmIDAgPD0gZmQpCisJaWYgKGZkIDwgMCkKKwkJcmV0dXJuIC0xOworCisJcmVzdWx0IHw9IHN0cmVhbV9ibG9iX3RvX2ZkKGZkLCBjZS0+c2hhMSwgZmlsdGVyLCAxKTsKKwkqZnN0YXRfZG9uZSA9IGZzdGF0X291dHB1dChmZCwgc3RhdGUsIHN0YXRidWYpOworCXJlc3VsdCB8PSBjbG9zZShmZCk7CisKKwlpZiAocmVzdWx0KQogCQl1bmxpbmsocGF0aCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL2Vudmlyb25tZW50LmMgYi9lbnZpcm9ubWVudC5jCmluZGV4IDg1ZWRkN2YuLjBjYjY3YjIgMTAwNjQ0Ci0tLSBhL2Vudmlyb25tZW50LmMKKysrIGIvZW52aXJvbm1lbnQuYwpAQCAtMTMsNiArMTMsNyBAQAogCiBpbnQgdHJ1c3RfZXhlY3V0YWJsZV9iaXQgPSAxOwogaW50IHRydXN0X2N0aW1lID0gMTsKK2ludCBjaGVja19zdGF0ID0gMTsKIGludCBoYXNfc3ltbGlua3MgPSAxOwogaW50IG1pbmltdW1fYWJicmV2ID0gNCwgZGVmYXVsdF9hYmJyZXYgPSA3OwogaW50IGlnbm9yZV9jYXNlOwpAQCAtMzYsNyArMzcsNiBAQAogc2l6ZV90IHBhY2tlZF9naXRfbGltaXQgPSBERUZBVUxUX1BBQ0tFRF9HSVRfTElNSVQ7CiBzaXplX3QgZGVsdGFfYmFzZV9jYWNoZV9saW1pdCA9IDE2ICogMTAyNCAqIDEwMjQ7CiB1bnNpZ25lZCBsb25nIGJpZ19maWxlX3RocmVzaG9sZCA9IDUxMiAqIDEwMjQgKiAxMDI0OwotY29uc3QgY2hhciAqbG9nX3BhY2tfYWNjZXNzOwogY29uc3QgY2hhciAqcGFnZXJfcHJvZ3JhbTsKIGludCBwYWdlcl91c2VfY29sb3IgPSAxOwogY29uc3QgY2hhciAqZWRpdG9yX3Byb2dyYW07CkBAIC02Miw2ICs2MiwxMiBAQAogc3RydWN0IHN0YXJ0dXBfaW5mbyAqc3RhcnR1cF9pbmZvOwogdW5zaWduZWQgbG9uZyBwYWNrX3NpemVfbGltaXRfY2ZnOwogCisvKgorICogVGhlIGNoYXJhY3RlciB0aGF0IGJlZ2lucyBhIGNvbW1lbnRlZCBsaW5lIGluIHVzZXItZWRpdGFibGUgZmlsZQorICogdGhhdCBpcyBzdWJqZWN0IHRvIHN0cmlwc3BhY2UuCisgKi8KK2NoYXIgY29tbWVudF9saW5lX2NoYXIgPSAnIyc7CisKIC8qIFBhcmFsbGVsIGluZGV4IHN0YXQgZGF0YSBwcmVsb2FkPyAqLwogaW50IGNvcmVfcHJlbG9hZF9pbmRleCA9IDA7CiAKQEAgLTc2LDIwICs4MiwyMCBAQAogc3RhdGljIGNoYXIgKmdpdF9vYmplY3RfZGlyLCAqZ2l0X2luZGV4X2ZpbGUsICpnaXRfZ3JhZnRfZmlsZTsKIAogLyoKLSAqIFJlcG9zaXRvcnktbG9jYWwgR0lUXyogZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gKiBSZW1lbWJlciB0byB1cGRhdGUgbG9jYWxfcmVwb19lbnZfc2l6ZSBpbiBjYWNoZS5oIHdoZW4KLSAqIHRoZSBzaXplIG9mIHRoZSBsaXN0IGNoYW5nZXMKKyAqIFJlcG9zaXRvcnktbG9jYWwgR0lUXyogZW52aXJvbm1lbnQgdmFyaWFibGVzOyBzZWUgY2FjaGUuaCBmb3IgZGV0YWlscy4KICAqLwotY29uc3QgY2hhciAqIGNvbnN0IGxvY2FsX3JlcG9fZW52W0xPQ0FMX1JFUE9fRU5WX1NJWkUgKyAxXSA9IHsKK2NvbnN0IGNoYXIgKiBjb25zdCBsb2NhbF9yZXBvX2VudltdID0gewogCUFMVEVSTkFURV9EQl9FTlZJUk9OTUVOVCwKIAlDT05GSUdfRU5WSVJPTk1FTlQsCiAJQ09ORklHX0RBVEFfRU5WSVJPTk1FTlQsCiAJREJfRU5WSVJPTk1FTlQsCiAJR0lUX0RJUl9FTlZJUk9OTUVOVCwKIAlHSVRfV09SS19UUkVFX0VOVklST05NRU5ULAorCUdJVF9JTVBMSUNJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQsCiAJR1JBRlRfRU5WSVJPTk1FTlQsCiAJSU5ERVhfRU5WSVJPTk1FTlQsCiAJTk9fUkVQTEFDRV9PQkpFQ1RTX0VOVklST05NRU5ULAorCUdJVF9QUkVGSVhfRU5WSVJPTk1FTlQsCiAJTlVMTAogfTsKIApkaWZmIC0tZ2l0IGEvZmFzdC1pbXBvcnQuYyBiL2Zhc3QtaW1wb3J0LmMKaW5kZXggYzJhODE0ZS4uMjNmNjI1ZiAxMDA2NDQKLS0tIGEvZmFzdC1pbXBvcnQuYworKysgYi9mYXN0LWltcG9ydC5jCkBAIC0yOTcsNyArMjk3LDcgQEAKIHN0YXRpYyBGSUxFICpwYWNrX2VkZ2VzOwogc3RhdGljIHVuc2lnbmVkIGludCBzaG93X3N0YXRzID0gMTsKIHN0YXRpYyBpbnQgZ2xvYmFsX2FyZ2M7Ci1zdGF0aWMgY29uc3QgY2hhciAqKmdsb2JhbF9hcmd2Oworc3RhdGljIGNoYXIgKipnbG9iYWxfYXJndjsKIAogLyogTWVtb3J5IHBvb2xzICovCiBzdGF0aWMgc2l6ZV90IG1lbV9wb29sX2FsbG9jID0gMioxMDI0KjEwMjQgLSBzaXplb2Yoc3RydWN0IG1lbV9wb29sKTsKQEAgLTE4MjIsNyArMTgyMiw3IEBACiAJCSplbmQgPSAwOwogCQltYXJrID0gc3RydG91bWF4KGxpbmUgKyAxLCAmZW5kLCAxMCk7CiAJCWlmICghbWFyayB8fCBlbmQgPT0gbGluZSArIDEKLQkJCXx8ICplbmQgIT0gJyAnIHx8IGdldF9zaGExKGVuZCArIDEsIHNoYTEpKQorCQkJfHwgKmVuZCAhPSAnICcgfHwgZ2V0X3NoYTFfaGV4KGVuZCArIDEsIHNoYTEpKQogCQkJZGllKCJjb3JydXB0IG1hcmsgbGluZTogJXMiLCBsaW5lKTsKIAkJZSA9IGZpbmRfb2JqZWN0KHNoYTEpOwogCQlpZiAoIWUpIHsKQEAgLTIyNjUsNyArMjI2NSw3IEBACiAJY29uc3QgY2hhciAqcCA9IGNvbW1hbmRfYnVmLmJ1ZiArIDI7CiAJc3RhdGljIHN0cnVjdCBzdHJidWYgdXEgPSBTVFJCVUZfSU5JVDsKIAljb25zdCBjaGFyICplbmRwOwotCXN0cnVjdCBvYmplY3RfZW50cnkgKm9lID0gb2U7CisJc3RydWN0IG9iamVjdF9lbnRyeSAqb2U7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAl1aW50MTZfdCBtb2RlLCBpbmxpbmVfZGF0YSA9IDA7CiAKQEAgLTIyOTIsNiArMjI5Miw3IEBACiAJCWhhc2hjcHkoc2hhMSwgb2UtPmlkeC5zaGExKTsKIAl9IGVsc2UgaWYgKCFwcmVmaXhjbXAocCwgImlubGluZSAiKSkgewogCQlpbmxpbmVfZGF0YSA9IDE7CisJCW9lID0gTlVMTDsgLyogbm90IHVzZWQgd2l0aCBpbmxpbmVfZGF0YSwgYnV0IG1ha2VzIGdjYyBoYXBweSAqLwogCQlwICs9IHN0cmxlbigiaW5saW5lIik7ICAvKiBhZHZhbmNlIHRvIHNwYWNlICovCiAJfSBlbHNlIHsKIAkJaWYgKGdldF9zaGExX2hleChwLCBzaGExKSkKQEAgLTI0MzQsNyArMjQzNSw3IEBACiB7CiAJY29uc3QgY2hhciAqcCA9IGNvbW1hbmRfYnVmLmJ1ZiArIDI7CiAJc3RhdGljIHN0cnVjdCBzdHJidWYgdXEgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvZSA9IG9lOworCXN0cnVjdCBvYmplY3RfZW50cnkgKm9lOwogCXN0cnVjdCBicmFuY2ggKnM7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXSwgY29tbWl0X3NoYTFbMjBdOwogCWNoYXIgcGF0aFs2MF07CkBAIC0yNDY0LDYgKzI0NjUsNyBAQAogCQloYXNoY3B5KHNoYTEsIG9lLT5pZHguc2hhMSk7CiAJfSBlbHNlIGlmICghcHJlZml4Y21wKHAsICJpbmxpbmUgIikpIHsKIAkJaW5saW5lX2RhdGEgPSAxOworCQlvZSA9IE5VTEw7IC8qIG5vdCB1c2VkIHdpdGggaW5saW5lX2RhdGEsIGJ1dCBtYWtlcyBnY2MgaGFwcHkgKi8KIAkJcCArPSBzdHJsZW4oImlubGluZSIpOyAgLyogYWR2YW5jZSB0byBzcGFjZSAqLwogCX0gZWxzZSB7CiAJCWlmIChnZXRfc2hhMV9oZXgocCwgc2hhMSkpCkBAIC0yNjEzLDcgKzI2MTUsNyBAQAogCiBzdGF0aWMgc3RydWN0IGhhc2hfbGlzdCAqcGFyc2VfbWVyZ2UodW5zaWduZWQgaW50ICpjb3VudCkKIHsKLQlzdHJ1Y3QgaGFzaF9saXN0ICpsaXN0ID0gTlVMTCwgKm4sICplID0gZTsKKwlzdHJ1Y3QgaGFzaF9saXN0ICpsaXN0ID0gTlVMTCwgKip0YWlsID0gJmxpc3QsICpuOwogCWNvbnN0IGNoYXIgKmZyb207CiAJc3RydWN0IGJyYW5jaCAqczsKIApAQCAtMjY0MSwxMSArMjY0Myw5IEBACiAJCQlkaWUoIkludmFsaWQgcmVmIG5hbWUgb3IgU0hBMSBleHByZXNzaW9uOiAlcyIsIGZyb20pOwogCiAJCW4tPm5leHQgPSBOVUxMOwotCQlpZiAobGlzdCkKLQkJCWUtPm5leHQgPSBuOwotCQllbHNlCi0JCQlsaXN0ID0gbjsKLQkJZSA9IG47CisJCSp0YWlsID0gbjsKKwkJdGFpbCA9ICZuLT5uZXh0OworCiAJCSgqY291bnQpKys7CiAJCXJlYWRfbmV4dF9jb21tYW5kKCk7CiAJfQpAQCAtMzM0Nyw3ICszMzQ3LDcgQEAKIAkJcmVhZF9tYXJrcygpOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJdW5zaWduZWQgaW50IGk7CiAKZGlmZiAtLWdpdCBhL2ZldGNoLXBhY2suYyBiL2ZldGNoLXBhY2suYwppbmRleCAwOTlmZjRkLi5hYmU1ZmZiIDEwMDY0NAotLS0gYS9mZXRjaC1wYWNrLmMKKysrIGIvZmV0Y2gtcGFjay5jCkBAIC0yMCw2ICsyMCw4IEBACiBzdGF0aWMgaW50IGZldGNoX2ZzY2tfb2JqZWN0cyA9IC0xOwogc3RhdGljIGludCB0cmFuc2Zlcl9mc2NrX29iamVjdHMgPSAtMTsKIHN0YXRpYyBpbnQgYWdlbnRfc3VwcG9ydGVkOworc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgc2hhbGxvd19sb2NrOworc3RhdGljIGNvbnN0IGNoYXIgKmFsdGVybmF0ZV9zaGFsbG93X2ZpbGU7CiAKICNkZWZpbmUgQ09NUExFVEUJKDFVIDw8IDApCiAjZGVmaW5lIENPTU1PTgkJKDFVIDw8IDEpCkBAIC0zNiw3ICszOCw3IEBACiAjZGVmaW5lIE1BWF9JTl9WQUlOIDI1NgogCiBzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpyZXZfbGlzdDsKLXN0YXRpYyBpbnQgbm9uX2NvbW1vbl9yZXZzLCBtdWx0aV9hY2ssIHVzZV9zaWRlYmFuZDsKK3N0YXRpYyBpbnQgbm9uX2NvbW1vbl9yZXZzLCBtdWx0aV9hY2ssIHVzZV9zaWRlYmFuZCwgYWxsb3dfdGlwX3NoYTFfaW5fd2FudDsKIAogc3RhdGljIHZvaWQgcmV2X2xpc3RfcHVzaChzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGludCBtYXJrKQogewpAQCAtMTcyLDggKzE3NCw4IEBACiAJCSAqIHNoYWxsb3cgYW5kIHVuc2hhbGxvdyBjb21tYW5kcyBldmVyeSB0aW1lIHRoZXJlCiAJCSAqIGlzIGEgYmxvY2sgb2YgaGF2ZSBsaW5lcyBleGNoYW5nZWQuCiAJCSAqLwotCQljaGFyIGxpbmVbMTAwMF07Ci0JCXdoaWxlIChwYWNrZXRfcmVhZF9saW5lKGZkLCBsaW5lLCBzaXplb2YobGluZSkpKSB7CisJCWNoYXIgKmxpbmU7CisJCXdoaWxlICgobGluZSA9IHBhY2tldF9yZWFkX2xpbmUoZmQsIE5VTEwpKSkgewogCQkJaWYgKCFwcmVmaXhjbXAobGluZSwgInNoYWxsb3cgIikpCiAJCQkJY29udGludWU7CiAJCQlpZiAoIXByZWZpeGNtcChsaW5lLCAidW5zaGFsbG93ICIpKQpAQCAtMjE1LDE3ICsyMTcsMTcgQEAKIAogc3RhdGljIGVudW0gYWNrX3R5cGUgZ2V0X2FjayhpbnQgZmQsIHVuc2lnbmVkIGNoYXIgKnJlc3VsdF9zaGExKQogewotCXN0YXRpYyBjaGFyIGxpbmVbMTAwMF07Ci0JaW50IGxlbiA9IHBhY2tldF9yZWFkX2xpbmUoZmQsIGxpbmUsIHNpemVvZihsaW5lKSk7CisJaW50IGxlbjsKKwljaGFyICpsaW5lID0gcGFja2V0X3JlYWRfbGluZShmZCwgJmxlbik7CiAKIAlpZiAoIWxlbikKIAkJZGllKCJnaXQgZmV0Y2gtcGFjazogZXhwZWN0ZWQgQUNLL05BSywgZ290IEVPRiIpOwotCWlmIChsaW5lW2xlbi0xXSA9PSAnXG4nKQotCQlsaW5lWy0tbGVuXSA9IDA7CiAJaWYgKCFzdHJjbXAobGluZSwgIk5BSyIpKQogCQlyZXR1cm4gTkFLOwogCWlmICghcHJlZml4Y21wKGxpbmUsICJBQ0sgIikpIHsKIAkJaWYgKCFnZXRfc2hhMV9oZXgobGluZSs0LCByZXN1bHRfc2hhMSkpIHsKKwkJCWlmIChsZW4gPCA0NSkKKwkJCQlyZXR1cm4gQUNLOwogCQkJaWYgKHN0cnN0cihsaW5lKzQ1LCAiY29udGludWUiKSkKIAkJCQlyZXR1cm4gQUNLX2NvbnRpbnVlOwogCQkJaWYgKHN0cnN0cihsaW5lKzQ1LCAiY29tbW9uIikpCkBAIC0yNDUsNyArMjQ3LDcgQEAKIAkJc2VuZF9zaWRlYmFuZChmZCwgLTEsIGJ1Zi0+YnVmLCBidWYtPmxlbiwgTEFSR0VfUEFDS0VUX01BWCk7CiAJCXBhY2tldF9mbHVzaChmZCk7CiAJfSBlbHNlCi0JCXNhZmVfd3JpdGUoZmQsIGJ1Zi0+YnVmLCBidWYtPmxlbik7CisJCXdyaXRlX29yX2RpZShmZCwgYnVmLT5idWYsIGJ1Zi0+bGVuKTsKIH0KIAogc3RhdGljIHZvaWQgaW5zZXJ0X29uZV9hbHRlcm5hdGVfcmVmKGNvbnN0IHN0cnVjdCByZWYgKnJlZiwgdm9pZCAqdW51c2VkKQpAQCAtMzQ2LDExICszNDgsMTEgQEAKIAlzdGF0ZV9sZW4gPSByZXFfYnVmLmxlbjsKIAogCWlmIChhcmdzLT5kZXB0aCA+IDApIHsKLQkJY2hhciBsaW5lWzEwMjRdOworCQljaGFyICpsaW5lOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCiAJCXNlbmRfcmVxdWVzdChhcmdzLCBmZFsxXSwgJnJlcV9idWYpOwotCQl3aGlsZSAocGFja2V0X3JlYWRfbGluZShmZFswXSwgbGluZSwgc2l6ZW9mKGxpbmUpKSkgeworCQl3aGlsZSAoKGxpbmUgPSBwYWNrZXRfcmVhZF9saW5lKGZkWzBdLCBOVUxMKSkpIHsKIAkJCWlmICghcHJlZml4Y21wKGxpbmUsICJzaGFsbG93ICIpKSB7CiAJCQkJaWYgKGdldF9zaGExX2hleChsaW5lICsgOCwgc2hhMSkpCiAJCQkJCWRpZSgiaW52YWxpZCBzaGFsbG93IGxpbmU6ICVzIiwgbGluZSk7CkBAIC01MjAsNDcgKzUyMiwzNyBAQAogCX0KIH0KIAotc3RhdGljIGludCBub25fbWF0Y2hpbmdfcmVmKHN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtLCB2b2lkICp1bnVzZWQpCi17Ci0JaWYgKGl0ZW0tPnV0aWwpIHsKLQkJaXRlbS0+dXRpbCA9IE5VTEw7Ci0JCXJldHVybiAwOwotCX0KLQllbHNlCi0JCXJldHVybiAxOwotfQotCiBzdGF0aWMgdm9pZCBmaWx0ZXJfcmVmcyhzdHJ1Y3QgZmV0Y2hfcGFja19hcmdzICphcmdzLAotCQkJc3RydWN0IHJlZiAqKnJlZnMsIHN0cnVjdCBzdHJpbmdfbGlzdCAqc291Z2h0KQorCQkJc3RydWN0IHJlZiAqKnJlZnMsCisJCQlzdHJ1Y3QgcmVmICoqc291Z2h0LCBpbnQgbnJfc291Z2h0KQogewogCXN0cnVjdCByZWYgKm5ld2xpc3QgPSBOVUxMOwogCXN0cnVjdCByZWYgKipuZXd0YWlsID0gJm5ld2xpc3Q7CiAJc3RydWN0IHJlZiAqcmVmLCAqbmV4dDsKLQlpbnQgc291Z2h0X3BvczsKKwlpbnQgaTsKIAotCXNvdWdodF9wb3MgPSAwOworCWkgPSAwOwogCWZvciAocmVmID0gKnJlZnM7IHJlZjsgcmVmID0gbmV4dCkgewogCQlpbnQga2VlcCA9IDA7CiAJCW5leHQgPSByZWYtPm5leHQ7CisKIAkJaWYgKCFtZW1jbXAocmVmLT5uYW1lLCAicmVmcy8iLCA1KSAmJgogCQkgICAgY2hlY2tfcmVmbmFtZV9mb3JtYXQocmVmLT5uYW1lICsgNSwgMCkpCiAJCQk7IC8qIHRyYXNoICovCiAJCWVsc2UgewotCQkJd2hpbGUgKHNvdWdodF9wb3MgPCBzb3VnaHQtPm5yKSB7Ci0JCQkJaW50IGNtcCA9IHN0cmNtcChyZWYtPm5hbWUsIHNvdWdodC0+aXRlbXNbc291Z2h0X3Bvc10uc3RyaW5nKTsKKwkJCXdoaWxlIChpIDwgbnJfc291Z2h0KSB7CisJCQkJaW50IGNtcCA9IHN0cmNtcChyZWYtPm5hbWUsIHNvdWdodFtpXS0+bmFtZSk7CiAJCQkJaWYgKGNtcCA8IDApCiAJCQkJCWJyZWFrOyAvKiBkZWZpbml0ZWx5IGRvIG5vdCBoYXZlIGl0ICovCiAJCQkJZWxzZSBpZiAoY21wID09IDApIHsKIAkJCQkJa2VlcCA9IDE7IC8qIGRlZmluaXRlbHkgaGF2ZSBpdCAqLwotCQkJCQlzb3VnaHQtPml0ZW1zW3NvdWdodF9wb3MrK10udXRpbCA9ICJtYXRjaGVkIjsKLQkJCQkJYnJlYWs7CisJCQkJCXNvdWdodFtpXS0+bWF0Y2hlZCA9IDE7CiAJCQkJfQotCQkJCWVsc2UKLQkJCQkJc291Z2h0X3BvcysrOyAvKiBtaWdodCBoYXZlIGl0OyBrZWVwIGxvb2tpbmcgKi8KKwkJCQlpKys7CiAJCQl9CiAJCX0KIAotCQlpZiAoISBrZWVwICYmIGFyZ3MtPmZldGNoX2FsbCAmJgorCQlpZiAoIWtlZXAgJiYgYXJncy0+ZmV0Y2hfYWxsICYmCiAJCSAgICAoIWFyZ3MtPmRlcHRoIHx8IHByZWZpeGNtcChyZWYtPm5hbWUsICJyZWZzL3RhZ3MvIikpKQogCQkJa2VlcCA9IDE7CiAKQEAgLTU3Myw3ICs1NjUsMjEgQEAKIAkJfQogCX0KIAotCWZpbHRlcl9zdHJpbmdfbGlzdChzb3VnaHQsIDAsIG5vbl9tYXRjaGluZ19yZWYsIE5VTEwpOworCS8qIEFwcGVuZCB1bm1hdGNoZWQgcmVxdWVzdHMgdG8gdGhlIGxpc3QgKi8KKwlpZiAoYWxsb3dfdGlwX3NoYTFfaW5fd2FudCkgeworCQlmb3IgKGkgPSAwOyBpIDwgbnJfc291Z2h0OyBpKyspIHsKKwkJCXJlZiA9IHNvdWdodFtpXTsKKwkJCWlmIChyZWYtPm1hdGNoZWQpCisJCQkJY29udGludWU7CisJCQlpZiAoZ2V0X3NoYTFfaGV4KHJlZi0+bmFtZSwgcmVmLT5vbGRfc2hhMSkpCisJCQkJY29udGludWU7CisKKwkJCXJlZi0+bWF0Y2hlZCA9IDE7CisJCQkqbmV3dGFpbCA9IHJlZjsKKwkJCXJlZi0+bmV4dCA9IE5VTEw7CisJCQluZXd0YWlsID0gJnJlZi0+bmV4dDsKKwkJfQorCX0KIAkqcmVmcyA9IG5ld2xpc3Q7CiB9CiAKQEAgLTU4Myw3ICs1ODksOCBAQAogfQogCiBzdGF0aWMgaW50IGV2ZXJ5dGhpbmdfbG9jYWwoc3RydWN0IGZldGNoX3BhY2tfYXJncyAqYXJncywKLQkJCSAgICBzdHJ1Y3QgcmVmICoqcmVmcywgc3RydWN0IHN0cmluZ19saXN0ICpzb3VnaHQpCisJCQkgICAgc3RydWN0IHJlZiAqKnJlZnMsCisJCQkgICAgc3RydWN0IHJlZiAqKnNvdWdodCwgaW50IG5yX3NvdWdodCkKIHsKIAlzdHJ1Y3QgcmVmICpyZWY7CiAJaW50IHJldHZhbDsKQEAgLTU5NCw2ICs2MDEsOSBAQAogCWZvciAocmVmID0gKnJlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7CiAJCXN0cnVjdCBvYmplY3QgKm87CiAKKwkJaWYgKCFoYXNfc2hhMV9maWxlKHJlZi0+b2xkX3NoYTEpKQorCQkJY29udGludWU7CisKIAkJbyA9IHBhcnNlX29iamVjdChyZWYtPm9sZF9zaGExKTsKIAkJaWYgKCFvKQogCQkJY29udGludWU7CkBAIC02MzQsNyArNjQ0LDcgQEAKIAkJfQogCX0KIAotCWZpbHRlcl9yZWZzKGFyZ3MsIHJlZnMsIHNvdWdodCk7CisJZmlsdGVyX3JlZnMoYXJncywgcmVmcywgc291Z2h0LCBucl9zb3VnaHQpOwogCiAJZm9yIChyZXR2YWwgPSAxLCByZWYgPSAqcmVmczsgcmVmIDsgcmVmID0gcmVmLT5uZXh0KSB7CiAJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnJlbW90ZSA9IHJlZi0+b2xkX3NoYTE7CkBAIC02NzUsMTIgKzY4NSwxMyBAQAogCQkgICAgaW50IHhkWzJdLCBjaGFyICoqcGFja19sb2NrZmlsZSkKIHsKIAlzdHJ1Y3QgYXN5bmMgZGVtdXg7Ci0JY29uc3QgY2hhciAqYXJndlsyMF07CisJY29uc3QgY2hhciAqYXJndlsyMl07CiAJY2hhciBrZWVwX2FyZ1syNTZdOwogCWNoYXIgaGRyX2FyZ1syNTZdOwogCWNvbnN0IGNoYXIgKiphdjsKIAlpbnQgZG9fa2VlcCA9IGFyZ3MtPmtlZXBfcGFjazsKIAlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBjbWQ7CisJaW50IHJldDsKIAogCW1lbXNldCgmZGVtdXgsIDAsIHNpemVvZihkZW11eCkpOwogCWlmICh1c2Vfc2lkZWJhbmQpIHsKQEAgLTcxNiw2ICs3MjcsMTEgQEAKIAkJCWRvX2tlZXAgPSAxOwogCX0KIAorCWlmIChhbHRlcm5hdGVfc2hhbGxvd19maWxlKSB7CisJCSphdisrID0gIi0tc2hhbGxvdy1maWxlIjsKKwkJKmF2KysgPSBhbHRlcm5hdGVfc2hhbGxvd19maWxlOworCX0KKwogCWlmIChkb19rZWVwKSB7CiAJCWlmIChwYWNrX2xvY2tmaWxlKQogCQkJY21kLm91dCA9IC0xOwpAQCAtNzMyLDExICs3NDgsMTQgQEAKIAkJCQlzdHJjcHkoa2VlcF9hcmcgKyBzLCAibG9jYWxob3N0Iik7CiAJCQkqYXYrKyA9IGtlZXBfYXJnOwogCQl9CisJCWlmIChhcmdzLT5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkKQorCQkJKmF2KysgPSAiLS1jaGVjay1zZWxmLWNvbnRhaW5lZC1hbmQtY29ubmVjdGVkIjsKIAl9CiAJZWxzZSB7CiAJCSphdisrID0gInVucGFjay1vYmplY3RzIjsKIAkJaWYgKGFyZ3MtPnF1aWV0IHx8IGFyZ3MtPm5vX3Byb2dyZXNzKQogCQkJKmF2KysgPSAiLXEiOworCQlhcmdzLT5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkID0gMDsKIAl9CiAJaWYgKCpoZHJfYXJnKQogCQkqYXYrKyA9IGhkcl9hcmc7CkBAIC03NTcsMTcgKzc3Niw1MCBAQAogCQljbG9zZShjbWQub3V0KTsKIAl9CiAKLQlpZiAoZmluaXNoX2NvbW1hbmQoJmNtZCkpCisJcmV0ID0gZmluaXNoX2NvbW1hbmQoJmNtZCk7CisJaWYgKCFyZXQgfHwgKGFyZ3MtPmNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgJiYgcmV0ID09IDEpKQorCQlhcmdzLT5zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkID0KKwkJCWFyZ3MtPmNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgJiYKKwkJCXJldCA9PSAwOworCWVsc2UKIAkJZGllKCIlcyBmYWlsZWQiLCBhcmd2WzBdKTsKIAlpZiAodXNlX3NpZGViYW5kICYmIGZpbmlzaF9hc3luYygmZGVtdXgpKQogCQlkaWUoImVycm9yIGluIHNpZGViYW5kIGRlbXVsdGlwbGV4ZXIiKTsKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBjbXBfcmVmX2J5X25hbWUoY29uc3Qgdm9pZCAqYV8sIGNvbnN0IHZvaWQgKmJfKQoreworCWNvbnN0IHN0cnVjdCByZWYgKmEgPSAqKChjb25zdCBzdHJ1Y3QgcmVmICoqKWFfKTsKKwljb25zdCBzdHJ1Y3QgcmVmICpiID0gKigoY29uc3Qgc3RydWN0IHJlZiAqKiliXyk7CisJcmV0dXJuIHN0cmNtcChhLT5uYW1lLCBiLT5uYW1lKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfYWx0ZXJuYXRlX3NoYWxsb3codm9pZCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CisJaW50IGZkOworCisJY2hlY2tfc2hhbGxvd19maWxlX2Zvcl91cGRhdGUoKTsKKwlmZCA9IGhvbGRfbG9ja19maWxlX2Zvcl91cGRhdGUoJnNoYWxsb3dfbG9jaywgZ2l0X3BhdGgoInNoYWxsb3ciKSwKKwkJCQkgICAgICAgTE9DS19ESUVfT05fRVJST1IpOworCWlmICh3cml0ZV9zaGFsbG93X2NvbW1pdHMoJnNiLCAwKSkgeworCQlpZiAod3JpdGVfaW5fZnVsbChmZCwgc2IuYnVmLCBzYi5sZW4pICE9IHNiLmxlbikKKwkJCWRpZV9lcnJubygiZmFpbGVkIHRvIHdyaXRlIHRvICVzIiwgc2hhbGxvd19sb2NrLmZpbGVuYW1lKTsKKwkJYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSA9IHNoYWxsb3dfbG9jay5maWxlbmFtZTsKKwl9IGVsc2UKKwkJLyoKKwkJICogaXNfcmVwb3NpdG9yeV9zaGFsbG93KCkgc2VlcyBlbXB0eSBzdHJpbmcgYXMgIm5vCisJCSAqIHNoYWxsb3cgZmlsZSIuCisJCSAqLworCQlhbHRlcm5hdGVfc2hhbGxvd19maWxlID0gIiI7CisJc3RyYnVmX3JlbGVhc2UoJnNiKTsKK30KKwogc3RhdGljIHN0cnVjdCByZWYgKmRvX2ZldGNoX3BhY2soc3RydWN0IGZldGNoX3BhY2tfYXJncyAqYXJncywKIAkJCQkgaW50IGZkWzJdLAogCQkJCSBjb25zdCBzdHJ1Y3QgcmVmICpvcmlnX3JlZiwKLQkJCQkgc3RydWN0IHN0cmluZ19saXN0ICpzb3VnaHQsCisJCQkJIHN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQsCiAJCQkJIGNoYXIgKipwYWNrX2xvY2tmaWxlKQogewogCXN0cnVjdCByZWYgKnJlZiA9IGNvcHlfcmVmX2xpc3Qob3JpZ19yZWYpOwpAQCAtNzc2LDYgKzgyOCw3IEBACiAJaW50IGFnZW50X2xlbjsKIAogCXNvcnRfcmVmX2xpc3QoJnJlZiwgcmVmX2NvbXBhcmVfbmFtZSk7CisJcXNvcnQoc291Z2h0LCBucl9zb3VnaHQsIHNpemVvZigqc291Z2h0KSwgY21wX3JlZl9ieV9uYW1lKTsKIAogCWlmIChpc19yZXBvc2l0b3J5X3NoYWxsb3coKSAmJiAhc2VydmVyX3N1cHBvcnRzKCJzaGFsbG93IikpCiAJCWRpZSgiU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgc2hhbGxvdyBjbGllbnRzIik7CkBAIC04MDUsNiArODU4LDExIEBACiAJCQlmcHJpbnRmKHN0ZGVyciwgIlNlcnZlciBzdXBwb3J0cyBzaWRlLWJhbmRcbiIpOwogCQl1c2Vfc2lkZWJhbmQgPSAxOwogCX0KKwlpZiAoc2VydmVyX3N1cHBvcnRzKCJhbGxvdy10aXAtc2hhMS1pbi13YW50IikpIHsKKwkJaWYgKGFyZ3MtPnZlcmJvc2UpCisJCQlmcHJpbnRmKHN0ZGVyciwgIlNlcnZlciBzdXBwb3J0cyBhbGxvdy10aXAtc2hhMS1pbi13YW50XG4iKTsKKwkJYWxsb3dfdGlwX3NoYTFfaW5fd2FudCA9IDE7CisJfQogCWlmICghc2VydmVyX3N1cHBvcnRzKCJ0aGluLXBhY2siKSkKIAkJYXJncy0+dXNlX3RoaW5fcGFjayA9IDA7CiAJaWYgKCFzZXJ2ZXJfc3VwcG9ydHMoIm5vLXByb2dyZXNzIikpCkBAIC04MjQsNyArODgyLDcgQEAKIAkJCQlhZ2VudF9sZW4sIGFnZW50X2ZlYXR1cmUpOwogCX0KIAotCWlmIChldmVyeXRoaW5nX2xvY2FsKGFyZ3MsICZyZWYsIHNvdWdodCkpIHsKKwlpZiAoZXZlcnl0aGluZ19sb2NhbChhcmdzLCAmcmVmLCBzb3VnaHQsIG5yX3NvdWdodCkpIHsKIAkJcGFja2V0X2ZsdXNoKGZkWzFdKTsKIAkJZ290byBhbGxfZG9uZTsKIAl9CkBAIC04MzcsNiArODk1LDggQEAKIAogCWlmIChhcmdzLT5zdGF0ZWxlc3NfcnBjKQogCQlwYWNrZXRfZmx1c2goZmRbMV0pOworCWlmIChhcmdzLT5kZXB0aCA+IDApCisJCXNldHVwX2FsdGVybmF0ZV9zaGFsbG93KCk7CiAJaWYgKGdldF9wYWNrKGFyZ3MsIGZkLCBwYWNrX2xvY2tmaWxlKSkKIAkJZGllKCJnaXQgZmV0Y2gtcGFjazogZmV0Y2ggZmFpbGVkLiIpOwogCkBAIC04NzQsOCArOTM0LDYgQEAKIAlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKIH0KIAotc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgbG9jazsKLQogc3RhdGljIHZvaWQgZmV0Y2hfcGFja19zZXR1cCh2b2lkKQogewogCXN0YXRpYyBpbnQgZGlkX3NldHVwOwpAQCAtODg5LDYxICs5NDcsNTIgQEAKIAlkaWRfc2V0dXAgPSAxOwogfQogCitzdGF0aWMgaW50IHJlbW92ZV9kdXBsaWNhdGVzX2luX3JlZnMoc3RydWN0IHJlZiAqKnJlZiwgaW50IG5yKQoreworCXN0cnVjdCBzdHJpbmdfbGlzdCBuYW1lcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJaW50IHNyYywgZHN0OworCisJZm9yIChzcmMgPSBkc3QgPSAwOyBzcmMgPCBucjsgc3JjKyspIHsKKwkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07CisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnQoJm5hbWVzLCByZWZbc3JjXS0+bmFtZSk7CisJCWlmIChpdGVtLT51dGlsKQorCQkJY29udGludWU7IC8qIGFscmVhZHkgaGF2ZSBpdCAqLworCQlpdGVtLT51dGlsID0gcmVmW3NyY107CisJCWlmIChzcmMgIT0gZHN0KQorCQkJcmVmW2RzdF0gPSByZWZbc3JjXTsKKwkJZHN0Kys7CisJfQorCWZvciAoc3JjID0gZHN0OyBzcmMgPCBucjsgc3JjKyspCisJCXJlZltzcmNdID0gTlVMTDsKKwlzdHJpbmdfbGlzdF9jbGVhcigmbmFtZXMsIDApOworCXJldHVybiBkc3Q7Cit9CisKIHN0cnVjdCByZWYgKmZldGNoX3BhY2soc3RydWN0IGZldGNoX3BhY2tfYXJncyAqYXJncywKIAkJICAgICAgIGludCBmZFtdLCBzdHJ1Y3QgY2hpbGRfcHJvY2VzcyAqY29ubiwKIAkJICAgICAgIGNvbnN0IHN0cnVjdCByZWYgKnJlZiwKIAkJICAgICAgIGNvbnN0IGNoYXIgKmRlc3QsCi0JCSAgICAgICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnNvdWdodCwKKwkJICAgICAgIHN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQsCiAJCSAgICAgICBjaGFyICoqcGFja19sb2NrZmlsZSkKIHsKLQlzdHJ1Y3Qgc3RhdCBzdDsKIAlzdHJ1Y3QgcmVmICpyZWZfY3B5OwogCiAJZmV0Y2hfcGFja19zZXR1cCgpOwotCWlmIChhcmdzLT5kZXB0aCA+IDApIHsKLQkJaWYgKHN0YXQoZ2l0X3BhdGgoInNoYWxsb3ciKSwgJnN0KSkKLQkJCXN0LnN0X210aW1lID0gMDsKLQl9Ci0KLQlpZiAoc291Z2h0LT5ucikgewotCQlzb3J0X3N0cmluZ19saXN0KHNvdWdodCk7Ci0JCXN0cmluZ19saXN0X3JlbW92ZV9kdXBsaWNhdGVzKHNvdWdodCwgMCk7Ci0JfQorCWlmIChucl9zb3VnaHQpCisJCW5yX3NvdWdodCA9IHJlbW92ZV9kdXBsaWNhdGVzX2luX3JlZnMoc291Z2h0LCBucl9zb3VnaHQpOwogCiAJaWYgKCFyZWYpIHsKIAkJcGFja2V0X2ZsdXNoKGZkWzFdKTsKIAkJZGllKCJubyBtYXRjaGluZyByZW1vdGUgaGVhZCIpOwogCX0KLQlyZWZfY3B5ID0gZG9fZmV0Y2hfcGFjayhhcmdzLCBmZCwgcmVmLCBzb3VnaHQsIHBhY2tfbG9ja2ZpbGUpOworCXJlZl9jcHkgPSBkb19mZXRjaF9wYWNrKGFyZ3MsIGZkLCByZWYsIHNvdWdodCwgbnJfc291Z2h0LCBwYWNrX2xvY2tmaWxlKTsKIAotCWlmIChhcmdzLT5kZXB0aCA+IDApIHsKLQkJc3RydWN0IGNhY2hlX3RpbWUgbXRpbWU7Ci0JCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKLQkJY2hhciAqc2hhbGxvdyA9IGdpdF9wYXRoKCJzaGFsbG93Iik7Ci0JCWludCBmZDsKLQotCQltdGltZS5zZWMgPSBzdC5zdF9tdGltZTsKLQkJbXRpbWUubnNlYyA9IFNUX01USU1FX05TRUMoc3QpOwotCQlpZiAoc3RhdChzaGFsbG93LCAmc3QpKSB7Ci0JCQlpZiAobXRpbWUuc2VjKQotCQkJCWRpZSgic2hhbGxvdyBmaWxlIHdhcyByZW1vdmVkIGR1cmluZyBmZXRjaCIpOwotCQl9IGVsc2UgaWYgKHN0LnN0X210aW1lICE9IG10aW1lLnNlYwotI2lmZGVmIFVTRV9OU0VDCi0JCQkJfHwgU1RfTVRJTUVfTlNFQyhzdCkgIT0gbXRpbWUubnNlYwotI2VuZGlmCi0JCQkgICkKLQkJCWRpZSgic2hhbGxvdyBmaWxlIHdhcyBjaGFuZ2VkIGR1cmluZyBmZXRjaCIpOwotCi0JCWZkID0gaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmbG9jaywgc2hhbGxvdywKLQkJCQkJICAgICAgIExPQ0tfRElFX09OX0VSUk9SKTsKLQkJaWYgKCF3cml0ZV9zaGFsbG93X2NvbW1pdHMoJnNiLCAwKQotCQkgfHwgd3JpdGVfaW5fZnVsbChmZCwgc2IuYnVmLCBzYi5sZW4pICE9IHNiLmxlbikgewotCQkJdW5saW5rX29yX3dhcm4oc2hhbGxvdyk7Ci0JCQlyb2xsYmFja19sb2NrX2ZpbGUoJmxvY2spOwotCQl9IGVsc2UgewotCQkJY29tbWl0X2xvY2tfZmlsZSgmbG9jayk7Ci0JCX0KLQkJc3RyYnVmX3JlbGVhc2UoJnNiKTsKKwlpZiAoYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSkgeworCQlpZiAoKmFsdGVybmF0ZV9zaGFsbG93X2ZpbGUgPT0gJ1wwJykgeyAvKiAtLXVuc2hhbGxvdyAqLworCQkJdW5saW5rX29yX3dhcm4oZ2l0X3BhdGgoInNoYWxsb3ciKSk7CisJCQlyb2xsYmFja19sb2NrX2ZpbGUoJnNoYWxsb3dfbG9jayk7CisJCX0gZWxzZQorCQkJY29tbWl0X2xvY2tfZmlsZSgmc2hhbGxvd19sb2NrKTsKIAl9CiAKIAlyZXByZXBhcmVfcGFja2VkX2dpdCgpOwpkaWZmIC0tZ2l0IGEvZmV0Y2gtcGFjay5oIGIvZmV0Y2gtcGFjay5oCmluZGV4IGNiMTQ4NzEuLjQwZjA4YmEgMTAwNjQ0Ci0tLSBhL2ZldGNoLXBhY2suaAorKysgYi9mZXRjaC1wYWNrLmgKQEAgLTE2LDIxICsxNiwyMiBAQAogCQl2ZXJib3NlOjEsCiAJCW5vX3Byb2dyZXNzOjEsCiAJCWluY2x1ZGVfdGFnOjEsCi0JCXN0YXRlbGVzc19ycGM6MTsKKwkJc3RhdGVsZXNzX3JwYzoxLAorCQljaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkOjEsCisJCXNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQ6MTsKIH07CiAKIC8qCi0gKiBzb3VnaHQgY29udGFpbnMgdGhlIGZ1bGwgbmFtZXMgb2YgcmVtb3RlIHJlZmVyZW5jZXMgdGhhdCBzaG91bGQgYmUKLSAqIHVwZGF0ZWQgZnJvbS4gIE9uIHJldHVybiwgdGhlIG5hbWVzIHRoYXQgd2VyZSBmb3VuZCBvbiB0aGUgcmVtb3RlCi0gKiB3aWxsIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpc3QuICBUaGUgdXRpbCBtZW1iZXJzIG9mIHRoZQotICogc3RyaW5nX2xpc3RfaXRlbXMgYXJlIHVzZWQgaW50ZXJuYWxseTsgdGhleSBtdXN0IGJlIE5VTEwgb24gZW50cnkKLSAqIChhbmQgd2lsbCBiZSBOVUxMIG9uIGV4aXQpLgorICogc291Z2h0IHJlcHJlc2VudHMgcmVtb3RlIHJlZmVyZW5jZXMgdGhhdCBzaG91bGQgYmUgdXBkYXRlZCBmcm9tLgorICogT24gcmV0dXJuLCB0aGUgbmFtZXMgdGhhdCB3ZXJlIGZvdW5kIG9uIHRoZSByZW1vdGUgd2lsbCBoYXZlIGJlZW4KKyAqIG1hcmtlZCBhcyBzdWNoLgogICovCiBzdHJ1Y3QgcmVmICpmZXRjaF9wYWNrKHN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgKmFyZ3MsCiAJCSAgICAgICBpbnQgZmRbXSwgc3RydWN0IGNoaWxkX3Byb2Nlc3MgKmNvbm4sCiAJCSAgICAgICBjb25zdCBzdHJ1Y3QgcmVmICpyZWYsCiAJCSAgICAgICBjb25zdCBjaGFyICpkZXN0LAotCQkgICAgICAgc3RydWN0IHN0cmluZ19saXN0ICpzb3VnaHQsCisJCSAgICAgICBzdHJ1Y3QgcmVmICoqc291Z2h0LAorCQkgICAgICAgaW50IG5yX3NvdWdodCwKIAkJICAgICAgIGNoYXIgKipwYWNrX2xvY2tmaWxlKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9mc2NrLmMgYi9mc2NrLmMKaW5kZXggNzM5NWVmNi4uOTljMDQ5NyAxMDA2NDQKLS0tIGEvZnNjay5jCisrKyBiL2ZzY2suYwpAQCAtMTQyLDYgKzE0Miw5IEBACiAJaW50IGhhc19udWxsX3NoYTEgPSAwOwogCWludCBoYXNfZnVsbF9wYXRoID0gMDsKIAlpbnQgaGFzX2VtcHR5X25hbWUgPSAwOworCWludCBoYXNfZG90ID0gMDsKKwlpbnQgaGFzX2RvdGRvdCA9IDA7CisJaW50IGhhc19kb3RnaXQgPSAwOwogCWludCBoYXNfemVyb19wYWQgPSAwOwogCWludCBoYXNfYmFkX21vZGVzID0gMDsKIAlpbnQgaGFzX2R1cF9lbnRyaWVzID0gMDsKQEAgLTE2OCw2ICsxNzEsMTIgQEAKIAkJCWhhc19mdWxsX3BhdGggPSAxOwogCQlpZiAoISpuYW1lKQogCQkJaGFzX2VtcHR5X25hbWUgPSAxOworCQlpZiAoIXN0cmNtcChuYW1lLCAiLiIpKQorCQkJaGFzX2RvdCA9IDE7CisJCWlmICghc3RyY21wKG5hbWUsICIuLiIpKQorCQkJaGFzX2RvdGRvdCA9IDE7CisJCWlmICghc3RyY21wKG5hbWUsICIuZ2l0IikpCisJCQloYXNfZG90Z2l0ID0gMTsKIAkJaGFzX3plcm9fcGFkIHw9ICooY2hhciAqKWRlc2MuYnVmZmVyID09ICcwJzsKIAkJdXBkYXRlX3RyZWVfZW50cnkoJmRlc2MpOwogCkBAIC0yMTcsNiArMjI2LDEyIEBACiAJCXJldHZhbCArPSBlcnJvcl9mdW5jKCZpdGVtLT5vYmplY3QsIEZTQ0tfV0FSTiwgImNvbnRhaW5zIGZ1bGwgcGF0aG5hbWVzIik7CiAJaWYgKGhhc19lbXB0eV9uYW1lKQogCQlyZXR2YWwgKz0gZXJyb3JfZnVuYygmaXRlbS0+b2JqZWN0LCBGU0NLX1dBUk4sICJjb250YWlucyBlbXB0eSBwYXRobmFtZSIpOworCWlmIChoYXNfZG90KQorCQlyZXR2YWwgKz0gZXJyb3JfZnVuYygmaXRlbS0+b2JqZWN0LCBGU0NLX1dBUk4sICJjb250YWlucyAnLiciKTsKKwlpZiAoaGFzX2RvdGRvdCkKKwkJcmV0dmFsICs9IGVycm9yX2Z1bmMoJml0ZW0tPm9iamVjdCwgRlNDS19XQVJOLCAiY29udGFpbnMgJy4uJyIpOworCWlmIChoYXNfZG90Z2l0KQorCQlyZXR2YWwgKz0gZXJyb3JfZnVuYygmaXRlbS0+b2JqZWN0LCBGU0NLX1dBUk4sICJjb250YWlucyAnLmdpdCciKTsKIAlpZiAoaGFzX3plcm9fcGFkKQogCQlyZXR2YWwgKz0gZXJyb3JfZnVuYygmaXRlbS0+b2JqZWN0LCBGU0NLX1dBUk4sICJjb250YWlucyB6ZXJvLXBhZGRlZCBmaWxlIG1vZGVzIik7CiAJaWYgKGhhc19iYWRfbW9kZXMpCmRpZmYgLS1naXQgYS9naXQtYWRkLS1pbnRlcmFjdGl2ZS5wZXJsIGIvZ2l0LWFkZC0taW50ZXJhY3RpdmUucGVybAppbmRleCA3MTA3NjRhLi5kMmM0Y2U2IDEwMDc1NQotLS0gYS9naXQtYWRkLS1pbnRlcmFjdGl2ZS5wZXJsCisrKyBiL2dpdC1hZGQtLWludGVyYWN0aXZlLnBlcmwKQEAgLTEyNDcsNyArMTI0Nyw3IEBACiAKIAogIyBQcmludCBhIG9uZS1saW5lIHN1bW1hcnkgb2YgZWFjaCBodW5rIGluIHRoZSBhcnJheSByZWYgaW4KLSMgdGhlIGZpcnN0IGFyZ3VtZW50LCBzdGFydGluZyB3aWggdGhlIGluZGV4IGluIHRoZSAybmQuCisjIHRoZSBmaXJzdCBhcmd1bWVudCwgc3RhcnRpbmcgd2l0aCB0aGUgaW5kZXggaW4gdGhlIDJuZC4KIHN1YiBkaXNwbGF5X2h1bmtzIHsKIAlteSAoJGh1bmtzLCAkaSkgPSBAXzsKIAlteSAkY3RyID0gMDsKZGlmZiAtLWdpdCBhL2dpdC1hbS5zaCBiL2dpdC1hbS5zaAppbmRleCAyMDIxMzBmLi45ZjQ0NTA5IDEwMDc1NQotLS0gYS9naXQtYW0uc2gKKysrIGIvZ2l0LWFtLnNoCkBAIC00NDYsNiArNDQ2LDggQEAKICMgSWYgdGhlIGRvdGVzdCBkaXJlY3RvcnkgZXhpc3RzLCBidXQgd2UgaGF2ZSBmaW5pc2hlZCBhcHBseWluZyBhbGwgdGhlCiAjIHBhdGNoZXMgaW4gdGhlbSwgY2xlYXIgaXQgb3V0LgogaWYgdGVzdCAtZCAiJGRvdGVzdCIgJiYKKyAgIHRlc3QgLWYgIiRkb3Rlc3QvbGFzdCIgJiYKKyAgIHRlc3QgLWYgIiRkb3Rlc3QvbmV4dCIgJiYKICAgIGxhc3Q9JChjYXQgIiRkb3Rlc3QvbGFzdCIpICYmCiAgICBuZXh0PSQoY2F0ICIkZG90ZXN0L25leHQiKSAmJgogICAgdGVzdCAkIyAhPSAwICYmCkBAIC00NTQsNyArNDU2LDcgQEAKICAgIHJtIC1mciAiJGRvdGVzdCIKIGZpCiAKLWlmIHRlc3QgLWQgIiRkb3Rlc3QiCitpZiB0ZXN0IC1kICIkZG90ZXN0IiAmJiB0ZXN0IC1mICIkZG90ZXN0L2xhc3QiICYmIHRlc3QgLWYgIiRkb3Rlc3QvbmV4dCIKIHRoZW4KIAljYXNlICIkIywkc2tpcCRyZXNvbHZlZCRhYm9ydCIgaW4KIAkwLCp0KikKQEAgLTUwNCw2ICs1MDYsMjMgQEAKIAllc2FjCiAJcm0gLWYgIiRkb3Rlc3QvZGlydHlpbmRleCIKIGVsc2UKKwkjIFBvc3NpYmxlIHN0cmF5ICRkb3Rlc3QgZGlyZWN0b3J5IGluIHRoZSBpbmRlcGVuZGVudC1ydW4KKwkjIGNhc2U7IGluIHRoZSAtLXJlYmFzaW5nIGNhc2UsIGl0IGlzIHVwdG8gdGhlIGNhbGxlcgorCSMgKGdpdC1yZWJhc2UtLWFtKSB0byB0YWtlIGNhcmUgb2Ygc3RyYXkgZGlyZWN0b3JpZXMuCisJaWYgdGVzdCAtZCAiJGRvdGVzdCIgJiYgdGVzdCAteiAiJHJlYmFzaW5nIgorCXRoZW4KKwkJY2FzZSAiJHNraXAsJHJlc29sdmVkLCRhYm9ydCIgaW4KKwkJLCx0KQorCQkJcm0gLWZyICIkZG90ZXN0IgorCQkJZXhpdCAwCisJCQk7OworCQkqKQorCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiU3RyYXkgXCRkb3Rlc3QgZGlyZWN0b3J5IGZvdW5kLgorVXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZW1vdmUgaXQuIikiCisJCQk7OworCQllc2FjCisJZmkKKwogCSMgTWFrZSBzdXJlIHdlIGFyZSBub3QgZ2l2ZW4gLS1za2lwLCAtLXJlc29sdmVkLCBub3IgLS1hYm9ydAogCXRlc3QgIiRza2lwJHJlc29sdmVkJGFib3J0IiA9ICIiIHx8CiAJCWRpZSAiJChnZXR0ZXh0ICJSZXNvbHZlIG9wZXJhdGlvbiBub3QgaW4gcHJvZ3Jlc3MsIHdlIGFyZSBub3QgcmVzdW1pbmcuIikiCkBAIC03NzgsMTMgKzc5Nyw2IEBACiAJICAgIGFjdGlvbj15ZXMKIAlmaQogCi0JaWYgdGVzdCAtZiAiJGRvdGVzdC9maW5hbC1jb21taXQiCi0JdGhlbgotCQlGSVJTVExJTkU9JChzZWQgMXEgIiRkb3Rlc3QvZmluYWwtY29tbWl0IikKLQllbHNlCi0JCUZJUlNUTElORT0iIgotCWZpCi0KIAlpZiB0ZXN0ICRhY3Rpb24gPSBza2lwCiAJdGhlbgogCQlnb19uZXh0CkBAIC03OTcsNiArODA5LDEzIEBACiAJCXN0b3BfaGVyZSAkdGhpcwogCWZpCiAKKwlpZiB0ZXN0IC1mICIkZG90ZXN0L2ZpbmFsLWNvbW1pdCIKKwl0aGVuCisJCUZJUlNUTElORT0kKHNlZCAxcSAiJGRvdGVzdC9maW5hbC1jb21taXQiKQorCWVsc2UKKwkJRklSU1RMSU5FPSIiCisJZmkKKwogCXNheSAiJChldmFsX2dldHRleHQgIkFwcGx5aW5nOiBcJEZJUlNUTElORSIpIgogCiAJY2FzZSAiJHJlc29sdmVkIiBpbgpAQCAtOTA0LDUgKzkyMywxMCBAQAogICAgIGZpCiBmaQogCi1ybSAtZnIgIiRkb3Rlc3QiCi1naXQgZ2MgLS1hdXRvCisjIElmIGFtIHdhcyBjYWxsZWQgd2l0aCAtLXJlYmFzaW5nIChmcm9tIGdpdC1yZWJhc2UtLWFtKSwgaXQncyB1cCB0bworIyB0aGUgY2FsbGVyIHRvIHRha2UgY2FyZSBvZiBob3VzZWtlZXBpbmcuCitpZiAhIHRlc3QgLWYgIiRkb3Rlc3QvcmViYXNpbmciCit0aGVuCisJcm0gLWZyICIkZG90ZXN0IgorCWdpdCBnYyAtLWF1dG8KK2ZpCmRpZmYgLS1naXQgYS9naXQtYXJjaGltcG9ydC5wZXJsIGIvZ2l0LWFyY2hpbXBvcnQucGVybAppbmRleCBiYzMyZjE4Li45Y2IxMjNhIDEwMDc1NQotLS0gYS9naXQtYXJjaGltcG9ydC5wZXJsCisrKyBiL2dpdC1hcmNoaW1wb3J0LnBlcmwKQEAgLTc1LDcgKzc1LDcgQEAKIAogc3ViIHVzYWdlKCkgewogICAgIHByaW50IFNUREVSUiA8PEVORDsKLVVzYWdlOiBnaXQgYXJjaGltcG9ydCAgICAgIyBmZXRjaC91cGRhdGUgR0lUIGZyb20gQXJjaAordXNhZ2U6IGdpdCBhcmNoaW1wb3J0ICAgICAjIGZldGNoL3VwZGF0ZSBHSVQgZnJvbSBBcmNoCiAgICAgICAgWyAtaCBdIFsgLXYgXSBbIC1vIF0gWyAtYSBdIFsgLWYgXSBbIC1UIF0gWyAtRCBkZXB0aCBdIFsgLXQgdGVtcGRpciBdCiAgICAgICAgcmVwb3NpdG9yeS9hcmNoLWJyYW5jaCBbIHJlcG9zaXRvcnkvYXJjaC1icmFuY2hdIC4uLgogRU5ECmRpZmYgLS1naXQgYS9naXQtYmlzZWN0LnNoIGIvZ2l0LWJpc2VjdC5zaAppbmRleCA5OWVmYmU4Li45ZjA2NGI2IDEwMDc1NQotLS0gYS9naXQtYmlzZWN0LnNoCisrKyBiL2dpdC1iaXNlY3Quc2gKQEAgLTMxMSw3ICszMTEsMjMgQEAKIAlyZXM9JD8KIAogCSMgQ2hlY2sgaWYgd2Ugc2hvdWxkIGV4aXQgYmVjYXVzZSBiaXNlY3Rpb24gaXMgZmluaXNoZWQKLQl0ZXN0ICRyZXMgLWVxIDEwICYmIGV4aXQgMAorCWlmIHRlc3QgJHJlcyAtZXEgMTAKKwl0aGVuCisJCWJhZF9yZXY9JChnaXQgc2hvdy1yZWYgLS1oYXNoIC0tdmVyaWZ5IHJlZnMvYmlzZWN0L2JhZCkKKwkJYmFkX2NvbW1pdD0kKGdpdCBzaG93LWJyYW5jaCAkYmFkX3JldikKKwkJZWNobyAiIyBmaXJzdCBiYWQgY29tbWl0OiAkYmFkX2NvbW1pdCIgPj4iJEdJVF9ESVIvQklTRUNUX0xPRyIKKwkJZXhpdCAwCisJZWxpZiB0ZXN0ICRyZXMgLWVxIDIKKwl0aGVuCisJCWVjaG8gIiMgb25seSBza2lwcGVkIGNvbW1pdHMgbGVmdCB0byB0ZXN0IiA+PiIkR0lUX0RJUi9CSVNFQ1RfTE9HIgorCQlnb29kX3JldnM9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSIlKG9iamVjdG5hbWUpIiAicmVmcy9iaXNlY3QvZ29vZC0qIikKKwkJZm9yIHNraXBwZWQgaW4gJChnaXQgcmV2LWxpc3QgcmVmcy9iaXNlY3QvYmFkIC0tbm90ICRnb29kX3JldnMpCisJCWRvCisJCQlza2lwcGVkX2NvbW1pdD0kKGdpdCBzaG93LWJyYW5jaCAkc2tpcHBlZCkKKwkJCWVjaG8gIiMgcG9zc2libGUgZmlyc3QgYmFkIGNvbW1pdDogJHNraXBwZWRfY29tbWl0IiA+PiIkR0lUX0RJUi9CSVNFQ1RfTE9HIgorCQlkb25lCisJCWV4aXQgJHJlcworCWZpCiAKIAkjIENoZWNrIGZvciBhbiBlcnJvciBpbiB0aGUgYmlzZWN0aW9uIHByb2Nlc3MKIAl0ZXN0ICRyZXMgLW5lIDAgJiYgZXhpdCAkcmVzCmRpZmYgLS1naXQgYS9naXQtY29tcGF0LXV0aWwuaCBiL2dpdC1jb21wYXQtdXRpbC5oCmluZGV4IDljMDFlOWIuLmZmMTkzZjQgMTAwNjQ0Ci0tLSBhL2dpdC1jb21wYXQtdXRpbC5oCisrKyBiL2dpdC1jb21wYXQtdXRpbC5oCkBAIC03NSw3ICs3NSw3IEBACiAjIGVuZGlmCiAjZWxpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fRnJlZUJTRF9fKSAmJiAhZGVmaW5lZChfX1VTTENfXykgJiYgXAogICAgICAgIWRlZmluZWQoX01fVU5JWCkgJiYgIWRlZmluZWQoX19zZ2kpICYmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pICYmIFwKLSAgICAgICFkZWZpbmVkKF9fVEFOREVNKQorICAgICAgIWRlZmluZWQoX19UQU5ERU0pICYmICFkZWZpbmVkKF9fUU5YX18pCiAjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwIC8qIGdsaWJjMiBhbmQgQUlYIDUuM0wgbmVlZCA1MDAsIE9wZW5CU0QgbmVlZHMgNjAwIGZvciBTX0lTTE5LKCkgKi8KICNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAxIC8qIEFJWCA1LjNMIG5lZWRzIHRoaXMgKi8KICNlbmRpZgpAQCAtODUsMTAgKzg1LDE0IEBACiAjZGVmaW5lIF9ORVRCU0RfU09VUkNFIDEKICNkZWZpbmUgX1NHSV9TT1VSQ0UgMQogCi0jaWZkZWYgV0lOMzIgLyogQm90aCBNaW5HVyBhbmQgTVNWQyAqLworI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pIC8qIEJvdGggTWluR1cgYW5kIE1TVkMgKi8KKyMgaWYgZGVmaW5lZCAoX01TQ19WRVIpCisjICBkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMgorIyBlbmRpZgogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvKiBzdG9wcyB3aW5kb3dzLmggaW5jbHVkaW5nIHdpbnNvY2suaCAqLwogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2RlZmluZSBHSVRfV0lORE9XU19OQVRJVkUKICNlbmRpZgogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC05OSwxOCArMTAzLDIyIEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaWZkZWYgX19UQU5ERU0gLyogb3IgSEFWRV9TVFJJTkdTX0ggb3IgIU5PX1NUUklOR1NfSD8gKi8KKyNpZmRlZiBIQVZFX1NUUklOR1NfSAogI2luY2x1ZGUgPHN0cmluZ3MuaD4gLyogZm9yIHN0cmNhc2VjbXAoKSAqLwogI2VuZGlmCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpZmRlZiBORUVEU19TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaWZuZGVmIFVTRV9XSUxETUFUQ0gKICNpbmNsdWRlIDxmbm1hdGNoLmg+CisjZW5kaWYKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxyZWdleC5oPgogI2luY2x1ZGUgPHV0aW1lLmg+CkBAIC0xMjAsNiArMTI4LDkgQEAKICNlbHNlCiAjaW5jbHVkZSA8cG9sbC5oPgogI2VuZGlmCisKK2V4dGVybiBpbnQgZ2V0X3N0X21vZGVfYml0cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgKm1vZGUpOworCiAjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKIC8qIHB1bGwgaW4gV2luZG93cyBjb21wYXRpYmlsaXR5IHN0dWZmICovCiAjaW5jbHVkZSAiY29tcGF0L21pbmd3LmgiCkBAIC0xNzcsNiArMTg4LDExIEBACiAjZGVmaW5lIHByb2JlX3V0ZjhfcGF0aG5hbWVfY29tcG9zaXRpb24oYSxiKQogI2VuZGlmCiAKKyNpZmRlZiBORUVEU19DTElQUEVEX1dSSVRFCitzc2l6ZV90IGNsaXBwZWRfd3JpdGUoaW50IGZpbGRlcywgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbmJ5dGUpOworI2RlZmluZSB3cml0ZSh4LHkseikgY2xpcHBlZF93cml0ZSgoeCksKHkpLCh6KSkKKyNlbmRpZgorCiAjaWZkZWYgTUtESVJfV09fVFJBSUxJTkdfU0xBU0gKICNkZWZpbmUgbWtkaXIoYSxiKSBjb21wYXRfbWtkaXJfd29fdHJhaWxpbmdfc2xhc2goKGEpLChiKSkKIGV4dGVybiBpbnQgY29tcGF0X21rZGlyX3dvX3RyYWlsaW5nX3NsYXNoKGNvbnN0IGNoYXIqLCBtb2RlX3QpOwpAQCAtMjg5LDYgKzMwNSwxNyBAQAogCiAjaW5jbHVkZSAiY29tcGF0L2Jzd2FwLmgiCiAKKyNpZmRlZiBVU0VfV0lMRE1BVENICisjaW5jbHVkZSAid2lsZG1hdGNoLmgiCisjZGVmaW5lIEZOTV9QQVRITkFNRSBXTV9QQVRITkFNRQorI2RlZmluZSBGTk1fQ0FTRUZPTEQgV01fQ0FTRUZPTEQKKyNkZWZpbmUgRk5NX05PTUFUQ0ggIFdNX05PTUFUQ0gKK3N0YXRpYyBpbmxpbmUgaW50IGZubWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgZmxhZ3MpCit7CisJcmV0dXJuIHdpbGRtYXRjaChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzLCBOVUxMKTsKK30KKyNlbmRpZgorCiAvKiBHZW5lcmFsIGhlbHBlciBmdW5jdGlvbnMgKi8KIGV4dGVybiB2b2lkIHZyZXBvcnRmKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcyk7CiBleHRlcm4gdm9pZCB2d3JpdGVmKGludCBmZCwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKTsKQEAgLTI5OSw4ICszMjYsMjAgQEAKIGV4dGVybiBpbnQgZXJyb3IoY29uc3QgY2hhciAqZXJyLCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAxLCAyKSkpOwogZXh0ZXJuIHZvaWQgd2FybmluZyhjb25zdCBjaGFyICplcnIsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSk7CiAKKy8qCisgKiBMZXQgY2FsbGVycyBiZSBhd2FyZSBvZiB0aGUgY29uc3RhbnQgcmV0dXJuIHZhbHVlOyB0aGlzIGNhbiBoZWxwCisgKiBnY2Mgd2l0aCAtV3VuaW5pdGlhbGl6ZWQgYW5hbHlzaXMuIFdlIHJlc3RyaWN0IHRoaXMgdHJpY2sgdG8gZ2NjLCB0aG91Z2gsCisgKiBiZWNhdXNlIHNvbWUgY29tcGlsZXJzIG1heSBub3Qgc3VwcG9ydCB2YXJpYWRpYyBtYWNyb3MuIFNpbmNlIHdlJ3JlIG9ubHkKKyAqIHRyeWluZyB0byBoZWxwIGdjYywgYW55d2F5LCBpdCdzIE9LOyBvdGhlciBjb21waWxlcnMgd2lsbCBmYWxsIGJhY2sgdG8KKyAqIHVzaW5nIHRoZSBmdW5jdGlvbiBhcyB1c3VhbC4KKyAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICEgZGVmaW5lZChfX2NsYW5nX18pCisjZGVmaW5lIGVycm9yKC4uLikgKGVycm9yKF9fVkFfQVJHU19fKSwgLTEpCisjZW5kaWYKKwogZXh0ZXJuIHZvaWQgc2V0X2RpZV9yb3V0aW5lKE5PUkVUVVJOX1BUUiB2b2lkICgqcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykpOwogZXh0ZXJuIHZvaWQgc2V0X2Vycm9yX3JvdXRpbmUodm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpKTsKK2V4dGVybiB2b2lkIHNldF9kaWVfaXNfcmVjdXJzaW5nX3JvdXRpbmUoaW50ICgqcm91dGluZSkodm9pZCkpOwogCiBleHRlcm4gaW50IHByZWZpeGNtcChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IHN1ZmZpeGNtcChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CkBAIC00MDYsMTEgKzQ0NSw2IEBACiBleHRlcm4gaW50bWF4X3QgZ2l0c3RydG9pbWF4KGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNlbmRpZgogCi0jaWZkZWYgTk9fU1RSVE9LX1IKLSNkZWZpbmUgc3RydG9rX3IgZ2l0c3RydG9rX3IKLWV4dGVybiBjaGFyICpnaXRzdHJ0b2tfcihjaGFyICpzLCBjb25zdCBjaGFyICpkZWxpbSwgY2hhciAqKnNhdmVfcHRyKTsKLSNlbmRpZgotCiAjaWZkZWYgTk9fSFNUUkVSUk9SCiAjZGVmaW5lIGhzdHJlcnJvciBnaXRoc3RyZXJyb3IKIGV4dGVybiBjb25zdCBjaGFyICpnaXRoc3RyZXJyb3IoaW50IGhlcnJvcik7CkBAIC00MjIsNiArNDU2LDEwIEBACiAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqbmVlZGxlLCBzaXplX3QgbmVlZGxlbGVuKTsKICNlbmRpZgogCisjaWZkZWYgTk9fR0VUUEFHRVNJWkUKKyNkZWZpbmUgZ2V0cGFnZXNpemUoKSBzeXNjb25mKF9TQ19QQUdFU0laRSkKKyNlbmRpZgorCiAjaWZkZWYgRlJFQURfUkVBRFNfRElSRUNUT1JJRVMKICNpZmRlZiBmb3BlbgogI3VuZGVmIGZvcGVuCkBAIC01MjIsMTMgKzU2MCwxOSBAQAogI3VuZGVmIGlzdXBwZXIKICN1bmRlZiB0b2xvd2VyCiAjdW5kZWYgdG91cHBlcgotZXh0ZXJuIHVuc2lnbmVkIGNoYXIgc2FuZV9jdHlwZVsyNTZdOworI3VuZGVmIGlzY250cmwKKyN1bmRlZiBpc3B1bmN0CisjdW5kZWYgaXN4ZGlnaXQKKworZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgc2FuZV9jdHlwZVsyNTZdOwogI2RlZmluZSBHSVRfU1BBQ0UgMHgwMQogI2RlZmluZSBHSVRfRElHSVQgMHgwMgogI2RlZmluZSBHSVRfQUxQSEEgMHgwNAogI2RlZmluZSBHSVRfR0xPQl9TUEVDSUFMIDB4MDgKICNkZWZpbmUgR0lUX1JFR0VYX1NQRUNJQUwgMHgxMAogI2RlZmluZSBHSVRfUEFUSFNQRUNfTUFHSUMgMHgyMAorI2RlZmluZSBHSVRfQ05UUkwgMHg0MAorI2RlZmluZSBHSVRfUFVOQ1QgMHg4MAogI2RlZmluZSBzYW5lX2lzdGVzdCh4LG1hc2spICgoc2FuZV9jdHlwZVsodW5zaWduZWQgY2hhcikoeCldICYgKG1hc2spKSAhPSAwKQogI2RlZmluZSBpc2FzY2lpKHgpICgoKHgpICYgfjB4N2YpID09IDApCiAjZGVmaW5lIGlzc3BhY2UoeCkgc2FuZV9pc3Rlc3QoeCxHSVRfU1BBQ0UpCkBAIC01NDAsNiArNTg0LDEwIEBACiAjZGVmaW5lIGlzdXBwZXIoeCkgc2FuZV9pc2Nhc2UoeCwgMCkKICNkZWZpbmUgaXNfZ2xvYl9zcGVjaWFsKHgpIHNhbmVfaXN0ZXN0KHgsR0lUX0dMT0JfU1BFQ0lBTCkKICNkZWZpbmUgaXNfcmVnZXhfc3BlY2lhbCh4KSBzYW5lX2lzdGVzdCh4LEdJVF9HTE9CX1NQRUNJQUwgfCBHSVRfUkVHRVhfU1BFQ0lBTCkKKyNkZWZpbmUgaXNjbnRybCh4KSAoc2FuZV9pc3Rlc3QoeCxHSVRfQ05UUkwpKQorI2RlZmluZSBpc3B1bmN0KHgpIHNhbmVfaXN0ZXN0KHgsIEdJVF9QVU5DVCB8IEdJVF9SRUdFWF9TUEVDSUFMIHwgXAorCQlHSVRfR0xPQl9TUEVDSUFMIHwgR0lUX1BBVEhTUEVDX01BR0lDKQorI2RlZmluZSBpc3hkaWdpdCh4KSAoaGV4dmFsX3RhYmxlW3hdICE9IC0xKQogI2RlZmluZSB0b2xvd2VyKHgpIHNhbmVfY2FzZSgodW5zaWduZWQgY2hhcikoeCksIDB4MjApCiAjZGVmaW5lIHRvdXBwZXIoeCkgc2FuZV9jYXNlKCh1bnNpZ25lZCBjaGFyKSh4KSwgMCkKICNkZWZpbmUgaXNfcGF0aHNwZWNfbWFnaWMoeCkgc2FuZV9pc3Rlc3QoeCxHSVRfUEFUSFNQRUNfTUFHSUMpCkBAIC02NTIsOCArNzAwLDkgQEAKICAqIENhbGwgYWNjZXNzKDIpLCBidXQgd2FybiBmb3IgYW55IGVycm9yIGV4Y2VwdCAibWlzc2luZyBmaWxlIgogICogKEVOT0VOVCBvciBFTk9URElSKS4KICAqLwotaW50IGFjY2Vzc19vcl93YXJuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKTsKLWludCBhY2Nlc3Nfb3JfZGllKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKTsKKyNkZWZpbmUgQUNDRVNTX0VBQ0NFU19PSyAoMVUgPDwgMCkKK2ludCBhY2Nlc3Nfb3Jfd2Fybihjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwgdW5zaWduZWQgZmxhZyk7CitpbnQgYWNjZXNzX29yX2RpZShjb25zdCBjaGFyICpwYXRoLCBpbnQgbW9kZSwgdW5zaWduZWQgZmxhZyk7CiAKIC8qIFdhcm4gb24gYW4gaW5hY2Nlc3NpYmxlIGZpbGUgdGhhdCBvdWdodCB0byBiZSBhY2Nlc3NpYmxlICovCiB2b2lkIHdhcm5fb25faW5hY2Nlc3NpYmxlKGNvbnN0IGNoYXIgKnBhdGgpOwpkaWZmIC0tZ2l0IGEvZ2l0LWN2c2V4cG9ydGNvbW1pdC5wZXJsIGIvZ2l0LWN2c2V4cG9ydGNvbW1pdC5wZXJsCmluZGV4IGU2YmYyNTIuLmQxM2YwMmQgMTAwNzU1Ci0tLSBhL2dpdC1jdnNleHBvcnRjb21taXQucGVybAorKysgYi9naXQtY3ZzZXhwb3J0Y29tbWl0LnBlcmwKQEAgLTQyMCw3ICs0MjAsNyBAQAogCiBzdWIgdXNhZ2UgewogCXByaW50IFNUREVSUiA8PEVORDsKLVVzYWdlOiBHSVRfRElSPS9wYXRoL3RvLy5naXQgZ2l0IGN2c2V4cG9ydGNvbW1pdCBbLWhdIFstcF0gWy12XSBbLWNdIFstZl0gWy11XSBbLWtdIFstdyBjdnN3b3JrZGlyXSBbLW0gbXNncHJlZml4XSBbIHBhcmVudCBdIGNvbW1pdAordXNhZ2U6IEdJVF9ESVI9L3BhdGgvdG8vLmdpdCBnaXQgY3ZzZXhwb3J0Y29tbWl0IFstaF0gWy1wXSBbLXZdIFstY10gWy1mXSBbLXVdIFsta10gWy13IGN2c3dvcmtkaXJdIFstbSBtc2dwcmVmaXhdIFsgcGFyZW50IF0gY29tbWl0CiBFTkQKIAlleGl0KDEpOwogfQpkaWZmIC0tZ2l0IGEvZ2l0LWN2c2ltcG9ydC5wZXJsIGIvZ2l0LWN2c2ltcG9ydC5wZXJsCmluZGV4IDM0NGYxMjAuLjczZDM2N2MgMTAwNzU1Ci0tLSBhL2dpdC1jdnNpbXBvcnQucGVybAorKysgYi9naXQtY3ZzaW1wb3J0LnBlcmwKQEAgLTM4LDcgKzM4LDcgQEAKIAlteSAkbXNnID0gc2hpZnQ7CiAJcHJpbnQoU1RERVJSICJFcnJvcjogJG1zZ1xuIikgaWYgJG1zZzsKIAlwcmludCBTVERFUlIgPDxFTkQ7Ci1Vc2FnZTogZ2l0IGN2c2ltcG9ydCAgICAgIyBmZXRjaC91cGRhdGUgR0lUIGZyb20gQ1ZTCit1c2FnZTogZ2l0IGN2c2ltcG9ydCAgICAgIyBmZXRjaC91cGRhdGUgR0lUIGZyb20gQ1ZTCiAgICAgICAgWy1vIGJyYW5jaC1mb3ItSEVBRF0gWy1oXSBbLXZdIFstZCBDVlNST09UXSBbLUEgYXV0aG9yLWNvbnYtZmlsZV0KICAgICAgICBbLXAgb3B0cy1mb3ItY3ZzcHNdIFstUCBmaWxlXSBbLUMgR0lUX3JlcG9zaXRvcnldIFsteiBmdXp6XSBbLWldIFsta10KICAgICAgICBbLXVdIFstcyBzdWJzdF0gWy1hXSBbLW1dIFstTSByZWdleF0gWy1TIHJlZ2V4XSBbLUwgY29tbWl0bGltaXRdCmRpZmYgLS1naXQgYS9naXQtY3Zzc2VydmVyLnBlcmwgYi9naXQtY3Zzc2VydmVyLnBlcmwKaW5kZXggYzVlYmZhMC4uYTBkNzk2ZSAxMDA3NTUKLS0tIGEvZ2l0LWN2c3NlcnZlci5wZXJsCisrKyBiL2dpdC1jdnNzZXJ2ZXIucGVybApAQCAtNjAsNiArNjAsNyBAQAogICAgICdWYWxpZC1yZXNwb25zZXMnID0+IFwmcmVxX1ZhbGlkcmVzcG9uc2VzLAogICAgICd2YWxpZC1yZXF1ZXN0cycgID0+IFwmcmVxX3ZhbGlkcmVxdWVzdHMsCiAgICAgJ0RpcmVjdG9yeScgICAgICAgPT4gXCZyZXFfRGlyZWN0b3J5LAorICAgICdTdGlja3knICAgICAgICAgID0+IFwmcmVxX1N0aWNreSwKICAgICAnRW50cnknICAgICAgICAgICA9PiBcJnJlcV9FbnRyeSwKICAgICAnTW9kaWZpZWQnICAgICAgICA9PiBcJnJlcV9Nb2RpZmllZCwKICAgICAnVW5jaGFuZ2VkJyAgICAgICA9PiBcJnJlcV9VbmNoYW5nZWQsCkBAIC0xMDYsNyArMTA3LDcgQEAKICRsb2ctPmluZm8oIi0tLS0tLS0tLS0tLS0tLSBTVEFSVElORyAtLS0tLS0tLS0tLS0tLS0tLSIpOwogCiBteSAkdXNhZ2UgPQotICAgICJVc2FnZTogZ2l0IGN2c3NlcnZlciBbb3B0aW9uc10gW3BzZXJ2ZXJ8c2VydmVyXSBbPGRpcmVjdG9yeT4gLi4uXVxuIi4KKyAgICAidXNhZ2U6IGdpdCBjdnNzZXJ2ZXIgW29wdGlvbnNdIFtwc2VydmVyfHNlcnZlcl0gWzxkaXJlY3Rvcnk+IC4uLl1cbiIuCiAgICAgIiAgICAtLWJhc2UtcGF0aCA8cGF0aD4gIDogUHJlcGVuZCB0byByZXF1ZXN0ZWQgQ1ZTUk9PVFxuIi4KICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgcmVhZCBmcm9tIEdJVF9DVlNTRVJWRVJfQkFTRV9QQVRIXG4iLgogICAgICIgICAgLS1zdHJpY3QtcGF0aHMgICAgICA6IERvbid0IGFsbG93IHJlY3Vyc2luZyBpbnRvIHN1YmRpcmVjdG9yaWVzXG4iLgpAQCAtNDcwLDExICs0NzEsMTkgQEAKICAgICB7CiAgICAgICAgICRsb2ctPmluZm8oIlNldHRpbmcgcHJlcGVuZCB0byAnJHN0YXRlLT57cGF0aH0nIik7CiAgICAgICAgICRzdGF0ZS0+e3ByZXBlbmRkaXJ9ID0gJHN0YXRlLT57cGF0aH07CisgICAgICAgIG15ICVlbnRyaWVzOwogICAgICAgICBmb3JlYWNoIG15ICRlbnRyeSAoIGtleXMgJXskc3RhdGUtPntlbnRyaWVzfX0gKQogICAgICAgICB7Ci0gICAgICAgICAgICAkc3RhdGUtPntlbnRyaWVzfXskc3RhdGUtPntwcmVwZW5kZGlyfSAuICRlbnRyeX0gPSAkc3RhdGUtPntlbnRyaWVzfXskZW50cnl9OwotICAgICAgICAgICAgZGVsZXRlICRzdGF0ZS0+e2VudHJpZXN9eyRlbnRyeX07CisgICAgICAgICAgICAkZW50cmllc3skc3RhdGUtPntwcmVwZW5kZGlyfSAuICRlbnRyeX0gPSAkc3RhdGUtPntlbnRyaWVzfXskZW50cnl9OwogICAgICAgICB9CisgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9PVwlZW50cmllczsKKworICAgICAgICBteSAlZGlyTWFwOworICAgICAgICBmb3JlYWNoIG15ICRkaXIgKCBrZXlzICV7JHN0YXRlLT57ZGlyTWFwfX0gKQorICAgICAgICB7CisgICAgICAgICAgICAkZGlyTWFweyRzdGF0ZS0+e3ByZXBlbmRkaXJ9IC4gJGRpcn0gPSAkc3RhdGUtPntkaXJNYXB9eyRkaXJ9OworICAgICAgICB9CisgICAgICAgICRzdGF0ZS0+e2Rpck1hcH09XCVkaXJNYXA7CiAgICAgfQogCiAgICAgaWYgKCBkZWZpbmVkICggJHN0YXRlLT57cHJlcGVuZGRpcn0gKSApCkBAIC00ODIsOSArNDkxLDYwIEBACiAgICAgICAgICRsb2ctPmRlYnVnKCJQcmVwZW5kaW5nICckc3RhdGUtPntwcmVwZW5kZGlyfScgdG8gc3RhdGV8ZGlyZWN0b3J5Iik7CiAgICAgICAgICRzdGF0ZS0+e2RpcmVjdG9yeX0gPSAkc3RhdGUtPntwcmVwZW5kZGlyfSAuICRzdGF0ZS0+e2RpcmVjdG9yeX0KICAgICB9CisKKyAgICBpZiAoICEgZGVmaW5lZCgkc3RhdGUtPntkaXJNYXB9eyRzdGF0ZS0+e2RpcmVjdG9yeX19KSApCisgICAgeworICAgICAgICAkc3RhdGUtPntkaXJNYXB9eyRzdGF0ZS0+e2RpcmVjdG9yeX19ID0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAnbmFtZXMnID0+IHt9CisgICAgICAgICAgICAgICAgIyd0YWdzcGVjJyA9PiB1bmRlZgorICAgICAgICAgICAgfTsKKyAgICB9CisKICAgICAkbG9nLT5kZWJ1ZygicmVxX0RpcmVjdG9yeSA6IGxvY2FsZGlyPSRkYXRhIHJlcG9zaXRvcnk9JHJlcG9zaXRvcnkgcGF0aD0kc3RhdGUtPntwYXRofSBkaXJlY3Rvcnk9JHN0YXRlLT57ZGlyZWN0b3J5fSBtb2R1bGU9JHN0YXRlLT57bW9kdWxlfSIpOwogfQogCisjIFN0aWNreSB0YWdzcGVjIFxuCisjICAgICBSZXNwb25zZSBleHBlY3RlZDogbm8uIFRlbGwgdGhlIHNlcnZlciB0aGF0IHRoZSBkaXJlY3RvcnkgbW9zdAorIyAgICAgcmVjZW50bHkgc3BlY2lmaWVkIHdpdGggRGlyZWN0b3J5IGhhcyBhIHN0aWNreSB0YWcgb3IgZGF0ZQorIyAgICAgdGFnc3BlYy4gVGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0YWdzcGVjIGlzIFQgZm9yIGEgdGFnLCBEIGZvcgorIyAgICAgYSBkYXRlLCBvciBzb21lIG90aGVyIGNoYXJhY3RlciBzdXBwbGllZCBieSBhIFNldC1zdGlja3kKKyMgICAgIHJlc3BvbnNlIGZyb20gYSBwcmV2aW91cyByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuIFRoZSByZW1haW5kZXIKKyMgICAgIG9mIHRhZ3NwZWMgY29udGFpbnMgdGhlIGFjdHVhbCB0YWcgb3IgZGF0ZSwgYWdhaW4gYXMgc3VwcGxpZWQKKyMgICAgIGJ5IFNldC1zdGlja3kuCisjICAgICAgICAgIFRoZSBzZXJ2ZXIgc2hvdWxkIHJlbWVtYmVyIFN0YXRpYy1kaXJlY3RvcnkgYW5kIFN0aWNreSByZXF1ZXN0cworIyAgICAgZm9yIGEgcGFydGljdWxhciBkaXJlY3Rvcnk7IHRoZSBjbGllbnQgbmVlZCBub3QgcmVzZW5kIHRoZW0gZWFjaAorIyAgICAgdGltZSBpdCBzZW5kcyBhIERpcmVjdG9yeSByZXF1ZXN0IGZvciBhIGdpdmVuIGRpcmVjdG9yeS4gSG93ZXZlciwKKyMgICAgIHRoZSBzZXJ2ZXIgaXMgbm90IG9ibGlnZWQgdG8gcmVtZW1iZXIgdGhlbSBiZXlvbmQgdGhlIGNvbnRleHQKKyMgICAgIG9mIGEgc2luZ2xlIGNvbW1hbmQuCitzdWIgcmVxX1N0aWNreQoreworICAgIG15ICggJGNtZCwgJHRhZ3NwZWMgKSA9IEBfOworCisgICAgbXkgKCAkc3RpY2t5SW5mbyApOworICAgIGlmKCR0YWdzcGVjIGVxICIiKQorICAgIHsKKyAgICAgICAgIyBub3RoaW5nCisgICAgfQorICAgIGVsc2lmKCR0YWdzcGVjPX4vXlQoW14gXSspXHMqJC8pCisgICAgeworICAgICAgICAkc3RpY2t5SW5mbyA9IHsgJ3RhZycgPT4gJDEgfTsKKyAgICB9CisgICAgZWxzaWYoJHRhZ3NwZWM9fi9eRChbMC05Ll0rKVxzKiQvKQorICAgIHsKKyAgICAgICAgJHN0aWNreUluZm89IHsgJ2RhdGUnID0+ICQxIH07CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGRpZSAiVW5rbm93biB0YWdfb3JfZGF0ZSBmb3JtYXRcbiI7CisgICAgfQorICAgICRzdGF0ZS0+e2Rpck1hcH17JHN0YXRlLT57ZGlyZWN0b3J5fX17c3RpY2t5SW5mb309JHN0aWNreUluZm87CisKKyAgICAkbG9nLT5kZWJ1ZygicmVxX1N0aWNreSA6IHRhZ3NwZWM9JHRhZ3NwZWMgcmVwb3NpdG9yeT0kc3RhdGUtPntyZXBvc2l0b3J5fSIKKyAgICAgICAgICAgICAgICAuICIgcGF0aD0kc3RhdGUtPntwYXRofSBkaXJlY3Rvcnk9JHN0YXRlLT57ZGlyZWN0b3J5fSIKKyAgICAgICAgICAgICAgICAuICIgbW9kdWxlPSRzdGF0ZS0+e21vZHVsZX0iKTsKK30KKwogIyBFbnRyeSBlbnRyeS1saW5lIFxuCiAjICAgICBSZXNwb25zZSBleHBlY3RlZDogbm8uIFRlbGwgdGhlIHNlcnZlciB3aGF0IHZlcnNpb24gb2YgYSBmaWxlIGlzIG9uIHRoZQogIyAgICAgbG9jYWwgbWFjaGluZS4gVGhlIG5hbWUgaW4gZW50cnktbGluZSBpcyBhIG5hbWUgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQpAQCAtNTExLDYgKzU3MSw4IEBACiAgICAgICAgIHRhZ19vcl9kYXRlID0+ICRkYXRhWzVdLAogICAgIH07CiAKKyAgICAkc3RhdGUtPntkaXJNYXB9eyRzdGF0ZS0+e2RpcmVjdG9yeX19e25hbWVzfXskZGF0YVsxXX0gPSAnRic7CisKICAgICAkbG9nLT5pbmZvKCJSZWNlaXZlZCBlbnRyeSBsaW5lICckZGF0YScgPT4gJyIgLiAkc3RhdGUtPntkaXJlY3Rvcnl9IC4gJGRhdGFbMV0gLiAiJyIpOwogfQogCkBAIC01NDksNyArNjExLDEwIEBACiAgICAgewogICAgICAgICAkZmlsZW5hbWUgPSBmaWxlY2xlYW51cCgkZmlsZW5hbWUpOwogCi0gICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lKTsKKyAgICAgICAgIyBubyAtciwgLUEsIG9yIC1EIHdpdGggYWRkCisgICAgICAgIG15ICRzdGlja3lJbmZvID0gcmVzb2x2ZVN0aWNreUluZm8oJGZpbGVuYW1lKTsKKworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwkc3RpY2t5SW5mbyk7CiAgICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKIAogICAgICAgICBpZiAoJHdyZXYgJiYgJG1ldGEgJiYgKCR3cmV2PX4vXi0vKSkKQEAgLTU3Miw4ICs2MzcsMTAgQEAKIAogICAgICAgICAgICAgICAgICMgdGhpcyBpcyBhbiAiZW50cmllcyIgbGluZQogICAgICAgICAgICAgICAgIG15ICRrb3B0cyA9IGtvcHRzX2Zyb21fcGF0aCgkZmlsZW5hbWUsInNoYTEiLCRtZXRhLT57ZmlsZWhhc2h9KTsKLSAgICAgICAgICAgICAgICAkbG9nLT5kZWJ1ZygiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyIpOwotICAgICAgICAgICAgICAgIHByaW50ICIvJGZpbGVwYXJ0LyRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvXG4iOworICAgICAgICAgICAgICAgIG15ICRlbnRyeUxpbmUgPSAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyI7CisgICAgICAgICAgICAgICAgJGVudHJ5TGluZSAuPSBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pOworICAgICAgICAgICAgICAgICRsb2ctPmRlYnVnKCRlbnRyeUxpbmUpOworICAgICAgICAgICAgICAgIHByaW50ICIkZW50cnlMaW5lXG4iOwogICAgICAgICAgICAgICAgICMgcGVybWlzc2lvbnMKICAgICAgICAgICAgICAgICAkbG9nLT5kZWJ1ZygiU0VORCA6IHU9JG1ldGEtPnttb2RlfSxnPSRtZXRhLT57bW9kZX0sbz0kbWV0YS0+e21vZGV9Iik7CiAgICAgICAgICAgICAgICAgcHJpbnQgInU9JG1ldGEtPnttb2RlfSxnPSRtZXRhLT57bW9kZX0sbz0kbWV0YS0+e21vZGV9XG4iOwpAQCAtNjA0LDcgKzY3MSw4IEBACiAgICAgICAgIHByaW50ICIkZmlsZW5hbWVcbiI7CiAgICAgICAgIG15ICRrb3B0cyA9IGtvcHRzX2Zyb21fcGF0aCgkZmlsZW5hbWUsImZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0pOwotICAgICAgICBwcmludCAiLyRmaWxlcGFydC8wLy8ka29wdHMvXG4iOworICAgICAgICBwcmludCAiLyRmaWxlcGFydC8wLy8ka29wdHMvIiAuCisgICAgICAgICAgICAgIGdldFN0aWNreVRhZ09yRGF0ZSgkc3RpY2t5SW5mbykgLiAiXG4iOwogCiAgICAgICAgIG15ICRyZXF1ZXN0ZWRLb3B0cyA9ICRzdGF0ZS0+e29wdH17a307CiAgICAgICAgIGlmKGRlZmluZWQoJHJlcXVlc3RlZEtvcHRzKSkKQEAgLTY3Miw3ICs3NDAsMTAgQEAKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KIAotICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSk7CisgICAgICAgICMgb25seSBmcm9tIGVudHJpZXMKKyAgICAgICAgbXkgJHN0aWNreUluZm8gPSByZXNvbHZlU3RpY2t5SW5mbygkZmlsZW5hbWUpOworCisgICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCRzdGlja3lJbmZvKTsKICAgICAgICAgbXkgJHdyZXYgPSByZXZwYXJzZSgkZmlsZW5hbWUpOwogCiAgICAgICAgIHVubGVzcyAoIGRlZmluZWQgKCAkd3JldiApICkKQEAgLTcwMiw3ICs3NzMsNyBAQAogICAgICAgICBwcmludCAiQ2hlY2tlZC1pbiAkZGlycGFydFxuIjsKICAgICAgICAgcHJpbnQgIiRmaWxlbmFtZVxuIjsKICAgICAgICAgbXkgJGtvcHRzID0ga29wdHNfZnJvbV9wYXRoKCRmaWxlbmFtZSwic2hhMSIsJG1ldGEtPntmaWxlaGFzaH0pOwotICAgICAgICBwcmludCAiLyRmaWxlcGFydC8tJHdyZXYvLyRrb3B0cy9cbiI7CisgICAgICAgIHByaW50ICIvJGZpbGVwYXJ0Ly0kd3Jldi8vJGtvcHRzLyIgLiBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pIC4gIlxuIjsKIAogICAgICAgICAkcm1jb3VudCsrOwogICAgIH0KQEAgLTg4Miw2ICs5NTMsOSBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKKyAgICBteSAkc3RpY2t5SW5mbyA9IHsgJ3RhZycgPT4gJHN0YXRlLT57b3B0fXtyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnID0+ICRzdGF0ZS0+e29wdH17RH0gfTsKKwogICAgIG15ICRtb2R1bGUgPSAkc3RhdGUtPnthcmdzfVswXTsKICAgICAkc3RhdGUtPnttb2R1bGV9ID0gJG1vZHVsZTsKICAgICBteSAkY2hlY2tvdXRfcGF0aCA9ICRtb2R1bGU7CkBAIC04OTksNjQgKzk3MywzMiBAQAogICAgIG15ICR1cGRhdGVyID0gR0lUQ1ZTOjp1cGRhdGVyLT5uZXcoJHN0YXRlLT57Q1ZTUk9PVH0sICRtb2R1bGUsICRsb2cpOwogICAgICR1cGRhdGVyLT51cGRhdGUoKTsKIAorICAgIG15ICRoZWFkSGFzaDsKKyAgICBpZiggZGVmaW5lZCgkc3RpY2t5SW5mbykgJiYgZGVmaW5lZCgkc3RpY2t5SW5mby0+e3RhZ30pICkKKyAgICB7CisgICAgICAgICRoZWFkSGFzaCA9ICR1cGRhdGVyLT5sb29rdXBDb21taXRSZWYoJHN0aWNreUluZm8tPnt0YWd9KTsKKyAgICAgICAgaWYoICFkZWZpbmVkKCRoZWFkSGFzaCkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludCAiZXJyb3IgMSBubyBzdWNoIHRhZyBgJHN0aWNreUluZm8tPnt0YWd9J1xuIjsKKyAgICAgICAgICAgIGNsZWFudXBXb3JrVHJlZSgpOworICAgICAgICAgICAgZXhpdDsKKyAgICAgICAgfQorICAgIH0KKwogICAgICRjaGVja291dF9wYXRoID1+IHN8LyR8fDsgIyBnZXQgcmlkIG9mIHRyYWlsaW5nIHNsYXNoZXMKIAotICAgICMgRWNsaXBzZSBzZWVtcyB0byBuZWVkIHRoZSBDbGVhci1zdGlja3kgY29tbWFuZAotICAgICMgdG8gcHJlcGFyZSB0aGUgJ0VudHJpZXMnIGZpbGUgZm9yIHRoZSBuZXcgZGlyZWN0b3J5LgotICAgIHByaW50ICJDbGVhci1zdGlja3kgJGNoZWNrb3V0X3BhdGgvXG4iOwotICAgIHByaW50ICRzdGF0ZS0+e0NWU1JPT1R9IC4gIi8kbW9kdWxlL1xuIjsKLSAgICBwcmludCAiQ2xlYXItc3RhdGljLWRpcmVjdG9yeSAkY2hlY2tvdXRfcGF0aC9cbiI7Ci0gICAgcHJpbnQgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRtb2R1bGUvXG4iOwotICAgIHByaW50ICJDbGVhci1zdGlja3kgJGNoZWNrb3V0X3BhdGgvXG4iOyAjIHllcywgdHdpY2UKLSAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJG1vZHVsZS9cbiI7Ci0gICAgcHJpbnQgIlRlbXBsYXRlICRjaGVja291dF9wYXRoL1xuIjsKLSAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJG1vZHVsZS9cbiI7Ci0gICAgcHJpbnQgIjBcbiI7Ci0KLSAgICAjIGluc3RydWN0IHRoZSBjbGllbnQgdGhhdCB3ZSdyZSBjaGVja2luZyBvdXQgdG8gJGNoZWNrb3V0X3BhdGgKLSAgICBwcmludCAiRSBjdnMgY2hlY2tvdXQ6IFVwZGF0aW5nICRjaGVja291dF9wYXRoXG4iOwotCiAgICAgbXkgJXNlZW5kaXJzID0gKCk7CiAgICAgbXkgJGxhc3RkaXIgPScnOwogCi0gICAgIyByZWN1cnNpdmUKLSAgICBzdWIgcHJlcGRpciB7Ci0gICAgICAgbXkgKCRkaXIsICRyZXBvZGlyLCAkcmVtb3RlZGlyLCAkc2VlbmRpcnMpID0gQF87Ci0gICAgICAgbXkgJHBhcmVudCA9IGRpcm5hbWUoJGRpcik7Ci0gICAgICAgJGRpciAgICAgICA9fiBzfC8rJHx8OwotICAgICAgICRyZXBvZGlyICAgPX4gc3wvKyR8fDsKLSAgICAgICAkcmVtb3RlZGlyID1+IHN8LyskfHw7Ci0gICAgICAgJHBhcmVudCAgICA9fiBzfC8rJHx8OwotICAgICAgICRsb2ctPmRlYnVnKCJhbm5vdW5jZWRpciAkZGlyLCAkcmVwb2RpciwgJHJlbW90ZWRpciIgKTsKKyAgICBwcmVwRGlyRm9yT3V0cHV0KAorICAgICAgICAgICAgIi4iLAorICAgICAgICAgICAgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRtb2R1bGUiLAorICAgICAgICAgICAgJGNoZWNrb3V0X3BhdGgsCisgICAgICAgICAgICBcJXNlZW5kaXJzLAorICAgICAgICAgICAgJ2NoZWNrb3V0JywKKyAgICAgICAgICAgICRzdGF0ZS0+e2RpckFyZ3N9ICk7CiAKLSAgICAgICBpZiAoJHBhcmVudCBlcSAnLicgfHwgJHBhcmVudCBlcSAnLi8nKSB7Ci0gICAgICAgICAgICRwYXJlbnQgPSAnJzsKLSAgICAgICB9Ci0gICAgICAgIyByZWN1cnNlIHRvIGFubm91bmNlIHVuc2VlbiBwYXJlbnRzIGZpcnN0Ci0gICAgICAgaWYgKGxlbmd0aCgkcGFyZW50KSAmJiAhZXhpc3RzKCRzZWVuZGlycy0+eyRwYXJlbnR9KSkgewotICAgICAgICAgICBwcmVwZGlyKCRwYXJlbnQsICRyZXBvZGlyLCAkcmVtb3RlZGlyLCAkc2VlbmRpcnMpOwotICAgICAgIH0KLSAgICAgICAjIEFubm91bmNlIHRoYXQgd2UgYXJlIGdvaW5nIHRvIG1vZGlmeSBhdCB0aGUgcGFyZW50IGxldmVsCi0gICAgICAgaWYgKCRwYXJlbnQpIHsKLSAgICAgICAgICAgcHJpbnQgIkUgY3ZzIGNoZWNrb3V0OiBVcGRhdGluZyAkcmVtb3RlZGlyLyRwYXJlbnRcbiI7Ci0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgcHJpbnQgIkUgY3ZzIGNoZWNrb3V0OiBVcGRhdGluZyAkcmVtb3RlZGlyXG4iOwotICAgICAgIH0KLSAgICAgICBwcmludCAiQ2xlYXItc3RpY2t5ICRyZW1vdGVkaXIvJHBhcmVudC9cbiI7Ci0gICAgICAgcHJpbnQgIiRyZXBvZGlyLyRwYXJlbnQvXG4iOwotCi0gICAgICAgcHJpbnQgIkNsZWFyLXN0YXRpYy1kaXJlY3RvcnkgJHJlbW90ZWRpci8kZGlyL1xuIjsKLSAgICAgICBwcmludCAiJHJlcG9kaXIvJGRpci9cbiI7Ci0gICAgICAgcHJpbnQgIkNsZWFyLXN0aWNreSAkcmVtb3RlZGlyLyRwYXJlbnQvXG4iOyAjIHllcywgdHdpY2UKLSAgICAgICBwcmludCAiJHJlcG9kaXIvJHBhcmVudC9cbiI7Ci0gICAgICAgcHJpbnQgIlRlbXBsYXRlICRyZW1vdGVkaXIvJGRpci9cbiI7Ci0gICAgICAgcHJpbnQgIiRyZXBvZGlyLyRkaXIvXG4iOwotICAgICAgIHByaW50ICIwXG4iOwotCi0gICAgICAgJHNlZW5kaXJzLT57JGRpcn0gPSAxOwotICAgIH0KLQotICAgIGZvcmVhY2ggbXkgJGdpdCAoIEB7JHVwZGF0ZXItPmdldGhlYWR9ICkKKyAgICBmb3JlYWNoIG15ICRnaXQgKCBAeyR1cGRhdGVyLT5nZXRBbnlIZWFkKCRoZWFkSGFzaCl9ICkKICAgICB7CiAgICAgICAgICMgRG9uJ3Qgd2FudCB0byBjaGVjayBvdXQgZGVsZXRlZCBmaWxlcwogICAgICAgICBuZXh0IGlmICggJGdpdC0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKTsKQEAgLTk2NCwxNiArMTAwNiwxMyBAQAogICAgICAgICBteSAkZnVsbE5hbWUgPSAkZ2l0LT57bmFtZX07CiAgICAgICAgICggJGdpdC0+e25hbWV9LCAkZ2l0LT57ZGlyfSApID0gZmlsZW5hbWVzcGxpdCgkZ2l0LT57bmFtZX0pOwogCi0gICAgICAgaWYgKGxlbmd0aCgkZ2l0LT57ZGlyfSkgJiYgJGdpdC0+e2Rpcn0gbmUgJy4vJwotICAgICAgICAgICAmJiAkZ2l0LT57ZGlyfSBuZSAkbGFzdGRpciApIHsKLSAgICAgICAgICAgdW5sZXNzIChleGlzdHMoJHNlZW5kaXJzeyRnaXQtPntkaXJ9fSkpIHsKLSAgICAgICAgICAgICAgIHByZXBkaXIoJGdpdC0+e2Rpcn0sICRzdGF0ZS0+e0NWU1JPT1R9IC4gIi8kbW9kdWxlLyIsCi0gICAgICAgICAgICAgICAgICAgICAgICRjaGVja291dF9wYXRoLCBcJXNlZW5kaXJzKTsKLSAgICAgICAgICAgICAgICRsYXN0ZGlyID0gJGdpdC0+e2Rpcn07Ci0gICAgICAgICAgICAgICAkc2VlbmRpcnN7JGdpdC0+e2Rpcn19ID0gMTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBwcmludCAiRSBjdnMgY2hlY2tvdXQ6IFVwZGF0aW5nIC8kY2hlY2tvdXRfcGF0aC8kZ2l0LT57ZGlyfVxuIjsKLSAgICAgICB9CisgICAgICAgIHVubGVzcyAoZXhpc3RzKCRzZWVuZGlyc3skZ2l0LT57ZGlyfX0pKSB7CisgICAgICAgICAgICBwcmVwRGlyRm9yT3V0cHV0KCRnaXQtPntkaXJ9LCAkc3RhdGUtPntDVlNST09UfSAuICIvJG1vZHVsZS8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hlY2tvdXRfcGF0aCwgXCVzZWVuZGlycywgJ2NoZWNrb3V0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57ZGlyQXJnc30gKTsKKyAgICAgICAgICAgICRsYXN0ZGlyID0gJGdpdC0+e2Rpcn07CisgICAgICAgICAgICAkc2VlbmRpcnN7JGdpdC0+e2Rpcn19ID0gMTsKKyAgICAgICAgfQogCiAgICAgICAgICMgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhpcyBmaWxlCiAgICAgICAgIHByaW50ICJNb2QtdGltZSAkZ2l0LT57bW9kaWZpZWR9XG4iOwpAQCAtOTkzLDcgKzEwMzIsOCBAQAogCiAgICAgICAgICMgdGhpcyBpcyBhbiAiZW50cmllcyIgbGluZQogICAgICAgICBteSAka29wdHMgPSBrb3B0c19mcm9tX3BhdGgoJGZ1bGxOYW1lLCJzaGExIiwkZ2l0LT57ZmlsZWhhc2h9KTsKLSAgICAgICAgcHJpbnQgIi8kZ2l0LT57bmFtZX0vJGdpdC0+e3JldmlzaW9ufS8vJGtvcHRzL1xuIjsKKyAgICAgICAgcHJpbnQgIi8kZ2l0LT57bmFtZX0vJGdpdC0+e3JldmlzaW9ufS8vJGtvcHRzLyIgLgorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3RpY2t5VGFnT3JEYXRlKCRzdGlja3lJbmZvKSAuICJcbiI7CiAgICAgICAgICMgcGVybWlzc2lvbnMKICAgICAgICAgcHJpbnQgInU9JGdpdC0+e21vZGV9LGc9JGdpdC0+e21vZGV9LG89JGdpdC0+e21vZGV9XG4iOwogCkBAIC0xMDA2LDYgKzEwNDYsMTE5IEBACiAgICAgc3RhdGVjbGVhbnVwKCk7CiB9CiAKKyMgdXNlZCBieSByZXFfY28gYW5kIHJlcV91cGRhdGUgdG8gc2V0IHVwIGRpcmVjdG9yaWVzIGZvciBmaWxlcworIyByZWN1cnNpdmVseSBoYW5kbGVzIHBhcmVudHMKK3N1YiBwcmVwRGlyRm9yT3V0cHV0Cit7CisgICAgbXkgKCRkaXIsICRyZXBvZGlyLCAkcmVtb3RlZGlyLCAkc2VlbmRpcnMsICRyZXF1ZXN0LCAkZGlyQXJncykgPSBAXzsKKworICAgIG15ICRwYXJlbnQgPSBkaXJuYW1lKCRkaXIpOworICAgICRkaXIgICAgICAgPX4gc3wvKyR8fDsKKyAgICAkcmVwb2RpciAgID1+IHN8LyskfHw7CisgICAgJHJlbW90ZWRpciA9fiBzfC8rJHx8OworICAgICRwYXJlbnQgICAgPX4gc3wvKyR8fDsKKworICAgIGlmICgkcGFyZW50IGVxICcuJyB8fCAkcGFyZW50IGVxICcuLycpCisgICAgeworICAgICAgICAkcGFyZW50ID0gJyc7CisgICAgfQorICAgICMgcmVjdXJzZSB0byBhbm5vdW5jZSB1bnNlZW4gcGFyZW50cyBmaXJzdAorICAgIGlmKCBsZW5ndGgoJHBhcmVudCkgJiYKKyAgICAgICAgIWV4aXN0cygkc2VlbmRpcnMtPnskcGFyZW50fSkgJiYKKyAgICAgICAgKCAkcmVxdWVzdCBlcSAiY2hlY2tvdXQiIHx8CisgICAgICAgICAgZXhpc3RzKCRkaXJBcmdzLT57JHBhcmVudH0pICkgKQorICAgIHsKKyAgICAgICAgcHJlcERpckZvck91dHB1dCgkcGFyZW50LCAkcmVwb2RpciwgJHJlbW90ZWRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAkc2VlbmRpcnMsICRyZXF1ZXN0LCAkZGlyQXJncyk7CisgICAgfQorICAgICMgQW5ub3VuY2UgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gbW9kaWZ5IGF0IHRoZSBwYXJlbnQgbGV2ZWwKKyAgICBpZiAoJGRpciBlcSAnLicgfHwgJGRpciBlcSAnLi8nKQorICAgIHsKKyAgICAgICAgJGRpciA9ICcnOworICAgIH0KKyAgICBpZihleGlzdHMoJHNlZW5kaXJzLT57JGRpcn0pKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAkbG9nLT5kZWJ1ZygiYW5ub3VuY2VkaXIgJGRpciwgJHJlcG9kaXIsICRyZW1vdGVkaXIiICk7CisgICAgbXkoJHRoaXNSZW1vdGVEaXIsJHRoaXNSZXBvRGlyKTsKKyAgICBpZiAoJGRpciBuZSAiIikKKyAgICB7CisgICAgICAgICR0aGlzUmVwb0Rpcj0iJHJlcG9kaXIvJGRpciI7CisgICAgICAgIGlmKCRyZW1vdGVkaXIgZXEgIi4iKQorICAgICAgICB7CisgICAgICAgICAgICAkdGhpc1JlbW90ZURpcj0kZGlyOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgJHRoaXNSZW1vdGVEaXI9IiRyZW1vdGVkaXIvJGRpciI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgJHRoaXNSZXBvRGlyPSRyZXBvZGlyOworICAgICAgICAkdGhpc1JlbW90ZURpcj0kcmVtb3RlZGlyOworICAgIH0KKyAgICB1bmxlc3MgKCAkc3RhdGUtPntnbG9iYWxvcHRpb25zfXstUX0gfHwgJHN0YXRlLT57Z2xvYmFsb3B0aW9uc317LXF9ICkKKyAgICB7CisgICAgICAgIHByaW50ICJFIGN2cyAkcmVxdWVzdDogVXBkYXRpbmcgJHRoaXNSZW1vdGVEaXJcbiI7CisgICAgfQorCisgICAgbXkgKCRvcHRfcik9JHN0YXRlLT57b3B0fXtyfTsKKyAgICBteSAkc3RpY2t5SW5mbzsKKyAgICBpZihleGlzdHMoJHN0YXRlLT57b3B0fXtBfSkpCisgICAgeworICAgICAgICAjICRzdGlja3lJbmZvPXVuZGVmOworICAgIH0KKyAgICBlbHNpZiggZGVmaW5lZCgkb3B0X3IpICYmICRvcHRfciBuZSAiIiApCisgICAgICAgICAgICMgfHwgKCBkZWZpbmVkKCRzdGF0ZS0+e29wdH17RH0pICYmICRzdGF0ZS0+e29wdH17RH0gbmUgIiIgKSAjIFRPRE8KKyAgICB7CisgICAgICAgICRzdGlja3lJbmZvPXsgJ3RhZycgPT4gKGRlZmluZWQoJG9wdF9yKT8kb3B0X3I6dW5kZWYpIH07CisKKyAgICAgICAgIyBUT0RPOiBDb252ZXJ0IC1EIHZhbHVlIGludG8gdGhlIGZvcm0gMjAxMS4wNC4xMC4wNC40Ni41NywKKyAgICAgICAgIyAgIHNpbWlsYXIgdG8gYW4gZW50cnkgbGluZSdzIHN0aWNreSBkYXRlLCB3aXRob3V0IHRoZSBEIHByZWZpeC4KKyAgICAgICAgIyAgIEl0IHNvbWV0aW1lcyAoYWx3YXlzPykgYXJyaXZlcyBhcyBzb21ldGhpbmcgbW9yZSBsaWtlCisgICAgICAgICMgICAnMTAgQXByIDIwMTEgMDQ6NDY6NTcgLTAwMDAnLi4uCisgICAgICAgICMgJHN0aWNreUluZm89eyAnZGF0ZScgPT4gKGRlZmluZWQoJHN0aWNreURhdGUpPyRzdGlja3lEYXRlOnVuZGVmKSB9OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAkc3RpY2t5SW5mbz1nZXREaXJTdGlja3lJbmZvKCRzdGF0ZS0+e3ByZXBlbmRkaXJ9IC4gJGRpcik7CisgICAgfQorCisgICAgbXkgJHN0aWNreVJlc3BvbnNlOworICAgIGlmKGRlZmluZWQoJHN0aWNreUluZm8pKQorICAgIHsKKyAgICAgICAgJHN0aWNreVJlc3BvbnNlID0gIlNldC1zdGlja3kgJHRoaXNSZW1vdGVEaXIvXG4iIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiR0aGlzUmVwb0Rpci9cbiIgLgorICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pIC4gIlxuIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgJHN0aWNreVJlc3BvbnNlID0gIkNsZWFyLXN0aWNreSAkdGhpc1JlbW90ZURpci9cbiIgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJHRoaXNSZXBvRGlyL1xuIjsKKyAgICB9CisKKyAgICB1bmxlc3MgKCAkc3RhdGUtPntnbG9iYWxvcHRpb25zfXstbn0gKQorICAgIHsKKyAgICAgICAgcHJpbnQgJHN0aWNreVJlc3BvbnNlOworCisgICAgICAgIHByaW50ICJDbGVhci1zdGF0aWMtZGlyZWN0b3J5ICR0aGlzUmVtb3RlRGlyL1xuIjsKKyAgICAgICAgcHJpbnQgIiR0aGlzUmVwb0Rpci9cbiI7CisgICAgICAgIHByaW50ICRzdGlja3lSZXNwb25zZTsgIyB5ZXMsIHR3aWNlCisgICAgICAgIHByaW50ICJUZW1wbGF0ZSAkdGhpc1JlbW90ZURpci9cbiI7CisgICAgICAgIHByaW50ICIkdGhpc1JlcG9EaXIvXG4iOworICAgICAgICBwcmludCAiMFxuIjsKKyAgICB9CisKKyAgICAkc2VlbmRpcnMtPnskZGlyfSA9IDE7CisKKyAgICAjIEZVVFVSRTogVGhpcyB3b3VsZCBtb3JlIGFjY3VyYXRlbHkgZW11bGF0ZSBDVlMgYnkgc2VuZGluZworICAgICMgICBhbm90aGVyIGNvcHkgb2Ygc3RpY2t5IGFmdGVyIHByb2Nlc3NpbmcgdGhlIGZpbGVzIGluIHRoYXQKKyAgICAjICAgZGlyZWN0b3J5LiAgT3IgaW50ZXJtZWRpYXRlOiBwZXJoYXBzIHNlbmQgYWxsIHN0aWNreSdzIGZvcgorICAgICMgICAkc2VlbmRpcnMgYWZ0ZXIgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgZmlsZXMuCit9CisKICMgdXBkYXRlIFxuCiAjICAgICBSZXNwb25zZSBleHBlY3RlZDogeWVzLiBBY3R1YWxseSBkbyBhIGN2cyB1cGRhdGUgY29tbWFuZC4gVGhpcyB1c2VzIGFueQogIyAgICAgcHJldmlvdXMgQXJndW1lbnQsIERpcmVjdG9yeSwgRW50cnksIG9yIE1vZGlmaWVkIHJlcXVlc3RzLCBpZiB0aGV5IGhhdmUKQEAgLTEwNDksMjkgKzEyMDIsMTkgQEAKIAogICAgICMkbG9nLT5kZWJ1ZygidXBkYXRlIHN0YXRlIDogIiAuIER1bXBlcigkc3RhdGUpKTsKIAotICAgIG15ICRsYXN0X2Rpcm5hbWUgPSAiLy8vIjsKKyAgICBteSgkcmVwb0Rpcik7CisgICAgJHJlcG9EaXI9JHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRzdGF0ZS0+e21vZHVsZX0vJHN0YXRlLT57cHJlcGVuZGRpcn0iOworCisgICAgbXkgJXNlZW5kaXJzID0gKCk7CiAKICAgICAjIGZvcmVhY2ggZmlsZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSAuLi4KLSAgICBmb3JlYWNoIG15ICRmaWxlbmFtZSAoIEB7JHN0YXRlLT57YXJnc319ICkKKyAgICBmb3JlYWNoIG15ICRhcmdzRmlsZW5hbWUgKCBAeyRzdGF0ZS0+e2FyZ3N9fSApCiAgICAgewotICAgICAgICAkZmlsZW5hbWUgPSBmaWxlY2xlYW51cCgkZmlsZW5hbWUpOworICAgICAgICBteSAkZmlsZW5hbWU7CisgICAgICAgICRmaWxlbmFtZSA9IGZpbGVjbGVhbnVwKCRhcmdzRmlsZW5hbWUpOwogCiAgICAgICAgICRsb2ctPmRlYnVnKCJQcm9jZXNzaW5nIGZpbGUgJGZpbGVuYW1lIik7CiAKLSAgICAgICAgdW5sZXNzICggJHN0YXRlLT57Z2xvYmFsb3B0aW9uc317LVF9IHx8ICRzdGF0ZS0+e2dsb2JhbG9wdGlvbnN9ey1xfSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG15ICRjdXJfZGlybmFtZSA9IGRpcm5hbWUoJGZpbGVuYW1lKTsKLSAgICAgICAgICAgIGlmICggJGN1cl9kaXJuYW1lIG5lICRsYXN0X2Rpcm5hbWUgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICRsYXN0X2Rpcm5hbWUgPSAkY3VyX2Rpcm5hbWU7Ci0gICAgICAgICAgICAgICAgaWYgKCAkY3VyX2Rpcm5hbWUgZXEgIiIgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJGN1cl9kaXJuYW1lID0gIi4iOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcmludCAiRSBjdnMgdXBkYXRlOiBVcGRhdGluZyAkY3VyX2Rpcm5hbWVcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQogICAgICAgICAjIGlmIHdlIGhhdmUgYSAtQyB3ZSBzaG91bGQgcHJldGVuZCB3ZSBuZXZlciBzYXcgbW9kaWZpZWQgc3R1ZmYKICAgICAgICAgaWYgKCBleGlzdHMgKCAkc3RhdGUtPntvcHR9e0N9ICkgKQogICAgICAgICB7CkBAIC0xMDgwLDEzICsxMjIzLDExIEBACiAgICAgICAgICAgICAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e3VuY2hhbmdlZH0gPSAxOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJG1ldGE7Ci0gICAgICAgIGlmICggZGVmaW5lZCgkc3RhdGUtPntvcHR9e3J9KSBhbmQgJHN0YXRlLT57b3B0fXtyfSA9fiAvXigxXC5cZCspJC8gKQotICAgICAgICB7Ci0gICAgICAgICAgICAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOwotICAgICAgICB9CisgICAgICAgIG15ICRzdGlja3lJbmZvID0gcmVzb2x2ZVN0aWNreUluZm8oJGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0ZS0+e29wdH17cn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXRlLT57b3B0fXtEfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMoJHN0YXRlLT57b3B0fXtBfSkpOworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHN0aWNreUluZm8pOwogCiAgICAgICAgICMgSWYgLXAgd2FzIGdpdmVuLCAicHJpbnQiIHRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdGVkIHJldmlzaW9uLgogICAgICAgICBpZiAoIGV4aXN0cyAoICRzdGF0ZS0+e29wdH17cH0gKSApIHsKQEAgLTEwOTksNiArMTI0MCwxNyBAQAogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQogCisgICAgICAgICMgRGlyZWN0b3JpZXM6CisgICAgICAgIHByZXBEaXJGb3JPdXRwdXQoCisgICAgICAgICAgICAgICAgZGlybmFtZSgkYXJnc0ZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAkcmVwb0RpciwKKyAgICAgICAgICAgICAgICAiLiIsCisgICAgICAgICAgICAgICAgXCVzZWVuZGlycywKKyAgICAgICAgICAgICAgICAidXBkYXRlIiwKKyAgICAgICAgICAgICAgICAkc3RhdGUtPntkaXJBcmdzfSApOworCisgICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKKwogCWlmICggISBkZWZpbmVkICRtZXRhICkKIAl7CiAJICAgICRtZXRhID0gewpAQCAtMTEwNiwxNiArMTI1OCwyMyBAQAogCSAgICAgICAgcmV2aXNpb24gPT4gJzAnLAogCSAgICAgICAgZmlsZWhhc2ggPT4gJ2FkZGVkJwogCSAgICB9OworCSAgICBpZigkd3JldiBuZSAiMCIpCisJICAgIHsKKwkgICAgICAgICRtZXRhLT57ZmlsZWhhc2h9PSdkZWxldGVkJzsKKwkgICAgfQogCX0KIAogICAgICAgICBteSAkb2xkbWV0YSA9ICRtZXRhOwogCi0gICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKLQogICAgICAgICAjIElmIHRoZSB3b3JraW5nIGNvcHkgaXMgYW4gb2xkIHJldmlzaW9uLCBsZXRzIGdldCB0aGF0IHZlcnNpb24gdG9vIGZvciBjb21wYXJpc29uLgotICAgICAgICBpZiAoIGRlZmluZWQoJHdyZXYpIGFuZCAkd3JldiBuZSAkbWV0YS0+e3JldmlzaW9ufSApCisgICAgICAgIG15ICRvbGRXcmV2PSR3cmV2OworICAgICAgICBpZihkZWZpbmVkKCRvbGRXcmV2KSkKICAgICAgICAgewotICAgICAgICAgICAgJG9sZG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICR3cmV2KTsKKyAgICAgICAgICAgICRvbGRXcmV2PX5zL14tLy87CisgICAgICAgICAgICBpZigkb2xkV3JldiBuZSAkbWV0YS0+e3JldmlzaW9ufSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAkb2xkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJG9sZFdyZXYpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgIyRsb2ctPmRlYnVnKCJUYXJnZXQgcmV2aXNpb24gaXMgJG1ldGEtPntyZXZpc2lvbn0sIGN1cnJlbnQgd29ya2luZyByZXZpc2lvbiBpcyAkd3JldiIpOwpAQCAtMTEzMyw2ICsxMjkyLDcgQEAKICAgICAgICAgaWYgKCBkZWZpbmVkICggJHdyZXYgKQogICAgICAgICAgICAgIGFuZCBkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KQogICAgICAgICAgICAgIGFuZCAkd3JldiBlcSAkbWV0YS0+e3JldmlzaW9ufQorICAgICAgICAgICAgIGFuZCAkd3JldiBuZSAiMCIKICAgICAgICAgICAgICBhbmQgZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2hhc2h9KQogICAgICAgICAgICAgIGFuZCBub3QgZXhpc3RzICggJHN0YXRlLT57b3B0fXtDfSApICkKICAgICAgICAgewpAQCAtMTE0Myw3ICsxMzAzLDcgQEAKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoICRtZXRhLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiApCisgICAgICAgIGlmICggJG1ldGEtPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiICYmICR3cmV2IG5lICIwIiApCiAgICAgICAgIHsKICAgICAgICAgICAgICMgVE9ETzogSWYgaXQgaGFzIGJlZW4gbW9kaWZpZWQgaW4gdGhlIHNhbmRib3gsIGVycm9yIG91dAogICAgICAgICAgICAgIyAgIHdpdGggdGhlIGFwcHJvcHJpYXRlIG1lc3NhZ2UsIHJhdGhlciB0aGFuIGRlbGV0aW5nIGEgbW9kaWZpZWQKQEAgLTEyMDUsMTAgKzEzNjUsNiBAQAogCQkgICAgJGxvZy0+ZGVidWcoIlVwZGF0aW5nIGV4aXN0aW5nIGZpbGUgJ1VwZGF0ZS1leGlzdGluZyAkZGlycGFydCciKTsKIAkJfSBlbHNlIHsKIAkJICAgICMgaW5zdHJ1Y3QgY2xpZW50IHdlJ3JlIHNlbmRpbmcgYSBmaWxlIHRvIHB1dCBpbiB0aGlzIHBhdGggYXMgYSBuZXcgZmlsZQotCQkgICAgcHJpbnQgIkNsZWFyLXN0YXRpYy1kaXJlY3RvcnkgJGRpcnBhcnRcbiI7Ci0JCSAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJHN0YXRlLT57bW9kdWxlfS8kZGlycGFydFxuIjsKLQkJICAgIHByaW50ICJDbGVhci1zdGlja3kgJGRpcnBhcnRcbiI7Ci0JCSAgICBwcmludCAkc3RhdGUtPntDVlNST09UfSAuICIvJHN0YXRlLT57bW9kdWxlfS8kZGlycGFydFxuIjsKIAogCQkgICAgJGxvZy0+ZGVidWcoIkNyZWF0aW5nIG5ldyBmaWxlICdDcmVhdGVkICRkaXJwYXJ0JyIpOwogCQkgICAgcHJpbnQgIkNyZWF0ZWQgJGRpcnBhcnRcbiI7CkBAIC0xMjE3LDggKzEzNzMsMTAgQEAKIAogCQkjIHRoaXMgaXMgYW4gImVudHJpZXMiIGxpbmUKIAkJbXkgJGtvcHRzID0ga29wdHNfZnJvbV9wYXRoKCRmaWxlbmFtZSwic2hhMSIsJG1ldGEtPntmaWxlaGFzaH0pOwotCQkkbG9nLT5kZWJ1ZygiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyIpOwotCQlwcmludCAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzL1xuIjsKKyAgICAgICAgICAgICAgICBteSAkZW50cmllc0xpbmUgPSAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyI7CisgICAgICAgICAgICAgICAgJGVudHJpZXNMaW5lIC49IGdldFN0aWNreVRhZ09yRGF0ZSgkc3RpY2t5SW5mbyk7CisJCSRsb2ctPmRlYnVnKCRlbnRyaWVzTGluZSk7CisJCXByaW50ICIkZW50cmllc0xpbmVcbiI7CiAKIAkJIyBwZXJtaXNzaW9ucwogCQkkbG9nLT5kZWJ1ZygiU0VORCA6IHU9JG1ldGEtPnttb2RlfSxnPSRtZXRhLT57bW9kZX0sbz0kbWV0YS0+e21vZGV9Iik7CkBAIC0xMjY2LDcgKzE0MjQsOSBAQAogICAgICAgICAgICAgICAgICAgICBteSAka29wdHMgPSBrb3B0c19mcm9tX3BhdGgoIiRkaXJwYXJ0LyRmaWxlcGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSIsJG1lcmdlZEZpbGUpOwogICAgICAgICAgICAgICAgICAgICAkbG9nLT5kZWJ1ZygiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzLyIpOwotICAgICAgICAgICAgICAgICAgICBwcmludCAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzL1xuIjsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGVudHJpZXNMaW5lPSIvJGZpbGVwYXJ0LyRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvIjsKKyAgICAgICAgICAgICAgICAgICAgJGVudHJpZXNMaW5lIC49IGdldFN0aWNreVRhZ09yRGF0ZSgkc3RpY2t5SW5mbyk7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICIkZW50cmllc0xpbmVcbiI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzaWYgKCAkcmV0dXJuID09IDEgKQpAQCAtMTI4Miw3ICsxNDQyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJHN0YXRlLT57Q1ZTUk9PVH0gLiAiLyRzdGF0ZS0+e21vZHVsZX0vJGZpbGVuYW1lXG4iOwogICAgICAgICAgICAgICAgICAgICBteSAka29wdHMgPSBrb3B0c19mcm9tX3BhdGgoIiRkaXJwYXJ0LyRmaWxlcGFydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSIsJG1lcmdlZEZpbGUpOwotICAgICAgICAgICAgICAgICAgICBwcmludCAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8rLyRrb3B0cy9cbiI7CisgICAgICAgICAgICAgICAgICAgIG15ICRlbnRyaWVzTGluZSA9ICIvJGZpbGVwYXJ0LyRtZXRhLT57cmV2aXNpb259LysvJGtvcHRzLyI7CisgICAgICAgICAgICAgICAgICAgICRlbnRyaWVzTGluZSAuPSBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pOworICAgICAgICAgICAgICAgICAgICBwcmludCAiJGVudHJpZXNMaW5lXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTEzMTAsNiArMTQ3Miw0MyBAQAogCiAgICAgfQogCisgICAgIyBwcmVwRGlyRm9yT3V0cHV0KCkgYW55IG90aGVyIGV4aXN0aW5nIGRpcmVjdG9yaWVzIHVubGVzcyB0aGV5IGFscmVhZHkKKyAgICAjIGhhdmUgdGhlIHJpZ2h0IHN0aWNreSB0YWc6CisgICAgdW5sZXNzICggJHN0YXRlLT57Z2xvYmFsb3B0aW9uc317bn0gKQorICAgIHsKKyAgICAgICAgbXkgJGRpcjsKKyAgICAgICAgZm9yZWFjaCAkZGlyIChrZXlzKCV7JHN0YXRlLT57ZGlyTWFwfX0pKQorICAgICAgICB7CisgICAgICAgICAgICBpZiggISAkc2VlbmRpcnN7JGRpcn0gJiYKKyAgICAgICAgICAgICAgICBleGlzdHMoJHN0YXRlLT57ZGlyQXJnc317JGRpcn0pICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBteSgkb2xkVGFnKTsKKyAgICAgICAgICAgICAgICAkb2xkVGFnPSRzdGF0ZS0+e2Rpck1hcH17JGRpcn17dGFnc3BlY307CisKKyAgICAgICAgICAgICAgICB1bmxlc3MoICggZXhpc3RzKCRzdGF0ZS0+e29wdH17QX0pICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQoJG9sZFRhZykgKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAoIGRlZmluZWQoJHN0YXRlLT57b3B0fXtyfSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICFkZWZpbmVkKCRvbGRUYWcpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUtPntvcHR9e3J9IG5lICRvbGRUYWcgKSApICkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETz86IE9SIHN0aWNreSBkaXIgaXMgZGlmZmVyZW50Li4uCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHByZXBEaXJGb3JPdXRwdXQoCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgJHJlcG9EaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAiLiIsCisgICAgICAgICAgICAgICAgICAgICAgICBcJXNlZW5kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3VwZGF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdGUtPntkaXJBcmdzfSApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFRPRE8/OiBDb25zaWRlciBzZW5kaW5nIGEgZmluYWwgZHVwbGljYXRlIFN0aWNreSByZXNwb25zZQorICAgICAgICAgICAgIyAgIHRvIG1vcmUgY2xvc2VseSBtaW1pYyByZWFsIENWUy4KKyAgICAgICAgfQorICAgIH0KKwogICAgIHByaW50ICJva1xuIjsKIH0KIApAQCAtMTM0MiwyMyArMTU0MSwxMSBAQAogICAgIG15ICR1cGRhdGVyID0gR0lUQ1ZTOjp1cGRhdGVyLT5uZXcoJHN0YXRlLT57Q1ZTUk9PVH0sICRzdGF0ZS0+e21vZHVsZX0sICRsb2cpOwogICAgICR1cGRhdGVyLT51cGRhdGUoKTsKIAotICAgICMgUmVtZW1iZXIgd2hlcmUgdGhlIGhlYWQgd2FzIGF0IHRoZSBiZWdpbm5pbmcuCi0gICAgbXkgJHBhcmVudGhhc2ggPSBgZ2l0IHNob3ctcmVmIC1zIHJlZnMvaGVhZHMvJHN0YXRlLT57bW9kdWxlfWA7Ci0gICAgY2hvbXAgJHBhcmVudGhhc2g7Ci0gICAgaWYgKCRwYXJlbnRoYXNoICF+IC9eWzAtOWEtZl17NDB9JC8pIHsKLQkgICAgcHJpbnQgImVycm9yIDEgcHNlcnZlciBjYW5ub3QgZmluZCB0aGUgY3VycmVudCBIRUFEIG9mIG1vZHVsZSI7Ci0JICAgIGNsZWFudXBXb3JrVHJlZSgpOwotCSAgICBleGl0OwotICAgIH0KLQotICAgIHNldHVwV29ya1RyZWUoJHBhcmVudGhhc2gpOwotCi0gICAgJGxvZy0+aW5mbygiTG9ja2xlc3MgY29tbWl0IHN0YXJ0LCBiYXNpbmcgY29tbWl0IG9uICckd29yay0+e3dvcmtEaXJ9JywgaW5kZXggZmlsZSBpcyAnJHdvcmstPntpbmRleH0nIik7Ci0KLSAgICAkbG9nLT5pbmZvKCJDcmVhdGVkIGluZGV4ICckd29yay0+e2luZGV4fScgZm9yIGhlYWQgJHN0YXRlLT57bW9kdWxlfSAtIGV4aXQgc3RhdHVzICQ/Iik7Ci0KICAgICBteSBAY29tbWl0dGVkZmlsZXMgPSAoKTsKICAgICBteSAlb2xkbWV0YTsKKyAgICBteSAkc3RpY2t5SW5mbzsKKyAgICBteSAkYnJhbmNoUmVmOworICAgIG15ICRwYXJlbnRoYXNoOwogCiAgICAgIyBmb3JlYWNoIGZpbGUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgLi4uCiAgICAgZm9yZWFjaCBteSAkZmlsZW5hbWUgKCBAeyRzdGF0ZS0+e2FyZ3N9fSApCkBAIC0xMzY4LDcgKzE1NTUsNjcgQEAKIAogICAgICAgICBuZXh0IHVubGVzcyAoIGV4aXN0cyAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2ZpbGVuYW1lfSBvciBub3QgJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt1bmNoYW5nZWR9ICk7CiAKLSAgICAgICAgbXkgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOworICAgICAgICAjIyMjIworICAgICAgICAjIEZpZ3VyZSBvdXQgd2hpY2ggYnJhbmNoIGFuZCBwYXJlbnRoYXNoIHdlIGFyZSBjb21taXR0aW5nCisgICAgICAgICMgdG8sIGFuZCBzZXR1cCB3b3JrdHJlZToKKworICAgICAgICAjIHNob3VsZCBhbHdheXMgY29tZSBmcm9tIGVudHJpZXM6CisgICAgICAgIG15ICRmaWxlU3RpY2t5SW5mbyA9IHJlc29sdmVTdGlja3lJbmZvKCRmaWxlbmFtZSk7CisgICAgICAgIGlmKCAhZGVmaW5lZCgkYnJhbmNoUmVmKSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRzdGlja3lJbmZvID0gJGZpbGVTdGlja3lJbmZvOworICAgICAgICAgICAgaWYoIGRlZmluZWQoJHN0aWNreUluZm8pICYmCisgICAgICAgICAgICAgICAgKCBkZWZpbmVkKCRzdGlja3lJbmZvLT57ZGF0ZX0pIHx8CisgICAgICAgICAgICAgICAgICAhZGVmaW5lZCgkc3RpY2t5SW5mby0+e3RhZ30pICkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHByaW50ICJlcnJvciAxIGNhbm5vdCBjb21taXQgd2l0aCBzdGlja3kgZGF0ZSBmb3IgZmlsZSBgJGZpbGVuYW1lJ1xuIjsKKyAgICAgICAgICAgICAgICBjbGVhbnVwV29ya1RyZWUoKTsKKyAgICAgICAgICAgICAgICBleGl0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAkYnJhbmNoUmVmID0gInJlZnMvaGVhZHMvJHN0YXRlLT57bW9kdWxlfSI7CisgICAgICAgICAgICBpZiAoIGRlZmluZWQoJHN0aWNreUluZm8pICYmIGRlZmluZWQoJHN0aWNreUluZm8tPnt0YWd9KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgJGJyYW5jaFJlZiA9ICJyZWZzL2hlYWRzLyRzdGlja3lJbmZvLT57dGFnfSI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICRwYXJlbnRoYXNoID0gYGdpdCBzaG93LXJlZiAtcyAkYnJhbmNoUmVmYDsKKyAgICAgICAgICAgIGNob21wICRwYXJlbnRoYXNoOworICAgICAgICAgICAgaWYgKCRwYXJlbnRoYXNoICF+IC9eWzAtOWEtZl17NDB9JC8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkKCRzdGlja3lJbmZvKSAmJiBkZWZpbmVkKCRzdGlja3lJbmZvLT57dGFnfSkgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgImVycm9yIDEgc3RpY2t5IHRhZyBgJHN0aWNreUluZm8tPnt0YWd9JyBmb3IgZmlsZSBgJGZpbGVuYW1lJyBpcyBub3QgYSBicmFuY2hcbiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJlcnJvciAxIHBzZXJ2ZXIgY2Fubm90IGZpbmQgdGhlIGN1cnJlbnQgSEVBRCBvZiBtb2R1bGUiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjbGVhbnVwV29ya1RyZWUoKTsKKyAgICAgICAgICAgICAgICBleGl0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXR1cFdvcmtUcmVlKCRwYXJlbnRoYXNoKTsKKworICAgICAgICAgICAgJGxvZy0+aW5mbygiTG9ja2xlc3MgY29tbWl0IHN0YXJ0LCBiYXNpbmcgY29tbWl0IG9uICckd29yay0+e3dvcmtEaXJ9JywgaW5kZXggZmlsZSBpcyAnJHdvcmstPntpbmRleH0nIik7CisKKyAgICAgICAgICAgICRsb2ctPmluZm8oIkNyZWF0ZWQgaW5kZXggJyR3b3JrLT57aW5kZXh9JyBmb3IgaGVhZCAkc3RhdGUtPnttb2R1bGV9IC0gZXhpdCBzdGF0dXMgJD8iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNpZiggIXJlZkhhc2hFcXVhbCgkc3RpY2t5SW5mbywkZmlsZVN0aWNreUluZm8pICkKKyAgICAgICAgeworICAgICAgICAgICAgI1RPRE86IFdlIGNvdWxkIHNwbGl0IHRoZSBjdnMgY29tbWl0IGludG8gbXVsdGlwbGUKKyAgICAgICAgICAgICMgIGdpdCBjb21taXRzIGJ5IGRpc3RpbmN0IHN0aWNreVRhZyB2YWx1ZXMsIGJ1dCB0aGF0CisgICAgICAgICAgICAjICBpcyBsb3dpc2ggcHJpb3JpdHkuCisgICAgICAgICAgICBwcmludCAiZXJyb3IgMSBDb21taXR0aW5nIGRpZmZlcmVudCBmaWxlcyB0byBkaWZmZXJlbnQiCisgICAgICAgICAgICAgICAgICAuICIgYnJhbmNoZXMgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWRcbiI7CisgICAgICAgICAgICBjbGVhbnVwV29ya1RyZWUoKTsKKyAgICAgICAgICAgIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICAjIyMjIworICAgICAgICAjIFByb2Nlc3MgdGhpcyBmaWxlOgorCisgICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCRzdGlja3lJbmZvKTsKIAkkb2xkbWV0YXskZmlsZW5hbWV9ID0gJG1ldGE7CiAKICAgICAgICAgbXkgJHdyZXYgPSByZXZwYXJzZSgkZmlsZW5hbWUpOwpAQCAtMTQ3MCw3ICsxNzE3LDcgQEAKICAgICB9CiAKIAkjIyMgRW11bGF0ZSBnaXQtcmVjZWl2ZS1wYWNrIGJ5IHJ1bm5pbmcgaG9va3MvdXBkYXRlCi0JbXkgQGhvb2sgPSAoICRFTlZ7R0lUX0RJUn0uJ2hvb2tzL3VwZGF0ZScsICJyZWZzL2hlYWRzLyRzdGF0ZS0+e21vZHVsZX0iLAorCW15IEBob29rID0gKCAkRU5We0dJVF9ESVJ9Lidob29rcy91cGRhdGUnLCAkYnJhbmNoUmVmLAogCQkJJHBhcmVudGhhc2gsICRjb21taXRoYXNoICk7CiAJaWYoIC14ICRob29rWzBdICkgewogCQl1bmxlc3MoIHN5c3RlbSggQGhvb2sgKSA9PSAwICkKQEAgLTE0ODQsNyArMTczMSw3IEBACiAKIAkjIyMgVXBkYXRlIHRoZSByZWYKIAlpZiAoc3lzdGVtKHF3KGdpdCB1cGRhdGUtcmVmIC1tKSwgImN2c3NlcnZlciBjaSIsCi0JCQkicmVmcy9oZWFkcy8kc3RhdGUtPnttb2R1bGV9IiwgJGNvbW1pdGhhc2gsICRwYXJlbnRoYXNoKSkgeworCQkJJGJyYW5jaFJlZiwgJGNvbW1pdGhhc2gsICRwYXJlbnRoYXNoKSkgewogCQkkbG9nLT53YXJuKCJ1cGRhdGUtcmVmIGZvciAkc3RhdGUtPnttb2R1bGV9IGZhaWxlZC4iKTsKIAkJcHJpbnQgImVycm9yIDEgQ2Fubm90IGNvbW1pdCAtLSB1cGRhdGUgZmlyc3RcbiI7CiAJCWNsZWFudXBXb3JrVHJlZSgpOwpAQCAtMTQ5OCw3ICsxNzQ1LDcgQEAKIAogCQlsb2NhbCAkU0lHe1BJUEV9ID0gc3ViIHsgZGllICdwaXBlIGJyb2tlJyB9OwogCi0JCXByaW50ICRwaXBlICIkcGFyZW50aGFzaCAkY29tbWl0aGFzaCByZWZzL2hlYWRzLyRzdGF0ZS0+e21vZHVsZX1cbiI7CisJCXByaW50ICRwaXBlICIkcGFyZW50aGFzaCAkY29tbWl0aGFzaCAkYnJhbmNoUmVmXG4iOwogCiAJCWNsb3NlICRwaXBlIHx8IGRpZSAiYmFkIHBpcGU6ICQhICQ/IjsKIAl9CkBAIC0xNTA4LDcgKzE3NTUsNyBAQAogCSMjIyBUaGVuIGhvb2tzL3Bvc3QtdXBkYXRlCiAJJGhvb2sgPSAkRU5We0dJVF9ESVJ9Lidob29rcy9wb3N0LXVwZGF0ZSc7CiAJaWYgKC14ICRob29rKSB7Ci0JCXN5c3RlbSgkaG9vaywgInJlZnMvaGVhZHMvJHN0YXRlLT57bW9kdWxlfSIpOworCQlzeXN0ZW0oJGhvb2ssICRicmFuY2hSZWYpOwogCX0KIAogICAgICMgZm9yZWFjaCBmaWxlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIC4uLgpAQCAtMTUxNiw3ICsxNzYzLDcgQEAKICAgICB7CiAgICAgICAgICRmaWxlbmFtZSA9IGZpbGVjbGVhbnVwKCRmaWxlbmFtZSk7CiAKLSAgICAgICAgbXkgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOworICAgICAgICBteSAkbWV0YSA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwkc3RpY2t5SW5mbyk7CiAJdW5sZXNzIChkZWZpbmVkICRtZXRhLT57cmV2aXNpb259KSB7CiAJICAkbWV0YS0+e3JldmlzaW9ufSA9ICIxLjEiOwogCX0KQEAgLTE1NDAsNyArMTc4Nyw4IEBACiAgICAgICAgICAgICBwcmludCAiQ2hlY2tlZC1pbiAkZGlycGFydFxuIjsKICAgICAgICAgICAgIHByaW50ICIkZmlsZW5hbWVcbiI7CiAgICAgICAgICAgICBteSAka29wdHMgPSBrb3B0c19mcm9tX3BhdGgoJGZpbGVuYW1lLCJzaGExIiwkbWV0YS0+e2ZpbGVoYXNofSk7Ci0gICAgICAgICAgICBwcmludCAiLyRmaWxlcGFydC8kbWV0YS0+e3JldmlzaW9ufS8vJGtvcHRzL1xuIjsKKyAgICAgICAgICAgIHByaW50ICIvJGZpbGVwYXJ0LyRtZXRhLT57cmV2aXNpb259Ly8ka29wdHMvIiAuCisgICAgICAgICAgICAgICAgICBnZXRTdGlja3lUYWdPckRhdGUoJHN0aWNreUluZm8pIC4gIlxuIjsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTU3NywxNiArMTgyNSwxOSBAQAogICAgICAgICAgICBuZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUpOwotICAgICAgICBteSAkb2xkbWV0YSA9ICRtZXRhOwotCiAgICAgICAgIG15ICR3cmV2ID0gcmV2cGFyc2UoJGZpbGVuYW1lKTsKIAorICAgICAgICBteSAkc3RpY2t5SW5mbyA9IHJlc29sdmVTdGlja3lJbmZvKCRmaWxlbmFtZSk7CisgICAgICAgIG15ICRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCRzdGlja3lJbmZvKTsKKyAgICAgICAgbXkgJG9sZG1ldGEgPSAkbWV0YTsKKwogICAgICAgICAjIElmIHRoZSB3b3JraW5nIGNvcHkgaXMgYW4gb2xkIHJldmlzaW9uLCBsZXRzIGdldCB0aGF0CiAgICAgICAgICMgdmVyc2lvbiB0b28gZm9yIGNvbXBhcmlzb24uCiAgICAgICAgIGlmICggZGVmaW5lZCgkd3JldikgYW5kICR3cmV2IG5lICRtZXRhLT57cmV2aXNpb259ICkKICAgICAgICAgewotICAgICAgICAgICAgJG9sZG1ldGEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICR3cmV2KTsKKyAgICAgICAgICAgIG15KCRybVJldik9JHdyZXY7CisgICAgICAgICAgICAkcm1SZXY9fnMvXi0vLzsKKyAgICAgICAgICAgICRvbGRtZXRhID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkcm1SZXYpOwogICAgICAgICB9CiAKICAgICAgICAgIyBUT0RPIDogQWxsIHBvc3NpYmxlIHN0YXR1c2VzIGFyZW4ndCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTE2MjksNiArMTg4MCw3IEBACiAgICAgICAgICMgc2FtZSByZXZpc2lvbiBidXQgdGhlcmUgYXJlIGxvY2FsIGNoYW5nZXMKICAgICAgICAgaWYgKCBkZWZpbmVkICggJHdyZXYgKSBhbmQgZGVmaW5lZCgkbWV0YS0+e3JldmlzaW9ufSkgYW5kCiAgICAgICAgICAgICAgJHdyZXYgZXEgJG1ldGEtPntyZXZpc2lvbn0gYW5kCisgICAgICAgICAgICAgJHdyZXYgbmUgIjAiIGFuZAogICAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17bW9kaWZpZWRfZmlsZW5hbWV9ICkKICAgICAgICAgewogICAgICAgICAgICAgJHN0YXR1cyB8fD0gIkxvY2FsbHkgTW9kaWZpZWQiOwpAQCAtMTY0NCw3ICsxODk2LDggQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmICggZGVmaW5lZCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17cmV2aXNpb259ICkgYW5kCi0gICAgICAgICAgICAgbm90IGRlZmluZWQgKCAkbWV0YS0+e3JldmlzaW9ufSApICkKKyAgICAgICAgICAgICAoICFkZWZpbmVkKCRtZXRhLT57cmV2aXNpb259KSB8fAorICAgICAgICAgICAgICAgJG1ldGEtPntyZXZpc2lvbn0gZXEgIjAiICkgKQogICAgICAgICB7CiAgICAgICAgICAgICAkc3RhdHVzIHx8PSAiTG9jYWxseSBBZGRlZCI7CiAgICAgICAgIH0KQEAgLTE3NDAsOTggKzE5OTMsMTMzIEBACiAgICAgIyBiZSBwcm92aWRpbmcgc3RhdHVzIG9uIC4uLgogICAgIGFyZ3Nmcm9tZGlyKCR1cGRhdGVyKTsKIAorICAgIG15KCRmb3VuZERpZmYpOworCiAgICAgIyBmb3JlYWNoIGZpbGUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgLi4uCi0gICAgZm9yZWFjaCBteSAkZmlsZW5hbWUgKCBAeyRzdGF0ZS0+e2FyZ3N9fSApCisgICAgZm9yZWFjaCBteSAkYXJnRmlsZW5hbWUgKCBAeyRzdGF0ZS0+e2FyZ3N9fSApCiAgICAgewotICAgICAgICAkZmlsZW5hbWUgPSBmaWxlY2xlYW51cCgkZmlsZW5hbWUpOworICAgICAgICBteSgkZmlsZW5hbWUpID0gZmlsZWNsZWFudXAoJGFyZ0ZpbGVuYW1lKTsKIAogICAgICAgICBteSAoICRmaCwgJGZpbGUxLCAkZmlsZTIsICRtZXRhMSwgJG1ldGEyLCAkZmlsZWRpZmYgKTsKIAogICAgICAgICBteSAkd3JldiA9IHJldnBhcnNlKCRmaWxlbmFtZSk7CiAKLSAgICAgICAgIyBXZSBuZWVkIF9zb21ldGhpbmdfIHRvIGRpZmYgYWdhaW5zdAotICAgICAgICBuZXh0IHVubGVzcyAoIGRlZmluZWQgKCAkd3JldiApICk7CisgICAgICAgICMgUHJpb3JpdHkgZm9yIHJldmlzaW9uMToKKyAgICAgICAgIyAgMS4gRmlyc3QgLXIgKG1pc3NpbmcgZmlsZTogY2hlY2sgLU4pCisgICAgICAgICMgIDIuIHdyZXYgZnJvbSBjbGllbnQncyBFbnRyeSBsaW5lCisgICAgICAgICMgICAgICAtIG1pc3NpbmcgbGluZS9maWxlOiBjaGVjayAtTgorICAgICAgICAjICAgICAgLSAiMCI6IGFkZGVkIGZpbGUgbm90IGNvbW1pdHRlZCAoZW1wdHkgY29udGVudHMgZm9yIHJldjEpCisgICAgICAgICMgICAgICAtIFByZWZpeGVkIHdpdGggZGFzaCAodG8gYmUgcmVtb3ZlZCk6IGNoZWNrIC1OCiAKLSAgICAgICAgIyBpZiB3ZSBoYXZlIGEgLXIgc3dpdGNoLCB1c2UgaXQKICAgICAgICAgaWYgKCBkZWZpbmVkICggJHJldmlzaW9uMSApICkKICAgICAgICAgewotICAgICAgICAgICAgKCB1bmRlZiwgJGZpbGUxICkgPSB0ZW1wZmlsZSggRElSID0+ICRURU1QX0RJUiwgT1BFTiA9PiAwICk7CiAgICAgICAgICAgICAkbWV0YTEgPSAkdXBkYXRlci0+Z2V0bWV0YSgkZmlsZW5hbWUsICRyZXZpc2lvbjEpOwotICAgICAgICAgICAgdW5sZXNzICggZGVmaW5lZCAoICRtZXRhMSApIGFuZCAkbWV0YTEtPntmaWxlaGFzaH0gbmUgImRlbGV0ZWQiICkKKyAgICAgICAgfQorICAgICAgICBlbHNpZiggZGVmaW5lZCgkd3JldikgJiYgJHdyZXYgbmUgIjAiICkKKyAgICAgICAgeworICAgICAgICAgICAgbXkoJHJtUmV2KT0kd3JldjsKKyAgICAgICAgICAgICRybVJldj1+cy9eLS8vOworICAgICAgICAgICAgJG1ldGExID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkcm1SZXYpOworICAgICAgICB9CisgICAgICAgIGlmICggIWRlZmluZWQoJG1ldGExKSB8fAorICAgICAgICAgICAgICRtZXRhMS0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiggIWV4aXN0cygkc3RhdGUtPntvcHR9e059KSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgIkUgRmlsZSAkZmlsZW5hbWUgYXQgcmV2aXNpb24gJHJldmlzaW9uMSBkb2Vzbid0IGV4aXN0XG4iOworICAgICAgICAgICAgICAgIGlmKCFkZWZpbmVkKCRyZXZpc2lvbjEpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkUgRmlsZSAkZmlsZW5hbWUgYXQgcmV2aXNpb24gJHJldmlzaW9uMSBkb2Vzbid0IGV4aXN0XG4iOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBuZXh0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdHJhbnNtaXRmaWxlKCRtZXRhMS0+e2ZpbGVoYXNofSwgeyB0YXJnZXRmaWxlID0+ICRmaWxlMSB9KTsKKyAgICAgICAgICAgIGVsc2lmKCAhZGVmaW5lZCgkbWV0YTEpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAkbWV0YTEgPSB7CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPT4gJGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9PiAnMCcsCisgICAgICAgICAgICAgICAgICAgIGZpbGVoYXNoID0+ICdkZWxldGVkJworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgIyBvdGhlcndpc2Ugd2UganVzdCB1c2UgdGhlIHdvcmtpbmcgY29weSByZXZpc2lvbgotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgICggdW5kZWYsICRmaWxlMSApID0gdGVtcGZpbGUoIERJUiA9PiAkVEVNUF9ESVIsIE9QRU4gPT4gMCApOwotICAgICAgICAgICAgJG1ldGExID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkd3Jldik7Ci0gICAgICAgICAgICB0cmFuc21pdGZpbGUoJG1ldGExLT57ZmlsZWhhc2h9LCB7IHRhcmdldGZpbGUgPT4gJGZpbGUxIH0pOwotICAgICAgICB9CisKKyAgICAgICAgIyBQcmlvcml0eSBmb3IgcmV2aXNpb24yOgorICAgICAgICAjICAxLiBTZWNvbmQgLXIgKG1pc3NpbmcgZmlsZTogY2hlY2sgLU4pCisgICAgICAgICMgIDIuIE1vZGlmaWVkIGZpbGUgY29udGVudHMgZnJvbSBjbGllbnQKKyAgICAgICAgIyAgMy4gd3JldiBmcm9tIGNsaWVudCdzIEVudHJ5IGxpbmUKKyAgICAgICAgIyAgICAgIC0gbWlzc2luZyBsaW5lL2ZpbGU6IGNoZWNrIC1OCisgICAgICAgICMgICAgICAtIFByZWZpeGVkIHdpdGggZGFzaCAodG8gYmUgcmVtb3ZlZCk6IGNoZWNrIC1OCiAKICAgICAgICAgIyBpZiB3ZSBoYXZlIGEgc2Vjb25kIC1yIHN3aXRjaCwgdXNlIGl0IHRvbwogICAgICAgICBpZiAoIGRlZmluZWQgKCAkcmV2aXNpb24yICkgKQogICAgICAgICB7Ci0gICAgICAgICAgICAoIHVuZGVmLCAkZmlsZTIgKSA9IHRlbXBmaWxlKCBESVIgPT4gJFRFTVBfRElSLCBPUEVOID0+IDAgKTsKICAgICAgICAgICAgICRtZXRhMiA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHJldmlzaW9uMik7Ci0KLSAgICAgICAgICAgIHVubGVzcyAoIGRlZmluZWQgKCAkbWV0YTIgKSBhbmQgJG1ldGEyLT57ZmlsZWhhc2h9IG5lICJkZWxldGVkIiApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgIkUgRmlsZSAkZmlsZW5hbWUgYXQgcmV2aXNpb24gJHJldmlzaW9uMiBkb2Vzbid0IGV4aXN0XG4iOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRyYW5zbWl0ZmlsZSgkbWV0YTItPntmaWxlaGFzaH0sIHsgdGFyZ2V0ZmlsZSA9PiAkZmlsZTIgfSk7CiAgICAgICAgIH0KLSAgICAgICAgIyBvdGhlcndpc2Ugd2UganVzdCB1c2UgdGhlIHdvcmtpbmcgY29weQotICAgICAgICBlbHNlCisgICAgICAgIGVsc2lmKGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9maWxlbmFtZX0pKQogICAgICAgICB7CiAgICAgICAgICAgICAkZmlsZTIgPSAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e21vZGlmaWVkX2ZpbGVuYW1lfTsKKwkgICAgJG1ldGEyID0geworICAgICAgICAgICAgICAgIG5hbWUgPT4gJGZpbGVuYW1lLAorCSAgICAgICAgcmV2aXNpb24gPT4gJzAnLAorCSAgICAgICAgZmlsZWhhc2ggPT4gJ21vZGlmaWVkJworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICBlbHNpZiggZGVmaW5lZCgkd3JldikgJiYgKCR3cmV2IX4vXi0vKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKCFkZWZpbmVkKCRyZXZpc2lvbjEpKSAgIyBubyByZXZpc2lvbiBhbmQgbm8gbW9kaWZpY2F0aW9uczoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgJG1ldGEyID0gJHVwZGF0ZXItPmdldG1ldGEoJGZpbGVuYW1lLCAkd3Jldik7CisgICAgICAgIH0KKyAgICAgICAgaWYoIWRlZmluZWQoJGZpbGUyKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCgkbWV0YTIpIHx8CisgICAgICAgICAgICAgICAgICRtZXRhMi0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKCAhZXhpc3RzKCRzdGF0ZS0+e29wdH17Tn0pICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmKCFkZWZpbmVkKCRyZXZpc2lvbjIpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiRSBGaWxlICRmaWxlbmFtZSBhdCByZXZpc2lvbiAkcmV2aXNpb24yIGRvZXNuJ3QgZXhpc3RcbiI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzaWYoICFkZWZpbmVkKCRtZXRhMikgKQorICAgICAgICAgICAgICAgIHsKKwkgICAgICAgICAgICAkbWV0YTIgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0+ICRmaWxlbmFtZSwKKwkgICAgICAgICAgICAgICAgcmV2aXNpb24gPT4gJzAnLAorCSAgICAgICAgICAgICAgICBmaWxlaGFzaCA9PiAnZGVsZXRlZCcKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAjIGlmIHdlIGhhdmUgYmVlbiBnaXZlbiAtciwgYW5kIHdlIGRvbid0IGhhdmUgYSAkZmlsZTIgeWV0LCBsZXRzCi0gICAgICAgICMgZ2V0IG9uZQotICAgICAgICBpZiAoIGRlZmluZWQgKCAkcmV2aXNpb24xICkgYW5kIG5vdCBkZWZpbmVkICggJGZpbGUyICkgKQorICAgICAgICBpZiggJG1ldGExLT57ZmlsZWhhc2h9IGVxICRtZXRhMi0+e2ZpbGVoYXNofSApCisgICAgICAgIHsKKyAgICAgICAgICAgICRsb2ctPmluZm8oInVuY2hhbmdlZCAkZmlsZW5hbWUiKTsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKworICAgICAgICAjIFJldHJpZXZlIHJldmlzaW9uIGNvbnRlbnRzOgorICAgICAgICAoIHVuZGVmLCAkZmlsZTEgKSA9IHRlbXBmaWxlKCBESVIgPT4gJFRFTVBfRElSLCBPUEVOID0+IDAgKTsKKyAgICAgICAgdHJhbnNtaXRmaWxlKCRtZXRhMS0+e2ZpbGVoYXNofSwgeyB0YXJnZXRmaWxlID0+ICRmaWxlMSB9KTsKKworICAgICAgICBpZighZGVmaW5lZCgkZmlsZTIpKQogICAgICAgICB7CiAgICAgICAgICAgICAoIHVuZGVmLCAkZmlsZTIgKSA9IHRlbXBmaWxlKCBESVIgPT4gJFRFTVBfRElSLCBPUEVOID0+IDAgKTsKLSAgICAgICAgICAgICRtZXRhMiA9ICR1cGRhdGVyLT5nZXRtZXRhKCRmaWxlbmFtZSwgJHdyZXYpOwogICAgICAgICAgICAgdHJhbnNtaXRmaWxlKCRtZXRhMi0+e2ZpbGVoYXNofSwgeyB0YXJnZXRmaWxlID0+ICRmaWxlMiB9KTsKICAgICAgICAgfQogCi0gICAgICAgICMgV2UgbmVlZCB0byBoYXZlIHJldHJpZXZlZCBzb21ldGhpbmcgdXNlZnVsCi0gICAgICAgIG5leHQgdW5sZXNzICggZGVmaW5lZCAoICRtZXRhMSApICk7Ci0KLSAgICAgICAgIyBGaWxlcyB0byBkYXRlIGlmIHRoZSB3b3JraW5nIGNvcHkgYW5kIHJlcG8gY29weSBoYXZlIHRoZSBzYW1lCi0gICAgICAgICMgcmV2aXNpb24sIGFuZCB0aGUgd29ya2luZyBjb3B5IGlzIHVubW9kaWZpZWQKLSAgICAgICAgaWYgKCBub3QgZGVmaW5lZCAoICRtZXRhMiApIGFuZCAkd3JldiBlcSAkbWV0YTEtPntyZXZpc2lvbn0gYW5kCi0gICAgICAgICAgICAgKCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17dW5jaGFuZ2VkfSBhbmQKLSAgICAgICAgICAgICAgICAgKCBub3QgZGVmaW5lZCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17Y29uZmxpY3R9ICkgb3IKLSAgICAgICAgICAgICAgICAgICAkc3RhdGUtPntlbnRyaWVzfXskZmlsZW5hbWV9e2NvbmZsaWN0fSAhfiAvXlwrPS8gKSApIG9yCi0gICAgICAgICAgICAgICAoIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXttb2RpZmllZF9oYXNofSkgYW5kCi0gICAgICAgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17bW9kaWZpZWRfaGFzaH0gZXEKLSAgICAgICAgICAgICAgICAgICAgICAgICRtZXRhMS0+e2ZpbGVoYXNofSApICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgIyBBcHBhcmVudGx5IHdlIG9ubHkgc2hvdyBkaWZmcyBmb3IgbG9jYWxseSBtb2RpZmllZCBmaWxlcwotICAgICAgICB1bmxlc3MgKCBkZWZpbmVkKCRtZXRhMikgb3IKLSAgICAgICAgICAgICAgICAgZGVmaW5lZCAoICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17bW9kaWZpZWRfZmlsZW5hbWV9ICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgcHJpbnQgIk0gSW5kZXg6ICRmaWxlbmFtZVxuIjsKKyAgICAgICAgIyBHZW5lcmF0ZSB0aGUgYWN0dWFsIGRpZmY6CisgICAgICAgIHByaW50ICJNIEluZGV4OiAkYXJnRmlsZW5hbWVcbiI7CiAgICAgICAgIHByaW50ICJNID09PT09PT0iIC4gKCAiPSIgeCA2MCApIC4gIlxuIjsKICAgICAgICAgcHJpbnQgIk0gUkNTIGZpbGU6ICRzdGF0ZS0+e0NWU1JPT1R9LyRzdGF0ZS0+e21vZHVsZX0vJGZpbGVuYW1lLHZcbiI7Ci0gICAgICAgIGlmICggZGVmaW5lZCAoICRtZXRhMSApICkKKyAgICAgICAgaWYgKCBkZWZpbmVkICggJG1ldGExICkgJiYgJG1ldGExLT57cmV2aXNpb259IG5lICIwIiApCiAgICAgICAgIHsKICAgICAgICAgICAgIHByaW50ICJNIHJldHJpZXZpbmcgcmV2aXNpb24gJG1ldGExLT57cmV2aXNpb259XG4iCiAgICAgICAgIH0KLSAgICAgICAgaWYgKCBkZWZpbmVkICggJG1ldGEyICkgKQorICAgICAgICBpZiAoIGRlZmluZWQgKCAkbWV0YTIgKSAmJiAkbWV0YTItPntyZXZpc2lvbn0gbmUgIjAiICkKICAgICAgICAgewogICAgICAgICAgICAgcHJpbnQgIk0gcmV0cmlldmluZyByZXZpc2lvbiAkbWV0YTItPntyZXZpc2lvbn1cbiIKICAgICAgICAgfQpAQCAtMTg1MiwzMyArMjE0MCw3MyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBwcmludCAiJGZpbGVuYW1lXG4iOworICAgICAgICBwcmludCAiJGFyZ0ZpbGVuYW1lXG4iOwogCiAgICAgICAgICRsb2ctPmluZm8oIkRpZmZpbmcgJGZpbGVuYW1lIC1yICRtZXRhMS0+e3JldmlzaW9ufSAtciAiIC4KICAgICAgICAgICAgICAgICAgICAoICRtZXRhMi0+e3JldmlzaW9ufSBvciAid29ya2luZ2NvcHkiICkpOwogCi0gICAgICAgICggJGZoLCAkZmlsZWRpZmYgKSA9IHRlbXBmaWxlICggRElSID0+ICRURU1QX0RJUiApOworICAgICAgICAjIFRPRE86IFVzZSAtLWxhYmVsIGluc3RlYWQgb2YgLUwgYmVjYXVzZSAtTCBpcyBubyBsb25nZXIKKyAgICAgICAgIyAgZG9jdW1lbnRlZCBhbmQgbWF5IGdvIGF3YXkgc29tZWRheS4gIE5vdCBzdXJlIGlmIHRoZXJlIHRoZXJlIGFyZQorICAgICAgICAjICB2ZXJzaW9ucyB0aGF0IG9ubHkgc3VwcG9ydCAtTCwgd2hpY2ggd291bGQgbWFrZSB0aGlzIGNoYW5nZSByaXNreT8KKyAgICAgICAgIyAgaHR0cDovL29zZGlyLmNvbS9tbC9idWctZ251LXV0aWxzLWdudS8yMDEwLTEyL21zZzAwMDYwLmh0bWwKKyAgICAgICAgIyAgICAoIm1hbiBkaWZmIiBzaG91bGQgYWN0dWFsbHkgZG9jdW1lbnQgdGhlIGJlc3QgbWlncmF0aW9uIHN0cmF0ZWd5LAorICAgICAgICAjICBbY3VycmVudCBiZWhhdmlvciwgZnV0dXJlIGNoYW5nZXMsIG9sZCBjb21wYXRpYmlsaXR5IGlzc3VlcworICAgICAgICAjICBvciBsYWNrIHRoZXJlb2YsIGV0Y10sIG5vdCBqdXN0IHN0b3AgbWVudGlvbmluZyB0aGUgb3B0aW9uLi4uKQorICAgICAgICAjIFRPRE86IFJlYWwgQ1ZTIHNlZW1zIHRvIGluY2x1ZGUgYSBkYXRlIGluIHRoZSBsYWJlbCwgYmVmb3JlCisgICAgICAgICMgIHRoZSByZXZpc2lvbiBwYXJ0LCB3aXRob3V0IHRoZSBrZXl3b3JkICJyZXZpc2lvbiIuICBUaGUgZm9sbG93aW5nCisgICAgICAgICMgIGhhcyBtaW5pbWFsIGNoYW5nZXMgY29tcGFyZWQgdG8gb3JpZ2luYWwgdmVyc2lvbnMgb2YKKyAgICAgICAgIyAgZ2l0LWN2c3NlcnZlci5wZXJsLiAgKE1vc3RseSB0YWIgdnMgc3BhY2UgYWZ0ZXIgZmlsZW5hbWUuKQogCisgICAgICAgIG15IChAZGlmZkNtZCkgPSAoICdkaWZmJyApOworICAgICAgICBpZiAoIGV4aXN0cygkc3RhdGUtPntvcHR9e059KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsIi1OIjsKKyAgICAgICAgfQogICAgICAgICBpZiAoIGV4aXN0cyAkc3RhdGUtPntvcHR9e3V9ICkKICAgICAgICAgewotICAgICAgICAgICAgc3lzdGVtKCJkaWZmIC11IC1MICckZmlsZW5hbWUgcmV2aXNpb24gJG1ldGExLT57cmV2aXNpb259JyIgLgotICAgICAgICAgICAgICAgICAgICAgICAgIiAtTCAnJGZpbGVuYW1lICIgLgotICAgICAgICAgICAgICAgICAgICAgICAgKCBkZWZpbmVkKCRtZXRhMi0+e3JldmlzaW9ufSkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmV2aXNpb24gJG1ldGEyLT57cmV2aXNpb259IiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3b3JraW5nIGNvcHkiICkgLgotICAgICAgICAgICAgICAgICAgICAgICAgIicgJGZpbGUxICRmaWxlMiA+ICRmaWxlZGlmZiIgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN5c3RlbSgiZGlmZiAkZmlsZTEgJGZpbGUyID4gJGZpbGVkaWZmIik7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsKCItdSIsIi1MIik7CisgICAgICAgICAgICBpZiggJG1ldGExLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHVzaCBAZGlmZkNtZCwiL2Rldi9udWxsIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaCBAZGlmZkNtZCwoIiRhcmdGaWxlbmFtZVx0cmV2aXNpb24gJG1ldGExLT57cmV2aXNpb259Iik7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgd2hpbGUgKCA8JGZoPiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByaW50ICJNICRfIjsKKyAgICAgICAgICAgIGlmKCBkZWZpbmVkKCRtZXRhMi0+e2ZpbGVoYXNofSkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKCAkbWV0YTItPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsKCItTCIsIi9kZXYvbnVsbCIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2ggQGRpZmZDbWQsKCItTCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkYXJnRmlsZW5hbWVcdHJldmlzaW9uICRtZXRhMi0+e3JldmlzaW9ufSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaCBAZGlmZkNtZCwoIi1MIiwiJGFyZ0ZpbGVuYW1lXHR3b3JraW5nIGNvcHkiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBjbG9zZSAkZmg7CisgICAgICAgIHB1c2ggQGRpZmZDbWQsKCRmaWxlMSwkZmlsZTIpOworICAgICAgICBpZighb3BlbihESUZGLCItfCIsQGRpZmZDbWQpKQorICAgICAgICB7CisgICAgICAgICAgICAkbG9nLT53YXJuKCJVbmFibGUgdG8gcnVuIGRpZmY6ICQhIik7CisgICAgICAgIH0KKyAgICAgICAgbXkoJGRpZmZMaW5lKTsKKyAgICAgICAgd2hpbGUoZGVmaW5lZCgkZGlmZkxpbmU9PERJRkY+KSkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnQgIk0gJGRpZmZMaW5lIjsKKyAgICAgICAgICAgICRmb3VuZERpZmY9MTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZShESUZGKTsKICAgICB9CiAKLSAgICBwcmludCAib2tcbiI7CisgICAgaWYoJGZvdW5kRGlmZikKKyAgICB7CisgICAgICAgIHByaW50ICJlcnJvciAgXG4iOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBwcmludCAib2tcbiI7CisgICAgfQogfQogCiBzdWIgcmVxX2xvZwpAQCAtMjA5OCw3ICsyNDI2LDcgQEAKICAgICAgICAgJG9wdCA9IHsgQSA9PiAwLCBOID0+IDAsIFAgPT4gMCwgUiA9PiAwLCBjID0+IDAsIGYgPT4gMCwgbCA9PiAwLCBuID0+IDAsIHAgPT4gMCwgcyA9PiAwLCByID0+IDEsIEQgPT4gMSwgZCA9PiAxLCBrID0+IDEsIGogPT4gMSwgfSBpZiAoICR0eXBlIGVxICJjbyIgKTsKICAgICAgICAgJG9wdCA9IHsgdiA9PiAwLCBsID0+IDAsIFIgPT4gMCB9IGlmICggJHR5cGUgZXEgInN0YXR1cyIgKTsKICAgICAgICAgJG9wdCA9IHsgQSA9PiAwLCBQID0+IDAsIEMgPT4gMCwgZCA9PiAwLCBmID0+IDAsIGwgPT4gMCwgUiA9PiAwLCBwID0+IDAsIGsgPT4gMSwgciA9PiAxLCBEID0+IDEsIGogPT4gMSwgSSA9PiAxLCBXID0+IDEgfSBpZiAoICR0eXBlIGVxICJ1cGRhdGUiICk7Ci0gICAgICAgICRvcHQgPSB7IGwgPT4gMCwgUiA9PiAwLCBrID0+IDEsIEQgPT4gMSwgRCA9PiAxLCByID0+IDIgfSBpZiAoICR0eXBlIGVxICJkaWZmIiApOworICAgICAgICAkb3B0ID0geyBsID0+IDAsIFIgPT4gMCwgayA9PiAxLCBEID0+IDEsIEQgPT4gMSwgciA9PiAyLCBOID0+IDAgfSBpZiAoICR0eXBlIGVxICJkaWZmIiApOwogICAgICAgICAkb3B0ID0geyBjID0+IDAsIFIgPT4gMCwgbCA9PiAwLCBmID0+IDAsIEYgPT4gMSwgbSA9PiAxLCByID0+IDEgfSBpZiAoICR0eXBlIGVxICJjaSIgKTsKICAgICAgICAgJG9wdCA9IHsgayA9PiAxLCBtID0+IDEgfSBpZiAoICR0eXBlIGVxICJhZGQiICk7CiAgICAgICAgICRvcHQgPSB7IGYgPT4gMCwgbCA9PiAwLCBSID0+IDAgfSBpZiAoICR0eXBlIGVxICJyZW1vdmUiICk7CkBAIC0yMTY0LDYyICsyNDkyLDMzNSBAQAogICAgIH0KIH0KIAotIyBUaGlzIG1ldGhvZCB1c2VzICRzdGF0ZS0+e2RpcmVjdG9yeX0gdG8gcG9wdWxhdGUgJHN0YXRlLT57YXJnc30gd2l0aCBhIGxpc3Qgb2YgZmlsZW5hbWVzCisjIFVzZWQgYnkgYXJnc2Zyb21kaXIKK3N1YiBleHBhbmRBcmcKK3sKKyAgICBteSAoJHVwZGF0ZXIsJG91dE5hbWVNYXAsJG91dERpck1hcCwkcGF0aCwkaXNEaXIpID0gQF87CisKKyAgICBteSAkZnVsbFBhdGggPSBmaWxlY2xlYW51cCgkcGF0aCk7CisKKyAgICAgICMgSXMgaXQgYSBkaXJlY3Rvcnk/CisgICAgaWYoIGRlZmluZWQoJHN0YXRlLT57ZGlyTWFwfXskZnVsbFBhdGh9KSB8fAorICAgICAgICBkZWZpbmVkKCRzdGF0ZS0+e2Rpck1hcH17IiRmdWxsUGF0aC8ifSkgKQorICAgIHsKKyAgICAgICAgICAjIEl0IGlzIGEgZGlyZWN0b3J5IGluIHRoZSB1c2VyJ3Mgc2FuZGJveC4KKyAgICAgICAgJGlzRGlyPTE7CisKKyAgICAgICAgaWYoZGVmaW5lZCgkc3RhdGUtPntlbnRyaWVzfXskZnVsbFBhdGh9KSkKKyAgICAgICAgeworICAgICAgICAgICAgJGxvZy0+ZmF0YWwoIkluY29uc2lzdGVudCBmaWxlL2RpciB0eXBlIik7CisgICAgICAgICAgICBkaWUgIkluY29uc2lzdGVudCBmaWxlL2RpciB0eXBlIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNpZihkZWZpbmVkKCRzdGF0ZS0+e2VudHJpZXN9eyRmdWxsUGF0aH0pKQorICAgIHsKKyAgICAgICAgICAjIEl0IGlzIGEgZmlsZSBpbiB0aGUgdXNlcidzIHNhbmRib3guCisgICAgICAgICRpc0Rpcj0wOworICAgIH0KKyAgICBteSgkcmV2RGlyTWFwLCRvdGhlclJldkRpck1hcCk7CisgICAgaWYoIWRlZmluZWQoJGlzRGlyKSB8fCAkaXNEaXIpCisgICAgeworICAgICAgICAgICMgUmVzb2x2ZSB2ZXJzaW9uIHRyZWUgZm9yIHN0aWNreSB0YWc6CisgICAgICAgICAgIyAoZm9yIG5vdyB3ZSBvbmx5IHdhbnQgbGlzdCBvZiBmaWxlcyBmb3IgdGhlIHZlcnNpb24sIG5vdAorICAgICAgICAgICMgcGFydGljdWxhciB2ZXJzaW9ucyBvZiB0aG9zZSBmaWxlczogYXNzdW1lIGl0IGlzIGEgZGlyZWN0b3J5CisgICAgICAgICAgIyBmb3IgdGhlIG1vbWVudDsgaWdub3JlIEVudHJ5J3Mgc3RpY2sgdGFnKQorCisgICAgICAgICAgIyBPcmRlciBvZiBwcmVjZWRlbmNlIG9mIHN0aWNreSB0YWdzOgorICAgICAgICAgICMgICAgLUEgICAgICAgW2hlYWRdCisgICAgICAgICAgIyAgICAtciAvdGFnLworICAgICAgICAgICMgICAgW2ZpbGUgZW50cnkgc3RpY2t5IHRhZywgYnV0IHRoYXQgaXMgb25seSByZWxldmFudCB0byBmaWxlc10KKyAgICAgICAgICAjICAgIFt0aGUgdGFnIHNwZWNpZmllZCBpbiBkaXIgcmVxX1N0aWNreV0KKyAgICAgICAgICAjICAgIFt0aGUgdGFnIHNwZWNpZmllZCBpbiBhIHBhcmVudCBkaXIgcmVxX1N0aWNreV0KKyAgICAgICAgICAjICAgIFtoZWFkXQorICAgICAgICAgICMgQWxzbywgLXIgbWF5IGFwcGVhciB0d2ljZSAoZm9yIGRpZmYpLgorICAgICAgICAgICMKKyAgICAgICAgICAjIEZVVFVSRTogV2hlbi9pZiAtaiAobWVyZ2VzKSBhcmUgc3VwcG9ydGVkLCB3ZSBhbHNvCisgICAgICAgICAgIyAgbmVlZCB0byBhZGQgcmVsZXZhbnQgZmlsZXMgZnJvbSBvbmUgb3IgdHdvCisgICAgICAgICAgIyAgdmVyc2lvbnMgc3BlY2lmaWVkIHdpdGggLWouCisKKyAgICAgICAgaWYoZXhpc3RzKCRzdGF0ZS0+e29wdH17QX0pKQorICAgICAgICB7CisgICAgICAgICAgICAkcmV2RGlyTWFwPSR1cGRhdGVyLT5nZXRSZXZpc2lvbkRpck1hcCgpOworICAgICAgICB9CisgICAgICAgIGVsc2lmKCBkZWZpbmVkKCRzdGF0ZS0+e29wdH17cn0pIGFuZAorICAgICAgICAgICAgICAgcmVmICRzdGF0ZS0+e29wdH17cn0gZXEgIkFSUkFZIiApCisgICAgICAgIHsKKyAgICAgICAgICAgICRyZXZEaXJNYXA9JHVwZGF0ZXItPmdldFJldmlzaW9uRGlyTWFwKCRzdGF0ZS0+e29wdH17cn1bMF0pOworICAgICAgICAgICAgJG90aGVyUmV2RGlyTWFwPSR1cGRhdGVyLT5nZXRSZXZpc2lvbkRpck1hcCgkc3RhdGUtPntvcHR9e3J9WzFdKTsKKyAgICAgICAgfQorICAgICAgICBlbHNpZihkZWZpbmVkKCRzdGF0ZS0+e29wdH17cn0pKQorICAgICAgICB7CisgICAgICAgICAgICAkcmV2RGlyTWFwPSR1cGRhdGVyLT5nZXRSZXZpc2lvbkRpck1hcCgkc3RhdGUtPntvcHR9e3J9KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG15KCRzdGlja3kpPWdldERpclN0aWNreUluZm8oJGZ1bGxQYXRoKTsKKyAgICAgICAgICAgICRyZXZEaXJNYXA9JHVwZGF0ZXItPmdldFJldmlzaW9uRGlyTWFwKCRzdGlja3ktPnt0YWd9KTsKKyAgICAgICAgfQorCisgICAgICAgICAgIyBJcyBpdCBhIGRpcmVjdG9yeT8KKyAgICAgICAgaWYoIGRlZmluZWQoJHJldkRpck1hcC0+eyRmdWxsUGF0aH0pIHx8CisgICAgICAgICAgICBkZWZpbmVkKCRvdGhlclJldkRpck1hcC0+eyRmdWxsUGF0aH0pICkKKyAgICAgICAgeworICAgICAgICAgICAgJGlzRGlyPTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAgICMgV2hhdCB0byBkbyB3aXRoIGl0PworICAgIGlmKCEkaXNEaXIpCisgICAgeworICAgICAgICAkb3V0TmFtZU1hcC0+eyRmdWxsUGF0aH09MTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgJG91dERpck1hcC0+eyRmdWxsUGF0aH09MTsKKworICAgICAgICBpZihkZWZpbmVkKCRyZXZEaXJNYXAtPnskZnVsbFBhdGh9KSkKKyAgICAgICAgeworICAgICAgICAgICAgYWRkRGlyTWFwRmlsZXMoJHVwZGF0ZXIsJG91dE5hbWVNYXAsJG91dERpck1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXZEaXJNYXAtPnskZnVsbFBhdGh9KTsKKyAgICAgICAgfQorICAgICAgICBpZiggZGVmaW5lZCgkb3RoZXJSZXZEaXJNYXApICYmCisgICAgICAgICAgICBkZWZpbmVkKCRvdGhlclJldkRpck1hcC0+eyRmdWxsUGF0aH0pICkKKyAgICAgICAgeworICAgICAgICAgICAgYWRkRGlyTWFwRmlsZXMoJHVwZGF0ZXIsJG91dE5hbWVNYXAsJG91dERpck1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdGhlclJldkRpck1hcC0+eyRmdWxsUGF0aH0pOworICAgICAgICB9CisgICAgfQorfQorCisjIFVzZWQgYnkgYXJnc2Zyb21kaXIKKyMgQWRkIGVudHJpZXMgZnJvbSBkaXJNYXAgdG8gb3V0TmFtZU1hcC4gIEFsc28gcmVjdXJzZSBpbnRvIGVudHJpZXMKKyMgdGhhdCBhcmUgc3ViZGlyZWN0b3JpZXMuCitzdWIgYWRkRGlyTWFwRmlsZXMKK3sKKyAgICBteSgkdXBkYXRlciwkb3V0TmFtZU1hcCwkb3V0RGlyTWFwLCRkaXJNYXApPUBfOworCisgICAgbXkoJGZ1bGxOYW1lKTsKKyAgICBmb3JlYWNoICRmdWxsTmFtZSAoa2V5cyglJGRpck1hcCkpCisgICAgeworICAgICAgICBteSAkY2xlYW5OYW1lPSRmdWxsTmFtZTsKKyAgICAgICAgaWYoZGVmaW5lZCgkc3RhdGUtPntwcmVwZW5kZGlyfSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKCEoJGNsZWFuTmFtZT1+cy9eXFEkc3RhdGUtPntwcmVwZW5kZGlyfVxFLy8pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICRsb2ctPmZhdGFsKCJpbnRlcm5hbCBlcnJvciBzdHJpcHBpbmcgcHJlcGVuZGRpciIpOworICAgICAgICAgICAgICAgIGRpZSAiaW50ZXJuYWwgZXJyb3Igc3RyaXBwaW5nIHByZXBlbmRkaXIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYoJGRpck1hcC0+eyRmdWxsTmFtZX0gZXEgIkYiKQorICAgICAgICB7CisgICAgICAgICAgICAkb3V0TmFtZU1hcC0+eyRjbGVhbk5hbWV9PTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYoJGRpck1hcC0+eyRmdWxsTmFtZX0gZXEgIkQiKQorICAgICAgICB7CisgICAgICAgICAgICBpZighJHN0YXRlLT57b3B0fXtsfSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBleHBhbmRBcmcoJHVwZGF0ZXIsJG91dE5hbWVNYXAsJG91dERpck1hcCwkY2xlYW5OYW1lLDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgJGxvZy0+ZmF0YWwoImludGVybmFsIGVycm9yIGluIGFkZERpck1hcEZpbGVzIik7CisgICAgICAgICAgICBkaWUgImludGVybmFsIGVycm9yIGluIGFkZERpck1hcEZpbGVzIjsKKyAgICAgICAgfQorICAgIH0KK30KKworIyBUaGlzIG1ldGhvZCByZXBsYWNlcyAkc3RhdGUtPnthcmdzfSB3aXRoIGEgZGlyZWN0b3J5LWV4cGFuZGVkCisjIGxpc3Qgb2YgYWxsIHJlbGV2YW50IGZpbGVuYW1lcyAocmVjdXJzaXZlbHkgdW5sZXNzIC1kKSwgYmFzZWQKKyMgb24gJHN0YXRlLT57ZW50cmllc30sIGFuZCB0aGUgImN1cnJlbnQiIGxpc3Qgb2YgZmlsZXMgaW4KKyMgZWFjaCBkaXJlY3RvcnkuICAiQ3VycmVudCIgZmlsZXMgYXMgZGV0ZXJtaW5lZCBieQorIyBlaXRoZXIgdGhlIHJlcXVlc3RlZCAoLXIvLUEpIG9yICJyZXFfU3RpY2t5IiB2ZXJzaW9uIG9mCisjIHRoYXQgZGlyZWN0b3J5LgorIyAgICBCb3RoIHRoZSBpbnB1dCBhcmdzIGFuZCB0aGUgbmV3IG91dHB1dCBhcmdzIGFyZSByZWxhdGl2ZQorIyB0byB0aGUgY3ZzLWNsaWVudCdzIENXRCwgYWx0aG91Z2ggc29tZSBvZiB0aGUgaW50ZXJuYWwKKyMgY29tcHV0YXRpb25zIGFyZSByZWxhdGl2ZSB0byB0aGUgdG9wIG9mIHRoZSBwcm9qZWN0Lgogc3ViIGFyZ3Nmcm9tZGlyCiB7CiAgICAgbXkgJHVwZGF0ZXIgPSBzaGlmdDsKIAotICAgICRzdGF0ZS0+e2FyZ3N9ID0gW10gaWYgKCBzY2FsYXIoQHskc3RhdGUtPnthcmdzfX0pID09IDEgYW5kICRzdGF0ZS0+e2FyZ3N9WzBdIGVxICIuIiApOworICAgICMgTm90ZXMgYWJvdXQgcmVxdWlyZW1lbnRzIGZvciBzcGVjaWZpYyBjYWxsZXJzOgorICAgICMgICB1cGRhdGUgIyAic3RhbmRhcmQiIGNhc2UgKGVudHJpZXM7IGEgc2luZ2xlIC1yLy1BL2RlZmF1bHQ7IC1sKQorICAgICMgICAgICAgICAgIyBTcGVjaWFsIGNhc2U6IC1kIGZvciBjcmVhdGUgbWlzc2luZyBkaXJlY3Rvcmllcy4KKyAgICAjICAgZGlmZiAjIDAgb3IgMSAtcidzOiAic3RhbmRhcmQiIGNhc2UuCisgICAgIyAgICAgICAgIyAyIC1yJ3M6IFdlIGNvdWxkIGlnbm9yZSBlbnRyaWVzIChqdXN0IHVzZSB0aGUgdHdvIC1yJ3MpLAorICAgICMgICAgICAgICMgYnV0IGl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlci4KKyAgICAjICAgYW5ub3RhdGUgIyAic3RhbmRhcmQiIGNhc2UKKyAgICAjICAgbG9nICMgUHVudGluZzogbG9nIC1yIGhhcyBhIG1vcmUgY29tcGxleCBub24tInN0YW5kYXJkIgorICAgICMgICAgICAgIyBtZWFuaW5nLCBhbmQgd2UgZG9uJ3QgY3VycmVudGx5IHRyeSB0byBzdXBwb3J0IGxvZydpbmcKKyAgICAjICAgICAgICMgYnJhbmNoZXMgYXQgYWxsIChuZWVkIGEgbG90IG9mIHdvcmsgdG8KKyAgICAjICAgICAgICMgc3VwcG9ydCBDVlMtY29uc2lzdGVudCBicmFuY2ggcmVsYXRpdmUgdmVyc2lvbgorICAgICMgICAgICAgIyBudW1iZXJpbmcpLgorI0hFUkU6IEJ1dCB3ZSBzdGlsbCB3YW50IHRvIGV4cGFuZCBkaXJlY3Rvcmllcy4gIE1heWJlIHdlIHNob3VsZAorIyAgZXNzZW50aWFsbHkgZm9yY2UgIi1BIi4KKyAgICAjICAgc3RhdHVzICMgInN0YW5kYXJkIiwgZXhjZXB0IHRoYXQgLXIvLUEvZGVmYXVsdCBhcmUgbm90IHBvc3NpYmxlLgorICAgICMgICAgICAgICAgIyBNb3N0bHkgb25seSB1c2VkIHRvIGV4cGFuZCBlbnRyaWVzIG9ubHkpCisgICAgIworICAgICMgRG9uJ3QgdXNlIGFyZ3Nmcm9tZGlyIGF0IGFsbDoKKyAgICAjICAgYWRkICMgRXhwbGljaXQgYXJndW1lbnRzIHJlcXVpcmVkLiAgRGlyZWN0b3J5IGFyZ3MgaW1wbHkgYWRkCisgICAgIyAgICAgICAjIHRoZSBkaXJlY3RvcnkgaXRzZWxmLCBub3QgdGhlIGZpbGVzIGluIGl0LgorICAgICMgICBjbyAgIyBPYnRhaW4gbGlzdCBkaXJlY3RseS4KKyAgICAjICAgcmVtb3ZlICMgSEVSRTogVEVTVDogTUFZQkUgY2xpZW50IGRvZXMgdGhlIHJlY3Vyc2lvbiBmb3IgdXMsCisgICAgIyAgICAgICAgICAjIHNpbmNlIGl0IG9ubHkgbWFrZXMgc2Vuc2UgdG8gcmVtb3ZlIHN0dWZmIGFscmVhZHkgaW4KKyAgICAjICAgICAgICAgICMgdGhlIHNhbmRvYng/CisgICAgIyAgIGNpICMgSEVSRTogU2ltaWxhciB0byByZW1vdmUuLi4KKyAgICAjICAgICAgIyBEb24ndCB0cnkgdG8gaW1wbGVtZW50IHRoZSBjb25mdXNpbmcvd2VpcmQKKyAgICAjICAgICAgIyBjaSAtciBidWcgZXIuLiJmZWF0dXJlIi4KIAotICAgIHJldHVybiBpZiAoIHNjYWxhciAoIEB7JHN0YXRlLT57YXJnc319ICkgPiAxICk7Ci0KLSAgICBteSBAZ2V0aGVhZCA9IEB7JHVwZGF0ZXItPmdldGhlYWR9OwotCi0gICAgIyBwdXNoIGFkZGVkIGZpbGVzCi0gICAgZm9yZWFjaCBteSAkZmlsZSAoa2V5cyAleyRzdGF0ZS0+e2VudHJpZXN9fSkgewotCWlmICggZXhpc3RzICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlfXtyZXZpc2lvbn0gJiYKLQkJJHN0YXRlLT57ZW50cmllc317JGZpbGV9e3JldmlzaW9ufSBlcSAnMCcgKQotCXsKLQkgICAgcHVzaCBAZ2V0aGVhZCwgeyBuYW1lID0+ICRmaWxlLCBmaWxlaGFzaCA9PiAnYWRkZWQnIH07Ci0JfQotICAgIH0KLQotICAgIGlmICggc2NhbGFyKEB7JHN0YXRlLT57YXJnc319KSA9PSAxICkKKyAgICBpZihzY2FsYXIoQHskc3RhdGUtPnthcmdzfX0pPT0wKQogICAgIHsKLSAgICAgICAgbXkgJGFyZyA9ICRzdGF0ZS0+e2FyZ3N9WzBdOwotICAgICAgICAkYXJnIC49ICRzdGF0ZS0+e3ByZXBlbmRkaXJ9IGlmICggZGVmaW5lZCAoICRzdGF0ZS0+e3ByZXBlbmRkaXJ9ICkgKTsKKyAgICAgICAgJHN0YXRlLT57YXJnc30gPSBbICIuIiBdOworICAgIH0KKyAgICBteSAlYWxsQXJnczsKKyAgICBteSAlYWxsRGlyczsKKyAgICBmb3IgbXkgJGZpbGUgKEB7JHN0YXRlLT57YXJnc319KQorICAgIHsKKyAgICAgICAgZXhwYW5kQXJnKCR1cGRhdGVyLFwlYWxsQXJncyxcJWFsbERpcnMsJGZpbGUpOworICAgIH0KIAotICAgICAgICAkbG9nLT5pbmZvKCJPbmx5IG9uZSBhcmcgc3BlY2lmaWVkLCBjaGVja2luZyBmb3IgZGlyZWN0b3J5IGV4cGFuc2lvbiBvbiAnJGFyZyciKTsKKyAgICAjIEluY2x1ZGUgYW55IGVudHJpZXMgZnJvbSBzYW5kYm94LiAgR2VuZXJhbGx5IGNsaWVudCB3b24ndAorICAgICMgc2VuZCBlbnRyaWVzIHRoYXQgc2hvdWxkbid0IGJlIHVzZWQuCisgICAgZm9yZWFjaCBteSAkZmlsZSAoa2V5cyAleyRzdGF0ZS0+e2VudHJpZXN9fSkKKyAgICB7CisgICAgICAgICRhbGxBcmdze3JlbW92ZV9wcmVwZW5kZGlyKCRmaWxlKX0gPSAxOworICAgIH0KIAotICAgICAgICBmb3JlYWNoIG15ICRmaWxlICggQGdldGhlYWQgKQorICAgICRzdGF0ZS0+e2RpckFyZ3N9ID0gXCVhbGxEaXJzOworICAgICRzdGF0ZS0+e2FyZ3N9ID0gWworICAgICAgICBzb3J0IHsKKyAgICAgICAgICAgICAgICAjIFNvcnQgcHJpb3JpdHk6IGJ5IGRpcmVjdG9yeSBkZXB0aCwgdGhlbiBhY3R1YWwgZmlsZSBuYW1lOgorICAgICAgICAgICAgbXkgQHBpZWNlc0E9c3BsaXQoJy8nLCRhKTsKKyAgICAgICAgICAgIG15IEBwaWVjZXNCPXNwbGl0KCcvJywkYik7CisKKyAgICAgICAgICAgIG15ICRjb3VudD1zY2FsYXIoQHBpZWNlc0EpOworICAgICAgICAgICAgbXkgJHRtcD1zY2FsYXIoQHBpZWNlc0IpOworICAgICAgICAgICAgcmV0dXJuICRjb3VudDw9PiR0bXAgaWYoJGNvdW50IT0kdG1wKTsKKworICAgICAgICAgICAgZm9yKCR0bXA9MDskdG1wPCRjb3VudDskdG1wKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYoJHBpZWNlc0FbJHRtcF0gbmUgJHBpZWNlc0JbJHRtcF0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHBpZWNlc0FbJHRtcF0gY21wICRwaWVjZXNCWyR0bXBdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0ga2V5cyglYWxsQXJncykgXTsKK30KKworIyMgbG9vayB1cCBkaXJlY3Rvcnkgc3RpY2t5IHRhZywgb2YgZWl0aGVyIGZ1bGxQYXRoIG9yIGEgcGFyZW50Ogorc3ViIGdldERpclN0aWNreUluZm8KK3sKKyAgICBteSgkZnVsbFBhdGgpPUBfOworCisgICAgJGZ1bGxQYXRoPX5zJS8rJCUlOworICAgIHdoaWxlKCRmdWxsUGF0aCBuZSAiIiAmJiAhZGVmaW5lZCgkc3RhdGUtPntkaXJNYXB9eyIkZnVsbFBhdGgvIn0pKQorICAgIHsKKyAgICAgICAgJGZ1bGxQYXRoPX5zJS8/W14vXSokJSU7CisgICAgfQorCisgICAgaWYoICFkZWZpbmVkKCRzdGF0ZS0+e2Rpck1hcH17IiRmdWxsUGF0aC8ifSkgJiYKKyAgICAgICAgKCAkZnVsbFBhdGggZXEgIiIgfHwKKyAgICAgICAgICAkZnVsbFBhdGggZXEgIi4iICkgKQorICAgIHsKKyAgICAgICAgcmV0dXJuICRzdGF0ZS0+e2Rpck1hcH17IiJ9e3N0aWNreUluZm99OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gJHN0YXRlLT57ZGlyTWFwfXsiJGZ1bGxQYXRoLyJ9e3N0aWNreUluZm99OworICAgIH0KK30KKworIyBSZXNvbHZlIHByZWNlZGVuY2Ugb2YgdmFyaW91cyB3YXlzIG9mIHNwZWNpZnlpbmcgd2hpY2ggdmVyc2lvbiBvZgorIyBhIGZpbGUgeW91IHdhbnQuICBSZXR1cm5zIHVuZGVmIChmb3IgZGVmYXVsdCBoZWFkKSwgb3IgYSByZWYgdG8gYSBoYXNoCisjIHRoYXQgY29udGFpbnMgInRhZyIgYW5kL29yICJkYXRlIiBrZXlzLgorc3ViIHJlc29sdmVTdGlja3lJbmZvCit7CisgICAgbXkoJGZpbGVuYW1lLCRzdGlja3lUYWcsJHN0aWNreURhdGUsJHJlc2V0KSA9IEBfOworCisgICAgIyBPcmRlciBvZiBwcmVjZWRlbmNlIG9mIHN0aWNreSB0YWdzOgorICAgICMgICAgLUEgICAgICAgW2hlYWRdCisgICAgIyAgICAtciAvdGFnLworICAgICMgICAgW2ZpbGUgZW50cnkgc3RpY2t5IHRhZ10KKyAgICAjICAgIFt0aGUgdGFnIHNwZWNpZmllZCBpbiBkaXIgcmVxX1N0aWNreV0KKyAgICAjICAgIFt0aGUgdGFnIHNwZWNpZmllZCBpbiBhIHBhcmVudCBkaXIgcmVxX1N0aWNreV0KKyAgICAjICAgIFtoZWFkXQorCisgICAgbXkgJHJlc3VsdDsKKyAgICBpZigkcmVzZXQpCisgICAgeworICAgICAgICAjICRyZXN1bHQ9dW5kZWY7CisgICAgfQorICAgIGVsc2lmKCBkZWZpbmVkKCRzdGlja3lUYWcpICYmICRzdGlja3lUYWcgbmUgIiIgKQorICAgICAgICAgICAjIHx8ICggZGVmaW5lZCgkc3RpY2t5RGF0ZSkgJiYgJHN0aWNreURhdGUgbmUgIiIgKSAgICMgVE9ETworICAgIHsKKyAgICAgICAgJHJlc3VsdD17ICd0YWcnID0+IChkZWZpbmVkKCRzdGlja3lUYWcpPyRzdGlja3lUYWc6dW5kZWYpIH07CisKKyAgICAgICAgIyBUT0RPOiBDb252ZXJ0IC1EIHZhbHVlIGludG8gdGhlIGZvcm0gMjAxMS4wNC4xMC4wNC40Ni41NywKKyAgICAgICAgIyAgIHNpbWlsYXIgdG8gYW4gZW50cnkgbGluZSdzIHN0aWNreSBkYXRlLCB3aXRob3V0IHRoZSBEIHByZWZpeC4KKyAgICAgICAgIyAgIEl0IHNvbWV0aW1lcyAoYWx3YXlzPykgYXJyaXZlcyBhcyBzb21ldGhpbmcgbW9yZSBsaWtlCisgICAgICAgICMgICAnMTAgQXByIDIwMTEgMDQ6NDY6NTcgLTAwMDAnLi4uCisgICAgICAgICMgJHJlc3VsdD17ICdkYXRlJyA9PiAoZGVmaW5lZCgkc3RpY2t5RGF0ZSk/JHN0aWNreURhdGU6dW5kZWYpIH07CisgICAgfQorICAgIGVsc2lmKCBkZWZpbmVkKCRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX0pICYmCisgICAgICAgICAgIGRlZmluZWQoJHN0YXRlLT57ZW50cmllc317JGZpbGVuYW1lfXt0YWdfb3JfZGF0ZX0pICYmCisgICAgICAgICAgICRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17dGFnX29yX2RhdGV9IG5lICIiICkKKyAgICB7CisgICAgICAgIG15KCR0YWdPckRhdGUpPSRzdGF0ZS0+e2VudHJpZXN9eyRmaWxlbmFtZX17dGFnX29yX2RhdGV9OworICAgICAgICBpZigkdGFnT3JEYXRlPX4vXlQoW14gXSspXHMqJC8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIG5leHQgaWYgKCAkZmlsZS0+e2ZpbGVoYXNofSBlcSAiZGVsZXRlZCIgYW5kIG5vdCBkZWZpbmVkICggJHN0YXRlLT57ZW50cmllc317JGZpbGUtPntuYW1lfX0gKSApOwotICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCAkZmlsZS0+e25hbWV9ID1+IC9eJGFyZ1wvLyBvciAkZmlsZS0+e25hbWV9IGVxICRhcmcgICk7Ci0gICAgICAgICAgICBwdXNoIEB7JHN0YXRlLT57YXJnc319LCAkZmlsZS0+e25hbWV9OworICAgICAgICAgICAgJHJlc3VsdCA9IHsgJ3RhZycgPT4gJDEgfTsKICAgICAgICAgfQotCi0gICAgICAgIHNoaWZ0IEB7JHN0YXRlLT57YXJnc319IGlmICggc2NhbGFyKEB7JHN0YXRlLT57YXJnc319KSA+IDEgKTsKLSAgICB9IGVsc2UgewotICAgICAgICAkbG9nLT5pbmZvKCJPbmx5IG9uZSBhcmcgc3BlY2lmaWVkLCBwb3B1bGF0aW5nIGZpbGUgbGlzdCBhdXRvbWF0aWNhbGx5Iik7Ci0KLSAgICAgICAgJHN0YXRlLT57YXJnc30gPSBbXTsKLQotICAgICAgICBmb3JlYWNoIG15ICRmaWxlICggQGdldGhlYWQgKQorICAgICAgICBlbHNpZigkdGFnT3JEYXRlPX4vXkQoWzAtOS5dKylccyokLykKICAgICAgICAgewotICAgICAgICAgICAgbmV4dCBpZiAoICRmaWxlLT57ZmlsZWhhc2h9IGVxICJkZWxldGVkIiBhbmQgbm90IGRlZmluZWQgKCAkc3RhdGUtPntlbnRyaWVzfXskZmlsZS0+e25hbWV9fSApICk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAoICRmaWxlLT57bmFtZX0gPX4gcy9eJHN0YXRlLT57cHJlcGVuZGRpcn0vLyApOwotICAgICAgICAgICAgcHVzaCBAeyRzdGF0ZS0+e2FyZ3N9fSwgJGZpbGUtPntuYW1lfTsKKyAgICAgICAgICAgICRyZXN1bHQ9IHsgJ2RhdGUnID0+ICQxIH07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBkaWUgIlVua25vd24gdGFnX29yX2RhdGUgZm9ybWF0XG4iOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICRyZXN1bHQ9Z2V0RGlyU3RpY2t5SW5mbygkZmlsZW5hbWUpOworICAgIH0KKworICAgIHJldHVybiAkcmVzdWx0OworfQorCisjIENvbnZlcnQgYSBzdGlja3lJbmZvIChyZWYgdG8gYSBoYXNoKSBhcyByZXR1cm5lZCBieSByZXNvbHZlU3RpY2t5SW5mbyBpbnRvCisjIGEgZm9ybSBhcHByb3ByaWF0ZSBmb3IgdGhlIHN0aWNreSB0YWcgZmllbGQgb2YgYW4gRW50cmllcworIyBsaW5lIChmaWVsZCBpbmRleCA1LCAwLWJhc2VkKS4KK3N1YiBnZXRTdGlja3lUYWdPckRhdGUKK3sKKyAgICBteSgkc3RpY2t5SW5mbyk9QF87CisKKyAgICBteSAkcmVzdWx0OworICAgIGlmKGRlZmluZWQoJHN0aWNreUluZm8pICYmIGRlZmluZWQoJHN0aWNreUluZm8tPnt0YWd9KSkKKyAgICB7CisgICAgICAgICRyZXN1bHQ9IlQkc3RpY2t5SW5mby0+e3RhZ30iOworICAgIH0KKyAgICAjIFRPRE86IFdoZW4vaWYgd2UgYWN0dWFsbHkgcGljayB2ZXJzaW9ucyBieSB7ZGF0ZX0gcHJvcGVybHksCisgICAgIyAgIGFsc28gaGFuZGxlIGl0IGhlcmU6CisgICAgIyAgICJEJHN0aWNreUluZm8tPntkYXRlfSIgKGV4YW1wbGU6ICJEMjAxMS4wNC4xMy4yMC4zNy4wNyIpLgorICAgIGVsc2UKKyAgICB7CisgICAgICAgICRyZXN1bHQ9IiI7CisgICAgfQorCisgICAgcmV0dXJuICRyZXN1bHQ7CiB9CiAKICMgVGhpcyBtZXRob2QgY2xlYW5zIHVwIHRoZSAkc3RhdGUgdmFyaWFibGUgYWZ0ZXIgYSBjb21tYW5kIHRoYXQgdXNlcyBhcmd1bWVudHMgaGFzIHJ1bgogc3ViIHN0YXRlY2xlYW51cAogewogICAgICRzdGF0ZS0+e2ZpbGVzfSA9IFtdOworICAgICRzdGF0ZS0+e2RpckFyZ3N9ID0ge307CiAgICAgJHN0YXRlLT57YXJnc30gPSBbXTsKICAgICAkc3RhdGUtPnthcmd1bWVudHN9ID0gW107CiAgICAgJHN0YXRlLT57ZW50cmllc30gPSB7fTsKKyAgICAkc3RhdGUtPntkaXJNYXB9ID0ge307CiB9CiAKICMgUmV0dXJuIHdvcmtpbmcgZGlyZWN0b3J5IENWUyByZXZpc2lvbiAiMS5YIiBvdXQKQEAgLTIzMDksNiArMjkxMCw5IEBACiAgICAgcmV0dXJuICggJGZpbGVwYXJ0LCAkZGlycGFydCApOwogfQogCisjIENsZWFudXAgdmFyaW91cyBqdW5rIGluIGZpbGVuYW1lICh0cnkgdG8gY2Fub25pY2FsaXplIGl0KSwgYW5kCisjIGFkZCBwcmVwZW5kZGlyIHRvIGFjY29tbW9kYXRlIHJ1bm5pbmcgQ1ZTIGNsaWVudCBmcm9tIGEKKyMgc3ViZGlyZWN0b3J5IChzbyB0aGUgb3V0cHV0IGlzIHJlbGF0aXZlIHRvIHRvcCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QpLgogc3ViIGZpbGVjbGVhbnVwCiB7CiAgICAgbXkgJGZpbGVuYW1lID0gc2hpZnQ7CkBAIC0yMzIwLDExICsyOTI0LDM2IEBACiAgICAgICAgIHJldHVybiB1bmRlZjsKICAgICB9CiAKKyAgICBpZigkZmlsZW5hbWUgZXEgIi4iKQorICAgIHsKKyAgICAgICAgJGZpbGVuYW1lPSIiOworICAgIH0KICAgICAkZmlsZW5hbWUgPX4gcy9eXC5cLy8vZzsKKyAgICAkZmlsZW5hbWUgPX4gcyUvKyUvJWc7CiAgICAgJGZpbGVuYW1lID0gJHN0YXRlLT57cHJlcGVuZGRpcn0gLiAkZmlsZW5hbWU7CisgICAgJGZpbGVuYW1lID1+IHMlLyQlJTsKICAgICByZXR1cm4gJGZpbGVuYW1lOwogfQogCisjIFJlbW92ZSBwcmVwZW5kZGlyIGZyb20gdGhlIHBhdGgsIHNvIHRoYXQgaXMgaXMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeQorIyB0aGUgQ1ZTIGNsaWVudCB3YXMgc3RhcnRlZCBmcm9tLCByYXRoZXIgdGhhbiB0aGUgdG9wIG9mIHRoZSBwcm9qZWN0LgorIyBFc3NlbnRpYWxseSB0aGUgaW52ZXJzZSBvZiBmaWxlY2xlYW51cCgpLgorc3ViIHJlbW92ZV9wcmVwZW5kZGlyCit7CisgICAgbXkoJHBhdGgpID0gQF87CisgICAgaWYoZGVmaW5lZCgkc3RhdGUtPntwcmVwZW5kZGlyfSkgJiYgJHN0YXRlLT57cHJlcGVuZGRpcn0gbmUgIiIpCisgICAgeworICAgICAgICBteSgkcHJlKT0kc3RhdGUtPntwcmVwZW5kZGlyfTsKKyAgICAgICAgJHByZT1+cyUvJCUlOworICAgICAgICBpZighKCRwYXRoPX5zJV5cUSRwcmVcRS8/JSUpKQorICAgICAgICB7CisgICAgICAgICAgICAkbG9nLT5mYXRhbCgiaW50ZXJuYWwgZXJyb3IgbWlzc2luZyBwcmVwZW5kZGlyIik7CisgICAgICAgICAgICBkaWUoImludGVybmFsIGVycm9yIG1pc3NpbmcgcHJlcGVuZGRpciIpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAkcGF0aDsKK30KKwogc3ViIHZhbGlkYXRlR2l0RGlyCiB7CiAgICAgaWYoICFkZWZpbmVkKCRzdGF0ZS0+e0NWU1JPT1R9KSApCkBAIC0yNzM4LDYgKzMzNjcsNDUgQEAKICAgICByZXR1cm4gJHJldDsKIH0KIAorIyBUZXN0IGlmIHRoZSAoZGVlcCkgdmFsdWVzIG9mIHR3byByZWZlcmVuY2VzIHRvIGEgaGFzaCBhcmUgdGhlIHNhbWUuCitzdWIgcmVmSGFzaEVxdWFsCit7CisgICAgbXkoJHYxLCR2MikgPSBAXzsKKworICAgIG15ICRvdXQ7CisgICAgaWYoIWRlZmluZWQoJHYxKSkKKyAgICB7CisgICAgICAgIGlmKCFkZWZpbmVkKCR2MikpCisgICAgICAgIHsKKyAgICAgICAgICAgICRvdXQ9MTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNpZiggIWRlZmluZWQoJHYyKSB8fAorICAgICAgICAgICBzY2FsYXIoa2V5cygleyR2MX0pKSAhPSBzY2FsYXIoa2V5cygleyR2Mn0pKSApCisgICAgeworICAgICAgICAjICRvdXQ9dW5kZWY7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICRvdXQ9MTsKKworICAgICAgICBteSAka2V5OworICAgICAgICBmb3JlYWNoICRrZXkgKGtleXMoJXskdjF9KSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYoICFleGlzdHMoJHYyLT57JGtleX0pIHx8CisgICAgICAgICAgICAgICAgZGVmaW5lZCgkdjEtPnska2V5fSkgbmUgZGVmaW5lZCgkdjItPnska2V5fSkgfHwKKyAgICAgICAgICAgICAgICAoIGRlZmluZWQoJHYxLT57JGtleX0pICYmCisgICAgICAgICAgICAgICAgICAkdjEtPnska2V5fSBuZSAkdjItPnska2V5fSApICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICRvdXQ9dW5kZWY7CisgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuICRvdXQ7Cit9CisKIAogcGFja2FnZSBHSVRDVlM6OmxvZzsKIApAQCAtMjk1OCw2ICszNjI2LDkgQEAKIAogICAgIGRpZSAiR2l0IHJlcG8gJyRzZWxmLT57Z2l0X3BhdGh9JyBkb2Vzbid0IGV4aXN0IiB1bmxlc3MgKCAtZCAkc2VsZi0+e2dpdF9wYXRofSApOwogCisgICAgIyBTdG9yZXMgZnVsbCBzaGExJ3MgZm9yIHZhcmlvdXMgYnJhbmNoL3RhZyBuYW1lcywgYWJicmV2aWF0aW9ucywgZXRjOgorICAgICRzZWxmLT57Y29tbWl0UmVmQ2FjaGV9ID0ge307CisKICAgICAkc2VsZi0+e2RiZHJpdmVyfSA9ICRjZmctPntnaXRjdnN9eyRzdGF0ZS0+e21ldGhvZH19e2RiZHJpdmVyfSB8fAogICAgICAgICAkY2ZnLT57Z2l0Y3ZzfXtkYmRyaXZlcn0gfHwgIlNRTGl0ZSI7CiAgICAgJHNlbGYtPntkYm5hbWV9ID0gJGNmZy0+e2dpdGN2c317JHN0YXRlLT57bWV0aG9kfX17ZGJuYW1lfSB8fApAQCAtMzE0MCw2ICszODExLDggQEAKICAgICBteSAkbGFzdGNvbW1pdCA9ICRzZWxmLT5fZ2V0X3Byb3AoImxhc3RfY29tbWl0Iik7CiAKICAgICBpZiAoZGVmaW5lZCAkbGFzdGNvbW1pdCAmJiAkbGFzdGNvbW1pdCBlcSAkY29tbWl0c2hhMSkgeyAjIHVwLXRvLWRhdGUKKyAgICAgICAgICMgaW52YWxpZGF0ZSB0aGUgZ2V0aGVhZCBjYWNoZQorICAgICAgICAgJHNlbGYtPmNsZWFyQ29tbWl0UmVmQ2FjaGVzKCk7CiAgICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKQEAgLTMxNTcsNDUgKzM4MzAsMTAgQEAKICAgICAgICAgcHVzaCBAZ2l0X2xvZ19wYXJhbXMsICRzZWxmLT57bW9kdWxlfTsKICAgICB9CiAgICAgIyBnaXQtcmV2LWxpc3QgaXMgdGhlIGJhY2tlbmQgLyBwbHVtYmluZyB2ZXJzaW9uIG9mIGdpdC1sb2cKLSAgICBvcGVuKEdJVExPRywgJy18JywgJ2dpdCcsICdyZXYtbGlzdCcsIEBnaXRfbG9nX3BhcmFtcykgb3IgZGllICJDYW5ub3QgY2FsbCBnaXQtcmV2LWxpc3Q6ICQhIjsKLQotICAgIG15IEBjb21taXRzOwotCi0gICAgbXkgJWNvbW1pdCA9ICgpOwotCi0gICAgd2hpbGUgKCA8R0lUTE9HPiApCi0gICAgewotICAgICAgICBjaG9tcDsKLSAgICAgICAgaWYgKG0vXmNvbW1pdFxzKyguKikkLykgewotICAgICAgICAgICAgIyBvbiBeY29tbWl0IGxpbmVzIHB1dCB0aGUganVzdCBzZWVuIGNvbW1pdCBpbiB0aGUgc3RhY2sKLSAgICAgICAgICAgICMgYW5kIHByaW1lIHRoaW5ncyBmb3IgdGhlIG5leHQgb25lCi0gICAgICAgICAgICBpZiAoa2V5cyAlY29tbWl0KSB7Ci0gICAgICAgICAgICAgICAgbXkgJWNvcHkgPSAlY29tbWl0OwotICAgICAgICAgICAgICAgIHVuc2hpZnQgQGNvbW1pdHMsIFwlY29weTsKLSAgICAgICAgICAgICAgICAlY29tbWl0ID0gKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBteSBAcGFyZW50cyA9IHNwbGl0KG0vXHMrLywgJDEpOwotICAgICAgICAgICAgJGNvbW1pdHtoYXNofSA9IHNoaWZ0IEBwYXJlbnRzOwotICAgICAgICAgICAgJGNvbW1pdHtwYXJlbnRzfSA9IFxAcGFyZW50czsKLSAgICAgICAgfSBlbHNpZiAobS9eKFx3Kz8pOlxzKyguKikkLyAmJiAhZXhpc3RzKCRjb21taXR7bWVzc2FnZX0pKSB7Ci0gICAgICAgICAgICAjIG9uIHJmYzgyMi1saWtlIGxpbmVzIHNlZW4gYmVmb3JlIHdlIHNlZSBhbnkgbWVzc2FnZSwKLSAgICAgICAgICAgICMgbG93ZXJjYXNlIHRoZSBlbnRyeSBhbmQgcHV0IGl0IGluIHRoZSBoYXNoIGFzIGtleS12YWx1ZQotICAgICAgICAgICAgJGNvbW1pdHtsYygkMSl9ID0gJDI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAjIG1lc3NhZ2UgbGluZXMgLSBza2lwIGluaXRpYWwgZW1wdHkgbGluZQotICAgICAgICAgICAgIyBhbmQgdHJpbSB3aGl0ZXNwYWNlCi0gICAgICAgICAgICBpZiAoIWV4aXN0cygkY29tbWl0e21lc3NhZ2V9KSAmJiBtL15ccyokLykgewotICAgICAgICAgICAgICAgICMgZGVmaW5lIGl0IHRvIG1hcmsgdGhlIGVuZCBvZiBoZWFkZXJzCi0gICAgICAgICAgICAgICAgJGNvbW1pdHttZXNzYWdlfSA9ICcnOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzL15ccysvLzsgcy9ccyskLy87ICMgdHJpbSB3cwotICAgICAgICAgICAgJGNvbW1pdHttZXNzYWdlfSAuPSAkXyAuICJcbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2xvc2UgR0lUTE9HOwotCi0gICAgdW5zaGlmdCBAY29tbWl0cywgXCVjb21taXQgaWYgKCBrZXlzICVjb21taXQgKTsKKyAgICBvcGVuKG15ICRnaXRMb2dQaXBlLCAnLXwnLCAnZ2l0JywgJ3Jldi1saXN0JywgQGdpdF9sb2dfcGFyYW1zKQorICAgICAgICAgICAgICAgIG9yIGRpZSAiQ2Fubm90IGNhbGwgZ2l0LXJldi1saXN0OiAkISI7CisgICAgbXkgQGNvbW1pdHM9cmVhZENvbW1pdHMoJGdpdExvZ1BpcGUpOworICAgIGNsb3NlICRnaXRMb2dQaXBlOwogCiAgICAgIyBOb3cgYWxsIHRoZSBjb21taXRzIGFyZSBpbiB0aGUgQGNvbW1pdHMgYnVja2V0CiAgICAgIyBvcmRlcmVkIGJ5IHRpbWUgREVTQy4gZm9yIGVhY2ggY29tbWl0IHRoYXQgbmVlZHMgcHJvY2Vzc2luZywKQEAgLTMyOTQsNyArMzkzMiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICAjIGNvbnZlcnQgdGhlIGRhdGUgdG8gQ1ZTLWhhcHB5IGZvcm1hdAotICAgICAgICAkY29tbWl0LT57ZGF0ZX0gPSAiJDIgJDEgJDQgJDMgJDUiIGlmICggJGNvbW1pdC0+e2RhdGV9ID1+IC9eXHcrXHMrKFx3KylccysoXGQrKVxzKyhcZCs6XGQrOlxkKylccysoXGQrKVxzKyhbKy1dXGQrKSQvICk7CisgICAgICAgIG15ICRjdnNEYXRlID0gY29udmVydFRvQ3ZzRGF0ZSgkY29tbWl0LT57ZGF0ZX0pOwogCiAgICAgICAgIGlmICggZGVmaW5lZCAoICRsYXN0cGlja2VkICkgKQogICAgICAgICB7CkBAIC0zMzAzLDcgKzM5NDEsNyBAQAogICAgICAgICAgICAgd2hpbGUgKCA8RklMRUxJU1Q+ICkKICAgICAgICAgICAgIHsKIAkJY2hvbXA7Ci0gICAgICAgICAgICAgICAgdW5sZXNzICggL146XGR7Nn1ccytcZHszfShcZClcZHsyfVxzK1thLXpBLVowLTldezQwfVxzKyhbYS16QS1aMC05XXs0MH0pXHMrKFx3KSQvbyApCisgICAgICAgICAgICAgICAgdW5sZXNzICggL146XGR7Nn1ccysoWzAtN117Nn0pXHMrW2EtZjAtOV17NDB9XHMrKFthLWYwLTldezQwfSlccysoXHcpJC9vICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGRpZSgiQ291bGRuJ3QgcHJvY2VzcyBnaXQtZGlmZi10cmVlIGxpbmUgOiAkXyIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTMzMTMsMTEgKzM5NTEsNyBAQAogCiAgICAgICAgICAgICAgICAgIyAkbG9nLT5kZWJ1ZygiRmlsZSBtb2RlPSRtb2RlLCBoYXNoPSRoYXNoLCBjaGFuZ2U9JGNoYW5nZSwgbmFtZT0kbmFtZSIpOwogCi0gICAgICAgICAgICAgICAgbXkgJGdpdF9wZXJtcyA9ICIiOwotICAgICAgICAgICAgICAgICRnaXRfcGVybXMgLj0gInIiIGlmICggJG1vZGUgJiA0ICk7Ci0gICAgICAgICAgICAgICAgJGdpdF9wZXJtcyAuPSAidyIgaWYgKCAkbW9kZSAmIDIgKTsKLSAgICAgICAgICAgICAgICAkZ2l0X3Blcm1zIC49ICJ4IiBpZiAoICRtb2RlICYgMSApOwotICAgICAgICAgICAgICAgICRnaXRfcGVybXMgPSAicnciIGlmICggJGdpdF9wZXJtcyBlcSAiIiApOworICAgICAgICAgICAgICAgIG15ICRkYk1vZGUgPSBjb252ZXJ0VG9EYk1vZGUoJG1vZGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKCAkY2hhbmdlIGVxICJEIiApCiAgICAgICAgICAgICAgICAgewpAQCAtMzMyNywxMSArMzk2MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPT4gJGhlYWQtPnskbmFtZX17cmV2aXNpb259ICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVoYXNoID0+ICJkZWxldGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdGhhc2ggPT4gJGNvbW1pdC0+e2hhc2h9LAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGNvbW1pdC0+e2RhdGV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGN2c0RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IgPT4gJGNvbW1pdC0+e2F1dGhvcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRnaXRfcGVybXMsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRkYk1vZGUsCiAgICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5pbnNlcnRfcmV2KCRuYW1lLCAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0sICRoYXNoLCAkY29tbWl0LT57aGFzaH0sICRjb21taXQtPntkYXRlfSwgJGNvbW1pdC0+e2F1dGhvcn0sICRnaXRfcGVybXMpOworICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkbmFtZSwgJGhlYWQtPnskbmFtZX17cmV2aXNpb259LCAkaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY3ZzRGF0ZSwgJGNvbW1pdC0+e2F1dGhvcn0sICRkYk1vZGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNpZiAoICRjaGFuZ2UgZXEgIk0iIHx8ICRjaGFuZ2UgZXEgIlQiICkKICAgICAgICAgICAgICAgICB7CkBAIC0zMzQxLDExICszOTc1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbiA9PiAkaGVhZC0+eyRuYW1lfXtyZXZpc2lvbn0gKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2ggPT4gJGhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRoYXNoID0+ICRjb21taXQtPntoYXNofSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0+ICRjb21taXQtPntkYXRlfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0+ICRjdnNEYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yID0+ICRjb21taXQtPnthdXRob3J9LAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PiAkZ2l0X3Blcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PiAkZGJNb2RlLAogICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkbmFtZSwgJGhlYWQtPnskbmFtZX17cmV2aXNpb259LCAkaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY29tbWl0LT57ZGF0ZX0sICRjb21taXQtPnthdXRob3J9LCAkZ2l0X3Blcm1zKTsKKyAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmluc2VydF9yZXYoJG5hbWUsICRoZWFkLT57JG5hbWV9e3JldmlzaW9ufSwgJGhhc2gsICRjb21taXQtPntoYXNofSwgJGN2c0RhdGUsICRjb21taXQtPnthdXRob3J9LCAkZGJNb2RlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzaWYgKCAkY2hhbmdlIGVxICJBIiApCiAgICAgICAgICAgICAgICAgewpAQCAtMzM1NSwxMSArMzk4OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb24gPT4gJGhlYWQtPnskbmFtZX17cmV2aXNpb259ID8gJGhlYWQtPnskbmFtZX17cmV2aXNpb259KzEgOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2ggPT4gJGhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXRoYXNoID0+ICRjb21taXQtPntoYXNofSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0+ICRjb21taXQtPntkYXRlfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0+ICRjdnNEYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgYXV0aG9yID0+ICRjb21taXQtPnthdXRob3J9LAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PiAkZ2l0X3Blcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9PiAkZGJNb2RlLAogICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkbmFtZSwgJGhlYWQtPnskbmFtZX17cmV2aXNpb259LCAkaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY29tbWl0LT57ZGF0ZX0sICRjb21taXQtPnthdXRob3J9LCAkZ2l0X3Blcm1zKTsKKyAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmluc2VydF9yZXYoJG5hbWUsICRoZWFkLT57JG5hbWV9e3JldmlzaW9ufSwgJGhhc2gsICRjb21taXQtPntoYXNofSwgJGN2c0RhdGUsICRjb21taXQtPnthdXRob3J9LCAkZGJNb2RlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKQEAgLTMzODIsNyArNDAxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRpZSgiQ291bGRuJ3QgcHJvY2VzcyBnaXQtbHMtdHJlZSBsaW5lIDogJF8iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBteSAoICRnaXRfcGVybXMsICRnaXRfdHlwZSwgJGdpdF9oYXNoLCAkZ2l0X2ZpbGVuYW1lICkgPSAoICQxLCAkMiwgJDMsICQ0ICk7CisgICAgICAgICAgICAgICAgbXkgKCAkbW9kZSwgJGdpdF90eXBlLCAkZ2l0X2hhc2gsICRnaXRfZmlsZW5hbWUgKSA9ICggJDEsICQyLCAkMywgJDQgKTsKIAogICAgICAgICAgICAgICAgICRzZWVuX2ZpbGVzLT57JGdpdF9maWxlbmFtZX0gPSAxOwogCkBAIC0zMzkyLDE4ICs0MDI2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICRoZWFkLT57JGdpdF9maWxlbmFtZX17bW9kZX0KICAgICAgICAgICAgICAgICApOwogCi0gICAgICAgICAgICAgICAgaWYgKCAkZ2l0X3Blcm1zID1+IC9eXGRcZFxkKFxkKVxkXGQvbyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAkZ2l0X3Blcm1zID0gIiI7Ci0gICAgICAgICAgICAgICAgICAgICRnaXRfcGVybXMgLj0gInIiIGlmICggJDEgJiA0ICk7Ci0gICAgICAgICAgICAgICAgICAgICRnaXRfcGVybXMgLj0gInciIGlmICggJDEgJiAyICk7Ci0gICAgICAgICAgICAgICAgICAgICRnaXRfcGVybXMgLj0gIngiIGlmICggJDEgJiAxICk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgJGdpdF9wZXJtcyA9ICJydyI7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG15ICRkYk1vZGUgPSBjb252ZXJ0VG9EYk1vZGUoJG1vZGUpOwogCiAgICAgICAgICAgICAgICAgIyB1bmxlc3MgdGhlIGZpbGUgZXhpc3RzIHdpdGggdGhlIHNhbWUgaGFzaCwgd2UgbmVlZCB0byB1cGRhdGUgaXQgLi4uCi0gICAgICAgICAgICAgICAgdW5sZXNzICggZGVmaW5lZCgkb2xkaGFzaCkgYW5kICRvbGRoYXNoIGVxICRnaXRfaGFzaCBhbmQgZGVmaW5lZCgkb2xkbW9kZSkgYW5kICRvbGRtb2RlIGVxICRnaXRfcGVybXMgKQorICAgICAgICAgICAgICAgIHVubGVzcyAoIGRlZmluZWQoJG9sZGhhc2gpIGFuZCAkb2xkaGFzaCBlcSAkZ2l0X2hhc2ggYW5kIGRlZmluZWQoJG9sZG1vZGUpIGFuZCAkb2xkbW9kZSBlcSAkZGJNb2RlICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRuZXdyZXZpc2lvbiA9ICggJG9sZHJldmlzaW9uIG9yIDAgKSArIDE7CiAKQEAgLTM0MTIsMTMgKzQwMzgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uID0+ICRuZXdyZXZpc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVoYXNoID0+ICRnaXRfaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdGhhc2ggPT4gJGNvbW1pdC0+e2hhc2h9LAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGNvbW1pdC0+e2RhdGV9LAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPT4gJGN2c0RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3IgPT4gJGNvbW1pdC0+e2F1dGhvcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRnaXRfcGVybXMsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0+ICRkYk1vZGUsCiAgICAgICAgICAgICAgICAgICAgIH07CiAKIAotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkZ2l0X2ZpbGVuYW1lLCAkbmV3cmV2aXNpb24sICRnaXRfaGFzaCwgJGNvbW1pdC0+e2hhc2h9LCAkY29tbWl0LT57ZGF0ZX0sICRjb21taXQtPnthdXRob3J9LCAkZ2l0X3Blcm1zKTsKKyAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmluc2VydF9yZXYoJGdpdF9maWxlbmFtZSwgJG5ld3JldmlzaW9uLCAkZ2l0X2hhc2gsICRjb21taXQtPntoYXNofSwgJGN2c0RhdGUsICRjb21taXQtPnthdXRob3J9LCAkZGJNb2RlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjbG9zZSBGSUxFTElTVDsKQEAgLTM0MzEsMTAgKzQwNTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZmlsZX17cmV2aXNpb259Kys7CiAgICAgICAgICAgICAgICAgICAgICRoZWFkLT57JGZpbGV9e2ZpbGVoYXNofSA9ICJkZWxldGVkIjsKICAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZmlsZX17Y29tbWl0aGFzaH0gPSAkY29tbWl0LT57aGFzaH07Ci0gICAgICAgICAgICAgICAgICAgICRoZWFkLT57JGZpbGV9e21vZGlmaWVkfSA9ICRjb21taXQtPntkYXRlfTsKKyAgICAgICAgICAgICAgICAgICAgJGhlYWQtPnskZmlsZX17bW9kaWZpZWR9ID0gJGN2c0RhdGU7CiAgICAgICAgICAgICAgICAgICAgICRoZWFkLT57JGZpbGV9e2F1dGhvcn0gPSAkY29tbWl0LT57YXV0aG9yfTsKIAotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkZmlsZSwgJGhlYWQtPnskZmlsZX17cmV2aXNpb259LCAkaGVhZC0+eyRmaWxlfXtmaWxlaGFzaH0sICRjb21taXQtPntoYXNofSwgJGNvbW1pdC0+e2RhdGV9LCAkY29tbWl0LT57YXV0aG9yfSwgJGhlYWQtPnskZmlsZX17bW9kZX0pOworICAgICAgICAgICAgICAgICAgICAkc2VsZi0+aW5zZXJ0X3JldigkZmlsZSwgJGhlYWQtPnskZmlsZX17cmV2aXNpb259LCAkaGVhZC0+eyRmaWxlfXtmaWxlaGFzaH0sICRjb21taXQtPntoYXNofSwgJGN2c0RhdGUsICRjb21taXQtPnthdXRob3J9LCAkaGVhZC0+eyRmaWxlfXttb2RlfSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgIyBFTkQgOiAiRGV0ZWN0IGRlbGV0ZWQgZmlsZXMiCkBAIC0zNDY1LDEzICs0MDkxLDk0IEBACiAgICAgICAgICk7CiAgICAgfQogICAgICMgaW52YWxpZGF0ZSB0aGUgZ2V0aGVhZCBjYWNoZQotICAgICRzZWxmLT57Z2V0aGVhZF9jYWNoZX0gPSB1bmRlZjsKKyAgICAkc2VsZi0+Y2xlYXJDb21taXRSZWZDYWNoZXMoKTsKIAogCiAgICAgIyBFbmRpbmcgZXhjbHVzaXZlIGxvY2sgaGVyZQogICAgICRzZWxmLT57ZGJofS0+Y29tbWl0KCkgb3IgZGllICJGYWlsZWQgdG8gY29tbWl0IGNoYW5nZXMgdG8gU1FMaXRlIjsKIH0KIAorc3ViIHJlYWRDb21taXRzCit7CisgICAgbXkgJHBpcGVIYW5kbGUgPSBzaGlmdDsKKyAgICBteSBAY29tbWl0czsKKworICAgIG15ICVjb21taXQgPSAoKTsKKworICAgIHdoaWxlICggPCRwaXBlSGFuZGxlPiApCisgICAgeworICAgICAgICBjaG9tcDsKKyAgICAgICAgaWYgKG0vXmNvbW1pdFxzKyguKikkLykgeworICAgICAgICAgICAgIyBvbiBeY29tbWl0IGxpbmVzIHB1dCB0aGUganVzdCBzZWVuIGNvbW1pdCBpbiB0aGUgc3RhY2sKKyAgICAgICAgICAgICMgYW5kIHByaW1lIHRoaW5ncyBmb3IgdGhlIG5leHQgb25lCisgICAgICAgICAgICBpZiAoa2V5cyAlY29tbWl0KSB7CisgICAgICAgICAgICAgICAgbXkgJWNvcHkgPSAlY29tbWl0OworICAgICAgICAgICAgICAgIHVuc2hpZnQgQGNvbW1pdHMsIFwlY29weTsKKyAgICAgICAgICAgICAgICAlY29tbWl0ID0gKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSBAcGFyZW50cyA9IHNwbGl0KG0vXHMrLywgJDEpOworICAgICAgICAgICAgJGNvbW1pdHtoYXNofSA9IHNoaWZ0IEBwYXJlbnRzOworICAgICAgICAgICAgJGNvbW1pdHtwYXJlbnRzfSA9IFxAcGFyZW50czsKKyAgICAgICAgfSBlbHNpZiAobS9eKFx3Kz8pOlxzKyguKikkLyAmJiAhZXhpc3RzKCRjb21taXR7bWVzc2FnZX0pKSB7CisgICAgICAgICAgICAjIG9uIHJmYzgyMi1saWtlIGxpbmVzIHNlZW4gYmVmb3JlIHdlIHNlZSBhbnkgbWVzc2FnZSwKKyAgICAgICAgICAgICMgbG93ZXJjYXNlIHRoZSBlbnRyeSBhbmQgcHV0IGl0IGluIHRoZSBoYXNoIGFzIGtleS12YWx1ZQorICAgICAgICAgICAgJGNvbW1pdHtsYygkMSl9ID0gJDI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAjIG1lc3NhZ2UgbGluZXMgLSBza2lwIGluaXRpYWwgZW1wdHkgbGluZQorICAgICAgICAgICAgIyBhbmQgdHJpbSB3aGl0ZXNwYWNlCisgICAgICAgICAgICBpZiAoIWV4aXN0cygkY29tbWl0e21lc3NhZ2V9KSAmJiBtL15ccyokLykgeworICAgICAgICAgICAgICAgICMgZGVmaW5lIGl0IHRvIG1hcmsgdGhlIGVuZCBvZiBoZWFkZXJzCisgICAgICAgICAgICAgICAgJGNvbW1pdHttZXNzYWdlfSA9ICcnOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzL15ccysvLzsgcy9ccyskLy87ICMgdHJpbSB3cworICAgICAgICAgICAgJGNvbW1pdHttZXNzYWdlfSAuPSAkXyAuICJcbiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNoaWZ0IEBjb21taXRzLCBcJWNvbW1pdCBpZiAoIGtleXMgJWNvbW1pdCApOworCisgICAgcmV0dXJuIEBjb21taXRzOworfQorCitzdWIgY29udmVydFRvQ3ZzRGF0ZQoreworICAgIG15ICRkYXRlID0gc2hpZnQ7CisgICAgIyBDb252ZXJ0IGZyb206ICJnaXQgcmV2LWxpc3QgLS1wcmV0dHkiIGZvcm1hdHRlZCBkYXRlCisgICAgIyBDb252ZXJ0IHRvOiAidGhlIGZvcm1hdCBzcGVjaWZpZWQgYnkgUkZDODIyIGFzIG1vZGlmaWVkIGJ5IFJGQzExMjMuIgorICAgICMgRXhhbXBsZTogMjYgTWF5IDE5OTcgMTM6MDE6NDAgLTA0MDAKKyAgICBpZiggJGRhdGUgPX4gL15cdytccysoXHcrKVxzKyhcZCspXHMrKFxkKzpcZCs6XGQrKVxzKyhcZCspXHMrKFsrLV1cZCspJC8gKQorICAgIHsKKyAgICAgICAgJGRhdGUgPSAiJDIgJDEgJDQgJDMgJDUiOworICAgIH0KKworICAgIHJldHVybiAkZGF0ZTsKK30KKworc3ViIGNvbnZlcnRUb0RiTW9kZQoreworICAgIG15ICRtb2RlID0gc2hpZnQ7CisKKyAgICAjIE5PVEU6IFRoZSBDVlMgcHJvdG9jb2wgdXNlcyBhIHN0cmluZyBzaW1pbGFyICJ1PXJ3LGc9cncsbz1ydyIsCisgICAgIyAgYnV0IHRoZSBkYXRhYmFzZSAibW9kZSIgY29sdW1uIGhpc3RvcmljYWxseSAoYW5kIGN1cnJlbnRseSkKKyAgICAjICBvbmx5IHN0b3JlcyB0aGUgInJ3IiAoZm9yIHVzZXIpIHBhcnQgb2YgdGhlIHN0cmluZy4KKyAgICAjICAgIEZVVFVSRTogSXQgbWlnaHQgbWFrZSBtb3JlIHNlbnNlIHRvIHBlcnNpc3QgdGhlIHJhdworICAgICMgIG9jdGFsIG1vZGUgKG9yIHBlcmhhcHMgdGhlIGZpbmFsIGZ1bGwgQ1ZTIGZvcm0pIGluc3RlYWQgb2YKKyAgICAjICB0aGlzIGhhbGYtY29udmVydGVkIGZvcm0sIGJ1dCBpdCBpc24ndCBjdXJyZW50bHkgd29ydGggdGhlCisgICAgIyAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaGVhZGFjaGVzLgorCisgICAgJG1vZGU9fi9eXGRcZChcZClcZHszfSQvOworICAgIG15ICR1c2VyQml0cz0kMTsKKworICAgIG15ICRkYk1vZGUgPSAiIjsKKyAgICAkZGJNb2RlIC49ICJyIiBpZiAoICR1c2VyQml0cyAmIDQgKTsKKyAgICAkZGJNb2RlIC49ICJ3IiBpZiAoICR1c2VyQml0cyAmIDIgKTsKKyAgICAkZGJNb2RlIC49ICJ4IiBpZiAoICR1c2VyQml0cyAmIDEgKTsKKyAgICAkZGJNb2RlID0gInJ3IiBpZiAoICRkYk1vZGUgZXEgIiIgKTsKKworICAgIHJldHVybiAkZGJNb2RlOworfQorCiBzdWIgaW5zZXJ0X3JldgogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0zNTg2LDYgKzQyOTMsMTY5IEBACiAgICAgcmV0dXJuICR0cmVlOwogfQogCis9aGVhZDIgZ2V0QW55SGVhZAorCitSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5IG9mIGdldG1ldGEgc3RydWN0dXJlcywgb25lCitwZXIgZmlsZSBpbiB0aGUgc3BlY2lmaWVkIHRyZWUgaGFzaC4KKworPWN1dAorCitzdWIgZ2V0QW55SGVhZAoreworICAgIG15ICgkc2VsZiwkaGFzaCkgPSBAXzsKKworICAgIGlmKCFkZWZpbmVkKCRoYXNoKSkKKyAgICB7CisgICAgICAgIHJldHVybiAkc2VsZi0+Z2V0aGVhZCgpOworICAgIH0KKworICAgIG15IEBmaWxlczsKKyAgICB7CisgICAgICAgIG9wZW4obXkgJGZpbGVQaXBlLCAnLXwnLCAnZ2l0JywgJ2xzLXRyZWUnLCAnLXonLCAnLXInLCAkaGFzaCkKKyAgICAgICAgICAgICAgICBvciBkaWUoIkNhbm5vdCBjYWxsIGdpdC1scy10cmVlIDogJCEiKTsKKyAgICAgICAgbG9jYWwgJC8gPSAiXDAiOworICAgICAgICBAZmlsZXM9PCRmaWxlUGlwZT47CisgICAgICAgIGNsb3NlICRmaWxlUGlwZTsKKyAgICB9CisKKyAgICBteSAkdHJlZT1bXTsKKyAgICBteSgkbGluZSk7CisgICAgZm9yZWFjaCAkbGluZSAoQGZpbGVzKQorICAgIHsKKyAgICAgICAgJGxpbmU9fnMvXDAkLy87CisgICAgICAgIHVubGVzcyAoICRsaW5lPX4vXihcZCspXHMrKFx3KylccysoW2EtekEtWjAtOV0rKVx0KC4qKSQvbyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRpZSgiQ291bGRuJ3QgcHJvY2VzcyBnaXQtbHMtdHJlZSBsaW5lIDogJF8iKTsKKyAgICAgICAgfQorCisgICAgICAgIG15KCRtb2RlLCAkZ2l0X3R5cGUsICRnaXRfaGFzaCwgJGdpdF9maWxlbmFtZSkgPSAoJDEsICQyLCAkMywgJDQpOworICAgICAgICBwdXNoIEAkdHJlZSwgJHNlbGYtPmdldE1ldGFGcm9tQ29tbWl0aGFzaCgkZ2l0X2ZpbGVuYW1lLCRoYXNoKTsKKyAgICB9CisKKyAgICByZXR1cm4gJHRyZWU7Cit9CisKKz1oZWFkMiBnZXRSZXZpc2lvbkRpck1hcAorCitBICJyZXZpc2lvbiBkaXIgbWFwIiBjb250YWlucyBhbGwgdGhlIHBsYWluLWZpbGUgZmlsZW5hbWVzIGFzc29jaWF0ZWQKK3dpdGggYSBwYXJ0aWN1bGFyIHJldmlzaW9uICh0cmVlaXNoKSwgb3JnYW5pemVkIGJ5IGRpcmVjdG9yeToKKworICAkdHlwZSA9ICRvdXQtPnskZGlyfXskZnVsbE5hbWV9CisKK1RoZSB0eXBlIG9mIGVhY2ggaXMgIkYiIChmb3Igb3JkaW5hcnkgZmlsZSkgb3IgIkQiIChmb3IgZGlyZWN0b3J5LAorZm9yIHdoaWNoIHRoZSBtYXAgJG91dC0+eyRmdWxsTmFtZX0gd2lsbCBhbHNvIGV4aXN0KS4KKworPWN1dAorCitzdWIgZ2V0UmV2aXNpb25EaXJNYXAKK3sKKyAgICBteSAoJHNlbGYsJHZlcik9QF87CisKKyAgICBpZighZGVmaW5lZCgkc2VsZi0+e3JldmlzaW9uRGlyTWFwQ2FjaGV9KSkKKyAgICB7CisgICAgICAgICRzZWxmLT57cmV2aXNpb25EaXJNYXBDYWNoZX09e307CisgICAgfQorCisgICAgICAgICMgR2V0IGZpbGUgbGlzdCAocHJldmlvdXNseSBjYWNoZWQgcmVzdWx0cyBhcmUgZGVwZW5kZW50IG9uIEhFQUQsCisgICAgICAgICMgYnV0IGFyZSBlYXJseSBpbiBlYWNoIGNhc2UpOgorICAgIG15ICRjYWNoZUtleTsKKyAgICBteSAoQGZpbGVMaXN0KTsKKyAgICBpZiggIWRlZmluZWQoJHZlcikgfHwgJHZlciBlcSAiIiApCisgICAgeworICAgICAgICAkY2FjaGVLZXk9IiI7CisgICAgICAgIGlmKCBkZWZpbmVkKCRzZWxmLT57cmV2aXNpb25EaXJNYXBDYWNoZX17JGNhY2hlS2V5fSkgKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfXskY2FjaGVLZXl9OworICAgICAgICB9CisKKyAgICAgICAgbXkgQGhlYWQgPSBAeyRzZWxmLT5nZXRoZWFkKCl9OworICAgICAgICBmb3JlYWNoIG15ICRmaWxlICggQGhlYWQgKQorICAgICAgICB7CisgICAgICAgICAgICBuZXh0IGlmICggJGZpbGUtPntmaWxlaGFzaH0gZXEgImRlbGV0ZWQiICk7CisKKyAgICAgICAgICAgIHB1c2ggQGZpbGVMaXN0LCRmaWxlLT57bmFtZX07CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbXkgKCRoYXNoKT0kc2VsZi0+bG9va3VwQ29tbWl0UmVmKCR2ZXIpOworICAgICAgICBpZiggIWRlZmluZWQoJGhhc2gpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHVuZGVmOworICAgICAgICB9CisKKyAgICAgICAgJGNhY2hlS2V5PSRoYXNoOworICAgICAgICBpZiggZGVmaW5lZCgkc2VsZi0+e3JldmlzaW9uRGlyTWFwQ2FjaGV9eyRjYWNoZUtleX0pICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICRzZWxmLT57cmV2aXNpb25EaXJNYXBDYWNoZX17JGNhY2hlS2V5fTsKKyAgICAgICAgfQorCisgICAgICAgIG9wZW4obXkgJGZpbGVQaXBlLCAnLXwnLCAnZ2l0JywgJ2xzLXRyZWUnLCAnLXonLCAnLXInLCAkaGFzaCkKKyAgICAgICAgICAgICAgICBvciBkaWUoIkNhbm5vdCBjYWxsIGdpdC1scy10cmVlIDogJCEiKTsKKyAgICAgICAgbG9jYWwgJC8gPSAiXDAiOworICAgICAgICB3aGlsZSAoIDwkZmlsZVBpcGU+ICkKKyAgICAgICAgeworICAgICAgICAgICAgY2hvbXA7CisgICAgICAgICAgICB1bmxlc3MgKCAvXihcZCspXHMrKFx3KylccysoW2EtekEtWjAtOV0rKVx0KC4qKSQvbyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGllKCJDb3VsZG4ndCBwcm9jZXNzIGdpdC1scy10cmVlIGxpbmUgOiAkXyIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBteSgkbW9kZSwgJGdpdF90eXBlLCAkZ2l0X2hhc2gsICRnaXRfZmlsZW5hbWUpID0gKCQxLCAkMiwgJDMsICQ0KTsKKworICAgICAgICAgICAgcHVzaCBAZmlsZUxpc3QsICRnaXRfZmlsZW5hbWU7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UgJGZpbGVQaXBlOworICAgIH0KKworICAgICAgICAjIENvbnZlcnQgdG8gbm9ybWFsaXplZCBmb3JtOgorICAgIG15ICVyZXZNYXA7CisgICAgbXkgJGZpbGU7CisgICAgZm9yZWFjaCAkZmlsZSAoQGZpbGVMaXN0KQorICAgIHsKKyAgICAgICAgbXkoJGRpcikgPSAoJGZpbGU9fm0lXig/OiguKikvKT8oW14vXSopJCUpOworICAgICAgICAkZGlyPScnIGlmKCFkZWZpbmVkKCRkaXIpKTsKKworICAgICAgICAgICAgIyBwYXJlbnQgZGlyZWN0b3JpZXM6CisgICAgICAgICAgICAjIC4uLiBjcmVhdGUgZW1wdHkgZGlyIG1hcHMgZm9yIHBhcmVudCBkaXJzOgorICAgICAgICBteSgkdGQpPSRkaXI7CisgICAgICAgIHdoaWxlKCFkZWZpbmVkKCRyZXZNYXB7JHRkfSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICRyZXZNYXB7JHRkfT17fTsKKworICAgICAgICAgICAgbXkoJHRwKT0oJHRkPX5tJV4oPzooLiopLyk/KFteL10qKSQlKTsKKyAgICAgICAgICAgICR0cD0nJyBpZighZGVmaW5lZCgkdHApKTsKKyAgICAgICAgICAgICR0ZD0kdHA7CisgICAgICAgIH0KKyAgICAgICAgICAgICMgLi4uIGFkZCBjaGlsZHJlbiB0byBwYXJlbnQgbWFwcyAobm93IHRoYXQgdGhleSBleGlzdCk6CisgICAgICAgICR0ZD0kZGlyOworICAgICAgICB3aGlsZSgkdGQgbmUgIiIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG15KCR0cCk9KCR0ZD1+bSVeKD86KC4qKS8pPyhbXi9dKikkJSk7CisgICAgICAgICAgICAkdHA9JycgaWYoIWRlZmluZWQoJHRwKSk7CisKKyAgICAgICAgICAgIGlmKGRlZmluZWQoJHJldk1hcHskdHB9eyR0ZH0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKCRyZXZNYXB7JHRwfXskdGR9IG5lICdEJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGRpZSAiV2VpcmQgZmlsZS9kaXJlY3RvcnkgaW5jb25zaXN0ZW5jeSBpbiAkY2FjaGVLZXkiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0OyAgICMgbG9vcCBleGl0CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkcmV2TWFweyR0cH17JHRkfT0nRCc7CisKKyAgICAgICAgICAgICR0ZD0kdHA7CisgICAgICAgIH0KKworICAgICAgICAgICAgIyBmaWxlCisgICAgICAgICRyZXZNYXB7JGRpcn17JGZpbGV9PSdGJzsKKyAgICB9CisKKyAgICAgICAgIyBTYXZlIGluIGNhY2hlOgorICAgICRzZWxmLT57cmV2aXNpb25EaXJNYXBDYWNoZX17JGNhY2hlS2V5fT1cJXJldk1hcDsKKyAgICByZXR1cm4gJHNlbGYtPntyZXZpc2lvbkRpck1hcENhY2hlfXskY2FjaGVLZXl9OworfQorCiA9aGVhZDIgZ2V0bG9nCiAKIFNlZSBhbHNvIGdldGhpc3RvcnlkZW5zZSgpLgpAQCAtMzY0Niw2ICs0NTE2LDE5IEBACiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgZmlsZW5hbWUgKHdpdGggcGF0aCkgYXJndW1lbnQgYW5kIHJldHVybnMgYSBoYXNocmVmIG9mCiBtZXRhZGF0YSBmb3IgdGhhdCBmaWxlLgogCitUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzICRyZXZpc2lvbiBjYW4gYmUgc3BlY2lmaWVkOgorCisgICAtIEEgcmVmZXJlbmNlIHRvIGhhc2ggdGhhdCBjb250YWlucyBhICJ0YWciIHRoYXQgaXMgdGhlCisgICAgIGFjdHVhbCByZXZpc2lvbiAob25lIG9mIHRoZSBiZWxvdykuICBUT0RPOiBBbHNvIGFsbG93IGl0IHRvCisgICAgIHNwZWNpZnkgYSAiZGF0ZSIgaW4gdGhlIGhhc2guCisgICAtIHVuZGVmLCB0byByZWZlciB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb24gdGhlIG1haW4gYnJhbmNoLgorICAgLSBGdWxsIENWUyBjbGllbnQgcmV2aXNpb24gbnVtYmVyIChtYXBwZWQgdG8gaW50ZWdlciBpbiBEQiwgd2l0aG91dCB0aGUKKyAgICAgIjEuIiBwcmVmaXgpLAorICAgLSBDb21wbGV4IENWUy1jb21wYXRpYmxlICJzcGVjaWFsIiByZXZpc2lvbiBudW1iZXIgZm9yCisgICAgIG5vbi1saW5lYXIgaGlzdG9yeSAoc2VlIGNvbW1lbnQgYmVsb3cpCisgICAtIGdpdCBjb21taXQgc2hhMSBoYXNoCisgICAtIGJyYW5jaCBvciB0YWcgbmFtZQorCiA9Y3V0CiAKIHN1YiBnZXRtZXRhCkBAIC0zNjU2LDIzICs0NTM5LDE0NCBAQAogICAgIG15ICR0YWJsZW5hbWVfcmV2ID0gJHNlbGYtPnRhYmxlbmFtZSgicmV2aXNpb24iKTsKICAgICBteSAkdGFibGVuYW1lX2hlYWQgPSAkc2VsZi0+dGFibGVuYW1lKCJoZWFkIik7CiAKLSAgICBteSAkZGJfcXVlcnk7Ci0gICAgaWYgKCBkZWZpbmVkKCRyZXZpc2lvbikgYW5kICRyZXZpc2lvbiA9fiAvXjFcLihcZCspJC8gKQorICAgIGlmICggcmVmKCRyZXZpc2lvbikgZXEgIkhBU0giICkKICAgICB7Ci0gICAgICAgIG15ICgkaW50UmV2KSA9ICQxOwotICAgICAgICAkZGJfcXVlcnkgPSAkc2VsZi0+e2RiaH0tPnByZXBhcmVfY2FjaGVkKCJTRUxFQ1QgKiBGUk9NICR0YWJsZW5hbWVfcmV2IFdIRVJFIG5hbWU9PyBBTkQgcmV2aXNpb249PyIse30sMSk7Ci0gICAgICAgICRkYl9xdWVyeS0+ZXhlY3V0ZSgkZmlsZW5hbWUsICRpbnRSZXYpOwotICAgIH0KLSAgICBlbHNpZiAoIGRlZmluZWQoJHJldmlzaW9uKSBhbmQgJHJldmlzaW9uID1+IC9eW2EtekEtWjAtOV17NDB9JC8gKQotICAgIHsKLSAgICAgICAgJGRiX3F1ZXJ5ID0gJHNlbGYtPntkYmh9LT5wcmVwYXJlX2NhY2hlZCgiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lX3JldiBXSEVSRSBuYW1lPT8gQU5EIGNvbW1pdGhhc2g9PyIse30sMSk7Ci0gICAgICAgICRkYl9xdWVyeS0+ZXhlY3V0ZSgkZmlsZW5hbWUsICRyZXZpc2lvbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgJGRiX3F1ZXJ5ID0gJHNlbGYtPntkYmh9LT5wcmVwYXJlX2NhY2hlZCgiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lX2hlYWQgV0hFUkUgbmFtZT0/Iix7fSwxKTsKLSAgICAgICAgJGRiX3F1ZXJ5LT5leGVjdXRlKCRmaWxlbmFtZSk7CisgICAgICAgICRyZXZpc2lvbiA9ICRyZXZpc2lvbi0+e3RhZ307CiAgICAgfQogCi0gICAgbXkgJG1ldGEgPSAkZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWY7CisgICAgIyBPdmVydmlldyBvZiBDVlMgcmV2aXNpb24gbnVtYmVyczoKKyAgICAjCisgICAgIyBHZW5lcmFsIENWUyBudW1iZXJpbmcgc2NoZW1lOgorICAgICMgICAtIEJhc2ljIG1haW5saW5lIGJyYW5jaCBudW1iZXJzOiAiMS4xIiwgIjEuMiIsICIxLjMiLCBldGMuCisgICAgIyAgIC0gUmVzdWx0IG9mICJjdnMgY2hlY2tpbiAtciIgKHBvc3NpYmxlLCBidXQgbm90IHJlYWxseQorICAgICMgICAgIHJlY29tbWVuZGVkKTogIjIuMSIsICIyLjIiLCBldGMKKyAgICAjICAgLSBCcmFuY2ggdGFnOiAiMS4yLjAubiIsIHdoZXJlICIxLjIiIGlzIHJldmlzaW9uIGl0IHdhcyBicmFuY2hlZAorICAgICMgICAgIGZyb20sICIwIiBpcyBhIG1hZ2ljIHBsYWNlaG9sZGVyIHRoYXQgaWRlbnRpZmllcyBpdCBhcyBhCisgICAgIyAgICAgYnJhbmNoIHRhZyBpbnN0ZWFkIG9mIGEgdmVyc2lvbiB0YWcsIGFuZCBuIGlzIDIgdGltZXMgdGhlCisgICAgIyAgICAgYnJhbmNoIG51bWJlciBvZmYgb2YgIjEuMiIsIHN0YXJ0aW5nIHdpdGggIjIiLgorICAgICMgICAtIFZlcnNpb24gb24gYSBicmFuY2g6ICIxLjIubi54Iiwgd2hlcmUgIjEuMiIgaXMgYnJhbmNoLWZyb20sICJuIgorICAgICMgICAgIGlzIGJyYW5jaCBudW1iZXIgb2ZmIG9mICIxLjIiIChsaWtlIG4gYWJvdmUpLCBhbmQgIngiIGlzCisgICAgIyAgICAgdGhlIHZlcnNpb24gbnVtYmVyIG9uIHRoZSBicmFuY2guCisgICAgIyAgIC0gQnJhbmNoZXMgY2FuIGJyYW5jaCBvZmYgb2YgYnJhbmNoZXM6ICIxLjMuMi43LjQuMSIgKGV2ZW4gbnVtYmVyCisgICAgIyAgICAgb2YgY29tcG9uZW50cykuCisgICAgIyAgIC0gT2RkICJuInMgYXJlIHVzZWQgYnkgInZlbmRvciBicmFuY2hlcyIgdGhhdCByZXN1bHQKKyAgICAjICAgICBmcm9tICJjdnMgaW1wb3J0Ii4gIFZlbmRvciBicmFuY2hlcyBoYXZlIGFkZGl0aW9uYWwKKyAgICAjICAgICBzdHJhbmdlbmVzcyBpbiB0aGUgc2Vuc2UgdGhhdCB0aGUgbWFpbiByY3MgImhlYWQiIG9mIHRoZSBtYWluCisgICAgIyAgICAgYnJhbmNoIHdpbGwgKHRlbXBvcmFyaWx5IHVudGlsIGZpcnN0IG5vcm1hbCBjb21taXQpIHBvaW50CisgICAgIyAgICAgdG8gdGhlIHZlcnNpb24gb24gdGhlIHZlbmRvciBicmFuY2gsIHJhdGhlciB0aGFuIHRoZSBhY3R1YWwKKyAgICAjICAgICBtYWluIGJyYW5jaC4gIChGVVRVUkU6IFRoaXMgbWF5IHByb3ZpZGUgYW4gb3Bwb3J0dW5pdHkKKyAgICAjICAgICB0byB1c2UgInN0cmFuZ2UiIHJldmlzaW9uIG51bWJlcnMgZm9yIGZhc3QtZm9yd2FyZC1tZXJnZWQKKyAgICAjICAgICBicmFuY2ggdGlwIHdoZW4gQ1ZTIGNsaWVudCBpcyBhc2tpbmcgZm9yIHRoZSBtYWluIGJyYW5jaC4pCisgICAgIworICAgICMgZ2l0LWN2c3NlcnZlciBDVlMtY29tcGF0aWJsZSBzcGVjaWFsIG51bWJlcmluZyBzY2hlbWVzOgorICAgICMgICAtIEN1cnJlbnRseSBnaXQtY3Zzc2VydmVyIG9ubHkgdHJpZXMgdG8gYmUgaWRlbnRpY2FsIHRvIENWUyBmb3IKKyAgICAjICAgICBzaW1wbGUgIjEueCIgbnVtYmVycyBvbiB0aGUgIm1haW4iIGJyYW5jaCAoYXMgaWRlbnRpZmllZAorICAgICMgICAgIGJ5IHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBvcmlnaW5hbGx5IGN2cyBjaGVja291dCdlZCkuCisgICAgIyAgIC0gVGhlIGRhdGFiYXNlIG9ubHkgc3RvcmVzIHRoZSAieCIgcGFydCwgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4KKyAgICAjICAgICBCdXQgbW9zdCBvZiB0aGUgcmVzdCBvZiB0aGUgY3Zzc2VydmVyIHByZXNlcnZlcworICAgICMgICAgIGFuZCB0aGlua3MgdXNpbmcgdGhlIGZ1bGwgcmV2aXNpb24gbnVtYmVyLgorICAgICMgICAtIFRvIGhhbmRsZSBub24tbGluZWFyIGhpc3RvcnksIGl0IHVzZXMgYSB2ZXJzaW9uIG9mIHRoZSBmb3JtCisgICAgIyAgICAgIjIuMS4xLjIwMDAuYi5iLmIuIi4uLiwgd2hlcmUgdGhlIDIuMS4xLjIwMDAgaXMgdG8gaGVscCB1bmlxdWVseQorICAgICMgICAgIGlkZW50aWZ5IHRoaXMgYXMgYSBzcGVjaWFsIHJldmlzaW9uIG51bWJlciwgYW5kIHRoZXJlIGFyZQorICAgICMgICAgIDIwIGIncyB0aGF0IHRvZ2V0aGVyIGVuY29kZSB0aGUgc2hhMSBnaXQgY29tbWl0IGZyb20gd2hpY2gKKyAgICAjICAgICB0aGlzIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9yaWdpbmF0ZWQuICBFYWNoIGIgaXMKKyAgICAjICAgICB0aGUgbnVtZXJpY2FsIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUgcGx1cworICAgICMgICAgIDEwMC4KKyAgICAjICAgICAgLSAicGx1cyAxMDAiIGF2b2lkcyAiMCJzLCBhbmQgYWxzbyByZWR1Y2VzIHRoZQorICAgICMgICAgICAgIGxpa2VsaWhvb2Qgb2YgYSBjb2xsaXNpb24gaW4gdGhlIGNhc2UgdGhhdCBzb21lb25lIHNvbWVkYXkKKyAgICAjICAgICAgICB3cml0ZXMgYW4gaW1wb3J0IHRvb2wgdGhhdCB0cmllcyB0byBwcmVzZXJ2ZSBvcmlnaW5hbAorICAgICMgICAgICAgIENWUyByZXZpc2lvbiBudW1iZXJzLCBhbmQgdGhlIG9yaWdpbmFsIENWUyBkYXRhIGhhZCBkb25lCisgICAgIyAgICAgICAgbG90cyBvZiBicmFuY2hlcyBvZmYgb2YgYnJhbmNoZXMgYW5kIG90aGVyIHN0cmFuZ2VuZXNzIHRvCisgICAgIyAgICAgICAgZW5kIHVwIHdpdGggYSByZWFsIHZlcnNpb24gbnVtYmVyIHRoYXQganVzdCBoYXBwZW5zIHRvIGxvb2sKKyAgICAjICAgICAgICBsaWtlIHRoaXMgc3BlY2lhbCByZXZpc2lvbiBudW1iZXIgZm9ybS4gIEFsc28sIGlmIG5lZWRlZAorICAgICMgICAgICAgIHRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZXh0ZW5kL2lkZW50aWZ5IGFsdGVybmF0aXZlIGVuY29kaW5ncworICAgICMgICAgICAgIHdpdGhpbiB0aGUgIjIuMS4xLjIwMDAiIHBhcnQgaWYgbmVjZXNzYXJ5LgorICAgICMgICAgICAtIFVubGlrZSByZWFsIENWUyByZXZpc2lvbnMsIHlvdSBjYW4ndCByZWFsbHkgcmVjb25zdHJ1Y3Qgd2hhdAorICAgICMgICAgICAgIHJlbGF0aW9uIGEgcmV2aXNpb24gb2YgdGhpcyBmb3JtIGhhcyB0byBvdGhlciByZXZpc2lvbnMuCisgICAgIyAgIC0gRlVUVVJFOiBUT0RPOiBSZXdvcmsgZGF0YWJhc2Ugc29tZWhvdyB0byBtYWtlIHVwIGFuZCByZW1lbWJlcgorICAgICMgICAgIGZ1bGx5LUNWUy1jb21wYXRpYmxlIGJyYW5jaGVzIGFuZCBicmFuY2ggdmVyc2lvbiBudW1iZXJzLgorCisgICAgbXkgJG1ldGE7CisgICAgaWYgKCBkZWZpbmVkKCRyZXZpc2lvbikgKQorICAgIHsKKyAgICAgICAgaWYgKCAkcmV2aXNpb24gPX4gL14xXC4oXGQrKSQvICkKKyAgICAgICAgeworICAgICAgICAgICAgbXkgKCRpbnRSZXYpID0gJDE7CisgICAgICAgICAgICBteSAkZGJfcXVlcnk7CisgICAgICAgICAgICAkZGJfcXVlcnkgPSAkc2VsZi0+e2RiaH0tPnByZXBhcmVfY2FjaGVkKAorICAgICAgICAgICAgICAgICJTRUxFQ1QgKiBGUk9NICR0YWJsZW5hbWVfcmV2IFdIRVJFIG5hbWU9PyBBTkQgcmV2aXNpb249PyIsCisgICAgICAgICAgICAgICAge30sMSk7CisgICAgICAgICAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lLCAkaW50UmV2KTsKKyAgICAgICAgICAgICRtZXRhID0gJGRiX3F1ZXJ5LT5mZXRjaHJvd19oYXNocmVmOworICAgICAgICB9CisgICAgICAgIGVsc2lmICggJHJldmlzaW9uID1+IC9eMlwuMVwuMVwuMjAwMChcLlsxLTNdWzAtOV1bMC05XSl7MjB9JC8gKQorICAgICAgICB7CisgICAgICAgICAgICBteSAoJGNvbW1pdEhhc2gpPSgkcmV2aXNpb249fi9eMlwuMVwuMVwuMjAwMCguKikkLyk7CisgICAgICAgICAgICAkY29tbWl0SGFzaD1+cy9cLihbMC05XSspL3NwcmludGYoIiUwMngiLCQxLTEwMCkvZWc7CisgICAgICAgICAgICBpZigkY29tbWl0SGFzaD1+L15bMC05YS1mXXs0MH0kLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGYtPmdldE1ldGFGcm9tQ29tbWl0aGFzaCgkZmlsZW5hbWUsJGNvbW1pdEhhc2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIGVycm9yIHJlY292ZXJ5OiBmYWxsIGJhY2sgb24gaGVhZCB2ZXJzaW9uIGJlbG93CisgICAgICAgICAgICBwcmludCAiRSBGYWlsZWQgdG8gZmluZCAkZmlsZW5hbWUgdmVyc2lvbj0kcmV2aXNpb24gb3IgY29tbWl0PSRjb21taXRIYXNoXG4iOworICAgICAgICAgICAgJGxvZy0+d2FybmluZygiZmFpbGVkIGdldCAkcmV2aXNpb24gd2l0aCBjb21taXRoYXNoPSRjb21taXRIYXNoIik7CisgICAgICAgICAgICB1bmRlZiAkcmV2aXNpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzaWYgKCAkcmV2aXNpb24gPX4gL15bMC05YS1mXXs0MH0kLyApCisgICAgICAgIHsKKyAgICAgICAgICAgICMgVHJ5IERCIGZpcnN0LiAgVGhpcyBpcyBtb3N0bHkgb25seSB1c2VmdWwgZm9yIHJlcV9hbm5vdGF0ZSgpLAorICAgICAgICAgICAgIyB3aGljaCBvbmx5IGNhbGxzIHRoaXMgZm9yIHN0dWZmIHRoYXQgc2hvdWxkIGFscmVhZHkgYmUgaW4KKyAgICAgICAgICAgICMgdGhlIERCLiAgSXQgaXMgZmFpcmx5IGxpa2VseSB0byBiZSBhIHdhc3RlIG9mIHRpbWUKKyAgICAgICAgICAgICMgaW4gbW9zdCBvdGhlciBjYXNlcyBbdW5sZXNzIHRoZSBmaWxlIGhhcHBlbmVkIHRvIGJlCisgICAgICAgICAgICAjIG1vZGlmaWVkIGluICRyZXZpc2lvbiBzcGVjaWZpY2FsbHldLCBidXQKKyAgICAgICAgICAgICMgaXQgaXMgcHJvYmFibHkgaW4gdGhlIG5vaXNlIGNvbXBhcmVkIHRvIGhvdyBsb25nCisgICAgICAgICAgICAjIGdldE1ldGFGcm9tQ29tbWl0aGFzaCgpIHdpbGwgdGFrZS4KKyAgICAgICAgICAgIG15ICRkYl9xdWVyeTsKKyAgICAgICAgICAgICRkYl9xdWVyeSA9ICRzZWxmLT57ZGJofS0+cHJlcGFyZV9jYWNoZWQoCisgICAgICAgICAgICAgICAgIlNFTEVDVCAqIEZST00gJHRhYmxlbmFtZV9yZXYgV0hFUkUgbmFtZT0/IEFORCBjb21taXRoYXNoPT8iLAorICAgICAgICAgICAgICAgIHt9LDEpOworICAgICAgICAgICAgJGRiX3F1ZXJ5LT5leGVjdXRlKCRmaWxlbmFtZSwgJHJldmlzaW9uKTsKKyAgICAgICAgICAgICRtZXRhID0gJGRiX3F1ZXJ5LT5mZXRjaHJvd19oYXNocmVmOworCisgICAgICAgICAgICBpZighICRtZXRhKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG15KCRyZXZDb21taXQpPSRzZWxmLT5sb29rdXBDb21taXRSZWYoJHJldmlzaW9uKTsKKyAgICAgICAgICAgICAgICBpZigkcmV2Q29tbWl0PX4vXlswLTlhLWZdezQwfSQvKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRzZWxmLT5nZXRNZXRhRnJvbUNvbW1pdGhhc2goJGZpbGVuYW1lLCRyZXZDb21taXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICMgZXJyb3IgcmVjb3Zlcnk6IG5vdGhpbmcgZm91bmQ6CisgICAgICAgICAgICAgICAgcHJpbnQgIkUgRmFpbGVkIHRvIGZpbmQgJGZpbGVuYW1lIHZlcnNpb249JHJldmlzaW9uXG4iOworICAgICAgICAgICAgICAgICRsb2ctPndhcm5pbmcoImZhaWxlZCBnZXQgJHJldmlzaW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuICRtZXRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbXkoJHJldkNvbW1pdCk9JHNlbGYtPmxvb2t1cENvbW1pdFJlZigkcmV2aXNpb24pOworICAgICAgICAgICAgaWYoJHJldkNvbW1pdD1+L15bMC05YS1mXXs0MH0kLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGYtPmdldE1ldGFGcm9tQ29tbWl0aGFzaCgkZmlsZW5hbWUsJHJldkNvbW1pdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgZXJyb3IgcmVjb3Zlcnk6IGZhbGwgYmFjayBvbiBoZWFkIHZlcnNpb24gYmVsb3cKKyAgICAgICAgICAgIHByaW50ICJFIEZhaWxlZCB0byBmaW5kICRmaWxlbmFtZSB2ZXJzaW9uPSRyZXZpc2lvblxuIjsKKyAgICAgICAgICAgICRsb2ctPndhcm5pbmcoImZhaWxlZCBnZXQgJHJldmlzaW9uIik7CisgICAgICAgICAgICB1bmRlZiAkcmV2aXNpb247ICAjIEFsbG93IGZhbGxiYWNrCisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZighZGVmaW5lZCgkcmV2aXNpb24pKQorICAgIHsKKyAgICAgICAgbXkgJGRiX3F1ZXJ5OworICAgICAgICAkZGJfcXVlcnkgPSAkc2VsZi0+e2RiaH0tPnByZXBhcmVfY2FjaGVkKAorICAgICAgICAgICAgICAgICJTRUxFQ1QgKiBGUk9NICR0YWJsZW5hbWVfaGVhZCBXSEVSRSBuYW1lPT8iLHt9LDEpOworICAgICAgICAkZGJfcXVlcnktPmV4ZWN1dGUoJGZpbGVuYW1lKTsKKyAgICAgICAgJG1ldGEgPSAkZGJfcXVlcnktPmZldGNocm93X2hhc2hyZWY7CisgICAgfQorCiAgICAgaWYoJG1ldGEpCiAgICAgewogICAgICAgICAkbWV0YS0+e3JldmlzaW9ufSA9ICIxLiRtZXRhLT57cmV2aXNpb259IjsKQEAgLTM2ODAsNiArNDY4NCwyMDQgQEAKICAgICByZXR1cm4gJG1ldGE7CiB9CiAKK3N1YiBnZXRNZXRhRnJvbUNvbW1pdGhhc2gKK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgIG15ICRmaWxlbmFtZSA9IHNoaWZ0OworICAgIG15ICRyZXZDb21taXQgPSBzaGlmdDsKKworICAgICMgTk9URTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHNjYWxlIHdlbGwgKGxvdHMgb2YgZm9ya3MpLCBlc3BlY2lhbGx5CisgICAgIyAgIGlmIHlvdSBoYXZlIG1hbnkgZmlsZXMgdGhhdCBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkIGZvciBtYW55IGNvbW1pdHMKKyAgICAjICAgKGVhY2ggZ2l0LXJldi1wYXJzZSByZWRvZXMgYSBsb3Qgb2Ygd29yayBmb3IgZWFjaCBmaWxlCisgICAgIyAgIHRoYXQgdGhlb3JldGljYWxseSBjb3VsZCBiZSBkb25lIGluIHBhcmFsbGVsIGJ5IHNtYXJ0ZXIKKyAgICAjICAgZ3JhcGggdHJhdmVyc2FsKS4KKyAgICAjCisgICAgIyBUT0RPOiBQb3NzaWJsZSBvcHRpbWl6YXRpb24gc3RyYXRlZ2llczoKKyAgICAjICAgLSBTb2x2ZSB0aGUgaXNzdWUgb2YgYXNzaWduaW5nIGFuZCByZW1lbWJlcmluZyAicmVhbCIgQ1ZTCisgICAgIyAgICAgcmV2aXNpb24gbnVtYmVycyBmb3IgYnJhbmNoZXMsIGFuZCBlbnN1cmUgdGhlCisgICAgIyAgICAgZGF0YSBzdHJ1Y3R1cmUgY2FuIGRvIHRoaXMgZWZmaWNpZW50bHkuICBQZXJoYXBzIHNvbWV0aGluZworICAgICMgICAgIHNpbWlsYXIgdG8gImdpdCBub3RlcyIsIGFuZCBjYXJlZnVsbHkgc3RydWN0dXJlZCB0byB0YWtlCisgICAgIyAgICAgYWR2YW50YWdlIHNhbWUtc2hhMS1pcy1zYW1lLWNvbnRlbnRzLCB0byByb2xsIHRoZSBzYW1lCisgICAgIyAgICAgdW5tb2RpZmllZCBzdWJkaXJlY3RvcnkgZGF0YSBvbnRvIG11bHRpcGxlIGNvbW1pdHM/CisgICAgIyAgIC0gV3JpdGUgYW5kIHVzZSBhIEMgdG9vbCB0aGF0IGlzIGxpa2UgZ2l0LWJsYW1lLCBidXQKKyAgICAjICAgICBvcGVyYXRlcyBvbiBtdWx0aXBsZSBmaWxlcyB3aXRoIGZpbGUgZ3JhbnVsYXJpdHksIGluc3RlYWQKKyAgICAjICAgICBvZiBvbmUgZmlsZSB3aXRoIGxpbmUgZ3JhbnVsYXJpdHkuICBDYWNoZQorICAgICMgICAgIG1vc3QtcmVjZW50bHktbW9kaWZpZWQgaW4gJHNlbGYtPntjb21taXRSZWZDYWNoZX17JHJldkNvbW1pdH0uCisgICAgIyAgICAgVHJ5IHRvIGJlIGludGVsbGlnZW50IGFib3V0IGhvdyBtYW55IGZpbGVzIHdlIGRvIHdpdGgKKyAgICAjICAgICBvbmUgZm9yayAocGVyaGFwcyBvbmUgZGlyZWN0b3J5IGF0IGEgdGltZSwgd2l0aG91dCByZWN1cnNpb24sCisgICAgIyAgICAgYW5kL29yIGluY2x1ZGUgZGlyZWN0b3J5IGFzIG9uZSBsaW5lIGl0ZW0sIHJlY3Vyc2UgZnJvbSBoZXJlCisgICAgIyAgICAgaW5zdGVhZCBvZiBpbiBDIHRvb2w/KS4KKyAgICAjICAgLSBQZXJoYXBzIHdlIGNvdWxkIGFzayB0aGUgREIgZm9yIChmaWxlbmFtZSxmaWxlSGFzaCksCisgICAgIyAgICAgYW5kIGp1c3QgZ3Vlc3MgdGhhdCBpdCBpcyBjb3JyZWN0ICh0aGF0IHRoZSBmaWxlIGhhZG4ndAorICAgICMgICAgIGNoYW5nZWQgYmV0d2VlbiAkcmV2Q29tbWl0IGFuZCB0aGUgZm91bmQgY29tbWl0LCB0aGVuCisgICAgIyAgICAgY2hhbmdlZCBiYWNrLCBjb25mdXNpbmcgYW55dGhpbmcgdHJ5aW5nIHRvIGludGVycHJldAorICAgICMgICAgIGhpc3RvcnkpLiAgUHJvYmFibHkgbmVlZCB0byBhZGQgYW5vdGhlciBpbmRleCB0byByZXZpc2lvbnMKKyAgICAjICAgICBEQiB0YWJsZSBmb3IgdGhpcy4KKyAgICAjICAgLSBOT1RFOiBUcnlpbmcgdG8gc3RvcmUgYWxsIChjb21taXQsZmlsZSkga2V5cyBpbiBEQiBbdG8KKyAgICAjICAgICBmaW5kICJsYXN0TW9kZmllZENvbW1pdF0gKGluc3RlYWQgb2YKKyAgICAjICAgICBqdXN0IGZpbGVzIHRoYXQgY2hhbmdlZCBpbiBlYWNoIGNvbW1pdCBhcyB3ZSBkbyBub3cpIGlzCisgICAgIyAgICAgcHJvYmFibHkgbm90IHByYWN0aWNhbCBmcm9tIGEgZGlzayBzcGFjZSBwZXJzcGVjdGl2ZS4KKworICAgICAgICAjIERvZXMgdGhlIGZpbGUgZXhpc3QgaW4gJHJldkNvbW1pdD8KKyAgICAjIFRPRE86IEluY2x1ZGUgZmlsZSBoYXNoIGluIGRpcm1hcCBjYWNoZS4KKyAgICBteSgkZGlyTWFwKT0kc2VsZi0+Z2V0UmV2aXNpb25EaXJNYXAoJHJldkNvbW1pdCk7CisgICAgbXkoJGRpciwkZmlsZSk9KCRmaWxlbmFtZT1+bSVeKD86KC4qKS8pPyhbXi9dKiQpJSk7CisgICAgaWYoIWRlZmluZWQoJGRpcikpCisgICAgeworICAgICAgICAkZGlyPSIiOworICAgIH0KKyAgICBpZiggIWRlZmluZWQoJGRpck1hcC0+eyRkaXJ9KSB8fAorICAgICAgICAhZGVmaW5lZCgkZGlyTWFwLT57JGRpcn17JGZpbGVuYW1lfSkgKQorICAgIHsKKyAgICAgICAgbXkoJGZpbGVIYXNoKT0iZGVsZXRlZCI7CisKKyAgICAgICAgbXkoJHJldFZhbCk9e307CisgICAgICAgICRyZXRWYWwtPntuYW1lfT0kZmlsZW5hbWU7CisgICAgICAgICRyZXRWYWwtPntmaWxlaGFzaH09JGZpbGVIYXNoOworCisgICAgICAgICAgICAjIG5vdCBuZWVkZWQgYW5kIGRpZmZpY3VsdCB0byBjb21wdXRlOgorICAgICAgICAkcmV0VmFsLT57cmV2aXNpb259PSIwIjsgICMgJHJldmlzaW9uOworICAgICAgICAkcmV0VmFsLT57Y29tbWl0aGFzaH09JHJldkNvbW1pdDsKKyAgICAgICAgIyRyZXRWYWwtPnthdXRob3J9PSRjb21taXQtPnthdXRob3J9OworICAgICAgICAjJHJldFZhbC0+e21vZGlmaWVkfT1jb252ZXJ0VG9DdnNEYXRlKCRjb21taXQtPntkYXRlfSk7CisgICAgICAgICMkcmV0VmFsLT57bW9kZX09Y29udmVydFRvRGJNb2RlKCRtb2RlKTsKKworICAgICAgICByZXR1cm4gJHJldFZhbDsKKyAgICB9CisKKyAgICBteSgkZmlsZUhhc2gpPXNhZmVfcGlwZV9jYXB0dXJlKCJnaXQiLCJyZXYtcGFyc2UiLCIkcmV2Q29tbWl0OiRmaWxlbmFtZSIpOworICAgIGNob21wICRmaWxlSGFzaDsKKyAgICBpZighKCRmaWxlSGFzaD1+L15bMC05YS1mXXs0MH0kLykpCisgICAgeworICAgICAgICBkaWUgIkludmFsaWQgZmlsZUhhc2ggJyRmaWxlSGFzaCcgbG9va2luZyB1cCIKKyAgICAgICAgICAgICAgICAgICAgLiIgJyRyZXZDb21taXQ6JGZpbGVuYW1lJ1xuIjsKKyAgICB9CisKKyAgICAjIGluZm9ybWF0aW9uIGFib3V0IG1vc3QgcmVjZW50IGNvbW1pdCB0byBtb2RpZnkgJGZpbGVuYW1lOgorICAgIG9wZW4obXkgJGdpdExvZ1BpcGUsICctfCcsICdnaXQnLCAncmV2LWxpc3QnLAorICAgICAgICAgJy0tbWF4LWNvdW50PTEnLCAnLS1wcmV0dHknLCAnLS1wYXJlbnRzJywKKyAgICAgICAgICRyZXZDb21taXQsICctLScsICRmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBvciBkaWUgIkNhbm5vdCBjYWxsIGdpdC1yZXYtbGlzdDogJCEiOworICAgIG15IEBjb21taXRzPXJlYWRDb21taXRzKCRnaXRMb2dQaXBlKTsKKyAgICBjbG9zZSAkZ2l0TG9nUGlwZTsKKyAgICBpZihzY2FsYXIoQGNvbW1pdHMpIT0xKQorICAgIHsKKyAgICAgICAgZGllICJDYW4ndCBmaW5kIG1vc3QgcmVjZW50IGNvbW1pdCBjaGFuZ2luZyAkZmlsZW5hbWVcbiI7CisgICAgfQorICAgIG15KCRjb21taXQpPSRjb21taXRzWzBdOworICAgIGlmKCAhZGVmaW5lZCgkY29tbWl0KSB8fCAhZGVmaW5lZCgkY29tbWl0LT57aGFzaH0pICkKKyAgICB7CisgICAgICAgIHJldHVybiB1bmRlZjsKKyAgICB9CisKKyAgICAjIGRvZXMgdGhpcyAoY29tbWl0LGZpbGUpIGhhdmUgYSByZWFsIGFzc2lnbmVkIENWUyByZXZpc2lvbiBudW1iZXI/CisgICAgbXkgJHRhYmxlbmFtZV9yZXYgPSAkc2VsZi0+dGFibGVuYW1lKCJyZXZpc2lvbiIpOworICAgIG15ICRkYl9xdWVyeTsKKyAgICAkZGJfcXVlcnkgPSAkc2VsZi0+e2RiaH0tPnByZXBhcmVfY2FjaGVkKAorICAgICAgICAiU0VMRUNUICogRlJPTSAkdGFibGVuYW1lX3JldiBXSEVSRSBuYW1lPT8gQU5EIGNvbW1pdGhhc2g9PyIsCisgICAgICAgIHt9LDEpOworICAgICRkYl9xdWVyeS0+ZXhlY3V0ZSgkZmlsZW5hbWUsICRjb21taXQtPntoYXNofSk7CisgICAgbXkoJG1ldGEpPSRkYl9xdWVyeS0+ZmV0Y2hyb3dfaGFzaHJlZjsKKyAgICBpZigkbWV0YSkKKyAgICB7CisgICAgICAgICRtZXRhLT57cmV2aXNpb259ID0gIjEuJG1ldGEtPntyZXZpc2lvbn0iOworICAgICAgICByZXR1cm4gJG1ldGE7CisgICAgfQorCisgICAgIyBmYWxsIGJhY2sgb24gc3BlY2lhbCByZXZpc2lvbiBudW1iZXIKKyAgICBteSgkcmV2aXNpb24pPSRjb21taXQtPntoYXNofTsKKyAgICAkcmV2aXNpb249fnMvKC4uKS8nLicgLiAoaGV4KCQxKSsxMDApL2VnOworICAgICRyZXZpc2lvbj0iMi4xLjEuMjAwMCRyZXZpc2lvbiI7CisKKyAgICAjIG1ldGEgZGF0YSBhYm91dCAkZmlsZW5hbWU6CisgICAgb3BlbihteSAkZmlsZVBpcGUsICctfCcsICdnaXQnLCAnbHMtdHJlZScsICcteicsCisgICAgICAgICAgICAgICAgJGNvbW1pdC0+e2hhc2h9LCAnLS0nLCAkZmlsZW5hbWUpCisgICAgICAgICAgICBvciBkaWUoIkNhbm5vdCBjYWxsIGdpdC1scy10cmVlIDogJCEiKTsKKyAgICBsb2NhbCAkLyA9ICJcMCI7CisgICAgbXkgJGxpbmU7CisgICAgJGxpbmU9PCRmaWxlUGlwZT47CisgICAgaWYoZGVmaW5lZCg8JGZpbGVQaXBlPikpCisgICAgeworICAgICAgICBkaWUgIkV4cGVjdGVkIG9ubHkgYSBzaW5nbGUgZmlsZSBmb3IgZ2l0LWxzLXRyZWUgJGZpbGVuYW1lXG4iOworICAgIH0KKyAgICBjbG9zZSAkZmlsZVBpcGU7CisKKyAgICBjaG9tcCAkbGluZTsKKyAgICB1bmxlc3MgKCAkbGluZT1+bS9eKFxkKylccysoXHcrKVxzKyhbYS16QS1aMC05XSspXHQoLiopJC9vICkKKyAgICB7CisgICAgICAgIGRpZSgiQ291bGRuJ3QgcHJvY2VzcyBnaXQtbHMtdHJlZSBsaW5lIDogJGxpbmVcbiIpOworICAgIH0KKyAgICBteSAoICRtb2RlLCAkZ2l0X3R5cGUsICRnaXRfaGFzaCwgJGdpdF9maWxlbmFtZSApID0gKCAkMSwgJDIsICQzLCAkNCApOworCisgICAgIyBzYXZlIHJlc3VsdDoKKyAgICBteSgkcmV0VmFsKT17fTsKKyAgICAkcmV0VmFsLT57bmFtZX09JGZpbGVuYW1lOworICAgICRyZXRWYWwtPntyZXZpc2lvbn09JHJldmlzaW9uOworICAgICRyZXRWYWwtPntmaWxlaGFzaH09JGZpbGVIYXNoOworICAgICRyZXRWYWwtPntjb21taXRoYXNofT0kcmV2Q29tbWl0OworICAgICRyZXRWYWwtPnthdXRob3J9PSRjb21taXQtPnthdXRob3J9OworICAgICRyZXRWYWwtPnttb2RpZmllZH09Y29udmVydFRvQ3ZzRGF0ZSgkY29tbWl0LT57ZGF0ZX0pOworICAgICRyZXRWYWwtPnttb2RlfT1jb252ZXJ0VG9EYk1vZGUoJG1vZGUpOworCisgICAgcmV0dXJuICRyZXRWYWw7Cit9CisKKz1oZWFkMiBsb29rdXBDb21taXRSZWYKKworQ29udmVydCB0YWcvYnJhbmNoL2FiYnJldmlhdGlvbi9ldGMgaW50byBhIGNvbW1pdCBzaGExIGhhc2guICBDYWNoZXMKK3RoZSByZXN1bHQgc28gbG9va2luZyBpdCB1cCBhZ2FpbiBpcyBmYXN0LgorCis9Y3V0CisKK3N1YiBsb29rdXBDb21taXRSZWYKK3sKKyAgICBteSAkc2VsZiA9IHNoaWZ0OworICAgIG15ICRyZWYgPSBzaGlmdDsKKworICAgIG15ICRjb21taXRIYXNoID0gJHNlbGYtPntjb21taXRSZWZDYWNoZX17JHJlZn07CisgICAgaWYoZGVmaW5lZCgkY29tbWl0SGFzaCkpCisgICAgeworICAgICAgICByZXR1cm4gJGNvbW1pdEhhc2g7CisgICAgfQorCisgICAgJGNvbW1pdEhhc2g9c2FmZV9waXBlX2NhcHR1cmUoImdpdCIsInJldi1wYXJzZSIsIi0tdmVyaWZ5IiwiLS1xdWlldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGYtPnVuZXNjYXBlUmVmTmFtZSgkcmVmKSk7CisgICAgJGNvbW1pdEhhc2g9fnMvXHMqJC8vOworICAgIGlmKCEoJGNvbW1pdEhhc2g9fi9eWzAtOWEtZl17NDB9JC8pKQorICAgIHsKKyAgICAgICAgJGNvbW1pdEhhc2g9dW5kZWY7CisgICAgfQorCisgICAgaWYoIGRlZmluZWQoJGNvbW1pdEhhc2gpICkKKyAgICB7CisgICAgICAgIG15ICR0eXBlPXNhZmVfcGlwZV9jYXB0dXJlKCJnaXQiLCJjYXQtZmlsZSIsIi10IiwkY29tbWl0SGFzaCk7CisgICAgICAgIGlmKCAhICgkdHlwZT1+L15jb21taXRccyokLyApICkKKyAgICAgICAgeworICAgICAgICAgICAgJGNvbW1pdEhhc2g9dW5kZWY7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYoZGVmaW5lZCgkY29tbWl0SGFzaCkpCisgICAgeworICAgICAgICAkc2VsZi0+e2NvbW1pdFJlZkNhY2hlfXskcmVmfT0kY29tbWl0SGFzaDsKKyAgICB9CisgICAgcmV0dXJuICRjb21taXRIYXNoOworfQorCis9aGVhZDIgY2xlYXJDb21taXRSZWZDYWNoZXMKKworQ2xlYXJzIGNhY2hlZCBjb21taXQgY2FjaGUgKHNoYTEncyBmb3IgdmFyaW91cyB0YWdzL2FiYmV2aWF0aW9ucy9ldGMpLAorYW5kIHJlbGF0ZWQgY2FjaGVzLgorCis9Y3V0CisKK3N1YiBjbGVhckNvbW1pdFJlZkNhY2hlcworeworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgJHNlbGYtPntjb21taXRSZWZDYWNoZX0gPSB7fTsKKyAgICAkc2VsZi0+e3JldmlzaW9uRGlyTWFwQ2FjaGV9ID0gdW5kZWY7CisgICAgJHNlbGYtPntnZXRoZWFkX2NhY2hlfSA9IHVuZGVmOworfQorCiA9aGVhZDIgY29tbWl0bWVzc2FnZQogCiB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgY29tbWl0aGFzaCBhbmQgcmV0dXJucyB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHRoYXQgY29tbWl0CkBAIC0zNzQ1LDYgKzQ5NDcsOTcgQEAKICAgICByZXR1cm4gJHJlc3VsdDsKIH0KIAorPWhlYWQyIGVzY2FwZVJlZk5hbWUKKworQXBwbHkgYW4gZXNjYXBlIG1lY2hhbmlzbSB0byBjb21wZW5zYXRlIGZvciBjaGFyYWN0ZXJzIHRoYXQKK2dpdCByZWYgbmFtZXMgY2FuIGhhdmUgdGhhdCBDVlMgdGFncyBjYW4gbm90LgorCis9Y3V0CitzdWIgZXNjYXBlUmVmTmFtZQoreworICAgIG15KCRzZWxmLCRyZWZOYW1lKT1AXzsKKworICAgICMgQ1ZTIG9mZmljaWFsbHkgb25seSBhbGxvd3MgWy1fQS1aYS16MC05XSBpbiB0YWcgbmFtZXMgKG9yIGluCisgICAgIyBtYW55IGNvbnRleHRzIGl0IGNhbiBhbHNvIGJlIGEgQ1ZTIHJldmlzaW9uIG51bWJlcikuCisgICAgIworICAgICMgR2l0IHRhZ3MgY29tbW9ubHkgdXNlICcvJyBhbmQgJy4nIGFzIHdlbGwsIGJ1dCBhbHNvIGhhbmRsZQorICAgICMgYW55dGhpbmcgZWxzZSBqdXN0IGluIGNhc2U6CisgICAgIworICAgICMgICA9ICJfLXMtIiAgRm9yICcvJy4KKyAgICAjICAgPSAiXy1wLSIgIEZvciAnLicuCisgICAgIyAgID0gIl8tdS0iICBGb3IgdW5kZXJzY29yZSwgaW4gY2FzZSBzb21lb25lIHdhbnRzIGEgbGl0ZXJhbCAiXy0iIGluCisgICAgIyAgICAgYSB0YWcgbmFtZS4KKyAgICAjICAgPSAiXy14eC0iIFdoZXJlICJ4eCIgaXMgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICMgICAgIGRlc2lyZWQgQVNDSUkgY2hhcmFjdGVyIGJ5dGUuIChmb3IgYW55dGhpbmcgZWxzZSkKKworICAgIGlmKCEgJHJlZk5hbWU9fi9eWzEtOV1bMC05XSooXC5bMS05XVswLTldKikqJC8pCisgICAgeworICAgICAgICAkcmVmTmFtZT1+cy9fLS9fLXUtLS9nOworICAgICAgICAkcmVmTmFtZT1+cy9cLi9fLXAtL2c7CisgICAgICAgICRyZWZOYW1lPX5zJS8lXy1zLSVnOworICAgICAgICAkcmVmTmFtZT1+cy9bXi1fYS16QS1aMC05XS9zcHJpbnRmKCJfLSUwMngtIiwkMSkvZWc7CisgICAgfQorfQorCis9aGVhZDIgdW5lc2NhcGVSZWZOYW1lCisKK1VuZG8gYW4gZXNjYXBlIG1lY2hhbmlzbSB0byBjb21wZW5zYXRlIGZvciBjaGFyYWN0ZXJzIHRoYXQKK2dpdCByZWYgbmFtZXMgY2FuIGhhdmUgdGhhdCBDVlMgdGFncyBjYW4gbm90LgorCis9Y3V0CitzdWIgdW5lc2NhcGVSZWZOYW1lCit7CisgICAgbXkoJHNlbGYsJHJlZk5hbWUpPUBfOworCisgICAgIyBzZWUgZXNjYXBlUmVmTmFtZSgpIGZvciBkZXNjcmlwdGlvbiBvZiBlc2NhcGUgbWVjaGFuaXNtLgorCisgICAgJHJlZk5hbWU9fnMvXy0oW3NwdV18WzAtOWEtZl1bMC05YS1mXSktL3VuZXNjYXBlUmVmTmFtZUNoYXIoJDEpL2VnOworCisgICAgIyBhbGxvd2VkIHRhZyBuYW1lcworICAgICMgVE9ETzogUGVyaGFwcyB1c2UgZ2l0IGNoZWNrLXJlZi1mb3JtYXQsIHdpdGggYW4gaW4tcHJvY2VzcyBjYWNoZSBvZgorICAgICMgIHZhbGlkYXRlZCBuYW1lcz8KKyAgICBpZiggISggJHJlZk5hbWU9fm0lXlteLV1bLWEtekEtWjAtOV8vLl0qJCUgKSB8fAorICAgICAgICAoICRyZWZOYW1lPX5tJVsvLl0kJSApIHx8CisgICAgICAgICggJHJlZk5hbWU9fi9cLmxvY2skLyApIHx8CisgICAgICAgICggJHJlZk5hbWU9fm0lXC5cLnwvXC58W1tcXDo/Kn5dfFxAXHslICkgKSAgIyBtYXRjaGluZyB9CisgICAgeworICAgICAgICAjIEVycm9yOgorICAgICAgICAkbG9nLT53YXJuKCJpbGxlZ2FsIHJlZk5hbWU6ICRyZWZOYW1lIik7CisgICAgICAgICRyZWZOYW1lPXVuZGVmOworICAgIH0KKyAgICByZXR1cm4gJHJlZk5hbWU7Cit9CisKK3N1YiB1bmVzY2FwZVJlZk5hbWVDaGFyCit7CisgICAgbXkoJGNoYXIpPUBfOworCisgICAgaWYoJGNoYXIgZXEgInMiKQorICAgIHsKKyAgICAgICAgJGNoYXI9Ii8iOworICAgIH0KKyAgICBlbHNpZigkY2hhciBlcSAicCIpCisgICAgeworICAgICAgICAkY2hhcj0iLiI7CisgICAgfQorICAgIGVsc2lmKCRjaGFyIGVxICJ1IikKKyAgICB7CisgICAgICAgICRjaGFyPSJfIjsKKyAgICB9CisgICAgZWxzaWYoJGNoYXI9fi9eWzAtOWEtZl1bMC05YS1mXSQvKQorICAgIHsKKyAgICAgICAgJGNoYXI9Y2hyKGhleCgkY2hhcikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAjIEVycm9yIGNhc2U6IE1heWJlIGl0IGhhcyBjb21lIHN0cmFpZ2h0IGZyb20gdXNlciwgYW5kCisgICAgICAgICMgd2Fzbid0IHN1cHBvc2VkIHRvIGJlIGVzY2FwZWQ/ICBSZXN0b3JlIGl0IHRoZSB3YXkgd2UgZ290IGl0OgorICAgICAgICAkY2hhcj0iXy0kY2hhci0iOworICAgIH0KKworICAgIHJldHVybiAkY2hhcjsKK30KKwogPWhlYWQyIGluX2FycmF5KCkKIAogZnJvbSBBcnJheTo6UEFUIC0gbWltaWNzIHRoZSBpbl9hcnJheSgpIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9naXQtZGlmZnRvb2wucGVybCBiL2dpdC1kaWZmdG9vbC5wZXJsCmluZGV4IGVkZDA0OTMuLmU1N2QzZDEyIDEwMDc1NQotLS0gYS9naXQtZGlmZnRvb2wucGVybAorKysgYi9naXQtZGlmZnRvb2wucGVybApAQCAtMTMsOSArMTMsOSBAQAogdXNlIDUuMDA4OwogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKK3VzZSBFcnJvciBxdyg6dHJ5KTsKIHVzZSBGaWxlOjpCYXNlbmFtZSBxdyhkaXJuYW1lKTsKIHVzZSBGaWxlOjpDb3B5OwotdXNlIEZpbGU6OkNvbXBhcmU7CiB1c2UgRmlsZTo6RmluZDsKIHVzZSBGaWxlOjpzdGF0OwogdXNlIEZpbGU6OlBhdGggcXcobWtwYXRoIHJtdHJlZSk7CkBAIC01OSw1NyArNTksMTYgQEAKIAlyZXR1cm4gJHdvcmt0cmVlOwogfQogCi1zdWIgZmlsdGVyX3Rvb2xfc2NyaXB0cwotewotCW15ICgkdG9vbHMpID0gQF87Ci0JaWYgKC1kICRfKSB7Ci0JCWlmICgkXyBuZSAiLiIpIHsKLQkJCSMgSWdub3JlIGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzCi0JCQkkRmlsZTo6RmluZDo6cHJ1bmUgPSAxOwotCQl9Ci0JfSBlbHNlIHsKLQkJaWYgKCgtZiAkXykgJiYgKCRfIG5lICJkZWZhdWx0cyIpKSB7Ci0JCQlwdXNoKEAkdG9vbHMsICRfKTsKLQkJfQotCX0KLX0KLQogc3ViIHByaW50X3Rvb2xfaGVscAogewotCW15ICgkY21kLCBAZm91bmQsIEBub3Rmb3VuZCwgQHRvb2xzKTsKLQlteSAkZ2l0cGF0aCA9IEdpdDo6ZXhlY19wYXRoKCk7CisJbXkgJGNtZCA9ICdUT09MX01PREU9ZGlmZic7CisJJGNtZCAuPSAnICYmIC4gIiQoZ2l0IC0tZXhlYy1wYXRoKS9naXQtbWVyZ2V0b29sLS1saWIiJzsKKwkkY21kIC49ICcgJiYgc2hvd190b29sX2hlbHAnOwogCi0JZmluZChzdWIgeyBmaWx0ZXJfdG9vbF9zY3JpcHRzKFxAdG9vbHMpIH0sICIkZ2l0cGF0aC9tZXJnZXRvb2xzIik7Ci0KLQlmb3JlYWNoIG15ICR0b29sIChAdG9vbHMpIHsKLQkJJGNtZCAgPSAiVE9PTF9NT0RFPWRpZmYiOwotCQkkY21kIC49ICcgJiYgLiAiJChnaXQgLS1leGVjLXBhdGgpL2dpdC1tZXJnZXRvb2wtLWxpYiInOwotCQkkY21kIC49ICIgJiYgZ2V0X21lcmdlX3Rvb2xfcGF0aCAkdG9vbCA+L2Rldi9udWxsIDI+JjEiOwotCQkkY21kIC49ICIgJiYgY2FuX2RpZmYgPi9kZXYvbnVsbCAyPiYxIjsKLQkJaWYgKHN5c3RlbSgnc2gnLCAnLWMnLCAkY21kKSA9PSAwKSB7Ci0JCQlwdXNoKEBmb3VuZCwgJHRvb2wpOwotCQl9IGVsc2UgewotCQkJcHVzaChAbm90Zm91bmQsICR0b29sKTsKLQkJfQotCX0KLQotCXByaW50IDw8ICdFT0YnOwotJ2dpdCBkaWZmdG9vbCAtLXRvb2w9PHRvb2w+JyBtYXkgYmUgc2V0IHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotRU9GCi0JcHJpbnQgIlx0JF9cbiIgZm9yIChzb3J0KEBmb3VuZCkpOwotCi0JcHJpbnQgPDwgJ0VPRic7Ci0KLVRoZSBmb2xsb3dpbmcgdG9vbHMgYXJlIHZhbGlkLCBidXQgbm90IGN1cnJlbnRseSBhdmFpbGFibGU6Ci1FT0YKLQlwcmludCAiXHQkX1xuIiBmb3IgKHNvcnQoQG5vdGZvdW5kKSk7Ci0KLQlwcmludCA8PCAnRU9GJzsKLQotTk9URTogU29tZSBvZiB0aGUgdG9vbHMgbGlzdGVkIGFib3ZlIG9ubHkgd29yayBpbiBhIHdpbmRvd2VkCi1lbnZpcm9ubWVudC4gSWYgcnVuIGluIGEgdGVybWluYWwtb25seSBzZXNzaW9uLCB0aGV5IHdpbGwgZmFpbC4KLUVPRgotCWV4aXQoMCk7CisJIyBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIGJvdHRvbSBvZiBmaWxlX2RpZmYoKSBmb3IgdGhlIHJlYXNvbiBiZWhpbmQKKwkjIHVzaW5nIHN5c3RlbSgpIGZvbGxvd2VkIGJ5IGV4aXQoKSBpbnN0ZWFkIG9mIGV4ZWMoKS4KKwlteSAkcmMgPSBzeXN0ZW0oJ3NoJywgJy1jJywgJGNtZCk7CisJZXhpdCgkcmMgfCAoJHJjID4+IDgpKTsKIH0KIAogc3ViIGV4aXRfY2xlYW51cApAQCAtMTI0LDYgKzgzLDU0IEBACiAJZXhpdCgkc3RhdHVzIHwgKCRzdGF0dXMgPj4gOCkpOwogfQogCitzdWIgdXNlX3d0X2ZpbGUKK3sKKwlteSAoJHJlcG8sICR3b3JrZGlyLCAkZmlsZSwgJHNoYTEpID0gQF87CisJbXkgJG51bGxfc2hhMSA9ICcwJyB4IDQwOworCisJaWYgKCEgLWUgIiR3b3JrZGlyLyRmaWxlIikgeworCQkjIElmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHdvcmtpbmcgdHJlZSwgd2UgY2Fubm90CisJCSMgdXNlIGl0LgorCQlyZXR1cm4gKDAsICRudWxsX3NoYTEpOworCX0KKworCW15ICR3dF9zaGExID0gJHJlcG8tPmNvbW1hbmRfb25lbGluZSgnaGFzaC1vYmplY3QnLCAiJHdvcmtkaXIvJGZpbGUiKTsKKwlteSAkdXNlID0gKCRzaGExIGVxICRudWxsX3NoYTEpIHx8ICgkc2hhMSBlcSAkd3Rfc2hhMSk7CisJcmV0dXJuICgkdXNlLCAkd3Rfc2hhMSk7Cit9CisKK3N1YiBjaGFuZ2VkX2ZpbGVzCit7CisJbXkgKCRyZXBvX3BhdGgsICRpbmRleCwgJHdvcmt0cmVlKSA9IEBfOworCSRFTlZ7R0lUX0lOREVYX0ZJTEV9ID0gJGluZGV4OworCSRFTlZ7R0lUX1dPUktfVFJFRX0gPSAkd29ya3RyZWU7CisJbXkgJG11c3RfdW5zZXRfZ2l0X2RpciA9IDA7CisJaWYgKG5vdCBkZWZpbmVkKCRFTlZ7R0lUX0RJUn0pKSB7CisJCSRtdXN0X3Vuc2V0X2dpdF9kaXIgPSAxOworCQkkRU5We0dJVF9ESVJ9ID0gJHJlcG9fcGF0aDsKKwl9CisKKwlteSBAcmVmcmVzaGFyZ3MgPSBxdy91cGRhdGUtaW5kZXggLS1yZWFsbHktcmVmcmVzaCAtcSAtLXVubWVyZ2VkLzsKKwlteSBAZ2l0YXJncyA9IHF3L2RpZmYtZmlsZXMgLS1uYW1lLW9ubHkgLXovOworCXRyeSB7CisJCUdpdDo6Y29tbWFuZF9vbmVsaW5lKEByZWZyZXNoYXJncyk7CisJfSBjYXRjaCBHaXQ6OkVycm9yOjpDb21tYW5kIHdpdGgge307CisKKwlteSAkbGluZSA9IEdpdDo6Y29tbWFuZF9vbmVsaW5lKEBnaXRhcmdzKTsKKwlteSBAZmlsZXM7CisJaWYgKGRlZmluZWQgJGxpbmUpIHsKKwkJQGZpbGVzID0gc3BsaXQoJ1wwJywgJGxpbmUpOworCX0gZWxzZSB7CisJCUBmaWxlcyA9ICgpOworCX0KKworCWRlbGV0ZSgkRU5We0dJVF9JTkRFWF9GSUxFfSk7CisJZGVsZXRlKCRFTlZ7R0lUX1dPUktfVFJFRX0pOworCWRlbGV0ZSgkRU5We0dJVF9ESVJ9KSBpZiAoJG11c3RfdW5zZXRfZ2l0X2Rpcik7CisKKwlyZXR1cm4gbWFwIHsgJF8gPT4gMSB9IEBmaWxlczsKK30KKwogc3ViIHNldHVwX2Rpcl9kaWZmCiB7CiAJbXkgKCRyZXBvLCAkd29ya2RpciwgJHN5bWxpbmtzKSA9IEBfOwpAQCAtMTQ3LDYgKzE1NCw3IEBACiAJbXkgJG51bGxfc2hhMSA9ICcwJyB4IDQwOwogCW15ICRsaW5kZXggPSAnJzsKIAlteSAkcmluZGV4ID0gJyc7CisJbXkgJHd0aW5kZXggPSAnJzsKIAlteSAlc3VibW9kdWxlOwogCW15ICVzeW1saW5rOwogCW15IEB3b3JraW5nX3RyZWUgPSAoKTsKQEAgLTIwMCwxMCArMjA4LDEzIEBACiAJCX0KIAogCQlpZiAoJHJtb2RlIG5lICRudWxsX21vZGUpIHsKLQkJCWlmICgkcnNoYTEgbmUgJG51bGxfc2hhMSkgewotCQkJCSRyaW5kZXggLj0gIiRybW9kZSAkcnNoYTFcdCRkc3RfcGF0aFwwIjsKKwkJCW15ICgkdXNlLCAkd3Rfc2hhMSkgPSB1c2Vfd3RfZmlsZSgkcmVwbywgJHdvcmtkaXIsCisJCQkJCQkJICAkZHN0X3BhdGgsICRyc2hhMSk7CisJCQlpZiAoJHVzZSkgeworCQkJCXB1c2ggQHdvcmtpbmdfdHJlZSwgJGRzdF9wYXRoOworCQkJCSR3dGluZGV4IC49ICIkcm1vZGUgJHd0X3NoYTFcdCRkc3RfcGF0aFwwIjsKIAkJCX0gZWxzZSB7Ci0JCQkJcHVzaChAd29ya2luZ190cmVlLCAkZHN0X3BhdGgpOworCQkJCSRyaW5kZXggLj0gIiRybW9kZSAkcnNoYTFcdCRkc3RfcGF0aFwwIjsKIAkJCX0KIAkJfQogCX0KQEAgLTI0NCwxMyArMjU1LDIxIEBACiAJJHJjID0gc3lzdGVtKCdnaXQnLCAnY2hlY2tvdXQtaW5kZXgnLCAnLS1hbGwnLCAiLS1wcmVmaXg9JHJkaXIvIik7CiAJZXhpdF9jbGVhbnVwKCR0bXBkaXIsICRyYykgaWYgJHJjICE9IDA7CiAKKwkkRU5We0dJVF9JTkRFWF9GSUxFfSA9ICIkdG1wZGlyL3d0aW5kZXgiOworCSgkaW5waXBlLCAkY3R4KSA9CisJCSRyZXBvLT5jb21tYW5kX2lucHV0X3BpcGUocXcodXBkYXRlLWluZGV4IC0taW5mby1vbmx5IC16IC0taW5kZXgtaW5mbykpOworCXByaW50KCRpbnBpcGUgJHd0aW5kZXgpOworCSRyZXBvLT5jb21tYW5kX2Nsb3NlX3BpcGUoJGlucGlwZSwgJGN0eCk7CisKIAkjIElmICRHSVRfRElSIHdhcyBleHBsaWNpdGx5IHNldCBqdXN0IGZvciB0aGUgdXBkYXRlL2NoZWNrb3V0CiAJIyBjb21tYW5kcywgdGhlbiBpdCBzaG91bGQgYmUgdW5zZXQgYmVmb3JlIGNvbnRpbnVpbmcuCiAJZGVsZXRlKCRFTlZ7R0lUX0RJUn0pIGlmICgkbXVzdF91bnNldF9naXRfZGlyKTsKIAlkZWxldGUoJEVOVntHSVRfSU5ERVhfRklMRX0pOwogCiAJIyBDaGFuZ2VzIGluIHRoZSB3b3JraW5nIHRyZWUgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBzaW5jZSB0aGV5IGFyZQotCSMgbm90IHBhcnQgb2YgdGhlIGluZGV4CisJIyBub3QgcGFydCBvZiB0aGUgaW5kZXguIFJlbW92ZSBhbnkgdHJhaWxpbmcgc2xhc2ggZnJvbSAkd29ya2RpcgorCSMgYmVmb3JlIHN0YXJ0aW5nIHRvIGF2b2lkIGRvdWJsZSBzbGFzaGVzIGluIHN5bWxpbmsgdGFyZ2V0cy4KKwkkd29ya2RpciA9fiBzfC8kfHw7CiAJZm9yIG15ICRmaWxlIChAd29ya2luZ190cmVlKSB7CiAJCW15ICRkaXIgPSBkaXJuYW1lKCRmaWxlKTsKIAkJdW5sZXNzICgtZCAiJHJkaXIvJGRpciIpIHsKQEAgLTM3Nyw3ICszOTYsNyBAQAogCX0KIAlpZiAoJG9wdHN7Z3VpfSkgewogCQlteSAkZ3VpdG9vbCA9IEdpdDo6Y29uZmlnKCdkaWZmLmd1aXRvb2wnKTsKLQkJaWYgKGxlbmd0aCgkZ3VpdG9vbCkgPiAwKSB7CisJCWlmIChkZWZpbmVkKCRndWl0b29sKSAmJiBsZW5ndGgoJGd1aXRvb2wpID4gMCkgewogCQkJJEVOVntHSVRfRElGRl9UT09MfSA9ICRndWl0b29sOwogCQl9CiAJfQpAQCAtNDE0LDE5ICs0MzMsMzQgQEAKIAkjIHNob3VsZCBiZSBjb3BpZWQgYmFjayB0byB0aGUgd29ya2luZyB0cmVlLgogCSMgRG8gbm90IGNvcHkgYmFjayBmaWxlcyB3aGVuIHN5bWxpbmtzIGFyZSB1c2VkIGFuZCB0aGUKIAkjIGV4dGVybmFsIHRvb2wgZGlkIG5vdCByZXBsYWNlIHRoZSBvcmlnaW5hbCBsaW5rIHdpdGggYSBmaWxlLgorCSMKKwkjIFRoZXNlIGhhc2hlcyBhcmUgbG9hZGVkIGxhemlseSBzaW5jZSB0aGV5IGFyZW4ndCBuZWVkZWQKKwkjIGluIHRoZSBjb21tb24gY2FzZSBvZiAtLXN5bWxpbmtzIGFuZCB0aGUgZGlmZnRvb2wgdXBkYXRpbmcKKwkjIGZpbGVzIHRocm91Z2ggdGhlIHN5bWxpbmsuCisJbXkgJXd0X21vZGlmaWVkOworCW15ICV0bXBfbW9kaWZpZWQ7CisJbXkgJGluZGljZXNfbG9hZGVkID0gMDsKKwogCWZvciBteSAkZmlsZSAoQHdvcmt0cmVlKSB7CiAJCW5leHQgaWYgJHN5bWxpbmtzICYmIC1sICIkYi8kZmlsZSI7CiAJCW5leHQgaWYgISAtZiAiJGIvJGZpbGUiOwogCi0JCW15ICRkaWZmID0gY29tcGFyZSgiJGIvJGZpbGUiLCAiJHdvcmtkaXIvJGZpbGUiKTsKLQkJaWYgKCRkaWZmID09IDApIHsKLQkJCW5leHQ7Ci0JCX0gZWxzaWYgKCRkaWZmID09IC0xKSB7Ci0JCQlteSAkZXJybXNnID0gIndhcm5pbmc6IENvdWxkIG5vdCBjb21wYXJlICI7Ci0JCQkkZXJybXNnICs9ICInJGIvJGZpbGUnIHdpdGggJyR3b3JrZGlyLyRmaWxlJ1xuIjsKKwkJaWYgKCEkaW5kaWNlc19sb2FkZWQpIHsKKwkJCSV3dF9tb2RpZmllZCA9IGNoYW5nZWRfZmlsZXMoJHJlcG8tPnJlcG9fcGF0aCgpLAorCQkJCSIkdG1wZGlyL3d0aW5kZXgiLCAiJHdvcmtkaXIiKTsKKwkJCSV0bXBfbW9kaWZpZWQgPSBjaGFuZ2VkX2ZpbGVzKCRyZXBvLT5yZXBvX3BhdGgoKSwKKwkJCQkiJHRtcGRpci93dGluZGV4IiwgIiRiIik7CisJCQkkaW5kaWNlc19sb2FkZWQgPSAxOworCQl9CisKKwkJaWYgKGV4aXN0cyAkd3RfbW9kaWZpZWR7JGZpbGV9IGFuZCBleGlzdHMgJHRtcF9tb2RpZmllZHskZmlsZX0pIHsKKwkJCW15ICRlcnJtc2cgPSAid2FybmluZzogQm90aCBmaWxlcyBtb2RpZmllZDogIjsKKwkJCSRlcnJtc2cgLj0gIickd29ya2Rpci8kZmlsZScgYW5kICckYi8kZmlsZScuXG4iOworCQkJJGVycm1zZyAuPSAid2FybmluZzogV29ya2luZyB0cmVlIGZpbGUgaGFzIGJlZW4gbGVmdC5cbiI7CisJCQkkZXJybXNnIC49ICJ3YXJuaW5nOlxuIjsKIAkJCXdhcm4gJGVycm1zZzsKIAkJCSRlcnJvciA9IDE7Ci0JCX0gZWxzaWYgKCRkaWZmID09IDEpIHsKKwkJfSBlbHNpZiAoZXhpc3RzICR0bXBfbW9kaWZpZWR7JGZpbGV9KSB7CiAJCQlteSAkbW9kZSA9IHN0YXQoIiRiLyRmaWxlIiktPm1vZGU7CiAJCQljb3B5KCIkYi8kZmlsZSIsICIkd29ya2Rpci8kZmlsZSIpIG9yCiAJCQlleGl0X2NsZWFudXAoJHRtcGRpciwgMSk7CmRpZmYgLS1naXQgYS9naXQtZmlsdGVyLWJyYW5jaC5zaCBiL2dpdC1maWx0ZXItYnJhbmNoLnNoCmluZGV4IDUzMTQyNDkuLmFjMmEwMDUgMTAwNzU1Ci0tLSBhL2dpdC1maWx0ZXItYnJhbmNoLnNoCisrKyBiL2dpdC1maWx0ZXItYnJhbmNoLnNoCkBAIC0xOTksNiArMTk5LDcgQEAKIAl0ZXN0IC1kICIkdGVtcGRpciIgJiYKIAkJZGllICIkdGVtcGRpciBhbHJlYWR5IGV4aXN0cywgcGxlYXNlIHJlbW92ZSBpdCIKIGVzYWMKK29yaWdfZGlyPSQocHdkKQogbWtkaXIgLXAgIiR0ZW1wZGlyL3QiICYmCiB0ZW1wZGlyPSIkKGNkICIkdGVtcGRpciI7IHB3ZCkiICYmCiBjZCAiJHRlbXBkaXIvdCIgJiYKQEAgLTIwNiw3ICsyMDcsNyBAQAogZGllICIiCiAKICMgUmVtb3ZlIHRlbXBkaXIgb24gZXhpdAotdHJhcCAnY2QgLi4vLi47IHJtIC1yZiAiJHRlbXBkaXIiJyAwCit0cmFwICdjZCAiJG9yaWdfZGlyIjsgcm0gLXJmICIkdGVtcGRpciInIDAKIAogT1JJR19HSVRfRElSPSIkR0lUX0RJUiIKIE9SSUdfR0lUX1dPUktfVFJFRT0iJEdJVF9XT1JLX1RSRUUiCkBAIC00NjksNyArNDcwLDcgQEAKIAlkb25lCiBmaQogCi1jZCAuLi8uLgorY2QgIiRvcmlnX2RpciIKIHJtIC1yZiAiJHRlbXBkaXIiCiAKIHRyYXAgLSAwCmRpZmYgLS1naXQgYS9naXQtZ3VpL0dJVC1WRVJTSU9OLUdFTiBiL2dpdC1ndWkvR0lULVZFUlNJT04tR0VOCmluZGV4IDQ5YjYyZWEuLjBhMWY4ZDQgMTAwNzU1Ci0tLSBhL2dpdC1ndWkvR0lULVZFUlNJT04tR0VOCisrKyBiL2dpdC1ndWkvR0lULVZFUlNJT04tR0VOCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAKIEdWRj1HSVQtVkVSU0lPTi1GSUxFCi1ERUZfVkVSPTAuMTcuR0lUR1VJCitERUZfVkVSPTAuMTguR0lUR1VJCiAKIExGPScKICcKZGlmZiAtLWdpdCBhL2dpdC1ndWkvTWFrZWZpbGUgYi9naXQtZ3VpL01ha2VmaWxlCmluZGV4IGUyMmJhNWMuLmU5YzJiYzMgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvTWFrZWZpbGUKKysrIGIvZ2l0LWd1aS9NYWtlZmlsZQpAQCAtMjU0LDcgKzI1NCw3IEBACiAJICBhdXRvX21raW5kZXggbGliICcqLnRjbCcgXAogCXwgJChUQ0xfUEFUSCkgJChRVUlFVF8yREVWTlVMTCk7IHRoZW4gOiBvazsgXAogCWVsc2UgXAotCSBlY2hvIDE+JjIgIiAgICAqICQoVENMX1BBVEgpIGZhaWxlZDsgdXNpbmcgdW5vcHRpbWl6ZWQgbG9hZGluZyI7IFwKKwkgZWNobyA+JjIgIiAgICAqICQoVENMX1BBVEgpIGZhaWxlZDsgdXNpbmcgdW5vcHRpbWl6ZWQgbG9hZGluZyI7IFwKIAkgcm0gLWYgJEAgOyBcCiAJIGVjaG8gJyMgQXV0b2dlbmVyYXRlZCBieSBnaXQtZ3VpIE1ha2VmaWxlJyA+JEAgJiYgXAogCSBlY2hvID4+JEAgJiYgXApAQCAtMjc0LDggKzI3NCw4IEBACiBHSVQtR1VJLVZBUlM6IEZPUkNFCiAJQFZBUlM9JyQoVFJBQ0tfVkFSUyknOyBcCiAJaWYgdGVzdCB4IiQkVkFSUyIgIT0geCJgY2F0ICRAIDI+L2Rldi9udWxsYCIgOyB0aGVuIFwKLQkJZWNobyAxPiYyICIgICAgKiBuZXcgbG9jYXRpb25zIG9yIFRjbC9UayBpbnRlcnByZXRlciI7IFwKLQkJZWNobyAxPiRAICIkJFZBUlMiOyBcCisJCWVjaG8gPiYyICIgICAgKiBuZXcgbG9jYXRpb25zIG9yIFRjbC9UayBpbnRlcnByZXRlciI7IFwKKwkJZWNobyA+JEAgIiQkVkFSUyI7IFwKIAlmaQogCiBpZmRlZiBHSVRHVUlfTUFDT1NYQVBQCmRpZmYgLS1naXQgYS9naXQtZ3VpL2dpdC1ndWkuc2ggYi9naXQtZ3VpL2dpdC1ndWkuc2gKaW5kZXggODlmNjM2Zi4uMTUzZjg1ZCAxMDA3NTUKLS0tIGEvZ2l0LWd1aS9naXQtZ3VpLnNoCisrKyBiL2dpdC1ndWkvZ2l0LWd1aS5zaApAQCAtMTM3LDYgKzEzNywyMCBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIworIyMgT24gTWFjLCBicmluZyB0aGUgY3VycmVudCBXaXNoIHByb2Nlc3Mgd2luZG93IHRvIGZyb250CisKK2lmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSAiYXF1YSJ9IHsKKwljYXRjaCB7CisJCWV4ZWMgb3Nhc2NyaXB0IC1lIFtmb3JtYXQgeworCQkJdGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIKKwkJCQlzZXQgZnJvbnRtb3N0IG9mIHByb2Nlc3NlcyB3aG9zZSB1bml4IGlkIGlzICVkIHRvIHRydWUKKwkJCWVuZCB0ZWxsCisJCX0gW3BpZF1dCisJfQorfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIwogIyMgcmVhZCBvbmx5IGdsb2JhbHMKIAogc2V0IF9hcHBuYW1lIHtHaXQgR3VpfQpAQCAtMzAwMywxOCArMzAxNywxMSBAQAogCXNldCBqdW1wX3NwZWMge30KIAlzZXQgaXNfcGF0aCAwCiAJZm9yZWFjaCBhICRhcmd2IHsKLQkJaWYge1tmaWxlIGV4aXN0cyAkYV19IHsKLQkJCWlmIHskcGF0aCBuZSB7fX0gdXNhZ2UKLQkJCXNldCBwYXRoIFtub3JtYWxpemVfcmVscGF0aCAkYV0KLQkJCWJyZWFrCi0JCX0gZWxzZWlmIHtbZmlsZSBleGlzdHMgJF9wcmVmaXgkYV19IHsKLQkJCWlmIHskcGF0aCBuZSB7fX0gdXNhZ2UKLQkJCXNldCBwYXRoIFtub3JtYWxpemVfcmVscGF0aCAkX3ByZWZpeCRhXQotCQkJYnJlYWsKLQkJfQorCQlzZXQgcCBbZmlsZSBqb2luICRfcHJlZml4ICRhXQogCi0JCWlmIHskaXNfcGF0aH0geworCQlpZiB7JGlzX3BhdGggfHwgW2ZpbGUgZXhpc3RzICRwXX0gewogCQkJaWYgeyRwYXRoIG5lIHt9fSB1c2FnZQorCQkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRwXQogCQkJYnJlYWsKIAkJfSBlbHNlaWYgeyRhIGVxIHstLX19IHsKIAkJCWlmIHskcGF0aCBuZSB7fX0gewpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsIGIvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsCmluZGV4IDY1N2Y3ZDUuLmVlNTg5ODEgMTAwNjQ0Ci0tLSBhL2dpdC1ndWkvbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbAorKysgYi9naXQtZ3VpL2xpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2wKQEAgLTI4Niw3ICsyODYsOSBAQAogCWRlc3Ryb3kgJHdfYm9keQogCWlmIHshW3dpbmZvIGV4aXN0cyAkd19uZXh0XX0gewogCQkke05TfTo6YnV0dG9uICR3X25leHQgLWRlZmF1bHQgYWN0aXZlCi0JCXBhY2sgJHdfbmV4dCAtc2lkZSByaWdodCAtcGFkeCA1IC1iZWZvcmUgJHdfcXVpdAorCQlzZXQgcG9zIC1iZWZvcmUKKwkJaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxICJ3aW4zMiJ9IHsgc2V0IHBvcyAtYWZ0ZXIgfQorCQlwYWNrICR3X25leHQgLXNpZGUgcmlnaHQgLXBhZHggNSAkcG9zICR3X3F1aXQKIAl9CiAJX2RvXyRhY3Rpb24gJHRoaXMKIH0KZGlmZiAtLWdpdCBhL2dpdC1ndWkvbGliL2RpZmYudGNsIGIvZ2l0LWd1aS9saWIvZGlmZi50Y2wKaW5kZXggZWM0NDA1NS4uMzBkOWE3OSAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvZGlmZi50Y2wKKysrIGIvZ2l0LWd1aS9saWIvZGlmZi50Y2wKQEAgLTc2NCw4ICs3NjQsMTUgQEAKIAkJCQkjIGNvbnRleHQgbGluZQogCQkJCXNldCBsbiBbJHVpX2RpZmYgZ2V0ICRpX2wgJG5leHRfbF0KIAkJCQlzZXQgcGF0Y2ggIiRwYXRjaCRwcmVfY29udGV4dCRsbiIKLQkJCQlzZXQgbiBbZXhwciAkbisxXQotCQkJCXNldCBtIFtleHByICRtKzFdCisJCQkJIyBTa2lwIHRoZSAiXCBObyBuZXdsaW5lIGF0IGVuZCBvZgorCQkJCSMgZmlsZSIuIERlcGVuZGluZyBvbiB0aGUgbG9jYWxlIHNldHRpbmcKKwkJCQkjIHdlIGRvbid0IGtub3cgd2hhdCB0aGlzIGxpbmUgbG9va3MKKwkJCQkjIGxpa2UgZXhhY3RseS4gVGhlIG9ubHkgdGhpbmcgd2UgZG8KKwkJCQkjIGtub3cgaXMgdGhhdCBpdCBzdGFydHMgd2l0aCAiXCAiCisJCQkJaWYgeyFbc3RyaW5nIG1hdGNoIHtcXCAqfSAkbG5dfSB7CisJCQkJCXNldCBuIFtleHByICRuKzFdCisJCQkJCXNldCBtIFtleHByICRtKzFdCisJCQkJfQogCQkJCXNldCBwcmVfY29udGV4dCB7fQogCQkJfSBlbHNlaWYgeyRjMSBlcSAkdG9fY29udGV4dH0gewogCQkJCSMgdHVybiBjaGFuZ2UgbGluZSBpbnRvIGNvbnRleHQgbGluZQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbCBiL2dpdC1ndWkvbGliL21lcmdldG9vbC50Y2wKaW5kZXggM2M4ZTczYi4uMTIwYmM0MCAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbAorKysgYi9naXQtZ3VpL2xpYi9tZXJnZXRvb2wudGNsCkBAIC0xODksOSArMTg5LDkgQEAKIAl9CiAJYmMzIHsKIAkJaWYgeyRiYXNlX3N0YWdlIG5lIHt9fSB7Ci0JCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgIiRMT0NBTCIgIiRSRU1PVEUiICIkQkFTRSIgLW1lcmdlb3V0cHV0PSIkTUVSR0VEIl0KKwkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAiJExPQ0FMIiAiJFJFTU9URSIgIiRCQVNFIiAiLW1lcmdlb3V0cHV0PSRNRVJHRUQiXQogCQl9IGVsc2UgewotCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAtbWVyZ2VvdXRwdXQ9IiRNRVJHRUQiXQorCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAiLW1lcmdlb3V0cHV0PSRNRVJHRUQiXQogCQl9CiAJfQogCWVjbWVyZ2UgewpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbCBiL2dpdC1ndWkvbGliL3JlbW90ZS50Y2wKaW5kZXggNWU0ZTdmNC4uNGU1Yzc4NCAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbAorKysgYi9naXQtZ3VpL2xpYi9yZW1vdGUudGNsCkBAIC0yNDUsNyArMjQ1LDggQEAKIAlzZXQgcHJ1bmVfbSAkcmVtb3RlX20ucHJ1bmUKIAlpZiB7JGhhdmVfcmVtb3RlID4gMX0gewogCQltYWtlX3N1cmVfcmVtb3RlX3N1Ym1lbnVlc19leGlzdCAkcmVtb3RlX20KLQkJaWYge1skZmV0Y2hfbSBlbnRyeWNnZXQgZW5kIC1sYWJlbF0gbmUgIkFsbCJ9IHsKKwkJaWYge1skZmV0Y2hfbSB0eXBlIGVuZF0gZXEgImNvbW1hbmQiIFwKKwkJCSYmIFskZmV0Y2hfbSBlbnRyeWNnZXQgZW5kIC1sYWJlbF0gbmUgIkFsbCJ9IHsKIAogCQkJJGZldGNoX20gaW5zZXJ0IGVuZCBzZXBhcmF0b3IKIAkJCSRmZXRjaF9tIGluc2VydCBlbmQgY29tbWFuZCBcCkBAIC0yNTksNyArMjYwLDggQEAKIAkJfQogCX0gZWxzZSB7CiAJCWlmIHtbd2luZm8gZXhpc3RzICRmZXRjaF9tXX0gewotCQkJaWYge1skZmV0Y2hfbSBlbnRyeWNnZXQgZW5kIC1sYWJlbF0gZXEgIkFsbCJ9IHsKKwkJCWlmIHtbJGZldGNoX20gdHlwZSBlbmRdIGVxICJjb21tYW5kIiBcCisJCQkJJiYgWyRmZXRjaF9tIGVudHJ5Y2dldCBlbmQgLWxhYmVsXSBlcSAiQWxsIn0gewogCiAJCQkJZGVsZXRlX2Zyb21fbWVudSAkZmV0Y2hfbSBlbmQKIAkJCQlkZWxldGVfZnJvbV9tZW51ICRmZXRjaF9tIGVuZApkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9wby9mci5wbyBiL2dpdC1ndWkvcG8vZnIucG8KaW5kZXggNDA0NDFkYi4uMGFmZjE4NiAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9wby9mci5wbworKysgYi9naXQtZ3VpL3BvL2ZyLnBvCkBAIC0xMTM5LDcgKzExMzksNyBAQAogCiAjOiBsaWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsOjUxNAogbXNnaWQgIkZ1bGwgQ29weSAoU2xvd2VyLCBSZWR1bmRhbnQgQmFja3VwKSIKLW1zZ3N0ciAiQ29weSBjb21wbMOodGUgKHBsdXMgbGVudCwgc2F1dmVnYXJkZSByZWRvbmRhbnRlKSIKK21zZ3N0ciAiQ29waWUgY29tcGzDqHRlIChwbHVzIGxlbnQsIHNhdXZlZ2FyZGUgcmVkb25kYW50ZSkiCiAKICM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTIwCiBtc2dpZCAiU2hhcmVkIChGYXN0ZXN0LCBOb3QgUmVjb21tZW5kZWQsIE5vIEJhY2t1cCkiCmRpZmYgLS1naXQgYS9naXQtbWVyZ2Utb25lLWZpbGUuc2ggYi9naXQtbWVyZ2Utb25lLWZpbGUuc2gKaW5kZXggZjYxMmNiOC4uMDdkZmViOCAxMDA3NTUKLS0tIGEvZ2l0LW1lcmdlLW9uZS1maWxlLnNoCisrKyBiL2dpdC1tZXJnZS1vbmUtZmlsZS5zaApAQCAtMTgsNyArMTgsNyBAQAogCiBVU0FHRT0nPG9yaWcgYmxvYj4gPG91ciBibG9iPiA8dGhlaXIgYmxvYj4gPHBhdGg+JwogVVNBR0U9IiRVU0FHRSA8b3JpZyBtb2RlPiA8b3VyIG1vZGU+IDx0aGVpciBtb2RlPiIKLUxPTkdfVVNBR0U9IlVzYWdlOiBnaXQgbWVyZ2Utb25lLWZpbGUgJFVTQUdFCitMT05HX1VTQUdFPSJ1c2FnZTogZ2l0IG1lcmdlLW9uZS1maWxlICRVU0FHRQogCiBCbG9iIGlkcyBhbmQgbW9kZXMgc2hvdWxkIGJlIGVtcHR5IGZvciBtaXNzaW5nIGZpbGVzLiIKIApAQCAtMjcsNyArMjcsNyBAQAogY2RfdG9fdG9wbGV2ZWwKIHJlcXVpcmVfd29ya190cmVlCiAKLWlmICEgdGVzdCAiJCMiIC1lcSA3CitpZiB0ZXN0ICQjICE9IDcKIHRoZW4KIAllY2hvICIkTE9OR19VU0FHRSIKIAlleGl0IDEKQEAgLTM4LDcgKzM4LDggQEAKICMgRGVsZXRlZCBpbiBib3RoIG9yIGRlbGV0ZWQgaW4gb25lIGFuZCB1bmNoYW5nZWQgaW4gdGhlIG90aGVyCiAjCiAiJDEuLiIgfCAiJDEuJDEiIHwgIiQxJDEuIikKLQlpZiBbICIkMiIgXTsgdGhlbgorCWlmIHRlc3QgLW4gIiQyIgorCXRoZW4KIAkJZWNobyAiUmVtb3ZpbmcgJDQiCiAJZWxzZQogCQkjIHJlYWQtdHJlZSBjaGVja2VkIHRoYXQgaW5kZXggbWF0Y2hlcyBIRUFEIGFscmVhZHksCkBAIC00OCw3ICs0OSw4IEBACiAJCSMgd2UgZG8gbm90IGhhdmUgaXQgaW4gdGhlIGluZGV4LCB0aG91Z2guCiAJCWV4ZWMgZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSAtLSAiJDQiCiAJZmkKLQlpZiB0ZXN0IC1mICIkNCI7IHRoZW4KKwlpZiB0ZXN0IC1mICIkNCIKKwl0aGVuCiAJCXJtIC1mIC0tICIkNCIgJiYKIAkJcm1kaXIgLXAgIiQoZXhwciAieiQ0IiA6ICd6XCguKlwpLycpIiAyPi9kZXYvbnVsbCB8fCA6CiAJZmkgJiYKQEAgLTY3LDcgKzY5LDcgQEAKIAllY2hvICJBZGRpbmcgJDQiCiAJaWYgdGVzdCAtZiAiJDQiCiAJdGhlbgotCQllY2hvICJFUlJPUjogdW50cmFja2VkICQ0IGlzIG92ZXJ3cml0dGVuIGJ5IHRoZSBtZXJnZS4iCisJCWVjaG8gIkVSUk9SOiB1bnRyYWNrZWQgJDQgaXMgb3ZlcndyaXR0ZW4gYnkgdGhlIG1lcmdlLiIgPiYyCiAJCWV4aXQgMQogCWZpCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAtLWNhY2hlaW5mbyAiJDciICIkMyIgIiQ0IiAmJgpAQCAtNzgsOSArODAsMTAgQEAKICMgQWRkZWQgaW4gYm90aCwgaWRlbnRpY2FsbHkgKGNoZWNrIGZvciBzYW1lIHBlcm1pc3Npb25zKS4KICMKICIuJDMkMiIpCi0JaWYgWyAiJDYiICE9ICIkNyIgXTsgdGhlbgotCQllY2hvICJFUlJPUjogRmlsZSAkNCBhZGRlZCBpZGVudGljYWxseSBpbiBib3RoIGJyYW5jaGVzLCIKLQkJZWNobyAiRVJST1I6IGJ1dCBwZXJtaXNzaW9ucyBjb25mbGljdCAkNi0+JDcuIgorCWlmIHRlc3QgIiQ2IiAhPSAiJDciCisJdGhlbgorCQllY2hvICJFUlJPUjogRmlsZSAkNCBhZGRlZCBpZGVudGljYWxseSBpbiBib3RoIGJyYW5jaGVzLCIgPiYyCisJCWVjaG8gIkVSUk9SOiBidXQgcGVybWlzc2lvbnMgY29uZmxpY3QgJDYtPiQ3LiIgPiYyCiAJCWV4aXQgMQogCWZpCiAJZWNobyAiQWRkaW5nICQ0IgpAQCAtOTUsNDQgKzk4LDM2IEBACiAKIAljYXNlICIsJDYsJDcsIiBpbgogCSosMTIwMDAwLCopCi0JCWVjaG8gIkVSUk9SOiAkNDogTm90IG1lcmdpbmcgc3ltYm9saWMgbGluayBjaGFuZ2VzLiIKKwkJZWNobyAiRVJST1I6ICQ0OiBOb3QgbWVyZ2luZyBzeW1ib2xpYyBsaW5rIGNoYW5nZXMuIiA+JjIKIAkJZXhpdCAxCiAJCTs7CiAJKiwxNjAwMDAsKikKLQkJZWNobyAiRVJST1I6ICQ0OiBOb3QgbWVyZ2luZyBjb25mbGljdGluZyBzdWJtb2R1bGUgY2hhbmdlcy4iCisJCWVjaG8gIkVSUk9SOiAkNDogTm90IG1lcmdpbmcgY29uZmxpY3Rpbmcgc3VibW9kdWxlIGNoYW5nZXMuIiA+JjIKIAkJZXhpdCAxCiAJCTs7CiAJZXNhYwogCi0Jc3JjMj1gZ2l0LXVucGFjay1maWxlICQzYAorCXNyYzE9JChnaXQtdW5wYWNrLWZpbGUgJDIpCisJc3JjMj0kKGdpdC11bnBhY2stZmlsZSAkMykKIAljYXNlICIkMSIgaW4KIAknJykKIAkJZWNobyAiQWRkZWQgJDQgaW4gYm90aCwgYnV0IGRpZmZlcmVudGx5LiIKLQkJIyBUaGlzIGV4dHJhY3RzIE9VUiBmaWxlIGluICRvcmlnLCBhbmQgdXNlcyBnaXQgYXBwbHkgdG8KLQkJIyByZW1vdmUgbGluZXMgdGhhdCBhcmUgdW5pcXVlIHRvIG91cnMuCi0JCW9yaWc9YGdpdC11bnBhY2stZmlsZSAkMmAKLQkJc3owPWB3YyAtYyA8IiRvcmlnImAKLQkJQEBESUZGQEAgLXUgLUxhLyRvcmlnIC1MYi8kb3JpZyAkb3JpZyAkc3JjMiB8IGdpdCBhcHBseSAtLW5vLWFkZAotCQlzejE9YHdjIC1jIDwiJG9yaWciYAotCi0JCSMgSWYgd2UgZG8gbm90IGhhdmUgZW5vdWdoIGNvbW1vbiBtYXRlcmlhbCwgaXQgaXMgbm90Ci0JCSMgd29ydGggdHJ5aW5nIHR3by1maWxlIG1lcmdlIHVzaW5nIGNvbW1vbiBzdWJzZWN0aW9ucy4KLQkJZXhwciAkc3owIFw8ICRzejEgXCogMiA+L2Rldi9udWxsIHx8IDogPiRvcmlnCisJCW9yaWc9JChnaXQtdW5wYWNrLWZpbGUgJDIpCisJCWNyZWF0ZV92aXJ0dWFsX2Jhc2UgIiRvcmlnIiAiJHNyYzIiCiAJCTs7CiAJKikKIAkJZWNobyAiQXV0by1tZXJnaW5nICQ0IgotCQlvcmlnPWBnaXQtdW5wYWNrLWZpbGUgJDFgCisJCW9yaWc9JChnaXQtdW5wYWNrLWZpbGUgJDEpCiAJCTs7CiAJZXNhYwogCi0JIyBCZSBjYXJlZnVsIGZvciBmdW5ueSBmaWxlbmFtZSBzdWNoIGFzICItTCIgaW4gIiQ0Iiwgd2hpY2gKLQkjIHdvdWxkIGNvbmZ1c2UgIm1lcmdlIiBncmVhdGx5LgotCXNyYzE9YGdpdC11bnBhY2stZmlsZSAkMmAKIAlnaXQgbWVyZ2UtZmlsZSAiJHNyYzEiICIkb3JpZyIgIiRzcmMyIgogCXJldD0kPwogCW1zZz0KLQlpZiBbICRyZXQgLW5lIDAgXTsgdGhlbgorCWlmIHRlc3QgJHJldCAhPSAwIHx8IHRlc3QgLXogIiQxIgorCXRoZW4KIAkJbXNnPSdjb250ZW50IGNvbmZsaWN0JworCQlyZXQ9MQogCWZpCiAKIAkjIENyZWF0ZSB0aGUgd29ya2luZyB0cmVlIGZpbGUsIHVzaW5nICJvdXIgdHJlZSIgdmVyc2lvbiBmcm9tIHRoZQpAQCAtMTQwLDI2ICsxMzUsMjYgQEAKIAlnaXQgY2hlY2tvdXQtaW5kZXggLWYgLS1zdGFnZT0yIC0tICIkNCIgJiYgY2F0ICIkc3JjMSIgPiIkNCIgfHwgZXhpdCAxCiAJcm0gLWYgLS0gIiRvcmlnIiAiJHNyYzEiICIkc3JjMiIKIAotCWlmIFsgIiQ2IiAhPSAiJDciIF07IHRoZW4KLQkJaWYgWyAtbiAiJG1zZyIgXTsgdGhlbgorCWlmIHRlc3QgIiQ2IiAhPSAiJDciCisJdGhlbgorCQlpZiB0ZXN0IC1uICIkbXNnIgorCQl0aGVuCiAJCQltc2c9IiRtc2csICIKIAkJZmkKIAkJbXNnPSIke21zZ31wZXJtaXNzaW9ucyBjb25mbGljdDogJDUtPiQ2LCQ3IgogCQlyZXQ9MQogCWZpCi0JaWYgWyAiJDEiID0gJycgXTsgdGhlbgotCQlyZXQ9MQotCWZpCiAKLQlpZiBbICRyZXQgLW5lIDAgXTsgdGhlbgotCQllY2hvICJFUlJPUjogJG1zZyBpbiAkNCIKKwlpZiB0ZXN0ICRyZXQgIT0gMAorCXRoZW4KKwkJZWNobyAiRVJST1I6ICRtc2cgaW4gJDQiID4mMgogCQlleGl0IDEKIAlmaQogCWV4ZWMgZ2l0IHVwZGF0ZS1pbmRleCAtLSAiJDQiCiAJOzsKIAogKikKLQllY2hvICJFUlJPUjogJDQ6IE5vdCBoYW5kbGluZyBjYXNlICQxIC0+ICQyIC0+ICQzIgorCWVjaG8gIkVSUk9SOiAkNDogTm90IGhhbmRsaW5nIGNhc2UgJDEgLT4gJDIgLT4gJDMiID4mMgogCTs7CiBlc2FjCiBleGl0IDEKZGlmZiAtLWdpdCBhL2dpdC1tZXJnZXRvb2wtLWxpYi5zaCBiL2dpdC1tZXJnZXRvb2wtLWxpYi5zaAppbmRleCBmMDEzYTAzLi42YTcyMTA2IDEwMDY0NAotLS0gYS9naXQtbWVyZ2V0b29sLS1saWIuc2gKKysrIGIvZ2l0LW1lcmdldG9vbC0tbGliLnNoCkBAIC0xLDUgKzEsODMgQEAKICMhL2Jpbi9zaAogIyBnaXQtbWVyZ2V0b29sLS1saWIgaXMgYSBsaWJyYXJ5IGZvciBjb21tb24gbWVyZ2UgdG9vbCBmdW5jdGlvbnMKKworOiAke01FUkdFX1RPT0xTX0RJUj0kKGdpdCAtLWV4ZWMtcGF0aCkvbWVyZ2V0b29sc30KKworbW9kZV9vayAoKSB7CisJaWYgZGlmZl9tb2RlCisJdGhlbgorCQljYW5fZGlmZgorCWVsaWYgbWVyZ2VfbW9kZQorCXRoZW4KKwkJY2FuX21lcmdlCisJZWxzZQorCQlmYWxzZQorCWZpCit9CisKK2lzX2F2YWlsYWJsZSAoKSB7CisJbWVyZ2VfdG9vbF9wYXRoPSQodHJhbnNsYXRlX21lcmdlX3Rvb2xfcGF0aCAiJDEiKSAmJgorCXR5cGUgIiRtZXJnZV90b29sX3BhdGgiID4vZGV2L251bGwgMj4mMQorfQorCitsaXN0X2NvbmZpZ190b29scyAoKSB7CisJc2VjdGlvbj0kMQorCWxpbmVfcHJlZml4PSR7MjotfQorCisJZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgJHNlY3Rpb24nXC4uKlwuY21kJyB8CisJd2hpbGUgcmVhZCAtciBrZXkgdmFsdWUKKwlkbworCQl0b29sbmFtZT0ke2tleSMkc2VjdGlvbi59CisJCXRvb2xuYW1lPSR7dG9vbG5hbWUlLmNtZH0KKworCQlwcmludGYgIiVzJXNcbiIgIiRsaW5lX3ByZWZpeCIgIiR0b29sbmFtZSIKKwlkb25lCit9CisKK3Nob3dfdG9vbF9uYW1lcyAoKSB7CisJY29uZGl0aW9uPSR7MTotdHJ1ZX0gcGVyX2xpbmVfcHJlZml4PSR7MjotfSBwcmVhbWJsZT0kezM6LX0KKwlub3RfZm91bmRfbXNnPSR7NDotfQorCWV4dHJhX2NvbnRlbnQ9JHs1Oi19CisKKwlzaG93bl9hbnk9CisJKCBjZCAiJE1FUkdFX1RPT0xTX0RJUiIgJiYgbHMgKSB8IHsKKwkJd2hpbGUgcmVhZCB0b29sbmFtZQorCQlkbworCQkJaWYgc2V0dXBfdG9vbCAiJHRvb2xuYW1lIiAyPi9kZXYvbnVsbCAmJgorCQkJCShldmFsICIkY29uZGl0aW9uIiAiJHRvb2xuYW1lIikKKwkJCXRoZW4KKwkJCQlpZiB0ZXN0IC1uICIkcHJlYW1ibGUiCisJCQkJdGhlbgorCQkJCQlwcmludGYgIiVzXG4iICIkcHJlYW1ibGUiCisJCQkJCXByZWFtYmxlPQorCQkJCWZpCisJCQkJc2hvd25fYW55PXllcworCQkJCXByaW50ZiAiJXMlc1xuIiAiJHBlcl9saW5lX3ByZWZpeCIgIiR0b29sbmFtZSIKKwkJCWZpCisJCWRvbmUKKworCQlpZiB0ZXN0IC1uICIkZXh0cmFfY29udGVudCIKKwkJdGhlbgorCQkJaWYgdGVzdCAtbiAiJHByZWFtYmxlIgorCQkJdGhlbgorCQkJCSMgTm90ZTogbm8gJ1xuJyBoZXJlIHNpbmNlIHdlIGRvbid0IHdhbnQgYQorCQkJCSMgYmxhbmsgbGluZSBpZiB0aGVyZSBpcyBubyBpbml0aWFsIGNvbnRlbnQuCisJCQkJcHJpbnRmICIlcyIgIiRwcmVhbWJsZSIKKwkJCQlwcmVhbWJsZT0KKwkJCWZpCisJCQlzaG93bl9hbnk9eWVzCisJCQlwcmludGYgIlxuJXNcbiIgIiRleHRyYV9jb250ZW50IgorCQlmaQorCisJCWlmIHRlc3QgLW4gIiRwcmVhbWJsZSIgJiYgdGVzdCAtbiAiJG5vdF9mb3VuZF9tc2ciCisJCXRoZW4KKwkJCXByaW50ZiAiJXNcbiIgIiRub3RfZm91bmRfbXNnIgorCQlmaQorCisJCXRlc3QgLW4gIiRzaG93bl9hbnkiCisJfQorfQorCiBkaWZmX21vZGUoKSB7CiAJdGVzdCAiJFRPT0xfTU9ERSIgPSBkaWZmCiB9CkBAIC0zMCw2MSArMTA4LDk3IEBACiAJZmkKIH0KIAotdmFsaWRfdG9vbF9jb25maWcgKCkgewotCWlmIHRlc3QgLW4gIiQoZ2V0X21lcmdlX3Rvb2xfY21kICIkMSIpIgotCXRoZW4KLQkJcmV0dXJuIDAKLQllbHNlCi0JCXJldHVybiAxCi0JZmkKK3ZhbGlkX3Rvb2wgKCkgeworCXNldHVwX3Rvb2wgIiQxIiAmJiByZXR1cm4gMAorCWNtZD0kKGdldF9tZXJnZV90b29sX2NtZCAiJDEiKQorCXRlc3QgLW4gIiRjbWQiCiB9CiAKLXZhbGlkX3Rvb2wgKCkgewotCXNldHVwX3Rvb2wgIiQxIiB8fCB2YWxpZF90b29sX2NvbmZpZyAiJDEiCitzZXR1cF91c2VyX3Rvb2wgKCkgeworCW1lcmdlX3Rvb2xfY21kPSQoZ2V0X21lcmdlX3Rvb2xfY21kICIkdG9vbCIpCisJdGVzdCAtbiAiJG1lcmdlX3Rvb2xfY21kIiB8fCByZXR1cm4gMQorCisJZGlmZl9jbWQgKCkgeworCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKKwkJc3RhdHVzPSQ/CisJCXJldHVybiAkc3RhdHVzCisJfQorCisJbWVyZ2VfY21kICgpIHsKKwkJdHJ1c3RfZXhpdF9jb2RlPSQoZ2l0IGNvbmZpZyAtLWJvb2wgXAorCQkJIm1lcmdldG9vbC4kMS50cnVzdEV4aXRDb2RlIiB8fCBlY2hvIGZhbHNlKQorCQlpZiB0ZXN0ICIkdHJ1c3RfZXhpdF9jb2RlIiA9ICJmYWxzZSIKKwkJdGhlbgorCQkJdG91Y2ggIiRCQUNLVVAiCisJCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKKwkJCXN0YXR1cz0kPworCQkJY2hlY2tfdW5jaGFuZ2VkCisJCWVsc2UKKwkJCSggZXZhbCAkbWVyZ2VfdG9vbF9jbWQgKQorCQkJc3RhdHVzPSQ/CisJCWZpCisJCXJldHVybiAkc3RhdHVzCisJfQogfQogCiBzZXR1cF90b29sICgpIHsKLQljYXNlICIkMSIgaW4KLQl2aW0qfGd2aW0qKQotCQl0b29sPXZpbQotCQk7OwotCSopCi0JCXRvb2w9IiQxIgotCQk7OwotCWVzYWMKLQltZXJnZXRvb2xzPSIkKGdpdCAtLWV4ZWMtcGF0aCkvbWVyZ2V0b29scyIKKwl0b29sPSIkMSIKIAotCSMgTG9hZCB0aGUgZGVmYXVsdCBkZWZpbml0aW9ucwotCS4gIiRtZXJnZXRvb2xzL2RlZmF1bHRzIgotCWlmICEgdGVzdCAtZiAiJG1lcmdldG9vbHMvJHRvb2wiCisJIyBGYWxsYmFjayBkZWZpbml0aW9ucywgdG8gYmUgb3ZlcnJpZGVuIGJ5IHRvb2xzLgorCWNhbl9tZXJnZSAoKSB7CisJCXJldHVybiAwCisJfQorCisJY2FuX2RpZmYgKCkgeworCQlyZXR1cm4gMAorCX0KKworCWRpZmZfY21kICgpIHsKKwkJc3RhdHVzPTEKKwkJcmV0dXJuICRzdGF0dXMKKwl9CisKKwltZXJnZV9jbWQgKCkgeworCQlzdGF0dXM9MQorCQlyZXR1cm4gJHN0YXR1cworCX0KKworCXRyYW5zbGF0ZV9tZXJnZV90b29sX3BhdGggKCkgeworCQllY2hvICIkMSIKKwl9CisKKwlpZiAhIHRlc3QgLWYgIiRNRVJHRV9UT09MU19ESVIvJHRvb2wiCiAJdGhlbgotCQlyZXR1cm4gMQorCQlzZXR1cF91c2VyX3Rvb2wKKwkJcmV0dXJuICQ/CiAJZmkKIAogCSMgTG9hZCB0aGUgcmVkZWZpbmVkIGZ1bmN0aW9ucwotCS4gIiRtZXJnZXRvb2xzLyR0b29sIgorCS4gIiRNRVJHRV9UT09MU19ESVIvJHRvb2wiCisJIyBOb3cgbGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmQgZm9yIHRoZSB0b29sLiAgSWYKKwkjIHRoZXkgaGF2ZSBub3QgZG9uZSBzbyB0aGVuIHRoaXMgd2lsbCByZXR1cm4gMSB3aGljaCB3ZSBpZ25vcmUuCisJc2V0dXBfdXNlcl90b29sCiAKIAlpZiBtZXJnZV9tb2RlICYmICEgY2FuX21lcmdlCiAJdGhlbgogCQllY2hvICJlcnJvcjogJyR0b29sJyBjYW4gbm90IGJlIHVzZWQgdG8gcmVzb2x2ZSBtZXJnZXMiID4mMgotCQlleGl0IDEKKwkJcmV0dXJuIDEKIAllbGlmIGRpZmZfbW9kZSAmJiAhIGNhbl9kaWZmCiAJdGhlbgogCQllY2hvICJlcnJvcjogJyR0b29sJyBjYW4gb25seSBiZSB1c2VkIHRvIHJlc29sdmUgbWVyZ2VzIiA+JjIKLQkJZXhpdCAxCisJCXJldHVybiAxCiAJZmkKIAlyZXR1cm4gMAogfQogCiBnZXRfbWVyZ2VfdG9vbF9jbWQgKCkgewotCSMgUHJpbnRzIHRoZSBjdXN0b20gY29tbWFuZCBmb3IgYSBtZXJnZSB0b29sCiAJbWVyZ2VfdG9vbD0iJDEiCiAJaWYgZGlmZl9tb2RlCiAJdGhlbgotCQllY2hvICIkKGdpdCBjb25maWcgZGlmZnRvb2wuJG1lcmdlX3Rvb2wuY21kIHx8Ci0JCQlnaXQgY29uZmlnIG1lcmdldG9vbC4kbWVyZ2VfdG9vbC5jbWQpIgorCQlnaXQgY29uZmlnICJkaWZmdG9vbC4kbWVyZ2VfdG9vbC5jbWQiIHx8CisJCWdpdCBjb25maWcgIm1lcmdldG9vbC4kbWVyZ2VfdG9vbC5jbWQiCiAJZWxzZQotCQllY2hvICIkKGdpdCBjb25maWcgbWVyZ2V0b29sLiRtZXJnZV90b29sLmNtZCkiCisJCWdpdCBjb25maWcgIm1lcmdldG9vbC4kbWVyZ2VfdG9vbC5jbWQiCiAJZmkKIH0KIApAQCAtOTUsMTIgKzIwOSwxMiBAQAogCUdJVF9QUkVGSVg9JHtHSVRfUFJFRklYOi0ufQogCWV4cG9ydCBHSVRfUFJFRklYCiAKLQltZXJnZV90b29sX3BhdGg9IiQoZ2V0X21lcmdlX3Rvb2xfcGF0aCAiJDEiKSIgfHwgZXhpdAorCW1lcmdlX3Rvb2xfcGF0aD0kKGdldF9tZXJnZV90b29sX3BhdGggIiQxIikgfHwgZXhpdAogCWJhc2VfcHJlc2VudD0iJDIiCiAJc3RhdHVzPTAKIAogCSMgQnJpbmcgdG9vbC1zcGVjaWZpYyBmdW5jdGlvbnMgaW50byBzY29wZQotCXNldHVwX3Rvb2wgIiQxIgorCXNldHVwX3Rvb2wgIiQxIiB8fCByZXR1cm4gMQogCiAJaWYgbWVyZ2VfbW9kZQogCXRoZW4KQEAgLTExMywzOCArMjI3LDEyIEBACiAKICMgUnVuIGEgZWl0aGVyIGEgY29uZmlndXJlZCBvciBidWlsdC1pbiBkaWZmIHRvb2wKIHJ1bl9kaWZmX2NtZCAoKSB7Ci0JbWVyZ2VfdG9vbF9jbWQ9IiQoZ2V0X21lcmdlX3Rvb2xfY21kICIkMSIpIgotCWlmIHRlc3QgLW4gIiRtZXJnZV90b29sX2NtZCIKLQl0aGVuCi0JCSggZXZhbCAkbWVyZ2VfdG9vbF9jbWQgKQotCQlzdGF0dXM9JD8KLQkJcmV0dXJuICRzdGF0dXMKLQllbHNlCi0JCWRpZmZfY21kICIkMSIKLQlmaQorCWRpZmZfY21kICIkMSIKIH0KIAogIyBSdW4gYSBlaXRoZXIgYSBjb25maWd1cmVkIG9yIGJ1aWx0LWluIG1lcmdlIHRvb2wKIHJ1bl9tZXJnZV9jbWQgKCkgewotCW1lcmdlX3Rvb2xfY21kPSIkKGdldF9tZXJnZV90b29sX2NtZCAiJDEiKSIKLQlpZiB0ZXN0IC1uICIkbWVyZ2VfdG9vbF9jbWQiCi0JdGhlbgotCQl0cnVzdF9leGl0X2NvZGU9IiQoZ2l0IGNvbmZpZyAtLWJvb2wgXAotCQkJbWVyZ2V0b29sLiIkMSIudHJ1c3RFeGl0Q29kZSB8fCBlY2hvIGZhbHNlKSIKLQkJaWYgdGVzdCAiJHRydXN0X2V4aXRfY29kZSIgPSAiZmFsc2UiCi0JCXRoZW4KLQkJCXRvdWNoICIkQkFDS1VQIgotCQkJKCBldmFsICRtZXJnZV90b29sX2NtZCApCi0JCQlzdGF0dXM9JD8KLQkJCWNoZWNrX3VuY2hhbmdlZAotCQllbHNlCi0JCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKLQkJCXN0YXR1cz0kPwotCQlmaQotCQlyZXR1cm4gJHN0YXR1cwotCWVsc2UKLQkJbWVyZ2VfY21kICIkMSIKLQlmaQorCW1lcmdlX2NtZCAiJDEiCiB9CiAKIGxpc3RfbWVyZ2VfdG9vbF9jYW5kaWRhdGVzICgpIHsKQEAgLTE3NCwyMiArMjYyLDYxIEBACiAJZXNhYwogfQogCitzaG93X3Rvb2xfaGVscCAoKSB7CisJdG9vbF9vcHQ9IidnaXQgJHtUT09MX01PREV9dG9vbCAtLXRvb2wtPHRvb2w+JyIKKworCXRhYj0nCScKKwlMRj0nCisnCisJYW55X3Nob3duPW5vCisKKwljbWRfbmFtZT0ke1RPT0xfTU9ERX10b29sCisJY29uZmlnX3Rvb2xzPSQoeworCQlkaWZmX21vZGUgJiYgbGlzdF9jb25maWdfdG9vbHMgZGlmZnRvb2wgIiR0YWIkdGFiIgorCQlsaXN0X2NvbmZpZ190b29scyBtZXJnZXRvb2wgIiR0YWIkdGFiIgorCX0gfCBzb3J0KQorCWV4dHJhX2NvbnRlbnQ9CisJaWYgdGVzdCAtbiAiJGNvbmZpZ190b29scyIKKwl0aGVuCisJCWV4dHJhX2NvbnRlbnQ9IiR7dGFifXVzZXItZGVmaW5lZDoke0xGfSRjb25maWdfdG9vbHMiCisJZmkKKworCXNob3dfdG9vbF9uYW1lcyAnbW9kZV9vayAmJiBpc19hdmFpbGFibGUnICIkdGFiJHRhYiIgXAorCQkiJHRvb2xfb3B0IG1heSBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6IiBcCisJCSJObyBzdWl0YWJsZSB0b29sIGZvciAnZ2l0ICRjbWRfbmFtZSAtLXRvb2w9PHRvb2w+JyBmb3VuZC4iIFwKKwkJIiRleHRyYV9jb250ZW50IiAmJgorCQlhbnlfc2hvd249eWVzCisKKwlzaG93X3Rvb2xfbmFtZXMgJ21vZGVfb2sgJiYgISBpc19hdmFpbGFibGUnICIkdGFiJHRhYiIgXAorCQkiJHtMRn1UaGUgZm9sbG93aW5nIHRvb2xzIGFyZSB2YWxpZCwgYnV0IG5vdCBjdXJyZW50bHkgYXZhaWxhYmxlOiIgJiYKKwkJYW55X3Nob3duPXllcworCisJaWYgdGVzdCAiJGFueV9zaG93biIgPSB5ZXMKKwl0aGVuCisJCWVjaG8KKwkJZWNobyAiU29tZSBvZiB0aGUgdG9vbHMgbGlzdGVkIGFib3ZlIG9ubHkgd29yayBpbiBhIHdpbmRvd2VkIgorCQllY2hvICJlbnZpcm9ubWVudC4gSWYgcnVuIGluIGEgdGVybWluYWwtb25seSBzZXNzaW9uLCB0aGV5IHdpbGwgZmFpbC4iCisJZmkKKwlleGl0IDAKK30KKwogZ3Vlc3NfbWVyZ2VfdG9vbCAoKSB7CiAJbGlzdF9tZXJnZV90b29sX2NhbmRpZGF0ZXMKLQllY2hvID4mMiAibWVyZ2UgdG9vbCBjYW5kaWRhdGVzOiAkdG9vbHMiCisJY2F0ID4mMiA8PC1FT0YKKworCVRoaXMgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgYmVjYXVzZSAnJFRPT0xfTU9ERS50b29sJyBpcyBub3QgY29uZmlndXJlZC4KKwlTZWUgJ2dpdCAke1RPT0xfTU9ERX10b29sIC0tdG9vbC1oZWxwJyBvciAnZ2l0IGhlbHAgY29uZmlnJyBmb3IgbW9yZSBkZXRhaWxzLgorCSdnaXQgJHtUT09MX01PREV9dG9vbCcgd2lsbCBub3cgYXR0ZW1wdCB0byB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdG9vbHM6CisJJHRvb2xzCisJRU9GCiAKIAkjIExvb3Agb3ZlciBlYWNoIGNhbmRpZGF0ZSBhbmQgc3RvcCB3aGVuIGEgdmFsaWQgbWVyZ2UgdG9vbCBpcyBmb3VuZC4KLQlmb3IgaSBpbiAkdG9vbHMKKwlmb3IgdG9vbCBpbiAkdG9vbHMKIAlkbwotCQltZXJnZV90b29sX3BhdGg9IiQodHJhbnNsYXRlX21lcmdlX3Rvb2xfcGF0aCAiJGkiKSIKLQkJaWYgdHlwZSAiJG1lcmdlX3Rvb2xfcGF0aCIgPi9kZXYvbnVsbCAyPiYxCi0JCXRoZW4KLQkJCWVjaG8gIiRpIgotCQkJcmV0dXJuIDAKLQkJZmkKKwkJaXNfYXZhaWxhYmxlICIkdG9vbCIgJiYgZWNobyAiJHRvb2wiICYmIHJldHVybiAwCiAJZG9uZQogCi0JZWNobyA+JjIgIk5vIGtub3duIG1lcmdlIHJlc29sdXRpb24gcHJvZ3JhbSBhdmFpbGFibGUuIgorCWVjaG8gPiYyICJObyBrbm93biAke1RPT0xfTU9ERX0gdG9vbCBpcyBhdmFpbGFibGUuIgogCXJldHVybiAxCiB9CiAKQEAgLTIyOCw3ICszNTUsNyBAQAogCWZpCiAJaWYgdGVzdCAteiAiJG1lcmdlX3Rvb2xfcGF0aCIKIAl0aGVuCi0JCW1lcmdlX3Rvb2xfcGF0aD0iJCh0cmFuc2xhdGVfbWVyZ2VfdG9vbF9wYXRoICIkbWVyZ2VfdG9vbCIpIgorCQltZXJnZV90b29sX3BhdGg9JCh0cmFuc2xhdGVfbWVyZ2VfdG9vbF9wYXRoICIkbWVyZ2VfdG9vbCIpCiAJZmkKIAlpZiB0ZXN0IC16ICIkKGdldF9tZXJnZV90b29sX2NtZCAiJG1lcmdlX3Rvb2wiKSIgJiYKIAkJISB0eXBlICIkbWVyZ2VfdG9vbF9wYXRoIiA+L2Rldi9udWxsIDI+JjEKQEAgLTI0MiwxMSArMzY5LDExIEBACiAKIGdldF9tZXJnZV90b29sICgpIHsKIAkjIENoZWNrIGlmIGEgbWVyZ2UgdG9vbCBoYXMgYmVlbiBjb25maWd1cmVkCi0JbWVyZ2VfdG9vbD0iJChnZXRfY29uZmlndXJlZF9tZXJnZV90b29sKSIKKwltZXJnZV90b29sPSQoZ2V0X2NvbmZpZ3VyZWRfbWVyZ2VfdG9vbCkKIAkjIFRyeSB0byBndWVzcyBhbiBhcHByb3ByaWF0ZSBtZXJnZSB0b29sIGlmIG5vIHRvb2wgaGFzIGJlZW4gc2V0LgogCWlmIHRlc3QgLXogIiRtZXJnZV90b29sIgogCXRoZW4KLQkJbWVyZ2VfdG9vbD0iJChndWVzc19tZXJnZV90b29sKSIgfHwgZXhpdAorCQltZXJnZV90b29sPSQoZ3Vlc3NfbWVyZ2VfdG9vbCkgfHwgZXhpdAogCWZpCiAJZWNobyAiJG1lcmdlX3Rvb2wiCiB9CmRpZmYgLS1naXQgYS9naXQtbWVyZ2V0b29sLnNoIGIvZ2l0LW1lcmdldG9vbC5zaAppbmRleCAwMTJhZmE1Li4zMzI1MjhmIDEwMDc1NQotLS0gYS9naXQtbWVyZ2V0b29sLnNoCisrKyBiL2dpdC1tZXJnZXRvb2wuc2gKQEAgLTMxNSw0MyArMzE1LDYgQEAKIAlyZXR1cm4gMAogfQogCi1zaG93X3Rvb2xfaGVscCAoKSB7Ci0JVE9PTF9NT0RFPW1lcmdlCi0JbGlzdF9tZXJnZV90b29sX2NhbmRpZGF0ZXMKLQl1bmF2YWlsYWJsZT0gYXZhaWxhYmxlPSBMRj0nCi0nCi0JZm9yIGkgaW4gJHRvb2xzCi0JZG8KLQkJbWVyZ2VfdG9vbF9wYXRoPSQodHJhbnNsYXRlX21lcmdlX3Rvb2xfcGF0aCAiJGkiKQotCQlpZiB0eXBlICIkbWVyZ2VfdG9vbF9wYXRoIiA+L2Rldi9udWxsIDI+JjEKLQkJdGhlbgotCQkJYXZhaWxhYmxlPSIkYXZhaWxhYmxlJGkkTEYiCi0JCWVsc2UKLQkJCXVuYXZhaWxhYmxlPSIkdW5hdmFpbGFibGUkaSRMRiIKLQkJZmkKLQlkb25lCi0JaWYgdGVzdCAtbiAiJGF2YWlsYWJsZSIKLQl0aGVuCi0JCWVjaG8gIidnaXQgbWVyZ2V0b29sIC0tdG9vbD08dG9vbD4nIG1heSBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotCQllY2hvICIkYXZhaWxhYmxlIiB8IHNvcnQgfCBzZWQgLWUgJ3MvXi8JLycKLQllbHNlCi0JCWVjaG8gIk5vIHN1aXRhYmxlIHRvb2wgZm9yICdnaXQgbWVyZ2V0b29sIC0tdG9vbD08dG9vbD4nIGZvdW5kLiIKLQlmaQotCWlmIHRlc3QgLW4gIiR1bmF2YWlsYWJsZSIKLQl0aGVuCi0JCWVjaG8KLQkJZWNobyAnVGhlIGZvbGxvd2luZyB0b29scyBhcmUgdmFsaWQsIGJ1dCBub3QgY3VycmVudGx5IGF2YWlsYWJsZTonCi0JCWVjaG8gIiR1bmF2YWlsYWJsZSIgfCBzb3J0IHwgc2VkIC1lICdzL14vCS8nCi0JZmkKLQlpZiB0ZXN0IC1uICIkdW5hdmFpbGFibGUkYXZhaWxhYmxlIgotCXRoZW4KLQkJZWNobwotCQllY2hvICJTb21lIG9mIHRoZSB0b29scyBsaXN0ZWQgYWJvdmUgb25seSB3b3JrIGluIGEgd2luZG93ZWQiCi0JCWVjaG8gImVudmlyb25tZW50LiBJZiBydW4gaW4gYSB0ZXJtaW5hbC1vbmx5IHNlc3Npb24sIHRoZXkgd2lsbCBmYWlsLiIKLQlmaQotCWV4aXQgMAotfQotCiBwcm9tcHQ9JChnaXQgY29uZmlnIC0tYm9vbCBtZXJnZXRvb2wucHJvbXB0IHx8IGVjaG8gdHJ1ZSkKIAogd2hpbGUgdGVzdCAkIyAhPSAwCmRpZmYgLS1naXQgYS9naXQtcDQucHkgYi9naXQtcDQucHkKaW5kZXggMDY4MmU2MS4uODhmY2YyMyAxMDA3NTUKLS0tIGEvZ2l0LXA0LnB5CisrKyBiL2dpdC1wNC5weQpAQCAtNywxMCArNywyMSBAQAogIyAgICAgICAgICAgIDIwMDcgVHJvbGx0ZWNoIEFTQQogIyBMaWNlbnNlOiBNSVQgPGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwPgogIwotCi1pbXBvcnQgb3B0cGFyc2UsIHN5cywgb3MsIG1hcnNoYWwsIHN1YnByb2Nlc3MsIHNoZWx2ZQotaW1wb3J0IHRlbXBmaWxlLCBnZXRvcHQsIG9zLnBhdGgsIHRpbWUsIHBsYXRmb3JtCi1pbXBvcnQgcmUsIHNodXRpbAoraW1wb3J0IHN5cworaWYgc3lzLmhleHZlcnNpb24gPCAweDAyMDQwMDAwOgorICAgICMgVGhlIGxpbWl0ZXIgaXMgdGhlIHN1YnByb2Nlc3MgbW9kdWxlCisgICAgc3lzLnN0ZGVyci53cml0ZSgiZ2l0LXA0OiByZXF1aXJlcyBQeXRob24gMi40IG9yIGxhdGVyLlxuIikKKyAgICBzeXMuZXhpdCgxKQoraW1wb3J0IG9zCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9ydCBtYXJzaGFsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CiAKIHRyeToKICAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IENhbGxlZFByb2Nlc3NFcnJvcgpAQCAtNjgsMTIgKzc5LDI3IEBACiAgICAgICAgIHJlYWxfY21kICs9IGNtZAogICAgIHJldHVybiByZWFsX2NtZAogCi1kZWYgY2hkaXIoZGlyKToKLSAgICAjIFA0IHVzZXMgdGhlIFBXRCBlbnZpcm9ubWVudCB2YXJpYWJsZSByYXRoZXIgdGhhbiBnZXRjd2QoKS4gU2luY2Ugd2UncmUKLSAgICAjIG5vdCB1c2luZyB0aGUgc2hlbGwsIHdlIGhhdmUgdG8gc2V0IGl0IG91cnNlbHZlcy4gIFRoaXMgcGF0aCBjb3VsZAotICAgICMgYmUgcmVsYXRpdmUsIHNvIGdvIHRoZXJlIGZpcnN0LCB0aGVuIGZpZ3VyZSBvdXQgd2hlcmUgd2UgZW5kZWQgdXAuCi0gICAgb3MuY2hkaXIoZGlyKQotICAgIG9zLmVudmlyb25bJ1BXRCddID0gb3MuZ2V0Y3dkKCkKK2RlZiBjaGRpcihwYXRoLCBpc19jbGllbnRfcGF0aD1GYWxzZSk6CisgICAgIiIiRG8gY2hkaXIgdG8gdGhlIGdpdmVuIHBhdGgsIGFuZCBzZXQgdGhlIFBXRCBlbnZpcm9ubWVudAorICAgICAgIHZhcmlhYmxlIGZvciB1c2UgYnkgUDQuICBJdCBkb2VzIG5vdCBsb29rIGF0IGdldGN3ZCgpIG91dHB1dC4KKyAgICAgICBTaW5jZSB3ZSdyZSBub3QgdXNpbmcgdGhlIHNoZWxsLCBpdCBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZQorICAgICAgIFBXRCBlbnZpcm9ubWVudCB2YXJpYWJsZSBleHBsaWNpdGx5LgorCisgICAgICAgTm9ybWFsbHksIGV4cGFuZCB0aGUgcGF0aCB0byBmb3JjZSBpdCB0byBiZSBhYnNvbHV0ZS4gIFRoaXMKKyAgICAgICBhZGRyZXNzZXMgdGhlIHVzZSBvZiByZWxhdGl2ZSBwYXRoIG5hbWVzIGluc2lkZSBQNCBzZXR0aW5ncywKKyAgICAgICBlLmcuIFA0Q09ORklHPS5wNGNvbmZpZy4gIFA0IGRvZXMgbm90IHNpbXBseSBvcGVuIHRoZSBmaWxlbmFtZQorICAgICAgIGFzIGdpdmVuOyBpdCBsb29rcyBmb3IgLnA0Y29uZmlnIHVzaW5nIFBXRC4KKworICAgICAgIElmIGlzX2NsaWVudF9wYXRoLCB0aGUgcGF0aCB3YXMgaGFuZGVkIHRvIHVzIGRpcmVjdGx5IGJ5IHA0LAorICAgICAgIGFuZCBtYXkgYmUgYSBzeW1ib2xpYyBsaW5rLiAgRG8gbm90IGNhbGwgb3MuZ2V0Y3dkKCkgaW4gdGhpcworICAgICAgIGNhc2UsIGJlY2F1c2UgaXQgd2lsbCBjYXVzZSBwNCB0byB0aGluayB0aGF0IFBXRCBpcyBub3QgaW5zaWRlCisgICAgICAgdGhlIGNsaWVudCBwYXRoLgorICAgICAgICIiIgorCisgICAgb3MuY2hkaXIocGF0aCkKKyAgICBpZiBub3QgaXNfY2xpZW50X3BhdGg6CisgICAgICAgIHBhdGggPSBvcy5nZXRjd2QoKQorICAgIG9zLmVudmlyb25bJ1BXRCddID0gcGF0aAogCiBkZWYgZGllKG1zZyk6CiAgICAgaWYgdmVyYm9zZToKQEAgLTE3OSw2ICsyMDUsMjIgQEAKICAgICBpZiByZXRjb2RlOgogICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcmVhbF9jbWQpCiAKK19wNF92ZXJzaW9uX3N0cmluZyA9IE5vbmUKK2RlZiBwNF92ZXJzaW9uX3N0cmluZygpOgorICAgICIiIlJlYWQgdGhlIHZlcnNpb24gc3RyaW5nLCBzaG93aW5nIGp1c3QgdGhlIGxhc3QgbGluZSwgd2hpY2gKKyAgICAgICBob3BlZnVsbHkgaXMgdGhlIGludGVyZXN0aW5nIHZlcnNpb24gYml0LgorCisgICAgICAgJCBwNCAtVgorICAgICAgIFBlcmZvcmNlIC0gVGhlIEZhc3QgU29mdHdhcmUgQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IFN5c3RlbS4KKyAgICAgICBDb3B5cmlnaHQgMTk5NS0yMDExIFBlcmZvcmNlIFNvZnR3YXJlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICAgICBSZXYuIFA0L05UWDg2LzIwMTEuMS8zOTM5NzUgKDIwMTEvMTIvMTYpLgorICAgICIiIgorICAgIGdsb2JhbCBfcDRfdmVyc2lvbl9zdHJpbmcKKyAgICBpZiBub3QgX3A0X3ZlcnNpb25fc3RyaW5nOgorICAgICAgICBhID0gcDRfcmVhZF9waXBlX2xpbmVzKFsiLVYiXSkKKyAgICAgICAgX3A0X3ZlcnNpb25fc3RyaW5nID0gYVstMV0ucnN0cmlwKCkKKyAgICByZXR1cm4gX3A0X3ZlcnNpb25fc3RyaW5nCisKIGRlZiBwNF9pbnRlZ3JhdGUoc3JjLCBkZXN0KToKICAgICBwNF9zeXN0ZW0oWyJpbnRlZ3JhdGUiLCAiLUR0Iiwgd2lsZGNhcmRfZW5jb2RlKHNyYyksIHdpbGRjYXJkX2VuY29kZShkZXN0KV0pCiAKQEAgLTU1Miw0MyArNTk0LDc1IEBACiAgICAgcmV0dXJuIHByb2Mud2FpdCgpID09IDA7CiAKIF9naXRDb25maWcgPSB7fQotZGVmIGdpdENvbmZpZyhrZXksIGFyZ3MgPSBOb25lKTogIyBzZXQgYXJncyB0byAiLS1ib29sIiwgZm9yIGluc3RhbmNlCisKK2RlZiBnaXRDb25maWcoa2V5KToKICAgICBpZiBub3QgX2dpdENvbmZpZy5oYXNfa2V5KGtleSk6Ci0gICAgICAgIGFyZ3NGaWx0ZXIgPSAiIgotICAgICAgICBpZiBhcmdzICE9IE5vbmU6Ci0gICAgICAgICAgICBhcmdzRmlsdGVyID0gIiVzICIgJSBhcmdzCi0gICAgICAgIGNtZCA9ICJnaXQgY29uZmlnICVzJXMiICUgKGFyZ3NGaWx0ZXIsIGtleSkKLSAgICAgICAgX2dpdENvbmZpZ1trZXldID0gcmVhZF9waXBlKGNtZCwgaWdub3JlX2Vycm9yPVRydWUpLnN0cmlwKCkKKyAgICAgICAgY21kID0gWyAiZ2l0IiwgImNvbmZpZyIsIGtleSBdCisgICAgICAgIHMgPSByZWFkX3BpcGUoY21kLCBpZ25vcmVfZXJyb3I9VHJ1ZSkKKyAgICAgICAgX2dpdENvbmZpZ1trZXldID0gcy5zdHJpcCgpCisgICAgcmV0dXJuIF9naXRDb25maWdba2V5XQorCitkZWYgZ2l0Q29uZmlnQm9vbChrZXkpOgorICAgICIiIlJldHVybiBhIGJvb2wsIHVzaW5nIGdpdCBjb25maWcgLS1ib29sLiAgSXQgaXMgVHJ1ZSBvbmx5IGlmIHRoZQorICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byB0cnVlLCBhbmQgRmFsc2UgaWYgc2V0IHRvIGZhbHNlIG9yIG5vdCBwcmVzZW50CisgICAgICAgaW4gdGhlIGNvbmZpZy4iIiIKKworICAgIGlmIG5vdCBfZ2l0Q29uZmlnLmhhc19rZXkoa2V5KToKKyAgICAgICAgY21kID0gWyAiZ2l0IiwgImNvbmZpZyIsICItLWJvb2wiLCBrZXkgXQorICAgICAgICBzID0gcmVhZF9waXBlKGNtZCwgaWdub3JlX2Vycm9yPVRydWUpCisgICAgICAgIHYgPSBzLnN0cmlwKCkKKyAgICAgICAgX2dpdENvbmZpZ1trZXldID0gdiA9PSAidHJ1ZSIKICAgICByZXR1cm4gX2dpdENvbmZpZ1trZXldCiAKIGRlZiBnaXRDb25maWdMaXN0KGtleSk6CiAgICAgaWYgbm90IF9naXRDb25maWcuaGFzX2tleShrZXkpOgotICAgICAgICBfZ2l0Q29uZmlnW2tleV0gPSByZWFkX3BpcGUoImdpdCBjb25maWcgLS1nZXQtYWxsICVzIiAlIGtleSwgaWdub3JlX2Vycm9yPVRydWUpLnN0cmlwKCkuc3BsaXQob3MubGluZXNlcCkKKyAgICAgICAgcyA9IHJlYWRfcGlwZShbImdpdCIsICJjb25maWciLCAiLS1nZXQtYWxsIiwga2V5XSwgaWdub3JlX2Vycm9yPVRydWUpCisgICAgICAgIF9naXRDb25maWdba2V5XSA9IHMuc3RyaXAoKS5zcGxpdChvcy5saW5lc2VwKQogICAgIHJldHVybiBfZ2l0Q29uZmlnW2tleV0KIAotZGVmIHA0QnJhbmNoZXNJbkdpdChicmFuY2hlc0FyZUluUmVtb3RlcyA9IFRydWUpOgorZGVmIHA0QnJhbmNoZXNJbkdpdChicmFuY2hlc0FyZUluUmVtb3Rlcz1UcnVlKToKKyAgICAiIiJGaW5kIGFsbCB0aGUgYnJhbmNoZXMgd2hvc2UgbmFtZXMgc3RhcnQgd2l0aCAicDQvIiwgbG9va2luZworICAgICAgIGluIHJlbW90ZXMgb3IgaGVhZHMgYXMgc3BlY2lmaWVkIGJ5IHRoZSBhcmd1bWVudC4gIFJldHVybgorICAgICAgIGEgZGljdGlvbmFyeSBvZiB7IGJyYW5jaDogcmV2aXNpb24gfSBmb3IgZWFjaCBvbmUgZm91bmQuCisgICAgICAgVGhlIGJyYW5jaCBuYW1lcyBhcmUgdGhlIHNob3J0IG5hbWVzLCB3aXRob3V0IGFueQorICAgICAgICJwNC8iIHByZWZpeC4iIiIKKwogICAgIGJyYW5jaGVzID0ge30KIAogICAgIGNtZGxpbmUgPSAiZ2l0IHJldi1wYXJzZSAtLXN5bWJvbGljICIKICAgICBpZiBicmFuY2hlc0FyZUluUmVtb3RlczoKLSAgICAgICAgY21kbGluZSArPSAiIC0tcmVtb3RlcyIKKyAgICAgICAgY21kbGluZSArPSAiLS1yZW1vdGVzIgogICAgIGVsc2U6Ci0gICAgICAgIGNtZGxpbmUgKz0gIiAtLWJyYW5jaGVzIgorICAgICAgICBjbWRsaW5lICs9ICItLWJyYW5jaGVzIgogCiAgICAgZm9yIGxpbmUgaW4gcmVhZF9waXBlX2xpbmVzKGNtZGxpbmUpOgogICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAKLSAgICAgICAgIyMgb25seSBpbXBvcnQgdG8gcDQvCi0gICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJ3A0LycpIG9yIGxpbmUgPT0gInA0L0hFQUQiOgorICAgICAgICAjIG9ubHkgaW1wb3J0IHRvIHA0LworICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCdwNC8nKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGJyYW5jaCA9IGxpbmUKKyAgICAgICAgIyBzcGVjaWFsIHN5bWJvbGljIHJlZiB0byBwNC9tYXN0ZXIKKyAgICAgICAgaWYgbGluZSA9PSAicDQvSEVBRCI6CisgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICMgc3RyaXAgb2ZmIHA0Ci0gICAgICAgIGJyYW5jaCA9IHJlLnN1YiAoIl5wNC8iLCAiIiwgbGluZSkKKyAgICAgICAgIyBzdHJpcCBvZmYgcDQvIHByZWZpeAorICAgICAgICBicmFuY2ggPSBsaW5lW2xlbigicDQvIik6XQogCiAgICAgICAgIGJyYW5jaGVzW2JyYW5jaF0gPSBwYXJzZVJldmlzaW9uKGxpbmUpCisKICAgICByZXR1cm4gYnJhbmNoZXMKIAorZGVmIGJyYW5jaF9leGlzdHMoYnJhbmNoKToKKyAgICAiIiJNYWtlIHN1cmUgdGhhdCB0aGUgZ2l2ZW4gcmVmIG5hbWUgcmVhbGx5IGV4aXN0cy4iIiIKKworICAgIGNtZCA9IFsgImdpdCIsICJyZXYtcGFyc2UiLCAiLS1zeW1ib2xpYyIsICItLXZlcmlmeSIsIGJyYW5jaCBdCisgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgIGlmIHAucmV0dXJuY29kZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgIyBleHBlY3QgZXhhY3RseSBvbmUgbGluZSBvZiBvdXRwdXQ6IHRoZSBicmFuY2ggbmFtZQorICAgIHJldHVybiBvdXQucnN0cmlwKCkgPT0gYnJhbmNoCisKIGRlZiBmaW5kVXBzdHJlYW1CcmFuY2hQb2ludChoZWFkID0gIkhFQUQiKToKICAgICBicmFuY2hlcyA9IHA0QnJhbmNoZXNJbkdpdCgpCiAgICAgIyBtYXAgZnJvbSBkZXBvdC1wYXRoIHRvIGJyYW5jaCBuYW1lCkBAIC02OTAsOCArNzY0LDcgQEAKICAgICAjCiAgICAgIyB3ZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGEgcHJvYmxlbS4gSWYgeW91IGhhdmUgY29yZS5pZ25vcmVjYXNlPXRydWUsCiAgICAgIyB3ZSB0cmVhdCBEaXJBIGFuZCBkaXJhIGFzIHRoZSBzYW1lIGRpcmVjdG9yeQotICAgIGlnbm9yZWNhc2UgPSBnaXRDb25maWcoImNvcmUuaWdub3JlY2FzZSIsICItLWJvb2wiKSA9PSAidHJ1ZSIKLSAgICBpZiBpZ25vcmVjYXNlOgorICAgIGlmIGdpdENvbmZpZ0Jvb2woImNvcmUuaWdub3JlY2FzZSIpOgogICAgICAgICByZXR1cm4gcGF0aC5sb3dlcigpLnN0YXJ0c3dpdGgocHJlZml4Lmxvd2VyKCkpCiAgICAgcmV0dXJuIHBhdGguc3RhcnRzd2l0aChwcmVmaXgpCiAKQEAgLTkyMSwxOSArOTk0LDIxIEBACiAgICAgICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZHJ5LXJ1biIsICItbiIsIGRlc3Q9ImRyeV9ydW4iLCBhY3Rpb249InN0b3JlX3RydWUiKSwKICAgICAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1wcmVwYXJlLXA0LW9ubHkiLCBkZXN0PSJwcmVwYXJlX3A0X29ubHkiLCBhY3Rpb249InN0b3JlX3RydWUiKSwKICAgICAgICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1jb25mbGljdCIsIGRlc3Q9ImNvbmZsaWN0X2JlaGF2aW9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXNlbGYuY29uZmxpY3RfYmVoYXZpb3JfY2hvaWNlcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPXNlbGYuY29uZmxpY3RfYmVoYXZpb3JfY2hvaWNlcyksCisgICAgICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYnJhbmNoIiwgZGVzdD0iYnJhbmNoIiksCiAgICAgICAgIF0KICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9ICJTdWJtaXQgY2hhbmdlcyBmcm9tIGdpdCB0byB0aGUgcGVyZm9yY2UgZGVwb3QuIgogICAgICAgICBzZWxmLnVzYWdlICs9ICIgW25hbWUgb2YgZ2l0IGJyYW5jaCB0byBzdWJtaXQgaW50byBwZXJmb3JjZSBkZXBvdF0iCiAgICAgICAgIHNlbGYub3JpZ2luID0gIiIKICAgICAgICAgc2VsZi5kZXRlY3RSZW5hbWVzID0gRmFsc2UKLSAgICAgICAgc2VsZi5wcmVzZXJ2ZVVzZXIgPSBnaXRDb25maWcoImdpdC1wNC5wcmVzZXJ2ZVVzZXIiKS5sb3dlcigpID09ICJ0cnVlIgorICAgICAgICBzZWxmLnByZXNlcnZlVXNlciA9IGdpdENvbmZpZ0Jvb2woImdpdC1wNC5wcmVzZXJ2ZVVzZXIiKQogICAgICAgICBzZWxmLmRyeV9ydW4gPSBGYWxzZQogICAgICAgICBzZWxmLnByZXBhcmVfcDRfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYuY29uZmxpY3RfYmVoYXZpb3IgPSBOb25lCiAgICAgICAgIHNlbGYuaXNXaW5kb3dzID0gKHBsYXRmb3JtLnN5c3RlbSgpID09ICJXaW5kb3dzIikKICAgICAgICAgc2VsZi5leHBvcnRMYWJlbHMgPSBGYWxzZQogICAgICAgICBzZWxmLnA0SGFzTW92ZUNvbW1hbmQgPSBwNF9oYXNfbW92ZV9jb21tYW5kKCkKKyAgICAgICAgc2VsZi5icmFuY2ggPSBOb25lCiAKICAgICBkZWYgY2hlY2soc2VsZik6CiAgICAgICAgIGlmIGxlbihwNENtZExpc3QoIm9wZW5lZCAuLi4iKSkgPiAwOgpAQCAtMTAyMSw3ICsxMDk2LDggQEAKICAgICBkZWYgcDRVc2VyRm9yQ29tbWl0KHNlbGYsaWQpOgogICAgICAgICAjIFJldHVybiB0aGUgdHVwbGUgKHBlcmZvcmNlIHVzZXIsZ2l0IGVtYWlsKSBmb3IgYSBnaXZlbiBnaXQgY29tbWl0IGlkCiAgICAgICAgIHNlbGYuZ2V0VXNlck1hcEZyb21QZXJmb3JjZVNlcnZlcigpCi0gICAgICAgIGdpdEVtYWlsID0gcmVhZF9waXBlKCJnaXQgbG9nIC0tbWF4LWNvdW50PTEgLS1mb3JtYXQ9JyUlYWUnICVzIiAlIGlkKQorICAgICAgICBnaXRFbWFpbCA9IHJlYWRfcGlwZShbImdpdCIsICJsb2ciLCAiLS1tYXgtY291bnQ9MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3JtYXQ9JWFlIiwgaWRdKQogICAgICAgICBnaXRFbWFpbCA9IGdpdEVtYWlsLnN0cmlwKCkKICAgICAgICAgaWYgbm90IHNlbGYuZW1haWxzLmhhc19rZXkoZ2l0RW1haWwpOgogICAgICAgICAgICAgcmV0dXJuIChOb25lLGdpdEVtYWlsKQpAQCAtMTAzNCw3ICsxMTEwLDcgQEAKICAgICAgICAgICAgICh1c2VyLGVtYWlsKSA9IHNlbGYucDRVc2VyRm9yQ29tbWl0KGlkKQogICAgICAgICAgICAgaWYgbm90IHVzZXI6CiAgICAgICAgICAgICAgICAgbXNnID0gIkNhbm5vdCBmaW5kIHA0IHVzZXIgZm9yIGVtYWlsICVzIGluIGNvbW1pdCAlcy4iICUgKGVtYWlsLCBpZCkKLSAgICAgICAgICAgICAgICBpZiBnaXRDb25maWcoJ2dpdC1wNC5hbGxvd01pc3NpbmdQNFVzZXJzJykubG93ZXIoKSA9PSAidHJ1ZSI6CisgICAgICAgICAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LmFsbG93TWlzc2luZ1A0VXNlcnMiKToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiVzIiAlIG1zZwogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGRpZSgiRXJyb3I6ICVzXG5TZXQgZ2l0LXA0LmFsbG93TWlzc2luZ1A0VXNlcnMgdG8gdHJ1ZSB0byBhbGxvdyB0aGlzLiIgJSBtc2cpCkBAIC0xMTI5LDcgKzEyMDUsNyBAQAogICAgICAgICAgICBtZXNzYWdlLiAgUmV0dXJuIHRydWUgaWYgb2theSB0byBjb250aW51ZSB3aXRoIHRoZSBzdWJtaXQuIiIiCiAKICAgICAgICAgIyBpZiBjb25maWd1cmVkIHRvIHNraXAgdGhlIGVkaXRpbmcgcGFydCwganVzdCBzdWJtaXQKLSAgICAgICAgaWYgZ2l0Q29uZmlnKCJnaXQtcDQuc2tpcFN1Ym1pdEVkaXQiKSA9PSAidHJ1ZSI6CisgICAgICAgIGlmIGdpdENvbmZpZ0Jvb2woImdpdC1wNC5za2lwU3VibWl0RWRpdCIpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIGxvb2sgYXQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lLCB0byBjaGVjayBsYXRlciBpZiB0aGUgdXNlciBzYXZlZApAQCAtMTE0NSw3ICsxMjIxLDcgQEAKIAogICAgICAgICAjIElmIHRoZSBmaWxlIHdhcyBub3Qgc2F2ZWQsIHByb21wdCB0byBzZWUgaWYgdGhpcyBwYXRjaCBzaG91bGQKICAgICAgICAgIyBiZSBza2lwcGVkLiAgQnV0IHNraXAgdGhpcyB2ZXJpZmljYXRpb24gc3RlcCBpZiBjb25maWd1cmVkIHNvLgotICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC5za2lwU3VibWl0RWRpdENoZWNrIikgPT0gInRydWUiOgorICAgICAgICBpZiBnaXRDb25maWdCb29sKCJnaXQtcDQuc2tpcFN1Ym1pdEVkaXRDaGVjayIpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAjIG1vZGlmaWNhdGlvbiB0aW1lIHVwZGF0ZWQgbWVhbnMgdXNlciBzYXZlZCB0aGUgZmlsZQpAQCAtMTIwMyw2ICsxMjc5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcDRfZWRpdChkZXN0KQogICAgICAgICAgICAgICAgICAgICBwdXJlUmVuYW1lQ29weS5kaXNjYXJkKGRlc3QpCiAgICAgICAgICAgICAgICAgICAgIGZpbGVzVG9DaGFuZ2VFeGVjQml0W2Rlc3RdID0gZGlmZlsnZHN0X21vZGUnXQorICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzOgorICAgICAgICAgICAgICAgICAgICAjIHR1cm4gb2ZmIHJlYWQtb25seSBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgb3MuY2htb2QoZGVzdCwgc3RhdC5TX0lXUklURSkKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZGVzdCkKICAgICAgICAgICAgICAgICBlZGl0ZWRGaWxlcy5hZGQoZGVzdCkKICAgICAgICAgICAgIGVsaWYgbW9kaWZpZXIgPT0gIlIiOgpAQCAtMTIyMSw2ICsxMzAwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHA0X2VkaXQoZGVzdCkgICAjIHdpdGggbW92ZTogYWxyZWFkeSBvcGVuLCB3cml0YWJsZQogICAgICAgICAgICAgICAgICAgICBmaWxlc1RvQ2hhbmdlRXhlY0JpdFtkZXN0XSA9IGRpZmZbJ2RzdF9tb2RlJ10KICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wNEhhc01vdmVDb21tYW5kOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmlzV2luZG93czoKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNobW9kKGRlc3QsIHN0YXQuU19JV1JJVEUpCiAgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQogICAgICAgICAgICAgICAgICAgICBmaWxlc1RvRGVsZXRlLmFkZChzcmMpCiAgICAgICAgICAgICAgICAgZWRpdGVkRmlsZXMuYWRkKGRlc3QpCkBAIC0xMjQwLDcgKzEzMjEsNyBAQAogCiAgICAgICAgICAgICAjIFBhdGNoIGZhaWxlZCwgbWF5YmUgaXQncyBqdXN0IFJDUyBrZXl3b3JkIHdvZXMuIExvb2sgdGhyb3VnaAogICAgICAgICAgICAgIyB0aGUgcGF0Y2ggdG8gc2VlIGlmIHRoYXQncyBwb3NzaWJsZS4KLSAgICAgICAgICAgIGlmIGdpdENvbmZpZygiZ2l0LXA0LmF0dGVtcHRSQ1NDbGVhbnVwIiwiLS1ib29sIikgPT0gInRydWUiOgorICAgICAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LmF0dGVtcHRSQ1NDbGVhbnVwIik6CiAgICAgICAgICAgICAgICAgZmlsZSA9IE5vbmUKICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gTm9uZQogICAgICAgICAgICAgICAgIGt3ZmlsZXMgPSB7fQpAQCAtMTI2MSw2ICsxMzQyLDEwIEBACiAgICAgICAgICAgICAgICAgZm9yIGZpbGUgaW4ga3dmaWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJ6YXBwaW5nICVzIHdpdGggJXMiICUgKGxpbmUscGF0dGVybikKKyAgICAgICAgICAgICAgICAgICAgIyBGaWxlIGlzIGJlaW5nIGRlbGV0ZWQsIHNvIG5vdCBvcGVuIGluIHA0LiAgTXVzdAorICAgICAgICAgICAgICAgICAgICAjIGRpc2FibGUgdGhlIHJlYWQtb25seSBiaXQgb24gd2luZG93cy4KKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5pc1dpbmRvd3MgYW5kIGZpbGUgbm90IGluIGVkaXRlZEZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2htb2QoZmlsZSwgc3RhdC5TX0lXUklURSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRjaFJDU0tleXdvcmRzKGZpbGUsIGt3ZmlsZXNbZmlsZV0pCiAgICAgICAgICAgICAgICAgICAgIGZpeGVkX3Jjc19rZXl3b3JkcyA9IFRydWUKIApAQCAtMTUzMSw3ICsxNjE2LDcgQEAKICAgICAgICAgICAgIHN5cy5leGl0KDEyOCkKIAogICAgICAgICBzZWxmLnVzZUNsaWVudFNwZWMgPSBGYWxzZQotICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC51c2VjbGllbnRzcGVjIiwgIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LnVzZWNsaWVudHNwZWMiKToKICAgICAgICAgICAgIHNlbGYudXNlQ2xpZW50U3BlYyA9IFRydWUKICAgICAgICAgaWYgc2VsZi51c2VDbGllbnRTcGVjOgogICAgICAgICAgICAgc2VsZi5jbGllbnRTcGVjRGlycyA9IGdldENsaWVudFNwZWMoKQpAQCAtMTU1NCw3ICsxNjM5LDcgQEAKICAgICAgICAgICAgIG5ld19jbGllbnRfZGlyID0gVHJ1ZQogICAgICAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5jbGllbnRQYXRoKQogCi0gICAgICAgIGNoZGlyKHNlbGYuY2xpZW50UGF0aCkKKyAgICAgICAgY2hkaXIoc2VsZi5jbGllbnRQYXRoLCBpc19jbGllbnRfcGF0aD1UcnVlKQogICAgICAgICBpZiBzZWxmLmRyeV9ydW46CiAgICAgICAgICAgICBwcmludCAiV291bGQgc3luY2hyb25pemUgcDQgY2hlY2tvdXQgaW4gJXMiICUgc2VsZi5jbGllbnRQYXRoCiAgICAgICAgIGVsc2U6CkBAIC0xNTY3LDExICsxNjUyLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2soKQogCiAgICAgICAgIGNvbW1pdHMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiByZWFkX3BpcGVfbGluZXMoImdpdCByZXYtbGlzdCAtLW5vLW1lcmdlcyAlcy4uJXMiICUgKHNlbGYub3JpZ2luLCBzZWxmLm1hc3RlcikpOgorICAgICAgICBmb3IgbGluZSBpbiByZWFkX3BpcGVfbGluZXMoWyJnaXQiLCAicmV2LWxpc3QiLCAiLS1uby1tZXJnZXMiLCAiJXMuLiVzIiAlIChzZWxmLm9yaWdpbiwgc2VsZi5tYXN0ZXIpXSk6CiAgICAgICAgICAgICBjb21taXRzLmFwcGVuZChsaW5lLnN0cmlwKCkpCiAgICAgICAgIGNvbW1pdHMucmV2ZXJzZSgpCiAKLSAgICAgICAgaWYgc2VsZi5wcmVzZXJ2ZVVzZXIgb3IgKGdpdENvbmZpZygiZ2l0LXA0LnNraXBVc2VyTmFtZUNoZWNrIikgPT0gInRydWUiKToKKyAgICAgICAgaWYgc2VsZi5wcmVzZXJ2ZVVzZXIgb3IgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LnNraXBVc2VyTmFtZUNoZWNrIik6CiAgICAgICAgICAgICBzZWxmLmNoZWNrQXV0aG9yc2hpcCA9IEZhbHNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmNoZWNrQXV0aG9yc2hpcCA9IFRydWUKQEAgLTE2MDcsNyArMTY5Miw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmRpZmZPcHRzICs9ICIgLUMlcyIgJSBkZXRlY3RDb3BpZXMKIAotICAgICAgICBpZiBnaXRDb25maWcoImdpdC1wNC5kZXRlY3RDb3BpZXNIYXJkZXIiLCAiLS1ib29sIikgPT0gInRydWUiOgorICAgICAgICBpZiBnaXRDb25maWdCb29sKCJnaXQtcDQuZGV0ZWN0Q29waWVzSGFyZGVyIik6CiAgICAgICAgICAgICBzZWxmLmRpZmZPcHRzICs9ICIgLS1maW5kLWNvcGllcy1oYXJkZXIiCiAKICAgICAgICAgIwpAQCAtMTY3MCw2ICsxNzU1LDggQEAKICAgICAgICAgICAgIHByaW50ICJBbGwgY29tbWl0cyBhcHBsaWVkISIKIAogICAgICAgICAgICAgc3luYyA9IFA0U3luYygpCisgICAgICAgICAgICBpZiBzZWxmLmJyYW5jaDoKKyAgICAgICAgICAgICAgICBzeW5jLmJyYW5jaCA9IHNlbGYuYnJhbmNoCiAgICAgICAgICAgICBzeW5jLnJ1bihbXSkKIAogICAgICAgICAgICAgcmViYXNlID0gUDRSZWJhc2UoKQpAQCAtMTY4OSw3ICsxNzc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1mb3JtYXQ9Zm9ybWF0OiVoICVzIiwgIGNdKQogICAgICAgICAgICAgICAgIHByaW50ICJZb3Ugd2lsbCBoYXZlIHRvIGRvICdnaXQgcDQgc3luYycgYW5kIHJlYmFzZS4iCiAKLSAgICAgICAgaWYgZ2l0Q29uZmlnKCJnaXQtcDQuZXhwb3J0TGFiZWxzIiwgIi0tYm9vbCIpID09ICJ0cnVlIjoKKyAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LmV4cG9ydExhYmVscyIpOgogICAgICAgICAgICAgc2VsZi5leHBvcnRMYWJlbHMgPSBUcnVlCiAKICAgICAgICAgaWYgc2VsZi5leHBvcnRMYWJlbHM6CkBAIC0xOTU5LDcgKzIwNDYsNiBAQAogICAgICAgICBzZWxmLnN5bmNXaXRoT3JpZ2luID0gVHJ1ZQogICAgICAgICBzZWxmLmltcG9ydEludG9SZW1vdGVzID0gVHJ1ZQogICAgICAgICBzZWxmLm1heENoYW5nZXMgPSAiIgotICAgICAgICBzZWxmLmlzV2luZG93cyA9IChwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyIpCiAgICAgICAgIHNlbGYua2VlcFJlcG9QYXRoID0gRmFsc2UKICAgICAgICAgc2VsZi5kZXBvdFBhdGhzID0gTm9uZQogICAgICAgICBzZWxmLnA0QnJhbmNoZXNJbkdpdCA9IFtdCkBAIC0yMTA0LDcgKzIxOTAsMTQgQEAKICAgICAgICAgICAgICMgb3BlcmF0aW9ucy4gIHV0ZjE2IGlzIGNvbnZlcnRlZCB0byBhc2NpaSBvciB1dGY4LCBwZXJoYXBzLgogICAgICAgICAgICAgIyBCdXQgYXNjaWkgdGV4dCBzYXZlZCBhcyAtdCB1dGYxNiBpcyBjb21wbGV0ZWx5IG1hbmdsZWQuCiAgICAgICAgICAgICAjIEludm9rZSBwcmludCAtbyB0byBnZXQgdGhlIHJlYWwgY29udGVudHMuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIE9uIHdpbmRvd3MsIHRoZSBuZXdsaW5lcyB3aWxsIGFsd2F5cyBiZSBtYW5nbGVkIGJ5IHByaW50LCBzbyBwdXQKKyAgICAgICAgICAgICMgdGhlbSBiYWNrIHRvby4gIFRoaXMgaXMgbm90IG5lZWRlZCB0byB0aGUgY3lnd2luIHdpbmRvd3MgdmVyc2lvbiwKKyAgICAgICAgICAgICMganVzdCB0aGUgbmF0aXZlICJOVCIgdHlwZS4KKyAgICAgICAgICAgICMKICAgICAgICAgICAgIHRleHQgPSBwNF9yZWFkX3BpcGUoWydwcmludCcsICctcScsICctbycsICctJywgZmlsZVsnZGVwb3RGaWxlJ11dKQorICAgICAgICAgICAgaWYgcDRfdmVyc2lvbl9zdHJpbmcoKS5maW5kKCIvTlQiKSA+PSAwOgorICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQogICAgICAgICAgICAgY29udGVudHMgPSBbIHRleHQgXQogCiAgICAgICAgIGlmIHR5cGVfYmFzZSA9PSAiYXBwbGUiOgpAQCAtMjEyMCwxNSArMjIxMyw2IEBACiAgICAgICAgICAgICBwcmludCAiXG5JZ25vcmluZyBhcHBsZSBmaWxldHlwZSBmaWxlICVzIiAlIGZpbGVbJ2RlcG90RmlsZSddCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIFBlcmhhcHMgd2luZG93cyB3YW50cyB1bmljb2RlLCB1dGYxNiBuZXdsaW5lcyB0cmFuc2xhdGVkIHRvbzsKLSAgICAgICAgIyBidXQgdGhpcyBpcyBub3QgZG9pbmcgaXQuCi0gICAgICAgIGlmIHNlbGYuaXNXaW5kb3dzIGFuZCB0eXBlX2Jhc2UgPT0gInRleHQiOgotICAgICAgICAgICAgbWFuZ2xlZCA9IFtdCi0gICAgICAgICAgICBmb3IgZGF0YSBpbiBjb250ZW50czoKLSAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCJcclxuIiwgIlxuIikKLSAgICAgICAgICAgICAgICBtYW5nbGVkLmFwcGVuZChkYXRhKQotICAgICAgICAgICAgY29udGVudHMgPSBtYW5nbGVkCi0KICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZG8gbm90IHRyeSB0byBkZS1tYW5nbGUga2V5d29yZHMgb24gdXRmMTYgZmlsZXMsCiAgICAgICAgICMgZXZlbiB0aG91Z2ggaW4gdGhlb3J5IHNvbWVib2R5IG1heSB3YW50IHRoYXQuCiAgICAgICAgIHBhdHRlcm4gPSBwNF9rZXl3b3Jkc19yZWdleHBfZm9yX3R5cGUodHlwZV9iYXNlLCB0eXBlX21vZHMpCkBAIC0yNTIzLDEzICsyNjA3LDYgQEAKICAgICAgICAgICAgICAgICBicmFuY2ggPSBicmFuY2hbbGVuKHNlbGYucHJvamVjdE5hbWUpOl0KICAgICAgICAgICAgIHNlbGYua25vd25CcmFuY2hlc1ticmFuY2hdID0gYnJhbmNoCiAKLSAgICBkZWYgbGlzdEV4aXN0aW5nUDRHaXRCcmFuY2hlcyhzZWxmKToKLSAgICAgICAgIyBicmFuY2hlcyBob2xkcyBtYXBwaW5nIGZyb20gbmFtZSB0byBjb21taXQKLSAgICAgICAgYnJhbmNoZXMgPSBwNEJyYW5jaGVzSW5HaXQoc2VsZi5pbXBvcnRJbnRvUmVtb3RlcykKLSAgICAgICAgc2VsZi5wNEJyYW5jaGVzSW5HaXQgPSBicmFuY2hlcy5rZXlzKCkKLSAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlcy5rZXlzKCk6Ci0gICAgICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnRzW3NlbGYucmVmUHJlZml4ICsgYnJhbmNoXSA9IGJyYW5jaGVzW2JyYW5jaF0KLQogICAgIGRlZiB1cGRhdGVPcHRpb25EaWN0KHNlbGYsIGQpOgogICAgICAgICBvcHRpb25fa2V5cyA9IHt9CiAgICAgICAgIGlmIHNlbGYua2VlcFJlcG9QYXRoOgpAQCAtMjYxMyw3ICsyNjkwLDggQEAKIAogICAgIGRlZiBzZWFyY2hQYXJlbnQoc2VsZiwgcGFyZW50LCBicmFuY2gsIHRhcmdldCk6CiAgICAgICAgIHBhcmVudEZvdW5kID0gRmFsc2UKLSAgICAgICAgZm9yIGJsb2IgaW4gcmVhZF9waXBlX2xpbmVzKFsiZ2l0IiwgInJldi1saXN0IiwgIi0tcmV2ZXJzZSIsICItLW5vLW1lcmdlcyIsIHBhcmVudF0pOgorICAgICAgICBmb3IgYmxvYiBpbiByZWFkX3BpcGVfbGluZXMoWyJnaXQiLCAicmV2LWxpc3QiLCAiLS1yZXZlcnNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1tZXJnZXMiLCBwYXJlbnRdKToKICAgICAgICAgICAgIGJsb2IgPSBibG9iLnN0cmlwKCkKICAgICAgICAgICAgIGlmIGxlbihyZWFkX3BpcGUoWyJnaXQiLCAiZGlmZi10cmVlIiwgYmxvYiwgdGFyZ2V0XSkpID09IDA6CiAgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSBUcnVlCkBAIC0yNjg0LDcgKzI3NjIsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgICBibG9iID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHBhcmVudCkgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBCcmFuY2ggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wQnJhbmNoTG9jYXRpb24sICIlZCIgJSAoY2hhbmdlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQnJhbmNoID0gIiVzLyVkIiAlIChzZWxmLnRlbXBCcmFuY2hMb2NhdGlvbiwgY2hhbmdlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkNyZWF0aW5nIHRlbXBvcmFyeSBicmFuY2g6ICIgKyB0ZW1wQnJhbmNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb21taXQoZGVzY3JpcHRpb24sIGZpbGVzRm9yQ29tbWl0LCB0ZW1wQnJhbmNoKQpAQCAtMjcwMSw2ICsyNzc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZXMgPSBzZWxmLmV4dHJhY3RGaWxlc0Zyb21Db21taXQoZGVzY3JpcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWl0KGRlc2NyaXB0aW9uLCBmaWxlcywgc2VsZi5icmFuY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgIyBvbmx5IG5lZWRlZCBvbmNlLCB0byBjb25uZWN0IHRvIHRoZSBwcmV2aW91cyBjb21taXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsUGFyZW50ID0gIiIKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgIHByaW50IHNlbGYuZ2l0RXJyb3IucmVhZCgpCkBAIC0yNzY2LDQxICsyODQ1LDM4IEBACiAgICAgZGVmIHJ1bihzZWxmLCBhcmdzKToKICAgICAgICAgc2VsZi5kZXBvdFBhdGhzID0gW10KICAgICAgICAgc2VsZi5jaGFuZ2VSYW5nZSA9ICIiCi0gICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudCA9ICIiCiAgICAgICAgIHNlbGYucHJldmlvdXNEZXBvdFBhdGhzID0gW10KKyAgICAgICAgc2VsZi5oYXNPcmlnaW4gPSBGYWxzZQogCiAgICAgICAgICMgbWFwIGZyb20gYnJhbmNoIGRlcG90IHBhdGggdG8gcGFyZW50IGJyYW5jaAogICAgICAgICBzZWxmLmtub3duQnJhbmNoZXMgPSB7fQogICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnRzID0ge30KLSAgICAgICAgc2VsZi5oYXNPcmlnaW4gPSBvcmlnaW5QNEJyYW5jaGVzRXhpc3QoKQotICAgICAgICBpZiBub3Qgc2VsZi5zeW5jV2l0aE9yaWdpbjoKLSAgICAgICAgICAgIHNlbGYuaGFzT3JpZ2luID0gRmFsc2UKIAogICAgICAgICBpZiBzZWxmLmltcG9ydEludG9SZW1vdGVzOgogICAgICAgICAgICAgc2VsZi5yZWZQcmVmaXggPSAicmVmcy9yZW1vdGVzL3A0LyIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucmVmUHJlZml4ID0gInJlZnMvaGVhZHMvcDQvIgogCi0gICAgICAgIGlmIHNlbGYuc3luY1dpdGhPcmlnaW4gYW5kIHNlbGYuaGFzT3JpZ2luOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuc2lsZW50OgotICAgICAgICAgICAgICAgIHByaW50ICJTeW5jaW5nIHdpdGggb3JpZ2luIGZpcnN0IGJ5IGNhbGxpbmcgZ2l0IGZldGNoIG9yaWdpbiIKLSAgICAgICAgICAgIHN5c3RlbSgiZ2l0IGZldGNoIG9yaWdpbiIpCisgICAgICAgIGlmIHNlbGYuc3luY1dpdGhPcmlnaW46CisgICAgICAgICAgICBzZWxmLmhhc09yaWdpbiA9IG9yaWdpblA0QnJhbmNoZXNFeGlzdCgpCisgICAgICAgICAgICBpZiBzZWxmLmhhc09yaWdpbjoKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zaWxlbnQ6CisgICAgICAgICAgICAgICAgICAgIHByaW50ICdTeW5jaW5nIHdpdGggb3JpZ2luIGZpcnN0LCB1c2luZyAiZ2l0IGZldGNoIG9yaWdpbiInCisgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgZmV0Y2ggb3JpZ2luIikKIAorICAgICAgICBicmFuY2hfYXJnX2dpdmVuID0gYm9vbChzZWxmLmJyYW5jaCkKICAgICAgICAgaWYgbGVuKHNlbGYuYnJhbmNoKSA9PSAwOgogICAgICAgICAgICAgc2VsZi5icmFuY2ggPSBzZWxmLnJlZlByZWZpeCArICJtYXN0ZXIiCiAgICAgICAgICAgICBpZiBnaXRCcmFuY2hFeGlzdHMoInJlZnMvaGVhZHMvcDQiKSBhbmQgc2VsZi5pbXBvcnRJbnRvUmVtb3RlczoKICAgICAgICAgICAgICAgICBzeXN0ZW0oImdpdCB1cGRhdGUtcmVmICVzIHJlZnMvaGVhZHMvcDQiICUgc2VsZi5icmFuY2gpCi0gICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgYnJhbmNoIC1EIHA0Iik7Ci0gICAgICAgICAgICAjIGNyZWF0ZSBpdCAvYWZ0ZXIvIGltcG9ydGluZywgd2hlbiBtYXN0ZXIgZXhpc3RzCi0gICAgICAgICAgICBpZiBub3QgZ2l0QnJhbmNoRXhpc3RzKHNlbGYucmVmUHJlZml4ICsgIkhFQUQiKSBhbmQgc2VsZi5pbXBvcnRJbnRvUmVtb3RlcyBhbmQgZ2l0QnJhbmNoRXhpc3RzKHNlbGYuYnJhbmNoKToKLSAgICAgICAgICAgICAgICBzeXN0ZW0oImdpdCBzeW1ib2xpYy1yZWYgJXNIRUFEICVzIiAlIChzZWxmLnJlZlByZWZpeCwgc2VsZi5icmFuY2gpKQorICAgICAgICAgICAgICAgIHN5c3RlbSgiZ2l0IGJyYW5jaCAtRCBwNCIpCiAKICAgICAgICAgIyBhY2NlcHQgZWl0aGVyIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uLCBvciB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZQogICAgICAgICBpZiBzZWxmLnVzZUNsaWVudFNwZWM6CiAgICAgICAgICAgICAjIHdpbGwgdXNlIHRoaXMgYWZ0ZXIgY2xvbmUgdG8gc2V0IHRoZSB2YXJpYWJsZQogICAgICAgICAgICAgc2VsZi51c2VDbGllbnRTcGVjX2Zyb21fb3B0aW9ucyA9IFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGdpdENvbmZpZygiZ2l0LXA0LnVzZWNsaWVudHNwZWMiLCAiLS1ib29sIikgPT0gInRydWUiOgorICAgICAgICAgICAgaWYgZ2l0Q29uZmlnQm9vbCgiZ2l0LXA0LnVzZWNsaWVudHNwZWMiKToKICAgICAgICAgICAgICAgICBzZWxmLnVzZUNsaWVudFNwZWMgPSBUcnVlCiAgICAgICAgIGlmIHNlbGYudXNlQ2xpZW50U3BlYzoKICAgICAgICAgICAgIHNlbGYuY2xpZW50U3BlY0RpcnMgPSBnZXRDbGllbnRTcGVjKCkKQEAgLTI4MTAsMTIgKzI4ODYsMjUgQEAKICAgICAgICAgaWYgYXJncyA9PSBbXToKICAgICAgICAgICAgIGlmIHNlbGYuaGFzT3JpZ2luOgogICAgICAgICAgICAgICAgIGNyZWF0ZU9yVXBkYXRlQnJhbmNoZXNGcm9tT3JpZ2luKHNlbGYucmVmUHJlZml4LCBzZWxmLnNpbGVudCkKLSAgICAgICAgICAgIHNlbGYubGlzdEV4aXN0aW5nUDRHaXRCcmFuY2hlcygpCisKKyAgICAgICAgICAgICMgYnJhbmNoZXMgaG9sZHMgbWFwcGluZyBmcm9tIGJyYW5jaCBuYW1lIHRvIHNoYTEKKyAgICAgICAgICAgIGJyYW5jaGVzID0gcDRCcmFuY2hlc0luR2l0KHNlbGYuaW1wb3J0SW50b1JlbW90ZXMpCisKKyAgICAgICAgICAgICMgcmVzdHJpY3QgdG8ganVzdCB0aGlzIG9uZSwgZGlzYWJsaW5nIGRldGVjdC1icmFuY2hlcworICAgICAgICAgICAgaWYgYnJhbmNoX2FyZ19naXZlbjoKKyAgICAgICAgICAgICAgICBzaG9ydCA9IHNlbGYuYnJhbmNoLnNwbGl0KCIvIilbLTFdCisgICAgICAgICAgICAgICAgaWYgc2hvcnQgaW4gYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucDRCcmFuY2hlc0luR2l0ID0gWyBzaG9ydCBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucDRCcmFuY2hlc0luR2l0ID0gYnJhbmNoZXMua2V5cygpCiAKICAgICAgICAgICAgIGlmIGxlbihzZWxmLnA0QnJhbmNoZXNJbkdpdCkgPiAxOgogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNpbGVudDoKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkltcG9ydGluZyBmcm9tL2ludG8gbXVsdGlwbGUgYnJhbmNoZXMiCiAgICAgICAgICAgICAgICAgc2VsZi5kZXRlY3RCcmFuY2hlcyA9IFRydWUKKyAgICAgICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0aWFsUGFyZW50c1tzZWxmLnJlZlByZWZpeCArIGJyYW5jaF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hlc1ticmFuY2hdCiAKICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCAiYnJhbmNoZXM6ICVzIiAlIHNlbGYucDRCcmFuY2hlc0luR2l0CkBAIC0yODUyLDEzICsyOTQxLDIxIEBACiAgICAgICAgICAgICBpZiBwNENoYW5nZSA+IDA6CiAgICAgICAgICAgICAgICAgc2VsZi5kZXBvdFBhdGhzID0gc29ydGVkKHNlbGYucHJldmlvdXNEZXBvdFBhdGhzKQogICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlUmFuZ2UgPSAiQCVzLCNoZWFkIiAlIHA0Q2hhbmdlCi0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZGV0ZWN0QnJhbmNoZXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdGlhbFBhcmVudCA9IHBhcnNlUmV2aXNpb24oc2VsZi5icmFuY2gpCiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuc2lsZW50IGFuZCBub3Qgc2VsZi5kZXRlY3RCcmFuY2hlczoKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlBlcmZvcm1pbmcgaW5jcmVtZW50YWwgaW1wb3J0IGludG8gJXMgZ2l0IGJyYW5jaCIgJSBzZWxmLmJyYW5jaAogCisgICAgICAgICMgYWNjZXB0IG11bHRpcGxlIHJlZiBuYW1lIGFiYnJldmlhdGlvbnM6CisgICAgICAgICMgICAgcmVmcy9mb28vYmFyL2JyYW5jaCAtPiB1c2UgaXQgZXhhY3RseQorICAgICAgICAjICAgIHA0L2JyYW5jaCAtPiBwcmVwZW5kIHJlZnMvcmVtb3Rlcy8gb3IgcmVmcy9oZWFkcy8KKyAgICAgICAgIyAgICBicmFuY2ggLT4gcHJlcGVuZCByZWZzL3JlbW90ZXMvcDQvIG9yIHJlZnMvaGVhZHMvcDQvCiAgICAgICAgIGlmIG5vdCBzZWxmLmJyYW5jaC5zdGFydHN3aXRoKCJyZWZzLyIpOgotICAgICAgICAgICAgc2VsZi5icmFuY2ggPSAicmVmcy9oZWFkcy8iICsgc2VsZi5icmFuY2gKKyAgICAgICAgICAgIGlmIHNlbGYuaW1wb3J0SW50b1JlbW90ZXM6CisgICAgICAgICAgICAgICAgcHJlcGVuZCA9ICJyZWZzL3JlbW90ZXMvIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmVwZW5kID0gInJlZnMvaGVhZHMvIgorICAgICAgICAgICAgaWYgbm90IHNlbGYuYnJhbmNoLnN0YXJ0c3dpdGgoInA0LyIpOgorICAgICAgICAgICAgICAgIHByZXBlbmQgKz0gInA0LyIKKyAgICAgICAgICAgIHNlbGYuYnJhbmNoID0gcHJlcGVuZCArIHNlbGYuYnJhbmNoCiAKICAgICAgICAgaWYgbGVuKGFyZ3MpID09IDAgYW5kIHNlbGYuZGVwb3RQYXRoczoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNpbGVudDoKQEAgLTI5NjksOCArMzA2NiwyMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGNhdGNoICJnaXQgcDQgc3luYyIgd2l0aCBubyBuZXcgYnJhbmNoZXMsIGluIGEgcmVwbyB0aGF0CiAgICAgICAgICAgICAgICAgIyBkb2VzIG5vdCBoYXZlIGFueSBleGlzdGluZyBwNCBicmFuY2hlcwotICAgICAgICAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwIGFuZCBub3Qgc2VsZi5wNEJyYW5jaGVzSW5HaXQ6Ci0gICAgICAgICAgICAgICAgICAgIGRpZSgiTm8gcmVtb3RlIHA0IGJyYW5jaGVzLiAgUGVyaGFwcyB5b3UgbmV2ZXIgZGlkIFwiZ2l0IHA0IGNsb25lXCIgaW4gaGVyZS4iKTsKKyAgICAgICAgICAgICAgICBpZiBsZW4oYXJncykgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucDRCcmFuY2hlc0luR2l0OgorICAgICAgICAgICAgICAgICAgICAgICAgZGllKCJObyByZW1vdGUgcDQgYnJhbmNoZXMuICBQZXJoYXBzIHlvdSBuZXZlciBkaWQgXCJnaXQgcDQgY2xvbmVcIiBpbiBoZXJlLiIpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBicmFuY2ggaXMgbWFzdGVyLCB1bmxlc3MgLS1icmFuY2ggaXMgdXNlZCB0bworICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZnkgc29tZXRoaW5nIGVsc2UuICBNYWtlIHN1cmUgaXQgZXhpc3RzLCBvciBjb21wbGFpbgorICAgICAgICAgICAgICAgICAgICAjIG5pY2VseSBhYm91dCBob3cgdG8gdXNlIC0tYnJhbmNoLgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5kZXRlY3RCcmFuY2hlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBicmFuY2hfZXhpc3RzKHNlbGYuYnJhbmNoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBicmFuY2hfYXJnX2dpdmVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWUoIkVycm9yOiBicmFuY2ggJXMgZG9lcyBub3QgZXhpc3QuIiAlIHNlbGYuYnJhbmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiRXJyb3I6IG5vIGJyYW5jaCAlczsgcGVyaGFwcyBzcGVjaWZ5IG9uZSB3aXRoIC0tYnJhbmNoLiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5icmFuY2gpCisKICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgIHByaW50ICJHZXR0aW5nIHA0IGNoYW5nZXMgZm9yICVzLi4uJXMiICUgKCcsICcuam9pbihzZWxmLmRlcG90UGF0aHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZVJhbmdlKQpAQCAtMjk4OCw2ICszMDk4LDE0IEBACiAKICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZWRCcmFuY2hlcyA9IHNldCgpCiAKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5kZXRlY3RCcmFuY2hlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc3RhcnQgYSBuZXcgYnJhbmNoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnQgPSAiIgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBidWlsZCBvbiBhIHByZXZpb3VzIHJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXRpYWxQYXJlbnQgPSBwYXJzZVJldmlzaW9uKHNlbGYuYnJhbmNoKQorCiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRDaGFuZ2VzKGNoYW5nZXMpCiAKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zaWxlbnQ6CkBAIC0yOTk4LDcgKzMxMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzICIgJSBiKQogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQogCi0gICAgICAgIGlmIGdpdENvbmZpZygiZ2l0LXA0LmltcG9ydExhYmVscyIsICItLWJvb2wiKSA9PSAidHJ1ZSI6CisgICAgICAgIGlmIGdpdENvbmZpZ0Jvb2woImdpdC1wNC5pbXBvcnRMYWJlbHMiKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0TGFiZWxzID0gVHJ1ZQogCiAgICAgICAgIGlmIHNlbGYuaW1wb3J0TGFiZWxzOgpAQCAtMzAyMCw2ICszMTM4LDEzIEBACiAgICAgICAgICAgICAgICAgcmVhZF9waXBlKCJnaXQgdXBkYXRlLXJlZiAtZCAlcyIgJSBicmFuY2gpCiAgICAgICAgICAgICBvcy5ybWRpcihvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoIkdJVF9ESVIiLCAiLmdpdCIpLCBzZWxmLnRlbXBCcmFuY2hMb2NhdGlvbikpCiAKKyAgICAgICAgIyBDcmVhdGUgYSBzeW1ib2xpYyByZWYgcDQvSEVBRCBwb2ludGluZyB0byBwNC88YnJhbmNoPiB0byBhbGxvdworICAgICAgICAjIGEgY29udmVuaWVudCBzaG9ydGN1dCByZWZuYW1lICJwNCIuCisgICAgICAgIGlmIHNlbGYuaW1wb3J0SW50b1JlbW90ZXM6CisgICAgICAgICAgICBoZWFkX3JlZiA9IHNlbGYucmVmUHJlZml4ICsgIkhFQUQiCisgICAgICAgICAgICBpZiBub3QgZ2l0QnJhbmNoRXhpc3RzKGhlYWRfcmVmKSBhbmQgZ2l0QnJhbmNoRXhpc3RzKHNlbGYuYnJhbmNoKToKKyAgICAgICAgICAgICAgICBzeXN0ZW0oWyJnaXQiLCAic3ltYm9saWMtcmVmIiwgaGVhZF9yZWYsIHNlbGYuYnJhbmNoXSkKKwogICAgICAgICByZXR1cm4gVHJ1ZQogCiBjbGFzcyBQNFJlYmFzZShDb21tYW5kKToKQEAgLTMwNDMsNyArMzE2OCw3IEBACiAgICAgICAgIGlmIG9zLnN5c3RlbSgiZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2giKSAhPSAwOgogICAgICAgICAgICAgZGllKCJTb21lIGZpbGVzIGluIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgYXJlIG1vZGlmaWVkIGFuZCBkaWZmZXJlbnQgdGhhbiB3aGF0IGlzIGluIHlvdXIgaW5kZXguIFlvdSBjYW4gdXNlIGdpdCB1cGRhdGUtaW5kZXggPGZpbGVuYW1lPiB0byBicmluZyB0aGUgaW5kZXggdXAtdG8tZGF0ZSBvciBzdGFzaCBhd2F5IGFsbCB5b3VyIGNoYW5nZXMgd2l0aCBnaXQgc3Rhc2guIik7CiAgICAgICAgIGlmIGxlbihyZWFkX3BpcGUoImdpdCBkaWZmLWluZGV4IEhFQUQgLS0iKSkgPiAwOgotICAgICAgICAgICAgZGllKCJZb3UgaGF2ZSB1bmNvbW1pdGVkIGNoYW5nZXMuIFBsZWFzZSBjb21taXQgdGhlbSBiZWZvcmUgcmViYXNpbmcgb3Igc3Rhc2ggdGhlbSBhd2F5IHdpdGggZ2l0IHN0YXNoLiIpOworICAgICAgICAgICAgZGllKCJZb3UgaGF2ZSB1bmNvbW1pdHRlZCBjaGFuZ2VzLiBQbGVhc2UgY29tbWl0IHRoZW0gYmVmb3JlIHJlYmFzaW5nIG9yIHN0YXNoIHRoZW0gYXdheSB3aXRoIGdpdCBzdGFzaC4iKTsKIAogICAgICAgICBbdXBzdHJlYW0sIHNldHRpbmdzXSA9IGZpbmRVcHN0cmVhbUJyYW5jaFBvaW50KCkKICAgICAgICAgaWYgbGVuKHVwc3RyZWFtKSA9PSAwOgpAQCAtMzEwOSw2ICszMjM0LDcgQEAKICAgICAgICAgc2VsZi5jbG9uZUV4Y2x1ZGUgPSBbIi8iK3AgZm9yIHAgaW4gc2VsZi5jbG9uZUV4Y2x1ZGVdCiAgICAgICAgIGZvciBwIGluIGRlcG90UGF0aHM6CiAgICAgICAgICAgICBpZiBub3QgcC5zdGFydHN3aXRoKCIvLyIpOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0RlcG90IHBhdGhzIG11c3Qgc3RhcnQgd2l0aCAiLy8iOiAlc1xuJyAlIHApCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgaWYgbm90IHNlbGYuY2xvbmVEZXN0aW5hdGlvbjoKQEAgLTMxMjksMTcgKzMyNTUsMTUgQEAKIAogICAgICAgICBpZiBub3QgUDRTeW5jLnJ1bihzZWxmLCBkZXBvdFBhdGhzKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLmJyYW5jaCAhPSAibWFzdGVyIjoKLSAgICAgICAgICAgIGlmIHNlbGYuaW1wb3J0SW50b1JlbW90ZXM6Ci0gICAgICAgICAgICAgICAgbWFzdGVyYnJhbmNoID0gInJlZnMvcmVtb3Rlcy9wNC9tYXN0ZXIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hc3RlcmJyYW5jaCA9ICJyZWZzL2hlYWRzL3A0L21hc3RlciIKLSAgICAgICAgICAgIGlmIGdpdEJyYW5jaEV4aXN0cyhtYXN0ZXJicmFuY2gpOgotICAgICAgICAgICAgICAgIHN5c3RlbSgiZ2l0IGJyYW5jaCBtYXN0ZXIgJXMiICUgbWFzdGVyYnJhbmNoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb25lQmFyZToKLSAgICAgICAgICAgICAgICAgICAgc3lzdGVtKCJnaXQgY2hlY2tvdXQgLWYiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCAiQ291bGQgbm90IGRldGVjdCBtYWluIGJyYW5jaC4gTm8gY2hlY2tvdXQvbWFzdGVyIGJyYW5jaCBjcmVhdGVkLiIKKworICAgICAgICAjIGNyZWF0ZSBhIG1hc3RlciBicmFuY2ggYW5kIGNoZWNrIG91dCBhIHdvcmsgdHJlZQorICAgICAgICBpZiBnaXRCcmFuY2hFeGlzdHMoc2VsZi5icmFuY2gpOgorICAgICAgICAgICAgc3lzdGVtKFsgImdpdCIsICJicmFuY2giLCAibWFzdGVyIiwgc2VsZi5icmFuY2ggXSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb25lQmFyZToKKyAgICAgICAgICAgICAgICBzeXN0ZW0oWyAiZ2l0IiwgImNoZWNrb3V0IiwgIi1mIiBdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgJ05vdCBjaGVja2luZyBvdXQgYW55IGJyYW5jaCwgdXNlICcgXAorICAgICAgICAgICAgICAgICAgJyJnaXQgY2hlY2tvdXQgLXEgLWIgbWFzdGVyIDxicmFuY2g+IicKIAogICAgICAgICAjIGF1dG8tc2V0IHRoaXMgdmFyaWFibGUgaWYgaW52b2tlZCB3aXRoIC0tdXNlLWNsaWVudC1zcGVjCiAgICAgICAgIGlmIHNlbGYudXNlQ2xpZW50U3BlY19mcm9tX29wdGlvbnM6CmRpZmYgLS1naXQgYS9naXQtcHVsbC5zaCBiL2dpdC1wdWxsLnNoCmluZGV4IDI2NmU2ODIuLjYzOGFhYmIgMTAwNzU1Ci0tLSBhL2dpdC1wdWxsLnNoCisrKyBiL2dpdC1wdWxsLnNoCkBAIC0zOSw3ICszOSw3IEBACiB0ZXN0IC1mICIkR0lUX0RJUi9NRVJHRV9IRUFEIiAmJiBkaWVfbWVyZ2UKIAogc3RyYXRlZ3lfYXJncz0gZGlmZnN0YXQ9IG5vX2NvbW1pdD0gc3F1YXNoPSBub19mZj0gZmZfb25seT0KLWxvZ19hcmc9IHZlcmJvc2l0eT0gcHJvZ3Jlc3M9IHJlY3Vyc2Vfc3VibW9kdWxlcz0KK2xvZ19hcmc9IHZlcmJvc2l0eT0gcHJvZ3Jlc3M9IHJlY3Vyc2Vfc3VibW9kdWxlcz0gdmVyaWZ5X3NpZ25hdHVyZXM9CiBtZXJnZV9hcmdzPSBlZGl0PQogY3Vycl9icmFuY2g9JChnaXQgc3ltYm9saWMtcmVmIC1xIEhFQUQpCiBjdXJyX2JyYW5jaF9zaG9ydD0iJHtjdXJyX2JyYW5jaCNyZWZzL2hlYWRzL30iCkBAIC0xMjUsNiArMTI1LDEyIEBACiAJLS1uby1yZWN1cnNlLXN1Ym1vZHVsZXMpCiAJCXJlY3Vyc2Vfc3VibW9kdWxlcz0tLW5vLXJlY3Vyc2Utc3VibW9kdWxlcwogCQk7OworCS0tdmVyaWZ5LXNpZ25hdHVyZXMpCisJCXZlcmlmeV9zaWduYXR1cmVzPS0tdmVyaWZ5LXNpZ25hdHVyZXMKKwkJOzsKKwktLW5vLXZlcmlmeS1zaWduYXR1cmVzKQorCQl2ZXJpZnlfc2lnbmF0dXJlcz0tLW5vLXZlcmlmeS1zaWduYXR1cmVzCisJCTs7CiAJLS1kfC0tZHJ8LS1kcnl8LS1kcnktfC0tZHJ5LXJ8LS1kcnktcnV8LS1kcnktcnVuKQogCQlkcnlfcnVuPS0tZHJ5LXJ1bgogCQk7OwpAQCAtMjc5LDExICsyODUsMTEgQEAKIG1lcmdlX25hbWU9JChnaXQgZm10LW1lcmdlLW1zZyAkbG9nX2FyZyA8IiRHSVRfRElSL0ZFVENIX0hFQUQiKSB8fCBleGl0CiBjYXNlICIkcmViYXNlIiBpbgogdHJ1ZSkKLQlldmFsPSJnaXQtcmViYXNlICRkaWZmc3RhdCAkc3RyYXRlZ3lfYXJncyAkbWVyZ2VfYXJncyIKKwlldmFsPSJnaXQtcmViYXNlICRkaWZmc3RhdCAkc3RyYXRlZ3lfYXJncyAkbWVyZ2VfYXJncyAkdmVyYm9zaXR5IgogCWV2YWw9IiRldmFsIC0tb250byAkbWVyZ2VfaGVhZCAke29sZHJlbW90ZXJlZjotJG1lcmdlX2hlYWR9IgogCTs7CiAqKQotCWV2YWw9ImdpdC1tZXJnZSAkZGlmZnN0YXQgJG5vX2NvbW1pdCAkZWRpdCAkc3F1YXNoICRub19mZiAkZmZfb25seSIKKwlldmFsPSJnaXQtbWVyZ2UgJGRpZmZzdGF0ICRub19jb21taXQgJHZlcmlmeV9zaWduYXR1cmVzICRlZGl0ICRzcXVhc2ggJG5vX2ZmICRmZl9vbmx5IgogCWV2YWw9IiRldmFsICAkbG9nX2FyZyAkc3RyYXRlZ3lfYXJncyAkbWVyZ2VfYXJncyAkdmVyYm9zaXR5ICRwcm9ncmVzcyIKIAlldmFsPSIkZXZhbCBcIlwkbWVyZ2VfbmFtZVwiIEhFQUQgJG1lcmdlX2hlYWQiCiAJOzsKZGlmZiAtLWdpdCBhL2dpdC1xdWlsdGltcG9ydC5zaCBiL2dpdC1xdWlsdGltcG9ydC5zaAppbmRleCA5YTZiYTJiLi44ZTE3NTI1IDEwMDc1NQotLS0gYS9naXQtcXVpbHRpbXBvcnQuc2gKKysrIGIvZ2l0LXF1aWx0aW1wb3J0LnNoCkBAIC01OSw3ICs1OSw3IEBACiB0bXBfaW5mbz0iJHRtcF9kaXIvaW5mbyIKIAogCi0jIEZpbmQgdGhlIGludGlhbCBjb21taXQKKyMgRmluZCB0aGUgaW5pdGlhbCBjb21taXQKIGNvbW1pdD0kKGdpdCByZXYtcGFyc2UgSEVBRCkKIAogbWtkaXIgJHRtcF9kaXIgfHwgZXhpdCAyCmRpZmYgLS1naXQgYS9naXQtcmViYXNlLS1hbS5zaCBiL2dpdC1yZWJhc2UtLWFtLnNoCmluZGV4IDM5MmViYzkuLjM0ZTMxMDIgMTAwNjQ0Ci0tLSBhL2dpdC1yZWJhc2UtLWFtLnNoCisrKyBiL2dpdC1yZWJhc2UtLWFtLnNoCkBAIC03LDE3ICs3LDE4IEBACiBjb250aW51ZSkKIAlnaXQgYW0gLS1yZXNvbHZlZCAtLXJlc29sdmVtc2c9IiRyZXNvbHZlbXNnIiAmJgogCW1vdmVfdG9fb3JpZ2luYWxfYnJhbmNoCi0JZXhpdAorCXJldHVybgogCTs7CiBza2lwKQogCWdpdCBhbSAtLXNraXAgLS1yZXNvbHZlbXNnPSIkcmVzb2x2ZW1zZyIgJiYKIAltb3ZlX3RvX29yaWdpbmFsX2JyYW5jaAotCWV4aXQKKwlyZXR1cm4KIAk7OwogZXNhYwogCiB0ZXN0IC1uICIkcmViYXNlX3Jvb3QiICYmIHJvb3RfZmxhZz0tLXJvb3QKIAorcmV0PTAKIGlmIHRlc3QgLW4gIiRrZWVwX2VtcHR5IgogdGhlbgogCSMgd2UgaGF2ZSB0byBkbyB0aGlzIHRoZSBoYXJkIHdheS4gIGdpdCBmb3JtYXQtcGF0Y2ggY29tcGxldGVseSBzcXVhc2hlcwpAQCAtMjUsMTMgKzI2LDQ5IEBACiAJIyBpdHNlbGYgd2VsbCB0byByZWNvcmRpbmcgZW1wdHkgcGF0Y2hlcy4gIGZvcnR1bmF0ZWx5LCBjaGVycnktcGljawogCSMgbWFrZXMgdGhpcyBlYXN5CiAJZ2l0IGNoZXJyeS1waWNrIC0tYWxsb3ctZW1wdHkgIiRyZXZpc2lvbnMiCisJcmV0PSQ/CiBlbHNlCi0JZ2l0IGZvcm1hdC1wYXRjaCAtayAtLXN0ZG91dCAtLWZ1bGwtaW5kZXggLS1pZ25vcmUtaWYtaW4tdXBzdHJlYW0gXAotCQktLXNyYy1wcmVmaXg9YS8gLS1kc3QtcHJlZml4PWIvIFwKLQkJLS1uby1yZW5hbWVzICRyb290X2ZsYWcgIiRyZXZpc2lvbnMiIHwKLQlnaXQgYW0gJGdpdF9hbV9vcHQgLS1yZWJhc2luZyAtLXJlc29sdmVtc2c9IiRyZXNvbHZlbXNnIgotZmkgJiYgbW92ZV90b19vcmlnaW5hbF9icmFuY2gKKwlybSAtZiAiJEdJVF9ESVIvcmViYXNlZC1wYXRjaGVzIgogCi1yZXQ9JD8KLXRlc3QgMCAhPSAkcmV0IC1hIC1kICIkc3RhdGVfZGlyIiAmJiB3cml0ZV9iYXNpY19zdGF0ZQotZXhpdCAkcmV0CisJZ2l0IGZvcm1hdC1wYXRjaCAtayAtLXN0ZG91dCAtLWZ1bGwtaW5kZXggLS1pZ25vcmUtaWYtaW4tdXBzdHJlYW0gXAorCQktLXNyYy1wcmVmaXg9YS8gLS1kc3QtcHJlZml4PWIvIC0tbm8tcmVuYW1lcyAtLW5vLWNvdmVyLWxldHRlciBcCisJCSRyb290X2ZsYWcgIiRyZXZpc2lvbnMiID4iJEdJVF9ESVIvcmViYXNlZC1wYXRjaGVzIgorCXJldD0kPworCisJaWYgdGVzdCAwICE9ICRyZXQKKwl0aGVuCisJCXJtIC1mICIkR0lUX0RJUi9yZWJhc2VkLXBhdGNoZXMiCisJCWNhc2UgIiRoZWFkX25hbWUiIGluCisJCXJlZnMvaGVhZHMvKikKKwkJCWdpdCBjaGVja291dCAtcSAiJGhlYWRfbmFtZSIKKwkJCTs7CisJCSopCisJCQlnaXQgY2hlY2tvdXQgLXEgIiRvcmlnX2hlYWQiCisJCQk7OworCQllc2FjCisKKwkJY2F0ID4mMiA8PC1FT0YKKworCQlnaXQgZW5jb3VudGVyZWQgYW4gZXJyb3Igd2hpbGUgcHJlcGFyaW5nIHRoZSBwYXRjaGVzIHRvIHJlcGxheQorCQl0aGVzZSByZXZpc2lvbnM6CisKKwkJICAgICRyZXZpc2lvbnMKKworCQlBcyBhIHJlc3VsdCwgZ2l0IGNhbm5vdCByZWJhc2UgdGhlbS4KKwkJRU9GCisJCXJldHVybiAkPworCWZpCisKKwlnaXQgYW0gJGdpdF9hbV9vcHQgLS1yZWJhc2luZyAtLXJlc29sdmVtc2c9IiRyZXNvbHZlbXNnIiA8IiRHSVRfRElSL3JlYmFzZWQtcGF0Y2hlcyIKKwlyZXQ9JD8KKworCXJtIC1mICIkR0lUX0RJUi9yZWJhc2VkLXBhdGNoZXMiCitmaQorCitpZiB0ZXN0IDAgIT0gJHJldAordGhlbgorCXRlc3QgLWQgIiRzdGF0ZV9kaXIiICYmIHdyaXRlX2Jhc2ljX3N0YXRlCisJcmV0dXJuICRyZXQKK2ZpCisKK21vdmVfdG9fb3JpZ2luYWxfYnJhbmNoCmRpZmYgLS1naXQgYS9naXQtcmViYXNlLS1pbnRlcmFjdGl2ZS5zaCBiL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoCmluZGV4IDhlZDdmY2MuLmY5NTNkOGQgMTAwNjQ0Ci0tLSBhL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoCisrKyBiL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoCkBAIC01Nyw2ICs1Nyw5IEBACiAKIGRyb3BwZWQ9IiRzdGF0ZV9kaXIiL2Ryb3BwZWQKIAorZW5kPSIkc3RhdGVfZGlyIi9lbmQKK21zZ251bT0iJHN0YXRlX2RpciIvbXNnbnVtCisKICMgQSBzY3JpcHQgdG8gc2V0IHRoZSBHSVRfQVVUSE9SX05BTUUsIEdJVF9BVVRIT1JfRU1BSUwsIGFuZAogIyBHSVRfQVVUSE9SX0RBVEUgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBjb21taXQgdGhhdCBpcyBjdXJyZW50bHkKICMgYmVpbmcgcmViYXNlZC4KQEAgLTgwLDYgKzgzLDkgQEAKIEdJVF9DSEVSUllfUElDS19IRUxQPSIkcmVzb2x2ZW1zZyIKIGV4cG9ydCBHSVRfQ0hFUlJZX1BJQ0tfSEVMUAogCitjb21tZW50X2NoYXI9JChnaXQgY29uZmlnIC0tZ2V0IGNvcmUuY29tbWVudGNoYXIgMj4vZGV2L251bGwgfCBjdXQgLWMxKQorOiAke2NvbW1lbnRfY2hhcjo9I30KKwogd2FybiAoKSB7CiAJcHJpbnRmICclc1xuJyAiJCoiID4mMgogfQpAQCAtMTA1LDggKzExMSwxMCBAQAogCXNlZCAtZSAxcSA8ICIkdG9kbyIgPj4gIiRkb25lIgogCXNlZCAtZSAxZCA8ICIkdG9kbyIgPj4gIiR0b2RvIi5uZXcKIAltdiAtZiAiJHRvZG8iLm5ldyAiJHRvZG8iCi0JbmV3X2NvdW50PSQoc2FuZV9ncmVwIC1jICdeW14jXScgPCAiJGRvbmUiKQotCXRvdGFsPSQoKCRuZXdfY291bnQrJChzYW5lX2dyZXAgLWMgJ15bXiNdJyA8ICIkdG9kbyIpKSkKKwluZXdfY291bnQ9JChnaXQgc3RyaXBzcGFjZSAtLXN0cmlwLWNvbW1lbnRzIDwiJGRvbmUiIHwgd2MgLWwpCisJZWNobyAkbmV3X2NvdW50ID4iJG1zZ251bSIKKwl0b3RhbD0kKCgkbmV3X2NvdW50ICsgJChnaXQgc3RyaXBzcGFjZSAtLXN0cmlwLWNvbW1lbnRzIDwiJHRvZG8iIHwgd2MgLWwpKSkKKwllY2hvICR0b3RhbCA+IiRlbmQiCiAJaWYgdGVzdCAiJGxhc3RfY291bnQiICE9ICIkbmV3X2NvdW50IgogCXRoZW4KIAkJbGFzdF9jb3VudD0kbmV3X2NvdW50CkBAIC0xMTYsMTkgKzEyNCwxOSBAQAogfQogCiBhcHBlbmRfdG9kb19oZWxwICgpIHsKLQljYXQgPj4gIiR0b2RvIiA8PCBFT0YKLSMKLSMgQ29tbWFuZHM6Ci0jICBwLCBwaWNrID0gdXNlIGNvbW1pdAotIyAgciwgcmV3b3JkID0gdXNlIGNvbW1pdCwgYnV0IGVkaXQgdGhlIGNvbW1pdCBtZXNzYWdlCi0jICBlLCBlZGl0ID0gdXNlIGNvbW1pdCwgYnV0IHN0b3AgZm9yIGFtZW5kaW5nCi0jICBzLCBzcXVhc2ggPSB1c2UgY29tbWl0LCBidXQgbWVsZCBpbnRvIHByZXZpb3VzIGNvbW1pdAotIyAgZiwgZml4dXAgPSBsaWtlICJzcXVhc2giLCBidXQgZGlzY2FyZCB0aGlzIGNvbW1pdCdzIGxvZyBtZXNzYWdlCi0jICB4LCBleGVjID0gcnVuIGNvbW1hbmQgKHRoZSByZXN0IG9mIHRoZSBsaW5lKSB1c2luZyBzaGVsbAotIwotIyBUaGVzZSBsaW5lcyBjYW4gYmUgcmUtb3JkZXJlZDsgdGhleSBhcmUgZXhlY3V0ZWQgZnJvbSB0b3AgdG8gYm90dG9tLgotIwotIyBJZiB5b3UgcmVtb3ZlIGEgbGluZSBoZXJlIFRIQVQgQ09NTUlUIFdJTEwgQkUgTE9TVC4KKwlnaXQgc3RyaXBzcGFjZSAtLWNvbW1lbnQtbGluZXMgPj4iJHRvZG8iIDw8XEVPRgorCitDb21tYW5kczoKKyBwLCBwaWNrID0gdXNlIGNvbW1pdAorIHIsIHJld29yZCA9IHVzZSBjb21taXQsIGJ1dCBlZGl0IHRoZSBjb21taXQgbWVzc2FnZQorIGUsIGVkaXQgPSB1c2UgY29tbWl0LCBidXQgc3RvcCBmb3IgYW1lbmRpbmcKKyBzLCBzcXVhc2ggPSB1c2UgY29tbWl0LCBidXQgbWVsZCBpbnRvIHByZXZpb3VzIGNvbW1pdAorIGYsIGZpeHVwID0gbGlrZSAic3F1YXNoIiwgYnV0IGRpc2NhcmQgdGhpcyBjb21taXQncyBsb2cgbWVzc2FnZQorIHgsIGV4ZWMgPSBydW4gY29tbWFuZCAodGhlIHJlc3Qgb2YgdGhlIGxpbmUpIHVzaW5nIHNoZWxsCisKK1RoZXNlIGxpbmVzIGNhbiBiZSByZS1vcmRlcmVkOyB0aGV5IGFyZSBleGVjdXRlZCBmcm9tIHRvcCB0byBib3R0b20uCisKK0lmIHlvdSByZW1vdmUgYSBsaW5lIGhlcmUgVEhBVCBDT01NSVQgV0lMTCBCRSBMT1NULgogRU9GCiB9CiAKQEAgLTE3OSw3ICsxODcsNyBAQAogfQogCiBoYXNfYWN0aW9uICgpIHsKLQlzYW5lX2dyZXAgJ15bXiNdJyAiJDEiID4vZGV2L251bGwKKwl0ZXN0IC1uICIkKGdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkMSIpIgogfQogCiBpc19lbXB0eV9jb21taXQoKSB7CkBAIC0zNjMsMTAgKzM3MSwxMCBAQAogCWlmIHRlc3QgLWYgIiRzcXVhc2hfbXNnIjsgdGhlbgogCQltdiAiJHNxdWFzaF9tc2ciICIkc3F1YXNoX21zZyIuYmFrIHx8IGV4aXQKIAkJY291bnQ9JCgoJChzZWQgLW4gXAotCQkJLWUgIjFzL14jIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiBcKC4qXCkgY29tbWl0c1wuL1wxL3AiIFwKKwkJCS1lICIxcy9eLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgXCguKlwpIGNvbW1pdHNcLi9cMS9wIiBcCiAJCQktZSAicSIgPCAiJHNxdWFzaF9tc2ciLmJhaykrMSkpCiAJCXsKLQkJCWVjaG8gIiMgVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mICRjb3VudCBjb21taXRzLiIKKwkJCXByaW50ZiAnJXNcbicgIiRjb21tZW50X2NoYXIgVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mICRjb3VudCBjb21taXRzLiIKIAkJCXNlZCAtZSAxZCAtZSAnMiwvXi4vewogCQkJCS9eJC9kCiAJCQl9JyA8IiRzcXVhc2hfbXNnIi5iYWsKQEAgLTM3NSw4ICszODMsOCBAQAogCQljb21taXRfbWVzc2FnZSBIRUFEID4gIiRmaXh1cF9tc2ciIHx8IGRpZSAiQ2Fubm90IHdyaXRlICRmaXh1cF9tc2ciCiAJCWNvdW50PTIKIAkJewotCQkJZWNobyAiIyBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgMiBjb21taXRzLiIKLQkJCWVjaG8gIiMgVGhlIGZpcnN0IGNvbW1pdCdzIG1lc3NhZ2UgaXM6IgorCQkJcHJpbnRmICclc1xuJyAiJGNvbW1lbnRfY2hhciBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgMiBjb21taXRzLiIKKwkJCXByaW50ZiAnJXNcbicgIiRjb21tZW50X2NoYXIgVGhlIGZpcnN0IGNvbW1pdCdzIG1lc3NhZ2UgaXM6IgogCQkJZWNobwogCQkJY2F0ICIkZml4dXBfbXNnIgogCQl9ID4iJHNxdWFzaF9tc2ciCkBAIC0zODUsMjEgKzM5MywyMiBAQAogCXNxdWFzaCkKIAkJcm0gLWYgIiRmaXh1cF9tc2ciCiAJCWVjaG8KLQkJZWNobyAiIyBUaGlzIGlzIHRoZSAkKG50aF9zdHJpbmcgJGNvdW50KSBjb21taXQgbWVzc2FnZToiCisJCXByaW50ZiAnJXNcbicgIiRjb21tZW50X2NoYXIgVGhpcyBpcyB0aGUgJChudGhfc3RyaW5nICRjb3VudCkgY29tbWl0IG1lc3NhZ2U6IgogCQllY2hvCiAJCWNvbW1pdF9tZXNzYWdlICQyCiAJCTs7CiAJZml4dXApCiAJCWVjaG8KLQkJZWNobyAiIyBUaGUgJChudGhfc3RyaW5nICRjb3VudCkgY29tbWl0IG1lc3NhZ2Ugd2lsbCBiZSBza2lwcGVkOiIKKwkJcHJpbnRmICclc1xuJyAiJGNvbW1lbnRfY2hhciBUaGUgJChudGhfc3RyaW5nICRjb3VudCkgY29tbWl0IG1lc3NhZ2Ugd2lsbCBiZSBza2lwcGVkOiIKIAkJZWNobwotCQljb21taXRfbWVzc2FnZSAkMiB8IHNlZCAtZSAncy9eLyMJLycKKwkJIyBDaGFuZ2UgdGhlIHNwYWNlIGFmdGVyIHRoZSBjb21tZW50IGNoYXJhY3RlciB0byBUQUI6CisJCWNvbW1pdF9tZXNzYWdlICQyIHwgZ2l0IHN0cmlwc3BhY2UgLS1jb21tZW50LWxpbmVzIHwgc2VkIC1lICdzLyAvCS8nCiAJCTs7CiAJZXNhYyA+PiIkc3F1YXNoX21zZyIKIH0KIAogcGVla19uZXh0X2NvbW1hbmQgKCkgewotCXNlZCAtbiAtZSAiL14jL2QiIC1lICcvXiQvZCcgLWUgInMvIC4qLy9wIiAtZSAicSIgPCAiJHRvZG8iCisJZ2l0IHN0cmlwc3BhY2UgLS1zdHJpcC1jb21tZW50cyA8IiR0b2RvIiB8IHNlZCAtbiAtZSAncy8gLiovL3AnIC1lIHEKIH0KIAogIyBBIHNxdWFzaC9maXh1cCBoYXMgZmFpbGVkLiAgUHJlcGFyZSB0aGUgbG9uZyB2ZXJzaW9uIG9mIHRoZSBzcXVhc2gKQEAgLTQ2NCw3ICs0NzMsNyBAQAogCXJtIC1mICIkbXNnIiAiJGF1dGhvcl9zY3JpcHQiICIkYW1lbmQiIHx8IGV4aXQKIAlyZWFkIC1yIGNvbW1hbmQgc2hhMSByZXN0IDwgIiR0b2RvIgogCWNhc2UgIiRjb21tYW5kIiBpbgotCScjJyp8Jyd8bm9vcCkKKwkiJGNvbW1lbnRfY2hhciIqfCcnfG5vb3ApCiAJCW1hcmtfYWN0aW9uX2RvbmUKIAkJOzsKIAlwaWNrfHApCkBAIC02MTksMTcgKzYyOCwxNiBAQAogCQkiJEdJVF9ESVIiL2hvb2tzL3Bvc3QtcmV3cml0ZSByZWJhc2UgPCAiJHJld3JpdHRlbl9saXN0IgogCQl0cnVlICMgd2UgZG9uJ3QgY2FyZSBpZiB0aGlzIGhvb2sgZmFpbGVkCiAJZmkgJiYKLQlybSAtcmYgIiRzdGF0ZV9kaXIiICYmCi0JZ2l0IGdjIC0tYXV0byAmJgogCXdhcm4gIlN1Y2Nlc3NmdWxseSByZWJhc2VkIGFuZCB1cGRhdGVkICRoZWFkX25hbWUuIgogCi0JZXhpdAorCXJldHVybiAxICMgbm90IGZhaWx1cmU7IGp1c3QgdG8gYnJlYWsgdGhlIGRvX3Jlc3QgbG9vcAogfQogCisjIGNhbiBvbmx5IHJldHVybiAwLCB3aGVuIHRoZSBpbmZpbml0ZSBsb29wIGJyZWFrcwogZG9fcmVzdCAoKSB7CiAJd2hpbGUgOgogCWRvCi0JCWRvX25leHQKKwkJZG9fbmV4dCB8fCBicmVhawogCWRvbmUKIH0KIApAQCAtNzk2LDIyICs4MDQsMjQgQEAKIAogCXJlcXVpcmVfY2xlYW5fd29ya190cmVlICJyZWJhc2UiCiAJZG9fcmVzdAorCXJldHVybiAwCiAJOzsKIHNraXApCiAJZ2l0IHJlcmVyZSBjbGVhcgogCiAJZG9fcmVzdAorCXJldHVybiAwCiAJOzsKIGVkaXQtdG9kbykKLQlzZWQgLWUgJy9eIy9kJyA8ICIkdG9kbyIgPiAiJHRvZG8iLm5ldworCWdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkdG9kbyIgPiIkdG9kbyIubmV3CiAJbXYgLWYgIiR0b2RvIi5uZXcgIiR0b2RvIgogCWFwcGVuZF90b2RvX2hlbHAKLQljYXQgPj4gIiR0b2RvIiA8PCBFT0YKLSMKLSMgWW91IGFyZSBlZGl0aW5nIHRoZSB0b2RvIGZpbGUgb2YgYW4gb25nb2luZyBpbnRlcmFjdGl2ZSByZWJhc2UuCi0jIFRvIGNvbnRpbnVlIHJlYmFzZSBhZnRlciBlZGl0aW5nLCBydW46Ci0jICAgICBnaXQgcmViYXNlIC0tY29udGludWUKLSMKKwlnaXQgc3RyaXBzcGFjZSAtLWNvbW1lbnQtbGluZXMgPj4iJHRvZG8iIDw8XEVPRgorCitZb3UgYXJlIGVkaXRpbmcgdGhlIHRvZG8gZmlsZSBvZiBhbiBvbmdvaW5nIGludGVyYWN0aXZlIHJlYmFzZS4KK1RvIGNvbnRpbnVlIHJlYmFzZSBhZnRlciBlZGl0aW5nLCBydW46CisgICAgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisKIEVPRgogCiAJZ2l0X3NlcXVlbmNlX2VkaXRvciAiJHRvZG8iIHx8CkBAIC04MzMsNyArODQzLDcgQEAKIGZpCiAKIG9yaWdfaGVhZD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwgZGllICJObyBIRUFEPyIKLW1rZGlyICIkc3RhdGVfZGlyIiB8fCBkaWUgIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5ICRzdGF0ZV9kaXIiCitta2RpciAtcCAiJHN0YXRlX2RpciIgfHwgZGllICJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSAkc3RhdGVfZGlyIgogCiA6ID4gIiRzdGF0ZV9kaXIiL2ludGVyYWN0aXZlIHx8IGRpZSAiQ291bGQgbm90IG1hcmsgYXMgaW50ZXJhY3RpdmUiCiB3cml0ZV9iYXNpY19zdGF0ZQpAQCAtODgxLDcgKzg5MSw3IEBACiAKIAlpZiB0ZXN0IC16ICIka2VlcF9lbXB0eSIgJiYgaXNfZW1wdHlfY29tbWl0ICRzaG9ydHNoYTEgJiYgISBpc19tZXJnZV9jb21taXQgJHNob3J0c2hhMQogCXRoZW4KLQkJY29tbWVudF9vdXQ9IiMgIgorCQljb21tZW50X291dD0iJGNvbW1lbnRfY2hhciAiCiAJZWxzZQogCQljb21tZW50X291dD0KIAlmaQpAQCAtOTQyLDIwICs5NTIsMjAgQEAKIHRlc3QgLW4gIiRhdXRvc3F1YXNoIiAmJiByZWFycmFuZ2Vfc3F1YXNoICIkdG9kbyIKIHRlc3QgLW4gIiRjbWQiICYmIGFkZF9leGVjX2NvbW1hbmRzICIkdG9kbyIKIAotY2F0ID4+ICIkdG9kbyIgPDwgRU9GCitjYXQgPj4iJHRvZG8iIDw8RU9GCiAKLSMgUmViYXNlICRzaG9ydHJldmlzaW9ucyBvbnRvICRzaG9ydG9udG8KKyRjb21tZW50X2NoYXIgUmViYXNlICRzaG9ydHJldmlzaW9ucyBvbnRvICRzaG9ydG9udG8KIEVPRgogYXBwZW5kX3RvZG9faGVscAotY2F0ID4+ICIkdG9kbyIgPDwgRU9GCi0jCi0jIEhvd2V2ZXIsIGlmIHlvdSByZW1vdmUgZXZlcnl0aGluZywgdGhlIHJlYmFzZSB3aWxsIGJlIGFib3J0ZWQuCi0jCitnaXQgc3RyaXBzcGFjZSAtLWNvbW1lbnQtbGluZXMgPj4iJHRvZG8iIDw8XEVPRgorCitIb3dldmVyLCBpZiB5b3UgcmVtb3ZlIGV2ZXJ5dGhpbmcsIHRoZSByZWJhc2Ugd2lsbCBiZSBhYm9ydGVkLgorCiBFT0YKIAogaWYgdGVzdCAteiAiJGtlZXBfZW1wdHkiCiB0aGVuCi0JZWNobyAiIyBOb3RlIHRoYXQgZW1wdHkgY29tbWl0cyBhcmUgY29tbWVudGVkIG91dCIgPj4iJHRvZG8iCisJcHJpbnRmICclc1xuJyAiJGNvbW1lbnRfY2hhciBOb3RlIHRoYXQgZW1wdHkgY29tbWl0cyBhcmUgY29tbWVudGVkIG91dCIgPj4iJHRvZG8iCiBmaQogCiAKZGlmZiAtLWdpdCBhL2dpdC1yZWJhc2UtLW1lcmdlLnNoIGIvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2gKaW5kZXggYjEwZjJjZi4uMTZkMTgxNyAxMDA2NDQKLS0tIGEvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2gKKysrIGIvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2gKQEAgLTk2LDcgKzk2LDYgQEAKIAkJCSIkR0lUX0RJUiIvaG9va3MvcG9zdC1yZXdyaXRlIHJlYmFzZSA8IiRzdGF0ZV9kaXIiL3Jld3JpdHRlbgogCQlmaQogCWZpCi0Jcm0gLXIgIiRzdGF0ZV9kaXIiCiAJc2F5IEFsbCBkb25lLgogfQogCkBAIC0xMTAsNyArMTA5LDcgQEAKIAkJY29udGludWVfbWVyZ2UKIAlkb25lCiAJZmluaXNoX3JiX21lcmdlCi0JZXhpdAorCXJldHVybgogCTs7CiBza2lwKQogCXJlYWRfc3RhdGUKQEAgLTEyMiw3ICsxMjEsNyBAQAogCQljb250aW51ZV9tZXJnZQogCWRvbmUKIAlmaW5pc2hfcmJfbWVyZ2UKLQlleGl0CisJcmV0dXJuCiAJOzsKIGVzYWMKIApkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS5zaCBiL2dpdC1yZWJhc2Uuc2gKaW5kZXggYjJmMWM3Ni4uODFiMDM0NiAxMDA3NTUKLS0tIGEvZ2l0LXJlYmFzZS5zaAorKysgYi9naXQtcmViYXNlLnNoCkBAIC0xMyw2ICsxMyw3IEBACiAgQXZhaWxhYmxlIG9wdGlvbnMgYXJlCiB2LHZlcmJvc2UhICAgICAgICAgZGlzcGxheSBhIGRpZmZzdGF0IG9mIHdoYXQgY2hhbmdlZCB1cHN0cmVhbQogcSxxdWlldCEgICAgICAgICAgIGJlIHF1aWV0LiBpbXBsaWVzIC0tbm8tc3RhdAorYXV0b3N0YXNoISAgICAgICAgIGF1dG9tYXRpY2FsbHkgc3Rhc2gvc3Rhc2ggcG9wIGJlZm9yZSBhbmQgYWZ0ZXIKIG9udG89ISAgICAgICAgICAgICByZWJhc2Ugb250byBnaXZlbiBicmFuY2ggaW5zdGVhZCBvZiB1cHN0cmVhbQogcCxwcmVzZXJ2ZS1tZXJnZXMhIHRyeSB0byByZWNyZWF0ZSBtZXJnZXMgaW5zdGVhZCBvZiBpZ25vcmluZyB0aGVtCiBzLHN0cmF0ZWd5PSEgICAgICAgdXNlIHRoZSBnaXZlbiBtZXJnZSBzdHJhdGVneQpAQCAtNjQsNiArNjUsNyBAQAogdmVyYm9zZT0KIGRpZmZzdGF0PQogdGVzdCAiJChnaXQgY29uZmlnIC0tYm9vbCByZWJhc2Uuc3RhdCkiID0gdHJ1ZSAmJiBkaWZmc3RhdD10CithdXRvc3Rhc2g9IiQoZ2l0IGNvbmZpZyAtLWJvb2wgcmViYXNlLmF1dG9zdGFzaCB8fCBlY2hvIGZhbHNlKSIKIGdpdF9hbV9vcHQ9CiByZWJhc2Vfcm9vdD0KIGZvcmNlX3JlYmFzZT0KQEAgLTgyLDYgKzg0LDggQEAKIHRlc3QgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgcmViYXNlLmF1dG9zcXVhc2gpIiA9ICJ0cnVlIiAmJiBhdXRvc3F1YXNoPXQKIAogcmVhZF9iYXNpY19zdGF0ZSAoKSB7CisJdGVzdCAtZiAiJHN0YXRlX2Rpci9oZWFkLW5hbWUiICYmCisJdGVzdCAtZiAiJHN0YXRlX2Rpci9vbnRvIiAmJgogCWhlYWRfbmFtZT0kKGNhdCAiJHN0YXRlX2RpciIvaGVhZC1uYW1lKSAmJgogCW9udG89JChjYXQgIiRzdGF0ZV9kaXIiL29udG8pICYmCiAJIyBXZSBhbHdheXMgd3JpdGUgdG8gb3JpZy1oZWFkLCBidXQgaW50ZXJhY3RpdmUgcmViYXNlIHVzZWQgdG8gd3JpdGUgdG8KQEAgLTE0Myw2ICsxNDcsMjYgQEAKIAllc2FjCiB9CiAKK2ZpbmlzaF9yZWJhc2UgKCkgeworCWlmIHRlc3QgLWYgIiRzdGF0ZV9kaXIvYXV0b3N0YXNoIgorCXRoZW4KKwkJc3Rhc2hfc2hhMT0kKGNhdCAiJHN0YXRlX2Rpci9hdXRvc3Rhc2giKQorCQlpZiBnaXQgc3Rhc2ggYXBwbHkgJHN0YXNoX3NoYTEgMj4mMSA+L2Rldi9udWxsCisJCXRoZW4KKwkJCWVjaG8gIiQoZ2V0dGV4dCAnQXBwbGllZCBhdXRvc3Rhc2guJykiCisJCWVsc2UKKwkJCWdpdCBzdGFzaCBzdG9yZSAtbSAiYXV0b3N0YXNoIiAtcSAkc3Rhc2hfc2hhMSB8fAorCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiQ2Fubm90IHN0b3JlIFwkc3Rhc2hfc2hhMSIpIgorCQkJZ2V0dGV4dCAnQXBwbHlpbmcgYXV0b3N0YXNoIHJlc3VsdGVkIGluIGNvbmZsaWN0cy4KK1lvdXIgY2hhbmdlcyBhcmUgc2FmZSBpbiB0aGUgc3Rhc2guCitZb3UgY2FuIHJ1biAiZ2l0IHN0YXNoIHBvcCIgb3IgImdpdCBzdGFzaCBkcm9wIiBpdCBhdCBhbnkgdGltZS4KKycKKwkJZmkKKwlmaQorCWdpdCBnYyAtLWF1dG8gJiYKKwlybSAtcmYgIiRzdGF0ZV9kaXIiCit9CisKIHJ1bl9zcGVjaWZpY19yZWJhc2UgKCkgewogCWlmIFsgIiRpbnRlcmFjdGl2ZV9yZWJhc2UiID0gaW1wbGllZCBdOyB0aGVuCiAJCUdJVF9FRElUT1I9OgpAQCAtMTUwLDYgKzE3NCwxMiBAQAogCQlhdXRvc3F1YXNoPQogCWZpCiAJLiBnaXQtcmViYXNlLS0kdHlwZQorCXJldD0kPworCWlmIHRlc3QgJHJldCAtZXEgMAorCXRoZW4KKwkJZmluaXNoX3JlYmFzZQorCWZpCisJZXhpdCAkcmV0CiB9CiAKIHJ1bl9wcmVfcmViYXNlX2hvb2sgKCkgewpAQCAtMjQxLDYgKzI3MSw5IEBACiAJLS1zdGF0KQogCQlkaWZmc3RhdD10CiAJCTs7CisJLS1hdXRvc3Rhc2gpCisJCWF1dG9zdGFzaD10cnVlCisJCTs7CiAJLXYpCiAJCXZlcmJvc2U9dAogCQlkaWZmc3RhdD10CkBAIC0zNDEsNyArMzc0LDcgQEAKIAkJOzsKIAllc2FjCiAJb3V0cHV0IGdpdCByZXNldCAtLWhhcmQgJG9yaWdfaGVhZAotCXJtIC1yICIkc3RhdGVfZGlyIgorCWZpbmlzaF9yZWJhc2UKIAlleGl0CiAJOzsKIGVkaXQtdG9kbykKQEAgLTQwMCw3ICs0MzMsNyBAQAogCQlzaGlmdAogCQk7OwogCWVzYWMKLQl1cHN0cmVhbT1gZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHt1cHN0cmVhbV9uYW1lfV4wImAgfHwKKwl1cHN0cmVhbT0kKHBlZWxfY29tbWl0dGlzaCAiJHt1cHN0cmVhbV9uYW1lfSIpIHx8CiAJZGllICIkKGV2YWxfZ2V0dGV4dCAiaW52YWxpZCB1cHN0cmVhbSBcJHVwc3RyZWFtX25hbWUiKSIKIAl1cHN0cmVhbV9hcmc9IiR1cHN0cmVhbV9uYW1lIgogZWxzZQpAQCAtNDM2LDcgKzQ2OSw3IEBACiAJZmkKIAk7OwogKikKLQlvbnRvPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHtvbnRvX25hbWV9XjAiKSB8fAorCW9udG89JChwZWVsX2NvbW1pdHRpc2ggIiRvbnRvX25hbWUiKSB8fAogCWRpZSAiJChldmFsX2dldHRleHQgIkRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgY29tbWl0OiBcJG9udG9fbmFtZSIpIgogCTs7CiBlc2FjCkBAIC00NzMsMTMgKzUwNiwyNSBAQAogCQloZWFkX25hbWU9ImRldGFjaGVkIEhFQUQiCiAJCWJyYW5jaF9uYW1lPUhFQUQgOyMgZGV0YWNoZWQKIAlmaQotCW9yaWdfaGVhZD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiR7YnJhbmNoX25hbWV9XjAiKSB8fCBleGl0CisJb3JpZ19oZWFkPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSB8fCBleGl0CiAJOzsKICopCiAJZGllICJCVUc6IHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBsZWZ0IHRvIHBhcnNlIgogCTs7CiBlc2FjCiAKK2lmIHRlc3QgIiRhdXRvc3Rhc2giID0gdHJ1ZSAmJiAhIChyZXF1aXJlX2NsZWFuX3dvcmtfdHJlZSkgMj4vZGV2L251bGwKK3RoZW4KKwlzdGFzaF9zaGExPSQoZ2l0IHN0YXNoIGNyZWF0ZSAiYXV0b3N0YXNoIikgfHwKKwlkaWUgIiQoZ2V0dGV4dCAnQ2Fubm90IGF1dG9zdGFzaCcpIgorCisJbWtkaXIgLXAgIiRzdGF0ZV9kaXIiICYmCisJZWNobyAkc3Rhc2hfc2hhMSA+IiRzdGF0ZV9kaXIvYXV0b3N0YXNoIiAmJgorCXN0YXNoX2FiYnJldj0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkc3Rhc2hfc2hhMSkgJiYKKwllY2hvICIkKGV2YWxfZ2V0dGV4dCAnQ3JlYXRlZCBhdXRvc3Rhc2g6ICRzdGFzaF9hYmJyZXYnKSIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkCitmaQorCiByZXF1aXJlX2NsZWFuX3dvcmtfdHJlZSAicmViYXNlIiAiJChnZXR0ZXh0ICJQbGVhc2UgY29tbWl0IG9yIHN0YXNoIHRoZW0uIikiCiAKICMgTm93IHdlIGFyZSByZWJhc2luZyBjb21taXRzICR1cHN0cmVhbS4uJG9yaWdfaGVhZCAob3Igd2l0aCAtLXJvb3QsCkBAIC00OTksNiArNTQ0LDcgQEAKIAkJIyBMYXppbHkgc3dpdGNoIHRvIHRoZSB0YXJnZXQgYnJhbmNoIGlmIG5lZWRlZC4uLgogCQl0ZXN0IC16ICIkc3dpdGNoX3RvIiB8fCBnaXQgY2hlY2tvdXQgIiRzd2l0Y2hfdG8iIC0tCiAJCXNheSAiJChldmFsX2dldHRleHQgIkN1cnJlbnQgYnJhbmNoIFwkYnJhbmNoX25hbWUgaXMgdXAgdG8gZGF0ZS4iKSIKKwkJZmluaXNoX3JlYmFzZQogCQlleGl0IDAKIAllbHNlCiAJCXNheSAiJChldmFsX2dldHRleHQgIkN1cnJlbnQgYnJhbmNoIFwkYnJhbmNoX25hbWUgaXMgdXAgdG8gZGF0ZSwgcmViYXNlIGZvcmNlZC4iKSIKQEAgLTUzMSw2ICs1NzcsNyBAQAogdGhlbgogCXNheSAiJChldmFsX2dldHRleHQgIkZhc3QtZm9yd2FyZGVkIFwkYnJhbmNoX25hbWUgdG8gXCRvbnRvX25hbWUuIikiCiAJbW92ZV90b19vcmlnaW5hbF9icmFuY2gKKwlmaW5pc2hfcmViYXNlCiAJZXhpdCAwCiBmaQogCmRpZmYgLS1naXQgYS9naXQtcmVsaW5rLnBlcmwgYi9naXQtcmVsaW5rLnBlcmwKaW5kZXggZjI5Mjg1Yy4uMjM2YTM1MiAxMDA3NTUKLS0tIGEvZ2l0LXJlbGluay5wZXJsCisrKyBiL2dpdC1yZWxpbmsucGVybApAQCAtMTYzLDcgKzE2Myw3IEBACiAKIAogc3ViIHVzYWdlKCkgewotCXByaW50KCJVc2FnZTogZ2l0IHJlbGluayBbLS1zYWZlXSA8ZGlyPi4uLiA8bWFzdGVyX2Rpcj4gXG4iKTsKKwlwcmludCgidXNhZ2U6IGdpdCByZWxpbmsgWy0tc2FmZV0gPGRpcj4uLi4gPG1hc3Rlcl9kaXI+IFxuIik7CiAJcHJpbnQoIkFsbCBkaXJlY3RvcmllcyBzaG91bGQgY29udGFpbiBhIC5naXQvb2JqZWN0cy8gc3ViZGlyZWN0b3J5LlxuIik7CiAJcHJpbnQoIk9wdGlvbnNcbiIpOwogCXByaW50KCJcdC0tc2FmZVx0IiAuCmRpZmYgLS1naXQgYS9naXQtcmVtb3RlLXRlc3RnaXQuc2ggYi9naXQtcmVtb3RlLXRlc3RnaXQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjEwOTA3MAotLS0gL2Rldi9udWxsCisrKyBiL2dpdC1yZW1vdGUtdGVzdGdpdC5zaApAQCAtMCwwICsxLDEyMSBAQAorIyEvYmluL3NoCisjIENvcHlyaWdodCAoYykgMjAxMiBGZWxpcGUgQ29udHJlcmFzCisKK2FsaWFzPSQxCit1cmw9JDIKKworZGlyPSIkR0lUX0RJUi90ZXN0Z2l0LyRhbGlhcyIKK3ByZWZpeD0icmVmcy90ZXN0Z2l0LyRhbGlhcyIKKworZGVmYXVsdF9yZWZzcGVjPSJyZWZzL2hlYWRzLyo6JHtwcmVmaXh9L2hlYWRzLyoiCisKK3JlZnNwZWM9IiR7R0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUMtJGRlZmF1bHRfcmVmc3BlY30iCisKK3Rlc3QgLXogIiRyZWZzcGVjIiAmJiBwcmVmaXg9InJlZnMiCisKK2V4cG9ydCBHSVRfRElSPSIkdXJsLy5naXQiCisKK21rZGlyIC1wICIkZGlyIgorCitpZiB0ZXN0IC16ICIkR0lUX1JFTU9URV9URVNUR0lUX05PX01BUktTIgordGhlbgorCWdpdG1hcmtzPSIkZGlyL2dpdC5tYXJrcyIKKwl0ZXN0Z2l0bWFya3M9IiRkaXIvdGVzdGdpdC5tYXJrcyIKKwl0ZXN0IC1lICIkZ2l0bWFya3MiIHx8ID4iJGdpdG1hcmtzIgorCXRlc3QgLWUgIiR0ZXN0Z2l0bWFya3MiIHx8ID4iJHRlc3RnaXRtYXJrcyIKK2ZpCisKK3doaWxlIHJlYWQgbGluZQorZG8KKwljYXNlICRsaW5lIGluCisJY2FwYWJpbGl0aWVzKQorCQllY2hvICdpbXBvcnQnCisJCWVjaG8gJ2V4cG9ydCcKKwkJdGVzdCAtbiAiJHJlZnNwZWMiICYmIGVjaG8gInJlZnNwZWMgJHJlZnNwZWMiCisJCWlmIHRlc3QgLW4gIiRnaXRtYXJrcyIKKwkJdGhlbgorCQkJZWNobyAiKmltcG9ydC1tYXJrcyAkZ2l0bWFya3MiCisJCQllY2hvICIqZXhwb3J0LW1hcmtzICRnaXRtYXJrcyIKKwkJZmkKKwkJdGVzdCAtbiAiJEdJVF9SRU1PVEVfVEVTVEdJVF9TSUdORURfVEFHUyIgJiYgZWNobyAic2lnbmVkLXRhZ3MiCisJCWVjaG8KKwkJOzsKKwlsaXN0KQorCQlnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSc/ICUocmVmbmFtZSknICdyZWZzL2hlYWRzLycKKwkJaGVhZD0kKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkKKwkJZWNobyAiQCRoZWFkIEhFQUQiCisJCWVjaG8KKwkJOzsKKwlpbXBvcnQqKQorCQkjIHJlYWQgYWxsIGltcG9ydCBsaW5lcworCQl3aGlsZSB0cnVlCisJCWRvCisJCQlyZWY9IiR7bGluZSMqIH0iCisJCQlyZWZzPSIkcmVmcyAkcmVmIgorCQkJcmVhZCBsaW5lCisJCQl0ZXN0ICIke2xpbmUlJSAqfSIgIT0gImltcG9ydCIgJiYgYnJlYWsKKwkJZG9uZQorCisJCWlmIHRlc3QgLW4gIiRnaXRtYXJrcyIKKwkJdGhlbgorCQkJZWNobyAiZmVhdHVyZSBpbXBvcnQtbWFya3M9JGdpdG1hcmtzIgorCQkJZWNobyAiZmVhdHVyZSBleHBvcnQtbWFya3M9JGdpdG1hcmtzIgorCQlmaQorCisJCWlmIHRlc3QgLW4gIiRHSVRfUkVNT1RFX1RFU1RHSVRfRkFJTFVSRSIKKwkJdGhlbgorCQkJZWNobyAiZmVhdHVyZSBkb25lIgorCQkJZXhpdCAxCisJCWZpCisKKwkJZWNobyAiZmVhdHVyZSBkb25lIgorCQlnaXQgZmFzdC1leHBvcnQgXAorCQkJJHt0ZXN0Z2l0bWFya3M6KyItLWltcG9ydC1tYXJrcz0kdGVzdGdpdG1hcmtzIn0gXAorCQkJJHt0ZXN0Z2l0bWFya3M6KyItLWV4cG9ydC1tYXJrcz0kdGVzdGdpdG1hcmtzIn0gXAorCQkJJHJlZnMgfAorCQlzZWQgLWUgInMjcmVmcy9oZWFkcy8jJHtwcmVmaXh9L2hlYWRzLyNnIgorCQllY2hvICJkb25lIgorCQk7OworCWV4cG9ydCkKKwkJaWYgdGVzdCAtbiAiJEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFIgorCQl0aGVuCisJCQkjIGNvbnN1bWUgaW5wdXQgc28gZmFzdC1leHBvcnQgZG9lc24ndCBnZXQgU0lHUElQRTsKKwkJCSMgZ2l0IHdvdWxkIGFsc28gbm90aWNlIHRoYXQgY2FzZSwgYnV0IHdlIHdhbnQKKwkJCSMgdG8gbWFrZSBzdXJlIHdlIGFyZSBleGVyY2lzaW5nIHRoZSBsYXRlcgorCQkJIyBlcnJvciBjaGVja3MKKwkJCXdoaWxlIHJlYWQgbGluZTsgZG8KKwkJCQl0ZXN0ICJkb25lIiA9ICIkbGluZSIgJiYgYnJlYWsKKwkJCWRvbmUKKwkJCWV4aXQgMQorCQlmaQorCisJCWJlZm9yZT0kKGdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9JyAlKHJlZm5hbWUpICUob2JqZWN0bmFtZSkgJykKKworCQlnaXQgZmFzdC1pbXBvcnQgXAorCQkJJHt0ZXN0Z2l0bWFya3M6KyItLWltcG9ydC1tYXJrcz0kdGVzdGdpdG1hcmtzIn0gXAorCQkJJHt0ZXN0Z2l0bWFya3M6KyItLWV4cG9ydC1tYXJrcz0kdGVzdGdpdG1hcmtzIn0gXAorCQkJLS1xdWlldAorCisJCSMgZmlndXJlIG91dCB3aGljaCByZWZzIHdlcmUgdXBkYXRlZAorCQlnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWUpICUob2JqZWN0bmFtZSknIHwKKwkJd2hpbGUgcmVhZCByZWYgYQorCQlkbworCQkJY2FzZSAiJGJlZm9yZSIgaW4KKwkJCSoiICRyZWYgJGEgIiopCisJCQkJY29udGludWUgOzsJIyB1bmNoYW5nZWQKKwkJCWVzYWMKKwkJCWlmIHRlc3QgLXogIiRHSVRfUkVNT1RFX1RFU1RHSVRfUFVTSF9FUlJPUiIKKwkJCXRoZW4KKwkJCQllY2hvICJvayAkcmVmIgorCQkJZWxzZQorCQkJCWVjaG8gImVycm9yICRyZWYgJEdJVF9SRU1PVEVfVEVTVEdJVF9QVVNIX0VSUk9SIgorCQkJZmkKKwkJZG9uZQorCisJCWVjaG8KKwkJOzsKKwknJykKKwkJZXhpdAorCQk7OworCWVzYWMKK2RvbmUKZGlmZiAtLWdpdCBhL2dpdC1yZW1vdGUtdGVzdGdpdC5weSBiL2dpdC1yZW1vdGUtdGVzdHB5LnB5CnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIGdpdC1yZW1vdGUtdGVzdGdpdC5weQpyZW5hbWUgdG8gZ2l0LXJlbW90ZS10ZXN0cHkucHkKaW5kZXggNWYzZWJkMi4uY2E2Nzg5OSAxMDA2NDQKLS0tIGEvZ2l0LXJlbW90ZS10ZXN0Z2l0LnB5CisrKyBiL2dpdC1yZW1vdGUtdGVzdHB5LnB5CkBAIC0zMSw2ICszMSwyNyBAQAogZnJvbSBnaXRfcmVtb3RlX2hlbHBlcnMuZ2l0LmltcG9ydGVyIGltcG9ydCBHaXRJbXBvcnRlcgogZnJvbSBnaXRfcmVtb3RlX2hlbHBlcnMuZ2l0Lm5vbl9sb2NhbCBpbXBvcnQgTm9uTG9jYWxHaXQKIAoraWYgc3lzLmhleHZlcnNpb24gPCAweDAyMDAwMDAwOgorICAgICMgc3RyaW5nLmVuY29kZSgpIGlzIHRoZSBsaW1pdGVyCisgICAgc3lzLnN0ZGVyci53cml0ZSgiZ2l0LXJlbW90ZS10ZXN0Z2l0OiByZXF1aXJlcyBQeXRob24gMi4wIG9yIGxhdGVyLlxuIikKKyAgICBzeXMuZXhpdCgxKQorCisKK2RlZiBlbmNvZGVfZmlsZXBhdGgocGF0aCk6CisgICAgIiIiRW5jb2RlcyBhIFVuaWNvZGUgZmlsZSBwYXRoIHRvIGEgYnl0ZSBzdHJpbmcuCisKKyAgICBPbiBQeXRob24gMiB0aGlzIGlzIGEgbm8tb3A7IG9uIFB5dGhvbiAzIHdlIGVuY29kZSB0aGUgc3RyaW5nIGFzCisgICAgc3VnZ2VzdGVkIGJ5IFsxXSB3aGljaCBhbGxvd3MgYW4gZXhhY3Qgcm91bmQtdHJpcCBmcm9tIHRoZSBjb21tYW5kIGxpbmUKKyAgICB0byB0aGUgZmlsZXN5c3RlbS4KKworICAgIFsxXSBodHRwOi8vZG9jcy5weXRob24ub3JnLzMvYy1hcGkvdW5pY29kZS5odG1sI2ZpbGUtc3lzdGVtLWVuY29kaW5nCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDMwMDAwMDA6CisgICAgICAgIHJldHVybiBwYXRoCisgICAgcmV0dXJuIHBhdGguZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSwgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKwogZGVmIGdldF9yZXBvKGFsaWFzLCB1cmwpOgogICAgICIiIlJldHVybnMgYSBnaXQgcmVwb3NpdG9yeSBvYmplY3QgaW5pdGlhbGl6ZWQgZm9yIHVzYWdlLgogICAgICIiIgpAQCAtNDAsNyArNjEsNyBAQAogICAgIHJlcG8uZ2V0X2hlYWQoKQogCiAgICAgaGFzaGVyID0gX2RpZ2VzdCgpCi0gICAgaGFzaGVyLnVwZGF0ZShyZXBvLnBhdGgpCisgICAgaGFzaGVyLnVwZGF0ZShlbmNvZGVfZmlsZXBhdGgocmVwby5wYXRoKSkKICAgICByZXBvLmhhc2ggPSBoYXNoZXIuaGV4ZGlnZXN0KCkKIAogICAgIHJlcG8uZ2V0X2Jhc2VfcGF0aCA9IGxhbWJkYSBiYXNlOiBvcy5wYXRoLmpvaW4oCkBAIC04MiwyMiArMTAzLDIyIEBACiAgICAgIiIiUHJpbnRzIHRoZSBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzLgogICAgICIiIgogCi0gICAgcHJpbnQgImltcG9ydCIKLSAgICBwcmludCAiZXhwb3J0IgotICAgIHByaW50ICJyZWZzcGVjIHJlZnMvaGVhZHMvKjolcyoiICUgcmVwby5wcmVmaXgKKyAgICBwcmludCgiaW1wb3J0IikKKyAgICBwcmludCgiZXhwb3J0IikKKyAgICBwcmludCgicmVmc3BlYyByZWZzL2hlYWRzLyo6JXMqIiAlIHJlcG8ucHJlZml4KQogCiAgICAgZGlybmFtZSA9IHJlcG8uZ2V0X2Jhc2VfcGF0aChyZXBvLmdpdGRpcikKIAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKICAgICAgICAgb3MubWFrZWRpcnMoZGlybmFtZSkKIAotICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3Rlc3RnaXQubWFya3MnKQorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ2dpdC5tYXJrcycpCiAKLSAgICBwcmludCAiKmV4cG9ydC1tYXJrcyAlcyIgJSBwYXRoCisgICAgcHJpbnQoIipleHBvcnQtbWFya3MgJXMiICUgcGF0aCkKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgcHJpbnQgIippbXBvcnQtbWFya3MgJXMiICUgcGF0aAorICAgICAgICBwcmludCgiKmltcG9ydC1tYXJrcyAlcyIgJSBwYXRoKQogCi0gICAgcHJpbnQgIyBlbmQgY2FwYWJpbGl0aWVzCisgICAgcHJpbnQoJycpICMgZW5kIGNhcGFiaWxpdGllcwogCiAKIGRlZiBkb19saXN0KHJlcG8sIGFyZ3MpOgpAQCAtMTEwLDE2ICsxMzEsMTYgQEAKIAogICAgIGZvciByZWYgaW4gcmVwby5yZXZzOgogICAgICAgICBkZWJ1ZygiPyByZWZzL2hlYWRzLyVzIiwgcmVmKQotICAgICAgICBwcmludCAiPyByZWZzL2hlYWRzLyVzIiAlIHJlZgorICAgICAgICBwcmludCgiPyByZWZzL2hlYWRzLyVzIiAlIHJlZikKIAogICAgIGlmIHJlcG8uaGVhZDoKICAgICAgICAgZGVidWcoIkByZWZzL2hlYWRzLyVzIEhFQUQiICUgcmVwby5oZWFkKQotICAgICAgICBwcmludCAiQHJlZnMvaGVhZHMvJXMgSEVBRCIgJSByZXBvLmhlYWQKKyAgICAgICAgcHJpbnQoIkByZWZzL2hlYWRzLyVzIEhFQUQiICUgcmVwby5oZWFkKQogICAgIGVsc2U6CiAgICAgICAgIGRlYnVnKCJAcmVmcy9oZWFkcy9tYXN0ZXIgSEVBRCIpCi0gICAgICAgIHByaW50ICJAcmVmcy9oZWFkcy9tYXN0ZXIgSEVBRCIKKyAgICAgICAgcHJpbnQoIkByZWZzL2hlYWRzL21hc3RlciBIRUFEIikKIAotICAgIHByaW50ICMgZW5kIGxpc3QKKyAgICBwcmludCgnJykgIyBlbmQgbGlzdAogCiAKIGRlZiB1cGRhdGVfbG9jYWxfcmVwbyhyZXBvKToKQEAgLTE0OSw3ICsxNzAsNyBAQAogICAgIHJlZnMgPSBbcmVmXQogCiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgbGluZSA9IHN5cy5zdGRpbi5yZWFkbGluZSgpCisgICAgICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5kZWNvZGUoKQogICAgICAgICBpZiBsaW5lID09ICdcbic6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCdpbXBvcnQgJyk6CkBAIC0xNTksMTAgKzE4MCwxNSBAQAogICAgICAgICByZWYgPSBsaW5lWzc6XS5zdHJpcCgpCiAgICAgICAgIHJlZnMuYXBwZW5kKHJlZikKIAorICAgIHByaW50KCJmZWF0dXJlIGRvbmUiKQorCisgICAgaWYgb3MuZW52aXJvbi5nZXQoIkdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFIik6CisgICAgICAgIGRpZSgnVG9sZCB0byBmYWlsJykKKwogICAgIHJlcG8gPSB1cGRhdGVfbG9jYWxfcmVwbyhyZXBvKQogICAgIHJlcG8uZXhwb3J0ZXIuZXhwb3J0X3JlcG8ocmVwby5naXRkaXIsIHJlZnMpCiAKLSAgICBwcmludCAiZG9uZSIKKyAgICBwcmludCgiZG9uZSIpCiAKIAogZGVmIGRvX2V4cG9ydChyZXBvLCBhcmdzKToKQEAgLTE3Miw2ICsxOTgsOSBAQAogICAgIGlmIG5vdCByZXBvLmdpdGRpcjoKICAgICAgICAgZGllKCJOZWVkIGdpdGRpciB0byBleHBvcnQiKQogCisgICAgaWYgb3MuZW52aXJvbi5nZXQoIkdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFIik6CisgICAgICAgIGRpZSgnVG9sZCB0byBmYWlsJykKKwogICAgIHVwZGF0ZV9sb2NhbF9yZXBvKHJlcG8pCiAgICAgY2hhbmdlZCA9IHJlcG8uaW1wb3J0ZXIuZG9faW1wb3J0KHJlcG8uZ2l0ZGlyKQogCkBAIC0xNzksOCArMjA4LDggQEAKICAgICAgICAgcmVwby5ub25fbG9jYWwucHVzaChyZXBvLmdpdGRpcikKIAogICAgIGZvciByZWYgaW4gY2hhbmdlZDoKLSAgICAgICAgcHJpbnQgIm9rICVzIiAlIHJlZgotICAgIHByaW50CisgICAgICAgIHByaW50KCJvayAlcyIgJSByZWYpCisgICAgcHJpbnQoJycpCiAKIAogQ09NTUFORFMgPSB7CkBAIC0yMTIsNyArMjQxLDcgQEAKIAogICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKQogCi0gICAgY21kbGluZSA9IGxpbmUKKyAgICBjbWRsaW5lID0gbGluZS5kZWNvZGUoKQogCiAgICAgaWYgbm90IGNtZGxpbmU6CiAgICAgICAgIHdhcm4oIlVuZXhwZWN0ZWQgRU9GIikKQEAgLTI2NCw3ICsyOTMsMTEgQEAKIAogICAgIG1vcmUgPSBUcnVlCiAKLSAgICBzeXMuc3RkaW4gPSBvcy5mZG9wZW4oc3lzLnN0ZGluLmZpbGVubygpLCAncicsIDApCisgICAgIyBVc2UgYmluYXJ5IG1vZGUgc2luY2UgUHl0aG9uIDMgZG9lcyBub3QgcGVybWl0IHVuYnVmZmVyZWQgSS9PIGluIHRleHQKKyAgICAjIG1vZGUuICBVbmJ1ZmZlcmVkIEkvTyBpcyByZXF1aXJlZCB0byBhdm9pZCBkYXRhIHRoYXQgc2hvdWxkIGJlIGdvaW5nCisgICAgIyB0byBnaXQtZmFzdC1pbXBvcnQgYWZ0ZXIgYW4gImV4cG9ydCIgY29tbWFuZCBnZXR0aW5nIGNhdWdodCBpbiBvdXIKKyAgICAjIHN0ZGluIGJ1ZmZlciBpbnN0ZWFkLgorICAgIHN5cy5zdGRpbiA9IG9zLmZkb3BlbihzeXMuc3RkaW4uZmlsZW5vKCksICdyYicsIDApCiAgICAgd2hpbGUgKG1vcmUpOgogICAgICAgICBtb3JlID0gcmVhZF9vbmVfbGluZShyZXBvKQogCmRpZmYgLS1naXQgYS9naXQtc2VuZC1lbWFpbC5wZXJsIGIvZ2l0LXNlbmQtZW1haWwucGVybAppbmRleCBiZTgwOWU1Li42NzE3NjJiIDEwMDc1NQotLS0gYS9naXQtc2VuZC1lbWFpbC5wZXJsCisrKyBiL2dpdC1zZW5kLWVtYWlsLnBlcmwKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAtLVtuby1dYmNjICAgICAgICAgICAgICA8c3RyPiAgKiBFbWFpbCBCY2M6CiAgICAgLS1zdWJqZWN0ICAgICAgICAgICAgICAgPHN0cj4gICogRW1haWwgIlN1YmplY3Q6IgogICAgIC0taW4tcmVwbHktdG8gICAgICAgICAgIDxzdHI+ICAqIEVtYWlsICJJbi1SZXBseS1UbzoiCi0gICAgLS1hbm5vdGF0ZSAgICAgICAgICAgICAgICAgICAgICogUmV2aWV3IGVhY2ggcGF0Y2ggdGhhdCB3aWxsIGJlIHNlbnQgaW4gYW4gZWRpdG9yLgorICAgIC0tW25vLV1hbm5vdGF0ZSAgICAgICAgICAgICAgICAqIFJldmlldyBlYWNoIHBhdGNoIHRoYXQgd2lsbCBiZSBzZW50IGluIGFuIGVkaXRvci4KICAgICAtLWNvbXBvc2UgICAgICAgICAgICAgICAgICAgICAgKiBPcGVuIGFuIGVkaXRvciBmb3IgaW50cm9kdWN0aW9uLgogICAgIC0tY29tcG9zZS1lbmNvZGluZyAgICAgIDxzdHI+ICAqIEVuY29kaW5nIHRvIGFzc3VtZSBmb3IgaW50cm9kdWN0aW9uLgogICAgIC0tOGJpdC1lbmNvZGluZyAgICAgICAgIDxzdHI+ICAqIEVuY29kaW5nIHRvIGFzc3VtZSA4Yml0IG1haWxzIGlmIHVuZGVjbGFyZWQKQEAgLTIwMywxNiArMjAzLDE1IEBACiAKIG15ICgkZGVidWdfbmV0X3NtdHApID0gMDsJCSMgTmV0OjpTTVRQLCBzZWUgc2VuZF9tZXNzYWdlKCkKIAotbXkgJG5vdF9zZXRfYnlfdXNlciA9ICJ0cnVlIGJ1dCBub3Qgc2V0IGJ5IHRoZSB1c2VyIjsKLQogbXkgJWNvbmZpZ19ib29sX3NldHRpbmdzID0gKAogICAgICJ0aHJlYWQiID0+IFtcJHRocmVhZCwgMV0sCi0gICAgImNoYWlucmVwbHl0byIgPT4gW1wkY2hhaW5fcmVwbHlfdG8sICRub3Rfc2V0X2J5X3VzZXJdLAorICAgICJjaGFpbnJlcGx5dG8iID0+IFtcJGNoYWluX3JlcGx5X3RvLCAwXSwKICAgICAic3VwcHJlc3Nmcm9tIiA9PiBbXCRzdXBwcmVzc19mcm9tLCB1bmRlZl0sCiAgICAgInNpZ25lZG9mZmJ5Y2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwKICAgICAic2lnbmVkb2ZmY2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwgICAgICAjIERlcHJlY2F0ZWQKICAgICAidmFsaWRhdGUiID0+IFtcJHZhbGlkYXRlLCAxXSwKLSAgICAibXVsdGllZGl0IiA9PiBbXCRtdWx0aWVkaXQsIHVuZGVmXQorICAgICJtdWx0aWVkaXQiID0+IFtcJG11bHRpZWRpdCwgdW5kZWZdLAorICAgICJhbm5vdGF0ZSIgPT4gW1wkYW5ub3RhdGUsIHVuZGVmXQogKTsKIAogbXkgJWNvbmZpZ19zZXR0aW5ncyA9ICgKQEAgLTI0MCwxOSArMjM5LDYgQEAKICAgICAiYWxpYXNlc2ZpbGUiID0+IFxAYWxpYXNfZmlsZXMsCiApOwogCi0jIEhlbHAgdXNlcnMgcHJlcGFyZSBmb3IgMS43LjAKLXN1YiBjaGFpbl9yZXBseV90byB7Ci0JaWYgKGRlZmluZWQgJGNoYWluX3JlcGx5X3RvICYmCi0JICAgICRjaGFpbl9yZXBseV90byBlcSAkbm90X3NldF9ieV91c2VyKSB7Ci0JCXByaW50IFNUREVSUgotCQkgICAgIkluIGdpdCAxLjcuMCwgdGhlIGRlZmF1bHQgaGFzIGNoYW5nZWQgdG8gLS1uby1jaGFpbi1yZXBseS10b1xuIiAuCi0JCSAgICAiU2V0IHNlbmRlbWFpbC5jaGFpbnJlcGx5dG8gY29uZmlndXJhdGlvbiB2YXJpYWJsZSB0byB0cnVlIGlmXG4iIC4KLQkJICAgICJ5b3Ugd2FudCB0byBrZWVwIC0tY2hhaW4tcmVwbHktdG8gYXMgeW91ciBkZWZhdWx0LlxuIjsKLQkJJGNoYWluX3JlcGx5X3RvID0gMDsKLQl9Ci0JcmV0dXJuICRjaGFpbl9yZXBseV90bzsKLX0KLQogIyBIYW5kbGUgVW5jb3V0aCBUZXJtaW5hdGlvbgogc3ViIHNpZ25hbF9oYW5kbGVyIHsKIApAQCAtMzA0LDcgKzI5MCw3IEBACiAJCSAgICAic210cC1kZWJ1ZzppIiA9PiBcJGRlYnVnX25ldF9zbXRwLAogCQkgICAgInNtdHAtZG9tYWluOnMiID0+IFwkc210cF9kb21haW4sCiAJCSAgICAiaWRlbnRpdHk9cyIgPT4gXCRpZGVudGl0eSwKLQkJICAgICJhbm5vdGF0ZSIgPT4gXCRhbm5vdGF0ZSwKKwkJICAgICJhbm5vdGF0ZSEiID0+IFwkYW5ub3RhdGUsCiAJCSAgICAiY29tcG9zZSIgPT4gXCRjb21wb3NlLAogCQkgICAgInF1aWV0IiA9PiBcJHF1aWV0LAogCQkgICAgImNjLWNtZD1zIiA9PiBcJGNjX2NtZCwKQEAgLTUxMiw4ICs0OTgsOSBAQAogCiAoJHNlbmRlcikgPSBleHBhbmRfYWxpYXNlcygkc2VuZGVyKSBpZiBkZWZpbmVkICRzZW5kZXI7CiAKLSMgcmV0dXJucyAxIGlmIHRoZSBjb25mbGljdCBtdXN0IGJlIHNvbHZlZCB1c2luZyBpdCBhcyBhIGZvcm1hdC1wYXRjaCBhcmd1bWVudAotc3ViIGNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCQpIHsKKyMgaXNfZm9ybWF0X3BhdGNoX2FyZygkZikgcmV0dXJucyAwIGlmICRmIG5hbWVzIGEgcGF0Y2gsIG9yIDEgaWYKKyMgJGYgaXMgYSByZXZpc2lvbiBsaXN0IHNwZWNpZmljYXRpb24gdG8gYmUgcGFzc2VkIHRvIGZvcm1hdC1wYXRjaC4KK3N1YiBpc19mb3JtYXRfcGF0Y2hfYXJnIHsKIAlyZXR1cm4gdW5sZXNzICRyZXBvOwogCW15ICRmID0gc2hpZnQ7CiAJdHJ5IHsKQEAgLTUyOSw2ICs1MTYsNyBAQAogICAgICogR2l2aW5nIC0tZm9ybWF0LXBhdGNoIG9wdGlvbiBpZiB5b3UgbWVhbiBhIHJhbmdlLgogRU9GCiAJfSBjYXRjaCBHaXQ6OkVycm9yOjpDb21tYW5kIHdpdGggeworCQkjIE5vdCBhIHZhbGlkIHJldmlzaW9uLiAgVHJlYXQgaXQgYXMgYSBmaWxlbmFtZS4KIAkJcmV0dXJuIDA7CiAJfQogfQpAQCAtNTQwLDE0ICs1MjgsMTQgQEAKIAlpZiAoJGYgZXEgIi0tIikgewogCQlwdXNoIEByZXZfbGlzdF9vcHRzLCAiLS0iLCBAQVJHVjsKIAkJQEFSR1YgPSAoKTsKLQl9IGVsc2lmICgtZCAkZiBhbmQgIWNoZWNrX2ZpbGVfcmV2X2NvbmZsaWN0KCRmKSkgeworCX0gZWxzaWYgKC1kICRmIGFuZCAhaXNfZm9ybWF0X3BhdGNoX2FyZygkZikpIHsKIAkJb3BlbmRpciBteSAkZGgsICRmCiAJCQlvciBkaWUgIkZhaWxlZCB0byBvcGVuZGlyICRmOiAkISI7CiAKIAkJcHVzaCBAZmlsZXMsIGdyZXAgeyAtZiAkXyB9IG1hcCB7IGNhdGZpbGUoJGYsICRfKSB9CiAJCQkJc29ydCByZWFkZGlyICRkaDsKIAkJY2xvc2VkaXIgJGRoOwotCX0gZWxzaWYgKCgtZiAkZiBvciAtcCAkZikgYW5kICFjaGVja19maWxlX3Jldl9jb25mbGljdCgkZikpIHsKKwl9IGVsc2lmICgoLWYgJGYgb3IgLXAgJGYpIGFuZCAhaXNfZm9ybWF0X3BhdGNoX2FyZygkZikpIHsKIAkJcHVzaCBAZmlsZXMsICRmOwogCX0gZWxzZSB7CiAJCXB1c2ggQHJldl9saXN0X29wdHMsICRmOwpAQCAtNzExLDcgKzY5OSw3IEBACiAJCQl9CiAJCX0KIAl9Ci0JcmV0dXJuIHVuZGVmOworCXJldHVybjsKIH0KIAogbXkgJWJyb2tlbl9lbmNvZGluZzsKQEAgLTc1Nyw2ICs3NDUsMTEgQEAKIAkkc2VuZGVyID0gJHJlcG9hdXRob3IgfHwgJHJlcG9jb21taXR0ZXIgfHwgJyc7CiB9CiAKKyMgJHNlbmRlciBjb3VsZCBiZSBhbiBhbHJlYWR5IHNhbml0aXplZCBhZGRyZXNzCisjIChlLmcuIHNlbmRlbWFpbC5mcm9tIGNvdWxkIGJlIG1hbnVhbGx5IHNhbml0aXplZCBieSB1c2VyKS4KKyMgQnV0IGl0J3MgYSBuby1vcCB0byBydW4gc2FuaXRpemVfYWRkcmVzcyBvbiBhbiBhbHJlYWR5IHNhbml0aXplZCBhZGRyZXNzLgorJHNlbmRlciA9IHNhbml0aXplX2FkZHJlc3MoJHNlbmRlcik7CisKIG15ICRwcm9tcHRpbmcgPSAwOwogaWYgKCFAaW5pdGlhbF90byAmJiAhZGVmaW5lZCAkdG9fY21kKSB7CiAJbXkgJHRvID0gYXNrKCJXaG8gc2hvdWxkIHRoZSBlbWFpbHMgYmUgc2VudCB0byAoaWYgYW55KT8gIiwKQEAgLTgzMyw3ICs4MjYsNyBAQAogCSMgbGVzcyByb2J1c3QvY29ycmVjdCB0aGFuIHRoZSBtb25zdGVyIHJlZ2V4cCBpbiBFbWFpbDo6VmFsaWQsCiAJIyBidXQgc3RpbGwgZG9lcyBhIDk5JSBqb2IsIGFuZCBvbmUgbGVzcyBkZXBlbmRlbmN5CiAJcmV0dXJuICQxIGlmICRhZGRyZXNzID1+IC8oJGxvY2FsX3BhcnRfcmVnZXhwXEAkZG9tYWluX3JlZ2V4cCkvOwotCXJldHVybiB1bmRlZjsKKwlyZXR1cm47CiB9CiAKIHN1YiBleHRyYWN0X3ZhbGlkX2FkZHJlc3Nfb3JfZGllIHsKQEAgLTEwNDUsNiArMTAzOCw0NyBAQAogCXJldHVybiBtYWlsZG9tYWluX25ldCgpIHx8IG1haWxkb21haW5fbXRhKCkgfHwgJ2xvY2FsaG9zdC5sb2NhbGRvbWFpbic7CiB9CiAKK3N1YiBzbXRwX2hvc3Rfc3RyaW5nIHsKKwlpZiAoZGVmaW5lZCAkc210cF9zZXJ2ZXJfcG9ydCkgeworCQlyZXR1cm4gIiRzbXRwX3NlcnZlcjokc210cF9zZXJ2ZXJfcG9ydCI7CisJfSBlbHNlIHsKKwkJcmV0dXJuICRzbXRwX3NlcnZlcjsKKwl9Cit9CisKKyMgUmV0dXJucyAxIGlmIGF1dGhlbnRpY2F0aW9uIHN1Y2NlZWRlZCBvciB3YXMgbm90IG5lY2Vzc2FyeQorIyAoc210cF91c2VyIHdhcyBub3Qgc3BlY2lmaWVkKSwgYW5kIDAgb3RoZXJ3aXNlLgorCitzdWIgc210cF9hdXRoX21heWJlIHsKKwlpZiAoIWRlZmluZWQgJHNtdHBfYXV0aHVzZXIgfHwgJGF1dGgpIHsKKwkJcmV0dXJuIDE7CisJfQorCisJIyBXb3JrYXJvdW5kIEFVVEggUExBSU4vTE9HSU4gaW50ZXJhY3Rpb24gZGVmZWN0CisJIyB3aXRoIEF1dGhlbjo6U0FTTDo6Q3lydXMKKwlldmFsIHsKKwkJcmVxdWlyZSBBdXRoZW46OlNBU0w7CisJCUF1dGhlbjo6U0FTTC0+aW1wb3J0KHF3KFBlcmwpKTsKKwl9OworCisJIyBUT0RPOiBBdXRoZW50aWNhdGlvbiBtYXkgZmFpbCBub3QgYmVjYXVzZSBjcmVkZW50aWFscyB3ZXJlCisJIyBpbnZhbGlkIGJ1dCBkdWUgdG8gb3RoZXIgcmVhc29ucywgaW4gd2hpY2ggd2Ugc2hvdWxkIG5vdAorCSMgcmVqZWN0IGNyZWRlbnRpYWxzLgorCSRhdXRoID0gR2l0OjpjcmVkZW50aWFsKHsKKwkJJ3Byb3RvY29sJyA9PiAnc210cCcsCisJCSdob3N0JyA9PiBzbXRwX2hvc3Rfc3RyaW5nKCksCisJCSd1c2VybmFtZScgPT4gJHNtdHBfYXV0aHVzZXIsCisJCSMgaWYgdGhlcmUncyBubyBwYXNzd29yZCwgImdpdCBjcmVkZW50aWFsIGZpbGwiIHdpbGwKKwkJIyBnaXZlIHVzIG9uZSwgb3RoZXJ3aXNlIGl0J2xsIGp1c3QgcGFzcyB0aGlzIG9uZS4KKwkJJ3Bhc3N3b3JkJyA9PiAkc210cF9hdXRocGFzcworCX0sIHN1YiB7CisJCW15ICRjcmVkID0gc2hpZnQ7CisJCXJldHVybiAhISRzbXRwLT5hdXRoKCRjcmVkLT57J3VzZXJuYW1lJ30sICRjcmVkLT57J3Bhc3N3b3JkJ30pOworCX0pOworCisJcmV0dXJuICRhdXRoOworfQorCiAjIFJldHVybnMgMSBpZiB0aGUgbWVzc2FnZSB3YXMgc2VudCwgYW5kIDAgb3RoZXJ3aXNlLgogIyBJbiBhY3R1YWxpdHksIHRoZSB3aG9sZSBwcm9ncmFtIGRpZXMgd2hlbiB0aGVyZQogIyBpcyBhbiBlcnJvciBzZW5kaW5nIGEgbWVzc2FnZS4KQEAgLTEwNjksMTAgKzExMDMsOSBAQAogCWlmICgkY2MgbmUgJycpIHsKIAkJJGNjbGluZSA9ICJcbkNjOiAkY2MiOwogCX0KLQlteSAkc2FuaXRpemVkX3NlbmRlciA9IHNhbml0aXplX2FkZHJlc3MoJHNlbmRlcik7CiAJbWFrZV9tZXNzYWdlX2lkKCkgdW5sZXNzIGRlZmluZWQoJG1lc3NhZ2VfaWQpOwogCi0JbXkgJGhlYWRlciA9ICJGcm9tOiAkc2FuaXRpemVkX3NlbmRlcgorCW15ICRoZWFkZXIgPSAiRnJvbTogJHNlbmRlcgogVG86ICR0byR7Y2NsaW5lfQogU3ViamVjdDogJHN1YmplY3QKIERhdGU6ICRkYXRlCkBAIC0xMDg5LDcgKzExMjIsNyBAQAogCX0KIAogCW15IEBzZW5kbWFpbF9wYXJhbWV0ZXJzID0gKCctaScsIEByZWNpcGllbnRzKTsKLQlteSAkcmF3X2Zyb20gPSAkc2FuaXRpemVkX3NlbmRlcjsKKwlteSAkcmF3X2Zyb20gPSAkc2VuZGVyOwogCWlmIChkZWZpbmVkICRlbnZlbG9wZV9zZW5kZXIgJiYgJGVudmVsb3BlX3NlbmRlciBuZSAiYXV0byIpIHsKIAkJJHJhd19mcm9tID0gJGVudmVsb3BlX3NlbmRlcjsKIAl9CkBAIC0xMTU1LDkgKzExODgsNyBAQAogCQllbHNlIHsKIAkJCXJlcXVpcmUgTmV0OjpTTVRQOwogCQkJJHNtdHBfZG9tYWluIHx8PSBtYWlsZG9tYWluKCk7Ci0JCQkkc210cCB8fD0gTmV0OjpTTVRQLT5uZXcoKGRlZmluZWQgJHNtdHBfc2VydmVyX3BvcnQpCi0JCQkJCQkgPyAiJHNtdHBfc2VydmVyOiRzbXRwX3NlcnZlcl9wb3J0IgotCQkJCQkJIDogJHNtdHBfc2VydmVyLAorCQkJJHNtdHAgfHw9IE5ldDo6U01UUC0+bmV3KHNtdHBfaG9zdF9zdHJpbmcoKSwKIAkJCQkJCSBIZWxsbyA9PiAkc210cF9kb21haW4sCiAJCQkJCQkgRGVidWcgPT4gJGRlYnVnX25ldF9zbXRwKTsKIAkJCWlmICgkc210cF9lbmNyeXB0aW9uIGVxICd0bHMnICYmICRzbXRwKSB7CkBAIC0xMTg1LDMxICsxMjE2LDcgQEAKIAkJCSAgICBkZWZpbmVkICRzbXRwX3NlcnZlcl9wb3J0ID8gIiBwb3J0PSRzbXRwX3NlcnZlcl9wb3J0IiA6ICIiOwogCQl9CiAKLQkJaWYgKGRlZmluZWQgJHNtdHBfYXV0aHVzZXIpIHsKLQkJCSMgV29ya2Fyb3VuZCBBVVRIIFBMQUlOL0xPR0lOIGludGVyYWN0aW9uIGRlZmVjdAotCQkJIyB3aXRoIEF1dGhlbjo6U0FTTDo6Q3lydXMKLQkJCWV2YWwgewotCQkJCXJlcXVpcmUgQXV0aGVuOjpTQVNMOwotCQkJCUF1dGhlbjo6U0FTTC0+aW1wb3J0KHF3KFBlcmwpKTsKLQkJCX07Ci0KLQkJCWlmICghZGVmaW5lZCAkc210cF9hdXRocGFzcykgewotCi0JCQkJc3lzdGVtICJzdHR5IC1lY2hvIjsKLQotCQkJCWRvIHsKLQkJCQkJcHJpbnQgIlBhc3N3b3JkOiAiOwotCQkJCQkkXyA9IDxTVERJTj47Ci0JCQkJCXByaW50ICJcbiI7Ci0JCQkJfSB3aGlsZSAoIWRlZmluZWQgJF8pOwotCi0JCQkJY2hvbXAoJHNtdHBfYXV0aHBhc3MgPSAkXyk7Ci0KLQkJCQlzeXN0ZW0gInN0dHkgZWNobyI7Ci0JCQl9Ci0KLQkJCSRhdXRoIHx8PSAkc210cC0+YXV0aCggJHNtdHBfYXV0aHVzZXIsICRzbXRwX2F1dGhwYXNzICkgb3IgZGllICRzbXRwLT5tZXNzYWdlOwotCQl9CisJCXNtdHBfYXV0aF9tYXliZSBvciBkaWUgJHNtdHAtPm1lc3NhZ2U7CiAKIAkJJHNtdHAtPm1haWwoICRyYXdfZnJvbSApIG9yIGRpZSAkc210cC0+bWVzc2FnZTsKIAkJJHNtdHAtPnRvKCBAcmVjaXBpZW50cyApIG9yIGRpZSAkc210cC0+bWVzc2FnZTsKQEAgLTEyOTAsOCArMTI5Nyw5IEBACiAJCQl9CiAJCQllbHNpZiAoL15Gcm9tOlxzKyguKikkL2kpIHsKIAkJCQkoJGF1dGhvciwgJGF1dGhvcl9lbmNvZGluZykgPSB1bnF1b3RlX3JmYzIwNDcoJDEpOworCQkJCW15ICRzYXV0aG9yID0gc2FuaXRpemVfYWRkcmVzcygkYXV0aG9yKTsKIAkJCQluZXh0IGlmICRzdXBwcmVzc19jY3snYXV0aG9yJ307Ci0JCQkJbmV4dCBpZiAkc3VwcHJlc3NfY2N7J3NlbGYnfSBhbmQgJGF1dGhvciBlcSAkc2VuZGVyOworCQkJCW5leHQgaWYgJHN1cHByZXNzX2NjeydzZWxmJ30gYW5kICRzYXV0aG9yIGVxICRzZW5kZXI7CiAJCQkJcHJpbnRmKCIobWJveCkgQWRkaW5nIGNjOiAlcyBmcm9tIGxpbmUgJyVzJ1xuIiwKIAkJCQkJJDEsICRfKSB1bmxlc3MgJHF1aWV0OwogCQkJCXB1c2ggQGNjLCAkMTsKQEAgLTEzMDUsNyArMTMxMyw5IEBACiAJCQl9CiAJCQllbHNpZiAoL15DYzpccysoLiopJC9pKSB7CiAJCQkJZm9yZWFjaCBteSAkYWRkciAocGFyc2VfYWRkcmVzc19saW5lKCQxKSkgewotCQkJCQlpZiAodW5xdW90ZV9yZmMyMDQ3KCRhZGRyKSBlcSAkc2VuZGVyKSB7CisJCQkJCW15ICRxYWRkciA9IHVucXVvdGVfcmZjMjA0NygkYWRkcik7CisJCQkJCW15ICRzYWRkciA9IHNhbml0aXplX2FkZHJlc3MoJHFhZGRyKTsKKwkJCQkJaWYgKCRzYWRkciBlcSAkc2VuZGVyKSB7CiAJCQkJCQluZXh0IGlmICgkc3VwcHJlc3NfY2N7J3NlbGYnfSk7CiAJCQkJCX0gZWxzZSB7CiAJCQkJCQluZXh0IGlmICgkc3VwcHJlc3NfY2N7J2NjJ30pOwpAQCAtMTM1Miw3ICsxMzYyLDggQEAKIAkJCWNob21wOwogCQkJbXkgKCR3aGF0LCAkYykgPSAoJDEsICQyKTsKIAkJCWNob21wICRjOwotCQkJaWYgKCRjIGVxICRzZW5kZXIpIHsKKwkJCW15ICRzYyA9IHNhbml0aXplX2FkZHJlc3MoJGMpOworCQkJaWYgKCRzYyBlcSAkc2VuZGVyKSB7CiAJCQkJbmV4dCBpZiAoJHN1cHByZXNzX2NjeydzZWxmJ30pOwogCQkJfSBlbHNlIHsKIAkJCQluZXh0IGlmICRzdXBwcmVzc19jY3snc29iJ30gYW5kICR3aGF0ID1+IC9TaWduZWQtb2ZmLWJ5L2k7CkBAIC0xNDE5LDcgKzE0MzAsNyBAQAogCiAJIyBzZXQgdXAgZm9yIHRoZSBuZXh0IG1lc3NhZ2UKIAlpZiAoJHRocmVhZCAmJiAkbWVzc2FnZV93YXNfc2VudCAmJgotCQkoY2hhaW5fcmVwbHlfdG8oKSB8fCAhZGVmaW5lZCAkcmVwbHlfdG8gfHwgbGVuZ3RoKCRyZXBseV90bykgPT0gMCB8fAorCQkoJGNoYWluX3JlcGx5X3RvIHx8ICFkZWZpbmVkICRyZXBseV90byB8fCBsZW5ndGgoJHJlcGx5X3RvKSA9PSAwIHx8CiAJCSRtZXNzYWdlX251bSA9PSAxKSkgewogCQkkcmVwbHlfdG8gPSAkbWVzc2FnZV9pZDsKIAkJaWYgKGxlbmd0aCAkcmVmZXJlbmNlcyA+IDApIHsKQEAgLTE0MzYsMTUgKzE0NDcsMTQgQEAKIHN1YiByZWNpcGllbnRzX2NtZCB7CiAJbXkgKCRwcmVmaXgsICR3aGF0LCAkY21kLCAkZmlsZSkgPSBAXzsKIAotCW15ICRzYW5pdGl6ZWRfc2VuZGVyID0gc2FuaXRpemVfYWRkcmVzcygkc2VuZGVyKTsKIAlteSBAYWRkcmVzc2VzID0gKCk7Ci0Jb3BlbiBteSAkZmgsICIkY21kIFxRJGZpbGVcRSB8IgorCW9wZW4gbXkgJGZoLCAiLXwiLCAiJGNtZCBcUSRmaWxlXEUiCiAJICAgIG9yIGRpZSAiKCRwcmVmaXgpIENvdWxkIG5vdCBleGVjdXRlICckY21kJyI7CiAJd2hpbGUgKG15ICRhZGRyZXNzID0gPCRmaD4pIHsKIAkJJGFkZHJlc3MgPX4gcy9eXHMqLy9nOwogCQkkYWRkcmVzcyA9fiBzL1xzKiQvL2c7CiAJCSRhZGRyZXNzID0gc2FuaXRpemVfYWRkcmVzcygkYWRkcmVzcyk7Ci0JCW5leHQgaWYgKCRhZGRyZXNzIGVxICRzYW5pdGl6ZWRfc2VuZGVyIGFuZCAkc3VwcHJlc3NfZnJvbSk7CisJCW5leHQgaWYgKCRhZGRyZXNzIGVxICRzZW5kZXIgYW5kICRzdXBwcmVzc19jY3snc2VsZid9KTsKIAkJcHVzaCBAYWRkcmVzc2VzLCAkYWRkcmVzczsKIAkJcHJpbnRmKCIoJHByZWZpeCkgQWRkaW5nICVzOiAlcyBmcm9tOiAnJXMnXG4iLAogCQkgICAgICAgJHdoYXQsICRhZGRyZXNzLCAkY21kKSB1bmxlc3MgJHF1aWV0OwpAQCAtMTQ4NCw3ICsxNDk0LDcgQEAKIAkJCXJldHVybiAiJC46IHBhdGNoIGNvbnRhaW5zIGEgbGluZSBsb25nZXIgdGhhbiA5OTggY2hhcmFjdGVycyI7CiAJCX0KIAl9Ci0JcmV0dXJuIHVuZGVmOworCXJldHVybjsKIH0KIAogc3ViIGZpbGVfaGFzX25vbmFzY2lpIHsKZGlmZiAtLWdpdCBhL2dpdC1zaC1zZXR1cC5zaCBiL2dpdC1zaC1zZXR1cC5zaAppbmRleCA3OTVlZGQyLi43YTk2NGFkIDEwMDY0NAotLS0gYS9naXQtc2gtc2V0dXAuc2gKKysrIGIvZ2l0LXNoLXNldHVwLnNoCkBAIC04NCwxNCArODQsMTQgQEAKIGVsc2UKIAlkYXNobGVzcz0kKGJhc2VuYW1lICIkMCIgfCBzZWQgLWUgJ3MvLS8gLycpCiAJdXNhZ2UoKSB7Ci0JCWRpZSAiVXNhZ2U6ICRkYXNobGVzcyAkVVNBR0UiCisJCWRpZSAidXNhZ2U6ICRkYXNobGVzcyAkVVNBR0UiCiAJfQogCiAJaWYgWyAteiAiJExPTkdfVVNBR0UiIF0KIAl0aGVuCi0JCUxPTkdfVVNBR0U9IlVzYWdlOiAkZGFzaGxlc3MgJFVTQUdFIgorCQlMT05HX1VTQUdFPSJ1c2FnZTogJGRhc2hsZXNzICRVU0FHRSIKIAllbHNlCi0JCUxPTkdfVVNBR0U9IlVzYWdlOiAkZGFzaGxlc3MgJFVTQUdFCisJCUxPTkdfVVNBR0U9InVzYWdlOiAkZGFzaGxlc3MgJFVTQUdFCiAKICRMT05HX1VTQUdFIgogCWZpCkBAIC0yNDksNiArMjQ5LDE4IEBACiAJdW5zZXQgJChnaXQgcmV2LXBhcnNlIC0tbG9jYWwtZW52LXZhcnMpCiB9CiAKKyMgR2VuZXJhdGUgYSB2aXJ0dWFsIGJhc2UgZmlsZSBmb3IgYSB0d28tZmlsZSBtZXJnZS4gVXNlcyBnaXQgYXBwbHkgdG8KKyMgcmVtb3ZlIGxpbmVzIGZyb20gJDEgdGhhdCBhcmUgbm90IGluICQyLCBsZWF2aW5nIG9ubHkgY29tbW9uIGxpbmVzLgorY3JlYXRlX3ZpcnR1YWxfYmFzZSgpIHsKKwlzejA9JCh3YyAtYyA8IiQxIikKKwlAQERJRkZAQCAtdSAtTGEvIiQxIiAtTGIvIiQxIiAiJDEiICIkMiIgfCBnaXQgYXBwbHkgLS1uby1hZGQKKwlzejE9JCh3YyAtYyA8IiQxIikKKworCSMgSWYgd2UgZG8gbm90IGhhdmUgZW5vdWdoIGNvbW1vbiBtYXRlcmlhbCwgaXQgaXMgbm90CisJIyB3b3J0aCB0cnlpbmcgdHdvLWZpbGUgbWVyZ2UgdXNpbmcgY29tbW9uIHN1YnNlY3Rpb25zLgorCWV4cHIgJHN6MCBcPCAkc3oxIFwqIDIgPi9kZXYvbnVsbCB8fCA6ID4iJDEiCit9CisKIAogIyBQbGF0Zm9ybSBzcGVjaWZpYyB0d2Vha3MgdG8gd29yayBhcm91bmQgc29tZSBjb21tYW5kcwogY2FzZSAkKHVuYW1lIC1zKSBpbgpAQCAtMzAxLDMgKzMxMywxNSBAQAogCX0KIAk6ICR7R0lUX09CSkVDVF9ESVJFQ1RPUlk9IiRHSVRfRElSL29iamVjdHMifQogZmkKKworcGVlbF9jb21taXR0aXNoICgpIHsKKwljYXNlICIkMSIgaW4KKwk6LyopCisJCXBlZWx0bXA9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkMSIpICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgIiR7cGVlbHRtcH1eMCIKKwkJOzsKKwkqKQorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkezF9XjAiCisJCTs7CisJZXNhYworfQpkaWZmIC0tZ2l0IGEvZ2l0LXN0YXNoLnNoIGIvZ2l0LXN0YXNoLnNoCmluZGV4IGJiZWZkZjYuLjFlNTQxYTIgMTAwNzU1Ci0tLSBhL2dpdC1zdGFzaC5zaAorKysgYi9naXQtc3Rhc2guc2gKQEAgLTE1Niw2ICsxNTYsNDEgQEAKIAlkaWUgIiQoZ2V0dGV4dCAiQ2Fubm90IHJlY29yZCB3b3JraW5nIHRyZWUgc3RhdGUiKSIKIH0KIAorc3RvcmVfc3Rhc2ggKCkgeworCXdoaWxlIHRlc3QgJCMgIT0gMAorCWRvCisJCWNhc2UgIiQxIiBpbgorCQktbXwtLW1lc3NhZ2UpCisJCQlzaGlmdAorCQkJc3Rhc2hfbXNnPSIkMSIKKwkJCTs7CisJCS1xfC0tcXVpZXQpCisJCQlxdWlldD10CisJCQk7OworCQkqKQorCQkJYnJlYWsKKwkJCTs7CisJCWVzYWMKKwkJc2hpZnQKKwlkb25lCisJdGVzdCAkIyA9IDEgfHwKKwlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJcIiRkYXNobGVzcyBzdG9yZVwiIHJlcXVpcmVzIG9uZSA8Y29tbWl0PiBhcmd1bWVudCIpIgorCisJd19jb21taXQ9IiQxIgorCWlmIHRlc3QgLXogIiRzdGFzaF9tc2ciCisJdGhlbgorCQlzdGFzaF9tc2c9IkNyZWF0ZWQgdmlhIFwiZ2l0IHN0YXNoIHN0b3JlXCIuIgorCWZpCisKKwkjIE1ha2Ugc3VyZSB0aGUgcmVmbG9nIGZvciBzdGFzaCBpcyBrZXB0LgorCTogPj4iJEdJVF9ESVIvbG9ncy8kcmVmX3N0YXNoIgorCWdpdCB1cGRhdGUtcmVmIC1tICIkc3Rhc2hfbXNnIiAkcmVmX3N0YXNoICR3X2NvbW1pdAorCXJldD0kPworCXRlc3QgJHJldCAhPSAwICYmIHRlc3QgLXogJHF1aWV0ICYmCisJZGllICIkKGV2YWxfZ2V0dGV4dCAiQ2Fubm90IHVwZGF0ZSBcJHJlZl9zdGFzaCB3aXRoIFwkd19jb21taXQiKSIKKwlyZXR1cm4gJHJldAorfQorCiBzYXZlX3N0YXNoICgpIHsKIAlrZWVwX2luZGV4PQogCXBhdGNoX21vZGU9CkBAIC0yMjcsMTIgKzI2Miw4IEBACiAJCWNsZWFyX3N0YXNoIHx8IGRpZSAiJChnZXR0ZXh0ICJDYW5ub3QgaW5pdGlhbGl6ZSBzdGFzaCIpIgogCiAJY3JlYXRlX3N0YXNoICIkc3Rhc2hfbXNnIiAkdW50cmFja2VkCi0KLQkjIE1ha2Ugc3VyZSB0aGUgcmVmbG9nIGZvciBzdGFzaCBpcyBrZXB0LgotCTogPj4iJEdJVF9ESVIvbG9ncy8kcmVmX3N0YXNoIgotCi0JZ2l0IHVwZGF0ZS1yZWYgLW0gIiRzdGFzaF9tc2ciICRyZWZfc3Rhc2ggJHdfY29tbWl0IHx8Ci0JCWRpZSAiJChnZXR0ZXh0ICJDYW5ub3Qgc2F2ZSB0aGUgY3VycmVudCBzdGF0dXMiKSIKKwlzdG9yZV9zdGFzaCAtbSAiJHN0YXNoX21zZyIgLXEgJHdfY29tbWl0IHx8CisJZGllICIkKGdldHRleHQgIkNhbm5vdCBzYXZlIHRoZSBjdXJyZW50IHN0YXR1cyIpIgogCXNheSBTYXZlZCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgaW5kZXggc3RhdGUgIiRzdGFzaF9tc2ciCiAKIAlpZiB0ZXN0IC16ICIkcGF0Y2hfbW9kZSIKQEAgLTU0NiwxMiArNTc3LDEzIEBACiAJY2xlYXJfc3Rhc2ggIiRAIgogCTs7CiBjcmVhdGUpCi0JaWYgdGVzdCAkIyAtZ3QgMCAmJiB0ZXN0ICIkMSIgPSBjcmVhdGUKLQl0aGVuCi0JCXNoaWZ0Ci0JZmkKKwlzaGlmdAogCWNyZWF0ZV9zdGFzaCAiJCoiICYmIGVjaG8gIiR3X2NvbW1pdCIKIAk7Oworc3RvcmUpCisJc2hpZnQKKwlzdG9yZV9zdGFzaCAiJEAiCisJOzsKIGRyb3ApCiAJc2hpZnQKIAlkcm9wX3N0YXNoICIkQCIKZGlmZiAtLWdpdCBhL2dpdC1zdWJtb2R1bGUuc2ggYi9naXQtc3VibW9kdWxlLnNoCmluZGV4IDIzNjUxNDkuLmViNThjOGUgMTAwNzU1Ci0tLSBhL2dpdC1zdWJtb2R1bGUuc2gKKysrIGIvZ2l0LXN1Ym1vZHVsZS5zaApAQCAtOCw3ICs4LDggQEAKIFVTQUdFPSJbLS1xdWlldF0gYWRkIFstYiA8YnJhbmNoPl0gWy1mfC0tZm9yY2VdIFstLW5hbWUgPG5hbWU+XSBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XSBbLS1dIDxyZXBvc2l0b3J5PiBbPHBhdGg+XQogICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gc3RhdHVzIFstLWNhY2hlZF0gWy0tcmVjdXJzaXZlXSBbLS1dIFs8cGF0aD4uLi5dCiAgICBvcjogJGRhc2hsZXNzIFstLXF1aWV0XSBpbml0IFstLV0gWzxwYXRoPi4uLl0KLSAgIG9yOiAkZGFzaGxlc3MgWy0tcXVpZXRdIHVwZGF0ZSBbLS1pbml0XSBbLU58LS1uby1mZXRjaF0gWy1mfC0tZm9yY2VdIFstLXJlYmFzZV0gWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0gWy0tbWVyZ2VdIFstLXJlY3Vyc2l2ZV0gWy0tXSBbPHBhdGg+Li4uXQorICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gZGVpbml0IFstZnwtLWZvcmNlXSBbLS1dIDxwYXRoPi4uLgorICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gdXBkYXRlIFstLWluaXRdIFstLXJlbW90ZV0gWy1OfC0tbm8tZmV0Y2hdIFstZnwtLWZvcmNlXSBbLS1yZWJhc2VdIFstLXJlZmVyZW5jZSA8cmVwb3NpdG9yeT5dIFstLW1lcmdlXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KICAgIG9yOiAkZGFzaGxlc3MgWy0tcXVpZXRdIHN1bW1hcnkgWy0tY2FjaGVkfC0tZmlsZXNdIFstLXN1bW1hcnktbGltaXQgPG4+XSBbY29tbWl0XSBbLS1dIFs8cGF0aD4uLi5dCiAgICBvcjogJGRhc2hsZXNzIFstLXF1aWV0XSBmb3JlYWNoIFstLXJlY3Vyc2l2ZV0gPGNvbW1hbmQ+CiAgICBvcjogJGRhc2hsZXNzIFstLXF1aWV0XSBzeW5jIFstLXJlY3Vyc2l2ZV0gWy0tXSBbPHBhdGg+Li4uXSIKQEAgLTI2LDYgKzI3LDcgQEAKIHJlY3Vyc2l2ZT0KIGluaXQ9CiBmaWxlcz0KK3JlbW90ZT0KIG5vZmV0Y2g9CiB1cGRhdGU9CiBwcmVmaXg9CkBAIC0xMTEsNyArMTEzLDcgQEAKIG1vZHVsZV9saXN0KCkKIHsKIAkoCi0JCWdpdCBscy1maWxlcyAtLWVycm9yLXVubWF0Y2ggLS1zdGFnZSAtLSAiJEAiIHx8CisJCWdpdCBscy1maWxlcyAteiAtLWVycm9yLXVubWF0Y2ggLS1zdGFnZSAtLSAiJEAiIHx8CiAJCWVjaG8gInVubWF0Y2hlZCBwYXRoc3BlYyBleGlzdHMiCiAJKSB8CiAJcGVybCAtZSAnCkBAIC0xMTksNiArMTIxLDcgQEAKIAlteSAoJG51bGxfc2hhMSkgPSAoIjAiIHggNDApOwogCW15IEBvdXQgPSAoKTsKIAlteSAkdW5tYXRjaGVkID0gMDsKKwkkLyA9ICJcMCI7CiAJd2hpbGUgKDxTVERJTj4pIHsKIAkJaWYgKC9edW5tYXRjaGVkIHBhdGhzcGVjLykgewogCQkJJHVubWF0Y2hlZCA9IDE7CkBAIC0xNTMsNiArMTU2LDMyIEBACiB9CiAKICMKKyMgUHJpbnQgYSBzdWJtb2R1bGUgY29uZmlndXJhdGlvbiBzZXR0aW5nCisjCisjICQxID0gc3VibW9kdWxlIG5hbWUKKyMgJDIgPSBvcHRpb24gbmFtZQorIyAkMyA9IGRlZmF1bHQgdmFsdWUKKyMKKyMgQ2hlY2tzIGluIHRoZSB1c3VhbCBnaXQtY29uZmlnIHBsYWNlcyBmaXJzdCAoZm9yIG92ZXJyaWRlcyksCisjIG90aGVyd2lzZSBpdCBmYWxscyBiYWNrIG9uIC5naXRtb2R1bGVzLiAgVGhpcyBhbGxvd3MgeW91IHRvCisjIGRpc3RyaWJ1dGUgcHJvamVjdC13aWRlIGRlZmF1bHRzIGluIC5naXRtb2R1bGVzLCB3aGlsZSBzdGlsbAorIyBjdXN0b21pemluZyBpbmRpdmlkdWFsIHJlcG9zaXRvcmllcyBpZiBuZWNlc3NhcnkuICBJZiB0aGUgb3B0aW9uIGlzCisjIG5vdCBpbiAuZ2l0bW9kdWxlcyBlaXRoZXIsIHByaW50IGEgZGVmYXVsdCB2YWx1ZS4KKyMKK2dldF9zdWJtb2R1bGVfY29uZmlnICgpIHsKKwluYW1lPSIkMSIKKwlvcHRpb249IiQyIgorCWRlZmF1bHQ9IiQzIgorCXZhbHVlPSQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuIiRuYW1lIi4iJG9wdGlvbiIpCisJaWYgdGVzdCAteiAiJHZhbHVlIgorCXRoZW4KKwkJdmFsdWU9JChnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS4iJG5hbWUiLiIkb3B0aW9uIikKKwlmaQorCXByaW50ZiAnJXMnICIke3ZhbHVlOi0kZGVmYXVsdH0iCit9CisKKworIwogIyBNYXAgc3VibW9kdWxlIHBhdGggdG8gc3VibW9kdWxlIG5hbWUKICMKICMgJDEgPSBwYXRoCkBAIC0yMzksNiArMjY4LDExIEBACiAJKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYgR0lUX1dPUktfVFJFRT0uIGdpdCBjb25maWcgY29yZS53b3JrdHJlZSAiJHJlbC8kYiIpCiB9CiAKK2lzbnVtYmVyKCkKK3sKKwluPSQoKCQxICsgMCkpIDI+L2Rldi9udWxsICYmIHRlc3QgIiRuIiA9ICIkMSIKK30KKwogIwogIyBBZGQgYSBuZXcgc3VibW9kdWxlIHRvIHRoZSB3b3JraW5nIHRyZWUsIC5naXRtb2R1bGVzIGFuZCB0aGUgaW5kZXgKICMKQEAgLTM5MCw2ICs0MjQsMTAgQEAKIAogCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLiIkc21fbmFtZSIucGF0aCAiJHNtX3BhdGgiICYmCiAJZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuIiRzbV9uYW1lIi51cmwgIiRyZXBvIiAmJgorCWlmIHRlc3QgLW4gIiRicmFuY2giCisJdGhlbgorCQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS4iJHNtX25hbWUiLmJyYW5jaCAiJGJyYW5jaCIKKwlmaSAmJgogCWdpdCBhZGQgLS1mb3JjZSAuZ2l0bW9kdWxlcyB8fAogCWRpZSAiJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJ1wkc21fcGF0aCciKSIKIH0KQEAgLTUxNiw2ICs1NTQsODIgQEAKIH0KIAogIworIyBVbnJlZ2lzdGVyIHN1Ym1vZHVsZXMgZnJvbSAuZ2l0L2NvbmZpZyBhbmQgcmVtb3ZlIHRoZWlyIHdvcmsgdHJlZQorIworIyAkQCA9IHJlcXVlc3RlZCBwYXRocyAodXNlICcuJyB0byBkZWluaXQgYWxsIHN1Ym1vZHVsZXMpCisjCitjbWRfZGVpbml0KCkKK3sKKwkjIHBhcnNlICRhcmdzIGFmdGVyICJzdWJtb2R1bGUgLi4uIGRlaW5pdCIuCisJd2hpbGUgdGVzdCAkIyAtbmUgMAorCWRvCisJCWNhc2UgIiQxIiBpbgorCQktZnwtLWZvcmNlKQorCQkJZm9yY2U9JDEKKwkJCTs7CisJCS1xfC0tcXVpZXQpCisJCQlHSVRfUVVJRVQ9MQorCQkJOzsKKwkJLS0pCisJCQlzaGlmdAorCQkJYnJlYWsKKwkJCTs7CisJCS0qKQorCQkJdXNhZ2UKKwkJCTs7CisJCSopCisJCQlicmVhaworCQkJOzsKKwkJZXNhYworCQlzaGlmdAorCWRvbmUKKworCWlmIHRlc3QgJCMgPSAwCisJdGhlbgorCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVc2UgJy4nIGlmIHlvdSByZWFsbHkgd2FudCB0byBkZWluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMiKSIKKwlmaQorCisJbW9kdWxlX2xpc3QgIiRAIiB8CisJd2hpbGUgcmVhZCBtb2RlIHNoYTEgc3RhZ2Ugc21fcGF0aAorCWRvCisJCWRpZV9pZl91bm1hdGNoZWQgIiRtb2RlIgorCQluYW1lPSQobW9kdWxlX25hbWUgIiRzbV9wYXRoIikgfHwgZXhpdAorCisJCSMgUmVtb3ZlIHRoZSBzdWJtb2R1bGUgd29yayB0cmVlICh1bmxlc3MgdGhlIHVzZXIgYWxyZWFkeSBkaWQgaXQpCisJCWlmIHRlc3QgLWQgIiRzbV9wYXRoIgorCQl0aGVuCisJCQkjIFByb3RlY3Qgc3VibW9kdWxlcyBjb250YWluaW5nIGEgLmdpdCBkaXJlY3RvcnkKKwkJCWlmIHRlc3QgLWQgIiRzbV9wYXRoLy5naXQiCisJCQl0aGVuCisJCQkJZWNobyA+JjIgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgd29yayB0cmVlICdcJHNtX3BhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiKSIKKwkJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiKSIKKwkJCWZpCisKKwkJCWlmIHRlc3QgLXogIiRmb3JjZSIKKwkJCXRoZW4KKwkJCQlnaXQgcm0gLXFuICIkc21fcGF0aCIgfHwKKwkJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgd29yayB0cmVlICdcJHNtX3BhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvIGRpc2NhcmQgdGhlbSIpIgorCQkJZmkKKwkJCXJtIC1yZiAiJHNtX3BhdGgiICYmCisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDbGVhcmVkIGRpcmVjdG9yeSAnXCRzbV9wYXRoJyIpIiB8fAorCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICdcJHNtX3BhdGgnIikiCisJCWZpCisKKwkJbWtkaXIgIiRzbV9wYXRoIiB8fCBzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJ1wkc21fcGF0aCciKSIKKworCQkjIFJlbW92ZSB0aGUgLmdpdC9jb25maWcgZW50cmllcyAodW5sZXNzIHRoZSB1c2VyIGFscmVhZHkgZGlkIGl0KQorCQlpZiB0ZXN0IC1uICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwIHN1Ym1vZHVsZS4iJG5hbWVcLiIpIgorCQl0aGVuCisJCQkjIFJlbW92ZSB0aGUgd2hvbGUgc2VjdGlvbiBzbyB3ZSBoYXZlIGEgY2xlYW4gc3RhdGUgd2hlbgorCQkJIyB0aGUgdXNlciBsYXRlciBkZWNpZGVzIHRvIGluaXQgdGhpcyBzdWJtb2R1bGUgYWdhaW4KKwkJCXVybD0kKGdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsKQorCQkJZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIHN1Ym1vZHVsZS4iJG5hbWUiIDI+L2Rldi9udWxsICYmCisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgJ1wkbmFtZScgKFwkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJ1wkc21fcGF0aCciKSIKKwkJZmkKKwlkb25lCit9CisKKyMKICMgVXBkYXRlIGVhY2ggc3VibW9kdWxlIHBhdGggdG8gY29ycmVjdCByZXZpc2lvbiwgdXNpbmcgY2xvbmUgYW5kIGNoZWNrb3V0IGFzIG5lZWRlZAogIwogIyAkQCA9IHJlcXVlc3RlZCBwYXRocyAoZGVmYXVsdCB0byBhbGwpCkBAIC01MzMsNiArNjQ3LDkgQEAKIAkJLWl8LS1pbml0KQogCQkJaW5pdD0xCiAJCQk7OworCQktLXJlbW90ZSkKKwkJCXJlbW90ZT0xCisJCQk7OwogCQktTnwtLW5vLWZldGNoKQogCQkJbm9mZXRjaD0xCiAJCQk7OwpAQCAtNTg4LDExICs3MDUsMTIgQEAKIAkJZGllX2lmX3VubWF0Y2hlZCAiJG1vZGUiCiAJCWlmIHRlc3QgIiRzdGFnZSIgPSBVCiAJCXRoZW4KLQkJCWVjaG8gPiYyICJTa2lwcGluZyB1bm1lcmdlZCBzdWJtb2R1bGUgJHNtX3BhdGgiCisJCQllY2hvID4mMiAiU2tpcHBpbmcgdW5tZXJnZWQgc3VibW9kdWxlICRwcmVmaXgkc21fcGF0aCIKIAkJCWNvbnRpbnVlCiAJCWZpCiAJCW5hbWU9JChtb2R1bGVfbmFtZSAiJHNtX3BhdGgiKSB8fCBleGl0CiAJCXVybD0kKGdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsKQorCQlicmFuY2g9JChnZXRfc3VibW9kdWxlX2NvbmZpZyAiJG5hbWUiIGJyYW5jaCBtYXN0ZXIpCiAJCWlmICEgdGVzdCAteiAiJHVwZGF0ZSIKIAkJdGhlbgogCQkJdXBkYXRlX21vZHVsZT0kdXBkYXRlCkBAIC02MDIsNyArNzIwLDcgQEAKIAogCQlpZiB0ZXN0ICIkdXBkYXRlX21vZHVsZSIgPSAibm9uZSIKIAkJdGhlbgotCQkJZWNobyAiU2tpcHBpbmcgc3VibW9kdWxlICckc21fcGF0aCciCisJCQllY2hvICJTa2lwcGluZyBzdWJtb2R1bGUgJyRwcmVmaXgkc21fcGF0aCciCiAJCQljb250aW51ZQogCQlmaQogCkBAIC02MTEsNyArNzI5LDcgQEAKIAkJCSMgT25seSBtZW50aW9uIHVuaW5pdGlhbGl6ZWQgc3VibW9kdWxlcyB3aGVuIGl0cwogCQkJIyBwYXRoIGhhdmUgYmVlbiBzcGVjaWZpZWQKIAkJCXRlc3QgIiQjIiAhPSAiMCIgJiYKLQkJCXNheSAiJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIG5vdCBpbml0aWFsaXplZAorCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWQKIE1heWJlIHlvdSB3YW50IHRvIHVzZSAndXBkYXRlIC0taW5pdCc/IikiCiAJCQljb250aW51ZQogCQlmaQpAQCAtNjI0LDcgKzc0MiwyMSBAQAogCQllbHNlCiAJCQlzdWJzaGExPSQoY2xlYXJfbG9jYWxfZ2l0X2VudjsgY2QgIiRzbV9wYXRoIiAmJgogCQkJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwKLQkJCWRpZSAiJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKKwkJCWRpZSAiJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgorCQlmaQorCisJCWlmIHRlc3QgLW4gIiRyZW1vdGUiCisJCXRoZW4KKwkJCWlmIHRlc3QgLXogIiRub2ZldGNoIgorCQkJdGhlbgorCQkJCSMgRmV0Y2ggcmVtb3RlIGJlZm9yZSBkZXRlcm1pbmluZyB0cmFja2luZyAkc2hhMQorCQkJCShjbGVhcl9sb2NhbF9naXRfZW52OyBjZCAiJHNtX3BhdGgiICYmIGdpdC1mZXRjaCkgfHwKKwkJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKKwkJCWZpCisJCQlyZW1vdGVfbmFtZT0kKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYgZ2V0X2RlZmF1bHRfcmVtb3RlKQorCQkJc2hhMT0kKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYKKwkJCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIke3JlbW90ZV9uYW1lfS8ke2JyYW5jaH0iKSB8fAorCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCAke3JlbW90ZV9uYW1lfS8ke2JyYW5jaH0gcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKIAkJZmkKIAogCQlpZiB0ZXN0ICIkc3Vic2hhMSIgIT0gIiRzaGExIiAtbyAtbiAiJGZvcmNlIgpAQCAtNjQzLDcgKzc3NSw3IEBACiAJCQkJKGNsZWFyX2xvY2FsX2dpdF9lbnY7IGNkICIkc21fcGF0aCIgJiYKIAkJCQkJKCAocmV2PSQoZ2l0IHJldi1saXN0IC1uIDEgJHNoYTEgLS1ub3QgLS1hbGwgMj4vZGV2L251bGwpICYmCiAJCQkJCSB0ZXN0IC16ICIkcmV2IikgfHwgZ2l0LWZldGNoKSkgfHwKLQkJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKKwkJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgogCQkJZmkKIAogCQkJIyBJcyB0aGlzIHNvbWV0aGluZyB3ZSBqdXN0IGNsb25lZD8KQEAgLTY1NywyMCArNzg5LDIwIEBACiAJCQljYXNlICIkdXBkYXRlX21vZHVsZSIgaW4KIAkJCXJlYmFzZSkKIAkJCQljb21tYW5kPSJnaXQgcmViYXNlIgotCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gcmViYXNlICdcJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCi0JCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnOiByZWJhc2VkIGludG8gJ1wkc2hhMSciKSIKKwkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIHJlYmFzZSAnXCRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCisJCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCc6IHJlYmFzZWQgaW50byAnXCRzaGExJyIpIgogCQkJCW11c3RfZGllX29uX2ZhaWx1cmU9eWVzCiAJCQkJOzsKIAkJCW1lcmdlKQogCQkJCWNvbW1hbmQ9ImdpdCBtZXJnZSIKLQkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIG1lcmdlICdcJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCi0JCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnOiBtZXJnZWQgaW4gJ1wkc2hhMSciKSIKKwkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIG1lcmdlICdcJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCciKSIKKwkJCQlzYXlfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJzogbWVyZ2VkIGluICdcJHNoYTEnIikiCiAJCQkJbXVzdF9kaWVfb25fZmFpbHVyZT15ZXMKIAkJCQk7OwogCQkJKikKIAkJCQljb21tYW5kPSJnaXQgY2hlY2tvdXQgJHN1YmZvcmNlIC1xIgotCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gY2hlY2tvdXQgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCciKSIKLQkJCQlzYXlfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCc6IGNoZWNrZWQgb3V0ICdcJHNoYTEnIikiCisJCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBjaGVja291dCAnXCRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCisJCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCc6IGNoZWNrZWQgb3V0ICdcJHNoYTEnIikiCiAJCQkJOzsKIAkJCWVzYWMKIApAQCAtNjg4LDExICs4MjAsMTYgQEAKIAogCQlpZiB0ZXN0IC1uICIkcmVjdXJzaXZlIgogCQl0aGVuCi0JCQkoY2xlYXJfbG9jYWxfZ2l0X2VudjsgY2QgIiRzbV9wYXRoIiAmJiBldmFsIGNtZF91cGRhdGUgIiRvcmlnX2ZsYWdzIikKKwkJCSgKKwkJCQlwcmVmaXg9IiRwcmVmaXgkc21fcGF0aC8iCisJCQkJY2xlYXJfbG9jYWxfZ2l0X2VudgorCQkJCWNkICIkc21fcGF0aCIgJiYKKwkJCQlldmFsIGNtZF91cGRhdGUgIiRvcmlnX2ZsYWdzIgorCQkJKQogCQkJcmVzPSQ/CiAJCQlpZiB0ZXN0ICRyZXMgLWd0IDAKIAkJCXRoZW4KLQkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnXCRzbV9wYXRoJyIpIgorCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCciKSIKIAkJCQlpZiB0ZXN0ICRyZXMgLWVxIDEKIAkJCQl0aGVuCiAJCQkJCWVycj0iJHtlcnJ9OyRkaWVfbXNnIgpAQCAtNzYwLDE0ICs4OTcsMTQgQEAKIAkJCWZvcl9zdGF0dXM9IiQxIgogCQkJOzsKIAkJLW58LS1zdW1tYXJ5LWxpbWl0KQotCQkJaWYgc3VtbWFyeV9saW1pdD0kKCgkMiArIDApKSAyPi9kZXYvbnVsbCAmJiB0ZXN0ICIkc3VtbWFyeV9saW1pdCIgPSAiJDIiCi0JCQl0aGVuCi0JCQkJOgotCQkJZWxzZQotCQkJCXVzYWdlCi0JCQlmaQorCQkJc3VtbWFyeV9saW1pdD0iJDIiCisJCQlpc251bWJlciAiJHN1bW1hcnlfbGltaXQiIHx8IHVzYWdlCiAJCQlzaGlmdAogCQkJOzsKKwkJLS1zdW1tYXJ5LWxpbWl0PSopCisJCQlzdW1tYXJ5X2xpbWl0PSIkezEjLS1zdW1tYXJ5LWxpbWl0PX0iCisJCQlpc251bWJlciAiJHN1bW1hcnlfbGltaXQiIHx8IHVzYWdlCisJCQk7OwogCQktLSkKIAkJCXNoaWZ0CiAJCQlicmVhawpAQCAtOTI3LDEyICsxMDY0LDEyIEBACiAJZG9uZSB8CiAJaWYgdGVzdCAtbiAiJGZvcl9zdGF0dXMiOyB0aGVuCiAJCWlmIFsgLW4gIiRmaWxlcyIgXTsgdGhlbgotCQkJZ2V0dGV4dGxuICIjIFN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgorCQkJZ2V0dGV4dGxuICJTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIgfCBnaXQgc3RyaXBzcGFjZSAtYwogCQllbHNlCi0JCQlnZXR0ZXh0bG4gIiMgU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKKwkJCWdldHRleHRsbiAiU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgfCBnaXQgc3RyaXBzcGFjZSAtYwogCQlmaQotCQllY2hvICIjIgotCQlzZWQgLWUgJ3N8XnwjIHwnIC1lICdzfF4jICR8I3wnCisJCXByaW50ZiAiXG4iIHwgZ2l0IHN0cmlwc3BhY2UgLWMKKwkJZ2l0IHN0cmlwc3BhY2UgLWMKIAllbHNlCiAJCWNhdAogCWZpCkBAIC05OTMsMTYgKzExMzAsMTYgQEAKIAkJCXNheSAiLSRzaGExICRkaXNwbGF5cGF0aCIKIAkJCWNvbnRpbnVlOwogCQlmaQotCQlzZXRfbmFtZV9yZXYgIiRzbV9wYXRoIiAiJHNoYTEiCiAJCWlmIGdpdCBkaWZmLWZpbGVzIC0taWdub3JlLXN1Ym1vZHVsZXM9ZGlydHkgLS1xdWlldCAtLSAiJHNtX3BhdGgiCiAJCXRoZW4KKwkJCXNldF9uYW1lX3JldiAiJHNtX3BhdGgiICIkc2hhMSIKIAkJCXNheSAiICRzaGExICRkaXNwbGF5cGF0aCRyZXZuYW1lIgogCQllbHNlCiAJCQlpZiB0ZXN0IC16ICIkY2FjaGVkIgogCQkJdGhlbgogCQkJCXNoYTE9JChjbGVhcl9sb2NhbF9naXRfZW52OyBjZCAiJHNtX3BhdGgiICYmIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkKLQkJCQlzZXRfbmFtZV9yZXYgIiRzbV9wYXRoIiAiJHNoYTEiCiAJCQlmaQorCQkJc2V0X25hbWVfcmV2ICIkc21fcGF0aCIgIiRzaGExIgogCQkJc2F5ICIrJHNoYTEgJGRpc3BsYXlwYXRoJHJldm5hbWUiCiAJCWZpCiAKQEAgLTExMDgsNyArMTI0NSw3IEBACiB3aGlsZSB0ZXN0ICQjICE9IDAgJiYgdGVzdCAteiAiJGNvbW1hbmQiCiBkbwogCWNhc2UgIiQxIiBpbgotCWFkZCB8IGZvcmVhY2ggfCBpbml0IHwgdXBkYXRlIHwgc3RhdHVzIHwgc3VtbWFyeSB8IHN5bmMpCisJYWRkIHwgZm9yZWFjaCB8IGluaXQgfCBkZWluaXQgfCB1cGRhdGUgfCBzdGF0dXMgfCBzdW1tYXJ5IHwgc3luYykKIAkJY29tbWFuZD0kMQogCQk7OwogCS1xfC0tcXVpZXQpCmRpZmYgLS1naXQgYS9naXQtc3ZuLnBlcmwgYi9naXQtc3ZuLnBlcmwKaW5kZXggYmQ1MjY2Yy4uZmYxY2UzZCAxMDA3NTUKLS0tIGEvZ2l0LXN2bi5wZXJsCisrKyBiL2dpdC1zdm4ucGVybApAQCAtNjEsOCArNjEsNiBAQAogCWNvbW1hbmRfb25lbGluZShbcXcvcmV2LXBhcnNlIC0tc2hvdy1wcmVmaXgvXSwgU1RERVJSID0+IDApCiB9IHx8ICcnOwogCi1teSAkZ2l0X2Rpcl91c2VyX3NldCA9IDEgaWYgZGVmaW5lZCAkRU5We0dJVF9ESVJ9OwotJEVOVntHSVRfRElSfSB8fD0gJy5naXQnOwogJEdpdDo6U1ZOOjpSYTo6X2xvZ193aW5kb3dfc2l6ZSA9IDEwMDsKIAogaWYgKCEgZXhpc3RzICRFTlZ7U1ZOX1NTSH0gJiYgZXhpc3RzICRFTlZ7R0lUX1NTSH0pIHsKQEAgLTExNCw3ICsxMTIsOCBAQAogCSRfbWVzc2FnZSwgJF9maWxlLCAkX2JyYW5jaF9kZXN0LAogCSRfdGVtcGxhdGUsICRfc2hhcmVkLAogCSRfdmVyc2lvbiwgJF9mZXRjaF9hbGwsICRfbm9fcmViYXNlLCAkX2ZldGNoX3BhcmVudCwKLQkkX21lcmdlLCAkX3N0cmF0ZWd5LCAkX3ByZXNlcnZlX21lcmdlcywgJF9kcnlfcnVuLCAkX2xvY2FsLAorCSRfYmVmb3JlLCAkX2FmdGVyLAorCSRfbWVyZ2UsICRfc3RyYXRlZ3ksICRfcHJlc2VydmVfbWVyZ2VzLCAkX2RyeV9ydW4sICRfcGFyZW50cywgJF9sb2NhbCwKIAkkX3ByZWZpeCwgJF9ub19jaGVja291dCwgJF91cmwsICRfdmVyYm9zZSwKIAkkX2NvbW1pdF91cmwsICRfdGFnLCAkX21lcmdlX2luZm8sICRfaW50ZXJhY3RpdmUpOwogCkBAIC0xMjcsNiArMTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZy1kaXI9cycgPT4gXCRHaXQ6OlNWTjo6UmE6OmNvbmZpZ19kaXIsCiAgICAgICAgICAgICAgICAgICAgICduby1hdXRoLWNhY2hlJyA9PiBcJEdpdDo6U1ZOOjpQcm9tcHQ6Ol9ub19hdXRoX2NhY2hlLAogICAgICAgICAgICAgICAgICAgICAnaWdub3JlLXBhdGhzPXMnID0+IFwkR2l0OjpTVk46OkZldGNoZXI6Ol9pZ25vcmVfcmVnZXgsCisgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlLXBhdGhzPXMnID0+IFwkR2l0OjpTVk46OkZldGNoZXI6Ol9pbmNsdWRlX3JlZ2V4LAogICAgICAgICAgICAgICAgICAgICAnaWdub3JlLXJlZnM9cycgPT4gXCRHaXQ6OlNWTjo6UmE6Ol9pZ25vcmVfcmVmc19yZWdleCApOwogbXkgJWZjX29wdHMgPSAoICdmb2xsb3ctcGFyZW50fGZvbGxvdyEnID0+IFwkR2l0OjpTVk46Ol9mb2xsb3dfcGFyZW50LAogCQknYXV0aG9ycy1maWxlfEE9cycgPT4gXCRfYXV0aG9ycywKQEAgLTIwMyw2ICsyMDMsNyBAQAogCSAgICAgICAgICAgIHsgJ21lc3NhZ2V8bT1zJyA9PiBcJF9tZXNzYWdlLAogCSAgICAgICAgICAgICAgJ2Rlc3RpbmF0aW9ufGQ9cycgPT4gXCRfYnJhbmNoX2Rlc3QsCiAJICAgICAgICAgICAgICAnZHJ5LXJ1bnxuJyA9PiBcJF9kcnlfcnVuLAorCSAgICAgICAgICAgICAgJ3BhcmVudHMnID0+IFwkX3BhcmVudHMsCiAJICAgICAgICAgICAgICAndGFnfHQnID0+IFwkX3RhZywKIAkgICAgICAgICAgICAgICd1c2VybmFtZT1zJyA9PiBcJEdpdDo6U1ZOOjpQcm9tcHQ6Ol91c2VybmFtZSwKIAkgICAgICAgICAgICAgICdjb21taXQtdXJsPXMnID0+IFwkX2NvbW1pdF91cmwgfSBdLApAQCAtMjExLDYgKzIxMiw3IEBACiAJICAgICAgICAgeyAnbWVzc2FnZXxtPXMnID0+IFwkX21lc3NhZ2UsCiAJICAgICAgICAgICAnZGVzdGluYXRpb258ZD1zJyA9PiBcJF9icmFuY2hfZGVzdCwKIAkgICAgICAgICAgICdkcnktcnVufG4nID0+IFwkX2RyeV9ydW4sCisJICAgICAgICAgICAncGFyZW50cycgPT4gXCRfcGFyZW50cywKIAkgICAgICAgICAgICd1c2VybmFtZT1zJyA9PiBcJEdpdDo6U1ZOOjpQcm9tcHQ6Ol91c2VybmFtZSwKIAkgICAgICAgICAgICdjb21taXQtdXJsPXMnID0+IFwkX2NvbW1pdF91cmwgfSBdLAogCSdzZXQtdHJlZScgPT4gWyBcJmNtZF9zZXRfdHJlZSwKQEAgLTI1OCw3ICsyNjAsOCBAQAogCQkJfSBdLAogCSdmaW5kLXJldicgPT4gWyBcJmNtZF9maW5kX3JldiwKIAkgICAgICAgICAgICAgICAgIlRyYW5zbGF0ZSBiZXR3ZWVuIFNWTiByZXZpc2lvbiBudW1iZXJzIGFuZCB0cmVlLWlzaCIsCi0JCQl7fSBdLAorCQkJeyAnYmVmb3JlJyA9PiBcJF9iZWZvcmUsCisJCQkgICdhZnRlcicgPT4gXCRfYWZ0ZXIgfSBdLAogCSdyZWJhc2UnID0+IFsgXCZjbWRfcmViYXNlLCAiRmV0Y2ggYW5kIHJlYmFzZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IiwKIAkJCXsgJ21lcmdlfG18TScgPT4gXCRfbWVyZ2UsCiAJCQkgICd2ZXJib3NlfHYnID0+IFwkX3ZlcmJvc2UsCkBAIC0zMjUsMjcgKzMyOCwyMCBAQAogfTsKIAogIyBtYWtlIHN1cmUgd2UncmUgYWx3YXlzIHJ1bm5pbmcgYXQgdGhlIHRvcC1sZXZlbCB3b3JraW5nIGRpcmVjdG9yeQotdW5sZXNzICgkY21kICYmICRjbWQgPX4gLyg/OmNsb25lfGluaXR8bXVsdGktaW5pdCkkLykgewotCXVubGVzcyAoLWQgJEVOVntHSVRfRElSfSkgewotCQlpZiAoJGdpdF9kaXJfdXNlcl9zZXQpIHsKLQkJCWRpZSAiR0lUX0RJUj0kRU5We0dJVF9ESVJ9IGV4cGxpY2l0bHkgc2V0LCAiLAotCQkJICAgICJidXQgaXQgaXMgbm90IGEgZGlyZWN0b3J5XG4iOwotCQl9Ci0JCW15ICRnaXRfZGlyID0gZGVsZXRlICRFTlZ7R0lUX0RJUn07Ci0JCW15ICRjZHVwID0gdW5kZWY7Ci0JCWdpdF9jbWRfdHJ5IHsKLQkJCSRjZHVwID0gY29tbWFuZF9vbmVsaW5lKHF3L3Jldi1wYXJzZSAtLXNob3ctY2R1cC8pOwotCQkJJGdpdF9kaXIgPSAnLicgdW5sZXNzICgkY2R1cCk7Ci0JCQljaG9tcCAkY2R1cCBpZiAoJGNkdXApOwotCQkJJGNkdXAgPSAiLiIgdW5sZXNzICgkY2R1cCAmJiBsZW5ndGggJGNkdXApOwotCQl9ICJBbHJlYWR5IGF0IHRvcGxldmVsLCBidXQgJGdpdF9kaXIgbm90IGZvdW5kXG4iOwotCQljaGRpciAkY2R1cCBvciBkaWUgIlVuYWJsZSB0byBjaGRpciB1cCB0byAnJGNkdXAnXG4iOwotCQl1bmxlc3MgKC1kICRnaXRfZGlyKSB7Ci0JCQlkaWUgIiRnaXRfZGlyIHN0aWxsIG5vdCBmb3VuZCBhZnRlciBnb2luZyB0byAiLAotCQkJICAgICInJGNkdXAnXG4iOwotCQl9Ci0JCSRFTlZ7R0lUX0RJUn0gPSAkZ2l0X2RpcjsKLQl9CitpZiAoJGNtZCAmJiAkY21kID1+IC8oPzpjbG9uZXxpbml0fG11bHRpLWluaXQpJC8pIHsKKwkkRU5We0dJVF9ESVJ9IHx8PSAiLmdpdCI7Cit9IGVsc2UgeworCW15ICgkZ2l0X2RpciwgJGNkdXApOworCWdpdF9jbWRfdHJ5IHsKKwkJJGdpdF9kaXIgPSBjb21tYW5kX29uZWxpbmUoW3F3L3Jldi1wYXJzZSAtLWdpdC1kaXIvXSk7CisJfSAiVW5hYmxlIHRvIGZpbmQgLmdpdCBkaXJlY3RvcnlcbiI7CisJZ2l0X2NtZF90cnkgeworCQkkY2R1cCA9IGNvbW1hbmRfb25lbGluZShxdy9yZXYtcGFyc2UgLS1zaG93LWNkdXAvKTsKKwkJY2hvbXAgJGNkdXAgaWYgKCRjZHVwKTsKKwkJJGNkdXAgPSAiLiIgdW5sZXNzICgkY2R1cCAmJiBsZW5ndGggJGNkdXApOworCX0gIkFscmVhZHkgYXQgdG9wbGV2ZWwsIGJ1dCAkZ2l0X2RpciBub3QgZm91bmRcbiI7CisJJEVOVntHSVRfRElSfSA9ICRnaXRfZGlyOworCWNoZGlyICRjZHVwIG9yIGRpZSAiVW5hYmxlIHRvIGNoZGlyIHVwIHRvICckY2R1cCdcbiI7CiAJJF9yZXBvc2l0b3J5ID0gR2l0LT5yZXBvc2l0b3J5KFJlcG9zaXRvcnkgPT4gJEVOVntHSVRfRElSfSk7CiB9CiAKQEAgLTM4OSw3ICszODUsNyBAQAogCW15ICRmZCA9ICRleGl0ID8gXCpTVERFUlIgOiBcKlNURE9VVDsKIAlwcmludCAkZmQgPDwiIjsKIGdpdC1zdm4gLSBiaWRpcmVjdGlvbmFsIG9wZXJhdGlvbnMgYmV0d2VlbiBhIHNpbmdsZSBTdWJ2ZXJzaW9uIHRyZWUgYW5kIGdpdAotVXNhZ2U6IGdpdCBzdm4gPGNvbW1hbmQ+IFtvcHRpb25zXSBbYXJndW1lbnRzXVxuCit1c2FnZTogZ2l0IHN2biA8Y29tbWFuZD4gW29wdGlvbnNdIFthcmd1bWVudHNdXG4KIAogCXByaW50ICRmZCAiQXZhaWxhYmxlIGNvbW1hbmRzOlxuIiB1bmxlc3MgJGNtZDsKIApAQCAtNDc3LDYgKzQ3Myw5IEBACiAJbXkgJGlnbm9yZV9wYXRoc19yZWdleCA9IFwkR2l0OjpTVk46OkZldGNoZXI6Ol9pZ25vcmVfcmVnZXg7CiAJY29tbWFuZF9ub2lzeSgnY29uZmlnJywgIiRwZnguaWdub3JlLXBhdGhzIiwgJCRpZ25vcmVfcGF0aHNfcmVnZXgpCiAJCWlmIGRlZmluZWQgJCRpZ25vcmVfcGF0aHNfcmVnZXg7CisJbXkgJGluY2x1ZGVfcGF0aHNfcmVnZXggPSBcJEdpdDo6U1ZOOjpGZXRjaGVyOjpfaW5jbHVkZV9yZWdleDsKKwljb21tYW5kX25vaXN5KCdjb25maWcnLCAiJHBmeC5pbmNsdWRlLXBhdGhzIiwgJCRpbmNsdWRlX3BhdGhzX3JlZ2V4KQorCQlpZiBkZWZpbmVkICQkaW5jbHVkZV9wYXRoc19yZWdleDsKIAlteSAkaWdub3JlX3JlZnNfcmVnZXggPSBcJEdpdDo6U1ZOOjpSYTo6X2lnbm9yZV9yZWZzX3JlZ2V4OwogCWNvbW1hbmRfbm9pc3koJ2NvbmZpZycsICIkcGZ4Lmlnbm9yZS1yZWZzIiwgJCRpZ25vcmVfcmVmc19yZWdleCkKIAkJaWYgZGVmaW5lZCAkJGlnbm9yZV9yZWZzX3JlZ2V4OwpAQCAtNTQxLDcgKzU0MCw3IEBACiAJfQogCW15ICgkcmVtb3RlKSA9IEBfOwogCWlmIChAXyA+IDEpIHsKLQkJZGllICJVc2FnZTogJDAgZmV0Y2ggWy0tYWxsXSBbLS1wYXJlbnRdIFtzdm4tcmVtb3RlXVxuIjsKKwkJZGllICJ1c2FnZTogJDAgZmV0Y2ggWy0tYWxsXSBbLS1wYXJlbnRdIFtzdm4tcmVtb3RlXVxuIjsKIAl9CiAJJEdpdDo6U1ZOOjpub19yZXVzZV9leGlzdGluZyA9IHVuZGVmOwogCWlmICgkX2ZldGNoX3BhcmVudCkgewpAQCAtNjc2LDEyICs2NzUsMTQgQEAKIH0KIAogc3ViIG1lcmdlX21lcmdlX2luZm8gewotCW15ICgkbWVyZ2VpbmZvX29uZSwgJG1lcmdlaW5mb190d28pID0gQF87CisJbXkgKCRtZXJnZWluZm9fb25lLCAkbWVyZ2VpbmZvX3R3bywgJGlnbm9yZV9icmFuY2gpID0gQF87CiAJbXkgJXJlc3VsdF9oYXNoID0gKCk7CiAKIAltZXJnZV9yZXZzX2ludG9faGFzaChcJXJlc3VsdF9oYXNoLCAkbWVyZ2VpbmZvX29uZSk7CiAJbWVyZ2VfcmV2c19pbnRvX2hhc2goXCVyZXN1bHRfaGFzaCwgJG1lcmdlaW5mb190d28pOwogCisJZGVsZXRlICRyZXN1bHRfaGFzaHskaWdub3JlX2JyYW5jaH0gaWYgJGlnbm9yZV9icmFuY2g7CisKIAlteSAkcmVzdWx0ID0gJyc7CiAJIyBTb3J0IGJlbG93IGlzIGZvciBjb25zaXN0ZW5jeSdzIHNha2UKIAlmb3IgbXkgJGJyYW5jaG5hbWUgKHNvcnQga2V5cyglcmVzdWx0X2hhc2gpKSB7CkBAIC03MDIsNiArNzAzLDcgQEAKIAkJbXkgJGFsbF9wYXJlbnRzX29rID0gMTsKIAkJbXkgJGFnZ3JlZ2F0ZV9tZXJnZWluZm8gPSAnJzsKIAkJbXkgJHJvb3R1cmwgPSAkZ3MtPnJlcG9zX3Jvb3Q7CisJCW15ICgkdGFyZ2V0X2JyYW5jaCkgPSAkZ3MtPmZ1bGxfcHVzaHVybCA9fiAvXlxRJHJvb3R1cmxcRSguKikvOwogCiAJCWlmIChkZWZpbmVkKCRyZXdyaXR0ZW5fcGFyZW50KSkgewogCQkJIyBSZXBsYWNlIGZpcnN0IHBhcmVudCB3aXRoIG5ld2x5LXJld3JpdHRlbiB2ZXJzaW9uCkBAIC03MzMsNyArNzM1LDggQEAKIAkJCSMgTWVyZ2UgcHJldmlvdXMgbWVyZ2VpbmZvIHZhbHVlcwogCQkJJGFnZ3JlZ2F0ZV9tZXJnZWluZm8gPQogCQkJCW1lcmdlX21lcmdlX2luZm8oJGFnZ3JlZ2F0ZV9tZXJnZWluZm8sCi0JCQkJCQkJCSAkcGFyX21lcmdlaW5mbywgMCk7CisJCQkJCQkJCSRwYXJfbWVyZ2VpbmZvLAorCQkJCQkJCQkkdGFyZ2V0X2JyYW5jaCk7CiAKIAkJCW5leHQgaWYgJHBhcmVudCBlcSAkcGFyZW50c1swXTsgIyBTa2lwIGZpcnN0IHBhcmVudAogCQkJIyBBZGQgbmV3IGNoYW5nZXMgYmVpbmcgcGxhY2VkIGluIHRyZWUgYnkgbWVyZ2UKQEAgLTc3Niw3ICs3NzksOCBAQAogCQkJbXkgJG5ld21lcmdlaW5mbyA9ICIkYnJhbmNocGF0aDoiIC4gam9pbignLCcsIEByZXZzaW4pOwogCQkJJGFnZ3JlZ2F0ZV9tZXJnZWluZm8gPQogCQkJCW1lcmdlX21lcmdlX2luZm8oJGFnZ3JlZ2F0ZV9tZXJnZWluZm8sCi0JCQkJCQkJCSAkbmV3bWVyZ2VpbmZvLCAxKTsKKwkJCQkJCQkJJG5ld21lcmdlaW5mbywKKwkJCQkJCQkJJHRhcmdldF9icmFuY2gpOwogCQl9CiAJCWlmICgkYWxsX3BhcmVudHNfb2sgYW5kICRhZ2dyZWdhdGVfbWVyZ2VpbmZvKSB7CiAJCQlyZXR1cm4gJGFnZ3JlZ2F0ZV9tZXJnZWluZm87CkBAIC04MjcsNyArODMxLDcgQEAKIHN1YiBjbWRfZGNvbW1pdCB7CiAJbXkgJGhlYWQgPSBzaGlmdDsKIAljb21tYW5kX25vaXN5KHF3L3VwZGF0ZS1pbmRleCAtLXJlZnJlc2gvKTsKLQlnaXRfY21kX3RyeSB7IGNvbW1hbmRfb25lbGluZShxdy9kaWZmLWluZGV4IC0tcXVpZXQgSEVBRC8pIH0KKwlnaXRfY21kX3RyeSB7IGNvbW1hbmRfb25lbGluZShxdy9kaWZmLWluZGV4IC0tcXVpZXQgSEVBRCAtLS8pIH0KIAkJJ0Nhbm5vdCBkY29tbWl0IHdpdGggYSBkaXJ0eSBpbmRleC4gIENvbW1pdCB5b3VyIGNoYW5nZXMgZmlyc3QsICcKIAkJLiAib3Igc3Rhc2ggdGhlbSB3aXRoIGBnaXQgc3Rhc2gnLlxuIjsKIAkkaGVhZCB8fD0gJ0hFQUQnOwpAQCAtMTE3MCw2ICsxMTc0LDEwIEBACiAJCSRjdHgtPmxzKCRkc3QsICdIRUFEJywgMCk7CiAJfSBhbmQgZGllICJicmFuY2ggJHticmFuY2hfbmFtZX0gYWxyZWFkeSBleGlzdHNcbiI7CiAKKwlpZiAoJF9wYXJlbnRzKSB7CisJCW1rX3BhcmVudF9kaXJzKCRjdHgsICRkc3QpOworCX0KKwogCXByaW50ICJDb3B5aW5nICR7c3JjfSBhdCByJHtyZXZ9IHRvICR7ZHN0fS4uLlxuIjsKIAkkY3R4LT5jb3B5KCRzcmMsICRyZXYsICRkc3QpCiAJCXVubGVzcyAkX2RyeV9ydW47CkBAIC0xMTc3LDYgKzExODUsMTcgQEAKIAkkZ3MtPmZldGNoX2FsbDsKIH0KIAorc3ViIG1rX3BhcmVudF9kaXJzIHsKKwlteSAoJGN0eCwgJHBhcmVudCkgPSBAXzsKKwkkcGFyZW50ID1+IHN7L1teL10qJH17fTsKKworCWlmICghZXZhbHskY3R4LT5scygkcGFyZW50LCAnSEVBRCcsIDApfSkgeworCQlta19wYXJlbnRfZGlycygkY3R4LCAkcGFyZW50KTsKKwkJcHJpbnQgIkNyZWF0aW5nIHBhcmVudCBmb2xkZXIgJHtwYXJlbnR9IC4uLlxuIjsKKwkJJGN0eC0+bWtkaXIoJHBhcmVudCkgdW5sZXNzICRfZHJ5X3J1bjsKKwl9Cit9CisKIHN1YiBjbWRfZmluZF9yZXYgewogCW15ICRyZXZpc2lvbl9vcl9oYXNoID0gc2hpZnQgb3IgZGllICJTVk4gb3IgZ2l0IHJldmlzaW9uIHJlcXVpcmVkICIsCiAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50XG4iOwpAQCAtMTE5MSw3ICsxMjEwLDEzIEBACiAJCQkgICAgIiRoZWFkIGhpc3RvcnlcbiI7CiAJCX0KIAkJbXkgJGRlc2lyZWRfcmV2aXNpb24gPSBzdWJzdHIoJHJldmlzaW9uX29yX2hhc2gsIDEpOwotCQkkcmVzdWx0ID0gJGdzLT5yZXZfbWFwX2dldCgkZGVzaXJlZF9yZXZpc2lvbiwgJHV1aWQpOworCQlpZiAoJF9iZWZvcmUpIHsKKwkJCSRyZXN1bHQgPSAkZ3MtPmZpbmRfcmV2X2JlZm9yZSgkZGVzaXJlZF9yZXZpc2lvbiwgMSk7CisJCX0gZWxzaWYgKCRfYWZ0ZXIpIHsKKwkJCSRyZXN1bHQgPSAkZ3MtPmZpbmRfcmV2X2FmdGVyKCRkZXNpcmVkX3JldmlzaW9uLCAxKTsKKwkJfSBlbHNlIHsKKwkJCSRyZXN1bHQgPSAkZ3MtPnJldl9tYXBfZ2V0KCRkZXNpcmVkX3JldmlzaW9uLCAkdXVpZCk7CisJCX0KIAl9IGVsc2UgewogCQlteSAodW5kZWYsICRyZXYsIHVuZGVmKSA9IGNtdF9tZXRhZGF0YSgkcmV2aXNpb25fb3JfaGFzaCk7CiAJCSRyZXN1bHQgPSAkcmV2OwpAQCAtMTIyMSw3ICsxMjQ2LDcgQEAKIAkJcmV0dXJuOwogCX0KIAlpZiAoY29tbWFuZChxdy9kaWZmLWluZGV4IEhFQUQgLS0vKSkgewotCQlwcmludCBTVERFUlIgIkNhbm5vdCByZWJhc2Ugd2l0aCB1bmNvbW1pdGVkIGNoYW5nZXM6XG4iOworCQlwcmludCBTVERFUlIgIkNhbm5vdCByZWJhc2Ugd2l0aCB1bmNvbW1pdHRlZCBjaGFuZ2VzOlxuIjsKIAkJY29tbWFuZF9ub2lzeSgnc3RhdHVzJyk7CiAJCWV4aXQgMTsKIAl9CkBAIC0xNDA1LDcgKzE0MzAsNyBAQAogIyB0aGlzIGNvbW1hbmQgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IHJlcXVpcmVzIG5vIG1ldGFkYXRhCiBzdWIgY21kX2NvbW1pdF9kaWZmIHsKIAlteSAoJHRhLCAkdGIsICR1cmwpID0gQF87Ci0JbXkgJHVzYWdlID0gIlVzYWdlOiAkMCBjb21taXQtZGlmZiAtcjxyZXZpc2lvbj4gIi4KKwlteSAkdXNhZ2UgPSAidXNhZ2U6ICQwIGNvbW1pdC1kaWZmIC1yPHJldmlzaW9uPiAiLgogCSAgICAgICAgICAgICI8dHJlZS1pc2g+IDx0cmVlLWlzaD4gWzxVUkw+XSI7CiAJZmF0YWwoJHVzYWdlKSBpZiAoIWRlZmluZWQgJHRhIHx8ICFkZWZpbmVkICR0Yik7CiAJbXkgJHN2bl9wYXRoID0gJyc7CkBAIC0xOTA3LDcgKzE5MzIsNyBAQAogc3ViIHdvcmtpbmdfaGVhZF9pbmZvIHsKIAlteSAoJGhlYWQsICRyZWZzKSA9IEBfOwogCW15IEBhcmdzID0gcXcvcmV2LWxpc3QgLS1maXJzdC1wYXJlbnQgLS1wcmV0dHk9bWVkaXVtLzsKLQlteSAoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoQGFyZ3MsICRoZWFkKTsKKwlteSAoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoQGFyZ3MsICRoZWFkLCAiLS0iKTsKIAlteSAkaGFzaDsKIAlteSAlbWF4OwogCXdoaWxlICg8JGZoPikgewpkaWZmIC0tZ2l0IGEvZ2l0LXdlYi0tYnJvd3NlLnNoIGIvZ2l0LXdlYi0tYnJvd3NlLnNoCmluZGV4IDFlODI3MjYuLjFkNzJlYzcgMTAwNzU1Ci0tLSBhL2dpdC13ZWItLWJyb3dzZS5zaAorKysgYi9naXQtd2ViLS1icm93c2Uuc2gKQEAgLTMyLDggKzMyLDkgQEAKIHZhbGlkX3Rvb2woKSB7CiAJY2FzZSAiJDEiIGluCiAJZmlyZWZveCB8IGljZXdlYXNlbCB8IHNlYW1vbmtleSB8IGljZWFwZSB8IFwKLQljaHJvbWUgfCBnb29nbGUtY2hyb21lIHwgY2hyb21pdW0gfCBjaHJvbWl1bS1icm93c2VyIHxcCi0Ja29ucXVlcm9yIHwgb3BlcmEgfCB3M20gfCBlbGlua3MgfCBsaW5rcyB8IGx5bnggfCBkaWxsbyB8IG9wZW4gfCBzdGFydCkKKwljaHJvbWUgfCBnb29nbGUtY2hyb21lIHwgY2hyb21pdW0gfCBjaHJvbWl1bS1icm93c2VyIHwgXAorCWtvbnF1ZXJvciB8IG9wZXJhIHwgdzNtIHwgZWxpbmtzIHwgbGlua3MgfCBseW54IHwgZGlsbG8gfCBvcGVuIHwgXAorCXN0YXJ0IHwgY3lnc3RhcnQpCiAJCTs7ICMgaGFwcHkKIAkqKQogCQl2YWxpZF9jdXN0b21fdG9vbCAiJDEiIHx8IHJldHVybiAxCkBAIC0xMTksMTQgKzEyMCwxOCBAQAogCQlicm93c2VyX2NhbmRpZGF0ZXM9InczbSBlbGlua3MgbGlua3MgbHlueCIKIAlmaQogCSMgU0VDVVJJVFlTRVNTSU9OSUQgaW5kaWNhdGVzIGFuIE9TIFggR1VJIGxvZ2luIHNlc3Npb24KLQlpZiB0ZXN0IC1uICIkU0VDVVJJVFlTRVNTSU9OSUQiIFwKLQkJLW8gIiRURVJNX1BST0dSQU0iID0gIkFwcGxlX1Rlcm1pbmFsIiA7IHRoZW4KKwlpZiB0ZXN0IC1uICIkU0VDVVJJVFlTRVNTSU9OSUQiIHx8IHRlc3QgLW4gIiRURVJNX1BST0dSQU0iCisJdGhlbgogCQlicm93c2VyX2NhbmRpZGF0ZXM9Im9wZW4gJGJyb3dzZXJfY2FuZGlkYXRlcyIKIAlmaQogCSMgL2Jpbi9zdGFydCBpbmRpY2F0ZXMgTWluR1cKIAlpZiB0ZXN0IC14IC9iaW4vc3RhcnQ7IHRoZW4KIAkJYnJvd3Nlcl9jYW5kaWRhdGVzPSJzdGFydCAkYnJvd3Nlcl9jYW5kaWRhdGVzIgogCWZpCisJIyAvdXNyL2Jpbi9jeWdzdGFydCBpbmRpY2F0ZXMgQ3lnd2luCisJaWYgdGVzdCAteCAvdXNyL2Jpbi9jeWdzdGFydDsgdGhlbgorCQlicm93c2VyX2NhbmRpZGF0ZXM9ImN5Z3N0YXJ0ICRicm93c2VyX2NhbmRpZGF0ZXMiCisJZmkKIAogCWZvciBpIGluICRicm93c2VyX2NhbmRpZGF0ZXM7IGRvCiAJCWluaXRfYnJvd3Nlcl9wYXRoICRpCkBAIC0xNzQsNyArMTc5LDcgQEAKIAkJOzsKIAllc2FjCiAJOzsKLXczbXxlbGlua3N8bGlua3N8bHlueHxvcGVuKQordzNtfGVsaW5rc3xsaW5rc3xseW54fG9wZW58Y3lnc3RhcnQpCiAJIiRicm93c2VyX3BhdGgiICIkQCIKIAk7Owogc3RhcnQpCmRpZmYgLS1naXQgYS9naXQuYyBiL2dpdC5jCmluZGV4IGM1OThkYzYuLjQzNTkwODYgMTAwNjQ0Ci0tLSBhL2dpdC5jCisrKyBiL2dpdC5jCkBAIC00LDYgKzQsNyBAQAogI2luY2x1ZGUgImhlbHAuaCIKICNpbmNsdWRlICJxdW90ZS5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCisjaW5jbHVkZSAiY29tbWl0LmgiCiAKIGNvbnN0IGNoYXIgZ2l0X3VzYWdlX3N0cmluZ1tdID0KIAkiZ2l0IFstLXZlcnNpb25dIFstLWhlbHBdIFstYyBuYW1lPXZhbHVlXVxuIgpAQCAtMTMsNyArMTQsOSBAQAogCSIgICAgICAgICAgIDxjb21tYW5kPiBbPGFyZ3M+XSI7CiAKIGNvbnN0IGNoYXIgZ2l0X21vcmVfaW5mb19zdHJpbmdbXSA9Ci0JTl8oIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIik7CisJTl8oIidnaXQgaGVscCAtYScgYW5kICdnaXQgaGVscCAtZycgbGlzdHMgYXZhaWxhYmxlIHN1YmNvbW1hbmRzIGFuZCBzb21lXG4iCisJICAgImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKwkgICAidG8gcmVhZCBhYm91dCBhIHNwZWNpZmljIHN1YmNvbW1hbmQgb3IgY29uY2VwdC4iKTsKIAogc3RhdGljIHN0cnVjdCBzdGFydHVwX2luZm8gZ2l0X3N0YXJ0dXBfaW5mbzsKIHN0YXRpYyBpbnQgdXNlX3BhZ2VyID0gLTE7CkBAIC0xMjUsNiArMTI4LDcgQEAKIAkJCXN0YXRpYyBjaGFyIGdpdF9kaXJbUEFUSF9NQVgrMV07CiAJCQlpc19iYXJlX3JlcG9zaXRvcnlfY2ZnID0gMTsKIAkJCXNldGVudihHSVRfRElSX0VOVklST05NRU5ULCBnZXRjd2QoZ2l0X2Rpciwgc2l6ZW9mKGdpdF9kaXIpKSwgMCk7CisJCQlzZXRlbnYoR0lUX0lNUExJQ0lUX1dPUktfVFJFRV9FTlZJUk9OTUVOVCwgIjAiLCAxKTsKIAkJCWlmIChlbnZjaGFuZ2VkKQogCQkJCSplbnZjaGFuZ2VkID0gMTsKIAkJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgIi1jIikpIHsKQEAgLTEzNSw2ICsxMzksMjAgQEAKIAkJCWdpdF9jb25maWdfcHVzaF9wYXJhbWV0ZXIoKCphcmd2KVsxXSk7CiAJCQkoKmFyZ3YpKys7CiAJCQkoKmFyZ2MpLS07CisJCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICItLWxpdGVyYWwtcGF0aHNwZWNzIikpIHsKKwkJCXNldGVudihHSVRfTElURVJBTF9QQVRIU1BFQ1NfRU5WSVJPTk1FTlQsICIxIiwgMSk7CisJCQlpZiAoZW52Y2hhbmdlZCkKKwkJCQkqZW52Y2hhbmdlZCA9IDE7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICItLW5vLWxpdGVyYWwtcGF0aHNwZWNzIikpIHsKKwkJCXNldGVudihHSVRfTElURVJBTF9QQVRIU1BFQ1NfRU5WSVJPTk1FTlQsICIwIiwgMSk7CisJCQlpZiAoZW52Y2hhbmdlZCkKKwkJCQkqZW52Y2hhbmdlZCA9IDE7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICItLXNoYWxsb3ctZmlsZSIpKSB7CisJCQkoKmFyZ3YpKys7CisJCQkoKmFyZ2MpLS07CisJCQlzZXRfYWx0ZXJuYXRlX3NoYWxsb3dfZmlsZSgoKmFyZ3YpWzBdKTsKKwkJCWlmIChlbnZjaGFuZ2VkKQorCQkJCSplbnZjaGFuZ2VkID0gMTsKIAkJfSBlbHNlIHsKIAkJCWZwcmludGYoc3RkZXJyLCAiVW5rbm93biBvcHRpb246ICVzXG4iLCBjbWQpOwogCQkJdXNhZ2UoZ2l0X3VzYWdlX3N0cmluZyk7CkBAIC0zMDUsNiArMzIzLDcgQEAKIAkJeyAiYnVuZGxlIiwgY21kX2J1bmRsZSwgUlVOX1NFVFVQX0dFTlRMWSB9LAogCQl7ICJjYXQtZmlsZSIsIGNtZF9jYXRfZmlsZSwgUlVOX1NFVFVQIH0sCiAJCXsgImNoZWNrLWF0dHIiLCBjbWRfY2hlY2tfYXR0ciwgUlVOX1NFVFVQIH0sCisJCXsgImNoZWNrLWlnbm9yZSIsIGNtZF9jaGVja19pZ25vcmUsIFJVTl9TRVRVUCB8IE5FRURfV09SS19UUkVFIH0sCiAJCXsgImNoZWNrLXJlZi1mb3JtYXQiLCBjbWRfY2hlY2tfcmVmX2Zvcm1hdCB9LAogCQl7ICJjaGVja291dCIsIGNtZF9jaGVja291dCwgUlVOX1NFVFVQIHwgTkVFRF9XT1JLX1RSRUUgfSwKIAkJeyAiY2hlY2tvdXQtaW5kZXgiLCBjbWRfY2hlY2tvdXRfaW5kZXgsCkBAIC00OTUsOCArNTE0LDkgQEAKIH0KIAogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmF2KQogeworCWNvbnN0IGNoYXIgKiphcmd2ID0gKGNvbnN0IGNoYXIgKiopIGF2OwogCWNvbnN0IGNoYXIgKmNtZDsKIAogCXN0YXJ0dXBfaW5mbyA9ICZnaXRfc3RhcnR1cF9pbmZvOwpkaWZmIC0tZ2l0IGEvZ2l0LnJjIGIvZ2l0LnJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZTZkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9naXQucmMKQEAgLTAsMCArMSwyMiBAQAorMSBWRVJTSU9OSU5GTworRklMRVZFUlNJT04gICAgIE1BSk9SLE1JTk9SLFBBVENILDAKK1BST0RVQ1RWRVJTSU9OICBNQUpPUixNSU5PUixQQVRDSCwwCitCRUdJTgorICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgIEJFR0lOCisgICAgQkxPQ0sgIjA0MDkwNGIwIiAgIC8qIExBTkdfRU5HTElTSC9TVUJMQU5HX0VOR0xJU0hfVVMsIFVuaWNvZGUgQ1AgKi8KKyAgICBCRUdJTgorICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlRoZSBHaXQgRGV2ZWxvcG1lbnQgQ29tbXVuaXR5XDAiCisgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIkdpdCBmb3IgV2luZG93c1wwIgorICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJnaXRcMCIKKyAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgImdpdC5leGVcMCIKKyAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJHaXRcMCIKKyAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIEdJVF9WRVJTSU9OICJcMCIKKyAgICBFTkQKKyAgRU5ECisKKyAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICBCRUdJTgorICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4NDA5LCAxMjAwCisgIEVORAorRU5ECmRpZmYgLS1naXQgYS9naXRfcmVtb3RlX2hlbHBlcnMvLmdpdGlnbm9yZSBiL2dpdF9yZW1vdGVfaGVscGVycy8uZ2l0aWdub3JlCmluZGV4IDIyNDdkNWYuLmNmMDQwYWYgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy8uZ2l0aWdub3JlCisrKyBiL2dpdF9yZW1vdGVfaGVscGVycy8uZ2l0aWdub3JlCkBAIC0xLDIgKzEsMyBAQAorL0dJVC1QWVRIT04tVkVSU0lPTgogL2J1aWxkCiAvZGlzdApkaWZmIC0tZ2l0IGEvZ2l0X3JlbW90ZV9oZWxwZXJzL01ha2VmaWxlIGIvZ2l0X3JlbW90ZV9oZWxwZXJzL01ha2VmaWxlCmluZGV4IDc0YjA1ZGMuLjNkMTIyMzIgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9NYWtlZmlsZQorKysgYi9naXRfcmVtb3RlX2hlbHBlcnMvTWFrZWZpbGUKQEAgLTIzLDEwICsyMywxNiBAQAogCiBQWUxJQkRJUj0kKHNoZWxsICQoUFlUSE9OX1BBVEgpIC1jIFwKIAkgImltcG9ydCBzeXM7IFwKLQkgcHJpbnQgJ2xpYi9weXRob24laS4laS9zaXRlLXBhY2thZ2VzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdIikKKwkgcHJpbnQoJ2xpYi9weXRob24laS4laS9zaXRlLXBhY2thZ2VzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKSIpCisKK3B5X3ZlcnNpb249JChzaGVsbCAkKFBZVEhPTl9QQVRIKSAtYyBcCisJJ2ltcG9ydCBzeXM7IHByaW50KCIlaS4laSIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSknKQogCiBhbGw6ICQocHlzZXR1cGZpbGUpCi0JJChRVUlFVCkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSAkKFFVSUVUU0VUVVApIGJ1aWxkCisJJChRVUlFVCl0ZXN0ICIkJChjYXQgR0lULVBZVEhPTi1WRVJTSU9OIDI+L2Rldi9udWxsKSIgPSAiJChweV92ZXJzaW9uKSIgfHwgXAorCWZsYWdzPS0tZm9yY2U7IFwKKwkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSAkKFFVSUVUU0VUVVApIGJ1aWxkICQkZmxhZ3MKKwkkKFFVSUVUKWVjaG8gIiQocHlfdmVyc2lvbikiID5HSVQtUFlUSE9OLVZFUlNJT04KIAogaW5zdGFsbDogJChweXNldHVwZmlsZSkKIAkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSBpbnN0YWxsIC0tcHJlZml4ICQoREVTVERJUl9TUSkkKHByZWZpeCkKQEAgLTM2LDQgKzQyLDQgQEAKIAogY2xlYW46CiAJJChRVUlFVCkkKFBZVEhPTl9QQVRIKSAkKHB5c2V0dXBmaWxlKSAkKFFVSUVUU0VUVVApIGNsZWFuIC1hCi0JJChSTSkgKi5weW8gKi5weWMKKwkkKFJNKSAqLnB5byAqLnB5YyBHSVQtUFlUSE9OLVZFUlNJT04KZGlmZiAtLWdpdCBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvX19pbml0X18ucHkgYi9naXRfcmVtb3RlX2hlbHBlcnMvZ2l0L19faW5pdF9fLnB5CmluZGV4IGU2OWRlMjkuLjFkYmIxYjAgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvX19pbml0X18ucHkKKysrIGIvZ2l0X3JlbW90ZV9oZWxwZXJzL2dpdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKK2ltcG9ydCBzeXMKK2lmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA0MDAwMDoKKyAgICAjIFRoZSBsaW1pdGVyIGlzIHRoZSBzdWJwcm9jZXNzIG1vZHVsZQorICAgIHN5cy5zdGRlcnIud3JpdGUoImdpdF9yZW1vdGVfaGVscGVyczogcmVxdWlyZXMgUHl0aG9uIDIuNCBvciBsYXRlci5cbiIpCisgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvaW1wb3J0ZXIucHkgYi9naXRfcmVtb3RlX2hlbHBlcnMvZ2l0L2ltcG9ydGVyLnB5CmluZGV4IDVjNmI1OTUuLmQzZjkwZTEgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9naXQvaW1wb3J0ZXIucHkKKysrIGIvZ2l0X3JlbW90ZV9oZWxwZXJzL2dpdC9pbXBvcnRlci5weQpAQCAtMTgsMTMgKzE4LDE2IEBACiAKICAgICBkZWYgZ2V0X3JlZnMoc2VsZiwgZ2l0ZGlyKToKICAgICAgICAgIiIiUmV0dXJucyBhIGRpY3Rpb25hcnkgd2l0aCByZWZzLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUga2V5cyBpbiB0aGUgcmV0dXJuZWQgZGljdGlvbmFyeSBhcmUgYnl0ZSBzdHJpbmdzIGFzCisgICAgICAgIHJlYWQgZnJvbSBnaXQuCiAgICAgICAgICIiIgogICAgICAgICBhcmdzID0gWyJnaXQiLCAiLS1naXQtZGlyPSIgKyBnaXRkaXIsICJmb3ItZWFjaC1yZWYiLCAicmVmcy9oZWFkcyJdCi0gICAgICAgIGxpbmVzID0gY2hlY2tfb3V0cHV0KGFyZ3MpLnN0cmlwKCkuc3BsaXQoJ1xuJykKKyAgICAgICAgbGluZXMgPSBjaGVja19vdXRwdXQoYXJncykuc3RyaXAoKS5zcGxpdCgnXG4nLmVuY29kZSgnYXNjaWknKSkKICAgICAgICAgcmVmcyA9IHt9CiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgdmFsdWUsIG5hbWUgPSBsaW5lLnNwbGl0KCcgJykKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCdjb21taXRcdCcpCisgICAgICAgICAgICB2YWx1ZSwgbmFtZSA9IGxpbmUuc3BsaXQoJyAnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCdjb21taXRcdCcuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgcmVmc1tuYW1lXSA9IHZhbHVlCiAgICAgICAgIHJldHVybiByZWZzCiAKQEAgLTM5LDcgKzQyLDcgQEAKICAgICAgICAgICAgIGdpdGRpciA9IHNlbGYucmVwby5naXRwYXRoCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBnaXRkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGRpcm5hbWUsICcuZ2l0JykpCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGRpcm5hbWUsICdnaXQubWFya3MnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3Rlc3RnaXQubWFya3MnKSkKIAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQpkaWZmIC0tZ2l0IGEvZ2l0X3JlbW90ZV9oZWxwZXJzL3NldHVwLnB5IGIvZ2l0X3JlbW90ZV9oZWxwZXJzL3NldHVwLnB5CmluZGV4IDRkNDM0YjYuLjZkZTQxZGUgMTAwNjQ0Ci0tLSBhL2dpdF9yZW1vdGVfaGVscGVycy9zZXR1cC5weQorKysgYi9naXRfcmVtb3RlX2hlbHBlcnMvc2V0dXAucHkKQEAgLTQsNiArNCwxNSBAQAogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAogCisjIElmIGJ1aWxkaW5nIHVuZGVyIFB5dGhvbjMgd2UgbmVlZCB0byBydW4gMnRvMyBvbiB0aGUgY29kZSwgZG8gdGhpcyBieQorIyB0cnlpbmcgdG8gaW1wb3J0IGRpc3R1dGlscycgMnRvMyBidWlsZGVyLCB3aGljaCBpcyBvbmx5IGF2YWlsYWJsZSBpbgorIyBQeXRob24zLgordHJ5OgorICAgIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfcHkgaW1wb3J0IGJ1aWxkX3B5XzJ0bzMgYXMgYnVpbGRfcHkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIDIueAorICAgIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfcHkgaW1wb3J0IGJ1aWxkX3B5CisKIHNldHVwKAogICAgIG5hbWUgPSAnZ2l0X3JlbW90ZV9oZWxwZXJzJywKICAgICB2ZXJzaW9uID0gJzAuMS4wJywKQEAgLTE0LDQgKzIzLDUgQEAKICAgICB1cmwgPSAnaHR0cDovL3d3dy5naXQtc2NtLmNvbS8nLAogICAgIHBhY2thZ2VfZGlyID0geydnaXRfcmVtb3RlX2hlbHBlcnMnOiAnJ30sCiAgICAgcGFja2FnZXMgPSBbJ2dpdF9yZW1vdGVfaGVscGVycycsICdnaXRfcmVtb3RlX2hlbHBlcnMuZ2l0J10sCisgICAgY21kY2xhc3MgPSB7J2J1aWxkX3B5JzogYnVpbGRfcHl9LAogKQpkaWZmIC0tZ2l0IGEvZ2l0ay1naXQvLmdpdGlnbm9yZSBiL2dpdGstZ2l0Ly5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlYmNhZgotLS0gL2Rldi9udWxsCisrKyBiL2dpdGstZ2l0Ly5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisvR0lULVRDTFRLLVZBUlMKKy9naXRrLXdpc2gKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L01ha2VmaWxlIGIvZ2l0ay1naXQvTWFrZWZpbGUKaW5kZXggZTFiNjA0NS4uNWFjZGM5MCAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvTWFrZWZpbGUKKysrIGIvZ2l0ay1naXQvTWFrZWZpbGUKQEAgLTE3LDYgKzE3LDE2IEBACiBiaW5kaXJfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKGJpbmRpcikpCiBUQ0xUS19QQVRIX1NRID0gJChzdWJzdCAnLCdcJycsJChUQ0xUS19QQVRIKSkKIAorIyMjIERldGVjdCBUY2svVGsgaW50ZXJwcmV0ZXIgcGF0aCBjaGFuZ2VzCitUUkFDS19UQ0xUSyA9ICQoc3Vic3QgJywnXCcnLC1EVENMVEtfUEFUSD0nJChUQ0xUS19QQVRIX1NRKScpCisKK0dJVC1UQ0xUSy1WQVJTOiBGT1JDRQorCUBWQVJTPSckKFRSQUNLX1RDTFRLKSc7IFwKKwkJaWYgdGVzdCB4IiQkVkFSUyIgIT0geCJgY2F0ICRAIDI+L2Rldi9udWxsYCIgOyB0aGVuIFwKKwkJCWVjaG8gMT4mMiAiICAgICogbmV3IFRjbC9UayBpbnRlcnByZXRlciBsb2NhdGlvbiI7IFwKKwkJCWVjaG8gIiQkVkFSUyIgPiRAOyBcCisJCWZpCisKICMjIHBvLWZpbGUgY3JlYXRpb24gcnVsZXMKIFhHRVRURVhUICAgPz0geGdldHRleHQKIGlmZGVmIE5PX01TR0ZNVApAQCAtNDksOSArNTksOSBAQAogCSQoUk0pICckKERFU1RESVJfU1EpJChiaW5kaXJfU1EpJy9naXRrCiAKIGNsZWFuOjoKLQkkKFJNKSBnaXRrLXdpc2ggcG8vKi5tc2cKKwkkKFJNKSBnaXRrLXdpc2ggcG8vKi5tc2cgR0lULVRDTFRLLVZBUlMKIAotZ2l0ay13aXNoOiBnaXRrCitnaXRrLXdpc2g6IGdpdGsgR0lULVRDTFRLLVZBUlMKIAkkKFFVSUVUX0dFTikkKFJNKSAkQCAkQCsgJiYgXAogCXNlZCAtZSAnMSwzc3xeZXhlYyAuKiAiJCQwInxleGVjICQoc3Vic3QgfCwnXHwnLCQoVENMVEtfUEFUSF9TUSkpICIkJDAifCcgPGdpdGsgPiRAKyAmJiBcCiAJY2htb2QgK3ggJEArICYmIFwKQEAgLTY1LDMgKzc1LDUgQEAKIAlAZWNobyBHZW5lcmF0aW5nIGNhdGFsb2cgJEAKIAkkKE1TR0ZNVCkgLS1zdGF0aXN0aWNzIC0tdGNsICQ8IC1sICQoYmFzZW5hbWUgJChub3RkaXIgJDwpKSAtZCAkKGRpciAkQCkKIAorLlBIT05ZOiBhbGwgaW5zdGFsbCB1bmluc3RhbGwgY2xlYW4gdXBkYXRlLXBvCisuUEhPTlk6IEZPUkNFCmRpZmYgLS1naXQgYS9naXRrLWdpdC9naXRrIGIvZ2l0ay1naXQvZ2l0awppbmRleCBkOTNiZDk5Li41Y2QwMGQ4IDEwMDc1NQotLS0gYS9naXRrLWdpdC9naXRrCisrKyBiL2dpdGstZ2l0L2dpdGsKQEAgLTE5OTgsNiArMTk5OCw5IEBACiAgICAgcmV0dXJuIFtzdHJpbmcgbWFwIHsmJiAmICYge319IFttYyAkc3RyXV0KIH0KIAorcHJvYyBjbGVhcmRyb3BzZWwge3d9IHsKKyAgICAkdyBzZWxlY3Rpb24gY2xlYXIKK30KIHByb2MgbWFrZWRyb3BsaXN0IHt3IHZhcm5hbWUgYXJnc30gewogICAgIGdsb2JhbCB1c2VfdHRrCiAgICAgaWYgeyR1c2VfdHRrfSB7CkBAIC0yMDA3LDcgKzIwMTAsOSBAQAogICAgICAgICAgICAgaWYgeyRjeCA+ICR3aWR0aH0ge3NldCB3aWR0aCAkY3h9CiAgICAgICAgIH0KIAlzZXQgZ20gW3R0azo6Y29tYm9ib3ggJHcgLXdpZHRoICR3aWR0aCAtc3RhdGUgcmVhZG9ubHlcCi0JCSAgICAtdGV4dHZhcmlhYmxlICR2YXJuYW1lIC12YWx1ZXMgJGFyZ3NdCisJCSAgICAtdGV4dHZhcmlhYmxlICR2YXJuYW1lIC12YWx1ZXMgJGFyZ3MgXAorCQkgICAgLWV4cG9ydHNlbGVjdGlvbiBmYWxzZV0KKwliaW5kICRnbSA8PENvbWJvYm94U2VsZWN0ZWQ+PiBbbGlzdCAkZ20gc2VsZWN0aW9uIGNsZWFyXQogICAgIH0gZWxzZSB7CiAJc2V0IGdtIFtldmFsIFtsaW5zZXJ0ICRhcmdzIDAgdGtfb3B0aW9uTWVudSAkdyAkdmFybmFtZV1dCiAgICAgfQpAQCAtMjAyNiw2ICsyMDMxLDkgQEAKICAgICBnbG9iYWwgaGlnaGxpZ2h0X2ZpbGVzIGdkdHR5cGUKICAgICBnbG9iYWwgc2VhcmNoc3RyaW5nIHNzdHJpbmcKICAgICBnbG9iYWwgYmdjb2xvciBmZ2NvbG9yIGJnbGlzdCBmZ2xpc3QgZGlmZmNvbG9ycyBzZWxlY3RiZ2NvbG9yCisgICAgZ2xvYmFsIHVpZmdjb2xvciB1aWZnZGlzYWJsZWRjb2xvcgorICAgIGdsb2JhbCBmaWxlc2VwYmdjb2xvciBmaWxlc2VwZmdjb2xvcgorICAgIGdsb2JhbCBtZXJnZWNvbG9ycyBmb3VuZGJnY29sb3IgY3VycmVudHNlYXJjaGhpdGJnY29sb3IKICAgICBnbG9iYWwgaGVhZGN0eG1lbnUgcHJvZ3Jlc3NjYW52IHByb2dyZXNzaXRlbSBwcm9ncmVzc2Nvb3JkcyBzdGF0dXN3CiAgICAgZ2xvYmFsIGZwcm9naXRlbSBmcHJvZ2Nvb3JkIGxhc3Rwcm9ndXBkYXRlIHByb2d1cGRhdGVwZW5kaW5nCiAgICAgZ2xvYmFsIHJwcm9naXRlbSBycHJvZ2Nvb3JkIHJvd251bXNlbCBudW1jb21taXRzCkBAIC0yMTYxLDcgKzIxNjksNyBAQAogICAgIHRyYWNlIGFkZCB2YXJpYWJsZSBzaGExc3RyaW5nIHdyaXRlIHNoYTFjaGFuZ2UKICAgICBwYWNrICRzaGExZW50cnkgLXNpZGUgbGVmdCAtcGFkeSAyCiAKLSAgICBpbWFnZSBjcmVhdGUgYml0bWFwIGJtLWxlZnQgLWRhdGEgeworICAgIHNldCBibV9sZWZ0X2RhdGEgewogCSNkZWZpbmUgbGVmdF93aWR0aCAxNgogCSNkZWZpbmUgbGVmdF9oZWlnaHQgMTYKIAlzdGF0aWMgdW5zaWduZWQgY2hhciBsZWZ0X2JpdHNbXSA9IHsKQEAgLTIxNjksNyArMjE3Nyw3IEBACiAJMHgwZSwgMHgwMCwgMHhmZiwgMHg3ZiwgMHhmZiwgMHg3ZiwgMHhmZiwgMHg3ZiwgMHgwZSwgMHgwMCwgMHgxYywgMHgwMCwKIAkweDM4LCAweDAwLCAweDcwLCAweDAwLCAweGUwLCAweDAwLCAweGMwLCAweDAxfTsKICAgICB9Ci0gICAgaW1hZ2UgY3JlYXRlIGJpdG1hcCBibS1yaWdodCAtZGF0YSB7CisgICAgc2V0IGJtX3JpZ2h0X2RhdGEgewogCSNkZWZpbmUgcmlnaHRfd2lkdGggMTYKIAkjZGVmaW5lIHJpZ2h0X2hlaWdodCAxNgogCXN0YXRpYyB1bnNpZ25lZCBjaGFyIHJpZ2h0X2JpdHNbXSA9IHsKQEAgLTIxNzcsMTEgKzIxODUsMjQgQEAKIAkweDAwLCAweDM4LCAweGZmLCAweDdmLCAweGZmLCAweDdmLCAweGZmLCAweDdmLCAweDAwLCAweDM4LCAweDAwLCAweDFjLAogCTB4MDAsIDB4MGUsIDB4MDAsIDB4MDcsIDB4ODAsIDB4MDMsIDB4YzAsIDB4MDF9OwogICAgIH0KLSAgICAke05TfTo6YnV0dG9uIC50Zi5iYXIubGVmdGJ1dCAtaW1hZ2UgYm0tbGVmdCAtY29tbWFuZCBnb2JhY2sgXAotCS1zdGF0ZSBkaXNhYmxlZCAtd2lkdGggMjYKKyAgICBpbWFnZSBjcmVhdGUgYml0bWFwIGJtLWxlZnQgLWRhdGEgJGJtX2xlZnRfZGF0YSAtZm9yZWdyb3VuZCAkdWlmZ2NvbG9yCisgICAgaW1hZ2UgY3JlYXRlIGJpdG1hcCBibS1sZWZ0LWdyYXkgLWRhdGEgJGJtX2xlZnRfZGF0YSAtZm9yZWdyb3VuZCAkdWlmZ2Rpc2FibGVkY29sb3IKKyAgICBpbWFnZSBjcmVhdGUgYml0bWFwIGJtLXJpZ2h0IC1kYXRhICRibV9yaWdodF9kYXRhIC1mb3JlZ3JvdW5kICR1aWZnY29sb3IKKyAgICBpbWFnZSBjcmVhdGUgYml0bWFwIGJtLXJpZ2h0LWdyYXkgLWRhdGEgJGJtX3JpZ2h0X2RhdGEgLWZvcmVncm91bmQgJHVpZmdkaXNhYmxlZGNvbG9yCisKKyAgICAke05TfTo6YnV0dG9uIC50Zi5iYXIubGVmdGJ1dCAtY29tbWFuZCBnb2JhY2sgLXN0YXRlIGRpc2FibGVkIC13aWR0aCAyNgorICAgIGlmIHskdXNlX3R0a30geworCS50Zi5iYXIubGVmdGJ1dCBjb25maWd1cmUgLWltYWdlIFtsaXN0IGJtLWxlZnQgZGlzYWJsZWQgYm0tbGVmdC1ncmF5XQorICAgIH0gZWxzZSB7CisJLnRmLmJhci5sZWZ0YnV0IGNvbmZpZ3VyZSAtaW1hZ2UgYm0tbGVmdAorICAgIH0KICAgICBwYWNrIC50Zi5iYXIubGVmdGJ1dCAtc2lkZSBsZWZ0IC1maWxsIHkKLSAgICAke05TfTo6YnV0dG9uIC50Zi5iYXIucmlnaHRidXQgLWltYWdlIGJtLXJpZ2h0IC1jb21tYW5kIGdvZm9ydyBcCi0JLXN0YXRlIGRpc2FibGVkIC13aWR0aCAyNgorICAgICR7TlN9OjpidXR0b24gLnRmLmJhci5yaWdodGJ1dCAtY29tbWFuZCBnb2ZvcncgLXN0YXRlIGRpc2FibGVkIC13aWR0aCAyNgorICAgIGlmIHskdXNlX3R0a30geworCS50Zi5iYXIucmlnaHRidXQgY29uZmlndXJlIC1pbWFnZSBbbGlzdCBibS1yaWdodCBkaXNhYmxlZCBibS1yaWdodC1ncmF5XQorICAgIH0gZWxzZSB7CisJLnRmLmJhci5yaWdodGJ1dCBjb25maWd1cmUgLWltYWdlIGJtLXJpZ2h0CisgICAgfQogICAgIHBhY2sgLnRmLmJhci5yaWdodGJ1dCAtc2lkZSBsZWZ0IC1maWxsIHkKIAogICAgICR7TlN9OjpsYWJlbCAudGYuYmFyLnJvd2xhYmVsIC10ZXh0IFttYyAiUm93Il0KQEAgLTIyMzIsNyArMjI1Myw4IEBACiAgICAgc2V0IGdtIFttYWtlZHJvcGxpc3QgLnRmLmxiYXIuZ2R0dHlwZSBnZHR0eXBlIFwKIAkJW21jICJjb250YWluaW5nOiJdIFwKIAkJW21jICJ0b3VjaGluZyBwYXRoczoiXSBcCi0JCVttYyAiYWRkaW5nL3JlbW92aW5nIHN0cmluZzoiXV0KKwkJW21jICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiJdIFwKKwkJW21jICJjaGFuZ2luZyBsaW5lcyBtYXRjaGluZzoiXV0KICAgICB0cmFjZSBhZGQgdmFyaWFibGUgZ2R0dHlwZSB3cml0ZSBnZHR0eXBlX2NoYW5nZQogICAgIHBhY2sgLnRmLmxiYXIuZ2R0dHlwZSAtc2lkZSBsZWZ0IC1maWxsIHkKIApAQCAtMjMzNiwzMSArMjM1OCwzMyBAQAogICAgIGxhcHBlbmQgZmdsaXN0ICRjdGV4dAogCiAgICAgJGN0ZXh0IHRhZyBjb25mIGNvbW1lbnQgLXdyYXAgJHdyYXBjb21tZW50Ci0gICAgJGN0ZXh0IHRhZyBjb25mIGZpbGVzZXAgLWZvbnQgdGV4dGZvbnRib2xkIC1iYWNrICIjYWFhYWFhIgorICAgICRjdGV4dCB0YWcgY29uZiBmaWxlc2VwIC1mb250IHRleHRmb250Ym9sZCAtZm9yZSAkZmlsZXNlcGZnY29sb3IgLWJhY2sgJGZpbGVzZXBiZ2NvbG9yCiAgICAgJGN0ZXh0IHRhZyBjb25mIGh1bmtzZXAgLWZvcmUgW2xpbmRleCAkZGlmZmNvbG9ycyAyXQogICAgICRjdGV4dCB0YWcgY29uZiBkMCAtZm9yZSBbbGluZGV4ICRkaWZmY29sb3JzIDBdCiAgICAgJGN0ZXh0IHRhZyBjb25mIGRyZXN1bHQgLWZvcmUgW2xpbmRleCAkZGlmZmNvbG9ycyAxXQotICAgICRjdGV4dCB0YWcgY29uZiBtMCAtZm9yZSByZWQKLSAgICAkY3RleHQgdGFnIGNvbmYgbTEgLWZvcmUgYmx1ZQotICAgICRjdGV4dCB0YWcgY29uZiBtMiAtZm9yZSBncmVlbgotICAgICRjdGV4dCB0YWcgY29uZiBtMyAtZm9yZSBwdXJwbGUKLSAgICAkY3RleHQgdGFnIGNvbmYgbTQgLWZvcmUgYnJvd24KLSAgICAkY3RleHQgdGFnIGNvbmYgbTUgLWZvcmUgIiMwMDkwOTAiCi0gICAgJGN0ZXh0IHRhZyBjb25mIG02IC1mb3JlIG1hZ2VudGEKLSAgICAkY3RleHQgdGFnIGNvbmYgbTcgLWZvcmUgIiM4MDgwMDAiCi0gICAgJGN0ZXh0IHRhZyBjb25mIG04IC1mb3JlICIjMDA5MDAwIgotICAgICRjdGV4dCB0YWcgY29uZiBtOSAtZm9yZSAiI2ZmMDA4MCIKLSAgICAkY3RleHQgdGFnIGNvbmYgbTEwIC1mb3JlIGN5YW4KLSAgICAkY3RleHQgdGFnIGNvbmYgbTExIC1mb3JlICIjYjA3MDcwIgotICAgICRjdGV4dCB0YWcgY29uZiBtMTIgLWZvcmUgIiM3MGIwZjAiCi0gICAgJGN0ZXh0IHRhZyBjb25mIG0xMyAtZm9yZSAiIzcwZjBiMCIKLSAgICAkY3RleHQgdGFnIGNvbmYgbTE0IC1mb3JlICIjZjBiMDcwIgotICAgICRjdGV4dCB0YWcgY29uZiBtMTUgLWZvcmUgIiNmZjcwYjAiCisgICAgJGN0ZXh0IHRhZyBjb25mIG0wIC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDBdCisgICAgJGN0ZXh0IHRhZyBjb25mIG0xIC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDFdCisgICAgJGN0ZXh0IHRhZyBjb25mIG0yIC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDJdCisgICAgJGN0ZXh0IHRhZyBjb25mIG0zIC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDNdCisgICAgJGN0ZXh0IHRhZyBjb25mIG00IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDRdCisgICAgJGN0ZXh0IHRhZyBjb25mIG01IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDVdCisgICAgJGN0ZXh0IHRhZyBjb25mIG02IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDZdCisgICAgJGN0ZXh0IHRhZyBjb25mIG03IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDddCisgICAgJGN0ZXh0IHRhZyBjb25mIG04IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDhdCisgICAgJGN0ZXh0IHRhZyBjb25mIG05IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDldCisgICAgJGN0ZXh0IHRhZyBjb25mIG0xMCAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAxMF0KKyAgICAkY3RleHQgdGFnIGNvbmYgbTExIC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDExXQorICAgICRjdGV4dCB0YWcgY29uZiBtMTIgLWZvcmUgW2xpbmRleCAkbWVyZ2Vjb2xvcnMgMTJdCisgICAgJGN0ZXh0IHRhZyBjb25mIG0xMyAtZm9yZSBbbGluZGV4ICRtZXJnZWNvbG9ycyAxM10KKyAgICAkY3RleHQgdGFnIGNvbmYgbTE0IC1mb3JlIFtsaW5kZXggJG1lcmdlY29sb3JzIDE0XQorICAgICRjdGV4dCB0YWcgY29uZiBtMTUgLWZvcmUgW2xpbmRleCAkbWVyZ2Vjb2xvcnMgMTVdCiAgICAgJGN0ZXh0IHRhZyBjb25mIG1tYXggLWZvcmUgZGFya2dyZXkKICAgICBzZXQgbWVyZ2VtYXggMTYKICAgICAkY3RleHQgdGFnIGNvbmYgbXJlc3VsdCAtZm9udCB0ZXh0Zm9udGJvbGQKICAgICAkY3RleHQgdGFnIGNvbmYgbXNlcCAtZm9udCB0ZXh0Zm9udGJvbGQKLSAgICAkY3RleHQgdGFnIGNvbmYgZm91bmQgLWJhY2sgeWVsbG93CisgICAgJGN0ZXh0IHRhZyBjb25mIGZvdW5kIC1iYWNrICRmb3VuZGJnY29sb3IKKyAgICAkY3RleHQgdGFnIGNvbmYgY3VycmVudHNlYXJjaGhpdCAtYmFjayAkY3VycmVudHNlYXJjaGhpdGJnY29sb3IKKyAgICAkY3RleHQgdGFnIGNvbmYgd3dyYXAgLXdyYXAgd29yZAogCiAgICAgLnB3Ym90dG9tIGFkZCAuYmxlZnQKICAgICBpZiB7ISR1c2VfdHRrfSB7CkBAIC0yNDk1LDEwICsyNTE5LDkgQEAKICAgICBiaW5ka2V5ID8ge2RvZmluZCAtMSAxfQogICAgIGJpbmRrZXkgZiBuZXh0ZmlsZQogICAgIGJpbmQgLiA8RjU+IHVwZGF0ZWNvbW1pdHMKLSAgICBiaW5kIC4gPFNoaWZ0LUY1PiByZWxvYWRjb21taXRzCisgICAgYmluZG1vZGZ1bmN0aW9ua2V5IFNoaWZ0IDUgcmVsb2FkY29tbWl0cwogICAgIGJpbmQgLiA8RjI+IHNob3dyZWZzCi0gICAgYmluZCAuIDxTaGlmdC1GND4ge25ld3ZpZXcgMH0KLSAgICBjYXRjaCB7IGJpbmQgLiA8U2hpZnQtS2V5LVhGODZfU3dpdGNoX1ZUXzQ+IHtuZXd2aWV3IDB9IH0KKyAgICBiaW5kbW9kZnVuY3Rpb25rZXkgU2hpZnQgNCB7bmV3dmlldyAwfQogICAgIGJpbmQgLiA8RjQ+IGVkaXRfb3JfbmV3dmlldwogICAgIGJpbmQgLiA8JE0xQi1xPiBkb3F1aXQKICAgICBiaW5kIC4gPCRNMUItZj4ge2RvZmluZCAxIDF9CkBAIC0yNTIzLDYgKzI1NDYsNyBAQAogICAgIGJpbmQgJGNmbGlzdCAkY3R4YnV0IHtwb3BfZmxpc3RfbWVudSAlVyAlWCAlWSAleCAleX0KICAgICBiaW5kICRjdGV4dCAkY3R4YnV0IHtwb3BfZGlmZl9tZW51ICVXICVYICVZICV4ICV5fQogICAgIGJpbmQgJGN0ZXh0IDxCdXR0b24tMT4ge2ZvY3VzICVXfQorICAgIGJpbmQgJGN0ZXh0IDw8U2VsZWN0aW9uPj4gcmVoaWdobGlnaHRfc2VhcmNoX3Jlc3VsdHMKIAogICAgIHNldCBtYWluY3Vyc29yIFsuIGNnZXQgLWN1cnNvcl0KICAgICBzZXQgdGV4dGN1cnNvciBbJGN0ZXh0IGNnZXQgLWN1cnNvcl0KQEAgLTI1NDQsNiArMjU2OCw3IEBACiAJe21jICJDb21wYXJlIHdpdGggbWFya2VkIGNvbW1pdCIgY29tbWFuZCBjb21wYXJlX2NvbW1pdHN9CiAJe21jICJEaWZmIHRoaXMgLT4gbWFya2VkIGNvbW1pdCIgY29tbWFuZCB7ZGlmZnZzbWFyayAwfX0KIAl7bWMgIkRpZmYgbWFya2VkIGNvbW1pdCAtPiB0aGlzIiBjb21tYW5kIHtkaWZmdnNtYXJrIDF9fQorCXttYyAiUmV2ZXJ0IHRoaXMgY29tbWl0IiBjb21tYW5kIHJldmVydH0KICAgICB9CiAgICAgJHJvd2N0eG1lbnUgY29uZmlndXJlIC10ZWFyb2ZmIDAKIApAQCAtMjY0Niw2ICsyNjcxLDExIEBACiAgICAgfQogfQogCitwcm9jIGJpbmRtb2RmdW5jdGlvbmtleSB7bW9kIG4gc2NyaXB0fSB7CisgICAgYmluZCAuIDwkbW9kLUYkbj4gJHNjcmlwdAorICAgIGNhdGNoIHsgYmluZCAuIDwkbW9kLVhGODZfU3dpdGNoX1ZUXyRuPiAkc2NyaXB0IH0KK30KKwogIyBzZXQgdGhlIGZvY3VzIGJhY2sgdG8gdGhlIHRvcGxldmVsIGZvciBhbnkgY2xpY2sgb3V0c2lkZQogIyB0aGUgZW50cnkgd2lkZ2V0cwogcHJvYyBjbGljayB7d30gewpAQCAtMjcwMSw4ICsyNzMxLDE2IEBACiAgICAgZ2xvYmFsIHZpZXduYW1lIHZpZXdmaWxlcyB2aWV3YXJncyB2aWV3YXJnc2NtZCB2aWV3cGVybSBuZXh0dmlld251bQogICAgIGdsb2JhbCBjbWl0bW9kZSB3cmFwY29tbWVudCBkYXRldGltZWZvcm1hdCBsaW1pdGRpZmZzCiAgICAgZ2xvYmFsIGNvbG9ycyB1aWNvbG9yIGJnY29sb3IgZmdjb2xvciBkaWZmY29sb3JzIGRpZmZjb250ZXh0IHNlbGVjdGJnY29sb3IKKyAgICBnbG9iYWwgdWlmZ2NvbG9yIHVpZmdkaXNhYmxlZGNvbG9yCisgICAgZ2xvYmFsIGhlYWRiZ2NvbG9yIGhlYWRmZ2NvbG9yIGhlYWRvdXRsaW5lY29sb3IgcmVtb3RlYmdjb2xvcgorICAgIGdsb2JhbCB0YWdiZ2NvbG9yIHRhZ2ZnY29sb3IgdGFnb3V0bGluZWNvbG9yCisgICAgZ2xvYmFsIHJlZmxpbmVjb2xvciBmaWxlc2VwYmdjb2xvciBmaWxlc2VwZmdjb2xvcgorICAgIGdsb2JhbCBtZXJnZWNvbG9ycyBmb3VuZGJnY29sb3IgY3VycmVudHNlYXJjaGhpdGJnY29sb3IKKyAgICBnbG9iYWwgbGluZWhvdmVyYmdjb2xvciBsaW5laG92ZXJmZ2NvbG9yIGxpbmVob3Zlcm91dGxpbmVjb2xvciBjaXJjbGVjb2xvcnMKKyAgICBnbG9iYWwgbWFpbmhlYWRjaXJjbGVjb2xvciB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciBpbmRleGNpcmNsZWNvbG9yCisgICAgZ2xvYmFsIGxpbmtmZ2NvbG9yIGNpcmNsZW91dGxpbmVjb2xvcgogICAgIGdsb2JhbCBhdXRvc2VsZWN0IGF1dG9zZWxsZW4gZXh0ZGlmZnRvb2wgcGVyZmlsZV9hdHRycyBtYXJrYmdjb2xvciB1c2VfdHRrCi0gICAgZ2xvYmFsIGhpZGVyZW1vdGVzIHdhbnRfdHRrCisgICAgZ2xvYmFsIGhpZGVyZW1vdGVzIHdhbnRfdHRrIG1heHJlZnMKIAogICAgIGlmIHskc3R1ZmZzYXZlZH0gcmV0dXJuCiAgICAgaWYgeyFbd2luZm8gdmlld2FibGUgLl19IHJldHVybgpAQCAtMjcyNCw2ICsyNzYyLDcgQEAKIAlwdXRzICRmIFtsaXN0IHNldCBhdXRvc2VsZWN0ICRhdXRvc2VsZWN0XQogCXB1dHMgJGYgW2xpc3Qgc2V0IGF1dG9zZWxsZW4gJGF1dG9zZWxsZW5dCiAJcHV0cyAkZiBbbGlzdCBzZXQgc2hvd25lYXJ0YWdzICRzaG93bmVhcnRhZ3NdCisJcHV0cyAkZiBbbGlzdCBzZXQgbWF4cmVmcyAkbWF4cmVmc10KIAlwdXRzICRmIFtsaXN0IHNldCBoaWRlcmVtb3RlcyAkaGlkZXJlbW90ZXNdCiAJcHV0cyAkZiBbbGlzdCBzZXQgc2hvd2xvY2FsY2hhbmdlcyAkc2hvd2xvY2FsY2hhbmdlc10KIAlwdXRzICRmIFtsaXN0IHNldCBkYXRldGltZWZvcm1hdCAkZGF0ZXRpbWVmb3JtYXRdCkBAIC0yNzMyLDEzICsyNzcxLDM3IEBACiAJcHV0cyAkZiBbbGlzdCBzZXQgd2FudF90dGsgJHdhbnRfdHRrXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGJnY29sb3IgJGJnY29sb3JdCiAJcHV0cyAkZiBbbGlzdCBzZXQgZmdjb2xvciAkZmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB1aWZnY29sb3IgJHVpZmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB1aWZnZGlzYWJsZWRjb2xvciAkdWlmZ2Rpc2FibGVkY29sb3JdCiAJcHV0cyAkZiBbbGlzdCBzZXQgY29sb3JzICRjb2xvcnNdCiAJcHV0cyAkZiBbbGlzdCBzZXQgZGlmZmNvbG9ycyAkZGlmZmNvbG9yc10KKwlwdXRzICRmIFtsaXN0IHNldCBtZXJnZWNvbG9ycyAkbWVyZ2Vjb2xvcnNdCiAJcHV0cyAkZiBbbGlzdCBzZXQgbWFya2JnY29sb3IgJG1hcmtiZ2NvbG9yXQogCXB1dHMgJGYgW2xpc3Qgc2V0IGRpZmZjb250ZXh0ICRkaWZmY29udGV4dF0KIAlwdXRzICRmIFtsaXN0IHNldCBzZWxlY3RiZ2NvbG9yICRzZWxlY3RiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGZvdW5kYmdjb2xvciAkZm91bmRiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGN1cnJlbnRzZWFyY2hoaXRiZ2NvbG9yICRjdXJyZW50c2VhcmNoaGl0Ymdjb2xvcl0KIAlwdXRzICRmIFtsaXN0IHNldCBleHRkaWZmdG9vbCAkZXh0ZGlmZnRvb2xdCiAJcHV0cyAkZiBbbGlzdCBzZXQgcGVyZmlsZV9hdHRycyAkcGVyZmlsZV9hdHRyc10KKwlwdXRzICRmIFtsaXN0IHNldCBoZWFkYmdjb2xvciAkaGVhZGJnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgaGVhZGZnY29sb3IgJGhlYWRmZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGhlYWRvdXRsaW5lY29sb3IgJGhlYWRvdXRsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgcmVtb3RlYmdjb2xvciAkcmVtb3RlYmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB0YWdiZ2NvbG9yICR0YWdiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IHRhZ2ZnY29sb3IgJHRhZ2ZnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgdGFnb3V0bGluZWNvbG9yICR0YWdvdXRsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgcmVmbGluZWNvbG9yICRyZWZsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgZmlsZXNlcGJnY29sb3IgJGZpbGVzZXBiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGZpbGVzZXBmZ2NvbG9yICRmaWxlc2VwZmdjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCBsaW5laG92ZXJiZ2NvbG9yICRsaW5laG92ZXJiZ2NvbG9yXQorCXB1dHMgJGYgW2xpc3Qgc2V0IGxpbmVob3ZlcmZnY29sb3IgJGxpbmVob3ZlcmZnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgbGluZWhvdmVyb3V0bGluZWNvbG9yICRsaW5laG92ZXJvdXRsaW5lY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgbWFpbmhlYWRjaXJjbGVjb2xvciAkbWFpbmhlYWRjaXJjbGVjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciAkd29ya2luZ2ZpbGVzY2lyY2xlY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgaW5kZXhjaXJjbGVjb2xvciAkaW5kZXhjaXJjbGVjb2xvcl0KKwlwdXRzICRmIFtsaXN0IHNldCBjaXJjbGVjb2xvcnMgJGNpcmNsZWNvbG9yc10KKwlwdXRzICRmIFtsaXN0IHNldCBsaW5rZmdjb2xvciAkbGlua2ZnY29sb3JdCisJcHV0cyAkZiBbbGlzdCBzZXQgY2lyY2xlb3V0bGluZWNvbG9yICRjaXJjbGVvdXRsaW5lY29sb3JdCiAKIAlwdXRzICRmICJzZXQgZ2VvbWV0cnkobWFpbikgW3dtIGdlb21ldHJ5IC5dIgogCXB1dHMgJGYgInNldCBnZW9tZXRyeShzdGF0ZSkgW3dtIHN0YXRlIC5dIgpAQCAtMzMwOSw2ICszMzcyLDcgQEAKICAgICB9IGVsc2UgewogCWNhdGNoIHskY3RleHQgeXZpZXcgW2xpbmRleCAkZGlmZmZpbGVzdGFydCBbZXhwciB7JGwgLSAyfV1dfQogICAgIH0KKyAgICBzdXBwcmVzc19oaWdobGlnaHRpbmdfZmlsZV9mb3JfY3VycmVudF9zY3JvbGxwb3MKIH0KIAogcHJvYyBwb3BfZmxpc3RfbWVudSB7dyBYIFkgeCB5fSB7CkBAIC00NTk1LDYgKzQ2NTksOCBAQAogCXNldCBnZHRhcmdzIFtjb25jYXQgLS0gJHJlbGF0aXZlX3BhdGhzXQogICAgIH0gZWxzZWlmIHskZ2R0dHlwZSBlcSBbbWMgImFkZGluZy9yZW1vdmluZyBzdHJpbmc6Il19IHsKIAlzZXQgZ2R0YXJncyBbbGlzdCAiLVMkaGlnaGxpZ2h0X2ZpbGVzIl0KKyAgICB9IGVsc2VpZiB7JGdkdHR5cGUgZXEgW21jICJjaGFuZ2luZyBsaW5lcyBtYXRjaGluZzoiXX0geworCXNldCBnZHRhcmdzIFtsaXN0ICItRyRoaWdobGlnaHRfZmlsZXMiXQogICAgIH0gZWxzZSB7CiAJIyBtdXN0IGJlICJjb250YWluaW5nOiIsIGkuZS4gd2UncmUgc2VhcmNoaW5nIGNvbW1pdCBpbmZvCiAJcmV0dXJuCkBAIC01OTAzLDE1ICs1OTY5LDE3IEBACiAgICAgZ2xvYmFsIGxpbmVodGFnIGxpbmVudGFnIGxpbmVkdGFnIHNlbGVjdGVkbGluZQogICAgIGdsb2JhbCBjYW52eG1heCBib2xkaWRzIGJvbGRuYW1laWRzIGZnY29sb3IgbWFya2VkaWQKICAgICBnbG9iYWwgbWFpbmhlYWRpZCBudWxsaWQgbnVsbGlkMiBjaXJjbGVpdGVtIGNpcmNsZWNvbG9ycyBjdHhidXQKKyAgICBnbG9iYWwgbWFpbmhlYWRjaXJjbGVjb2xvciB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciBpbmRleGNpcmNsZWNvbG9yCisgICAgZ2xvYmFsIGNpcmNsZW91dGxpbmVjb2xvcgogCiAgICAgIyBsaXN0ZWQgaXMgMCBmb3IgYm91bmRhcnksIDEgZm9yIG5vcm1hbCwgMiBmb3IgbmVnYXRpdmUsIDMgZm9yIGxlZnQsIDQgZm9yIHJpZ2h0CiAgICAgc2V0IGxpc3RlZCAkY21pdGxpc3RlZCgkY3VydmlldywkaWQpCiAgICAgaWYgeyRpZCBlcSAkbnVsbGlkfSB7Ci0Jc2V0IG9maWxsIHJlZAorCXNldCBvZmlsbCAkd29ya2luZ2ZpbGVzY2lyY2xlY29sb3IKICAgICB9IGVsc2VpZiB7JGlkIGVxICRudWxsaWQyfSB7Ci0Jc2V0IG9maWxsIGdyZWVuCisJc2V0IG9maWxsICRpbmRleGNpcmNsZWNvbG9yCiAgICAgfSBlbHNlaWYgeyRpZCBlcSAkbWFpbmhlYWRpZH0gewotCXNldCBvZmlsbCB5ZWxsb3cKKwlzZXQgb2ZpbGwgJG1haW5oZWFkY2lyY2xlY29sb3IKICAgICB9IGVsc2UgewogCXNldCBvZmlsbCBbbGluZGV4ICRjaXJjbGVjb2xvcnMgJGxpc3RlZF0KICAgICB9CkBAIC01OTIxLDIxICs1OTg5LDIxIEBACiAgICAgaWYgeyRsaXN0ZWQgPD0gMn0gewogCXNldCB0IFskY2FudiBjcmVhdGUgb3ZhbCBbZXhwciB7JHggLSAkb3JhZH1dIFtleHByIHskeSAtICRvcmFkfV0gXAogCQkgICBbZXhwciB7JHggKyAkb3JhZCAtIDF9XSBbZXhwciB7JHkgKyAkb3JhZCAtIDF9XSBcCi0JCSAgIC1maWxsICRvZmlsbCAtb3V0bGluZSAkZmdjb2xvciAtd2lkdGggMSAtdGFncyBjaXJjbGVdCisJCSAgIC1maWxsICRvZmlsbCAtb3V0bGluZSAkY2lyY2xlb3V0bGluZWNvbG9yIC13aWR0aCAxIC10YWdzIGNpcmNsZV0KICAgICB9IGVsc2VpZiB7JGxpc3RlZCA9PSAzfSB7CiAJIyB0cmlhbmdsZSBwb2ludGluZyBsZWZ0IGZvciBsZWZ0LXNpZGUgY29tbWl0cwogCXNldCB0IFskY2FudiBjcmVhdGUgcG9seWdvbiBcCiAJCSAgIFtleHByIHskeCAtICRvcmFkfV0gJHkgXAogCQkgICBbZXhwciB7JHggKyAkb3JhZCAtIDF9XSBbZXhwciB7JHkgLSAkb3JhZH1dIFwKIAkJICAgW2V4cHIgeyR4ICsgJG9yYWQgLSAxfV0gW2V4cHIgeyR5ICsgJG9yYWQgLSAxfV0gXAotCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGZnY29sb3IgLXdpZHRoIDEgLXRhZ3MgY2lyY2xlXQorCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGNpcmNsZW91dGxpbmVjb2xvciAtd2lkdGggMSAtdGFncyBjaXJjbGVdCiAgICAgfSBlbHNlIHsKIAkjIHRyaWFuZ2xlIHBvaW50aW5nIHJpZ2h0IGZvciByaWdodC1zaWRlIGNvbW1pdHMKIAlzZXQgdCBbJGNhbnYgY3JlYXRlIHBvbHlnb24gXAogCQkgICBbZXhwciB7JHggKyAkb3JhZCAtIDF9XSAkeSBcCiAJCSAgIFtleHByIHskeCAtICRvcmFkfV0gW2V4cHIgeyR5IC0gJG9yYWR9XSBcCiAJCSAgIFtleHByIHskeCAtICRvcmFkfV0gW2V4cHIgeyR5ICsgJG9yYWQgLSAxfV0gXAotCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGZnY29sb3IgLXdpZHRoIDEgLXRhZ3MgY2lyY2xlXQorCQkgICAtZmlsbCAkb2ZpbGwgLW91dGxpbmUgJGNpcmNsZW91dGxpbmVjb2xvciAtd2lkdGggMSAtdGFncyBjaXJjbGVdCiAgICAgfQogICAgIHNldCBjaXJjbGVpdGVtKCRyb3cpICR0CiAgICAgJGNhbnYgcmFpc2UgJHQKQEAgLTYzMjMsNiArNjM5MSw5IEBACiAgICAgZ2xvYmFsIGlkdGFncyBpZGhlYWRzIGlkb3RoZXJyZWZzIG1haW5oZWFkCiAgICAgZ2xvYmFsIGxpbmVzcGMgbHRoaWNrbmVzcwogICAgIGdsb2JhbCBjYW52IHJvd3RleHR4IGN1cnZpZXcgZmdjb2xvciBiZ2NvbG9yIGN0eGJ1dAorICAgIGdsb2JhbCBoZWFkYmdjb2xvciBoZWFkZmdjb2xvciBoZWFkb3V0bGluZWNvbG9yIHJlbW90ZWJnY29sb3IKKyAgICBnbG9iYWwgdGFnYmdjb2xvciB0YWdmZ2NvbG9yIHRhZ291dGxpbmVjb2xvcgorICAgIGdsb2JhbCByZWZsaW5lY29sb3IKIAogICAgIHNldCBtYXJrcyB7fQogICAgIHNldCBudGFncyAwCkBAIC02MzYwLDcgKzY0MzEsNyBAQAogCXNldCB4dCBbZXhwciB7JHh0ICsgJGRlbHRhICsgJHdpZCArICRsdGhpY2tuZXNzICsgJGxpbmVzcGN9XQogICAgIH0KICAgICBzZXQgdCBbJGNhbnYgY3JlYXRlIGxpbmUgJHggJHkxIFtsaW5kZXggJHh2YWxzIGVuZF0gJHkxIFwKLQkgICAgICAgLXdpZHRoICRsdGhpY2tuZXNzIC1maWxsIGJsYWNrIC10YWdzIHRhZy4kaWRdCisJICAgICAgIC13aWR0aCAkbHRoaWNrbmVzcyAtZmlsbCAkcmVmbGluZWNvbG9yIC10YWdzIHRhZy4kaWRdCiAgICAgJGNhbnYgbG93ZXIgJHQKICAgICBmb3JlYWNoIHRhZyAkbWFya3MgeCAkeHZhbHMgd2lkICR3dmFscyB7CiAJc2V0IHRhZ19xdW90ZWQgW3N0cmluZyBtYXAgeyUgJSV9ICR0YWddCkBAIC02MzcxLDEzICs2NDQyLDE0IEBACiAJICAgICMgZHJhdyBhIHRhZwogCSAgICBzZXQgdCBbJGNhbnYgY3JlYXRlIHBvbHlnb24gJHggW2V4cHIgeyR5dCArICRkZWx0YX1dICR4bCAkeXQgXAogCQkgICAgICAgJHhyICR5dCAkeHIgJHliICR4bCAkeWIgJHggW2V4cHIgeyR5YiAtICRkZWx0YX1dIFwKLQkJICAgICAgIC13aWR0aCAxIC1vdXRsaW5lIGJsYWNrIC1maWxsIHllbGxvdyAtdGFncyB0YWcuJGlkXQorCQkgICAgICAgLXdpZHRoIDEgLW91dGxpbmUgJHRhZ291dGxpbmVjb2xvciAtZmlsbCAkdGFnYmdjb2xvciBcCisJCSAgICAgICAtdGFncyB0YWcuJGlkXQogCSAgICAkY2FudiBiaW5kICR0IDwxPiBbbGlzdCBzaG93dGFnICR0YWdfcXVvdGVkIDFdCiAJICAgIHNldCByb3d0ZXh0eChbcm93b2Zjb21taXQgJGlkXSkgW2V4cHIgeyR4ciArICRsaW5lc3BjfV0KIAl9IGVsc2UgewogCSAgICAjIGRyYXcgYSBoZWFkIG9yIG90aGVyIHJlZgogCSAgICBpZiB7W2luY3IgbmhlYWRzIC0xXSA+PSAwfSB7Ci0JCXNldCBjb2wgZ3JlZW4KKwkJc2V0IGNvbCAkaGVhZGJnY29sb3IKIAkJaWYgeyR0YWcgZXEgJG1haW5oZWFkfSB7CiAJCSAgICBzZXQgZm9udCBtYWluZm9udGJvbGQKIAkJfQpAQCAtNjM5MywxMCArNjQ2NSwxMCBAQAogCQlzZXQgeXRpIFtleHByIHskeXQgKyAxfV0KIAkJc2V0IHhyaSBbZXhwciB7JHggKyAkcndpZH1dCiAJCSRjYW52IGNyZWF0ZSBwb2x5Z29uICR4aSAkeXRpICR4cmkgJHl0aSAkeHJpICR5YiAkeGkgJHliIFwKLQkJCS13aWR0aCAwIC1maWxsICIjZmZkZGFhIiAtdGFncyB0YWcuJGlkCisJCQktd2lkdGggMCAtZmlsbCAkcmVtb3RlYmdjb2xvciAtdGFncyB0YWcuJGlkCiAJICAgIH0KIAl9Ci0Jc2V0IHQgWyRjYW52IGNyZWF0ZSB0ZXh0ICR4bCAkeTEgLWFuY2hvciB3IC10ZXh0ICR0YWcgLWZpbGwgJGZnY29sb3IgXAorCXNldCB0IFskY2FudiBjcmVhdGUgdGV4dCAkeGwgJHkxIC1hbmNob3IgdyAtdGV4dCAkdGFnIC1maWxsICRoZWFkZmdjb2xvciBcCiAJCSAgIC1mb250ICRmb250IC10YWdzIFtsaXN0IHRhZy4kaWQgdGV4dF1dCiAJaWYgeyRudGFncyA+PSAwfSB7CiAJICAgICRjYW52IGJpbmQgJHQgPDE+IFtsaXN0IHNob3d0YWcgJHRhZ19xdW90ZWQgMV0KQEAgLTY3NzcsNiArNjg0OSw3IEBACiAKIHByb2Mgc2V0bGluayB7aWQgbGt9IHsKICAgICBnbG9iYWwgY3VydmlldyBjdGV4dCBwZW5kaW5nbGlua3MKKyAgICBnbG9iYWwgbGlua2ZnY29sb3IKIAogICAgIGlmIHtbc3RyaW5nIHJhbmdlICRpZCAwIDFdIGVxICItZyJ9IHsKICAgICAgIHNldCBpZCBbc3RyaW5nIHJhbmdlICRpZCAyIGVuZF0KQEAgLTY3OTQsNyArNjg2Nyw3IEBACiAJc2V0IGtub3duIFtjb21taXRpbnZpZXcgJGlkICRjdXJ2aWV3XQogICAgIH0KICAgICBpZiB7JGtub3dufSB7Ci0JJGN0ZXh0IHRhZyBjb25mICRsayAtZm9yZWdyb3VuZCBibHVlIC11bmRlcmxpbmUgMQorCSRjdGV4dCB0YWcgY29uZiAkbGsgLWZvcmVncm91bmQgJGxpbmtmZ2NvbG9yIC11bmRlcmxpbmUgMQogCSRjdGV4dCB0YWcgYmluZCAkbGsgPDE+IFtsaXN0IHNlbGJ5aWQgJGlkXQogCSRjdGV4dCB0YWcgYmluZCAkbGsgPEVudGVyPiB7bGlua2N1cnNvciAlVyAxfQogCSRjdGV4dCB0YWcgYmluZCAkbGsgPExlYXZlPiB7bGlua2N1cnNvciAlVyAtMX0KQEAgLTY4NTcsNyArNjkzMCw3IEBACiAjIGFkZCBhIGxpc3Qgb2YgdGFnIG9yIGJyYW5jaCBuYW1lcyBhdCBwb3NpdGlvbiBwb3MKICMgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5hbWVzIGluc2VydGVkCiBwcm9jIGFwcGVuZHJlZnMge3BvcyBpZHMgdmFyfSB7Ci0gICAgZ2xvYmFsIGN0ZXh0IGxpbmtudW0gY3VydmlldyAkdmFyIG1heHJlZnMKKyAgICBnbG9iYWwgY3RleHQgbGlua251bSBjdXJ2aWV3ICR2YXIgbWF4cmVmcyBtYWluaGVhZGlkCiAKICAgICBpZiB7W2NhdGNoIHskY3RleHQgaW5kZXggJHBvc31dfSB7CiAJcmV0dXJuIDAKQEAgLTY4NzAsMjQgKzY5NDMsNTQgQEAKIAkgICAgbGFwcGVuZCB0YWdzIFtsaXN0ICR0YWcgJGlkXQogCX0KICAgICB9CisKKyAgICBzZXQgc2VwIHt9CisgICAgc2V0IHRhZ3MgW2xzb3J0IC1pbmRleCAwIC1kZWNyZWFzaW5nICR0YWdzXQorICAgIHNldCBudXRhZ3MgMAorCiAgICAgaWYge1tsbGVuZ3RoICR0YWdzXSA+ICRtYXhyZWZzfSB7Ci0JJGN0ZXh0IGluc2VydCAkcG9zICJbbWMgIm1hbnkiXSAoW2xsZW5ndGggJHRhZ3NdKSIKLSAgICB9IGVsc2UgewotCXNldCB0YWdzIFtsc29ydCAtaW5kZXggMCAtZGVjcmVhc2luZyAkdGFnc10KLQlzZXQgc2VwIHt9Ci0JZm9yZWFjaCB0aSAkdGFncyB7Ci0JICAgIHNldCBpZCBbbGluZGV4ICR0aSAxXQotCSAgICBzZXQgbGsgbGluayRsaW5rbnVtCi0JICAgIGluY3IgbGlua251bQotCSAgICAkY3RleHQgdGFnIGRlbGV0ZSAkbGsKLQkgICAgJGN0ZXh0IGluc2VydCAkcG9zICRzZXAKLQkgICAgJGN0ZXh0IGluc2VydCAkcG9zIFtsaW5kZXggJHRpIDBdICRsawotCSAgICBzZXRsaW5rICRpZCAkbGsKLQkgICAgc2V0IHNlcCAiLCAiCisJIyBJZiB3ZSBhcmUgZGlzcGxheWluZyBoZWFkcywgYW5kIHRoZXJlIGFyZSB0b28gbWFueSwKKwkjIHNlZSBpZiB0aGVyZSBhcmUgc29tZSBpbXBvcnRhbnQgaGVhZHMgdG8gZGlzcGxheS4KKwkjIEN1cnJlbnRseSB0aGlzIG1lYW5zICJtYXN0ZXIiIGFuZCB0aGUgY3VycmVudCBoZWFkLgorCXNldCBpdGFncyB7fQorCWlmIHskdmFyIGVxICJpZGhlYWRzIn0geworCSAgICBzZXQgdXRhZ3Mge30KKwkgICAgZm9yZWFjaCB0aSAkdGFncyB7CisJCXNldCBobmFtZSBbbGluZGV4ICR0aSAwXQorCQlzZXQgaWQgW2xpbmRleCAkdGkgMV0KKwkJaWYgeygkaG5hbWUgZXEgIm1hc3RlciIgfHwgJGlkIGVxICRtYWluaGVhZGlkKSAmJgorCQkgICAgW2xsZW5ndGggJGl0YWdzXSA8ICRtYXhyZWZzfSB7CisJCSAgICBsYXBwZW5kIGl0YWdzICR0aQorCQl9IGVsc2UgeworCQkgICAgbGFwcGVuZCB1dGFncyAkdGkKKwkJfQorCSAgICB9CisJICAgIHNldCB0YWdzICR1dGFncwogCX0KKwlpZiB7JGl0YWdzIG5lIHt9fSB7CisJICAgIHNldCBzdHIgW21jICJhbmQgbWFueSBtb3JlIl0KKwkgICAgc2V0IHNlcCAiICIKKwl9IGVsc2UgeworCSAgICBzZXQgc3RyIFttYyAibWFueSJdCisJfQorCSRjdGV4dCBpbnNlcnQgJHBvcyAiJHN0ciAoW2xsZW5ndGggJHRhZ3NdKSIKKwlzZXQgbnV0YWdzIFtsbGVuZ3RoICR0YWdzXQorCXNldCB0YWdzICRpdGFncwogICAgIH0KKworICAgIGZvcmVhY2ggdGkgJHRhZ3MgeworCXNldCBpZCBbbGluZGV4ICR0aSAxXQorCXNldCBsayBsaW5rJGxpbmtudW0KKwlpbmNyIGxpbmtudW0KKwkkY3RleHQgdGFnIGRlbGV0ZSAkbGsKKwkkY3RleHQgaW5zZXJ0ICRwb3MgJHNlcAorCSRjdGV4dCBpbnNlcnQgJHBvcyBbbGluZGV4ICR0aSAwXSAkbGsKKwlzZXRsaW5rICRpZCAkbGsKKwlzZXQgc2VwICIsICIKKyAgICB9CisgICAgJGN0ZXh0IHRhZyBhZGQgd3dyYXAgIiRwb3MgbGluZXN0YXJ0IiAiJHBvcyBsaW5lZW5kIgogICAgICRjdGV4dCBjb25mIC1zdGF0ZSBkaXNhYmxlZAotICAgIHJldHVybiBbbGxlbmd0aCAkdGFnc10KKyAgICByZXR1cm4gW2V4cHIge1tsbGVuZ3RoICR0YWdzXSArICRudXRhZ3N9XQogfQogCiAjIGNhbGxlZCB3aGVuIHdlIGhhdmUgZmluaXNoZWQgY29tcHV0aW5nIHRoZSBuZWFyYnkgdGFncwpAQCAtNzUxOSw5ICs3NjIyLDEzIEBACiB9CiAKIHByb2MgZ2V0dHJlZWRpZmZzIHtpZHN9IHsKLSAgICBnbG9iYWwgdHJlZWRpZmYgdHJlZXBlbmRpbmcKKyAgICBnbG9iYWwgdHJlZWRpZmYgdHJlZXBlbmRpbmcgbGltaXRkaWZmcyB2ZmlsZWxpbWl0IGN1cnZpZXcKIAotICAgIGlmIHtbY2F0Y2gge3NldCBnZHRmIFtvcGVuIFtkaWZmY21kICRpZHMgey0tbm8tY29tbWl0LWlkfV0gcl19XX0gcmV0dXJuCisgICAgc2V0IGNtZCBbZGlmZmNtZCAkaWRzIHstLW5vLWNvbW1pdC1pZH1dCisgICAgaWYgeyRsaW1pdGRpZmZzICYmICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSBuZSB7fX0geworCSAgICBzZXQgY21kIFtjb25jYXQgJGNtZCAtLSAkdmZpbGVsaW1pdCgkY3VydmlldyldCisgICAgfQorICAgIGlmIHtbY2F0Y2gge3NldCBnZHRmIFtvcGVuICRjbWQgcl19XX0gcmV0dXJuCiAKICAgICBzZXQgdHJlZXBlbmRpbmcgJGlkcwogICAgIHNldCB0cmVlZGlmZiB7fQpAQCAtNzU2NSwxNyArNzY3Miw3IEBACiAJcmV0dXJuIFtleHByIHskbnIgPj0gJG1heD8gMjogMX1dCiAgICAgfQogICAgIGNsb3NlICRnZHRmCi0gICAgaWYgeyRsaW1pdGRpZmZzICYmICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSBuZSB7fX0gewotCXNldCBmbGlzdCB7fQotCWZvcmVhY2ggZiAkdHJlZWRpZmYgewotCSAgICBpZiB7W3BhdGhfZmlsdGVyICR2ZmlsZWxpbWl0KCRjdXJ2aWV3KSAkZl19IHsKLQkJbGFwcGVuZCBmbGlzdCAkZgotCSAgICB9Ci0JfQotCXNldCB0cmVlZGlmZnMoJGlkcykgJGZsaXN0Ci0gICAgfSBlbHNlIHsKLQlzZXQgdHJlZWRpZmZzKCRpZHMpICR0cmVlZGlmZgotICAgIH0KKyAgICBzZXQgdHJlZWRpZmZzKCRpZHMpICR0cmVlZGlmZgogICAgIHVuc2V0IHRyZWVwZW5kaW5nCiAgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSIgJiYgW2xsZW5ndGggJGRpZmZpZHNdID09IDF9IHsKIAlnZXR0cmVlICRkaWZmaWRzCkBAIC03OTQ3LDMyICs4MDQ0LDQ1IEBACiAgICAgJGN0ZXh0IHRhZyBjb25mIGRyZXN1bHQgLWVsaWRlIFtsaW5kZXggJGRpZmZlbGlkZSAxXQogfQogCi1wcm9jIGhpZ2hsaWdodGZpbGUge2xvYyBjbGluZX0gewotICAgIGdsb2JhbCBjdGV4dCBjZmxpc3QgY2ZsaXN0X3RvcAorcHJvYyBoaWdobGlnaHRmaWxlIHtjbGluZX0geworICAgIGdsb2JhbCBjZmxpc3QgY2ZsaXN0X3RvcAogCi0gICAgJGN0ZXh0IHl2aWV3ICRsb2MKKyAgICBpZiB7IVtpbmZvIGV4aXN0cyBjZmxpc3RfdG9wXX0gcmV0dXJuCisKICAgICAkY2ZsaXN0IHRhZyByZW1vdmUgaGlnaGxpZ2h0ICRjZmxpc3RfdG9wLjAgIiRjZmxpc3RfdG9wLjAgbGluZWVuZCIKICAgICAkY2ZsaXN0IHRhZyBhZGQgaGlnaGxpZ2h0ICRjbGluZS4wICIkY2xpbmUuMCBsaW5lZW5kIgogICAgICRjZmxpc3Qgc2VlICRjbGluZS4wCiAgICAgc2V0IGNmbGlzdF90b3AgJGNsaW5lCiB9CiAKK3Byb2MgaGlnaGxpZ2h0ZmlsZV9mb3Jfc2Nyb2xscG9zIHt0b3BpZHh9IHsKKyAgICBnbG9iYWwgY21pdG1vZGUgZGlmZmZpbGVzdGFydAorCisgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHJldHVybgorICAgIGlmIHshW2luZm8gZXhpc3RzIGRpZmZmaWxlc3RhcnRdfSByZXR1cm4KKworICAgIHNldCB0b3AgW2xpbmRleCBbc3BsaXQgJHRvcGlkeCAuXSAwXQorICAgIGlmIHskZGlmZmZpbGVzdGFydCBlcSB7fSB8fCAkdG9wIDwgW2xpbmRleCAkZGlmZmZpbGVzdGFydCAwXX0geworCWhpZ2hsaWdodGZpbGUgMAorICAgIH0gZWxzZSB7CisJaGlnaGxpZ2h0ZmlsZSBbZXhwciB7W2JzZWFyY2ggJGRpZmZmaWxlc3RhcnQgJHRvcF0gKyAyfV0KKyAgICB9Cit9CisKIHByb2MgcHJldmZpbGUge30gewogICAgIGdsb2JhbCBkaWZmZmlsZXN0YXJ0IGN0ZXh0IGNtaXRtb2RlCiAKICAgICBpZiB7JGNtaXRtb2RlIGVxICJ0cmVlIn0gcmV0dXJuCiAgICAgc2V0IHByZXYgMC4wCi0gICAgc2V0IHByZXZsaW5lIDEKICAgICBzZXQgaGVyZSBbJGN0ZXh0IGluZGV4IEAwLDBdCiAgICAgZm9yZWFjaCBsb2MgJGRpZmZmaWxlc3RhcnQgewogCWlmIHtbJGN0ZXh0IGNvbXBhcmUgJGxvYyA+PSAkaGVyZV19IHsKLQkgICAgaGlnaGxpZ2h0ZmlsZSAkcHJldiAkcHJldmxpbmUKKwkgICAgJGN0ZXh0IHl2aWV3ICRwcmV2CiAJICAgIHJldHVybgogCX0KIAlzZXQgcHJldiAkbG9jCi0JaW5jciBwcmV2bGluZQogICAgIH0KLSAgICBoaWdobGlnaHRmaWxlICRwcmV2ICRwcmV2bGluZQorICAgICRjdGV4dCB5dmlldyAkcHJldgogfQogCiBwcm9jIG5leHRmaWxlIHt9IHsKQEAgLTc5ODAsMTEgKzgwOTAsOSBAQAogCiAgICAgaWYgeyRjbWl0bW9kZSBlcSAidHJlZSJ9IHJldHVybgogICAgIHNldCBoZXJlIFskY3RleHQgaW5kZXggQDAsMF0KLSAgICBzZXQgbGluZSAxCiAgICAgZm9yZWFjaCBsb2MgJGRpZmZmaWxlc3RhcnQgewotCWluY3IgbGluZQogCWlmIHtbJGN0ZXh0IGNvbXBhcmUgJGxvYyA+ICRoZXJlXX0gewotCSAgICBoaWdobGlnaHRmaWxlICRsb2MgJGxpbmUKKwkgICAgJGN0ZXh0IHl2aWV3ICRsb2MKIAkgICAgcmV0dXJuCiAJfQogICAgIH0KQEAgLTgwMzAsNyArODEzOCw2IEBACiBwcm9jIGluY3JzZWFyY2gge25hbWUgaXggb3B9IHsKICAgICBnbG9iYWwgY3RleHQgc2VhcmNoc3RyaW5nIHNlYXJjaGRpcm4KIAotICAgICRjdGV4dCB0YWcgcmVtb3ZlIGZvdW5kIDEuMCBlbmQKICAgICBpZiB7W2NhdGNoIHskY3RleHQgaW5kZXggYW5jaG9yfV19IHsKIAkjIG5vIGFuY2hvciBzZXQsIHVzZSBzdGFydCBvZiBzZWxlY3Rpb24sIG9yIG9mIHZpc2libGUgYXJlYQogCXNldCBzZWwgWyRjdGV4dCB0YWcgcmFuZ2VzIHNlbF0KQEAgLTgwNDMsMTIgKzgxNTAsMTcgQEAKIAl9CiAgICAgfQogICAgIGlmIHskc2VhcmNoc3RyaW5nIG5lIHt9fSB7Ci0Jc2V0IGhlcmUgWyRjdGV4dCBzZWFyY2ggJHNlYXJjaGRpcm4gLS0gJHNlYXJjaHN0cmluZyBhbmNob3JdCisJc2V0IGhlcmUgWyRjdGV4dCBzZWFyY2ggLWNvdW50IG1sZW4gJHNlYXJjaGRpcm4gLS0gJHNlYXJjaHN0cmluZyBhbmNob3JdCiAJaWYgeyRoZXJlIG5lIHt9fSB7CiAJICAgICRjdGV4dCBzZWUgJGhlcmUKKwkgICAgc2V0IG1lbmQgIiRoZXJlICsgJG1sZW4gYyIKKwkgICAgJGN0ZXh0IHRhZyByZW1vdmUgc2VsIDEuMCBlbmQKKwkgICAgJGN0ZXh0IHRhZyBhZGQgc2VsICRoZXJlICRtZW5kCisJICAgIHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl9jdXJyZW50X3Njcm9sbHBvcworCSAgICBoaWdobGlnaHRmaWxlX2Zvcl9zY3JvbGxwb3MgJGhlcmUKIAl9Ci0Jc2VhcmNobWFya3Zpc2libGUgMQogICAgIH0KKyAgICByZWhpZ2hsaWdodF9zZWFyY2hfcmVzdWx0cwogfQogCiBwcm9jIGRvc2VhcmNoIHt9IHsKQEAgLTgwNzEsOSArODE4MywxMiBAQAogCSAgICByZXR1cm4KIAl9CiAJJGN0ZXh0IHNlZSAkbWF0Y2gKKwlzdXBwcmVzc19oaWdobGlnaHRpbmdfZmlsZV9mb3JfY3VycmVudF9zY3JvbGxwb3MKKwloaWdobGlnaHRmaWxlX2Zvcl9zY3JvbGxwb3MgJG1hdGNoCiAJc2V0IG1lbmQgIiRtYXRjaCArICRtbGVuIGMiCiAJJGN0ZXh0IHRhZyBhZGQgc2VsICRtYXRjaCAkbWVuZAogCSRjdGV4dCBtYXJrIHVuc2V0IGFuY2hvcgorCXJlaGlnaGxpZ2h0X3NlYXJjaF9yZXN1bHRzCiAgICAgfQogfQogCkBAIC04MDk3LDIxICs4MjEyLDQxIEBACiAJICAgIHJldHVybgogCX0KIAkkY3RleHQgc2VlICRtYXRjaAorCXN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl9jdXJyZW50X3Njcm9sbHBvcworCWhpZ2hsaWdodGZpbGVfZm9yX3Njcm9sbHBvcyAkbWF0Y2gKIAlzZXQgbWVuZCAiJG1hdGNoICsgJG1sIGMiCiAJJGN0ZXh0IHRhZyBhZGQgc2VsICRtYXRjaCAkbWVuZAogCSRjdGV4dCBtYXJrIHVuc2V0IGFuY2hvcgorCXJlaGlnaGxpZ2h0X3NlYXJjaF9yZXN1bHRzCisgICAgfQorfQorCitwcm9jIHJlaGlnaGxpZ2h0X3NlYXJjaF9yZXN1bHRzIHt9IHsKKyAgICBnbG9iYWwgY3RleHQgc2VhcmNoc3RyaW5nCisKKyAgICAkY3RleHQgdGFnIHJlbW92ZSBmb3VuZCAxLjAgZW5kCisgICAgJGN0ZXh0IHRhZyByZW1vdmUgY3VycmVudHNlYXJjaGhpdCAxLjAgZW5kCisKKyAgICBpZiB7JHNlYXJjaHN0cmluZyBuZSB7fX0geworCXNlYXJjaG1hcmt2aXNpYmxlIDEKICAgICB9CiB9CiAKIHByb2Mgc2VhcmNobWFyayB7Zmlyc3QgbGFzdH0gewogICAgIGdsb2JhbCBjdGV4dCBzZWFyY2hzdHJpbmcKIAorICAgIHNldCBzZWwgWyRjdGV4dCB0YWcgcmFuZ2VzIHNlbF0KKwogICAgIHNldCBtZW5kICRmaXJzdC4wCiAgICAgd2hpbGUgezF9IHsKIAlzZXQgbWF0Y2ggWyRjdGV4dCBzZWFyY2ggLWNvdW50IG1sZW4gLS0gJHNlYXJjaHN0cmluZyAkbWVuZCAkbGFzdC5lbmRdCiAJaWYgeyRtYXRjaCBlcSB7fX0gYnJlYWsKIAlzZXQgbWVuZCAiJG1hdGNoICsgJG1sZW4gYyIKLQkkY3RleHQgdGFnIGFkZCBmb3VuZCAkbWF0Y2ggJG1lbmQKKwlpZiB7JHNlbCBuZSB7fSAmJiBbJGN0ZXh0IGNvbXBhcmUgJG1hdGNoID09IFtsaW5kZXggJHNlbCAwXV19IHsKKwkgICAgJGN0ZXh0IHRhZyBhZGQgY3VycmVudHNlYXJjaGhpdCAkbWF0Y2ggJG1lbmQKKwl9IGVsc2UgeworCSAgICAkY3RleHQgdGFnIGFkZCBmb3VuZCAkbWF0Y2ggJG1lbmQKKwl9CiAgICAgfQogfQogCkBAIC04MTM3LDggKzgyNzIsMjMgQEAKICAgICB9CiB9CiAKK3Byb2Mgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX2N1cnJlbnRfc2Nyb2xscG9zIHt9IHsKKyAgICBnbG9iYWwgY3RleHQgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX3RoaXNfc2Nyb2xscG9zCisKKyAgICBzZXQgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX3RoaXNfc2Nyb2xscG9zIFskY3RleHQgaW5kZXggQDAsMF0KK30KKwogcHJvYyBzY3JvbGx0ZXh0IHtmMCBmMX0gewotICAgIGdsb2JhbCBzZWFyY2hzdHJpbmcKKyAgICBnbG9iYWwgc2VhcmNoc3RyaW5nIGNtaXRtb2RlIGN0ZXh0CisgICAgZ2xvYmFsIHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl90aGlzX3Njcm9sbHBvcworCisgICAgc2V0IHRvcGlkeCBbJGN0ZXh0IGluZGV4IEAwLDBdCisgICAgaWYgeyFbaW5mbyBleGlzdHMgc3VwcHJlc3NfaGlnaGxpZ2h0aW5nX2ZpbGVfZm9yX3RoaXNfc2Nyb2xscG9zXQorCXx8ICR0b3BpZHggbmUgJHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl90aGlzX3Njcm9sbHBvc30geworCWhpZ2hsaWdodGZpbGVfZm9yX3Njcm9sbHBvcyAkdG9waWR4CisgICAgfQorCisgICAgY2F0Y2gge3Vuc2V0IHN1cHByZXNzX2hpZ2hsaWdodGluZ19maWxlX2Zvcl90aGlzX3Njcm9sbHBvc30KIAogICAgIC5ibGVmdC5ib3R0b20uc2Igc2V0ICRmMCAkZjEKICAgICBpZiB7JHNlYXJjaHN0cmluZyBuZSB7fX0gewpAQCAtODM1NCw2ICs4NTA0LDggQEAKIHByb2MgbGluZWhvdmVyIHt9IHsKICAgICBnbG9iYWwgaG92ZXJ4IGhvdmVyeSBob3ZlcmlkIGhvdmVydGltZXIKICAgICBnbG9iYWwgY2FudiBsaW5lc3BjIGx0aGlja25lc3MKKyAgICBnbG9iYWwgbGluZWhvdmVyYmdjb2xvciBsaW5laG92ZXJmZ2NvbG9yIGxpbmVob3Zlcm91dGxpbmVjb2xvcgorCiAgICAgZ2xvYmFsIGNvbW1pdGluZm8KIAogICAgIHNldCB0ZXh0IFtsaW5kZXggJGNvbW1pdGluZm8oJGhvdmVyaWQpIDBdCkBAIC04MzY3LDEwICs4NTE5LDExIEBACiAgICAgc2V0IHgxIFtleHByIHskeCArIFtmb250IG1lYXN1cmUgbWFpbmZvbnQgJHRleHRdICsgMiAqICRsdGhpY2tuZXNzfV0KICAgICBzZXQgeTEgW2V4cHIgeyR5ICsgJGxpbmVzcGMgKyAyICogJGx0aGlja25lc3N9XQogICAgIHNldCB0IFskY2FudiBjcmVhdGUgcmVjdGFuZ2xlICR4MCAkeTAgJHgxICR5MSBcCi0JICAgICAgIC1maWxsIFwjZmZmZjgwIC1vdXRsaW5lIGJsYWNrIC13aWR0aCAxIC10YWdzIGhvdmVyXQorCSAgICAgICAtZmlsbCAkbGluZWhvdmVyYmdjb2xvciAtb3V0bGluZSAkbGluZWhvdmVyb3V0bGluZWNvbG9yIFwKKwkgICAgICAgLXdpZHRoIDEgLXRhZ3MgaG92ZXJdCiAgICAgJGNhbnYgcmFpc2UgJHQKICAgICBzZXQgdCBbJGNhbnYgY3JlYXRlIHRleHQgJHggJHkgLWFuY2hvciBudyAtdGV4dCAkdGV4dCAtdGFncyBob3ZlciBcCi0JICAgICAgIC1mb250IG1haW5mb250XQorCSAgICAgICAtZm9udCBtYWluZm9udCAtZmlsbCAkbGluZWhvdmVyZmdjb2xvcl0KICAgICAkY2FudiByYWlzZSAkdAogfQogCkBAIC04OTM0LDEyICs5MDg3LDEzIEBACiBwcm9jIHJlZHJhd3RhZ3Mge2lkfSB7CiAgICAgZ2xvYmFsIGNhbnYgbGluZWh0YWcgaWRwb3MgY3VycmVudGlkIGN1cnZpZXcgY21pdGxpc3RlZCBtYXJrZWRpZAogICAgIGdsb2JhbCBjYW52eG1heCBpZGRyYXduIGNpcmNsZWl0ZW0gbWFpbmhlYWRpZCBjaXJjbGVjb2xvcnMKKyAgICBnbG9iYWwgbWFpbmhlYWRjaXJjbGVjb2xvcgogCiAgICAgaWYgeyFbY29tbWl0aW52aWV3ICRpZCAkY3Vydmlld119IHJldHVybgogICAgIGlmIHshW2luZm8gZXhpc3RzIGlkZHJhd24oJGlkKV19IHJldHVybgogICAgIHNldCByb3cgW3Jvd29mY29tbWl0ICRpZF0KICAgICBpZiB7JGlkIGVxICRtYWluaGVhZGlkfSB7Ci0Jc2V0IG9maWxsIHllbGxvdworCXNldCBvZmlsbCAkbWFpbmhlYWRjaXJjbGVjb2xvcgogICAgIH0gZWxzZSB7CiAJc2V0IG9maWxsIFtsaW5kZXggJGNpcmNsZWNvbG9ycyAkY21pdGxpc3RlZCgkY3VydmlldywkaWQpXQogICAgIH0KQEAgLTkxOTYsNiArOTM1MCw2NyBAQAogICAgIG5vdGJ1c3kgY2hlcnJ5cGljawogfQogCitwcm9jIHJldmVydCB7fSB7CisgICAgZ2xvYmFsIHJvd21lbnVpZCBjdXJ2aWV3CisgICAgZ2xvYmFsIG1haW5oZWFkIG1haW5oZWFkaWQKKyAgICBnbG9iYWwgZ2l0ZGlyCisKKyAgICBzZXQgb2xkaGVhZCBbZXhlYyBnaXQgcmV2LXBhcnNlIEhFQURdCisgICAgc2V0IGRoZWFkcyBbZGVzY2hlYWRzICRyb3dtZW51aWRdCisgICAgaWYgeyAkZGhlYWRzIGVxIHt9IHx8IFtsc2VhcmNoIC1leGFjdCAkZGhlYWRzICRvbGRoZWFkXSA9PSAtMSB9IHsKKyAgICAgICBzZXQgb2sgW2NvbmZpcm1fcG9wdXAgW21jICJDb21taXQgJXMgaXMgbm90XAorICAgICAgICAgICBpbmNsdWRlZCBpbiBicmFuY2ggJXMgLS0gcmVhbGx5IHJldmVydCBpdD8iIFwKKyAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nIHJhbmdlICRyb3dtZW51aWQgMCA3XSAkbWFpbmhlYWRdXQorICAgICAgIGlmIHshJG9rfSByZXR1cm4KKyAgICB9CisgICAgbm93YnVzeSByZXZlcnQgW21jICJSZXZlcnRpbmciXQorICAgIHVwZGF0ZQorCisgICAgaWYgW2NhdGNoIHtleGVjIGdpdCByZXZlcnQgLS1uby1lZGl0ICRyb3dtZW51aWR9IGVycl0geworICAgICAgICBub3RidXN5IHJldmVydAorICAgICAgICBpZiBbcmVnZXhwIHtmaWxlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBtZXJnZTooXG4oKCB8XHQpK1teXG5dK1xuKSspfVwKKyAgICAgICAgICAgICAgICAkZXJyIG1hdGNoIGZpbGVzXSB7CisgICAgICAgICAgICByZWdzdWIge1xuKCB8XHQpK30gJGZpbGVzICJcbiIgZmlsZXMKKyAgICAgICAgICAgIGVycm9yX3BvcHVwIFttYyAiUmV2ZXJ0IGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXMgdG9cCisgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBmaWxlczolcyBQbGVhc2UgY29tbWl0LCByZXNldCBvciBzdGFzaCBcCisgICAgICAgICAgICAgICAgeW91ciBjaGFuZ2VzIGFuZCB0cnkgYWdhaW4uIiAkZmlsZXNdCisgICAgICAgIH0gZWxzZWlmIFtyZWdleHAge2Vycm9yOiBjb3VsZCBub3QgcmV2ZXJ0fSAkZXJyXSB7CisgICAgICAgICAgICBpZiBbY29uZmlybV9wb3B1cCBbbWMgIlJldmVydCBmYWlsZWQgYmVjYXVzZSBvZiBtZXJnZSBjb25mbGljdC5cblwKKyAgICAgICAgICAgICAgICBEbyB5b3Ugd2lzaCB0byBydW4gZ2l0IGNpdG9vbCB0byByZXNvbHZlIGl0PyJdXSB7CisgICAgICAgICAgICAgICAgIyBGb3JjZSBjaXRvb2wgdG8gcmVhZCBNRVJHRV9NU0cKKyAgICAgICAgICAgICAgICBmaWxlIGRlbGV0ZSBbZmlsZSBqb2luICRnaXRkaXIgIkdJVEdVSV9NU0ciXQorICAgICAgICAgICAgICAgIGV4ZWNfY2l0b29sIHt9ICRyb3dtZW51aWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsgZXJyb3JfcG9wdXAgJGVyciB9CisgICAgICAgIHJ1biB1cGRhdGVjb21taXRzCisgICAgICAgIHJldHVybgorICAgIH0KKworICAgIHNldCBuZXdoZWFkIFtleGVjIGdpdCByZXYtcGFyc2UgSEVBRF0KKyAgICBpZiB7ICRuZXdoZWFkIGVxICRvbGRoZWFkIH0geworICAgICAgICBub3RidXN5IHJldmVydAorICAgICAgICBlcnJvcl9wb3B1cCBbbWMgIk5vIGNoYW5nZXMgY29tbWl0dGVkIl0KKyAgICAgICAgcmV0dXJuCisgICAgfQorCisgICAgYWRkbmV3Y2hpbGQgJG5ld2hlYWQgJG9sZGhlYWQKKworICAgIGlmIFtjb21taXRpbnZpZXcgJG9sZGhlYWQgJGN1cnZpZXddIHsKKyAgICAgICAgIyBYWFggdGhpcyBpc24ndCByaWdodCBpZiB3ZSBoYXZlIGEgcGF0aCBsaW1pdC4uLgorICAgICAgICBpbnNlcnRyb3cgJG5ld2hlYWQgJG9sZGhlYWQgJGN1cnZpZXcKKyAgICAgICAgaWYgeyRtYWluaGVhZCBuZSB7fX0geworICAgICAgICAgICAgbW92ZWhlYWQgJG5ld2hlYWQgJG1haW5oZWFkCisgICAgICAgICAgICBtb3ZlZGhlYWQgJG5ld2hlYWQgJG1haW5oZWFkCisgICAgICAgIH0KKyAgICAgICAgc2V0IG1haW5oZWFkaWQgJG5ld2hlYWQKKyAgICAgICAgcmVkcmF3dGFncyAkb2xkaGVhZAorICAgICAgICByZWRyYXd0YWdzICRuZXdoZWFkCisgICAgICAgIHNlbGJ5aWQgJG5ld2hlYWQKKyAgICB9CisKKyAgICBub3RidXN5IHJldmVydAorfQorCiBwcm9jIHJlc2V0aGVhZCB7fSB7CiAgICAgZ2xvYmFsIG1haW5oZWFkIHJvd21lbnVpZCBjb25maXJtX29rIHJlc2V0dHlwZSBOUwogCkBAIC0xMDUwOSwxMyArMTA3MjQsMTMgQEAKICMgaW5jbHVkaW5nIGlkIGl0c2VsZiBpZiBpdCBoYXMgYSBoZWFkLgogcHJvYyBkZXNjaGVhZHMge2lkfSB7CiAgICAgZ2xvYmFsIGFyY25vcyBhcmNzdGFydCBhcmNpZHMgYXJjaGVhZHMgaWRoZWFkcyBjYWNoZWRfZGhlYWRzCi0gICAgZ2xvYmFsIGFsbHBhcmVudHMKKyAgICBnbG9iYWwgYWxscGFyZW50cyBhcmNvdXQKIAogICAgIGlmIHshW2luZm8gZXhpc3RzIGFsbHBhcmVudHMoJGlkKV19IHsKIAlyZXR1cm4ge30KICAgICB9CiAgICAgc2V0IGFyZXQge30KLSAgICBpZiB7W2xsZW5ndGggJGFyY25vcygkaWQpXSA9PSAxICYmIFtsbGVuZ3RoICRhbGxwYXJlbnRzKCRpZCldID09IDF9IHsKKyAgICBpZiB7IVtpbmZvIGV4aXN0cyBhcmNvdXQoJGlkKV19IHsKIAkjIHBhcnQtd2F5IGFsb25nIGFuIGFyYzsgY2hlY2sgaXQgZmlyc3QKIAlzZXQgYSBbbGluZGV4ICRhcmNub3MoJGlkKSAwXQogCWlmIHskYXJjaGVhZHMoJGEpIG5lIHt9fSB7CkBAIC0xMDY3NSw3ICsxMDg5MCw3IEBACiAgICAgc2V0IGxpbmtudW0gMAogICAgIGlmIHshW2luZm8gZXhpc3RzIGNhY2hlZF90YWdjb250ZW50KCR0YWcpXX0gewogCWNhdGNoIHsKLSAgICAgICAgICAgc2V0IGNhY2hlZF90YWdjb250ZW50KCR0YWcpIFtleGVjIGdpdCBjYXQtZmlsZSB0YWcgJHRhZ10KKyAgICAgICAgICAgc2V0IGNhY2hlZF90YWdjb250ZW50KCR0YWcpIFtleGVjIGdpdCBjYXQtZmlsZSAtcCAkdGFnXQogCX0KICAgICB9CiAgICAgaWYge1tpbmZvIGV4aXN0cyBjYWNoZWRfdGFnY29udGVudCgkdGFnKV19IHsKQEAgLTEwODY0LDcgKzExMDc5LDcgQEAKIHByb2MgcHJlZnNwYWdlX2dlbmVyYWwge25vdGVib29rfSB7CiAgICAgZ2xvYmFsIE5TIG1heHdpZHRoIG1heGdyYXBocGN0IHNob3duZWFydGFncyBzaG93bG9jYWxjaGFuZ2VzCiAgICAgZ2xvYmFsIHRhYnN0b3AgbGltaXRkaWZmcyBhdXRvc2VsZWN0IGF1dG9zZWxsZW4gZXh0ZGlmZnRvb2wgcGVyZmlsZV9hdHRycwotICAgIGdsb2JhbCBoaWRlcmVtb3RlcyB3YW50X3R0ayBoYXZlX3R0aworICAgIGdsb2JhbCBoaWRlcmVtb3RlcyB3YW50X3R0ayBoYXZlX3R0ayBtYXhyZWZzCiAKICAgICBzZXQgcGFnZSBbY3JlYXRlX3ByZWZzX3BhZ2UgJG5vdGVib29rLmdlbmVyYWxdCiAKQEAgLTEwODkzLDkgKzExMTA4LDEyIEBACiAgICAgJHtOU306OmxhYmVsICRwYWdlLnRhYnN0b3BsIC10ZXh0IFttYyAiVGFiIHNwYWNpbmciXQogICAgIHNwaW5ib3ggJHBhZ2UudGFic3RvcCAtZnJvbSAxIC10byAyMCAtd2lkdGggNCAtdGV4dHZhcmlhYmxlIHRhYnN0b3AKICAgICBncmlkIHggJHBhZ2UudGFic3RvcGwgJHBhZ2UudGFic3RvcCAtc3RpY2t5IHcKLSAgICAke05TfTo6Y2hlY2tidXR0b24gJHBhZ2UubnRhZyAtdGV4dCBbbWMgIkRpc3BsYXkgbmVhcmJ5IHRhZ3MiXSBcCisgICAgJHtOU306OmNoZWNrYnV0dG9uICRwYWdlLm50YWcgLXRleHQgW21jICJEaXNwbGF5IG5lYXJieSB0YWdzL2hlYWRzIl0gXAogCS12YXJpYWJsZSBzaG93bmVhcnRhZ3MKICAgICBncmlkIHggJHBhZ2UubnRhZyAtc3RpY2t5IHcKKyAgICAke05TfTo6bGFiZWwgJHBhZ2UubWF4cmVmc2wgLXRleHQgW21jICJNYXhpbXVtICMgdGFncy9oZWFkcyB0byBzaG93Il0KKyAgICBzcGluYm94ICRwYWdlLm1heHJlZnMgLWZyb20gMSAtdG8gMTAwMCAtd2lkdGggNCAtdGV4dHZhcmlhYmxlIG1heHJlZnMKKyAgICBncmlkIHggJHBhZ2UubWF4cmVmc2wgJHBhZ2UubWF4cmVmcyAtc3RpY2t5IHcKICAgICAke05TfTo6Y2hlY2tidXR0b24gJHBhZ2UubGRpZmYgLXRleHQgW21jICJMaW1pdCBkaWZmcyB0byBsaXN0ZWQgcGF0aHMiXSBcCiAJLXZhcmlhYmxlIGxpbWl0ZGlmZnMKICAgICBncmlkIHggJHBhZ2UubGRpZmYgLXN0aWNreSB3CkBAIC0xMTUzMyw2ICsxMTc1MSwxNSBAQAogICAgIGV4aXQgMQogfQogCisjIG9uIE9TWCBicmluZyB0aGUgY3VycmVudCBXaXNoIHByb2Nlc3Mgd2luZG93IHRvIGZyb250CitpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEgImFxdWEifSB7CisgICAgZXhlYyBvc2FzY3JpcHQgLWUgW2Zvcm1hdCB7CisgICAgICAgIHRlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiCisgICAgICAgICAgICBzZXQgZnJvbnRtb3N0IG9mIHByb2Nlc3NlcyB3aG9zZSB1bml4IGlkIGlzICVkIHRvIHRydWUKKyAgICAgICAgZW5kIHRlbGwKKyAgICB9IFtwaWRdIF0KK30KKwogIyBVbnNldCBHSVRfVFJBQ0UgdmFyIGlmIHNldAogaWYgeyBbaW5mbyBleGlzdHMgOjplbnYoR0lUX1RSQUNFKV0gfSB7CiAgICAgdW5zZXQgOjplbnYoR0lUX1RSQUNFKQpAQCAtMTE2MjAsMjIgKzExODQ3LDQ3IEBACiBzZXQgY29sb3JzIHtncmVlbiByZWQgYmx1ZSBtYWdlbnRhIGRhcmtncmV5IGJyb3duIG9yYW5nZX0KIGlmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSAid2luMzIifSB7CiAgICAgc2V0IHVpY29sb3IgU3lzdGVtQnV0dG9uRmFjZQorICAgIHNldCB1aWZnY29sb3IgU3lzdGVtQnV0dG9uVGV4dAorICAgIHNldCB1aWZnZGlzYWJsZWRjb2xvciBTeXN0ZW1EaXNhYmxlZFRleHQKICAgICBzZXQgYmdjb2xvciBTeXN0ZW1XaW5kb3cKLSAgICBzZXQgZmdjb2xvciBTeXN0ZW1CdXR0b25UZXh0CisgICAgc2V0IGZnY29sb3IgU3lzdGVtV2luZG93VGV4dAogICAgIHNldCBzZWxlY3RiZ2NvbG9yIFN5c3RlbUhpZ2hsaWdodAogfSBlbHNlIHsKICAgICBzZXQgdWljb2xvciBncmV5ODUKKyAgICBzZXQgdWlmZ2NvbG9yIGJsYWNrCisgICAgc2V0IHVpZmdkaXNhYmxlZGNvbG9yICIjOTk5IgogICAgIHNldCBiZ2NvbG9yIHdoaXRlCiAgICAgc2V0IGZnY29sb3IgYmxhY2sKICAgICBzZXQgc2VsZWN0Ymdjb2xvciBncmF5ODUKIH0KIHNldCBkaWZmY29sb3JzIHtyZWQgIiMwMGEwMDAiIGJsdWV9CiBzZXQgZGlmZmNvbnRleHQgMworc2V0IG1lcmdlY29sb3JzIHtyZWQgYmx1ZSBncmVlbiBwdXJwbGUgYnJvd24gIiMwMDkwOTAiIG1hZ2VudGEgIiM4MDgwMDAiICIjMDA5MDAwIiAiI2ZmMDA4MCIgY3lhbiAiI2IwNzA3MCIgIiM3MGIwZjAiICIjNzBmMGIwIiAiI2YwYjA3MCIgIiNmZjcwYjAifQogc2V0IGlnbm9yZXNwYWNlIDAKIHNldCB3b3JkZGlmZiAiIgogc2V0IG1hcmtiZ2NvbG9yICIjZTBlMGZmIgogCitzZXQgaGVhZGJnY29sb3IgZ3JlZW4KK3NldCBoZWFkZmdjb2xvciBibGFjaworc2V0IGhlYWRvdXRsaW5lY29sb3IgYmxhY2sKK3NldCByZW1vdGViZ2NvbG9yICNmZmRkYWEKK3NldCB0YWdiZ2NvbG9yIHllbGxvdworc2V0IHRhZ2ZnY29sb3IgYmxhY2sKK3NldCB0YWdvdXRsaW5lY29sb3IgYmxhY2sKK3NldCByZWZsaW5lY29sb3IgYmxhY2sKK3NldCBmaWxlc2VwYmdjb2xvciAjYWFhYWFhCitzZXQgZmlsZXNlcGZnY29sb3IgYmxhY2sKK3NldCBsaW5laG92ZXJiZ2NvbG9yICNmZmZmODAKK3NldCBsaW5laG92ZXJmZ2NvbG9yIGJsYWNrCitzZXQgbGluZWhvdmVyb3V0bGluZWNvbG9yIGJsYWNrCitzZXQgbWFpbmhlYWRjaXJjbGVjb2xvciB5ZWxsb3cKK3NldCB3b3JraW5nZmlsZXNjaXJjbGVjb2xvciByZWQKK3NldCBpbmRleGNpcmNsZWNvbG9yIGdyZWVuCiBzZXQgY2lyY2xlY29sb3JzIHt3aGl0ZSBibHVlIGdyYXkgYmx1ZSBibHVlfQorc2V0IGxpbmtmZ2NvbG9yIGJsdWUKK3NldCBjaXJjbGVvdXRsaW5lY29sb3IgJGZnY29sb3IKK3NldCBmb3VuZGJnY29sb3IgeWVsbG93CitzZXQgY3VycmVudHNlYXJjaGhpdGJnY29sb3Igb3JhbmdlCiAKICMgYnV0dG9uIGZvciBwb3BwaW5nIHVwIGNvbnRleHQgbWVudXMKIGlmIHtbdGsgd2luZG93aW5nc3lzdGVtXSBlcSAiYXF1YSJ9IHsKZGlmZiAtLWdpdCBhL2dpdGstZ2l0L3BvL3N2LnBvIGIvZ2l0ay1naXQvcG8vc3YucG8KaW5kZXggMmYwN2EyZS4uZGY5NWUwMSAxMDA2NDQKLS0tIGEvZ2l0ay1naXQvcG8vc3YucG8KKysrIGIvZ2l0ay1naXQvcG8vc3YucG8KQEAgLTEsNDAgKzEsNTAgQEAKICMgU3dlZGlzaCB0cmFuc2xhdGlvbiBmb3IgZ2l0awotIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMCBQYXVsIE1hY2tlcnJhcworIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMyBQYXVsIE1hY2tlcnJhcwogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ2l0ayBwYWNrYWdlLgogIwotIyBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4sIDIwMDgtMjAxMC4KICMgTWlrYWVsIE1hZ251c3NvbiA8bWlrYWNodUBnbWFpbC5jb20+LCAyMDA4LgorIyBQZXRlciBLcmVmdGluZyA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4sIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMuCisjCiBtc2dpZCAiIgogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBzdlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMC0wOS0xMiAyMToxNCswMTAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxMC0wOS0xMiAyMToxNiswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDUtMTYgMDg6MDYrMDEwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMDUtMTYgMDg6MTIrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgorIkxhbmd1YWdlOiBzdlxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCi0iQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdCIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGdpdGs6MTE1CisjOiBnaXRrOjE0MAogbXNnaWQgIkNvdWxkbid0IGdldCBsaXN0IG9mIHVubWVyZ2VkIGZpbGVzOiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBow6RtdGEgbGlzdGEgw7Z2ZXIgZWogc2FtbWFuc2xhZ25hIGZpbGVyOiIKIAotIzogZ2l0azoyNzQKKyM6IGdpdGs6MjEwIGdpdGs6MjMzNAorbXNnaWQgIkNvbG9yIHdvcmRzIgorbXNnc3RyICJGw6RyZ2Egb3JkIgorCisjOiBnaXRrOjIxNSBnaXRrOjIzMzQgZ2l0azo3OTc3IGdpdGs6ODAxMAorbXNnaWQgIk1hcmt1cCB3b3JkcyIKK21zZ3N0ciAiTcOkcmsgdXBwIG9yZCIKKworIzogZ2l0azozMTIKIG1zZ2lkICJFcnJvciBwYXJzaW5nIHJldmlzaW9uczoiCiBtc2dzdHIgIkZlbCB2aWQgdG9sa25pbmcgYXYgcmV2aXNpb25lcjoiCiAKLSM6IGdpdGs6MzMwCisjOiBnaXRrOjM2OAogbXNnaWQgIkVycm9yIGV4ZWN1dGluZyAtLWFyZ3NjbWQgY29tbWFuZDoiCiBtc2dzdHIgIkZlbCB2aWQga8O2cm5pbmcgYXYgLS1hcmdzY21kLWtvbW1hbmRvOiIKIAotIzogZ2l0azozNDMKKyM6IGdpdGs6MzgxCiBtc2dpZCAiTm8gZmlsZXMgc2VsZWN0ZWQ6IC0tbWVyZ2Ugc3BlY2lmaWVkIGJ1dCBubyBmaWxlcyBhcmUgdW5tZXJnZWQuIgogbXNnc3RyICIiCiAiSW5nYSBmaWxlciB2YWxkZXM6IC0tbWVyZ2UgYW5nYXZzIG1lbiBkZXQgZmlubnMgaW5nYSBmaWxlciBzb20gaW50ZSBoYXIgIgogInNsYWdpdHMgc2FtbWFuLiIKIAotIzogZ2l0azozNDYKKyM6IGdpdGs6Mzg0CiBtc2dpZCAiIgogIk5vIGZpbGVzIHNlbGVjdGVkOiAtLW1lcmdlIHNwZWNpZmllZCBidXQgbm8gdW5tZXJnZWQgZmlsZXMgYXJlIHdpdGhpbiBmaWxlICIKICJsaW1pdC4iCkBAIC00Miw2MDUgKzUyLDYyNSBAQAogIkluZ2EgZmlsZXIgdmFsZGVzOiAtLW1lcmdlIGFuZ2F2cyBtZW4gZGV0IGZpbm5zIGluZ2EgZmlsZXIgaW5vbSAiCiAiZmlsYmVncsOkbnNuaW5nZW4uIgogCi0jOiBnaXRrOjM2OCBnaXRrOjUxNgorIzogZ2l0azo0MDYgZ2l0azo1NTQKIG1zZ2lkICJFcnJvciBleGVjdXRpbmcgZ2l0IGxvZzoiCiBtc2dzdHIgIkZlbCB2aWQga8O2cm5pbmcgYXYgZ2l0IGxvZzoiCiAKLSM6IGdpdGs6Mzg2IGdpdGs6NTMyCisjOiBnaXRrOjQyNCBnaXRrOjU3MAogbXNnaWQgIlJlYWRpbmciCiBtc2dzdHIgIkzDpHNlciIKIAotIzogZ2l0azo0NDYgZ2l0azo0MjcxCisjOiBnaXRrOjQ4NCBnaXRrOjQ0MDkKIG1zZ2lkICJSZWFkaW5nIGNvbW1pdHMuLi4iCiBtc2dzdHIgIkzDpHNlciBpbmNoZWNrbmluZ2FyLi4uIgogCi0jOiBnaXRrOjQ0OSBnaXRrOjE1ODAgZ2l0azo0Mjc0CisjOiBnaXRrOjQ4NyBnaXRrOjE2MjUgZ2l0azo0NDEyCiBtc2dpZCAiTm8gY29tbWl0cyBzZWxlY3RlZCIKIG1zZ3N0ciAiSW5nYSBpbmNoZWNrbmluZ2FyIG1hcmtlcmFkZSIKIAotIzogZ2l0azoxNDU2CisjOiBnaXRrOjE0OTkKIG1zZ2lkICJDYW4ndCBwYXJzZSBnaXQgbG9nIG91dHB1dDoiCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHV0ZGF0YSBmcsOlbiBnaXQgbG9nOiIKIAotIzogZ2l0azoxNjc2CisjOiBnaXRrOjE3MTkKIG1zZ2lkICJObyBjb21taXQgaW5mb3JtYXRpb24gYXZhaWxhYmxlIgogbXNnc3RyICJJbmdlbiBpbmNoZWNrbmluZ3NpbmZvcm1hdGlvbiDDpHIgdGlsbGfDpG5nbGlnIgogCi0jOiBnaXRrOjE4MTgKKyM6IGdpdGs6MTg3NgogbXNnaWQgIm1jIgogbXNnc3RyICJtYyIKIAotIzogZ2l0azoxODUzIGdpdGs6NDA2NCBnaXRrOjkwNjcgZ2l0azoxMDYwNyBnaXRrOjEwODE3CisjOiBnaXRrOjE5MTEgZ2l0azo0MjAyIGdpdGs6OTQzNyBnaXRrOjEwOTc5IGdpdGs6MTEyNTgKIG1zZ2lkICJPSyIKIG1zZ3N0ciAiT0siCiAKLSM6IGdpdGs6MTg1NSBnaXRrOjQwNjYgZ2l0azo4NjU3IGdpdGs6ODczNiBnaXRrOjg4NTEgZ2l0azo4OTAwIGdpdGs6OTA2OQotIzogZ2l0azoxMDYwOCBnaXRrOjEwODE4CisjOiBnaXRrOjE5MTMgZ2l0azo0MjA0IGdpdGs6ODk2NCBnaXRrOjkwNDMgZ2l0azo5MTU5IGdpdGs6OTIwOCBnaXRrOjk0MzkKKyM6IGdpdGs6MTA5ODAgZ2l0azoxMTI1OQogbXNnaWQgIkNhbmNlbCIKIG1zZ3N0ciAiQXZicnl0IgogCi0jOiBnaXRrOjE5ODAKKyM6IGdpdGs6MjA0OAogbXNnaWQgIlVwZGF0ZSIKIG1zZ3N0ciAiVXBwZGF0ZXJhIgogCi0jOiBnaXRrOjE5ODEKKyM6IGdpdGs6MjA0OQogbXNnaWQgIlJlbG9hZCIKIG1zZ3N0ciAiTGFkZGEgb20iCiAKLSM6IGdpdGs6MTk4MgorIzogZ2l0azoyMDUwCiBtc2dpZCAiUmVyZWFkIHJlZmVyZW5jZXMiCiBtc2dzdHIgIkzDpHMgb20gcmVmZXJlbnNlciIKIAotIzogZ2l0azoxOTgzCisjOiBnaXRrOjIwNTEKIG1zZ2lkICJMaXN0IHJlZmVyZW5jZXMiCiBtc2dzdHIgIlZpc2EgcmVmZXJlbnNlciIKIAotIzogZ2l0azoxOTg1CisjOiBnaXRrOjIwNTMKIG1zZ2lkICJTdGFydCBnaXQgZ3VpIgogbXNnc3RyICJTdGFydGEgZ2l0IGd1aSIKIAotIzogZ2l0azoxOTg3CisjOiBnaXRrOjIwNTUKIG1zZ2lkICJRdWl0IgogbXNnc3RyICJBdnNsdXRhIgogCi0jOiBnaXRrOjE5NzkKKyM6IGdpdGs6MjA0NwogbXNnaWQgIkZpbGUiCiBtc2dzdHIgIkFya2l2IgogCi0jOiBnaXRrOjE5OTEKKyM6IGdpdGs6MjA1OQogbXNnaWQgIlByZWZlcmVuY2VzIgogbXNnc3RyICJJbnN0w6RsbG5pbmdhciIKIAotIzogZ2l0azoxOTkwCisjOiBnaXRrOjIwNTgKIG1zZ2lkICJFZGl0IgogbXNnc3RyICJSZWRpZ2VyYSIKIAotIzogZ2l0azoxOTk1CisjOiBnaXRrOjIwNjMKIG1zZ2lkICJOZXcgdmlldy4uLiIKIG1zZ3N0ciAiTnkgdnkuLi4iCiAKLSM6IGdpdGs6MTk5NgorIzogZ2l0azoyMDY0CiBtc2dpZCAiRWRpdCB2aWV3Li4uIgogbXNnc3RyICLDhG5kcmEgdnkuLi4iCiAKLSM6IGdpdGs6MTk5NworIzogZ2l0azoyMDY1CiBtc2dpZCAiRGVsZXRlIHZpZXciCiBtc2dzdHIgIlRhIGJvcnQgdnkiCiAKLSM6IGdpdGs6MTk5OQorIzogZ2l0azoyMDY3CiBtc2dpZCAiQWxsIGZpbGVzIgogbXNnc3RyICJBbGxhIGZpbGVyIgogCi0jOiBnaXRrOjE5OTQgZ2l0azozODE3CisjOiBnaXRrOjIwNjIgZ2l0azozOTU1CiBtc2dpZCAiVmlldyIKIG1zZ3N0ciAiVmlzYSIKIAotIzogZ2l0azoyMDA0IGdpdGs6MjAxNCBnaXRrOjI3ODcKKyM6IGdpdGs6MjA3MiBnaXRrOjIwODIgZ2l0azoyOTI1CiBtc2dpZCAiQWJvdXQgZ2l0ayIKIG1zZ3N0ciAiT20gZ2l0ayIKIAotIzogZ2l0azoyMDA1IGdpdGs6MjAxOQorIzogZ2l0azoyMDczIGdpdGs6MjA4NwogbXNnaWQgIktleSBiaW5kaW5ncyIKIG1zZ3N0ciAiVGFuZ2VudGJvcmRzYmluZG5pbmdhciIKIAotIzogZ2l0azoyMDAzIGdpdGs6MjAxOAorIzogZ2l0azoyMDcxIGdpdGs6MjA4NgogbXNnaWQgIkhlbHAiCiBtc2dzdHIgIkhqw6RscCIKIAotIzogZ2l0azoyMDk2IGdpdGs6ODEzMgorIzogZ2l0azoyMTY0IGdpdGs6ODQyMAogbXNnaWQgIlNIQTEgSUQ6IgogbXNnc3RyICJTSEExLWlkOiIKIAotIzogZ2l0azoyMTI3CisjOiBnaXRrOjIyMDgKIG1zZ2lkICJSb3ciCiBtc2dzdHIgIlJhZCIKIAotIzogZ2l0azoyMTY1CisjOiBnaXRrOjIyNDYKIG1zZ2lkICJGaW5kIgogbXNnc3RyICJTw7ZrIgogCi0jOiBnaXRrOjIxNjYKKyM6IGdpdGs6MjI0NwogbXNnaWQgIm5leHQiCiBtc2dzdHIgIm7DpHN0YSIKIAotIzogZ2l0azoyMTY3CisjOiBnaXRrOjIyNDgKIG1zZ2lkICJwcmV2IgogbXNnc3RyICJmw7ZyZWciCiAKLSM6IGdpdGs6MjE2OAorIzogZ2l0azoyMjQ5CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyMTcxIGdpdGs6MjE3MyBnaXRrOjQ0MzIgZ2l0azo0NDU1IGdpdGs6NDQ3OSBnaXRrOjY0MjAgZ2l0azo2NDkyCi0jOiBnaXRrOjY1NzYKKyM6IGdpdGs6MjI1MiBnaXRrOjIyNTQgZ2l0azo0NTcwIGdpdGs6NDU5MyBnaXRrOjQ2MTcgZ2l0azo2NTkyIGdpdGs6NjY2NAorIzogZ2l0azo2NzQ5CiBtc2dpZCAiY29udGFpbmluZzoiCiBtc2dzdHIgInNvbSBpbm5laMOlbGxlcjoiCiAKLSM6IGdpdGs6MjE3NCBnaXRrOjMyOTggZ2l0azozMzAzIGdpdGs6NDUwNworIzogZ2l0azoyMjU1IGdpdGs6MzQzNyBnaXRrOjM0NDIgZ2l0azo0NjQ2CiBtc2dpZCAidG91Y2hpbmcgcGF0aHM6IgogbXNnc3RyICJzb20gcsO2ciBzw7ZrdsOkZzoiCiAKLSM6IGdpdGs6MjE3NSBnaXRrOjQ1MTIKKyM6IGdpdGs6MjI1NiBnaXRrOjQ2NjAKIG1zZ2lkICJhZGRpbmcvcmVtb3Zpbmcgc3RyaW5nOiIKIG1zZ3N0ciAic29tIGzDpGdnZXIvdGlsbCB0YXIgYm9ydCBzdHLDpG5nOiIKIAotIzogZ2l0azoyMTg0IGdpdGs6MjE4NgorIzogZ2l0azoyMjU3IGdpdGs6NDY2MgorbXNnaWQgImNoYW5naW5nIGxpbmVzIG1hdGNoaW5nOiIKK21zZ3N0ciAiw6RuZHJhciByYWRlciBzb20gbWF0Y2hhcjoiCisKKyM6IGdpdGs6MjI2NiBnaXRrOjIyNjggZ2l0azo0NjQ5CiBtc2dpZCAiRXhhY3QiCiBtc2dzdHIgIkV4YWt0IgogCi0jOiBnaXRrOjIxODYgZ2l0azo0NTg3IGdpdGs6NjM4OAorIzogZ2l0azoyMjY4IGdpdGs6NDczNyBnaXRrOjY1NjAKIG1zZ2lkICJJZ25DYXNlIgogbXNnc3RyICJJZ25WZXJzYWxlciIKIAotIzogZ2l0azoyMTg2IGdpdGs6NDQ4MSBnaXRrOjQ1ODUgZ2l0azo2Mzg0CisjOiBnaXRrOjIyNjggZ2l0azo0NjE5IGdpdGs6NDczNSBnaXRrOjY1NTYKIG1zZ2lkICJSZWdleHAiCiBtc2dzdHIgIlJlZy51dHRyLiIKIAotIzogZ2l0azoyMTg4IGdpdGs6MjE4OSBnaXRrOjQ2MDYgZ2l0azo0NjM2IGdpdGs6NDY0MyBnaXRrOjY1MTIgZ2l0azo2NTgwCisjOiBnaXRrOjIyNzAgZ2l0azoyMjcxIGdpdGs6NDc1NyBnaXRrOjQ3ODcgZ2l0azo0Nzk0IGdpdGs6NjY4NSBnaXRrOjY3NTMKIG1zZ2lkICJBbGwgZmllbGRzIgogbXNnc3RyICJBbGxhIGbDpGx0IgogCi0jOiBnaXRrOjIxODkgZ2l0azo0NjA0IGdpdGs6NDYzNiBnaXRrOjY0NTEKKyM6IGdpdGs6MjI3MSBnaXRrOjQ3NTQgZ2l0azo0Nzg3IGdpdGs6NjYyMwogbXNnaWQgIkhlYWRsaW5lIgogbXNnc3RyICJSdWJyaWsiCiAKLSM6IGdpdGs6MjE5MCBnaXRrOjQ2MDQgZ2l0azo2NDUxIGdpdGs6NjU4MCBnaXRrOjcwMTMKKyM6IGdpdGs6MjI3MiBnaXRrOjQ3NTQgZ2l0azo2NjIzIGdpdGs6Njc1MyBnaXRrOjcyMjEKIG1zZ2lkICJDb21tZW50cyIKIG1zZ3N0ciAiS29tbWVudGFyZXIiCiAKLSM6IGdpdGs6MjE5MCBnaXRrOjQ2MDQgZ2l0azo0NjA4IGdpdGs6NDY0MyBnaXRrOjY0NTEgZ2l0azo2OTQ4IGdpdGs6ODMwNwotIzogZ2l0azo4MzIyCisjOiBnaXRrOjIyNzIgZ2l0azo0NzU0IGdpdGs6NDc1OSBnaXRrOjQ3OTQgZ2l0azo2NjIzIGdpdGs6NzE1NiBnaXRrOjg1OTgKKyM6IGdpdGs6ODYxMwogbXNnaWQgIkF1dGhvciIKIG1zZ3N0ciAiRsO2cmZhdHRhcmUiCiAKLSM6IGdpdGs6MjE5MCBnaXRrOjQ2MDQgZ2l0azo2NDUxIGdpdGs6Njk1MAorIzogZ2l0azoyMjcyIGdpdGs6NDc1NCBnaXRrOjY2MjMgZ2l0azo3MTU4CiBtc2dpZCAiQ29tbWl0dGVyIgogbXNnc3RyICJJbmNoZWNrYXJlIgogCi0jOiBnaXRrOjIyMjEKKyM6IGdpdGs6MjMwMwogbXNnaWQgIlNlYXJjaCIKIG1zZ3N0ciAiU8O2ayIKIAotIzogZ2l0azoyMjI5CisjOiBnaXRrOjIzMTEKIG1zZ2lkICJEaWZmIgogbXNnc3RyICJEaWZmIgogCi0jOiBnaXRrOjIyMzEKKyM6IGdpdGs6MjMxMwogbXNnaWQgIk9sZCB2ZXJzaW9uIgogbXNnc3RyICJHYW1tYWwgdmVyc2lvbiIKIAotIzogZ2l0azoyMjMzCisjOiBnaXRrOjIzMTUKIG1zZ2lkICJOZXcgdmVyc2lvbiIKIG1zZ3N0ciAiTnkgdmVyc2lvbiIKIAotIzogZ2l0azoyMjM1CisjOiBnaXRrOjIzMTcKIG1zZ2lkICJMaW5lcyBvZiBjb250ZXh0IgogbXNnc3RyICJSYWRlciBzYW1tYW5oYW5nIgogCi0jOiBnaXRrOjIyNDUKKyM6IGdpdGs6MjMyNwogbXNnaWQgIklnbm9yZSBzcGFjZSBjaGFuZ2UiCiBtc2dzdHIgIklnbm9yZXJhIMOkbmRyaW5nYXIgaSBibGFua3N0ZWciCiAKLSM6IGdpdGs6MjMwNAorIzogZ2l0azoyMzMxIGdpdGs6MjMzMyBnaXRrOjc3MzUgZ2l0azo3OTYzCittc2dpZCAiTGluZSBkaWZmIgorbXNnc3RyICJSYWQtZGlmZiIKKworIzogZ2l0azoyMzk3CiBtc2dpZCAiUGF0Y2giCiBtc2dzdHIgIlBhdGNoIgogCi0jOiBnaXRrOjIzMDYKKyM6IGdpdGs6MjM5OQogbXNnaWQgIlRyZWUiCiBtc2dzdHIgIlRyw6RkIgogCi0jOiBnaXRrOjI0NjMgZ2l0azoyNDgwCisjOiBnaXRrOjI1NTcgZ2l0azoyNTc3CiBtc2dpZCAiRGlmZiB0aGlzIC0+IHNlbGVjdGVkIgogbXNnc3RyICJEaWZmIGRlbm5hIC0+IG1hcmtlcmFkIgogCi0jOiBnaXRrOjI0NjQgZ2l0azoyNDgxCisjOiBnaXRrOjI1NTggZ2l0azoyNTc4CiBtc2dpZCAiRGlmZiBzZWxlY3RlZCAtPiB0aGlzIgogbXNnc3RyICJEaWZmIG1hcmtlcmFkIC0+IGRlbm5hIgogCi0jOiBnaXRrOjI0NjUgZ2l0azoyNDgyCisjOiBnaXRrOjI1NTkgZ2l0azoyNTc5CiBtc2dpZCAiTWFrZSBwYXRjaCIKIG1zZ3N0ciAiU2thcGEgcGF0Y2giCiAKLSM6IGdpdGs6MjQ2NiBnaXRrOjg3MTUKKyM6IGdpdGs6MjU2MCBnaXRrOjkwMjIKIG1zZ2lkICJDcmVhdGUgdGFnIgogbXNnc3RyICJTa2FwYSB0YWdnIgogCi0jOiBnaXRrOjI0NjcgZ2l0azo4ODMxCisjOiBnaXRrOjI1NjEgZ2l0azo5MTM5CiBtc2dpZCAiV3JpdGUgY29tbWl0IHRvIGZpbGUiCiBtc2dzdHIgIlNrcml2IGluY2hlY2tuaW5nIHRpbGwgZmlsIgogCi0jOiBnaXRrOjI0NjggZ2l0azo4ODg4CisjOiBnaXRrOjI1NjIgZ2l0azo5MTk2CiBtc2dpZCAiQ3JlYXRlIG5ldyBicmFuY2giCiBtc2dzdHIgIlNrYXBhIG55IGdyZW4iCiAKLSM6IGdpdGs6MjQ2OQorIzogZ2l0azoyNTYzCiBtc2dpZCAiQ2hlcnJ5LXBpY2sgdGhpcyBjb21taXQiCiBtc2dzdHIgIlBsb2NrYSBkZW5uYSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyNDcwCisjOiBnaXRrOjI1NjQKIG1zZ2lkICJSZXNldCBIRUFEIGJyYW5jaCB0byBoZXJlIgogbXNnc3RyICLDhXRlcnN0w6RsbCBIRUFELWdyZW5lbiBoaXQiCiAKLSM6IGdpdGs6MjQ3MQorIzogZ2l0azoyNTY1CiBtc2dpZCAiTWFyayB0aGlzIGNvbW1pdCIKIG1zZ3N0ciAiTWFya2VyYSBkZW5uYSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyNDcyCisjOiBnaXRrOjI1NjYKIG1zZ2lkICJSZXR1cm4gdG8gbWFyayIKIG1zZ3N0ciAiw4V0ZXJnw6UgdGlsbCBtYXJrZXJpbmciCiAKLSM6IGdpdGs6MjQ3MworIzogZ2l0azoyNTY3CiBtc2dpZCAiRmluZCBkZXNjZW5kYW50IG9mIHRoaXMgYW5kIG1hcmsiCiBtc2dzdHIgIkhpdHRhIGVmdGVyZsO2bGphcmUgdGlsbCBkZW5uYSBvY2ggbWFya2VyYSIKIAotIzogZ2l0azoyNDc0CisjOiBnaXRrOjI1NjgKIG1zZ2lkICJDb21wYXJlIHdpdGggbWFya2VkIGNvbW1pdCIKIG1zZ3N0ciAiSsOkbWbDtnIgbWVkIG1hcmtlcmFkIGluY2hlY2tuaW5nIgogCi0jOiBnaXRrOjI0ODgKKyM6IGdpdGs6MjU2OSBnaXRrOjI1ODAKK21zZ2lkICJEaWZmIHRoaXMgLT4gbWFya2VkIGNvbW1pdCIKK21zZ3N0ciAiRGlmZiBkZW5uYSAtPiBtYXJrZXJhZCBpbmNoZWNrbmluZyIKKworIzogZ2l0azoyNTcwIGdpdGs6MjU4MQorbXNnaWQgIkRpZmYgbWFya2VkIGNvbW1pdCAtPiB0aGlzIgorbXNnc3RyICJEaWZmIG1hcmtlcmFkIGluY2hlY2tuaW5nIC0+IGRlbm5hIgorCisjOiBnaXRrOjI1NzEKK21zZ2lkICJSZXZlcnQgdGhpcyBjb21taXQiCittc2dzdHIgIsOFbmdyYSBkZW5uYSBpbmNoZWNrbmluZyIKKworIzogZ2l0azoyNTg3CiBtc2dpZCAiQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIgogbXNnc3RyICJDaGVja2EgdXQgZGVubmEgZ3JlbiIKIAotIzogZ2l0azoyNDg5CisjOiBnaXRrOjI1ODgKIG1zZ2lkICJSZW1vdmUgdGhpcyBicmFuY2giCiBtc2dzdHIgIlRhIGJvcnQgZGVubmEgZ3JlbiIKIAotIzogZ2l0azoyNDk2CisjOiBnaXRrOjI1OTUKIG1zZ2lkICJIaWdobGlnaHQgdGhpcyB0b28iCiBtc2dzdHIgIk1hcmtlcmEgw6R2ZW4gZGV0dGEiCiAKLSM6IGdpdGs6MjQ5NworIzogZ2l0azoyNTk2CiBtc2dpZCAiSGlnaGxpZ2h0IHRoaXMgb25seSIKIG1zZ3N0ciAiTWFya2VyYSBiYXJhIGRldHRhIgogCi0jOiBnaXRrOjI0OTgKKyM6IGdpdGs6MjU5NwogbXNnaWQgIkV4dGVybmFsIGRpZmYiCiBtc2dzdHIgIkV4dGVybiBkaWZmIgogCi0jOiBnaXRrOjI0OTkKKyM6IGdpdGs6MjU5OAogbXNnaWQgIkJsYW1lIHBhcmVudCBjb21taXQiCiBtc2dzdHIgIktsYW5kcmEgZsO2csOkbGRyYWluY2hlY2tuaW5nIgogCi0jOiBnaXRrOjI1MDYKKyM6IGdpdGs6MjYwNQogbXNnaWQgIlNob3cgb3JpZ2luIG9mIHRoaXMgbGluZSIKIG1zZ3N0ciAiVmlzYSB1cnNwcnVuZ2V0IGbDtnIgZGVuIGjDpHIgcmFkZW4iCiAKLSM6IGdpdGs6MjUwNworIzogZ2l0azoyNjA2CiBtc2dpZCAiUnVuIGdpdCBndWkgYmxhbWUgb24gdGhpcyBsaW5lIgogbXNnc3RyICJLw7ZyIGdpdCBndWkgYmxhbWUgcMOlIGRlbiBow6RyIHJhZGVuIgogCi0jOiBnaXRrOjI3ODkKKyM6IGdpdGs6MjkyNwogbXNnaWQgIiIKICJcbiIKICJHaXRrIC0gYSBjb21taXQgdmlld2VyIGZvciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqk5IDIwMDUtMjAxMCBQYXVsIE1hY2tlcnJhc1xuIgorIkNvcHlyaWdodCDCqTkgMjAwNS0yMDExIFBhdWwgTWFja2VycmFzXG4iCiAiXG4iCiAiVXNlIGFuZCByZWRpc3RyaWJ1dGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKIG1zZ3N0ciAiIgogIlxuIgogIkdpdGsgLSBlbiBpbmNoZWNrbmluZ3N2aXNhcmUgZsO2ciBnaXRcbiIKICJcbiIKLSJDb3B5cmlnaHQgwqk5IDIwMDUtMjAxMCBQYXVsIE1hY2tlcnJhc1xuIgorIkNvcHlyaWdodCDCqTkgMjAwNS0yMDExIFBhdWwgTWFja2VycmFzXG4iCiAiXG4iCiAiQW52w6RuZCBvY2ggdmlkYXJlZsO2cm1lZGxhIGVubGlndCB2aWxsa29yZW4gaSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSIKIAotIzogZ2l0azoyNzk3IGdpdGs6Mjg2MiBnaXRrOjkyNTMKKyM6IGdpdGs6MjkzNSBnaXRrOjMwMDAgZ2l0azo5NjIzCiBtc2dpZCAiQ2xvc2UiCiBtc2dzdHIgIlN0w6RuZyIKIAotIzogZ2l0azoyODE4CisjOiBnaXRrOjI5NTYKIG1zZ2lkICJHaXRrIGtleSBiaW5kaW5ncyIKIG1zZ3N0ciAiVGFuZ2VudGJvcmRzYmluZG5pbmdhciBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6MjgyMQorIzogZ2l0azoyOTU5CiBtc2dpZCAiR2l0ayBrZXkgYmluZGluZ3M6IgogbXNnc3RyICJUYW5nZW50Ym9yZHNiaW5kbmluZ2FyIGbDtnIgR2l0azoiCiAKLSM6IGdpdGs6MjgyMworIzogZ2l0azoyOTYxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVE+XHRcdFF1aXQiCiBtc2dzdHIgIjwlcy1RPlx0XHRBdnNsdXRhIgogCi0jOiBnaXRrOjI4MjQKKyM6IGdpdGs6Mjk2MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1XPlx0XHRDbG9zZSB3aW5kb3ciCiBtc2dzdHIgIjwlcy1XPlx0XHRTdMOkbmcgZsO2bnN0ZXIiCiAKLSM6IGdpdGs6MjgyNQorIzogZ2l0azoyOTYzCiBtc2dpZCAiPEhvbWU+XHRcdE1vdmUgdG8gZmlyc3QgY29tbWl0IgogbXNnc3RyICI8SG9tZT5cdFx0R8OlIHRpbGwgZsO2cnN0YSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyODI2CisjOiBnaXRrOjI5NjQKIG1zZ2lkICI8RW5kPlx0XHRNb3ZlIHRvIGxhc3QgY29tbWl0IgogbXNnc3RyICI8RW5kPlx0XHRHw6UgdGlsbCBzaXN0YSBpbmNoZWNrbmluZyIKIAotIzogZ2l0azoyODI3Ci1tc2dpZCAiPFVwPiwgcCwgaVx0TW92ZSB1cCBvbmUgY29tbWl0IgotbXNnc3RyICI8VXBwPiwgcCwgaVx0R8OlIGVuIGluY2hlY2tuaW5nIHVwcCIKKyM6IGdpdGs6Mjk2NQorbXNnaWQgIjxVcD4sIHAsIGtcdE1vdmUgdXAgb25lIGNvbW1pdCIKK21zZ3N0ciAiPFVwcD4sIHAsIGtcdEfDpSBlbiBpbmNoZWNrbmluZyB1cHAiCiAKLSM6IGdpdGs6MjgyOAotbXNnaWQgIjxEb3duPiwgbiwga1x0TW92ZSBkb3duIG9uZSBjb21taXQiCi1tc2dzdHIgIjxOZWQ+LCBuLCBrXHRHw6UgZW4gaW5jaGVja25pbmcgbmVkIgorIzogZ2l0azoyOTY2Cittc2dpZCAiPERvd24+LCBuLCBqXHRNb3ZlIGRvd24gb25lIGNvbW1pdCIKK21zZ3N0ciAiPE5lZD4sIG4sIGpcdEfDpSBlbiBpbmNoZWNrbmluZyBuZWQiCiAKLSM6IGdpdGs6MjgyOQotbXNnaWQgIjxMZWZ0Piwgeiwgalx0R28gYmFjayBpbiBoaXN0b3J5IGxpc3QiCi1tc2dzdHIgIjxWw6Ruc3Rlcj4sIHosIGpcdEfDpSBiYWvDpXQgaSBoaXN0b3Jpa2VuIgorIzogZ2l0azoyOTY3Cittc2dpZCAiPExlZnQ+LCB6LCBoXHRHbyBiYWNrIGluIGhpc3RvcnkgbGlzdCIKK21zZ3N0ciAiPFbDpG5zdGVyPiwgeiwgaFx0R8OlIGJha8OldCBpIGhpc3RvcmlrZW4iCiAKLSM6IGdpdGs6MjgzMAorIzogZ2l0azoyOTY4CiBtc2dpZCAiPFJpZ2h0PiwgeCwgbFx0R28gZm9yd2FyZCBpbiBoaXN0b3J5IGxpc3QiCiBtc2dzdHIgIjxIw7ZnZXI+LCB4LCBsXHRHw6UgZnJhbcOldCBpIGhpc3RvcmlrZW4iCiAKLSM6IGdpdGs6MjgzMQorIzogZ2l0azoyOTY5CiBtc2dpZCAiPFBhZ2VVcD5cdE1vdmUgdXAgb25lIHBhZ2UgaW4gY29tbWl0IGxpc3QiCiBtc2dzdHIgIjxQYWdlVXA+XHRHw6UgdXBwIGVuIHNpZGEgaSBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzMgorIzogZ2l0azoyOTcwCiBtc2dpZCAiPFBhZ2VEb3duPlx0TW92ZSBkb3duIG9uZSBwYWdlIGluIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8UGFnZURvd24+XHRHw6UgbmVkIGVuIHNpZGEgaSBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzMworIzogZ2l0azoyOTcxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUhvbWU+XHRTY3JvbGwgdG8gdG9wIG9mIGNvbW1pdCBsaXN0IgogbXNnc3RyICI8JXMtSG9tZT5cdFJ1bGxhIHRpbGwgYsO2cmphbiBhdiBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzNAorIzogZ2l0azoyOTcyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUVuZD5cdFNjcm9sbCB0byBib3R0b20gb2YgY29tbWl0IGxpc3QiCiBtc2dzdHIgIjwlcy1FbmQ+XHRSdWxsYSB0aWxsIHNsdXRldCBhdiBpbmNoZWNrbmluZ3NsaXN0YW4iCiAKLSM6IGdpdGs6MjgzNQorIzogZ2l0azoyOTczCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtVXBwPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIHVwcCBldHQgc3RlZyIKIAotIzogZ2l0azoyODM2CisjOiBnaXRrOjI5NzQKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBsaW5lIgogbXNnc3RyICI8JXMtTmVkPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIG5lZCBldHQgc3RlZyIKIAotIzogZ2l0azoyODM3CisjOiBnaXRrOjI5NzUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUGFnZVVwPlx0U2Nyb2xsIGNvbW1pdCBsaXN0IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8JXMtUGFnZVVwPlx0UnVsbGEgaW5jaGVja25pbmdzbGlzdGFuIHVwcCBlbiBzaWRhIgogCi0jOiBnaXRrOjI4MzgKKyM6IGdpdGs6Mjk3NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1QYWdlRG93bj5cdFNjcm9sbCBjb21taXQgbGlzdCBkb3duIG9uZSBwYWdlIgogbXNnc3RyICI8JXMtUGFnZURvd24+XHRSdWxsYSBpbmNoZWNrbmluZ3NsaXN0YW4gbmVkIGVuIHNpZGEiCiAKLSM6IGdpdGs6MjgzOQorIzogZ2l0azoyOTc3CiBtc2dpZCAiPFNoaWZ0LVVwPlx0RmluZCBiYWNrd2FyZHMgKHVwd2FyZHMsIGxhdGVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2tpZnQtVXBwPlx0U8O2ayBiYWvDpXQgKHVwcMOldCwgc2VuYXJlIGluY2hlY2tuaW5nYXIpIgogCi0jOiBnaXRrOjI4NDAKKyM6IGdpdGs6Mjk3OAogbXNnaWQgIjxTaGlmdC1Eb3duPlx0RmluZCBmb3J3YXJkcyAoZG93bndhcmRzLCBlYXJsaWVyIGNvbW1pdHMpIgogbXNnc3RyICI8U2tpZnQtTmVkPlx0U8O2ayBmcmFtw6V0IChuZWTDpXQsIHRpZGlnYXJlIGluY2hlY2tuaW5nYXIpIgogCi0jOiBnaXRrOjI4NDEKKyM6IGdpdGs6Mjk3OQogbXNnaWQgIjxEZWxldGU+LCBiXHRTY3JvbGwgZGlmZiB2aWV3IHVwIG9uZSBwYWdlIgogbXNnc3RyICI8RGVsZXRlPiwgYlx0UnVsbGEgZGlmZnZpc25pbmdlbiB1cHAgZW4gc2lkYSIKIAotIzogZ2l0azoyODQyCisjOiBnaXRrOjI5ODAKIG1zZ2lkICI8QmFja3NwYWNlPlx0U2Nyb2xsIGRpZmYgdmlldyB1cCBvbmUgcGFnZSIKIG1zZ3N0ciAiPEJha3N0ZWc+XHRSdWxsYSBkaWZmdmlzbmluZ2VuIHVwcCBlbiBzaWRhIgogCi0jOiBnaXRrOjI4NDMKKyM6IGdpdGs6Mjk4MQogbXNnaWQgIjxTcGFjZT5cdFx0U2Nyb2xsIGRpZmYgdmlldyBkb3duIG9uZSBwYWdlIgogbXNnc3RyICI8QmxhbmtzdGVnPlx0UnVsbGEgZGlmZnZpc25pbmdlbiBuZWQgZW4gc2lkYSIKIAotIzogZ2l0azoyODQ0CisjOiBnaXRrOjI5ODIKIG1zZ2lkICJ1XHRcdFNjcm9sbCBkaWZmIHZpZXcgdXAgMTggbGluZXMiCiBtc2dzdHIgInVcdFx0UnVsbGEgZGlmZnZpc25pbmdlbiB1cHAgMTggcmFkZXIiCiAKLSM6IGdpdGs6Mjg0NQorIzogZ2l0azoyOTgzCiBtc2dpZCAiZFx0XHRTY3JvbGwgZGlmZiB2aWV3IGRvd24gMTggbGluZXMiCiBtc2dzdHIgImRcdFx0UnVsbGEgZGlmZnZpc25pbmdlbiBuZWQgMTggcmFkZXIiCiAKLSM6IGdpdGs6Mjg0NgorIzogZ2l0azoyOTg0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUY+XHRcdEZpbmQiCiBtc2dzdHIgIjwlcy1GPlx0XHRTw7ZrIgogCi0jOiBnaXRrOjI4NDcKKyM6IGdpdGs6Mjk4NQogIywgdGNsLWZvcm1hdAogbXNnaWQgIjwlcy1HPlx0XHRNb3ZlIHRvIG5leHQgZmluZCBoaXQiCiBtc2dzdHIgIjwlcy1HPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiIKIAotIzogZ2l0azoyODQ4CisjOiBnaXRrOjI5ODYKIG1zZ2lkICI8UmV0dXJuPlx0TW92ZSB0byBuZXh0IGZpbmQgaGl0IgogbXNnc3RyICI8UmV0dXJuPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiIKIAotIzogZ2l0azoyODQ5CisjOiBnaXRrOjI5ODcKIG1zZ2lkICIvXHRcdEZvY3VzIHRoZSBzZWFyY2ggYm94IgogbXNnc3RyICIvXHRcdEZva3VzZXJhIHPDtmtydXRhbiIKIAotIzogZ2l0azoyODUwCisjOiBnaXRrOjI5ODgKIG1zZ2lkICI/XHRcdE1vdmUgdG8gcHJldmlvdXMgZmluZCBoaXQiCiBtc2dzdHIgIj9cdFx0R8OlIHRpbGwgZsO2cmVnw6VlbmRlIHPDtmt0csOkZmYiCiAKLSM6IGdpdGs6Mjg1MQorIzogZ2l0azoyOTg5CiBtc2dpZCAiZlx0XHRTY3JvbGwgZGlmZiB2aWV3IHRvIG5leHQgZmlsZSIKIG1zZ3N0ciAiZlx0XHRSdWxsYSBkaWZmdmlzbmluZ2VuIHRpbGwgbsOkc3RhIGZpbCIKIAotIzogZ2l0azoyODUyCisjOiBnaXRrOjI5OTAKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtUz5cdFx0U2VhcmNoIGZvciBuZXh0IGhpdCBpbiBkaWZmIHZpZXciCiBtc2dzdHIgIjwlcy1TPlx0XHRHw6UgdGlsbCBuw6RzdGEgc8O2a3Ryw6RmZiBpIGRpZmZ2aXNuaW5nZW4iCiAKLSM6IGdpdGs6Mjg1MworIzogZ2l0azoyOTkxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLVI+XHRcdFNlYXJjaCBmb3IgcHJldmlvdXMgaGl0IGluIGRpZmYgdmlldyIKIG1zZ3N0ciAiPCVzLVI+XHRcdEfDpSB0aWxsIGbDtnJlZ8OlZW5kZSBzw7ZrdHLDpGZmIGkgZGlmZnZpc25pbmdlbiIKIAotIzogZ2l0azoyODU0CisjOiBnaXRrOjI5OTIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtS1ArPlx0SW5jcmVhc2UgZm9udCBzaXplIgogbXNnc3RyICI8JXMtTnVtKz5cdMOWa2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyODU1CisjOiBnaXRrOjI5OTMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtcGx1cz5cdEluY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLXBsdXM+XHTDlmthIHRlY2tlbnN0b3JsZWsiCiAKLSM6IGdpdGs6Mjg1NgorIzogZ2l0azoyOTk0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiPCVzLUtQLT5cdERlY3JlYXNlIGZvbnQgc2l6ZSIKIG1zZ3N0ciAiPCVzLU51bS0+XHRNaW5za2EgdGVja2Vuc3RvcmxlayIKIAotIzogZ2l0azoyODU3CisjOiBnaXRrOjI5OTUKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICI8JXMtbWludXM+XHREZWNyZWFzZSBmb250IHNpemUiCiBtc2dzdHIgIjwlcy1taW51cz5cdE1pbnNrYSB0ZWNrZW5zdG9ybGVrIgogCi0jOiBnaXRrOjI4NTgKKyM6IGdpdGs6Mjk5NgogbXNnaWQgIjxGNT5cdFx0VXBkYXRlIgogbXNnc3RyICI8RjU+XHRcdFVwcGRhdGVyYSIKIAotIzogZ2l0azozMzEzIGdpdGs6MzMyMgorIzogZ2l0azozNDUxIGdpdGs6MzQ2MAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkVycm9yIGNyZWF0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcnkgJXM6IgogbXNnc3RyICJGZWwgdmlkIHNrYXBhbmRlIGF2IHRlbXBvcsOkciBrYXRhbG9nICVzOiIKIAotIzogZ2l0azozMzM1CisjOiBnaXRrOjM0NzMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJFcnJvciBnZXR0aW5nIFwiJXNcIiBmcm9tICVzOiIKIG1zZ3N0ciAiRmVsIHZpZCBow6RtdG5pbmcgYXYgIFwiJXNcIiBmcsOlbiAlczoiCiAKLSM6IGdpdGs6MzM5OAorIzogZ2l0azozNTM2CiBtc2dpZCAiY29tbWFuZCBmYWlsZWQ6IgogbXNnc3RyICJrb21tYW5kbyBtaXNzbHlja2FkZXM6IgogCi0jOiBnaXRrOjM1NDcKKyM6IGdpdGs6MzY4NQogbXNnaWQgIk5vIHN1Y2ggY29tbWl0IgogbXNnc3RyICJJbmNoZWNrbmluZyBzYWtuYXMiCiAKLSM6IGdpdGs6MzU2MQorIzogZ2l0azozNjk5CiBtc2dpZCAiZ2l0IGd1aSBibGFtZTogY29tbWFuZCBmYWlsZWQ6IgogbXNnc3RyICJnaXQgZ3VpIGJsYW1lOiBrb21tYW5kbyBtaXNzbHlja2FkZXM6IgogCi0jOiBnaXRrOjM1OTIKKyM6IGdpdGs6MzczMAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IHJlYWQgbWVyZ2UgaGVhZDogJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkc2Egc2FtbWFuc2xhZ25pbmdzaHV2dWQ6ICVzIgogCi0jOiBnaXRrOjM2MDAKKyM6IGdpdGs6MzczOAogIywgdGNsLWZvcm1hdAogbXNnaWQgIkVycm9yIHJlYWRpbmcgaW5kZXg6ICVzIgogbXNnc3RyICJGZWwgdmlkIGzDpHNuaW5nIGF2IGluZGV4OiAlcyIKIAotIzogZ2l0azozNjI1CisjOiBnaXRrOjM3NjMKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBzdGFydCBnaXQgYmxhbWU6ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIHN0YXJ0YSBnaXQgYmxhbWU6ICVzIgogCi0jOiBnaXRrOjM2MjggZ2l0azo2NDE5CisjOiBnaXRrOjM3NjYgZ2l0azo2NTkxCiBtc2dpZCAiU2VhcmNoaW5nIgogbXNnc3RyICJTw7ZrZXIiCiAKLSM6IGdpdGs6MzY2MAorIzogZ2l0azozNzk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRXJyb3IgcnVubmluZyBnaXQgYmxhbWU6ICVzIgogbXNnc3RyICJGZWwgdmlkIGvDtnJuaW5nIGF2IGdpdCBibGFtZTogJXMiCiAKLSM6IGdpdGs6MzY4OAorIzogZ2l0azozODI2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGhhdCBsaW5lIGNvbWVzIGZyb20gY29tbWl0ICVzLCAgd2hpY2ggaXMgbm90IGluIHRoaXMgdmlldyIKIG1zZ3N0ciAiUmFkZW4ga29tbWVyIGZyw6VuIGluY2hlY2tuaW5nZW4gJXMsIHNvbSBpbnRlIGZpbm5zIGkgZGVubmEgdnkiCiAKLSM6IGdpdGs6MzcwMgorIzogZ2l0azozODQwCiBtc2dpZCAiRXh0ZXJuYWwgZGlmZiB2aWV3ZXIgZmFpbGVkOiIKIG1zZ3N0ciAiRXh0ZXJudCBkaWZmLXZlcmt0eWcgbWlzc2x5Y2thZGVzOiIKIAotIzogZ2l0azozODIwCisjOiBnaXRrOjM5NTgKIG1zZ2lkICJHaXRrIHZpZXcgZGVmaW5pdGlvbiIKIG1zZ3N0ciAiRGVmaW5pdGlvbiBhdiBHaXRrLXZ5IgogCi0jOiBnaXRrOjM4MjQKKyM6IGdpdGs6Mzk2MgogbXNnaWQgIlJlbWVtYmVyIHRoaXMgdmlldyIKIG1zZ3N0ciAiU3BhcmEgZGVubmEgdnkiCiAKLSM6IGdpdGs6MzgyNQorIzogZ2l0azozOTYzCiBtc2dpZCAiUmVmZXJlbmNlcyAoc3BhY2Ugc2VwYXJhdGVkIGxpc3QpOiIKIG1zZ3N0ciAiUmVmZXJlbnNlciAoYmxhbmtzdGVnc2F2ZGVsYWQgbGlzdGEpOiIKIAotIzogZ2l0azozODI2CisjOiBnaXRrOjM5NjQKIG1zZ2lkICJCcmFuY2hlcyAmIHRhZ3M6IgogbXNnc3RyICJHcmVuYXIgJiB0YWdnYXI6IgogCi0jOiBnaXRrOjM4MjcKKyM6IGdpdGs6Mzk2NQogbXNnaWQgIkFsbCByZWZzIgogbXNnc3RyICJBbGxhIHJlZmVyZW5zZXIiCiAKLSM6IGdpdGs6MzgyOAorIzogZ2l0azozOTY2CiBtc2dpZCAiQWxsIChsb2NhbCkgYnJhbmNoZXMiCiBtc2dzdHIgIkFsbGEgKGxva2FsYSkgZ3JlbmFyIgogCi0jOiBnaXRrOjM4MjkKKyM6IGdpdGs6Mzk2NwogbXNnaWQgIkFsbCB0YWdzIgogbXNnc3RyICJBbGxhIHRhZ2dhciIKIAotIzogZ2l0azozODMwCisjOiBnaXRrOjM5NjgKIG1zZ2lkICJBbGwgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIgogbXNnc3RyICJBbGxhIGZqw6RycnNww6VyYW5kZSBncmVuYXIiCiAKLSM6IGdpdGs6MzgzMQorIzogZ2l0azozOTY5CiBtc2dpZCAiQ29tbWl0IEluZm8gKHJlZ3VsYXIgZXhwcmVzc2lvbnMpOiIKIG1zZ3N0ciAiSW5jaGVja25pbmdzaW5mbyAocmVndWxqw6RyYSB1dHRyeWNrKToiCiAKLSM6IGdpdGs6MzgzMgorIzogZ2l0azozOTcwCiBtc2dpZCAiQXV0aG9yOiIKIG1zZ3N0ciAiRsO2cmZhdHRhcmU6IgogCi0jOiBnaXRrOjM4MzMKKyM6IGdpdGs6Mzk3MQogbXNnaWQgIkNvbW1pdHRlcjoiCiBtc2dzdHIgIkluY2hlY2thcmU6IgogCi0jOiBnaXRrOjM4MzQKKyM6IGdpdGs6Mzk3MgogbXNnaWQgIkNvbW1pdCBNZXNzYWdlOiIKIG1zZ3N0ciAiSW5jaGVja25pbmdzbWVkZGVsYW5kZToiCiAKLSM6IGdpdGs6MzgzNQorIzogZ2l0azozOTczCiBtc2dpZCAiTWF0Y2hlcyBhbGwgQ29tbWl0IEluZm8gY3JpdGVyaWEiCiBtc2dzdHIgIk1vdHN2YXJhciBhbGxhIGtyaXRlcmllciBmw7ZyIGluY2hlY2tuaW5nc2luZm8iCiAKLSM6IGdpdGs6MzgzNgorIzogZ2l0azozOTc0CiBtc2dpZCAiQ2hhbmdlcyB0byBGaWxlczoiCiBtc2dzdHIgIsOEbmRyaW5nYXIgYXYgZmlsZXI6IgogCi0jOiBnaXRrOjM4MzcKKyM6IGdpdGs6Mzk3NQogbXNnaWQgIkZpeGVkIFN0cmluZyIKIG1zZ3N0ciAiRmFzdCBzdHLDpG5nIgogCi0jOiBnaXRrOjM4MzgKKyM6IGdpdGs6Mzk3NgogbXNnaWQgIlJlZ3VsYXIgRXhwcmVzc2lvbiIKIG1zZ3N0ciAiUmVndWxqw6RydCB1dHRyeWNrIgogCi0jOiBnaXRrOjM4MzkKKyM6IGdpdGs6Mzk3NwogbXNnaWQgIlNlYXJjaCBzdHJpbmc6IgogbXNnc3RyICJTw7Zrc3Ryw6RuZzoiCiAKLSM6IGdpdGs6Mzg0MAorIzogZ2l0azozOTc4CiBtc2dpZCAiIgogIkNvbW1pdCBEYXRlcyAoXCIyIHdlZWtzIGFnb1wiLCBcIjIwMDktMDMtMTcgMTU6Mjc6MzhcIiwgXCJNYXJjaCAxNywgMjAwOSAiCiAiMTU6Mjc6MzhcIik6IgpAQCAtNjQ4LDIwMSArNjc4LDIwMSBAQAogIkluY2hlY2tpbmdzZGF0dW0gKFwiMiB3ZWVrcyBhZ29cIiwgXCIyMDA5LTAzLTE3IDE1OjI3OjM4XCIsIFwiTWFyY2ggMTcsIDIwMDkgIgogIjE1OjI3OjM4XCIpOiIKIAotIzogZ2l0azozODQxCisjOiBnaXRrOjM5NzkKIG1zZ2lkICJTaW5jZToiCiBtc2dzdHIgIkZyw6VuOiIKIAotIzogZ2l0azozODQyCisjOiBnaXRrOjM5ODAKIG1zZ2lkICJVbnRpbDoiCiBtc2dzdHIgIlRpbGw6IgogCi0jOiBnaXRrOjM4NDMKKyM6IGdpdGs6Mzk4MQogbXNnaWQgIkxpbWl0IGFuZC9vciBza2lwIGEgbnVtYmVyIG9mIHJldmlzaW9ucyAocG9zaXRpdmUgaW50ZWdlcik6IgogbXNnc3RyICJCZWdyw6Ruc2Egb2NoL2VsbGVyIGhvcHBhIMO2dmVyIGV0dCBhbnRhbCByZXZpc2lvbmVyIChwb3NpdGl2dCBoZWx0YWwpOiIKIAotIzogZ2l0azozODQ0CisjOiBnaXRrOjM5ODIKIG1zZ2lkICJOdW1iZXIgdG8gc2hvdzoiCiBtc2dzdHIgIkFudGFsIGF0dCB2aXNhOiIKIAotIzogZ2l0azozODQ1CisjOiBnaXRrOjM5ODMKIG1zZ2lkICJOdW1iZXIgdG8gc2tpcDoiCiBtc2dzdHIgIkFudGFsIGF0dCBob3BwYSDDtnZlcjoiCiAKLSM6IGdpdGs6Mzg0NgorIzogZ2l0azozOTg0CiBtc2dpZCAiTWlzY2VsbGFuZW91cyBvcHRpb25zOiIKIG1zZ3N0ciAiRGl2ZXJzZSBhbHRlcm5hdGl2OiIKIAotIzogZ2l0azozODQ3CisjOiBnaXRrOjM5ODUKIG1zZ2lkICJTdHJpY3RseSBzb3J0IGJ5IGRhdGUiCiBtc2dzdHIgIlN0cmlrdCBkYXR1bXNvcnRlcmluZyIKIAotIzogZ2l0azozODQ4CisjOiBnaXRrOjM5ODYKIG1zZ2lkICJNYXJrIGJyYW5jaCBzaWRlcyIKIG1zZ3N0ciAiTWFya2VyYSBzaWRvZ3JlbmFyIgogCi0jOiBnaXRrOjM4NDkKKyM6IGdpdGs6Mzk4NwogbXNnaWQgIkxpbWl0IHRvIGZpcnN0IHBhcmVudCIKIG1zZ3N0ciAiQmVncsOkbnNhIHRpbGwgZsO2cnN0YSBmw7Zyw6RsZGVyIgogCi0jOiBnaXRrOjM4NTAKKyM6IGdpdGs6Mzk4OAogbXNnaWQgIlNpbXBsZSBoaXN0b3J5IgogbXNnc3RyICJFbmtlbCBoaXN0b3JpayIKIAotIzogZ2l0azozODUxCisjOiBnaXRrOjM5ODkKIG1zZ2lkICJBZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBnaXQgbG9nOiIKIG1zZ3N0ciAiWXR0ZXJsaWdhcmUgYXJndW1lbnQgdGlsbCBnaXQgbG9nOiIKIAotIzogZ2l0azozODUyCisjOiBnaXRrOjM5OTAKIG1zZ2lkICJFbnRlciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZSwgb25lIHBlciBsaW5lOiIKIG1zZ3N0ciAiQW5nZSBmaWxlciBvY2gga2F0YWxvZ2VyIGF0dCB0YSBtZWQsIGVuIHBlciByYWQ6IgogCi0jOiBnaXRrOjM4NTMKKyM6IGdpdGs6Mzk5MQogbXNnaWQgIkNvbW1hbmQgdG8gZ2VuZXJhdGUgbW9yZSBjb21taXRzIHRvIGluY2x1ZGU6IgogbXNnc3RyICJLb21tYW5kbyBmw7ZyIGF0dCBnZW5lcmVyYSBmbGVyIGluY2hlY2tuaW5nYXIgYXR0IHRhIG1lZDoiCiAKLSM6IGdpdGs6Mzk3NworIzogZ2l0azo0MTE1CiBtc2dpZCAiR2l0azogZWRpdCB2aWV3IgogbXNnc3RyICJHaXRrOiByZWRpZ2VyYSB2eSIKIAotIzogZ2l0azozOTg1CisjOiBnaXRrOjQxMjMKIG1zZ2lkICItLSBjcml0ZXJpYSBmb3Igc2VsZWN0aW5nIHJldmlzaW9ucyIKIG1zZ3N0ciAiIC0ga3JpdGVyaWVyIGbDtnIgdmFsIGF2IHJldmlzaW9uZXIiCiAKLSM6IGdpdGs6Mzk5MAorIzogZ2l0azo0MTI4CiBtc2dpZCAiVmlldyBOYW1lIgogbXNnc3RyICJOYW1uIHDDpSB2eSIKIAotIzogZ2l0azo0MDY1CisjOiBnaXRrOjQyMDMKIG1zZ2lkICJBcHBseSAoRjUpIgogbXNnc3RyICJBbnbDpG5kIChGNSkiCiAKLSM6IGdpdGs6NDEwMworIzogZ2l0azo0MjQxCiBtc2dpZCAiRXJyb3IgaW4gY29tbWl0IHNlbGVjdGlvbiBhcmd1bWVudHM6IgogbXNnc3RyICJGZWwgaSBhcmd1bWVudCBmw7ZyIHZhbCBhdiBpbmNoZWNrbmluZ2FyOiIKIAotIzogZ2l0azo0MTU2IGdpdGs6NDIwOCBnaXRrOjQ2NTYgZ2l0azo0NjcwIGdpdGs6NTkzMSBnaXRrOjExNTUxIGdpdGs6MTE1NTIKKyM6IGdpdGs6NDI5NCBnaXRrOjQzNDYgZ2l0azo0ODA3IGdpdGs6NDgyMSBnaXRrOjYwODcgZ2l0azoxMjA0MSBnaXRrOjEyMDQyCiBtc2dpZCAiTm9uZSIKIG1zZ3N0ciAiSW5nZXQiCiAKLSM6IGdpdGs6NDYwNCBnaXRrOjY0NTEgZ2l0azo4MzA5IGdpdGs6ODMyNAotbXNnaWQgIkRhdGUiCi1tc2dzdHIgIkRhdHVtIgotCi0jOiBnaXRrOjQ2MDQgZ2l0azo2NDUxCi1tc2dpZCAiQ0RhdGUiCi1tc2dzdHIgIlNrYXBhdCBkYXR1bSIKLQotIzogZ2l0azo0NzUzIGdpdGs6NDc1OAorIzogZ2l0azo0OTA0IGdpdGs6NDkwOQogbXNnaWQgIkRlc2NlbmRhbnQiCiBtc2dzdHIgIkF2a29tbGluZyIKIAotIzogZ2l0azo0NzU0CisjOiBnaXRrOjQ5MDUKIG1zZ2lkICJOb3QgZGVzY2VuZGFudCIKIG1zZ3N0ciAiSW50ZSBhdmtvbWxpbmciCiAKLSM6IGdpdGs6NDc2MSBnaXRrOjQ3NjYKKyM6IGdpdGs6NDkxMiBnaXRrOjQ5MTcKIG1zZ2lkICJBbmNlc3RvciIKIG1zZ3N0ciAiRsO2cmZhZGVyIgogCi0jOiBnaXRrOjQ3NjIKKyM6IGdpdGs6NDkxMwogbXNnaWQgIk5vdCBhbmNlc3RvciIKIG1zZ3N0ciAiSW50ZSBmw7ZyZmFkZXIiCiAKLSM6IGdpdGs6NTA1MgorIzogZ2l0azo1MjAzCiBtc2dpZCAiTG9jYWwgY2hhbmdlcyBjaGVja2VkIGluIHRvIGluZGV4IGJ1dCBub3QgY29tbWl0dGVkIgogbXNnc3RyICJMb2thbGEgw6RuZHJpbmdhciBzcGFyYWRlIGkgaW5kZXhldCBtZW4gaW50ZSBpbmNoZWNrYWRlIgogCi0jOiBnaXRrOjUwODgKKyM6IGdpdGs6NTIzOQogbXNnaWQgIkxvY2FsIHVuY29tbWl0dGVkIGNoYW5nZXMsIG5vdCBjaGVja2VkIGluIHRvIGluZGV4IgogbXNnc3RyICJMb2thbGEgw6RuZHJpbmdhciwgZWogc3BhcmFkZSBpIGluZGV4ZXQiCiAKLSM6IGdpdGs6Njc2OQorIzogZ2l0azo2OTcxCittc2dpZCAiYW5kIG1hbnkgbW9yZSIKK21zZ3N0ciAibWVkIG3DpW5nYSBmbGVyYSIKKworIzogZ2l0azo2OTc0CiBtc2dpZCAibWFueSIKIG1zZ3N0ciAibcOlbmdhIgogCi0jOiBnaXRrOjY5NTIKKyM6IGdpdGs6NzE2MAogbXNnaWQgIlRhZ3M6IgogbXNnc3RyICJUYWdnYXI6IgogCi0jOiBnaXRrOjY5NjkgZ2l0azo2OTc1IGdpdGs6ODMwMgorIzogZ2l0azo3MTc3IGdpdGs6NzE4MyBnaXRrOjg1OTMKIG1zZ2lkICJQYXJlbnQiCiBtc2dzdHIgIkbDtnLDpGxkZXIiCiAKLSM6IGdpdGs6Njk4MAorIzogZ2l0azo3MTg4CiBtc2dpZCAiQ2hpbGQiCiBtc2dzdHIgIkJhcm4iCiAKLSM6IGdpdGs6Njk4OQorIzogZ2l0azo3MTk3CiBtc2dpZCAiQnJhbmNoIgogbXNnc3RyICJHcmVuIgogCi0jOiBnaXRrOjY5OTIKKyM6IGdpdGs6NzIwMAogbXNnaWQgIkZvbGxvd3MiCiBtc2dzdHIgIkbDtmxqZXIiCiAKLSM6IGdpdGs6Njk5NQorIzogZ2l0azo3MjAzCiBtc2dpZCAiUHJlY2VkZXMiCiBtc2dzdHIgIkbDtnJlZ8OlciIKIAotIzogZ2l0azo3NTMyCisjOiBnaXRrOjc3NDIKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJFcnJvciBnZXR0aW5nIGRpZmZzOiAlcyIKIG1zZ3N0ciAiRmVsIHZpZCBow6RtdG5pbmcgYXYgZGlmZjogJXMiCiAKLSM6IGdpdGs6ODEzMAorIzogZ2l0azo4NDE4CiBtc2dpZCAiR290bzoiCiBtc2dzdHIgIkfDpSB0aWxsOiIKIAotIzogZ2l0azo4MTUxCisjOiBnaXRrOjg0MzkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJTaG9ydCBTSEExIGlkICVzIGlzIGFtYmlndW91cyIKIG1zZ3N0ciAiRsO2cmtvcnRhdCBTSEExLWlkICVzIMOkciB0dmV0eWRpZ3QiCiAKLSM6IGdpdGs6ODE1OAorIzogZ2l0azo4NDQ2CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmV2aXNpb24gJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJSZXZpc2lvbmVuICVzIMOkciBpbnRlIGvDpG5kIgogCi0jOiBnaXRrOjgxNjgKKyM6IGdpdGs6ODQ1NgogIywgdGNsLWZvcm1hdAogbXNnaWQgIlNIQTEgaWQgJXMgaXMgbm90IGtub3duIgogbXNnc3RyICJTSEEtaWQ6dCAlcyDDpHIgaW50ZSBrw6RudCIKIAotIzogZ2l0azo4MTcwCisjOiBnaXRrOjg0NTgKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXZpc2lvbiAlcyBpcyBub3QgaW4gdGhlIGN1cnJlbnQgdmlldyIKIG1zZ3N0ciAiUmV2aXNpb25lbiAlcyBmaW5ucyBpbnRlIGkgZGVuIG51dmFyYW5kZSB2eW4iCiAKLSM6IGdpdGs6ODMxMgorIzogZ2l0azo4NjAwIGdpdGs6ODYxNQorbXNnaWQgIkRhdGUiCittc2dzdHIgIkRhdHVtIgorCisjOiBnaXRrOjg2MDMKIG1zZ2lkICJDaGlsZHJlbiIKIG1zZ3N0ciAiQmFybiIKIAotIzogZ2l0azo4MzcwCisjOiBnaXRrOjg2NjYKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJSZXNldCAlcyBicmFuY2ggdG8gaGVyZSIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGwgZ3JlbmVuICVzIGhpdCIKIAotIzogZ2l0azo4MzcyCisjOiBnaXRrOjg2NjgKIG1zZ2lkICJEZXRhY2hlZCBoZWFkOiBjYW4ndCByZXNldCIKIG1zZ3N0ciAiRnLDpW5rb3BwbGFkIGhlYWQ6IGthbiBpbnRlIMOldGVyc3TDpGxsYSIKIAotIzogZ2l0azo4NDgxIGdpdGs6ODQ4NworIzogZ2l0azo4NzczIGdpdGs6ODc3OQogbXNnaWQgIlNraXBwaW5nIG1lcmdlIGNvbW1pdCAiCiBtc2dzdHIgIkhvcHBhciDDtnZlciBzYW1tYW5zbGFnbmluZ3NpbmNoZWNrbmluZyAiCiAKLSM6IGdpdGs6ODQ5NiBnaXRrOjg1MDEKKyM6IGdpdGs6ODc4OCBnaXRrOjg3OTMKIG1zZ2lkICJFcnJvciBnZXR0aW5nIHBhdGNoIElEIGZvciAiCiBtc2dzdHIgIkZlbCB2aWQgaMOkbXRuaW5nIGF2IHBhdGNoLWlkIGbDtnIgIgogCi0jOiBnaXRrOjg0OTcgZ2l0azo4NTAyCisjOiBnaXRrOjg3ODkgZ2l0azo4Nzk0CiBtc2dpZCAiIC0gc3RvcHBpbmdcbiIKIG1zZ3N0ciAiIC0gc3Rhbm5hclxuIgogCi0jOiBnaXRrOjg1MDcgZ2l0azo4NTEwIGdpdGs6ODUxOCBnaXRrOjg1MzIgZ2l0azo4NTQxCisjOiBnaXRrOjg3OTkgZ2l0azo4ODAyIGdpdGs6ODgxMCBnaXRrOjg4MjQgZ2l0azo4ODMzCiBtc2dpZCAiQ29tbWl0ICIKIG1zZ3N0ciAiSW5jaGVja25pbmcgIgogCi0jOiBnaXRrOjg1MTEKKyM6IGdpdGs6ODgwMwogbXNnaWQgIiIKICIgaXMgdGhlIHNhbWUgcGF0Y2ggYXNcbiIKICIgICAgICAgIgpAQCAtODUwLDcgKzg4MCw3IEBACiAiIMOkciBzYW1tYSBwYXRjaCBzb21cbiIKICIgICAgICAgIgogCi0jOiBnaXRrOjg1MTkKKyM6IGdpdGs6ODgxMQogbXNnaWQgIiIKICIgZGlmZmVycyBmcm9tXG4iCiAiICAgICAgICIKQEAgLTg1OCw3ICs4ODgsNyBAQAogIiBza2lsamVyIHNpZyBmcsOlblxuIgogIiAgICAgICAiCiAKLSM6IGdpdGs6ODUyMQorIzogZ2l0azo4ODEzCiBtc2dpZCAiIgogIkRpZmYgb2YgY29tbWl0czpcbiIKICJcbiIKQEAgLTg2NiwxMzEgKzg5NiwxMzEgQEAKICJTa2lsbG5hZCBtZWxsYW4gaW5jaGVja25pbmdhcjpcbiIKICJcbiIKIAotIzogZ2l0azo4NTMzIGdpdGs6ODU0MgorIzogZ2l0azo4ODI1IGdpdGs6ODgzNAogIywgdGNsLWZvcm1hdAogbXNnaWQgIiBoYXMgJXMgY2hpbGRyZW4gLSBzdG9wcGluZ1xuIgogbXNnc3RyICIgaGFyICVzIGJhcm4gLSBzdGFubmFyXG4iCiAKLSM6IGdpdGs6ODU2MQorIzogZ2l0azo4ODUzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JpdGluZyBjb21taXQgdG8gZmlsZTogJXMiCiBtc2dzdHIgIkZlbCB2aWQgc2tyaXZuaW5nIGF2IGluY2hlY2tuaW5nIHRpbGwgZmlsOiAlcyIKIAotIzogZ2l0azo4NTY3CisjOiBnaXRrOjg4NTkKICMsIHRjbC1mb3JtYXQKIG1zZ2lkICJFcnJvciBkaWZmaW5nIGNvbW1pdHM6ICVzIgogbXNnc3RyICJGZWwgdmlkIGrDpG1mw7ZyZWxzZSBhdiBpbmNoZWNrbmluZ2FyOiAlcyIKIAotIzogZ2l0azo4NTk4CisjOiBnaXRrOjg5MDUKIG1zZ2lkICJUb3AiCiBtc2dzdHIgIlRvcHAiCiAKLSM6IGdpdGs6ODU5OQorIzogZ2l0azo4OTA2CiBtc2dpZCAiRnJvbSIKIG1zZ3N0ciAiRnLDpW4iCiAKLSM6IGdpdGs6ODYwNAorIzogZ2l0azo4OTExCiBtc2dpZCAiVG8iCiBtc2dzdHIgIlRpbGwiCiAKLSM6IGdpdGs6ODYyOAorIzogZ2l0azo4OTM1CiBtc2dpZCAiR2VuZXJhdGUgcGF0Y2giCiBtc2dzdHIgIkdlbmVyZXJhIHBhdGNoIgogCi0jOiBnaXRrOjg2MzAKKyM6IGdpdGs6ODkzNwogbXNnaWQgIkZyb206IgogbXNnc3RyICJGcsOlbjoiCiAKLSM6IGdpdGs6ODYzOQorIzogZ2l0azo4OTQ2CiBtc2dpZCAiVG86IgogbXNnc3RyICJUaWxsOiIKIAotIzogZ2l0azo4NjQ4CisjOiBnaXRrOjg5NTUKIG1zZ2lkICJSZXZlcnNlIgogbXNnc3RyICJWw6RuZCIKIAotIzogZ2l0azo4NjUwIGdpdGs6ODg0NQorIzogZ2l0azo4OTU3IGdpdGs6OTE1MwogbXNnaWQgIk91dHB1dCBmaWxlOiIKIG1zZ3N0ciAiVXRkYXRhZmlsOiIKIAotIzogZ2l0azo4NjU2CisjOiBnaXRrOjg5NjMKIG1zZ2lkICJHZW5lcmF0ZSIKIG1zZ3N0ciAiR2VuZXJlcmEiCiAKLSM6IGdpdGs6ODY5NAorIzogZ2l0azo5MDAxCiBtc2dpZCAiRXJyb3IgY3JlYXRpbmcgcGF0Y2g6IgogbXNnc3RyICJGZWwgdmlkIGdlbmVyZXJpbmcgYXYgcGF0Y2g6IgogCi0jOiBnaXRrOjg3MTcgZ2l0azo4ODMzIGdpdGs6ODg5MAorIzogZ2l0azo5MDI0IGdpdGs6OTE0MSBnaXRrOjkxOTgKIG1zZ2lkICJJRDoiCiBtc2dzdHIgIklkOiIKIAotIzogZ2l0azo4NzI2CisjOiBnaXRrOjkwMzMKIG1zZ2lkICJUYWcgbmFtZToiCiBtc2dzdHIgIlRhZ2duYW1uOiIKIAotIzogZ2l0azo4NzI5CisjOiBnaXRrOjkwMzYKIG1zZ2lkICJUYWcgbWVzc2FnZSBpcyBvcHRpb25hbCIKIG1zZ3N0ciAiVGFnZ21lZGRlbGFuZGV0IMOkciB2YWxmcml0dCIKIAotIzogZ2l0azo4NzMxCisjOiBnaXRrOjkwMzgKIG1zZ2lkICJUYWcgbWVzc2FnZToiCiBtc2dzdHIgIlRhZ2dtZWRkZWxhbmRlOiIKIAotIzogZ2l0azo4NzM1IGdpdGs6ODg5OQorIzogZ2l0azo5MDQyIGdpdGs6OTIwNwogbXNnaWQgIkNyZWF0ZSIKIG1zZ3N0ciAiU2thcGEiCiAKLSM6IGdpdGs6ODc1MworIzogZ2l0azo5MDYwCiBtc2dpZCAiTm8gdGFnIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICJJbmdldCB0YWdnbmFtbiBhbmdhdnMiCiAKLSM6IGdpdGs6ODc1NworIzogZ2l0azo5MDY0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiVGFnIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAiVGFnZ2VuIFwiJXNcIiBmaW5ucyByZWRhbiIKIAotIzogZ2l0azo4NzY3CisjOiBnaXRrOjkwNzQKIG1zZ2lkICJFcnJvciBjcmVhdGluZyB0YWc6IgogbXNnc3RyICJGZWwgdmlkIHNrYXBhbmRlIGF2IHRhZ2c6IgogCi0jOiBnaXRrOjg4NDIKKyM6IGdpdGs6OTE1MAogbXNnaWQgIkNvbW1hbmQ6IgogbXNnc3RyICJLb21tYW5kbzoiCiAKLSM6IGdpdGs6ODg1MAorIzogZ2l0azo5MTU4CiBtc2dpZCAiV3JpdGUiCiBtc2dzdHIgIlNrcml2IgogCi0jOiBnaXRrOjg4NjgKKyM6IGdpdGs6OTE3NgogbXNnaWQgIkVycm9yIHdyaXRpbmcgY29tbWl0OiIKIG1zZ3N0ciAiRmVsIHZpZCBza3Jpdm5pbmcgYXYgaW5jaGVja25pbmc6IgogCi0jOiBnaXRrOjg4OTUKKyM6IGdpdGs6OTIwMwogbXNnaWQgIk5hbWU6IgogbXNnc3RyICJOYW1uOiIKIAotIzogZ2l0azo4OTE4CisjOiBnaXRrOjkyMjYKIG1zZ2lkICJQbGVhc2Ugc3BlY2lmeSBhIG5hbWUgZm9yIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICJBbmdlIGV0dCBuYW1uIGbDtnIgZGVuIG55YSBncmVuZW4iCiAKLSM6IGdpdGs6ODkyMworIzogZ2l0azo5MjMxCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQnJhbmNoICclcycgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZT8iCiBtc2dzdHIgIkdyZW5lbiBcIiVzXCIgZmlubnMgcmVkYW4uIFNrcml2YSDDtnZlcj8iCiAKLSM6IGdpdGs6ODk4OQorIzogZ2l0azo5Mjk4CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gYnJhbmNoICVzIC0tIHJlYWxseSByZS1hcHBseSBpdD8iCiBtc2dzdHIgIiIKICJJbmNoZWNrbmluZ2VuICVzIGZpbm5zIHJlZGFuIHDDpSBncmVuZW4gJXMgLS0gc2thbGwgZGVuIHZlcmtsaWdlbiBhcHBsaWNlcmFzICIKICJww6Ugbnl0dD8iCiAKLSM6IGdpdGs6ODk5NAorIzogZ2l0azo5MzAzCiBtc2dpZCAiQ2hlcnJ5LXBpY2tpbmciCiBtc2dzdHIgIlBsb2NrYXIiCiAKLSM6IGdpdGs6OTAwMworIzogZ2l0azo5MzEyCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIkNoZXJyeS1waWNrIGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXMgdG8gZmlsZSAnJXMnLlxuIgpAQCAtMTAwMCw3ICsxMDMwLDcgQEAKICJDaGVja2EgaW4sIMOldGVyc3TDpGxsIGVsbGVyIHNwYXJhIHVuZGFuIChzdGFzaCkgZGluYSDDpG5kcmluZ2FyIG9jaCBmw7Zyc8O2ayAiCiAiaWdlbi4iCiAKLSM6IGdpdGs6OTAwOQorIzogZ2l0azo5MzE4CiBtc2dpZCAiIgogIkNoZXJyeS1waWNrIGZhaWxlZCBiZWNhdXNlIG9mIG1lcmdlIGNvbmZsaWN0LlxuIgogIkRvIHlvdSB3aXNoIHRvIHJ1biBnaXQgY2l0b29sIHRvIHJlc29sdmUgaXQ/IgpAQCAtMTAwOCwzMiArMTAzOCw1OSBAQAogIkNoZXJyeS1waWNrIG1pc3NseWNrYWRlcyBww6UgZ3J1bmQgYXYgZW4gc2FtbWFuc2xhZ25pbmdza29uZmxpa3QuXG4iCiAiVmlsbCBkdSBrw7ZyYSBnaXQgY2l0b29sIGbDtnIgYXR0IGzDtnNhIGRlbj8iCiAKLSM6IGdpdGs6OTAyNQorIzogZ2l0azo5MzM0IGdpdGs6OTM5MgogbXNnaWQgIk5vIGNoYW5nZXMgY29tbWl0dGVkIgogbXNnc3RyICJJbmdhIMOkbmRyaW5nYXIgaW5jaGVja2FkZSIKIAotIzogZ2l0azo5MDUxCisjOiBnaXRrOjkzNjEKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaXMgbm90IGluY2x1ZGVkIGluIGJyYW5jaCAlcyAtLSByZWFsbHkgcmV2ZXJ0IGl0PyIKK21zZ3N0ciAiSW5jaGVja25pbmdlbiAlcyBmaW5ucyBpbnRlIHDDpSBncmVuZW4gJXMgLS0gdmlsbCBkdSB2ZXJrbGlnZW4gw6VuZ3JhPyIKKworIzogZ2l0azo5MzY2Cittc2dpZCAiUmV2ZXJ0aW5nIgorbXNnc3RyICLDhW5ncmFyIgorCisjOiBnaXRrOjkzNzQKKyMsIHRjbC1mb3JtYXQKK21zZ2lkICIiCisiUmV2ZXJ0IGZhaWxlZCBiZWNhdXNlIG9mIGxvY2FsIGNoYW5nZXMgdG8gdGhlIGZvbGxvd2luZyBmaWxlczolcyBQbGVhc2UgIgorImNvbW1pdCwgcmVzZXQgb3Igc3Rhc2ggIHlvdXIgY2hhbmdlcyBhbmQgdHJ5IGFnYWluLiIKK21zZ3N0ciAiIgorIk1pc3NseWNrYWRlcyBtZWQgYXR0IMOlbmdyYSBww6UgZ3J1bmQgYXYgbG9rYWxhIMOkbmRyaW5nYXIgaSBmw7ZsamFuZGUgZmlsZXI6JXMuICIKKyJDaGVja2EgaW4sIMOldGVyc3TDpGxsIGVsbGVyIHNwYXJhIHVuZGFuIChzdGFzaCkgZGluYSDDpG5kcmluZ2FyIG9jaCBmw7Zyc8O2ayAiCisiaWdlbi4iCisKKyM6IGdpdGs6OTM3OAorbXNnaWQgIiIKKyJSZXZlcnQgZmFpbGVkIGJlY2F1c2Ugb2YgbWVyZ2UgY29uZmxpY3QuXG4iCisiIERvIHlvdSB3aXNoIHRvIHJ1biBnaXQgY2l0b29sIHRvIHJlc29sdmUgaXQ/IgorbXNnc3RyICIiCisiTWlzc2x5Y2thZGVzIG1lZCBhdHQgw6VuZ3JhIHDDpSBncnVuZCBhdiBlbiBzYW1tYW5zbGFnbmluZ3Nrb25mbGlrdC5cbiIKKyIgVmlsbCBkdSBrw7ZyYSBnaXQgY2l0b29sIGbDtnIgYXR0IGzDtnNhIGRlbj8iCisKKyM6IGdpdGs6OTQyMQogbXNnaWQgIkNvbmZpcm0gcmVzZXQiCiBtc2dzdHIgIkJla3LDpGZ0YSDDpXRlcnN0w6RsbG5pbmciCiAKLSM6IGdpdGs6OTA1MworIzogZ2l0azo5NDIzCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICVzIHRvICVzPyIKIG1zZ3N0ciAiw4V0ZXJzdMOkbGxhIGdyZW5lbiAlcyB0aWxsICVzPyIKIAotIzogZ2l0azo5MDU1CisjOiBnaXRrOjk0MjUKIG1zZ2lkICJSZXNldCB0eXBlOiIKIG1zZ3N0ciAiVHlwIGF2IMOldGVyc3TDpGxsbmluZzoiCiAKLSM6IGdpdGs6OTA1OAorIzogZ2l0azo5NDI4CiBtc2dpZCAiU29mdDogTGVhdmUgd29ya2luZyB0cmVlIGFuZCBpbmRleCB1bnRvdWNoZWQiCiBtc2dzdHIgIk1qdWs6IFLDtnIgaW50ZSB1dGNoZWNrbmluZyBvY2ggaW5kZXgiCiAKLSM6IGdpdGs6OTA2MQorIzogZ2l0azo5NDMxCiBtc2dpZCAiTWl4ZWQ6IExlYXZlIHdvcmtpbmcgdHJlZSB1bnRvdWNoZWQsIHJlc2V0IGluZGV4IgogbXNnc3RyICJCbGFuZGFkOiBSw7ZyIGludGUgdXRjaGVja25pbmcsIMOldGVyc3TDpGxsIGluZGV4IgogCi0jOiBnaXRrOjkwNjQKKyM6IGdpdGs6OTQzNAogbXNnaWQgIiIKICJIYXJkOiBSZXNldCB3b3JraW5nIHRyZWUgYW5kIGluZGV4XG4iCiAiKGRpc2NhcmQgQUxMIGxvY2FsIGNoYW5nZXMpIgpAQCAtMTA0MSwxOSArMTA5OCwxOSBAQAogIkjDpXJkOiDDhXRlcnN0w6RsbCB1dGNoZWNrbmluZyBvY2ggaW5kZXhcbiIKICIoZsO2cmthc3RhciBBTExBIGxva2FsYSDDpG5kcmluZ2FyKSIKIAotIzogZ2l0azo5MDgxCisjOiBnaXRrOjk0NTEKIG1zZ2lkICJSZXNldHRpbmciCiBtc2dzdHIgIsOFdGVyc3TDpGxsZXIiCiAKLSM6IGdpdGs6OTE0MQorIzogZ2l0azo5NTExCiBtc2dpZCAiQ2hlY2tpbmcgb3V0IgogbXNnc3RyICJDaGVja2FyIHV0IgogCi0jOiBnaXRrOjkxOTQKKyM6IGdpdGs6OTU2NAogbXNnaWQgIkNhbm5vdCBkZWxldGUgdGhlIGN1cnJlbnRseSBjaGVja2VkLW91dCBicmFuY2giCiBtc2dzdHIgIkthbiBpbnRlIHRhIGJvcnQgZGVuIGp1c3QgbnUgdXRjaGVja2FkZSBncmVuZW4iCiAKLSM6IGdpdGs6OTIwMAorIzogZ2l0azo5NTcwCiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBjb21taXRzIG9uIGJyYW5jaCAlcyBhcmVuJ3Qgb24gYW55IG90aGVyIGJyYW5jaC5cbiIKQEAgLTEwNjIsMTYgKzExMTksMTYgQEAKICJJbmNoZWNrbmluZ2FybmEgcMOlIGdyZW5lbiAlcyBleGlzdGVyYXIgaW50ZSBww6UgbsOlZ29uIGFubmFuIGdyZW4uXG4iCiAiVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBncmVuZW4gJXM/IgogCi0jOiBnaXRrOjkyMzEKKyM6IGdpdGs6OTYwMQogIywgdGNsLWZvcm1hdAogbXNnaWQgIlRhZ3MgYW5kIGhlYWRzOiAlcyIKIG1zZ3N0ciAiVGFnZ2FyIG9jaCBodXZ1ZGVuOiAlcyIKIAotIzogZ2l0azo5MjQ2CisjOiBnaXRrOjk2MTYKIG1zZ2lkICJGaWx0ZXIiCiBtc2dzdHIgIkZpbHRlciIKIAotIzogZ2l0azo5NTQxCisjOiBnaXRrOjk5MTIKIG1zZ2lkICIiCiAiRXJyb3IgcmVhZGluZyBjb21taXQgdG9wb2xvZ3kgaW5mb3JtYXRpb247IGJyYW5jaCBhbmQgcHJlY2VkaW5nL2ZvbGxvd2luZyAiCiAidGFnIGluZm9ybWF0aW9uIHdpbGwgYmUgaW5jb21wbGV0ZS4iCkBAIC0xMDc5LDIwNiArMTEzNiwyMjMgQEAKICJGZWwgdmlkIGzDpHNuaW5nIGF2IGluZm9ybWF0aW9uIG9tIGluY2hlY2tuaW5nc3RvcG9sb2dpOyBpbmZvcm1hdGlvbiBvbSAiCiAiZ3JlbmFyIG9jaCBmw7ZyZWfDpWVuZGUvc2VuYXJlIHRhZ2dhciBrb21tZXIgaW50ZSB2YXJhIGtvbXBsZXR0LiIKIAotIzogZ2l0azoxMDUyNworIzogZ2l0azoxMDg5OQogbXNnaWQgIlRhZyIKIG1zZ3N0ciAiVGFnZyIKIAotIzogZ2l0azoxMDUyNworIzogZ2l0azoxMDg5OQogbXNnaWQgIklkIgogbXNnc3RyICJJZCIKIAotIzogZ2l0azoxMDU3NgorIzogZ2l0azoxMDk0OAogbXNnaWQgIkdpdGsgZm9udCBjaG9vc2VyIgogbXNnc3RyICJUZWNrZW5zbml0dHN2w6RsamFyZSBmw7ZyIEdpdGsiCiAKLSM6IGdpdGs6MTA1OTMKKyM6IGdpdGs6MTA5NjUKIG1zZ2lkICJCIgogbXNnc3RyICJGIgogCi0jOiBnaXRrOjEwNTk2CisjOiBnaXRrOjEwOTY4CiBtc2dpZCAiSSIKIG1zZ3N0ciAiSyIKIAotIzogZ2l0azoxMDcxNAotbXNnaWQgIkdpdGsgcHJlZmVyZW5jZXMiCi1tc2dzdHIgIkluc3TDpGxsbmluZ2FyIGbDtnIgR2l0ayIKLQotIzogZ2l0azoxMDcxNgorIzogZ2l0azoxMTA4NgogbXNnaWQgIkNvbW1pdCBsaXN0IGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGluY2hlY2tuaW5nc2xpc3R2eSIKIAotIzogZ2l0azoxMDcxOQorIzogZ2l0azoxMTA4OQogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKGxpbmVzKSIKIG1zZ3N0ciAiTWF4aW1hbCBncmFmYnJlZGQgKHJhZGVyKSIKIAotIzogZ2l0azoxMDcyMgorIzogZ2l0azoxMTA5MgogIywgdGNsLWZvcm1hdAogbXNnaWQgIk1heGltdW0gZ3JhcGggd2lkdGggKCUgb2YgcGFuZSkiCiBtc2dzdHIgIk1heGltYWwgZ3JhZmJyZWRkICglIGF2IHJ1dGEpIgogCi0jOiBnaXRrOjEwNzI1CisjOiBnaXRrOjExMDk1CiBtc2dpZCAiU2hvdyBsb2NhbCBjaGFuZ2VzIgogbXNnc3RyICJWaXNhIGxva2FsYSDDpG5kcmluZ2FyIgogCi0jOiBnaXRrOjEwNzI4Ci1tc2dpZCAiQXV0by1zZWxlY3QgU0hBMSIKLW1zZ3N0ciAiVsOkbGogU0hBMSBhdXRvbWF0aXNrdCIKKyM6IGdpdGs6MTEwOTgKK21zZ2lkICJBdXRvLXNlbGVjdCBTSEExIChsZW5ndGgpIgorbXNnc3RyICJWw6RsaiBTSEExIChsw6RuZ2QpIGF1dG9tYXRpc2t0IgogCi0jOiBnaXRrOjEwNzMxCisjOiBnaXRrOjExMTAyCiBtc2dpZCAiSGlkZSByZW1vdGUgcmVmcyIKIG1zZ3N0ciAiRMO2bGogZmrDpHJyLXJlZmVyZW5zZXIiCiAKLSM6IGdpdGs6MTA3MzUKKyM6IGdpdGs6MTExMDYKIG1zZ2lkICJEaWZmIGRpc3BsYXkgb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGRpZmZ2eSIKIAotIzogZ2l0azoxMDczNworIzogZ2l0azoxMTEwOAogbXNnaWQgIlRhYiBzcGFjaW5nIgogbXNnc3RyICJCbGFua3N0ZWcgZsO2ciB0YWJ1bGF0b3J0ZWNrZW4iCiAKLSM6IGdpdGs6MTA3NDAKLW1zZ2lkICJEaXNwbGF5IG5lYXJieSB0YWdzIgotbXNnc3RyICJWaXNhIG7DpHJsaWdnYW5kZSB0YWdnYXIiCisjOiBnaXRrOjExMTExCittc2dpZCAiRGlzcGxheSBuZWFyYnkgdGFncy9oZWFkcyIKK21zZ3N0ciAiVmlzYSBuw6RybGlnZ2FuZGUgdGFnZ2FyL2h1dnVkZW4iCiAKLSM6IGdpdGs6MTA3NDMKKyM6IGdpdGs6MTExMTQKK21zZ2lkICJNYXhpbXVtICMgdGFncy9oZWFkcyB0byBzaG93IgorbXNnc3RyICJNYXhpbWFsdCBhbnRhbCB0YWdnYXIvaHV2dWRlbiBhdHQgdmlzYSIKKworIzogZ2l0azoxMTExNwogbXNnaWQgIkxpbWl0IGRpZmZzIHRvIGxpc3RlZCBwYXRocyIKIG1zZ3N0ciAiQmVncsOkbnNhIGRpZmYgdGlsbCBsaXN0YWRlIHPDtmt2w6RnYXIiCiAKLSM6IGdpdGs6MTA3NDYKKyM6IGdpdGs6MTExMjAKIG1zZ2lkICJTdXBwb3J0IHBlci1maWxlIGVuY29kaW5ncyIKIG1zZ3N0ciAiU3TDtmQgZsO2ciBmaWxzcGVjaWZpa2EgdGVja2Vua29kbmluZ2FyIgogCi0jOiBnaXRrOjEwNzUyIGdpdGs6MTA4MzIKKyM6IGdpdGs6MTExMjYgZ2l0azoxMTI3MwogbXNnaWQgIkV4dGVybmFsIGRpZmYgdG9vbCIKIG1zZ3N0ciAiRXh0ZXJudCBkaWZmLXZlcmt0eWciCiAKLSM6IGdpdGs6MTA3NTMKKyM6IGdpdGs6MTExMjcKIG1zZ2lkICJDaG9vc2UuLi4iCiBtc2dzdHIgIlbDpGxqLi4uIgogCi0jOiBnaXRrOjEwNzU4CisjOiBnaXRrOjExMTMyCiBtc2dpZCAiR2VuZXJhbCBvcHRpb25zIgogbXNnc3RyICJBbGxtw6RubmEgaW5zdMOkbGxuaW5nYXIiCiAKLSM6IGdpdGs6MTA3NjEKKyM6IGdpdGs6MTExMzUKIG1zZ2lkICJVc2UgdGhlbWVkIHdpZGdldHMiCiBtc2dzdHIgIkFudsOkbmQgdGVtYSBww6UgZsO2bnN0ZXJlbGVtZW50IgogCi0jOiBnaXRrOjEwNzYzCisjOiBnaXRrOjExMTM3CiBtc2dpZCAiKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KSIKIG1zZ3N0ciAiKMOkbmRyaW5nZW4ga3LDpHZlciBvbXN0YXJ0KSIKIAotIzogZ2l0azoxMDc2NQorIzogZ2l0azoxMTEzOQogbXNnaWQgIihjdXJyZW50bHkgdW5hdmFpbGFibGUpIgogbXNnc3RyICIoZsO2ciBuw6RydmFyYW5kZSBpbnRlIHRpbGxnw6RuZ2xpZ3QpIgogCi0jOiBnaXRrOjEwNzY5CisjOiBnaXRrOjExMTUwCiBtc2dpZCAiQ29sb3JzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIkbDpHJnZXI6IHRyeWNrIGbDtnIgYXR0IHbDpGxqYSIKIAotIzogZ2l0azoxMDc3MgorIzogZ2l0azoxMTE1MwogbXNnaWQgIkludGVyZmFjZSIKIG1zZ3N0ciAiR3LDpG5zc25pdHQiCiAKLSM6IGdpdGs6MTA3NzMKKyM6IGdpdGs6MTExNTQKIG1zZ2lkICJpbnRlcmZhY2UiCiBtc2dzdHIgImdyw6Ruc3NuaXR0IgogCi0jOiBnaXRrOjEwNzc2CisjOiBnaXRrOjExMTU3CiBtc2dpZCAiQmFja2dyb3VuZCIKIG1zZ3N0ciAiQmFrZ3J1bmQiCiAKLSM6IGdpdGs6MTA3NzcgZ2l0azoxMDgwNworIzogZ2l0azoxMTE1OCBnaXRrOjExMTg4CiBtc2dpZCAiYmFja2dyb3VuZCIKIG1zZ3N0ciAiYmFrZ3J1bmQiCiAKLSM6IGdpdGs6MTA3ODAKKyM6IGdpdGs6MTExNjEKIG1zZ2lkICJGb3JlZ3JvdW5kIgogbXNnc3RyICJGw7ZyZ3J1bmQiCiAKLSM6IGdpdGs6MTA3ODEKKyM6IGdpdGs6MTExNjIKIG1zZ2lkICJmb3JlZ3JvdW5kIgogbXNnc3RyICJmw7ZyZ3J1bmQiCiAKLSM6IGdpdGs6MTA3ODQKKyM6IGdpdGs6MTExNjUKIG1zZ2lkICJEaWZmOiBvbGQgbGluZXMiCiBtc2dzdHIgIkRpZmY6IGdhbWxhIHJhZGVyIgogCi0jOiBnaXRrOjEwNzg1CisjOiBnaXRrOjExMTY2CiBtc2dpZCAiZGlmZiBvbGQgbGluZXMiCiBtc2dzdHIgImRpZmYgZ2FtbGEgcmFkZXIiCiAKLSM6IGdpdGs6MTA3ODkKKyM6IGdpdGs6MTExNzAKIG1zZ2lkICJEaWZmOiBuZXcgbGluZXMiCiBtc2dzdHIgIkRpZmY6IG55YSByYWRlciIKIAotIzogZ2l0azoxMDc5MAorIzogZ2l0azoxMTE3MQogbXNnaWQgImRpZmYgbmV3IGxpbmVzIgogbXNnc3RyICJkaWZmIG55YSByYWRlciIKIAotIzogZ2l0azoxMDc5NAorIzogZ2l0azoxMTE3NQogbXNnaWQgIkRpZmY6IGh1bmsgaGVhZGVyIgogbXNnc3RyICJEaWZmOiBkZWxodXZ1ZCIKIAotIzogZ2l0azoxMDc5NgorIzogZ2l0azoxMTE3NwogbXNnaWQgImRpZmYgaHVuayBoZWFkZXIiCiBtc2dzdHIgImRpZmYgZGVsaHV2dWQiCiAKLSM6IGdpdGs6MTA4MDAKKyM6IGdpdGs6MTExODEKIG1zZ2lkICJNYXJrZWQgbGluZSBiZyIKIG1zZ3N0ciAiTWFya2VyYWQgcmFkIGJha2dydW5kIgogCi0jOiBnaXRrOjEwODAyCisjOiBnaXRrOjExMTgzCiBtc2dpZCAibWFya2VkIGxpbmUgYmFja2dyb3VuZCIKIG1zZ3N0ciAibWFya2VyYWQgcmFkIGJha2dydW5kIgogCi0jOiBnaXRrOjEwODA2CisjOiBnaXRrOjExMTg3CiBtc2dpZCAiU2VsZWN0IGJnIgogbXNnc3RyICJNYXJrZXJhZCBiYWtncnVuZCIKIAotIzogZ2l0azoxMDgxMAorIzogZ2l0azoxMTE5NgogbXNnaWQgIkZvbnRzOiBwcmVzcyB0byBjaG9vc2UiCiBtc2dzdHIgIlRlY2tlbnNuaXR0OiB0cnljayBmw7ZyIGF0dCB2w6RsamEiCiAKLSM6IGdpdGs6MTA4MTIKKyM6IGdpdGs6MTExOTgKIG1zZ2lkICJNYWluIGZvbnQiCiBtc2dzdHIgIkh1dnVkdGVja2Vuc25pdHQiCiAKLSM6IGdpdGs6MTA4MTMKKyM6IGdpdGs6MTExOTkKIG1zZ2lkICJEaWZmIGRpc3BsYXkgZm9udCIKIG1zZ3N0ciAiVGVja2Vuc25pdHQgZsO2ciBkaWZmdmlzbmluZyIKIAotIzogZ2l0azoxMDgxNAorIzogZ2l0azoxMTIwMAogbXNnaWQgIlVzZXIgaW50ZXJmYWNlIGZvbnQiCiBtc2dzdHIgIlRlY2tlbnNuaXR0IGbDtnIgYW52w6RuZGFyZ3LDpG5zc25pdHQiCiAKLSM6IGdpdGs6MTA4NDIKKyM6IGdpdGs6MTEyMjIKK21zZ2lkICJHaXRrIHByZWZlcmVuY2VzIgorbXNnc3RyICJJbnN0w6RsbG5pbmdhciBmw7ZyIEdpdGsiCisKKyM6IGdpdGs6MTEyMzEKK21zZ2lkICJHZW5lcmFsIgorbXNnc3RyICJBbGxtw6RudCIKKworIzogZ2l0azoxMTIzMgorbXNnaWQgIkNvbG9ycyIKK21zZ3N0ciAiRsOkcmdlciIKKworIzogZ2l0azoxMTIzMworbXNnaWQgIkZvbnRzIgorbXNnc3RyICJUZWNrZW5zbml0dCIKKworIzogZ2l0azoxMTI4MwogIywgdGNsLWZvcm1hdAogbXNnaWQgIkdpdGs6IGNob29zZSBjb2xvciBmb3IgJXMiCiBtc2dzdHIgIkdpdGs6IHbDpGxqIGbDpHJnIGbDtnIgJXMiCiAKLSM6IGdpdGs6MTE0NDUKKyM6IGdpdGs6MTE5MzcKIG1zZ2lkICJDYW5ub3QgZmluZCBhIGdpdCByZXBvc2l0b3J5IGhlcmUuIgogbXNnc3RyICJIaXR0YXIgaW5nZXQgZ2l0LWFya2l2IGjDpHIuIgogCi0jOiBnaXRrOjExNDQ5Ci0jLCB0Y2wtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IGZpbmQgdGhlIGdpdCBkaXJlY3RvcnkgXCIlc1wiLiIKLW1zZ3N0ciAiSGl0dGFyIGludGUgZ2l0LWthdGFsb2dlbiBcIiVzXCIuIgotCi0jOiBnaXRrOjExNDk2CisjOiBnaXRrOjExOTg0CiAjLCB0Y2wtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIGFyZ3VtZW50ICclcyc6IGJvdGggcmV2aXNpb24gYW5kIGZpbGVuYW1lIgogbXNnc3RyICJUdmV0eWRpZ3QgYXJndW1lbnQgXCIlc1wiOiBiw6VkZSByZXZpc2lvbiBvY2ggZmlsbmFtbiIKIAotIzogZ2l0azoxMTUwOAorIzogZ2l0azoxMTk5NgogbXNnaWQgIkJhZCBhcmd1bWVudHMgdG8gZ2l0azoiCiBtc2dzdHIgIkZlbGFrdGlnYSBhcmd1bWVudCB0aWxsIGdpdGs6IgogCi0jOiBnaXRrOjExNjA0CisjOiBnaXRrOjEyMDk5CiBtc2dpZCAiQ29tbWFuZCBsaW5lIgogbXNnc3RyICJLb21tYW5kb3JhZCIKIAorI34gbXNnaWQgIkNEYXRlIgorI34gbXNnc3RyICJTa2FwYXQgZGF0dW0iCisKKyN+IG1zZ2lkICJDYW5ub3QgZmluZCB0aGUgZ2l0IGRpcmVjdG9yeSBcIiVzXCIuIgorI34gbXNnc3RyICJIaXR0YXIgaW50ZSBnaXQta2F0YWxvZ2VuIFwiJXNcIi4iCisKICN+IG1zZ2lkICJTSEExIElEOiAiCiAjfiBtc2dzdHIgIlNIQTEtaWQ6ICIKIApkaWZmIC0tZ2l0IGEvZ2l0d2ViL0lOU1RBTEwgYi9naXR3ZWIvSU5TVEFMTAppbmRleCA2ZDQ1NDA2Li40MDhmMjg1IDEwMDY0NAotLS0gYS9naXR3ZWIvSU5TVEFMTAorKysgYi9naXR3ZWIvSU5TVEFMTApAQCAtMjQzLDE0ICsyNDMsMTEgQEAKICAgR0lUV0VCX0NPTkZJR19TWVNURU0gYnVpbGQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSwgYW5kIG92ZXJyaWRlIGl0CiAgIHRocm91Z2ggdGhlIEdJVFdFQl9DT05GSUdfU1lTVEVNIGVudmlyb25tZW50IHZhcmlhYmxlLgogCi0gIE5vdGUgdGhhdCBpZiBwZXItaW5zdGFuY2UgY29uZmlndXJhdGlvbiBmaWxlIGV4aXN0cywgdGhlbiBzeXN0ZW0td2lkZQotICBjb25maWd1cmF0aW9uIGlzIF9ub3QgdXNlZCBhdCBhbGxfLiAgVGhpcyBpcyBxdWl0ZSB1bnR5cGljYWwgYW5kIHN1cHJpc2luZwotICBiZWhhdmlvci4gIE9uIHRoZSBvdGhlciBoYW5kIGNoYW5naW5nIGN1cnJlbnQgYmVoYXZpb3Igd291bGQgYnJlYWsgYmFja3dhcmRzCi0gIGNvbXBhdGliaWxpdHkgYW5kIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgY2hhbmdlcyBpbiBnaXR3ZWIgYmVoYXZpb3IuCi0gIFRoZXJlZm9yZSBnaXR3ZWIgYWxzbyBsb29rcyBmb3IgY29tbW9uIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZSwKLSAgbm9ybWFsbHkgL2V0Yy9naXR3ZWItY29tbW9uLmNvbmYgKHNldCBkdXJpbmcgYnVpbGQgdGltZSB1c2luZyBidWlsZCB0aW1lCi0gIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgR0lUV0VCX0NPTkZJR19DT01NT04sIHNldCBpdCBhdCBydW50aW1lIHVzaW5nCi0gIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZSkuICBTZXR0aW5ncyBmcm9tIHBlci1pbnN0YW5jZSBvcgorICBOb3RlIHRoYXQgdGhlIEdJVFdFQl9DT05GSUdfU1lTVEVNIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcworICBvbmx5IHVzZWQgZm9yIGluc3RhbmNlcyB0aGF0IGxhY2sgcGVyLWluc3RhbmNlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgWW91IGNhbiB1c2UgR0lUV0VCX0NPTkZJR19DT01NT04gY29tbW9uIHN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24KKyAgZmlsZSAobm9ybWFsbHkgL2V0Yy9naXR3ZWItY29tbW9uLmNvbmYpIHRvIGtlZXAgY29tbW9uIGRlZmF1bHQKKyAgc2V0dGluZ3MgdGhhdCBhcHBseSB0byBhbGwgaW5zdGFuY2VzLiAgU2V0dGluZ3MgZnJvbSBwZXItaW5zdGFuY2Ugb3IKICAgc3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBmaWxlIG92ZXJyaWRlIHRob3NlIGZyb20gY29tbW9uIHN5c3RlbS13aWRlCiAgIGNvbmZpZ3VyYXRpb24gZmlsZS4KIApkaWZmIC0tZ2l0IGEvZ2l0d2ViL2dpdHdlYi5wZXJsIGIvZ2l0d2ViL2dpdHdlYi5wZXJsCmluZGV4IDEzMDkxOTYuLjhkNjlhZGEgMTAwNzU1Ci0tLSBhL2dpdHdlYi9naXR3ZWIucGVybAorKysgYi9naXR3ZWIvZ2l0d2ViLnBlcmwKQEAgLTY4Myw3ICs2ODMsNyBAQAogCW91ciAkR0lUV0VCX0NPTkZJR19TWVNURU0gPSAkRU5WeydHSVRXRUJfQ09ORklHX1NZU1RFTSd9IHx8ICIrK0dJVFdFQl9DT05GSUdfU1lTVEVNKysiOwogCW91ciAkR0lUV0VCX0NPTkZJR19DT01NT04gPSAkRU5WeydHSVRXRUJfQ09ORklHX0NPTU1PTid9IHx8ICIrK0dJVFdFQl9DT05GSUdfQ09NTU9OKysiOwogCi0JIyBQcm90ZWN0IGFnYWlucyBkdXBsaWNhdGlvbnMgb2YgZmlsZSBuYW1lcywgdG8gbm90IHJlYWQgY29uZmlnIHR3aWNlLgorCSMgUHJvdGVjdCBhZ2FpbnN0IGR1cGxpY2F0aW9ucyBvZiBmaWxlIG5hbWVzLCB0byBub3QgcmVhZCBjb25maWcgdHdpY2UuCiAJIyBPbmx5IG9uZSBvZiAkR0lUV0VCX0NPTkZJRyBhbmQgJEdJVFdFQl9DT05GSUdfU1lTVEVNIGlzIHVzZWQsIHNvCiAJIyB0aGVyZSBwb3NzaWJpbGl0eSBvZiBkdXBsaWNhdGlvbiBvZiBmaWxlbmFtZSB0aGVyZSBkb2Vzbid0IG1hdHRlci4KIAkkR0lUV0VCX0NPTkZJRyA9ICIiICAgICAgICBpZiAoJEdJVFdFQl9DT05GSUcgZXEgJEdJVFdFQl9DT05GSUdfQ09NTU9OKTsKQEAgLTEwODYsNyArMTA4Niw3IEBACiAJb3VyICRzZWFyY2hfdXNlX3JlZ2V4cCA9ICRpbnB1dF9wYXJhbXN7J3NlYXJjaF91c2VfcmVnZXhwJ307CiAKIAlvdXIgJHNlYXJjaHRleHQgPSAkaW5wdXRfcGFyYW1zeydzZWFyY2h0ZXh0J307Ci0Jb3VyICRzZWFyY2hfcmVnZXhwOworCW91ciAkc2VhcmNoX3JlZ2V4cCA9IHVuZGVmOwogCWlmIChkZWZpbmVkICRzZWFyY2h0ZXh0KSB7CiAJCWlmIChsZW5ndGgoJHNlYXJjaHRleHQpIDwgMikgewogCQkJZGllX2Vycm9yKDQwMywgIkF0IGxlYXN0IHR3byBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCBmb3Igc2VhcmNoIHBhcmFtZXRlciIpOwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAKIAogCSMgdG8gYXZvaWQgaW5maW5pdGUgbG9vcCB3aGVyZSBlcnJvciBvY2N1cnMgaW4gZGllX2Vycm9yLAogCSMgY2hhbmdlIGhhbmRsZXIgdG8gZGVmYXVsdCBoYW5kbGVyLCBkaXNhYmxpbmcgaGFuZGxlX2Vycm9yc19odG1sCi0Jc2V0X21lc3NhZ2UoIkVycm9yIG9jY3VyZWQgd2hlbiBpbnNpZGUgZGllX2Vycm9yOlxuJG1zZyIpOworCXNldF9tZXNzYWdlKCJFcnJvciBvY2N1cnJlZCB3aGVuIGluc2lkZSBkaWVfZXJyb3I6XG4kbXNnIik7CiAKIAkjIHlvdSBjYW5ub3QganVtcCBvdXQgb2YgZGllX2Vycm9yIHdoZW4gY2FsbGVkIGFzIGVycm9yIGhhbmRsZXI7CiAJIyB0aGUgc3Vicm91dGluZSBzZXQgdmlhIENHSTo6Q2FycDo6c2V0X21lc3NhZ2UgaXMgY2FsbGVkIF9hZnRlcl8KQEAgLTc0ODUsNyArNzQ4NSw3IEBACiAJCXN5c3RlbShnaXRfY21kKCksICJjYXQtZmlsZSIsICctZScsICRoYXNoX2Jhc2UpID09IDAKIAkJCW9yIGRpZV9lcnJvcig0MDQsICJCYXNlIG9iamVjdCBkb2VzIG5vdCBleGlzdCIpOwogCi0JCSMgaGVyZSBlcnJvcnMgc2hvdWxkIG5vdCBoYXBlbgorCQkjIGhlcmUgZXJyb3JzIHNob3VsZCBub3QgaGFwcGVuCiAJCW9wZW4gbXkgJGZkLCAiLXwiLCBnaXRfY21kKCksICJscy10cmVlIiwgJGhhc2hfYmFzZSwgIi0tIiwgJGZpbGVfbmFtZQogCQkJb3IgZGllX2Vycm9yKDUwMCwgIk9wZW4gZ2l0LWxzLXRyZWUgZmFpbGVkIik7CiAJCW15ICRsaW5lID0gPCRmZD47CmRpZmYgLS1naXQgYS9ncGctaW50ZXJmYWNlLmMgYi9ncGctaW50ZXJmYWNlLmMKaW5kZXggNWYxNDJmNi4uOGIwZTg3NCAxMDA2NDQKLS0tIGEvZ3BnLWludGVyZmFjZS5jCisrKyBiL2dwZy1pbnRlcmZhY2UuYwpAQCAtOTYsMzUgKzk2LDM5IEBACiAvKgogICogUnVuICJncGciIHRvIHNlZSBpZiB0aGUgcGF5bG9hZCBtYXRjaGVzIHRoZSBkZXRhY2hlZCBzaWduYXR1cmUuCiAgKiBncGdfb3V0cHV0LCB3aGVuIHNldCwgcmVjZWl2ZXMgdGhlIGRpYWdub3N0aWMgb3V0cHV0IGZyb20gR1BHLgorICogZ3BnX3N0YXR1cywgd2hlbiBzZXQsIHJlY2VpdmVzIHRoZSBzdGF0dXMgb3V0cHV0IGZyb20gR1BHLgogICovCiBpbnQgdmVyaWZ5X3NpZ25lZF9idWZmZXIoY29uc3QgY2hhciAqcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRfc2l6ZSwKIAkJCSBjb25zdCBjaGFyICpzaWduYXR1cmUsIHNpemVfdCBzaWduYXR1cmVfc2l6ZSwKLQkJCSBzdHJ1Y3Qgc3RyYnVmICpncGdfb3V0cHV0KQorCQkJIHN0cnVjdCBzdHJidWYgKmdwZ19vdXRwdXQsIHN0cnVjdCBzdHJidWYgKmdwZ19zdGF0dXMpCiB7CiAJc3RydWN0IGNoaWxkX3Byb2Nlc3MgZ3BnOwotCWNvbnN0IGNoYXIgKmFyZ3NfZ3BnW10gPSB7TlVMTCwgIi0tdmVyaWZ5IiwgIkZJTEUiLCAiLSIsIE5VTEx9OworCWNvbnN0IGNoYXIgKmFyZ3NfZ3BnW10gPSB7TlVMTCwgIi0tc3RhdHVzLWZkPTEiLCAiLS12ZXJpZnkiLCAiRklMRSIsICItIiwgTlVMTH07CiAJY2hhciBwYXRoW1BBVEhfTUFYXTsKIAlpbnQgZmQsIHJldDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgKnBidWYgPSAmYnVmOwogCiAJYXJnc19ncGdbMF0gPSBncGdfcHJvZ3JhbTsKIAlmZCA9IGdpdF9ta3N0ZW1wKHBhdGgsIFBBVEhfTUFYLCAiLmdpdF92dGFnX3RtcFhYWFhYWCIpOwogCWlmIChmZCA8IDApCi0JCXJldHVybiBlcnJvcigiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIsCisJCXJldHVybiBlcnJvcihfKCJjb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSBmaWxlICclcyc6ICVzIiksCiAJCQkgICAgIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CiAJaWYgKHdyaXRlX2luX2Z1bGwoZmQsIHNpZ25hdHVyZSwgc2lnbmF0dXJlX3NpemUpIDwgMCkKLQkJcmV0dXJuIGVycm9yKCJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiLAorCQlyZXR1cm4gZXJyb3IoXygiZmFpbGVkIHdyaXRpbmcgZGV0YWNoZWQgc2lnbmF0dXJlIHRvICclcyc6ICVzIiksCiAJCQkgICAgIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CiAJY2xvc2UoZmQpOwogCiAJbWVtc2V0KCZncGcsIDAsIHNpemVvZihncGcpKTsKIAlncGcuYXJndiA9IGFyZ3NfZ3BnOwogCWdwZy5pbiA9IC0xOworCWdwZy5vdXQgPSAtMTsKIAlpZiAoZ3BnX291dHB1dCkKIAkJZ3BnLmVyciA9IC0xOwotCWFyZ3NfZ3BnWzJdID0gcGF0aDsKKwlhcmdzX2dwZ1szXSA9IHBhdGg7CiAJaWYgKHN0YXJ0X2NvbW1hbmQoJmdwZykpIHsKIAkJdW5saW5rKHBhdGgpOwotCQlyZXR1cm4gZXJyb3IoImNvdWxkIG5vdCBydW4gZ3BnLiIpOworCQlyZXR1cm4gZXJyb3IoXygiY291bGQgbm90IHJ1biBncGcuIikpOwogCX0KIAogCXdyaXRlX2luX2Z1bGwoZ3BnLmluLCBwYXlsb2FkLCBwYXlsb2FkX3NpemUpOwpAQCAtMTM0LDkgKzEzOCwxNyBAQAogCQlzdHJidWZfcmVhZChncGdfb3V0cHV0LCBncGcuZXJyLCAwKTsKIAkJY2xvc2UoZ3BnLmVycik7CiAJfQorCWlmIChncGdfc3RhdHVzKQorCQlwYnVmID0gZ3BnX3N0YXR1czsKKwlzdHJidWZfcmVhZChwYnVmLCBncGcub3V0LCAwKTsKKwljbG9zZShncGcub3V0KTsKKwogCXJldCA9IGZpbmlzaF9jb21tYW5kKCZncGcpOwogCiAJdW5saW5rX29yX3dhcm4ocGF0aCk7CiAKKwlyZXQgfD0gIXN0cnN0cihwYnVmLT5idWYsICJcbltHTlVQRzpdIEdPT0RTSUcgIik7CisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7IC8qIG5vIG1hdHRlciBpdCB3YXMgdXNlZCBvciBub3QgKi8KKwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9ncGctaW50ZXJmYWNlLmggYi9ncGctaW50ZXJmYWNlLmgKaW5kZXggYjljMzYwOC4uYTg1Y2I1YiAxMDA2NDQKLS0tIGEvZ3BnLWludGVyZmFjZS5oCisrKyBiL2dwZy1pbnRlcmZhY2UuaApAQCAtMSw4ICsxLDIwIEBACiAjaWZuZGVmIEdQR19JTlRFUkZBQ0VfSAogI2RlZmluZSBHUEdfSU5URVJGQUNFX0gKIAorc3RydWN0IHNpZ25hdHVyZV9jaGVjayB7CisJY2hhciAqZ3BnX291dHB1dDsKKwljaGFyICpncGdfc3RhdHVzOworCWNoYXIgcmVzdWx0OyAvKiAwIChub3QgY2hlY2tlZCksCisJCSAgICAgICogTiAoY2hlY2tlZCBidXQgbm8gZnVydGhlciByZXN1bHQpLAorCQkgICAgICAqIFUgKHVudHJ1c3RlZCBnb29kKSwKKwkJICAgICAgKiBHIChnb29kKQorCQkgICAgICAqIEIgKGJhZCkgKi8KKwljaGFyICpzaWduZXI7CisJY2hhciAqa2V5OworfTsKKwogZXh0ZXJuIGludCBzaWduX2J1ZmZlcihzdHJ1Y3Qgc3RyYnVmICpidWZmZXIsIHN0cnVjdCBzdHJidWYgKnNpZ25hdHVyZSwgY29uc3QgY2hhciAqc2lnbmluZ19rZXkpOwotZXh0ZXJuIGludCB2ZXJpZnlfc2lnbmVkX2J1ZmZlcihjb25zdCBjaGFyICpwYXlsb2FkLCBzaXplX3QgcGF5bG9hZF9zaXplLCBjb25zdCBjaGFyICpzaWduYXR1cmUsIHNpemVfdCBzaWduYXR1cmVfc2l6ZSwgc3RydWN0IHN0cmJ1ZiAqZ3BnX291dHB1dCk7CitleHRlcm4gaW50IHZlcmlmeV9zaWduZWRfYnVmZmVyKGNvbnN0IGNoYXIgKnBheWxvYWQsIHNpemVfdCBwYXlsb2FkX3NpemUsIGNvbnN0IGNoYXIgKnNpZ25hdHVyZSwgc2l6ZV90IHNpZ25hdHVyZV9zaXplLCBzdHJ1Y3Qgc3RyYnVmICpncGdfb3V0cHV0LCBzdHJ1Y3Qgc3RyYnVmICpncGdfc3RhdHVzKTsKIGV4dGVybiBpbnQgZ2l0X2dwZ19jb25maWcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CiBleHRlcm4gdm9pZCBzZXRfc2lnbmluZ19rZXkoY29uc3QgY2hhciAqKTsKIGV4dGVybiBjb25zdCBjaGFyICpnZXRfc2lnbmluZ19rZXkodm9pZCk7CmRpZmYgLS1naXQgYS9ncmFwaC5jIGIvZ3JhcGguYwppbmRleCAzOTFhNzEyLi5iMjRkMDRjIDEwMDY0NAotLS0gYS9ncmFwaC5jCisrKyBiL2dyYXBoLmMKQEAgLTgsMzQgKzgsNiBAQAogLyogSW50ZXJuYWwgQVBJICovCiAKIC8qCi0gKiBPdXRwdXQgdGhlIG5leHQgbGluZSBmb3IgYSBncmFwaC4KLSAqIFRoaXMgZm9ybWF0cyB0aGUgbmV4dCBncmFwaCBsaW5lIGludG8gdGhlIHNwZWNpZmllZCBzdHJidWYuICBJdCBpcyBub3QKLSAqIHRlcm1pbmF0ZWQgd2l0aCBhIG5ld2xpbmUuCi0gKgotICogUmV0dXJucyAxIGlmIHRoZSBsaW5lIGluY2x1ZGVzIHRoZSBjdXJyZW50IGNvbW1pdCwgYW5kIDAgb3RoZXJ3aXNlLgotICogZ3JhcGhfbmV4dF9saW5lKCkgd2lsbCByZXR1cm4gMSBleGFjdGx5IG9uY2UgZm9yIGVhY2ggdGltZQotICogZ3JhcGhfdXBkYXRlKCkgaXMgY2FsbGVkLgotICovCi1zdGF0aWMgaW50IGdyYXBoX25leHRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpOwotCi0vKgotICogU2V0IHVwIGEgY3VzdG9tIHNjaGVtZSBmb3IgY29sdW1uIGNvbG9ycy4KLSAqCi0gKiBUaGUgZGVmYXVsdCBjb2x1bW4gY29sb3Igc2NoZW1lIGluc2VydHMgQU5TSSBjb2xvciBlc2NhcGVzIHRvIGNvbG9yaXplCi0gKiB0aGUgZ3JhcGguIFRoZSB2YXJpb3VzIGNvbG9yIGVzY2FwZXMgYXJlIHN0b3JlZCBpbiBhbiBhcnJheSBvZiBzdHJpbmdzCi0gKiB3aGVyZSBlYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIGEgY29sb3IsIGV4Y2VwdCBmb3IgdGhlIGxhc3QgZW50cnksCi0gKiB3aGljaCBkZW5vdGVzIHRoZSBlc2NhcGUgZm9yIHJlc2V0dGluZyB0aGUgY29sb3IgYmFjayB0byB0aGUgZGVmYXVsdC4KLSAqIFdoZW4gZ2VuZXJhdGluZyB0aGUgZ3JhcGgsIHN0cmluZ3MgZnJvbSB0aGlzIGFycmF5IGFyZSBpbnNlcnRlZCBiZWZvcmUKLSAqIGFuZCBhZnRlciB0aGUgdmFyaW91cyBjb2x1bW4gY2hhcmFjdGVycy4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gZW5hYmxlIGEgY3VzdG9tIGFycmF5IG9mIGNvbG9yIGVzY2FwZXMuCi0gKiBUaGUgJ2NvbG9yc19tYXgnIGFyZ3VtZW50IGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCAicmVzZXQiIGVudHJ5LgotICoKLSAqIFRoaXMgZnVuY3Rpb25zIG11c3QgYmUgY2FsbGVkIEJFRk9SRSBncmFwaF9pbml0KCkgaXMgY2FsbGVkLgotICovCi1zdGF0aWMgdm9pZCBncmFwaF9zZXRfY29sdW1uX2NvbG9ycyhjb25zdCBjaGFyICoqY29sb3JzLCB1bnNpZ25lZCBzaG9ydCBjb2xvcnNfbWF4KTsKLQotLyoKICAqIE91dHB1dCBhIHBhZGRpbmcgbGluZSBpbiB0aGUgZ3JhcGguCiAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gZ3JhcGhfbmV4dF9saW5lKCkuICBIb3dldmVyLCBpdCBpcyBndWFyYW50ZWVkIHRvCiAgKiBuZXZlciBwcmludCB0aGUgY3VycmVudCBjb21taXQgbGluZS4gIEluc3RlYWQsIGlmIHRoZSBjb21taXQgbGluZSBpcwpAQCAtOTAsNyArNjIsNyBAQAogc3RhdGljIGNvbnN0IGNoYXIgKipjb2x1bW5fY29sb3JzOwogc3RhdGljIHVuc2lnbmVkIHNob3J0IGNvbHVtbl9jb2xvcnNfbWF4OwogCi1zdGF0aWMgdm9pZCBncmFwaF9zZXRfY29sdW1uX2NvbG9ycyhjb25zdCBjaGFyICoqY29sb3JzLCB1bnNpZ25lZCBzaG9ydCBjb2xvcnNfbWF4KQordm9pZCBncmFwaF9zZXRfY29sdW1uX2NvbG9ycyhjb25zdCBjaGFyICoqY29sb3JzLCB1bnNpZ25lZCBzaG9ydCBjb2xvcnNfbWF4KQogewogCWNvbHVtbl9jb2xvcnMgPSBjb2xvcnM7CiAJY29sdW1uX2NvbG9yc19tYXggPSBjb2xvcnNfbWF4OwpAQCAtMTE0NCw3ICsxMTE2LDcgQEAKIAkJZ3JhcGhfdXBkYXRlX3N0YXRlKGdyYXBoLCBHUkFQSF9QQURESU5HKTsKIH0KIAotc3RhdGljIGludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQoraW50IGdyYXBoX25leHRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCiB7CiAJc3dpdGNoIChncmFwaC0+c3RhdGUpIHsKIAljYXNlIEdSQVBIX1BBRERJTkc6CkBAIC0xMjI3LDYgKzExOTksMTYgQEAKIAlpZiAoIWdyYXBoKQogCQlyZXR1cm47CiAKKwkvKgorCSAqIFdoZW4gc2hvd2luZyBhIGRpZmYgb2YgYSBtZXJnZSBhZ2FpbnN0IGVhY2ggb2YgaXRzIHBhcmVudHMsIHdlCisJICogYXJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIHBhcmVudCB3aXRob3V0IGdyYXBoX3VwZGF0ZSBoYXZpbmcgYmVlbgorCSAqIGNhbGxlZC4gIEluIHRoaXMgY2FzZSwgc2ltcGx5IG91dHB1dCBhIHNpbmdsZSBwYWRkaW5nIGxpbmUuCisJICovCisJaWYgKGdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChncmFwaCkpIHsKKwkJZ3JhcGhfc2hvd19wYWRkaW5nKGdyYXBoKTsKKwkJc2hvd25fY29tbWl0X2xpbmUgPSAxOworCX0KKwogCXdoaWxlICghc2hvd25fY29tbWl0X2xpbmUgJiYgIWdyYXBoX2lzX2NvbW1pdF9maW5pc2hlZChncmFwaCkpIHsKIAkJc2hvd25fY29tbWl0X2xpbmUgPSBncmFwaF9uZXh0X2xpbmUoZ3JhcGgsICZtc2didWYpOwogCQlmd3JpdGUobXNnYnVmLmJ1Ziwgc2l6ZW9mKGNoYXIpLCBtc2didWYubGVuLCBzdGRvdXQpOwpkaWZmIC0tZ2l0IGEvZ3JhcGguaCBiL2dyYXBoLmgKaW5kZXggMTliMGY2Ni4uMGJlNjJiZCAxMDA2NDQKLS0tIGEvZ3JhcGguaAorKysgYi9ncmFwaC5oCkBAIC00LDYgKzQsMjUgQEAKIC8qIEEgZ3JhcGggaXMgYSBwb2ludGVyIHRvIHRoaXMgb3BhcXVlIHN0cnVjdHVyZSAqLwogc3RydWN0IGdpdF9ncmFwaDsKIAorLyoKKyAqIFNldCB1cCBhIGN1c3RvbSBzY2hlbWUgZm9yIGNvbHVtbiBjb2xvcnMuCisgKgorICogVGhlIGRlZmF1bHQgY29sdW1uIGNvbG9yIHNjaGVtZSBpbnNlcnRzIEFOU0kgY29sb3IgZXNjYXBlcyB0byBjb2xvcml6ZQorICogdGhlIGdyYXBoLiBUaGUgdmFyaW91cyBjb2xvciBlc2NhcGVzIGFyZSBzdG9yZWQgaW4gYW4gYXJyYXkgb2Ygc3RyaW5ncworICogd2hlcmUgZWFjaCBlbnRyeSBjb3JyZXNwb25kcyB0byBhIGNvbG9yLCBleGNlcHQgZm9yIHRoZSBsYXN0IGVudHJ5LAorICogd2hpY2ggZGVub3RlcyB0aGUgZXNjYXBlIGZvciByZXNldHRpbmcgdGhlIGNvbG9yIGJhY2sgdG8gdGhlIGRlZmF1bHQuCisgKiBXaGVuIGdlbmVyYXRpbmcgdGhlIGdyYXBoLCBzdHJpbmdzIGZyb20gdGhpcyBhcnJheSBhcmUgaW5zZXJ0ZWQgYmVmb3JlCisgKiBhbmQgYWZ0ZXIgdGhlIHZhcmlvdXMgY29sdW1uIGNoYXJhY3RlcnMuCisgKgorICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGVuYWJsZSBhIGN1c3RvbSBhcnJheSBvZiBjb2xvciBlc2NhcGVzLgorICogVGhlICdjb2xvcnNfbWF4JyBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgInJlc2V0IiBlbnRyeS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9ucyBtdXN0IGJlIGNhbGxlZCBCRUZPUkUgZ3JhcGhfaW5pdCgpIGlzIGNhbGxlZC4KKyAqCisgKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzbid0IHVzZWQgaW4gR2l0IG91dHNpZGUgZ3JhcGguYyBidXQgaXQgaXMgdXNlZAorICogYnkgQ0dpdCAoaHR0cDovL2dpdC56eDJjNC5jb20vY2dpdC8pIHRvIHVzZSBIVE1MIGZvciBjb2xvcnMuCisgKi8KK3ZvaWQgZ3JhcGhfc2V0X2NvbHVtbl9jb2xvcnMoY29uc3QgY2hhciAqKmNvbG9ycywgdW5zaWduZWQgc2hvcnQgY29sb3JzX21heCk7CiAKIC8qCiAgKiBDcmVhdGUgYSBuZXcgc3RydWN0IGdpdF9ncmFwaC4KQEAgLTMzLDYgKzUyLDIwIEBACiAgKi8KIGludCBncmFwaF9pc19jb21taXRfZmluaXNoZWQoc3RydWN0IGdpdF9ncmFwaCBjb25zdCAqZ3JhcGgpOwogCisvKgorICogT3V0cHV0IHRoZSBuZXh0IGxpbmUgZm9yIGEgZ3JhcGguCisgKiBUaGlzIGZvcm1hdHMgdGhlIG5leHQgZ3JhcGggbGluZSBpbnRvIHRoZSBzcGVjaWZpZWQgc3RyYnVmLiAgSXQgaXMgbm90CisgKiB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lLgorICoKKyAqIFJldHVybnMgMSBpZiB0aGUgbGluZSBpbmNsdWRlcyB0aGUgY3VycmVudCBjb21taXQsIGFuZCAwIG90aGVyd2lzZS4KKyAqIGdyYXBoX25leHRfbGluZSgpIHdpbGwgcmV0dXJuIDEgZXhhY3RseSBvbmNlIGZvciBlYWNoIHRpbWUKKyAqIGdyYXBoX3VwZGF0ZSgpIGlzIGNhbGxlZC4KKyAqCisgKiBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzbid0IHVzZWQgaW4gR2l0IG91dHNpZGUgZ3JhcGguYyBidXQgaXQgaXMgdXNlZAorICogYnkgQ0dpdCAoaHR0cDovL2dpdC56eDJjNC5jb20vY2dpdC8pIHRvIHdyYXAgSFRNTCBhcm91bmQgZ3JhcGggbGluZXMuCisgKi8KK2ludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKTsKKwogCiAvKgogICogZ3JhcGhfc2hvd18qOiBoZWxwZXIgZnVuY3Rpb25zIGZvciBwcmludGluZyB0byBzdGRvdXQKZGlmZiAtLWdpdCBhL2dyZXAuYyBiL2dyZXAuYwppbmRleCA0YmQxYjhiLi5iYjU0OGNhIDEwMDY0NAotLS0gYS9ncmVwLmMKKysrIGIvZ3JlcC5jCkBAIC02MjUsNyArNjI1LDggQEAKIAlmb3IgKHAgPSBvcHQtPmhlYWRlcl9saXN0OyBwOyBwID0gcC0+bmV4dCkgewogCQlpZiAocC0+dG9rZW4gIT0gR1JFUF9QQVRURVJOX0hFQUQpCiAJCQlkaWUoImJ1ZzogYSBub24taGVhZGVyIHBhdHRlcm4gaW4gZ3JlcCBoZWFkZXIgbGlzdC4iKTsKLQkJaWYgKHAtPmZpZWxkIDwgMCB8fCBHUkVQX0hFQURFUl9GSUVMRF9NQVggPD0gcC0+ZmllbGQpCisJCWlmIChwLT5maWVsZCA8IEdSRVBfSEVBREVSX0ZJRUxEX01JTiB8fAorCQkgICAgR1JFUF9IRUFERVJfRklFTERfTUFYIDw9IHAtPmZpZWxkKQogCQkJZGllKCJidWc6IHVua25vd24gaGVhZGVyIGZpZWxkICVkIiwgcC0+ZmllbGQpOwogCQljb21waWxlX3JlZ2V4cChwLCBvcHQpOwogCX0KZGlmZiAtLWdpdCBhL2dyZXAuaCBiL2dyZXAuaAppbmRleCA4ZmM4NTRmLi5lNGExZGY1IDEwMDY0NAotLS0gYS9ncmVwLmgKKysrIGIvZ3JlcC5oCkBAIC0yOCw3ICsyOCw4IEBACiB9OwogCiBlbnVtIGdyZXBfaGVhZGVyX2ZpZWxkIHsKLQlHUkVQX0hFQURFUl9BVVRIT1IgPSAwLAorCUdSRVBfSEVBREVSX0ZJRUxEX01JTiA9IDAsCisJR1JFUF9IRUFERVJfQVVUSE9SID0gR1JFUF9IRUFERVJfRklFTERfTUlOLAogCUdSRVBfSEVBREVSX0NPTU1JVFRFUiwKIAlHUkVQX0hFQURFUl9SRUZMT0csCiAKZGlmZiAtLWdpdCBhL2hhc2guaCBiL2hhc2guaAppbmRleCBiODc1Y2U2Li4xZDQzYWMwIDEwMDY0NAotLS0gYS9oYXNoLmgKKysrIGIvaGFzaC5oCkBAIC00MCw0ICs0MCwxMSBAQAogCXRhYmxlLT5hcnJheSA9IE5VTEw7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBwcmVhbGxvY2F0ZV9oYXNoKHN0cnVjdCBoYXNoX3RhYmxlICp0YWJsZSwgdW5zaWduZWQgaW50IGVsdHMpCit7CisJYXNzZXJ0KHRhYmxlLT5zaXplID09IDAgJiYgdGFibGUtPm5yID09IDAgJiYgdGFibGUtPmFycmF5ID09IE5VTEwpOworCXRhYmxlLT5zaXplID0gZWx0cyAqIDI7CisJdGFibGUtPmFycmF5ID0geGNhbGxvYyhzaXplb2Yoc3RydWN0IGhhc2hfdGFibGVfZW50cnkpLCB0YWJsZS0+c2l6ZSk7Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaGVscC5jIGIvaGVscC5jCmluZGV4IDFkZmEwYjAuLjA4YzU0ZWYgMTAwNjQ0Ci0tLSBhL2hlbHAuYworKysgYi9oZWxwLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJjb2x1bW4uaCIKICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisjaW5jbHVkZSAicmVmcy5oIgogCiB2b2lkIGFkZF9jbWRuYW1lKHN0cnVjdCBjbWRuYW1lcyAqY21kcywgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbikKIHsKQEAgLTEwNiw3ICsxMDcsNyBAQAogCSAgICAhU19JU1JFRyhzdC5zdF9tb2RlKSkKIAkJcmV0dXJuIDA7CiAKLSNpZiBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCisjaWYgZGVmaW5lZChHSVRfV0lORE9XU19OQVRJVkUpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKICNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCiBpZiAoKHN0LnN0X21vZGUgJiBTX0lYVVNSKSA9PSAwKQogI2VuZGlmCkBAIC0zOTcsNiArMzk4LDU5IEBACiAKIGludCBjbWRfdmVyc2lvbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKKwkvKgorCSAqIFRoZSBmb3JtYXQgb2YgdGhpcyBzdHJpbmcgc2hvdWxkIGJlIGtlcHQgc3RhYmxlIGZvciBjb21wYXRpYmlsaXR5CisJICogd2l0aCBleHRlcm5hbCBwcm9qZWN0cyB0aGF0IHJlbHkgb24gdGhlIG91dHB1dCBvZiAiZ2l0IHZlcnNpb24iLgorCSAqLwogCXByaW50ZigiZ2l0IHZlcnNpb24gJXNcbiIsIGdpdF92ZXJzaW9uX3N0cmluZyk7CiAJcmV0dXJuIDA7CiB9CisKK3N0cnVjdCBzaW1pbGFyX3JlZl9jYiB7CisJY29uc3QgY2hhciAqYmFzZV9yZWY7CisJc3RydWN0IHN0cmluZ19saXN0ICpzaW1pbGFyX3JlZnM7Cit9OworCitzdGF0aWMgaW50IGFwcGVuZF9zaW1pbGFyX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJICAgICAgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBzaW1pbGFyX3JlZl9jYiAqY2IgPSAoc3RydWN0IHNpbWlsYXJfcmVmX2NiICopKGNiX2RhdGEpOworCWNoYXIgKmJyYW5jaCA9IHN0cnJjaHIocmVmbmFtZSwgJy8nKSArIDE7CisJLyogQSByZW1vdGUgYnJhbmNoIG9mIHRoZSBzYW1lIG5hbWUgaXMgZGVlbWVkIHNpbWlsYXIgKi8KKwlpZiAoIXByZWZpeGNtcChyZWZuYW1lLCAicmVmcy9yZW1vdGVzLyIpICYmCisJICAgICFzdHJjbXAoYnJhbmNoLCBjYi0+YmFzZV9yZWYpKQorCQlzdHJpbmdfbGlzdF9hcHBlbmQoY2ItPnNpbWlsYXJfcmVmcywKKwkJCQkgICByZWZuYW1lICsgc3RybGVuKCJyZWZzL3JlbW90ZXMvIikpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGd1ZXNzX3JlZnMoY29uc3QgY2hhciAqcmVmKQoreworCXN0cnVjdCBzaW1pbGFyX3JlZl9jYiByZWZfY2I7CisJc3RydWN0IHN0cmluZ19saXN0IHNpbWlsYXJfcmVmcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisKKwlyZWZfY2IuYmFzZV9yZWYgPSByZWY7CisJcmVmX2NiLnNpbWlsYXJfcmVmcyA9ICZzaW1pbGFyX3JlZnM7CisJZm9yX2VhY2hfcmVmKGFwcGVuZF9zaW1pbGFyX3JlZiwgJnJlZl9jYik7CisJcmV0dXJuIHNpbWlsYXJfcmVmczsKK30KKwordm9pZCBoZWxwX3Vua25vd25fcmVmKGNvbnN0IGNoYXIgKnJlZiwgY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICplcnJvcikKK3sKKwlpbnQgaTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc3VnZ2VzdGVkX3JlZnMgPSBndWVzc19yZWZzKHJlZik7CisKKwlmcHJpbnRmX2xuKHN0ZGVyciwgXygiJXM6ICVzIC0gJXMiKSwgY21kLCByZWYsIGVycm9yKTsKKworCWlmIChzdWdnZXN0ZWRfcmVmcy5uciA+IDApIHsKKwkJZnByaW50Zl9sbihzdGRlcnIsCisJCQkgICBRXygiXG5EaWQgeW91IG1lYW4gdGhpcz8iLAorCQkJICAgICAgIlxuRGlkIHlvdSBtZWFuIG9uZSBvZiB0aGVzZT8iLAorCQkJICAgICAgc3VnZ2VzdGVkX3JlZnMubnIpKTsKKwkJZm9yIChpID0gMDsgaSA8IHN1Z2dlc3RlZF9yZWZzLm5yOyBpKyspCisJCQlmcHJpbnRmKHN0ZGVyciwgIlx0JXNcbiIsIHN1Z2dlc3RlZF9yZWZzLml0ZW1zW2ldLnN0cmluZyk7CisJfQorCisJc3RyaW5nX2xpc3RfY2xlYXIoJnN1Z2dlc3RlZF9yZWZzLCAwKTsKKwlleGl0KDEpOworfQpkaWZmIC0tZ2l0IGEvaGVscC5oIGIvaGVscC5oCmluZGV4IDBhZTVhMTIuLmIyMWQ3YzkgMTAwNjQ0Ci0tLSBhL2hlbHAuaAorKysgYi9oZWxwLmgKQEAgLTI3LDQgKzI3LDkgQEAKIGV4dGVybiBpbnQgaXNfaW5fY21kbGlzdChzdHJ1Y3QgY21kbmFtZXMgKmNtZHMsIGNvbnN0IGNoYXIgKm5hbWUpOwogZXh0ZXJuIHZvaWQgbGlzdF9jb21tYW5kcyh1bnNpZ25lZCBpbnQgY29sb3B0cywgc3RydWN0IGNtZG5hbWVzICptYWluX2NtZHMsIHN0cnVjdCBjbWRuYW1lcyAqb3RoZXJfY21kcyk7CiAKKy8qCisgKiBjYWxsIHRoaXMgdG8gZGllKCksIHdoZW4gaXQgaXMgc3VzcGVjdGVkIHRoYXQgdGhlIHVzZXIgbWlzdHlwZWQgYQorICogcmVmIHRvIHRoZSBjb21tYW5kLCB0byBnaXZlIHN1Z2dlc3RlZCAiY29ycmVjdCIgcmVmcy4KKyAqLworZXh0ZXJuIHZvaWQgaGVscF91bmtub3duX3JlZihjb25zdCBjaGFyICpyZWYsIGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqZXJyb3IpOwogI2VuZGlmIC8qIEhFTFBfSCAqLwpkaWZmIC0tZ2l0IGEvaHR0cC1iYWNrZW5kLmMgYi9odHRwLWJhY2tlbmQuYwppbmRleCBmNTBlNzdmLi4wMzI0NDE3IDEwMDY0NAotLS0gYS9odHRwLWJhY2tlbmQuYworKysgYi9odHRwLWJhY2tlbmQuYwpAQCAtNzAsNyArNzAsNyBAQAogCWlmIChuID49IHNpemVvZihidWZmZXIpKQogCQlkaWUoInByb3RvY29sIGVycm9yOiBpbXBvc3NpYmx5IGxvbmcgbGluZSIpOwogCi0Jc2FmZV93cml0ZShmZCwgYnVmZmVyLCBuKTsKKwl3cml0ZV9vcl9kaWUoZmQsIGJ1ZmZlciwgbik7CiB9CiAKIHN0YXRpYyB2b2lkIGh0dHBfc3RhdHVzKHVuc2lnbmVkIGNvZGUsIGNvbnN0IGNoYXIgKm1zZykKQEAgLTExMSw3ICsxMTEsNyBAQAogCiBzdGF0aWMgdm9pZCBlbmRfaGVhZGVycyh2b2lkKQogewotCXNhZmVfd3JpdGUoMSwgIlxyXG4iLCAyKTsKKwl3cml0ZV9vcl9kaWUoMSwgIlxyXG4iLCAyKTsKIH0KIAogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCWhkcl9pbnQoY29udGVudF9sZW5ndGgsIGJ1Zi0+bGVuKTsKIAloZHJfc3RyKGNvbnRlbnRfdHlwZSwgdHlwZSk7CiAJZW5kX2hlYWRlcnMoKTsKLQlzYWZlX3dyaXRlKDEsIGJ1Zi0+YnVmLCBidWYtPmxlbik7CisJd3JpdGVfb3JfZGllKDEsIGJ1Zi0+YnVmLCBidWYtPmxlbik7CiB9CiAKIHN0YXRpYyB2b2lkIHNlbmRfbG9jYWxfZmlsZShjb25zdCBjaGFyICp0aGVfdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKQEAgLTE4NSw3ICsxODUsNyBAQAogCQkJZGllX2Vycm5vKCJDYW5ub3QgcmVhZCAnJXMnIiwgcCk7CiAJCWlmICghbikKIAkJCWJyZWFrOwotCQlzYWZlX3dyaXRlKDEsIGJ1Ziwgbik7CisJCXdyaXRlX29yX2RpZSgxLCBidWYsIG4pOwogCX0KIAljbG9zZShmZCk7CiAJZnJlZShidWYpOwpAQCAtMzYxLDE3ICszNjEsMTkgQEAKIHN0YXRpYyBpbnQgc2hvd190ZXh0X3JlZihjb25zdCBjaGFyICpuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAogCWludCBmbGFnLCB2b2lkICpjYl9kYXRhKQogeworCWNvbnN0IGNoYXIgKm5hbWVfbm9ucyA9IHN0cmlwX25hbWVzcGFjZShuYW1lKTsKIAlzdHJ1Y3Qgc3RyYnVmICpidWYgPSBjYl9kYXRhOwogCXN0cnVjdCBvYmplY3QgKm8gPSBwYXJzZV9vYmplY3Qoc2hhMSk7CiAJaWYgKCFvKQogCQlyZXR1cm4gMDsKIAotCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXHQlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIG5hbWUpOworCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXHQlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIG5hbWVfbm9ucyk7CiAJaWYgKG8tPnR5cGUgPT0gT0JKX1RBRykgewogCQlvID0gZGVyZWZfdGFnKG8sIG5hbWUsIDApOwogCQlpZiAoIW8pCiAJCQlyZXR1cm4gMDsKLQkJc3RyYnVmX2FkZGYoYnVmLCAiJXNcdCVzXnt9XG4iLCBzaGExX3RvX2hleChvLT5zaGExKSwgbmFtZSk7CisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiVzXHQlc157fVxuIiwgc2hhMV90b19oZXgoby0+c2hhMSksCisJCQkgICAgbmFtZV9ub25zKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC00MDIsMTIgKzQwNCw0MCBAQAogCiAJfSBlbHNlIHsKIAkJc2VsZWN0X2dldGFueWZpbGUoKTsKLQkJZm9yX2VhY2hfcmVmKHNob3dfdGV4dF9yZWYsICZidWYpOworCQlmb3JfZWFjaF9uYW1lc3BhY2VkX3JlZihzaG93X3RleHRfcmVmLCAmYnVmKTsKIAkJc2VuZF9zdHJidWYoInRleHQvcGxhaW4iLCAmYnVmKTsKIAl9CiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiB9CiAKK3N0YXRpYyBpbnQgc2hvd19oZWFkX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCWludCBmbGFnLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBzdHJidWYgKmJ1ZiA9IGNiX2RhdGE7CisKKwlpZiAoZmxhZyAmIFJFRl9JU1NZTVJFRikgeworCQl1bnNpZ25lZCBjaGFyIHVudXNlZFsyMF07CisJCWNvbnN0IGNoYXIgKnRhcmdldCA9IHJlc29sdmVfcmVmX3Vuc2FmZShyZWZuYW1lLCB1bnVzZWQsIDEsIE5VTEwpOworCQljb25zdCBjaGFyICp0YXJnZXRfbm9ucyA9IHN0cmlwX25hbWVzcGFjZSh0YXJnZXQpOworCisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgInJlZjogJXNcbiIsIHRhcmdldF9ub25zKTsKKwl9IGVsc2UgeworCQlzdHJidWZfYWRkZihidWYsICIlc1xuIiwgc2hhMV90b19oZXgoc2hhMSkpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBnZXRfaGVhZChjaGFyICphcmcpCit7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKKworCXNlbGVjdF9nZXRhbnlmaWxlKCk7CisJaGVhZF9yZWZfbmFtZXNwYWNlZChzaG93X2hlYWRfcmVmLCAmYnVmKTsKKwlzZW5kX3N0cmJ1ZigidGV4dC9wbGFpbiIsICZidWYpOworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworfQorCiBzdGF0aWMgdm9pZCBnZXRfaW5mb19wYWNrcyhjaGFyICphcmcpCiB7CiAJc2l6ZV90IG9iamRpcmxlbiA9IHN0cmxlbihnZXRfb2JqZWN0X2RpcmVjdG9yeSgpKTsKQEAgLTUyMCw3ICs1NTAsNyBAQAogCWNvbnN0IGNoYXIgKnBhdHRlcm47CiAJdm9pZCAoKmltcCkoY2hhciAqKTsKIH0gc2VydmljZXNbXSA9IHsKLQl7IkdFVCIsICIvSEVBRCQiLCBnZXRfdGV4dF9maWxlfSwKKwl7IkdFVCIsICIvSEVBRCQiLCBnZXRfaGVhZH0sCiAJeyJHRVQiLCAiL2luZm8vcmVmcyQiLCBnZXRfaW5mb19yZWZzfSwKIAl7IkdFVCIsICIvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMkIiwgZ2V0X3RleHRfZmlsZX0sCiAJeyJHRVQiLCAiL29iamVjdHMvaW5mby9odHRwLWFsdGVybmF0ZXMkIiwgZ2V0X3RleHRfZmlsZX0sCmRpZmYgLS1naXQgYS9odHRwLXB1c2guYyBiL2h0dHAtcHVzaC5jCmluZGV4IGJhNDViN2IuLjM5NWE4Y2YgMTAwNjQ0Ci0tLSBhL2h0dHAtcHVzaC5jCisrKyBiL2h0dHAtcHVzaC5jCkBAIC0xMSw3ICsxMSwxMSBAQAogI2luY2x1ZGUgImxpc3Qtb2JqZWN0cy5oIgogI2luY2x1ZGUgInNpZ2NoYWluLmgiCiAKKyNpZmRlZiBFWFBBVF9ORUVEU19YTUxQQVJTRV9ICisjaW5jbHVkZSA8eG1scGFyc2UuaD4KKyNlbHNlCiAjaW5jbHVkZSA8ZXhwYXQuaD4KKyNlbmRpZgogCiBzdGF0aWMgY29uc3QgY2hhciBodHRwX3B1c2hfdXNhZ2VbXSA9CiAiZ2l0IGh0dHAtcHVzaCBbLS1hbGxdIFstLWRyeS1ydW5dIFstLWZvcmNlXSBbLS12ZXJib3NlXSA8cmVtb3RlPiBbPGhlYWQ+Li4uXVxuIjsKQEAgLTE3MiwyOCArMTc2LDcgQEAKIHN0YXRpYyBjaGFyICp4bWxfZW50aXRpZXMoY29uc3QgY2hhciAqcykKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCXdoaWxlICgqcykgewotCQlzaXplX3QgbGVuID0gc3RyY3NwbihzLCAiXCI8PiYiKTsKLQkJc3RyYnVmX2FkZCgmYnVmLCBzLCBsZW4pOwotCQlzICs9IGxlbjsKLQkJc3dpdGNoICgqcykgewotCQljYXNlICciJzoKLQkJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgIiZxdW90OyIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgJzwnOgotCQkJc3RyYnVmX2FkZHN0cigmYnVmLCAiJmx0OyIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgJz4nOgotCQkJc3RyYnVmX2FkZHN0cigmYnVmLCAiJmd0OyIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgJyYnOgotCQkJc3RyYnVmX2FkZHN0cigmYnVmLCAiJmFtcDsiKTsKLQkJCWJyZWFrOwotCQljYXNlIDA6Ci0JCQlyZXR1cm4gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKLQkJfQotCQlzKys7Ci0JfQorCXN0cmJ1Zl9hZGRzdHJfeG1sX3F1b3RlZCgmYnVmLCBzKTsKIAlyZXR1cm4gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKIH0KIApAQCAtMTU2OCw3ICsxNTUxLDcgQEAKIAkJcmV0ID0gMDsKIAkJYnJlYWs7CiAJY2FzZSBIVFRQX0VSUk9SOgotCQlodHRwX2Vycm9yKHVybCwgSFRUUF9FUlJPUik7CisJCWVycm9yKCJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIiwgdXJsLCBjdXJsX2Vycm9yc3RyKTsKIAlkZWZhdWx0OgogCQlyZXQgPSAtMTsKIAl9CmRpZmYgLS1naXQgYS9odHRwLmMgYi9odHRwLmMKaW5kZXggYzAyMjQ2YS4uMmQwODZhZSAxMDA2NDQKLS0tIGEvaHR0cC5jCisrKyBiL2h0dHAuYwpAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlICJ1cmwuaCIKICNpbmNsdWRlICJjcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAidmVyc2lvbi5oIgorI2luY2x1ZGUgInBrdC1saW5lLmgiCiAKIGludCBhY3RpdmVfcmVxdWVzdHM7CiBpbnQgaHR0cF9pc192ZXJib3NlOwpAQCAtMzAsNiArMzEsNyBAQAogY2hhciBjdXJsX2Vycm9yc3RyW0NVUkxfRVJST1JfU0laRV07CiAKIHN0YXRpYyBpbnQgY3VybF9zc2xfdmVyaWZ5ID0gLTE7CitzdGF0aWMgaW50IGN1cmxfc3NsX3RyeTsKIHN0YXRpYyBjb25zdCBjaGFyICpzc2xfY2VydDsKICNpZiBMSUJDVVJMX1ZFUlNJT05fTlVNID49IDB4MDcwOTAzCiBzdGF0aWMgY29uc3QgY2hhciAqc3NsX2tleTsKQEAgLTE2Miw2ICsxNjQsMTAgQEAKIAkJCXNzbF9jZXJ0X3Bhc3N3b3JkX3JlcXVpcmVkID0gMTsKIAkJcmV0dXJuIDA7CiAJfQorCWlmICghc3RyY21wKCJodHRwLnNzbHRyeSIsIHZhcikpIHsKKwkJY3VybF9zc2xfdHJ5ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CiAJaWYgKCFzdHJjbXAoImh0dHAubWluc2Vzc2lvbnMiLCB2YXIpKSB7CiAJCW1pbl9jdXJsX3Nlc3Npb25zID0gZ2l0X2NvbmZpZ19pbnQodmFyLCB2YWx1ZSk7CiAjaWZuZGVmIFVTRV9DVVJMX01VTFRJCkBAIC0yODcsNyArMjkzLDYgQEAKICNlbmRpZgogCWlmIChzc2xfY2FpbmZvICE9IE5VTEwpCiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX0NBSU5GTywgc3NsX2NhaW5mbyk7Ci0JY3VybF9lYXN5X3NldG9wdChyZXN1bHQsIENVUkxPUFRfRkFJTE9ORVJST1IsIDEpOwogCiAJaWYgKGN1cmxfbG93X3NwZWVkX2xpbWl0ID4gMCAmJiBjdXJsX2xvd19zcGVlZF90aW1lID4gMCkgewogCQljdXJsX2Vhc3lfc2V0b3B0KHJlc3VsdCwgQ1VSTE9QVF9MT1dfU1BFRURfTElNSVQsCkBAIC0zMTIsNiArMzE3LDExIEBACiAJaWYgKGN1cmxfZnRwX25vX2Vwc3YpCiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX0ZUUF9VU0VfRVBTViwgMCk7CiAKKyNpZmRlZiBDVVJMT1BUX1VTRV9TU0wKKwlpZiAoY3VybF9zc2xfdHJ5KQorCQljdXJsX2Vhc3lfc2V0b3B0KHJlc3VsdCwgQ1VSTE9QVF9VU0VfU1NMLCBDVVJMVVNFU1NMX1RSWSk7CisjZW5kaWYKKwogCWlmIChjdXJsX2h0dHBfcHJveHkpIHsKIAkJY3VybF9lYXN5X3NldG9wdChyZXN1bHQsIENVUkxPUFRfUFJPWFksIGN1cmxfaHR0cF9wcm94eSk7CiAJCWN1cmxfZWFzeV9zZXRvcHQocmVzdWx0LCBDVVJMT1BUX1BST1hZQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKQEAgLTUxMSw2ICs1MjEsNyBAQAogCWN1cmxfZWFzeV9zZXRvcHQoc2xvdC0+Y3VybCwgQ1VSTE9QVF9QT1NURklFTERTLCBOVUxMKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfVVBMT0FELCAwKTsKIAljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfSFRUUEdFVCwgMSk7CisJY3VybF9lYXN5X3NldG9wdChzbG90LT5jdXJsLCBDVVJMT1BUX0ZBSUxPTkVSUk9SLCAxKTsKIAlpZiAoaHR0cF9hdXRoLnBhc3N3b3JkKQogCQlpbml0X2N1cmxfaHR0cF9hdXRoKHNsb3QtPmN1cmwpOwogCkBAIC03NjYsNiArNzc3LDI1IEBACiAKIGludCBoYW5kbGVfY3VybF9yZXN1bHQoc3RydWN0IHNsb3RfcmVzdWx0cyAqcmVzdWx0cykKIHsKKwkvKgorCSAqIElmIHdlIHNlZSBhIGZhaWxpbmcgaHR0cCBjb2RlIHdpdGggQ1VSTEVfT0ssIHdlIGhhdmUgdHVybmVkIG9mZgorCSAqIEZBSUxPTkVSUk9SICh0byBrZWVwIHRoZSBzZXJ2ZXIncyBjdXN0b20gZXJyb3IgcmVzcG9uc2UpLCBhbmQgc2hvdWxkCisJICogdHJhbnNsYXRlIHRoZSBjb2RlIGludG8gZmFpbHVyZSBoZXJlLgorCSAqLworCWlmIChyZXN1bHRzLT5jdXJsX3Jlc3VsdCA9PSBDVVJMRV9PSyAmJgorCSAgICByZXN1bHRzLT5odHRwX2NvZGUgPj0gNDAwKSB7CisJCXJlc3VsdHMtPmN1cmxfcmVzdWx0ID0gQ1VSTEVfSFRUUF9SRVRVUk5FRF9FUlJPUjsKKwkJLyoKKwkJICogTm9ybWFsbHkgY3VybCB3aWxsIGFscmVhZHkgaGF2ZSBwdXQgdGhlICJyZWFzb24gcGhyYXNlIgorCQkgKiBmcm9tIHRoZSBzZXJ2ZXIgaW50byBjdXJsX2Vycm9yc3RyOyB1bmZvcnR1bmF0ZWx5IHdpdGhvdXQKKwkJICogRkFJTE9ORVJST1IgaXQgaXMgbG9zdCwgc28gd2UgY2FuIGdpdmUgb25seSB0aGUgbnVtZXJpYworCQkgKiBzdGF0dXMgY29kZS4KKwkJICovCisJCXNucHJpbnRmKGN1cmxfZXJyb3JzdHIsIHNpemVvZihjdXJsX2Vycm9yc3RyKSwKKwkJCSAiVGhlIHJlcXVlc3RlZCBVUkwgcmV0dXJuZWQgZXJyb3I6ICVsZCIsCisJCQkgcmVzdWx0cy0+aHR0cF9jb2RlKTsKKwl9CisKIAlpZiAocmVzdWx0cy0+Y3VybF9yZXN1bHQgPT0gQ1VSTEVfT0spIHsKIAkJY3JlZGVudGlhbF9hcHByb3ZlKCZodHRwX2F1dGgpOwogCQlyZXR1cm4gSFRUUF9PSzsKQEAgLTgzMCw2ICs4NjAsOCBAQAogCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgIlByYWdtYToiKTsKIAlpZiAob3B0aW9ucyAmIEhUVFBfTk9fQ0FDSEUpCiAJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgIiBuby1jYWNoZSIpOworCWlmIChvcHRpb25zICYgSFRUUF9LRUVQX0VSUk9SKQorCQljdXJsX2Vhc3lfc2V0b3B0KHNsb3QtPmN1cmwsIENVUkxPUFRfRkFJTE9ORVJST1IsIDApOwogCiAJaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGJ1Zi5idWYpOwogCkBAIC04NDEsNyArODczLDggQEAKIAkJcnVuX2FjdGl2ZV9zbG90KHNsb3QpOwogCQlyZXQgPSBoYW5kbGVfY3VybF9yZXN1bHQoJnJlc3VsdHMpOwogCX0gZWxzZSB7Ci0JCWVycm9yKCJVbmFibGUgdG8gc3RhcnQgSFRUUCByZXF1ZXN0IGZvciAlcyIsIHVybCk7CisJCXNucHJpbnRmKGN1cmxfZXJyb3JzdHIsIHNpemVvZihjdXJsX2Vycm9yc3RyKSwKKwkJCSAiZmFpbGVkIHRvIHN0YXJ0IEhUVFAgcmVxdWVzdCIpOwogCQlyZXQgPSBIVFRQX1NUQVJUX0ZBSUxFRDsKIAl9CiAKQEAgLTg2Nyw2ICs5MDAsMjIgQEAKIAlpbnQgcmV0ID0gaHR0cF9yZXF1ZXN0KHVybCwgdHlwZSwgcmVzdWx0LCB0YXJnZXQsIG9wdGlvbnMpOwogCWlmIChyZXQgIT0gSFRUUF9SRUFVVEgpCiAJCXJldHVybiByZXQ7CisKKwkvKgorCSAqIElmIHdlIGFyZSB1c2luZyBLRUVQX0VSUk9SLCB0aGUgcHJldmlvdXMgcmVxdWVzdCBtYXkgaGF2ZQorCSAqIHB1dCBjcnVmdCBpbnRvIG91ciBvdXRwdXQgc3RyZWFtOyB3ZSBzaG91bGQgY2xlYXIgaXQgb3V0IGJlZm9yZQorCSAqIG1ha2luZyBvdXIgbmV4dCByZXF1ZXN0LiBXZSBvbmx5IGtub3cgaG93IHRvIGRvIHRoaXMgZm9yCisJICogdGhlIHN0cmJ1ZiBjYXNlLCBidXQgdGhhdCBpcyBlbm91Z2ggdG8gc2F0aXNmeSBjdXJyZW50IGNhbGxlcnMuCisJICovCisJaWYgKG9wdGlvbnMgJiBIVFRQX0tFRVBfRVJST1IpIHsKKwkJc3dpdGNoICh0YXJnZXQpIHsKKwkJY2FzZSBIVFRQX1JFUVVFU1RfU1RSQlVGOgorCQkJc3RyYnVmX3Jlc2V0KHJlc3VsdCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWRpZSgiQlVHOiBIVFRQX0tFRVBfRVJST1IgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBzdHJidWZzIik7CisJCX0KKwl9CiAJcmV0dXJuIGh0dHBfcmVxdWVzdCh1cmwsIHR5cGUsIHJlc3VsdCwgdGFyZ2V0LCBvcHRpb25zKTsKIH0KIApAQCAtOTA4LDE1ICs5NTcsNiBAQAogCXJldHVybiByZXQ7CiB9CiAKLWludCBodHRwX2Vycm9yKGNvbnN0IGNoYXIgKnVybCwgaW50IHJldCkKLXsKLQkvKiBodHRwX3JlcXVlc3QgaGFzIGFscmVhZHkgaGFuZGxlZCBIVFRQX1NUQVJUX0ZBSUxFRC4gKi8KLQlpZiAocmV0ICE9IEhUVFBfU1RBUlRfRkFJTEVEKQotCQllcnJvcigiJXMgd2hpbGUgYWNjZXNzaW5nICVzIiwgY3VybF9lcnJvcnN0ciwgdXJsKTsKLQotCXJldHVybiByZXQ7Ci19Ci0KIGludCBodHRwX2ZldGNoX3JlZihjb25zdCBjaGFyICpiYXNlLCBzdHJ1Y3QgcmVmICpyZWYpCiB7CiAJY2hhciAqdXJsOwpkaWZmIC0tZ2l0IGEvaHR0cC5oIGIvaHR0cC5oCmluZGV4IDI1ZDE5MzEuLmQ3N2MxYjUgMTAwNjQ0Ci0tLSBhL2h0dHAuaAorKysgYi9odHRwLmgKQEAgLTQyLDYgKzQyLDE1IEBACiAjZGVmaW5lIE5PX0NVUkxfSU9DVEwKICNlbmRpZgogCisvKgorICogQ1VSTE9QVF9VU0VfU1NMIHdhcyBrbm93biBhcyBDVVJMT1BUX0ZUUF9TU0wgdXAgdG8gNy4xNi40LAorICogYW5kIHRoZSBjb25zdGFudHMgd2VyZSBrbm93biBhcyBDVVJMRlRQU1NMXyoKKyovCisjaWYgIWRlZmluZWQoQ1VSTE9QVF9VU0VfU1NMKSAmJiBkZWZpbmVkKENVUkxPUFRfRlRQX1NTTCkKKyNkZWZpbmUgQ1VSTE9QVF9VU0VfU1NMIENVUkxPUFRfRlRQX1NTTAorI2RlZmluZSBDVVJMVVNFU1NMX1RSWSBDVVJMRlRQU1NMX1RSWQorI2VuZGlmCisKIHN0cnVjdCBzbG90X3Jlc3VsdHMgewogCUNVUkxjb2RlIGN1cmxfcmVzdWx0OwogCWxvbmcgaHR0cF9jb2RlOwpAQCAtMTE4LDYgKzEyNyw3IEBACiAKIC8qIE9wdGlvbnMgZm9yIGh0dHBfcmVxdWVzdF8qKCkgKi8KICNkZWZpbmUgSFRUUF9OT19DQUNIRQkJMQorI2RlZmluZSBIVFRQX0tFRVBfRVJST1IJCTIKIAogLyogUmV0dXJuIHZhbHVlcyBmb3IgaHR0cF9yZXF1ZXN0XyooKSAqLwogI2RlZmluZSBIVFRQX09LCQkJMApAQCAtMTM0LDEyICsxNDQsNiBAQAogICovCiBpbnQgaHR0cF9nZXRfc3RyYnVmKGNvbnN0IGNoYXIgKnVybCwgc3RydWN0IHN0cmJ1ZiAqY29udGVudF90eXBlLCBzdHJ1Y3Qgc3RyYnVmICpyZXN1bHQsIGludCBvcHRpb25zKTsKIAotLyoKLSAqIFByaW50cyBhbiBlcnJvciBtZXNzYWdlIHVzaW5nIGVycm9yKCkgY29udGFpbmluZyB1cmwgYW5kIGN1cmxfZXJyb3JzdHIsCi0gKiBhbmQgcmV0dXJucyByZXQuCi0gKi8KLWludCBodHRwX2Vycm9yKGNvbnN0IGNoYXIgKnVybCwgaW50IHJldCk7Ci0KIGV4dGVybiBpbnQgaHR0cF9mZXRjaF9yZWYoY29uc3QgY2hhciAqYmFzZSwgc3RydWN0IHJlZiAqcmVmKTsKIAogLyogSGVscGVycyBmb3IgZmV0Y2hpbmcgcGFja3MgKi8KZGlmZiAtLWdpdCBhL2ltYXAtc2VuZC5jIGIvaW1hcC1zZW5kLmMKaW5kZXggNDliYTg0MS4uZDZiNjVlMiAxMDA2NDQKLS0tIGEvaW1hcC1zZW5kLmMKKysrIGIvaW1hcC1zZW5kLmMKQEAgLTI5LDUyICsyOSwyMSBAQAogI2lmZGVmIE5PX09QRU5TU0wKIHR5cGVkZWYgdm9pZCAqU1NMOwogI2Vsc2UKKyNpZmRlZiBBUFBMRV9DT01NT05fQ1JZUFRPCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkhNQUMuaD4KKyNkZWZpbmUgSE1BQ19DVFggQ0NIbWFjQ29udGV4dAorI2RlZmluZSBITUFDX0luaXQoaG1hYywga2V5LCBsZW4sIGFsZ28pIENDSG1hY0luaXQoaG1hYywgYWxnbywga2V5LCBsZW4pCisjZGVmaW5lIEhNQUNfVXBkYXRlIENDSG1hY1VwZGF0ZQorI2RlZmluZSBITUFDX0ZpbmFsKGhtYWMsIGhhc2gsIHB0cikgQ0NIbWFjRmluYWwoaG1hYywgaGFzaCkKKyNkZWZpbmUgSE1BQ19DVFhfY2xlYW51cChpZ25vcmUpCisjZGVmaW5lIEVWUF9tZDUoKSBrQ0NIbWFjQWxnTUQ1CisjZWxzZQogI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CiAjaW5jbHVkZSA8b3BlbnNzbC9obWFjLmg+CisjZW5kaWYKICNpbmNsdWRlIDxvcGVuc3NsL3g1MDl2My5oPgogI2VuZGlmCiAKLXN0cnVjdCBzdG9yZV9jb25mIHsKLQljaGFyICpuYW1lOwotCWNvbnN0IGNoYXIgKnBhdGg7IC8qIHNob3VsZCB0aGlzIGJlIGhlcmU/IGl0cyBpbnRlcnByZXRhdGlvbiBpcyBkcml2ZXItc3BlY2lmaWMgKi8KLQljaGFyICptYXBfaW5ib3g7Ci0JY2hhciAqdHJhc2g7Ci0JdW5zaWduZWQgbWF4X3NpemU7IC8qIG9mZl90IGlzIG92ZXJraWxsICovCi0JdW5zaWduZWQgdHJhc2hfcmVtb3RlX25ldzoxLCB0cmFzaF9vbmx5X25ldzoxOwotfTsKLQotLyogRm9yIG1lc3NhZ2UtPnN0YXR1cyAqLwotI2RlZmluZSBNX1JFQ0VOVCAgICAgICAoMTw8MCkgLyogdW5zeW5jYWJsZSBmbGFnOyBtYWlsZGlyXyogZGVwZW5kIG9uIHRoaXMgYmVpbmcgMTw8MCAqLwotI2RlZmluZSBNX0RFQUQgICAgICAgICAoMTw8MSkgLyogZXhwdW5nZWQgKi8KLSNkZWZpbmUgTV9GTEFHUyAgICAgICAgKDE8PDIpIC8qIGZsYWdzIGZldGNoZWQgKi8KLQotc3RydWN0IG1lc3NhZ2UgewotCXN0cnVjdCBtZXNzYWdlICpuZXh0OwotCXNpemVfdCBzaXplOyAvKiB6ZXJvIGltcGxpZXMgIm5vdCBmZXRjaGVkIiAqLwotCWludCB1aWQ7Ci0JdW5zaWduZWQgY2hhciBmbGFncywgc3RhdHVzOwotfTsKLQotc3RydWN0IHN0b3JlIHsKLQlzdHJ1Y3Qgc3RvcmVfY29uZiAqY29uZjsgLyogZm9yZWlnbiAqLwotCi0JLyogY3VycmVudGx5IG9wZW4gbWFpbGJveCAqLwotCWNvbnN0IGNoYXIgKm5hbWU7IC8qIGZvcmVpZ24hIG1heWJlIHByZXNldD8gKi8KLQljaGFyICpwYXRoOyAvKiBvd24gKi8KLQlzdHJ1Y3QgbWVzc2FnZSAqbXNnczsgLyogb3duICovCi0JaW50IHVpZHZhbGlkaXR5OwotCXVuc2lnbmVkIGNoYXIgb3B0czsgLyogbWF5YmUgcHJlc2V0PyAqLwotCS8qIG5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGRvIF9ub3RfIHJlZmxlY3Qgc3RhdHMgZnJvbSBtc2dzLCBidXQgbWFpbGJveCB0b3RhbHMgKi8KLQlpbnQgY291bnQ7IC8qICMgb2YgbWVzc2FnZXMgKi8KLQlpbnQgcmVjZW50OyAvKiAjIG9mIHJlY2VudCBtZXNzYWdlcyAtIGRvbid0IHRydXN0IHRoaXMgYmV5b25kIHRoZSBpbml0aWFsIHJlYWQgKi8KLX07Ci0KLXN0cnVjdCBtc2dfZGF0YSB7Ci0JY2hhciAqZGF0YTsKLQlpbnQgbGVuOwotCXVuc2lnbmVkIGNoYXIgZmxhZ3M7Ci19OwotCiBzdGF0aWMgY29uc3QgY2hhciBpbWFwX3NlbmRfdXNhZ2VbXSA9ICJnaXQgaW1hcC1zZW5kIDwgPG1ib3g+IjsKIAogI3VuZGVmIERSVl9PSwpAQCAtOTIsOCArNjEsNiBAQAogCiBzdGF0aWMgY2hhciAqbmV4dF9hcmcoY2hhciAqKik7CiAKLXN0YXRpYyB2b2lkIGZyZWVfZ2VuZXJpY19tZXNzYWdlcyhzdHJ1Y3QgbWVzc2FnZSAqKTsKLQogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDMsIDQpKSkKIHN0YXRpYyBpbnQgbmZzbnByaW50ZihjaGFyICpidWYsIGludCBibGVuLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKQEAgLTEzNywyMCArMTA0LDYgQEAKIAlOVUxMLAkvKiBhdXRoX21ldGhvZCAqLwogfTsKIAotc3RydWN0IGltYXBfc3RvcmVfY29uZiB7Ci0Jc3RydWN0IHN0b3JlX2NvbmYgZ2VuOwotCXN0cnVjdCBpbWFwX3NlcnZlcl9jb25mICpzZXJ2ZXI7Ci19OwotCi0jZGVmaW5lIE5JTAkodm9pZCAqKTB4MQotI2RlZmluZSBMSVNUCSh2b2lkICopMHgyCi0KLXN0cnVjdCBpbWFwX2xpc3QgewotCXN0cnVjdCBpbWFwX2xpc3QgKm5leHQsICpjaGlsZDsKLQljaGFyICp2YWw7Ci0JaW50IGxlbjsKLX07Ci0KIHN0cnVjdCBpbWFwX3NvY2tldCB7CiAJaW50IGZkWzJdOwogCVNTTCAqc3NsOwpAQCAtMTY3LDcgKzEyMCw2IEBACiAKIHN0cnVjdCBpbWFwIHsKIAlpbnQgdWlkbmV4dDsgLyogZnJvbSBTRUxFQ1QgcmVzcG9uc2VzICovCi0Jc3RydWN0IGltYXBfbGlzdCAqbnNfcGVyc29uYWwsICpuc19vdGhlciwgKm5zX3NoYXJlZDsgLyogTkFNRVNQQUNFIGluZm8gKi8KIAl1bnNpZ25lZCBjYXBzLCByY2FwczsgLyogQ0FQQUJJTElUWSByZXN1bHRzICovCiAJLyogY29tbWFuZCBxdWV1ZSAqLwogCWludCBuZXh0dGFnLCBudW1faW5fcHJvZ3Jlc3MsIGxpdGVyYWxfcGVuZGluZzsKQEAgLTE3NiwxMSArMTI4LDExIEBACiB9OwogCiBzdHJ1Y3QgaW1hcF9zdG9yZSB7Ci0Jc3RydWN0IHN0b3JlIGdlbjsKKwkvKiBjdXJyZW50bHkgb3BlbiBtYWlsYm94ICovCisJY29uc3QgY2hhciAqbmFtZTsgLyogZm9yZWlnbiEgbWF5YmUgcHJlc2V0PyAqLwogCWludCB1aWR2YWxpZGl0eTsKIAlzdHJ1Y3QgaW1hcCAqaW1hcDsKIAljb25zdCBjaGFyICpwcmVmaXg7Ci0JdW5zaWduZWQgLypjdXJyZW50bmM6MSwqLyB0cmFzaG5jOjE7CiB9OwogCiBzdHJ1Y3QgaW1hcF9jbWRfY2IgewpAQCAtMjI3LDE0ICsxNzksNiBAQAogc3RhdGljIGludCBnZXRfY21kX3Jlc3VsdChzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4LCBzdHJ1Y3QgaW1hcF9jbWQgKnRjbWQpOwogCiAKLXN0YXRpYyBjb25zdCBjaGFyICpGbGFnc1tdID0gewotCSJEcmFmdCIsCi0JIkZsYWdnZWQiLAotCSJBbnN3ZXJlZCIsCi0JIlNlZW4iLAotCSJEZWxldGVkIiwKLX07Ci0KICNpZm5kZWYgTk9fT1BFTlNTTAogc3RhdGljIHZvaWQgc3NsX3NvY2tldF9wZXJyb3IoY29uc3QgY2hhciAqZnVuYykKIHsKQEAgLTU1MSwxNiArNDk1LDYgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX2dlbmVyaWNfbWVzc2FnZXMoc3RydWN0IG1lc3NhZ2UgKm1zZ3MpCi17Ci0Jc3RydWN0IG1lc3NhZ2UgKnRtc2c7Ci0KLQlmb3IgKDsgbXNnczsgbXNncyA9IHRtc2cpIHsKLQkJdG1zZyA9IG1zZ3MtPm5leHQ7Ci0JCWZyZWUobXNncyk7Ci0JfQotfQotCiBzdGF0aWMgaW50IG5mc25wcmludGYoY2hhciAqYnVmLCBpbnQgYmxlbiwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJaW50IHJldDsKQEAgLTY4OCwzNSArNjIyLDkgQEAKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaXNfYXRvbShzdHJ1Y3QgaW1hcF9saXN0ICpsaXN0KQorc3RhdGljIGludCBza2lwX2ltYXBfbGlzdF9sKGNoYXIgKipzcCwgaW50IGxldmVsKQogewotCXJldHVybiBsaXN0ICYmIGxpc3QtPnZhbCAmJiBsaXN0LT52YWwgIT0gTklMICYmIGxpc3QtPnZhbCAhPSBMSVNUOwotfQotCi1zdGF0aWMgaW50IGlzX2xpc3Qoc3RydWN0IGltYXBfbGlzdCAqbGlzdCkKLXsKLQlyZXR1cm4gbGlzdCAmJiBsaXN0LT52YWwgPT0gTElTVDsKLX0KLQotc3RhdGljIHZvaWQgZnJlZV9saXN0KHN0cnVjdCBpbWFwX2xpc3QgKmxpc3QpCi17Ci0Jc3RydWN0IGltYXBfbGlzdCAqdG1wOwotCi0JZm9yICg7IGxpc3Q7IGxpc3QgPSB0bXApIHsKLQkJdG1wID0gbGlzdC0+bmV4dDsKLQkJaWYgKGlzX2xpc3QobGlzdCkpCi0JCQlmcmVlX2xpc3QobGlzdC0+Y2hpbGQpOwotCQllbHNlIGlmIChpc19hdG9tKGxpc3QpKQotCQkJZnJlZShsaXN0LT52YWwpOwotCQlmcmVlKGxpc3QpOwotCX0KLX0KLQotc3RhdGljIGludCBwYXJzZV9pbWFwX2xpc3RfbChzdHJ1Y3QgaW1hcCAqaW1hcCwgY2hhciAqKnNwLCBzdHJ1Y3QgaW1hcF9saXN0ICoqY3VycCwgaW50IGxldmVsKQotewotCXN0cnVjdCBpbWFwX2xpc3QgKmN1cjsKLQljaGFyICpzID0gKnNwLCAqcDsKLQlpbnQgbiwgYnl0ZXM7CisJY2hhciAqcyA9ICpzcDsKIAogCWZvciAoOzspIHsKIAkJd2hpbGUgKGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnMpKQpAQCAtNzI1LDY4ICs2MzMsMjMgQEAKIAkJCXMrKzsKIAkJCWJyZWFrOwogCQl9Ci0JCSpjdXJwID0gY3VyID0geG1hbGxvYyhzaXplb2YoKmN1cikpOwotCQljdXJwID0gJmN1ci0+bmV4dDsKLQkJY3VyLT52YWwgPSBOVUxMOyAvKiBmb3IgY2xlYW4gYmFpbCAqLwogCQlpZiAoKnMgPT0gJygnKSB7CiAJCQkvKiBzdWJsaXN0ICovCiAJCQlzKys7Ci0JCQljdXItPnZhbCA9IExJU1Q7Ci0JCQlpZiAocGFyc2VfaW1hcF9saXN0X2woaW1hcCwgJnMsICZjdXItPmNoaWxkLCBsZXZlbCArIDEpKQotCQkJCWdvdG8gYmFpbDsKLQkJfSBlbHNlIGlmIChpbWFwICYmICpzID09ICd7JykgewotCQkJLyogbGl0ZXJhbCAqLwotCQkJYnl0ZXMgPSBjdXItPmxlbiA9IHN0cnRvbChzICsgMSwgJnMsIDEwKTsKLQkJCWlmICgqcyAhPSAnfScpCi0JCQkJZ290byBiYWlsOwotCi0JCQlzID0gY3VyLT52YWwgPSB4bWFsbG9jKGN1ci0+bGVuKTsKLQotCQkJLyogZHVtcCB3aGF0cyBsZWZ0IG92ZXIgaW4gdGhlIGlucHV0IGJ1ZmZlciAqLwotCQkJbiA9IGltYXAtPmJ1Zi5ieXRlcyAtIGltYXAtPmJ1Zi5vZmZzZXQ7Ci0KLQkJCWlmIChuID4gYnl0ZXMpCi0JCQkJLyogdGhlIGVudGlyZSBtZXNzYWdlIGZpdCBpbiB0aGUgYnVmZmVyICovCi0JCQkJbiA9IGJ5dGVzOwotCi0JCQltZW1jcHkocywgaW1hcC0+YnVmLmJ1ZiArIGltYXAtPmJ1Zi5vZmZzZXQsIG4pOwotCQkJcyArPSBuOwotCQkJYnl0ZXMgLT0gbjsKLQotCQkJLyogbWFyayB0aGF0IHdlIHVzZWQgcGFydCBvZiB0aGUgYnVmZmVyICovCi0JCQlpbWFwLT5idWYub2Zmc2V0ICs9IG47Ci0KLQkJCS8qIG5vdyByZWFkIHRoZSByZXN0IG9mIHRoZSBtZXNzYWdlICovCi0JCQl3aGlsZSAoYnl0ZXMgPiAwKSB7Ci0JCQkJaWYgKChuID0gc29ja2V0X3JlYWQoJmltYXAtPmJ1Zi5zb2NrLCBzLCBieXRlcykpIDw9IDApCi0JCQkJCWdvdG8gYmFpbDsKLQkJCQlzICs9IG47Ci0JCQkJYnl0ZXMgLT0gbjsKLQkJCX0KLQotCQkJaWYgKGJ1ZmZlcl9nZXRzKCZpbWFwLT5idWYsICZzKSkKKwkJCWlmIChza2lwX2ltYXBfbGlzdF9sKCZzLCBsZXZlbCArIDEpKQogCQkJCWdvdG8gYmFpbDsKIAkJfSBlbHNlIGlmICgqcyA9PSAnIicpIHsKIAkJCS8qIHF1b3RlZCBzdHJpbmcgKi8KIAkJCXMrKzsKLQkJCXAgPSBzOwogCQkJZm9yICg7ICpzICE9ICciJzsgcysrKQogCQkJCWlmICghKnMpCiAJCQkJCWdvdG8gYmFpbDsKLQkJCWN1ci0+bGVuID0gcyAtIHA7CiAJCQlzKys7Ci0JCQljdXItPnZhbCA9IHhtZW1kdXB6KHAsIGN1ci0+bGVuKTsKIAkJfSBlbHNlIHsKIAkJCS8qIGF0b20gKi8KLQkJCXAgPSBzOwogCQkJZm9yICg7ICpzICYmICFpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpzKTsgcysrKQogCQkJCWlmIChsZXZlbCAmJiAqcyA9PSAnKScpCiAJCQkJCWJyZWFrOwotCQkJY3VyLT5sZW4gPSBzIC0gcDsKLQkJCWlmIChjdXItPmxlbiA9PSAzICYmICFtZW1jbXAoIk5JTCIsIHAsIDMpKQotCQkJCWN1ci0+dmFsID0gTklMOwotCQkJZWxzZQotCQkJCWN1ci0+dmFsID0geG1lbWR1cHoocCwgY3VyLT5sZW4pOwogCQl9CiAKIAkJaWYgKCFsZXZlbCkKQEAgLTc5NSwyNyArNjU4LDE1IEBACiAJCQlnb3RvIGJhaWw7CiAJfQogCSpzcCA9IHM7Ci0JKmN1cnAgPSBOVUxMOwogCXJldHVybiAwOwogCiBiYWlsOgotCSpjdXJwID0gTlVMTDsKIAlyZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW1hcF9saXN0ICpwYXJzZV9pbWFwX2xpc3Qoc3RydWN0IGltYXAgKmltYXAsIGNoYXIgKipzcCkKK3N0YXRpYyB2b2lkIHNraXBfbGlzdChjaGFyICoqc3ApCiB7Ci0Jc3RydWN0IGltYXBfbGlzdCAqaGVhZDsKLQotCWlmICghcGFyc2VfaW1hcF9saXN0X2woaW1hcCwgc3AsICZoZWFkLCAwKSkKLQkJcmV0dXJuIGhlYWQ7Ci0JZnJlZV9saXN0KGhlYWQpOwotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgc3RydWN0IGltYXBfbGlzdCAqcGFyc2VfbGlzdChjaGFyICoqc3ApCi17Ci0JcmV0dXJuIHBhcnNlX2ltYXBfbGlzdChOVUxMLCBzcCk7CisJc2tpcF9pbWFwX2xpc3RfbChzcCwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhcnNlX2NhcGFiaWxpdHkoc3RydWN0IGltYXAgKmltYXAsIGNoYXIgKmNtZCkKQEAgLTg0Nyw3ICs2OTgsNyBAQAogCSpwKysgPSAwOwogCWFyZyA9IG5leHRfYXJnKCZzKTsKIAlpZiAoIXN0cmNtcCgiVUlEVkFMSURJVFkiLCBhcmcpKSB7Ci0JCWlmICghKGFyZyA9IG5leHRfYXJnKCZzKSkgfHwgIShjdHgtPmdlbi51aWR2YWxpZGl0eSA9IGF0b2koYXJnKSkpIHsKKwkJaWYgKCEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKGN0eC0+dWlkdmFsaWRpdHkgPSBhdG9pKGFyZykpKSB7CiAJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IG1hbGZvcm1lZCBVSURWQUxJRElUWSBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwogCQl9CkBAIC04NjUsNyArNzE2LDcgQEAKIAkJZm9yICg7IGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpKnApOyBwKyspOwogCQlmcHJpbnRmKHN0ZGVyciwgIioqKiBJTUFQIEFMRVJUICoqKiAlc1xuIiwgcCk7CiAJfSBlbHNlIGlmIChjYiAmJiBjYi0+Y3R4ICYmICFzdHJjbXAoIkFQUEVORFVJRCIsIGFyZykpIHsKLQkJaWYgKCEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKGN0eC0+Z2VuLnVpZHZhbGlkaXR5ID0gYXRvaShhcmcpKSB8fAorCQlpZiAoIShhcmcgPSBuZXh0X2FyZygmcykpIHx8ICEoY3R4LT51aWR2YWxpZGl0eSA9IGF0b2koYXJnKSkgfHwKIAkJICAgICEoYXJnID0gbmV4dF9hcmcoJnMpKSB8fCAhKCooaW50ICopY2ItPmN0eCA9IGF0b2koYXJnKSkpIHsKIAkJCWZwcmludGYoc3RkZXJyLCAiSU1BUCBlcnJvcjogbWFsZm9ybWVkIEFQUEVORFVJRCBzdGF0dXNcbiIpOwogCQkJcmV0dXJuIFJFU1BfQkFEOwpAQCAtODk0LDIwICs3NDUsMjggQEAKIAkJCX0KIAogCQkJaWYgKCFzdHJjbXAoIk5BTUVTUEFDRSIsIGFyZykpIHsKLQkJCQlpbWFwLT5uc19wZXJzb25hbCA9IHBhcnNlX2xpc3QoJmNtZCk7Ci0JCQkJaW1hcC0+bnNfb3RoZXIgPSBwYXJzZV9saXN0KCZjbWQpOwotCQkJCWltYXAtPm5zX3NoYXJlZCA9IHBhcnNlX2xpc3QoJmNtZCk7CisJCQkJLyogcmZjMjM0MiBOQU1FU1BBQ0UgcmVzcG9uc2UuICovCisJCQkJc2tpcF9saXN0KCZjbWQpOyAvKiBQZXJzb25hbCBtYWlsYm94ZXMgKi8KKwkJCQlza2lwX2xpc3QoJmNtZCk7IC8qIE90aGVycycgbWFpbGJveGVzICovCisJCQkJc2tpcF9saXN0KCZjbWQpOyAvKiBTaGFyZWQgbWFpbGJveGVzICovCiAJCQl9IGVsc2UgaWYgKCFzdHJjbXAoIk9LIiwgYXJnKSB8fCAhc3RyY21wKCJCQUQiLCBhcmcpIHx8CiAJCQkJICAgIXN0cmNtcCgiTk8iLCBhcmcpIHx8ICFzdHJjbXAoIkJZRSIsIGFyZykpIHsKIAkJCQlpZiAoKHJlc3AgPSBwYXJzZV9yZXNwb25zZV9jb2RlKGN0eCwgTlVMTCwgY21kKSkgIT0gUkVTUF9PSykKIAkJCQkJcmV0dXJuIHJlc3A7Ci0JCQl9IGVsc2UgaWYgKCFzdHJjbXAoIkNBUEFCSUxJVFkiLCBhcmcpKQorCQkJfSBlbHNlIGlmICghc3RyY21wKCJDQVBBQklMSVRZIiwgYXJnKSkgewogCQkJCXBhcnNlX2NhcGFiaWxpdHkoaW1hcCwgY21kKTsKLQkJCWVsc2UgaWYgKChhcmcxID0gbmV4dF9hcmcoJmNtZCkpKSB7Ci0JCQkJaWYgKCFzdHJjbXAoIkVYSVNUUyIsIGFyZzEpKQotCQkJCQljdHgtPmdlbi5jb3VudCA9IGF0b2koYXJnKTsKLQkJCQllbHNlIGlmICghc3RyY21wKCJSRUNFTlQiLCBhcmcxKSkKLQkJCQkJY3R4LT5nZW4ucmVjZW50ID0gYXRvaShhcmcpOworCQkJfSBlbHNlIGlmICgoYXJnMSA9IG5leHRfYXJnKCZjbWQpKSkgeworCQkJCTsgLyoKKwkJCQkgICAqIFVuaGFuZGxlZCByZXNwb25zZS1kYXRhIHdpdGggYXQgbGVhc3QgdHdvIHdvcmRzLgorCQkJCSAgICogSWdub3JlIGl0LgorCQkJCSAgICoKKwkJCQkgICAqIE5FRURTV09SSzogUHJldmlvdXNseSB0aGlzIGNhc2UgaGFuZGxlZCAnPG51bT4gRVhJU1RTJworCQkJCSAgICogYW5kICc8bnVtPiBSRUNFTlQnIGJ1dCBhcyBhIHByb2JhYmx5LXVuaW50ZW5kZWQgc2lkZQorCQkJCSAgICogZWZmZWN0IGl0IGlnbm9yZXMgb3RoZXIgdW5yZWNvZ25pemVkIHR3by13b3JkCisJCQkJICAgKiByZXNwb25zZXMuICBpbWFwLXNlbmQgZG9lc24ndCBldmVyIHRyeSB0byByZWFkCisJCQkJICAgKiBtZXNzYWdlcyBvciBtYWlsYm94ZXMgdGhlc2UgZGF5cywgc28gY29uc2lkZXIKKwkJCQkgICAqIGVsaW1pbmF0aW5nIHRoaXMgY2FzZS4KKwkJCQkgICAqLwogCQkJfSBlbHNlIHsKIAkJCQlmcHJpbnRmKHN0ZGVyciwgIklNQVAgZXJyb3I6IHVuYWJsZSB0byBwYXJzZSB1bnRhZ2dlZCByZXNwb25zZVxuIik7CiAJCQkJcmV0dXJuIFJFU1BfQkFEOwpAQCAtMTAwOSwxNiArODY4LDEyIEBACiAJCWltYXBfZXhlYyhpY3R4LCBOVUxMLCAiTE9HT1VUIik7CiAJCXNvY2tldF9zaHV0ZG93bigmaW1hcC0+YnVmLnNvY2spOwogCX0KLQlmcmVlX2xpc3QoaW1hcC0+bnNfcGVyc29uYWwpOwotCWZyZWVfbGlzdChpbWFwLT5uc19vdGhlcik7Ci0JZnJlZV9saXN0KGltYXAtPm5zX3NoYXJlZCk7CiAJZnJlZShpbWFwKTsKIH0KIAotc3RhdGljIHZvaWQgaW1hcF9jbG9zZV9zdG9yZShzdHJ1Y3Qgc3RvcmUgKmN0eCkKK3N0YXRpYyB2b2lkIGltYXBfY2xvc2Vfc3RvcmUoc3RydWN0IGltYXBfc3RvcmUgKmN0eCkKIHsKLQlpbWFwX2Nsb3NlX3NlcnZlcigoc3RydWN0IGltYXBfc3RvcmUgKiljdHgpOwotCWZyZWVfZ2VuZXJpY19tZXNzYWdlcyhjdHgtPm1zZ3MpOworCWltYXBfY2xvc2Vfc2VydmVyKGN0eCk7CiAJZnJlZShjdHgpOwogfQogCkBAIC0xMTAzLDcgKzk1OCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgc3RvcmUgKmltYXBfb3Blbl9zdG9yZShzdHJ1Y3QgaW1hcF9zZXJ2ZXJfY29uZiAqc3J2YykKK3N0YXRpYyBzdHJ1Y3QgaW1hcF9zdG9yZSAqaW1hcF9vcGVuX3N0b3JlKHN0cnVjdCBpbWFwX3NlcnZlcl9jb25mICpzcnZjKQogewogCXN0cnVjdCBpbWFwX3N0b3JlICpjdHg7CiAJc3RydWN0IGltYXAgKmltYXA7CkBAIC0xMzEzLDE3MyArMTE2OCwxMTMgQEAKIAl9IC8qICFwcmVhdXRoICovCiAKIAljdHgtPnByZWZpeCA9ICIiOwotCWN0eC0+dHJhc2huYyA9IDE7Ci0JcmV0dXJuIChzdHJ1Y3Qgc3RvcmUgKiljdHg7CisJcmV0dXJuIGN0eDsKIAogYmFpbDoKLQlpbWFwX2Nsb3NlX3N0b3JlKCZjdHgtPmdlbik7CisJaW1hcF9jbG9zZV9zdG9yZShjdHgpOwogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgaW50IGltYXBfbWFrZV9mbGFncyhpbnQgZmxhZ3MsIGNoYXIgKmJ1ZikKLXsKLQljb25zdCBjaGFyICpzOwotCXVuc2lnbmVkIGksIGQ7Ci0KLQlmb3IgKGkgPSBkID0gMDsgaSA8IEFSUkFZX1NJWkUoRmxhZ3MpOyBpKyspCi0JCWlmIChmbGFncyAmICgxIDw8IGkpKSB7Ci0JCQlidWZbZCsrXSA9ICcgJzsKLQkJCWJ1ZltkKytdID0gJ1xcJzsKLQkJCWZvciAocyA9IEZsYWdzW2ldOyAqczsgcysrKQotCQkJCWJ1ZltkKytdID0gKnM7Ci0JCX0KLQlidWZbMF0gPSAnKCc7Ci0JYnVmW2QrK10gPSAnKSc7Ci0JcmV0dXJuIGQ7Ci19Ci0KLXN0YXRpYyB2b2lkIGxmX3RvX2NybGYoc3RydWN0IG1zZ19kYXRhICptc2cpCisvKgorICogSW5zZXJ0IENSIGNoYXJhY3RlcnMgYXMgbmVjZXNzYXJ5IGluICptc2cgdG8gZW5zdXJlIHRoYXQgZXZlcnkgTEYKKyAqIGNoYXJhY3RlciBpbiAqbXNnIGlzIHByZWNlZGVkIGJ5IGEgQ1IuCisgKi8KK3N0YXRpYyB2b2lkIGxmX3RvX2NybGYoc3RydWN0IHN0cmJ1ZiAqbXNnKQogewogCWNoYXIgKm5ldzsKLQlpbnQgaSwgaiwgbGZudW0gPSAwOworCXNpemVfdCBpLCBqOworCWNoYXIgbGFzdGM7CiAKLQlpZiAobXNnLT5kYXRhWzBdID09ICdcbicpCi0JCWxmbnVtKys7Ci0JZm9yIChpID0gMTsgaSA8IG1zZy0+bGVuOyBpKyspIHsKLQkJaWYgKG1zZy0+ZGF0YVtpIC0gMV0gIT0gJ1xyJyAmJiBtc2ctPmRhdGFbaV0gPT0gJ1xuJykKLQkJCWxmbnVtKys7CisJLyogRmlyc3QgcGFzczogdGFsbHksIGluIGosIHRoZSBzaXplIG9mIHRoZSBuZXcgc3RyaW5nOiAqLworCWZvciAoaSA9IGogPSAwLCBsYXN0YyA9ICdcMCc7IGkgPCBtc2ctPmxlbjsgaSsrKSB7CisJCWlmIChtc2ctPmJ1ZltpXSA9PSAnXG4nICYmIGxhc3RjICE9ICdccicpCisJCQlqKys7IC8qIGEgQ1Igd2lsbCBuZWVkIHRvIGJlIGFkZGVkIGhlcmUgKi8KKwkJbGFzdGMgPSBtc2ctPmJ1ZltpXTsKKwkJaisrOwogCX0KIAotCW5ldyA9IHhtYWxsb2MobXNnLT5sZW4gKyBsZm51bSk7Ci0JaWYgKG1zZy0+ZGF0YVswXSA9PSAnXG4nKSB7Ci0JCW5ld1swXSA9ICdccic7Ci0JCW5ld1sxXSA9ICdcbic7Ci0JCWkgPSAxOwotCQlqID0gMjsKLQl9IGVsc2UgewotCQluZXdbMF0gPSBtc2ctPmRhdGFbMF07Ci0JCWkgPSAxOwotCQlqID0gMTsKLQl9Ci0JZm9yICggOyBpIDwgbXNnLT5sZW47IGkrKykgewotCQlpZiAobXNnLT5kYXRhW2ldICE9ICdcbicpIHsKLQkJCW5ld1tqKytdID0gbXNnLT5kYXRhW2ldOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKG1zZy0+ZGF0YVtpIC0gMV0gIT0gJ1xyJykKKwluZXcgPSB4bWFsbG9jKGogKyAxKTsKKworCS8qCisJICogU2Vjb25kIHBhc3M6IHdyaXRlIHRoZSBuZXcgc3RyaW5nLiAgTm90ZSB0aGF0IHRoaXMgbG9vcCBpcworCSAqIG90aGVyd2lzZSBpZGVudGljYWwgdG8gdGhlIGZpcnN0IHBhc3MuCisJICovCisJZm9yIChpID0gaiA9IDAsIGxhc3RjID0gJ1wwJzsgaSA8IG1zZy0+bGVuOyBpKyspIHsKKwkJaWYgKG1zZy0+YnVmW2ldID09ICdcbicgJiYgbGFzdGMgIT0gJ1xyJykKIAkJCW5ld1tqKytdID0gJ1xyJzsKLQkJLyogb3RoZXJ3aXNlIGl0IGFscmVhZHkgaGFkIENSIGJlZm9yZSAqLwotCQluZXdbaisrXSA9ICdcbic7CisJCWxhc3RjID0gbmV3W2orK10gPSBtc2ctPmJ1ZltpXTsKIAl9Ci0JbXNnLT5sZW4gKz0gbGZudW07Ci0JZnJlZShtc2ctPmRhdGEpOwotCW1zZy0+ZGF0YSA9IG5ldzsKKwlzdHJidWZfYXR0YWNoKG1zZywgbmV3LCBqLCBqICsgMSk7CiB9CiAKLXN0YXRpYyBpbnQgaW1hcF9zdG9yZV9tc2coc3RydWN0IHN0b3JlICpnY3R4LCBzdHJ1Y3QgbXNnX2RhdGEgKmRhdGEpCisvKgorICogU3RvcmUgbXNnIHRvIElNQVAuICBBbHNvIGRldGFjaCBhbmQgZnJlZSB0aGUgZGF0YSBmcm9tIG1zZy0+ZGF0YSwKKyAqIGxlYXZpbmcgbXNnLT5kYXRhIGVtcHR5LgorICovCitzdGF0aWMgaW50IGltYXBfc3RvcmVfbXNnKHN0cnVjdCBpbWFwX3N0b3JlICpjdHgsIHN0cnVjdCBzdHJidWYgKm1zZykKIHsKLQlzdHJ1Y3QgaW1hcF9zdG9yZSAqY3R4ID0gKHN0cnVjdCBpbWFwX3N0b3JlICopZ2N0eDsKIAlzdHJ1Y3QgaW1hcCAqaW1hcCA9IGN0eC0+aW1hcDsKIAlzdHJ1Y3QgaW1hcF9jbWRfY2IgY2I7CiAJY29uc3QgY2hhciAqcHJlZml4LCAqYm94OwotCWludCByZXQsIGQ7Ci0JY2hhciBmbGFnc3RyWzEyOF07CisJaW50IHJldDsKIAotCWxmX3RvX2NybGYoZGF0YSk7CisJbGZfdG9fY3JsZihtc2cpOwogCW1lbXNldCgmY2IsIDAsIHNpemVvZihjYikpOwogCi0JY2IuZGxlbiA9IGRhdGEtPmxlbjsKLQljYi5kYXRhID0geG1hbGxvYyhjYi5kbGVuKTsKLQltZW1jcHkoY2IuZGF0YSwgZGF0YS0+ZGF0YSwgZGF0YS0+bGVuKTsKKwljYi5kbGVuID0gbXNnLT5sZW47CisJY2IuZGF0YSA9IHN0cmJ1Zl9kZXRhY2gobXNnLCBOVUxMKTsKIAotCWQgPSAwOwotCWlmIChkYXRhLT5mbGFncykgewotCQlkID0gaW1hcF9tYWtlX2ZsYWdzKGRhdGEtPmZsYWdzLCBmbGFnc3RyKTsKLQkJZmxhZ3N0cltkKytdID0gJyAnOwotCX0KLQlmbGFnc3RyW2RdID0gMDsKLQotCWJveCA9IGdjdHgtPm5hbWU7CisJYm94ID0gY3R4LT5uYW1lOwogCXByZWZpeCA9ICFzdHJjbXAoYm94LCAiSU5CT1giKSA/ICIiIDogY3R4LT5wcmVmaXg7CiAJY2IuY3JlYXRlID0gMDsKLQlyZXQgPSBpbWFwX2V4ZWNfbShjdHgsICZjYiwgIkFQUEVORCBcIiVzJXNcIiAlcyIsIHByZWZpeCwgYm94LCBmbGFnc3RyKTsKKwlyZXQgPSBpbWFwX2V4ZWNfbShjdHgsICZjYiwgIkFQUEVORCBcIiVzJXNcIiAiLCBwcmVmaXgsIGJveCk7CiAJaW1hcC0+Y2FwcyA9IGltYXAtPnJjYXBzOwogCWlmIChyZXQgIT0gRFJWX09LKQogCQlyZXR1cm4gcmV0OwotCWdjdHgtPmNvdW50Kys7CiAKIAlyZXR1cm4gRFJWX09LOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVfaHRtbF9jaGFycyhzdHJ1Y3Qgc3RyYnVmICpwKQotewotCWludCBpOwotCWZvciAoaSA9IDA7IGkgPCBwLT5sZW47IGkrKykgewotCQlpZiAocC0+YnVmW2ldID09ICcmJykKLQkJCXN0cmJ1Zl9zcGxpY2UocCwgaSwgMSwgIiZhbXA7IiwgNSk7Ci0JCWlmIChwLT5idWZbaV0gPT0gJzwnKQotCQkJc3RyYnVmX3NwbGljZShwLCBpLCAxLCAiJmx0OyIsIDQpOwotCQlpZiAocC0+YnVmW2ldID09ICc+JykKLQkJCXN0cmJ1Zl9zcGxpY2UocCwgaSwgMSwgIiZndDsiLCA0KTsKLQkJaWYgKHAtPmJ1ZltpXSA9PSAnIicpCi0JCQlzdHJidWZfc3BsaWNlKHAsIGksIDEsICImcXVvdDsiLCA2KTsKLQl9Ci19Ci1zdGF0aWMgdm9pZCB3cmFwX2luX2h0bWwoc3RydWN0IG1zZ19kYXRhICptc2cpCitzdGF0aWMgdm9pZCB3cmFwX2luX2h0bWwoc3RydWN0IHN0cmJ1ZiAqbXNnKQogewogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0Jc3RydWN0IHN0cmJ1ZiAqKmxpbmVzOwotCXN0cnVjdCBzdHJidWYgKipwOwogCXN0YXRpYyBjaGFyICpjb250ZW50X3R5cGUgPSAiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7XG4iOwogCXN0YXRpYyBjaGFyICpwcmVfb3BlbiA9ICI8cHJlPlxuIjsKIAlzdGF0aWMgY2hhciAqcHJlX2Nsb3NlID0gIjwvcHJlPlxuIjsKLQlpbnQgYWRkZWRfaGVhZGVyID0gMDsKKwljb25zdCBjaGFyICpib2R5ID0gc3Ryc3RyKG1zZy0+YnVmLCAiXG5cbiIpOwogCi0Jc3RyYnVmX2F0dGFjaCgmYnVmLCBtc2ctPmRhdGEsIG1zZy0+bGVuLCBtc2ctPmxlbik7Ci0JbGluZXMgPSBzdHJidWZfc3BsaXQoJmJ1ZiwgJ1xuJyk7Ci0Jc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Ci0JZm9yIChwID0gbGluZXM7ICpwOyBwKyspIHsKLQkJaWYgKCEgYWRkZWRfaGVhZGVyKSB7Ci0JCQlpZiAoKCpwKS0+bGVuID09IDEgJiYgKigoKnApLT5idWYpID09ICdcbicpIHsKLQkJCQlzdHJidWZfYWRkc3RyKCZidWYsIGNvbnRlbnRfdHlwZSk7Ci0JCQkJc3RyYnVmX2FkZGJ1ZigmYnVmLCAqcCk7Ci0JCQkJc3RyYnVmX2FkZHN0cigmYnVmLCBwcmVfb3Blbik7Ci0JCQkJYWRkZWRfaGVhZGVyID0gMTsKLQkJCQljb250aW51ZTsKLQkJCX0KLQkJfQotCQllbHNlCi0JCQllbmNvZGVfaHRtbF9jaGFycygqcCk7Ci0JCXN0cmJ1Zl9hZGRidWYoJmJ1ZiwgKnApOwotCX0KKwlpZiAoIWJvZHkpCisJCXJldHVybjsgLyogSGVhZGVycyBidXQgbm8gYm9keTsgbm8gd3JhcHBpbmcgbmVlZGVkICovCisKKwlib2R5ICs9IDI7CisKKwlzdHJidWZfYWRkKCZidWYsIG1zZy0+YnVmLCBib2R5IC0gbXNnLT5idWYgLSAxKTsKKwlzdHJidWZfYWRkc3RyKCZidWYsIGNvbnRlbnRfdHlwZSk7CisJc3RyYnVmX2FkZGNoKCZidWYsICdcbicpOworCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgcHJlX29wZW4pOworCXN0cmJ1Zl9hZGRzdHJfeG1sX3F1b3RlZCgmYnVmLCBib2R5KTsKIAlzdHJidWZfYWRkc3RyKCZidWYsIHByZV9jbG9zZSk7Ci0Jc3RyYnVmX2xpc3RfZnJlZShsaW5lcyk7Ci0JbXNnLT5sZW4gID0gYnVmLmxlbjsKLQltc2ctPmRhdGEgPSBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpOworCisJc3RyYnVmX3JlbGVhc2UobXNnKTsKKwkqbXNnID0gYnVmOwogfQogCiAjZGVmaW5lIENIVU5LU0laRSAweDEwMDAKIAotc3RhdGljIGludCByZWFkX21lc3NhZ2UoRklMRSAqZiwgc3RydWN0IG1zZ19kYXRhICptc2cpCitzdGF0aWMgaW50IHJlYWRfbWVzc2FnZShGSUxFICpmLCBzdHJ1Y3Qgc3RyYnVmICphbGxfbXNncykKIHsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCi0JbWVtc2V0KG1zZywgMCwgc2l6ZW9mKCptc2cpKTsKLQogCWRvIHsKLQkJaWYgKHN0cmJ1Zl9mcmVhZCgmYnVmLCBDSFVOS1NJWkUsIGYpIDw9IDApCisJCWlmIChzdHJidWZfZnJlYWQoYWxsX21zZ3MsIENIVU5LU0laRSwgZikgPD0gMCkKIAkJCWJyZWFrOwogCX0gd2hpbGUgKCFmZW9mKGYpKTsKIAotCW1zZy0+bGVuICA9IGJ1Zi5sZW47Ci0JbXNnLT5kYXRhID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKLQlyZXR1cm4gbXNnLT5sZW47CisJcmV0dXJuIGZlcnJvcihmKSA/IC0xIDogMDsKIH0KIAotc3RhdGljIGludCBjb3VudF9tZXNzYWdlcyhzdHJ1Y3QgbXNnX2RhdGEgKm1zZykKK3N0YXRpYyBpbnQgY291bnRfbWVzc2FnZXMoc3RydWN0IHN0cmJ1ZiAqYWxsX21zZ3MpCiB7CiAJaW50IGNvdW50ID0gMDsKLQljaGFyICpwID0gbXNnLT5kYXRhOworCWNoYXIgKnAgPSBhbGxfbXNncy0+YnVmOwogCiAJd2hpbGUgKDEpIHsKIAkJaWYgKCFwcmVmaXhjbXAocCwgIkZyb20gIikpIHsKQEAgLTE1MDAsMzQgKzEyOTUsMzkgQEAKIAlyZXR1cm4gY291bnQ7CiB9CiAKLXN0YXRpYyBpbnQgc3BsaXRfbXNnKHN0cnVjdCBtc2dfZGF0YSAqYWxsX21zZ3MsIHN0cnVjdCBtc2dfZGF0YSAqbXNnLCBpbnQgKm9mcykKKy8qCisgKiBDb3B5IHRoZSBuZXh0IG1lc3NhZ2UgZnJvbSBhbGxfbXNncywgc3RhcnRpbmcgYXQgb2Zmc2V0ICpvZnMsIHRvCisgKiBtc2cuICBVcGRhdGUgKm9mcyB0byB0aGUgc3RhcnQgb2YgdGhlIGZvbGxvd2luZyBtZXNzYWdlLiAgUmV0dXJuCisgKiB0cnVlIGlmZiBhIG1lc3NhZ2Ugd2FzIHN1Y2Nlc3NmdWxseSBjb3BpZWQuCisgKi8KK3N0YXRpYyBpbnQgc3BsaXRfbXNnKHN0cnVjdCBzdHJidWYgKmFsbF9tc2dzLCBzdHJ1Y3Qgc3RyYnVmICptc2csIGludCAqb2ZzKQogewogCWNoYXIgKnAsICpkYXRhOworCXNpemVfdCBsZW47CiAKLQltZW1zZXQobXNnLCAwLCBzaXplb2YgKm1zZyk7CiAJaWYgKCpvZnMgPj0gYWxsX21zZ3MtPmxlbikKIAkJcmV0dXJuIDA7CiAKLQlkYXRhID0gJmFsbF9tc2dzLT5kYXRhWypvZnNdOwotCW1zZy0+bGVuID0gYWxsX21zZ3MtPmxlbiAtICpvZnM7CisJZGF0YSA9ICZhbGxfbXNncy0+YnVmWypvZnNdOworCWxlbiA9IGFsbF9tc2dzLT5sZW4gLSAqb2ZzOwogCi0JaWYgKG1zZy0+bGVuIDwgNSB8fCBwcmVmaXhjbXAoZGF0YSwgIkZyb20gIikpCisJaWYgKGxlbiA8IDUgfHwgcHJlZml4Y21wKGRhdGEsICJGcm9tICIpKQogCQlyZXR1cm4gMDsKIAogCXAgPSBzdHJjaHIoZGF0YSwgJ1xuJyk7CiAJaWYgKHApIHsKLQkJcCA9ICZwWzFdOwotCQltc2ctPmxlbiAtPSBwLWRhdGE7Ci0JCSpvZnMgKz0gcC1kYXRhOworCQlwKys7CisJCWxlbiAtPSBwIC0gZGF0YTsKKwkJKm9mcyArPSBwIC0gZGF0YTsKIAkJZGF0YSA9IHA7CiAJfQogCiAJcCA9IHN0cnN0cihkYXRhLCAiXG5Gcm9tICIpOwogCWlmIChwKQotCQltc2ctPmxlbiA9ICZwWzFdIC0gZGF0YTsKKwkJbGVuID0gJnBbMV0gLSBkYXRhOwogCi0JbXNnLT5kYXRhID0geG1lbWR1cHooZGF0YSwgbXNnLT5sZW4pOwotCSpvZnMgKz0gbXNnLT5sZW47CisJc3RyYnVmX2FkZChtc2csIGRhdGEsIGxlbik7CisJKm9mcyArPSBsZW47CiAJcmV0dXJuIDE7CiB9CiAKQEAgLTE1NzgsOCArMTM3OCw5IEBACiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKLQlzdHJ1Y3QgbXNnX2RhdGEgYWxsX21zZ3MsIG1zZzsKLQlzdHJ1Y3Qgc3RvcmUgKmN0eCA9IE5VTEw7CisJc3RydWN0IHN0cmJ1ZiBhbGxfbXNncyA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJidWYgbXNnID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IGltYXBfc3RvcmUgKmN0eCA9IE5VTEw7CiAJaW50IG9mcyA9IDA7CiAJaW50IHI7CiAJaW50IHRvdGFsLCBuID0gMDsKQEAgLTE2MTEsNyArMTQxMiwxMiBAQAogCX0KIAogCS8qIHJlYWQgdGhlIG1lc3NhZ2VzICovCi0JaWYgKCFyZWFkX21lc3NhZ2Uoc3RkaW4sICZhbGxfbXNncykpIHsKKwlpZiAocmVhZF9tZXNzYWdlKHN0ZGluLCAmYWxsX21zZ3MpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiZXJyb3IgcmVhZGluZyBpbnB1dFxuIik7CisJCXJldHVybiAxOworCX0KKworCWlmIChhbGxfbXNncy5sZW4gPT0gMCkgewogCQlmcHJpbnRmKHN0ZGVyciwgIm5vdGhpbmcgdG8gc2VuZFxuIik7CiAJCXJldHVybiAxOwogCX0KQEAgLTE2MzMsNiArMTQzOSw3IEBACiAJY3R4LT5uYW1lID0gaW1hcF9mb2xkZXI7CiAJd2hpbGUgKDEpIHsKIAkJdW5zaWduZWQgcGVyY2VudCA9IG4gKiAxMDAgLyB0b3RhbDsKKwogCQlmcHJpbnRmKHN0ZGVyciwgIiU0dSUlICglZC8lZCkgZG9uZVxyIiwgcGVyY2VudCwgbiwgdG90YWwpOwogCQlpZiAoIXNwbGl0X21zZygmYWxsX21zZ3MsICZtc2csICZvZnMpKQogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9rd3NldC5jIGIva3dzZXQuYwppbmRleCA1MWIyYWI2Li41ODAwOTk5IDEwMDY0NAotLS0gYS9rd3NldC5jCisrKyBiL2t3c2V0LmMKQEAgLTI2LDcgKzI2LDcgQEAKICAgIFRoZSBhdXRob3IgbWF5IGJlIHJlYWNoZWQgKEVtYWlsKSBhdCB0aGUgYWRkcmVzcyBtaWtlQGFpLm1pdC5lZHUsCiAgICBvciAoVVMgbWFpbCkgYXMgTWlrZSBIYWVydGVsIGMvbyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICovCiAKLS8qIFRoZSBhbGdvcml0aG0gaW1wbGVtZW50ZWQgYnkgdGhlc2Ugcm91dGluZXMgYmVhcnMgYSBzdGFydGxpbmcgcmVzZW1ibGVuY2UKKy8qIFRoZSBhbGdvcml0aG0gaW1wbGVtZW50ZWQgYnkgdGhlc2Ugcm91dGluZXMgYmVhcnMgYSBzdGFydGxpbmcgcmVzZW1ibGFuY2UKICAgIHRvIG9uZSBkaXNjb3ZlcmVkIGJ5IEJlYXRlIENvbW1lbnR6LVdhbHRlciwgYWx0aG91Z2ggaXQgaXMgbm90IGlkZW50aWNhbC4KICAgIFNlZSAiQSBTdHJpbmcgTWF0Y2hpbmcgQWxnb3JpdGhtIEZhc3Qgb24gdGhlIEF2ZXJhZ2UsIiBUZWNobmljYWwgUmVwb3J0LAogICAgSUJNLUdlcm1hbnksIFNjaWVudGlmaWMgQ2VudGVyIEhlaWRlbGJlcmcsIFRpZXJnYXJ0ZW5zdHJhc3NlIDE1LCBELTY5MDAKQEAgLTQzNSw3ICs0MzUsNyBAQAogCSAgLyogVXBkYXRlIHRoZSBkZWx0YSB0YWJsZSBmb3IgdGhlIGRlc2NlbmRlbnRzIG9mIHRoaXMgbm9kZS4gKi8KIAkgIHRyZWVkZWx0YShjdXJyLT5saW5rcywgY3Vyci0+ZGVwdGgsIGRlbHRhKTsKIAotCSAgLyogQ29tcHV0ZSB0aGUgZmFpbHVyZSBmdW5jdGlvbiBmb3IgdGhlIGRlY2VuZGVudHMgb2YgdGhpcyBub2RlLiAqLworCSAgLyogQ29tcHV0ZSB0aGUgZmFpbHVyZSBmdW5jdGlvbiBmb3IgdGhlIGRlc2NlbmRhbnRzIG9mIHRoaXMgbm9kZS4gKi8KIAkgIHRyZWVmYWlscyhjdXJyLT5saW5rcywgY3Vyci0+ZmFpbCwga3dzZXQtPnRyaWUpOwogCiAJICAvKiBVcGRhdGUgdGhlIHNoaWZ0cyBhdCBlYWNoIG5vZGUgaW4gdGhlIGN1cnJlbnQgbm9kZSdzIGNoYWluCmRpZmYgLS1naXQgYS9saW5lLWxvZy5jIGIvbGluZS1sb2cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJiMDliCi0tLSAvZGV2L251bGwKKysrIGIvbGluZS1sb2cuYwpAQCAtMCwwICsxLDEyNzMgQEAKKyNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKKyNpbmNsdWRlICJsaW5lLXJhbmdlLmgiCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJ0YWcuaCIKKyNpbmNsdWRlICJibG9iLmgiCisjaW5jbHVkZSAidHJlZS5oIgorI2luY2x1ZGUgImRpZmYuaCIKKyNpbmNsdWRlICJjb21taXQuaCIKKyNpbmNsdWRlICJkZWNvcmF0ZS5oIgorI2luY2x1ZGUgInJldmlzaW9uLmgiCisjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAic3RyYnVmLmgiCisjaW5jbHVkZSAibG9nLXRyZWUuaCIKKyNpbmNsdWRlICJncmFwaC5oIgorI2luY2x1ZGUgInVzZXJkaWZmLmgiCisjaW5jbHVkZSAibGluZS1sb2cuaCIKKworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2dyb3coc3RydWN0IHJhbmdlX3NldCAqcnMsIHNpemVfdCBleHRyYSkKK3sKKwlBTExPQ19HUk9XKHJzLT5yYW5nZXMsIHJzLT5uciArIGV4dHJhLCBycy0+YWxsb2MpOworfQorCisvKiBFaXRoZXIgaW5pdGlhbGl6YXRpb24gd291bGQgYmUgZmluZSAqLworI2RlZmluZSBSQU5HRV9TRVRfSU5JVCB7MH0KKworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2luaXQoc3RydWN0IHJhbmdlX3NldCAqcnMsIHNpemVfdCBwcmVhbGxvYykKK3sKKwlycy0+YWxsb2MgPSBycy0+bnIgPSAwOworCXJzLT5yYW5nZXMgPSBOVUxMOworCWlmIChwcmVhbGxvYykKKwkJcmFuZ2Vfc2V0X2dyb3cocnMsIHByZWFsbG9jKTsKK30KKworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X3JlbGVhc2Uoc3RydWN0IHJhbmdlX3NldCAqcnMpCit7CisJZnJlZShycy0+cmFuZ2VzKTsKKwlycy0+YWxsb2MgPSBycy0+bnIgPSAwOworCXJzLT5yYW5nZXMgPSBOVUxMOworfQorCisvKiBkc3QgbXVzdCBiZSB1bmluaXRpYWxpemVkISAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2NvcHkoc3RydWN0IHJhbmdlX3NldCAqZHN0LCBzdHJ1Y3QgcmFuZ2Vfc2V0ICpzcmMpCit7CisJcmFuZ2Vfc2V0X2luaXQoZHN0LCBzcmMtPm5yKTsKKwltZW1jcHkoZHN0LT5yYW5nZXMsIHNyYy0+cmFuZ2VzLCBzcmMtPm5yKnNpemVvZihzdHJ1Y3QgcmFuZ2Vfc2V0KSk7CisJZHN0LT5uciA9IHNyYy0+bnI7Cit9CitzdGF0aWMgdm9pZCByYW5nZV9zZXRfbW92ZShzdHJ1Y3QgcmFuZ2Vfc2V0ICpkc3QsIHN0cnVjdCByYW5nZV9zZXQgKnNyYykKK3sKKwlyYW5nZV9zZXRfcmVsZWFzZShkc3QpOworCWRzdC0+cmFuZ2VzID0gc3JjLT5yYW5nZXM7CisJZHN0LT5uciA9IHNyYy0+bnI7CisJZHN0LT5hbGxvYyA9IHNyYy0+YWxsb2M7CisJc3JjLT5yYW5nZXMgPSBOVUxMOworCXNyYy0+YWxsb2MgPSBzcmMtPm5yID0gMDsKK30KKworLyogdGFjayBvbiBhIF9uZXdfIHJhbmdlIF9hdCB0aGUgZW5kXyAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2FwcGVuZF91bnNhZmUoc3RydWN0IHJhbmdlX3NldCAqcnMsIGxvbmcgYSwgbG9uZyBiKQoreworCWFzc2VydChhIDw9IGIpOworCXJhbmdlX3NldF9ncm93KHJzLCAxKTsKKwlycy0+cmFuZ2VzW3JzLT5ucl0uc3RhcnQgPSBhOworCXJzLT5yYW5nZXNbcnMtPm5yXS5lbmQgPSBiOworCXJzLT5ucisrOworfQorCitzdGF0aWMgdm9pZCByYW5nZV9zZXRfYXBwZW5kKHN0cnVjdCByYW5nZV9zZXQgKnJzLCBsb25nIGEsIGxvbmcgYikKK3sKKwlhc3NlcnQocnMtPm5yID09IDAgfHwgcnMtPnJhbmdlc1tycy0+bnItMV0uZW5kIDw9IGEpOworCXJhbmdlX3NldF9hcHBlbmRfdW5zYWZlKHJzLCBhLCBiKTsKK30KKworc3RhdGljIGludCByYW5nZV9jbXAoY29uc3Qgdm9pZCAqX3IsIGNvbnN0IHZvaWQgKl9zKQoreworCWNvbnN0IHN0cnVjdCByYW5nZSAqciA9IF9yOworCWNvbnN0IHN0cnVjdCByYW5nZSAqcyA9IF9zOworCisJLyogdGhpcyBjb3VsZCBiZSBzaW1wbHkgJ3JldHVybiByLnN0YXJ0LXMuc3RhcnQnLCBidXQgZm9yIHRoZSB0eXBlcyAqLworCWlmIChyLT5zdGFydCA9PSBzLT5zdGFydCkKKwkJcmV0dXJuIDA7CisJaWYgKHItPnN0YXJ0IDwgcy0+c3RhcnQpCisJCXJldHVybiAtMTsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIENoZWNrIHRoYXQgdGhlIHJhbmdlcyBhcmUgbm9uLWVtcHR5LCBzb3J0ZWQgYW5kIG5vbi1vdmVybGFwcGluZworICovCitzdGF0aWMgdm9pZCByYW5nZV9zZXRfY2hlY2tfaW52YXJpYW50cyhzdHJ1Y3QgcmFuZ2Vfc2V0ICpycykKK3sKKwlpbnQgaTsKKworCWlmICghcnMpCisJCXJldHVybjsKKworCWlmIChycy0+bnIpCisJCWFzc2VydChycy0+cmFuZ2VzWzBdLnN0YXJ0IDwgcnMtPnJhbmdlc1swXS5lbmQpOworCisJZm9yIChpID0gMTsgaSA8IHJzLT5ucjsgaSsrKSB7CisJCWFzc2VydChycy0+cmFuZ2VzW2ktMV0uZW5kIDwgcnMtPnJhbmdlc1tpXS5zdGFydCk7CisJCWFzc2VydChycy0+cmFuZ2VzW2ldLnN0YXJ0IDwgcnMtPnJhbmdlc1tpXS5lbmQpOworCX0KK30KKworLyoKKyAqIEluLXBsYWNlIHBhc3Mgb2Ygc29ydGluZyBhbmQgbWVyZ2luZyB0aGUgcmFuZ2VzIGluIHRoZSByYW5nZSBzZXQsCisgKiB0byBlc3RhYmxpc2ggdGhlIGludmFyaWFudHMgd2hlbiB3ZSBnZXQgdGhlIHJhbmdlcyBmcm9tIHRoZSB1c2VyCisgKi8KK3N0YXRpYyB2b2lkIHNvcnRfYW5kX21lcmdlX3JhbmdlX3NldChzdHJ1Y3QgcmFuZ2Vfc2V0ICpycykKK3sKKwlpbnQgaTsKKwlpbnQgbyA9IDE7IC8qIG91dHB1dCBjdXJzb3IgKi8KKworCXFzb3J0KHJzLT5yYW5nZXMsIHJzLT5uciwgc2l6ZW9mKHN0cnVjdCByYW5nZSksIHJhbmdlX2NtcCk7CisKKwlmb3IgKGkgPSAxOyBpIDwgcnMtPm5yOyBpKyspIHsKKwkJaWYgKHJzLT5yYW5nZXNbaV0uc3RhcnQgPD0gcnMtPnJhbmdlc1tvLTFdLmVuZCkgeworCQkJcnMtPnJhbmdlc1tvLTFdLmVuZCA9IHJzLT5yYW5nZXNbaV0uZW5kOworCQl9IGVsc2UgeworCQkJcnMtPnJhbmdlc1tvXS5zdGFydCA9IHJzLT5yYW5nZXNbaV0uc3RhcnQ7CisJCQlycy0+cmFuZ2VzW29dLmVuZCA9IHJzLT5yYW5nZXNbaV0uZW5kOworCQkJbysrOworCQl9CisJfQorCWFzc2VydChvIDw9IHJzLT5ucik7CisJcnMtPm5yID0gbzsKKworCXJhbmdlX3NldF9jaGVja19pbnZhcmlhbnRzKHJzKTsKK30KKworLyoKKyAqIFVuaW9uIG9mIHJhbmdlIHNldHMgKGkuZS4sIHNldHMgb2YgbGluZSBudW1iZXJzKS4gIFVzZWQgdG8gbWVyZ2UKKyAqIHRoZW0gd2hlbiBzZWFyY2hlcyBtZWV0IGF0IGEgY29tbW9uIGFuY2VzdG9yLgorICoKKyAqIFRoaXMgaXMgYWxzbyB3aGVyZSB0aGUgcmFuZ2VzIGFyZSBjb25zb2xpZGF0ZWQgaW50byBjYW5vbmljYWwgZm9ybToKKyAqIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCByYW5nZXMgYXJlIG1lcmdlZCwgYW5kIGVtcHR5IHJhbmdlcyBhcmUKKyAqIHJlbW92ZWQuCisgKi8KK3N0YXRpYyB2b2lkIHJhbmdlX3NldF91bmlvbihzdHJ1Y3QgcmFuZ2Vfc2V0ICpvdXQsCisJCQkgICAgIHN0cnVjdCByYW5nZV9zZXQgKmEsIHN0cnVjdCByYW5nZV9zZXQgKmIpCit7CisJaW50IGkgPSAwLCBqID0gMCwgbyA9IDA7CisJc3RydWN0IHJhbmdlICpyYSA9IGEtPnJhbmdlczsKKwlzdHJ1Y3QgcmFuZ2UgKnJiID0gYi0+cmFuZ2VzOworCS8qIGNhbm5vdCBtYWtlIGFuIGFsaWFzIG9mIG91dC0+cmFuZ2VzOiBpdCBtYXkgY2hhbmdlIGR1cmluZyBncm93ICovCisKKwlhc3NlcnQob3V0LT5uciA9PSAwKTsKKwl3aGlsZSAoaSA8IGEtPm5yIHx8IGogPCBiLT5ucikgeworCQlzdHJ1Y3QgcmFuZ2UgKm5ldzsKKwkJaWYgKGkgPCBhLT5uciAmJiBqIDwgYi0+bnIpIHsKKwkJCWlmIChyYVtpXS5zdGFydCA8IHJiW2pdLnN0YXJ0KQorCQkJCW5ldyA9ICZyYVtpKytdOworCQkJZWxzZSBpZiAocmFbaV0uc3RhcnQgPiByYltqXS5zdGFydCkKKwkJCQluZXcgPSAmcmJbaisrXTsKKwkJCWVsc2UgaWYgKHJhW2ldLmVuZCA8IHJiW2pdLmVuZCkKKwkJCQluZXcgPSAmcmFbaSsrXTsKKwkJCWVsc2UKKwkJCQluZXcgPSAmcmJbaisrXTsKKwkJfSBlbHNlIGlmIChpIDwgYS0+bnIpICAgICAgLyogYiBleGhhdXN0ZWQgKi8KKwkJCW5ldyA9ICZyYVtpKytdOworCQllbHNlICAgICAgICAgICAgICAgICAgICAgICAvKiBhIGV4aGF1c3RlZCAqLworCQkJbmV3ID0gJnJiW2orK107CisJCWlmIChuZXctPnN0YXJ0ID09IG5ldy0+ZW5kKQorCQkJOyAvKiBlbXB0eSByYW5nZSAqLworCQllbHNlIGlmICghbyB8fCBvdXQtPnJhbmdlc1tvLTFdLmVuZCA8IG5ldy0+c3RhcnQpIHsKKwkJCXJhbmdlX3NldF9ncm93KG91dCwgMSk7CisJCQlvdXQtPnJhbmdlc1tvXS5zdGFydCA9IG5ldy0+c3RhcnQ7CisJCQlvdXQtPnJhbmdlc1tvXS5lbmQgPSBuZXctPmVuZDsKKwkJCW8rKzsKKwkJfSBlbHNlIGlmIChvdXQtPnJhbmdlc1tvLTFdLmVuZCA8IG5ldy0+ZW5kKSB7CisJCQlvdXQtPnJhbmdlc1tvLTFdLmVuZCA9IG5ldy0+ZW5kOworCQl9CisJfQorCW91dC0+bnIgPSBvOworfQorCisvKgorICogRGlmZmVyZW5jZSBvZiByYW5nZSBzZXRzIChvdXQgPSBhIFwgYikuICBQYXNzIHRoZSAiaW50ZXJlc3RpbmciCisgKiByYW5nZXMgYXMgJ2EnIGFuZCB0aGUgdGFyZ2V0IHNpZGUgb2YgdGhlIGRpZmYgYXMgJ2InOiBpdCByZW1vdmVzCisgKiB0aGUgcmFuZ2VzIGZvciB3aGljaCB0aGUgY29tbWl0IGlzIHJlc3BvbnNpYmxlLgorICovCitzdGF0aWMgdm9pZCByYW5nZV9zZXRfZGlmZmVyZW5jZShzdHJ1Y3QgcmFuZ2Vfc2V0ICpvdXQsCisJCQkJICBzdHJ1Y3QgcmFuZ2Vfc2V0ICphLCBzdHJ1Y3QgcmFuZ2Vfc2V0ICpiKQoreworCWludCBpLCBqID0gIDA7CisJZm9yIChpID0gMDsgaSA8IGEtPm5yOyBpKyspIHsKKwkJbG9uZyBzdGFydCA9IGEtPnJhbmdlc1tpXS5zdGFydDsKKwkJbG9uZyBlbmQgPSBhLT5yYW5nZXNbaV0uZW5kOworCQl3aGlsZSAoc3RhcnQgPCBlbmQpIHsKKwkJCXdoaWxlIChqIDwgYi0+bnIgJiYgc3RhcnQgPj0gYi0+cmFuZ2VzW2pdLmVuZCkKKwkJCQkvKgorCQkJCSAqIGE6ICAgICAgICAgfC0tLS0tLS0KKwkJCQkgKiBiOiAtLS0tLS18CisJCQkJICovCisJCQkJaisrOworCQkJaWYgKGogPj0gYi0+bnIgfHwgZW5kIDwgYi0+cmFuZ2VzW2pdLnN0YXJ0KSB7CisJCQkJLyoKKwkJCQkgKiBiIGV4aGF1c3RlZCwgb3IKKwkJCQkgKiBhOiAgLS0tLXwKKwkJCQkgKiBiOiAgICAgICAgIHwtLS0tCisJCQkJICovCisJCQkJcmFuZ2Vfc2V0X2FwcGVuZChvdXQsIHN0YXJ0LCBlbmQpOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKHN0YXJ0ID49IGItPnJhbmdlc1tqXS5zdGFydCkgeworCQkJCS8qCisJCQkJICogYTogICAgIHwtLT8/Pz8KKwkJCQkgKiBiOiB8LS0tLS0tfAorCQkJCSAqLworCQkJCXN0YXJ0ID0gYi0+cmFuZ2VzW2pdLmVuZDsKKwkJCX0gZWxzZSBpZiAoZW5kID4gYi0+cmFuZ2VzW2pdLnN0YXJ0KSB7CisJCQkJLyoKKwkJCQkgKiBhOiB8LS0tLS18CisJCQkJICogYjogICAgfC0tPz8/Pz8KKwkJCQkgKi8KKwkJCQlpZiAoc3RhcnQgPCBiLT5yYW5nZXNbal0uc3RhcnQpCisJCQkJCXJhbmdlX3NldF9hcHBlbmQob3V0LCBzdGFydCwgYi0+cmFuZ2VzW2pdLnN0YXJ0KTsKKwkJCQlzdGFydCA9IGItPnJhbmdlc1tqXS5lbmQ7CisJCQl9CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIGRpZmZfcmFuZ2VzX2luaXQoc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmKQoreworCXJhbmdlX3NldF9pbml0KCZkaWZmLT5wYXJlbnQsIDApOworCXJhbmdlX3NldF9pbml0KCZkaWZmLT50YXJnZXQsIDApOworfQorCitzdGF0aWMgdm9pZCBkaWZmX3Jhbmdlc19yZWxlYXNlKHN0cnVjdCBkaWZmX3JhbmdlcyAqZGlmZikKK3sKKwlyYW5nZV9zZXRfcmVsZWFzZSgmZGlmZi0+cGFyZW50KTsKKwlyYW5nZV9zZXRfcmVsZWFzZSgmZGlmZi0+dGFyZ2V0KTsKK30KKwordm9pZCBsaW5lX2xvZ19kYXRhX2luaXQoc3RydWN0IGxpbmVfbG9nX2RhdGEgKnIpCit7CisJbWVtc2V0KHIsIDAsIHNpemVvZihzdHJ1Y3QgbGluZV9sb2dfZGF0YSkpOworCXJhbmdlX3NldF9pbml0KCZyLT5yYW5nZXMsIDApOworfQorCitzdGF0aWMgdm9pZCBsaW5lX2xvZ19kYXRhX2NsZWFyKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKQoreworCXJhbmdlX3NldF9yZWxlYXNlKCZyLT5yYW5nZXMpOworCWlmIChyLT5wYWlyKQorCQlkaWZmX2ZyZWVfZmlsZXBhaXIoci0+cGFpcik7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfbGluZV9sb2dfZGF0YShzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcikKK3sKKwl3aGlsZSAocikgeworCQlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqbmV4dCA9IHItPm5leHQ7CisJCWxpbmVfbG9nX2RhdGFfY2xlYXIocik7CisJCWZyZWUocik7CisJCXIgPSBuZXh0OworCX0KK30KKworc3RhdGljIHN0cnVjdCBsaW5lX2xvZ19kYXRhICoKK3NlYXJjaF9saW5lX2xvZ19kYXRhKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpsaXN0LCBjb25zdCBjaGFyICpwYXRoLAorCQkgICAgIHN0cnVjdCBsaW5lX2xvZ19kYXRhICoqaW5zZXJ0aW9uX3BvaW50KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpwID0gbGlzdDsKKwlpZiAoaW5zZXJ0aW9uX3BvaW50KQorCQkqaW5zZXJ0aW9uX3BvaW50ID0gTlVMTDsKKwl3aGlsZSAocCkgeworCQlpbnQgY21wID0gc3RyY21wKHAtPnBhdGgsIHBhdGgpOworCQlpZiAoIWNtcCkKKwkJCXJldHVybiBwOworCQlpZiAoaW5zZXJ0aW9uX3BvaW50ICYmIGNtcCA8IDApCisJCQkqaW5zZXJ0aW9uX3BvaW50ID0gcDsKKwkJcCA9IHAtPm5leHQ7CisJfQorCXJldHVybiBOVUxMOworfQorCisvKgorICogTm90ZTogdGFrZXMgb3duZXJzaGlwIG9mICdwYXRoJywgd2hpY2ggaGFwcGVucyB0byBiZSB3aGF0IHRoZSBvbmx5CisgKiBjYWxsZXIgbmVlZHMuCisgKi8KK3N0YXRpYyB2b2lkIGxpbmVfbG9nX2RhdGFfaW5zZXJ0KHN0cnVjdCBsaW5lX2xvZ19kYXRhICoqbGlzdCwKKwkJCQkgY2hhciAqcGF0aCwKKwkJCQkgbG9uZyBiZWdpbiwgbG9uZyBlbmQpCit7CisJc3RydWN0IGxpbmVfbG9nX2RhdGEgKmlwOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpwID0gc2VhcmNoX2xpbmVfbG9nX2RhdGEoKmxpc3QsIHBhdGgsICZpcCk7CisKKwlpZiAocCkgeworCQlyYW5nZV9zZXRfYXBwZW5kX3Vuc2FmZSgmcC0+cmFuZ2VzLCBiZWdpbiwgZW5kKTsKKwkJc29ydF9hbmRfbWVyZ2VfcmFuZ2Vfc2V0KCZwLT5yYW5nZXMpOworCQlmcmVlKHBhdGgpOworCQlyZXR1cm47CisJfQorCisJcCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBsaW5lX2xvZ19kYXRhKSk7CisJcC0+cGF0aCA9IHBhdGg7CisJcmFuZ2Vfc2V0X2FwcGVuZCgmcC0+cmFuZ2VzLCBiZWdpbiwgZW5kKTsKKwlpZiAoaXApIHsKKwkJcC0+bmV4dCA9IGlwLT5uZXh0OworCQlpcC0+bmV4dCA9IHA7CisJfSBlbHNlIHsKKwkJcC0+bmV4dCA9ICpsaXN0OworCQkqbGlzdCA9IHA7CisJfQorfQorCitzdHJ1Y3QgY29sbGVjdF9kaWZmX2NiZGF0YSB7CisJc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmOworfTsKKworc3RhdGljIGludCBjb2xsZWN0X2RpZmZfY2IobG9uZyBzdGFydF9hLCBsb25nIGNvdW50X2EsCisJCQkgICBsb25nIHN0YXJ0X2IsIGxvbmcgY291bnRfYiwKKwkJCSAgIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGNvbGxlY3RfZGlmZl9jYmRhdGEgKmQgPSBkYXRhOworCisJaWYgKGNvdW50X2EgPj0gMCkKKwkJcmFuZ2Vfc2V0X2FwcGVuZCgmZC0+ZGlmZi0+cGFyZW50LCBzdGFydF9hLCBzdGFydF9hICsgY291bnRfYSk7CisJaWYgKGNvdW50X2IgPj0gMCkKKwkJcmFuZ2Vfc2V0X2FwcGVuZCgmZC0+ZGlmZi0+dGFyZ2V0LCBzdGFydF9iLCBzdGFydF9iICsgY291bnRfYik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdF9kaWZmKG1tZmlsZV90ICpwYXJlbnQsIG1tZmlsZV90ICp0YXJnZXQsIHN0cnVjdCBkaWZmX3JhbmdlcyAqb3V0KQoreworCXN0cnVjdCBjb2xsZWN0X2RpZmZfY2JkYXRhIGNiZGF0YSA9IHtOVUxMfTsKKwl4cHBhcmFtX3QgeHBwOworCXhkZW1pdGNvbmZfdCB4ZWNmZzsKKwl4ZGVtaXRjYl90IGVjYjsKKworCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJeGVjZmcuY3R4bGVuID0geGVjZmcuaW50ZXJodW5rY3R4bGVuID0gMDsKKworCWNiZGF0YS5kaWZmID0gb3V0OworCXhlY2ZnLmh1bmtfZnVuYyA9IGNvbGxlY3RfZGlmZl9jYjsKKwltZW1zZXQoJmVjYiwgMCwgc2l6ZW9mKGVjYikpOworCWVjYi5wcml2ID0gJmNiZGF0YTsKKwl4ZGlfZGlmZihwYXJlbnQsIHRhcmdldCwgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKK30KKworLyoKKyAqIFRoZXNlIGFyZSBoYW5keSBmb3IgZGVidWdnaW5nLiAgUmVtb3ZpbmcgdGhlbSB3aXRoICNpZiAwIHNpbGVuY2VzCisgKiB0aGUgInVudXNlZCBmdW5jdGlvbiIgd2FybmluZy4KKyAqLworI2lmIDAKK3N0YXRpYyB2b2lkIGR1bXBfcmFuZ2Vfc2V0KHN0cnVjdCByYW5nZV9zZXQgKnJzLCBjb25zdCBjaGFyICpkZXNjKQoreworCWludCBpOworCXByaW50ZigicmFuZ2Ugc2V0ICVzICglZCBpdGVtcyk6XG4iLCBkZXNjLCBycy0+bnIpOworCWZvciAoaSA9IDA7IGkgPCBycy0+bnI7IGkrKykKKwkJcHJpbnRmKCJcdFslbGQsJWxkXVxuIiwgcnMtPnJhbmdlc1tpXS5zdGFydCwgcnMtPnJhbmdlc1tpXS5lbmQpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2xpbmVfbG9nX2RhdGEoc3RydWN0IGxpbmVfbG9nX2RhdGEgKnIpCit7CisJY2hhciBidWZbNDA5Nl07CisJd2hpbGUgKHIpIHsKKwkJc25wcmludGYoYnVmLCA0MDk2LCAiZmlsZSAlc1xuIiwgci0+cGF0aCk7CisJCWR1bXBfcmFuZ2Vfc2V0KCZyLT5yYW5nZXMsIGJ1Zik7CisJCXIgPSByLT5uZXh0OworCX0KK30KKworc3RhdGljIHZvaWQgZHVtcF9kaWZmX3JhbmdlcyhzdHJ1Y3QgZGlmZl9yYW5nZXMgKmRpZmYsIGNvbnN0IGNoYXIgKmRlc2MpCit7CisJaW50IGk7CisJYXNzZXJ0KGRpZmYtPnBhcmVudC5uciA9PSBkaWZmLT50YXJnZXQubnIpOworCXByaW50ZigiZGlmZiByYW5nZXMgJXMgKCVkIGl0ZW1zKTpcbiIsIGRlc2MsIGRpZmYtPnBhcmVudC5ucik7CisJcHJpbnRmKCJcdHBhcmVudFx0dGFyZ2V0XG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgZGlmZi0+cGFyZW50Lm5yOyBpKyspIHsKKwkJcHJpbnRmKCJcdFslbGQsJWxkXVx0WyVsZCwlbGRdXG4iLAorCQkgICAgICAgZGlmZi0+cGFyZW50LnJhbmdlc1tpXS5zdGFydCwKKwkJICAgICAgIGRpZmYtPnBhcmVudC5yYW5nZXNbaV0uZW5kLAorCQkgICAgICAgZGlmZi0+dGFyZ2V0LnJhbmdlc1tpXS5zdGFydCwKKwkJICAgICAgIGRpZmYtPnRhcmdldC5yYW5nZXNbaV0uZW5kKTsKKwl9Cit9CisjZW5kaWYKKworCitzdGF0aWMgaW50IHJhbmdlc19vdmVybGFwKHN0cnVjdCByYW5nZSAqYSwgc3RydWN0IHJhbmdlICpiKQoreworCXJldHVybiAhKGEtPmVuZCA8PSBiLT5zdGFydCB8fCBiLT5lbmQgPD0gYS0+c3RhcnQpOworfQorCisvKgorICogR2l2ZW4gYSBkaWZmIGFuZCB0aGUgc2V0IG9mIGludGVyZXN0aW5nIHJhbmdlcywgZGV0ZXJtaW5lIGFsbCBodW5rcworICogb2YgdGhlIGRpZmYgd2hpY2ggdG91Y2ggKG92ZXJsYXApIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW50ZXJlc3RpbmcKKyAqIHJhbmdlcyBpbiB0aGUgdGFyZ2V0LgorICovCitzdGF0aWMgdm9pZCBkaWZmX3Jhbmdlc19maWx0ZXJfdG91Y2hlZChzdHJ1Y3QgZGlmZl9yYW5nZXMgKm91dCwKKwkJCQkgICAgICAgc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmLAorCQkJCSAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2V0ICpycykKK3sKKwlpbnQgaSwgaiA9IDA7CisKKwlhc3NlcnQob3V0LT50YXJnZXQubnIgPT0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGlmZi0+dGFyZ2V0Lm5yOyBpKyspIHsKKwkJd2hpbGUgKGRpZmYtPnRhcmdldC5yYW5nZXNbaV0uc3RhcnQgPiBycy0+cmFuZ2VzW2pdLmVuZCkgeworCQkJaisrOworCQkJaWYgKGogPT0gcnMtPm5yKQorCQkJCXJldHVybjsKKwkJfQorCQlpZiAocmFuZ2VzX292ZXJsYXAoJmRpZmYtPnRhcmdldC5yYW5nZXNbaV0sICZycy0+cmFuZ2VzW2pdKSkgeworCQkJcmFuZ2Vfc2V0X2FwcGVuZCgmb3V0LT5wYXJlbnQsCisJCQkJCSBkaWZmLT5wYXJlbnQucmFuZ2VzW2ldLnN0YXJ0LAorCQkJCQkgZGlmZi0+cGFyZW50LnJhbmdlc1tpXS5lbmQpOworCQkJcmFuZ2Vfc2V0X2FwcGVuZCgmb3V0LT50YXJnZXQsCisJCQkJCSBkaWZmLT50YXJnZXQucmFuZ2VzW2ldLnN0YXJ0LAorCQkJCQkgZGlmZi0+dGFyZ2V0LnJhbmdlc1tpXS5lbmQpOworCQl9CisJfQorfQorCisvKgorICogQWRqdXN0IHRoZSBsaW5lIGNvdW50cyBpbiAncnMnIHRvIGFjY291bnQgZm9yIHRoZSBsaW5lcworICogYWRkZWQvcmVtb3ZlZCBpbiB0aGUgZGlmZi4KKyAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X3NoaWZ0X2RpZmYoc3RydWN0IHJhbmdlX3NldCAqb3V0LAorCQkJCSBzdHJ1Y3QgcmFuZ2Vfc2V0ICpycywKKwkJCQkgc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmKQoreworCWludCBpLCBqID0gMDsKKwlsb25nIG9mZnNldCA9IDA7CisJc3RydWN0IHJhbmdlICpzcmMgPSBycy0+cmFuZ2VzOworCXN0cnVjdCByYW5nZSAqdGFyZ2V0ID0gZGlmZi0+dGFyZ2V0LnJhbmdlczsKKwlzdHJ1Y3QgcmFuZ2UgKnBhcmVudCA9IGRpZmYtPnBhcmVudC5yYW5nZXM7CisKKwlmb3IgKGkgPSAwOyBpIDwgcnMtPm5yOyBpKyspIHsKKwkJd2hpbGUgKGogPCBkaWZmLT50YXJnZXQubnIgJiYgc3JjW2ldLnN0YXJ0ID49IHRhcmdldFtqXS5zdGFydCkgeworCQkJb2Zmc2V0ICs9IChwYXJlbnRbal0uZW5kLXBhcmVudFtqXS5zdGFydCkKKwkJCQktICh0YXJnZXRbal0uZW5kLXRhcmdldFtqXS5zdGFydCk7CisJCQlqKys7CisJCX0KKwkJcmFuZ2Vfc2V0X2FwcGVuZChvdXQsIHNyY1tpXS5zdGFydCtvZmZzZXQsIHNyY1tpXS5lbmQrb2Zmc2V0KTsKKwl9Cit9CisKKy8qCisgKiBHaXZlbiBhIGRpZmYgYW5kIHRoZSBzZXQgb2YgaW50ZXJlc3RpbmcgcmFuZ2VzLCBtYXAgdGhlIHJhbmdlcworICogYWNyb3NzIHRoZSBkaWZmLiAgVGhhdCBpczogb2JzZXJ2ZSB0aGF0IHRoZSB0YXJnZXQgY29tbWl0IHRha2VzCisgKiBibGFtZSBmb3IgYWxsIHRoZSArICh0YXJnZXQtc2lkZSkgcmFuZ2VzLiAgU28gZm9yIGV2ZXJ5IHBhaXIgb2YKKyAqIHJhbmdlcyBpbiB0aGUgZGlmZiB0aGF0IHdhcyB0b3VjaGVkLCB3ZSByZW1vdmUgdGhlIGxhdHRlciBhbmQgYWRkCisgKiBpdHMgcGFyZW50IHNpZGUuCisgKi8KK3N0YXRpYyB2b2lkIHJhbmdlX3NldF9tYXBfYWNyb3NzX2RpZmYoc3RydWN0IHJhbmdlX3NldCAqb3V0LAorCQkJCSAgICAgIHN0cnVjdCByYW5nZV9zZXQgKnJzLAorCQkJCSAgICAgIHN0cnVjdCBkaWZmX3JhbmdlcyAqZGlmZiwKKwkJCQkgICAgICBzdHJ1Y3QgZGlmZl9yYW5nZXMgKip0b3VjaGVkX291dCkKK3sKKwlzdHJ1Y3QgZGlmZl9yYW5nZXMgKnRvdWNoZWQgPSB4bWFsbG9jKHNpemVvZigqdG91Y2hlZCkpOworCXN0cnVjdCByYW5nZV9zZXQgdG1wMSA9IFJBTkdFX1NFVF9JTklUOworCXN0cnVjdCByYW5nZV9zZXQgdG1wMiA9IFJBTkdFX1NFVF9JTklUOworCisJZGlmZl9yYW5nZXNfaW5pdCh0b3VjaGVkKTsKKwlkaWZmX3Jhbmdlc19maWx0ZXJfdG91Y2hlZCh0b3VjaGVkLCBkaWZmLCBycyk7CisJcmFuZ2Vfc2V0X2RpZmZlcmVuY2UoJnRtcDEsIHJzLCAmdG91Y2hlZC0+dGFyZ2V0KTsKKwlyYW5nZV9zZXRfc2hpZnRfZGlmZigmdG1wMiwgJnRtcDEsIGRpZmYpOworCXJhbmdlX3NldF91bmlvbihvdXQsICZ0bXAyLCAmdG91Y2hlZC0+cGFyZW50KTsKKwlyYW5nZV9zZXRfcmVsZWFzZSgmdG1wMSk7CisJcmFuZ2Vfc2V0X3JlbGVhc2UoJnRtcDIpOworCisJKnRvdWNoZWRfb3V0ID0gdG91Y2hlZDsKK30KKworc3RhdGljIHN0cnVjdCBjb21taXQgKmNoZWNrX3NpbmdsZV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzKQoreworCXN0cnVjdCBvYmplY3QgKmNvbW1pdCA9IE5VTEw7CisJaW50IGZvdW5kID0gLTE7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcmV2cy0+cGVuZGluZy5ucjsgaSsrKSB7CisJCXN0cnVjdCBvYmplY3QgKm9iaiA9IHJldnMtPnBlbmRpbmcub2JqZWN0c1tpXS5pdGVtOworCQlpZiAob2JqLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpCisJCQljb250aW51ZTsKKwkJd2hpbGUgKG9iai0+dHlwZSA9PSBPQkpfVEFHKQorCQkJb2JqID0gZGVyZWZfdGFnKG9iaiwgTlVMTCwgMCk7CisJCWlmIChvYmotPnR5cGUgIT0gT0JKX0NPTU1JVCkKKwkJCWRpZSgiTm9uIGNvbW1pdCAlcz8iLCByZXZzLT5wZW5kaW5nLm9iamVjdHNbaV0ubmFtZSk7CisJCWlmIChjb21taXQpCisJCQlkaWUoIk1vcmUgdGhhbiBvbmUgY29tbWl0IHRvIGRpZyBmcm9tOiAlcyBhbmQgJXM/IiwKKwkJCSAgICByZXZzLT5wZW5kaW5nLm9iamVjdHNbaV0ubmFtZSwKKwkJCSAgICByZXZzLT5wZW5kaW5nLm9iamVjdHNbZm91bmRdLm5hbWUpOworCQljb21taXQgPSBvYmo7CisJCWZvdW5kID0gaTsKKwl9CisKKwlpZiAoIWNvbW1pdCkKKwkJZGllKCJObyBjb21taXQgc3BlY2lmaWVkPyIpOworCisJcmV0dXJuIChzdHJ1Y3QgY29tbWl0ICopIGNvbW1pdDsKK30KKworc3RhdGljIHZvaWQgZmlsbF9ibG9iX3NoYTEoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqc3BlYykKK3sKKwl1bnNpZ25lZCBtb2RlOworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisKKwlpZiAoZ2V0X3RyZWVfZW50cnkoY29tbWl0LT5vYmplY3Quc2hhMSwgc3BlYy0+cGF0aCwKKwkJCSAgIHNoYTEsICZtb2RlKSkKKwkJZGllKCJUaGVyZSBpcyBubyBwYXRoICVzIGluIHRoZSBjb21taXQiLCBzcGVjLT5wYXRoKTsKKwlmaWxsX2ZpbGVzcGVjKHNwZWMsIHNoYTEsIDEsIG1vZGUpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBmaWxsX2xpbmVfZW5kcyhzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqc3BlYywgbG9uZyAqbGluZXMsCisJCQkgICB1bnNpZ25lZCBsb25nICoqbGluZV9lbmRzKQoreworCWludCBudW0gPSAwLCBzaXplID0gNTA7CisJbG9uZyBjdXIgPSAwOworCXVuc2lnbmVkIGxvbmcgKmVuZHMgPSBOVUxMOworCWNoYXIgKmRhdGEgPSBOVUxMOworCisJaWYgKGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoc3BlYywgMCkpCisJCWRpZSgiQ2Fubm90IHJlYWQgYmxvYiAlcyIsIHNoYTFfdG9faGV4KHNwZWMtPnNoYTEpKTsKKworCWVuZHMgPSB4bWFsbG9jKHNpemUgKiBzaXplb2YoKmVuZHMpKTsKKwllbmRzW2N1cisrXSA9IDA7CisJZGF0YSA9IHNwZWMtPmRhdGE7CisJd2hpbGUgKG51bSA8IHNwZWMtPnNpemUpIHsKKwkJaWYgKGRhdGFbbnVtXSA9PSAnXG4nIHx8IG51bSA9PSBzcGVjLT5zaXplIC0gMSkgeworCQkJQUxMT0NfR1JPVyhlbmRzLCAoY3VyICsgMSksIHNpemUpOworCQkJZW5kc1tjdXIrK10gPSBudW07CisJCX0KKwkJbnVtKys7CisJfQorCisJLyogc2hyaW5rIHRoZSBhcnJheSB0byBmaXQgdGhlIGVsZW1lbnRzICovCisJZW5kcyA9IHhyZWFsbG9jKGVuZHMsIGN1ciAqIHNpemVvZigqZW5kcykpOworCSpsaW5lcyA9IGN1ci0xOworCSpsaW5lX2VuZHMgPSBlbmRzOworfQorCitzdHJ1Y3QgbnRoX2xpbmVfY2IgeworCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpzcGVjOworCWxvbmcgbGluZXM7CisJdW5zaWduZWQgbG9uZyAqbGluZV9lbmRzOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKm50aF9saW5lKHZvaWQgKmRhdGEsIGxvbmcgbGluZSkKK3sKKwlzdHJ1Y3QgbnRoX2xpbmVfY2IgKmQgPSBkYXRhOworCWFzc2VydChkICYmIGxpbmUgPD0gZC0+bGluZXMpOworCWFzc2VydChkLT5zcGVjICYmIGQtPnNwZWMtPmRhdGEpOworCisJaWYgKGxpbmUgPT0gMCkKKwkJcmV0dXJuIChjaGFyICopZC0+c3BlYy0+ZGF0YTsKKwllbHNlCisJCXJldHVybiAoY2hhciAqKWQtPnNwZWMtPmRhdGEgKyBkLT5saW5lX2VuZHNbbGluZV0gKyAxOworfQorCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKgorcGFyc2VfbGluZXMoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBjb25zdCBjaGFyICpwcmVmaXgsIHN0cnVjdCBzdHJpbmdfbGlzdCAqYXJncykKK3sKKwlsb25nIGxpbmVzID0gMDsKKwl1bnNpZ25lZCBsb25nICplbmRzID0gTlVMTDsKKwlzdHJ1Y3QgbnRoX2xpbmVfY2IgY2JfZGF0YTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2VzID0gTlVMTDsKKworCWZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSwgYXJncykgeworCQljb25zdCBjaGFyICpuYW1lX3BhcnQsICpyYW5nZV9wYXJ0OworCQljaGFyICpmdWxsX25hbWU7CisJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpzcGVjOworCQlsb25nIGJlZ2luID0gMCwgZW5kID0gMDsKKworCQluYW1lX3BhcnQgPSBza2lwX3JhbmdlX2FyZyhpdGVtLT5zdHJpbmcpOworCQlpZiAoIW5hbWVfcGFydCB8fCAqbmFtZV9wYXJ0ICE9ICc6JyB8fCAhbmFtZV9wYXJ0WzFdKQorCQkJZGllKCItTCBhcmd1bWVudCAnJXMnIG5vdCBvZiB0aGUgZm9ybSBzdGFydCxlbmQ6ZmlsZSIsCisJCQkgICAgaXRlbS0+c3RyaW5nKTsKKwkJcmFuZ2VfcGFydCA9IHhzdHJuZHVwKGl0ZW0tPnN0cmluZywgbmFtZV9wYXJ0IC0gaXRlbS0+c3RyaW5nKTsKKwkJbmFtZV9wYXJ0Kys7CisKKwkJZnVsbF9uYW1lID0gcHJlZml4X3BhdGgocHJlZml4LCBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDAsCisJCQkJCW5hbWVfcGFydCk7CisKKwkJc3BlYyA9IGFsbG9jX2ZpbGVzcGVjKGZ1bGxfbmFtZSk7CisJCWZpbGxfYmxvYl9zaGExKGNvbW1pdCwgc3BlYyk7CisJCWZpbGxfbGluZV9lbmRzKHNwZWMsICZsaW5lcywgJmVuZHMpOworCQljYl9kYXRhLnNwZWMgPSBzcGVjOworCQljYl9kYXRhLmxpbmVzID0gbGluZXM7CisJCWNiX2RhdGEubGluZV9lbmRzID0gZW5kczsKKworCQlpZiAocGFyc2VfcmFuZ2VfYXJnKHJhbmdlX3BhcnQsIG50aF9saW5lLCAmY2JfZGF0YSwKKwkJCQkgICAgbGluZXMsICZiZWdpbiwgJmVuZCwKKwkJCQkgICAgZnVsbF9uYW1lKSkKKwkJCWRpZSgibWFsZm9ybWVkIC1MIGFyZ3VtZW50ICclcyciLCByYW5nZV9wYXJ0KTsKKwkJaWYgKGJlZ2luIDwgMSkKKwkJCWJlZ2luID0gMTsKKwkJaWYgKGVuZCA8IDEpCisJCQllbmQgPSBsaW5lczsKKwkJYmVnaW4tLTsKKwkJaWYgKGxpbmVzIDwgZW5kIHx8IGxpbmVzIDwgYmVnaW4pCisJCQlkaWUoImZpbGUgJXMgaGFzIG9ubHkgJWxkIGxpbmVzIiwgbmFtZV9wYXJ0LCBsaW5lcyk7CisJCWxpbmVfbG9nX2RhdGFfaW5zZXJ0KCZyYW5nZXMsIGZ1bGxfbmFtZSwgYmVnaW4sIGVuZCk7CisKKwkJZnJlZV9maWxlc3BlYyhzcGVjKTsKKwkJZnJlZShlbmRzKTsKKwkJZW5kcyA9IE5VTEw7CisJfQorCisJcmV0dXJuIHJhbmdlczsKK30KKworc3RhdGljIHN0cnVjdCBsaW5lX2xvZ19kYXRhICpsaW5lX2xvZ19kYXRhX2NvcHlfb25lKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZXQgPSB4bWFsbG9jKHNpemVvZigqcmV0KSk7CisKKwlhc3NlcnQocik7CisJbGluZV9sb2dfZGF0YV9pbml0KHJldCk7CisJcmFuZ2Vfc2V0X2NvcHkoJnJldC0+cmFuZ2VzLCAmci0+cmFuZ2VzKTsKKworCXJldC0+cGF0aCA9IHhzdHJkdXAoci0+cGF0aCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKgorbGluZV9sb2dfZGF0YV9jb3B5KHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZXQgPSBOVUxMOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICp0bXAgPSBOVUxMLCAqcHJldiA9IE5VTEw7CisKKwlhc3NlcnQocik7CisJcmV0ID0gdG1wID0gcHJldiA9IGxpbmVfbG9nX2RhdGFfY29weV9vbmUocik7CisJciA9IHItPm5leHQ7CisJd2hpbGUgKHIpIHsKKwkJdG1wID0gbGluZV9sb2dfZGF0YV9jb3B5X29uZShyKTsKKwkJcHJldi0+bmV4dCA9IHRtcDsKKwkJcHJldiA9IHRtcDsKKwkJciA9IHItPm5leHQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworLyogbWVyZ2UgdHdvIHJhbmdlIHNldHMgYWNyb3NzIGZpbGVzICovCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKmxpbmVfbG9nX2RhdGFfbWVyZ2Uoc3RydWN0IGxpbmVfbG9nX2RhdGEgKmEsCisJCQkJCQkgc3RydWN0IGxpbmVfbG9nX2RhdGEgKmIpCit7CisJc3RydWN0IGxpbmVfbG9nX2RhdGEgKmhlYWQgPSBOVUxMLCAqKnBwID0gJmhlYWQ7CisKKwl3aGlsZSAoYSB8fCBiKSB7CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpzcmM7CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpzcmMyID0gTlVMTDsKKwkJc3RydWN0IGxpbmVfbG9nX2RhdGEgKmQ7CisJCWludCBjbXA7CisJCWlmICghYSkKKwkJCWNtcCA9IDE7CisJCWVsc2UgaWYgKCFiKQorCQkJY21wID0gLTE7CisJCWVsc2UKKwkJCWNtcCA9IHN0cmNtcChhLT5wYXRoLCBiLT5wYXRoKTsKKwkJaWYgKGNtcCA8IDApIHsKKwkJCXNyYyA9IGE7CisJCQlhID0gYS0+bmV4dDsKKwkJfSBlbHNlIGlmIChjbXAgPT0gMCkgeworCQkJc3JjID0gYTsKKwkJCWEgPSBhLT5uZXh0OworCQkJc3JjMiA9IGI7CisJCQliID0gYi0+bmV4dDsKKwkJfSBlbHNlIHsKKwkJCXNyYyA9IGI7CisJCQliID0gYi0+bmV4dDsKKwkJfQorCQlkID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IGxpbmVfbG9nX2RhdGEpKTsKKwkJbGluZV9sb2dfZGF0YV9pbml0KGQpOworCQlkLT5wYXRoID0geHN0cmR1cChzcmMtPnBhdGgpOworCQkqcHAgPSBkOworCQlwcCA9ICZkLT5uZXh0OworCQlpZiAoc3JjMikKKwkJCXJhbmdlX3NldF91bmlvbigmZC0+cmFuZ2VzLCAmc3JjLT5yYW5nZXMsICZzcmMyLT5yYW5nZXMpOworCQllbHNlCisJCQlyYW5nZV9zZXRfY29weSgmZC0+cmFuZ2VzLCAmc3JjLT5yYW5nZXMpOworCX0KKworCXJldHVybiBoZWFkOworfQorCitzdGF0aWMgdm9pZCBhZGRfbGluZV9yYW5nZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJCSAgIHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSkKK3sKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqb2xkID0gTlVMTDsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqbmV3ID0gTlVMTDsKKworCW9sZCA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT5saW5lX2xvZ19kYXRhLCAmY29tbWl0LT5vYmplY3QpOworCWlmIChvbGQgJiYgcmFuZ2UpIHsKKwkJbmV3ID0gbGluZV9sb2dfZGF0YV9tZXJnZShvbGQsIHJhbmdlKTsKKwkJZnJlZV9saW5lX2xvZ19kYXRhKG9sZCk7CisJfSBlbHNlIGlmIChyYW5nZSkKKwkJbmV3ID0gbGluZV9sb2dfZGF0YV9jb3B5KHJhbmdlKTsKKworCWlmIChuZXcpCisJCWFkZF9kZWNvcmF0aW9uKCZyZXZzLT5saW5lX2xvZ19kYXRhLCAmY29tbWl0LT5vYmplY3QsIG5ldyk7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyX2NvbW1pdF9saW5lX3JhbmdlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyOworCXIgPSBsb29rdXBfZGVjb3JhdGlvbigmcmV2cy0+bGluZV9sb2dfZGF0YSwgJmNvbW1pdC0+b2JqZWN0KTsKKwlpZiAoIXIpCisJCXJldHVybjsKKwlmcmVlX2xpbmVfbG9nX2RhdGEocik7CisJYWRkX2RlY29yYXRpb24oJnJldnMtPmxpbmVfbG9nX2RhdGEsICZjb21taXQtPm9iamVjdCwgTlVMTCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqbG9va3VwX2xpbmVfcmFuZ2Uoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCQkgICAgICAgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZXQgPSBOVUxMOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpkOworCisJcmV0ID0gbG9va3VwX2RlY29yYXRpb24oJnJldnMtPmxpbmVfbG9nX2RhdGEsICZjb21taXQtPm9iamVjdCk7CisKKwlmb3IgKGQgPSByZXQ7IGQ7IGQgPSBkLT5uZXh0KQorCQlyYW5nZV9zZXRfY2hlY2tfaW52YXJpYW50cygmZC0+cmFuZ2VzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgbGluZV9sb2dfaW5pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmFyZ3MpCit7CisJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gTlVMTDsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2U7CisKKwljb21taXQgPSBjaGVja19zaW5nbGVfY29tbWl0KHJldik7CisJcmFuZ2UgPSBwYXJzZV9saW5lcyhjb21taXQsIHByZWZpeCwgYXJncyk7CisJYWRkX2xpbmVfcmFuZ2UocmV2LCBjb21taXQsIHJhbmdlKTsKKworCWlmICghcmV2LT5kaWZmb3B0LmRldGVjdF9yZW5hbWUpIHsKKwkJaW50IGksIGNvdW50ID0gMDsKKwkJc3RydWN0IGxpbmVfbG9nX2RhdGEgKnIgPSByYW5nZTsKKwkJY29uc3QgY2hhciAqKnBhdGhzOworCQl3aGlsZSAocikgeworCQkJY291bnQrKzsKKwkJCXIgPSByLT5uZXh0OworCQl9CisJCXBhdGhzID0geG1hbGxvYygoY291bnQrMSkqc2l6ZW9mKGNoYXIgKikpOworCQlyID0gcmFuZ2U7CisJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCQlwYXRoc1tpXSA9IHhzdHJkdXAoci0+cGF0aCk7CisJCQlyID0gci0+bmV4dDsKKwkJfQorCQlwYXRoc1tjb3VudF0gPSBOVUxMOworCQlpbml0X3BhdGhzcGVjKCZyZXYtPmRpZmZvcHQucGF0aHNwZWMsIHBhdGhzKTsKKwkJZnJlZShwYXRocyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBsb2FkX3RyZWVfZGVzYyhzdHJ1Y3QgdHJlZV9kZXNjICpkZXNjLCB2b2lkICoqdHJlZSwKKwkJCSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJdW5zaWduZWQgbG9uZyBzaXplOworCSp0cmVlID0gcmVhZF9vYmplY3Rfd2l0aF9yZWZlcmVuY2Uoc2hhMSwgdHJlZV90eXBlLCAmc2l6ZSwgTlVMTCk7CisJaWYgKCEqdHJlZSkKKwkJZGllKCJVbmFibGUgdG8gcmVhZCB0cmVlICglcykiLCBzaGExX3RvX2hleChzaGExKSk7CisJaW5pdF90cmVlX2Rlc2MoZGVzYywgKnRyZWUsIHNpemUpOworfQorCitzdGF0aWMgaW50IGNvdW50X3BhcmVudHMoc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cyA9IGNvbW1pdC0+cGFyZW50czsKKwlpbnQgY291bnQgPSAwOworCXdoaWxlIChwYXJlbnRzKSB7CisJCWNvdW50Kys7CisJCXBhcmVudHMgPSBwYXJlbnRzLT5uZXh0OworCX0KKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIG1vdmVfZGlmZl9xdWV1ZShzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKmRzdCwKKwkJCSAgICBzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnNyYykKK3sKKwlhc3NlcnQoc3JjICE9IGRzdCk7CisJbWVtY3B5KGRzdCwgc3JjLCBzaXplb2Yoc3RydWN0IGRpZmZfcXVldWVfc3RydWN0KSk7CisJRElGRl9RVUVVRV9DTEVBUihzcmMpOworfQorCitzdGF0aWMgdm9pZCBmaWx0ZXJfZGlmZnNfZm9yX3BhdGhzKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSwgaW50IGtlZXBfZGVsZXRpb25zKQoreworCWludCBpOworCXN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCBvdXRxOworCURJRkZfUVVFVUVfQ0xFQVIoJm91dHEpOworCisJZm9yIChpID0gMDsgaSA8IGRpZmZfcXVldWVkX2RpZmYubnI7IGkrKykgeworCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IGRpZmZfcXVldWVkX2RpZmYucXVldWVbaV07CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZyA9IE5VTEw7CisKKwkJaWYgKCFESUZGX0ZJTEVfVkFMSUQocC0+dHdvKSkgeworCQkJaWYgKGtlZXBfZGVsZXRpb25zKQorCQkJCWRpZmZfcSgmb3V0cSwgcCk7CisJCQllbHNlCisJCQkJZGlmZl9mcmVlX2ZpbGVwYWlyKHApOworCQkJY29udGludWU7CisJCX0KKwkJZm9yIChyZyA9IHJhbmdlOyByZzsgcmcgPSByZy0+bmV4dCkgeworCQkJaWYgKCFzdHJjbXAocmctPnBhdGgsIHAtPnR3by0+cGF0aCkpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKHJnKQorCQkJZGlmZl9xKCZvdXRxLCBwKTsKKwkJZWxzZQorCQkJZGlmZl9mcmVlX2ZpbGVwYWlyKHApOworCX0KKwlmcmVlKGRpZmZfcXVldWVkX2RpZmYucXVldWUpOworCWRpZmZfcXVldWVkX2RpZmYgPSBvdXRxOworfQorCitzdGF0aWMgaW5saW5lIGludCBkaWZmX21pZ2h0X2JlX3JlbmFtZSh2b2lkKQoreworCWludCBpOworCWZvciAoaSA9IDA7IGkgPCBkaWZmX3F1ZXVlZF9kaWZmLm5yOyBpKyspCisJCWlmICghRElGRl9GSUxFX1ZBTElEKGRpZmZfcXVldWVkX2RpZmYucXVldWVbaV0tPm9uZSkpIHsKKwkJCS8qIGZwcmludGYoc3RkZXJyLCAiZGlmZl9taWdodF9iZV9yZW5hbWUgZm91bmQgY3JlYXRpb24gb2Y6ICVzXG4iLCAqLworCQkJLyogCWRpZmZfcXVldWVkX2RpZmYucXVldWVbaV0tPnR3by0+cGF0aCk7ICovCisJCQlyZXR1cm4gMTsKKwkJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBxdWV1ZV9kaWZmcyhzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2UsCisJCQlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsCisJCQlzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnF1ZXVlLAorCQkJc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgY29tbWl0ICpwYXJlbnQpCit7CisJdm9pZCAqdHJlZTEgPSBOVUxMLCAqdHJlZTIgPSBOVUxMOworCXN0cnVjdCB0cmVlX2Rlc2MgZGVzYzEsIGRlc2MyOworCisJYXNzZXJ0KGNvbW1pdCk7CisJbG9hZF90cmVlX2Rlc2MoJmRlc2MyLCAmdHJlZTIsIGNvbW1pdC0+dHJlZS0+b2JqZWN0LnNoYTEpOworCWlmIChwYXJlbnQpCisJCWxvYWRfdHJlZV9kZXNjKCZkZXNjMSwgJnRyZWUxLCBwYXJlbnQtPnRyZWUtPm9iamVjdC5zaGExKTsKKwllbHNlCisJCWluaXRfdHJlZV9kZXNjKCZkZXNjMSwgIiIsIDApOworCisJRElGRl9RVUVVRV9DTEVBUigmZGlmZl9xdWV1ZWRfZGlmZik7CisJZGlmZl90cmVlKCZkZXNjMSwgJmRlc2MyLCAiIiwgb3B0KTsKKwlpZiAob3B0LT5kZXRlY3RfcmVuYW1lKSB7CisJCWZpbHRlcl9kaWZmc19mb3JfcGF0aHMocmFuZ2UsIDEpOworCQlpZiAoZGlmZl9taWdodF9iZV9yZW5hbWUoKSkKKwkJCWRpZmZjb3JlX3N0ZChvcHQpOworCQlmaWx0ZXJfZGlmZnNfZm9yX3BhdGhzKHJhbmdlLCAwKTsKKwl9CisJbW92ZV9kaWZmX3F1ZXVlKHF1ZXVlLCAmZGlmZl9xdWV1ZWRfZGlmZik7CisKKwlpZiAodHJlZTEpCisJCWZyZWUodHJlZTEpOworCWlmICh0cmVlMikKKwkJZnJlZSh0cmVlMik7Cit9CisKK3N0YXRpYyBjaGFyICpnZXRfbnRoX2xpbmUobG9uZyBsaW5lLCB1bnNpZ25lZCBsb25nICplbmRzLCB2b2lkICpkYXRhKQoreworCWlmIChsaW5lID09IDApCisJCXJldHVybiAoY2hhciAqKWRhdGE7CisJZWxzZQorCQlyZXR1cm4gKGNoYXIgKilkYXRhICsgZW5kc1tsaW5lXSArIDE7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2xpbmUoY29uc3QgY2hhciAqcHJlZml4LCBjaGFyIGZpcnN0LAorCQkgICAgICAgbG9uZyBsaW5lLCB1bnNpZ25lZCBsb25nICplbmRzLCB2b2lkICpkYXRhLAorCQkgICAgICAgY29uc3QgY2hhciAqY29sb3IsIGNvbnN0IGNoYXIgKnJlc2V0KQoreworCWNoYXIgKmJlZ2luID0gZ2V0X250aF9saW5lKGxpbmUsIGVuZHMsIGRhdGEpOworCWNoYXIgKmVuZCA9IGdldF9udGhfbGluZShsaW5lKzEsIGVuZHMsIGRhdGEpOworCWludCBoYWRfbmwgPSAwOworCisJaWYgKGVuZCA+IGJlZ2luICYmIGVuZFstMV0gPT0gJ1xuJykgeworCQllbmQtLTsKKwkJaGFkX25sID0gMTsKKwl9CisKKwlmcHV0cyhwcmVmaXgsIHN0ZG91dCk7CisJZnB1dHMoY29sb3IsIHN0ZG91dCk7CisJcHV0Y2hhcihmaXJzdCk7CisJZndyaXRlKGJlZ2luLCAxLCBlbmQtYmVnaW4sIHN0ZG91dCk7CisJZnB1dHMocmVzZXQsIHN0ZG91dCk7CisJcHV0Y2hhcignXG4nKTsKKwlpZiAoIWhhZF9ubCkKKwkJZnB1dHMoIlxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcbiIsIHN0ZG91dCk7Cit9CisKK3N0YXRpYyBjaGFyICpvdXRwdXRfcHJlZml4KHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCkKK3sKKwljaGFyICpwcmVmaXggPSAiIjsKKworCWlmIChvcHQtPm91dHB1dF9wcmVmaXgpIHsKKwkJc3RydWN0IHN0cmJ1ZiAqc2IgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7CisJCXByZWZpeCA9IHNiLT5idWY7CisJfQorCisJcmV0dXJuIHByZWZpeDsKK30KKworc3RhdGljIHZvaWQgZHVtcF9kaWZmX2hhY2t5X29uZShzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGxpbmVfbG9nX2RhdGEgKnJhbmdlKQoreworCWludCBpLCBqID0gMDsKKwlsb25nIHBfbGluZXMsIHRfbGluZXM7CisJdW5zaWduZWQgbG9uZyAqcF9lbmRzID0gTlVMTCwgKnRfZW5kcyA9IE5VTEw7CisJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnBhaXIgPSByYW5nZS0+cGFpcjsKKwlzdHJ1Y3QgZGlmZl9yYW5nZXMgKmRpZmYgPSAmcmFuZ2UtPmRpZmY7CisKKwlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQgPSAmcmV2LT5kaWZmb3B0OworCWNoYXIgKnByZWZpeCA9IG91dHB1dF9wcmVmaXgob3B0KTsKKwljb25zdCBjaGFyICpjX3Jlc2V0ID0gZGlmZl9nZXRfY29sb3Iob3B0LT51c2VfY29sb3IsIERJRkZfUkVTRVQpOworCWNvbnN0IGNoYXIgKmNfZnJhZyA9IGRpZmZfZ2V0X2NvbG9yKG9wdC0+dXNlX2NvbG9yLCBESUZGX0ZSQUdJTkZPKTsKKwljb25zdCBjaGFyICpjX21ldGEgPSBkaWZmX2dldF9jb2xvcihvcHQtPnVzZV9jb2xvciwgRElGRl9NRVRBSU5GTyk7CisJY29uc3QgY2hhciAqY19vbGQgPSBkaWZmX2dldF9jb2xvcihvcHQtPnVzZV9jb2xvciwgRElGRl9GSUxFX09MRCk7CisJY29uc3QgY2hhciAqY19uZXcgPSBkaWZmX2dldF9jb2xvcihvcHQtPnVzZV9jb2xvciwgRElGRl9GSUxFX05FVyk7CisJY29uc3QgY2hhciAqY19wbGFpbiA9IGRpZmZfZ2V0X2NvbG9yKG9wdC0+dXNlX2NvbG9yLCBESUZGX1BMQUlOKTsKKworCWlmICghcGFpciB8fCAhZGlmZikKKwkJcmV0dXJuOworCisJaWYgKHBhaXItPm9uZS0+c2hhMV92YWxpZCkKKwkJZmlsbF9saW5lX2VuZHMocGFpci0+b25lLCAmcF9saW5lcywgJnBfZW5kcyk7CisJZmlsbF9saW5lX2VuZHMocGFpci0+dHdvLCAmdF9saW5lcywgJnRfZW5kcyk7CisKKwlwcmludGYoIiVzJXNkaWZmIC0tZ2l0IGEvJXMgYi8lcyVzXG4iLCBwcmVmaXgsIGNfbWV0YSwgcGFpci0+b25lLT5wYXRoLCBwYWlyLT50d28tPnBhdGgsIGNfcmVzZXQpOworCXByaW50ZigiJXMlcy0tLSAlcyVzJXNcbiIsIHByZWZpeCwgY19tZXRhLAorCSAgICAgICBwYWlyLT5vbmUtPnNoYTFfdmFsaWQgPyAiYS8iIDogIiIsCisJICAgICAgIHBhaXItPm9uZS0+c2hhMV92YWxpZCA/IHBhaXItPm9uZS0+cGF0aCA6ICIvZGV2L251bGwiLAorCSAgICAgICBjX3Jlc2V0KTsKKwlwcmludGYoIiVzJXMrKysgYi8lcyVzXG4iLCBwcmVmaXgsIGNfbWV0YSwgcGFpci0+dHdvLT5wYXRoLCBjX3Jlc2V0KTsKKwlmb3IgKGkgPSAwOyBpIDwgcmFuZ2UtPnJhbmdlcy5ucjsgaSsrKSB7CisJCWxvbmcgcF9zdGFydCwgcF9lbmQ7CisJCWxvbmcgdF9zdGFydCA9IHJhbmdlLT5yYW5nZXMucmFuZ2VzW2ldLnN0YXJ0OworCQlsb25nIHRfZW5kID0gcmFuZ2UtPnJhbmdlcy5yYW5nZXNbaV0uZW5kOworCQlsb25nIHRfY3VyID0gdF9zdGFydDsKKwkJaW50IGpfbGFzdDsKKworCQl3aGlsZSAoaiA8IGRpZmYtPnRhcmdldC5uciAmJiBkaWZmLT50YXJnZXQucmFuZ2VzW2pdLmVuZCA8IHRfc3RhcnQpCisJCQlqKys7CisJCWlmIChqID09IGRpZmYtPnRhcmdldC5uciB8fCBkaWZmLT50YXJnZXQucmFuZ2VzW2pdLnN0YXJ0ID4gdF9lbmQpCisJCQljb250aW51ZTsKKworCQkvKiBTY2FuIGFoZWFkIHRvIGRldGVybWluZSB0aGUgbGFzdCBkaWZmIHRoYXQgZmFsbHMgaW4gdGhpcyByYW5nZSAqLworCQlqX2xhc3QgPSBqOworCQl3aGlsZSAoal9sYXN0IDwgZGlmZi0+dGFyZ2V0Lm5yICYmIGRpZmYtPnRhcmdldC5yYW5nZXNbal9sYXN0XS5zdGFydCA8IHRfZW5kKQorCQkJal9sYXN0Kys7CisJCWlmIChqX2xhc3QgPiBqKQorCQkJal9sYXN0LS07CisKKwkJLyoKKwkJICogQ29tcHV0ZSBwYXJlbnQgaHVuayBoZWFkZXJzOiB3ZSBrbm93IHRoYXQgdGhlIGRpZmYKKwkJICogaGFzIHRoZSBjb3JyZWN0IGxpbmUgbnVtYmVycyAoYnV0IG5vdCBhbGwgaHVua3MpLgorCQkgKiBTbyBpdCBzdWZmaWNlcyB0byBzaGlmdCB0aGUgc3RhcnQvZW5kIGFjY29yZGluZyB0bworCQkgKiB0aGUgbGluZSBudW1iZXJzIG9mIHRoZSBmaXJzdC9sYXN0IGh1bmsocykgdGhhdAorCQkgKiBmYWxsIGluIHRoaXMgcmFuZ2UuCisJCSAqLworCQlpZiAodF9zdGFydCA8IGRpZmYtPnRhcmdldC5yYW5nZXNbal0uc3RhcnQpCisJCQlwX3N0YXJ0ID0gZGlmZi0+cGFyZW50LnJhbmdlc1tqXS5zdGFydCAtIChkaWZmLT50YXJnZXQucmFuZ2VzW2pdLnN0YXJ0LXRfc3RhcnQpOworCQllbHNlCisJCQlwX3N0YXJ0ID0gZGlmZi0+cGFyZW50LnJhbmdlc1tqXS5zdGFydDsKKwkJaWYgKHRfZW5kID4gZGlmZi0+dGFyZ2V0LnJhbmdlc1tqX2xhc3RdLmVuZCkKKwkJCXBfZW5kID0gZGlmZi0+cGFyZW50LnJhbmdlc1tqX2xhc3RdLmVuZCArICh0X2VuZC1kaWZmLT50YXJnZXQucmFuZ2VzW2pfbGFzdF0uZW5kKTsKKwkJZWxzZQorCQkJcF9lbmQgPSBkaWZmLT5wYXJlbnQucmFuZ2VzW2pfbGFzdF0uZW5kOworCisJCWlmICghcF9zdGFydCAmJiAhcF9lbmQpIHsKKwkJCXBfc3RhcnQgPSAtMTsKKwkJCXBfZW5kID0gLTE7CisJCX0KKworCQkvKiBOb3cgb3V0cHV0IGEgZGlmZiBodW5rIGZvciB0aGlzIHJhbmdlICovCisJCXByaW50ZigiJXMlc0BAIC0lbGQsJWxkICslbGQsJWxkIEBAJXNcbiIsCisJCSAgICAgICBwcmVmaXgsIGNfZnJhZywKKwkJICAgICAgIHBfc3RhcnQrMSwgcF9lbmQtcF9zdGFydCwgdF9zdGFydCsxLCB0X2VuZC10X3N0YXJ0LAorCQkgICAgICAgY19yZXNldCk7CisJCXdoaWxlIChqIDwgZGlmZi0+dGFyZ2V0Lm5yICYmIGRpZmYtPnRhcmdldC5yYW5nZXNbal0uc3RhcnQgPCB0X2VuZCkgeworCQkJaW50IGs7CisJCQlmb3IgKDsgdF9jdXIgPCBkaWZmLT50YXJnZXQucmFuZ2VzW2pdLnN0YXJ0OyB0X2N1cisrKQorCQkJCXByaW50X2xpbmUocHJlZml4LCAnICcsIHRfY3VyLCB0X2VuZHMsIHBhaXItPnR3by0+ZGF0YSwKKwkJCQkJICAgY19wbGFpbiwgY19yZXNldCk7CisJCQlmb3IgKGsgPSBkaWZmLT5wYXJlbnQucmFuZ2VzW2pdLnN0YXJ0OyBrIDwgZGlmZi0+cGFyZW50LnJhbmdlc1tqXS5lbmQ7IGsrKykKKwkJCQlwcmludF9saW5lKHByZWZpeCwgJy0nLCBrLCBwX2VuZHMsIHBhaXItPm9uZS0+ZGF0YSwKKwkJCQkJICAgY19vbGQsIGNfcmVzZXQpOworCQkJZm9yICg7IHRfY3VyIDwgZGlmZi0+dGFyZ2V0LnJhbmdlc1tqXS5lbmQgJiYgdF9jdXIgPCB0X2VuZDsgdF9jdXIrKykKKwkJCQlwcmludF9saW5lKHByZWZpeCwgJysnLCB0X2N1ciwgdF9lbmRzLCBwYWlyLT50d28tPmRhdGEsCisJCQkJCSAgIGNfbmV3LCBjX3Jlc2V0KTsKKwkJCWorKzsKKwkJfQorCQlmb3IgKDsgdF9jdXIgPCB0X2VuZDsgdF9jdXIrKykKKwkJCXByaW50X2xpbmUocHJlZml4LCAnICcsIHRfY3VyLCB0X2VuZHMsIHBhaXItPnR3by0+ZGF0YSwKKwkJCQkgICBjX3BsYWluLCBjX3Jlc2V0KTsKKwl9CisKKwlmcmVlKHBfZW5kcyk7CisJZnJlZSh0X2VuZHMpOworfQorCisvKgorICogTkVFRFNXT1JLOiBtYW51YWxseSBidWlsZGluZyBhIGRpZmYgaGVyZSBpcyBub3QgdGhlIFJpZ2h0CisgKiBUaGluZyh0bSkuICBsb2cgLUwgc2hvdWxkIGJlIGJ1aWx0IGludG8gdGhlIGRpZmYgcGlwZWxpbmUuCisgKi8KK3N0YXRpYyB2b2lkIGR1bXBfZGlmZl9oYWNreShzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGxpbmVfbG9nX2RhdGEgKnJhbmdlKQoreworCXB1dHMob3V0cHV0X3ByZWZpeCgmcmV2LT5kaWZmb3B0KSk7CisJd2hpbGUgKHJhbmdlKSB7CisJCWR1bXBfZGlmZl9oYWNreV9vbmUocmV2LCByYW5nZSk7CisJCXJhbmdlID0gcmFuZ2UtPm5leHQ7CisJfQorfQorCisvKgorICogVW5saWtlIG1vc3Qgb3RoZXIgZnVuY3Rpb25zLCB0aGlzIGRlc3RydWN0aXZlbHkgb3BlcmF0ZXMgb24KKyAqICdyYW5nZScuCisgKi8KK3N0YXRpYyBpbnQgcHJvY2Vzc19kaWZmX2ZpbGVwYWlyKHN0cnVjdCByZXZfaW5mbyAqcmV2LAorCQkJCSBzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcGFpciwKKwkJCQkgc3RydWN0IGxpbmVfbG9nX2RhdGEgKnJhbmdlLAorCQkJCSBzdHJ1Y3QgZGlmZl9yYW5nZXMgKipkaWZmX291dCkKK3sKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmcgPSByYW5nZTsKKwlzdHJ1Y3QgcmFuZ2Vfc2V0IHRtcDsKKwlzdHJ1Y3QgZGlmZl9yYW5nZXMgZGlmZjsKKwltbWZpbGVfdCBmaWxlX3BhcmVudCwgZmlsZV90YXJnZXQ7CisKKwlhc3NlcnQocGFpci0+dHdvLT5wYXRoKTsKKwl3aGlsZSAocmcpIHsKKwkJYXNzZXJ0KHJnLT5wYXRoKTsKKwkJaWYgKCFzdHJjbXAocmctPnBhdGgsIHBhaXItPnR3by0+cGF0aCkpCisJCQlicmVhazsKKwkJcmcgPSByZy0+bmV4dDsKKwl9CisKKwlpZiAoIXJnKQorCQlyZXR1cm4gMDsKKwlpZiAocmctPnJhbmdlcy5uciA9PSAwKQorCQlyZXR1cm4gMDsKKworCWFzc2VydChwYWlyLT50d28tPnNoYTFfdmFsaWQpOworCWRpZmZfcG9wdWxhdGVfZmlsZXNwZWMocGFpci0+dHdvLCAwKTsKKwlmaWxlX3RhcmdldC5wdHIgPSBwYWlyLT50d28tPmRhdGE7CisJZmlsZV90YXJnZXQuc2l6ZSA9IHBhaXItPnR3by0+c2l6ZTsKKworCWlmIChwYWlyLT5vbmUtPnNoYTFfdmFsaWQpIHsKKwkJZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhwYWlyLT5vbmUsIDApOworCQlmaWxlX3BhcmVudC5wdHIgPSBwYWlyLT5vbmUtPmRhdGE7CisJCWZpbGVfcGFyZW50LnNpemUgPSBwYWlyLT5vbmUtPnNpemU7CisJfSBlbHNlIHsKKwkJZmlsZV9wYXJlbnQucHRyID0gIiI7CisJCWZpbGVfcGFyZW50LnNpemUgPSAwOworCX0KKworCWRpZmZfcmFuZ2VzX2luaXQoJmRpZmYpOworCWNvbGxlY3RfZGlmZigmZmlsZV9wYXJlbnQsICZmaWxlX3RhcmdldCwgJmRpZmYpOworCisJLyogTkVFRFNXT1JLIHNob3VsZCBhcHBseSBzb21lIGhldXJpc3RpY3MgdG8gcHJldmVudCBtaXNtYXRjaGVzICovCisJZnJlZShyZy0+cGF0aCk7CisJcmctPnBhdGggPSB4c3RyZHVwKHBhaXItPm9uZS0+cGF0aCk7CisKKwlyYW5nZV9zZXRfaW5pdCgmdG1wLCAwKTsKKwlyYW5nZV9zZXRfbWFwX2Fjcm9zc19kaWZmKCZ0bXAsICZyZy0+cmFuZ2VzLCAmZGlmZiwgZGlmZl9vdXQpOworCXJhbmdlX3NldF9yZWxlYXNlKCZyZy0+cmFuZ2VzKTsKKwlyYW5nZV9zZXRfbW92ZSgmcmctPnJhbmdlcywgJnRtcCk7CisKKwlkaWZmX3Jhbmdlc19yZWxlYXNlKCZkaWZmKTsKKworCXJldHVybiAoKCpkaWZmX291dCktPnBhcmVudC5uciA+IDApOworfQorCitzdGF0aWMgc3RydWN0IGRpZmZfZmlsZXBhaXIgKmRpZmZfZmlsZXBhaXJfZHVwKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyKQoreworCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpuZXcgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3QgZGlmZl9maWxlcGFpcikpOworCW5ldy0+b25lID0gcGFpci0+b25lOworCW5ldy0+dHdvID0gcGFpci0+dHdvOworCW5ldy0+b25lLT5jb3VudCsrOworCW5ldy0+dHdvLT5jb3VudCsrOworCXJldHVybiBuZXc7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfZGlmZnF1ZXVlcyhpbnQgbiwgc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpkcSkKK3sKKwlpbnQgaSwgajsKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorCQlmb3IgKGogPSAwOyBqIDwgZHFbaV0ubnI7IGorKykKKwkJCWRpZmZfZnJlZV9maWxlcGFpcihkcVtpXS5xdWV1ZVtqXSk7CisJZnJlZShkcSk7Cit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19hbGxfZmlsZXMoc3RydWN0IGxpbmVfbG9nX2RhdGEgKipyYW5nZV9vdXQsCisJCQkgICAgIHN0cnVjdCByZXZfaW5mbyAqcmV2LAorCQkJICAgICBzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnF1ZXVlLAorCQkJICAgICBzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2UpCit7CisJaW50IGksIGNoYW5nZWQgPSAwOworCisJKnJhbmdlX291dCA9IGxpbmVfbG9nX2RhdGFfY29weShyYW5nZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcXVldWUtPm5yOyBpKyspIHsKKwkJc3RydWN0IGRpZmZfcmFuZ2VzICpwYWlyZGlmZiA9IE5VTEw7CisJCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyID0gcXVldWUtPnF1ZXVlW2ldOworCQlpZiAocHJvY2Vzc19kaWZmX2ZpbGVwYWlyKHJldiwgcGFpciwgKnJhbmdlX291dCwgJnBhaXJkaWZmKSkgeworCQkJLyoKKwkJCSAqIFN0b3JlIGF3YXkgdGhlIGRpZmYgZm9yIGxhdGVyIG91dHB1dC4gIFdlCisJCQkgKiB0dWNrIGl0IGluIHRoZSByYW5nZXMgd2UgZ290IGFzIF9pbnB1dF8sCisJCQkgKiBzaW5jZSB0aGF0J3MgdGhlIGNvbW1pdCB0aGF0IGNhdXNlZCB0aGUKKwkJCSAqIGRpZmYuCisJCQkgKgorCQkJICogTkVFRFNXT1JLIG5vdCBlbm91Z2ggd2hlbiB3ZSBnZXQgYXJvdW5kIHRvCisJCQkgKiBkb2luZyBzb21ldGhpbmcgaW50ZXJlc3Rpbmcgd2l0aCBtZXJnZXM7CisJCQkgKiBjdXJyZW50bHkgZWFjaCBpbnZvY2F0aW9uIG9uIGEgbWVyZ2UgcGFyZW50CisJCQkgKiB0cmFzaGVzIHRoZSBwcmV2aW91cyBvbmUncyBkaWZmLgorCQkJICoKKwkJCSAqIE5FRURTV09SSyB0cmFtcGxlcyBvdmVyIGRhdGEgc3RydWN0dXJlcyBub3Qgb3duZWQgaGVyZQorCQkJICovCisJCQlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmcgPSByYW5nZTsKKwkJCWNoYW5nZWQrKzsKKwkJCXdoaWxlIChyZyAmJiBzdHJjbXAocmctPnBhdGgsIHBhaXItPnR3by0+cGF0aCkpCisJCQkJcmcgPSByZy0+bmV4dDsKKwkJCWFzc2VydChyZyk7CisJCQlyZy0+cGFpciA9IGRpZmZfZmlsZXBhaXJfZHVwKHF1ZXVlLT5xdWV1ZVtpXSk7CisJCQltZW1jcHkoJnJnLT5kaWZmLCBwYWlyZGlmZiwgc2l6ZW9mKHN0cnVjdCBkaWZmX3JhbmdlcykpOworCQl9CisJfQorCisJcmV0dXJuIGNoYW5nZWQ7Cit9CisKK2ludCBsaW5lX2xvZ19wcmludChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSA9IGxvb2t1cF9saW5lX3JhbmdlKHJldiwgY29tbWl0KTsKKworCXNob3dfbG9nKHJldik7CisJZHVtcF9kaWZmX2hhY2t5KHJldiwgcmFuZ2UpOworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfcmFuZ2VzX29yZGluYXJ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJCQkgIHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSkKK3sKKwlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBOVUxMOworCXN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCBxdWV1ZTsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcGFyZW50X3JhbmdlOworCWludCBjaGFuZ2VkOworCisJaWYgKGNvbW1pdC0+cGFyZW50cykKKwkJcGFyZW50ID0gY29tbWl0LT5wYXJlbnRzLT5pdGVtOworCisJcXVldWVfZGlmZnMocmFuZ2UsICZyZXYtPmRpZmZvcHQsICZxdWV1ZSwgY29tbWl0LCBwYXJlbnQpOworCWNoYW5nZWQgPSBwcm9jZXNzX2FsbF9maWxlcygmcGFyZW50X3JhbmdlLCByZXYsICZxdWV1ZSwgcmFuZ2UpOworCWlmIChwYXJlbnQpCisJCWFkZF9saW5lX3JhbmdlKHJldiwgcGFyZW50LCBwYXJlbnRfcmFuZ2UpOworCXJldHVybiBjaGFuZ2VkOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfcmFuZ2VzX21lcmdlX2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJCSAgICAgICBzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2UpCit7CisJc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpkaWZmcXVldWVzOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICoqY2FuZDsKKwlzdHJ1Y3QgY29tbWl0ICoqcGFyZW50czsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CisJaW50IGk7CisJaW50IG5wYXJlbnRzID0gY291bnRfcGFyZW50cyhjb21taXQpOworCisJZGlmZnF1ZXVlcyA9IHhtYWxsb2MobnBhcmVudHMgKiBzaXplb2YoKmRpZmZxdWV1ZXMpKTsKKwljYW5kID0geG1hbGxvYyhucGFyZW50cyAqIHNpemVvZigqY2FuZCkpOworCXBhcmVudHMgPSB4bWFsbG9jKG5wYXJlbnRzICogc2l6ZW9mKCpwYXJlbnRzKSk7CisKKwlwID0gY29tbWl0LT5wYXJlbnRzOworCWZvciAoaSA9IDA7IGkgPCBucGFyZW50czsgaSsrKSB7CisJCXBhcmVudHNbaV0gPSBwLT5pdGVtOworCQlwID0gcC0+bmV4dDsKKwkJcXVldWVfZGlmZnMocmFuZ2UsICZyZXYtPmRpZmZvcHQsICZkaWZmcXVldWVzW2ldLCBjb21taXQsIHBhcmVudHNbaV0pOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBucGFyZW50czsgaSsrKSB7CisJCWludCBjaGFuZ2VkOworCQljYW5kW2ldID0gTlVMTDsKKwkJY2hhbmdlZCA9IHByb2Nlc3NfYWxsX2ZpbGVzKCZjYW5kW2ldLCByZXYsICZkaWZmcXVldWVzW2ldLCByYW5nZSk7CisJCWlmICghY2hhbmdlZCkgeworCQkJLyoKKwkJCSAqIFRoaXMgcGFyZW50IGNhbiB0YWtlIGFsbCB0aGUgYmxhbWUsIHNvIHdlCisJCQkgKiBkb24ndCBmb2xsb3cgYW55IG90aGVyIHBhdGggaW4gaGlzdG9yeQorCQkJICovCisJCQlhZGRfbGluZV9yYW5nZShyZXYsIHBhcmVudHNbaV0sIGNhbmRbaV0pOworCQkJY2xlYXJfY29tbWl0X2xpbmVfcmFuZ2UocmV2LCBjb21taXQpOworCQkJY29tbWl0LT5wYXJlbnRzID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IGNvbW1pdF9saXN0KSk7CisJCQljb21taXQtPnBhcmVudHMtPml0ZW0gPSBwYXJlbnRzW2ldOworCQkJY29tbWl0LT5wYXJlbnRzLT5uZXh0ID0gTlVMTDsKKwkJCWZyZWUocGFyZW50cyk7CisJCQlmcmVlKGNhbmQpOworCQkJZnJlZV9kaWZmcXVldWVzKG5wYXJlbnRzLCBkaWZmcXVldWVzKTsKKwkJCS8qIE5FRURTV09SSyBsZWFraW5nIGxpa2UgYSBzaWV2ZSAqLworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKgorCSAqIE5vIHNpbmdsZSBwYXJlbnQgdG9vayB0aGUgYmxhbWUuICBXZSBhZGQgdGhlIGNhbmRpZGF0ZXMKKwkgKiBmcm9tIHRoZSBhYm92ZSBsb29wIHRvIHRoZSBwYXJlbnRzLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBucGFyZW50czsgaSsrKSB7CisJCWFkZF9saW5lX3JhbmdlKHJldiwgcGFyZW50c1tpXSwgY2FuZFtpXSk7CisJfQorCisJY2xlYXJfY29tbWl0X2xpbmVfcmFuZ2UocmV2LCBjb21taXQpOworCWZyZWUocGFyZW50cyk7CisJZnJlZShjYW5kKTsKKwlmcmVlX2RpZmZxdWV1ZXMobnBhcmVudHMsIGRpZmZxdWV1ZXMpOworCXJldHVybiAxOworCisJLyogTkVFRFNXT1JLIGV2aWwgbWVyZ2UgZGV0ZWN0aW9uIHN0dWZmICovCisJLyogTkVFRFNXT1JLIGxlYWtpbmcgbGlrZSBhIHNpZXZlICovCit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19yYW5nZXNfYXJiaXRyYXJ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSA9IGxvb2t1cF9saW5lX3JhbmdlKHJldiwgY29tbWl0KTsKKwlpbnQgY2hhbmdlZCA9IDA7CisKKwlpZiAocmFuZ2UpIHsKKwkJaWYgKCFjb21taXQtPnBhcmVudHMgfHwgIWNvbW1pdC0+cGFyZW50cy0+bmV4dCkKKwkJCWNoYW5nZWQgPSBwcm9jZXNzX3Jhbmdlc19vcmRpbmFyeV9jb21taXQocmV2LCBjb21taXQsIHJhbmdlKTsKKwkJZWxzZQorCQkJY2hhbmdlZCA9IHByb2Nlc3NfcmFuZ2VzX21lcmdlX2NvbW1pdChyZXYsIGNvbW1pdCwgcmFuZ2UpOworCX0KKworCWlmICghY2hhbmdlZCkKKwkJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gVFJFRVNBTUU7CisKKwlyZXR1cm4gY2hhbmdlZDsKK30KKworc3RhdGljIGVudW0gcmV3cml0ZV9yZXN1bHQgbGluZV9sb2dfcmV3cml0ZV9vbmUoc3RydWN0IHJldl9pbmZvICpyZXYsIHN0cnVjdCBjb21taXQgKipwcCkKK3sKKwlmb3IgKDs7KSB7CisJCXN0cnVjdCBjb21taXQgKnAgPSAqcHA7CisJCWlmIChwLT5wYXJlbnRzICYmIHAtPnBhcmVudHMtPm5leHQpCisJCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CisJCWlmIChwLT5vYmplY3QuZmxhZ3MgJiBVTklOVEVSRVNUSU5HKQorCQkJcmV0dXJuIHJld3JpdGVfb25lX29rOworCQlpZiAoIShwLT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSkpCisJCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CisJCWlmICghcC0+cGFyZW50cykKKwkJCXJldHVybiByZXdyaXRlX29uZV9ub3BhcmVudHM7CisJCSpwcCA9IHAtPnBhcmVudHMtPml0ZW07CisJfQorfQorCitpbnQgbGluZV9sb2dfZmlsdGVyKHN0cnVjdCByZXZfaW5mbyAqcmV2KQoreworCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QgPSByZXYtPmNvbW1pdHM7CisJc3RydWN0IGNvbW1pdF9saXN0ICpvdXQgPSBOVUxMLCAqKnBwID0gJm91dDsKKworCXdoaWxlIChsaXN0KSB7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqdG9fZnJlZSA9IE5VTEw7CisJCWNvbW1pdCA9IGxpc3QtPml0ZW07CisJCWlmIChwcm9jZXNzX3Jhbmdlc19hcmJpdHJhcnlfY29tbWl0KHJldiwgY29tbWl0KSkgeworCQkJKnBwID0gbGlzdDsKKwkJCXBwID0gJmxpc3QtPm5leHQ7CisJCX0gZWxzZQorCQkJdG9fZnJlZSA9IGxpc3Q7CisJCWxpc3QgPSBsaXN0LT5uZXh0OworCQlmcmVlKHRvX2ZyZWUpOworCX0KKwkqcHAgPSBOVUxMOworCisJZm9yIChsaXN0ID0gb3V0OyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkKKwkJcmV3cml0ZV9wYXJlbnRzKHJldiwgbGlzdC0+aXRlbSwgbGluZV9sb2dfcmV3cml0ZV9vbmUpOworCisJcmV2LT5jb21taXRzID0gb3V0OworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saW5lLWxvZy5oIGIvbGluZS1sb2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmVhNDVmCi0tLSAvZGV2L251bGwKKysrIGIvbGluZS1sb2cuaApAQCAtMCwwICsxLDUzIEBACisjaWZuZGVmIExJTkVfTE9HX0gKKyNkZWZpbmUgTElORV9MT0dfSAorCisjaW5jbHVkZSAiZGlmZmNvcmUuaCIKKworc3RydWN0IHJldl9pbmZvOworc3RydWN0IGNvbW1pdDsKKworLyogQSByYW5nZSBbc3RhcnQsZW5kXS4gIExpbmVzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCAwLCBhbmQgdGhlCisgKiByYW5nZXMgaW5jbHVkZSBzdGFydCBidXQgZXhjbHVkZSBlbmQuICovCitzdHJ1Y3QgcmFuZ2UgeworCWxvbmcgc3RhcnQsIGVuZDsKK307CisKKy8qIEEgc2V0IG9mIHJhbmdlcy4gIFRoZSByYW5nZXMgbXVzdCBhbHdheXMgYmUgZGlzam9pbnQgYW5kIHNvcnRlZC4gKi8KK3N0cnVjdCByYW5nZV9zZXQgeworCWludCBhbGxvYywgbnI7CisJc3RydWN0IHJhbmdlICpyYW5nZXM7Cit9OworCisvKiBBIGRpZmYsIGVuY29kZWQgYXMgdGhlIHNldCBvZiBwcmUtIGFuZCBwb3N0LWltYWdlIHJhbmdlcyB3aGVyZSB0aGUKKyAqIGZpbGVzIGRpZmZlci4gQSBwYWlyIG9mIHJhbmdlcyBjb3JyZXNwb25kcyB0byBhIGh1bmsuICovCitzdHJ1Y3QgZGlmZl9yYW5nZXMgeworCXN0cnVjdCByYW5nZV9zZXQgcGFyZW50OworCXN0cnVjdCByYW5nZV9zZXQgdGFyZ2V0OworfTsKKworLyogTGlua2VkIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZmlsZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgcmFuZ2VzLiAgVGhlCisgKiBsaXN0IG11c3QgYmUga2VwdCBzb3J0ZWQgYnkgcGF0aC4KKyAqCisgKiBGb3Igc2ltcGxpY2l0eSwgZXZlbiB0aG91Z2ggdGhpcyBpcyBoaWdobHkgcmVkdW5kYW50LCBlYWNoCisgKiBsaW5lX2xvZ19kYXRhIG93bnMgaXRzICdwYXRoJy4KKyAqLworc3RydWN0IGxpbmVfbG9nX2RhdGEgeworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpuZXh0OworCWNoYXIgKnBhdGg7CisJY2hhciBzdGF0dXM7CisJc3RydWN0IHJhbmdlX3NldCByYW5nZXM7CisJaW50IGFyZ19hbGxvYywgYXJnX25yOworCWNvbnN0IGNoYXIgKiphcmdzOworCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyOworCXN0cnVjdCBkaWZmX3JhbmdlcyBkaWZmOworfTsKKworZXh0ZXJuIHZvaWQgbGluZV9sb2dfZGF0YV9pbml0KHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKTsKKworZXh0ZXJuIHZvaWQgbGluZV9sb2dfaW5pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmFyZ3MpOworCitleHRlcm4gaW50IGxpbmVfbG9nX2ZpbHRlcihzdHJ1Y3QgcmV2X2luZm8gKnJldik7CisKK2V4dGVybiBpbnQgbGluZV9sb2dfcHJpbnQoc3RydWN0IHJldl9pbmZvICpyZXYsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CisKKyNlbmRpZiAvKiBMSU5FX0xPR19IICovCmRpZmYgLS1naXQgYS9saW5lLXJhbmdlLmMgYi9saW5lLXJhbmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZhZjk0MwotLS0gL2Rldi9udWxsCisrKyBiL2xpbmUtcmFuZ2UuYwpAQCAtMCwwICsxLDI0MyBAQAorI2luY2x1ZGUgImdpdC1jb21wYXQtdXRpbC5oIgorI2luY2x1ZGUgImxpbmUtcmFuZ2UuaCIKKyNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJzdHJidWYuaCIKKyNpbmNsdWRlICJ1c2VyZGlmZi5oIgorCisvKgorICogUGFyc2Ugb25lIGl0ZW0gaW4gdGhlIC1MIG9wdGlvbgorICovCitzdGF0aWMgY29uc3QgY2hhciAqcGFyc2VfbG9jKGNvbnN0IGNoYXIgKnNwZWMsIG50aF9saW5lX2ZuX3QgbnRoX2xpbmUsCisJCQkgICAgIHZvaWQgKmRhdGEsIGxvbmcgbGluZXMsIGxvbmcgYmVnaW4sIGxvbmcgKnJldCkKK3sKKwljaGFyICp0ZXJtOworCWNvbnN0IGNoYXIgKmxpbmU7CisJbG9uZyBudW07CisJaW50IHJlZ19lcnJvcjsKKwlyZWdleF90IHJlZ2V4cDsKKwlyZWdtYXRjaF90IG1hdGNoWzFdOworCisJLyogQWxsb3cgIi1MIDxzb21ldGhpbmc+LCsyMCIgdG8gbWVhbiBzdGFydGluZyBhdCA8c29tZXRoaW5nPgorCSAqIGZvciAyMCBsaW5lcywgb3IgIi1MIDxzb21ldGhpbmc+LC01IiBmb3IgNSBsaW5lcyBlbmRpbmcgYXQKKwkgKiA8c29tZXRoaW5nPi4KKwkgKi8KKwlpZiAoMSA8IGJlZ2luICYmIChzcGVjWzBdID09ICcrJyB8fCBzcGVjWzBdID09ICctJykpIHsKKwkJbnVtID0gc3RydG9sKHNwZWMgKyAxLCAmdGVybSwgMTApOworCQlpZiAodGVybSAhPSBzcGVjICsgMSkgeworCQkJaWYgKCFyZXQpCisJCQkJcmV0dXJuIHRlcm07CisJCQlpZiAoc3BlY1swXSA9PSAnLScpCisJCQkJbnVtID0gMCAtIG51bTsKKwkJCWlmICgwIDwgbnVtKQorCQkJCSpyZXQgPSBiZWdpbiArIG51bSAtIDI7CisJCQllbHNlIGlmICghbnVtKQorCQkJCSpyZXQgPSBiZWdpbjsKKwkJCWVsc2UKKwkJCQkqcmV0ID0gYmVnaW4gKyBudW07CisJCQlyZXR1cm4gdGVybTsKKwkJfQorCQlyZXR1cm4gc3BlYzsKKwl9CisJbnVtID0gc3RydG9sKHNwZWMsICZ0ZXJtLCAxMCk7CisJaWYgKHRlcm0gIT0gc3BlYykgeworCQlpZiAocmV0KQorCQkJKnJldCA9IG51bTsKKwkJcmV0dXJuIHRlcm07CisJfQorCWlmIChzcGVjWzBdICE9ICcvJykKKwkJcmV0dXJuIHNwZWM7CisKKwkvKiBpdCBjb3VsZCBiZSBhIHJlZ2V4cCBvZiBmb3JtIC8uLi4vICovCisJZm9yICh0ZXJtID0gKGNoYXIgKikgc3BlYyArIDE7ICp0ZXJtICYmICp0ZXJtICE9ICcvJzsgdGVybSsrKSB7CisJCWlmICgqdGVybSA9PSAnXFwnKQorCQkJdGVybSsrOworCX0KKwlpZiAoKnRlcm0gIT0gJy8nKQorCQlyZXR1cm4gc3BlYzsKKworCS8qIGluIHRoZSBzY2FuLW9ubHkgY2FzZSB3ZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIHJlZ2V4ICovCisJaWYgKCFyZXQpCisJCXJldHVybiB0ZXJtKzE7CisKKwkvKiB0cnkgW3NwZWMrMSAuLiB0ZXJtLTFdIGFzIHJlZ2V4cCAqLworCSp0ZXJtID0gMDsKKwliZWdpbi0tOyAvKiBpbnB1dCBpcyBpbiBodW1hbiB0ZXJtcyAqLworCWxpbmUgPSBudGhfbGluZShkYXRhLCBiZWdpbik7CisKKwlpZiAoIShyZWdfZXJyb3IgPSByZWdjb21wKCZyZWdleHAsIHNwZWMgKyAxLCBSRUdfTkVXTElORSkpICYmCisJICAgICEocmVnX2Vycm9yID0gcmVnZXhlYygmcmVnZXhwLCBsaW5lLCAxLCBtYXRjaCwgMCkpKSB7CisJCWNvbnN0IGNoYXIgKmNwID0gbGluZSArIG1hdGNoWzBdLnJtX3NvOworCQljb25zdCBjaGFyICpubGluZTsKKworCQl3aGlsZSAoYmVnaW4rKyA8IGxpbmVzKSB7CisJCQlubGluZSA9IG50aF9saW5lKGRhdGEsIGJlZ2luKTsKKwkJCWlmIChsaW5lIDw9IGNwICYmIGNwIDwgbmxpbmUpCisJCQkJYnJlYWs7CisJCQlsaW5lID0gbmxpbmU7CisJCX0KKwkJKnJldCA9IGJlZ2luOworCQlyZWdmcmVlKCZyZWdleHApOworCQkqdGVybSsrID0gJy8nOworCQlyZXR1cm4gdGVybTsKKwl9CisJZWxzZSB7CisJCWNoYXIgZXJyYnVmWzEwMjRdOworCQlyZWdlcnJvcihyZWdfZXJyb3IsICZyZWdleHAsIGVycmJ1ZiwgMTAyNCk7CisJCWRpZSgiLUwgcGFyYW1ldGVyICclcyc6ICVzIiwgc3BlYyArIDEsIGVycmJ1Zik7CisJfQorfQorCitzdGF0aWMgaW50IG1hdGNoX2Z1bmNuYW1lKHhkZW1pdGNvbmZfdCAqeGVjZmcsIGNvbnN0IGNoYXIgKmJvbCwgY29uc3QgY2hhciAqZW9sKQoreworCWlmICh4ZWNmZykgeworCQljaGFyIGJ1ZlsxXTsKKwkJcmV0dXJuIHhlY2ZnLT5maW5kX2Z1bmMoYm9sLCBlb2wgLSBib2wsIGJ1ZiwgMSwKKwkJCQkJeGVjZmctPmZpbmRfZnVuY19wcml2KSA+PSAwOworCX0KKworCWlmIChib2wgPT0gZW9sKQorCQlyZXR1cm4gMDsKKwlpZiAoaXNhbHBoYSgqYm9sKSB8fCAqYm9sID09ICdfJyB8fCAqYm9sID09ICckJykKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpmaW5kX2Z1bmNuYW1lX21hdGNoaW5nX3JlZ2V4cCh4ZGVtaXRjb25mX3QgKnhlY2ZnLCBjb25zdCBjaGFyICpzdGFydCwKKwkJCQkJCSByZWdleF90ICpyZWdleHApCit7CisJaW50IHJlZ19lcnJvcjsKKwlyZWdtYXRjaF90IG1hdGNoWzFdOworCXdoaWxlICgxKSB7CisJCWNvbnN0IGNoYXIgKmJvbCwgKmVvbDsKKwkJcmVnX2Vycm9yID0gcmVnZXhlYyhyZWdleHAsIHN0YXJ0LCAxLCBtYXRjaCwgMCk7CisJCWlmIChyZWdfZXJyb3IgPT0gUkVHX05PTUFUQ0gpCisJCQlyZXR1cm4gTlVMTDsKKwkJZWxzZSBpZiAocmVnX2Vycm9yKSB7CisJCQljaGFyIGVycmJ1ZlsxMDI0XTsKKwkJCXJlZ2Vycm9yKHJlZ19lcnJvciwgcmVnZXhwLCBlcnJidWYsIDEwMjQpOworCQkJZGllKCItTCBwYXJhbWV0ZXI6IHJlZ2V4ZWMoKSBmYWlsZWQ6ICVzIiwgZXJyYnVmKTsKKwkJfQorCQkvKiBkZXRlcm1pbmUgZXh0ZW50IG9mIGxpbmUgbWF0Y2hlZCAqLworCQlib2wgPSBzdGFydCttYXRjaFswXS5ybV9zbzsKKwkJZW9sID0gc3RhcnQrbWF0Y2hbMF0ucm1fZW87CisJCXdoaWxlIChib2wgPiBzdGFydCAmJiAqYm9sICE9ICdcbicpCisJCQlib2wtLTsKKwkJaWYgKCpib2wgPT0gJ1xuJykKKwkJCWJvbCsrOworCQl3aGlsZSAoKmVvbCAmJiAqZW9sICE9ICdcbicpCisJCQllb2wrKzsKKwkJaWYgKCplb2wgPT0gJ1xuJykKKwkJCWVvbCsrOworCQkvKiBpcyBpdCBhIGZ1bmNuYW1lIGxpbmU/ICovCisJCWlmIChtYXRjaF9mdW5jbmFtZSh4ZWNmZywgKGNoYXIqKSBib2wsIChjaGFyKikgZW9sKSkKKwkJCXJldHVybiBib2w7CisJCXN0YXJ0ID0gZW9sOworCX0KK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnBhcnNlX3JhbmdlX2Z1bmNuYW1lKGNvbnN0IGNoYXIgKmFyZywgbnRoX2xpbmVfZm5fdCBudGhfbGluZV9jYiwKKwkJCQkJdm9pZCAqY2JfZGF0YSwgbG9uZyBsaW5lcywgbG9uZyAqYmVnaW4sIGxvbmcgKmVuZCwKKwkJCQkJY29uc3QgY2hhciAqcGF0aCkKK3sKKwljaGFyICpwYXR0ZXJuOworCWNvbnN0IGNoYXIgKnRlcm07CisJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2OworCXhkZW1pdGNvbmZfdCAqeGVjZmcgPSBOVUxMOworCWNvbnN0IGNoYXIgKnN0YXJ0OworCWNvbnN0IGNoYXIgKnA7CisJaW50IHJlZ19lcnJvcjsKKwlyZWdleF90IHJlZ2V4cDsKKworCWFzc2VydCgqYXJnID09ICc6Jyk7CisJdGVybSA9IGFyZysxOworCXdoaWxlICgqdGVybSAmJiAqdGVybSAhPSAnOicpIHsKKwkJaWYgKCp0ZXJtID09ICdcXCcgJiYgKih0ZXJtKzEpKQorCQkJdGVybSsrOworCQl0ZXJtKys7CisJfQorCWlmICh0ZXJtID09IGFyZysxKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAoIWJlZ2luKSAvKiBza2lwX3JhbmdlX2FyZyBjYXNlICovCisJCXJldHVybiB0ZXJtOworCisJcGF0dGVybiA9IHhzdHJuZHVwKGFyZysxLCB0ZXJtLShhcmcrMSkpOworCisJc3RhcnQgPSBudGhfbGluZV9jYihjYl9kYXRhLCAwKTsKKworCWRydiA9IHVzZXJkaWZmX2ZpbmRfYnlfcGF0aChwYXRoKTsKKwlpZiAoZHJ2ICYmIGRydi0+ZnVuY25hbWUucGF0dGVybikgeworCQljb25zdCBzdHJ1Y3QgdXNlcmRpZmZfZnVuY25hbWUgKnBlID0gJmRydi0+ZnVuY25hbWU7CisJCXhlY2ZnID0geGNhbGxvYygxLCBzaXplb2YoKnhlY2ZnKSk7CisJCXhkaWZmX3NldF9maW5kX2Z1bmMoeGVjZmcsIHBlLT5wYXR0ZXJuLCBwZS0+Y2ZsYWdzKTsKKwl9CisKKwlyZWdfZXJyb3IgPSByZWdjb21wKCZyZWdleHAsIHBhdHRlcm4sIFJFR19ORVdMSU5FKTsKKwlpZiAocmVnX2Vycm9yKSB7CisJCWNoYXIgZXJyYnVmWzEwMjRdOworCQlyZWdlcnJvcihyZWdfZXJyb3IsICZyZWdleHAsIGVycmJ1ZiwgMTAyNCk7CisJCWRpZSgiLUwgcGFyYW1ldGVyICclcyc6ICVzIiwgcGF0dGVybiwgZXJyYnVmKTsKKwl9CisKKwlwID0gZmluZF9mdW5jbmFtZV9tYXRjaGluZ19yZWdleHAoeGVjZmcsIChjaGFyKikgc3RhcnQsICZyZWdleHApOworCWlmICghcCkKKwkJZGllKCItTCBwYXJhbWV0ZXIgJyVzJzogbm8gbWF0Y2giLCBwYXR0ZXJuKTsKKwkqYmVnaW4gPSAwOworCXdoaWxlIChwID4gbnRoX2xpbmVfY2IoY2JfZGF0YSwgKmJlZ2luKSkKKwkJKCpiZWdpbikrKzsKKworCWlmICgqYmVnaW4gPj0gbGluZXMpCisJCWRpZSgiLUwgcGFyYW1ldGVyICclcycgbWF0Y2hlcyBhdCBFT0YiLCBwYXR0ZXJuKTsKKworCSplbmQgPSAqYmVnaW4rMTsKKwl3aGlsZSAoKmVuZCA8IGxpbmVzKSB7CisJCWNvbnN0IGNoYXIgKmJvbCA9IG50aF9saW5lX2NiKGNiX2RhdGEsICplbmQpOworCQljb25zdCBjaGFyICplb2wgPSBudGhfbGluZV9jYihjYl9kYXRhLCAqZW5kKzEpOworCQlpZiAobWF0Y2hfZnVuY25hbWUoeGVjZmcsIGJvbCwgZW9sKSkKKwkJCWJyZWFrOworCQkoKmVuZCkrKzsKKwl9CisKKwlyZWdmcmVlKCZyZWdleHApOworCWZyZWUoeGVjZmcpOworCWZyZWUocGF0dGVybik7CisKKwkvKiBjb21wZW5zYXRlIGZvciAxLWJhc2VkIG51bWJlcmluZyAqLworCSgqYmVnaW4pKys7CisKKwlyZXR1cm4gdGVybTsKK30KKworaW50IHBhcnNlX3JhbmdlX2FyZyhjb25zdCBjaGFyICphcmcsIG50aF9saW5lX2ZuX3QgbnRoX2xpbmVfY2IsCisJCSAgICB2b2lkICpjYl9kYXRhLCBsb25nIGxpbmVzLCBsb25nICpiZWdpbiwgbG9uZyAqZW5kLAorCQkgICAgY29uc3QgY2hhciAqcGF0aCkKK3sKKwlpZiAoKmFyZyA9PSAnOicpIHsKKwkJYXJnID0gcGFyc2VfcmFuZ2VfZnVuY25hbWUoYXJnLCBudGhfbGluZV9jYiwgY2JfZGF0YSwgbGluZXMsIGJlZ2luLCBlbmQsIHBhdGgpOworCQlpZiAoIWFyZyB8fCAqYXJnKQorCQkJcmV0dXJuIC0xOworCQlyZXR1cm4gMDsKKwl9CisKKwlhcmcgPSBwYXJzZV9sb2MoYXJnLCBudGhfbGluZV9jYiwgY2JfZGF0YSwgbGluZXMsIDEsIGJlZ2luKTsKKworCWlmICgqYXJnID09ICcsJykKKwkJYXJnID0gcGFyc2VfbG9jKGFyZyArIDEsIG50aF9saW5lX2NiLCBjYl9kYXRhLCBsaW5lcywgKmJlZ2luICsgMSwgZW5kKTsKKworCWlmICgqYXJnKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gMDsKK30KKworY29uc3QgY2hhciAqc2tpcF9yYW5nZV9hcmcoY29uc3QgY2hhciAqYXJnKQoreworCWlmICgqYXJnID09ICc6JykKKwkJcmV0dXJuIHBhcnNlX3JhbmdlX2Z1bmNuYW1lKGFyZywgTlVMTCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgTlVMTCk7CisKKwlhcmcgPSBwYXJzZV9sb2MoYXJnLCBOVUxMLCBOVUxMLCAwLCAtMSwgTlVMTCk7CisKKwlpZiAoKmFyZyA9PSAnLCcpCisJCWFyZyA9IHBhcnNlX2xvYyhhcmcrMSwgTlVMTCwgTlVMTCwgMCwgMCwgTlVMTCk7CisKKwlyZXR1cm4gYXJnOworfQpkaWZmIC0tZ2l0IGEvbGluZS1yYW5nZS5oIGIvbGluZS1yYW5nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlM2QwMTIKLS0tIC9kZXYvbnVsbAorKysgYi9saW5lLXJhbmdlLmgKQEAgLTAsMCArMSwzNiBAQAorI2lmbmRlZiBMSU5FX1JBTkdFX0gKKyNkZWZpbmUgTElORV9SQU5HRV9ICisKKy8qCisgKiBQYXJzZSBvbmUgaXRlbSBpbiBhbiAtTCBiZWdpbixlbmQgb3B0aW9uIHcuci50LiB0aGUgbm90aW9uYWwgZmlsZQorICogb2JqZWN0ICdjYl9kYXRhJyBjb25zaXN0aW5nIG9mICdsaW5lcycgbGluZXMuCisgKgorICogVGhlICdudGhfbGluZV9jYicgY2FsbGJhY2sgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHN0YXJ0IG9mIHRoZQorICogbGluZSAnbG5vJyBpbnNpZGUgdGhlICdjYl9kYXRhJy4gIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gYWxyZWFkeQorICogaGF2ZSBhIHN1aXRhYmxlIG1hcCBhdCBoYW5kIHRvIG1ha2UgdGhpcyBhIGNvbnN0YW50LXRpbWUgbG9va3VwLgorICoKKyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIC0xIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gIFRoZQorICogYWN0dWFsIHJhbmdlIGlzIHN0b3JlZCBpbiAqYmVnaW4gYW5kICplbmQuICBUaGUgY291bnRpbmcgc3RhcnRzCisgKiBhdCAxISAgSW4gY2FzZSBvZiBlcnJvciwgdGhlIGNhbGxlciBzaG91bGQgc2hvdyB1c2FnZSBtZXNzYWdlLgorICovCisKK3R5cGVkZWYgY29uc3QgY2hhciAqKCpudGhfbGluZV9mbl90KSh2b2lkICpkYXRhLCBsb25nIGxubyk7CisKK2V4dGVybiBpbnQgcGFyc2VfcmFuZ2VfYXJnKGNvbnN0IGNoYXIgKmFyZywKKwkJCSAgIG50aF9saW5lX2ZuX3QgbnRoX2xpbmVfY2IsCisJCQkgICB2b2lkICpjYl9kYXRhLCBsb25nIGxpbmVzLAorCQkJICAgbG9uZyAqYmVnaW4sIGxvbmcgKmVuZCwKKwkJCSAgIGNvbnN0IGNoYXIgKnBhdGgpOworCisvKgorICogU2NhbiBwYXN0IGEgcmFuZ2UgYXJndW1lbnQgdGhhdCBjb3VsZCBiZSBwYXJzZWQgYnkKKyAqICdwYXJzZV9yYW5nZV9hcmcnLCB0byBoZWxwIHRoZSBjYWxsZXIgZGV0ZXJtaW5lIHRoZSBzdGFydCBvZiB0aGUKKyAqIGZpbGVuYW1lIGluICctTCBuLG06ZmlsZScgc3ludGF4LgorICoKKyAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlICduLG0nIHBhcnQsIG9yCisgKiBOVUxMIGluIGNhc2UgdGhlIGFyZ3VtZW50IGlzIG9idmlvdXNseSBtYWxmb3JtZWQuCisgKi8KKworZXh0ZXJuIGNvbnN0IGNoYXIgKnNraXBfcmFuZ2VfYXJnKGNvbnN0IGNoYXIgKmFyZyk7CisKKyNlbmRpZiAvKiBMSU5FX1JBTkdFX0ggKi8KZGlmZiAtLWdpdCBhL2xsLW1lcmdlLmMgYi9sbC1tZXJnZS5jCmluZGV4IGFjZWEzM2IuLmZiNjFlYTYgMTAwNjQ0Ci0tLSBhL2xsLW1lcmdlLmMKKysrIGIvbGwtbWVyZ2UuYwpAQCAtMjIyLDcgKzIyMiw3IEBACiBzdGF0aWMgaW50IHJlYWRfbWVyZ2VfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogewogCXN0cnVjdCBsbF9tZXJnZV9kcml2ZXIgKmZuOwotCWNvbnN0IGNoYXIgKmVwLCAqbmFtZTsKKwljb25zdCBjaGFyICprZXksICpuYW1lOwogCWludCBuYW1lbGVuOwogCiAJaWYgKCFzdHJjbXAodmFyLCAibWVyZ2UuZGVmYXVsdCIpKSB7CkBAIC0yMzYsMTUgKzIzNiwxMyBAQAogCSAqIGVzcGVjaWFsbHksIHdlIGRvIG5vdCB3YW50IHRvIGxvb2sgYXQgdmFyaWFibGVzIHN1Y2ggYXMKIAkgKiAibWVyZ2Uuc3VtbWFyeSIsICJtZXJnZS50b29sIiwgYW5kICJtZXJnZS52ZXJib3NpdHkiLgogCSAqLwotCWlmIChwcmVmaXhjbXAodmFyLCAibWVyZ2UuIikgfHwgKGVwID0gc3RycmNocih2YXIsICcuJykpID09IHZhciArIDUpCisJaWYgKHBhcnNlX2NvbmZpZ19rZXkodmFyLCAibWVyZ2UiLCAmbmFtZSwgJm5hbWVsZW4sICZrZXkpIDwgMCB8fCAhbmFtZSkKIAkJcmV0dXJuIDA7CiAKIAkvKgogCSAqIEZpbmQgZXhpc3Rpbmcgb25lIGFzIHdlIG1pZ2h0IGJlIHByb2Nlc3NpbmcgbWVyZ2UuPG5hbWU+LnZhcjIKIAkgKiBhZnRlciBzZWVpbmcgbWVyZ2UuPG5hbWU+LnZhcjEuCiAJICovCi0JbmFtZSA9IHZhciArIDY7Ci0JbmFtZWxlbiA9IGVwIC0gbmFtZTsKIAlmb3IgKGZuID0gbGxfdXNlcl9tZXJnZTsgZm47IGZuID0gZm4tPm5leHQpCiAJCWlmICghc3RybmNtcChmbi0+bmFtZSwgbmFtZSwgbmFtZWxlbikgJiYgIWZuLT5uYW1lW25hbWVsZW5dKQogCQkJYnJlYWs7CkBAIC0yNTYsMTYgKzI1NCwxNCBAQAogCQlsbF91c2VyX21lcmdlX3RhaWwgPSAmKGZuLT5uZXh0KTsKIAl9CiAKLQllcCsrOwotCi0JaWYgKCFzdHJjbXAoIm5hbWUiLCBlcCkpIHsKKwlpZiAoIXN0cmNtcCgibmFtZSIsIGtleSkpIHsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiBlcnJvcigiJXM6IGxhY2tzIHZhbHVlIiwgdmFyKTsKIAkJZm4tPmRlc2NyaXB0aW9uID0geHN0cmR1cCh2YWx1ZSk7CiAJCXJldHVybiAwOwogCX0KIAotCWlmICghc3RyY21wKCJkcml2ZXIiLCBlcCkpIHsKKwlpZiAoIXN0cmNtcCgiZHJpdmVyIiwga2V5KSkgewogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJuIGVycm9yKCIlczogbGFja3MgdmFsdWUiLCB2YXIpOwogCQkvKgpAQCAtMjg5LDcgKzI4NSw3IEBACiAJCXJldHVybiAwOwogCX0KIAotCWlmICghc3RyY21wKCJyZWN1cnNpdmUiLCBlcCkpIHsKKwlpZiAoIXN0cmNtcCgicmVjdXJzaXZlIiwga2V5KSkgewogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJuIGVycm9yKCIlczogbGFja3MgdmFsdWUiLCB2YXIpOwogCQlmbi0+cmVjdXJzaXZlID0geHN0cmR1cCh2YWx1ZSk7CmRpZmYgLS1naXQgYS9sb2ctdHJlZS5jIGIvbG9nLXRyZWUuYwppbmRleCA0Zjg2ZGVmLi4yZWI2OWJjIDEwMDY0NAotLS0gYS9sb2ctdHJlZS5jCisrKyBiL2xvZy10cmVlLmMKQEAgLTksNiArOSw4IEBACiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJjb2xvci5oIgogI2luY2x1ZGUgImdwZy1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJzZXF1ZW5jZXIuaCIKKyNpbmNsdWRlICJsaW5lLWxvZy5oIgogCiBzdHJ1Y3QgZGVjb3JhdGlvbiBuYW1lX2RlY29yYXRpb24gPSB7ICJvYmplY3QgbmFtZXMiIH07CiAKQEAgLTE3NCwxMTkgKzE3Niw1MiBAQAogCX0KIH0KIAotdm9pZCBzaG93X2RlY29yYXRpb25zKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCisvKgorICogVGhlIGNhbGxlciBtYWtlcyBzdXJlIHRoZXJlIGlzIG5vIGZ1bm55IGNvbG9yIGJlZm9yZQorICogY2FsbGluZy4gZm9ybWF0X2RlY29yYXRpb25zIG1ha2VzIHN1cmUgdGhlIHNhbWUgYWZ0ZXIgcmV0dXJuLgorICovCit2b2lkIGZvcm1hdF9kZWNvcmF0aW9ucyhzdHJ1Y3Qgc3RyYnVmICpzYiwKKwkJCWNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJCWludCB1c2VfY29sb3IpCiB7CiAJY29uc3QgY2hhciAqcHJlZml4OwogCXN0cnVjdCBuYW1lX2RlY29yYXRpb24gKmRlY29yYXRpb247CiAJY29uc3QgY2hhciAqY29sb3JfY29tbWl0ID0KLQkJZGlmZl9nZXRfY29sb3Jfb3B0KCZvcHQtPmRpZmZvcHQsIERJRkZfQ09NTUlUKTsKKwkJZGlmZl9nZXRfY29sb3IodXNlX2NvbG9yLCBESUZGX0NPTU1JVCk7CiAJY29uc3QgY2hhciAqY29sb3JfcmVzZXQgPQotCQlkZWNvcmF0ZV9nZXRfY29sb3Jfb3B0KCZvcHQtPmRpZmZvcHQsIERFQ09SQVRJT05fTk9ORSk7CisJCWRlY29yYXRlX2dldF9jb2xvcih1c2VfY29sb3IsIERFQ09SQVRJT05fTk9ORSk7CiAKLQlpZiAob3B0LT5zaG93X3NvdXJjZSAmJiBjb21taXQtPnV0aWwpCi0JCXByaW50ZigiXHQlcyIsIChjaGFyICopIGNvbW1pdC0+dXRpbCk7Ci0JaWYgKCFvcHQtPnNob3dfZGVjb3JhdGlvbnMpCi0JCXJldHVybjsKIAlkZWNvcmF0aW9uID0gbG9va3VwX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KTsKIAlpZiAoIWRlY29yYXRpb24pCiAJCXJldHVybjsKIAlwcmVmaXggPSAiICgiOwogCXdoaWxlIChkZWNvcmF0aW9uKSB7Ci0JCXByaW50ZigiJXMiLCBwcmVmaXgpOwotCQlmcHV0cyhkZWNvcmF0ZV9nZXRfY29sb3Jfb3B0KCZvcHQtPmRpZmZvcHQsIGRlY29yYXRpb24tPnR5cGUpLAotCQkgICAgICBzdGRvdXQpOworCQlzdHJidWZfYWRkc3RyKHNiLCBjb2xvcl9jb21taXQpOworCQlzdHJidWZfYWRkc3RyKHNiLCBwcmVmaXgpOworCQlzdHJidWZfYWRkc3RyKHNiLCBkZWNvcmF0ZV9nZXRfY29sb3IodXNlX2NvbG9yLCBkZWNvcmF0aW9uLT50eXBlKSk7CiAJCWlmIChkZWNvcmF0aW9uLT50eXBlID09IERFQ09SQVRJT05fUkVGX1RBRykKLQkJCWZwdXRzKCJ0YWc6ICIsIHN0ZG91dCk7Ci0JCXByaW50ZigiJXMiLCBkZWNvcmF0aW9uLT5uYW1lKTsKLQkJZnB1dHMoY29sb3JfcmVzZXQsIHN0ZG91dCk7Ci0JCWZwdXRzKGNvbG9yX2NvbW1pdCwgc3Rkb3V0KTsKKwkJCXN0cmJ1Zl9hZGRzdHIoc2IsICJ0YWc6ICIpOworCQlzdHJidWZfYWRkc3RyKHNiLCBkZWNvcmF0aW9uLT5uYW1lKTsKKwkJc3RyYnVmX2FkZHN0cihzYiwgY29sb3JfcmVzZXQpOwogCQlwcmVmaXggPSAiLCAiOwogCQlkZWNvcmF0aW9uID0gZGVjb3JhdGlvbi0+bmV4dDsKIAl9Ci0JcHV0Y2hhcignKScpOworCXN0cmJ1Zl9hZGRzdHIoc2IsIGNvbG9yX2NvbW1pdCk7CisJc3RyYnVmX2FkZGNoKHNiLCAnKScpOworCXN0cmJ1Zl9hZGRzdHIoc2IsIGNvbG9yX3Jlc2V0KTsKIH0KIAotLyoKLSAqIFNlYXJjaCBmb3IgIl5bLUEtWmEtel0rOiBbXkBdK0AiIHBhdHRlcm4uIEl0IHVzdWFsbHkgbWF0Y2hlcwotICogU2lnbmVkLW9mZi1ieTogYW5kIEFja2VkLWJ5OiBsaW5lcy4KLSAqLwotc3RhdGljIGludCBkZXRlY3RfYW55X3NpZ25vZmYoY2hhciAqbGV0dGVyLCBpbnQgc2l6ZSkKK3ZvaWQgc2hvd19kZWNvcmF0aW9ucyhzdHJ1Y3QgcmV2X2luZm8gKm9wdCwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQogewotCWNoYXIgKmNwOwotCWludCBzZWVuX2NvbG9uID0gMDsKLQlpbnQgc2Vlbl9hdCA9IDA7Ci0JaW50IHNlZW5fbmFtZSA9IDA7Ci0JaW50IHNlZW5faGVhZCA9IDA7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCi0JY3AgPSBsZXR0ZXIgKyBzaXplOwotCXdoaWxlIChsZXR0ZXIgPD0gLS1jcCAmJiAqY3AgPT0gJ1xuJykKLQkJY29udGludWU7Ci0KLQl3aGlsZSAobGV0dGVyIDw9IGNwKSB7Ci0JCWNoYXIgY2ggPSAqY3AtLTsKLQkJaWYgKGNoID09ICdcbicpCi0JCQlicmVhazsKLQotCQlpZiAoIXNlZW5fYXQpIHsKLQkJCWlmIChjaCA9PSAnQCcpCi0JCQkJc2Vlbl9hdCA9IDE7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoIXNlZW5fY29sb24pIHsKLQkJCWlmIChjaCA9PSAnQCcpCi0JCQkJcmV0dXJuIDA7Ci0JCQllbHNlIGlmIChjaCA9PSAnOicpCi0JCQkJc2Vlbl9jb2xvbiA9IDE7Ci0JCQllbHNlCi0JCQkJc2Vlbl9uYW1lID0gMTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICgoJ0EnIDw9IGNoICYmIGNoIDw9ICdaJykgfHwKLQkJICAgICgnYScgPD0gY2ggJiYgY2ggPD0gJ3onKSB8fAotCQkgICAgY2ggPT0gJy0nKSB7Ci0JCQlzZWVuX2hlYWQgPSAxOwotCQkJY29udGludWU7Ci0JCX0KLQkJLyogbm8gZW1wdHkgbGFzdCBsaW5lIGRvZXNuJ3QgbWF0Y2ggKi8KLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBzZWVuX2hlYWQgJiYgc2Vlbl9uYW1lOwotfQotCi1zdGF0aWMgdm9pZCBhcHBlbmRfc2lnbm9mZihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqc2lnbm9mZikKLXsKLQlzdGF0aWMgY29uc3QgY2hhciBzaWduZWRfb2ZmX2J5W10gPSAiU2lnbmVkLW9mZi1ieTogIjsKLQlzaXplX3Qgc2lnbm9mZl9sZW4gPSBzdHJsZW4oc2lnbm9mZik7Ci0JaW50IGhhc19zaWdub2ZmID0gMDsKLQljaGFyICpjcDsKLQotCWNwID0gc2ItPmJ1ZjsKLQotCS8qIEZpcnN0IHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIHNpZ24tb2ZmIGJ5IHRoZSBzaWduZXIgKi8KLQl3aGlsZSAoKGNwID0gc3Ryc3RyKGNwLCBzaWduZWRfb2ZmX2J5KSkpIHsKLQotCQloYXNfc2lnbm9mZiA9IDE7Ci0KLQkJY3AgKz0gc3RybGVuKHNpZ25lZF9vZmZfYnkpOwotCQlpZiAoY3AgKyBzaWdub2ZmX2xlbiA+PSBzYi0+YnVmICsgc2ItPmxlbikKLQkJCWJyZWFrOwotCQlpZiAoc3RybmNtcChjcCwgc2lnbm9mZiwgc2lnbm9mZl9sZW4pKQotCQkJY29udGludWU7Ci0JCWlmICghaXNzcGFjZShjcFtzaWdub2ZmX2xlbl0pKQotCQkJY29udGludWU7Ci0JCS8qIHdlIGFscmVhZHkgaGF2ZSBoaW0gKi8KKwlpZiAob3B0LT5zaG93X3NvdXJjZSAmJiBjb21taXQtPnV0aWwpCisJCXByaW50ZigiXHQlcyIsIChjaGFyICopIGNvbW1pdC0+dXRpbCk7CisJaWYgKCFvcHQtPnNob3dfZGVjb3JhdGlvbnMpCiAJCXJldHVybjsKLQl9Ci0KLQlpZiAoIWhhc19zaWdub2ZmKQotCQloYXNfc2lnbm9mZiA9IGRldGVjdF9hbnlfc2lnbm9mZihzYi0+YnVmLCBzYi0+bGVuKTsKLQotCWlmICghaGFzX3NpZ25vZmYpCi0JCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7Ci0KLQlzdHJidWZfYWRkc3RyKHNiLCBzaWduZWRfb2ZmX2J5KTsKLQlzdHJidWZfYWRkKHNiLCBzaWdub2ZmLCBzaWdub2ZmX2xlbik7Ci0Jc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKKwlmb3JtYXRfZGVjb3JhdGlvbnMoJnNiLCBjb21taXQsIG9wdC0+ZGlmZm9wdC51c2VfY29sb3IpOworCWZwdXRzKHNiLmJ1Ziwgc3Rkb3V0KTsKKwlzdHJidWZfcmVsZWFzZSgmc2IpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGRpZ2l0c19pbl9udW1iZXIodW5zaWduZWQgaW50IG51bWJlcikKQEAgLTI5OSwyNiArMjM0LDM0IEBACiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBnZXRfcGF0Y2hfZmlsZW5hbWUoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBjb25zdCBjaGFyICpzdWJqZWN0LCBpbnQgbnIsCi0JCQljb25zdCBjaGFyICpzdWZmaXgsIHN0cnVjdCBzdHJidWYgKmJ1ZikKK3ZvaWQgZm10X291dHB1dF9zdWJqZWN0KHN0cnVjdCBzdHJidWYgKmZpbGVuYW1lLAorCQkJY29uc3QgY2hhciAqc3ViamVjdCwKKwkJCXN0cnVjdCByZXZfaW5mbyAqaW5mbykKIHsKLQlpbnQgc3VmZml4X2xlbiA9IHN0cmxlbihzdWZmaXgpICsgMTsKLQlpbnQgc3RhcnRfbGVuID0gYnVmLT5sZW47CisJY29uc3QgY2hhciAqc3VmZml4ID0gaW5mby0+cGF0Y2hfc3VmZml4OworCWludCBuciA9IGluZm8tPm5yOworCWludCBzdGFydF9sZW4gPSBmaWxlbmFtZS0+bGVuOworCWludCBtYXhfbGVuID0gc3RhcnRfbGVuICsgRk9STUFUX1BBVENIX05BTUVfTUFYIC0gKHN0cmxlbihzdWZmaXgpICsgMSk7CiAKLQlzdHJidWZfYWRkZihidWYsIGNvbW1pdCB8fCBzdWJqZWN0ID8gIiUwNGQtIiA6ICIlZCIsIG5yKTsKLQlpZiAoY29tbWl0IHx8IHN1YmplY3QpIHsKLQkJaW50IG1heF9sZW4gPSBzdGFydF9sZW4gKyBGT1JNQVRfUEFUQ0hfTkFNRV9NQVggLSBzdWZmaXhfbGVuOwotCQlzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgY3R4ID0gezB9OworCWlmICgwIDwgaW5mby0+cmVyb2xsX2NvdW50KQorCQlzdHJidWZfYWRkZihmaWxlbmFtZSwgInYlZC0iLCBpbmZvLT5yZXJvbGxfY291bnQpOworCXN0cmJ1Zl9hZGRmKGZpbGVuYW1lLCAiJTA0ZC0lcyIsIG5yLCBzdWJqZWN0KTsKIAotCQlpZiAoc3ViamVjdCkKLQkJCXN0cmJ1Zl9hZGRzdHIoYnVmLCBzdWJqZWN0KTsKLQkJZWxzZSBpZiAoY29tbWl0KQotCQkJZm9ybWF0X2NvbW1pdF9tZXNzYWdlKGNvbW1pdCwgIiVmIiwgYnVmLCAmY3R4KTsKKwlpZiAobWF4X2xlbiA8IGZpbGVuYW1lLT5sZW4pCisJCXN0cmJ1Zl9zZXRsZW4oZmlsZW5hbWUsIG1heF9sZW4pOworCXN0cmJ1Zl9hZGRzdHIoZmlsZW5hbWUsIHN1ZmZpeCk7Cit9CiAKLQkJaWYgKG1heF9sZW4gPCBidWYtPmxlbikKLQkJCXN0cmJ1Zl9zZXRsZW4oYnVmLCBtYXhfbGVuKTsKLQkJc3RyYnVmX2FkZHN0cihidWYsIHN1ZmZpeCk7Ci0JfQordm9pZCBmbXRfb3V0cHV0X2NvbW1pdChzdHJ1Y3Qgc3RyYnVmICpmaWxlbmFtZSwKKwkJICAgICAgIHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJICAgICAgIHN0cnVjdCByZXZfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgY3R4ID0gezB9OworCXN0cnVjdCBzdHJidWYgc3ViamVjdCA9IFNUUkJVRl9JTklUOworCisJZm9ybWF0X2NvbW1pdF9tZXNzYWdlKGNvbW1pdCwgIiVmIiwgJnN1YmplY3QsICZjdHgpOworCWZtdF9vdXRwdXRfc3ViamVjdChmaWxlbmFtZSwgc3ViamVjdC5idWYsIGluZm8pOworCXN0cmJ1Zl9yZWxlYXNlKCZzdWJqZWN0KTsKIH0KIAogdm9pZCBsb2dfd3JpdGVfZW1haWxfaGVhZGVycyhzdHJ1Y3QgcmV2X2luZm8gKm9wdCwgc3RydWN0IGNvbW1pdCAqY29tbWl0LApAQCAtMzg3LDggKzMzMCwxMCBAQAogCQkJIG1pbWVfYm91bmRhcnlfbGVhZGVyLCBvcHQtPm1pbWVfYm91bmRhcnkpOwogCQlleHRyYV9oZWFkZXJzID0gc3ViamVjdF9idWZmZXI7CiAKLQkJZ2V0X3BhdGNoX2ZpbGVuYW1lKG9wdC0+bnVtYmVyZWRfZmlsZXMgPyBOVUxMIDogY29tbWl0LCBOVUxMLAotCQkJCSAgIG9wdC0+bnIsIG9wdC0+cGF0Y2hfc3VmZml4LCAmZmlsZW5hbWUpOworCQlpZiAob3B0LT5udW1iZXJlZF9maWxlcykKKwkJCXN0cmJ1Zl9hZGRmKCZmaWxlbmFtZSwgIiVkIiwgb3B0LT5ucik7CisJCWVsc2UKKwkJCWZtdF9vdXRwdXRfY29tbWl0KCZmaWxlbmFtZSwgY29tbWl0LCBvcHQpOwogCQlzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpIC0gMSwKIAkJCSAiXG4tLSVzJXNcbiIKIAkJCSAiQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2g7IgpAQCAtNDM0LDcgKzM3OSw3IEBACiAKIAlzdGF0dXMgPSB2ZXJpZnlfc2lnbmVkX2J1ZmZlcihwYXlsb2FkLmJ1ZiwgcGF5bG9hZC5sZW4sCiAJCQkJICAgICAgc2lnbmF0dXJlLmJ1Ziwgc2lnbmF0dXJlLmxlbiwKLQkJCQkgICAgICAmZ3BnX291dHB1dCk7CisJCQkJICAgICAgJmdwZ19vdXRwdXQsIE5VTEwpOwogCWlmIChzdGF0dXMgJiYgIWdwZ19vdXRwdXQubGVuKQogCQlzdHJidWZfYWRkc3RyKCZncGdfb3V0cHV0LCAiTm8gc2lnbmF0dXJlXG4iKTsKIApAQCAtNDk4LDIwICs0NDMsMTcgQEAKIAlncGdfbWVzc2FnZV9vZmZzZXQgPSB2ZXJpZnlfbWVzc2FnZS5sZW47CiAKIAlwYXlsb2FkX3NpemUgPSBwYXJzZV9zaWduYXR1cmUoZXh0cmEtPnZhbHVlLCBleHRyYS0+bGVuKTsKLQlpZiAoKGV4dHJhLT5sZW4gPD0gcGF5bG9hZF9zaXplKSB8fAotCSAgICAodmVyaWZ5X3NpZ25lZF9idWZmZXIoZXh0cmEtPnZhbHVlLCBwYXlsb2FkX3NpemUsCi0JCQkJICBleHRyYS0+dmFsdWUgKyBwYXlsb2FkX3NpemUsCi0JCQkJICBleHRyYS0+bGVuIC0gcGF5bG9hZF9zaXplLAotCQkJCSAgJnZlcmlmeV9tZXNzYWdlKSAmJgotCSAgICAgdmVyaWZ5X21lc3NhZ2UubGVuIDw9IGdwZ19tZXNzYWdlX29mZnNldCkpIHsKLQkJc3RyYnVmX2FkZHN0cigmdmVyaWZ5X21lc3NhZ2UsICJObyBzaWduYXR1cmVcbiIpOwotCQlzdGF0dXMgPSAtMTsKLQl9Ci0JZWxzZSBpZiAoc3Ryc3RyKHZlcmlmeV9tZXNzYWdlLmJ1ZiArIGdwZ19tZXNzYWdlX29mZnNldCwKLQkJCSI6IEdvb2Qgc2lnbmF0dXJlIGZyb20gIikpCi0JCXN0YXR1cyA9IDA7Ci0JZWxzZQotCQlzdGF0dXMgPSAtMTsKKwlzdGF0dXMgPSAtMTsKKwlpZiAoZXh0cmEtPmxlbiA+IHBheWxvYWRfc2l6ZSkKKwkJaWYgKHZlcmlmeV9zaWduZWRfYnVmZmVyKGV4dHJhLT52YWx1ZSwgcGF5bG9hZF9zaXplLAorCQkJCQkgZXh0cmEtPnZhbHVlICsgcGF5bG9hZF9zaXplLAorCQkJCQkgZXh0cmEtPmxlbiAtIHBheWxvYWRfc2l6ZSwKKwkJCQkJICZ2ZXJpZnlfbWVzc2FnZSwgTlVMTCkpIHsKKwkJCWlmICh2ZXJpZnlfbWVzc2FnZS5sZW4gPD0gZ3BnX21lc3NhZ2Vfb2Zmc2V0KQorCQkJCXN0cmJ1Zl9hZGRzdHIoJnZlcmlmeV9tZXNzYWdlLCAiTm8gc2lnbmF0dXJlXG4iKTsKKwkJCWVsc2UKKwkJCQlzdGF0dXMgPSAwOworCQl9CiAKIAlzaG93X3NpZ19saW5lcyhvcHQsIHN0YXR1cywgdmVyaWZ5X21lc3NhZ2UuYnVmKTsKIAlzdHJidWZfcmVsZWFzZSgmdmVyaWZ5X21lc3NhZ2UpOwpAQCAtNjE1LDggKzU1Nyw4IEBACiAJCQlwcmludGYoIiAoZnJvbSAlcykiLAogCQkJICAgICAgIGZpbmRfdW5pcXVlX2FiYnJldihwYXJlbnQtPm9iamVjdC5zaGExLAogCQkJCQkJICBhYmJyZXZfY29tbWl0KSk7CisJCWZwdXRzKGRpZmZfZ2V0X2NvbG9yX29wdCgmb3B0LT5kaWZmb3B0LCBESUZGX1JFU0VUKSwgc3Rkb3V0KTsKIAkJc2hvd19kZWNvcmF0aW9ucyhvcHQsIGNvbW1pdCk7Ci0JCXByaW50ZigiJXMiLCBkaWZmX2dldF9jb2xvcl9vcHQoJm9wdC0+ZGlmZm9wdCwgRElGRl9SRVNFVCkpOwogCQlpZiAob3B0LT5jb21taXRfZm9ybWF0ID09IENNSVRfRk1UX09ORUxJTkUpIHsKIAkJCXB1dGNoYXIoJyAnKTsKIAkJfSBlbHNlIHsKQEAgLTY2Miw4ICs2MDQsMTAgQEAKIAkvKgogCSAqIEFuZCB0aGVuIHRoZSBwcmV0dHktcHJpbnRlZCBtZXNzYWdlIGl0c2VsZgogCSAqLwotCWlmIChjdHgubmVlZF84Yml0X2N0ZSA+PSAwKQotCQljdHgubmVlZF84Yml0X2N0ZSA9IGhhc19ub25fYXNjaWkob3B0LT5hZGRfc2lnbm9mZik7CisJaWYgKGN0eC5uZWVkXzhiaXRfY3RlID49IDAgJiYgb3B0LT5hZGRfc2lnbm9mZikKKwkJY3R4Lm5lZWRfOGJpdF9jdGUgPQorCQkJaGFzX25vbl9hc2NpaShmbXRfbmFtZShnZXRlbnYoIkdJVF9DT01NSVRURVJfTkFNRSIpLAorCQkJCQkgICAgICAgZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX0VNQUlMIikpKTsKIAljdHguZGF0ZV9tb2RlID0gb3B0LT5kYXRlX21vZGU7CiAJY3R4LmRhdGVfbW9kZV9leHBsaWNpdCA9IG9wdC0+ZGF0ZV9tb2RlX2V4cGxpY2l0OwogCWN0eC5hYmJyZXYgPSBvcHQtPmRpZmZvcHQuYWJicmV2OwpAQCAtNjcxLDEwICs2MTUsMTIgQEAKIAljdHgucHJlc2VydmVfc3ViamVjdCA9IG9wdC0+cHJlc2VydmVfc3ViamVjdDsKIAljdHgucmVmbG9nX2luZm8gPSBvcHQtPnJlZmxvZ19pbmZvOwogCWN0eC5mbXQgPSBvcHQtPmNvbW1pdF9mb3JtYXQ7CisJY3R4Lm1haWxtYXAgPSBvcHQtPm1haWxtYXA7CisJY3R4LmNvbG9yID0gb3B0LT5kaWZmb3B0LnVzZV9jb2xvcjsKIAlwcmV0dHlfcHJpbnRfY29tbWl0KCZjdHgsIGNvbW1pdCwgJm1zZ2J1Zik7CiAKIAlpZiAob3B0LT5hZGRfc2lnbm9mZikKLQkJYXBwZW5kX3NpZ25vZmYoJm1zZ2J1Ziwgb3B0LT5hZGRfc2lnbm9mZik7CisJCWFwcGVuZF9zaWdub2ZmKCZtc2didWYsIDAsIEFQUEVORF9TSUdOT0ZGX0RFRFVQKTsKIAogCWlmICgoY3R4LmZtdCAhPSBDTUlUX0ZNVF9VU0VSRk9STUFUKSAmJgogCSAgICBjdHgubm90ZXNfbWVzc2FnZSAmJiAqY3R4Lm5vdGVzX21lc3NhZ2UpIHsKQEAgLTc4MCwxMSArNzI2LDE0IEBACiB7CiAJaW50IHNob3dlZF9sb2c7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzOwotCXVuc2lnbmVkIGNvbnN0IGNoYXIgKnNoYTEgPSBjb21taXQtPm9iamVjdC5zaGExOworCXVuc2lnbmVkIGNvbnN0IGNoYXIgKnNoYTE7CiAKIAlpZiAoIW9wdC0+ZGlmZiAmJiAhRElGRl9PUFRfVFNUKCZvcHQtPmRpZmZvcHQsIEVYSVRfV0lUSF9TVEFUVVMpKQogCQlyZXR1cm4gMDsKIAorCXBhcnNlX2NvbW1pdChjb21taXQpOworCXNoYTEgPSBjb21taXQtPnRyZWUtPm9iamVjdC5zaGExOworCiAJLyogUm9vdCBjb21taXQ/ICovCiAJcGFyZW50cyA9IGNvbW1pdC0+cGFyZW50czsKIAlpZiAoIXBhcmVudHMpIHsKQEAgLTgwNyw3ICs3NTYsOSBAQAogCQkJICogcGFyZW50LCBzaG93aW5nIHN1bW1hcnkgZGlmZiBvZiB0aGUgb3RoZXJzCiAJCQkgKiB3ZSBtZXJnZWQgX2luXy4KIAkJCSAqLwotCQkJZGlmZl90cmVlX3NoYTEocGFyZW50cy0+aXRlbS0+b2JqZWN0LnNoYTEsIHNoYTEsICIiLCAmb3B0LT5kaWZmb3B0KTsKKwkJCXBhcnNlX2NvbW1pdChwYXJlbnRzLT5pdGVtKTsKKwkJCWRpZmZfdHJlZV9zaGExKHBhcmVudHMtPml0ZW0tPnRyZWUtPm9iamVjdC5zaGExLAorCQkJCSAgICAgICBzaGExLCAiIiwgJm9wdC0+ZGlmZm9wdCk7CiAJCQlsb2dfdHJlZV9kaWZmX2ZsdXNoKG9wdCk7CiAJCQlyZXR1cm4gIW9wdC0+bG9naW5mbzsKIAkJfQpAQCAtODIwLDcgKzc3MSw5IEBACiAJZm9yICg7OykgewogCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBwYXJlbnRzLT5pdGVtOwogCi0JCWRpZmZfdHJlZV9zaGExKHBhcmVudC0+b2JqZWN0LnNoYTEsIHNoYTEsICIiLCAmb3B0LT5kaWZmb3B0KTsKKwkJcGFyc2VfY29tbWl0KHBhcmVudCk7CisJCWRpZmZfdHJlZV9zaGExKHBhcmVudC0+dHJlZS0+b2JqZWN0LnNoYTEsCisJCQkgICAgICAgc2hhMSwgIiIsICZvcHQtPmRpZmZvcHQpOwogCQlsb2dfdHJlZV9kaWZmX2ZsdXNoKG9wdCk7CiAKIAkJc2hvd2VkX2xvZyB8PSAhb3B0LT5sb2dpbmZvOwpAQCAtODQ0LDYgKzc5Nyw5IEBACiAJbG9nLnBhcmVudCA9IE5VTEw7CiAJb3B0LT5sb2dpbmZvID0gJmxvZzsKIAorCWlmIChvcHQtPmxpbmVfbGV2ZWxfdHJhdmVyc2UpCisJCXJldHVybiBsaW5lX2xvZ19wcmludChvcHQsIGNvbW1pdCk7CisKIAlzaG93biA9IGxvZ190cmVlX2RpZmYob3B0LCBjb21taXQsICZsb2cpOwogCWlmICghc2hvd24gJiYgb3B0LT5sb2dpbmZvICYmIG9wdC0+YWx3YXlzX3Nob3dfaGVhZGVyKSB7CiAJCWxvZy5wYXJlbnQgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvbG9nLXRyZWUuaCBiL2xvZy10cmVlLmgKaW5kZXggZjVhYzIzOC4uZDZlY2Q0ZCAxMDA2NDQKLS0tIGEvbG9nLXRyZWUuaAorKysgYi9sb2ctdHJlZS5oCkBAIC0xMyw2ICsxMyw3IEBACiBpbnQgbG9nX3RyZWVfY29tbWl0KHN0cnVjdCByZXZfaW5mbyAqLCBzdHJ1Y3QgY29tbWl0ICopOwogaW50IGxvZ190cmVlX29wdF9wYXJzZShzdHJ1Y3QgcmV2X2luZm8gKiwgY29uc3QgY2hhciAqKiwgaW50KTsKIHZvaWQgc2hvd19sb2coc3RydWN0IHJldl9pbmZvICpvcHQpOwordm9pZCBmb3JtYXRfZGVjb3JhdGlvbnMoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwgaW50IHVzZV9jb2xvcik7CiB2b2lkIHNob3dfZGVjb3JhdGlvbnMoc3RydWN0IHJldl9pbmZvICpvcHQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiB2b2lkIGxvZ193cml0ZV9lbWFpbF9oZWFkZXJzKHN0cnVjdCByZXZfaW5mbyAqb3B0LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCiAJCQkgICAgIGNvbnN0IGNoYXIgKipzdWJqZWN0X3AsCkBAIC0yMSw3ICsyMiw3IEBACiB2b2lkIGxvYWRfcmVmX2RlY29yYXRpb25zKGludCBmbGFncyk7CiAKICNkZWZpbmUgRk9STUFUX1BBVENIX05BTUVfTUFYIDY0Ci12b2lkIGdldF9wYXRjaF9maWxlbmFtZShzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKnN1YmplY3QsIGludCBuciwKLQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCwgc3RydWN0IHN0cmJ1ZiAqYnVmKTsKK3ZvaWQgZm10X291dHB1dF9jb21taXQoc3RydWN0IHN0cmJ1ZiAqLCBzdHJ1Y3QgY29tbWl0ICosIHN0cnVjdCByZXZfaW5mbyAqKTsKK3ZvaWQgZm10X291dHB1dF9zdWJqZWN0KHN0cnVjdCBzdHJidWYgKiwgY29uc3QgY2hhciAqc3ViamVjdCwgc3RydWN0IHJldl9pbmZvICopOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL21haWxtYXAuYyBiL21haWxtYXAuYwppbmRleCBlYTRiNDcxLi4yYTdiMzY2IDEwMDY0NAotLS0gYS9tYWlsbWFwLmMKKysrIGIvbWFpbG1hcC5jCkBAIC0xMCw2ICsxMCw3IEBACiAjZW5kaWYKIAogY29uc3QgY2hhciAqZ2l0X21haWxtYXBfZmlsZTsKK2NvbnN0IGNoYXIgKmdpdF9tYWlsbWFwX2Jsb2I7CiAKIHN0cnVjdCBtYWlsbWFwX2luZm8gewogCWNoYXIgKm5hbWU7CkBAIC0xMjksNTQgKzEzMCwxMjAgQEAKIAlyZXR1cm4gKCpyaWdodCA9PSAnXDAnID8gTlVMTCA6IHJpZ2h0KTsKIH0KIAotc3RhdGljIGludCByZWFkX3NpbmdsZV9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqKnJlcG9fYWJicmV2KQorc3RhdGljIHZvaWQgcmVhZF9tYWlsbWFwX2xpbmUoc3RydWN0IHN0cmluZ19saXN0ICptYXAsIGNoYXIgKmJ1ZmZlciwKKwkJCSAgICAgIGNoYXIgKipyZXBvX2FiYnJldikKK3sKKwljaGFyICpuYW1lMSA9IE5VTEwsICplbWFpbDEgPSBOVUxMLCAqbmFtZTIgPSBOVUxMLCAqZW1haWwyID0gTlVMTDsKKwlpZiAoYnVmZmVyWzBdID09ICcjJykgeworCQlzdGF0aWMgY29uc3QgY2hhciBhYmJyZXZbXSA9ICIjIHJlcG8tYWJicmV2OiI7CisJCWludCBhYmJsZW4gPSBzaXplb2YoYWJicmV2KSAtIDE7CisJCWludCBsZW4gPSBzdHJsZW4oYnVmZmVyKTsKKworCQlpZiAoIXJlcG9fYWJicmV2KQorCQkJcmV0dXJuOworCisJCWlmIChsZW4gJiYgYnVmZmVyW2xlbiAtIDFdID09ICdcbicpCisJCQlidWZmZXJbLS1sZW5dID0gMDsKKwkJaWYgKCFzdHJuY21wKGJ1ZmZlciwgYWJicmV2LCBhYmJsZW4pKSB7CisJCQljaGFyICpjcDsKKworCQkJaWYgKHJlcG9fYWJicmV2KQorCQkJCWZyZWUoKnJlcG9fYWJicmV2KTsKKwkJCSpyZXBvX2FiYnJldiA9IHhtYWxsb2MobGVuKTsKKworCQkJZm9yIChjcCA9IGJ1ZmZlciArIGFiYmxlbjsgaXNzcGFjZSgqY3ApOyBjcCsrKQorCQkJCTsgLyogbm90aGluZyAqLworCQkJc3RyY3B5KCpyZXBvX2FiYnJldiwgY3ApOworCQl9CisJCXJldHVybjsKKwl9CisJaWYgKChuYW1lMiA9IHBhcnNlX25hbWVfYW5kX2VtYWlsKGJ1ZmZlciwgJm5hbWUxLCAmZW1haWwxLCAwKSkgIT0gTlVMTCkKKwkJcGFyc2VfbmFtZV9hbmRfZW1haWwobmFtZTIsICZuYW1lMiwgJmVtYWlsMiwgMSk7CisKKwlpZiAoZW1haWwxKQorCQlhZGRfbWFwcGluZyhtYXAsIG5hbWUxLCBlbWFpbDEsIG5hbWUyLCBlbWFpbDIpOworfQorCitzdGF0aWMgaW50IHJlYWRfbWFpbG1hcF9maWxlKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJCSAgICAgY2hhciAqKnJlcG9fYWJicmV2KQogewogCWNoYXIgYnVmZmVyWzEwMjRdOwotCUZJTEUgKmYgPSAoZmlsZW5hbWUgPT0gTlVMTCA/IE5VTEwgOiBmb3BlbihmaWxlbmFtZSwgInIiKSk7CisJRklMRSAqZjsKIAotCWlmIChmID09IE5VTEwpCi0JCXJldHVybiAxOwotCXdoaWxlIChmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmKSAhPSBOVUxMKSB7Ci0JCWNoYXIgKm5hbWUxID0gTlVMTCwgKmVtYWlsMSA9IE5VTEwsICpuYW1lMiA9IE5VTEwsICplbWFpbDIgPSBOVUxMOwotCQlpZiAoYnVmZmVyWzBdID09ICcjJykgewotCQkJc3RhdGljIGNvbnN0IGNoYXIgYWJicmV2W10gPSAiIyByZXBvLWFiYnJldjoiOwotCQkJaW50IGFiYmxlbiA9IHNpemVvZihhYmJyZXYpIC0gMTsKLQkJCWludCBsZW4gPSBzdHJsZW4oYnVmZmVyKTsKKwlpZiAoIWZpbGVuYW1lKQorCQlyZXR1cm4gMDsKIAotCQkJaWYgKCFyZXBvX2FiYnJldikKLQkJCQljb250aW51ZTsKLQotCQkJaWYgKGxlbiAmJiBidWZmZXJbbGVuIC0gMV0gPT0gJ1xuJykKLQkJCQlidWZmZXJbLS1sZW5dID0gMDsKLQkJCWlmICghc3RybmNtcChidWZmZXIsIGFiYnJldiwgYWJibGVuKSkgewotCQkJCWNoYXIgKmNwOwotCi0JCQkJaWYgKHJlcG9fYWJicmV2KQotCQkJCQlmcmVlKCpyZXBvX2FiYnJldik7Ci0JCQkJKnJlcG9fYWJicmV2ID0geG1hbGxvYyhsZW4pOwotCi0JCQkJZm9yIChjcCA9IGJ1ZmZlciArIGFiYmxlbjsgaXNzcGFjZSgqY3ApOyBjcCsrKQotCQkJCQk7IC8qIG5vdGhpbmcgKi8KLQkJCQlzdHJjcHkoKnJlcG9fYWJicmV2LCBjcCk7Ci0JCQl9Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAoKG5hbWUyID0gcGFyc2VfbmFtZV9hbmRfZW1haWwoYnVmZmVyLCAmbmFtZTEsICZlbWFpbDEsIDApKSAhPSBOVUxMKQotCQkJcGFyc2VfbmFtZV9hbmRfZW1haWwobmFtZTIsICZuYW1lMiwgJmVtYWlsMiwgMSk7Ci0KLQkJaWYgKGVtYWlsMSkKLQkJCWFkZF9tYXBwaW5nKG1hcCwgbmFtZTEsIGVtYWlsMSwgbmFtZTIsIGVtYWlsMik7CisJZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCWlmICghZikgeworCQlpZiAoZXJybm8gPT0gRU5PRU5UKQorCQkJcmV0dXJuIDA7CisJCXJldHVybiBlcnJvcigidW5hYmxlIHRvIG9wZW4gbWFpbG1hcCBhdCAlczogJXMiLAorCQkJICAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKIAl9CisKKwl3aGlsZSAoZmdldHMoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZikgIT0gTlVMTCkKKwkJcmVhZF9tYWlsbWFwX2xpbmUobWFwLCBidWZmZXIsIHJlcG9fYWJicmV2KTsKIAlmY2xvc2UoZik7CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHJlYWRfbWFpbG1hcF9idWYoc3RydWN0IHN0cmluZ19saXN0ICptYXAsCisJCQkgICAgIGNvbnN0IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyBsZW4sCisJCQkgICAgIGNoYXIgKipyZXBvX2FiYnJldikKK3sKKwl3aGlsZSAobGVuKSB7CisJCWNvbnN0IGNoYXIgKmVuZCA9IHN0cmNocm51bChidWYsICdcbicpOworCQl1bnNpZ25lZCBsb25nIGxpbmVsZW4gPSBlbmQgLSBidWYgKyAxOworCQljaGFyICpsaW5lID0geG1lbWR1cHooYnVmLCBsaW5lbGVuKTsKKworCQlyZWFkX21haWxtYXBfbGluZShtYXAsIGxpbmUsIHJlcG9fYWJicmV2KTsKKworCQlmcmVlKGxpbmUpOworCQlidWYgKz0gbGluZWxlbjsKKwkJbGVuIC09IGxpbmVsZW47CisJfQorfQorCitzdGF0aWMgaW50IHJlYWRfbWFpbG1hcF9ibG9iKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLAorCQkJICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJICAgICBjaGFyICoqcmVwb19hYmJyZXYpCit7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwljaGFyICpidWY7CisJdW5zaWduZWQgbG9uZyBzaXplOworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKworCWlmICghbmFtZSkKKwkJcmV0dXJuIDA7CisJaWYgKGdldF9zaGExKG5hbWUsIHNoYTEpIDwgMCkKKwkJcmV0dXJuIDA7CisKKwlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOworCWlmICghYnVmKQorCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byByZWFkIG1haWxtYXAgb2JqZWN0IGF0ICVzIiwgbmFtZSk7CisJaWYgKHR5cGUgIT0gT0JKX0JMT0IpCisJCXJldHVybiBlcnJvcigibWFpbG1hcCBpcyBub3QgYSBibG9iOiAlcyIsIG5hbWUpOworCisJcmVhZF9tYWlsbWFwX2J1ZihtYXAsIGJ1Ziwgc2l6ZSwgcmVwb19hYmJyZXYpOworCisJZnJlZShidWYpOworCXJldHVybiAwOworfQorCiBpbnQgcmVhZF9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjaGFyICoqcmVwb19hYmJyZXYpCiB7CisJaW50IGVyciA9IDA7CisKIAltYXAtPnN0cmR1cF9zdHJpbmdzID0gMTsKLQkvKiBlYWNoIGZhaWx1cmUgcmV0dXJucyAxLCBzbyA+MSBtZWFucyBib3RoIGNhbGxzIGZhaWxlZCAqLwotCXJldHVybiByZWFkX3NpbmdsZV9tYWlsbWFwKG1hcCwgIi5tYWlsbWFwIiwgcmVwb19hYmJyZXYpICsKLQkgICAgICAgcmVhZF9zaW5nbGVfbWFpbG1hcChtYXAsIGdpdF9tYWlsbWFwX2ZpbGUsIHJlcG9fYWJicmV2KSA+IDE7CisJbWFwLT5jbXAgPSBzdHJjYXNlY21wOworCisJaWYgKCFnaXRfbWFpbG1hcF9ibG9iICYmIGlzX2JhcmVfcmVwb3NpdG9yeSgpKQorCQlnaXRfbWFpbG1hcF9ibG9iID0gIkhFQUQ6Lm1haWxtYXAiOworCisJZXJyIHw9IHJlYWRfbWFpbG1hcF9maWxlKG1hcCwgIi5tYWlsbWFwIiwgcmVwb19hYmJyZXYpOworCWVyciB8PSByZWFkX21haWxtYXBfYmxvYihtYXAsIGdpdF9tYWlsbWFwX2Jsb2IsIHJlcG9fYWJicmV2KTsKKwllcnIgfD0gcmVhZF9tYWlsbWFwX2ZpbGUobWFwLCBnaXRfbWFpbG1hcF9maWxlLCByZXBvX2FiYnJldik7CisJcmV0dXJuIGVycjsKIH0KIAogdm9pZCBjbGVhcl9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwKQpAQCAtMTg3LDYwICsyNTQsOTUgQEAKIAlkZWJ1Z19tbSgibWFpbG1hcDogY2xlYXJlZFxuIik7CiB9CiAKLWludCBtYXBfdXNlcihzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1hcCwKLQkgICAgIGNoYXIgKmVtYWlsLCBpbnQgbWF4bGVuX2VtYWlsLCBjaGFyICpuYW1lLCBpbnQgbWF4bGVuX25hbWUpCisvKgorICogTG9vayBmb3IgYW4gZW50cnkgaW4gbWFwIHRoYXQgbWF0Y2ggc3RyaW5nWzA6bGVuXTsgc3RyaW5nW2xlbl0KKyAqIGRvZXMgbm90IGhhdmUgdG8gYmUgTlVMIChidXQgaXQgY291bGQgYmUpLgorICovCitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKmxvb2t1cF9wcmVmaXgoc3RydWN0IHN0cmluZ19saXN0ICptYXAsCisJCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbikKIHsKLQljaGFyICplbmRfb2ZfZW1haWw7CisJaW50IGkgPSBzdHJpbmdfbGlzdF9maW5kX2luc2VydF9pbmRleChtYXAsIHN0cmluZywgMSk7CisJaWYgKGkgPCAwKSB7CisJCS8qIGV4YWN0IG1hdGNoICovCisJCWkgPSAtMSAtIGk7CisJCWlmICghc3RyaW5nW2xlbl0pCisJCQlyZXR1cm4gJm1hcC0+aXRlbXNbaV07CisJCS8qCisJCSAqIHRoYXQgbWFwIGVudHJ5IG1hdGNoZXMgZXhhY3RseSB0byB0aGUgc3RyaW5nLCBpbmNsdWRpbmcKKwkJICogdGhlIGNydWZ0IGF0IHRoZSBlbmQgYmV5b25kICJsZW4iLiAgVGhhdCBpcyBub3QgYSBtYXRjaAorCQkgKiB3aXRoIHN0cmluZ1swOmxlbl0gdGhhdCB3ZSBhcmUgbG9va2luZyBmb3IuCisJCSAqLworCX0gZWxzZSBpZiAoIXN0cmluZ1tsZW5dKSB7CisJCS8qCisJCSAqIGFza2VkIHdpdGggdGhlIHdob2xlIHN0cmluZywgYW5kIGdvdCBub3RoaW5nLiAgTm8KKwkJICogbWF0Y2hpbmcgZW50cnkgY2FuIGV4aXN0IGluIHRoZSBtYXAuCisJCSAqLworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKgorCSAqIGkgaXMgYXQgdGhlIGV4YWN0IG1hdGNoIHRvIGFuIG92ZXJsb25nIGtleSwgb3IgbG9jYXRpb24gdGhlCisJICogb3Zlcmxvbmcga2V5IHdvdWxkIGJlIGluc2VydGVkLCB3aGljaCBtdXN0IGNvbWUgYWZ0ZXIgdGhlCisJICogcmVhbCBsb2NhdGlvbiBvZiB0aGUga2V5IGlmIG9uZSBleGlzdHMuCisJICovCisJd2hpbGUgKDAgPD0gLS1pICYmIGkgPCBtYXAtPm5yKSB7CisJCWludCBjbXAgPSBzdHJuY2FzZWNtcChtYXAtPml0ZW1zW2ldLnN0cmluZywgc3RyaW5nLCBsZW4pOworCQlpZiAoY21wIDwgMCkKKwkJCS8qCisJCQkgKiAiaSIgcG9pbnRzIGF0IGEga2V5IGRlZmluaXRlbHkgYmVsb3cgdGhlIHByZWZpeDsKKwkJCSAqIHRoZSBtYXAgZG9lcyBub3QgaGF2ZSBzdHJpbmdbMDpsZW5dIGluIGl0LgorCQkJICovCisJCQlicmVhazsKKwkJZWxzZSBpZiAoIWNtcCAmJiAhbWFwLT5pdGVtc1tpXS5zdHJpbmdbbGVuXSkKKwkJCS8qIGZvdW5kIGl0ICovCisJCQlyZXR1cm4gJm1hcC0+aXRlbXNbaV07CisJCS8qCisJCSAqIG90aGVyd2lzZSwgdGhlIHN0cmluZyBhdCAiaSIgbWF5IGJlIHN0cmluZ1swOmxlbl0KKwkJICogZm9sbG93ZWQgYnkgYSBzdHJpbmcgdGhhdCBzb3J0cyBsYXRlciB0aGFuIHN0cmluZ1tsZW46XTsKKwkJICoga2VlcCB0cnlpbmcuCisJCSAqLworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworaW50IG1hcF91c2VyKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLAorCQkJIGNvbnN0IGNoYXIgKiplbWFpbCwgc2l6ZV90ICplbWFpbGxlbiwKKwkJCSBjb25zdCBjaGFyICoqbmFtZSwgc2l6ZV90ICpuYW1lbGVuKQorewogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCXN0cnVjdCBtYWlsbWFwX2VudHJ5ICptZTsKLQljaGFyIGJ1ZlsxMDI0XSwgKm1haWxidWY7Ci0JaW50IGk7CiAKLQkvKiBmaWd1cmUgb3V0IHNwYWNlIHJlcXVpcmVtZW50IGZvciBlbWFpbCAqLwotCWVuZF9vZl9lbWFpbCA9IHN0cmNocihlbWFpbCwgJz4nKTsKLQlpZiAoIWVuZF9vZl9lbWFpbCkgewotCQkvKiBlbWFpbCBwYXNzZWQgaW4gbWlnaHQgbm90IGJlIHdyYXBwZWQgaW4gPD4sIGJ1dCBlbmQgd2l0aCBhIFwwICovCi0JCWVuZF9vZl9lbWFpbCA9IG1lbWNocihlbWFpbCwgJ1wwJywgbWF4bGVuX2VtYWlsKTsKLQkJaWYgKCFlbmRfb2ZfZW1haWwpCi0JCQlyZXR1cm4gMDsKLQl9Ci0JaWYgKGVuZF9vZl9lbWFpbCAtIGVtYWlsICsgMSA8IHNpemVvZihidWYpKQotCQltYWlsYnVmID0gYnVmOwotCWVsc2UKLQkJbWFpbGJ1ZiA9IHhtYWxsb2MoZW5kX29mX2VtYWlsIC0gZW1haWwgKyAxKTsKKwlkZWJ1Z19tbSgibWFwX3VzZXI6IG1hcCAnJS4qcycgPCUuKnM+XG4iLAorCQkgKm5hbWUsICpuYW1lbGVuLCAqZW1haWxsZW4sICplbWFpbCk7CiAKLQkvKiBkb3duY2FzZSB0aGUgZW1haWwgYWRkcmVzcyAqLwotCWZvciAoaSA9IDA7IGkgPCBlbmRfb2ZfZW1haWwgLSBlbWFpbDsgaSsrKQotCQltYWlsYnVmW2ldID0gdG9sb3dlcihlbWFpbFtpXSk7Ci0JbWFpbGJ1ZltpXSA9IDA7Ci0KLQlkZWJ1Z19tbSgibWFwX3VzZXI6IG1hcCAnJXMnIDwlcz5cbiIsIG5hbWUsIG1haWxidWYpOwotCWl0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAobWFwLCBtYWlsYnVmKTsKKwlpdGVtID0gbG9va3VwX3ByZWZpeChtYXAsICplbWFpbCwgKmVtYWlsbGVuKTsKIAlpZiAoaXRlbSAhPSBOVUxMKSB7CiAJCW1lID0gKHN0cnVjdCBtYWlsbWFwX2VudHJ5ICopaXRlbS0+dXRpbDsKIAkJaWYgKG1lLT5uYW1lbWFwLm5yKSB7CiAJCQkvKiBUaGUgaXRlbSBoYXMgbXVsdGlwbGUgaXRlbXMsIHNvIHdlJ2xsIGxvb2sgdXAgb24gbmFtZSB0b28gKi8KIAkJCS8qIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCwgd2UgY2hvb3NlIHRoZSBzaW1wbGUgZW50cnkgICAgICAqLwotCQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnN1Yml0ZW0gPSBzdHJpbmdfbGlzdF9sb29rdXAoJm1lLT5uYW1lbWFwLCBuYW1lKTsKKwkJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpzdWJpdGVtOworCQkJc3ViaXRlbSA9IGxvb2t1cF9wcmVmaXgoJm1lLT5uYW1lbWFwLCAqbmFtZSwgKm5hbWVsZW4pOwogCQkJaWYgKHN1Yml0ZW0pCiAJCQkJaXRlbSA9IHN1Yml0ZW07CiAJCX0KIAl9Ci0JaWYgKG1haWxidWYgIT0gYnVmKQotCQlmcmVlKG1haWxidWYpOwogCWlmIChpdGVtICE9IE5VTEwpIHsKIAkJc3RydWN0IG1haWxtYXBfaW5mbyAqbWkgPSAoc3RydWN0IG1haWxtYXBfaW5mbyAqKWl0ZW0tPnV0aWw7Ci0JCWlmIChtaS0+bmFtZSA9PSBOVUxMICYmIChtaS0+ZW1haWwgPT0gTlVMTCB8fCBtYXhsZW5fZW1haWwgPT0gMCkpIHsKKwkJaWYgKG1pLT5uYW1lID09IE5VTEwgJiYgbWktPmVtYWlsID09IE5VTEwpIHsKIAkJCWRlYnVnX21tKCJtYXBfdXNlcjogIC0tIChubyBzaW1wbGUgbWFwcGluZylcbiIpOwogCQkJcmV0dXJuIDA7CiAJCX0KLQkJaWYgKG1heGxlbl9lbWFpbCAmJiBtaS0+ZW1haWwpCi0JCQlzdHJsY3B5KGVtYWlsLCBtaS0+ZW1haWwsIG1heGxlbl9lbWFpbCk7Ci0JCWVsc2UKLQkJCSplbmRfb2ZfZW1haWwgPSAnXDAnOwotCQlpZiAobWF4bGVuX25hbWUgJiYgbWktPm5hbWUpCi0JCQlzdHJsY3B5KG5hbWUsIG1pLT5uYW1lLCBtYXhsZW5fbmFtZSk7Ci0JCWRlYnVnX21tKCJtYXBfdXNlcjogIHRvICclcycgPCVzPlxuIiwgbmFtZSwgbWktPmVtYWlsID8gbWktPmVtYWlsIDogIiIpOworCQlpZiAobWktPmVtYWlsKSB7CisJCQkJKmVtYWlsID0gbWktPmVtYWlsOworCQkJCSplbWFpbGxlbiA9IHN0cmxlbigqZW1haWwpOworCQl9CisJCWlmIChtaS0+bmFtZSkgeworCQkJCSpuYW1lID0gbWktPm5hbWU7CisJCQkJKm5hbWVsZW4gPSBzdHJsZW4oKm5hbWUpOworCQl9CisJCWRlYnVnX21tKCJtYXBfdXNlcjogIHRvICclLipzJyA8Liolcz5cbiIsICpuYW1lbGVuLCAqbmFtZSwKKwkJCQkgKmVtYWlsbGVuLCAqZW1haWwpOwogCQlyZXR1cm4gMTsKIAl9CiAJZGVidWdfbW0oIm1hcF91c2VyOiAgLS1cbiIpOwpkaWZmIC0tZ2l0IGEvbWFpbG1hcC5oIGIvbWFpbG1hcC5oCmluZGV4IGQ1YzM2NjQuLmVkN2M5M2IgMTAwNjQ0Ci0tLSBhL21haWxtYXAuaAorKysgYi9tYWlsbWFwLmgKQEAgLTQsNyArNCw3IEBACiBpbnQgcmVhZF9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLCBjaGFyICoqcmVwb19hYmJyZXYpOwogdm9pZCBjbGVhcl9tYWlsbWFwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwKTsKIAotaW50IG1hcF91c2VyKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFpbG1hcCwKLQkgICAgIGNoYXIgKmVtYWlsLCBpbnQgbWF4bGVuX2VtYWlsLCBjaGFyICpuYW1lLCBpbnQgbWF4bGVuX25hbWUpOworaW50IG1hcF91c2VyKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWFwLAorCQkJIGNvbnN0IGNoYXIgKiplbWFpbCwgc2l6ZV90ICplbWFpbGxlbiwgY29uc3QgY2hhciAqKm5hbWUsIHNpemVfdCAqbmFtZWxlbik7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWF0Y2gtdHJlZXMuYyBiL21hdGNoLXRyZWVzLmMKaW5kZXggMjZmN2VkMS4uNzg3M2NkZSAxMDA2NDQKLS0tIGEvbWF0Y2gtdHJlZXMuYworKysgYi9tYXRjaC10cmVlcy5jCkBAIC00Nyw2ICs0NywyOSBAQAogCXJldHVybiBzY29yZTsKIH0KIAorc3RhdGljIHZvaWQgKmZpbGxfdHJlZV9kZXNjX3N0cmljdChzdHJ1Y3QgdHJlZV9kZXNjICpkZXNjLAorCQkJCSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhhc2gpCit7CisJdm9pZCAqYnVmZmVyOworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKwl1bnNpZ25lZCBsb25nIHNpemU7CisKKwlidWZmZXIgPSByZWFkX3NoYTFfZmlsZShoYXNoLCAmdHlwZSwgJnNpemUpOworCWlmICghYnVmZmVyKQorCQlkaWUoInVuYWJsZSB0byByZWFkIHRyZWUgKCVzKSIsIHNoYTFfdG9faGV4KGhhc2gpKTsKKwlpZiAodHlwZSAhPSBPQkpfVFJFRSkKKwkJZGllKCIlcyBpcyBub3QgYSB0cmVlIiwgc2hhMV90b19oZXgoaGFzaCkpOworCWluaXRfdHJlZV9kZXNjKGRlc2MsIGJ1ZmZlciwgc2l6ZSk7CisJcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RhdGljIGludCBiYXNlX25hbWVfZW50cmllc19jb21wYXJlKGNvbnN0IHN0cnVjdCBuYW1lX2VudHJ5ICphLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IG5hbWVfZW50cnkgKmIpCit7CisJcmV0dXJuIGJhc2VfbmFtZV9jb21wYXJlKGEtPnBhdGgsIHRyZWVfZW50cnlfbGVuKGEpLCBhLT5tb2RlLAorCQkJCSBiLT5wYXRoLCB0cmVlX2VudHJ5X2xlbihiKSwgYi0+bW9kZSk7Cit9CisKIC8qCiAgKiBJbnNwZWN0IHR3byB0cmVlcywgYW5kIGdpdmUgYSBzY29yZSB0aGF0IHRlbGxzIGhvdyBzaW1pbGFyIHRoZXkgYXJlLgogICovCkBAIC01NCw3MSArNzcsMzkgQEAKIHsKIAlzdHJ1Y3QgdHJlZV9kZXNjIG9uZTsKIAlzdHJ1Y3QgdHJlZV9kZXNjIHR3bzsKLQl2b2lkICpvbmVfYnVmLCAqdHdvX2J1ZjsKKwl2b2lkICpvbmVfYnVmID0gZmlsbF90cmVlX2Rlc2Nfc3RyaWN0KCZvbmUsIGhhc2gxKTsKKwl2b2lkICp0d29fYnVmID0gZmlsbF90cmVlX2Rlc2Nfc3RyaWN0KCZ0d28sIGhhc2gyKTsKIAlpbnQgc2NvcmUgPSAwOwotCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKLQl1bnNpZ25lZCBsb25nIHNpemU7CiAKLQlvbmVfYnVmID0gcmVhZF9zaGExX2ZpbGUoaGFzaDEsICZ0eXBlLCAmc2l6ZSk7Ci0JaWYgKCFvbmVfYnVmKQotCQlkaWUoInVuYWJsZSB0byByZWFkIHRyZWUgKCVzKSIsIHNoYTFfdG9faGV4KGhhc2gxKSk7Ci0JaWYgKHR5cGUgIT0gT0JKX1RSRUUpCi0JCWRpZSgiJXMgaXMgbm90IGEgdHJlZSIsIHNoYTFfdG9faGV4KGhhc2gxKSk7Ci0JaW5pdF90cmVlX2Rlc2MoJm9uZSwgb25lX2J1Ziwgc2l6ZSk7Ci0JdHdvX2J1ZiA9IHJlYWRfc2hhMV9maWxlKGhhc2gyLCAmdHlwZSwgJnNpemUpOwotCWlmICghdHdvX2J1ZikKLQkJZGllKCJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiLCBzaGExX3RvX2hleChoYXNoMikpOwotCWlmICh0eXBlICE9IE9CSl9UUkVFKQotCQlkaWUoIiVzIGlzIG5vdCBhIHRyZWUiLCBzaGExX3RvX2hleChoYXNoMikpOwotCWluaXRfdHJlZV9kZXNjKCZ0d28sIHR3b19idWYsIHNpemUpOwotCXdoaWxlIChvbmUuc2l6ZSB8IHR3by5zaXplKSB7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVsZW0xID0gZWxlbTE7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVsZW0yID0gZWxlbTI7Ci0JCWNvbnN0IGNoYXIgKnBhdGgxID0gcGF0aDE7Ci0JCWNvbnN0IGNoYXIgKnBhdGgyID0gcGF0aDI7Ci0JCXVuc2lnbmVkIG1vZGUxID0gbW9kZTE7Ci0JCXVuc2lnbmVkIG1vZGUyID0gbW9kZTI7CisJZm9yICg7OykgeworCQlzdHJ1Y3QgbmFtZV9lbnRyeSBlMSwgZTI7CisJCWludCBnb3RfZW50cnlfZnJvbV9vbmUgPSB0cmVlX2VudHJ5KCZvbmUsICZlMSk7CisJCWludCBnb3RfZW50cnlfZnJvbV90d28gPSB0cmVlX2VudHJ5KCZ0d28sICZlMik7CiAJCWludCBjbXA7CiAKLQkJaWYgKG9uZS5zaXplKQotCQkJZWxlbTEgPSB0cmVlX2VudHJ5X2V4dHJhY3QoJm9uZSwgJnBhdGgxLCAmbW9kZTEpOwotCQlpZiAodHdvLnNpemUpCi0JCQllbGVtMiA9IHRyZWVfZW50cnlfZXh0cmFjdCgmdHdvLCAmcGF0aDIsICZtb2RlMik7Ci0KLQkJaWYgKCFvbmUuc2l6ZSkgewotCQkJLyogdHdvIGhhcyBtb3JlIGVudHJpZXMgKi8KLQkJCXNjb3JlICs9IHNjb3JlX21pc3NpbmcobW9kZTIsIHBhdGgyKTsKLQkJCXVwZGF0ZV90cmVlX2VudHJ5KCZ0d28pOwotCQkJY29udGludWU7Ci0JCX0KLQkJaWYgKCF0d28uc2l6ZSkgeworCQlpZiAoZ290X2VudHJ5X2Zyb21fb25lICYmIGdvdF9lbnRyeV9mcm9tX3R3bykKKwkJCWNtcCA9IGJhc2VfbmFtZV9lbnRyaWVzX2NvbXBhcmUoJmUxLCAmZTIpOworCQllbHNlIGlmIChnb3RfZW50cnlfZnJvbV9vbmUpCiAJCQkvKiB0d28gbGFja3MgdGhpcyBlbnRyeSAqLwotCQkJc2NvcmUgKz0gc2NvcmVfbWlzc2luZyhtb2RlMSwgcGF0aDEpOwotCQkJdXBkYXRlX3RyZWVfZW50cnkoJm9uZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCQljbXAgPSBiYXNlX25hbWVfY29tcGFyZShwYXRoMSwgc3RybGVuKHBhdGgxKSwgbW9kZTEsCi0JCQkJCXBhdGgyLCBzdHJsZW4ocGF0aDIpLCBtb2RlMik7Ci0JCWlmIChjbXAgPCAwKSB7CisJCQljbXAgPSAtMTsKKwkJZWxzZSBpZiAoZ290X2VudHJ5X2Zyb21fdHdvKQorCQkJLyogdHdvIGhhcyBtb3JlIGVudHJpZXMgKi8KKwkJCWNtcCA9IDE7CisJCWVsc2UKKwkJCWJyZWFrOworCisJCWlmIChjbXAgPCAwKQogCQkJLyogcGF0aDEgZG9lcyBub3QgYXBwZWFyIGluIHR3byAqLwotCQkJc2NvcmUgKz0gc2NvcmVfbWlzc2luZyhtb2RlMSwgcGF0aDEpOwotCQkJdXBkYXRlX3RyZWVfZW50cnkoJm9uZSk7Ci0JCQljb250aW51ZTsKLQkJfQotCQllbHNlIGlmIChjbXAgPiAwKSB7CisJCQlzY29yZSArPSBzY29yZV9taXNzaW5nKGUxLm1vZGUsIGUxLnBhdGgpOworCQllbHNlIGlmIChjbXAgPiAwKQogCQkJLyogcGF0aDIgZG9lcyBub3QgYXBwZWFyIGluIG9uZSAqLwotCQkJc2NvcmUgKz0gc2NvcmVfbWlzc2luZyhtb2RlMiwgcGF0aDIpOwotCQkJdXBkYXRlX3RyZWVfZW50cnkoJnR3byk7Ci0JCQljb250aW51ZTsKLQkJfQotCQllbHNlIGlmIChoYXNoY21wKGVsZW0xLCBlbGVtMikpCisJCQlzY29yZSArPSBzY29yZV9taXNzaW5nKGUyLm1vZGUsIGUyLnBhdGgpOworCQllbHNlIGlmIChoYXNoY21wKGUxLnNoYTEsIGUyLnNoYTEpKQogCQkJLyogdGhleSBhcmUgZGlmZmVyZW50ICovCi0JCQlzY29yZSArPSBzY29yZV9kaWZmZXJzKG1vZGUxLCBtb2RlMiwgcGF0aDEpOworCQkJc2NvcmUgKz0gc2NvcmVfZGlmZmVycyhlMS5tb2RlLCBlMi5tb2RlLCBlMS5wYXRoKTsKIAkJZWxzZQogCQkJLyogc2FtZSBzdWJ0cmVlIG9yIGJsb2IgKi8KLQkJCXNjb3JlICs9IHNjb3JlX21hdGNoZXMobW9kZTEsIG1vZGUyLCBwYXRoMSk7Ci0JCXVwZGF0ZV90cmVlX2VudHJ5KCZvbmUpOwotCQl1cGRhdGVfdHJlZV9lbnRyeSgmdHdvKTsKKwkJCXNjb3JlICs9IHNjb3JlX21hdGNoZXMoZTEubW9kZSwgZTIubW9kZSwgZTEucGF0aCk7CiAJfQogCWZyZWUob25lX2J1Zik7CiAJZnJlZSh0d29fYnVmKTsKQEAgLTEzNiwxNiArMTI3LDcgQEAKIAkJCWludCByZWN1cnNlX2xpbWl0KQogewogCXN0cnVjdCB0cmVlX2Rlc2Mgb25lOwotCXZvaWQgKm9uZV9idWY7Ci0JZW51bSBvYmplY3RfdHlwZSB0eXBlOwotCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQotCW9uZV9idWYgPSByZWFkX3NoYTFfZmlsZShoYXNoMSwgJnR5cGUsICZzaXplKTsKLQlpZiAoIW9uZV9idWYpCi0JCWRpZSgidW5hYmxlIHRvIHJlYWQgdHJlZSAoJXMpIiwgc2hhMV90b19oZXgoaGFzaDEpKTsKLQlpZiAodHlwZSAhPSBPQkpfVFJFRSkKLQkJZGllKCIlcyBpcyBub3QgYSB0cmVlIiwgc2hhMV90b19oZXgoaGFzaDEpKTsKLQlpbml0X3RyZWVfZGVzYygmb25lLCBvbmVfYnVmLCBzaXplKTsKKwl2b2lkICpvbmVfYnVmID0gZmlsbF90cmVlX2Rlc2Nfc3RyaWN0KCZvbmUsIGhhc2gxKTsKIAogCXdoaWxlIChvbmUuc2l6ZSkgewogCQljb25zdCBjaGFyICpwYXRoOwpkaWZmIC0tZ2l0IGEvbWVyZ2UtcmVjdXJzaXZlLmMgYi9tZXJnZS1yZWN1cnNpdmUuYwppbmRleCAzM2JhNWRjLi5lYTlkYmQzIDEwMDY0NAotLS0gYS9tZXJnZS1yZWN1cnNpdmUuYworKysgYi9tZXJnZS1yZWN1cnNpdmUuYwpAQCAtMjA2OCw2ICsyMDY4LDE1IEBACiAJCW8tPnhkbF9vcHRzID0gRElGRl9XSVRIX0FMRyhvLCBQQVRJRU5DRV9ESUZGKTsKIAllbHNlIGlmICghc3RyY21wKHMsICJoaXN0b2dyYW0iKSkKIAkJby0+eGRsX29wdHMgPSBESUZGX1dJVEhfQUxHKG8sIEhJU1RPR1JBTV9ESUZGKTsKKwllbHNlIGlmICghc3RyY21wKHMsICJkaWZmLWFsZ29yaXRobT0iKSkgeworCQlsb25nIHZhbHVlID0gcGFyc2VfYWxnb3JpdGhtX3ZhbHVlKHMrMTUpOworCQlpZiAodmFsdWUgPCAwKQorCQkJcmV0dXJuIC0xOworCQkvKiBjbGVhciBvdXQgcHJldmlvdXMgc2V0dGluZ3MgKi8KKwkJRElGRl9YRExfQ0xSKG8sIE5FRURfTUlOSU1BTCk7CisJCW8tPnhkbF9vcHRzICY9IH5YREZfRElGRl9BTEdPUklUSE1fTUFTSzsKKwkJby0+eGRsX29wdHMgfD0gdmFsdWU7CisJfQogCWVsc2UgaWYgKCFzdHJjbXAocywgImlnbm9yZS1zcGFjZS1jaGFuZ2UiKSkKIAkJby0+eGRsX29wdHMgfD0gWERGX0lHTk9SRV9XSElURVNQQUNFX0NIQU5HRTsKIAllbHNlIGlmICghc3RyY21wKHMsICJpZ25vcmUtYWxsLXNwYWNlIikpCmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL2RlZmF1bHRzIGIvbWVyZ2V0b29scy9kZWZhdWx0cwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFlNjNlYy4uMDAwMDAwMAotLS0gYS9tZXJnZXRvb2xzL2RlZmF1bHRzCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyBSZWRlZmluZWQgYnkgYnVpbHRpbiB0b29scwotY2FuX21lcmdlICgpIHsKLQlyZXR1cm4gMAotfQotCi1jYW5fZGlmZiAoKSB7Ci0JcmV0dXJuIDAKLX0KLQotZGlmZl9jbWQgKCkgewotCXN0YXR1cz0xCi0JcmV0dXJuICRzdGF0dXMKLX0KLQotbWVyZ2VfY21kICgpIHsKLQlzdGF0dXM9MQotCXJldHVybiAkc3RhdHVzCi19Ci0KLXRyYW5zbGF0ZV9tZXJnZV90b29sX3BhdGggKCkgewotCWVjaG8gIiQxIgotfQpkaWZmIC0tZ2l0IGEvbWVyZ2V0b29scy9ndmltZGlmZiBiL21lcmdldG9vbHMvZ3ZpbWRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhNWJiMAotLS0gL2Rldi9udWxsCisrKyBiL21lcmdldG9vbHMvZ3ZpbWRpZmYKQEAgLTAsMCArMSBAQAorLiAiJE1FUkdFX1RPT0xTX0RJUi92aW1kaWZmIgpkaWZmIC0tZ2l0IGEvbWVyZ2V0b29scy9ndmltZGlmZjIgYi9tZXJnZXRvb2xzL2d2aW1kaWZmMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGE1YmIwCi0tLSAvZGV2L251bGwKKysrIGIvbWVyZ2V0b29scy9ndmltZGlmZjIKQEAgLTAsMCArMSBAQAorLiAiJE1FUkdFX1RPT0xTX0RJUi92aW1kaWZmIgpkaWZmIC0tZ2l0IGEvbWVyZ2V0b29scy9rZGlmZjMgYi9tZXJnZXRvb2xzL2tkaWZmMwppbmRleCAyOGZlYWQ0Li5hMzAwMzRmIDEwMDY0NAotLS0gYS9tZXJnZXRvb2xzL2tkaWZmMworKysgYi9tZXJnZXRvb2xzL2tkaWZmMwpAQCAtMSw1ICsxLDUgQEAKIGRpZmZfY21kICgpIHsKLQkiJG1lcmdlX3Rvb2xfcGF0aCIgLS1hdXRvIFwKKwkiJG1lcmdlX3Rvb2xfcGF0aCIgXAogCQktLUwxICIkTUVSR0VEIChBKSIgLS1MMiAiJE1FUkdFRCAoQikiIFwKIAkJIiRMT0NBTCIgIiRSRU1PVEUiID4vZGV2L251bGwgMj4mMQogfQpkaWZmIC0tZ2l0IGEvbWVyZ2V0b29scy9wNG1lcmdlIGIvbWVyZ2V0b29scy9wNG1lcmdlCmluZGV4IDhhMzY5MTYuLjVhNjA4YWIgMTAwNjQ0Ci0tLSBhL21lcmdldG9vbHMvcDRtZXJnZQorKysgYi9tZXJnZXRvb2xzL3A0bWVyZ2UKQEAgLTIxLDggKzIxLDEyIEBACiAKIG1lcmdlX2NtZCAoKSB7CiAJdG91Y2ggIiRCQUNLVVAiCi0JJGJhc2VfcHJlc2VudCB8fCA+IiRCQVNFIgotCSIkbWVyZ2VfdG9vbF9wYXRoIiAiJEJBU0UiICIkTE9DQUwiICIkUkVNT1RFIiAiJE1FUkdFRCIKKwlpZiAhICRiYXNlX3ByZXNlbnQKKwl0aGVuCisJCWNwIC0tICIkTE9DQUwiICIkQkFTRSIKKwkJY3JlYXRlX3ZpcnR1YWxfYmFzZSAiJEJBU0UiICIkUkVNT1RFIgorCWZpCisJIiRtZXJnZV90b29sX3BhdGgiICIkQkFTRSIgIiRSRU1PVEUiICIkTE9DQUwiICIkTUVSR0VEIgogCWNoZWNrX3VuY2hhbmdlZAogfQogCmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL3RvcnRvaXNlbWVyZ2UgYi9tZXJnZXRvb2xzL3RvcnRvaXNlbWVyZ2UKaW5kZXggZWQ3ZGI0OS4uM2I4OWYxYyAxMDA2NDQKLS0tIGEvbWVyZ2V0b29scy90b3J0b2lzZW1lcmdlCisrKyBiL21lcmdldG9vbHMvdG9ydG9pc2VtZXJnZQpAQCAtNiwxMiArNiwyOSBAQAogCWlmICRiYXNlX3ByZXNlbnQKIAl0aGVuCiAJCXRvdWNoICIkQkFDS1VQIgotCQkiJG1lcmdlX3Rvb2xfcGF0aCIgXAotCQkJLWJhc2U6IiRCQVNFIiAtbWluZToiJExPQ0FMIiBcCi0JCQktdGhlaXJzOiIkUkVNT1RFIiAtbWVyZ2VkOiIkTUVSR0VEIgorCQliYXNlbmFtZT0iJChiYXNlbmFtZSAiJG1lcmdlX3Rvb2xfcGF0aCIgLmV4ZSkiCisJCWlmIHRlc3QgIiRiYXNlbmFtZSIgPSAidG9ydG9pc2VnaXRtZXJnZSIKKwkJdGhlbgorCQkJIiRtZXJnZV90b29sX3BhdGgiIFwKKwkJCQktYmFzZSAiJEJBU0UiIC1taW5lICIkTE9DQUwiIFwKKwkJCQktdGhlaXJzICIkUkVNT1RFIiAtbWVyZ2VkICIkTUVSR0VEIgorCQllbHNlCisJCQkiJG1lcmdlX3Rvb2xfcGF0aCIgXAorCQkJCS1iYXNlOiIkQkFTRSIgLW1pbmU6IiRMT0NBTCIgXAorCQkJCS10aGVpcnM6IiRSRU1PVEUiIC1tZXJnZWQ6IiRNRVJHRUQiCisJCWZpCiAJCWNoZWNrX3VuY2hhbmdlZAogCWVsc2UKLQkJZWNobyAiVG9ydG9pc2VNZXJnZSBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGEgYmFzZSIgMT4mMgorCQllY2hvICIkbWVyZ2VfdG9vbF9wYXRoIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgYSBiYXNlIiAxPiYyCiAJCXJldHVybiAxCiAJZmkKIH0KKwordHJhbnNsYXRlX21lcmdlX3Rvb2xfcGF0aCgpIHsKKwlpZiB0eXBlIHRvcnRvaXNlZ2l0bWVyZ2UgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbAorCXRoZW4KKwkJZWNobyB0b3J0b2lzZWdpdG1lcmdlCisJZWxzZQorCQllY2hvIHRvcnRvaXNlbWVyZ2UKKwlmaQorfQpkaWZmIC0tZ2l0IGEvbWVyZ2V0b29scy92aW0gYi9tZXJnZXRvb2xzL3ZpbWRpZmYKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gbWVyZ2V0b29scy92aW0KcmVuYW1lIHRvIG1lcmdldG9vbHMvdmltZGlmZgppbmRleCA2MTk1OTRhLi4zOWQwMzI3IDEwMDY0NAotLS0gYS9tZXJnZXRvb2xzL3ZpbQorKysgYi9tZXJnZXRvb2xzL3ZpbWRpZmYKQEAgLTEsMTQgKzEsNiBAQAogZGlmZl9jbWQgKCkgewotCWNhc2UgIiQxIiBpbgotCWd2aW1kaWZmfHZpbWRpZmYpCi0JCSIkbWVyZ2VfdG9vbF9wYXRoIiAtUiAtZiAtZCBcCi0JCQktYyAnd2luY21kIGwnIC1jICdjZCAkR0lUX1BSRUZJWCcgIiRMT0NBTCIgIiRSRU1PVEUiCi0JCTs7Ci0JZ3ZpbWRpZmYyfHZpbWRpZmYyKQotCQkiJG1lcmdlX3Rvb2xfcGF0aCIgLVIgLWYgLWQgXAotCQkJLWMgJ3dpbmNtZCBsJyAtYyAnY2QgJEdJVF9QUkVGSVgnICIkTE9DQUwiICIkUkVNT1RFIgotCQk7OwotCWVzYWMKKwkiJG1lcmdlX3Rvb2xfcGF0aCIgLVIgLWYgLWQgXAorCQktYyAnd2luY21kIGwnIC1jICdjZCAkR0lUX1BSRUZJWCcgIiRMT0NBTCIgIiRSRU1PVEUiCiB9CiAKIG1lcmdlX2NtZCAoKSB7CmRpZmYgLS1naXQgYS9tZXJnZXRvb2xzL3ZpbWRpZmYyIGIvbWVyZ2V0b29scy92aW1kaWZmMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGE1YmIwCi0tLSAvZGV2L251bGwKKysrIGIvbWVyZ2V0b29scy92aW1kaWZmMgpAQCAtMCwwICsxIEBACisuICIkTUVSR0VfVE9PTFNfRElSL3ZpbWRpZmYiCmRpZmYgLS1naXQgYS9uYW1lLWhhc2guYyBiL25hbWUtaGFzaC5jCmluZGV4IDkxMjQxMzMuLjYxN2M4NmMgMTAwNjQ0Ci0tLSBhL25hbWUtaGFzaC5jCisrKyBiL25hbWUtaGFzaC5jCkBAIC0yNCwxMSArMjQsMTEgQEAKIHsKIAl1bnNpZ25lZCBpbnQgaGFzaCA9IDB4MTIzOwogCi0JZG8geworCXdoaWxlIChuYW1lbGVuLS0pIHsKIAkJdW5zaWduZWQgY2hhciBjID0gKm5hbWUrKzsKIAkJYyA9IGljYXNlX2hhc2goYyk7CiAJCWhhc2ggPSBoYXNoKjEwMSArIGM7Ci0JfSB3aGlsZSAoLS1uYW1lbGVuKTsKKwl9CiAJcmV0dXJuIGhhc2g7CiB9CiAKQEAgLTE1MCw2ICsxNTAsOCBAQAogCiAJaWYgKGlzdGF0ZS0+bmFtZV9oYXNoX2luaXRpYWxpemVkKQogCQlyZXR1cm47CisJaWYgKGlzdGF0ZS0+Y2FjaGVfbnIpCisJCXByZWFsbG9jYXRlX2hhc2goJmlzdGF0ZS0+bmFtZV9oYXNoLCBpc3RhdGUtPmNhY2hlX25yKTsKIAlmb3IgKG5yID0gMDsgbnIgPCBpc3RhdGUtPmNhY2hlX25yOyBucisrKQogCQloYXNoX2luZGV4X2VudHJ5KGlzdGF0ZSwgaXN0YXRlLT5jYWNoZVtucl0pOwogCWlzdGF0ZS0+bmFtZV9oYXNoX2luaXRpYWxpemVkID0gMTsKZGlmZiAtLWdpdCBhL25vdGVzLW1lcmdlLmMgYi9ub3Rlcy1tZXJnZS5jCmluZGV4IDBmNjdiZDMuLmFiMTg4NTcgMTAwNjQ0Ci0tLSBhL25vdGVzLW1lcmdlLmMKKysrIGIvbm90ZXMtbWVyZ2UuYwpAQCAtOSw2ICs5LDcgQEAKICNpbmNsdWRlICJub3Rlcy5oIgogI2luY2x1ZGUgIm5vdGVzLW1lcmdlLmgiCiAjaW5jbHVkZSAic3RyYnVmLmgiCisjaW5jbHVkZSAibm90ZXMtdXRpbHMuaCIKIAogc3RydWN0IG5vdGVzX21lcmdlX3BhaXIgewogCXVuc2lnbmVkIGNoYXIgb2JqWzIwXSwgYmFzZVsyMF0sIGxvY2FsWzIwXSwgcmVtb3RlWzIwXTsKQEAgLTUzMCwzMiArNTMxLDYgQEAKIAlyZXR1cm4gY29uZmxpY3RzID8gLTEgOiAxOwogfQogCi12b2lkIGNyZWF0ZV9ub3Rlc19jb21taXQoc3RydWN0IG5vdGVzX3RyZWUgKnQsIHN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywKLQkJCSBjb25zdCBzdHJ1Y3Qgc3RyYnVmICptc2csIHVuc2lnbmVkIGNoYXIgKnJlc3VsdF9zaGExKQotewotCXVuc2lnbmVkIGNoYXIgdHJlZV9zaGExWzIwXTsKLQotCWFzc2VydCh0LT5pbml0aWFsaXplZCk7Ci0KLQlpZiAod3JpdGVfbm90ZXNfdHJlZSh0LCB0cmVlX3NoYTEpKQotCQlkaWUoIkZhaWxlZCB0byB3cml0ZSBub3RlcyB0cmVlIHRvIGRhdGFiYXNlIik7Ci0KLQlpZiAoIXBhcmVudHMpIHsKLQkJLyogRGVkdWNlIHBhcmVudCBjb21taXQgZnJvbSB0LT5yZWYgKi8KLQkJdW5zaWduZWQgY2hhciBwYXJlbnRfc2hhMVsyMF07Ci0JCWlmICghcmVhZF9yZWYodC0+cmVmLCBwYXJlbnRfc2hhMSkpIHsKLQkJCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IGxvb2t1cF9jb21taXQocGFyZW50X3NoYTEpOwotCQkJaWYgKCFwYXJlbnQgfHwgcGFyc2VfY29tbWl0KHBhcmVudCkpCi0JCQkJZGllKCJGYWlsZWQgdG8gZmluZC9wYXJzZSBjb21taXQgJXMiLCB0LT5yZWYpOwotCQkJY29tbWl0X2xpc3RfaW5zZXJ0KHBhcmVudCwgJnBhcmVudHMpOwotCQl9Ci0JCS8qIGVsc2U6IHQtPnJlZiBwb2ludHMgdG8gbm90aGluZywgYXNzdW1lIHJvb3Qvb3JwaGFuIGNvbW1pdCAqLwotCX0KLQotCWlmIChjb21taXRfdHJlZShtc2csIHRyZWVfc2hhMSwgcGFyZW50cywgcmVzdWx0X3NoYTEsIE5VTEwsIE5VTEwpKQotCQlkaWUoIkZhaWxlZCB0byBjb21taXQgbm90ZXMgdHJlZSB0byBkYXRhYmFzZSIpOwotfQotCiBpbnQgbm90ZXNfbWVyZ2Uoc3RydWN0IG5vdGVzX21lcmdlX29wdGlvbnMgKm8sCiAJCXN0cnVjdCBub3Rlc190cmVlICpsb2NhbF90cmVlLAogCQl1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSkKZGlmZiAtLWdpdCBhL25vdGVzLW1lcmdlLmggYi9ub3Rlcy1tZXJnZS5oCmluZGV4IDBjMTFiMTcuLjFkMDFmNmEgMTAwNjQ0Ci0tLSBhL25vdGVzLW1lcmdlLmgKKysrIGIvbm90ZXMtbWVyZ2UuaApAQCAtMjYsMjAgKzI2LDYgQEAKIHZvaWQgaW5pdF9ub3Rlc19tZXJnZV9vcHRpb25zKHN0cnVjdCBub3Rlc19tZXJnZV9vcHRpb25zICpvKTsKIAogLyoKLSAqIENyZWF0ZSBuZXcgbm90ZXMgY29tbWl0IGZyb20gdGhlIGdpdmVuIG5vdGVzIHRyZWUKLSAqCi0gKiBQcm9wZXJ0aWVzIG9mIHRoZSBjcmVhdGVkIGNvbW1pdDoKLSAqIC0gdHJlZTogdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIHQgdG8gYSB0cmVlIG9iamVjdCB3aXRoIHdyaXRlX25vdGVzX3RyZWUoKS4KLSAqIC0gcGFyZW50czogdGhlIGdpdmVuIHBhcmVudHMgT1IgKGlmIE5VTEwpIHRoZSBjb21taXQgcmVmZXJlbmNlZCBieSB0LT5yZWYuCi0gKiAtIGF1dGhvci9jb21taXR0ZXI6IHRoZSBkZWZhdWx0IGRldGVybWluZWQgYnkgY29tbW1pdF90cmVlKCkuCi0gKiAtIGNvbW1pdCBtZXNzYWdlOiBtc2cKLSAqCi0gKiBUaGUgcmVzdWx0aW5nIGNvbW1pdCBTSEExIGlzIHN0b3JlZCBpbiByZXN1bHRfc2hhMS4KLSAqLwotdm9pZCBjcmVhdGVfbm90ZXNfY29tbWl0KHN0cnVjdCBub3Rlc190cmVlICp0LCBzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsCi0JCQkgY29uc3Qgc3RydWN0IHN0cmJ1ZiAqbXNnLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSk7Ci0KLS8qCiAgKiBNZXJnZSBub3RlcyBmcm9tIG8tPnJlbW90ZV9yZWYgaW50byBvLT5sb2NhbF9yZWYKICAqCiAgKiBUaGUgZ2l2ZW4gbm90ZXNfdHJlZSAnbG9jYWxfdHJlZScgbXVzdCBiZSB0aGUgbm90ZXNfdHJlZSByZWZlcmVuY2VkIGJ5IHRoZQpkaWZmIC0tZ2l0IGEvbm90ZXMtdXRpbHMuYyBiL25vdGVzLXV0aWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEwN2MzNwotLS0gL2Rldi9udWxsCisrKyBiL25vdGVzLXV0aWxzLmMKQEAgLTAsMCArMSwxNTcgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgImNvbW1pdC5oIgorI2luY2x1ZGUgInJlZnMuaCIKKyNpbmNsdWRlICJub3Rlcy11dGlscy5oIgorCit2b2lkIGNyZWF0ZV9ub3Rlc19jb21taXQoc3RydWN0IG5vdGVzX3RyZWUgKnQsIHN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywKKwkJCSBjb25zdCBzdHJ1Y3Qgc3RyYnVmICptc2csIHVuc2lnbmVkIGNoYXIgKnJlc3VsdF9zaGExKQoreworCXVuc2lnbmVkIGNoYXIgdHJlZV9zaGExWzIwXTsKKworCWFzc2VydCh0LT5pbml0aWFsaXplZCk7CisKKwlpZiAod3JpdGVfbm90ZXNfdHJlZSh0LCB0cmVlX3NoYTEpKQorCQlkaWUoIkZhaWxlZCB0byB3cml0ZSBub3RlcyB0cmVlIHRvIGRhdGFiYXNlIik7CisKKwlpZiAoIXBhcmVudHMpIHsKKwkJLyogRGVkdWNlIHBhcmVudCBjb21taXQgZnJvbSB0LT5yZWYgKi8KKwkJdW5zaWduZWQgY2hhciBwYXJlbnRfc2hhMVsyMF07CisJCWlmICghcmVhZF9yZWYodC0+cmVmLCBwYXJlbnRfc2hhMSkpIHsKKwkJCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IGxvb2t1cF9jb21taXQocGFyZW50X3NoYTEpOworCQkJaWYgKCFwYXJlbnQgfHwgcGFyc2VfY29tbWl0KHBhcmVudCkpCisJCQkJZGllKCJGYWlsZWQgdG8gZmluZC9wYXJzZSBjb21taXQgJXMiLCB0LT5yZWYpOworCQkJY29tbWl0X2xpc3RfaW5zZXJ0KHBhcmVudCwgJnBhcmVudHMpOworCQl9CisJCS8qIGVsc2U6IHQtPnJlZiBwb2ludHMgdG8gbm90aGluZywgYXNzdW1lIHJvb3Qvb3JwaGFuIGNvbW1pdCAqLworCX0KKworCWlmIChjb21taXRfdHJlZShtc2csIHRyZWVfc2hhMSwgcGFyZW50cywgcmVzdWx0X3NoYTEsIE5VTEwsIE5VTEwpKQorCQlkaWUoIkZhaWxlZCB0byBjb21taXQgbm90ZXMgdHJlZSB0byBkYXRhYmFzZSIpOworfQorCit2b2lkIGNvbW1pdF9ub3RlcyhzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgY29uc3QgY2hhciAqbXNnKQoreworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJdW5zaWduZWQgY2hhciBjb21taXRfc2hhMVsyMF07CisKKwlpZiAoIXQpCisJCXQgPSAmZGVmYXVsdF9ub3Rlc190cmVlOworCWlmICghdC0+aW5pdGlhbGl6ZWQgfHwgIXQtPnJlZiB8fCAhKnQtPnJlZikKKwkJZGllKF8oIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIpKTsKKwlpZiAoIXQtPmRpcnR5KQorCQlyZXR1cm47IC8qIGRvbid0IGhhdmUgdG8gY29tbWl0IGFuIHVuY2hhbmdlZCB0cmVlICovCisKKwkvKiBQcmVwYXJlIGNvbW1pdCBtZXNzYWdlIGFuZCByZWZsb2cgbWVzc2FnZSAqLworCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgbXNnKTsKKwlpZiAoYnVmLmJ1ZltidWYubGVuIC0gMV0gIT0gJ1xuJykKKwkJc3RyYnVmX2FkZGNoKCZidWYsICdcbicpOyAvKiBNYWtlIHN1cmUgbXNnIGVuZHMgd2l0aCBuZXdsaW5lICovCisKKwljcmVhdGVfbm90ZXNfY29tbWl0KHQsIE5VTEwsICZidWYsIGNvbW1pdF9zaGExKTsKKwlzdHJidWZfaW5zZXJ0KCZidWYsIDAsICJub3RlczogIiwgNyk7IC8qIGNvbW1pdCBtZXNzYWdlIHN0YXJ0cyBhdCBpbmRleCA3ICovCisJdXBkYXRlX3JlZihidWYuYnVmLCB0LT5yZWYsIGNvbW1pdF9zaGExLCBOVUxMLCAwLCBESUVfT05fRVJSKTsKKworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworfQorCitzdGF0aWMgY29tYmluZV9ub3Rlc19mbiBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKGNvbnN0IGNoYXIgKnYpCit7CisJaWYgKCFzdHJjYXNlY21wKHYsICJvdmVyd3JpdGUiKSkKKwkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfb3ZlcndyaXRlOworCWVsc2UgaWYgKCFzdHJjYXNlY21wKHYsICJpZ25vcmUiKSkKKwkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfaWdub3JlOworCWVsc2UgaWYgKCFzdHJjYXNlY21wKHYsICJjb25jYXRlbmF0ZSIpKQorCQlyZXR1cm4gY29tYmluZV9ub3Rlc19jb25jYXRlbmF0ZTsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2LCAiY2F0X3NvcnRfdW5pcSIpKQorCQlyZXR1cm4gY29tYmluZV9ub3Rlc19jYXRfc29ydF91bmlxOworCWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgbm90ZXNfcmV3cml0ZV9jb25maWcoY29uc3QgY2hhciAqaywgY29uc3QgY2hhciAqdiwgdm9pZCAqY2IpCit7CisJc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjID0gY2I7CisJaWYgKCFwcmVmaXhjbXAoaywgIm5vdGVzLnJld3JpdGUuIikgJiYgIXN0cmNtcChrKzE0LCBjLT5jbWQpKSB7CisJCWMtPmVuYWJsZWQgPSBnaXRfY29uZmlnX2Jvb2woaywgdik7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoIWMtPm1vZGVfZnJvbV9lbnYgJiYgIXN0cmNtcChrLCAibm90ZXMucmV3cml0ZW1vZGUiKSkgeworCQlpZiAoIXYpCisJCQljb25maWdfZXJyb3Jfbm9uYm9vbChrKTsKKwkJYy0+Y29tYmluZSA9IHBhcnNlX2NvbWJpbmVfbm90ZXNfZm4odik7CisJCWlmICghYy0+Y29tYmluZSkgeworCQkJZXJyb3IoXygiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIiksIHYpOworCQkJcmV0dXJuIDE7CisJCX0KKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmICghYy0+cmVmc19mcm9tX2VudiAmJiAhc3RyY21wKGssICJub3Rlcy5yZXdyaXRlcmVmIikpIHsKKwkJLyogbm90ZSB0aGF0IGEgcmVmcy8gcHJlZml4IGlzIGltcGxpZWQgaW4gdGhlCisJCSAqIHVuZGVybHlpbmcgZm9yX2VhY2hfZ2xvYl9yZWYgKi8KKwkJaWYgKCFwcmVmaXhjbXAodiwgInJlZnMvbm90ZXMvIikpCisJCQlzdHJpbmdfbGlzdF9hZGRfcmVmc19ieV9nbG9iKGMtPnJlZnMsIHYpOworCQllbHNlCisJCQl3YXJuaW5nKF8oIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMiCisJCQkJIiAob3V0c2lkZSBvZiByZWZzL25vdGVzLykiKSwgdik7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAwOworfQorCisKK3N0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqaW5pdF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGNvbnN0IGNoYXIgKmNtZCkKK3sKKwlzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcpKTsKKwljb25zdCBjaGFyICpyZXdyaXRlX21vZGVfZW52ID0gZ2V0ZW52KEdJVF9OT1RFU19SRVdSSVRFX01PREVfRU5WSVJPTk1FTlQpOworCWNvbnN0IGNoYXIgKnJld3JpdGVfcmVmc19lbnYgPSBnZXRlbnYoR0lUX05PVEVTX1JFV1JJVEVfUkVGX0VOVklST05NRU5UKTsKKwljLT5jbWQgPSBjbWQ7CisJYy0+ZW5hYmxlZCA9IDE7CisJYy0+Y29tYmluZSA9IGNvbWJpbmVfbm90ZXNfY29uY2F0ZW5hdGU7CisJYy0+cmVmcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOworCWMtPnJlZnMtPnN0cmR1cF9zdHJpbmdzID0gMTsKKwljLT5yZWZzX2Zyb21fZW52ID0gMDsKKwljLT5tb2RlX2Zyb21fZW52ID0gMDsKKwlpZiAocmV3cml0ZV9tb2RlX2VudikgeworCQljLT5tb2RlX2Zyb21fZW52ID0gMTsKKwkJYy0+Y29tYmluZSA9IHBhcnNlX2NvbWJpbmVfbm90ZXNfZm4ocmV3cml0ZV9tb2RlX2Vudik7CisJCWlmICghYy0+Y29tYmluZSkKKwkJCS8qIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCisJCQkgICBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUgKi8KKwkJCWVycm9yKF8oIkJhZCAlcyB2YWx1ZTogJyVzJyIpLCBHSVRfTk9URVNfUkVXUklURV9NT0RFX0VOVklST05NRU5ULAorCQkJCQlyZXdyaXRlX21vZGVfZW52KTsKKwl9CisJaWYgKHJld3JpdGVfcmVmc19lbnYpIHsKKwkJYy0+cmVmc19mcm9tX2VudiA9IDE7CisJCXN0cmluZ19saXN0X2FkZF9yZWZzX2Zyb21fY29sb25fc2VwKGMtPnJlZnMsIHJld3JpdGVfcmVmc19lbnYpOworCX0KKwlnaXRfY29uZmlnKG5vdGVzX3Jld3JpdGVfY29uZmlnLCBjKTsKKwlpZiAoIWMtPmVuYWJsZWQgfHwgIWMtPnJlZnMtPm5yKSB7CisJCXN0cmluZ19saXN0X2NsZWFyKGMtPnJlZnMsIDApOworCQlmcmVlKGMtPnJlZnMpOworCQlmcmVlKGMpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJYy0+dHJlZXMgPSBsb2FkX25vdGVzX3RyZWVzKGMtPnJlZnMpOworCXN0cmluZ19saXN0X2NsZWFyKGMtPnJlZnMsIDApOworCWZyZWUoYy0+cmVmcyk7CisJcmV0dXJuIGM7Cit9CisKK2ludCBjb3B5X25vdGVfZm9yX3Jld3JpdGUoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjLAorCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tX29iaiwgY29uc3QgdW5zaWduZWQgY2hhciAqdG9fb2JqKQoreworCWludCByZXQgPSAwOworCWludCBpOworCWZvciAoaSA9IDA7IGMtPnRyZWVzW2ldOyBpKyspCisJCXJldCA9IGNvcHlfbm90ZShjLT50cmVlc1tpXSwgZnJvbV9vYmosIHRvX29iaiwgMSwgYy0+Y29tYmluZSkgfHwgcmV0OworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgZmluaXNoX2NvcHlfbm90ZXNfZm9yX3Jld3JpdGUoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjLCBjb25zdCBjaGFyICptc2cpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgYy0+dHJlZXNbaV07IGkrKykgeworCQljb21taXRfbm90ZXMoYy0+dHJlZXNbaV0sIG1zZyk7CisJCWZyZWVfbm90ZXMoYy0+dHJlZXNbaV0pOworCX0KKwlmcmVlKGMtPnRyZWVzKTsKKwlmcmVlKGMpOworfQpkaWZmIC0tZ2l0IGEvbm90ZXMtdXRpbHMuaCBiL25vdGVzLXV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRjYjFiZgotLS0gL2Rldi9udWxsCisrKyBiL25vdGVzLXV0aWxzLmgKQEAgLTAsMCArMSwzNyBAQAorI2lmbmRlZiBOT1RFU19VVElMU19ICisjZGVmaW5lIE5PVEVTX1VUSUxTX0gKKworI2luY2x1ZGUgIm5vdGVzLmgiCisKKy8qCisgKiBDcmVhdGUgbmV3IG5vdGVzIGNvbW1pdCBmcm9tIHRoZSBnaXZlbiBub3RlcyB0cmVlCisgKgorICogUHJvcGVydGllcyBvZiB0aGUgY3JlYXRlZCBjb21taXQ6CisgKiAtIHRyZWU6IHRoZSByZXN1bHQgb2YgY29udmVydGluZyB0IHRvIGEgdHJlZSBvYmplY3Qgd2l0aCB3cml0ZV9ub3Rlc190cmVlKCkuCisgKiAtIHBhcmVudHM6IHRoZSBnaXZlbiBwYXJlbnRzIE9SIChpZiBOVUxMKSB0aGUgY29tbWl0IHJlZmVyZW5jZWQgYnkgdC0+cmVmLgorICogLSBhdXRob3IvY29tbWl0dGVyOiB0aGUgZGVmYXVsdCBkZXRlcm1pbmVkIGJ5IGNvbW1taXRfdHJlZSgpLgorICogLSBjb21taXQgbWVzc2FnZTogbXNnCisgKgorICogVGhlIHJlc3VsdGluZyBjb21taXQgU0hBMSBpcyBzdG9yZWQgaW4gcmVzdWx0X3NoYTEuCisgKi8KK3ZvaWQgY3JlYXRlX25vdGVzX2NvbW1pdChzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzLAorCQkJIGNvbnN0IHN0cnVjdCBzdHJidWYgKm1zZywgdW5zaWduZWQgY2hhciAqcmVzdWx0X3NoYTEpOworCit2b2lkIGNvbW1pdF9ub3RlcyhzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgY29uc3QgY2hhciAqbXNnKTsKKworc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnIHsKKwlzdHJ1Y3Qgbm90ZXNfdHJlZSAqKnRyZWVzOworCWNvbnN0IGNoYXIgKmNtZDsKKwlpbnQgZW5hYmxlZDsKKwljb21iaW5lX25vdGVzX2ZuIGNvbWJpbmU7CisJc3RydWN0IHN0cmluZ19saXN0ICpyZWZzOworCWludCByZWZzX2Zyb21fZW52OworCWludCBtb2RlX2Zyb21fZW52OworfTsKKworc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICppbml0X2NvcHlfbm90ZXNfZm9yX3Jld3JpdGUoY29uc3QgY2hhciAqY21kKTsKK2ludCBjb3B5X25vdGVfZm9yX3Jld3JpdGUoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjLAorCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tX29iaiwgY29uc3QgdW5zaWduZWQgY2hhciAqdG9fb2JqKTsKK3ZvaWQgZmluaXNoX2NvcHlfbm90ZXNfZm9yX3Jld3JpdGUoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjLCBjb25zdCBjaGFyICptc2cpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL25vdGVzLmMgYi9ub3Rlcy5jCmluZGV4IGY2M2ZkNTcuLmI2OWMwYjggMTAwNjQ0Ci0tLSBhL25vdGVzLmMKKysrIGIvbm90ZXMuYwpAQCAtOTE4LDE3ICs5MTgsMjEgQEAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHN0cmluZ19saXN0X2FkZF9vbmVfcmVmKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCitzdGF0aWMgaW50IHN0cmluZ19saXN0X2FkZF9vbmVfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCiAJCQkJICAgaW50IGZsYWcsIHZvaWQgKmNiKQogewogCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVmcyA9IGNiOwotCWlmICghdW5zb3J0ZWRfc3RyaW5nX2xpc3RfaGFzX3N0cmluZyhyZWZzLCBwYXRoKSkKLQkJc3RyaW5nX2xpc3RfYXBwZW5kKHJlZnMsIHBhdGgpOworCWlmICghdW5zb3J0ZWRfc3RyaW5nX2xpc3RfaGFzX3N0cmluZyhyZWZzLCByZWZuYW1lKSkKKwkJc3RyaW5nX2xpc3RfYXBwZW5kKHJlZnMsIHJlZm5hbWUpOwogCXJldHVybiAwOwogfQogCisvKgorICogVGhlIGxpc3QgYXJndW1lbnQgbXVzdCBoYXZlIHN0cmR1cF9zdHJpbmdzIHNldCBvbiBpdC4KKyAqLwogdm9pZCBzdHJpbmdfbGlzdF9hZGRfcmVmc19ieV9nbG9iKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY29uc3QgY2hhciAqZ2xvYikKIHsKKwlhc3NlcnQobGlzdC0+c3RyZHVwX3N0cmluZ3MpOwogCWlmIChoYXNfZ2xvYl9zcGVjaWFscyhnbG9iKSkgewogCQlmb3JfZWFjaF9nbG9iX3JlZihzdHJpbmdfbGlzdF9hZGRfb25lX3JlZiwgZ2xvYiwgbGlzdCk7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL29iamVjdC5jIGIvb2JqZWN0LmMKaW5kZXggMjA3MDNmNS4uY2JjNzMzMyAxMDA2NDQKLS0tIGEvb2JqZWN0LmMKKysrIGIvb2JqZWN0LmMKQEAgLTcxLDEzICs3MSwxMyBAQAogCiBzdHJ1Y3Qgb2JqZWN0ICpsb29rdXBfb2JqZWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7Ci0JdW5zaWduZWQgaW50IGk7CisJdW5zaWduZWQgaW50IGksIGZpcnN0OwogCXN0cnVjdCBvYmplY3QgKm9iajsKIAogCWlmICghb2JqX2hhc2gpCiAJCXJldHVybiBOVUxMOwogCi0JaSA9IGhhc2h0YWJsZV9pbmRleChzaGExKTsKKwlmaXJzdCA9IGkgPSBoYXNodGFibGVfaW5kZXgoc2hhMSk7CiAJd2hpbGUgKChvYmogPSBvYmpfaGFzaFtpXSkgIT0gTlVMTCkgewogCQlpZiAoIWhhc2hjbXAoc2hhMSwgb2JqLT5zaGExKSkKIAkJCWJyZWFrOwpAQCAtODUsNiArODUsMTYgQEAKIAkJaWYgKGkgPT0gb2JqX2hhc2hfc2l6ZSkKIAkJCWkgPSAwOwogCX0KKwlpZiAob2JqICYmIGkgIT0gZmlyc3QpIHsKKwkJLyoKKwkJICogTW92ZSBvYmplY3QgdG8gd2hlcmUgd2Ugc3RhcnRlZCB0byBsb29rIGZvciBpdCBzbworCQkgKiB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIHdhbGsgdGhlIGhhc2ggdGFibGUgdGhlIG5leHQKKwkJICogdGltZSB3ZSBsb29rIGZvciBpdC4KKwkJICovCisJCXN0cnVjdCBvYmplY3QgKnRtcCA9IG9ial9oYXNoW2ldOworCQlvYmpfaGFzaFtpXSA9IG9ial9oYXNoW2ZpcnN0XTsKKwkJb2JqX2hhc2hbZmlyc3RdID0gdG1wOworCX0KIAlyZXR1cm4gb2JqOwogfQogCkBAIC0yNjAsMTEgKzI3MCwxOCBAQAogCWFkZF9vYmplY3RfYXJyYXlfd2l0aF9tb2RlKG9iaiwgbmFtZSwgYXJyYXksIFNfSUZJTlZBTElEKTsKIH0KIAorLyoKKyAqIEEgemVyby1sZW5ndGggc3RyaW5nIHRvIHdoaWNoIG9iamVjdF9hcnJheV9lbnRyeTo6bmFtZSBjYW4gYmUKKyAqIGluaXRpYWxpemVkIHdpdGhvdXQgcmVxdWlyaW5nIGEgbWFsbG9jL2ZyZWUuCisgKi8KK3N0YXRpYyBjaGFyIG9iamVjdF9hcnJheV9zbG9wYnVmWzFdOworCiB2b2lkIGFkZF9vYmplY3RfYXJyYXlfd2l0aF9tb2RlKHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXksIHVuc2lnbmVkIG1vZGUpCiB7CiAJdW5zaWduZWQgbnIgPSBhcnJheS0+bnI7CiAJdW5zaWduZWQgYWxsb2MgPSBhcnJheS0+YWxsb2M7CiAJc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqb2JqZWN0cyA9IGFycmF5LT5vYmplY3RzOworCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmVudHJ5OwogCiAJaWYgKG5yID49IGFsbG9jKSB7CiAJCWFsbG9jID0gKGFsbG9jICsgMzIpICogMjsKQEAgLTI3MiwyOCArMjg5LDY3IEBACiAJCWFycmF5LT5hbGxvYyA9IGFsbG9jOwogCQlhcnJheS0+b2JqZWN0cyA9IG9iamVjdHM7CiAJfQotCW9iamVjdHNbbnJdLml0ZW0gPSBvYmo7Ci0Jb2JqZWN0c1tucl0ubmFtZSA9IG5hbWU7Ci0Jb2JqZWN0c1tucl0ubW9kZSA9IG1vZGU7CisJZW50cnkgPSAmb2JqZWN0c1tucl07CisJZW50cnktPml0ZW0gPSBvYmo7CisJaWYgKCFuYW1lKQorCQllbnRyeS0+bmFtZSA9IE5VTEw7CisJZWxzZSBpZiAoISpuYW1lKQorCQkvKiBVc2Ugb3VyIG93biBlbXB0eSBzdHJpbmcgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIG9uZTogKi8KKwkJZW50cnktPm5hbWUgPSBvYmplY3RfYXJyYXlfc2xvcGJ1ZjsKKwllbHNlCisJCWVudHJ5LT5uYW1lID0geHN0cmR1cChuYW1lKTsKKwllbnRyeS0+bW9kZSA9IG1vZGU7CiAJYXJyYXktPm5yID0gKytucjsKIH0KIAordm9pZCBvYmplY3RfYXJyYXlfZmlsdGVyKHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5LAorCQkJIG9iamVjdF9hcnJheV9lYWNoX2Z1bmNfdCB3YW50LCB2b2lkICpjYl9kYXRhKQoreworCXVuc2lnbmVkIG5yID0gYXJyYXktPm5yLCBzcmMsIGRzdDsKKwlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICpvYmplY3RzID0gYXJyYXktPm9iamVjdHM7CisKKwlmb3IgKHNyYyA9IGRzdCA9IDA7IHNyYyA8IG5yOyBzcmMrKykgeworCQlpZiAod2FudCgmb2JqZWN0c1tzcmNdLCBjYl9kYXRhKSkgeworCQkJaWYgKHNyYyAhPSBkc3QpCisJCQkJb2JqZWN0c1tkc3RdID0gb2JqZWN0c1tzcmNdOworCQkJZHN0Kys7CisJCX0gZWxzZSB7CisJCQlpZiAob2JqZWN0c1tzcmNdLm5hbWUgIT0gb2JqZWN0X2FycmF5X3Nsb3BidWYpCisJCQkJZnJlZShvYmplY3RzW3NyY10ubmFtZSk7CisJCX0KKwl9CisJYXJyYXktPm5yID0gZHN0OworfQorCisvKgorICogUmV0dXJuIHRydWUgaWZmIGFycmF5IGFscmVhZHkgY29udGFpbnMgYW4gZW50cnkgd2l0aCBuYW1lLgorICovCitzdGF0aWMgaW50IGNvbnRhaW5zX25hbWUoc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXksIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJdW5zaWduZWQgbnIgPSBhcnJheS0+bnIsIGk7CisJc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqb2JqZWN0ID0gYXJyYXktPm9iamVjdHM7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKywgb2JqZWN0KyspCisJCWlmICghc3RyY21wKG9iamVjdC0+bmFtZSwgbmFtZSkpCisJCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKwogdm9pZCBvYmplY3RfYXJyYXlfcmVtb3ZlX2R1cGxpY2F0ZXMoc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXkpCiB7Ci0JdW5zaWduZWQgaW50IHJlZiwgc3JjLCBkc3Q7CisJdW5zaWduZWQgbnIgPSBhcnJheS0+bnIsIHNyYzsKIAlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICpvYmplY3RzID0gYXJyYXktPm9iamVjdHM7CiAKLQlmb3IgKHJlZiA9IDA7IHJlZiArIDEgPCBhcnJheS0+bnI7IHJlZisrKSB7Ci0JCWZvciAoc3JjID0gcmVmICsgMSwgZHN0ID0gc3JjOwotCQkgICAgIHNyYyA8IGFycmF5LT5ucjsKLQkJICAgICBzcmMrKykgewotCQkJaWYgKCFzdHJjbXAob2JqZWN0c1tyZWZdLm5hbWUsIG9iamVjdHNbc3JjXS5uYW1lKSkKLQkJCQljb250aW51ZTsKLQkJCWlmIChzcmMgIT0gZHN0KQotCQkJCW9iamVjdHNbZHN0XSA9IG9iamVjdHNbc3JjXTsKLQkJCWRzdCsrOworCWFycmF5LT5uciA9IDA7CisJZm9yIChzcmMgPSAwOyBzcmMgPCBucjsgc3JjKyspIHsKKwkJaWYgKCFjb250YWluc19uYW1lKGFycmF5LCBvYmplY3RzW3NyY10ubmFtZSkpIHsKKwkJCWlmIChzcmMgIT0gYXJyYXktPm5yKQorCQkJCW9iamVjdHNbYXJyYXktPm5yXSA9IG9iamVjdHNbc3JjXTsKKwkJCWFycmF5LT5ucisrOworCQl9IGVsc2UgeworCQkJaWYgKG9iamVjdHNbc3JjXS5uYW1lICE9IG9iamVjdF9hcnJheV9zbG9wYnVmKQorCQkJCWZyZWUob2JqZWN0c1tzcmNdLm5hbWUpOwogCQl9Ci0JCWFycmF5LT5uciA9IGRzdDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL29iamVjdC5oIGIvb2JqZWN0LmgKaW5kZXggOTdkMzg0Yi4uMmZmNjhjNSAxMDA2NDQKLS0tIGEvb2JqZWN0LmgKKysrIGIvb2JqZWN0LmgKQEAgLTExLDcgKzExLDEzIEBACiAJdW5zaWduZWQgaW50IGFsbG9jOwogCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgewogCQlzdHJ1Y3Qgb2JqZWN0ICppdGVtOwotCQljb25zdCBjaGFyICpuYW1lOworCQkvKgorCQkgKiBuYW1lIG9yIE5VTEwuICBJZiBub24tTlVMTCwgdGhlIG1lbW9yeSBwb2ludGVkIHRvCisJCSAqIGlzIG93bmVkIGJ5IHRoaXMgb2JqZWN0ICpleGNlcHQqIGlmIGl0IHBvaW50cyBhdAorCQkgKiBvYmplY3RfYXJyYXlfc2xvcGJ1Ziwgd2hpY2ggaXMgYSBzdGF0aWMgY29weSBvZiB0aGUKKwkJICogZW1wdHkgc3RyaW5nLgorCQkgKi8KKwkJY2hhciAqbmFtZTsKIAkJdW5zaWduZWQgbW9kZTsKIAl9ICpvYmplY3RzOwogfTsKQEAgLTg1LDcgKzkxLDIyIEBACiAvKiBPYmplY3QgYXJyYXkgaGFuZGxpbmcgLi4gKi8KIHZvaWQgYWRkX29iamVjdF9hcnJheShzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5KTsKIHZvaWQgYWRkX29iamVjdF9hcnJheV93aXRoX21vZGUoc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphcnJheSwgdW5zaWduZWQgbW9kZSk7Ci12b2lkIG9iamVjdF9hcnJheV9yZW1vdmVfZHVwbGljYXRlcyhzdHJ1Y3Qgb2JqZWN0X2FycmF5ICopOworCit0eXBlZGVmIGludCAoKm9iamVjdF9hcnJheV9lYWNoX2Z1bmNfdCkoc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqLCB2b2lkICopOworCisvKgorICogQXBwbHkgd2FudCB0byBlYWNoIGVudHJ5IGluIGFycmF5LCByZXRhaW5pbmcgb25seSB0aGUgZW50cmllcyBmb3IKKyAqIHdoaWNoIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuICBQcmVzZXJ2ZSB0aGUgb3JkZXIgb2YgdGhlIGVudHJpZXMKKyAqIHRoYXQgYXJlIHJldGFpbmVkLgorICovCit2b2lkIG9iamVjdF9hcnJheV9maWx0ZXIoc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXksCisJCQkgb2JqZWN0X2FycmF5X2VhY2hfZnVuY190IHdhbnQsIHZvaWQgKmNiX2RhdGEpOworCisvKgorICogUmVtb3ZlIGZyb20gYXJyYXkgYWxsIGJ1dCB0aGUgZmlyc3QgZW50cnkgd2l0aCBhIGdpdmVuIG5hbWUuCisgKiBXYXJuaW5nOiB0aGlzIGZ1bmN0aW9uIHVzZXMgYW4gTyhOXjIpIGFsZ29yaXRobS4KKyAqLwordm9pZCBvYmplY3RfYXJyYXlfcmVtb3ZlX2R1cGxpY2F0ZXMoc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXkpOwogCiB2b2lkIGNsZWFyX29iamVjdF9mbGFncyh1bnNpZ25lZCBmbGFncyk7CiAKZGlmZiAtLWdpdCBhL3BhY2stcmVmcy5jIGIvcGFjay1yZWZzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NjFmNzEuLjAwMDAwMDAKLS0tIGEvcGFjay1yZWZzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotI2luY2x1ZGUgImNhY2hlLmgiCi0jaW5jbHVkZSAicmVmcy5oIgotI2luY2x1ZGUgInRhZy5oIgotI2luY2x1ZGUgInBhY2stcmVmcy5oIgotCi1zdHJ1Y3QgcmVmX3RvX3BydW5lIHsKLQlzdHJ1Y3QgcmVmX3RvX3BydW5lICpuZXh0OwotCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07Ci0JY2hhciBuYW1lW0ZMRVhfQVJSQVldOwotfTsKLQotc3RydWN0IHBhY2tfcmVmc19jYl9kYXRhIHsKLQl1bnNpZ25lZCBpbnQgZmxhZ3M7Ci0Jc3RydWN0IHJlZl90b19wcnVuZSAqcmVmX3RvX3BydW5lOwotCUZJTEUgKnJlZnNfZmlsZTsKLX07Ci0KLXN0YXRpYyBpbnQgZG9fbm90X3BydW5lKGludCBmbGFncykKLXsKLQkvKiBJZiBpdCBpcyBhbHJlYWR5IHBhY2tlZCBvciBpZiBpdCBpcyBhIHN5bXJlZiwKLQkgKiBkbyBub3QgcHJ1bmUgaXQuCi0JICovCi0JcmV0dXJuIChmbGFncyAmIChSRUZfSVNTWU1SRUZ8UkVGX0lTUEFDS0VEKSk7Ci19Ci0KLXN0YXRpYyBpbnQgaGFuZGxlX29uZV9yZWYoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJCSAgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQotewotCXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSAqY2IgPSBjYl9kYXRhOwotCXN0cnVjdCBvYmplY3QgKm87Ci0JaW50IGlzX3RhZ19yZWY7Ci0KLQkvKiBEbyBub3QgcGFjayB0aGUgc3ltYm9saWMgcmVmcyAqLwotCWlmICgoZmxhZ3MgJiBSRUZfSVNTWU1SRUYpKQotCQlyZXR1cm4gMDsKLQlpc190YWdfcmVmID0gIXByZWZpeGNtcChwYXRoLCAicmVmcy90YWdzLyIpOwotCi0JLyogQUxXQVlTIHBhY2sgcmVmcyB0aGF0IHdlcmUgYWxyZWFkeSBwYWNrZWQgb3IgYXJlIHRhZ3MgKi8KLQlpZiAoIShjYi0+ZmxhZ3MgJiBQQUNLX1JFRlNfQUxMKSAmJiAhaXNfdGFnX3JlZiAmJiAhKGZsYWdzICYgUkVGX0lTUEFDS0VEKSkKLQkJcmV0dXJuIDA7Ci0KLQlmcHJpbnRmKGNiLT5yZWZzX2ZpbGUsICIlcyAlc1xuIiwgc2hhMV90b19oZXgoc2hhMSksIHBhdGgpOwotCi0JbyA9IHBhcnNlX29iamVjdF9vcl9kaWUoc2hhMSwgcGF0aCk7Ci0JaWYgKG8tPnR5cGUgPT0gT0JKX1RBRykgewotCQlvID0gZGVyZWZfdGFnKG8sIHBhdGgsIDApOwotCQlpZiAobykKLQkJCWZwcmludGYoY2ItPnJlZnNfZmlsZSwgIl4lc1xuIiwKLQkJCQlzaGExX3RvX2hleChvLT5zaGExKSk7Ci0JfQotCi0JaWYgKChjYi0+ZmxhZ3MgJiBQQUNLX1JFRlNfUFJVTkUpICYmICFkb19ub3RfcHJ1bmUoZmxhZ3MpKSB7Ci0JCWludCBuYW1lbGVuID0gc3RybGVuKHBhdGgpICsgMTsKLQkJc3RydWN0IHJlZl90b19wcnVuZSAqbiA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpuKSArIG5hbWVsZW4pOwotCQloYXNoY3B5KG4tPnNoYTEsIHNoYTEpOwotCQlzdHJjcHkobi0+bmFtZSwgcGF0aCk7Ci0JCW4tPm5leHQgPSBjYi0+cmVmX3RvX3BydW5lOwotCQljYi0+cmVmX3RvX3BydW5lID0gbjsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLS8qCi0gKiBSZW1vdmUgZW1wdHkgcGFyZW50cywgYnV0IHNwYXJlIHJlZnMvIGFuZCBpbW1lZGlhdGUgc3ViZGlycy4KLSAqIE5vdGU6IG11bmdlcyAqbmFtZS4KLSAqLwotc3RhdGljIHZvaWQgdHJ5X3JlbW92ZV9lbXB0eV9wYXJlbnRzKGNoYXIgKm5hbWUpCi17Ci0JY2hhciAqcCwgKnE7Ci0JaW50IGk7Ci0JcCA9IG5hbWU7Ci0JZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeyAvKiByZWZzL3toZWFkcyx0YWdzLC4uLn0vICovCi0JCXdoaWxlICgqcCAmJiAqcCAhPSAnLycpCi0JCQlwKys7Ci0JCS8qIHRvbGVyYXRlIGR1cGxpY2F0ZSBzbGFzaGVzOyBzZWUgY2hlY2tfcmVmbmFtZV9mb3JtYXQoKSAqLwotCQl3aGlsZSAoKnAgPT0gJy8nKQotCQkJcCsrOwotCX0KLQlmb3IgKHEgPSBwOyAqcTsgcSsrKQotCQk7Ci0Jd2hpbGUgKDEpIHsKLQkJd2hpbGUgKHEgPiBwICYmICpxICE9ICcvJykKLQkJCXEtLTsKLQkJd2hpbGUgKHEgPiBwICYmICoocS0xKSA9PSAnLycpCi0JCQlxLS07Ci0JCWlmIChxID09IHApCi0JCQlicmVhazsKLQkJKnEgPSAnXDAnOwotCQlpZiAocm1kaXIoZ2l0X3BhdGgoIiVzIiwgbmFtZSkpKQotCQkJYnJlYWs7Ci0JfQotfQotCi0vKiBtYWtlIHN1cmUgbm9ib2R5IHRvdWNoZWQgdGhlIHJlZiwgYW5kIHVubGluayAqLwotc3RhdGljIHZvaWQgcHJ1bmVfcmVmKHN0cnVjdCByZWZfdG9fcHJ1bmUgKnIpCi17Ci0Jc3RydWN0IHJlZl9sb2NrICpsb2NrID0gbG9ja19yZWZfc2hhMShyLT5uYW1lICsgNSwgci0+c2hhMSk7Ci0KLQlpZiAobG9jaykgewotCQl1bmxpbmtfb3Jfd2FybihnaXRfcGF0aCgiJXMiLCByLT5uYW1lKSk7Ci0JCXVubG9ja19yZWYobG9jayk7Ci0JCXRyeV9yZW1vdmVfZW1wdHlfcGFyZW50cyhyLT5uYW1lKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIHBydW5lX3JlZnMoc3RydWN0IHJlZl90b19wcnVuZSAqcikKLXsKLQl3aGlsZSAocikgewotCQlwcnVuZV9yZWYocik7Ci0JCXIgPSByLT5uZXh0OwotCX0KLX0KLQotc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgcGFja2VkOwotCi1pbnQgcGFja19yZWZzKHVuc2lnbmVkIGludCBmbGFncykKLXsKLQlpbnQgZmQ7Ci0Jc3RydWN0IHBhY2tfcmVmc19jYl9kYXRhIGNiZGF0YTsKLQotCW1lbXNldCgmY2JkYXRhLCAwLCBzaXplb2YoY2JkYXRhKSk7Ci0JY2JkYXRhLmZsYWdzID0gZmxhZ3M7Ci0KLQlmZCA9IGhvbGRfbG9ja19maWxlX2Zvcl91cGRhdGUoJnBhY2tlZCwgZ2l0X3BhdGgoInBhY2tlZC1yZWZzIiksCi0JCQkJICAgICAgIExPQ0tfRElFX09OX0VSUk9SKTsKLQljYmRhdGEucmVmc19maWxlID0gZmRvcGVuKGZkLCAidyIpOwotCWlmICghY2JkYXRhLnJlZnNfZmlsZSkKLQkJZGllX2Vycm5vKCJ1bmFibGUgdG8gY3JlYXRlIHJlZi1wYWNrIGZpbGUgc3RydWN0dXJlIik7Ci0KLQkvKiBwZXJoYXBzIG90aGVyIHRyYWl0cyBsYXRlciBhcyB3ZWxsICovCi0JZnByaW50ZihjYmRhdGEucmVmc19maWxlLCAiIyBwYWNrLXJlZnMgd2l0aDogcGVlbGVkIGZ1bGx5LXBlZWxlZCBcbiIpOwotCi0JZm9yX2VhY2hfcmVmKGhhbmRsZV9vbmVfcmVmLCAmY2JkYXRhKTsKLQlpZiAoZmVycm9yKGNiZGF0YS5yZWZzX2ZpbGUpKQotCQlkaWUoImZhaWxlZCB0byB3cml0ZSByZWYtcGFjayBmaWxlIik7Ci0JaWYgKGZmbHVzaChjYmRhdGEucmVmc19maWxlKSB8fCBmc3luYyhmZCkgfHwgZmNsb3NlKGNiZGF0YS5yZWZzX2ZpbGUpKQotCQlkaWVfZXJybm8oImZhaWxlZCB0byB3cml0ZSByZWYtcGFjayBmaWxlIik7Ci0JLyoKLQkgKiBTaW5jZSB0aGUgbG9jayBmaWxlIHdhcyBmZG9wZW4oKSdlZCBhbmQgdGhlbiBmY2xvc2UoKSdlZCBhYm92ZSwKLQkgKiBhc3NpZ24gLTEgdG8gdGhlIGxvY2sgZmlsZSBkZXNjcmlwdG9yIHNvIHRoYXQgY29tbWl0X2xvY2tfZmlsZSgpCi0JICogd29uJ3QgdHJ5IHRvIGNsb3NlKCkgaXQuCi0JICovCi0JcGFja2VkLmZkID0gLTE7Ci0JaWYgKGNvbW1pdF9sb2NrX2ZpbGUoJnBhY2tlZCkgPCAwKQotCQlkaWVfZXJybm8oInVuYWJsZSB0byBvdmVyd3JpdGUgb2xkIHJlZi1wYWNrIGZpbGUiKTsKLQlwcnVuZV9yZWZzKGNiZGF0YS5yZWZfdG9fcHJ1bmUpOwotCXJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvcGFjay1yZWZzLmggYi9wYWNrLXJlZnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE4YWNmYi4uMDAwMDAwMAotLS0gYS9wYWNrLXJlZnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLSNpZm5kZWYgUEFDS19SRUZTX0gKLSNkZWZpbmUgUEFDS19SRUZTX0gKLQotLyoKLSAqIEZsYWdzIGZvciBjb250cm9sbGluZyBiZWhhdmlvdXIgb2YgcGFja19yZWZzKCkKLSAqIFBBQ0tfUkVGU19QUlVORTogUHJ1bmUgbG9vc2UgcmVmcyBhZnRlciBwYWNraW5nCi0gKiBQQUNLX1JFRlNfQUxMOiAgIFBhY2sgX2FsbF8gcmVmcywgbm90IGp1c3QgdGFncyBhbmQgYWxyZWFkeSBwYWNrZWQgcmVmcwotICovCi0jZGVmaW5lIFBBQ0tfUkVGU19QUlVORSAweDAwMDEKLSNkZWZpbmUgUEFDS19SRUZTX0FMTCAgIDB4MDAwMgotCi0vKgotICogV3JpdGUgYSBwYWNrZWQtcmVmcyBmaWxlIGZvciB0aGUgY3VycmVudCByZXBvc2l0b3J5LgotICogZmxhZ3M6IENvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZSBQQUNLX1JFRlNfKiBmbGFncy4KLSAqLwotaW50IHBhY2tfcmVmcyh1bnNpZ25lZCBpbnQgZmxhZ3MpOwotCi0jZW5kaWYgLyogUEFDS19SRUZTX0ggKi8KZGlmZiAtLWdpdCBhL3BhcnNlLW9wdGlvbnMtY2IuYyBiL3BhcnNlLW9wdGlvbnMtY2IuYwppbmRleCAwZGU1ZmIxLi5iZThjNDEzIDEwMDY0NAotLS0gYS9wYXJzZS1vcHRpb25zLWNiLmMKKysrIGIvcGFyc2Utb3B0aW9ucy1jYi5jCkBAIC0zMyw2ICszMywxMiBAQAogCXJldHVybiAwOwogfQogCitpbnQgcGFyc2Vfb3B0X2V4cGlyeV9kYXRlX2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLAorCQkJICAgICBpbnQgdW5zZXQpCit7CisJcmV0dXJuIHBhcnNlX2V4cGlyeV9kYXRlKGFyZywgKHVuc2lnbmVkIGxvbmcgKilvcHQtPnZhbHVlKTsKK30KKwogaW50IHBhcnNlX29wdF9jb2xvcl9mbGFnX2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLAogCQkJICAgIGludCB1bnNldCkKIHsKZGlmZiAtLWdpdCBhL3BhcnNlLW9wdGlvbnMuYyBiL3BhcnNlLW9wdGlvbnMuYwppbmRleCA3Y2E4ZjJjLi5jMmNiY2EyIDEwMDY0NAotLS0gYS9wYXJzZS1vcHRpb25zLmMKKysrIGIvcGFyc2Utb3B0aW9ucy5jCkBAIC0xOSwxNSArMTksNiBAQAogCXJldHVybiBlcnJvcigiQlVHOiBzd2l0Y2ggJyVjJyAlcyIsIG9wdC0+c2hvcnRfbmFtZSwgcmVhc29uKTsKIH0KIAotaW50IG9wdGVycm9yKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqcmVhc29uLCBpbnQgZmxhZ3MpCi17Ci0JaWYgKGZsYWdzICYgT1BUX1NIT1JUKQotCQlyZXR1cm4gZXJyb3IoInN3aXRjaCBgJWMnICVzIiwgb3B0LT5zaG9ydF9uYW1lLCByZWFzb24pOwotCWlmIChmbGFncyAmIE9QVF9VTlNFVCkKLQkJcmV0dXJuIGVycm9yKCJvcHRpb24gYG5vLSVzJyAlcyIsIG9wdC0+bG9uZ19uYW1lLCByZWFzb24pOwotCXJldHVybiBlcnJvcigib3B0aW9uIGAlcycgJXMiLCBvcHQtPmxvbmdfbmFtZSwgcmVhc29uKTsKLX0KLQogc3RhdGljIGludCBnZXRfYXJnKHN0cnVjdCBwYXJzZV9vcHRfY3R4X3QgKnAsIGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwKIAkJICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICoqYXJnKQogewpAQCAtNTk4LDMgKzU4OSwxMiBAQAogCXJldHVybiB1c2FnZV93aXRoX29wdGlvbnNfaW50ZXJuYWwoY3R4LCB1c2FnZXN0ciwgb3B0cywgMCwgZXJyKTsKIH0KIAorI3VuZGVmIG9wdGVycm9yCitpbnQgb3B0ZXJyb3IoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICpyZWFzb24sIGludCBmbGFncykKK3sKKwlpZiAoZmxhZ3MgJiBPUFRfU0hPUlQpCisJCXJldHVybiBlcnJvcigic3dpdGNoIGAlYycgJXMiLCBvcHQtPnNob3J0X25hbWUsIHJlYXNvbik7CisJaWYgKGZsYWdzICYgT1BUX1VOU0VUKQorCQlyZXR1cm4gZXJyb3IoIm9wdGlvbiBgbm8tJXMnICVzIiwgb3B0LT5sb25nX25hbWUsIHJlYXNvbik7CisJcmV0dXJuIGVycm9yKCJvcHRpb24gYCVzJyAlcyIsIG9wdC0+bG9uZ19uYW1lLCByZWFzb24pOworfQpkaWZmIC0tZ2l0IGEvcGFyc2Utb3B0aW9ucy5oIGIvcGFyc2Utb3B0aW9ucy5oCmluZGV4IDcxYTM5YzYuLmMzNzhiNzUgMTAwNjQ0Ci0tLSBhL3BhcnNlLW9wdGlvbnMuaAorKysgYi9wYXJzZS1vcHRpb25zLmgKQEAgLTE0MCw2ICsxNDAsOSBAQAogI2RlZmluZSBPUFRfREFURShzLCBsLCB2LCBoKSBcCiAJeyBPUFRJT05fQ0FMTEJBQ0ssIChzKSwgKGwpLCAodiksIE5fKCJ0aW1lIiksKGgpLCAwLAlcCiAJICBwYXJzZV9vcHRfYXBwcm94aWRhdGVfY2IgfQorI2RlZmluZSBPUFRfRVhQSVJZX0RBVEUocywgbCwgdiwgaCkgXAorCXsgT1BUSU9OX0NBTExCQUNLLCAocyksIChsKSwgKHYpLCBOXygiZXhwaXJ5IGRhdGUiKSwoaCksIDAsCVwKKwkgIHBhcnNlX29wdF9leHBpcnlfZGF0ZV9jYiB9CiAjZGVmaW5lIE9QVF9DQUxMQkFDSyhzLCBsLCB2LCBhLCBoLCBmKSBcCiAJeyBPUFRJT05fQ0FMTEJBQ0ssIChzKSwgKGwpLCAodiksIChhKSwgKGgpLCAwLCAoZikgfQogI2RlZmluZSBPUFRfTlVNQkVSX0NBTExCQUNLKHYsIGgsIGYpIFwKQEAgLTE3Nyw2ICsxODAsMTAgQEAKIAogZXh0ZXJuIGludCBvcHRidWcoY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICpyZWFzb24pOwogZXh0ZXJuIGludCBvcHRlcnJvcihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKnJlYXNvbiwgaW50IGZsYWdzKTsKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhIGRlZmluZWQoY2xhbmcpCisjZGVmaW5lIG9wdGVycm9yKG8scixmKSAob3B0ZXJyb3IoKG8pLChyKSwoZikpLCAtMSkKKyNlbmRpZgorCiAvKi0tLS0tIGluY3JlbWVudGFsIGFkdmFuY2VkIEFQSXMgLS0tLS0qLwogCiBlbnVtIHsKQEAgLTIxNSw2ICsyMjIsNyBAQAogLyotLS0tLSBzb21lIG9mdGVuIHVzZWQgb3B0aW9ucyAtLS0tLSovCiBleHRlcm4gaW50IHBhcnNlX29wdF9hYmJyZXZfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiBleHRlcm4gaW50IHBhcnNlX29wdF9hcHByb3hpZGF0ZV9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTsKK2V4dGVybiBpbnQgcGFyc2Vfb3B0X2V4cGlyeV9kYXRlX2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpOwogZXh0ZXJuIGludCBwYXJzZV9vcHRfY29sb3JfZmxhZ19jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiBpbnQgcGFyc2Vfb3B0X3ZlcmJvc2l0eV9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiBpbnQgcGFyc2Vfb3B0X3dpdGhfY29tbWl0KGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvcGF0aC5jIGIvcGF0aC5jCmluZGV4IGQzZDNmOGIuLjA0ZmYxNDggMTAwNjQ0Ci0tLSBhL3BhdGguYworKysgYi9wYXRoLmMKQEAgLTEsMTkgKzEsMjYgQEAKIC8qCi0gKiBJJ20gdGlyZWQgb2YgZG9pbmcgInZzbnByaW50ZigpIiBldGMganVzdCB0byBvcGVuIGEKLSAqIGZpbGUsIHNvIGhlcmUncyBhICJyZXR1cm4gc3RhdGljIGJ1ZmZlciB3aXRoIHByaW50ZiIKLSAqIGludGVyZmFjZSBmb3IgcGF0aHMuCi0gKgotICogSXQncyBvYnZpb3VzbHkgbm90IHRocmVhZC1zYWZlLiBTdWUgbWUuIEJ1dCBpdCdzIHF1aXRlCi0gKiB1c2VmdWwgZm9yIGRvaW5nIHRoaW5ncyBsaWtlCi0gKgotICogICBmID0gb3Blbihta3BhdGgoIiVzLyVzLmdpdCIsIGJhc2UsIG5hbWUpLCBPX1JET05MWSk7Ci0gKgotICogd2hpY2ggaXMgd2hhdCBpdCdzIGRlc2lnbmVkIGZvci4KKyAqIFV0aWxpdGllcyBmb3IgcGF0aHMgYW5kIHBhdGhuYW1lcwogICovCiAjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJzdHJidWYuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogCisjaWZuZGVmIGdldF9zdF9tb2RlX2JpdHMKKy8qCisgKiBUaGUgcmVwbGFjZW1lbnQgbHN0YXQoMikgd2UgdXNlIG9uIEN5Z3dpbiBpcyBpbmNvbXBsZXRlIGFuZAorICogbWF5IHJldHVybiB3cm9uZyBwZXJtaXNzaW9uIGJpdHMuIE1vc3Qgb2YgdGhlIHRpbWUgd2UgZG8gbm90IGNhcmUsCisgKiBidXQgdGhlIGNhbGxzaXRlcyBvZiB0aGlzIHdyYXBwZXIgZG8gY2FyZS4KKyAqLworaW50IGdldF9zdF9tb2RlX2JpdHMoY29uc3QgY2hhciAqcGF0aCwgaW50ICptb2RlKQoreworCXN0cnVjdCBzdGF0IHN0OworCWlmIChsc3RhdChwYXRoLCAmc3QpIDwgMCkKKwkJcmV0dXJuIC0xOworCSptb2RlID0gc3Quc3RfbW9kZTsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCiBzdGF0aWMgY2hhciBiYWRfcGF0aFtdID0gIi9iYWQtcGF0aC8iOwogCiBzdGF0aWMgY2hhciAqZ2V0X3BhdGhuYW1lKHZvaWQpCkBAIC0zODksMjggKzM5NiwxNCBAQAogCXJldHVybiBOVUxMOwogfQogCi1pbnQgc2V0X3NoYXJlZF9wZXJtKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKQorc3RhdGljIGludCBjYWxjX3NoYXJlZF9wZXJtKGludCBtb2RlKQogewotCXN0cnVjdCBzdGF0IHN0OwotCWludCB0d2Vhaywgc2hhcmVkLCBvcmlnX21vZGU7CisJaW50IHR3ZWFrOwogCi0JaWYgKCFzaGFyZWRfcmVwb3NpdG9yeSkgewotCQlpZiAobW9kZSkKLQkJCXJldHVybiBjaG1vZChwYXRoLCBtb2RlICYgflNfSUZNVCk7Ci0JCXJldHVybiAwOwotCX0KLQlpZiAoIW1vZGUpIHsKLQkJaWYgKGxzdGF0KHBhdGgsICZzdCkgPCAwKQotCQkJcmV0dXJuIC0xOwotCQltb2RlID0gc3Quc3RfbW9kZTsKLQkJb3JpZ19tb2RlID0gbW9kZTsKLQl9IGVsc2UKLQkJb3JpZ19tb2RlID0gMDsKIAlpZiAoc2hhcmVkX3JlcG9zaXRvcnkgPCAwKQotCQlzaGFyZWQgPSAtc2hhcmVkX3JlcG9zaXRvcnk7CisJCXR3ZWFrID0gLXNoYXJlZF9yZXBvc2l0b3J5OwogCWVsc2UKLQkJc2hhcmVkID0gc2hhcmVkX3JlcG9zaXRvcnk7Ci0JdHdlYWsgPSBzaGFyZWQ7CisJCXR3ZWFrID0gc2hhcmVkX3JlcG9zaXRvcnk7CiAKIAlpZiAoIShtb2RlICYgU19JV1VTUikpCiAJCXR3ZWFrICY9IH4wMjIyOwpAQCAtNDIyLDE2ICs0MTUsMjggQEAKIAllbHNlCiAJCW1vZGUgfD0gdHdlYWs7CiAKLQlpZiAoU19JU0RJUihtb2RlKSkgeworCXJldHVybiBtb2RlOworfQorCisKK2ludCBhZGp1c3Rfc2hhcmVkX3Blcm0oY29uc3QgY2hhciAqcGF0aCkKK3sKKwlpbnQgb2xkX21vZGUsIG5ld19tb2RlOworCisJaWYgKCFzaGFyZWRfcmVwb3NpdG9yeSkKKwkJcmV0dXJuIDA7CisJaWYgKGdldF9zdF9tb2RlX2JpdHMocGF0aCwgJm9sZF9tb2RlKSA8IDApCisJCXJldHVybiAtMTsKKworCW5ld19tb2RlID0gY2FsY19zaGFyZWRfcGVybShvbGRfbW9kZSk7CisJaWYgKFNfSVNESVIob2xkX21vZGUpKSB7CiAJCS8qIENvcHkgcmVhZCBiaXRzIHRvIGV4ZWN1dGUgYml0cyAqLwotCQltb2RlIHw9IChzaGFyZWQgJiAwNDQ0KSA+PiAyOwotCQltb2RlIHw9IEZPUkNFX0RJUl9TRVRfR0lEOworCQluZXdfbW9kZSB8PSAobmV3X21vZGUgJiAwNDQ0KSA+PiAyOworCQluZXdfbW9kZSB8PSBGT1JDRV9ESVJfU0VUX0dJRDsKIAl9CiAKLQlpZiAoKChzaGFyZWRfcmVwb3NpdG9yeSA8IDAKLQkgICAgICA/IChvcmlnX21vZGUgJiAoRk9SQ0VfRElSX1NFVF9HSUQgfCAwNzc3KSkKLQkgICAgICA6IChvcmlnX21vZGUgJiBtb2RlKSkgIT0gbW9kZSkgJiYKLQkgICAgY2htb2QocGF0aCwgKG1vZGUgJiB+U19JRk1UKSkgPCAwKQorCWlmICgoKG9sZF9tb2RlIF4gbmV3X21vZGUpICYgflNfSUZNVCkgJiYKKwkJCWNobW9kKHBhdGgsIChuZXdfbW9kZSAmIH5TX0lGTVQpKSA8IDApCiAJCXJldHVybiAtMjsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3BhdGhzcGVjLmMgYi9wYXRoc3BlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NGYzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9wYXRoc3BlYy5jCkBAIC0wLDAgKzEsMTAxIEBACisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJkaXIuaCIKKyNpbmNsdWRlICJwYXRoc3BlYy5oIgorCisvKgorICogRmluZHMgd2hpY2ggb2YgdGhlIGdpdmVuIHBhdGhzcGVjcyBtYXRjaCBpdGVtcyBpbiB0aGUgaW5kZXguCisgKgorICogRm9yIGVhY2ggcGF0aHNwZWMsIHNldHMgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4gdGhlIHNlZW5bXSBhcnJheQorICogKHdoaWNoIHNob3VsZCBiZSBzcGVjcyBpdGVtcyBsb25nLCBpLmUuIHRoZSBzYW1lIHNpemUgYXMgcGF0aHNwZWMpCisgKiB0byB0aGUgbmF0dXJlIG9mIHRoZSAiY2xvc2VzdCIgKGkuZS4gbW9zdCBzcGVjaWZpYykgbWF0Y2ggZm91bmQgZm9yCisgKiB0aGF0IHBhdGhzcGVjIGluIHRoZSBpbmRleCwgaWYgaXQgd2FzIGEgY2xvc2VyIHR5cGUgb2YgbWF0Y2ggdGhhbgorICogdGhlIGV4aXN0aW5nIGVudHJ5LiAgQXMgYW4gb3B0aW1pemF0aW9uLCBtYXRjaGluZyBpcyBza2lwcGVkCisgKiBhbHRvZ2V0aGVyIGlmIHNlZW5bXSBhbHJlYWR5IG9ubHkgY29udGFpbnMgbm9uLXplcm8gZW50cmllcy4KKyAqCisgKiBJZiBzZWVuW10gaGFzIG5vdCBhbHJlYWR5IGJlZW4gd3JpdHRlbiB0bywgaXQgbWF5IG1ha2Ugc2Vuc2UKKyAqIHRvIHVzZSBmaW5kX3BhdGhzcGVjc19tYXRjaGluZ19hZ2FpbnN0X2luZGV4KCkgaW5zdGVhZC4KKyAqLwordm9pZCBhZGRfcGF0aHNwZWNfbWF0Y2hlc19hZ2FpbnN0X2luZGV4KGNvbnN0IGNoYXIgKipwYXRoc3BlYywKKwkJCQkJY2hhciAqc2VlbiwgaW50IHNwZWNzKQoreworCWludCBudW1fdW5tYXRjaGVkID0gMCwgaTsKKworCS8qCisJICogU2luY2Ugd2UgYXJlIHdhbGtpbmcgdGhlIGluZGV4IGFzIGlmIHdlIHdlcmUgd2Fsa2luZyB0aGUgZGlyZWN0b3J5LAorCSAqIHdlIGhhdmUgdG8gbWFyayB0aGUgbWF0Y2hlZCBwYXRoc3BlYyBhcyBzZWVuOyBvdGhlcndpc2Ugd2Ugd2lsbAorCSAqIG1pc3Rha2VubHkgdGhpbmsgdGhhdCB0aGUgdXNlciBnYXZlIGEgcGF0aHNwZWMgdGhhdCBkaWQgbm90IG1hdGNoCisJICogYW55dGhpbmcuCisJICovCisJZm9yIChpID0gMDsgaSA8IHNwZWNzOyBpKyspCisJCWlmICghc2VlbltpXSkKKwkJCW51bV91bm1hdGNoZWQrKzsKKwlpZiAoIW51bV91bm1hdGNoZWQpCisJCXJldHVybjsKKwlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgc2Vlbik7CisJfQorfQorCisvKgorICogRmluZHMgd2hpY2ggb2YgdGhlIGdpdmVuIHBhdGhzcGVjcyBtYXRjaCBpdGVtcyBpbiB0aGUgaW5kZXguCisgKgorICogVGhpcyBpcyBhIG9uZS1zaG90IHdyYXBwZXIgYXJvdW5kIGFkZF9wYXRoc3BlY19tYXRjaGVzX2FnYWluc3RfaW5kZXgoKQorICogd2hpY2ggYWxsb2NhdGVzLCBwb3B1bGF0ZXMsIGFuZCByZXR1cm5zIGEgc2VlbltdIGFycmF5IGluZGljYXRpbmcgdGhlCisgKiBuYXR1cmUgb2YgdGhlICJjbG9zZXN0IiAoaS5lLiBtb3N0IHNwZWNpZmljKSBtYXRjaGVzIHdoaWNoIGVhY2ggb2YgdGhlCisgKiBnaXZlbiBwYXRoc3BlY3MgYWNoaWV2ZXMgYWdhaW5zdCBhbGwgaXRlbXMgaW4gdGhlIGluZGV4LgorICovCitjaGFyICpmaW5kX3BhdGhzcGVjc19tYXRjaGluZ19hZ2FpbnN0X2luZGV4KGNvbnN0IGNoYXIgKipwYXRoc3BlYykKK3sKKwljaGFyICpzZWVuOworCWludCBpOworCisJZm9yIChpID0gMDsgcGF0aHNwZWNbaV07ICBpKyspCisJCTsgLyoganVzdCBjb3VudGluZyAqLworCXNlZW4gPSB4Y2FsbG9jKGksIDEpOworCWFkZF9wYXRoc3BlY19tYXRjaGVzX2FnYWluc3RfaW5kZXgocGF0aHNwZWMsIHNlZW4sIGkpOworCXJldHVybiBzZWVuOworfQorCisvKgorICogQ2hlY2sgdGhlIGluZGV4IHRvIHNlZSB3aGV0aGVyIHBhdGggcmVmZXJzIHRvIGEgc3VibW9kdWxlLCBvcgorICogc29tZXRoaW5nIGluc2lkZSBhIHN1Ym1vZHVsZS4gIElmIHRoZSBmb3JtZXIsIHJldHVybnMgdGhlIHBhdGggd2l0aAorICogYW55IHRyYWlsaW5nIHNsYXNoIHN0cmlwcGVkLiAgSWYgdGhlIGxhdHRlciwgZGllcyB3aXRoIGFuIGVycm9yCisgKiBtZXNzYWdlLgorICovCitjb25zdCBjaGFyICpjaGVja19wYXRoX2Zvcl9naXRsaW5rKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJaW50IGksIHBhdGhfbGVuID0gc3RybGVuKHBhdGgpOworCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgeworCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7CisJCQlpbnQgY2VfbGVuID0gY2VfbmFtZWxlbihjZSk7CisJCQlpZiAocGF0aF9sZW4gPD0gY2VfbGVuIHx8IHBhdGhbY2VfbGVuXSAhPSAnLycgfHwKKwkJCSAgICBtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIGNlX2xlbikpCisJCQkJLyogcGF0aCBkb2VzIG5vdCByZWZlciB0byB0aGlzCisJCQkJICogc3VibW9kdWxlIG9yIGFueXRoaW5nIGluc2lkZSBpdCAqLworCQkJCWNvbnRpbnVlOworCQkJaWYgKHBhdGhfbGVuID09IGNlX2xlbiArIDEpIHsKKwkJCQkvKiBwYXRoIHJlZmVycyB0byBzdWJtb2R1bGU7CisJCQkJICogc3RyaXAgdHJhaWxpbmcgc2xhc2ggKi8KKwkJCQlyZXR1cm4geHN0cm5kdXAoY2UtPm5hbWUsIGNlX2xlbik7CisJCQl9IGVsc2UgeworCQkJCWRpZSAoXygiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciKSwKKwkJCQkgICAgIHBhdGgsIGNlX2xlbiwgY2UtPm5hbWUpOworCQkJfQorCQl9CisJfQorCXJldHVybiBwYXRoOworfQorCisvKgorICogRGllcyBpZiB0aGUgZ2l2ZW4gcGF0aCByZWZlcnMgdG8gYSBmaWxlIGluc2lkZSBhIHN5bWxpbmtlZAorICogZGlyZWN0b3J5IGluIHRoZSBpbmRleC4KKyAqLwordm9pZCBkaWVfaWZfcGF0aF9iZXlvbmRfc3ltbGluayhjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aChwYXRoLCBzdHJsZW4ocGF0aCkpKSB7CisJCWludCBsZW4gPSBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDA7CisJCWRpZShfKCInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiKSwgcGF0aCArIGxlbik7CisJfQorfQpkaWZmIC0tZ2l0IGEvcGF0aHNwZWMuaCBiL3BhdGhzcGVjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIwMTg0YQotLS0gL2Rldi9udWxsCisrKyBiL3BhdGhzcGVjLmgKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIFBBVEhTUEVDX0gKKyNkZWZpbmUgUEFUSFNQRUNfSAorCitleHRlcm4gY2hhciAqZmluZF9wYXRoc3BlY3NfbWF0Y2hpbmdfYWdhaW5zdF9pbmRleChjb25zdCBjaGFyICoqcGF0aHNwZWMpOworZXh0ZXJuIHZvaWQgYWRkX3BhdGhzcGVjX21hdGNoZXNfYWdhaW5zdF9pbmRleChjb25zdCBjaGFyICoqcGF0aHNwZWMsIGNoYXIgKnNlZW4sIGludCBzcGVjcyk7CitleHRlcm4gY29uc3QgY2hhciAqY2hlY2tfcGF0aF9mb3JfZ2l0bGluayhjb25zdCBjaGFyICpwYXRoKTsKK2V4dGVybiB2b2lkIGRpZV9pZl9wYXRoX2JleW9uZF9zeW1saW5rKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnByZWZpeCk7CisKKyNlbmRpZiAvKiBQQVRIU1BFQ19IICovCmRpZmYgLS1naXQgYS9wZXJsL0dpdC5wbSBiL3BlcmwvR2l0LnBtCmluZGV4IDU3YTE3MTYuLjdhMjUyZWYgMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0LnBtCisrKyBiL3BlcmwvR2l0LnBtCkBAIC02MCw2ICs2MCw3IEBACiAgICAgICAgICAgICAgICAgdmVyc2lvbiBleGVjX3BhdGggaHRtbF9wYXRoIGhhc2hfb2JqZWN0IGdpdF9jbWRfdHJ5CiAgICAgICAgICAgICAgICAgcmVtb3RlX3JlZnMgcHJvbXB0CiAgICAgICAgICAgICAgICAgZ2V0X3R6X29mZnNldAorICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwgY3JlZGVudGlhbF9yZWFkIGNyZWRlbnRpYWxfd3JpdGUKICAgICAgICAgICAgICAgICB0ZW1wX2FjcXVpcmUgdGVtcF9yZWxlYXNlIHRlbXBfcmVzZXQgdGVtcF9wYXRoKTsKIAogCkBAIC0yNjksMTMgKzI3MCwxMyBAQAogCiAJaWYgKG5vdCBkZWZpbmVkIHdhbnRhcnJheSkgewogCQkjIE5vdGhpbmcgdG8gcGVwcGVyIHRoZSBwb3NzaWJsZSBleGNlcHRpb24gd2l0aC4KLQkJX2NtZF9jbG9zZSgkZmgsICRjdHgpOworCQlfY21kX2Nsb3NlKCRjdHgsICRmaCk7CiAKIAl9IGVsc2lmIChub3Qgd2FudGFycmF5KSB7CiAJCWxvY2FsICQvOwogCQlteSAkdGV4dCA9IDwkZmg+OwogCQl0cnkgewotCQkJX2NtZF9jbG9zZSgkZmgsICRjdHgpOworCQkJX2NtZF9jbG9zZSgkY3R4LCAkZmgpOwogCQl9IGNhdGNoIEdpdDo6RXJyb3I6OkNvbW1hbmQgd2l0aCB7CiAJCQkjIFBlcHBlciB3aXRoIHRoZSBvdXRwdXQ6CiAJCQlteSAkRSA9IHNoaWZ0OwpAQCAtMjg4LDcgKzI4OSw3IEBACiAJCW15IEBsaW5lcyA9IDwkZmg+OwogCQlkZWZpbmVkIGFuZCBjaG9tcCBmb3IgQGxpbmVzOwogCQl0cnkgewotCQkJX2NtZF9jbG9zZSgkZmgsICRjdHgpOworCQkJX2NtZF9jbG9zZSgkY3R4LCAkZmgpOwogCQl9IGNhdGNoIEdpdDo6RXJyb3I6OkNvbW1hbmQgd2l0aCB7CiAJCQlteSAkRSA9IHNoaWZ0OwogCQkJJEUtPnsnLW91dHB1dHJlZid9ID0gXEBsaW5lczsKQEAgLTMxNSw3ICszMTYsNyBAQAogCW15ICRsaW5lID0gPCRmaD47CiAJZGVmaW5lZCAkbGluZSBhbmQgY2hvbXAgJGxpbmU7CiAJdHJ5IHsKLQkJX2NtZF9jbG9zZSgkZmgsICRjdHgpOworCQlfY21kX2Nsb3NlKCRjdHgsICRmaCk7CiAJfSBjYXRjaCBHaXQ6OkVycm9yOjpDb21tYW5kIHdpdGggewogCQkjIFBlcHBlciB3aXRoIHRoZSBvdXRwdXQ6CiAJCW15ICRFID0gc2hpZnQ7CkBAIC0zODMsNyArMzg0LDcgQEAKIHN1YiBjb21tYW5kX2Nsb3NlX3BpcGUgewogCW15ICgkc2VsZiwgJGZoLCAkY3R4KSA9IF9tYXliZV9zZWxmKEBfKTsKIAkkY3R4IHx8PSAnPHVua25vd24+JzsKLQlfY21kX2Nsb3NlKCRmaCwgJGN0eCk7CisJX2NtZF9jbG9zZSgkY3R4LCAkZmgpOwogfQogCiA9aXRlbSBjb21tYW5kX2JpZGlfcGlwZSAoIENPTU1BTkQgWywgQVJHVU1FTlRTLi4uIF0gKQpAQCAtNDIwLDcgKzQyMSw3IEBACiBpczoKIAogCW15ICgkcGlkLCAkaW4sICRvdXQsICRjdHgpID0gJHItPmNvbW1hbmRfYmlkaV9waXBlKCdjYXQtZmlsZSAtLWJhdGNoLWNoZWNrJyk7Ci0JcHJpbnQgIjAwMDAwMDAwMFxuIiAkb3V0OworCXByaW50ICRvdXQgIjAwMDAwMDAwMFxuIjsKIAl3aGlsZSAoPCRpbj4pIHsgLi4uIH0KIAkkci0+Y29tbWFuZF9jbG9zZV9iaWRpX3BpcGUoJHBpZCwgJGluLCAkb3V0LCAkY3R4KTsKIApAQCAtNDI4LDIzICs0MjksMjYgQEAKIGN1cnJlbnRseSBpdCBpcyBzaW1wbHkgdGhlIGNvbW1hbmQgbmFtZSBidXQgaW4gZnV0dXJlIHRoZSBjb250ZXh0IG1pZ2h0CiBoYXZlIG1vcmUgY29tcGxpY2F0ZWQgc3RydWN0dXJlLgogCitDPFBJUEVfSU4+IGFuZCBDPFBJUEVfT1VUPiBtYXkgYmUgQzx1bmRlZj4gaWYgdGhleSBoYXZlIGJlZW4gY2xvc2VkIHByaW9yIHRvCitjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBUaGlzIG1heSBiZSB1c2VmdWwgaW4gYSBxdWVyeS1yZXNwb25zZSB0eXBlIG9mCitjb21tYW5kcyB3aGVyZSBjYWxsZXIgZmlyc3Qgd3JpdGVzIGEgcXVlcnkgYW5kIGxhdGVyIHJlYWRzIHJlc3BvbnNlLCBlZzoKKworCW15ICgkcGlkLCAkaW4sICRvdXQsICRjdHgpID0gJHItPmNvbW1hbmRfYmlkaV9waXBlKCdjYXQtZmlsZSAtLWJhdGNoLWNoZWNrJyk7CisJcHJpbnQgJG91dCAiMDAwMDAwMDAwXG4iOworCWNsb3NlICRvdXQ7CisJd2hpbGUgKDwkaW4+KSB7IC4uLiB9CisJJHItPmNvbW1hbmRfY2xvc2VfYmlkaV9waXBlKCRwaWQsICRpbiwgdW5kZWYsICRjdHgpOworCitUaGlzIGlkaW9tIG1heSBwcmV2ZW50IHBvdGVudGlhbCBkZWFkIGxvY2tzIGNhdXNlZCBieSBkYXRhIHNlbnQgdG8gdGhlIG91dHB1dAorcGlwZSBub3QgYmVpbmcgZmx1c2hlZCBhbmQgdGh1cyBub3QgcmVhY2hpbmcgdGhlIGV4ZWN1dGVkIGNvbW1hbmQuCisKID1jdXQKIAogc3ViIGNvbW1hbmRfY2xvc2VfYmlkaV9waXBlIHsKIAlsb2NhbCAkPzsKLQlteSAoJHBpZCwgJGluLCAkb3V0LCAkY3R4KSA9IEBfOwotCWZvcmVhY2ggbXkgJGZoICgkaW4sICRvdXQpIHsKLQkJdW5sZXNzIChjbG9zZSAkZmgpIHsKLQkJCWlmICgkISkgewotCQkJCWNhcnAgImVycm9yIGNsb3NpbmcgcGlwZTogJCEiOwotCQkJfSBlbHNpZiAoJD8gPj4gOCkgewotCQkJCXRocm93IEdpdDo6RXJyb3I6OkNvbW1hbmQoJGN0eCwgJD8gPj44KTsKLQkJCX0KLQkJfQotCX0KLQorCW15ICgkc2VsZiwgJHBpZCwgJGluLCAkb3V0LCAkY3R4KSA9IF9tYXliZV9zZWxmKEBfKTsKKwlfY21kX2Nsb3NlKCRjdHgsIChncmVwIHsgZGVmaW5lZCB9ICgkaW4sICRvdXQpKSk7CiAJd2FpdHBpZCAkcGlkLCAwOwotCiAJaWYgKCQ/ID4+IDgpIHsKIAkJdGhyb3cgR2l0OjpFcnJvcjo6Q29tbWFuZCgkY3R4LCAkPyA+PjgpOwogCX0KQEAgLTEwMjAsMTMgKzEwMjQsMTYzIEBACiB9CiAKIAorPWl0ZW0gY3JlZGVudGlhbF9yZWFkKCBGSUxFSEFORExFICkKKworUmVhZHMgY3JlZGVudGlhbCBrZXktdmFsdWUgcGFpcnMgZnJvbSBDPEZJTEVIQU5ETEU+LiAgUmVhZGluZyBzdG9wcyBhdCBFT0Ygb3IKK3doZW4gYW4gZW1wdHkgbGluZSBpcyBlbmNvdW50ZXJlZC4gIEVhY2ggbGluZSBtdXN0IGJlIG9mIHRoZSBmb3JtIEM8a2V5PXZhbHVlPgord2l0aCBhIG5vbi1lbXB0eSBrZXkuICBGdW5jdGlvbiByZXR1cm5zIGhhc2ggd2l0aCBhbGwgcmVhZCB2YWx1ZXMuICBBbnkgd2hpdGUKK3NwYWNlIChvdGhlciB0aGFuIG5ldy1saW5lIGNoYXJhY3RlcikgaXMgcHJlc2VydmVkLgorCis9Y3V0CisKK3N1YiBjcmVkZW50aWFsX3JlYWQgeworCW15ICgkc2VsZiwgJHJlYWRlcikgPSBfbWF5YmVfc2VsZihAXyk7CisJbXkgJWNyZWRlbnRpYWw7CisJd2hpbGUgKDwkcmVhZGVyPikgeworCQljaG9tcDsKKwkJaWYgKCRfIGVxICcnKSB7CisJCQlsYXN0OworCQl9IGVsc2lmICghL14oW149XSspPSguKikkLykgeworCQkJdGhyb3cgRXJyb3I6OlNpbXBsZSgidW5hYmxlIHRvIHBhcnNlIGdpdCBjcmVkZW50aWFsIGRhdGE6XG4kXyIpOworCQl9CisJCSRjcmVkZW50aWFseyQxfSA9ICQyOworCX0KKwlyZXR1cm4gJWNyZWRlbnRpYWw7Cit9CisKKz1pdGVtIGNyZWRlbnRpYWxfd3JpdGUoIEZJTEVIQU5ETEUsIENSRURFTlRJQUxfSEFTSFJFRiApCisKK1dyaXRlcyBjcmVkZW50aWFsIGtleS12YWx1ZSBwYWlycyBmcm9tIGhhc2ggcmVmZXJlbmNlZCBieQorQzxDUkVERU5USUFMX0hBU0hSRUY+IHRvIEM8RklMRUhBTkRMRT4uICBLZXlzIGFuZCB2YWx1ZXMgY2Fubm90IGNvbnRhaW4KK25ldy1saW5lcyBvciBOVUwgYnl0ZXMgY2hhcmFjdGVycywgYW5kIGtleSBjYW5ub3QgY29udGFpbiBlcXVhbCBzaWducyBub3IgYmUKK2VtcHR5IChpZiB0aGV5IGRvIEVycm9yOjpTaW1wbGUgaXMgdGhyb3duKS4gIEFueSB3aGl0ZSBzcGFjZSBpcyBwcmVzZXJ2ZWQuICBJZgordmFsdWUgZm9yIGEga2V5IGlzIEM8dW5kZWY+LCBpdCB3aWxsIGJlIHNraXBwZWQuCisKK0lmIEM8J3VybCc+IGtleSBleGlzdHMgaXQgd2lsbCBiZSB3cml0dGVuIGZpcnN0LiAgKEFsbCB0aGUgb3RoZXIga2V5LXZhbHVlCitwYWlycyBhcmUgd3JpdHRlbiBpbiBzb3J0ZWQgb3JkZXIgYnV0IHlvdSBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGF0KS4gIE9uY2UKK2FsbCBsaW5lcyBhcmUgd3JpdHRlbiwgYW4gZW1wdHkgbGluZSBpcyBwcmludGVkLgorCis9Y3V0CisKK3N1YiBjcmVkZW50aWFsX3dyaXRlIHsKKwlteSAoJHNlbGYsICR3cml0ZXIsICRjcmVkZW50aWFsKSA9IF9tYXliZV9zZWxmKEBfKTsKKwlteSAoJGtleSwgJHZhbHVlKTsKKworCSMgQ2hlY2sgaWYgJGNyZWRlbnRpYWwgaXMgdmFsaWQgcHJpb3IgdG8gd3JpdGluZyBhbnl0aGluZworCXdoaWxlICgoJGtleSwgJHZhbHVlKSA9IGVhY2ggJSRjcmVkZW50aWFsKSB7CisJCWlmICghZGVmaW5lZCAka2V5IHx8ICFsZW5ndGggJGtleSkgeworCQkJdGhyb3cgRXJyb3I6OlNpbXBsZSgiY3JlZGVudGlhbCBrZXkgZW1wdHkgb3IgdW5kZWZpbmVkIik7CisJCX0gZWxzaWYgKCRrZXkgPX4gL1s9XG5cMF0vKSB7CisJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJjcmVkZW50aWFsIGtleSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6ICRrZXkiKTsKKwkJfSBlbHNpZiAoZGVmaW5lZCAkdmFsdWUgJiYgJHZhbHVlID1+IC9bXG5cMF0vKSB7CisJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJjcmVkZW50aWFsIHZhbHVlIGZvciBrZXk9JGtleSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnM6ICR2YWx1ZSIpOworCQl9CisJfQorCisJZm9yICRrZXkgKHNvcnQgeworCQkjIHVybCBvdmVyd3JpdGVzIG90aGVyIGZpZWxkcywgc28gaXQgbXVzdCBjb21lIGZpcnN0CisJCXJldHVybiAtMSBpZiAkYSBlcSAndXJsJzsKKwkJcmV0dXJuICAxIGlmICRiIGVxICd1cmwnOworCQlyZXR1cm4gJGEgY21wICRiOworCX0ga2V5cyAlJGNyZWRlbnRpYWwpIHsKKwkJaWYgKGRlZmluZWQgJGNyZWRlbnRpYWwtPnska2V5fSkgeworCQkJcHJpbnQgJHdyaXRlciAka2V5LCAnPScsICRjcmVkZW50aWFsLT57JGtleX0sICJcbiI7CisJCX0KKwl9CisJcHJpbnQgJHdyaXRlciAiXG4iOworfQorCitzdWIgX2NyZWRlbnRpYWxfcnVuIHsKKwlteSAoJHNlbGYsICRjcmVkZW50aWFsLCAkb3ApID0gX21heWJlX3NlbGYoQF8pOworCW15ICgkcGlkLCAkcmVhZGVyLCAkd3JpdGVyLCAkY3R4KSA9IGNvbW1hbmRfYmlkaV9waXBlKCdjcmVkZW50aWFsJywgJG9wKTsKKworCWNyZWRlbnRpYWxfd3JpdGUgJHdyaXRlciwgJGNyZWRlbnRpYWw7CisJY2xvc2UgJHdyaXRlcjsKKworCWlmICgkb3AgZXEgImZpbGwiKSB7CisJCSUkY3JlZGVudGlhbCA9IGNyZWRlbnRpYWxfcmVhZCAkcmVhZGVyOworCX0KKwlpZiAoPCRyZWFkZXI+KSB7CisJCXRocm93IEVycm9yOjpTaW1wbGUoInVuZXhwZWN0ZWQgb3V0cHV0IGZyb20gZ2l0IGNyZWRlbnRpYWwgJG9wIHJlc3BvbnNlOlxuJF9cbiIpOworCX0KKworCWNvbW1hbmRfY2xvc2VfYmlkaV9waXBlKCRwaWQsICRyZWFkZXIsIHVuZGVmLCAkY3R4KTsKK30KKworPWl0ZW0gY3JlZGVudGlhbCggQ1JFREVOVElBTF9IQVNIUkVGIFssIE9QRVJBVElPTiBdICkKKworPWl0ZW0gY3JlZGVudGlhbCggQ1JFREVOVElBTF9IQVNIUkVGLCBDT0RFICkKKworRXhlY3V0ZXMgQzxnaXQgY3JlZGVudGlhbD4gZm9yIGEgZ2l2ZW4gc2V0IG9mIGNyZWRlbnRpYWxzIGFuZCBzcGVjaWZpZWQKK29wZXJhdGlvbi4gIEluIGJvdGggZm9ybXMgQzxDUkVERU5USUFMX0hBU0hSRUY+IG5lZWRzIHRvIGJlIGEgcmVmZXJlbmNlIHRvCithIGhhc2ggd2hpY2ggc3RvcmVzIGNyZWRlbnRpYWxzLiAgVW5kZXIgY2VydGFpbiBjb25kaXRpb25zIHRoZSBoYXNoIGNhbgorY2hhbmdlLgorCitJbiB0aGUgZmlyc3QgZm9ybSwgQzxPUEVSQVRJT04+IGNhbiBiZSBDPCdmaWxsJz4sIEM8J2FwcHJvdmUnPiBvciBDPCdyZWplY3QnPiwKK2FuZCBmdW5jdGlvbiB3aWxsIGV4ZWN1dGUgY29ycmVzcG9uZGluZyBDPGdpdCBjcmVkZW50aWFsPiBzdWItY29tbWFuZC4gIElmCitpdCdzIG9taXR0ZWQgQzwnZmlsbCc+IGlzIGFzc3VtZWQuICBJbiBjYXNlIG9mIEM8J2ZpbGwnPiB0aGUgdmFsdWVzIHN0b3JlZCBpbgorQzxDUkVERU5USUFMX0hBU0hSRUY+IHdpbGwgYmUgY2hhbmdlZCB0byB0aGUgb25lcyByZXR1cm5lZCBieSB0aGUgQzxnaXQKK2NyZWRlbnRpYWwgZmlsbD4gY29tbWFuZC4gIFRoZSB1c3VhbCB1c2FnZSB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOgorCisJbXkgJWNyZWQgPSAoCisJCSdwcm90b2NvbCcgPT4gJ2h0dHBzJywKKwkJJ2hvc3QnID0+ICdleGFtcGxlLmNvbScsCisJCSd1c2VybmFtZScgPT4gJ2JvYicKKwkpOworCUdpdDo6Y3JlZGVudGlhbCBcJWNyZWQ7CisJaWYgKHRyeV90b19hdXRoZW50aWNhdGUoJGNyZWR7J3VzZXJuYW1lJ30sICRjcmVkeydwYXNzd29yZCd9KSkgeworCQlHaXQ6OmNyZWRlbnRpYWwgXCVjcmVkLCAnYXBwcm92ZSc7CisJCS4uLiBkbyBtb3JlIHN0dWZmIC4uLgorCX0gZWxzZSB7CisJCUdpdDo6Y3JlZGVudGlhbCBcJWNyZWQsICdyZWplY3QnOworCX0KKworSW4gdGhlIHNlY29uZCBmb3JtLCBDPENPREU+IG5lZWRzIHRvIGJlIGEgcmVmZXJlbmNlIHRvIGEgc3Vicm91dGluZS4gIFRoZQorZnVuY3Rpb24gd2lsbCBleGVjdXRlIEM8Z2l0IGNyZWRlbnRpYWwgZmlsbD4gdG8gZmlsbCB0aGUgcHJvdmlkZWQgY3JlZGVudGlhbAoraGFzaCwgdGhlbiBjYWxsIEM8Q09ERT4gd2l0aCBDPENSRURFTlRJQUxfSEFTSFJFRj4gYXMgdGhlIHNvbGUgYXJndW1lbnQuICBJZgorQzxDT0RFPidzIHJldHVybiB2YWx1ZSBpcyBkZWZpbmVkLCB0aGUgZnVuY3Rpb24gd2lsbCBleGVjdXRlIEM8Z2l0IGNyZWRlbnRpYWwKK2FwcHJvdmU+IChpZiByZXR1cm4gdmFsdWUgeWllbGRzIHRydWUpIG9yIEM8Z2l0IGNyZWRlbnRpYWwgcmVqZWN0PiAoaWYgcmV0dXJuCit2YWx1ZSBpcyBmYWxzZSkuICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIHVuZGVmLCBub3RoaW5nIGF0IGFsbCBpcyBleGVjdXRlZDsKK3RoaXMgaXMgdXNlZnVsLCBmb3IgZXhhbXBsZSwgaWYgdGhlIGNyZWRlbnRpYWwgY291bGQgbmVpdGhlciBiZSB2ZXJpZmllZCBub3IKK3JlamVjdGVkIGR1ZSB0byBhbiB1bnJlbGF0ZWQgbmV0d29yayBlcnJvci4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHNhbWUgYXMKK3doYXQgQzxDT0RFPiByZXR1cm5zLiAgV2l0aCB0aGlzIGZvcm0sIHRoZSB1c2FnZSBtaWdodCBsb29rIGFzIGZvbGxvd3M6CisKKwlpZiAoR2l0OjpjcmVkZW50aWFsIHsKKwkJJ3Byb3RvY29sJyA9PiAnaHR0cHMnLAorCQknaG9zdCcgPT4gJ2V4YW1wbGUuY29tJywKKwkJJ3VzZXJuYW1lJyA9PiAnYm9iJworCX0sIHN1YiB7CisJCW15ICRjcmVkID0gc2hpZnQ7CisJCXJldHVybiAhIXRyeV90b19hdXRoZW50aWNhdGUoJGNyZWQtPnsndXNlcm5hbWUnfSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3JlZC0+eydwYXNzd29yZCd9KTsKKwl9KSB7CisJCS4uLiBkbyBtb3JlIHN0dWZmIC4uLgorCX0KKworPWN1dAorCitzdWIgY3JlZGVudGlhbCB7CisJbXkgKCRzZWxmLCAkY3JlZGVudGlhbCwgJG9wX29yX2NvZGUpID0gKF9tYXliZV9zZWxmKEBfKSwgJ2ZpbGwnKTsKKworCWlmICgnQ09ERScgZXEgcmVmICRvcF9vcl9jb2RlKSB7CisJCV9jcmVkZW50aWFsX3J1biAkY3JlZGVudGlhbCwgJ2ZpbGwnOworCQlteSAkcmV0ID0gJG9wX29yX2NvZGUtPigkY3JlZGVudGlhbCk7CisJCWlmIChkZWZpbmVkICRyZXQpIHsKKwkJCV9jcmVkZW50aWFsX3J1biAkY3JlZGVudGlhbCwgJHJldCA/ICdhcHByb3ZlJyA6ICdyZWplY3QnOworCQl9CisJCXJldHVybiAkcmV0OworCX0gZWxzZSB7CisJCV9jcmVkZW50aWFsX3J1biAkY3JlZGVudGlhbCwgJG9wX29yX2NvZGU7CisJfQorfQorCiB7ICMgJVRFTVBfKiBMZXhpY2FsIENvbnRleHQKIAogbXkgKCVURU1QX0ZJTEVNQVAsICVURU1QX0ZJTEVTKTsKIAogPWl0ZW0gdGVtcF9hY3F1aXJlICggTkFNRSApCiAKLUF0dGVtcHRzIHRvIHJldHJlaXZlIHRoZSB0ZW1wb3JhcnkgZmlsZSBtYXBwZWQgdG8gdGhlIHN0cmluZyBDPE5BTUU+LiBJZiBhbgorQXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlIHRlbXBvcmFyeSBmaWxlIG1hcHBlZCB0byB0aGUgc3RyaW5nIEM8TkFNRT4uIElmIGFuCiBhc3NvY2lhdGVkIHRlbXAgZmlsZSBoYXMgbm90IGJlZW4gY3JlYXRlZCB0aGlzIHNlc3Npb24gb3Igd2FzIGNsb3NlZCwgaXQgaXMKIGNyZWF0ZWQsIGNhY2hlZCwgYW5kIHNldCBmb3IgYXV0b2ZsdXNoIGFuZCBiaW5tb2RlLgogCkBAIC0xMTExLDcgKzEyNjUsNyBAQAogCQkJJHRtcGRpciA9ICRzZWxmLT5yZXBvX3BhdGgoKTsKIAkJfQogCi0JCSgkJHRlbXBfZmQsICRmbmFtZSkgPSBGaWxlOjpUZW1wLT50ZW1wZmlsZSgKKwkJKCQkdGVtcF9mZCwgJGZuYW1lKSA9IEZpbGU6OlRlbXA6OnRlbXBmaWxlKAogCQkJJ0dpdF9YWFhYWFgnLCBVTkxJTksgPT4gMSwgRElSID0+ICR0bXBkaXIsCiAJCQkpIG9yIHRocm93IEVycm9yOjpTaW1wbGUoImNvdWxkbid0IG9wZW4gbmV3IHRlbXAgZmlsZSIpOwogCkBAIC0xMzM1LDEyICsxNDg5LDEyIEBACiAJCWlmIChub3QgZGVmaW5lZCAkcGlkKSB7CiAJCQl0aHJvdyBFcnJvcjo6U2ltcGxlKCJvcGVuIGZhaWxlZDogJCEiKTsKIAkJfSBlbHNpZiAoJHBpZCA9PSAwKSB7Ci0JCQlpZiAoZGVmaW5lZCAkb3B0c3tTVERFUlJ9KSB7Ci0JCQkJY2xvc2UgU1RERVJSOwotCQkJfQogCQkJaWYgKCRvcHRze1NUREVSUn0pIHsKIAkJCQlvcGVuIChTVERFUlIsICc+JicsICRvcHRze1NUREVSUn0pCiAJCQkJCW9yIGRpZSAiZHVwIGZhaWxlZDogJCEiOworCQkJfSBlbHNpZiAoZGVmaW5lZCAkb3B0c3tTVERFUlJ9KSB7CisJCQkJb3BlbiAoU1RERVJSLCAnPicsICcvZGV2L251bGwnKQorCQkJCQlvciBkaWUgIm9wZW5pbmcgL2Rldi9udWxsIGZhaWxlZDogJCEiOwogCQkJfQogCQkJX2NtZF9leGVjKCRzZWxmLCAkY21kLCBAYXJncyk7CiAJCX0KQEAgLTEzNzUsOSArMTUyOSwxMSBAQAogCiAjIENsb3NlIHBpcGUgdG8gYSBzdWJwcm9jZXNzLgogc3ViIF9jbWRfY2xvc2UgewotCW15ICgkZmgsICRjdHgpID0gQF87Ci0JaWYgKG5vdCBjbG9zZSAkZmgpIHsKLQkJaWYgKCQhKSB7CisJbXkgJGN0eCA9IHNoaWZ0IEBfOworCWZvcmVhY2ggbXkgJGZoIChAXykgeworCQlpZiAoY2xvc2UgJGZoKSB7CisJCQkjIG5vcAorCQl9IGVsc2lmICgkISkgewogCQkJIyBJdCdzIGp1c3QgY2xvc2UsIG5vIHBvaW50IGluIGZhdGFsaXRpZXMKIAkJCWNhcnAgImVycm9yIGNsb3NpbmcgcGlwZTogJCEiOwogCQl9IGVsc2lmICgkPyA+PiA4KSB7CmRpZmYgLS1naXQgYS9wZXJsL0dpdC9JMThOLnBtIGIvcGVybC9HaXQvSTE4Ti5wbQppbmRleCA0MGRkODk3Li5mODg5ZmQ2IDEwMDY0NAotLS0gYS9wZXJsL0dpdC9JMThOLnBtCisrKyBiL3BlcmwvR2l0L0kxOE4ucG0KQEAgLTY4LDcgKzY4LDcgQEAKIAogCXByaW50IF9fKCJXZWxjb21lIHRvIEdpdCFcbiIpOwogCi0JcHJpbnRmIF9fKCJUaGUgZm9sbG93aW5nIGVycm9yIG9jY3VyZWQ6ICVzXG4iKSwgJGVycm9yOworCXByaW50ZiBfXygiVGhlIGZvbGxvd2luZyBlcnJvciBvY2N1cnJlZDogJXNcbiIpLCAkZXJyb3I7CiAKID1oZWFkMSBERVNDUklQVElPTgogCmRpZmYgLS1naXQgYS9wZXJsL0dpdC9TVk4ucG0gYi9wZXJsL0dpdC9TVk4ucG0KaW5kZXggOGM4NDU2MC4uNTI3M2VlOCAxMDA2NDQKLS0tIGEvcGVybC9HaXQvU1ZOLnBtCisrKyBiL3BlcmwvR2l0L1NWTi5wbQpAQCAtNDkwLDcgKzQ5MCw3IEBACiAJIwogCSMgQWRkaXRpb25hbGx5LCAlIG11c3QgYmUgZXNjYXBlZCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIGVzY2FwaW5nCiAJIyBhbmQgd2Ugd2FudCBvdXIgZXNjYXBlZCByZWZuYW1lIHRvIGJlIHJldmVyc2libGUKLQkkcmVmbmFtZSA9fiBzeyhbIFwlflxeOlw/XCpcW1x0XSl9e3VjIHNwcmludGYoJyUlJTAyeCcsb3JkKCQxKSl9ZWc7CisJJHJlZm5hbWUgPX4gc3soWyBcJX5cXjpcP1wqXFtcdF0pfXtzcHJpbnRmKCclJSUwMlgnLG9yZCgkMSkpfWVnOwogCiAJIyBubyBzbGFzaC1zZXBhcmF0ZWQgY29tcG9uZW50IGNhbiBiZWdpbiB3aXRoIGEgZG90IC4KIAkjIC8uKiBiZWNvbWVzIC8lMkUqCkBAIC0xNDkzLDEzICsxNDkzLDE4IEBACiAJbXkgQG1lcmdlZF9jb21taXRfcmFuZ2VzOwogCSMgZmluZCB0aGUgdGlwCiAJZm9yIG15ICRyYW5nZSAoIEByYW5nZXMgKSB7CisJCWlmICgkcmFuZ2UgPX4gL1sqXSQvKSB7CisJCQl3YXJuICJXOiBJZ25vcmluZyBwYXJ0aWFsIG1lcmdlIGluIHN2bjptZXJnZWluZm8gIgorCQkJCS4iZGlycHJvcDogJHNvdXJjZTokcmFuZ2VcbiI7CisJCQluZXh0OworCQl9CiAJCW15ICgkYm90dG9tLCAkdG9wKSA9IHNwbGl0ICItIiwgJHJhbmdlOwogCQkkdG9wIHx8PSAkYm90dG9tOwogCQlteSAkYm90dG9tX2NvbW1pdCA9ICRncy0+ZmluZF9yZXZfYWZ0ZXIoICRib3R0b20sIDEsICR0b3AgKTsKIAkJbXkgJHRvcF9jb21taXQgPSAkZ3MtPmZpbmRfcmV2X2JlZm9yZSggJHRvcCwgMSwgJGJvdHRvbSApOwogCiAJCXVubGVzcyAoJHRvcF9jb21taXQgYW5kICRib3R0b21fY29tbWl0KSB7Ci0JCQl3YXJuICJXOnVua25vd24gcGF0aC9yZXYgaW4gc3ZuOm1lcmdlaW5mbyAiCisJCQl3YXJuICJXOiB1bmtub3duIHBhdGgvcmV2IGluIHN2bjptZXJnZWluZm8gIgogCQkJCS4iZGlycHJvcDogJHNvdXJjZTokcmFuZ2VcbiI7CiAJCQluZXh0OwogCQl9CkBAIC0yMzY5LDcgKzIzNzQsNyBAQAogCiBzdWIgdXJpX2VuY29kZSB7CiAJbXkgKCRmKSA9IEBfOwotCSRmID1+IHMjKFteYS16QS1aMC05XCohXDpfXC4vXC1dKSN1YyBzcHJpbnRmKCIlJSUwMngiLG9yZCgkMSkpI2VnOworCSRmID1+IHMjKFteYS16QS1aMC05XCohXDpfXC4vXC1dKSNzcHJpbnRmKCIlJSUwMlgiLG9yZCgkMSkpI2VnOwogCSRmCiB9CiAKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L1NWTi9FZGl0b3IucG0gYi9wZXJsL0dpdC9TVk4vRWRpdG9yLnBtCmluZGV4IDNiYmMyMGEuLmIzYmNkNDcgMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0L1NWTi9FZGl0b3IucG0KKysrIGIvcGVybC9HaXQvU1ZOL0VkaXRvci5wbQpAQCAtMTQ1LDcgKzE0NSw4IEBACiBzdWIgdXJsX3BhdGggewogCW15ICgkc2VsZiwgJHBhdGgpID0gQF87CiAJaWYgKCRzZWxmLT57dXJsfSA9fiBtI15odHRwcz86Ly8jKSB7Ci0JCSRwYXRoID1+IHMhKFtefmEtekEtWjAtOV8uLy1dKSF1YyBzcHJpbnRmKCIlJSUwMngiLG9yZCgkMSkpIWVnOworCQkjIGNoYXJhY3RlcnMgYXJlIHRha2VuIGZyb20gc3VidmVyc2lvbi9saWJzdm5fc3Vici9wYXRoLmMKKwkJJHBhdGggPX4gcyMoW15+YS16QS1aMC05Xy4vISQmJygpKissLV0pI3NwcmludGYoIiUlJTAyWCIsb3JkKCQxKSkjZWc7CiAJfQogCSRzZWxmLT57dXJsfSAuICcvJyAuICRzZWxmLT5yZXBvX3BhdGgoJHBhdGgpOwogfQpAQCAtMzU4LDEyICszNTksMTIgQEAKIAkJCW1vZGVfYSA9PiAkbS0+e21vZGVfYX0sIG1vZGVfYiA9PiAnMDAwMDAwJywKIAkJCXNoYTFfYSA9PiAkbS0+e3NoYTFfYX0sIHNoYTFfYiA9PiAnMCcgeCA0MCwKIAkJCWNoZyA9PiAnRCcsIGZpbGVfYiA9PiAkbS0+e2ZpbGVfYn0KLQkJfSk7CisJCX0sICRkZWxldGlvbnMpOwogCQkkc2VsZi0+QSh7CiAJCQltb2RlX2EgPT4gJzAwMDAwMCcsIG1vZGVfYiA9PiAkbS0+e21vZGVfYn0sCiAJCQlzaGExX2EgPT4gJzAnIHggNDAsIHNoYTFfYiA9PiAkbS0+e3NoYTFfYn0sCiAJCQljaGcgPT4gJ0EnLCBmaWxlX2IgPT4gJG0tPntmaWxlX2J9Ci0JCX0pOworCQl9LCAkZGVsZXRpb25zKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNDk4LDYgKzQ5OSw4IEBACiAxOwogX19FTkRfXwogCis9aGVhZDEgTkFNRQorCiBHaXQ6OlNWTjo6RWRpdG9yIC0gY29tbWl0IGRyaXZlciBmb3IgImdpdCBzdm4gc2V0LXRyZWUiIGFuZCBkY29tbWl0CiAKID1oZWFkMSBTWU5PUFNJUwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQvU1ZOL0ZldGNoZXIucG0gYi9wZXJsL0dpdC9TVk4vRmV0Y2hlci5wbQppbmRleCAwNDZhN2EyLi5iZDE3NDE4IDEwMDY0NAotLS0gYS9wZXJsL0dpdC9TVk4vRmV0Y2hlci5wbQorKysgYi9wZXJsL0dpdC9TVk4vRmV0Y2hlci5wbQpAQCAtMSw2ICsxLDcgQEAKIHBhY2thZ2UgR2l0OjpTVk46OkZldGNoZXI7Ci11c2UgdmFycyBxdy9ASVNBICRfaWdub3JlX3JlZ2V4ICRfcHJlc2VydmVfZW1wdHlfZGlycyAkX3BsYWNlaG9sZGVyX2ZpbGVuYW1lCi0gICAgICAgICAgICBAZGVsZXRlZF9ncGF0aCAlYWRkZWRfcGxhY2Vob2xkZXIgJHJlcG9faWQvOwordXNlIHZhcnMgcXcvQElTQSAkX2lnbm9yZV9yZWdleCAkX2luY2x1ZGVfcmVnZXggJF9wcmVzZXJ2ZV9lbXB0eV9kaXJzCisgICAgICAgICAgICAkX3BsYWNlaG9sZGVyX2ZpbGVuYW1lIEBkZWxldGVkX2dwYXRoICVhZGRlZF9wbGFjZWhvbGRlcgorICAgICAgICAgICAgJHJlcG9faWQvOwogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIHVzZSBTVk46OkRlbHRhOwpAQCAtMzMsNiArMzQsMTAgQEAKIAlteSAkdiA9IGV2YWwgeyBjb21tYW5kX29uZWxpbmUoJ2NvbmZpZycsICctLWdldCcsICRrKSB9OwogCSRzZWxmLT57aWdub3JlX3JlZ2V4fSA9ICR2OwogCisJJGsgPSAic3ZuLXJlbW90ZS4kcmVwb19pZC5pbmNsdWRlLXBhdGhzIjsKKwkkdiA9IGV2YWwgeyBjb21tYW5kX29uZWxpbmUoJ2NvbmZpZycsICctLWdldCcsICRrKSB9OworCSRzZWxmLT57aW5jbHVkZV9yZWdleH0gPSAkdjsKKwogCSRrID0gInN2bi1yZW1vdGUuJHJlcG9faWQucHJlc2VydmUtZW1wdHktZGlycyI7CiAJJHYgPSBldmFsIHsgY29tbWFuZF9vbmVsaW5lKCdjb25maWcnLCAnLS1nZXQnLCAnLS1ib29sJywgJGspIH07CiAJaWYgKCR2ICYmICR2IGVxICd0cnVlJykgewpAQCAtMTE3LDExICsxMjIsMTggQEAKIH0KIAogIyByZXR1cm4gdmFsdWU6IDAgLS0gZG9uJ3QgaWdub3JlLCAxIC0tIGlnbm9yZQorIyBUaGlzIHdpbGwgYWxzbyBjaGVjayB3aGV0aGVyIHRoZSBwYXRoIGlzIGV4cGxpY2l0bHkgaW5jbHVkZWQKIHN1YiBpc19wYXRoX2lnbm9yZWQgewogCW15ICgkc2VsZiwgJHBhdGgpID0gQF87CiAJcmV0dXJuIDEgaWYgaW5fZG90X2dpdCgkcGF0aCk7CiAJcmV0dXJuIDEgaWYgZGVmaW5lZCgkc2VsZi0+e2lnbm9yZV9yZWdleH0pICYmCiAJICAgICAgICAgICAgJHBhdGggPX4gbSEkc2VsZi0+e2lnbm9yZV9yZWdleH0hOworCXJldHVybiAwIGlmIGRlZmluZWQoJHNlbGYtPntpbmNsdWRlX3JlZ2V4fSkgJiYKKwkgICAgICAgICAgICAkcGF0aCA9fiBtISRzZWxmLT57aW5jbHVkZV9yZWdleH0hOworCXJldHVybiAwIGlmIGRlZmluZWQoJF9pbmNsdWRlX3JlZ2V4KSAmJgorCSAgICAgICAgICAgICRwYXRoID1+IG0hJF9pbmNsdWRlX3JlZ2V4ITsKKwlyZXR1cm4gMSBpZiBkZWZpbmVkKCRzZWxmLT57aW5jbHVkZV9yZWdleH0pOworCXJldHVybiAxIGlmIGRlZmluZWQoJF9pbmNsdWRlX3JlZ2V4KTsKIAlyZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCgkX2lnbm9yZV9yZWdleCk7CiAJcmV0dXJuIDEgaWYgJHBhdGggPX4gbSEkX2lnbm9yZV9yZWdleCFvOwogCXJldHVybiAwOwpAQCAtNTEyLDYgKzUyNCw4IEBACiAxOwogX19FTkRfXwogCis9aGVhZDEgTkFNRQorCiBHaXQ6OlNWTjo6RmV0Y2hlciAtIHRyZWUgZGVsdGEgY29uc3VtZXIgZm9yICJnaXQgc3ZuIGZldGNoIgogCiA9aGVhZDEgU1lOT1BTSVMKZGlmZiAtLWdpdCBhL3BlcmwvR2l0L1NWTi9Qcm9tcHQucG0gYi9wZXJsL0dpdC9TVk4vUHJvbXB0LnBtCmluZGV4IDc0ZGFhN2EuLmU5NDBiMDggMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0L1NWTi9Qcm9tcHQucG0KKysrIGIvcGVybC9HaXQvU1ZOL1Byb21wdC5wbQpAQCAtMTI1LDYgKzEyNSw4IEBACiAxOwogX19FTkRfXwogCis9aGVhZDEgTkFNRQorCiBHaXQ6OlNWTjo6UHJvbXB0IC0gYXV0aGVudGljYXRpb24gY2FsbGJhY2tzIGZvciBnaXQtc3ZuCiAKID1oZWFkMSBTWU5PUFNJUwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQvU1ZOL1JhLnBtIGIvcGVybC9HaXQvU1ZOL1JhLnBtCmluZGV4IDA0OWM5N2IuLjc1ZWNjNDIgMTAwNjQ0Ci0tLSBhL3BlcmwvR2l0L1NWTi9SYS5wbQorKysgYi9wZXJsL0dpdC9TVk4vUmEucG0KQEAgLTI5NSw3ICsyOTUsNyBAQAogCW15ICRmdWxsX3VybCA9IGFkZF9wYXRoX3RvX3VybCggJHNlbGYtPnVybCwgJHBhdGggKTsKIAlteSAoJHJhLCAkcmVwYXJlbnRlZCk7CiAKLQlpZiAoJG9sZF91cmwgPX4gbSNec3ZuKFwrc3NoKT86Ly8jIHx8CisJaWYgKCRvbGRfdXJsID1+IG0jXnN2bihcK1x3Kyk/Oi8vIyB8fAogCSAgICAoJGZ1bGxfdXJsID1+IG0jXmh0dHBzPzovLyMgJiYKIAkgICAgIGNhbm9uaWNhbGl6ZV91cmwoJGZ1bGxfdXJsKSBuZSAkZnVsbF91cmwpKSB7CiAJCSRfWzBdID0gdW5kZWY7CkBAIC02MjcsNiArNjI3LDggQEAKIDE7CiBfX0VORF9fCiAKKz1oZWFkMSBOQU1FCisKIEdpdDo6U1ZOOjpSYSAtIFN1YnZlcnNpb24gcmVtb3RlIGFjY2VzcyBmdW5jdGlvbnMgZm9yIGdpdC1zdm4KIAogPWhlYWQxIFNZTk9QU0lTCmRpZmYgLS1naXQgYS9wZXJsL0dpdC9TVk4vVXRpbHMucG0gYi9wZXJsL0dpdC9TVk4vVXRpbHMucG0KaW5kZXggOGI4Y2YzNy4uM2QxYTA5MyAxMDA2NDQKLS0tIGEvcGVybC9HaXQvU1ZOL1V0aWxzLnBtCisrKyBiL3BlcmwvR2l0L1NWTi9VdGlscy5wbQpAQCAtMTU1LDcgKzE1NSw3IEBACiAKIAlteSBAcGFydHM7CiAJZm9yZWFjaCBteSAkcGFydCAoc3BsaXQgbXsvK30sICR1cmlfcGF0aCkgewotCQkkcGFydCA9fiBzLyhbXn5cdy4lKy1dfCUoPyFbYS1mQS1GMC05XXsyfSkpL3NwcmludGYoIiUlJTAyWCIsb3JkKCQxKSkvZWc7CisJCSRwYXJ0ID1+IHMvKFteIVwkJSYnKCkqKywuXC9cdzo9XEBfYH4tXXwlKD8hW2EtZkEtRjAtOV17Mn0pKS9zcHJpbnRmKCIlJSUwMlgiLG9yZCgkMSkpL2VnOwogCQlwdXNoIEBwYXJ0cywgJHBhcnQ7CiAJfQogCmRpZmYgLS1naXQgYS9wZXJsL3ByaXZhdGUtRXJyb3IucG0gYi9wZXJsL3ByaXZhdGUtRXJyb3IucG0KaW5kZXggMTFlOWNkOS4uNjA5ODEzNSAxMDA2NDQKLS0tIGEvcGVybC9wcml2YXRlLUVycm9yLnBtCisrKyBiL3BlcmwvcHJpdmF0ZS1FcnJvci5wbQpAQCAtNjMwLDcgKzYzMCw3IEBACiA9aGVhZDIgQ09OU1RSVUNUT1JTCiAKIFRoZSBDPEVycm9yPiBvYmplY3QgaXMgaW1wbGVtZW50ZWQgYXMgYSBIQVNILiBUaGlzIEhBU0ggaXMgaW5pdGlhbGl6ZWQKLXdpdGggdGhlIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXNzZWQgdG8gaXQncyBjb25zdHJ1Y3Rvci4gVGhlIGVsZW1lbnRzCit3aXRoIHRoZSBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvIGl0cyBjb25zdHJ1Y3Rvci4gVGhlIGVsZW1lbnRzCiB0aGF0IGFyZSB1c2VkIGJ5LCBvciBhcmUgcmV0cmlldmFibGUgYnkgdGhlIEM8RXJyb3I+IGNsYXNzIGFyZSBsaXN0ZWQKIGJlbG93LCBvdGhlciBjbGFzc2VzIG1heSBhZGQgdG8gdGhlc2UuCiAKQEAgLTc2MywxMyArNzYzLDEzIEBACiAKID1pdGVtIEVycm9yOjpTaW1wbGUKIAotVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byBob2xkIHNpbXBsZSBlcnJvciBzdHJpbmdzIGFuZCB2YWx1ZXMuIEl0J3MKK1RoaXMgY2xhc3MgY2FuIGJlIHVzZWQgdG8gaG9sZCBzaW1wbGUgZXJyb3Igc3RyaW5ncyBhbmQgdmFsdWVzLiBJdHMKIGNvbnN0cnVjdG9yIHRha2VzIHR3byBhcmd1bWVudHMuIFRoZSBmaXJzdCBpcyBhIHRleHQgdmFsdWUsIHRoZSBzZWNvbmQKIGlzIGEgbnVtZXJpYyB2YWx1ZS4gVGhlc2UgdmFsdWVzIGFyZSB3aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdGhlCiBvdmVybG9hZCBtZXRob2RzLgogCiBJZiB0aGUgdGV4dCB2YWx1ZSBlbmRzIHdpdGggQzxhdCBmaWxlIGxpbmUgMT4gYXMgJEAgc3RyaW5ncyBkbywgdGhlbgotdGhpcyBpbmZvbWF0aW9uIHdpbGwgYmUgdXNlZCB0byBzZXQgdGhlIEM8LWZpbGU+IGFuZCBDPC1saW5lPiBhcmd1bWVudHMKK3RoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIHRvIHNldCB0aGUgQzwtZmlsZT4gYW5kIEM8LWxpbmU+IGFyZ3VtZW50cwogb2YgdGhlIGVycm9yIG9iamVjdC4KIAogVGhpcyBjbGFzcyBpcyB1c2VkIGludGVybmFsbHkgaWYgYW4gZXZhbCdkIGJsb2NrIGRpZSdzIHdpdGggYW4gZXJyb3IKZGlmZiAtLWdpdCBhL3BrdC1saW5lLmMgYi9wa3QtbGluZS5jCmluZGV4IGVhYmExNWYuLjcwZjE5NTAgMTAwNjQ0Ci0tLSBhL3BrdC1saW5lLmMKKysrIGIvcGt0LWxpbmUuYwpAQCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInBrdC1saW5lLmgiCiAKK2NoYXIgcGFja2V0X2J1ZmZlcltMQVJHRV9QQUNLRVRfTUFYXTsKIHN0YXRpYyBjb25zdCBjaGFyICpwYWNrZXRfdHJhY2VfcHJlZml4ID0gImdpdCI7CiBzdGF0aWMgY29uc3QgY2hhciB0cmFjZV9rZXlbXSA9ICJHSVRfVFJBQ0VfUEFDS0VUIjsKIApAQCAtNDcsNDUgKzQ4LDEzIEBACiB9CiAKIC8qCi0gKiBXcml0ZSBhIHBhY2tldGl6ZWQgc3RyZWFtLCB3aGVyZSBlYWNoIGxpbmUgaXMgcHJlY2VkZWQgYnkKLSAqIGl0cyBsZW5ndGggKGluY2x1ZGluZyB0aGUgaGVhZGVyKSBhcyBhIDQtYnl0ZSBoZXggbnVtYmVyLgotICogQSBsZW5ndGggb2YgJ3plcm8nIG1lYW5zIGVuZCBvZiBzdHJlYW0gKGFuZCBhIGxlbmd0aCBvZiAxLTMKLSAqIHdvdWxkIGJlIGFuIGVycm9yKS4KLSAqCi0gKiBUaGlzIGlzIGFsbCBwcmV0dHkgc3R1cGlkLCBidXQgd2UgdXNlIHRoaXMgcGFja2V0aXplZCBsaW5lCi0gKiBmb3JtYXQgdG8gbWFrZSBhIHN0cmVhbWluZyBmb3JtYXQgcG9zc2libGUgd2l0aG91dCBldmVyCi0gKiBvdmVyLXJ1bm5pbmcgdGhlIHJlYWQgYnVmZmVycy4gVGhhdCB3YXkgd2UnbGwgbmV2ZXIgcmVhZAotICogaW50byB3aGF0IG1pZ2h0IGJlIHRoZSBwYWNrIGRhdGEgKHdoaWNoIHNob3VsZCBnbyB0byBhbm90aGVyCi0gKiBwcm9jZXNzIGVudGlyZWx5KS4KLSAqCi0gKiBUaGUgd3JpdGluZyBzaWRlIGNvdWxkIHVzZSBzdGRpbywgYnV0IHNpbmNlIHRoZSByZWFkaW5nCi0gKiBzaWRlIGNhbid0LCB3ZSBzdGF5IHdpdGggcHVyZSByZWFkL3dyaXRlIGludGVyZmFjZXMuCi0gKi8KLXNzaXplX3Qgc2FmZV93cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc3NpemVfdCBuKQotewotCXNzaXplX3Qgbm4gPSBuOwotCXdoaWxlIChuKSB7Ci0JCWludCByZXQgPSB4d3JpdGUoZmQsIGJ1Ziwgbik7Ci0JCWlmIChyZXQgPiAwKSB7Ci0JCQlidWYgPSAoY2hhciAqKSBidWYgKyByZXQ7Ci0JCQluIC09IHJldDsKLQkJCWNvbnRpbnVlOwotCQl9Ci0JCWlmICghcmV0KQotCQkJZGllKCJ3cml0ZSBlcnJvciAoZGlzayBmdWxsPykiKTsKLQkJZGllX2Vycm5vKCJ3cml0ZSBlcnJvciIpOwotCX0KLQlyZXR1cm4gbm47Ci19Ci0KLS8qCiAgKiBJZiB3ZSBidWZmZXJlZCB0aGluZ3MgdXAgYWJvdmUgKHdlIGRvbid0LCBidXQgd2Ugc2hvdWxkKSwKICAqIHdlJ2QgZmx1c2ggaXQgaGVyZQogICovCiB2b2lkIHBhY2tldF9mbHVzaChpbnQgZmQpCiB7CiAJcGFja2V0X3RyYWNlKCIwMDAwIiwgNCwgMSk7Ci0Jc2FmZV93cml0ZShmZCwgIjAwMDAiLCA0KTsKKwl3cml0ZV9vcl9kaWUoZmQsICIwMDAwIiwgNCk7CiB9CiAKIHZvaWQgcGFja2V0X2J1Zl9mbHVzaChzdHJ1Y3Qgc3RyYnVmICpidWYpCkBAIC0xMjEsNyArOTAsNyBAQAogCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CiAJbiA9IGZvcm1hdF9wYWNrZXQoZm10LCBhcmdzKTsKIAl2YV9lbmQoYXJncyk7Ci0Jc2FmZV93cml0ZShmZCwgYnVmZmVyLCBuKTsKKwl3cml0ZV9vcl9kaWUoZmQsIGJ1ZmZlciwgbik7CiB9CiAKIHZvaWQgcGFja2V0X2J1Zl93cml0ZShzdHJ1Y3Qgc3RyYnVmICpidWYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQpAQCAtMTM1LDEzICsxMDQsMjkgQEAKIAlzdHJidWZfYWRkKGJ1ZiwgYnVmZmVyLCBuKTsKIH0KIAotc3RhdGljIGludCBzYWZlX3JlYWQoaW50IGZkLCB2b2lkICpidWZmZXIsIHVuc2lnbmVkIHNpemUsIGludCByZXR1cm5fbGluZV9mYWlsKQorc3RhdGljIGludCBnZXRfcGFja2V0X2RhdGEoaW50IGZkLCBjaGFyICoqc3JjX2J1Ziwgc2l6ZV90ICpzcmNfc2l6ZSwKKwkJCSAgIHZvaWQgKmRzdCwgdW5zaWduZWQgc2l6ZSwgaW50IG9wdGlvbnMpCiB7Ci0Jc3NpemVfdCByZXQgPSByZWFkX2luX2Z1bGwoZmQsIGJ1ZmZlciwgc2l6ZSk7Ci0JaWYgKHJldCA8IDApCi0JCWRpZV9lcnJubygicmVhZCBlcnJvciIpOwotCWVsc2UgaWYgKHJldCA8IHNpemUpIHsKLQkJaWYgKHJldHVybl9saW5lX2ZhaWwpCisJc3NpemVfdCByZXQ7CisKKwlpZiAoZmQgPj0gMCAmJiBzcmNfYnVmICYmICpzcmNfYnVmKQorCQlkaWUoIkJVRzogbXVsdGlwbGUgc291cmNlcyBnaXZlbiB0byBwYWNrZXRfcmVhZCIpOworCisJLyogUmVhZCB1cCB0byAic2l6ZSIgYnl0ZXMgZnJvbSBvdXIgc291cmNlLCB3aGF0ZXZlciBpdCBpcy4gKi8KKwlpZiAoc3JjX2J1ZiAmJiAqc3JjX2J1ZikgeworCQlyZXQgPSBzaXplIDwgKnNyY19zaXplID8gc2l6ZSA6ICpzcmNfc2l6ZTsKKwkJbWVtY3B5KGRzdCwgKnNyY19idWYsIHJldCk7CisJCSpzcmNfYnVmICs9IHJldDsKKwkJKnNyY19zaXplIC09IHJldDsKKwl9IGVsc2UgeworCQlyZXQgPSByZWFkX2luX2Z1bGwoZmQsIGRzdCwgc2l6ZSk7CisJCWlmIChyZXQgPCAwKQorCQkJZGllX2Vycm5vKCJyZWFkIGVycm9yIik7CisJfQorCisJLyogQW5kIGNvbXBsYWluIGlmIHdlIGRpZG4ndCBnZXQgZW5vdWdoIGJ5dGVzIHRvIHNhdGlzZnkgdGhlIHJlYWQuICovCisJaWYgKHJldCA8IHNpemUpIHsKKwkJaWYgKG9wdGlvbnMgJiBQQUNLRVRfUkVBRF9HRU5UTEVfT05fRU9GKQogCQkJcmV0dXJuIC0xOwogCiAJCWRpZSgiVGhlIHJlbW90ZSBlbmQgaHVuZyB1cCB1bmV4cGVjdGVkbHkiKTsKQEAgLTE3NSwxMyArMTYwLDE0IEBACiAJcmV0dXJuIGxlbjsKIH0KIAotc3RhdGljIGludCBwYWNrZXRfcmVhZF9pbnRlcm5hbChpbnQgZmQsIGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgaW50IHJldHVybl9saW5lX2ZhaWwpCitpbnQgcGFja2V0X3JlYWQoaW50IGZkLCBjaGFyICoqc3JjX2J1Ziwgc2l6ZV90ICpzcmNfbGVuLAorCQljaGFyICpidWZmZXIsIHVuc2lnbmVkIHNpemUsIGludCBvcHRpb25zKQogewogCWludCBsZW4sIHJldDsKIAljaGFyIGxpbmVsZW5bNF07CiAKLQlyZXQgPSBzYWZlX3JlYWQoZmQsIGxpbmVsZW4sIDQsIHJldHVybl9saW5lX2ZhaWwpOwotCWlmIChyZXR1cm5fbGluZV9mYWlsICYmIHJldCA8IDApCisJcmV0ID0gZ2V0X3BhY2tldF9kYXRhKGZkLCBzcmNfYnVmLCBzcmNfbGVuLCBsaW5lbGVuLCA0LCBvcHRpb25zKTsKKwlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAlsZW4gPSBwYWNrZXRfbGVuZ3RoKGxpbmVsZW4pOwogCWlmIChsZW4gPCAwKQpAQCAtMTkzLDUwICsxNzksMzcgQEAKIAlsZW4gLT0gNDsKIAlpZiAobGVuID49IHNpemUpCiAJCWRpZSgicHJvdG9jb2wgZXJyb3I6IGJhZCBsaW5lIGxlbmd0aCAlZCIsIGxlbik7Ci0JcmV0ID0gc2FmZV9yZWFkKGZkLCBidWZmZXIsIGxlbiwgcmV0dXJuX2xpbmVfZmFpbCk7Ci0JaWYgKHJldHVybl9saW5lX2ZhaWwgJiYgcmV0IDwgMCkKKwlyZXQgPSBnZXRfcGFja2V0X2RhdGEoZmQsIHNyY19idWYsIHNyY19sZW4sIGJ1ZmZlciwgbGVuLCBvcHRpb25zKTsKKwlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKKworCWlmICgob3B0aW9ucyAmIFBBQ0tFVF9SRUFEX0NIT01QX05FV0xJTkUpICYmCisJICAgIGxlbiAmJiBidWZmZXJbbGVuLTFdID09ICdcbicpCisJCWxlbi0tOworCiAJYnVmZmVyW2xlbl0gPSAwOwogCXBhY2tldF90cmFjZShidWZmZXIsIGxlbiwgMCk7CiAJcmV0dXJuIGxlbjsKIH0KIAotaW50IHBhY2tldF9yZWFkKGludCBmZCwgY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBzaXplKQorc3RhdGljIGNoYXIgKnBhY2tldF9yZWFkX2xpbmVfZ2VuZXJpYyhpbnQgZmQsCisJCQkJICAgICAgY2hhciAqKnNyYywgc2l6ZV90ICpzcmNfbGVuLAorCQkJCSAgICAgIGludCAqZHN0X2xlbikKIHsKLQlyZXR1cm4gcGFja2V0X3JlYWRfaW50ZXJuYWwoZmQsIGJ1ZmZlciwgc2l6ZSwgMSk7CisJaW50IGxlbiA9IHBhY2tldF9yZWFkKGZkLCBzcmMsIHNyY19sZW4sCisJCQkgICAgICBwYWNrZXRfYnVmZmVyLCBzaXplb2YocGFja2V0X2J1ZmZlciksCisJCQkgICAgICBQQUNLRVRfUkVBRF9DSE9NUF9ORVdMSU5FKTsKKwlpZiAoZHN0X2xlbikKKwkJKmRzdF9sZW4gPSBsZW47CisJcmV0dXJuIGxlbiA/IHBhY2tldF9idWZmZXIgOiBOVUxMOwogfQogCi1pbnQgcGFja2V0X3JlYWRfbGluZShpbnQgZmQsIGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSkKK2NoYXIgKnBhY2tldF9yZWFkX2xpbmUoaW50IGZkLCBpbnQgKmxlbl9wKQogewotCXJldHVybiBwYWNrZXRfcmVhZF9pbnRlcm5hbChmZCwgYnVmZmVyLCBzaXplLCAwKTsKKwlyZXR1cm4gcGFja2V0X3JlYWRfbGluZV9nZW5lcmljKGZkLCBOVUxMLCBOVUxMLCBsZW5fcCk7CiB9CiAKLWludCBwYWNrZXRfZ2V0X2xpbmUoc3RydWN0IHN0cmJ1ZiAqb3V0LAotCWNoYXIgKipzcmNfYnVmLCBzaXplX3QgKnNyY19sZW4pCitjaGFyICpwYWNrZXRfcmVhZF9saW5lX2J1ZihjaGFyICoqc3JjLCBzaXplX3QgKnNyY19sZW4sIGludCAqZHN0X2xlbikKIHsKLQlpbnQgbGVuOwotCi0JaWYgKCpzcmNfbGVuIDwgNCkKLQkJcmV0dXJuIC0xOwotCWxlbiA9IHBhY2tldF9sZW5ndGgoKnNyY19idWYpOwotCWlmIChsZW4gPCAwKQotCQlyZXR1cm4gLTE7Ci0JaWYgKCFsZW4pIHsKLQkJKnNyY19idWYgKz0gNDsKLQkJKnNyY19sZW4gLT0gNDsKLQkJcGFja2V0X3RyYWNlKCIwMDAwIiwgNCwgMCk7Ci0JCXJldHVybiAwOwotCX0KLQlpZiAoKnNyY19sZW4gPCBsZW4pCi0JCXJldHVybiAtMjsKLQotCSpzcmNfYnVmICs9IDQ7Ci0JKnNyY19sZW4gLT0gNDsKLQlsZW4gLT0gNDsKLQotCXN0cmJ1Zl9hZGQob3V0LCAqc3JjX2J1ZiwgbGVuKTsKLQkqc3JjX2J1ZiArPSBsZW47Ci0JKnNyY19sZW4gLT0gbGVuOwotCXBhY2tldF90cmFjZShvdXQtPmJ1Ziwgb3V0LT5sZW4sIDApOwotCXJldHVybiBsZW47CisJcmV0dXJuIHBhY2tldF9yZWFkX2xpbmVfZ2VuZXJpYygtMSwgc3JjLCBzcmNfbGVuLCBkc3RfbGVuKTsKIH0KZGlmZiAtLWdpdCBhL3BrdC1saW5lLmggYi9wa3QtbGluZS5oCmluZGV4IDhjZmViMGMuLjBhODM4ZDEgMTAwNjQ0Ci0tLSBhL3BrdC1saW5lLmgKKysrIGIvcGt0LWxpbmUuaApAQCAtNSwxNiArNSw3OCBAQAogI2luY2x1ZGUgInN0cmJ1Zi5oIgogCiAvKgotICogU2lsbHkgcGFja2V0aXplZCBsaW5lIHdyaXRpbmcgaW50ZXJmYWNlCisgKiBXcml0ZSBhIHBhY2tldGl6ZWQgc3RyZWFtLCB3aGVyZSBlYWNoIGxpbmUgaXMgcHJlY2VkZWQgYnkKKyAqIGl0cyBsZW5ndGggKGluY2x1ZGluZyB0aGUgaGVhZGVyKSBhcyBhIDQtYnl0ZSBoZXggbnVtYmVyLgorICogQSBsZW5ndGggb2YgJ3plcm8nIG1lYW5zIGVuZCBvZiBzdHJlYW0gKGFuZCBhIGxlbmd0aCBvZiAxLTMKKyAqIHdvdWxkIGJlIGFuIGVycm9yKS4KKyAqCisgKiBUaGlzIGlzIGFsbCBwcmV0dHkgc3R1cGlkLCBidXQgd2UgdXNlIHRoaXMgcGFja2V0aXplZCBsaW5lCisgKiBmb3JtYXQgdG8gbWFrZSBhIHN0cmVhbWluZyBmb3JtYXQgcG9zc2libGUgd2l0aG91dCBldmVyCisgKiBvdmVyLXJ1bm5pbmcgdGhlIHJlYWQgYnVmZmVycy4gVGhhdCB3YXkgd2UnbGwgbmV2ZXIgcmVhZAorICogaW50byB3aGF0IG1pZ2h0IGJlIHRoZSBwYWNrIGRhdGEgKHdoaWNoIHNob3VsZCBnbyB0byBhbm90aGVyCisgKiBwcm9jZXNzIGVudGlyZWx5KS4KKyAqCisgKiBUaGUgd3JpdGluZyBzaWRlIGNvdWxkIHVzZSBzdGRpbywgYnV0IHNpbmNlIHRoZSByZWFkaW5nCisgKiBzaWRlIGNhbid0LCB3ZSBzdGF5IHdpdGggcHVyZSByZWFkL3dyaXRlIGludGVyZmFjZXMuCiAgKi8KIHZvaWQgcGFja2V0X2ZsdXNoKGludCBmZCk7CiB2b2lkIHBhY2tldF93cml0ZShpbnQgZmQsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKTsKIHZvaWQgcGFja2V0X2J1Zl9mbHVzaChzdHJ1Y3Qgc3RyYnVmICpidWYpOwogdm9pZCBwYWNrZXRfYnVmX3dyaXRlKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpOwogCi1pbnQgcGFja2V0X3JlYWRfbGluZShpbnQgZmQsIGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSk7Ci1pbnQgcGFja2V0X3JlYWQoaW50IGZkLCBjaGFyICpidWZmZXIsIHVuc2lnbmVkIHNpemUpOwotaW50IHBhY2tldF9nZXRfbGluZShzdHJ1Y3Qgc3RyYnVmICpvdXQsIGNoYXIgKipzcmNfYnVmLCBzaXplX3QgKnNyY19sZW4pOwotc3NpemVfdCBzYWZlX3dyaXRlKGludCwgY29uc3Qgdm9pZCAqLCBzc2l6ZV90KTsKKy8qCisgKiBSZWFkIGEgcGFja2V0aXplZCBsaW5lIGludG8gdGhlIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCBzaXplIGJ5dGVzCisgKiBsb25nLiBUaGUgcmV0dXJuIHZhbHVlIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgaW50byB0aGUgYnVmZmVyLgorICoKKyAqIElmIHNyY19idWZmZXIgaXMgbm90IE5VTEwgKGFuZCBub3IgaXMgKnNyY19idWZmZXIpLCBpdCBzaG91bGQgcG9pbnQgdG8gYQorICogYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHBhY2tldCBkYXRhIHRvIHBhcnNlLCBvZiBhdCBsZWFzdCAqc3JjX2xlbiBieXRlcy4KKyAqIEFmdGVyIHRoZSBmdW5jdGlvbiByZXR1cm5zLCBzcmNfYnVmIHdpbGwgYmUgaW5jcmVtZW50ZWQgYW5kIHNyY19sZW4KKyAqIGRlY3JlbWVudGVkIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29uc3VtZWQuCisgKgorICogSWYgc3JjX2J1ZmZlciAob3IgKnNyY19idWZmZXIpIGlzIE5VTEwsIHRoZW4gZGF0YSBpcyByZWFkIGZyb20gdGhlCisgKiBkZXNjcmlwdG9yICJmZCIuCisgKgorICogSWYgb3B0aW9ucyBkb2VzIG5vdCBjb250YWluIFBBQ0tFVF9SRUFEX0dFTlRMRV9PTl9FT0YsIHdlIHdpbGwgZGllIHVuZGVyIGFueQorICogb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqICAgMS4gUmVhZCBlcnJvciBmcm9tIGRlc2NyaXB0b3IuCisgKgorICogICAyLiBQcm90b2NvbCBlcnJvciBmcm9tIHRoZSByZW1vdGUgKGUuZy4sIGJvZ3VzIGxlbmd0aCBjaGFyYWN0ZXJzKS4KKyAqCisgKiAgIDMuIFJlY2VpdmluZyBhIHBhY2tldCBsYXJnZXIgdGhhbiAic2l6ZSIgYnl0ZXMuCisgKgorICogICA0LiBUcnVuY2F0ZWQgb3V0cHV0IGZyb20gdGhlIHJlbW90ZSAoZS5nLiwgd2UgZXhwZWN0ZWQgYSBwYWNrZXQgYnV0IGdvdAorICogICAgICBFT0YsIG9yIHdlIGdvdCBhIHBhcnRpYWwgcGFja2V0IGZvbGxvd2VkIGJ5IEVPRikuCisgKgorICogSWYgb3B0aW9ucyBkb2VzIGNvbnRhaW4gUEFDS0VUX1JFQURfR0VOVExFX09OX0VPRiwgd2Ugd2lsbCBub3QgZGllIG9uCisgKiBjb25kaXRpb24gNCAodHJ1bmNhdGVkIGlucHV0KSwgYnV0IGluc3RlYWQgcmV0dXJuIC0xLiBIb3dldmVyLCB3ZSB3aWxsIHN0aWxsCisgKiBkaWUgZm9yIHRoZSBvdGhlciAzIGNvbmRpdGlvbnMuCisgKgorICogSWYgb3B0aW9ucyBjb250YWlucyBQQUNLRVRfUkVBRF9DSE9NUF9ORVdMSU5FLCBhIHRyYWlsaW5nIG5ld2xpbmUgKGlmCisgKiBwcmVzZW50KSBpcyByZW1vdmVkIGZyb20gdGhlIGJ1ZmZlciBiZWZvcmUgcmV0dXJuaW5nLgorICovCisjZGVmaW5lIFBBQ0tFVF9SRUFEX0dFTlRMRV9PTl9FT0YgKDF1PDwwKQorI2RlZmluZSBQQUNLRVRfUkVBRF9DSE9NUF9ORVdMSU5FICgxdTw8MSkKK2ludCBwYWNrZXRfcmVhZChpbnQgZmQsIGNoYXIgKipzcmNfYnVmZmVyLCBzaXplX3QgKnNyY19sZW4sIGNoYXIKKwkJKmJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgaW50IG9wdGlvbnMpOworCisvKgorICogQ29udmVuaWVuY2Ugd3JhcHBlciBmb3IgcGFja2V0X3JlYWQgdGhhdCBpcyBub3QgZ2VudGxlLCBhbmQgc2V0cyB0aGUKKyAqIENIT01QX05FV0xJTkUgb3B0aW9uLiBUaGUgcmV0dXJuIHZhbHVlIGlzIE5VTEwgZm9yIGEgZmx1c2ggcGFja2V0LAorICogYW5kIG90aGVyd2lzZSBwb2ludHMgdG8gYSBzdGF0aWMgYnVmZmVyICh0aGF0IG1heSBiZSBvdmVyd3JpdHRlbiBieQorICogc3Vic2VxdWVudCBjYWxscykuIElmIHRoZSBzaXplIHBhcmFtZXRlciBpcyBub3QgTlVMTCwgdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHBhY2tldCBpcyB3cml0dGVuIHRvIGl0LgorICovCitjaGFyICpwYWNrZXRfcmVhZF9saW5lKGludCBmZCwgaW50ICpzaXplKTsKKworLyoKKyAqIFNhbWUgYXMgcGFja2V0X3JlYWRfbGluZSwgYnV0IHJlYWQgZnJvbSBhIGJ1ZiByYXRoZXIgdGhhbiBhIGRlc2NyaXB0b3I7CisgKiBzZWUgcGFja2V0X3JlYWQgZm9yIGRldGFpbHMgb24gaG93IHNyY18qIGlzIHVzZWQuCisgKi8KK2NoYXIgKnBhY2tldF9yZWFkX2xpbmVfYnVmKGNoYXIgKipzcmNfYnVmLCBzaXplX3QgKnNyY19sZW4sIGludCAqc2l6ZSk7CisKKyNkZWZpbmUgREVGQVVMVF9QQUNLRVRfTUFYIDEwMDAKKyNkZWZpbmUgTEFSR0VfUEFDS0VUX01BWCA2NTUyMAorZXh0ZXJuIGNoYXIgcGFja2V0X2J1ZmZlcltMQVJHRV9QQUNLRVRfTUFYXTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9wby9SRUFETUUgYi9wby9SRUFETUUKaW5kZXggYzE1MjBlOC4uZDhjOTExMSAxMDA2NDQKLS0tIGEvcG8vUkVBRE1FCisrKyBiL3BvL1JFQURNRQpAQCAtMjMyLDcgKzIzMiw3IEBACiAKICAgICAgICAjIFRvIGludGVycG9sYXRlIHZhcmlhYmxlczoKICAgICAgICBkZXRhaWxzPSJvaCBub2VzIgotICAgICAgIGV2YWxfZ2V0dGV4dCAiQW4gZXJyb3Igb2NjdXJlZDogXCRkZXRhaWxzIjsgZWNobworICAgICAgIGV2YWxfZ2V0dGV4dCAiQW4gZXJyb3Igb2NjdXJyZWQ6IFwkZGV0YWlscyI7IGVjaG8KIAogICAgSW4gYWRkaXRpb24gd2UgaGF2ZSB3cmFwcGVycyBmb3IgbWVzc2FnZXMgdGhhdCBlbmQgd2l0aCBhIHRyYWlsaW5nCiAgICBuZXdsaW5lLiBJLmUuIHlvdSBjb3VsZCB3cml0ZSB0aGUgYWJvdmUgYXM6CkBAIC0yNDIsNyArMjQyLDcgQEAKIAogICAgICAgICMgVG8gaW50ZXJwb2xhdGUgdmFyaWFibGVzOgogICAgICAgIGRldGFpbHM9Im9oIG5vZXMiCi0gICAgICAgZXZhbF9nZXR0ZXh0bG4gIkFuIGVycm9yIG9jY3VyZWQ6IFwkZGV0YWlscyIKKyAgICAgICBldmFsX2dldHRleHRsbiAiQW4gZXJyb3Igb2NjdXJyZWQ6IFwkZGV0YWlscyIKIAogICAgTW9yZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlIGluIHRoZSBHTlUgaW5mbwogICAgcGFnZTogYGluZm8gJyhnZXR0ZXh0KXNoJ2AuIExvb2tpbmcgYXQgZ2l0LWFtLnNoICh0aGUgZmlyc3Qgc2hlbGwKQEAgLTI1Nyw3ICsyNTcsNyBAQAogCiAgICAgICAgdXNlIEdpdDo6STE4TjsKICAgICAgICBwcmludCBfXygiV2VsY29tZSB0byBHaXQhXG4iKTsKLSAgICAgICBwcmludGYgX18oIlRoZSBmb2xsb3dpbmcgZXJyb3Igb2NjdXJlZDogJXNcbiIpLCAkZXJyb3I7CisgICAgICAgcHJpbnRmIF9fKCJUaGUgZm9sbG93aW5nIGVycm9yIG9jY3VycmVkOiAlc1xuIiksICRlcnJvcjsKIAogICAgUnVuIGBwZXJsZG9jIHBlcmwvR2l0L0kxOE4ucG1gIGZvciBtb3JlIGluZm8uCiAKZGlmZiAtLWdpdCBhL3BvL1RFQU1TIGIvcG8vVEVBTVMKaW5kZXggMWI5ZTk5NC4uNWViNWFhZCAxMDA2NDQKLS0tIGEvcG8vVEVBTVMKKysrIGIvcG8vVEVBTVMKQEAgLTQ2LDMgKzQ2LDQgQEAKIAkJWWljaGFvIFl1IDx5eWMxOTkyIEFUIGdtYWlsLmNvbT4KIAkJd3MzMzg5IDx3aWxsc21pdGgzMzg5IEFUIGdtYWlsLmNvbT4KIAkJVGh5bnNvbiA8bGFueGluZ2NhbiBBVCBnbWFpbC5jb20+CisJCVdhbmcgU2hlbmcgPHdhbmdzaGVuZzIwMDhsb3ZlQDE2My5jb20+CmRpZmYgLS1naXQgYS9wby9kZS5wbyBiL3BvL2RlLnBvCmluZGV4IDBlOGVkNTQuLjQ5MDE0ODggMTAwNjQ0Ci0tLSBhL3BvL2RlLnBvCisrKyBiL3BvL2RlLnBvCkBAIC01LDkgKzUsOSBAQAogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0IDEuOC4xXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQgMS44LjNcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogR2l0IE1haWxpbmcgTGlzdCA8Z2l0QHZnZXIua2VybmVsLm9yZz5cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMi0xMS0zMCAxMjo0MCswODAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMTAtMDIgMTk6MzUrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogUmFsZiBUaGllbG93IDxyYWxmLnRoaWVsb3dAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEdlcm1hbiA8PlxuIgpAQCAtMTcsNyArMTcsNyBAQAogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiE9MSk7XG4iCiAKLSM6IGFkdmljZS5jOjQwCisjOiBhZHZpY2UuYzo1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJoaW50OiAlLipzXG4iCiBtc2dzdHIgIkhpbndlaXM6ICUuKnNcbiIKQEAgLTI2LDE3ICsyNiwxNyBAQAogIy4gKiBNZXNzYWdlIHVzZWQgYm90aCB3aGVuICdnaXQgY29tbWl0JyBmYWlscyBhbmQgd2hlbgogIy4gKiBvdGhlciBjb21tYW5kcyBkb2luZyBhIG1lcmdlIGRvLgogIy4KLSM6IGFkdmljZS5jOjcwCisjOiBhZHZpY2UuYzo4MwogbXNnaWQgIiIKICJGaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLFxuIgogImFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nIGFzXG4iCiAiYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uIGFuZCBtYWtlIGEgY29tbWl0LFxuIgogIm9yIHVzZSAnZ2l0IGNvbW1pdCAtYScuIgogbXNnc3RyICIiCi0iS29ycmlnaWVyZSBkaWVzIGltIEFyYmVpdHNiYXVtLFxuIgotInVuZCBiZW51dHplIGRhbm4gJ2dpdCBhZGQvcm0gPERhdGVpPidcbiIKKyJLb3JyaWdpZXJlbiBTaWUgZGllcyBpbSBBcmJlaXRzYmF1bSxcbiIKKyJ1bmQgYmVudXR6ZW4gU2llIGRhbm4gJ2dpdCBhZGQvcm0gPERhdGVpPidcbiIKICJ1bSBkaWUgQXVmbMO2c3VuZyBlbnRzcHJlY2hlbmQgenUgbWFya2llcmVuIHVuZCBlaW56dXRyYWdlbixcbiIKLSJvZGVyIGJlbnV0emUgJ2dpdCBjb21taXQgLWEnLiIKKyJvZGVyIGJlbnV0emVuIFNpZSAnZ2l0IGNvbW1pdCAtYScuIgogCiAjOiBhcmNoaXZlLmM6MTAKIG1zZ2lkICJnaXQgYXJjaGl2ZSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKQEAgLTU3LDgxICs1NywyMDkgQEAKIG1zZ2lkICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8cmVwbz4gWy0tZXhlYyA8Y21kPl0gLS1saXN0IgogbXNnc3RyICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA8UHJvamVrdGFyY2hpdj4gWy0tZXhlYyA8UHJvZ3JhbW0+XSAtLWxpc3QiCiAKLSM6IGFyY2hpdmUuYzozMjIKKyM6IGFyY2hpdmUuYzozMjMKIG1zZ2lkICJmbXQiCiBtc2dzdHIgIkZvcm1hdCIKIAotIzogYXJjaGl2ZS5jOjMyMgorIzogYXJjaGl2ZS5jOjMyMwogbXNnaWQgImFyY2hpdmUgZm9ybWF0IgogbXNnc3RyICJBdXNnYWJlZm9ybWF0IgogCi0jOiBhcmNoaXZlLmM6MzIzIGJ1aWx0aW4vbG9nLmM6MTA4NAorIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExMjYKIG1zZ2lkICJwcmVmaXgiCiBtc2dzdHIgIlByZWZpeCIKIAotIzogYXJjaGl2ZS5jOjMyNAorIzogYXJjaGl2ZS5jOjMyNQogbXNnaWQgInByZXBlbmQgcHJlZml4IHRvIGVhY2ggcGF0aG5hbWUgaW4gdGhlIGFyY2hpdmUiCiBtc2dzdHIgInN0ZWxsdCBlaW5lbiBQcsOkZml4IHZvciBqZWRlbiBQZmFkbmFtZW4gaW4gZGVyIEF1c2dhYmUiCiAKLSM6IGFyY2hpdmUuYzozMjUgYnVpbHRpbi9hcmNoaXZlLmM6OTEgYnVpbHRpbi9ibGFtZS5jOjIzOTAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkxIGJ1aWx0aW4vY29uZmlnLmM6NTUgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MgotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0NCBidWlsdGluL2dyZXAuYzo3MTUgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTcgYnVpbHRpbi9ub3Rlcy5jOjU0MAotIzogYnVpbHRpbi9ub3Rlcy5jOjY5NyBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5CisjOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjg4IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MiBidWlsdGluL2NvbmZpZy5jOjU1IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjcgYnVpbHRpbi9ncmVwLmM6NzE1IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MCBidWlsdGluL2xzLWZpbGVzLmM6NDkzIGJ1aWx0aW4vbm90ZXMuYzo1MzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTMgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDcgcGFyc2Utb3B0aW9ucy5oOjE0OQogbXNnaWQgImZpbGUiCiBtc2dzdHIgIkRhdGVpIgogCi0jOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyCisjOiBhcmNoaXZlLmM6MzI3IGJ1aWx0aW4vYXJjaGl2ZS5jOjg5CiBtc2dpZCAid3JpdGUgdGhlIGFyY2hpdmUgdG8gdGhpcyBmaWxlIgogbXNnc3RyICJzY2hyZWlidCBkaWUgQXVzZ2FiZSBpbiBkaWVzZSBEYXRlaSIKIAotIzogYXJjaGl2ZS5jOjMyOAorIzogYXJjaGl2ZS5jOjMyOQogbXNnaWQgInJlYWQgLmdpdGF0dHJpYnV0ZXMgaW4gd29ya2luZyBkaXJlY3RvcnkiCiBtc2dzdHIgImxpZXN0IC5naXRhdHRyaWJ1dGVzIGF1cyBkZW0gQXJiZWl0c3ZlcnplaWNobmlzIgogCi0jOiBhcmNoaXZlLmM6MzI5CisjOiBhcmNoaXZlLmM6MzMwCiBtc2dpZCAicmVwb3J0IGFyY2hpdmVkIGZpbGVzIG9uIHN0ZGVyciIKIG1zZ3N0ciAiZ2lidCBhcmNoaXZpZXJ0ZSBEYXRlaWVuIGluIGRlciBTdGFuZGFyZC1GZWhsZXJhdXNnYWJlIGF1cyIKIAotIzogYXJjaGl2ZS5jOjMzMAorIzogYXJjaGl2ZS5jOjMzMQogbXNnaWQgInN0b3JlIG9ubHkiCiBtc2dzdHIgIm51ciBzcGVpY2hlcm4iCiAKLSM6IGFyY2hpdmUuYzozMzEKKyM6IGFyY2hpdmUuYzozMzIKIG1zZ2lkICJjb21wcmVzcyBmYXN0ZXIiCiBtc2dzdHIgInNjaG5lbGxlciBrb21wcmltaWVyZW4iCiAKLSM6IGFyY2hpdmUuYzozMzkKKyM6IGFyY2hpdmUuYzozNDAKIG1zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCiBtc2dzdHIgImJlc3NlciBrb21wcmltaWVyZW4iCiAKLSM6IGFyY2hpdmUuYzozNDIKKyM6IGFyY2hpdmUuYzozNDMKIG1zZ2lkICJsaXN0IHN1cHBvcnRlZCBhcmNoaXZlIGZvcm1hdHMiCiBtc2dzdHIgImxpc3RldCB1bnRlcnN0w7x0enRlIEF1c2dhYmVmb3JtYXRlIGF1ZiIKIAotIzogYXJjaGl2ZS5jOjM0NCBidWlsdGluL2FyY2hpdmUuYzo5MyBidWlsdGluL2Nsb25lLmM6ODUKKyM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg2CiBtc2dpZCAicmVwbyIKIG1zZ3N0ciAiUHJvamVrdGFyY2hpdiIKIAotIzogYXJjaGl2ZS5jOjM0NSBidWlsdGluL2FyY2hpdmUuYzo5NAorIzogYXJjaGl2ZS5jOjM0NiBidWlsdGluL2FyY2hpdmUuYzo5MQogbXNnaWQgInJldHJpZXZlIHRoZSBhcmNoaXZlIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkgPHJlcG8+IgogbXNnc3RyICJydWZ0IGRhcyBBcmNoaXYgdm9uIGV4dGVybmVtIFByb2pla3RhcmNoaXYgPFByb2pla3RhcmNoaXY+IGFiIgogCi0jOiBhcmNoaXZlLmM6MzQ2IGJ1aWx0aW4vYXJjaGl2ZS5jOjk1IGJ1aWx0aW4vbm90ZXMuYzo2MTkKKyM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTIgYnVpbHRpbi9ub3Rlcy5jOjYxNQogbXNnaWQgImNvbW1hbmQiCiBtc2dzdHIgIlByb2dyYW1tIgogCi0jOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjk2CisjOiBhcmNoaXZlLmM6MzQ4IGJ1aWx0aW4vYXJjaGl2ZS5jOjkzCiBtc2dpZCAicGF0aCB0byB0aGUgcmVtb3RlIGdpdC11cGxvYWQtYXJjaGl2ZSBjb21tYW5kIgogbXNnc3RyICJQZmFkIHp1bSBleHRlcm5lbiBcImdpdC11cGxvYWQtYXJjaGl2ZVwiLVByb2dyYW1tIgogCiAjOiBhdHRyLmM6MjU5CiBtc2dpZCAiIgotIk5lZ2F0aXZlIHBhdHRlcm5zIGFyZSBmb3JiaWRkZW4gaW4gZ2l0IGF0dHJpYnV0ZXNcbiIKKyJOZWdhdGl2ZSBwYXR0ZXJucyBhcmUgaWdub3JlZCBpbiBnaXQgYXR0cmlidXRlc1xuIgogIlVzZSAnXFwhJyBmb3IgbGl0ZXJhbCBsZWFkaW5nIGV4Y2xhbWF0aW9uLiIKIG1zZ3N0ciAiIgotIlZlcm5laW5lbmRlIE11c3RlciBzaW5kIGluIEdpdC1BdHRyaWJ1dGVuIHZlcmJvdGVuLlxuIgotIkJlbnV0emUgJ1xcIScgZsO8ciBmw7xocmVuZGUgQXVzcnVmZXplaWNoZW4uIgorIlZlcm5laW5lbmRlIE11c3RlciB3ZXJkZW4gaW4gR2l0LUF0dHJpYnV0ZW4gaWdub3JpZXJ0LlxuIgorIkJlbnV0emVuIFNpZSAnXFwhJyBmw7xyIGbDvGhyZW5kZSBBdXNydWZlemVpY2hlbi4iCisKKyM6IGJyYW5jaC5jOjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBzZXR0aW5nIGJyYW5jaCAlcyBhcyBpdHMgb3duIHVwc3RyZWFtLiIKK21zZ3N0ciAiWndlaWcgJXMga2FubiBuaWNodCBzZWluIGVpZ2VuZXIgw5xiZXJuYWhtZXp3ZWlnIHNlaW4uIgorCisjOiBicmFuY2guYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIlp3ZWlnICVzIGtvbmZpZ3VyaWVydCB6dW0gRm9sZ2VuIHZvbiBleHRlcm5lbSBad2VpZyAlcyB2b24gJXMgZHVyY2ggIgorIk5ldWF1ZmJhdS4iCisKKyM6IGJyYW5jaC5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIGJyYW5jaCAlcyBmcm9tICVzLiIKK21zZ3N0ciAiWndlaWcgJXMga29uZmlndXJpZXJ0IHp1bSBGb2xnZW4gdm9uIGV4dGVybmVtIFp3ZWlnICVzIHZvbiAlcy4iCisKKyM6IGJyYW5jaC5jOjg3CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgYnJhbmNoICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiWndlaWcgJXMga29uZmlndXJpZXJ0IHp1bSBGb2xnZW4gdm9uIGxva2FsZW0gWndlaWcgJXMgZHVyY2ggTmV1YXVmYmF1LiIKKworIzogYnJhbmNoLmM6ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIgorbXNnc3RyICJad2VpZyAlcyBrb25maWd1cmllcnQgenVtIEZvbGdlbiB2b24gbG9rYWxlbSBad2VpZyAlcy4iCisKKyM6IGJyYW5jaC5jOjkyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIlp3ZWlnICVzIGtvbmZpZ3VyaWVydCB6dW0gRm9sZ2VuIHZvbiBleHRlcm5lciBSZWZlcmVueiAlcyBkdXJjaCAiCisiTmV1YXVmYmF1LiIKKworIzogYnJhbmNoLmM6OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzLiIKK21zZ3N0ciAiWndlaWcgJXMga29uZmlndXJpZXJ0IHp1bSBGb2xnZW4gdm9uIGV4dGVybmVyIFJlZmVyZW56ICVzLiIKKworIzogYnJhbmNoLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJad2VpZyAlcyBrb25maWd1cmllcnQgenVtIEZvbGdlbiB2b24gbG9rYWxlciBSZWZlcmVueiAlcyBkdXJjaCAiCisiTmV1YXVmYmF1LiIKKworIzogYnJhbmNoLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMuIgorbXNnc3RyICJad2VpZyAlcyBrb25maWd1cmllcnQgenVtIEZvbGdlbiB2b24gbG9rYWxlciBSZWZlcmVueiAlcy4iCisKKyM6IGJyYW5jaC5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIKK21zZ3N0ciAiS29uZmlndXJhdGlvbiB6dW0gRm9sZ2VuIHZvbiBad2VpZyBuaWNodCBlaW5nZXJpY2h0ZXQuIE5hbWUgenUgbGFuZzogJXMiCisKKyM6IGJyYW5jaC5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIgorbXNnc3RyICJLb25maWd1cmF0aW9uIHp1bSBGb2xnZW4gdm9uIFp3ZWlnIG5pY2h0IGVpbmdlcmljaHRldC4gUmVmZXJlbnogJXMgaXN0IG1laHJkZXV0aWcuIgorCisjOiBicmFuY2guYzoxODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCBicmFuY2ggbmFtZS4iCittc2dzdHIgIiclcycgaXN0IGtlaW4gZ8O8bHRpZ2VyIFp3ZWlnbmFtZS4iCisKKyM6IGJyYW5jaC5jOjE4NworIywgYy1mb3JtYXQKK21zZ2lkICJBIGJyYW5jaCBuYW1lZCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAiWndlaWcgJyVzJyBleGlzdGllcnQgYmVyZWl0cy4iCisKKyM6IGJyYW5jaC5jOjE5NQorbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKK21zZ3N0ciAiS2FubiBBa3R1YWxpc2llcnVuZyBkZXMgYWt0dWVsbGVuIFp3ZWlnZXMgbmljaHQgZXJ6d2luZ2VuLiIKKworIzogYnJhbmNoLmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzZXR1cCB0cmFja2luZyBpbmZvcm1hdGlvbjsgc3RhcnRpbmcgcG9pbnQgJyVzJyBpcyBub3QgYSBicmFuY2guIgorbXNnc3RyICIiCisiS2FubiBJbmZvcm1hdGlvbmVuIHp1bSDDnGJlcm5haG1lendlaWcgbmljaHQgZWlucmljaHRlbjsgU3RhcnRwdW5rdCAnJXMnIGlzdCAiCisia2VpbiBad2VpZy4iCisKKyM6IGJyYW5jaC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICJ0aGUgcmVxdWVzdGVkIHVwc3RyZWFtIGJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJkZXIgYW5nZWZvcmRlcnRlIGV4dGVybmUgw5xiZXJuYWhtZXp3ZWlnICclcycgZXhpc3RpZXJ0IG5pY2h0IgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyJGYWxscyBTaWUgdm9yaGFiZW4sIElocmUgQXJiZWl0IGF1ZiBlaW5lbSBiZXJlaXRzIGV4aXN0aWVyZW5kZW4sXG4iCisiZXh0ZXJuZW4gw5xiZXJuYWhtZXp3ZWlnIGF1Znp1YmF1ZW4sIHNvbGx0ZW4gU2llIFwiZ2l0IGZldGNoXCJcbiIKKyJhdXNmw7xocmVuLCB1bSBkaWVzZW4gYWJ6dXJ1ZmVuLlxuIgorIlxuIgorIkZhbGxzIFNpZSB2b3JoYWJlbiwgZWluZW4gbmV1ZW4gbG9rYWxlbiBad2VpZyB6dSB2ZXJzZW5kZW5cbiIKKyJkZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIGZvbGdlbiBzb2xsLCBrw7ZubmVuIFNpZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB2ZXJ3ZW5kZW4sIHVtIGRlbiBleHRlcm5lbiDDnGJlcm5haG1lendlaWdcbiIKKyJiZWltIFZlcnNhbmQgenUga29uZmlndXJpZXJlbi4iCisKKyM6IGJyYW5jaC5jOjI1MAorIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIlVuZ8O8bHRpZ2VyIE9iamVrdC1OYW1lOiAnJXMnIgorCisjOiBicmFuY2guYzoyNzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQW1iaWd1b3VzIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAibWVocmRldXRpZ2VyIE9iamVrdC1OYW1lOiAnJXMnIgorCisjOiBicmFuY2guYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgYnJhbmNoIHBvaW50OiAnJXMnLiIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgVmVyendlaWd1bmdzcHVua3Q6ICclcyciCisKKyM6IGJyYW5jaC5jOjI4MQorbXNnaWQgIkZhaWxlZCB0byBsb2NrIHJlZiBmb3IgdXBkYXRlIgorbXNnc3RyICJGZWhsZXIgYmVpbSBTcGVycmVuIGRlciBSZWZlcmVueiB6dXIgQWt0dWFsaXNpZXJ1bmcuIgorCisjOiBicmFuY2guYzoyOTkKK21zZ2lkICJGYWlsZWQgdG8gd3JpdGUgcmVmIgorbXNnc3RyICJGZWhsZXIgYmVpbSBTY2hyZWliZW4gZGVyIFJlZmVyZW56LiIKIAogIzogYnVuZGxlLmM6MzYKICMsIGMtZm9ybWF0CkBAIC0xNDMsNyArMjcxLDcgQEAKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVhZGVyOiAlcyVzICglZCkiCiBtc2dzdHIgIm5pY2h0IGVya2FubnRlciBLb3BmYmVyZWljaDogJXMlcyAoJWQpIgogCi0jOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NAorIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgw7ZmZm5lbiIKQEAgLTE1MiwzNSArMjgwLDM1IEBACiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCiBtc2dzdHIgIkRlbSBQcm9qZWt0YXJjaGl2IGZlaGxlbiBmb2xnZW5kZSB2b3JhdXNnZXNldHp0ZSBWZXJzaW9uZW46IgogCi0jOiBidW5kbGUuYzoxNjQgc2VxdWVuY2VyLmM6NTYyIHNlcXVlbmNlci5jOjk5NCBidWlsdGluL2xvZy5jOjI5MAotIzogYnVpbHRpbi9sb2cuYzo3MzIgYnVpbHRpbi9sb2cuYzoxMzE5IGJ1aWx0aW4vbG9nLmM6MTUzNSBidWlsdGluL21lcmdlLmM6MzQ3Ci0jOiBidWlsdGluL3Nob3J0bG9nLmM6MTgxCisjOiBidW5kbGUuYzoxNjQgc2VxdWVuY2VyLmM6NjUxIHNlcXVlbmNlci5jOjExMDEgYnVpbHRpbi9sb2cuYzozMDAKKyM6IGJ1aWx0aW4vbG9nLmM6NzcwIGJ1aWx0aW4vbG9nLmM6MTM0NCBidWlsdGluL2xvZy5jOjE1NzAgYnVpbHRpbi9tZXJnZS5jOjM0OQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NQogbXNnaWQgInJldmlzaW9uIHdhbGsgc2V0dXAgZmFpbGVkIgogbXNnc3RyICJFaW5yaWNodHVuZyBkZXMgUmV2aXNpb25zZ2FuZ3MgZmVobGdlc2NobGFnZW4iCiAKICM6IGJ1bmRsZS5jOjE4NgogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIGNvbnRhaW5zICVkIHJlZiIKLW1zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWZzIgotbXNnc3RyWzBdICJEYXMgUGFrZXQgZW50aMOkbHQgJWQgUmVmZXJlbnoiCi1tc2dzdHJbMV0gIkRhcyBQYWtldCBlbnRow6RsdCAlZCBSZWZlcmVuemVuIgorbXNnaWQgIlRoZSBidW5kbGUgY29udGFpbnMgdGhpcyByZWY6IgorbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIGNvbnRhaW5zIHRoZXNlICVkIHJlZnM6IgorbXNnc3RyWzBdICJEYXMgUGFrZXQgZW50aMOkbHQgZGllc2UgUmVmZXJlbno6IgorbXNnc3RyWzFdICJEYXMgUGFrZXQgZW50aMOkbHQgZGllc2UgJWQgUmVmZXJlbnplbjoiCiAKLSM6IGJ1bmRsZS5jOjE5MgorIzogYnVuZGxlLmM6MTkzCiBtc2dpZCAiVGhlIGJ1bmRsZSByZWNvcmRzIGEgY29tcGxldGUgaGlzdG9yeS4iCiBtc2dzdHIgIkRhcyBQYWtldCBzcGVpY2hlcnQgZWluZSBrb21wbGV0dGUgSGlzdG9yaWUuIgogCiAjOiBidW5kbGUuYzoxOTUKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGlzIHJlZiIKLW1zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzIgotbXNnc3RyWzBdICJEYXMgUGFrZXQgYmVuw7Z0aWd0IGRpZXNlIFJlZmVyZW56IgotbXNnc3RyWzFdICJEYXMgUGFrZXQgYmVuw7Z0aWd0IGRpZXNlICVkIFJlZmVyZW56ZW4iCittc2dpZCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhlc2UgJWQgcmVmczoiCittc2dzdHJbMF0gIkRhcyBQYWtldCBiZW7DtnRpZ3QgZGllc2UgUmVmZXJlbno6IgorbXNnc3RyWzFdICJEYXMgUGFrZXQgYmVuw7Z0aWd0IGRpZXNlICVkIFJlZmVyZW56ZW46IgogCiAjOiBidW5kbGUuYzoyOTQKIG1zZ2lkICJyZXYtbGlzdCBkaWVkIgogbXNnc3RyICJcInJldi1saXN0XCIgYWJnZWJyb2NoZW4iCiAKLSM6IGJ1bmRsZS5jOjMwMCBidWlsdGluL2xvZy5jOjEyMTUgYnVpbHRpbi9zaG9ydGxvZy5jOjI4NAorIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTI1NSBidWlsdGluL3Nob3J0bG9nLmM6MjU4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBhcmd1bWVudDogJXMiCiBtc2dzdHIgIm5pY2h0IGVya2FubnRlcyBBcmd1bWVudDogJXMiCkBAIC0zMDYsMjQgKzQzNCwyMyBAQAogbXNnc3RyWzBdICJ2b3IgJWx1IEphaHIiCiBtc2dzdHJbMV0gInZvciAlbHUgSmFocmVuIgogCi0jOiBkaWZmLmM6MTExCisjOiBkaWZmLmM6MTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclcydcbiIKIG1zZ3N0ciAiIgogIiAgRmVobGVyIGJlaW0gUGFyc2VuIGRlcyBhYmdlc2Nobml0dGVuZW4gXCJkaXJzdGF0XCIgUHJvemVudHNhdHplcyAnJXMnXG4iCiAKLSM6IGRpZmYuYzoxMTYKKyM6IGRpZmYuYzoxMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBVbmtub3duIGRpcnN0YXQgcGFyYW1ldGVyICclcydcbiIKIG1zZ3N0ciAiICBVbmJla2FubnRlciBcImRpcnN0YXRcIiBQYXJhbWV0ZXIgJyVzJ1xuIgogCi0jOiBkaWZmLmM6MTk0CisjOiBkaWZmLmM6MjEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gdmFsdWUgZm9yICdkaWZmLnN1Ym1vZHVsZScgY29uZmlnIHZhcmlhYmxlOiAnJXMnIgotbXNnc3RyICIiCi0iVW5iZWthbm50ZXIgV2VydCBpbiBLb25maWd1cmF0aW9uc3ZhcmlhYmxlICdkaWZmLmRpcnN0YXQnOiAnJXMnIgorbXNnc3RyICJVbmJla2FubnRlciBXZXJ0IGluIEtvbmZpZ3VyYXRpb25zdmFyaWFibGUgJ2RpZmYuZGlyc3RhdCc6ICclcyciCiAKLSM6IGRpZmYuYzoyMzcKKyM6IGRpZmYuYzoyNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZvdW5kIGVycm9ycyBpbiAnZGlmZi5kaXJzdGF0JyBjb25maWcgdmFyaWFibGU6XG4iCkBAIC0zMzIsNyArNDU5LDcgQEAKICJGZWhsZXIgaW4gJ2RpZmYuZGlyc3RhdCcgS29uZmlndXJhdGlvbnN2YXJpYWJsZSBnZWZ1bmRlbjpcbiIKICIlcyIKIAotIzogZGlmZi5jOjM0OTQKKyM6IGRpZmYuYzozNDgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJGYWlsZWQgdG8gcGFyc2UgLS1kaXJzdGF0Ly1YIG9wdGlvbiBwYXJhbWV0ZXI6XG4iCkBAIC0zNDEsMTMgKzQ2OCwxMiBAQAogIkZlaGxlciBiZWltIFBhcnNlbiBkZXMgLS1kaXJzdGF0Ly1YIE9wdGlvbnNwYXJhbWV0ZXJzOlxuIgogIiVzIgogCi0jOiBkaWZmLmM6MzUwOAotIywgIGMtZm9ybWF0CisjOiBkaWZmLmM6MzQ5NQorIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgLS1zdWJtb2R1bGUgb3B0aW9uIHBhcmFtZXRlcjogJyVzJyIKLW1zZ3N0ciAiIgotIkZlaGxlciBiZWltIFBhcnNlbiBkZXMgLS1zdWJtb2R1bGUgT3B0aW9uc3BhcmFtZXRlcnM6ICclcyciCittc2dzdHIgIkZlaGxlciBiZWltIFBhcnNlbiBkZXMgLS1zdWJtb2R1bGUgT3B0aW9uc3BhcmFtZXRlcnM6ICclcyciCiAKLSM6IGdwZy1pbnRlcmZhY2UuYzo1OQorIzogZ3BnLWludGVyZmFjZS5jOjU5IGdwZy1pbnRlcmZhY2UuYzoxMzEKIG1zZ2lkICJjb3VsZCBub3QgcnVuIGdwZy4iCiBtc2dzdHIgImtvbm50ZSBncGcgbmljaHQgYXVzZsO8aHJlbiIKIApAQCAtMzU5LDE3ICs0ODUsMjcgQEAKIG1zZ2lkICJncGcgZmFpbGVkIHRvIHNpZ24gdGhlIGRhdGEiCiBtc2dzdHIgImdwZyBiZWltIFNpZ25pZXJlbiBkZXIgRGF0ZW4gZmVobGdlc2NobGFnZW4iCiAKLSM6IGdyZXAuYzoxNjIyCisjOiBncGctaW50ZXJmYWNlLmM6MTE1CisjLCBjLWZvcm1hdAorbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJyVzJzogJXMiCittc2dzdHIgImtvbm50ZSB0ZW1wb3LDpHJlIERhdGVpICclcycgbmljaHQgZXJzdGVsbGVuOiAlcyIKKworIzogZ3BnLWludGVyZmFjZS5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiCittc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXIgU2lnbmF0dXIgbmFjaCAnJXMnOiAlcyIKKworIzogZ3JlcC5jOjE2MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogdW5hYmxlIHRvIHJlYWQgJXMiCiBtc2dzdHIgIiclcyc6IGtvbm50ZSBuaWNodCBsZXNlbiAlcyIKIAotIzogZ3JlcC5jOjE2MzkKKyM6IGdyZXAuYzoxNjQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6ICVzIgogbXNnc3RyICInJXMnOiAlcyIKIAotIzogZ3JlcC5jOjE2NTAKKyM6IGdyZXAuYzoxNjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHNob3J0IHJlYWQgJXMiCiBtc2dzdHIgIiclcyc6IHJlYWQoKSB6dSBrdXJ6ICVzIgpAQCAtMzgxLDkgKzUxNywxMyBAQAogCiAjOiBoZWxwLmM6MjE5CiBtc2dpZCAiZ2l0IGNvbW1hbmRzIGF2YWlsYWJsZSBmcm9tIGVsc2V3aGVyZSBvbiB5b3VyICRQQVRIIgotbXNnc3RyICJWb3JoYW5kZW5lIEdpdC1Lb21tYW5kb3MgaXJnZW5kd28gaW4gZGVpbmVtICRQQVRIIgorbXNnc3RyICJWb3JoYW5kZW5lIEdpdC1Lb21tYW5kb3MgaXJnZW5kd28gaW4gSWhyZW0gJFBBVEgiCiAKLSM6IGhlbHAuYzoyNzUKKyM6IGhlbHAuYzoyMzUKK21zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgorbXNnc3RyICJEaWUgYWxsZ2VtZWluIHZlcndlbmRldGVuIEdpdC1Lb21tYW5kb3Mgc2luZDoiCisKKyM6IGhlbHAuYzoyOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgYXBwZWFycyB0byBiZSBhIGdpdCBjb21tYW5kLCBidXQgd2Ugd2VyZSBub3RcbiIKQEAgLTM5MiwzMCArNTMyLDMwIEBACiAiJyVzJyBzY2hlaW50IGVpbiBnaXQtS29tbWFuZG8genUgc2Vpbiwga29ubnRlIGFiZXJcbiIKICJuaWNodCBhdXNnZWbDvGhydCB3ZXJkZW4uIFZpZWxsZWljaHQgaXN0IGdpdC0lcyBmZWhsZXJoYWZ0PyIKIAotIzogaGVscC5jOjMzMgorIzogaGVscC5jOjM0OQogbXNnaWQgIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIgotbXNnc3RyICJVaCBvaC4gS2VpbmUgR2l0LUtvbW1hbmRvcyBhdWYgZGVpbmVtIFN5c3RlbSB2b3JoYW5kZW4uIgorbXNnc3RyICJVaCBvaC4gS2VpbmUgR2l0LUtvbW1hbmRvcyBhdWYgSWhyZW0gU3lzdGVtIHZvcmhhbmRlbi4iCiAKLSM6IGhlbHAuYzozNTQKKyM6IGhlbHAuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldBUk5JTkc6IFlvdSBjYWxsZWQgYSBHaXQgY29tbWFuZCBuYW1lZCAnJXMnLCB3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKICJDb250aW51aW5nIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IG1lYW50ICclcyciCiBtc2dzdHIgIiIKLSJXYXJudW5nOiBEdSBoYXN0IGRhcyBuaWNodCBleGlzdGllcmVuZGUgR2l0LUtvbW1hbmRvICclcycgYXVzZ2Vmw7xocnQuXG4iCi0iU2V0emUgZm9ydCB1bnRlciBkZXIgQW5uYWhtZSBkYXMgZHUgJyVzJyBnZW1laW50IGhhc3QiCisiV2FybnVuZzogU2llIGhhYmVuIGRhcyBuaWNodCBleGlzdGllcmVuZGUgR2l0LUtvbW1hbmRvICclcycgYXVzZ2Vmw7xocnQuXG4iCisiU2V0emUgZm9ydCB1bnRlciBkZXIgQW5uYWhtZSwgZGFzcyBTaWUgJyVzJyBnZW1laW50IGhhYmVuIgogCi0jOiBoZWxwLmM6MzU5CisjOiBoZWxwLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLiIKIG1zZ3N0ciAiYXV0b21hdGlzY2ggaW4gJTAuMWYgU2VrdW5kZW4uLi4iCiAKLSM6IGhlbHAuYzozNjYKKyM6IGhlbHAuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l0OiAnJXMnIGlzdCBrZWluIEdpdC1Lb21tYW5kby4gU2llaGUgJ2dpdCAtLWhlbHAnLiIKIAotIzogaGVscC5jOjM3MAorIzogaGVscC5jOjM4NwogbXNnaWQgIiIKICJcbiIKICJEaWQgeW91IG1lYW4gdGhpcz8iCkBAIC00MjQsMTcgKzU2NCwxNyBAQAogIkRpZCB5b3UgbWVhbiBvbmUgb2YgdGhlc2U/IgogbXNnc3RyWzBdICIiCiAiXG4iCi0iSGFzdCBkdSBkYXMgZ2VtZWludD8iCisiSGFiZW4gU2llIGRhcyBnZW1laW50PyIKIG1zZ3N0clsxXSAiIgogIlxuIgotIkhhc3QgZHUgZWluZXMgdm9uIGRpZXNlbiBnZW1laW50PyIKKyJIYWJlbiBTaWUgZWluZXMgdm9uIGRpZXNlbiBnZW1laW50PyIKIAogIzogbWVyZ2UuYzo1NgogbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKIG1zZ3N0ciAiTGVzZW4gZGVzIFp3aXNjaGVuc3BlaWNoZXJzIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzMzIGJ1aWx0aW4vY2hlY2tvdXQuYzo1MzQKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1ODYKKyM6IG1lcmdlLmM6MTEwIGJ1aWx0aW4vY2hlY2tvdXQuYzozNjUgYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jbG9uZS5jOjY0NQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAiS29ubnRlIG5ldWUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgbmljaHQgc2NocmVpYmVuLiIKIApAQCAtNDgzLDcgKzYyMyw3IEBACiBtc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKIG1zZ3N0ciAiQmxvYiBlcndhcnRldCBmw7xyICVzICclcyciCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzAyCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgogbXNnc3RyICJGZWhsZXIgYmVpbSDDlmZmbmVuIHZvbiAnJXMnIgpAQCAtNjIwLDcgKzc2MCw3IEBACiBtc2dpZCAiQXV0by1tZXJnaW5nICVzIgogbXNnc3RyICJhdXRvbWF0aXNjaGUgWnVzYW1tZW5mw7xocnVuZyB2b24gJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDo4OTMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDoxMDI5CiBtc2dpZCAic3VibW9kdWxlIgogbXNnc3RyICJVbnRlcnByb2pla3QiCiAKQEAgLTY5Miw1OSArODMyLDc4IEBACiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgogbXNnc3RyICJLb25udGUgT2JqZWt0ICclcycgbmljaHQgcGFyc2VuLiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAwOSBidWlsdGluL21lcmdlLmM6NjQzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDA5IGJ1aWx0aW4vbWVyZ2UuYzo2NTgKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgogbXNnc3RyICJLb25udGUgQmVyZWl0c3RlbGx1bmcgbmljaHQgc2NocmVpYmVuLiIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjQ5NAorIzogb2JqZWN0LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBwYXJzZSBvYmplY3Q6ICVzIgorbXNnc3RyICJLb25udGUgT2JqZWt0ICclcycgbmljaHQgcGFyc2VuLiIKKworIzogcGFyc2Utb3B0aW9ucy5jOjQ4OQogbXNnaWQgIi4uLiIKIG1zZ3N0ciAiLi4uIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NTEyCisjOiBwYXJzZS1vcHRpb25zLmM6NTA3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVzYWdlOiAlcyIKIG1zZ3N0ciAiVmVyd2VuZHVuZzogJXMiCiAKICMuIFRSQU5TTEFUT1JTOiB0aGUgY29sb24gaGVyZSBzaG91bGQgYWxpZ24gd2l0aCB0aGUKICMuIG9uZSBpbiAidXNhZ2U6ICVzIiB0cmFuc2xhdGlvbgotIzogcGFyc2Utb3B0aW9ucy5jOjUxNgorIzogcGFyc2Utb3B0aW9ucy5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICBvcjogJXMiCiBtc2dzdHIgIiAgICAgIG9kZXI6ICVzIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NTE5CisjOiBwYXJzZS1vcHRpb25zLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICAlcyIKIG1zZ3N0ciAiICAgICVzIgogCi0jOiByZW1vdGUuYzoxNjMyCisjOiBwYXJzZS1vcHRpb25zLmM6NTQ4Cittc2dpZCAiLU5VTSIKK21zZ3N0ciAiLU5VTSIKKworIzogcGF0aHNwZWMuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJQYXRoICclcycgaXMgaW4gc3VibW9kdWxlICclLipzJyIKK21zZ3N0ciAiUGZhZCAnJXMnIGJlZmluZGV0IHNpY2ggaW4gVW50ZXJwcm9qZWt0ICclLipzJyIKKworIzogcGF0aHNwZWMuYzo5OQorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCittc2dzdHIgIiclcycgaXN0IMO8YmVyIGVpbmVtIHN5bWJvbGlzY2hlbiBMaW5rIgorCisjOiByZW1vdGUuYzoxNzgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0LlxuIgogbXNnaWRfcGx1cmFsICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdHMuXG4iCi1tc2dzdHJbMF0gIkRlaW4gWndlaWcgaXN0IHZvciAnJXMnIHVtICVkIFZlcnNpb24uXG4iCi1tc2dzdHJbMV0gIkRlaW4gWndlaWcgaXN0IHZvciAnJXMnIHVtICVkIFZlcnNpb25lbi5cbiIKK21zZ3N0clswXSAiSWhyIFp3ZWlnIGlzdCB2b3IgJyVzJyB1bSAlZCBWZXJzaW9uLlxuIgorbXNnc3RyWzFdICJJaHIgWndlaWcgaXN0IHZvciAnJXMnIHVtICVkIFZlcnNpb25lbi5cbiIKIAotIzogcmVtb3RlLmM6MTYzNworIzogcmVtb3RlLmM6MTc4NwogbXNnaWQgIiAgKHVzZSBcImdpdCBwdXNoXCIgdG8gcHVibGlzaCB5b3VyIGxvY2FsIGNvbW1pdHMpXG4iCi1tc2dzdHIgIiAgKGJlbnV0emUgXCJnaXQgcHVzaFwiIHVtIGRlaW5lIGxva2FsZW4gVmVyc2lvbmVuIGhlcmF1c3p1YnJpbmdlbilcbiIKK21zZ3N0ciAiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHB1c2hcIiB1bSBsb2thbGVuIFZlcnNpb25lbiBoZXJhdXN6dWJyaW5nZW4pXG4iCiAKLSM6IHJlbW90ZS5jOjE2NDAKKyM6IHJlbW90ZS5jOjE3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCBhbmQgY2FuIGJlIGZhc3QtZm9yd2FyZGVkLlxuIgogbXNnaWRfcGx1cmFsICIiCiAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0cywgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKIG1zZ3N0clswXSAiIgotIkRlaW4gWndlaWcgaXN0IHp1ICclcycgdW0gJWQgVmVyc2lvbiBoaW50ZXJoZXIsIHVuZCBrYW5uIHZvcmdlc3B1bHQgd2VyZGVuLlxuIgorIklociBad2VpZyBpc3QgenUgJyVzJyB1bSAlZCBWZXJzaW9uIGhpbnRlcmhlciwgdW5kIGthbm4gdm9yZ2VzcHVsdCB3ZXJkZW4uXG4iCiBtc2dzdHJbMV0gIiIKLSJEZWluIFp3ZWlnIGlzdCB6dSAnJXMnIHVtICVkIFZlcnNpb25lbiBoaW50ZXJoZXIsIHVuZCBrYW5uIHZvcmdlc3B1bHQgIgorIklociBad2VpZyBpc3QgenUgJyVzJyB1bSAlZCBWZXJzaW9uZW4gaGludGVyaGVyLCB1bmQga2FubiB2b3JnZXNwdWx0ICIKICJ3ZXJkZW4uXG4iCiAKLSM6IHJlbW90ZS5jOjE2NDcKKyM6IHJlbW90ZS5jOjE3OTgKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgcHVsbFwiIHVtIGRlaW5lbiBsb2thbGVuIFp3ZWlnIHp1IGFrdHVhbGlzaWVyZW4pXG4iCisiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHB1bGxcIiB1bSBJaHJlbiBsb2thbGVuIFp3ZWlnIHp1IGFrdHVhbGlzaWVyZW4pXG4iCiAKLSM6IHJlbW90ZS5jOjE2NTAKKyM6IHJlbW90ZS5jOjE4MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdXIgYnJhbmNoIGFuZCAnJXMnIGhhdmUgZGl2ZXJnZWQsXG4iCkBAIC03NTMsMTE1ICs5MTIsMTEzIEBACiAiWW91ciBicmFuY2ggYW5kICclcycgaGF2ZSBkaXZlcmdlZCxcbiIKICJhbmQgaGF2ZSAlZCBhbmQgJWQgZGlmZmVyZW50IGNvbW1pdHMgZWFjaCwgcmVzcGVjdGl2ZWx5LlxuIgogbXNnc3RyWzBdICIiCi0iRGVpbiBad2VpZyB1bmQgJyVzJyBzaW5kIGRpdmVyZ2llcnQsXG4iCisiSWhyIFp3ZWlnIHVuZCAnJXMnIHNpbmQgZGl2ZXJnaWVydCxcbiIKICJ1bmQgaGFiZW4gamV3ZWlscyAlZCB1bmQgJWQgdW50ZXJzY2hpZWRsaWNoZSBWZXJzaW9uZW4uXG4iCiBtc2dzdHJbMV0gIiIKLSJEZWluIFp3ZWlnIHVuZCAnJXMnIHNpbmQgZGl2ZXJnaWVydCxcbiIKKyJJaHIgWndlaWcgdW5kICclcycgc2luZCBkaXZlcmdpZXJ0LFxuIgogInVuZCBoYWJlbiBqZXdlaWxzICVkIHVuZCAlZCB1bnRlcnNjaGllZGxpY2hlIFZlcnNpb25lbi5cbiIKIAotIzogcmVtb3RlLmM6MTY1OQorIzogcmVtb3RlLmM6MTgxMQogbXNnaWQgIiAgKHVzZSBcImdpdCBwdWxsXCIgdG8gbWVyZ2UgdGhlIHJlbW90ZSBicmFuY2ggaW50byB5b3VycylcbiIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgcHVsbFwiIHVtIGRlaW5lbiBad2VpZyBtaXQgZGVtIGV4dGVybmVuIHp1c2FtbWVuenVmw7xocmVuKVxuIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBwdWxsXCIgdW0gSWhyZW4gWndlaWcgbWl0IGRlbSBleHRlcm5lbiAiCisienVzYW1tZW56dWbDvGhyZW4pXG4iCiAKLSM6IHNlcXVlbmNlci5jOjEyMyBidWlsdGluL21lcmdlLmM6NzYxIGJ1aWx0aW4vbWVyZ2UuYzo4NzQgYnVpbHRpbi9tZXJnZS5jOjk4NAotIzogYnVpbHRpbi9tZXJnZS5jOjk5NAorIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5CisjOiBidWlsdGluL21lcmdlLmM6MTAwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCB6dW0gU2NocmVpYmVuIMO2ZmZuZW4uIgogCi0jOiBzZXF1ZW5jZXIuYzoxMjUgYnVpbHRpbi9tZXJnZS5jOjMzMyBidWlsdGluL21lcmdlLmM6NzY0IGJ1aWx0aW4vbWVyZ2UuYzo5ODYKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5OTkKKyM6IHNlcXVlbmNlci5jOjIwOCBidWlsdGluL21lcmdlLmM6MzM1IGJ1aWx0aW4vbWVyZ2UuYzo3NzkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDAxIGJ1aWx0aW4vbWVyZ2UuYzoxMDE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAnJXMnIgogbXNnc3RyICJLb25udGUgbmljaHQgbmFjaCAnJXMnIHNjaHJlaWJlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjE0NgorIzogc2VxdWVuY2VyLmM6MjI5CiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPiciCiBtc2dzdHIgIiIKLSJuYWNoIEF1ZmzDtnN1bmcgZGVyIEtvbmZsaWt0ZSwgbWFya2llcmUgZGllIGtvcnJpZ2llcnRlbiBQZmFkZVxuIgorIm5hY2ggQXVmbMO2c3VuZyBkZXIgS29uZmxpa3RlLCBtYXJraWVyZW4gU2llIGRpZSBrb3JyaWdpZXJ0ZW4gUGZhZGVcbiIKICJtaXQgJ2dpdCBhZGQgPFBmYWRlPicgb2RlciAnZ2l0IHJtIDxQZmFkZT4nIgogCi0jOiBzZXF1ZW5jZXIuYzoxNDkKKyM6IHNlcXVlbmNlci5jOjIzMgogbXNnaWQgIiIKICJhZnRlciByZXNvbHZpbmcgdGhlIGNvbmZsaWN0cywgbWFyayB0aGUgY29ycmVjdGVkIHBhdGhzXG4iCiAid2l0aCAnZ2l0IGFkZCA8cGF0aHM+JyBvciAnZ2l0IHJtIDxwYXRocz4nXG4iCiAiYW5kIGNvbW1pdCB0aGUgcmVzdWx0IHdpdGggJ2dpdCBjb21taXQnIgogbXNnc3RyICIiCi0ibmFjaCBBdWZsw7ZzdW5nIGRlciBLb25mbGlrdGUsIG1hcmtpZXJlIGRpZSBrb3JyaWdpZXJ0ZW4gUGZhZGVcbiIKLSJtaXQgJ2dpdCBhZGQgPFBmYWRlPicgb2RlciAnZ2l0IHJtIDxQZmFkZT4ndW5kIHRyYWdlIGRhcyBFcmdlYm5pcyBlaW4gbWl0ICIKLSInZ2l0IGNvbW1pdCciCisibmFjaCBBdWZsw7ZzdW5nIGRlciBLb25mbGlrdGUsIG1hcmtpZXJlbiBTaWUgZGllIGtvcnJpZ2llcnRlbiBQZmFkZVxuIgorIm1pdCAnZ2l0IGFkZCA8UGZhZGU+JyBvZGVyICdnaXQgcm0gPFBmYWRlPid1bmQgdHJhZ2VuIFNpZSBkYXMgRXJnZWJuaXMgbWl0XG4iCisiJ2dpdCBjb21taXQnIGVpbiIKIAotIzogc2VxdWVuY2VyLmM6MTYyIHNlcXVlbmNlci5jOjc3MCBzZXF1ZW5jZXIuYzo4NTMKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAiS29ubnRlIG5pY2h0IG5hY2ggJXMgc2NocmVpYmVuIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjUKKyM6IHNlcXVlbmNlci5jOjI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcyIKIG1zZ3N0ciAiRmVobGVyIGJlaSBOYWNoYmVyZWl0dW5nIHZvbiAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjMKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgY2hlcnJ5LXBpY2suIgogbXNnc3RyICIiCi0iRGVpbmUgbG9rYWxlbiDDhG5kZXJ1bmdlbiB3w7xyZGVuIHZvbiBcImNoZXJyeS1waWNrXCIgw7xiZXJzY2hyaWViZW4gd2VyZGVuLiIKKyJJaHJlIGxva2FsZW4gw4RuZGVydW5nZW4gd8O8cmRlbiB2b24gXCJjaGVycnktcGlja1wiIMO8YmVyc2NocmllYmVuIHdlcmRlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjE4MgorIzogc2VxdWVuY2VyLmM6MjY1CiBtc2dpZCAiWW91ciBsb2NhbCBjaGFuZ2VzIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IHJldmVydC4iCi1tc2dzdHIgIkRlaW5lIGxva2FsZW4gw4RuZGVydW5nZW4gd8O8cmRlbiB2b24gXCJyZXZlcnRcIiDDvGJlcnNjaHJpZWJlbiB3ZXJkZW4uIgorbXNnc3RyICJJaHJlIGxva2FsZW4gw4RuZGVydW5nZW4gd8O8cmRlbiB2b24gXCJyZXZlcnRcIiDDvGJlcnNjaHJpZWJlbiB3ZXJkZW4uIgogCi0jOiBzZXF1ZW5jZXIuYzoxODUKKyM6IHNlcXVlbmNlci5jOjI2OAogbXNnaWQgIkNvbW1pdCB5b3VyIGNoYW5nZXMgb3Igc3Rhc2ggdGhlbSB0byBwcm9jZWVkLiIKLW1zZ3N0ciAiVHJhZ2UgZGVpbmUgw4RuZGVydW5nZW4gZWluIG9kZXIgYmVudXR6ZSBcInN0YXNoXCIgdW0gZm9ydHp1ZmFocmVuLiIKK21zZ3N0ciAiIgorIlRyYWdlbiBTaWUgSWhyZSDDhG5kZXJ1bmdlbiBlaW4gb2RlciBiZW51dHplbiBTaWUgXCJzdGFzaFwiIHVtIGZvcnR6dWZhaHJlbi4iCiAKICMuIFRSQU5TTEFUT1JTOiAlcyB3aWxsIGJlICJyZXZlcnQiIG9yICJjaGVycnktcGljayIKLSM6IHNlcXVlbmNlci5jOjIzNQorIzogc2VxdWVuY2VyLmM6MzE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIiVzOiBLb25udGUgbmV1ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCBzY2hyZWliZW4iCiAKLSM6IHNlcXVlbmNlci5jOjI2NgorIzogc2VxdWVuY2VyLmM6MzUwCiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiS29ubnRlIFZlcnNpb24gZGVyIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBhdWZsw7ZzZW5cbiIKIAotIzogc2VxdWVuY2VyLmM6Mjg3CisjOiBzZXF1ZW5jZXIuYzozNzEKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAiS29ubnRlIHp3aXNjaGVuZ2VzcGVpY2hlcnRlbiBCYXVtIG5pY2h0IGFrdHVhbGlzaWVyZW5cbiIKIAotIzogc2VxdWVuY2VyLmM6MzMyCisjOiBzZXF1ZW5jZXIuYzo0MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGNvbW1pdCAlc1xuIgogbXNnc3RyICJLb25udGUgVmVyc2lvbiAlcyBuaWNodCBwYXJzZW5cbiIKIAotIzogc2VxdWVuY2VyLmM6MzM3CisjOiBzZXF1ZW5jZXIuYzo0MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIHBhcmVudCBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS29ubnRlIEVsdGVybnZlcnNpb24gJXMgbmljaHQgcGFyc2VuXG4iCiAKLSM6IHNlcXVlbmNlci5jOjQwMworIzogc2VxdWVuY2VyLmM6NDg3CiBtc2dpZCAiWW91ciBpbmRleCBmaWxlIGlzIHVubWVyZ2VkLiIKLW1zZ3N0ciAiRGVpbmUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgaXN0IG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQuIgorbXNnc3RyICJJaHJlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIGlzdCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0LiIKIAotIzogc2VxdWVuY2VyLmM6NDA2Ci1tc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKLW1zZ3N0ciAiRHUgaGFzdCBrZWluZSBnw7xsdGlnZSBad2VpZ3NwaXR6ZSAoSEVBRCkiCi0KLSM6IHNlcXVlbmNlci5jOjQyMQorIzogc2VxdWVuY2VyLmM6NTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhIG1lcmdlIGJ1dCBubyAtbSBvcHRpb24gd2FzIGdpdmVuLiIKIG1zZ3N0ciAiIgogIlZlcnNpb24gJXMgaXN0IGVpbmUgWnVzYW1tZW5mw7xocnVuZywgYWJlciBkaWUgT3B0aW9uIC1tIHd1cmRlIG5pY2h0ICIKICJhbmdlZ2ViZW4uIgogCi0jOiBzZXF1ZW5jZXIuYzo0MjkKKyM6IHNlcXVlbmNlci5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBwYXJlbnQgJWQiCiBtc2dzdHIgIlZlcnNpb24gJXMgaGF0IGtlaW5lbiBFbHRlcm50ZWlsICVkIgogCi0jOiBzZXF1ZW5jZXIuYzo0MzMKKyM6IHNlcXVlbmNlci5jOjUxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWlubGluZSB3YXMgc3BlY2lmaWVkIGJ1dCBjb21taXQgJXMgaXMgbm90IGEgbWVyZ2UuIgogbXNnc3RyICIiCkBAIC04NjksMTYzICsxMDI2LDE3MyBAQAogCiAjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIHdpbGwgYmUgInJldmVydCIgb3IKICMuICJjaGVycnktcGljayIsIHRoZSBzZWNvbmQgJXMgYSBTSEExCi0jOiBzZXF1ZW5jZXIuYzo0NDQKKyM6IHNlcXVlbmNlci5jOjUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHBhcnNlIHBhcmVudCBjb21taXQgJXMiCiBtc2dzdHIgIiVzOiBrYW5uIEVsdGVybnZlcnNpb24gJXMgbmljaHQgcGFyc2VuIgogCi0jOiBzZXF1ZW5jZXIuYzo0NDgKKyM6IHNlcXVlbmNlci5jOjUzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZ2V0IGNvbW1pdCBtZXNzYWdlIGZvciAlcyIKIG1zZ3N0ciAiS2FubiBrZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBmw7xyICVzIGJla29tbWVuIgogCi0jOiBzZXF1ZW5jZXIuYzo1MzIKKyM6IHNlcXVlbmNlci5jOjYyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmV2ZXJ0ICVzLi4uICVzIgotbXNnc3RyICJLb25udGUgJXMgbmljaHQgenVyw7xja3NldHplbi4uLiAlcyIKK21zZ3N0ciAiS29ubnRlICVzIG5pY2h0IHp1csO8Y2tuZWhtZW4uLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjUzMworIzogc2VxdWVuY2VyLmM6NjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBhcHBseSAlcy4uLiAlcyIKIG1zZ3N0ciAiS29ubnRlICVzIG5pY2h0IGFud2VuZGVuLi4uICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo1NjUKKyM6IHNlcXVlbmNlci5jOjY1NAogbXNnaWQgImVtcHR5IGNvbW1pdCBzZXQgcGFzc2VkIgogbXNnc3RyICJsZWVyZSBNZW5nZSB2b24gVmVyc2lvbmVuIMO8YmVyZ2ViZW4iCiAKLSM6IHNlcXVlbmNlci5jOjU3MworIzogc2VxdWVuY2VyLmM6NjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCAlczogZmFpbGVkIHRvIHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICJnaXQgJXM6IEZlaGxlciBiZWltIExlc2VuIGRlciBCZXJlaXRzdGVsbHVuZyIKIAotIzogc2VxdWVuY2VyLmM6NTc4CisjOiBzZXF1ZW5jZXIuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlczogRmVobGVyIGJlaW0gQWt0dWFsaXNpZXJlbiBkZXIgQmVyZWl0c3RlbGx1bmciCiAKLSM6IHNlcXVlbmNlci5jOjYzNgorIzogc2VxdWVuY2VyLmM6NzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCAlcyBkdXJpbmcgYSAlcyIKIG1zZ3N0ciAiS2FubiAlcyBuaWNodCB3w6RocmVuZCBlaW5lcyAlcyBkdXJjaGbDvGhyZW4iCiAKLSM6IHNlcXVlbmNlci5jOjY1OAorIzogc2VxdWVuY2VyLmM6NzQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBsaW5lICVkLiIKIG1zZ3N0ciAiS29ubnRlIFplaWxlICVkIG5pY2h0IHBhcnNlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjY2MworIzogc2VxdWVuY2VyLmM6NzUyCiBtc2dpZCAiTm8gY29tbWl0cyBwYXJzZWQuIgogbXNnc3RyICJLZWluZSBWZXJzaW9uZW4gZ2VwYXJzdC4iCiAKLSM6IHNlcXVlbmNlci5jOjY3NgorIzogc2VxdWVuY2VyLmM6NzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzIgogbXNnc3RyICJLb25udGUgJXMgbmljaHQgw7ZmZm5lbiIKIAotIzogc2VxdWVuY2VyLmM6NjgwCisjOiBzZXF1ZW5jZXIuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgJXMuIgogbXNnc3RyICJLb25udGUgJXMgbmljaHQgbGVzZW4uIgogCi0jOiBzZXF1ZW5jZXIuYzo2ODcKKyM6IHNlcXVlbmNlci5jOjc3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnVzYWJsZSBpbnN0cnVjdGlvbiBzaGVldDogJXMiCiBtc2dzdHIgIlVuYmVudXR6YmFyZXMgSW5zdHJ1a3Rpb25zYmxhdHQ6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3MTUKKyM6IHNlcXVlbmNlci5jOjgwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGtleTogJXMiCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIFNjaGzDvHNzZWw6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3MTgKKyM6IHNlcXVlbmNlci5jOjgwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHZhbHVlIGZvciAlczogJXMiCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIFdlcnQgZsO8ciAlczogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjczMAorIzogc2VxdWVuY2VyLmM6ODE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBvcHRpb25zIHNoZWV0OiAlcyIKIG1zZ3N0ciAiRmVobGVyaGFmdGVzIE9wdGlvbnNibGF0dDogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjc1MQorIzogc2VxdWVuY2VyLmM6ODQwCiBtc2dpZCAiYSBjaGVycnktcGljayBvciByZXZlcnQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcyIKIG1zZ3N0ciAiXCJjaGVycnktcGlja1wiIG9kZXIgXCJyZXZlcnRcIiBpc3QgYmVyZWl0cyBpbSBHYW5nIgogCi0jOiBzZXF1ZW5jZXIuYzo3NTIKKyM6IHNlcXVlbmNlci5jOjg0MQogbXNnaWQgInRyeSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCi1tc2dzdHIgInZlcnN1Y2hlIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKK21zZ3N0ciAidmVyc3VjaGVuIFNpZSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCiAKLSM6IHNlcXVlbmNlci5jOjc1NgorIzogc2VxdWVuY2VyLmM6ODQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgc2VxdWVuY2VyIGRpcmVjdG9yeSAlcyIKIG1zZ3N0ciAiS29ubnRlIFwic2VxdWVuY2VyXCItVmVyemVpY2huaXMgJXMgbmljaHQgZXJzdGVsbGVuIgogCi0jOiBzZXF1ZW5jZXIuYzo3NzIgc2VxdWVuY2VyLmM6ODU3CisjOiBzZXF1ZW5jZXIuYzo4NjEgc2VxdWVuY2VyLmM6OTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIHdyYXBwaW5nIHVwICVzLiIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gRWlucGFja2VuIHZvbiAlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjc5MSBzZXF1ZW5jZXIuYzo5MjUKKyM6IHNlcXVlbmNlci5jOjg4MCBzZXF1ZW5jZXIuYzoxMDE0CiBtc2dpZCAibm8gY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGluIHByb2dyZXNzIgogbXNnc3RyICJrZWluIFwiY2hlcnJ5LXBpY2tcIiBvZGVyIFwicmV2ZXJ0XCIgaW0gR2FuZyIKIAotIzogc2VxdWVuY2VyLmM6NzkzCisjOiBzZXF1ZW5jZXIuYzo4ODIKIG1zZ2lkICJjYW5ub3QgcmVzb2x2ZSBIRUFEIgogbXNnc3RyICJrYW5uIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBhdWZsw7ZzZW4iCiAKLSM6IHNlcXVlbmNlci5jOjc5NQorIzogc2VxdWVuY2VyLmM6ODg0CiBtc2dpZCAiY2Fubm90IGFib3J0IGZyb20gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgImthbm4gbmljaHQgYWJicmVjaGVuOiBiaW4gYXVmIGVpbmVtIFp3ZWlnLCBkZXIgbm9jaCBnZWJvcmVuIHdpcmQiCiAKLSM6IHNlcXVlbmNlci5jOjgxNyBidWlsdGluL2FwcGx5LmM6NDAwNQorIzogc2VxdWVuY2VyLmM6OTA2IGJ1aWx0aW4vYXBwbHkuYzo0MDYwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICVzOiAlcyIKIG1zZ3N0ciAiS2FubiAlcyBuaWNodCDDtmZmbmVuOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6ODIwCisjOiBzZXF1ZW5jZXIuYzo5MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJXM6ICVzIgogbXNnc3RyICJLYW5uICVzIG5pY2h0IGxlc2VuOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6ODIxCisjOiBzZXF1ZW5jZXIuYzo5MTAKIG1zZ2lkICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIgogbXNnc3RyICJVbmVyd2FydGV0ZXMgRGF0ZWllbmRlIgogCi0jOiBzZXF1ZW5jZXIuYzo4MjcKKyM6IHNlcXVlbmNlci5jOjkxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdG9yZWQgcHJlLWNoZXJyeS1waWNrIEhFQUQgZmlsZSAnJXMnIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIiIKICJnZXNwZWljaGVydGUgXCJwcmUtY2hlcnJ5LXBpY2tcIiBEYXRlaSBkZXIgWndlaWdzcGl0emUgKEhFQUQpICclcycgaXN0ICIKICJiZXNjaMOkZGlndCIKIAotIzogc2VxdWVuY2VyLmM6ODUwCisjOiBzZXF1ZW5jZXIuYzo5MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZvcm1hdCAlcy4iCiBtc2dzdHIgIktvbm50ZSAlcyBuaWNodCBmb3JtYXRpZXJlbi4iCiAKLSM6IHNlcXVlbmNlci5jOjEwMTIKKyM6IHNlcXVlbmNlci5jOjEwODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNhbid0IGNoZXJyeS1waWNrIGEgJXMiCittc2dzdHIgIiVzOiAlcyBrYW5uIG5pY2h0IGluIFwiY2hlcnJ5LXBpY2tcIiBiZW51dHp0IHdlcmRlbiIKKworIzogc2VxdWVuY2VyLmM6MTA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmFkIHJldmlzaW9uIgorbXNnc3RyICIlczogdW5nw7xsdGlnZSBSZXZpc2lvbiIKKworIzogc2VxdWVuY2VyLmM6MTExOQogbXNnaWQgIkNhbid0IHJldmVydCBhcyBpbml0aWFsIGNvbW1pdCIKLW1zZ3N0ciAiS2FubiBuaWNodCB6dSBpbml0aWFsZXIgVmVyc2lvbiB6dXLDvGNrc2V0emVuLiIKK21zZ3N0ciAiUsO8Y2tuYWhtZS1WZXJzaW9uIGthbm4gbmljaHQgaW5pdGlhbCBzZWluLiIKIAotIzogc2VxdWVuY2VyLmM6MTAxMworIzogc2VxdWVuY2VyLmM6MTEyMAogbXNnaWQgIkNhbid0IGNoZXJyeS1waWNrIGludG8gZW1wdHkgaGVhZCIKLW1zZ3N0ciAiS2FubiBcImNoZXJyeS1waWNrXCIgbmljaHQgaW4gZWluZW0gbGVlcmVtIEtvcGYgYXVzZsO8aHJlbi4iCittc2dzdHIgIkthbm4gXCJjaGVycnktcGlja1wiIG5pY2h0IGluIGVpbmVtIGxlZXJlbiBad2VpZyBhdXNmw7xocmVuLiIKIAotIzogc2hhMV9uYW1lLmM6MTA0NAorIzogc2hhMV9uYW1lLmM6MTAzNgogbXNnaWQgIkhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2giCiBtc2dzdHIgIlp3ZWlnc3BpdHplIChIRUFEKSB6ZWlndCBhdWYga2VpbmVuIFp3ZWlnIgogCi0jOiBzaGExX25hbWUuYzoxMDQ3CisjOiBzaGExX25hbWUuYzoxMDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICJLZWluIHNvbGNoZXIgWndlaWcgJyVzJyIKIAotIzogc2hhMV9uYW1lLmM6MTA0OQorIzogc2hhMV9uYW1lLmM6MTA0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiS2VpbiBlbnRmZXJudGVzIFByb2pla3RhcmNoaXYgZsO8ciBad2VpZyAnJXMnIGtvbmZpZ3VyaWVydC4iCiAKLSM6IHNoYTFfbmFtZS5jOjEwNTIKKyM6IHNoYTFfbmFtZS5jOjEwNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCiBtc2dzdHIgIiIKQEAgLTEwMzYsMTIgKzEyMDMsMTcgQEAKIG1zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgogbXNnc3RyICJrb25udGUgbmljaHQgYXVmICclcycgenVncmVpZmVuOiAlcyIKIAotIzogd3JhcHBlci5jOjQyNgorIzogd3JhcHBlci5jOjQyMworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyciCittc2dzdHIgImtvbm50ZSBuaWNodCBhdWYgJyVzJyB6dWdyZWlmZW4iCisKKyM6IHdyYXBwZXIuYzo0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCiBtc2dzdHIgImtvbm50ZSBha3R1ZWxsZW4gQmVudXR6ZXIgbmljaHQgaW4gUGFzc3dvcnQtRGF0ZWkgZmluZGVuOiAlcyIKIAotIzogd3JhcHBlci5jOjQyNworIzogd3JhcHBlci5jOjQzNQogbXNnaWQgIm5vIHN1Y2ggdXNlciIKIG1zZ3N0ciAia2VpbiBzb2xjaGVyIEJlbnV0emVyIgogCkBAIC0xMDUzLDI4ICsxMjI1LDMwIEBACiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCByZXNldCAlcyA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgcmVzZXQgJXMgPERhdGVpPi4uLlwiIHp1bSBIZXJhdXNuZWhtZW4gYXVzIGRlciAiCisiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHJlc2V0ICVzIDxEYXRlaT4uLi5cIiB6dW0gSGVyYXVzbmVobWVuIGF1cyBkZXIgIgogIkJlcmVpdHN0ZWxsdW5nKSIKIAogIzogd3Qtc3RhdHVzLmM6MTY5IHd0LXN0YXR1cy5jOjE5NgogbXNnaWQgIiAgKHVzZSBcImdpdCBybSAtLWNhY2hlZCA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgcm0gLS1jYWNoZWQgPERhdGVpPi4uLlwiIHp1bSBIZXJhdXNuZWhtZW4gYXVzIGRlciAiCisiICAoYmVudXR6ZW4gU2llIFwiZ2l0IHJtIC0tY2FjaGVkIDxEYXRlaT4uLi5cIiB6dW0gSGVyYXVzbmVobWVuIGF1cyBkZXIgIgogIkJlcmVpdHN0ZWxsdW5nKSIKIAogIzogd3Qtc3RhdHVzLmM6MTczCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgotbXNnc3RyICIgIChiZW51dHplIFwiZ2l0IGFkZC9ybSA8RGF0ZWk+Li4uXCIgdW0gZGllIEF1ZmzDtnN1bmcgenUgbWFya2llcmVuKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBhZGQvcm0gPERhdGVpPi4uLlwiIHVtIGRpZSBBdWZsw7ZzdW5nIHp1IG1hcmtpZXJlbikiCiAKICM6IHd0LXN0YXR1cy5jOjE3NSB3dC1zdGF0dXMuYzoxNzkKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIGFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbikiCiBtc2dzdHIgIiIKLSIgIChiZW51dHplIFwiZ2l0IGFkZC9ybSA8RGF0ZWk+Li4uXCIgdW0gZGllIEF1ZmzDtnN1bmcgZW50c3ByZWNoZW5kIHp1ICIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgYWRkL3JtIDxEYXRlaT4uLi5cIiB1bSBkaWUgQXVmbMO2c3VuZyBlbnRzcHJlY2hlbmQgenUgIgogIm1hcmtpZXJlbikiCiAKICM6IHd0LXN0YXR1cy5jOjE3NwogbXNnaWQgIiAgKHVzZSBcImdpdCBybSA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgotbXNnc3RyICIgIChiZW51dHplIFwiZ2l0IGFkZC9ybSA8RGF0ZWk+Li4uXCIgdW0gZGllIEF1ZmzDtnN1bmcgenUgbWFya2llcmVuKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBhZGQvcm0gPERhdGVpPi4uLlwiIHVtIGRpZSBBdWZsw7ZzdW5nIHp1IG1hcmtpZXJlbikiCiAKICM6IHd0LXN0YXR1cy5jOjE4OAogbXNnaWQgIkNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKQEAgLTEwODYsMjkgKzEyNjAsMjkgQEAKIAogIzogd3Qtc3RhdHVzLmM6MjEwCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCi1tc2dzdHIgIiAgKGJlbnV0emUgXCJnaXQgYWRkIDxEYXRlaT4uLi5cIiB6dW0gQmVyZWl0c3RlbGxlbikiCittc2dzdHIgIiAgKGJlbnV0emVuIFNpZSBcImdpdCBhZGQgPERhdGVpPi4uLlwiIHp1bSBCZXJlaXRzdGVsbGVuKSIKIAogIzogd3Qtc3RhdHVzLmM6MjEyCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCi1tc2dzdHIgIiAgKGJlbnV0emUgXCJnaXQgYWRkL3JtIDxEYXRlaT4uLi5cIiB6dW0gQmVyZWl0c3RlbGxlbikiCittc2dzdHIgIiAgKGJlbnV0emVuIFNpZSBcImdpdCBhZGQvcm0gPERhdGVpPi4uLlwiIHp1bSBCZXJlaXRzdGVsbGVuKSIKIAogIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiIgogIiAgKHVzZSBcImdpdCBjaGVja291dCAtLSA8ZmlsZT4uLi5cIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpIgogbXNnc3RyICIiCi0iICAoYmVudXR6ZSBcImdpdCBjaGVja291dCAtLSA8RGF0ZWk+Li4uXCIgdW0gZGllIMOEbmRlcnVuZ2VuIGltICIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgY2hlY2tvdXQgLS0gPERhdGVpPi4uLlwiIHVtIGRpZSDDhG5kZXJ1bmdlbiBpbSAiCiAiQXJiZWl0c3ZlcnplaWNobmlzIHp1IHZlcndlcmZlbikiCiAKICM6IHd0LXN0YXR1cy5jOjIxNQogbXNnaWQgIiAgKGNvbW1pdCBvciBkaXNjYXJkIHRoZSB1bnRyYWNrZWQgb3IgbW9kaWZpZWQgY29udGVudCBpbiBzdWJtb2R1bGVzKSIKIG1zZ3N0ciAiIgotIiAgKHRyYWdlIGVpbiBvZGVyIHZlcndlcmZlIGRlbiB1bmJlb2JhY2h0ZXRlbiBvZGVyIGdlw6RuZGVydGVuIEluaGFsdCBpbiBkZW4gIgotIlVudGVycHJvamVrdGVuKSIKKyIgICh0cmFnZW4gU2llIGVpbiBvZGVyIHZlcndlcmZlbiBTaWUgZGVuIHVuYmVvYmFjaHRldGVuIG9kZXIgZ2XDpG5kZXJ0ZW4gIgorIkluaGFsdCBpbiBkZW4gVW50ZXJwcm9qZWt0ZW4pIgogCiAjOiB3dC1zdGF0dXMuYzoyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCi1tc2dzdHIgIiAgKGJlbnV0emUgXCJnaXQgJXMgPERhdGVpPi4uLlwiIHp1bSBFaW5mw7xnZW4gaW4gZGllIEVpbnRyYWd1bmcpIgorbXNnc3RyICIgIChiZW51dHplbiBTaWUgXCJnaXQgJXMgPERhdGVpPi4uLlwiIHp1bSBFaW5mw7xnZW4gaW4gZGllIEVpbnRyYWd1bmcpIgogCiAjOiB3dC1zdGF0dXMuYzoyNDQKIG1zZ2lkICJidWciCkBAIC0xMTU0LDQyNSArMTMyOCw1NjUgQEAKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgogbXNnc3RyICJ1bmJlb2JhY2h0ZXRlciBJbmhhbHQsICIKIAotIzogd3Qtc3RhdHVzLmM6MzAzCisjOiB3dC1zdGF0dXMuYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgIm5ldWUgRGF0ZWk6ICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMwNgorIzogd3Qtc3RhdHVzLmM6MzA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcGllZDogICAgICVzIC0+ICVzIgogbXNnc3RyICJrb3BpZXJ0OiAgICAgJXMgLT4gJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMwOQorIzogd3Qtc3RhdHVzLmM6MzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQ6ICAgICVzIgogbXNnc3RyICJnZWzDtnNjaHQ6ICAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMTIKKyM6IHd0LXN0YXR1cy5jOjMxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJtb2RpZmllZDogICAlcyIKIG1zZ3N0ciAiZ2XDpG5kZXJ0OiAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMTUKKyM6IHd0LXN0YXR1cy5jOjMxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW5hbWVkOiAgICAlcyAtPiAlcyIKIG1zZ3N0ciAidW1iZW5hbm50OiAgICAlcyAtPiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzE4CisjOiB3dC1zdGF0dXMuYzozMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIlR5cMOkbmRlcnVuZzogJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMyMQorIzogd3Qtc3RhdHVzLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd246ICAgICVzIgogbXNnc3RyICJ1bmJla2FubnQ6ICAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMjQKKyM6IHd0LXN0YXR1cy5jOjMyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bm1lcmdlZDogICAlcyIKIG1zZ3N0ciAibmljaHQgenVzYW1tZW5nZWbDvGhydDogICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzI3CisjOiB3dC1zdGF0dXMuYzozMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVnOiB1bmhhbmRsZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgIkZlaGxlcjogdW5iZWhhbmRlbHRlciBEaWZmZXJlbnotU3RhdHVzICVjIgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjgwMwogbXNnaWQgIllvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLiIKLW1zZ3N0ciAiRHUgaGFzdCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBQZmFkZS4iCittc2dzdHIgIlNpZSBoYWJlbiBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBQZmFkZS4iCiAKLSM6IHd0LXN0YXR1cy5jOjc4OCB3dC1zdGF0dXMuYzo5MTIKKyM6IHd0LXN0YXR1cy5jOjgwNiB3dC1zdGF0dXMuYzo5NTgKIG1zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgY29tbWl0XCIpIgotbXNnc3RyICIgKGJlaGViZSBkaWUgS29uZmxpa3RlIHVuZCBmw7xocmUgXCJnaXQgY29tbWl0XCIgYXVzKSIKK21zZ3N0ciAiIChiZWhlYmVuIFNpZSBkaWUgS29uZmxpa3RlIHVuZCBmw7xocmVuIFNpZSBcImdpdCBjb21taXRcIiBhdXMpIgogCi0jOiB3dC1zdGF0dXMuYzo3OTEKKyM6IHd0LXN0YXR1cy5jOjgwOQogbXNnaWQgIkFsbCBjb25mbGljdHMgZml4ZWQgYnV0IHlvdSBhcmUgc3RpbGwgbWVyZ2luZy4iCiBtc2dzdHIgIiIKLSJBbGxlIEtvbmZsaWt0ZSBzaW5kIGJlaG9iZW4sIGFiZXIgZHUgYmlzdCBpbW1lciBub2NoIGJlaW0gWnVzYW1tZW5mw7xocmVuLiIKKyJBbGxlIEtvbmZsaWt0ZSBzaW5kIGJlaG9iZW4sIGFiZXIgU2llIHNpbmQgaW1tZXIgbm9jaCBiZWltIFp1c2FtbWVuZsO8aHJlbi4iCiAKLSM6IHd0LXN0YXR1cy5jOjc5NAorIzogd3Qtc3RhdHVzLmM6ODEyCiBtc2dpZCAiICAodXNlIFwiZ2l0IGNvbW1pdFwiIHRvIGNvbmNsdWRlIG1lcmdlKSIKLW1zZ3N0ciAiICAoYmVudXR6ZSBcImdpdCBjb21taXRcIiB1bSBkaWUgWnVzYW1tZW5mw7xocnVuZyBhYnp1c2NobGllw59lbikiCittc2dzdHIgIiAgKGJlbnV0emVuIFNpZSBcImdpdCBjb21taXRcIiB1bSBkaWUgWnVzYW1tZW5mw7xocnVuZyBhYnp1c2NobGllw59lbikiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNAorIzogd3Qtc3RhdHVzLmM6ODIyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIgogbXNnc3RyICJFaW5lIFwiYW1cIi1TaXR6dW5nIGlzdCBpbSBHYW5nZS4iCiAKLSM6IHd0LXN0YXR1cy5jOjgwNworIzogd3Qtc3RhdHVzLmM6ODI1CiBtc2dpZCAiVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZW1wdHkuIgogbXNnc3RyICJEZXIgYWt0dWVsbGUgUGF0Y2ggaXN0IGxlZXIuIgogCi0jOiB3dC1zdGF0dXMuYzo4MTEKKyM6IHd0LXN0YXR1cy5jOjgyOQogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCi1tc2dzdHIgIiAgKGJlaGViZSBkaWUgS29uZmxpa3RlIHVuZCBmw7xocmUgZGFubiBcImdpdCBhbSAtLXJlc29sdmVkXCIgYXVzKSIKK21zZ3N0ciAiIgorIiAgKGJlaGViZW4gU2llIGRpZSBLb25mbGlrdGUgdW5kIGbDvGhyZW4gU2llIGRhbm4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiIGF1cykiCiAKLSM6IHd0LXN0YXR1cy5jOjgxMworIzogd3Qtc3RhdHVzLmM6ODMxCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCi1tc2dzdHIgIiAoYmVudXR6ZSBcImdpdCBhbSAtLXNraXBcIiB1bSBkaWVzZW4gUGF0Y2ggYXVzenVsYXNzZW4pIgorbXNnc3RyICIgKGJlbnV0emVuIFNpZSBcImdpdCBhbSAtLXNraXBcIiB1bSBkaWVzZW4gUGF0Y2ggYXVzenVsYXNzZW4pIgogCi0jOiB3dC1zdGF0dXMuYzo4MTUKKyM6IHd0LXN0YXR1cy5jOjgzMwogbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLWFib3J0XCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgYW0gLS1hYm9ydFwiIHVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgd2llZGVyaGVyenVzdGVsbGVuKSIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgYW0gLS1hYm9ydFwiIHVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgIgorIndpZWRlcmhlcnp1c3RlbGxlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjg3MyB3dC1zdGF0dXMuYzo4ODMKKyM6IHd0LXN0YXR1cy5jOjg5MyB3dC1zdGF0dXMuYzo5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIlNpZSBzaW5kIGdlcmFkZSBiZWltIE5ldWF1ZmJhdSB2b24gWndlaWcgJyVzJyBhdWYgJyVzJy4iCisKKyM6IHd0LXN0YXR1cy5jOjg5OCB3dC1zdGF0dXMuYzo5MTUKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4iCi1tc2dzdHIgIkR1IGJpc3QgZ2VyYWRlIGJlaW0gTmV1YXVmYmF1LiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaW0gTmV1YXVmYmF1LiIKIAotIzogd3Qtc3RhdHVzLmM6ODc2CisjOiB3dC1zdGF0dXMuYzo5MDEKIG1zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKLW1zZ3N0ciAiICAoYmVoZWJlIGRpZSBLb25mbGlrdGUgdW5kIGbDvGhyZSBkYW5uIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgYXVzKSIKK21zZ3N0ciAiIgorIiAgKGJlaGViZW4gU2llIGRpZSBLb25mbGlrdGUgdW5kIGbDvGhyZW4gU2llIGRhbm4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIiAiCisiYXVzKSIKIAotIzogd3Qtc3RhdHVzLmM6ODc4CisjOiB3dC1zdGF0dXMuYzo5MDMKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCi1tc2dzdHIgIiAgKGJlbnV0emUgXCJnaXQgcmViYXNlIC0tc2tpcFwiIHVtIGRpZXNlbiBQYXRjaCBhdXN6dWxhc3NlbikiCittc2dzdHIgIiAgKGJlbnV0emVuIFNpZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdW0gZGllc2VuIFBhdGNoIGF1c3p1bGFzc2VuKSIKIAotIzogd3Qtc3RhdHVzLmM6ODgwCisjOiB3dC1zdGF0dXMuYzo5MDUKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkiCiBtc2dzdHIgIiIKLSIgIChiZW51dHplIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgdW0gZGVuIHVyc3Byw7xuZ2xpY2hlbiBad2VpZyBhdXN6dWNoZWNrZW4pIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCByZWJhc2UgLS1hYm9ydFwiIHVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgIgorImF1c3p1Y2hlY2tlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjg4NgorIzogd3Qtc3RhdHVzLmM6OTE4CiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgotbXNnc3RyICIgIChhbGxlIEtvbmZsaWt0ZSBiZWhvYmVuOiBmw7xocmUgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBhdXMpIgorbXNnc3RyICIgIChhbGxlIEtvbmZsaWt0ZSBiZWhvYmVuOiBmw7xocmVuIFNpZSBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiIGF1cykiCiAKLSM6IHd0LXN0YXR1cy5jOjg4OAorIzogd3Qtc3RhdHVzLmM6OTIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJTaWUgdGVpbGVuIGdlcmFkZSBlaW5lIFZlcnNpb24gYXVmLCB3w6RocmVuZCBlaW4gTmV1YXVmYmF1IHZvbiBad2VpZyAnJXMnIGF1ZiAiCisiJyVzJyBpbSBHYW5nZSBpc3QuIgorCisjOiB3dC1zdGF0dXMuYzo5MjcKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKLW1zZ3N0ciAiRHUgdGVpbHN0IGdlcmFkZSBlaW5lIFZlcnNpb24gd8OkaHJlbmQgZWluZXMgTmV1YXVmYmF1cyBhdWYuIgorbXNnc3RyICJTaWUgdGVpbGVuIGdlcmFkZSBlaW5lIFZlcnNpb24gd8OkaHJlbmQgZWluZXMgTmV1YXVmYmF1cyBhdWYuIgogCi0jOiB3dC1zdGF0dXMuYzo4OTEKKyM6IHd0LXN0YXR1cy5jOjkzMAogbXNnaWQgIiAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIiCi0iICAoU29iYWxkIGRlaW4gQXJiZWl0c3ZlcnplaWNobmlzIHNhdWJlciBpc3QsIGbDvGhyZSBcImdpdCByZWJhc2UgLS1jb250aW51ZSIKLSJcIiBhdXMpIgorIiAgKFNvYmFsZCBJaHIgQXJiZWl0c3ZlcnplaWNobmlzIHNhdWJlciBpc3QsIGbDvGhyZW4gU2llIFwiZ2l0IHJlYmFzZSAtLSIKKyJjb250aW51ZVwiIGF1cykiCiAKLSM6IHd0LXN0YXR1cy5jOjg5MworIzogd3Qtc3RhdHVzLmM6OTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJTaWUgZWRpdGllcmVuIGdlcmFkZSBlaW5lIFZlcnNpb24gd8OkaHJlbmQgZWluZXMgTmV1YXVmYmF1cyB2b24gWndlaWcgJyVzJyAiCisiYXVmICclcycuIgorCisjOiB3dC1zdGF0dXMuYzo5MzkKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iCi1tc2dzdHIgIkR1IGVkaXRpZXJzdCBnZXJhZGUgZWluZSBWZXJzaW9uIHfDpGhyZW5kIGVpbmVzIE5ldWF1ZmJhdXMuIgorbXNnc3RyICJTaWUgZWRpdGllcmVuIGdlcmFkZSBlaW5lIFZlcnNpb24gd8OkaHJlbmQgZWluZXMgTmV1YXVmYmF1cy4iCiAKLSM6IHd0LXN0YXR1cy5jOjg5NgorIzogd3Qtc3RhdHVzLmM6OTQyCiBtc2dpZCAiICAodXNlIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KSIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiB1bSBkaWUgYWt0dWVsbGUgVmVyc2lvbiBuYWNoenViZXNzZXJuKSIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiB1bSBkaWUgYWt0dWVsbGUgVmVyc2lvbiBuYWNoenViZXNzZXJuKSIKIAotIzogd3Qtc3RhdHVzLmM6ODk4CisjOiB3dC1zdGF0dXMuYzo5NDQKIG1zZ2lkICIiCiAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykiCiBtc2dzdHIgIiIKLSIgIChiZW51dHplIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgc29iYWxkIGRlaW5lIMOEbmRlcnVuZ2VuIGFiZ2VzY2hsb3NzZW4gIgotInNpbmQpIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiIHNvYmFsZCBJaHJlIMOEbmRlcnVuZ2VuICIKKyJhYmdlc2NobG9zc2VuIHNpbmQpIgogCi0jOiB3dC1zdGF0dXMuYzo5MDgKKyM6IHd0LXN0YXR1cy5jOjk1NAogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGNoZXJyeS1waWNraW5nLiIKLW1zZ3N0ciAiRHUgZsO8aHJzdCBnZXJhZGUgXCJjaGVycnktcGlja1wiIGF1cy4iCittc2dzdHIgIlNpZSBmw7xocmVuIGdlcmFkZSBcImNoZXJyeS1waWNrXCIgYXVzLiIKIAotIzogd3Qtc3RhdHVzLmM6OTE1CisjOiB3dC1zdGF0dXMuYzo5NjEKIG1zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgY29tbWl0XCIpIgotbXNnc3RyICIgIChhbGxlIEtvbmZsaWt0ZSBiZWhvYmVuOiBmw7xocmUgXCJnaXQgY29tbWl0XCIgYXVzKSIKK21zZ3N0ciAiICAoYWxsZSBLb25mbGlrdGUgYmVob2JlbjogZsO8aHJlbiBTaWUgXCJnaXQgY29tbWl0XCIgYXVzKSIKIAotIzogd3Qtc3RhdHVzLmM6OTI0Ci1tc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKLW1zZ3N0ciAiRHUgYmlzdCBnZXJhZGUgYmVpbSBIYWxiaWVyZW4uIgorIzogd3Qtc3RhdHVzLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJldmVydGluZyBjb21taXQgJXMuIgorbXNnc3RyICJTaWUgbmVobWVuIGdlcmFkZSBWZXJzaW9uICclcycgenVyw7xjay4iCiAKLSM6IHd0LXN0YXR1cy5jOjkyNwotbXNnaWQgIiAgKHVzZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKKyM6IHd0LXN0YXR1cy5jOjk3NQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgotIiAgKGJlbnV0emUgXCJnaXQgYmlzZWN0IHJlc2V0XCIgdW0genVtIHVyc3Byw7xuZ2xpY2hlbiBad2VpZyB6dXLDvGNrenVrZWhyZW4pIgorIiAgKGJlaGViZW4gU2llIGRpZSBLb25mbGlrdGUgdW5kIGbDvGhyZW4gU2llIGRhbm4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIiAiCisiYXVzKSIKIAogIzogd3Qtc3RhdHVzLmM6OTc4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIChhbGxlIEtvbmZsaWt0ZSBiZWhvYmVuOiBmw7xocmVuIFNpZSBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiIGF1cykiCisKKyM6IHd0LXN0YXR1cy5jOjk4MAorbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCittc2dzdHIgIiIKKyIgIChiZW51dHplbiBTaWUgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiB1bSBkaWUgVW1rZWhyb3BlcmF0aW9uIGFienVicmVjaGVuKSIKKworIzogd3Qtc3RhdHVzLmM6OTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZywgc3RhcnRlZCBmcm9tIGJyYW5jaCAnJXMnLiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaSBlaW5lciBiaW7DpHJlbiBTdWNoZSwgZ2VzdGFydGV0IHZvbiBad2VpZyAnJXMnLiIKKworIzogd3Qtc3RhdHVzLmM6OTk1Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKK21zZ3N0ciAiU2llIHNpbmQgZ2VyYWRlIGJlaSBlaW5lciBiaW7DpHJlbiBTdWNoZS4iCisKKyM6IHd0LXN0YXR1cy5jOjk5OAorbXNnaWQgIiAgKHVzZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKK21zZ3N0ciAiIgorIiAgKGJlbnV0emVuIFNpZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB1bSB6dW0gdXJzcHLDvG5nbGljaGVuIFp3ZWlnICIKKyJ6dXLDvGNrenVrZWhyZW4pIgorCisjOiB3dC1zdGF0dXMuYzoxMTczCiBtc2dpZCAiT24gYnJhbmNoICIKIG1zZ3N0ciAiQXVmIFp3ZWlnICIKIAotIzogd3Qtc3RhdHVzLmM6OTg1CisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIlp3ZWlnc3BpdHplIChIRUFEKSBsb3NnZWzDtnN0IGJlaSAiCisKKyM6IHd0LXN0YXR1cy5jOjExODYKK21zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgorbXNnc3RyICJad2VpZ3NwaXR6ZSAoSEVBRCkgbG9zZ2Vsw7ZzdCB2b24gIgorCisjOiB3dC1zdGF0dXMuYzoxMTg5CiBtc2dpZCAiTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLiIKIG1zZ3N0ciAiSW0gTW9tZW50IGF1ZiBrZWluZW0gWndlaWcuIgogCi0jOiB3dC1zdGF0dXMuYzo5OTcKKyM6IHd0LXN0YXR1cy5jOjEyMDYKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiSW5pdGlhbGUgVmVyc2lvbiIKIAotIzogd3Qtc3RhdHVzLmM6MTAxMQorIzogd3Qtc3RhdHVzLmM6MTIyMAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAiVW5iZW9iYWNodGV0ZSBEYXRlaWVuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDEzCisjOiB3dC1zdGF0dXMuYzoxMjIyCiBtc2dpZCAiSWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiSWdub3JpZXJ0ZSBEYXRlaWVuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDE1CisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKyJFcyBkYXVlcnRlICUuMmYgU2VrdW5kZW4gZGllIHVuYmVvYmFjaHRldGVuIERhdGVpZW4genUgYmVzdGltbWVuLlxuIgorIidzdGF0dXMgLXVubycga8O2bm50ZSBkYXMgYmVzY2hsZXVuaWdlbiwgYWJlciBTaWUgbcO8c3NlbiBkYXJhdWYgYWNodGVuLFxuIgorIm5ldWUgRGF0ZWllbiBzZWxic3RzdMOkbmRpZyBoaW56dXp1ZsO8Z2VuIChzaWVoZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorCisjOiB3dC1zdGF0dXMuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIlVuYmVvYmFjaHRldGUgRGF0ZWllbiBuaWNodCBhdWZnZWxpc3RldCVzIgogCi0jOiB3dC1zdGF0dXMuYzoxMDE3CisjOiB3dC1zdGF0dXMuYzoxMjM0CiBtc2dpZCAiICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKLW1zZ3N0ciAiIChiZW51dHplIGRpZSBPcHRpb24gLXUgdW0gdW5iZW9iYWNodGV0ZW4gRGF0ZWllbiBhbnp1emVpZ2VuKSIKK21zZ3N0ciAiIChiZW51dHplbiBTaWUgZGllIE9wdGlvbiAtdSB1bSB1bmJlb2JhY2h0ZXRlbiBEYXRlaWVuIGFuenV6ZWlnZW4pIgogCi0jOiB3dC1zdGF0dXMuYzoxMDIzCisjOiB3dC1zdGF0dXMuYzoxMjQwCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAiS2VpbmUgw4RuZGVydW5nZW4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwMjgKKyM6IHd0LXN0YXR1cy5jOjEyNDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpXG4iCiBtc2dzdHIgIiIKLSJrZWluZSDDhG5kZXJ1bmdlbiB6dW0gRWludHJhZ2VuIGhpbnp1Z2Vmw7xndCAoYmVudXR6ZSBcImdpdCBhZGRcIiB1bmQvb2RlciAiCi0iXCJnaXQgY29tbWl0IC1hXCIpXG4iCisia2VpbmUgw4RuZGVydW5nZW4genVtIEVpbnRyYWdlbiBoaW56dWdlZsO8Z3QgKGJlbnV0emVuIFNpZSBcImdpdCBhZGRcIiB1bmQvIgorIm9kZXIgXCJnaXQgY29tbWl0IC1hXCIpXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwMzEKKyM6IHd0LXN0YXR1cy5jOjEyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXRcbiIKIG1zZ3N0ciAia2VpbmUgw4RuZGVydW5nZW4genVtIEVpbnRyYWdlbiBoaW56dWdlZsO8Z3RcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTAzNAorIzogd3Qtc3RhdHVzLmM6MTI1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50ICh1c2UgXCJnaXQgYWRkXCIgdG8gIgogInRyYWNrKVxuIgogbXNnc3RyICIiCiAibmljaHRzIHp1bSBFaW50cmFnZW4gaGluenVnZWbDvGd0LCBhYmVyIGVzIGdpYnQgdW5iZW9iYWNodGV0ZSBEYXRlaWVuICIKLSIoYmVudXR6ZSBcImdpdCBhZGRcIiB6dW0gQmVvYmFjaHRlbilcbiIKKyIoYmVudXR6ZW4gU2llIFwiZ2l0IGFkZFwiIHp1bSBCZW9iYWNodGVuKVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDM3CisjOiB3dC1zdGF0dXMuYzoxMjU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgcHJlc2VudFxuIgogbXNnc3RyICJuaWNodHMgenVtIEVpbnRyYWdlbiBoaW56dWdlZsO8Z3QsIGFiZXIgZXMgZ2lidCB1bmJlb2JhY2h0ZXRlIERhdGVpZW5cbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA0MAorIzogd3Qtc3RhdHVzLmM6MTI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIKIG1zZ3N0ciAiIgotIm5pY2h0cyBlaW56dXRyYWdlbiAoRXJzdGVsbGUvS29waWVyZSBEYXRlaWVuIHVuZCBiZW51dHplIFwiZ2l0IGFkZFwiIHp1bSAiCi0iQmVvYmFjaHRlbilcbiIKKyJuaWNodHMgZWluenV0cmFnZW4gKEVyc3RlbGxlbi9Lb3BpZXJlbiBTaWUgRGF0ZWllbiB1bmQgYmVudXR6ZW4gU2llIFwiZ2l0IGFkZCIKKyJcIiB6dW0gQmVvYmFjaHRlbilcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA0MyB3dC1zdGF0dXMuYzoxMDQ4CisjOiB3dC1zdGF0dXMuYzoxMjYwIHd0LXN0YXR1cy5jOjEyNjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXRcbiIKIG1zZ3N0ciAibmljaHRzIGVpbnp1dHJhZ2VuXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwNDYKKyM6IHd0LXN0YXR1cy5jOjEyNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcylcbiIKIG1zZ3N0ciAiIgotIm5pY2h0cyBlaW56dXRyYWdlbiAoYmVudXR6ZSBkaWUgT3B0aW9uIC11LCB1bSB1bmJlb2JhY2h0ZXRlIERhdGVpZW4gIgorIm5pY2h0cyBlaW56dXRyYWdlbiAoYmVudXR6ZW4gU2llIGRpZSBPcHRpb24gLXUsIHVtIHVuYmVvYmFjaHRldGUgRGF0ZWllbiAiCiAiYW56dXplaWdlbilcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA1MAorIzogd3Qtc3RhdHVzLmM6MTI2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKIG1zZ3N0ciAibmljaHRzIGVpbnp1dHJhZ2VuLCBBcmJlaXRzdmVyemVpY2huaXMgc2F1YmVyXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjExNTgKKyM6IHd0LXN0YXR1cy5jOjEzNzUKIG1zZ2lkICJIRUFEIChubyBicmFuY2gpIgogbXNnc3RyICJIRUFEIChrZWluIFp3ZWlnKSIKIAotIzogd3Qtc3RhdHVzLmM6MTE2NAorIzogd3Qtc3RhdHVzLmM6MTM4MQogbXNnaWQgIkluaXRpYWwgY29tbWl0IG9uICIKIG1zZ3N0ciAiSW5pdGlhbGUgVmVyc2lvbiBhdWYgIgogCi0jOiB3dC1zdGF0dXMuYzoxMTc5CisjOiB3dC1zdGF0dXMuYzoxMzk2CiBtc2dpZCAiYmVoaW5kICIKIG1zZ3N0ciAiaGludGVyaGVyICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4MiB3dC1zdGF0dXMuYzoxMTg1CisjOiB3dC1zdGF0dXMuYzoxMzk5IHd0LXN0YXR1cy5jOjE0MDIKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgInZvcmF1cyAiCiAKLSM6IHd0LXN0YXR1cy5jOjExODcKKyM6IHd0LXN0YXR1cy5jOjE0MDQKIG1zZ2lkICIsIGJlaGluZCAiCiBtc2dzdHIgIiwgaGludGVyaGVyICIKIAotIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNDEKKyM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKLW1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgZW50ZmVybmVuIgorbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCBlbnRmZXJuZW4uIgogCi0jOiBidWlsdGluL2FkZC5jOjE5Ci1tc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIgotbXNnc3RyICJnaXQgYWRkIFtPcHRpb25lbl0gWy0tXSBbPERhdGVpbXVzdGVyPi4uLl0iCisjOiBidWlsdGluL2FkZC5jOjIwCittc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgYWRkIFtPcHRpb25lbl0gWy0tXSBbPFBmYWRzcGV6aWZpa2F0aW9uPi4uLl0iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjIKKyMuCisjLiAqIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCAiZ2l0IGFkZCAtcCIgYW5kIG1vc3QgR2l0CisjLiAqIGNvbW1hbmRzLCB3ZSBzaG91bGQgZGVmYXVsdCB0byBiZWluZyB0cmVlLXdpZGUsIGJ1dAorIy4gKiB0aGlzIGlzIG5vdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IgYW5kIGNhbid0IGJlCisjLiAqIGNoYW5nZWQgdW50aWwgdXNlcnMgdHJhaW5lZCB0aGVtc2VsdmVzIG5vdCB0byB0eXBlCisjLiAqICJnaXQgYWRkIC11IiBvciAiZ2l0IGFkZCAtQSIuIEZvciBub3csIHdlIHdhcm4gYW5kCisjLiAqIGtlZXAgdGhlIG9sZCBiZWhhdmlvci4gTGF0ZXIsIHRoZSBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZAorIy4gKiB0byB0cmVlLXdpZGUsIGtlZXBpbmcgdGhlIHdhcm5pbmcgZm9yIGEgd2hpbGUsIGFuZAorIy4gKiBldmVudHVhbGx5IHdlIGNhbiBkcm9wIHRoZSB3YXJuaW5nLgorIy4KKyM6IGJ1aWx0aW4vYWRkLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBiZWhhdmlvciBvZiAnZ2l0IGFkZCAlcyAob3IgJXMpJyB3aXRoIG5vIHBhdGggYXJndW1lbnQgZnJvbSBhXG4iCisic3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgYW5kIHNob3VsZCBub3QgYmUgdXNlZCAiCisiYW55bW9yZS5cbiIKKyJUbyBhZGQgY29udGVudCBmb3IgdGhlIHdob2xlIHRyZWUsIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvciBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIlRvIHJlc3RyaWN0IHRoZSBjb21tYW5kIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgcnVuOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob3IgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIldpdGggdGhlIGN1cnJlbnQgR2l0IHZlcnNpb24sIHRoZSBjb21tYW5kIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGN1cnJlbnQgIgorImRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiIgorIkRhcyBWZXJoYWx0ZW4gdm9uICdnaXQgYWRkICVzIChvZGVyICVzKScgb2huZSBlaW4gUGZhZC1Bcmd1bWVudCB2b25cbiIKKyJlaW5lbSBVbnRlcnZlcnplaWNobmlzIGF1cyB3aXJkIGluIEdpdCAyLjAgZ2XDpG5kZXJ0IHVuZCBzb2xsdGUgbmljaHRcbiIKKyJtZWhyIHZlcndlbmRldCB3ZXJkZW4uXG4iCisiVW0gRGF0ZWllbiBkZXMgZ2VzYW10ZW4gUHJvamVrdHZlcnplaWNobmlzc2VzIGhpbnp1enVmw7xnZW4sIGbDvGhyZW4gU2llIGF1czpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvZGVyIGdpdCBhZGQgJXMgOi8pXG4iCisiXG4iCisiWnVyIEVpbnNjaHLDpG5rdW5nIGF1ZiBkYXMgYWt0dWVsbGUgVmVyemVpY2huaXMgZsO8aHJlbiBTaWUgYXVzOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob2RlciBnaXQgYWRkICVzIC4pXG4iCisiXG4iCisiTWl0IGRlciBha3R1ZWxsZW4gVmVyc2lvbiB2b24gR2l0IGlzdCBkYXMgS29tbWFuZG8gYXVmIGRhcyBha3R1ZWxsZVxuIgorIlZlcnplaWNobmlzIGJlc2NocsOkbmt0LlxuIgorCisjOiBidWlsdGluL2FkZC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IHJhbiAnZ2l0IGFkZCcgd2l0aCBuZWl0aGVyICctQSAoLS1hbGwpJyBvciAnLS1pZ25vcmUtcmVtb3ZhbCcsXG4iCisid2hvc2UgYmVoYXZpb3VyIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgd2l0aCByZXNwZWN0IHRvIHBhdGhzIHlvdSByZW1vdmVkLlxuIgorIlBhdGhzIGxpa2UgJyVzJyB0aGF0IGFyZVxuIgorInJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZSBhcmUgaWdub3JlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiBHaXQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4nLCB3aGljaCBpcyB0aGUgY3VycmVudCBkZWZhdWx0LFxuIgorIiAgaWdub3JlcyBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPicgd2lsbCBsZXQgeW91IGFsc28gcmVjb3JkIHRoZSByZW1vdmFscy5cbiIKKyJcbiIKKyJSdW4gJ2dpdCBzdGF0dXMnIHRvIGNoZWNrIHRoZSBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorbXNnc3RyICIiCisiU2llIGhhYmVuICdnaXQgYWRkJyB3ZWRlciBtaXQgJy1BICgtLWFsbCknIG5vY2ggbWl0ICctLWlnbm9yZS1yZW1vdmFsJ1xuIgorImF1c2dlZsO8aHJ0LiBEYXMgVmVyaGFsdGVuIGRlcyBLb21tYW5kb3Mgw6RuZGVydCBzaWNoIGluIEdpdCAyLjAgZHVyY2hcbiIKKyJCZXLDvGNrc2ljaHRpZ3VuZyBkZXIgZ2Vsw7ZzY2h0ZW4gUGZhZGUuXG4iCisiUGZhZGUgd2llICclcycsIGRpZSBpbSBBcmJlaXRzdmVyemVpY2huaXMgZ2Vsw7ZzY2h0IHd1cmRlbiwgd2VyZGVuIGluXG4iCisiZGllc2VyIFZlcnNpb24gdm9uIEdpdCBpZ25vcmllcnQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxQZmFkc3BlemlmaWthdGlvbj4nLCB3YXMgZGVyIGFrdHVlbGxlXG4iCisiICBTdGFuZGFyZHdlcnQgaXN0LCBpZ25vcmllcnQgZ2Vsw7ZzY2h0ZSBQZmFkZSBpbSBBcmJlaXRzdmVyemVpY2huaXMuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPFBmYWRzcGV6aWZpa2F0aW9uPicgYmVyw7xja3NpY2h0aWd0IGViZW5mYWxscyBnZWzDtnNjaHRlXG4iCisiICBQZmFkZS4iCisiXG4iCisiRsO8aHJlbiBTaWUgJ2dpdCBzdGF0dXMnIGF1cywgdW0gZGllIGdlbMO2c2NodGVuIFBmYWRlIHp1IMO8YmVycHLDvGZlbi5cbiIKKworIzogYnVpbHRpbi9hZGQuYzoxNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAidW5lcndhcnRldGVyIERpZmZlcmVuei1TdGF0dXMgJWMiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjcgYnVpbHRpbi9jb21taXQuYzoyMzEKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjMzCiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICJBa3R1YWxpc2llcnVuZyBkZXIgRGF0ZWllbiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9hZGQuYzo3NworIzogYnVpbHRpbi9hZGQuYzoxNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3ZlICclcydcbiIKIG1zZ3N0ciAibMO2c2NoZSAnJXMnXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MTc2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgotbXNnc3RyICJQZmFkICclcycgYmVmaW5kZXQgc2ljaCBpbiBVbnRlcnByb2pla3QgJyUuKnMnIgotCi0jOiBidWlsdGluL2FkZC5jOjE5MgorIzogYnVpbHRpbi9hZGQuYzoyNTMKIG1zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlZnJlc2hpbmcgdGhlIGluZGV4OiIKIG1zZ3N0ciAiIgogIk5pY2h0IGJlcmVpdGdlc3RlbGx0ZSDDhG5kZXJ1bmdlbiBuYWNoIEFrdHVhbGlzaWVydW5nIGRlciBCZXJlaXRzdGVsbHVuZzoiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MTk1IGJ1aWx0aW4vYWRkLmM6NDYwIGJ1aWx0aW4vcm0uYzoyNzUKKyM6IGJ1aWx0aW4vYWRkLmM6MjU2IGJ1aWx0aW4vYWRkLmM6NTcyIGJ1aWx0aW4vcm0uYzoyNzUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aHNwZWMgJyVzJyBkaWQgbm90IG1hdGNoIGFueSBmaWxlcyIKIG1zZ3N0ciAiUGZhZHNwZXppZmlrYXRpb24gJyVzJyBzdGltbXQgbWl0IGtlaW5lbiBEYXRlaWVuIMO8YmVyZWluIgogCi0jOiBidWlsdGluL2FkZC5jOjIwOQotIywgYy1mb3JtYXQKLW1zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCi1tc2dzdHIgIiclcycgaXN0IMO8YmVyIGVpbmVtIHN5bWJvbGlzY2hlbiBMaW5rIgotCi0jOiBidWlsdGluL2FkZC5jOjI3NgorIzogYnVpbHRpbi9hZGQuYzozMzkKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIktvbm50ZSBkaWUgQmVyZWl0c3RlbGx1bmcgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjg2CisjOiBidWlsdGluL2FkZC5jOjM0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nLiIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgenVtIFNjaHJlaWJlbiDDtmZmbmVuLiIKIAotIzogYnVpbHRpbi9hZGQuYzoyOTAKKyM6IGJ1aWx0aW4vYWRkLmM6MzUzCiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHBhdGNoIgogbXNnc3RyICJLb25udGUgUGF0Y2ggbmljaHQgc2NocmVpYmVuIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NQorIzogYnVpbHRpbi9hZGQuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAiS29ubnRlIFZlcnplaWNobmlzICclcycgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk3CisjOiBidWlsdGluL2FkZC5jOjM2MAogbXNnaWQgIkVtcHR5IHBhdGNoLiBBYm9ydGVkLiIKIG1zZ3N0ciAiTGVlcmVyIFBhdGNoLiBBYmdlYnJvY2hlbi4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzAzCisjOiBidWlsdGluL2FkZC5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgYXBwbHkgJyVzJyIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgYW53ZW5kZW4uIgogCi0jOiBidWlsdGluL2FkZC5jOjMxMworIzogYnVpbHRpbi9hZGQuYzozNzYKIG1zZ2lkICJUaGUgZm9sbG93aW5nIHBhdGhzIGFyZSBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iCiBtc2dzdHIgIiIKLSJEaWUgZm9sZ2VuZGVuIFBmYWRlIHdlcmRlbiBkdXJjaCBlaW5lIGRlaW5lciBcIi5naXRpZ25vcmVcIiBEYXRlaWVuICIKKyJEaWUgZm9sZ2VuZGVuIFBmYWRlIHdlcmRlbiBkdXJjaCBlaW5lIElocmVyIFwiLmdpdGlnbm9yZVwiIERhdGVpZW4gIgogImlnbm9yaWVydDpcbiIKIAotIzogYnVpbHRpbi9hZGQuYzozMTkgYnVpbHRpbi9jbGVhbi5jOjUyIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKLSM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6Mzg4IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MworIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKICM6IGJ1aWx0aW4vcm0uYzoyMDYKIG1zZ2lkICJkcnkgcnVuIgogbXNnc3RyICJQcm9iZWxhdWYiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzIwIGJ1aWx0aW4vYXBwbHkuYzo0MzU0IGJ1aWx0aW4vY29tbWl0LmM6MTE2MAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIgYnVpbHRpbi9mc2NrLmM6NjEzIGJ1aWx0aW4vbG9nLmM6MTQ4MwotIzogYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCisjOiBidWlsdGluL2FkZC5jOjM5NCBidWlsdGluL2FwcGx5LmM6NDQwOSBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE5CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTIgYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTUgYnVpbHRpbi9mc2NrLmM6NjEzCisjOiBidWlsdGluL2xvZy5jOjE1MTggYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCiBtc2dpZCAiYmUgdmVyYm9zZSIKIG1zZ3N0ciAiZXJ3ZWl0ZXJ0ZSBBdXNnYWJlbiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk2CiBtc2dpZCAiaW50ZXJhY3RpdmUgcGlja2luZyIKIG1zZ3N0ciAiaW50ZXJha3RpdmVzIEF1c3fDpGhsZW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzIzIGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDMxIGJ1aWx0aW4vcmVzZXQuYzoyNDgKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYzIGJ1aWx0aW4vcmVzZXQuYzoyNTgKIG1zZ2lkICJzZWxlY3QgaHVua3MgaW50ZXJhY3RpdmVseSIKIG1zZ3N0ciAiaW50ZXJha3RpdiBCZXJlaWNoZSBhdXN3w6RobGVuIgogCi0jOiBidWlsdGluL2FkZC5jOjMyNAorIzogYnVpbHRpbi9hZGQuYzozOTgKIG1zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCiBtc2dzdHIgImFrdHVlbGxlIFVudGVyc2NoaWVkZSBlZGl0aWVyZW4gdW5kIGFud2VuZGVuIgogCi0jOiBidWlsdGluL2FkZC5jOjMyNQorIzogYnVpbHRpbi9hZGQuYzozOTkKIG1zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgImVybGF1YnQgZGFzIEhpbnp1ZsO8Z2VuIGFuZGVybmZhbGxzIGlnbm9yaWVydGVyIERhdGVpZW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI2CisjOiBidWlsdGluL2FkZC5jOjQwMAogbXNnaWQgInVwZGF0ZSB0cmFja2VkIGZpbGVzIgogbXNnc3RyICJha3R1YWxpc2llcnQgYmVvYmFjaHRldGUgRGF0ZWllbiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjcKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICJzcGVpY2hlcnQgbnVyLCBkYXNzIGRlciBQZmFkIHNww6R0ZXIgaGluenVnZWbDvGd0IHdlcmRlbiBzb2xsIgogCi0jOiBidWlsdGluL2FkZC5jOjMyOAorIzogYnVpbHRpbi9hZGQuYzo0MDIKIG1zZ2lkICJhZGQgY2hhbmdlcyBmcm9tIGFsbCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIiIKICJmw7xndCDDhG5kZXJ1bmdlbiB2b24gYWxsZW4gYmVvYmFjaHRldGVuIHVuZCB1bmJlb2JhY2h0ZXRlbiBEYXRlaWVuIGhpbnp1IgogCi0jOiBidWlsdGluL2FkZC5jOjMyOQorIy4gdGFrZXMgbm8gYXJndW1lbnRzCisjOiBidWlsdGluL2FkZC5jOjQwNQorbXNnaWQgImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIgorbXNnc3RyICJpZ25vcmllcnQgZ2Vsw7ZzY2h0ZSBQZmFkZSBpbSBBcmJlaXRzdmVyemVpY2huaXMgKGdlbmF1IHdpZSAiCisiLS1uby1hbGwpIgorCisjOiBidWlsdGluL2FkZC5jOjQwNwogbXNnaWQgImRvbid0IGFkZCwgb25seSByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAiZsO8Z3QgbmljaHRzIGhpbnp1LCBha3R1YWxpc2llcnQgbnVyIGRpZSBCZXJlaXRzdGVsbHVuZyIKIAotIzogYnVpbHRpbi9hZGQuYzozMzAKKyM6IGJ1aWx0aW4vYWRkLmM6NDA4CiBtc2dpZCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIKIG1zZ3N0ciAiIgogIsO8YmVyc3ByaW5ndCBEYXRlaWVuLCBkaWUgYXVmZ3J1bmQgdm9uIEZlaGxlcm4gbmljaHQgaGluenVnZWbDvGd0IHdlcmRlbiAiCiAia29ubnRlbiIKIAotIzogYnVpbHRpbi9hZGQuYzozMzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5CiBtc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgogbXNnc3RyICJwcsO8ZnQgb2IgLSBhdWNoIGZlaGxlbmRlIC0gRGF0ZWllbiBpbSBQcm9iZWxhdWYgaWdub3JpZXJ0IHdlcmRlbiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTMKKyM6IGJ1aWx0aW4vYWRkLmM6NDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIHRoZW0uXG4iCi1tc2dzdHIgIlZlcndlbmRlIC1mIHdlbm4gZHUgZGllc2Ugd2lya2xpY2ggaGluenVmw7xnZW4gbcO2Y2h0ZXN0LlxuIgorbXNnc3RyICJWZXJ3ZW5kZW4gU2llIC1mIHdlbm4gU2llIGRpZXNlIHdpcmtsaWNoIGhpbnp1ZsO8Z2VuIG3DtmNodGVuLlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM1NAorIzogYnVpbHRpbi9hZGQuYzo0MzIKIG1zZ2lkICJubyBmaWxlcyBhZGRlZCIKIG1zZ3N0ciAia2VpbmUgRGF0ZWllbiBoaW56dWdlZsO8Z3QiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzYwCisjOiBidWlsdGluL2FkZC5jOjQzOAogbXNnaWQgImFkZGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgIkhpbnp1ZsO8Z2VuIHZvbiBEYXRlaWVuIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MgorIzogYnVpbHRpbi9hZGQuYzo0NzcKIG1zZ2lkICItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIKLW1zZ3N0ciAiLUEgdW5kIC11IHNpbmQgenVlaW5hbmRlciBpbmtvbXBhdGliZWwiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtQSB1bmQgLXUgc2luZCB6dWVpbmFuZGVyIGlua29tcGF0aWJlbC4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk0CisjOiBidWlsdGluL2FkZC5jOjQ5NQogbXNnaWQgIk9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtLWRyeS1ydW4iCiBtc2dzdHIgIiIKLSJEaWUgT3B0aW9uIC0taWdub3JlLW1pc3Npbmcga2FubiBudXIgenVzYW1tZW4gbWl0IC0tZHJ5LXJ1biBiZW51dHp0IHdlcmRlbi4iCisiRGllIE9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGthbm4gbnVyIHp1c2FtbWVuIG1pdCAtLWRyeS1ydW4gdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE0CisjOiBidWlsdGluL2FkZC5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3RoaW5nIHNwZWNpZmllZCwgbm90aGluZyBhZGRlZC5cbiIKIG1zZ3N0ciAiTmljaHRzIHNwZXppZml6aWVydCwgbmljaHRzIGhpbnp1Z2Vmw7xndC5cbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MTUKKyM6IGJ1aWx0aW4vYWRkLmM6NTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1heWJlIHlvdSB3YW50ZWQgdG8gc2F5ICdnaXQgYWRkIC4nP1xuIgotbXNnc3RyICJXb2xsdGVzdCBkdSB2aWVsbGVpY2h0ICdnaXQgYWRkIC4nIHNhZ2VuP1xuIgorbXNnc3RyICJXb2xsdGVuIFNpZSB2aWVsbGVpY2h0ICdnaXQgYWRkIC4nIHNhZ2VuP1xuIgogCi0jOiBidWlsdGluL2FkZC5jOjQyMSBidWlsdGluL2NsZWFuLmM6OTUgYnVpbHRpbi9jb21taXQuYzoyOTEgYnVpbHRpbi9tdi5jOjgyCi0jOiBidWlsdGluL3JtLmM6MjM1CisjOiBidWlsdGluL2FkZC5jOjUzMiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjY2IGJ1aWx0aW4vY2xlYW4uYzoyMDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjkzIGJ1aWx0aW4vbXYuYzo4MiBidWlsdGluL3JtLmM6MjM1CiBtc2dpZCAiaW5kZXggZmlsZSBjb3JydXB0IgogbXNnc3RyICJCZXJlaXRzdGVsbHVuZ3NkYXRlaSBiZXNjaMOkZGlndCIKIAotIzogYnVpbHRpbi9hZGQuYzo0ODEgYnVpbHRpbi9hcHBseS5jOjQ0NTAgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCisjOiBidWlsdGluL2FkZC5jOjYwNCBidWlsdGluL2FwcGx5LmM6NDUwNSBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzozNzAKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIktvbm50ZSBuZXVlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIG5pY2h0IHNjaHJlaWJlbi4iCiAKQEAgLTE2MjksMTcgKzE5NDMsMTcgQEAKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGV4cGVjdGVkIC9kZXYvbnVsbCBvbiBsaW5lICVkIgogbXNnc3RyICJnaXQgYXBwbHk6IHVuZ8O8bHRpZ2VzICdnaXQtZGlmZicgLSBlcndhcnRldGUgL2Rldi9udWxsIGluIFplaWxlICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQyMAorIzogYnVpbHRpbi9hcHBseS5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVjb3VudDogdW5leHBlY3RlZCBsaW5lOiAlLipzIgogbXNnc3RyICJyZWNvdW50OiB1bmVyd2FydGV0ZSBaZWlsZTogJS4qcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZyYWdtZW50IHdpdGhvdXQgaGVhZGVyIGF0IGxpbmUgJWQ6ICUuKnMiCiBtc2dzdHIgIlBhdGNoLUZyYWdtZW50IG9obmUgS29wZmJlcmVpY2ggYmVpIFplaWxlICVkOiAlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQ5NAorIzogYnVpbHRpbi9hcHBseS5jOjE0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgIgpAQCAtMTY1NCw3MCArMTk2OCw2NiBAQAogIkRlbSBLb3BmYmVyZWljaCB2b24gXCJnaXQgZGlmZlwiIGZlaGxlbiBJbmZvcm1hdGlvbmVuIHp1bSBEYXRlaW5hbWVuLCB3ZW5uICIKICIlZCB2b3Jhbmdlc3RlbGx0ZSBUZWlsZSBkZXMgUGZhZGVzIGVudGZlcm50IHdlcmRlbiAoWmVpbGUgJWQpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY1NAorIzogYnVpbHRpbi9hcHBseS5jOjE2NTYKIG1zZ2lkICJuZXcgZmlsZSBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAibmV1ZSBEYXRlaSBow6RuZ3Qgdm9uIGFsdGVuIEluaGFsdGVuIGFiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY1NgorIzogYnVpbHRpbi9hcHBseS5jOjE2NTgKIG1zZ2lkICJkZWxldGVkIGZpbGUgc3RpbGwgaGFzIGNvbnRlbnRzIgogbXNnc3RyICJlbnRmZXJudGUgRGF0ZWkgaGF0IG5vY2ggSW5oYWx0ZSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2ODIKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAiZmVobGVyaGFmdGVyIFBhdGNoIGJlaSBaZWlsZSAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE3MTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBmaWxlICVzIGRlcGVuZHMgb24gb2xkIGNvbnRlbnRzIgogbXNnc3RyICJuZXVlIERhdGVpICVzIGjDpG5ndCB2b24gYWx0ZW4gSW5oYWx0ZW4gYWIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIwCisjOiBidWlsdGluL2FwcGx5LmM6MTcyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkIGZpbGUgJXMgc3RpbGwgaGFzIGNvbnRlbnRzIgogbXNnc3RyICJlbnRmZXJudGUgRGF0ZWkgJXMgaGF0IG5vY2ggSW5oYWx0ZSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE3MjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIioqIHdhcm5pbmc6IGZpbGUgJXMgYmVjb21lcyBlbXB0eSBidXQgaXMgbm90IGRlbGV0ZWQiCiBtc2dzdHIgIioqIFdhcm51bmc6IERhdGVpICVzIHdpcmQgbGVlciwgYWJlciBuaWNodCBlbnRmZXJudC4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODY5CisjOiBidWlsdGluL2FwcGx5LmM6MTg3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IGJpbmFyeSBwYXRjaCBhdCBsaW5lICVkOiAlLipzIgogbXNnc3RyICJmZWhsZXJoYWZ0ZXIgQmluw6RyLVBhdGNoIGJlaSBaZWlsZSAlZDogJS4qcyIKIAogIy4gdGhlcmUgaGFzIHRvIGJlIG9uZSBodW5rIChmb3J3YXJkIGh1bmspCi0jOiBidWlsdGluL2FwcGx5LmM6MTg5OAorIzogYnVpbHRpbi9hcHBseS5jOjE5MDAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGJpbmFyeSBwYXRjaCBhdCBsaW5lICVkIgogbXNnc3RyICJuaWNodCBlcmthbm50ZXIgQmluw6RyLVBhdGNoIGJlaSBaZWlsZSAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE5ODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxOTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIHdpdGggb25seSBnYXJiYWdlIGF0IGxpbmUgJWQiCiBtc2dzdHIgIlBhdGNoIG1pdCBudXR6bG9zZW4gSW5mb3JtYXRpb25lbiBiZWkgWmVpbGUgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyMDc0CisjOiBidWlsdGluL2FwcGx5LmM6MjA3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCBzeW1saW5rICVzIgogbXNnc3RyICJrb25udGUgc3ltYm9saXNjaGUgVmVya27DvHBmdW5nICVzIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA3OAorIzogYnVpbHRpbi9hcHBseS5jOjIwODAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG9wZW4gb3IgcmVhZCAlcyIKIG1zZ3N0ciAia29ubnRlICVzIG5pY2h0IMO2ZmZuZW4gb2RlciBsZXNlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIxNDkKLW1zZ2lkICJvb3BzIgotbXNnc3RyICJVcHMiCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNjcxCisjOiBidWlsdGluL2FwcGx5LmM6MjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHN0YXJ0IG9mIGxpbmU6ICclYyciCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIFplaWxlbmFuZmFuZzogJyVjJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3ODkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKQEAgLTE3MjUsMTIgKzIwMzUsMTIgQEAKIG1zZ3N0clsxXSAiIgogIlBhdGNoLUJlcmVpY2ggIyVkIGVyZm9sZ3JlaWNoIGFuZ2V3ZW5kZXQgYmVpICVkICglZCBaZWlsZW4gdmVyc2V0enQpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgwMQorIzogYnVpbHRpbi9hcHBseS5jOjI4MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29udGV4dCByZWR1Y2VkIHRvICglbGQvJWxkKSB0byBhcHBseSBmcmFnbWVudCBhdCAlZCIKIG1zZ3N0ciAiS29udGV4dCByZWR1emllcnQgenUgKCVsZC8lbGQpIHVtIFBhdGNoLUJlcmVpY2ggYmVpICVkIGFuenV3ZW5kZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyODA3CisjOiBidWlsdGluL2FwcGx5LmM6MjgyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAid2hpbGUgc2VhcmNoaW5nIGZvcjpcbiIKQEAgLTE3MzksMzM1ICsyMDQ5LDM0MCBAQAogImJlaSBkZXIgU3VjaGUgbmFjaDpcbiIKICIlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgyNgorIzogYnVpbHRpbi9hcHBseS5jOjI4NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAibWlzc2luZyBiaW5hcnkgcGF0Y2ggZGF0YSBmb3IgJyVzJyIKIG1zZ3N0ciAia2VpbmUgRGF0ZW4gaW4gQmluw6RyLVBhdGNoIGbDvHIgJyVzJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJpbmFyeSBwYXRjaCBkb2VzIG5vdCBhcHBseSB0byAnJXMnIgogbXNnc3RyICJLb25udGUgQmluw6RyLVBhdGNoIG5pY2h0IGF1ZiAnJXMnIGFud2VuZGVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkzNQorIzogYnVpbHRpbi9hcHBseS5jOjI5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIHRvICclcycgY3JlYXRlcyBpbmNvcnJlY3QgcmVzdWx0IChleHBlY3RpbmcgJXMsIGdvdCAlcykiCiBtc2dzdHIgIiIKICJCaW7DpHItUGF0Y2ggZsO8ciAnJXMnIGVyemV1Z3QgZmFsc2NoZXMgRXJnZWJuaXMgKGVyd2FydGV0ZSAlcywgYmVrYW0gJXMpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mjk1NgorIzogYnVpbHRpbi9hcHBseS5jOjI5NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZmFpbGVkOiAlczolbGQiCiBtc2dzdHIgIkFud2VuZHVuZyBkZXMgUGF0Y2hlcyBmZWhsZ2VzY2hsYWdlbjogJXM6JWxkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzA3OAorIzogYnVpbHRpbi9hcHBseS5jOjMwOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNoZWNrb3V0ICVzIgogbXNnc3RyICJrYW5uICVzIG5pY2h0IGF1c2NoZWNrZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTIzIGJ1aWx0aW4vYXBwbHkuYzozMTMyIGJ1aWx0aW4vYXBwbHkuYzozMTc2CisjOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWFkIG9mICVzIGZhaWxlZCIKIG1zZ3N0ciAiS29ubnRlICVzIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE1NiBidWlsdGluL2FwcGx5LmM6MzM3OAorIzogYnVpbHRpbi9hcHBseS5jOjMxNzMgYnVpbHRpbi9hcHBseS5jOjMzOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCiBtc2dzdHIgIlBmYWQgJXMgd3VyZGUgdW1iZW5hbm50L2dlbMO2c2NodCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyMzcgYnVpbHRpbi9hcHBseS5jOjMzOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU0IGJ1aWx0aW4vYXBwbHkuYzozNDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleCIKIG1zZ3N0ciAiJXMgaXN0IG5pY2h0IGJlcmVpdGdlc3RlbGx0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI0MSBidWlsdGluL2FwcGx5LmM6MzM4NCBidWlsdGluL2FwcGx5LmM6MzQwNgorIzogYnVpbHRpbi9hcHBseS5jOjMyNTggYnVpbHRpbi9hcHBseS5jOjM0MDEgYnVpbHRpbi9hcHBseS5jOjM0MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIgogbXNnc3RyICIlczogJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjQ2IGJ1aWx0aW4vYXBwbHkuYzozNDAwCisjOiBidWlsdGluL2FwcGx5LmM6MzI2MyBidWlsdGluL2FwcGx5LmM6MzQxNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgbWF0Y2ggaW5kZXgiCiBtc2dzdHIgIiVzIGVudHNwcmljaHQgbmljaHQgZGVyIEJlcmVpdHN0ZWxsdW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzM0OAorIzogYnVpbHRpbi9hcHBseS5jOjMzNjUKIG1zZ2lkICJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIgogbXNnc3RyICJMw7ZzY2gtUGF0Y2ggaGludGVybMOkc3N0IERhdGVpaW5oYWx0ZSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0MTcKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3cm9uZyB0eXBlIgogbXNnc3RyICIlczogZmFsc2NoZXIgVHlwIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQxOQorIzogYnVpbHRpbi9hcHBseS5jOjM0MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaGFzIHR5cGUgJW8sIGV4cGVjdGVkICVvIgogbXNnc3RyICIlcyBpc3Qgdm9tIFR5cCAlbywgZXJ3YXJ0ZXRlICVvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyMAorIzogYnVpbHRpbi9hcHBseS5jOjM1MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4IgogbXNnc3RyICIlcyBpc3QgYmVyZWl0cyBiZXJlaXRnZXN0ZWxsdCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXMgZXhpc3RpZXJ0IGJlcmVpdHMgaW0gQXJiZWl0c3ZlcnplaWNobmlzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU0MworIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIgogbXNnc3RyICJuZXVlciBNb2R1cyAoJW8pIHZvbiAlcyBlbnRzcHJpY2h0IG5pY2h0IGRlbSBhbHRlbiBNb2R1cyAoJW8pIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU0OAorIzogYnVpbHRpbi9hcHBseS5jOjM1NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIG9mICVzIgogbXNnc3RyICJuZXVlciBNb2R1cyAoJW8pIHZvbiAlcyBlbnRzcHJpY2h0IG5pY2h0IGRlbSBhbHRlbiBNb2R1cyAoJW8pIHZvbiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTczCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAiJXM6IFBhdGNoIGtvbm50ZSBuaWNodCBhbmdld2VuZGV0IHdlcmRlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoZWNraW5nIHBhdGNoICVzLi4uIgogbXNnc3RyICJQcsO8ZmUgUGF0Y2ggJXMuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjI0IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTUgYnVpbHRpbi9yZXNldC5jOjE1OAorIzogYnVpbHRpbi9hcHBseS5jOjM2NzkgYnVpbHRpbi9jaGVja291dC5jOjIxNiBidWlsdGluL3Jlc2V0LmM6MTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIm1ha2VfY2FjaGVfZW50cnkgZsO8ciBQZmFkICclcycgZmVobGdlc2NobGFnZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzY3CisjOiBidWlsdGluL2FwcGx5LmM6MzgyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVtb3ZlICVzIGZyb20gaW5kZXgiCiBtc2dzdHIgImtvbm50ZSAlcyBuaWNodCBhdXMgZGVyIEJlcmVpdHN0ZWxsdW5nIGVudGZlcm5lbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3OTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgcGF0Y2ggZm9yIHN1YnByb2plY3QgJXMiCiBtc2dzdHIgImZlaGxlcmhhZnRlciBQYXRjaCBmw7xyIFVudGVycHJvamVrdCAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3OTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgogbXNnc3RyICJrb25udGUgbmV1IGVyc3RlbGx0ZSBEYXRlaSAnJXMnIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzgwNAorIzogYnVpbHRpbi9hcHBseS5jOjM4NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSBiYWNraW5nIHN0b3JlIGZvciBuZXdseSBjcmVhdGVkIGZpbGUgJXMiCiBtc2dzdHIgImthbm4gaW50ZXJuZW4gU3BlaWNoZXIgZsO8ciBlYmVuIGVyc3RlbGx0ZSBEYXRlaSAlcyBuaWNodCBlcnpldWdlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4MDcgYnVpbHRpbi9hcHBseS5jOjM5MTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYyIGJ1aWx0aW4vYXBwbHkuYzozOTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgogbXNnc3RyICJrYW5uIGbDvHIgJXMga2VpbmVuIEVpbnRyYWcgaW4gZGVuIFp3aXNjaGVuc3BlaWNoZXIgaGluenVmw7xnZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODQwCisjOiBidWlsdGluL2FwcGx5LmM6Mzg5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjbG9zaW5nIGZpbGUgJyVzJyIKIG1zZ3N0ciAic2NobGllw59lIERhdGVpICclcyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODg5CisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgImtvbm50ZSBEYXRlaSAnJXMnIG1pdCBNb2R1cyAlbyBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTc2CisjOiBidWlsdGluL2FwcGx5LmM6NDAzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBsaWVkIHBhdGNoICVzIGNsZWFubHkuIgogbXNnc3RyICJQYXRjaCAlcyBzYXViZXIgYW5nZXdlbmRldCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDM5CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgImludGVybmVyIEZlaGxlciIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjM5ODcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAiV2VuZGUgUGF0Y2ggJSVzIG1pdCAlZCBadXLDvGNrd2Vpc3VuZyBhbi4uLiIKIG1zZ3N0clsxXSAiV2VuZGUgUGF0Y2ggJSVzIG1pdCAlZCBadXLDvGNrd2Vpc3VuZ2VuIGFuLi4uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk5NworIzogYnVpbHRpbi9hcHBseS5jOjQwNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJ1bmNhdGluZyAucmVqIGZpbGVuYW1lIHRvICUuKnMucmVqIgogbXNnc3RyICJWZXJrw7xyemUgTmFtZSB2b24gLnJlaiBEYXRlaSB6dSAlLipzLnJlaiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIlBhdGNoLUJlcmVpY2ggIyVkIHNhdWJlciBhbmdld2VuZGV0LiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlamVjdGVkIGh1bmsgIyVkLiIKIG1zZ3N0ciAiUGF0Y2gtQmVyZWljaCAjJWQgenVyw7xja2dld2llc2VuLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQxNzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI2CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICJuaWNodCBlcmthbm50ZSBFaW5nYWJlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDE4MgorIzogYnVpbHRpbi9hcHBseS5jOjQyMzcKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCBpbmRleCBmaWxlIgogbXNnc3RyICJLb25udGUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzAxIGJ1aWx0aW4vYXBwbHkuYzo0MzA0IGJ1aWx0aW4vY2xvbmUuYzo5MQorIzogYnVpbHRpbi9hcHBseS5jOjQzNTYgYnVpbHRpbi9hcHBseS5jOjQzNTkgYnVpbHRpbi9jbG9uZS5jOjkyCiAjOiBidWlsdGluL2ZldGNoLmM6NjMKIG1zZ2lkICJwYXRoIgogbXNnc3RyICJQZmFkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwMgorIzogYnVpbHRpbi9hcHBseS5jOjQzNTcKIG1zZ2lkICJkb24ndCBhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICJ3ZW5kZXQga2VpbmUgw4RuZGVydW5nZW4gaW0gYW5nZWdlYmVuZW4gUGZhZCBhbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMDUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYwCiBtc2dpZCAiYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKIG1zZ3N0ciAid2VuZGV0IMOEbmRlcnVuZ2VuIG51ciBpbSBhbmdlZ2ViZW5lbiBQZmFkIGFuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwNworIzogYnVpbHRpbi9hcHBseS5jOjQzNjIKIG1zZ2lkICJudW0iCiBtc2dzdHIgIkFuemFobCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYzCiBtc2dpZCAicmVtb3ZlIDxudW0+IGxlYWRpbmcgc2xhc2hlcyBmcm9tIHRyYWRpdGlvbmFsIGRpZmYgcGF0aHMiCiBtc2dzdHIgIiIKICJlbnRmZXJudCA8QW56YWhsPiB2b3Jhbmdlc3RlbGx0ZSBTY2hyw6Rnc3RyaWNoZSB2b24gaGVya8O2bW1saWNoZW4gIgogIkRpZmZlcmVuenBmYWRlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY2CiBtc2dpZCAiaWdub3JlIGFkZGl0aW9ucyBtYWRlIGJ5IHRoZSBwYXRjaCIKIG1zZ3N0ciAiaWdub3JpZXJ0IGhpbnp1Z2Vmw7xndGUgWmVpbGVuIGRlcyBQYXRjaGVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMxMworIzogYnVpbHRpbi9hcHBseS5jOjQzNjgKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgb3V0cHV0IGRpZmZzdGF0IGZvciB0aGUgaW5wdXQiCiBtc2dzdHIgIiIKICJhbnN0YXR0IGRlciBBbndlbmR1bmcgZGVzIFBhdGNoZXMsIHdpcmQgZGVyIFwiZGlmZnN0YXRcIiBmw7xyIGRpZSBFaW5nYWJlICIKICJhdXNnZWdlYmVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMxNworIzogYnVpbHRpbi9hcHBseS5jOjQzNzIKIG1zZ2lkICJzaG93IG51bWJlciBvZiBhZGRlZCBhbmQgZGVsZXRlZCBsaW5lcyBpbiBkZWNpbWFsIG5vdGF0aW9uIgogbXNnc3RyICIiCiAiemVpZ3QgZGllIEFuemFobCB2b24gaGluenVnZWbDvGd0ZW4vZW50ZmVybnRlbiBaZWlsZW4gaW4gRGV6aW1hbG5vdGF0aW9uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMxOQorIzogYnVpbHRpbi9hcHBseS5jOjQzNzQKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgb3V0cHV0IGEgc3VtbWFyeSBmb3IgdGhlIGlucHV0IgogbXNnc3RyICIiCiAiYW5zdGF0dCBkZXIgQW53ZW5kdW5nIGRlcyBQYXRjaGVzLCB3aXJkIGVpbmUgWnVzYW1tZW5mYXNzdW5nIGbDvHIgZGllIEVpbmdhYmUgIgogImF1c2dlZ2ViZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzIxCisjOiBidWlsdGluL2FwcGx5LmM6NDM3NgogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBzZWUgaWYgdGhlIHBhdGNoIGlzIGFwcGxpY2FibGUiCiBtc2dzdHIgIiIKICJhbnN0YXR0IGRlciBBbndlbmR1bmcgZGVzIFBhdGNoZXMsIHplaWdlIG9iIFBhdGNoIGFuZ2V3ZW5kZXQgd2VyZGVuIGthbm4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzIzCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAiIgogInN0ZWxsdCBzaWNoZXIsIGRhc3MgZGVyIFBhdGNoIGluIGRlciBha3R1ZWxsZW4gQmVyZWl0c3RlbGx1bmcgYW5nZXdlbmRldCAiCiAid2VyZGVuIGthbm4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzI1CisjOiBidWlsdGluL2FwcGx5LmM6NDM4MAogbXNnaWQgImFwcGx5IGEgcGF0Y2ggd2l0aG91dCB0b3VjaGluZyB0aGUgd29ya2luZyB0cmVlIgogbXNnc3RyICJ3ZW5kZXQgZWluZW4gUGF0Y2ggYW4sIG9obmUgw4RuZGVydW5nZW4gaW0gQXJiZWl0c3p3ZWlnIHZvcnp1bmVobWVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNworIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAid2VuZGV0IGRlbiBQYXRjaCBhbiAoQmVudXR6dW5nIG1pdCAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2spIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyOQorIzogYnVpbHRpbi9hcHBseS5jOjQzODQKIG1zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICIiCiAidmVyc3VjaHQgMy1XZWdlLVp1c2FtbWVuZsO8aHJ1bmcsIHdlbm4gZGVyIFBhdGNoIG5pY2h0IGFuZ2V3ZW5kZXQgd2VyZGVuICIKICJrb25udGUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzMxCisjOiBidWlsdGluL2FwcGx5LmM6NDM4NgogbXNnaWQgImJ1aWxkIGEgdGVtcG9yYXJ5IGluZGV4IGJhc2VkIG9uIGVtYmVkZGVkIGluZGV4IGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAiZXJzdGVsbHQgZWluZSB0ZW1wb3LDpHJlIEJlcmVpdHN0ZWxsdW5nIGJhc2llcmVuZCBhdWYgZGVuIGludGVncmllcnRlbiAiCiAiQmVyZWl0c3RlbGx1bmdzaW5mb3JtYXRpb25lbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzMgYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NyBidWlsdGluL2xzLWZpbGVzLmM6NDYwCisjOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKIG1zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKIG1zZ3N0ciAiUGZhZGUgc2luZCBnZXRyZW5udCBkdXJjaCBOVUwgWmVpY2hlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkxCiBtc2dpZCAiZW5zdXJlIGF0IGxlYXN0IDxuPiBsaW5lcyBvZiBjb250ZXh0IG1hdGNoIgogbXNnc3RyICJzdGVsbHQgc2ljaGVyLCBkYXNzIG1pbmRlc3RlbnMgPG4+IFplaWxlbiBkZXMgS29udGV4dGVzIMO8YmVyZWluc3RpbW1lbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCiBtc2dpZCAiYWN0aW9uIgogbXNnc3RyICJBa3Rpb24iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM4CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImRldGVjdCBuZXcgb3IgbW9kaWZpZWQgbGluZXMgdGhhdCBoYXZlIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyICJlcm1pdHRlbHQgbmV1ZSBvZGVyIGdlw6RuZGVydGUgWmVpbGVuIGRpZSBGZWhsZXIgaW4gTGVlcnplaWNoZW4gaGFiZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQxIGJ1aWx0aW4vYXBwbHkuYzo0MzQ0CisjOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQogbXNnaWQgImlnbm9yZSBjaGFuZ2VzIGluIHdoaXRlc3BhY2Ugd2hlbiBmaW5kaW5nIGNvbnRleHQiCiBtc2dzdHIgImlnbm9yaWVydCDDhG5kZXJ1bmdlbiBpbiBMZWVyemVpY2hlbiBiZWkgZGVyIFN1Y2hlIGRlcyBLb250ZXh0ZXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ3CisjOiBidWlsdGluL2FwcGx5LmM6NDQwMgogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICJ3ZW5kZXQgZGVuIFBhdGNoIGluIHVtZ2VrZWhydGVyIFJlaWhlbmZvbGdlIGFuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM0OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDQKIG1zZ2lkICJkb24ndCBleHBlY3QgYXQgbGVhc3Qgb25lIGxpbmUgb2YgY29udGV4dCIKIG1zZ3N0ciAiZXJ3YXJ0ZXQga2VpbmVuIEtvbnRleHQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzUxCisjOiBidWlsdGluL2FwcGx5LmM6NDQwNgogbXNnaWQgImxlYXZlIHRoZSByZWplY3RlZCBodW5rcyBpbiBjb3JyZXNwb25kaW5nICoucmVqIGZpbGVzIgogbXNnc3RyICIiCiAiaGludGVybMOkc3N0IHp1csO8Y2tnZXdpZXNlbmUgUGF0Y2gtQmVyZWljaGUgaW4gZGVuIGVudHNwcmVjaGVuZGVuICoucmVqICIKICJEYXRlaWVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1MworIzogYnVpbHRpbi9hcHBseS5jOjQ0MDgKIG1zZ2lkICJhbGxvdyBvdmVybGFwcGluZyBodW5rcyIKIG1zZ3N0ciAiZXJsYXVidCBzaWNoIMO8YmVybGFwcGVuZGUgUGF0Y2gtQmVyZWljaGUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2CisjOiBidWlsdGluL2FwcGx5LmM6NDQxMQogbXNnaWQgInRvbGVyYXRlIGluY29ycmVjdGx5IGRldGVjdGVkIG1pc3NpbmcgbmV3LWxpbmUgYXQgdGhlIGVuZCBvZiBmaWxlIgogbXNnc3RyICJ0b2xlcmllcnQgZmVobGVyaGFmdCBlcmthbm50ZW4gZmVobGVuZGVuIFplaWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTQKIG1zZ2lkICJkbyBub3QgdHJ1c3QgdGhlIGxpbmUgY291bnRzIGluIHRoZSBodW5rIGhlYWRlcnMiCiBtc2dzdHIgInZlcnRyYXV0IG5pY2h0IGRlbiBaZWlsZW5udW1tZXJuIGltIEtvcGYgZGVzIFBhdGNoLUJlcmVpY2hlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE2CiBtc2dpZCAicm9vdCIKIG1zZ3N0ciAiV3VyemVsdmVyemVpY2huaXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCisjOiBidWlsdGluL2FwcGx5LmM6NDQxNwogbXNnaWQgInByZXBlbmQgPHJvb3Q+IHRvIGFsbCBmaWxlbmFtZXMiCiBtc2dzdHIgInN0ZWxsdCA8V3VyemVsdmVyemVpY2huaXM+IHZvciBhbGxlIERhdGVpbmFtZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg0CisjOiBidWlsdGluL2FwcGx5LmM6NDQzOQogbXNnaWQgIi0tM3dheSBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKLW1zZ3N0ciAiLS0zd2F5IGF1w59lcmhhbGIgZWluZXMgUHJvamVrdGFyY2hpdnMiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0tM3dheSBrYW5uIG5pY2h0IGF1w59lcmhhbGIgZWluZXMgUHJvamVrdGFyY2hpdnMgdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCisjOiBidWlsdGluL2FwcGx5LmM6NDQ0NwogbXNnaWQgIi0taW5kZXggb3V0c2lkZSBhIHJlcG9zaXRvcnkiCi1tc2dzdHIgIi0taW5kZXggYXXDn2VyaGFsYiBlaW5lcyBQcm9qZWt0YXJjaGl2cyIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS1pbmRleCBrYW5uIG5pY2h0IGF1w59lcmhhbGIgZWluZXMgUHJvamVrdGFyY2hpdnMgdmVyd2VuZGV0ICIKKyJ3ZXJkZW4uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM5NQorIzogYnVpbHRpbi9hcHBseS5jOjQ0NTAKIG1zZ2lkICItLWNhY2hlZCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKLW1zZ3N0ciAiLS1jYWNoZWQgYXXDn2VyaGFsYiBlaW5lcyBQcm9qZWt0YXJjaGl2cyIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS1jYWNoZWQga2FubiBuaWNodCBhdcOfZXJoYWxiIGVpbmVzIFByb2pla3RhcmNoaXZzIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gcGF0Y2ggJyVzJyIKIG1zZ3N0ciAia2FubiBQYXRjaCAnJXMnIG5pY2h0IMO2ZmZuZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDI1CisjOiBidWlsdGluL2FwcGx5LmM6NDQ4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJzcXVlbGNoZWQgJWQgd2hpdGVzcGFjZSBlcnJvciIKIG1zZ2lkX3BsdXJhbCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyWzBdICJ1bnRlcmRyw7xja3RlICVkIEZlaGxlciBpbiBMZWVyemVpY2hlbiIKIG1zZ3N0clsxXSAidW50ZXJkcsO8Y2t0ZSAlZCBGZWhsZXIgaW4gTGVlcnplaWNoZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDMxIGJ1aWx0aW4vYXBwbHkuYzo0NDQxCisjOiBidWlsdGluL2FwcGx5LmM6NDQ4NiBidWlsdGluL2FwcGx5LmM6NDQ5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBsaW5lIGFkZHMgd2hpdGVzcGFjZSBlcnJvcnMuIgogbXNnaWRfcGx1cmFsICIlZCBsaW5lcyBhZGQgd2hpdGVzcGFjZSBlcnJvcnMuIgpAQCAtMjA5MSwyMSArMjQwNiwyMSBAQAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBBQ0svTkFLLCBnb3QgRU9GIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogaGFiZSBBQ0svTkFLIGVyd2FydGV0LCBhYmVyIEVPRiBiZWtvbW1lbiIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcmNoaXZlOiBOQUNLICVzIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogTkFDSyAlcyIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjUKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbW90ZSBlcnJvcjogJXMiCiBtc2dzdHIgIkZlaGxlciBhbSBhbmRlcmVuIEVuZGU6ICVzIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NgorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogcHJvdG9jb2wgZXJyb3IiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBQcm90b2tvbGxmZWhsZXIiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjcxCisjOiBidWlsdGluL2FyY2hpdmUuYzo2OAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBhIGZsdXNoIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogZXJ3YXJ0ZXRlIGVpbmUgU3DDvGx1bmcgKGZsdXNoKSIKIApAQCAtMjEyNSwxMjAgKzI0NDAsMTIwIEBACiBtc2dpZCAiZ2l0IGJsYW1lIFtvcHRpb25zXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gZmlsZSIKIG1zZ3N0ciAiZ2l0IGJsYW1lIFtPcHRpb25lbl0gW3Jldi1vcHRzXSBbcmV2XSBbLS1dIERhdGVpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MzAgYnVpbHRpbi9zaG9ydGxvZy5jOjE1CisjOiBidWlsdGluL2JsYW1lLmM6MzAKIG1zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKIG1zZ3N0ciAiW3Jldi1vcHRzXSBzaW5kIGRva3VtZW50aWVydCBpbiBnaXQtcmV2LWxpc3QoMSkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc0CisjOiBidWlsdGluL2JsYW1lLmM6MjM1NQogbXNnaWQgIlNob3cgYmxhbWUgZW50cmllcyBhcyB3ZSBmaW5kIHRoZW0sIGluY3JlbWVudGFsbHkiCiBtc2dzdHIgIlplaWd0IFwiYmxhbWVcIi1FaW50csOkZ2Ugc2Nocml0dHdlaXNlLCB3w6RocmVuZCB3aXIgc2llIGdlbmVyaWVyZW4iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CisjOiBidWlsdGluL2JsYW1lLmM6MjM1NgogbXNnaWQgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIlplaWd0IGxlZXJlIFNIQS0xIGbDvHIgR3Jlbnp2ZXJzaW9uZW4gKFN0YW5kYXJkOiBhdXMpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKIG1zZ2lkICJEbyBub3QgdHJlYXQgcm9vdCBjb21taXRzIGFzIGJvdW5kYXJpZXMgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIkJlaGFuZGVsdCBVcnNwcnVuZ3N2ZXJzaW9uZW4gbmljaHQgYWxzIEdyZW56ZW4gKFN0YW5kYXJkOiBhdXMpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTgKIG1zZ2lkICJTaG93IHdvcmsgY29zdCBzdGF0aXN0aWNzIgogbXNnc3RyICJaZWlndCBTdGF0aXN0aWtlbiB6dW0gQXJiZWl0c2F1ZndhbmQiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc4CisjOiBidWlsdGluL2JsYW1lLmM6MjM1OQogbXNnaWQgIlNob3cgb3V0cHV0IHNjb3JlIGZvciBibGFtZSBlbnRyaWVzIgogbXNnc3RyICJaZWlndCBBdXNnYWJlYmV3ZXJ0dW5nIGbDvHIgXCJibGFtZVwiLUVpbnRyw6RnZSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCiBtc2dzdHIgIlplaWd0IHVyc3Byw7xuZ2xpY2hlbiBEYXRlaW5hbWVuIChTdGFuZGFyZDogYXV0bykiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgwCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MQogbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiWmVpZ3QgdXJzcHLDvG5nbGljaGUgWmVpbGVubnVtbWVyIChTdGFuZGFyZDogYXVzKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYyCiBtc2dpZCAiU2hvdyBpbiBhIGZvcm1hdCBkZXNpZ25lZCBmb3IgbWFjaGluZSBjb25zdW1wdGlvbiIKIG1zZ3N0ciAiQW56ZWlnZSBpbiBlaW5lbSBGb3JtYXQgZsO8ciBtYXNjaGluZWxsZSBBdXN3ZXJ0dW5nIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4MgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKIG1zZ2lkICJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iCiBtc2dzdHIgIiIKICJBbnplaWdlIGluIEZvcm1hdCBmw7xyIEZyZW1kcHJvZ3JhbW1lIG1pdCBWZXJzaW9uc2luZm9ybWF0aW9uZW4gcHJvIFplaWxlIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4MworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjQKIG1zZ2lkICJVc2UgdGhlIHNhbWUgb3V0cHV0IG1vZGUgYXMgZ2l0LWFubm90YXRlIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJCZW51dHp0IGRlbiBnbGVpY2hlbiBBdXNnYWJlbW9kdXMgd2llIFwiZ2l0LWFubm90YXRlXCIgKFN0YW5kYXJkOiBhdXMpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKIG1zZ2lkICJTaG93IHJhdyB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIlplaWd0IHVuYmVhcmJlaXRldGVuIFplaXRzdGVtcGVsIChTdGFuZGFyZDogYXVzKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2CiBtc2dpZCAiU2hvdyBsb25nIGNvbW1pdCBTSEExIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJaZWlndCBsYW5nZW4gVmVyc2lvbnMtU0hBMSAoU3RhbmRhcmQ6IGF1cykiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg2CisjOiBidWlsdGluL2JsYW1lLmM6MjM2NwogbXNnaWQgIlN1cHByZXNzIGF1dGhvciBuYW1lIGFuZCB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIlVudGVyZHLDvGNrdCBkZW4gTmFtZW4gZGVzIEF1dG9ycyB1bmQgZGVuIFplaXRzdGVtcGVsIChTdGFuZGFyZDogYXVzKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODcKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY4CiBtc2dpZCAiU2hvdyBhdXRob3IgZW1haWwgaW5zdGVhZCBvZiBuYW1lIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJaZWlndCBhbnN0YXR0IGRlcyBOYW1lbnMgZGllIEVtYWlsLUFkcmVzc2UgZGVzIEF1dG9ycyAoU3RhbmRhcmQ6IGF1cykiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg4CisjOiBidWlsdGluL2JsYW1lLmM6MjM2OQogbXNnaWQgIklnbm9yZSB3aGl0ZXNwYWNlIGRpZmZlcmVuY2VzIgogbXNnc3RyICJJZ25vcmllcnQgVW50ZXJzY2hpZWRlIGluIExlZXJ6ZWljaGVuIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4OQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzAKIG1zZ2lkICJTcGVuZCBleHRyYSBjeWNsZXMgdG8gZmluZCBiZXR0ZXIgbWF0Y2giCiBtc2dzdHIgImFyYmVpdGUgbMOkbmdlciwgdW0gYmVzc2VyZSDDnGJlcmVpbnN0aW1tdW5nZW4genUgZmluZGVuIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzEKIG1zZ2lkICJVc2UgcmV2aXNpb25zIGZyb20gPGZpbGU+IGluc3RlYWQgb2YgY2FsbGluZyBnaXQtcmV2LWxpc3QiCiBtc2dzdHIgIkJlbnV0enQgUmV2aXNpb25lbiB2b24gPERhdGVpPiBhbnN0YXR0IFwiZ2l0LXJldi1saXN0XCIgYXVmenVydWZlbiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyCiBtc2dpZCAiVXNlIDxmaWxlPidzIGNvbnRlbnRzIGFzIHRoZSBmaW5hbCBpbWFnZSIKIG1zZ3N0ciAiQmVudXR6dCBJbmhhbHRlIGRlciA8RGF0ZWk+ZW4gYWxzIGVudGfDvGx0aWdlcyBBYmJpbGQiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkyIGJ1aWx0aW4vYmxhbWUuYzoyMzkzCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MyBidWlsdGluL2JsYW1lLmM6MjM3NAogbXNnaWQgInNjb3JlIgogbXNnc3RyICJCZXdlcnR1bmciCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkyCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MwogbXNnaWQgIkZpbmQgbGluZSBjb3BpZXMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCiBtc2dzdHIgIkZpbmRldCBrb3BpZXJ0ZSBaZWlsZW4gaW5uZXJoYWxiIG9kZXIgendpc2NoZW4gRGF0ZWllbiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTMKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc0CiBtc2dpZCAiRmluZCBsaW5lIG1vdmVtZW50cyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKIG1zZ3N0ciAiRmluZGV0IHZlcnNjaG9iZW5lIFplaWxlbiBpbm5lcmhhbGIgb2RlciB6d2lzY2hlbiBEYXRlaWVuIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKIG1zZ2lkICJuLG0iCiBtc2dzdHIgIm4sbSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CiBtc2dpZCAiUHJvY2VzcyBvbmx5IGxpbmUgcmFuZ2UgbixtLCBjb3VudGluZyBmcm9tIDEiCiBtc2dzdHIgIlZlcmFyYmVpdGV0IG51ciBaZWlsZW4gaW0gQmVyZWljaCBuLG0sIGdlesOkaGx0IHZvbiAxIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzCisjOiBidWlsdGluL2JyYW5jaC5jOjI0CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbT3B0aW9uZW5dIFstciB8IC1hXSBbLS1tZXJnZWQgfCAtLW5vLW1lcmdlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjUKIG1zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLWxdIFstZl0gPGJyYW5jaG5hbWU+IFs8c3RhcnQtcG9pbnQ+XSIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbT3B0aW9uZW5dIFstbF0gWy1mXSA8WndlaWduYW1lPiBbPFN0YXJ0cHVua3Q+XSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNQorIzogYnVpbHRpbi9icmFuY2guYzoyNgogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbT3B0aW9uZW5dIFstcl0gKC1kIHwgLUQpIDxad2VpZ25hbWU+Li4uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI2CisjOiBidWlsdGluL2JyYW5jaC5jOjI3CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gKC1tIHwgLU0pIFs8b2xkYnJhbmNoPl0gPG5ld2JyYW5jaD4iCiBtc2dzdHIgImdpdCBicmFuY2ggW09wdGlvbmVuXSAoLW0gfCAtTSkgWzxhbHRlclp3ZWlnPl0gPG5ldWVyWndlaWc+IgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE0NQorIzogYnVpbHRpbi9icmFuY2guYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaGFzIGJlZW4gbWVyZ2VkIHRvXG4iCkBAIC0yMjQ4LDcgKzI1NjMsNyBAQAogIiAgICAgICAgICclcycsIGFiZXIgbm9jaCBuaWNodCBtaXQgZGVyIFp3ZWlnc3BpdHplIChIRUFEKSB6dXNhbW1lbmdlZsO8aHJ0ICIKICJ3dXJkZS4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTQ5CisjOiBidWlsdGluL2JyYW5jaC5jOjE1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90IGRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaXMgbm90IHlldCBtZXJnZWQgdG9cbiIKQEAgLTIyNTcsMjgwICsyNTcyLDM2NCBAQAogImVudGZlcm5lIFp3ZWlnICclcycgbmljaHQsIGRlciBub2NoIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQgd3VyZGUgbWl0XG4iCiAiICAgICAgICAgJyVzJywgb2J3b2hsIGVyIG1pdCBkZXIgWndlaWdzcGl0emUgKEhFQUQpIHp1c2FtbWVuZ2Vmw7xocnQgd3VyZGUuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE2MworIzogYnVpbHRpbi9icmFuY2guYzoxNjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgbG9vayB1cCBjb21taXQgb2JqZWN0IGZvciAnJXMnIgogbXNnc3RyICJLb25udGUgVmVyc2lvbnNvYmpla3QgZsO8ciAnJXMnIG5pY2h0IG5hY2hzY2hsYWdlbi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTY3CisjOiBidWlsdGluL2JyYW5jaC5jOjE3MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGJyYW5jaCAnJXMnIGlzIG5vdCBmdWxseSBtZXJnZWQuXG4iCiAiSWYgeW91IGFyZSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBpdCwgcnVuICdnaXQgYnJhbmNoIC1EICVzJy4iCiBtc2dzdHIgIiIKICJEZXIgWndlaWcgJyVzJyBpc3QgbmljaHQgdm9sbHN0w6RuZGlnIHp1c2FtbWVuZ2Vmw7xocnQuXG4iCi0iV2VubiBkdSBzaWNoZXIgYmlzdCBkaWVzZW4gWndlaWcgenUgZW50ZmVybmVuLCBmw7xocmUgJ2dpdCBicmFuY2ggLUQgJXMnIGF1cy4iCisiV2VubiBTaWUgc2ljaGVyIHNpbmQgZGllc2VuIFp3ZWlnIHp1IGVudGZlcm5lbiwgZsO8aHJlbiBTaWUgJ2dpdCBicmFuY2ggLUQgIgorIiVzJyBhdXMuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE4MAorIzogYnVpbHRpbi9icmFuY2guYzoxODUKIG1zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgogbXNnc3RyICJBa3R1YWxpc2llcnVuZyBkZXIgS29uZmlndXJhdGlvbnNkYXRlaSBmZWhsZ2VzY2hsYWdlbi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjA4CisjOiBidWlsdGluL2JyYW5jaC5jOjIxMwogbXNnaWQgImNhbm5vdCB1c2UgLWEgd2l0aCAtZCIKIG1zZ3N0ciAia2FubiAtYSBuaWNodCBtaXQgLWQgYmVudXR6ZW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjE0CisjOiBidWlsdGluL2JyYW5jaC5jOjIxOQogbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKIG1zZ3N0ciAiS29ubnRlIFZlcnNpb25zb2JqZWt0IGbDvHIgWndlaWdzcGl0emUgKEhFQUQpIG5pY2h0IG5hY2hzY2hsYWdlbi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjIyCisjOiBidWlsdGluL2JyYW5jaC5jOjIyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBicmFuY2ggJyVzJyB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBvbi4iCiBtc2dzdHIgIiIKLSJLYW5uIFp3ZWlnICclcycgbmljaHQgZW50ZmVybmVuLCBkYSBkdSBkaWNoIGdlcmFkZSBhdWYgZGllc2VtIGJlZmluZGVzdC4iCisiS2FubiBad2VpZyAnJXMnIG5pY2h0IGVudGZlcm5lbiwgZGEgU2llIHNpY2ggZ2VyYWRlIGF1ZiBkaWVzZW0gYmVmaW5kZW4uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzNQorIzogYnVpbHRpbi9icmFuY2guYzoyNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCiBtc2dzdHIgImV4dGVybmVyIFp3ZWlnICclcycgbmljaHQgZ2VmdW5kZW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjM2CisjOiBidWlsdGluL2JyYW5jaC5jOjI0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBub3QgZm91bmQuIgogbXNnc3RyICJad2VpZyAnJXMnIG5pY2h0IGdlZnVuZGVuLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNTAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIGRlbGV0aW5nIHJlbW90ZSBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gRW50ZmVybmVuIGRlcyBleHRlcm5lbiBad2VpZ2VzICclcyciCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjUxCisjOiBidWlsdGluL2JyYW5jaC5jOjI1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciBkZWxldGluZyBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gRW50ZmVybmVuIGRlcyBad2VpZ2VzICclcyciCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU4CisjOiBidWlsdGluL2JyYW5jaC5jOjI2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWxldGVkIHJlbW90ZSBicmFuY2ggJXMgKHdhcyAlcykuXG4iCiBtc2dzdHIgIkV4dGVybmVyIFp3ZWlnICVzIGVudGZlcm50ICh3YXIgJXMpLlxuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI1OQorIzogYnVpbHRpbi9icmFuY2guYzoyNjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCBicmFuY2ggJXMgKHdhcyAlcykuXG4iCiBtc2dzdHIgIlp3ZWlnICVzIGVudGZlcm50ICh3YXIgJXMpLlxuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjM2MQorIzogYnVpbHRpbi9icmFuY2guYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnJhbmNoICclcycgZG9lcyBub3QgcG9pbnQgYXQgYSBjb21taXQiCiBtc2dzdHIgIlp3ZWlnICclcycgemVpZ3QgYXVmIGtlaW5lIFZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDMzCisjOiBidWlsdGluL2JyYW5jaC5jOjQ1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGJlaGluZCAlZF0iCiBtc2dzdHIgIlslczogJWQgaGludGVyaGVyXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MzUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIltiZWhpbmQgJWRdIgogbXNnc3RyICJbJWQgaGludGVyaGVyXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MzkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYWhlYWQgJWRdIgogbXNnc3RyICJbJXM6ICVkIHZvcmF1c10iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDQxCisjOiBidWlsdGluL2JyYW5jaC5jOjQ2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJbYWhlYWQgJWRdIgogbXNnc3RyICJbJWQgdm9yYXVzXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0NDQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYWhlYWQgJWQsIGJlaGluZCAlZF0iCiBtc2dzdHIgIlslczogJWQgdm9yYXVzLCAlZCBoaW50ZXJoZXJdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQ0NworIzogYnVpbHRpbi9icmFuY2guYzo0NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkLCBiZWhpbmQgJWRdIgogbXNnc3RyICJbJWQgdm9yYXVzLCAlZCBoaW50ZXJoZXJdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjU2MAorIzogYnVpbHRpbi9icmFuY2guYzo0OTAKK21zZ2lkICIgKioqKiBpbnZhbGlkIHJlZiAqKioqIgorbXNnc3RyICIgKioqKiB1bmfDvGx0aWdlIFJlZmVyZW56ICoqKioiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIHJlYmFzaW5nICVzKSIKK21zZ3N0ciAiKGtlaW4gWndlaWcsIE5ldWF1ZmJhdSB2b24gWndlaWcgJXMgaW0gR2FuZ2UpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4NQorIywgYy1mb3JtYXQKK21zZ2lkICIobm8gYnJhbmNoLCBiaXNlY3Qgc3RhcnRlZCBvbiAlcykiCittc2dzdHIgIihrZWluIFp3ZWlnLCBOZXVhdWZiYXUgYmVnb25uZW4gYmVpICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGRldGFjaGVkIGZyb20gJXMpIgorbXNnc3RyICIobG9zZ2Vsw7ZzdCB2b24gJXMpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU5MQogbXNnaWQgIihubyBicmFuY2gpIgogbXNnc3RyICIoa2VpbiBad2VpZykiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjI1CisjOiBidWlsdGluL2JyYW5jaC5jOjYzNworIywgYy1mb3JtYXQKK21zZ2lkICJvYmplY3QgJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKK21zZ3N0ciAiT2JqZWt0ICclcycgemVpZ3QgYXVmIGtlaW5lIFZlcnNpb24iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjY5CiBtc2dpZCAic29tZSByZWZzIGNvdWxkIG5vdCBiZSByZWFkIgogbXNnc3RyICJLb25udGUgZWluaWdlIFJlZmVyZW56ZW4gbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjM4CisjOiBidWlsdGluL2JyYW5jaC5jOjY4MgogbXNnaWQgImNhbm5vdCByZW5hbWUgdGhlIGN1cnJlbnQgYnJhbmNoIHdoaWxlIG5vdCBvbiBhbnkuIgogbXNnc3RyICIiCi0iS2FubiBha3R1ZWxsZW4gWndlaWcgbmljaHQgdW1iZW5lbm5lbiwgc29sYW5nZSBkdSBkaWNoIGF1ZiBrZWluZW0gYmVmaW5kZXN0LiIKKyJLYW5uIGFrdHVlbGxlbiBad2VpZyBuaWNodCB1bWJlbmVubmVuLCBzb2xhbmdlIFNpZSBzaWNoIGF1ZiBrZWluZW0gYmVmaW5kZW4uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY0OAorIzogYnVpbHRpbi9icmFuY2guYzo2OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBicmFuY2ggbmFtZTogJyVzJyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgWndlaWctTmFtZTogJyVzJyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzA3CiBtc2dpZCAiQnJhbmNoIHJlbmFtZSBmYWlsZWQiCiBtc2dzdHIgIlVtYmVuZW5udW5nIGRlcyBad2VpZ2VzIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY2NworIzogYnVpbHRpbi9icmFuY2guYzo3MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1lZCBhIG1pc25hbWVkIGJyYW5jaCAnJXMnIGF3YXkiCiBtc2dzdHIgImZhbHNjaCBiZW5hbm50ZW4gWndlaWcgJyVzJyB1bWJlbmFubnQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjcxCisjOiBidWlsdGluL2JyYW5jaC5jOjcxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJCcmFuY2ggcmVuYW1lZCB0byAlcywgYnV0IEhFQUQgaXMgbm90IHVwZGF0ZWQhIgogbXNnc3RyICJad2VpZyB1bWJlbmFubnQgenUgJXMsIGFiZXIgWndlaWdzcGl0emUgKEhFQUQpIGlzdCBuaWNodCBha3R1YWxpc2llcnQhIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY3OAorIzogYnVpbHRpbi9icmFuY2guYzo3MjIKIG1zZ2lkICJCcmFuY2ggaXMgcmVuYW1lZCwgYnV0IHVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCiBtc2dzdHIgIiIKICJad2VpZyBpc3QgdW1iZW5hbm50LCBhYmVyIGRpZSBBa3R1YWxpc2llcnVuZyBkZXIgS29uZmlndXJhdGlvbnNkYXRlaSBpc3QgIgogImZlaGxnZXNjaGxhZ2VuLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2OTMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAiTWlzc2dlYmlsZGV0ZXIgT2JqZWt0bmFtZSAlcyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3MTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBicmFuY2ggZGVzY3JpcHRpb24gdGVtcGxhdGU6ICVzIgogbXNnc3RyICJLb25udGUgQmVzY2hyZWlidW5nc3ZvcmxhZ2UgZsO8ciBad2VpZyBuaWNodCBzY2hyZWliZW46ICVzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc0NworIzogYnVpbHRpbi9icmFuY2guYzo3OTEKIG1zZ2lkICJHZW5lcmljIG9wdGlvbnMiCiBtc2dzdHIgIkFsbGdlbWVpbmUgT3B0aW9uZW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzQ5CisjOiBidWlsdGluL2JyYW5jaC5jOjc5MwogbXNnaWQgInNob3cgaGFzaCBhbmQgc3ViamVjdCwgZ2l2ZSB0d2ljZSBmb3IgdXBzdHJlYW0gYnJhbmNoIgogbXNnc3RyICJaZWlndCBIYXNoIHVuZCBCZXRyZWZmOyAtdnY6IHp1c8OkdHpsaWNoIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk0CiBtc2dpZCAic3VwcHJlc3MgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyIKIG1zZ3N0ciAidW50ZXJkcsO8Y2t0IEluZm9ybWF0aW9uc21lbGR1bmdlbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk1CiBtc2dpZCAic2V0IHVwIHRyYWNraW5nIG1vZGUgKHNlZSBnaXQtcHVsbCgxKSkiCiBtc2dzdHIgInN0ZWxsdCBkZW4gw5xiZXJuYWhtZW1vZHVzIGVpbiAoc2llaGUgZ2l0LXB1bGwoMSkpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1MworIzogYnVpbHRpbi9icmFuY2guYzo3OTcKIG1zZ2lkICJjaGFuZ2UgdXBzdHJlYW0gaW5mbyIKIG1zZ3N0ciAiw6RuZGVydCBJbmZvcm1hdGlvbmVuIHp1bSBleHRlcm5lbiDDnGJlcm5haG1lendlaWciCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzU3CisjOiBidWlsdGluL2JyYW5jaC5jOjgwMQogbXNnaWQgInVzZSBjb2xvcmVkIG91dHB1dCIKIG1zZ3N0ciAidmVyd2VuZGV0IGZhcmJsaWNoZSBBdXNnYWJlbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCiBtc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKIG1zZ3N0ciAid2lya3QgYXVmIGV4dGVybmUgw5xiZXJuYWhtZXp3ZWlnZSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NjEgYnVpbHRpbi9icmFuY2guYzo3NjcgYnVpbHRpbi9icmFuY2guYzo3ODgKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk0IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL2NvbW1pdC5jOjEzNzcKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi90YWcuYzo0NzAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJWZXJzaW9uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc2MiBidWlsdGluL2JyYW5jaC5jOjc2OAorIzogYnVpbHRpbi9icmFuY2guYzo4MDYgYnVpbHRpbi9icmFuY2guYzo4MTIKIG1zZ2lkICJwcmludCBvbmx5IGJyYW5jaGVzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IgogbXNnc3RyICJnaWJ0IG51ciBad2VpZ2UgYXVzLCB3ZWxjaGUgZGllc2UgVmVyc2lvbiBiZWluaGFsdGVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3NAorIzogYnVpbHRpbi9icmFuY2guYzo4MTgKIG1zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgogbXNnc3RyICJzcGV6aWZpc2NoZSBBa3Rpb25lbiBmw7xyIFwiZ2l0LWJyYW5jaFwiOiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NzUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE5CiBtc2dpZCAibGlzdCBib3RoIHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCiBtc2dzdHIgImxpc3RldCBleHRlcm5lIMOcYmVybmFobWV6d2VpZ2UgdW5kIGxva2FsZSBad2VpZ2UgYXVmIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3NworIzogYnVpbHRpbi9icmFuY2guYzo4MjEKIG1zZ2lkICJkZWxldGUgZnVsbHkgbWVyZ2VkIGJyYW5jaCIKIG1zZ3N0ciAiZW50ZmVybnQgdm9sbHN0w6RuZGlnIHp1c2FtbWVuZ2Vmw7xocnRlbiBad2VpZyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NzgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIyCiBtc2dpZCAiZGVsZXRlIGJyYW5jaCAoZXZlbiBpZiBub3QgbWVyZ2VkKSIKIG1zZ3N0ciAibMO2c2NodCBad2VpZyAoYXVjaCB3ZW5uIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3OQorIzogYnVpbHRpbi9icmFuY2guYzo4MjMKIG1zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCBhbmQgaXRzIHJlZmxvZyIKIG1zZ3N0ciAidmVyc2NoaWVidC9iZW5lbm50IGVpbmVuIFp3ZWlnIHVuZCBkZXNzZW4gUmVmZXJlbnpwcm90b2tvbGwgdW0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzgwCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNAogbXNnaWQgIm1vdmUvcmVuYW1lIGEgYnJhbmNoLCBldmVuIGlmIHRhcmdldCBleGlzdHMiCiBtc2dzdHIgIiIKICJ2ZXJzY2hpZWJ0L2JlbmVubnQgZWluZW4gWndlaWcgdW0sIGF1Y2ggd2VubiBkYXMgWmllbCBiZXJlaXRzIGV4aXN0aWVydCIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI1CiBtc2dpZCAibGlzdCBicmFuY2ggbmFtZXMiCiBtc2dzdHIgImxpc3RldCBad2VpZ25hbWVuIGF1ZiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI2CiBtc2dpZCAiY3JlYXRlIHRoZSBicmFuY2gncyByZWZsb2ciCiBtc2dzdHIgImVyemV1Z3QgZGFzIFJlZmVyZW56cHJvdG9rb2xsIGRlcyBad2VpZ2VzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4NAorIzogYnVpbHRpbi9icmFuY2guYzo4MjgKIG1zZ2lkICJlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCIKIG1zZ3N0ciAiYmVhcmJlaXRldCBkaWUgQmVzY2hyZWlidW5nIGbDvHIgZGVuIFp3ZWlnIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4NQorIzogYnVpbHRpbi9icmFuY2guYzo4MjkKIG1zZ2lkICJmb3JjZSBjcmVhdGlvbiAod2hlbiBhbHJlYWR5IGV4aXN0cykiCiBtc2dzdHIgImVyemV1Z2UgYXVjaCwgd2VubiBkZXIgWndlaWcgYmVyZWl0cyBleGlzdGllcnQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzg4CisjOiBidWlsdGluL2JyYW5jaC5jOjgzMgogbXNnaWQgInByaW50IG9ubHkgbm90IG1lcmdlZCBicmFuY2hlcyIKIG1zZ3N0ciAiZ2lidCBudXIgWndlaWdlIGF1cywgZGllIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnQgc2luZCIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3OTQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4CiBtc2dpZCAicHJpbnQgb25seSBtZXJnZWQgYnJhbmNoZXMiCiBtc2dzdHIgImdpYnQgbnVyIFp3ZWlnZSBhdXMsIGRpZSB6dXNhbW1lbmdlZsO8aHJ0IHNpbmQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk4CisjOiBidWlsdGluL2JyYW5jaC5jOjg0MgogbXNnaWQgImxpc3QgYnJhbmNoZXMgaW4gY29sdW1ucyIKIG1zZ3N0ciAibGlzdGV0IFp3ZWlnZSBpbiBTcGFsdGVuIGF1ZiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4MTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODU1CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIktvbm50ZSBad2VpZ3NwaXR6ZSAoSEVBRCkgbmljaHQgYWxzIGfDvGx0aWdlIFJlZmVyZW56IGF1ZmzDtnNlbi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE2IGJ1aWx0aW4vY2xvbmUuYzo1NjEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODYwIGJ1aWx0aW4vY2xvbmUuYzo2MTkKIG1zZ2lkICJIRUFEIG5vdCBmb3VuZCBiZWxvdyByZWZzL2hlYWRzISIKIG1zZ3N0ciAiWndlaWdzcGl0emUgKEhFQUQpIHd1cmRlIG5pY2h0IHVudGVyIFwicmVmcy9oZWFkc1wiIGdlZnVuZGVuISIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODgzCiBtc2dpZCAiLS1jb2x1bW4gYW5kIC0tdmVyYm9zZSBhcmUgaW5jb21wYXRpYmxlIgotbXNnc3RyICItLWNvbHVtbiB1bmQgLS12ZXJib3NlIHNpbmQgaW5rb21wYXRpYmVsIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLS1jb2x1bW4gdW5kIC0tdmVyYm9zZSBzaW5kIGlua29tcGF0aWJlbC4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODg3CisjOiBidWlsdGluL2JyYW5jaC5jOjg4OSBidWlsdGluL2JyYW5jaC5jOjkyOAorbXNnaWQgImJyYW5jaCBuYW1lIHJlcXVpcmVkIgorbXNnc3RyICJad2VpZ25hbWUgZXJmb3JkZXJsaWNoIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkwNAorbXNnaWQgIkNhbm5vdCBnaXZlIGRlc2NyaXB0aW9uIHRvIGRldGFjaGVkIEhFQUQiCittc2dzdHIgIiIKKyJ6dSBsb3NnZWzDtnN0ZXIgWndlaWdzcGl0emUgKEhFQUQpIGthbm4ga2VpbmUgQmVzY2hyZWlidW5nIGhpbnRlcmxlZ3Qgd2VyZGVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkwOQorbXNnaWQgImNhbm5vdCBlZGl0IGRlc2NyaXB0aW9uIG9mIG1vcmUgdGhhbiBvbmUgYnJhbmNoIgorbXNnc3RyICJCZXNjaHJlaWJ1bmcgdm9uIG1laHIgYWxzIGVpbmVtIFp3ZWlnIGthbm4gbmljaHQgYmVhcmJlaXRldCB3ZXJkZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIGNvbW1pdCBvbiBicmFuY2ggJyVzJyB5ZXQuIgorbXNnc3RyICJOb2NoIGtlaW5lIFZlcnNpb24gaW4gWndlaWcgJyVzJy4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIGJyYW5jaCBuYW1lZCAnJXMnLiIKK21zZ3N0ciAiWndlaWcgJyVzJyBuaWNodCB2b3JoYW5kZW4uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzNAorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIGZvciBhIHJlbmFtZSBvcGVyYXRpb24iCittc2dzdHIgInp1IHZpZWxlIFp3ZWlnZSBmw7xyIGVpbmUgVW1iZW5lbm5lbi1PcGVyYXRpb24gYW5nZWdlYmVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzOQorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHNldCBuZXcgdXBzdHJlYW0iCittc2dzdHIgInp1IHZpZWxlIFp3ZWlnZSBhbmdlZ2ViZW4gdW0gbmV1ZW4gw5xiZXJuYWhtZXp3ZWlnIHp1IHNldHplbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImNvdWxkIG5vdCBzZXQgdXBzdHJlYW0gb2YgSEVBRCB0byAlcyB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICIiCisiS29ubnRlIGtlaW5lbiBuZXVlbiDDnGJlcm5haG1lendlaWcgdm9uIFp3ZWlnc3BpdHplIChIRUFEKSB6dSAlcyBzZXR6ZW4sXG4iCisiZGEgZGllc2UgYXVmIGtlaW5lbiBad2VpZyB6ZWlndC4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTQ2IGJ1aWx0aW4vYnJhbmNoLmM6OTY4IGJ1aWx0aW4vYnJhbmNoLmM6OTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIm5vIHN1Y2ggYnJhbmNoICclcyciCittc2dzdHIgIktlaW4gc29sY2hlciBad2VpZyAnJXMnIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiWndlaWcgJyVzJyBleGlzdGllcnQgbmljaHQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODk5CisjOiBidWlsdGluL2JyYW5jaC5jOjk2MgorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHVuc2V0IHVwc3RyZWFtIgorbXNnc3RyICIiCisienUgdmllbGUgWndlaWdlIGFuZ2VnZWJlbiB1bSBLb25maWd1cmF0aW9uIHp1IMOcYmVybmFobWV6d2VpZyB6dSBlbnRmZXJuZW4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTY2Cittc2dpZCAiY291bGQgbm90IHVuc2V0IHVwc3RyZWFtIG9mIEhFQUQgd2hlbiBpdCBkb2VzIG5vdCBwb2ludCB0byBhbnkgYnJhbmNoLiIKK21zZ3N0ciAiIgorIktvbm50ZSBLb25maWd1cmF0aW9uIHp1bSDDnGJlcm5haG1lendlaWcgdm9uIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodFxuIgorImVudGZlcm5lbiwgZGEgZGllc2UgYXVmIGtlaW5lbiBad2VpZyB6ZWlndC4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCAnJXMnIGhhcyBubyB1cHN0cmVhbSBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiWndlaWcgJyVzJyBoYXQga2VpbmVuIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZyBnZXNldHp0IgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkxNAorIzogYnVpbHRpbi9icmFuY2guYzo5ODcKK21zZ2lkICJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiCittc2dzdHIgIidIRUFEJyBkYXJmIG5pY2h0IG1hbnVlbGwgZXJzdGVsbHQgd2VyZGVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk5MwogbXNnaWQgIi1hIGFuZCAtciBvcHRpb25zIHRvICdnaXQgYnJhbmNoJyBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIiIKLSJEaWUgT3B0aW9uZW4gLWEgdW5kIC1yIGJlaSAnZ2l0IGJyYW5jaCcgbWFjaGVuIG1pdCBlaW5lbSBad2VpZ25hbWVuIGtlaW5lbiAiCi0iU2lubi4iCisiRGllIE9wdGlvbmVuIC1hIHVuZCAtciBiZWkgJ2dpdCBicmFuY2gnIGvDtm5uZW4gbmljaHQgZ2VtZWltc2FtIG1pdCBlaW5lbSAiCisiWndlaWduYW1lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgLS1zZXQtdXBzdHJlYW0gZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIENvbnNpZGVyIHVzaW5nIC0tIgogInRyYWNrIG9yIC0tc2V0LXVwc3RyZWFtLXRvXG4iCiBtc2dzdHIgIiIKLSJEaWUgLS1zZXQtdXBzdHJlYW0gT3B0aW9uIGlzdCB2ZXJhbHRldCB1bmQgd2lyZCBlbnRmZXJudC4gQmVudXR6ZSAtLXRyYWNrICIKLSJvZGVyIC0tc2V0LXVwc3RyZWFtLXRvXG4iCisiRGllIC0tc2V0LXVwc3RyZWFtIE9wdGlvbiBpc3QgdmVyYWx0ZXQgdW5kIHdpcmQgZW50ZmVybnQuIEJlbnV0emVuIFNpZSAtLSIKKyJ0cmFjayBvZGVyIC0tc2V0LXVwc3RyZWFtLXRvXG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM0CisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMjUzOCwxNSArMjkzNywxNSBAQAogIlxuIgogbXNnc3RyICIiCiAiXG4iCi0iV2VubiBkdSB3b2xsdGVzdCwgZGFzcyAnJXMnIGRlbiBad2VpZyAnJXMnIGFscyBleHRlcm5lbiDDnGJlcm5haG1lendlaWcgaGF0LCAiCi0iZsO8aHJlIGF1czpcbiIKKyJXZW5uIFNpZSB3b2xsdGVuLCBkYXNzICclcycgZGVuIFp3ZWlnICclcycgYWxzIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZyBoYXQsICIKKyJmw7xocmVuIFNpZSBhdXM6XG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM1CisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKIG1zZ3N0ciAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgogbXNnc3RyICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgpAQCAtMjU2NCw0NSArMjk2Myw0NSBAQAogbXNnaWQgIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIKIG1zZ3N0ciAiWnVtIEVudHBhY2tlbiB3aXJkIGVpbiBQcm9qZWt0YXJjaGl2IGJlbsO2dGlndC4iCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNDcKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzYKIG1zZ2lkICJnaXQgY2F0LWZpbGUgKC10fC1zfC1lfC1wfDx0eXBlPnwtLXRleHRjb252KSA8b2JqZWN0PiIKIG1zZ3N0ciAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8QXJ0PnwtLXRleHRjb252KSA8T2JqZWt0PiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI0OAorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NwogbXNnaWQgImdpdCBjYXQtZmlsZSAoLS1iYXRjaHwtLWJhdGNoLWNoZWNrKSA8IDxsaXN0X29mX29iamVjdHM+IgogbXNnc3RyICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8TGlzdGVfdm9uX09iamVrdGVuPiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI2NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NQogbXNnaWQgIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKIG1zZ3N0ciAiPEFydD4ga2FubiBzZWluOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI2NworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NgogbXNnaWQgInNob3cgb2JqZWN0IHR5cGUiCiBtc2dzdHIgInplaWd0IE9iamVrdGFydCIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI2OAorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NwogbXNnaWQgInNob3cgb2JqZWN0IHNpemUiCiBtc2dzdHIgInplaWd0IE9iamVrdGdyw7bDn2UiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzAKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTkKIG1zZ2lkICJleGl0IHdpdGggemVybyB3aGVuIHRoZXJlJ3Mgbm8gZXJyb3IiCiBtc2dzdHIgImJlZW5kZXQgbWl0IFLDvGNrZ2FiZXdlcnQgMCwgd2VubiBrZWluIEZlaGxlciBhdWZnZXRyZXRlbiBpc3QiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzEKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDAKIG1zZ2lkICJwcmV0dHktcHJpbnQgb2JqZWN0J3MgY29udGVudCIKIG1zZ3N0ciAiYW5zcHJlY2hlbmRlIEFuemVpZ2UgZGVzIE9iamVrdGluaGFsdGVzIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjczCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjAyCiBtc2dpZCAiZm9yIGJsb2Igb2JqZWN0cywgcnVuIHRleHRjb252IG9uIG9iamVjdCdzIGNvbnRlbnQiCiBtc2dzdHIgImbDvGhydCBlaW5lIFRleHRrb252ZXJ0aWVydW5nIGF1ZiBkZW4gSW5oYWx0IHZvbiBCbG9iLU9iamVrdGVuIGF1cyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3NQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwNAogbXNnaWQgInNob3cgaW5mbyBhbmQgY29udGVudCBvZiBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAiIgogIkFuemVpZ2Ugdm9uIEluZm9ybWF0aW9uZW4gdW5kIEluaGFsdCB2b24gT2JqZWt0ZW4sIGdlbGVzZW4gdm9uIGRlciBTdGFuZGFyZC0iCiAiRWluZ2FiZSIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3OAorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwNwogbXNnaWQgInNob3cgaW5mbyBhYm91dCBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAiIgogIkFuemVpZ2Ugdm9uIEluZm9ybWF0aW9uZW4gw7xiZXIgT2JqZWt0ZSwgZ2VsZXNlbiB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUiCkBAIC0yNjEzLDcgKzMwMTIsOCBAQAogCiAjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoxMgogbXNnaWQgImdpdCBjaGVjay1hdHRyIC0tc3RkaW4gWy16XSBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIDwgPGxpc3Qtb2YtcGF0aHM+IgotbXNnc3RyICJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstel0gWy1hIHwgLS1hbGwgfCBBdHRyaWJ1dC4uLl0gPCA8TGlzdGUtdm9uLVBmYWRlbj4iCittc2dzdHIgIiIKKyJnaXQgY2hlY2stYXR0ciAtLXN0ZGluIFstel0gWy1hIHwgLS1hbGwgfCBBdHRyaWJ1dC4uLl0gPCA8TGlzdGUtdm9uLVBmYWRlbj4iCiAKICM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjE5CiBtc2dpZCAicmVwb3J0IGFsbCBhdHRyaWJ1dGVzIHNldCBvbiBmaWxlIgpAQCAtMjYyMywxNCArMzAyMywzOSBAQAogbXNnaWQgInVzZSAuZ2l0YXR0cmlidXRlcyBvbmx5IGZyb20gdGhlIGluZGV4IgogbXNnc3RyICJ2ZXJ3ZW5kZXQgLmdpdGF0dHJpYnV0ZXMgbnVyIHZvbiBkZXIgQmVyZWl0c3RlbGx1bmciCiAKLSM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NQorIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjEgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoyMiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzUKIG1zZ2lkICJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIKIG1zZ3N0ciAibGllc3QgRGF0ZWluYW1lbiB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUiCiAKLSM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIzCisjOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMyBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjI0CiBtc2dpZCAiaW5wdXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgYnkgYSBudWxsIGNoYXJhY3RlciIKIG1zZ3N0ciAiRWluZ2FiZXBmYWRlIHNpbmQgZHVyY2ggZWluIE5VTCBaZWljaGVuIGFiZ2VzY2hsb3NzZW4iCiAKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTggYnVpbHRpbi9jaGVja291dC5jOjEwNDQgYnVpbHRpbi9nYy5jOjE3NworbXNnaWQgInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIKK21zZ3N0ciAidW50ZXJkcsO8Y2t0IEZvcnRzY2hyaXR0c2FuemVpZ2UiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2Cittc2dpZCAiY2Fubm90IHNwZWNpZnkgcGF0aG5hbWVzIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiQW5nYWJlIHZvbiBQZmFkbmFtZW4ga2FubiBuaWNodCBnZW1laW5zYW0gbWl0IC0tc3RkaW4gdmVyd2VuZGV0IHdlcmRlbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDkKK21zZ2lkICIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAteiBrYW5uIG51ciBtaXQgLS1zdGRpbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTEKK21zZ2lkICJubyBwYXRoIHNwZWNpZmllZCIKK21zZ3N0ciAia2VpbiBQZmFkIGFuZ2VnZWJlbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLXF1aWV0IGlzdCBudXIgbWl0IGVpbmVtIGVpbnplbG5lbiBQZmFkbmFtZW4gZ8O8bHRpZy4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU3Cittc2dpZCAiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1xdWlldCB1bmQgLS12ZXJib3NlIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCB3ZXJkZW4uIgorCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2CiBtc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgogbXNnc3RyICJnaXQgY2hlY2tvdXQtaW5kZXggW09wdGlvbmVuXSBbLS1dIFs8RGF0ZWk+Li4uXSIKQEAgLTI2ODYsMTA2ICszMTExLDEwNiBAQAogbXNnaWQgImdpdCBjaGVja291dCBbb3B0aW9uc10gWzxicmFuY2g+XSAtLSA8ZmlsZT4uLi4iCiBtc2dzdHIgImdpdCBjaGVja291dCBbT3B0aW9uZW5dIFtad2VpZz5dIC0tIDxEYXRlaT4uLi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYgYnVpbHRpbi9jaGVja291dC5jOjE0OQorIzogYnVpbHRpbi9jaGVja291dC5jOjExNyBidWlsdGluL2NoZWNrb3V0LmM6MTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIG91ciB2ZXJzaW9uIgogbXNnc3RyICJQZmFkICclcycgaGF0IG5pY2h0IHVuc2VyZSBWZXJzaW9uLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExOCBidWlsdGluL2NoZWNrb3V0LmM6MTUxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgdGhlaXIgdmVyc2lvbiIKIG1zZ3N0ciAiUGZhZCAnJXMnIGhhdCBuaWNodCBkZXJlbiBWZXJzaW9uLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEzNAorIzogYnVpbHRpbi9jaGVja291dC5jOjEzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBhbGwgbmVjZXNzYXJ5IHZlcnNpb25zIgogbXNnc3RyICJQZmFkICclcycgaGF0IG5pY2h0IGFsbGUgbm90d2VuZGlnZW4gVmVyc2lvbmVuLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjE3OAorIzogYnVpbHRpbi9jaGVja291dC5jOjE3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBuZWNlc3NhcnkgdmVyc2lvbnMiCiBtc2dzdHIgIlBmYWQgJyVzJyBoYXQgbmljaHQgZGllIG5vdHdlbmRpZ2VuIFZlcnNpb25lbi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnOiBjYW5ub3QgbWVyZ2UiCiBtc2dzdHIgIlBmYWQgJyVzJzoga2FubiBuaWNodCB6dXNhbW1lbmbDvGhyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGFkZCBtZXJnZSByZXN1bHQgZm9yICclcyciCiBtc2dzdHIgIktvbm50ZSBFcmdlYm5pcyBkZXIgWnVzYW1tZW5mw7xocnVuZyB2b24gJyVzJyBuaWNodCBoaW56dWbDvGdlbi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzYgYnVpbHRpbi9jaGVja291dC5jOjIzOSBidWlsdGluL2NoZWNrb3V0LmM6MjQyCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjM3IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDAgYnVpbHRpbi9jaGVja291dC5jOjI0MworIzogYnVpbHRpbi9jaGVja291dC5jOjI0NgogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggdXBkYXRpbmcgcGF0aHMiCi1tc2dzdHIgIiclcycga2FubiBuaWNodCBtaXQgUGZhZGVuIGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICInJXMnIGthbm4gbmljaHQgbWl0IFBmYWRlbiB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ4IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDkgYnVpbHRpbi9jaGVja291dC5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCi1tc2dzdHIgIiclcycga2FubiBuaWNodCBtaXQgJyVzJyBiZW51dHp0IHdlcmRlbiIKK21zZ3N0ciAiJyVzJyBrYW5uIG5pY2h0IG1pdCAnJXMnIHZlcndlbmRldCB3ZXJkZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuIgogbXNnc3RyICJLYW5uIG5pY2h0IGdsZWljaHplaXRpZyBQZmFkZSBha3R1YWxpc2llcmVuIHVuZCB6dSBad2VpZyAnJXMnIHdlY2hzZWxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo0MjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjYgYnVpbHRpbi9jaGVja291dC5jOjQ1OAogbXNnaWQgImNvcnJ1cHQgaW5kZXggZmlsZSIKIG1zZ3N0ciAiYmVzY2jDpGRpZ3RlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6Mjk1IGJ1aWx0aW4vY2hlY2tvdXQuYzozMDIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMjkgYnVpbHRpbi9jaGVja291dC5jOjMzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgaXMgdW5tZXJnZWQiCiBtc2dzdHIgIlBmYWQgJyVzJyBpc3QgbmljaHQgenVzYW1tZW5nZWbDvGhydC4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo0NDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo0ODAKIG1zZ2lkICJ5b3UgbmVlZCB0byByZXNvbHZlIHlvdXIgY3VycmVudCBpbmRleCBmaXJzdCIKLW1zZ3N0ciAiRHUgbXVzc3QgenVlcnN0IGRlaW5lIGFrdHVlbGxlIEJlcmVpdHN0ZWxsdW5nIGF1ZmzDtnNlbi4iCittc2dzdHIgIlNpZSBtw7xzc2VuIHp1ZXJzdCBJaHJlIGFrdHVlbGxlIEJlcmVpdHN0ZWxsdW5nIGF1ZmzDtnNlbi4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyByZWZsb2cgZm9yICclcydcbiIKIG1zZ3N0ciAiS29ubnRlIFwicmVmbG9nXCIgZsO8ciAnJXMnIG5pY2h0IGR1cmNoZsO8aHJlblxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjAyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjM0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQiCiBtc2dzdHIgIlp3ZWlnc3BpdHplIChIRUFEKSBpc3QgamV0enQgYmVpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAnJXMnXG4iCi1tc2dzdHIgIlNldHplIFp3ZWlnICclcycgenVyw7xja1xuIgorbXNnc3RyICJTZXR6ZSBad2VpZyAnJXMnIG5ldVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjEyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgogbXNnc3RyICJCZXJlaXRzIGF1ZiAnJXMnXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYW5kIHJlc2V0IGJyYW5jaCAnJXMnXG4iCi1tc2dzdHIgIkdld2VjaHNlbHQgenUgenVyw7xja2dlc2V0enRlbSBad2VpZyAnJXMnXG4iCittc2dzdHIgIkdld2VjaHNlbHQgenUgbmV1IGdlc2V0enRlbSBad2VpZyAnJXMnXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTggYnVpbHRpbi9jaGVja291dC5jOjk1NQorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MCBidWlsdGluL2NoZWNrb3V0LmM6OTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIkdld2VjaHNlbHQgenUgZWluZW0gbmV1ZW4gWndlaWcgJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjIwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIkdld2VjaHNlbHQgenUgWndlaWcgJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6Njc2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAuLi4gYW5kICVkIG1vcmUuXG4iCiBtc2dzdHIgIiAuLi4gdW5kICVkIHdlaXRlcmUuXG4iCiAKICMuIFRoZSBzaW5ndWxhciB2ZXJzaW9uCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjgyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiB5b3UgYXJlIGxlYXZpbmcgJWQgY29tbWl0IGJlaGluZCwgbm90IGNvbm5lY3RlZCB0b1xuIgpAQCAtMjc5OCwxNyArMzIyMywxNyBAQAogIlxuIgogIiVzXG4iCiBtc2dzdHJbMF0gIiIKLSJXYXJudW5nOiBEdSBiaXN0IHVtICVkIFZlcnNpb24gaGludGVyaGVyLCBuaWNodCB2ZXJidW5kZW4genVcbiIKLSJlaW5lbSBkZWluZXIgWndlaWdlOlxuIgorIldhcm51bmc6IFNpZSBzaW5kIHVtICVkIFZlcnNpb24gaGludGVyaGVyLCBuaWNodCB2ZXJidW5kZW4genVcbiIKKyJlaW5lbSBJaHJlciBad2VpZ2U6XG4iCiAiXG4iCiAiJXNcbiIKIG1zZ3N0clsxXSAiIgotIldhcm51bmc6IER1IGJpc3QgdW0gJWQgVmVyc2lvbmVuIGhpbnRlcmhlciwgbmljaHQgdmVyYnVuZGVuIHp1XG4iCi0iZWluZW0gZGVpbmVyIFp3ZWlnZTpcbiIKKyJXYXJudW5nOiBTaWUgc2luZCB1bSAlZCBWZXJzaW9uZW4gaGludGVyaGVyLCBuaWNodCB2ZXJidW5kZW4genVcbiIKKyJlaW5lbSBJaHJlciBad2VpZ2U6XG4iCiAiXG4iCiAiJXNcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcwMAorIzogYnVpbHRpbi9jaGVja291dC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGJ5IGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhpcyBtYXkgYmUgYSBnb29kIHRpbWVcbiIKQEAgLTI4MTcsMjA5ICszMjQyLDIzNCBAQAogIiBnaXQgYnJhbmNoIG5ld19icmFuY2hfbmFtZSAlc1xuIgogIlxuIgogbXNnc3RyICIiCi0iV2VubiBkdSBkaWVzZSBkdXJjaCBlaW5lbiBuZXVlbiBad2VpZyBiZWhhbHRlbiBtw7ZjaHRlc3QsIGRhbm4ga8O2bm50ZSBqZXR6dFxuIgorIldlbm4gU2llIGRpZXNlIGR1cmNoIGVpbmVuIG5ldWVuIFp3ZWlnIGJlaGFsdGVuIG3DtmNodGVuLCBkYW5uIGvDtm5udGUgamV0enRcbiIKICJlaW4gZ3V0ZXIgWmVpdHB1bmt0IHNlaW4gZGllcyB6dSB0dW4gbWl0OlxuIgogIlxuIgogIiBnaXQgYnJhbmNoIG5ldWVyX3p3ZWlnX25hbWUgJXNcbiIKICJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjczMAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgImludGVybmVyIEZlaGxlciBpbSBSZXZpc2lvbnNnYW5nIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzM0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzY2CiBtc2dpZCAiUHJldmlvdXMgSEVBRCBwb3NpdGlvbiB3YXMiCiBtc2dzdHIgIlZvcmhlcmlnZSBQb3NpdGlvbiBkZXIgWndlaWdzcGl0emUgKEhFQUQpIHdhciIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjc2MSBidWlsdGluL2NoZWNrb3V0LmM6OTUwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzkzIGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODIKIG1zZ2lkICJZb3UgYXJlIG9uIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgotbXNnc3RyICJkdSBiaXN0IGF1ZiBlaW5lbSBad2VpZywgZGVyIG5vY2ggZ2Vib3JlbiB3aXJkIgorbXNnc3RyICJTaWUgc2luZCBhdWYgZWluZW0gWndlaWcsIGRlciBub2NoIGdlYm9yZW4gd2lyZCIKIAogIy4gY2FzZSAoMSkKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo4ODYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWZlcmVuY2U6ICVzIgogbXNnc3RyICJVbmfDvGx0aWdlIFJlZmVyZW56OiAlcyIKIAogIy4gY2FzZSAoMSk6IHdhbnQgYSB0cmVlCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTI1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZmVyZW5jZSBpcyBub3QgYSB0cmVlOiAlcyIKIG1zZ3N0ciAiUmVmZXJlbnogaXN0IGtlaW4gQmF1bTogJXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NjQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTYKIG1zZ2lkICJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKLW1zZ3N0ciAiUGZhZGUga8O2bm5lbiBuaWNodCBtaXQgZGVtIFdlY2hzZWxuIHZvbiBad2VpZ2VuIGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICJQZmFkZSBrw7ZubmVuIG5pY2h0IGJlaW0gV2VjaHNlbG4gdm9uIFp3ZWlnZW4gdmVyd2VuZGV0IHdlcmRlbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk2NyBidWlsdGluL2NoZWNrb3V0LmM6OTcxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTk5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCi1tc2dzdHIgIiclcycga2FubiBuaWNodCBtaXQgZGVtIFdlY2hzZWxuIHZvbiBad2VpZ2VuIGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICInJXMnIGthbm4gbmljaHQgYmVpbSBXZWNoc2VsbiB2b24gWndlaWdlbiB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTc1IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzggYnVpbHRpbi9jaGVja291dC5jOjk4MwotIzogYnVpbHRpbi9jaGVja291dC5jOjk4NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcgYnVpbHRpbi9jaGVja291dC5jOjEwMTAgYnVpbHRpbi9jaGVja291dC5jOjEwMTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAnJXMnIgotbXNnc3RyICInJXMnIGthbm4gbmljaHQgbWl0ICclcycgYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIiclcycga2FubiBuaWNodCBtaXQgJyVzJyB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTkxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgc3dpdGNoIGJyYW5jaCB0byBhIG5vbi1jb21taXQgJyVzJyIKIG1zZ3N0ciAiS2FubiBad2VpZyBuaWNodCB6dSBOaWNodC1WZXJzaW9uICclcycgd2VjaHNlbG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDEyIGJ1aWx0aW4vZ2MuYzoxNzcKLW1zZ2lkICJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciCi1tc2dzdHIgInVudGVyZHLDvGNrdCBGb3J0c2Nocml0dHNhbnplaWdlIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxMyBidWlsdGluL2NoZWNrb3V0LmM6MTAxNSBidWlsdGluL2Nsb25lLmM6ODkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNjkgYnVpbHRpbi9yZW1vdGUuYzoxNzEKIG1zZ2lkICJicmFuY2giCiBtc2dzdHIgIlp3ZWlnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDYKIG1zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiZXJ6ZXVndCB1bmQgY2hlY2t0IGVpbmVuIG5ldWVuIFp3ZWlnIGF1cyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ4CiBtc2dpZCAiY3JlYXRlL3Jlc2V0IGFuZCBjaGVja291dCBhIGJyYW5jaCIKIG1zZ3N0ciAiZXJ6ZXVndC9zZXR6dCBuZXUgdW5kIGNoZWNrdCBlaW5lbiBad2VpZyBhdXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OQogbXNnaWQgImNyZWF0ZSByZWZsb2cgZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgImVyemV1Z3QgUmVmZXJlbnpwcm90b2tvbGwgZsO8ciBkZW4gbmV1ZW4gWndlaWciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MAogbXNnaWQgImRldGFjaCB0aGUgSEVBRCBhdCBuYW1lZCBjb21taXQiCiBtc2dzdHIgInNldHp0IGRpZSBad2VpZ3NwaXR6ZSAoSEVBRCkgenUgYmVuYW5udGVyIFZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MQogbXNnaWQgInNldCB1cHN0cmVhbSBpbmZvIGZvciBuZXcgYnJhbmNoIgogbXNnc3RyICJzZXR6dCBJbmZvcm1hdGlvbmVuIHp1bSBleHRlcm5lbiDDnGJlcm5haG1lendlaWcgZsO8ciBkZW4gbmV1ZW4gWndlaWciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MwogbXNnaWQgIm5ldyBicmFuY2giCiBtc2dzdHIgIm5ldWVyIFp3ZWlnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKIG1zZ2lkICJuZXcgdW5wYXJlbnRlZCBicmFuY2giCiBtc2dzdHIgIm5ldWVyIFp3ZWlnIG9obmUgRWx0ZXJudmVyc2lvbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0CiBtc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgogbXNnc3RyICJjaGVja3QgdW5zZXJlIFZhcmlhbnRlIGbDvHIgbmljaHQgenVzYW1tZW5nZWbDvGhydGUgRGF0ZWllbiBhdXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1NgogbXNnaWQgImNoZWNrb3V0IHRoZWlyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgogbXNnc3RyICJjaGVja3QgaWhyZSBWYXJpYW50ZSBmw7xyIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlIERhdGVpZW4gYXVzIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyNgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKIG1zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKIG1zZ3N0ciAiZXJ6d2luZ3QgQXVzY2hlY2tlbiAodmVyd2lyZnQgbG9rYWxlIMOEbmRlcnVuZ2VuKSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU5CiBtc2dpZCAicGVyZm9ybSBhIDMtd2F5IG1lcmdlIHdpdGggdGhlIG5ldyBicmFuY2giCiBtc2dzdHIgImbDvGhydCBlaW5lIDMtV2VnZS1adXNhbW1lbmbDvGhydW5nIG1pdCBkZW0gbmV1ZW4gWndlaWcgYXVzIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyOCBidWlsdGluL21lcmdlLmM6MjE1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MCBidWlsdGluL21lcmdlLmM6MjE3CiBtc2dpZCAidXBkYXRlIGlnbm9yZWQgZmlsZXMgKGRlZmF1bHQpIgogbXNnc3RyICJha3R1YWxpc2llcnQgaWdub3JpZXJ0ZSBEYXRlaWVuIChTdGFuZGFyZCkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI5IGJ1aWx0aW4vbG9nLmM6MTExNiBwYXJzZS1vcHRpb25zLmg6MjQxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MSBidWlsdGluL2xvZy5jOjExNTggcGFyc2Utb3B0aW9ucy5oOjI0NQogbXNnaWQgInN0eWxlIgogbXNnc3RyICJTdGlsIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAzMAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjIKIG1zZ2lkICJjb25mbGljdCBzdHlsZSAobWVyZ2Ugb3IgZGlmZjMpIgogbXNnc3RyICJLb25mbGlrdHN0aWwgKG1lcmdlIG9kZXIgZGlmZjMpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAzMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgIlBmYWRzcGV6aWZpa2F0aW9uZW4gaWdub3JpZXJlbiBFaW5zdGVsbHVuZ2VuIHp1bSBwYXJ0aWVsbGVuIEF1c2NoZWNrZW4iCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY3CiBtc2dpZCAic2Vjb25kIGd1ZXNzICdnaXQgY2hlY2tvdXQgbm8tc3VjaC1icmFuY2gnIgogbXNnc3RyICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MQogbXNnaWQgIi1iLCAtQiBhbmQgLS1vcnBoYW4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKLW1zZ3N0ciAiLWIsIC1CIHVuZCAtLW9ycGhhbiBzY2hsaWVzc2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLWIsIC1CIHVuZCAtLW9ycGhhbiBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTA4CiBtc2dpZCAiLS10cmFjayBuZWVkcyBhIGJyYW5jaCBuYW1lIgotbXNnc3RyICItLXRyYWNrIGJlbsO2dGlndCBlaW5lbiBad2VpZ25hbWVuIgorbXNnc3RyICJCZWkgZGVyIE9wdGlvbiAtLXRyYWNrIG11c3MgZWluIFp3ZWlnbmFtZSBhbmdlZ2ViZW4gd2VyZGVuLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwODEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTE1CiBtc2dpZCAiTWlzc2luZyBicmFuY2ggbmFtZTsgdHJ5IC1iIgotbXNnc3RyICJWZXJtaXNzZSBad2VpZ25hbWVuOyB2ZXJzdWNoZSAtYiIKK21zZ3N0ciAiVmVybWlzc2UgWndlaWduYW1lbjsgdmVyc3VjaGVuIFNpZSAtYiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUwCiBtc2dpZCAiaW52YWxpZCBwYXRoIHNwZWNpZmljYXRpb24iCiBtc2dzdHIgInVuZ8O8bHRpZ2UgUGZhZHNwZXppZmlrYXRpb24iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTIzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuXG4iCiAiRGlkIHlvdSBpbnRlbmQgdG8gY2hlY2tvdXQgJyVzJyB3aGljaCBjYW4gbm90IGJlIHJlc29sdmVkIGFzIGNvbW1pdD8iCiBtc2dzdHIgIiIKICJLYW5uIG5pY2h0IGdsZWljaHplaXRpZyBQZmFkZSBha3R1YWxpc2llcmVuIHVuZCB6dSBad2VpZyAnJXMnIHdlY2hzZWxuLlxuIgotIkhhc3QgZHUgYmVhYnNpY2h0aWd0ICclcycgYXVzenVjaGVja2VuLCB3ZWxjaGVyIG5pY2h0IGFscyBWZXJzaW9uIGF1ZmdlbMO2c3QgIgotIndlcmRlbiBrYW5uPyIKKyJIYWJlbiBTaWUgYmVhYnNpY2h0aWd0ICclcycgYXVzenVjaGVja2VuLCB3ZWxjaGVyIG5pY2h0IGFscyBWZXJzaW9uICIKKyJhdWZnZWzDtnN0IHdlcmRlbiBrYW5uPyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMjgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQgJyVzJyIKIG1zZ3N0ciAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBuaW1tdCBrZWluIFBmYWQtQXJndW1lbnQgJyVzJyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMzIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTY2CiBtc2dpZCAiIgogImdpdCBjaGVja291dDogLS1vdXJzLy0tdGhlaXJzLCAtLWZvcmNlIGFuZCAtLW1lcmdlIGFyZSBpbmNvbXBhdGlibGUgd2hlblxuIgogImNoZWNraW5nIG91dCBvZiB0aGUgaW5kZXguIgogbXNnc3RyICIiCiAiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgdW5kIC0tbWVyZ2Ugc2luZCBpbmtvbXBhdGliZWwgd2VublxuIgotImR1IGF1cyBkZXIgQmVyZWl0c3RlbGx1bmcgYXVzY2hlY2tzdC4iCisiU2llIGF1cyBkZXIgQmVyZWl0c3RlbGx1bmcgYXVzY2hlY2tlbi4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxOQorIzogYnVpbHRpbi9jbGVhbi5jOjIwCiBtc2dpZCAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIKIG1zZ3N0ciAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxNdXN0ZXI+XSBbLXggfCAtWF0gWy0tXSA8UGZhZGU+Li4uIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTEKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNAorIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlc1xuIgorbXNnc3RyICJMw7ZzY2hlICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNQorIywgYy1mb3JtYXQKK21zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKK21zZ3N0ciAiV8O8cmRlICVzIGzDtnNjaGVuXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGluZyByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIsOcYmVyc3ByaW5nZSBQcm9qZWt0YXJjaGl2ICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNworIywgYy1mb3JtYXQKK21zZ2lkICJXb3VsZCBza2lwIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAiV8O8cmRlIFByb2pla3RhcmNoaXYgJXMgw7xiZXJzcHJpbmdlblxuIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHJlbW92ZSAlcyIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTMO2c2NoZW4gdm9uICVzIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTYwCiBtc2dpZCAiZG8gbm90IHByaW50IG5hbWVzIG9mIGZpbGVzIHJlbW92ZWQiCiBtc2dzdHIgImdpYnQga2VpbmUgTmFtZW4gdm9uIGdlbMO2c2NodGVuIERhdGVpZW4gYXVzIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTMKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKIG1zZ2lkICJmb3JjZSIKIG1zZ3N0ciAiZXJ6d2luZ3QgQWt0aW9uIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTUKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjQKIG1zZ2lkICJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiCiBtc2dzdHIgImzDtnNjaHQgZ2FuemUgVmVyemVpY2huaXNzZSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU2IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTMgYnVpbHRpbi9ncmVwLmM6NzE3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDkxIGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorIzogYnVpbHRpbi9jbGVhbi5jOjE2NSBidWlsdGluL2Rlc2NyaWJlLmM6NDEyIGJ1aWx0aW4vZ3JlcC5jOjcxNworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NyBidWlsdGluL25hbWUtcmV2LmM6MjMxIGJ1aWx0aW4vc2hvdy1yZWYuYzoxODIKIG1zZ2lkICJwYXR0ZXJuIgogbXNnc3RyICJNdXN0ZXIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo1NworIzogYnVpbHRpbi9jbGVhbi5jOjE2NgogbXNnaWQgImFkZCA8cGF0dGVybj4gdG8gaWdub3JlIHJ1bGVzIgogbXNnc3RyICJmw7xndCA8TXVzdGVyPiB6dSBkZW4gUmVnZWxuIGbDvHIgaWdub3JpZXJ0ZSBQZmFkZSBoaW56dSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU4CisjOiBidWlsdGluL2NsZWFuLmM6MTY3CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKIG1zZ3N0ciAibMO2c2NodCBhdWNoIGlnbm9yaWVydGUgRGF0ZWllbiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjYwCisjOiBidWlsdGluL2NsZWFuLmM6MTY5CiBtc2dpZCAicmVtb3ZlIG9ubHkgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAibMO2c2NodCBudXIgaWdub3JpZXJ0ZSBEYXRlaWVuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NzgKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxODcKIG1zZ2lkICIteCBhbmQgLVggY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCi1tc2dzdHIgIi14IHVuZCAtWCBrw7ZubmVuIG5pY2h0IHp1c2FtbWVuIGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLXggdW5kIC1YIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTEKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gY2xlYW4iCiBtc2dzdHIgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2UgYXVmIFwidHJ1ZVwiIGdlc2V0enQgdW5kIHdlZGVyIC1uIG5vY2ggLWYgZ2VnZWJlbjsgIgogIlPDpHViZXJ1bmcgdmVyd2VpZ2VydCIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjg1CisjOiBidWlsdGluL2NsZWFuLmM6MTk0CiBtc2dpZCAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgogImNsZWFuIgpAQCAtMzAyNywyNDEgKzM0NzcsMjQwIEBACiAiY2xlYW4ucmVxdWlyZUZvcmNlIHN0YW5kYXJkbcOkw59pZyBhdWYgXCJ0cnVlXCIgZ2VzZXR6dCB1bmQgd2VkZXIgLW4gbm9jaCAtZiAiCiAiZ2VnZWJlbjsgU8OkdWJlcnVuZyB2ZXJ3ZWlnZXJ0IgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTU1IGJ1aWx0aW4vY2xlYW4uYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIlfDvHJkZSAlcyBsw7ZzY2hlblxuIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTU5IGJ1aWx0aW4vY2xlYW4uYzoxNzkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAiTMO2c2NoZSAlc1xuIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTYyIGJ1aWx0aW4vY2xlYW4uYzoxODIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIHJlbW92ZSAlcyIKLW1zZ3N0ciAiRmVobGVyIGJlaW0gTMO2c2NoZW4gdm9uICVzIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTY2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIldvdWxkIG5vdCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAiV8O8cmRlICclcycgbmljaHQgbMO2c2NoZW5cbiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE2OAotIywgYy1mb3JtYXQKLW1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAiRW50ZmVybmUgbmljaHQgJXNcbiIKLQotIzogYnVpbHRpbi9jbG9uZS5jOjM2CisjOiBidWlsdGluL2Nsb25lLmM6MzcKIG1zZ2lkICJnaXQgY2xvbmUgW29wdGlvbnNdIFstLV0gPHJlcG8+IFs8ZGlyPl0iCiBtc2dzdHIgImdpdCBjbG9uZSBbT3B0aW9uZW5dIFstLV0gPFByb2pla3RhcmNoaXY+IFs8VmVyemVpY2huaXM+XSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0IGJ1aWx0aW4vZmV0Y2guYzo4MiBidWlsdGluL21lcmdlLmM6MjEyCi0jOiBidWlsdGluL3B1c2guYzozOTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9wdXNoLmM6NDM2CiBtc2dpZCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIgogbXNnc3RyICJlcnp3aW5ndCBGb3J0c2Nocml0dHNhbnplaWdlIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NwogbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgogbXNnc3RyICJrZWluIEF1c2NoZWNrZW4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NyBidWlsdGluL2Nsb25lLmM6NjkgYnVpbHRpbi9pbml0LWRiLmM6NDg4CisjOiBidWlsdGluL2Nsb25lLmM6NjggYnVpbHRpbi9jbG9uZS5jOjcwIGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAogbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiZXJzdGVsbHQgZWluIGJsb8OfZXMgUHJvamVrdGFyY2hpdiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcyCisjOiBidWlsdGluL2Nsb25lLmM6NzMKIG1zZ2lkICJjcmVhdGUgYSBtaXJyb3IgcmVwb3NpdG9yeSAoaW1wbGllcyBiYXJlKSIKIG1zZ3N0ciAiZXJzdGVsbHQgZWluIFNwaWVnZWxhcmNoaXYgKGltcGxpemllcnQgYmxvw59lcyBQcm9qZWt0YXJjaGl2KSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc0CisjOiBidWlsdGluL2Nsb25lLmM6NzUKIG1zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKIG1zZ3N0ciAidW0gdm9uIGVpbmVtIGxva2FsZW4gUHJvamVrdGFyY2hpdiB6dSBrbG9uZW4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NgorIzogYnVpbHRpbi9jbG9uZS5jOjc3CiBtc2dpZCAiZG9uJ3QgdXNlIGxvY2FsIGhhcmRsaW5rcywgYWx3YXlzIGNvcHkiCi1tc2dzdHIgImJlbnV0enQgbG9rYWwga2VpbmUgaGFydGVuIExpbmtzLCBpbW1lciBLb3BpZW4iCittc2dzdHIgInZlcndlbmRldCBsb2thbCBrZWluZSBoYXJ0ZW4gTGlua3MsIGltbWVyIEtvcGllbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc4CisjOiBidWlsdGluL2Nsb25lLmM6NzkKIG1zZ2lkICJzZXR1cCBhcyBzaGFyZWQgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiRWlucmljaHR1bmcgYWxzIHZlcnRlaWx0ZXMgUHJvamVrdGFyY2hpdiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgwIGJ1aWx0aW4vY2xvbmUuYzo4MgorIzogYnVpbHRpbi9jbG9uZS5jOjgxIGJ1aWx0aW4vY2xvbmUuYzo4MwogbXNnaWQgImluaXRpYWxpemUgc3VibW9kdWxlcyBpbiB0aGUgY2xvbmUiCiBtc2dzdHIgImluaXRpYWxpc2llcnQgVW50ZXJwcm9qZWt0ZSBpbSBLbG9uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODMgYnVpbHRpbi9pbml0LWRiLmM6NDg1CisjOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg1CiBtc2dpZCAidGVtcGxhdGUtZGlyZWN0b3J5IgogbXNnc3RyICJWb3JsYWdlbnZlcnplaWNobmlzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg2CisjOiBidWlsdGluL2Nsb25lLmM6ODUgYnVpbHRpbi9pbml0LWRiLmM6NDg2CiBtc2dpZCAiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIKIG1zZ3N0ciAiVmVyemVpY2huaXMsIHZvbiB3ZWxjaGVtIGRpZSBWb3JsYWdlbiB2ZXJ3ZW5kZXQgd2VyZGVuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NwogbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5IgogbXNnc3RyICJyZWZlcmVuemllcnQgUHJvamVrdGFyY2hpdiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4OCBidWlsdGluL2NvbHVtbi5jOjI2IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ0CiBtc2dpZCAibmFtZSIKIG1zZ3N0ciAiTmFtZSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg4CisjOiBidWlsdGluL2Nsb25lLmM6ODkKIG1zZ2lkICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iCi1tc2dzdHIgImJlbnV0enQgPE5hbWU+IHN0YXR0ICdvcmlnaW4nIGbDvHIgZXh0ZXJuZXMgUHJvamVrdGFyY2hpdiIKK21zZ3N0ciAidmVyd2VuZGV0IDxOYW1lPiBzdGF0dCAnb3JpZ2luJyBmw7xyIGV4dGVybmVzIFByb2pla3RhcmNoaXYiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9jbG9uZS5jOjkxCiBtc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKIG1zZ3N0ciAiIgogImNoZWNrdCA8WndlaWc+IGF1cywgYW5zdGF0dCBad2VpZ3NwaXR6ZSAoSEVBRCkgZGVzIGV4dGVybmVuIFByb2pla3RhcmNoaXZzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MwogbXNnaWQgInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiCiBtc2dzdHIgIlBmYWQgenUgXCJnaXQtdXBsb2FkLXBhY2tcIiBhdWYgZGVyIEdlZ2Vuc2VpdGUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MyBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCisjOiBidWlsdGluL2Nsb25lLmM6OTQgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjY2MgogbXNnaWQgImRlcHRoIgogbXNnc3RyICJUaWVmZSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk0CisjOiBidWlsdGluL2Nsb25lLmM6OTUKIG1zZ2lkICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiCiBtc2dzdHIgImVyc3RlbGx0IGVpbmVuIGZsYWNoZW4gS2xvbiBtaXQgZGllc2VyIFRpZWZlIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NwogbXNnaWQgImNsb25lIG9ubHkgb25lIGJyYW5jaCwgSEVBRCBvciAtLWJyYW5jaCIKIG1zZ3N0ciAia2xvbnQgbnVyIGVpbmVuIFp3ZWlnLCBad2VpZ3NwaXR6ZSAoSEVBRCkgb2RlciAtLWJyYW5jaCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk3IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAorIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAogbXNnaWQgImdpdGRpciIKIG1zZ3N0ciAiLmdpdC1WZXJ6ZWljaG5pcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQorIzogYnVpbHRpbi9jbG9uZS5jOjk5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQogbXNnaWQgInNlcGFyYXRlIGdpdCBkaXIgZnJvbSB3b3JraW5nIHRyZWUiCiBtc2dzdHIgInNlcGFyaWVydCBHaXQtVmVyemVpY2huaXMgdm9tIEFyYmVpdHNiYXVtIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKIG1zZ2lkICJrZXk9dmFsdWUiCiBtc2dzdHIgIlNjaGzDvHNzZWw9V2VydCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjEwMAorIzogYnVpbHRpbi9jbG9uZS5jOjEwMQogbXNnaWQgInNldCBjb25maWcgaW5zaWRlIHRoZSBuZXcgcmVwb3NpdG9yeSIKIG1zZ3N0ciAic2V0enQgS29uZmlndXJhdGlvbiBpbm5lcmhhbGIgZGVzIG5ldWVuIFByb2pla3RhcmNoaXZzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MjQzCisjOiBidWlsdGluL2Nsb25lLmM6MjU0CiAjLCBjLWZvcm1hdAotbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgZGlyZWN0b3J5LiIKLW1zZ3N0ciAiUmVmZXJlbnppZXJ0ZXMgUHJvamVrdGFyY2hpdiAnJXMnIGlzdCBrZWluIGxva2FsZXMgVmVyemVpY2huaXMuIgorbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgcmVwb3NpdG9yeS4iCittc2dzdHIgIlJlZmVyZW56aWVydGVzIFByb2pla3RhcmNoaXYgJyVzJyBpc3Qga2VpbiBsb2thbGVzIFByb2pla3RhcmNoaXYuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA2CisjOiBidWlsdGluL2Nsb25lLmM6MzE3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICclcyciCiBtc2dzdHIgIkZlaGxlciBiZWltIEVyc3RlbGxlbiB2b24gVmVyemVpY2huaXMgJyVzJyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMwOCBidWlsdGluL2RpZmYuYzo3NworIzogYnVpbHRpbi9jbG9uZS5jOjMxOSBidWlsdGluL2RpZmYuYzo3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gc3RhdCAnJXMnIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxMAorIzogYnVpbHRpbi9jbG9uZS5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXMgZXhpc3RpZXJ0IHVuZCBpc3Qga2VpbiBWZXJ6ZWljaG5pcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMyNAorIzogYnVpbHRpbi9jbG9uZS5jOjMzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gc3RhdCAlc1xuIgogbXNnc3RyICJLb25udGUgJXMgbmljaHQgbGVzZW5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM0NgorIzogYnVpbHRpbi9jbG9uZS5jOjM1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIGxpbmsgJyVzJyIKIG1zZ3N0ciAiS29ubnRlIFZlcmtuw7xwZnVuZyAnJXMnIG5pY2h0IGVyc3RlbGxlbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM1MAorIzogYnVpbHRpbi9jbG9uZS5jOjM2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY29weSBmaWxlIHRvICclcyciCiBtc2dzdHIgIktvbm50ZSBEYXRlaSBuaWNodCBuYWNoICclcycga29waWVyZW4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNzMKKyM6IGJ1aWx0aW4vY2xvbmUuYzozODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZG9uZS5cbiIKIG1zZ3N0ciAiRmVydGlnLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQzCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisiS2xvbmVuIGVyZm9sZ3JlaWNoLCBBdXNjaGVja2VuIGlzdCBhYmVyIGZlaGxnZXNjaGxhZ2VuLlxuIgorIlNpZSBrw7ZubmVuIG1pdCAnZ2l0IHN0YXR1cycgcHLDvGZlbiwgd2FzIGF1c2dlY2hlY2t0IHdvcmRlbiBpc3RcbiIKKyJ1bmQgZGFzIEF1c2NoZWNrZW4gbWl0ICdnaXQgY2hlY2tvdXQgLWYgSEVBRCcgZXJuZXV0IHZlcnN1Y2hlbi5cbiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjQ3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmluZCByZW1vdGUgYnJhbmNoICVzIHRvIGNsb25lLiIKIG1zZ3N0ciAiS29ubnRlIHp1IGtsb25lbmRlbiBleHRlcm5lciBad2VpZyAlcyBuaWNodCBmaW5kZW4uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NTUyCisjOiBidWlsdGluL2Nsb25lLmM6NTUwCittc2dpZCAicmVtb3RlIGRpZCBub3Qgc2VuZCBhbGwgbmVjZXNzYXJ5IG9iamVjdHMiCittc2dzdHIgIkZlcm5hcmNoaXYgaGF0IG5pY2h0IGFsbGUgZXJmb3JkZXJsaWNoZW4gT2JqZWt0ZSBnZXNlbmRldC4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKIG1zZ2lkICJyZW1vdGUgSEVBRCByZWZlcnMgdG8gbm9uZXhpc3RlbnQgcmVmLCB1bmFibGUgdG8gY2hlY2tvdXQuXG4iCiBtc2dzdHIgIiIKICJFeHRlcm5lIFp3ZWlnc3BpdHplIChIRUFEKSBiZXppZWh0IHNpY2ggYXVmIGVpbmUgbmljaHQgZXhpc3RpZXJlbmRlIFJlZmVyZW56ICIKICJ1bmQga2FubiBuaWNodCBhdXNnZWNoZWNrdCB3ZXJkZW4uXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDEKK21zZ2lkICJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIgorbXNnc3RyICJBcmJlaXRzYmF1bSBrb25udGUgbmljaHQgYXVzZ2VjaGVja3Qgd2VyZGVuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzQ5CiBtc2dpZCAiVG9vIG1hbnkgYXJndW1lbnRzLiIKIG1zZ3N0ciAiWnUgdmllbGUgQXJndW1lbnRlLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY5NAorIzogYnVpbHRpbi9jbG9uZS5jOjc1MwogbXNnaWQgIllvdSBtdXN0IHNwZWNpZnkgYSByZXBvc2l0b3J5IHRvIGNsb25lLiIKLW1zZ3N0ciAiRHUgbXVzc3QgZWluIFByb2pla3RhcmNoaXYgenVtIEtsb25lbiBhbmdlYmVuLiIKK21zZ3N0ciAiU2llIG3DvHNzZW4gZWluIFByb2pla3RhcmNoaXYgenVtIEtsb25lbiBhbmdlYmVuLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwNQorIzogYnVpbHRpbi9jbG9uZS5jOjc2NAogIywgYy1mb3JtYXQKIG1zZ2lkICItLWJhcmUgYW5kIC0tb3JpZ2luICVzIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCi1tc2dzdHIgIi0tYmFyZSB1bmQgLS1vcmlnaW4gJXMgT3B0aW9uZW4gc2luZCBpbmtvbXBhdGliZWwuIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLS1iYXJlIHVuZCAtLW9yaWdpbiAlcyBzaW5kIGlua29tcGF0aWJlbC4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjcKK21zZ2lkICItLWJhcmUgYW5kIC0tc2VwYXJhdGUtZ2l0LWRpciBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tYmFyZSB1bmQgLS1zZXBhcmF0ZS1naXQtZGlyIHNpbmQgaW5rb21wYXRpYmVsLiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXBvc2l0b3J5ICclcycgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgIlByb2pla3RhcmNoaXYgJyVzJyBleGlzdGllcnQgbmljaHQuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzI0CisjOiBidWlsdGluL2Nsb25lLmM6Nzg1CiBtc2dpZCAiLS1kZXB0aCBpcyBpZ25vcmVkIGluIGxvY2FsIGNsb25lczsgdXNlIGZpbGU6Ly8gaW5zdGVhZC4iCi1tc2dzdHIgIi0tZGVwdGggd2lyZCBpbiBsb2thbGVuIEtsb25lbiBpZ25vcmllcnQ7IGJlbnV0emUgc3RhdHRkZXNzZW4gZmlsZTovLy4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0tZGVwdGggd2lyZCBpbiBsb2thbGVuIEtsb25lbiBpZ25vcmllcnQ7IGJlbnV0emVuIFNpZSAiCisic3RhdHRkZXNzZW4gZmlsZTovLyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjczNAorIzogYnVpbHRpbi9jbG9uZS5jOjc5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJkZXN0aW5hdGlvbiBwYXRoICclcycgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhbiBlbXB0eSBkaXJlY3RvcnkuIgogbXNnc3RyICJaaWVscGZhZCAnJXMnIGV4aXN0aWVydCBiZXJlaXRzIHVuZCBpc3Qga2VpbiBsZWVyZXMgVmVyemVpY2huaXMuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzQ0CisjOiBidWlsdGluL2Nsb25lLmM6ODA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIndvcmtpbmcgdHJlZSAnJXMnIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiQXJiZWl0c2JhdW0gJyVzJyBleGlzdGllcnQgYmVyZWl0cy4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NTcgYnVpbHRpbi9jbG9uZS5jOjc3MQorIzogYnVpbHRpbi9jbG9uZS5jOjgxOCBidWlsdGluL2Nsb25lLmM6ODMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyBvZiAnJXMnIgogbXNnc3RyICJLb25udGUgZsO8aHJlbmRlIFZlcnplaWNobmlzc2Ugdm9uICclcycgbmljaHQgZXJzdGVsbGVuLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2MAorIzogYnVpbHRpbi9jbG9uZS5jOjgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iCiBtc2dzdHIgIktvbm50ZSBBcmJlaXRzdmVyemVpY2huaXMgJyVzJyBuaWNodCBlcnN0ZWxsZW4uIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Nzc5CisjOiBidWlsdGluL2Nsb25lLmM6ODQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byBiYXJlIHJlcG9zaXRvcnkgJyVzJy4uLlxuIgogbXNnc3RyICJLbG9uZSBpbiBibG/Dn2VzIFByb2pla3RhcmNoaXYgJyVzJy4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgxCisjOiBidWlsdGluL2Nsb25lLmM6ODQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byAnJXMnLi4uXG4iCiBtc2dzdHIgIktsb25lIG5hY2ggJyVzJy4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODIzCisjOiBidWlsdGluL2Nsb25lLmM6ODc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICJXZWnDnyBuaWNodCB3aWUgJXMgenUga2xvbmVuIGlzdC4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NzIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3RlIGJyYW5jaCAlcyBub3QgZm91bmQgaW4gdXBzdHJlYW0gJXMiCiBtc2dzdHIgImV4dGVybmVyIFp3ZWlnICVzIG5pY2h0IGltIGFuZGVyZW4gUHJvamVrdGFyY2hpdiAlcyBnZWZ1bmRlbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3OQorIzogYnVpbHRpbi9jbG9uZS5jOjkzMwogbXNnaWQgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgcmVwb3NpdG9yeS4iCi1tc2dzdHIgIkR1IHNjaGVpbnN0IGVpbiBsZWVyZXMgUHJvamVrdGFyY2hpdiBnZWtsb250IHp1IGhhYmVuLiIKK21zZ3N0ciAiU2llIHNjaGVpbmVuIGVpbiBsZWVyZXMgUHJvamVrdGFyY2hpdiBnZWtsb250IHp1IGhhYmVuLiIKIAogIzogYnVpbHRpbi9jb2x1bW4uYzo5CiBtc2dpZCAiZ2l0IGNvbHVtbiBbb3B0aW9uc10iCkBAIC0zMjkzLDE1ICszNzQyLDE1IEBACiAKICM6IGJ1aWx0aW4vY29sdW1uLmM6NTEKIG1zZ2lkICItLWNvbW1hbmQgbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQiCi1tc2dzdHIgIk9wdGlvbiAtLWNvbW1hbmQgbXVzcyB6dWVyc3QgYW5nZWdlYmVuIHdlcmRlbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWNvbW1hbmQgbXVzcyBhbiBlcnN0ZXIgU3RlbGxlIHN0ZWhlbi4iCiAKICM6IGJ1aWx0aW4vY29tbWl0LmM6MzQKLW1zZ2lkICJnaXQgY29tbWl0IFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iCi1tc2dzdHIgImdpdCBjb21taXQgW09wdGlvbmVuXSBbLS1dIDxEYXRlaW11c3Rlcj4uLi4iCittc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgY29tbWl0IFtPcHRpb25lbl0gWy0tXSA8UGZhZHNwZXppZmlrYXRpb24+Li4uIgogCiAjOiBidWlsdGluL2NvbW1pdC5jOjM5Ci1tc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIgotbXNnc3RyICJnaXQgc3RhdHVzIFtPcHRpb25lbl0gWy0tXSA8RGF0ZWltdXN0ZXI+Li4uIgorbXNnaWQgImdpdCBzdGF0dXMgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiZ2l0IHN0YXR1cyBbT3B0aW9uZW5dIFstLV0gPFBmYWRzcGV6aWZpa2F0aW9uPi4uLiIKIAogIzogYnVpbHRpbi9jb21taXQuYzo0NAogbXNnaWQgIiIKQEAgLTMzMTYsMTUgKzM3NjUsMTUgQEAKICJcbiIKICIgICAgZ2l0IGNvbW1pdCAtLWFtZW5kIC0tcmVzZXQtYXV0aG9yXG4iCiBtc2dzdHIgIiIKLSJEZWluIE5hbWUgdW5kIEUtTWFpbCBBZHJlc3NlIHd1cmRlbiBhdXRvbWF0aXNjaCBhdWYgQmFzaXNcbiIKLSJkZWluZXMgQmVudXR6ZXItIHVuZCBSZWNobmVybmFtZW5zIGtvbmZpZ3VyaWVydC4gQml0dGUgcHLDvGZlLCBkYXNzIGRpZXNlXG4iCi0ienV0cmVmZmVuZCBzaW5kLiBEdSBrYW5uc3QgZGllc2UgTWVsZHVuZyB1bnRlcmRyw7xja2VuLCBpbmRlbSBkdSBkaWVzZVxuIgotImV4cGxpeml0IHNldHp0OlxuIgorIklociBOYW1lIHVuZCBFLU1haWwgQWRyZXNzZSB3dXJkZW4gYXV0b21hdGlzY2ggYXVmIEJhc2lzXG4iCisiSWhyZXMgQmVudXR6ZXItIHVuZCBSZWNobmVybmFtZW5zIGtvbmZpZ3VyaWVydC4gQml0dGUgcHLDvGZlbiBTaWUsIGRhc3NcbiIKKyJkaWVzZSB6dXRyZWZmZW5kIHNpbmQuIFNpZSBrw7ZubmVuIGRpZXNlIE1lbGR1bmcgdW50ZXJkcsO8Y2tlbiwgaW5kZW0gU2llXG4iCisiZGllc2UgZXhwbGl6aXQgc2V0emVuOlxuIgogIlxuIgotIiAgICBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSBcIkRlaW4gTmFtZVwiXG4iCi0iICAgIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBkZWluZUBlbWFpbGFkcmVzc2UuZGVcbiIKKyIgICAgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCJJaHIgTmFtZVwiXG4iCisiICAgIGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBpaHJlQGVtYWlsYWRyZXNzZS5kZVxuIgogIlxuIgotIk5hY2hkZW0gZHUgZGFzIGdldGFuIGhhc3QsIGthbm5zdCBkdSBkZWluZSBJZGVudGl0w6R0IGbDvHIgZGllc2UgVmVyc2lvbiAiCisiTmFjaGRlbSBTaWUgZGFzIGdldGFuIGhhc3QsIGvDtm5uZW4gU2llIElocmUgSWRlbnRpdMOkdCBmw7xyIGRpZXNlIFZlcnNpb24gIgogIsOkbmRlcm4gbWl0OlxuIgogIlxuIgogIiAgICBnaXQgY29tbWl0IC0tYW1lbmQgLS1yZXNldC1hdXRob3JcbiIKQEAgLTMzMzUsOCArMzc4NCw4IEBACiAiaXQgZW1wdHkuIFlvdSBjYW4gcmVwZWF0IHlvdXIgY29tbWFuZCB3aXRoIC0tYWxsb3ctZW1wdHksIG9yIHlvdSBjYW5cbiIKICJyZW1vdmUgdGhlIGNvbW1pdCBlbnRpcmVseSB3aXRoIFwiZ2l0IHJlc2V0IEhFQUReXCIuXG4iCiBtc2dzdHIgIiIKLSJEdSBmcmFndGVzdCBkaWUgasO8bmdzdGUgVmVyc2lvbiBuYWNoenViZXNzZXJuLCBhYmVyIGRhcyB3w7xyZGUgZGllc2UgbGVlclxuIgotIm1hY2hlbi4gRHUga2FubnN0IERlaW4gS29tbWFuZG8gbWl0IC0tYWxsb3ctZW1wdHkgd2llZGVyaG9sZW4sIG9kZXIgZGllXG4iCisiU2llIGZyYWd0ZW4gZGllIGrDvG5nc3RlIFZlcnNpb24gbmFjaHp1YmVzc2VybiwgYWJlciBkYXMgd8O8cmRlIGRpZXNlIGxlZXJcbiIKKyJtYWNoZW4uIFNpZSBrw7ZubmVuIElociBLb21tYW5kbyBtaXQgLS1hbGxvdy1lbXB0eSB3aWVkZXJob2xlbiwgb2RlciBkaWVcbiIKICJWZXJzaW9uIG1pdCBcImdpdCByZXNldCBIRUFEXlwiIHZvbGxzdMOkbmRpZyBlbnRmZXJuZW4uXG4iCiAKICM6IGJ1aWx0aW4vY29tbWl0LmM6NjEKQEAgLTMzNTAsMTAzICszNzk5LDEwMyBAQAogbXNnc3RyICIiCiAiRGVyIGxldHp0ZSBcImNoZXJyeS1waWNrXCIgaXN0IGpldHp0IGxlZXIsIG3DtmdsaWNoZXJ3ZWlzZSBkdXJjaCBlaW5lICIKICJLb25mbGlrdGF1ZmzDtnN1bmcuXG4iCi0iV2VubiBkdSBkaWVzIHRyb3R6ZGVtIGVpbnRyYWdlbiB3aWxsc3QsIGJlbnV0emU6XG4iCisiV2VubiBTaWUgZGllcyB0cm90emRlbSBlaW50cmFnZW4gd29sbGVuLCBiZW51dHplbiBTaWU6XG4iCiAiXG4iCiAiICAgIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eVxuIgogIlxuIgotIkFuZGVybmZhbGxzIGJlbnV0emUgYml0dGUgJ2dpdCByZXNldCdcbiIKKyJBbmRlcm5mYWxscyBiZW51dHplbiBTaWUgYml0dGUgJ2dpdCByZXNldCdcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoyNTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjYwCiBtc2dpZCAiZmFpbGVkIHRvIHVucGFjayBIRUFEIHRyZWUgb2JqZWN0IgogbXNnc3RyICJGZWhsZXIgYmVpbSBFbnRwYWNrZW4gZGVzIEJhdW0tT2JqZWt0ZXMgZGVyIFp3ZWlnc3BpdHplIChIRUFEKS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzAwCisjOiBidWlsdGluL2NvbW1pdC5jOjMwMgogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICJLb25udGUgdGVtcG9yw6RyZSBCZXJlaXRzdGVsbHVuZyBuaWNodCBlcnN0ZWxsZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjMwNgorIzogYnVpbHRpbi9jb21taXQuYzozMDgKIG1zZ2lkICJpbnRlcmFjdGl2ZSBhZGQgZmFpbGVkIgogbXNnc3RyICJpbnRlcmFrdGl2ZXMgSGluenVmw7xnZW4gZmVobGdlc2NobGFnZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzM5IGJ1aWx0aW4vY29tbWl0LmM6MzYwIGJ1aWx0aW4vY29tbWl0LmM6NDEwCisjOiBidWlsdGluL2NvbW1pdC5jOjM0MSBidWlsdGluL2NvbW1pdC5jOjM2MiBidWlsdGluL2NvbW1pdC5jOjQxMgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXdfaW5kZXggZmlsZSIKIG1zZ3N0ciAiS29ubnRlIG5ld19pbmRleCBEYXRlaSBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzkxCisjOiBidWlsdGluL2NvbW1pdC5jOjM5MwogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogIkthbm4ga2VpbmUgcGFydGllbGxlIEVpbnRyYWd1bmcgZHVyY2hmw7xocmVuLCB3w6RocmVuZCBlaW5lIFp1c2FtbWVuZsO8aHJ1bmcgaW0gIgogIkdhbmdlIGlzdC4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzkzCisjOiBidWlsdGluL2NvbW1pdC5jOjM5NQogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIGNoZXJyeS1waWNrLiIKIG1zZ3N0ciAiIgogIkthbm4ga2VpbmUgcGFydGllbGxlIEVpbnRyYWd1bmcgZHVyY2hmw7xocmVuLCB3w6RocmVuZCBcImNoZXJyeS1waWNrXCIgaW0gIgogIkdhbmdlIGlzdC4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDAzCisjOiBidWlsdGluL2NvbW1pdC5jOjQwNQogbXNnaWQgImNhbm5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiS2FubiBCZXJlaXRzdGVsbHVuZyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDI1CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIHRlbXBvcmFyeSBpbmRleCBmaWxlIgogbXNnc3RyICJLb25udGUgdGVtcG9yw6RyZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCBzY2hyZWliZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjUxMSBidWlsdGluL2NvbW1pdC5jOjUxNworIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICJVbmfDvGx0aWdlIFZlcnNpb246ICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjU0MAorIzogYnVpbHRpbi9jb21taXQuYzo1NDIKIG1zZ2lkICJtYWxmb3JtZWQgLS1hdXRob3IgcGFyYW1ldGVyIgogbXNnc3RyICJGZWhsZXJoYWZ0ZXIgLS1hdXRob3IgUGFyYW1ldGVyIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjU2MAorIzogYnVpbHRpbi9jb21taXQuYzo1NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlkZW50IHN0cmluZzogJyVzJyIKIG1zZ3N0ciAiRmVobGVyaGFmdGUgSWRlbnRpZmlrYXRpb25zLVN0cmluZzogJyVzJyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1OTggYnVpbHRpbi9jb21taXQuYzo2MzEgYnVpbHRpbi9jb21taXQuYzo5NTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjAwIGJ1aWx0aW4vY29tbWl0LmM6NjMzIGJ1aWx0aW4vY29tbWl0LmM6OTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBsb29rdXAgY29tbWl0ICVzIgogbXNnc3RyICJLb25udGUgVmVyc2lvbiAlcyBuaWNodCBuYWNoc2NobGFnZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjEwIGJ1aWx0aW4vc2hvcnRsb2cuYzoyOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiKHJlYWRpbmcgbG9nIG1lc3NhZ2UgZnJvbSBzdGFuZGFyZCBpbnB1dClcbiIKIG1zZ3N0ciAiKGxlc2UgTG9nLU5hY2hyaWNodCB2b24gU3RhbmRhcmQtRWluZ2FiZSlcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZyb20gc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIktvbm50ZSBMb2cgbmljaHQgdm9uIFN0YW5kYXJkLUVpbmdhYmUgbGVzZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxNgorIzogYnVpbHRpbi9jb21taXQuYzo2MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZpbGUgJyVzJyIKIG1zZ3N0ciAiS29ubnRlIExvZy1EYXRlaSAnJXMnIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYyMgorIzogYnVpbHRpbi9jb21taXQuYzo2MjQKIG1zZ2lkICJjb21taXQgaGFzIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIlZlcnNpb24gaGF0IGVpbmUgbGVlcmUgQmVzY2hyZWlidW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzOAorIzogYnVpbHRpbi9jb21taXQuYzo2NDAKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NU0ciCiBtc2dzdHIgIktvbm50ZSBNRVJHRV9NU0cgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQyCisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgIktvbm50ZSBTUVVBU0hfTVNHIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY0NgorIzogYnVpbHRpbi9jb21taXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzA3CisjOiBidWlsdGluL2NvbW1pdC5jOjcwOQogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBjb21taXQgdGVtcGxhdGUiCiBtc2dzdHIgIktvbm50ZSBWZXJzaW9uc3ZvcmxhZ2UgbmljaHQgc2NocmVpYmVuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcxOAorIzogYnVpbHRpbi9jb21taXQuYzo3MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMzQ1NiwxMiArMzkwNSwxMiBAQAogImFuZCB0cnkgYWdhaW4uXG4iCiBtc2dzdHIgIiIKICJcbiIKLSJFcyBzaWVodCBzbyBhdXMsIGFscyB0csOkZ3N0IGR1IGVpbmUgWnVzYW1tZW5mw7xocnVuZyBlaW4uXG4iCi0iRmFsbHMgZGFzIG5pY2h0IGtvcnJla3QgaXN0LCBsw7ZzY2hlIGJpdHRlIGRpZSBEYXRlaVxuIgorIkVzIHNpZWh0IHNvIGF1cywgYWxzIHRyYWdlbiBTaWUgZWluZSBadXNhbW1lbmbDvGhydW5nIGVpbi5cbiIKKyJGYWxscyBkYXMgbmljaHQga29ycmVrdCBpc3QsIGzDtnNjaGVuIFNpZSBiaXR0ZSBkaWUgRGF0ZWlcbiIKICJcdCVzXG4iCi0idW5kIHZlcnN1Y2hlIGVzIGVybmV1dC5cbiIKKyJ1bmQgdmVyc3VjaGVuIFNpZSBlcyBlcm5ldXQuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzIzCisjOiBidWlsdGluL2NvbW1pdC5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0zNDcxLDE3MSArMzkyMCwxODAgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iRXMgc2llaHQgc28gYXVzLCBhbHMgdHLDpGdzdCBkdSBlaW4gXCJjaGVycnktcGlja1wiIGVpbi5cbiIKLSJGYWxscyBkYXMgbmljaHQga29ycmVrdCBpc3QsIGzDtnNjaGUgYml0dGUgZGllIERhdGVpXG4iCisiRXMgc2llaHQgc28gYXVzLCBhbHMgdHJhZ2VuIFNpZSBlaW4gXCJjaGVycnktcGlja1wiIGVpbi5cbiIKKyJGYWxscyBkYXMgbmljaHQga29ycmVrdCBpc3QsIGzDtnNjaGVuIFNpZSBiaXR0ZSBkaWUgRGF0ZWlcbiIKICJcdCVzXG4iCi0idW5kIHZlcnN1Y2hlIGVzIGVybmV1dC5cbiIKKyJ1bmQgdmVyc3VjaGVuIFNpZSBlcyBlcm5ldXQuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzM1CisjOiBidWlsdGluL2NvbW1pdC5jOjczNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCisid2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSJCaXR0ZSBnZWJlIGVpbmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgZsO8ciBkZWluZSDDhG5kZXJ1bmdlbiBlaW4uIFplaWxlbixcbiIKLSJkaWUgbWl0ICcjJyBiZWdpbm5lbiwgd2VyZGVuIGlnbm9yaWVydCwgdW5kIGVpbmUgbGVlcmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmdcbiIKKyJCaXR0ZSBnZWJlbiBTaWUgZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBmw7xyIElocmUgw4RuZGVydW5nZW4gZWluLiBaZWlsZW4sXG4iCisiZGllIG1pdCAnJWMnIGJlZ2lubmVuLCB3ZXJkZW4gaWdub3JpZXJ0LCB1bmQgZWluZSBsZWVyZSAiCisiVmVyc2lvbnNiZXNjaHJlaWJ1bmdcbiIKICJicmljaHQgZGllIEVpbnRyYWd1bmcgYWIuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzQwCisjOiBidWlsdGluL2NvbW1pdC5jOjc0MgorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKKyJ3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgogIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKLSJCaXR0ZSBnZWJlIGVpbmUgVmVyc2lvbnNiZXNjaHJlaWJ1bmcgZsO8ciBkZWluZSDDhG5kZXJ1bmdlbiBlaW4uIFplaWxlbiwgZGllXG4iCi0ibWl0ICcjJyBiZWdpbm5lbiwgd2VyZGVuIGJlaWJlaGFsdGVuOyB3ZW5uIGR1IG3DtmNodGVzdCwga2FubnN0IGR1IGRpZXNlICIKKyJCaXR0ZSBnZWJlbiBTaWUgZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBmw7xyIElocmUgw4RuZGVydW5nZW4gZWluLiBaZWlsZW4sICIKKyJkaWVcbiIKKyJtaXQgJyVjJyBiZWdpbm5lbiwgd2VyZGVuIGJlaWJlaGFsdGVuOyB3ZW5uIFNpZSBtw7ZjaHRlbiwga8O2bm5lbiBTaWUgZGllc2UgIgogImVudGZlcm5lbi5cbiIKICJFaW5lIGxlZXJlIFZlcnNpb25zYmVzY2hyZWlidW5nIGJyaWNodCBkaWUgRWludHJhZ3VuZyBhYi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiJXNBdXRvcjogICAgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzYwCisjOiBidWlsdGluL2NvbW1pdC5jOjc2MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0NvbW1pdHRlcjogJXMiCiBtc2dzdHIgIiVzRWludHJhZ2VuZGVyOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3ODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCiBtc2dpZCAiQ2Fubm90IHJlYWQgaW5kZXgiCiBtc2dzdHIgIkthbm4gQmVyZWl0c3RlbGx1bmcgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODE3CisjOiBidWlsdGluL2NvbW1pdC5jOjgxOQogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICJGZWhsZXIgYmVpbSBFcnpldWdlbiBkZXIgWndlaWdlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjgzMiBidWlsdGluL3RhZy5jOjM2MQorIzogYnVpbHRpbi9jb21taXQuYzo4MzQgYnVpbHRpbi90YWcuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbWVzc2FnZSB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uLlxuIgogbXNnc3RyICJCaXR0ZSBsaWVmZXJlIGVpbmUgQmVzY2hyZWlidW5nIGVudHdlZGVyIG1pdCBkZXIgT3B0aW9uIC1tIG9kZXIgLUYuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTI5CisjOiBidWlsdGluL2NvbW1pdC5jOjkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgogbXNnc3RyICJLZWluIGV4aXN0aWVyZW5kZXIgQXV0b3IgbWl0ICclcycgZ2VmdW5kZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk0NCBidWlsdGluL2NvbW1pdC5jOjExNDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHVudHJhY2tlZCBmaWxlcyBtb2RlICclcyciCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyIE1vZHVzICclcycgZsO8ciB1bmJlb2JhY2h0ZXRlIERhdGVpZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTg0CisjOiBidWlsdGluL2NvbW1pdC5jOjk3NgogbXNnaWQgIlVzaW5nIGJvdGggLS1yZXNldC1hdXRob3IgYW5kIC0tYXV0aG9yIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCi1tc2dzdHIgIlZlcndlbmR1bmcgdm9uIC0tcmVzZXQtYXV0aG9yIHVuZCAtLWF1dGhvciBtYWNodCBrZWluZW4gU2lubi4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1yZXNldC1hdXRob3IgdW5kIC0tYXV0aG9yIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5OTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTg3CiBtc2dpZCAiWW91IGhhdmUgbm90aGluZyB0byBhbWVuZC4iCi1tc2dzdHIgIkR1IGhhc3QgbmljaHRzIHp1bSBuYWNoYmVzc2Vybi4iCittc2dzdHIgIlNpZSBoYWJlbiBuaWNodHMgenVtIG5hY2hiZXNzZXJuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5OTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTkwCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAiRWluZSBadXNhbW1lbmbDvGhydW5nIGlzdCBpbSBHYW5nZSAtLSBrYW5uIG5pY2h0IG5hY2hiZXNzZXJuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDAwCisjOiBidWlsdGluL2NvbW1pdC5jOjk5MgogbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoZXJyeS1waWNrIC0tIGNhbm5vdCBhbWVuZC4iCiBtc2dzdHIgIlwiY2hlcnJ5LXBpY2tcIiBpc3QgaW0gR2FuZ2UgLS0ga2FubiBuaWNodCBuYWNoYmVzc2Vybi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwMworIzogYnVpbHRpbi9jb21taXQuYzo5OTUKIG1zZ2lkICJPcHRpb25zIC0tc3F1YXNoIGFuZCAtLWZpeHVwIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIiCi0iRGllIE9wdGlvbmVuIC0tc3F1YXNoIHVuZCAtLWZpeHVwIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIGJlbnV0enQgd2VyZGVuLiIKKyJEaWUgT3B0aW9uZW4gLS1zcXVhc2ggdW5kIC0tZml4dXAga8O2bm5lbiBuaWNodCBnZW1laW5zYW0gdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMworIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CiBtc2dpZCAiT25seSBvbmUgb2YgLWMvLUMvLUYvLS1maXh1cCBjYW4gYmUgdXNlZC4iCi1tc2dzdHIgIk51ciBlaW5lcyB2b24gLWMvLUMvLUYvLS1maXh1cCBrYW5uIGJlbnV0enQgd2VyZGVuLiIKK21zZ3N0ciAiRXMga2FubiBudXIgZWluZSBPcHRpb24gdm9uIC1jLy1DLy1GLy0tZml4dXAgdmVyd2VuZGV0IHdlcmRlbi4iCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwNworbXNnaWQgIk9wdGlvbiAtbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtYy8tQy8tRi8tLWZpeHVwLiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtbSBrYW5uIG5pY2h0IG1pdCAtYy8tQy8tRi8tLWZpeHVwIGtvbWJpbmllcnQgd2VyZGVuLiIKIAogIzogYnVpbHRpbi9jb21taXQuYzoxMDE1Ci1tc2dpZCAiT3B0aW9uIC1tIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC1jLy1DLy1GLy0tZml4dXAuIgotbXNnc3RyICJPcHRpb24gLW0ga2FubiBuaWNodCBtaXQgLWMvLUMvLUYvLS1maXh1cCBrb21iaW5pZXJ0IHdlcmRlbiIKLQotIzogYnVpbHRpbi9jb21taXQuYzoxMDIzCiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKLW1zZ3N0ciAiLS1yZXNldC0tYXV0aG9yIGthbm4gbnVyIG1pdCAtQywgLWMgb2RlciAtLWFtZW5kIGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICIiCisiRGllIE9wdGlvbiAtLXJlc2V0LS1hdXRob3Iga2FubiBudXIgbWl0IC1DLCAtYyBvZGVyIC0tYW1lbmQgdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0MAorIzogYnVpbHRpbi9jb21taXQuYzoxMDMyCiBtc2dpZCAiT25seSBvbmUgb2YgLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggY2FuIGJlIHVzZWQuIgogbXNnc3RyICIiCi0iTnVyIGVpbmVzIHZvbiAtLWluY2x1ZGUvLS1vbmx5Ly0tYWxsLy0taW50ZXJhY3RpdmUvLS1wYXRjaCBrYW5uIGJlbnV0enQgIgotIndlcmRlbi4iCisiRXMga2FubiBudXIgZWluZSBPcHRpb24gdm9uIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoICIKKyJ2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDQyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzQKIG1zZ2lkICJObyBwYXRocyB3aXRoIC0taW5jbHVkZS8tLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZS4iCi1tc2dzdHIgIi0taW5jbHVkZS8tLW9ubHkgbWFjaGVuIG9obmUgUGZhZGUga2VpbmVuIFNpbm4uIgorbXNnc3RyICIiCisiRGllIE9wdGlvbmVuIC0taW5jbHVkZSB1bmQgLS1vbmx5IGvDtm5uZW4gbnVyIG1pdCBkZXIgQW5nYWJlIHZvbiBQZmFkZW4gIgorInZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIiIKICJLbHVnLi4uIGRpZSBsZXR6dGUgVmVyc2lvbiBtaXQgZWluZXIgdW5zYXViZXJlbiBCZXJlaXRzdGVsbHVuZyBuYWNoYmVzc2Vybi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0NgorIzogYnVpbHRpbi9jb21taXQuYzoxMDM4CiBtc2dpZCAiRXhwbGljaXQgcGF0aHMgc3BlY2lmaWVkIHdpdGhvdXQgLWkgbm9yIC1vOyBhc3N1bWluZyAtLW9ubHkgcGF0aHMuLi4iCiBtc2dzdHIgIiIKICJFeHBsaXppdGUgUGZhZGUgb2huZSAtaSBvZGVyIC1vIGFuZ2VnZWJlbjsgdW50ZXIgZGVyIEFubmFobWUgdm9uIC0tb25seSAiCiAiUGZhZGVuLi4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTYgYnVpbHRpbi90YWcuYzo1NzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0OCBidWlsdGluL3RhZy5jOjU3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGNsZWFudXAgbW9kZSAlcyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgXCJjbGVhbnVwXCIgTW9kdXMgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA2MQorIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCiBtc2dpZCAiUGF0aHMgd2l0aCAtYSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKLW1zZ3N0ciAiUGZhZGUgbWl0IC1hIG1hY2hlbiBrZWluZW4gU2lubi4iCittc2dzdHIgIkRpZSBPcHRpb24gLWEga2FubiBudXIgbWl0IGRlciBBbmdhYmUgdm9uIFBmYWRlbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDY3IGJ1aWx0aW4vY29tbWl0LmM6MTIwMgorIzogYnVpbHRpbi9jb21taXQuYzoxMDU5IGJ1aWx0aW4vY29tbWl0LmM6MTE5NAogbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKLW1zZ3N0ciAiLS1sb25nIHVuZCAteiBzaW5kIGlua29tcGF0aWJlbCIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tbG9uZyB1bmQgLXogc2luZCBpbmtvbXBhdGliZWwuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjIgYnVpbHRpbi9jb21taXQuYzoxMzk4CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTQgYnVpbHRpbi9jb21taXQuYzoxMzkwCiBtc2dpZCAic2hvdyBzdGF0dXMgY29uY2lzZWx5IgogbXNnc3RyICJ6ZWlndCBTdGF0dXMgaW0gS3VyemZvcm1hdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTQwMAorIzogYnVpbHRpbi9jb21taXQuYzoxMTU2IGJ1aWx0aW4vY29tbWl0LmM6MTM5MgogbXNnaWQgInNob3cgYnJhbmNoIGluZm9ybWF0aW9uIgogbXNnc3RyICJ6ZWlndCBad2VpZ2luZm9ybWF0aW9uZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NiBidWlsdGluL2NvbW1pdC5jOjE0MDIgYnVpbHRpbi9wdXNoLmM6Mzg5CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTggYnVpbHRpbi9jb21taXQuYzoxMzk0IGJ1aWx0aW4vcHVzaC5jOjQyNgogbXNnaWQgIm1hY2hpbmUtcmVhZGFibGUgb3V0cHV0IgogbXNnc3RyICJtYXNjaGluZW5sZXNiYXJlIEF1c2dhYmUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2OSBidWlsdGluL2NvbW1pdC5jOjE0MDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKIG1zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCiBtc2dzdHIgInplaWd0IFN0YXR1cyBpbSBMYW5nZm9ybWF0IChTdGFuZGFyZCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MiBidWlsdGluL2NvbW1pdC5jOjE0MDcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NCBidWlsdGluL2NvbW1pdC5jOjEzOTkKIG1zZ2lkICJ0ZXJtaW5hdGUgZW50cmllcyB3aXRoIE5VTCIKIG1zZ3N0ciAic2NobGllw590IEVpbnRyw6RnZSBtaXQgTlVMLVplaWNoZW4gYWIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NCBidWlsdGluL2NvbW1pdC5jOjE0MTAgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzNgotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzOSBidWlsdGluL3RhZy5jOjQ2MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU5CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYyIGJ1aWx0aW4vdGFnLmM6NDU5CiBtc2dpZCAibW9kZSIKIG1zZ3N0ciAiTW9kdXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NSBidWlsdGluL2NvbW1pdC5jOjE0MTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NyBidWlsdGluL2NvbW1pdC5jOjE0MDIKIG1zZ2lkICJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiCiBtc2dzdHIgIiIKICJ6ZWlndCBuaWNodCBiZW9iYWNodGV0ZSBEYXRlaWVuLCBvcHRpb25hbGUgTW9kaTogYWxsLCBub3JtYWwsIG5vLiAoU3RhbmRhcmQ6ICIKICJhbGwpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MAogbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiemVpZ3QgaWdub3JpZXJ0ZSBEYXRlaWVuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzkgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTcxIHBhcnNlLW9wdGlvbnMuaDoxNTEKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICJ3YW5uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MgogbXNnaWQgIiIKICJpZ25vcmUgY2hhbmdlcyB0byBzdWJtb2R1bGVzLCBvcHRpb25hbCB3aGVuOiBhbGwsIGRpcnR5LCB1bnRyYWNrZWQuICIKICIoRGVmYXVsdDogYWxsKSIKQEAgLTM2NDMsMjI3ICs0MTAxLDIyNyBAQAogImlnbm9yaWVydCDDhG5kZXJ1bmdlbiBpbiBVbnRlcnByb2pla3Rlbiwgb3B0aW9uYWwgd2VubjogYWxsLCBkaXJ0eSwgIgogInVudHJhY2tlZC4gKFN0YW5kYXJkOiBhbGwpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAogbXNnaWQgImxpc3QgdW50cmFja2VkIGZpbGVzIGluIGNvbHVtbnMiCiBtc2dzdHIgImxpc3RldCB1bmJlb2JhY2h0ZXRlIERhdGVpZW4gaW4gU3BhbHRlbiBhdWYiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1NgorIzogYnVpbHRpbi9jb21taXQuYzoxMjQ4CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiS29ubnRlIG5ldSBlcnN0ZWxsdGUgVmVyc2lvbiBuaWNodCBuYWNoc2NobGFnZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1MAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiS29ubnRlIG5ldWxpY2ggZXJzdGVsbHRlIFZlcnNpb24gbmljaHQgYW5hbHlzaWVyZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyOTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MQogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgImxvc2dlbMO2c3RlIFp3ZWlnc3BpdHplIChIRUFEKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzAxCisjOiBidWlsdGluL2NvbW1pdC5jOjEyOTMKIG1zZ2lkICIgKHJvb3QtY29tbWl0KSIKIG1zZ3N0ciAiIChCYXNpcy1WZXJzaW9uKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY4CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjAKIG1zZ2lkICJzdXBwcmVzcyBzdW1tYXJ5IGFmdGVyIHN1Y2Nlc3NmdWwgY29tbWl0IgogbXNnc3RyICJ1bnRlcmRyw7xja3QgWnVzYW1tZW5mYXNzdW5nIG5hY2ggZXJmb2xncmVpY2hlciBFaW50cmFndW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MQogbXNnaWQgInNob3cgZGlmZiBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIKIG1zZ3N0ciAiemVpZ3QgVW50ZXJzY2hpZWRlIGluIFZlcnNpb25zYmVzY2hyZWlidW5nc3ZvcmxhZ2UgYW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MQorIzogYnVpbHRpbi9jb21taXQuYzoxMzYzCiBtc2dpZCAiQ29tbWl0IG1lc3NhZ2Ugb3B0aW9ucyIKIG1zZ3N0ciAiT3B0aW9uZW4gZsO8ciBWZXJzaW9uc2Jlc2NocmVpYnVuZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzcyIGJ1aWx0aW4vdGFnLmM6NDU5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjQgYnVpbHRpbi90YWcuYzo0NTcKIG1zZ2lkICJyZWFkIG1lc3NhZ2UgZnJvbSBmaWxlIgogbXNnc3RyICJsaWVzdCBCZXNjaHJlaWJ1bmcgdm9uIERhdGVpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQogbXNnaWQgImF1dGhvciIKIG1zZ3N0ciAiQXV0b3IiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MworIzogYnVpbHRpbi9jb21taXQuYzoxMzY1CiBtc2dpZCAib3ZlcnJpZGUgYXV0aG9yIGZvciBjb21taXQiCiBtc2dzdHIgIsO8YmVyc2NocmVpYnQgQXV0b3Igdm9uIFZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NCBidWlsdGluL2djLmM6MTc4CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYgYnVpbHRpbi9nYy5jOjE3OAogbXNnaWQgImRhdGUiCiBtc2dzdHIgIkRhdHVtIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NgogbXNnaWQgIm92ZXJyaWRlIGRhdGUgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiw7xiZXJzY2hyZWlidCBEYXR1bSB2b24gVmVyc2lvbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1IGJ1aWx0aW4vbWVyZ2UuYzoyMDYgYnVpbHRpbi9ub3Rlcy5jOjUzNwotIzogYnVpbHRpbi9ub3Rlcy5jOjY5NCBidWlsdGluL3RhZy5jOjQ1NworIzogYnVpbHRpbi9jb21taXQuYzoxMzY3IGJ1aWx0aW4vbWVyZ2UuYzoyMDggYnVpbHRpbi9ub3Rlcy5jOjUzMworIzogYnVpbHRpbi9ub3Rlcy5jOjY5MCBidWlsdGluL3RhZy5jOjQ1NQogbXNnaWQgIm1lc3NhZ2UiCiBtc2dzdHIgIkJlc2NocmVpYnVuZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcKIG1zZ2lkICJjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAiVmVyc2lvbnNiZXNjaHJlaWJ1bmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgorIzogYnVpbHRpbi9jb21taXQuYzoxMzY4CiBtc2dpZCAicmV1c2UgYW5kIGVkaXQgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgInZlcndlbmRldCB3aWVkZXIgdW5kIGVkaXRpZXJ0IEJlc2NocmVpYnVuZyB2b24gZGVyIGFuZ2VnZWJlbmVuIFZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NworIzogYnVpbHRpbi9jb21taXQuYzoxMzY5CiBtc2dpZCAicmV1c2UgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgInZlcndlbmRldCBCZXNjaHJlaWJ1bmcgZGVyIGFuZ2VnZWJlbmVuIFZlcnNpb24gd2llZGVyIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MAogbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIGZpeHVwIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgIiIKLSJiZW51dHp0IGVpbmUgYXV0b21hdGlzY2ggenVzYW1tZW5nZXNldHp0ZSBCZXNjaHJlaWJ1bmcgenVtIE5hY2hiZXNzZXJuIGRlciAiCisidmVyd2VuZGV0IGVpbmUgYXV0b21hdGlzY2ggenVzYW1tZW5nZXNldHp0ZSBCZXNjaHJlaWJ1bmcgenVtIE5hY2hiZXNzZXJuIGRlciAiCiAiYW5nZWdlYmVuZW4gVmVyc2lvbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBzcXVhc2ggc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgotImJlbnV0enQgZWluZSBhdXRvbWF0aXNjaCB6dXNhbW1lbmdlc2V0enRlIEJlc2NocmVpYnVuZyB6dW0gWnVzYW1tZW5mw7xocmVuICIKKyJ2ZXJ3ZW5kZXQgZWluZSBhdXRvbWF0aXNjaCB6dXNhbW1lbmdlc2V0enRlIEJlc2NocmVpYnVuZyB6dW0gWnVzYW1tZW5mw7xocmVuICIKICJkZXIgYW5nZWdlYmVuZW4gVmVyc2lvbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgwCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzIKIG1zZ2lkICJ0aGUgY29tbWl0IGlzIGF1dGhvcmVkIGJ5IG1lIG5vdyAodXNlZCB3aXRoIC1DLy1jLy0tYW1lbmQpIgotbXNnc3RyICJTZXR6ZSBtaWNoIGFscyBBdXRvciBkZXIgVmVyc2lvbiAoYmVudXR6dCBtaXQgLUMvLWMvLS1hbWVuZCkiCittc2dzdHIgIlNldHp0IFNpZSBhbHMgQXV0b3IgZGVyIFZlcnNpb24gKHZlcndlbmRldCBtaXQgLUMvLWMvLS1hbWVuZCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MSBidWlsdGluL2xvZy5jOjEwNzMgYnVpbHRpbi9yZXZlcnQuYzoxMDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MyBidWlsdGluL2xvZy5jOjExMTMgYnVpbHRpbi9yZXZlcnQuYzoxMDkKIG1zZ2lkICJhZGQgU2lnbmVkLW9mZi1ieToiCiBtc2dzdHIgImbDvGd0ICdTaWduZWQtb2ZmLWJ5OictWmVpbGUgaGluenUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MgorIzogYnVpbHRpbi9jb21taXQuYzoxMzc0CiBtc2dpZCAidXNlIHNwZWNpZmllZCB0ZW1wbGF0ZSBmaWxlIgotbXNnc3RyICJiZW51dHp0IGFuZ2VnZWJlbmUgVm9ybGFnZW5kYXRlaSIKK21zZ3N0ciAidmVyd2VuZGV0IGFuZ2VnZWJlbmUgVm9ybGFnZW5kYXRlaSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzUKIG1zZ2lkICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIKIG1zZ3N0ciAiZXJ6d2luZ3QgQmVhcmJlaXR1bmcgZGVyIFZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAorIzogYnVpbHRpbi9jb21taXQuYzoxMzc2CiBtc2dpZCAiZGVmYXVsdCIKIG1zZ3N0ciAiU3RhbmRhcmQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NCBidWlsdGluL3RhZy5jOjQ2MgorIzogYnVpbHRpbi9jb21taXQuYzoxMzc2IGJ1aWx0aW4vdGFnLmM6NDYwCiBtc2dpZCAiaG93IHRvIHN0cmlwIHNwYWNlcyBhbmQgI2NvbW1lbnRzIGZyb20gbWVzc2FnZSIKIG1zZ3N0ciAiIgogIndpZSBMZWVyemVpY2hlbiB1bmQgI0tvbW1lbnRhcmUgdm9uIGRlciBCZXNjaHJlaWJ1bmcgZ2V0cmVubnQgd2VyZGVuIHNvbGxlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzcKIG1zZ2lkICJpbmNsdWRlIHN0YXR1cyBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIKIG1zZ3N0ciAiZsO8Z3QgU3RhdHVzIGluIGRpZSBWZXJzaW9uc2Jlc2NocmVpYnVuZ3N2b3JsYWdlIGVpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg2IGJ1aWx0aW4vbWVyZ2UuYzoyMTMgYnVpbHRpbi90YWcuYzo0NjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCiBtc2dpZCAia2V5IGlkIgogbXNnc3RyICJTY2hsw7xzc2VsLUlEIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODcgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9jb21taXQuYzoxMzc5IGJ1aWx0aW4vbWVyZ2UuYzoyMTYKIG1zZ2lkICJHUEcgc2lnbiBjb21taXQiCiBtc2dzdHIgInNpZ25pZXJ0IFZlcnNpb24gbWl0IEdQRyIKIAogIy4gZW5kIGNvbW1pdCBtZXNzYWdlIG9wdGlvbnMKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5MAorIzogYnVpbHRpbi9jb21taXQuYzoxMzgyCiBtc2dpZCAiQ29tbWl0IGNvbnRlbnRzIG9wdGlvbnMiCiBtc2dzdHIgIk9wdGlvbmVuIGbDvHIgVmVyc2lvbnNpbmhhbHQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5MQorIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCiBtc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgogbXNnc3RyICJ0csOkZ3QgYWxsZSBnZcOkbmRlcnRlbiBEYXRlaWVuIGVpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzkyCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODQKIG1zZ2lkICJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiCiBtc2dzdHIgInRyw6RndCBkaWUgYW5nZWdlYmVuZW4gRGF0ZWllbiB6dXPDpHR6bGljaCB6dXIgQmVyZWl0c3RlbGx1bmcgZWluIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIgogbXNnc3RyICJpbnRlcmFrdGl2ZXMgSGluenVmw7xnZW4gdm9uIERhdGVpZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5NAorIzogYnVpbHRpbi9jb21taXQuYzoxMzg2CiBtc2dpZCAiaW50ZXJhY3RpdmVseSBhZGQgY2hhbmdlcyIKIG1zZ3N0ciAiaW50ZXJha3RpdmVzIEhpbnp1ZsO8Z2VuIHZvbiDDhG5kZXJ1bmdlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODcKIG1zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCiBtc2dzdHIgInRyw6RndCBudXIgZGllIGFuZ2VnZWJlbmVuIERhdGVpZW4gZWluIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OAogbXNnaWQgImJ5cGFzcyBwcmUtY29tbWl0IGhvb2siCiBtc2dzdHIgInVtZ2VodCBcInByZS1jb21taXQgaG9va1wiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OQogbXNnaWQgInNob3cgd2hhdCB3b3VsZCBiZSBjb21taXR0ZWQiCiBtc2dzdHIgInplaWd0IGFuLCB3YXMgZWluZ2V0cmFnZW4gd2VyZGVuIHfDvHJkZSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKIG1zZ2lkICJhbWVuZCBwcmV2aW91cyBjb21taXQiCiBtc2dzdHIgIsOkbmRlcnQgdm9yaGVyaWdlIFZlcnNpb24iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOQorIzogYnVpbHRpbi9jb21taXQuYzoxNDAxCiBtc2dpZCAiYnlwYXNzIHBvc3QtcmV3cml0ZSBob29rIgogbXNnc3RyICJ1bWdlaHQgXCJwb3N0LXJld3JpdGUgaG9va1wiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNgogbXNnaWQgIm9rIHRvIHJlY29yZCBhbiBlbXB0eSBjaGFuZ2UiCiBtc2dzdHIgImVybGF1YnQgQXVmemVpY2hudW5nIGVpbmVyIGxlZXJlbiDDhG5kZXJ1bmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNworIzogYnVpbHRpbi9jb21taXQuYzoxNDA5CiBtc2dpZCAib2sgdG8gcmVjb3JkIGEgY2hhbmdlIHdpdGggYW4gZW1wdHkgbWVzc2FnZSIKIG1zZ3N0ciAiZXJsYXVidCBBdWZ6ZWljaG51bmcgZWluZXIgw4RuZGVydW5nIG1pdCBlaW5lciBsZWVyZW4gQmVzY2hyZWlidW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0NDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBIRUFEIGNvbW1pdCIKIG1zZ3N0ciAiS29ubnRlIFZlcnNpb24gZGVyIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBhbmFseXNpZXJlbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NyBidWlsdGluL21lcmdlLmM6NTA4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NzkgYnVpbHRpbi9tZXJnZS5jOjUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCB6dW0gTGVzZW4gw7ZmZm5lbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5NAorIzogYnVpbHRpbi9jb21taXQuYzoxNDg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvcnJ1cHQgTUVSR0VfSEVBRCBmaWxlICglcykiCiBtc2dzdHIgIkJlc2Now6RkaWd0ZSBNRVJHRV9IRUFELURhdGVpICglcykiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUwMQorIzogYnVpbHRpbi9jb21taXQuYzoxNDkzCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTU9ERSIKIG1zZ3N0ciAiS29ubnRlIE1FUkdFX01PREUgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUyMAorIzogYnVpbHRpbi9jb21taXQuYzoxNTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGNvbW1pdCBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAiS29ubnRlIFZlcnNpb25zYmVzY2hyZWlidW5nIG5pY2h0IGxlc2VuOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTM0CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0OyB5b3UgZGlkIG5vdCBlZGl0IHRoZSBtZXNzYWdlLlxuIgotbXNnc3RyICJFaW50cmFndW5nIGFiZ2Vicm9jaGVuOyBkdSBoYXN0IGRpZSBCZXNjaHJlaWJ1bmcgbmljaHQgZWRpdGllcnQuXG4iCittc2dzdHIgIkVpbnRyYWd1bmcgYWJnZWJyb2NoZW47IFNpZSBoYWJlbiBkaWUgQmVzY2hyZWlidW5nIG5pY2h0IGVkaXRpZXJ0LlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBYm9ydGluZyBjb21taXQgZHVlIHRvIGVtcHR5IGNvbW1pdCBtZXNzYWdlLlxuIgogbXNnc3RyICJFaW50cmFndW5nIGF1ZmdydW5kIGxlZXJlciBWZXJzaW9uc2Jlc2NocmVpYnVuZyBhYmdlYnJvY2hlbi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTU0IGJ1aWx0aW4vbWVyZ2UuYzo4MzIgYnVpbHRpbi9tZXJnZS5jOjg1NworIzogYnVpbHRpbi9jb21taXQuYzoxNTQ2IGJ1aWx0aW4vbWVyZ2UuYzo4NDcgYnVpbHRpbi9tZXJnZS5jOjg3MgogbXNnaWQgImZhaWxlZCB0byB3cml0ZSBjb21taXQgb2JqZWN0IgogbXNnc3RyICJGZWhsZXIgYmVpbSBTY2hyZWliZW4gZGVzIFZlcnNpb25zb2JqZWt0ZXMuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU2NwogbXNnaWQgImNhbm5vdCBsb2NrIEhFQUQgcmVmIgogbXNnc3RyICJLYW5uIFJlZmVyZW56IGRlciBad2VpZ3NwaXR6ZSAoSEVBRCkgbmljaHQgc3BlcnJlbi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3OQorIzogYnVpbHRpbi9jb21taXQuYzoxNTcxCiBtc2dpZCAiY2Fubm90IHVwZGF0ZSBIRUFEIHJlZiIKIG1zZ3N0ciAiS2FubiBSZWZlcmVueiBkZXIgWndlaWdzcGl0emUgKEhFQUQpIG5pY2h0IGFrdHVhbGlzaWVyZW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1OTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU4MgogbXNnaWQgIiIKICJSZXBvc2l0b3J5IGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB1bmFibGUgdG8gd3JpdGVcbiIKICJuZXdfaW5kZXggZmlsZS4gQ2hlY2sgdGhhdCBkaXNrIGlzIG5vdCBmdWxsIG9yIHF1b3RhIGlzXG4iCiAibm90IGV4Y2VlZGVkLCBhbmQgdGhlbiBcImdpdCByZXNldCBIRUFEXCIgdG8gcmVjb3Zlci4iCiBtc2dzdHIgIiIKICJEYXMgUHJvamVrdGFyY2hpdiB3dXJkZSBha3R1YWxpc2llcnQsIGFiZXIgZGllIFwibmV3X2luZGV4XCItRGF0ZWlcbiIKLSJrb25udGUgbmljaHQgZ2VzY2hyaWViZW4gd2VyZGVuLiBQcsO8ZmUsIGRhc3MgZGVpbmUgRmVzdHBsYXR0ZSBuaWNodFxuIgotInZvbGwgdW5kIERlaW4gS29udGluZ2VudCBuaWNodCBhdWZnZWJyYXVjaHQgaXN0IHVuZCBmw7xocmVcbiIKKyJrb25udGUgbmljaHQgZ2VzY2hyaWViZW4gd2VyZGVuLiBQcsO8ZmVuIFNpZSwgZGFzcyBJaHJlIEZlc3RwbGF0dGUgbmljaHRcbiIKKyJ2b2xsIHVuZCBJaHIgS29udGluZ2VudCBuaWNodCBhdWZnZWJyYXVjaHQgaXN0IHVuZCBmw7xocmVuIFNpZVxuIgogImFuc2NobGllw59lbmQgXCJnaXQgcmVzZXQgSEVBRFwiIHp1IFdpZWRlcmhlcnN0ZWxsdW5nIGF1cy4iCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NwpAQCAtMzg3NiwxOSArNDMzNCwxOSBAQAogCiAjOiBidWlsdGluL2NvbmZpZy5jOjUyCiBtc2dpZCAidXNlIGdsb2JhbCBjb25maWcgZmlsZSIKLW1zZ3N0ciAiYmVudXR6dCBnbG9iYWxlIEtvbmZpZ3VyYXRpb25zZGF0ZWkiCittc2dzdHIgInZlcndlbmRldCBnbG9iYWxlIEtvbmZpZ3VyYXRpb25zZGF0ZWkiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NTMKIG1zZ2lkICJ1c2Ugc3lzdGVtIGNvbmZpZyBmaWxlIgotbXNnc3RyICJiZW51dHp0IHN5c3RlbXdlaXRlIEtvbmZpZ3VyYXRpb25zZGF0ZWkiCittc2dzdHIgInZlcndlbmRldCBzeXN0ZW13ZWl0ZSBLb25maWd1cmF0aW9uc2RhdGVpIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjU0CiBtc2dpZCAidXNlIHJlcG9zaXRvcnkgY29uZmlnIGZpbGUiCi1tc2dzdHIgImJlbnV0enQgS29uZmlndXJhdGlvbnNkYXRlaSBkZXMgUHJvamVrdGFyY2hpdnMiCittc2dzdHIgInZlcndlbmRldCBLb25maWd1cmF0aW9uc2RhdGVpIGRlcyBQcm9qZWt0YXJjaGl2cyIKIAogIzogYnVpbHRpbi9jb25maWcuYzo1NQogbXNnaWQgInVzZSBnaXZlbiBjb25maWcgZmlsZSIKLW1zZ3N0ciAiYmVudXR6dCBkaWUgYW5nZWdlYmVuZSBLb25maWd1cmF0aW9uc2RhdGVpIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZGllIGFuZ2VnZWJlbmUgS29uZmlndXJhdGlvbnNkYXRlaSIKIAogIzogYnVpbHRpbi9jb25maWcuYzo1NgogbXNnaWQgIkFjdGlvbiIKQEAgLTM5ODIsOSArNDQ0MCwxMyBAQAogbXNnaWQgInJlc3BlY3QgaW5jbHVkZSBkaXJlY3RpdmVzIG9uIGxvb2t1cCIKIG1zZ3N0ciAiYmVhY2h0ZXQgXCJpbmNsdWRlXCItRGlyZWt0aXZlbiBiZWltIE5hY2hzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6NjkKLW1zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgotbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgorIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorCisjOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NworbXNnaWQgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIKK21zZ3N0ciAiZ2lidCBHcsO2w59lbmFuZ2FiZW4gaW4gbWVuc2NoZW5sZXNiYXJlbiBGb3JtYXQgYXVzIgogCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTUKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCkBAIC0zOTk0LDcwICs0NDU2LDcwIEBACiBtc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSAtLWRpcnR5IgogbXNnc3RyICJnaXQgZGVzY3JpYmUgW09wdGlvbmVuXSAtLWRpcnR5IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM0CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjMzCiAjLCBjLWZvcm1hdAogbXNnaWQgImFubm90YXRlZCB0YWcgJXMgbm90IGF2YWlsYWJsZSIKIG1zZ3N0ciAiYW5ub3RpZXJ0ZSBNYXJraWVydW5nICVzIGlzdCBuaWNodCB2ZXJmw7xnYmFyIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM3CiAjLCBjLWZvcm1hdAogbXNnaWQgImFubm90YXRlZCB0YWcgJXMgaGFzIG5vIGVtYmVkZGVkIG5hbWUiCiBtc2dzdHIgImFubm90aWVydGUgTWFya2llcnVuZyAlcyBoYXQga2VpbmVuIGVpbmdlYmV0dGV0ZW4gTmFtZW4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNDAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgaXMgcmVhbGx5ICclcycgaGVyZSIKIG1zZ3N0ciAiTWFya2llcnVuZyAnJXMnIGlzdCBlaWdlbnRsaWNoICclcycgaGllciIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAiJXMgaXN0IGtlaW4gZ8O8bHRpZ2VyIE9iamVrdC1OYW1lIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG5vdCBhIHZhbGlkICclcycgb2JqZWN0IgogbXNnc3RyICIlcyBpc3Qga2VpbiBnw7xsdGlnZXMgJyVzJyBPYmpla3QiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnJXMnIgogbXNnc3RyICJrZWluIE1hcmtpZXJ1bmcgZW50c3ByaWNodCBleGFrdCAnJXMnIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgInNlYXJjaGluZyB0byBkZXNjcmliZSAlc1xuIgogbXNnc3RyICJzdWNoZSB6dXIgQmVzY2hyZWlidW5nIHZvbiAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzI5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzI4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZpbmlzaGVkIHNlYXJjaCBhdCAlc1xuIgogbXNnc3RyICJiZWVuZGV0ZSBTdWNoZSBiZWkgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1MworIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gYW5ub3RhdGVkIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCiAiSG93ZXZlciwgdGhlcmUgd2VyZSB1bmFubm90YXRlZCB0YWdzOiB0cnkgLS10YWdzLiIKIG1zZ3N0ciAiIgogIktlaW5lIGFubm90aWVydGVuIE1hcmtpZXJ1bmdlbiBrw7ZubmVuICclcycgYmVzY2hyZWliZW4uXG4iCi0iSmVkb2NoIGdhYiBlcyBuaWNodCBhbm5vdGllcnRlIE1hcmtpZXJ1bmdlbjogdmVyc3VjaGUgLS10YWdzLiIKKyJKZWRvY2ggZ2FiIGVzIG5pY2h0IGFubm90aWVydGUgTWFya2llcnVuZ2VuOiB2ZXJzdWNoZW4gU2llIC0tdGFncy4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCiAiVHJ5IC0tYWx3YXlzLCBvciBjcmVhdGUgc29tZSB0YWdzLiIKIG1zZ3N0ciAiIgogIktlaW5lIE1hcmtpZXJ1bmdlbiBrw7ZubmVuICclcycgYmVzY2hyZWliZW4uXG4iCi0iVmVyc3VjaGUgLS1hbHdheXMgb2RlciBlcnN0ZWxsZSBlaW5pZ2UgTWFya2llcnVuZ2VuLiIKKyJWZXJzdWNoZW4gU2llIC0tYWx3YXlzIG9kZXIgZXJzdGVsbGVuIFNpZSBlaW5pZ2UgTWFya2llcnVuZ2VuLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3OAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cmF2ZXJzZWQgJWx1IGNvbW1pdHNcbiIKIG1zZ3N0ciAiJWx1IFZlcnNpb25lbiBkdXJjaGxhdWZlblxuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzgxCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJtb3JlIHRoYW4gJWkgdGFncyBmb3VuZDsgbGlzdGVkICVpIG1vc3QgcmVjZW50XG4iCkBAIC00MDY2LDYyICs0NTI4LDYyIEBACiAibWVociBhbHMgJWkgTWFya2llcnVuZ2VuIGdlZnVuZGVuOyBGw7xocmUgZGllIGVyc3RlbiAlaSBhdWZcbiIKICJTdWNoZSBiZWkgJXMgYXVmZ2VnZWJlblxuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAyCiBtc2dpZCAiZmluZCB0aGUgdGFnIHRoYXQgY29tZXMgYWZ0ZXIgdGhlIGNvbW1pdCIKIG1zZ3N0ciAiZmluZGV0IGRpZSBNYXJraWVydW5nLCBkaWUgbmFjaCBkZXIgVmVyc2lvbiBrb21tdCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMwogbXNnaWQgImRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIiCiBtc2dzdHIgInByb3Rva29sbGllcnQgZGllIFN1Y2hzdHJhdGVnaWUgaW4gZGVyIFN0YW5kYXJkLUZlaGxlcmF1c2dhYmUiCiAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKK21zZ2lkICJ1c2UgYW55IHJlZiIKK21zZ3N0ciAidmVyd2VuZGV0IGFsbGUgUmVmZXJlbnplbiIKKwogIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNQotbXNnaWQgInVzZSBhbnkgcmVmIGluIC5naXQvcmVmcyIKLW1zZ3N0ciAiYmVudXR6dCBqZWRlIFJlZmVyZW56IGluIC5naXQvcmVmcyIKK21zZ2lkICJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIKK21zZ3N0ciAidmVyd2VuZGV0IGplZGUgTWFya2llcnVuZywgYXVjaCBuaWNodC1hbm5vdGllcnRlIgogCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA2Ci1tc2dpZCAidXNlIGFueSB0YWcgaW4gLmdpdC9yZWZzL3RhZ3MiCi1tc2dzdHIgImJlbnV0enQgYWxsZSBNYXJraWVydW5nZW4gaW4gLmdpdC9yZWZzL3RhZ3MiCi0KLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDcKIG1zZ2lkICJhbHdheXMgdXNlIGxvbmcgZm9ybWF0IgotbXNnc3RyICJiZW51dHp0IGltbWVyIGxhbmdlcyBGb3JtYXQiCittc2dzdHIgInZlcndlbmRldCBpbW1lciBsYW5nZXMgRm9ybWF0IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5CiBtc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKIG1zZ3N0ciAiZ2lidCBudXIgZXhha3RlIMOcYmVyZWluc3RpbW11bmdlbiBhdXMiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTEKIG1zZ2lkICJjb25zaWRlciA8bj4gbW9zdCByZWNlbnQgdGFncyAoZGVmYXVsdDogMTApIgogbXNnc3RyICJiZXRyYWNodGV0IGRpZSBqw7xuZ3N0ZW4gPG4+IE1hcmtpZXJ1bmdlbiAoU3RhbmRhcmQ6IDEwKSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMwogbXNnaWQgIm9ubHkgY29uc2lkZXIgdGFncyBtYXRjaGluZyA8cGF0dGVybj4iCiBtc2dzdHIgImJldHJhY2h0ZXQgbnVyIE1hcmtpZXJ1bmdlbiBkaWUgPE11c3Rlcj4gZW50c3ByZWNoZW4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTYgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNSBidWlsdGluL25hbWUtcmV2LmM6MjM4CiBtc2dpZCAic2hvdyBhYmJyZXZpYXRlZCBjb21taXQgb2JqZWN0IGFzIGZhbGxiYWNrIgogbXNnc3RyICJ6ZWlndCBnZWvDvHJ6dGVzIFZlcnNpb25zb2JqZWt0LCB3ZW5uIHNvbnN0IG5pY2h0cyB6dXRyaWZmdCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNgogbXNnaWQgIm1hcmsiCiBtc2dzdHIgIktlbm56ZWljaGVuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CiBtc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgogbXNnc3RyICIiCiAiZsO8Z3QgPEtlbm56ZWljaGVuPiBiZWkgZ2XDpG5kZXJ0ZW0gQXJiZWl0c2JhdW0gaGluenUgKFN0YW5kYXJkOiBcIi1kaXJ0eVwiKSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNQogbXNnaWQgIi0tbG9uZyBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLWFiYnJldj0wIgotbXNnc3RyICItLWxvbmcgaXN0IGlua29tcGF0aWJlbCBtaXQgLS1hYmJyZXY9MCIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC0tbG9uZyB1bmQgLS1hYmJyZXY9MCBzaW5kIGlua29tcGF0aWJlbC4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjEKIG1zZ2lkICJObyBuYW1lcyBmb3VuZCwgY2Fubm90IGRlc2NyaWJlIGFueXRoaW5nLiIKIG1zZ3N0ciAiS2VpbmUgTmFtZW4gZ2VmdW5kZW4sIGthbm4gbmljaHRzIGJlc2NocmVpYmVuLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MQogbXNnaWQgIi0tZGlydHkgaXMgaW5jb21wYXRpYmxlIHdpdGggY29tbWl0dGlzaGVzIgotbXNnc3RyICItLWRpcnR5IGlzdCBpbmtvbXBhdGliZWwgbWl0IFZlcnNpb25lbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWRpcnR5IGthbm4gbmljaHQgbWl0IFZlcnNpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAogIzogYnVpbHRpbi9kaWZmLmM6NzkKICMsIGMtZm9ybWF0CkBAIC00MTYxLDQwICs0NjIzLDQwIEBACiBtc2dpZCAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIKIG1zZ3N0ciAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzNQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1OAogbXNnaWQgInNob3cgcHJvZ3Jlc3MgYWZ0ZXIgPG4+IG9iamVjdHMiCiBtc2dzdHIgInplaWd0IEZvcnRzY2hyaXR0IG5hY2ggPG4+IE9iamVrdGVuIGFuIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgogbXNnc3RyICJ3w6RobHQgQmVoYW5kbHVuZyB2b24gc2lnbmllcnRlbiBNYXJraWVydW5nZW4iCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDAKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjMKIG1zZ2lkICJzZWxlY3QgaGFuZGxpbmcgb2YgdGFncyB0aGF0IHRhZyBmaWx0ZXJlZCBvYmplY3RzIgogbXNnc3RyICJ3w6RobHQgQmVoYW5kbHVuZyB2b24gTWFya2llcnVuZ2VuLCBkaWUgZ2VmaWx0ZXJ0ZSBPYmpla3RlIG1hcmtpZXJlbiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgogbXNnaWQgIkR1bXAgbWFya3MgdG8gdGhpcyBmaWxlIgogbXNnc3RyICJTY2hyZWlidCBLZW5uemVpY2hlbiBpbiBkaWVzZSBEYXRlaSIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0NQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2OAogbXNnaWQgIkltcG9ydCBtYXJrcyBmcm9tIHRoaXMgZmlsZSIKIG1zZ3N0ciAiSW1wb3J0aWVydCBLZW5uemVpY2hlbiB2b24gZGllc2VyIERhdGVpIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQ3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCiBtc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCiBtc2dzdHIgIiIKICJlcnpldWd0IGvDvG5zdGxpY2ggZWluZW4gTWFya2llcnVuZ3NlcnN0ZWxsZXIsIHdlbm4gZGllIE1hcmtpZXJ1bmcga2VpbmVuIGhhdCIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0OQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MgogbXNnaWQgIk91dHB1dCBmdWxsIHRyZWUgZm9yIGVhY2ggY29tbWl0IgogbXNnc3RyICJnaWJ0IGbDvHIgamVkZSBWZXJzaW9uIGRlbiBnZXNhbXRlbiBCYXVtIGF1cyIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1MQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NAogbXNnaWQgIlVzZSB0aGUgZG9uZSBmZWF0dXJlIHRvIHRlcm1pbmF0ZSB0aGUgc3RyZWFtIgogbXNnc3RyICJCZW51dHp0IGRpZSBcImRvbmVcIi1GdW5rdGlvbiB1bSBkZW4gU3Ryb20gYWJ6dXNjaGxpZcOfZW4iCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTIKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzUKIG1zZ2lkICJTa2lwIG91dHB1dCBvZiBibG9iIGRhdGEiCiBtc2dzdHIgIsOcYmVyc3ByaW5ndCBBdXNnYWJlIHZvbiBCbG9iLURhdGVuIgogCkBAIC00MjY3LDIwNiArNDcyOSwyMjEgQEAKIG1zZ2lkICJkZWVwZW4gaGlzdG9yeSBvZiBzaGFsbG93IGNsb25lIgogbXNnc3RyICJ2ZXJ0aWVmdCBkaWUgSGlzdG9yaWUgZWluZXMgZmxhY2hlbiBLbG9uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODUgYnVpbHRpbi9sb2cuYzoxMDg4CisjOiBidWlsdGluL2ZldGNoLmM6ODYKK21zZ2lkICJjb252ZXJ0IHRvIGEgY29tcGxldGUgcmVwb3NpdG9yeSIKK21zZ3N0ciAia29udmVydGllcnQgenUgZWluZW0gdm9sbHN0w6RuZGlnZW4gUHJvamVrdGFyY2hpdiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAogbXNnaWQgImRpciIKIG1zZ3N0ciAiVmVyemVpY2huaXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4NgorIzogYnVpbHRpbi9mZXRjaC5jOjg5CiBtc2dpZCAicHJlcGVuZCB0aGlzIHRvIHN1Ym1vZHVsZSBwYXRoIG91dHB1dCIKIG1zZ3N0ciAic3RlbGx0IGRpZXMgYW4gZGllIEF1c2dhYmUgZGVyIFVudGVycHJvamVrdC1QZmFkZSB2b3JhbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5CisjOiBidWlsdGluL2ZldGNoLmM6OTIKIG1zZ2lkICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIKIG1zZ3N0ciAiU3RhbmRhcmQtTW9kdXMgZsO8ciBSZWt1cnNpb24iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyMDEKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyMDQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIHJlbW90ZSByZWYgSEVBRCIKIG1zZ3N0ciAiS29ubnRlIGV4dGVybmUgUmVmZXJlbnogZGVyIFp3ZWlnc3BpdHplIChIRUFEKSBuaWNodCBmaW5kZW4uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjU0CisjOiBidWlsdGluL2ZldGNoLmM6MjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCAlcyBub3QgZm91bmQiCiBtc2dzdHIgIk9iamVrdCAlcyBuaWNodCBnZWZ1bmRlbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1OQorIzogYnVpbHRpbi9mZXRjaC5jOjI2MgogbXNnaWQgIlt1cCB0byBkYXRlXSIKIG1zZ3N0ciAiW2FrdHVlbGxdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjczCisjOiBidWlsdGluL2ZldGNoLmM6Mjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiEgJS0qcyAlLSpzIC0+ICVzICAoY2FuJ3QgZmV0Y2ggaW4gY3VycmVudCBicmFuY2gpIgogbXNnc3RyICIhICUtKnMgJS0qcyAtPiAlcyAgKGthbm4gbmljaHQgaW0gYWt0dWVsbGVuIFp3ZWlnIGFuZm9yZGVybikiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzQgYnVpbHRpbi9mZXRjaC5jOjM2MAorIzogYnVpbHRpbi9mZXRjaC5jOjI3NyBidWlsdGluL2ZldGNoLmM6MzYzCiBtc2dpZCAiW3JlamVjdGVkXSIKIG1zZ3N0ciAiW3p1csO8Y2tnZXdpZXNlbl0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyODgKIG1zZ2lkICJbdGFnIHVwZGF0ZV0iCiBtc2dzdHIgIltNYXJraWVydW5nc2FrdHVhbGlzaWVydW5nXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NyBidWlsdGluL2ZldGNoLmM6MzIyIGJ1aWx0aW4vZmV0Y2guYzozNDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCiBtc2dpZCAiICAodW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYpIgogbXNnc3RyICIgIChrYW5uIGxva2FsZSBSZWZlcmVueiBuaWNodCBha3R1YWxpc2llcmVuKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwNQorIzogYnVpbHRpbi9mZXRjaC5jOjMwOAogbXNnaWQgIltuZXcgdGFnXSIKIG1zZ3N0ciAiW25ldWUgTWFya2llcnVuZ10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKIG1zZ2lkICJbbmV3IGJyYW5jaF0iCiBtc2dzdHIgIltuZXVlciBad2VpZ10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTQKIG1zZ2lkICJbbmV3IHJlZl0iCiBtc2dzdHIgIltuZXVlIFJlZmVyZW56XSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NgorIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICJrYW5uIGxva2FsZSBSZWZlcmVueiBuaWNodCBha3R1YWxpc2llcmVuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAiQWt0dWFsaXNpZXJ1bmcgZXJ6d3VuZ2VuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzYyCisjOiBidWlsdGluL2ZldGNoLmM6MzY1CiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICIoa2VpbiBWb3JzcHVsZW4pIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzkzIGJ1aWx0aW4vZmV0Y2guYzo2ODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXNcbiIKIG1zZ3N0ciAia2FubiAlcyBuaWNodCDDtmZmbmVuOiAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDAyCisjOiBidWlsdGluL2ZldGNoLmM6NDA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGRpZCBub3Qgc2VuZCBhbGwgbmVjZXNzYXJ5IG9iamVjdHNcbiIKIG1zZ3N0ciAiJXMgaGF0IG5pY2h0IGFsbGUgZXJmb3JkZXJsaWNoZW4gT2JqZWt0ZSBnZXNlbmRldFxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDg4CisjOiBidWlsdGluL2ZldGNoLmM6NDkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZyb20gJS4qc1xuIgogbXNnc3RyICJWb24gJS4qc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDk5CisjOiBidWlsdGluL2ZldGNoLmM6NTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJzb21lIGxvY2FsIHJlZnMgY291bGQgbm90IGJlIHVwZGF0ZWQ7IHRyeSBydW5uaW5nXG4iCiAiICdnaXQgcmVtb3RlIHBydW5lICVzJyB0byByZW1vdmUgYW55IG9sZCwgY29uZmxpY3RpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKLSJFaW5pZ2UgbG9rYWxlIFJlZmVyZW56ZW4ga29ubnRlbiBuaWNodCBha3R1YWxpc2llcnQgd2VyZGVuOyB2ZXJzdWNoZVxuIgorIkVpbmlnZSBsb2thbGUgUmVmZXJlbnplbiBrb25udGVuIG5pY2h0IGFrdHVhbGlzaWVydCB3ZXJkZW47IHZlcnN1Y2hlbiBTaWVcbiIKICInZ2l0IHJlbW90ZSBwcnVuZSAlcycgdW0gamVkZW4gw6RsdGVyZW4sIHdpZGVyc3Byw7xjaGxpY2hlbiBad2VpZyB6dSBsw7ZzY2hlbi4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIHdpbGwgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiICAgKCVzIHdpcmQgdW5yZWZlcmVuemllcnQpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTUwCisjOiBidWlsdGluL2ZldGNoLmM6NTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiICAgKCVzIHd1cmRlIHVucmVmZXJlbnppZXJ0KSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1NworIzogYnVpbHRpbi9mZXRjaC5jOjU2MAogbXNnaWQgIltkZWxldGVkXSIKIG1zZ3N0ciAiW2dlbMO2c2NodF0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTggYnVpbHRpbi9yZW1vdGUuYzoxMDU1CisjOiBidWlsdGluL2ZldGNoLmM6NTYxIGJ1aWx0aW4vcmVtb3RlLmM6MTA1NQogbXNnaWQgIihub25lKSIKIG1zZ3N0ciAiKG5pY2h0cykiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo2NzUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo2NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gZmV0Y2ggaW50byBjdXJyZW50IGJyYW5jaCAlcyBvZiBub24tYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAiRGFzIEFuZm9yZGVybiBpbiBkZW4gYWt0dWVsbGVuIFp3ZWlnICVzIHZvbiBlaW5lbSBuaWNodC1ibG/Dn2VuIFByb2pla3RhcmNoaXYgIgogInd1cmRlIHZlcndlaWdlcnQuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NzA5CisjOiBidWlsdGluL2ZldGNoLmM6NzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGZldGNoIGZyb20gJXMiCiBtc2dzdHIgIldlacOfIG5pY2h0IHdpZSB2b24gJXMgYW5nZWZvcmRlcnQgd2lyZC4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3ODYKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3ODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIFwiJXNcIiB2YWx1ZSBcIiVzXCIgaXMgbm90IHZhbGlkIGZvciAlcyIKIG1zZ3N0ciAiT3B0aW9uIFwiJXNcIiBXZXJ0IFwiJXNcIiBpc3QgbmljaHQgZ8O8bHRpZyBmw7xyICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg5CisjOiBidWlsdGluL2ZldGNoLmM6NzkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgaXMgaWdub3JlZCBmb3IgJXNcbiIKIG1zZ3N0ciAiT3B0aW9uIFwiJXNcIiB3aXJkIGlnbm9yaWVydCBmw7xyICVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXNcbiIKIG1zZ3N0ciAiRm9yZGVyZSBhbiB2b24gJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5MyBidWlsdGluL3JlbW90ZS5jOjEwMAorIzogYnVpbHRpbi9mZXRjaC5jOjg5NiBidWlsdGluL3JlbW90ZS5jOjEwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmV0Y2ggJXMiCiBtc2dzdHIgIktvbm50ZSBuaWNodCB2b24gJXMgYW5mb3JkZXJuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTEyCisjOiBidWlsdGluL2ZldGNoLmM6OTE1CiBtc2dpZCAiIgogIk5vIHJlbW90ZSByZXBvc2l0b3J5IHNwZWNpZmllZC4gIFBsZWFzZSwgc3BlY2lmeSBlaXRoZXIgYSBVUkwgb3IgYVxuIgogInJlbW90ZSBuYW1lIGZyb20gd2hpY2ggbmV3IHJldmlzaW9ucyBzaG91bGQgYmUgZmV0Y2hlZC4iCiBtc2dzdHIgIiIKLSJLZWluIGV4dGVybmVzIFByb2pla3RhcmNoaXYgYW5nZWdlYmVuLiBCaXR0ZSBnZWJlIGVudHdlZGVyIGVpbmUgVVJMXG4iCisiS2VpbiBleHRlcm5lcyBQcm9qZWt0YXJjaGl2IGFuZ2VnZWJlbi4gQml0dGUgZ2ViZW4gU2llIGVudHdlZGVyIGVpbmUgVVJMXG4iCiAib2RlciBkZW4gTmFtZW4gZGVzIGV4dGVybmVuIEFyY2hpdnMgYW4sIHZvbiB3ZWxjaGVtIG5ldWVcbiIKLSJWZXJzaW9uZW4gYW5nZWZvcmRlcnQgd2VyZGVuIHNvbGxlbi4iCisiUmV2aXNpb25lbiBhbmdlZm9yZGVydCB3ZXJkZW4gc29sbGVuLiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjkzMgorIzogYnVpbHRpbi9mZXRjaC5jOjkzNQogbXNnaWQgIllvdSBuZWVkIHRvIHNwZWNpZnkgYSB0YWcgbmFtZS4iCi1tc2dzdHIgIkR1IG11c3N0IGRlbiBOYW1lbiBkZXIgTWFya2llcnVuZyBhbmdlYmVuLiIKK21zZ3N0ciAiU2llIG3DvHNzZW4gZGVuIE5hbWVuIGRlciBNYXJraWVydW5nIGFuZ2ViZW4uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTg0CisjOiBidWlsdGluL2ZldGNoLmM6OTgxCittc2dpZCAiLS1kZXB0aCBhbmQgLS11bnNoYWxsb3cgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1kZXB0aCB1bmQgLS11bnNoYWxsb3cga8O2bm5lbiBuaWNodCBnZW1laW5zYW0gdmVyd2VuZGV0IHdlcmRlbi4iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODMKK21zZ2lkICItLXVuc2hhbGxvdyBvbiBhIGNvbXBsZXRlIHJlcG9zaXRvcnkgZG9lcyBub3QgbWFrZSBzZW5zZSIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS11bnNoYWxsb3cga2FubiBuaWNodCBpbiBlaW5lbSB2b2xsc3TDpG5kaWdlbiBQcm9qZWt0YXJjaGl2ICIKKyJ2ZXJ3ZW5kZXQgd2VyZGVuLiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjEwMDIKIG1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCB0YWtlIGEgcmVwb3NpdG9yeSBhcmd1bWVudCIKIG1zZ3N0ciAiZmV0Y2ggLS1hbGwgYWt6ZXB0aWVydCBrZWluIFByb2pla3RhcmNoaXYgYWxzIEFyZ3VtZW50IgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTg2CisjOiBidWlsdGluL2ZldGNoLmM6MTAwNAogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugd2l0aCByZWZzcGVjcyIKLW1zZ3N0ciAiZmV0Y2ggLS1hbGwgbWFjaHQga2VpbmVuIFNpbm4gbWl0IFJlZmVyZW56c3BlemlmaWthdGlvbmVuIgorbXNnc3RyICJmZXRjaCAtLWFsbCBrYW5uIG5pY2h0IG1pdCBSZWZlcmVuenNwZXppZmlrYXRpb25lbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk5NworIzogYnVpbHRpbi9mZXRjaC5jOjEwMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgb3IgcmVtb3RlIGdyb3VwOiAlcyIKIG1zZ3N0ciAiS2VpbiBleHRlcm5lcyBBcmNoaXYgKGVpbnplbG4gb2RlciBHcnVwcGUpOiAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDIzCiBtc2dpZCAiRmV0Y2hpbmcgYSBncm91cCBhbmQgc3BlY2lmeWluZyByZWZzcGVjcyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICIiCi0iQWJob2xlbiBlaW5lciBHcnVwcGUgbWl0IEFuZ2FiZSB2b24gUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4gbWFjaHQga2VpbmVuICIKLSJTaW5uLiIKKyJEYXMgQWJob2xlbiBlaW5lciBHcnVwcGUgdm9uIGV4dGVybmVuIEFyY2hpdmVuIGthbm4gbmljaHQgbWl0IGRlciBBbmdhYmVcbiIKKyJ2b24gUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4gdmVyd2VuZGV0IHdlcmRlbi4iCiAKICM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjEzCiBtc2dpZCAiZ2l0IGZtdC1tZXJnZS1tc2cgWy1tIDxtZXNzYWdlPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxmaWxlPl0iCiBtc2dzdHIgIiIKICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPEJlc2NocmVpYnVuZz5dIFstLWxvZ1s9PG4+XXwtLW5vLWxvZ10gWy0tZmlsZSA8RGF0ZWk+XSIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjUzIGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NiBidWlsdGluL2dyZXAuYzo3MDEKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODggYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NiBidWlsdGluL3Nob3ctcmVmLmM6MTc1Ci0jOiBidWlsdGluL3RhZy5jOjQ0OCBwYXJzZS1vcHRpb25zLmg6MTMzIHBhcnNlLW9wdGlvbnMuaDoyMzUKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjYgYnVpbHRpbi9ncmVwLmM6NzAxCisjOiBidWlsdGluL21lcmdlLmM6MTg4IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUgYnVpbHRpbi9zaG93LXJlZi5jOjE3NQorIzogYnVpbHRpbi90YWcuYzo0NDYgcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM5CiBtc2dpZCAibiIKIG1zZ3N0ciAiQW56YWhsIgogCi0jOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NTQKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NAogbXNnaWQgInBvcHVsYXRlIGxvZyB3aXRoIGF0IG1vc3QgPG4+IGVudHJpZXMgZnJvbSBzaG9ydGxvZyIKIG1zZ3N0ciAiZsO8Z3QgSGlzdG9yaWUgbWl0IGjDtmNoc3RlbnMgPG4+IEVpbnRyw6RnZW4gdm9uIFwic2hvcnRsb2dcIiBoaW56dSIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjU3CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjcKIG1zZ2lkICJhbGlhcyBmb3IgLS1sb2cgKGRlcHJlY2F0ZWQpIgogbXNnc3RyICJBbGlhcyBmw7xyIC0tbG9nICh2ZXJhbHRldCkiCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MAorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcwCiBtc2dpZCAidGV4dCIKIG1zZ3N0ciAiVGV4dCIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYxCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzEKIG1zZ2lkICJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiCi1tc2dzdHIgImJlbnV0enQgPFRleHQ+IGFscyBCZXNjaHJlaWJ1bmdzYW5mYW5nIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgPFRleHQ+IGFscyBCZXNjaHJlaWJ1bmdzYW5mYW5nIgogCi0jOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjIKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MgogbXNnaWQgImZpbGUgdG8gcmVhZCBmcm9tIgogbXNnc3RyICJEYXRlaSB6dW0gRWlubGVzZW4iCiAKQEAgLTQ1ODcsMTkgKzUwNjQsMTkgQEAKICJydW4gXCJnaXQgZ2NcIiBtYW51YWxseS4gU2VlIFwiZ2l0IGhlbHAgZ2NcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIKIG1zZ3N0ciAiIgogIkRpZSBEYXRlbmJhbmsgZGVzIFByb2pla3RhcmNoaXZzIHdpcmQgZsO8ciBlaW5lIG9wdGltYWxlIFBlcmZvcm1hbmNlXG4iCi0ia29tcHJpbWllcnQuIER1IGthbm5zdCBhdWNoIFwiZ2l0IGdjXCIgbWFudWVsbCBhdXNmw7xocmVuLlxuIgorImtvbXByaW1pZXJ0LiBTaWUga8O2bm5lbiBhdWNoIFwiZ2l0IGdjXCIgbWFudWVsbCBhdXNmw7xocmVuLlxuIgogIlNpZWhlIFwiZ2l0IGhlbHAgZ2NcIiBmw7xyIHdlaXRlcmUgSW5mb3JtYXRpb25lbi5cbiIKIAogIzogYnVpbHRpbi9nYy5jOjI0OQogbXNnaWQgIiIKICJUaGVyZSBhcmUgdG9vIG1hbnkgdW5yZWFjaGFibGUgbG9vc2Ugb2JqZWN0czsgcnVuICdnaXQgcHJ1bmUnIHRvIHJlbW92ZSB0aGVtLiIKIG1zZ3N0ciAiIgotIkVzIGdpYnQgenUgdmllbGUgdW5lcnJlaWNoYmFyZSBsb3NlIE9iamVrdGU7IGbDvGhyZSAnZ2l0IHBydW5lJyBhdXMsIHVtIGRpZXNlICIKLSJ6dSBsw7ZzY2hlbi4iCisiRXMgZ2lidCB6dSB2aWVsZSB1bmVycmVpY2hiYXJlIGxvc2UgT2JqZWt0ZTsgZsO8aHJlbiBTaWUgJ2dpdCBwcnVuZScgYXVzLCB1bSAiCisiZGllc2UgenUgbMO2c2NoZW4uIgogCiAjOiBidWlsdGluL2dyZXAuYzoyMgogbXNnaWQgImdpdCBncmVwIFtvcHRpb25zXSBbLWVdIDxwYXR0ZXJuPiBbPHJldj4uLi5dIFtbLS1dIDxwYXRoPi4uLl0iCi1tc2dzdHIgImdpdCBncmVwIFtPcHRpb25lbl0gWy1lXSA8TXVzdGVyPiBbPFZlcnNpb24+Li4uXSBbWy0tXSA8UGZhZD4uLi5dIgorbXNnc3RyICJnaXQgZ3JlcCBbT3B0aW9uZW5dIFstZV0gPE11c3Rlcj4gWzxSZXZpc2lvbj4uLi5dIFtbLS1dIDxQZmFkPi4uLl0iCiAKICM6IGJ1aWx0aW4vZ3JlcC5jOjIxNwogIywgYy1mb3JtYXQKQEAgLTQ2NzMsMTEgKzUxNTAsMTEgQEAKIAogIzogYnVpbHRpbi9ncmVwLmM6NjY3CiBtc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1tc2dzdHIgImJlbnV0enQgZXJ3ZWl0ZXJ0ZSByZWd1bMOkcmUgQXVzZHLDvGNrZSBhdXMgUE9TSVgiCittc2dzdHIgInZlcndlbmRldCBlcndlaXRlcnRlIHJlZ3Vsw6RyZSBBdXNkcsO8Y2tlIGF1cyBQT1NJWCIKIAogIzogYnVpbHRpbi9ncmVwLmM6NjcwCiBtc2dpZCAidXNlIGJhc2ljIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGRlZmF1bHQpIgotbXNnc3RyICJiZW51dHp0IGdydW5kbGVnZW5kZSByZWd1bMOkcmUgQXVzZHLDvGNrZSBhdXMgUE9TSVggKFN0YW5kYXJkKSIKK21zZ3N0ciAidmVyd2VuZGV0IGdydW5kbGVnZW5kZSByZWd1bMOkcmUgQXVzZHLDvGNrZSBhdXMgUE9TSVggKFN0YW5kYXJkKSIKIAogIzogYnVpbHRpbi9ncmVwLmM6NjczCiBtc2dpZCAiaW50ZXJwcmV0IHBhdHRlcm5zIGFzIGZpeGVkIHN0cmluZ3MiCkBAIC00Njg1LDcgKzUxNjIsNyBAQAogCiAjOiBidWlsdGluL2dyZXAuYzo2NzYKIG1zZ2lkICJ1c2UgUGVybC1jb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1tc2dzdHIgImJlbnV0enQgUGVybC1rb21wYXRpYmxlIHJlZ3Vsw6RyZSBBdXNkcsO8Y2tlIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgUGVybC1rb21wYXRpYmxlIHJlZ3Vsw6RyZSBBdXNkcsO8Y2tlIgogCiAjOiBidWlsdGluL2dyZXAuYzo2NzkKIG1zZ2lkICJzaG93IGxpbmUgbnVtYmVycyIKQEAgLTQ4MDYsMzEgKzUyODMsMzMgQEAKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAia2VpbmUgTXVzdGVyIGFuZ2VnZWJlbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODI1Ci0jLCBjLWZvcm1hdAotbXNnaWQgImJhZCBvYmplY3QgJXMiCi1tc2dzdHIgInVuZ8O8bHRpZ2VzIE9iamVrdCAlcyIKLQogIzogYnVpbHRpbi9ncmVwLmM6ODY2CiBtc2dpZCAiLS1vcGVuLWZpbGVzLWluLXBhZ2VyIG9ubHkgd29ya3Mgb24gdGhlIHdvcmt0cmVlIgotbXNnc3RyICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgYXJiZWl0ZXQgbnVyIGlubmVyaGFsYiBkZXMgQXJiZWl0c2JhdW1zIgorbXNnc3RyICIiCisiRGllIE9wdGlvbiAtLW9wZW4tZmlsZXMtaW4tcGFnZXIga2FubiBudXIgaW5uZXJoYWxiIGRlcyBBcmJlaXRzYmF1bXMgIgorInZlcndlbmRldCB3ZXJkZW4uIgogCiAjOiBidWlsdGluL2dyZXAuYzo4ODkKIG1zZ2lkICItLWNhY2hlZCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbm8taW5kZXguIgotbXNnc3RyICItLWNhY2hlZCBvZGVyIC0tdW50cmFja2VkIGthbm4gbmljaHQgbWl0IC0tbm8taW5kZXggYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1jYWNoZWQgdW5kIC0tdW50cmFja2VkIGvDtm5uZW4gbmljaHQgbWl0IC0tbm8taW5kZXggdmVyd2VuZGV0ICIKKyJ3ZXJkZW4uIgogCiAjOiBidWlsdGluL2dyZXAuYzo4OTQKIG1zZ2lkICItLW5vLWluZGV4IG9yIC0tdW50cmFja2VkIGNhbm5vdCBiZSB1c2VkIHdpdGggcmV2cy4iCi1tc2dzdHIgIi0tbm8taW5kZXggb2RlciAtLXVudHJhY2tlZCBrYW5uIG5pY2h0IG1pdCBWZXJzaW9uZW4gYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uZW4gLS1uby1pbmRleCB1bmQgLS11bnRyYWNrZWQga8O2bm5lbiBuaWNodCBtaXQgVmVyc2lvbmVuIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAogIzogYnVpbHRpbi9ncmVwLmM6ODk3CiBtc2dpZCAiLS1bbm8tXWV4Y2x1ZGUtc3RhbmRhcmQgY2Fubm90IGJlIHVzZWQgZm9yIHRyYWNrZWQgY29udGVudHMuIgogbXNnc3RyICIiCi0iLS1bbm8tXWV4bHVkZS1zdGFuZGFyZCBrYW5uIG5pY2h0IG1pdCBiZW9iYWNodGV0ZW4gSW5oYWx0ZW4gYmVudXR6dCB3ZXJkZW4iCisiRGllIE9wdGlvbiAtLVtuby1dZXhjbHVkZS1zdGFuZGFyZCBrYW5uIG5pY2h0IG1pdCBiZW9iYWNodGV0ZW4gSW5oYWx0ZW4gIgorInZlcndlbmRldCB3ZXJkZW4uIgogCiAjOiBidWlsdGluL2dyZXAuYzo5MDUKIG1zZ2lkICJib3RoIC0tY2FjaGVkIGFuZCB0cmVlcyBhcmUgZ2l2ZW4uIgotbXNnc3RyICJzb3dvaGwgLS1jYWNoZWQgYWxzIGF1Y2ggWndlaWdlIGdlZ2ViZW4iCittc2dzdHIgIkRpZSBPcHRpb24gLS1jYWNoZWQga2FubiBuaWNodCBtaXQgWndlaWdlbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAogIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjYwCiBtc2dpZCAiIgpAQCAtNDg3MywzNjYgKzUzNTIsMzk4IEBACiBtc2dzdHIgIkFuemVpZ2UgYWxsZXIgdm9yaGFuZGVuZW4gS29tbWFuZG9zIgogCiAjOiBidWlsdGluL2hlbHAuYzo0NAorbXNnaWQgInByaW50IGxpc3Qgb2YgdXNlZnVsIGd1aWRlcyIKK21zZ3N0ciAiemVpZ3QgTGlzdGUgdm9uIGFsbGdlbWVpbiB2ZXJ3ZW5kZXRlbiBBbmxlaXR1bmdlbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDUKIG1zZ2lkICJzaG93IG1hbiBwYWdlIgogbXNnc3RyICJ6ZWlndCBIYW5kYnVjaCIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDUKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2CiBtc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCiBtc2dzdHIgInplaWd0IEhhbmRidWNoIGluIGVpbmVtIFdlYmJyb3dzZXIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ3CisjOiBidWlsdGluL2hlbHAuYzo0OAogbXNnaWQgInNob3cgaW5mbyBwYWdlIgogbXNnc3RyICJ6ZWlndCBJbmZvLVNlaXRlIgogCi0jOiBidWlsdGluL2hlbHAuYzo1MwotbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIgotbXNnc3RyICJnaXQgaGVscCBbLS1hbGxdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtLb21tYW5kb10iCisjOiBidWlsdGluL2hlbHAuYzo1NAorbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCittc2dzdHIgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbS29tbWFuZG9dIgogCi0jOiBidWlsdGluL2hlbHAuYzo2NQorIzogYnVpbHRpbi9oZWxwLmM6NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgIm5pY2h0IGVya2FubnRlcyBIaWxmZWZvcm1hdDogJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjkzCisjOiBidWlsdGluL2hlbHAuYzo5NAogbXNnaWQgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC4iCiBtc2dzdHIgIktvbm50ZSBlbWFjc2NsaWVudCBuaWNodCBzdGFydGVuLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTA2CisjOiBidWlsdGluL2hlbHAuYzoxMDcKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi4iCiBtc2dzdHIgIktvbm50ZSBWZXJzaW9uIGRlcyBlbWFjc2NsaWVudCBuaWNodCBwYXJzZW4uIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMTQKKyM6IGJ1aWx0aW4vaGVscC5jOjExNQogIywgYy1mb3JtYXQKIG1zZ2lkICJlbWFjc2NsaWVudCB2ZXJzaW9uICclZCcgdG9vIG9sZCAoPCAyMikuIgogbXNnc3RyICJWZXJzaW9uIGRlcyBlbWFjc2NsaWVudCAnJWQnIGlzdCB6dSBhbHQgKDwgMjIpLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTMyIGJ1aWx0aW4vaGVscC5jOjE2MCBidWlsdGluL2hlbHAuYzoxNjkgYnVpbHRpbi9oZWxwLmM6MTc3CisjOiBidWlsdGluL2hlbHAuYzoxMzMgYnVpbHRpbi9oZWxwLmM6MTYxIGJ1aWx0aW4vaGVscC5jOjE3MCBidWlsdGluL2hlbHAuYzoxNzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiCiBtc2dzdHIgIkZlaGxlciBiZWltIEF1c2bDvGhyZW4gdm9uICclcyc6ICVzIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMTcKKyM6IGJ1aWx0aW4vaGVscC5jOjIxOAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKICJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4uY21kJyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogIiclcyc6IFBmYWQgZsO8ciBuaWNodCB1bnRlcnN0w7x0enRlbiBIYW5kYnVjaGJldHJhY2h0ZXIuXG4iCi0iRHUga8O2bm50ZXN0IHN0YXR0ZGVzc2VuICdtYW4uPFdlcmt6ZXVnPi5jbWQnIGJlbnV0emVuLiIKKyJTaWUga8O2bm50ZW4gc3RhdHRkZXNzZW4gJ21hbi48V2Vya3pldWc+LmNtZCcgYmVudXR6ZW4uIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMjkKKyM6IGJ1aWx0aW4vaGVscC5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogY21kIGZvciBzdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKICJQbGVhc2UgY29uc2lkZXIgdXNpbmcgJ21hbi48dG9vbD4ucGF0aCcgaW5zdGVhZC4iCiBtc2dzdHIgIiIKICInJXMnOiBLb21tYW5kbyBmw7xyIHVudGVyc3TDvHR6dGVuIEhhbmRidWNoYmV0cmFjaHRlci5cbiIKLSJEdSBrw7ZubnRlc3Qgc3RhdHRkZXNzZW4gJ21hbi48V2Vya3pldWc+LnBhdGgnIGJlbnV0emVuLiIKKyJTaWUga8O2bm50ZW4gc3RhdHRkZXNzZW4gJ21hbi48V2Vya3pldWc+LnBhdGgnIGJlbnV0emVuLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mjk5Ci1tc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKLW1zZ3N0ciAiRGllIGFsbGdlbWVpbiB2ZXJ3ZW5kZXRlbiBHaXQtS29tbWFuZG9zIHNpbmQ6IgotCi0jOiBidWlsdGluL2hlbHAuYzozNjcKKyM6IGJ1aWx0aW4vaGVscC5jOjM1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIgogbXNnc3RyICInJXMnOiB1bmJla2FubnRlciBIYW5kYnVjaC1CZXRyYWNodGVyLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mzg0CisjOiBidWlsdGluL2hlbHAuYzozNjgKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgImtlaW4gSGFuZGJ1Y2gtQmV0cmFjaHRlciBrb25udGUgbWl0IGRpZXNlciBBbmZyYWdlIHVtZ2VoZW4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM5MgorIzogYnVpbHRpbi9oZWxwLmM6Mzc2CiBtc2dpZCAibm8gaW5mbyB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKIG1zZ3N0ciAia2VpbiBJbmZvcm1hdGlvbnMtQmV0cmFjaHRlciBrb25udGUgbWl0IGRpZXNlciBBbmZyYWdlIHVtZ2VoZW4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ0NyBidWlsdGluL2hlbHAuYzo0NTQKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMgorbXNnaWQgIkRlZmluaW5nIGF0dHJpYnV0ZXMgcGVyIHBhdGgiCittc2dzdHIgIkRlZmluaXRpb24gdm9uIEF0dHJpYnV0ZW4gcHJvIFBmYWQiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMworbXNnaWQgIkEgR2l0IGdsb3NzYXJ5IgorbXNnc3RyICJFaW4gR2l0LUdsb3NzYXIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNAorbXNnaWQgIlNwZWNpZmllcyBpbnRlbnRpb25hbGx5IHVudHJhY2tlZCBmaWxlcyB0byBpZ25vcmUiCittc2dzdHIgIlNwZXppZmlrYXRpb24gdm9uIGJld3Vzc3QgaWdub3JpZXJ0ZW4sIHVuYmVvYmFjaHRldGVuIERhdGVpZW4iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNQorbXNnaWQgIkRlZmluaW5nIHN1Ym1vZHVsZSBwcm9wZXJ0aWVzIgorbXNnc3RyICJEZWZpbml0aW9uIHZvbiBVbnRlcnByb2pla3QtRWlnZW5zY2hhZnRlbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI2Cittc2dpZCAiU3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0IgorbXNnc3RyICJTcGV6aWZpa2F0aW9uIHZvbiBSZXZpc2lvbmVuIHVuZCBCZXJlaWNoZW4gZsO8ciBHaXQiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNworbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgorbXNnc3RyICJFaW5lIGVpbmbDvGhyZW5kZSBBbmxlaXR1bmcgenUgR2l0IChmw7xyIFZlcnNpb24gMS41LjEgb2RlciBuZXVlcikiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyOAorbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKK21zZ3N0ciAiRWluZSDDnGJlcnNpY2h0IMO8YmVyIGVtcGZvaGxlbmUgQXJiZWl0c2FibMOkdWZlIG1pdCBHaXQiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0MAorbXNnaWQgIlRoZSBjb21tb24gR2l0IGd1aWRlcyBhcmU6XG4iCittc2dzdHIgIkRpZSBhbGxnZW1laW4gdmVyd2VuZGV0ZW4gR2l0LUFubGVpdHVuZ2VuIHNpbmQ6XG4iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2MiBidWlsdGluL2hlbHAuYzo0NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzJXMiCiBtc2dzdHIgIlZlcndlbmR1bmc6ICVzJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ3MAorIzogYnVpbHRpbi9oZWxwLmM6NDk0CiAjLCBjLWZvcm1hdAogbXNnaWQgImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJyIKIG1zZ3N0ciAiZsO8ciBgZ2l0ICVzJyB3dXJkZSBkZXIgQWxpYXMgYCVzJyBhbmdlbGVndCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxODIKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0IHR5cGUgbWlzbWF0Y2ggYXQgJXMiCiBtc2dzdHIgIk9iamVrdC1UeXBlbiBwYXNzZW4gYmVpICVzIG5pY2h0IHp1c2FtbWVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxOTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIwMgogbXNnaWQgIm9iamVjdCBvZiB1bmV4cGVjdGVkIHR5cGUiCiBtc2dzdHIgIk9iamVrdCBoYXQgdW5lcndhcnRldGVuIFR5cCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjI3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGZpbGwgJWQgYnl0ZSIKIG1zZ2lkX3BsdXJhbCAiY2Fubm90IGZpbGwgJWQgYnl0ZXMiCiBtc2dzdHJbMF0gImthbm4gJWQgQnl0ZSBuaWNodCBsZXNlbiIKIG1zZ3N0clsxXSAia2FubiAlZCBCeXRlcyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKIG1zZ2lkICJlYXJseSBFT0YiCiBtc2dzdHIgInp1IGZyw7xoZXMgRGF0ZWllbmRlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1MAogbXNnaWQgInJlYWQgZXJyb3Igb24gaW5wdXQiCiBtc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIGRlciBFaW5nYWJlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI2MgogbXNnaWQgInVzZWQgbW9yZSBieXRlcyB0aGFuIHdlcmUgYXZhaWxhYmxlIgogbXNnc3RyICJ2ZXJ3ZW5kZXRlIG1laHIgQnl0ZXMgYWxzIHZlcmbDvGdiYXIgd2FyZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjY5CiBtc2dpZCAicGFjayB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiBvZmZfdCIKIG1zZ3N0ciAiUGFrZXQgaXN0IHp1IGdyb8OfIGbDvHIgZGllIGFrdHVlbGxlIERlZmluaXRpb24gdm9uIG9mZl90IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCiBtc2dzdHIgImtvbm50ZSAnJXMnIG5pY2h0IGVyc3RlbGxlbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjc4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKIG1zZ3N0ciAiS2FubiBQYWtldGRhdGVpICclcycgbmljaHQgw7ZmZm5lbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjkyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDQKIG1zZ2lkICJwYWNrIHNpZ25hdHVyZSBtaXNtYXRjaCIKIG1zZ3N0ciAiUGFrZXRzaWduYXR1ciBzdGltbXQgbmljaHQgw7xiZXJlaW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgdmVyc2lvbiAlPFBSSXUzMj4gdW5zdXBwb3J0ZWQiCiBtc2dzdHIgIlBha2V0dmVyc2lvbiAlPFBSSXUzMj4gbmljaHQgdW50ZXJzdMO8dHp0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgogbXNnc3RyICJQYWtldCBoYXQgZWluIHVuZ8O8bHRpZ2VzIE9iamVrdCBiZWkgVmVyc2F0eiAlbHU6ICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0MzQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbmZsYXRlIHJldHVybmVkICVkIgogbXNnc3RyICJEZWtvbXByaW1pZXJ1bmcgZ2FiICVkIHp1csO8Y2siCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ4MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk1CiBtc2dpZCAib2Zmc2V0IHZhbHVlIG92ZXJmbG93IGZvciBkZWx0YSBiYXNlIG9iamVjdCIKIG1zZ3N0ciAiV2VydCBmw7xyIFZlcnNhdHogYmVpIERpZmZlcmVuem9iamVrdCDDvGJlcmdlbGF1ZmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMwogbXNnaWQgImRlbHRhIGJhc2Ugb2Zmc2V0IGlzIG91dCBvZiBib3VuZCIKIG1zZ3N0ciAiIgogIldlcnQgZsO8ciBWZXJzYXR6IGJlaSBEaWZmZXJlbnpvYmpla3QgbGllZ3QgYXXDn2VyaGFsYiBkZXMgZ8O8bHRpZ2VuIEJlcmVpY2hzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duIG9iamVjdCB0eXBlICVkIgogbXNnc3RyICJVbmJla2FubnRlciBPYmpla3QtVHlwICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1MzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0MgogbXNnaWQgImNhbm5vdCBwcmVhZCBwYWNrIGZpbGUiCiBtc2dzdHIgIkthbm4gUGFrZXRkYXRlaSAlcyBuaWNodCBsZXNlbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTMyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlIG1pc3NpbmciCiBtc2dpZF9wbHVyYWwgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZXMgbWlzc2luZyIKIG1zZ3N0clswXSAiZnLDvGh6ZWl0aWdlcyBFbmRlIGRlciBQYWtldGRhdGVpLCB2ZXJtaXNzZSAlbHUgQnl0ZSIKIG1zZ3N0clsxXSAiZnLDvGh6ZWl0aWdlcyBFbmRlIGRlciBQYWtldGRhdGVpLCB2ZXJtaXNzZSAlbHUgQnl0ZXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU1OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCiBtc2dpZCAic2VyaW91cyBpbmZsYXRlIGluY29uc2lzdGVuY3kiCiBtc2dzdHIgImVybnN0aGFmdGUgSW5rb25zaXN0ZW56IG5hY2ggRGVrb21wcmltaWVydW5nIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2NDkgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjU1IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY3OAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzEyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjYxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NyBidWlsdGluL2luZGV4LXBhY2suYzo2OTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyNCBidWlsdGluL2luZGV4LXBhY2suYzo3MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIgogbXNnc3RyICJTSEExIEtPTExJU0lPTiBNSVQgJXMgR0VGVU5ERU4gISIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjUyIGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjQgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICJrYW5uICVzIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCiBtc2dzdHIgIkthbm4gZXhpc3RpZXJlbmRlcyBPYmpla3QgJXMgbmljaHQgbGVzZW4uIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGJsb2Igb2JqZWN0ICVzIgogbXNnc3RyICJ1bmfDvGx0aWdlcyBCbG9iLU9iamVrdCAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCAlcyIKIG1zZ3N0ciAiVW5nw7xsdGlnZXIgT2JqZWt0LVR5cCAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjEKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIkZlaGxlciBpbiBPYmpla3QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc1MQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhbGwgY2hpbGQgb2JqZWN0cyBvZiAlcyBhcmUgcmVhY2hhYmxlIgogbXNnc3RyICJOaWNodCBhbGxlIEtpbmQtT2JqZWt0ZSB2b24gJXMgc2luZCBlcnJlaWNoYmFyIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4MjEgYnVpbHRpbi9pbmRleC1wYWNrLmM6ODQ3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo4MzMgYnVpbHRpbi9pbmRleC1wYWNrLmM6ODYzCiBtc2dpZCAiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIgogbXNnc3RyICJLb25udGUgRGF0ZWl1bnRlcnNjaGllZCBuaWNodCBhbndlbmRlbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTg2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiUmVjZWl2aW5nIG9iamVjdHMiCiBtc2dzdHIgIkVtcGZhbmdlIE9iamVrdGUiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk4NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAogbXNnaWQgIkluZGV4aW5nIG9iamVjdHMiCiBtc2dzdHIgIkluZGl6aWVyZSBPYmpla3RlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDEyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDMwCiBtc2dpZCAicGFjayBpcyBjb3JydXB0ZWQgKFNIQTEgbWlzbWF0Y2gpIgogbXNnc3RyICJQYWtldCBpc3QgYmVzY2jDpGRpZ3QgKFNIQTEgdW50ZXJzY2hpZWRsaWNoKSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAxNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgImNhbm5vdCBmc3RhdCBwYWNrZmlsZSIKIG1zZ3N0ciAia2FubiBQYWtldGRhdGVpIG5pY2h0IGxlc2VuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDIwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM4CiBtc2dpZCAicGFjayBoYXMganVuayBhdCB0aGUgZW5kIgogbXNnc3RyICJQYWtldGVuZGUgZW50aMOkbHQgbmljaHQgdmVyd2VuZGJhcmVuIEluaGFsdCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA0OQogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkgaW4gcGFyc2VfcGFja19vYmplY3RzKCkiCiBtc2dzdHIgIkZlaGxlciBiZWltIEF1c2bDvGhyZW4gdm9uIFwicGFyc2VfcGFja19vYmplY3RzKClcIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA1NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3MgogbXNnaWQgIlJlc29sdmluZyBkZWx0YXMiCiBtc2dzdHIgIkzDtnNlIFVudGVyc2NoaWVkZSBhdWYiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNjQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwODIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJrYW5uIFRocmVhZCBuaWNodCBlcnpldWdlbjogJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjQKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IgogbXNnc3RyICJGZWhsZXIgYmVpbSBBdWZsw7ZzZW4gZGVyIFVudGVyc2NoaWVkZSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTExMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb21wbGV0ZWQgd2l0aCAlZCBsb2NhbCBvYmplY3RzIgogbXNnc3RyICJ2ZXJ2b2xsc3TDpG5kaWd0IG1pdCAlZCBsb2thbGVuIE9iamVrdGVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgKGRpc2sgY29ycnVwdGlvbj8pIgogbXNnc3RyICJVbmVyd2FydGV0ZSBQcsO8ZnN1bW1lIGbDvHIgJXMgKEZlc3RwbGF0dGVuZmVobGVyPykiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YSIKIG1zZ2lkX3BsdXJhbCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YXMiCiBtc2dzdHJbMF0gIlBha2V0IGhhdCAlZCB1bmF1ZmdlbMO2c3RlIFVudGVyc2NoaWVkIgogbXNnc3RyWzFdICJQYWtldCBoYXQgJWQgdW5hdWZnZWzDtnN0ZSBVbnRlcnNjaGllZGUiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGRlZmxhdGUgYXBwZW5kZWQgb2JqZWN0ICglZCkiCiBtc2dzdHIgIktvbm50ZSBhbmdlaMOkbmd0ZXMgT2JqZWt0ICglZCkgbmljaHQga29tcHJpbWllcmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjI5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIG9iamVjdCAlcyBpcyBjb3JydXB0IgogbXNnc3RyICJsb2thbGVzIE9iamVrdCAlcyBpc3QgYmVzY2jDpGRpZ3QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNTMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzQKIG1zZ2lkICJlcnJvciB3aGlsZSBjbG9zaW5nIHBhY2sgZmlsZSIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gU2NobGllw59lbiBkZXIgUGFrZXRkYXRlaSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI2NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIkthbm4gUGFrZXRiZXNjaHJlaWJ1bmdzZGF0ZWkgJyVzJyBuaWNodCBzY2hyZWliZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNsb3NlIHdyaXR0ZW4ga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIkthbm4gZWJlbiBlcnN0ZWxsdGUgUGFrZXRiZXNjaHJlaWJ1bmdzZGF0ZWkgJyVzJyBuaWNodCBzY2hsaWXDn2VuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjg3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzA4CiBtc2dpZCAiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIKIG1zZ3N0ciAiS2FubiBQYWtldGRhdGVpIG5pY2h0IHNwZWljaGVybiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICJLYW5uIEluZGV4ZGF0ZWkgbmljaHQgc3BlaWNoZXJuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzMxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCiBtc2dzdHIgIlwicGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+XCIgaXN0IHVuZ8O8bHRpZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMzNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG51bWJlciBvZiB0aHJlYWRzIHNwZWNpZmllZCAoJWQpIgogbXNnc3RyICJ1bmfDvGx0aWdlIEFuemFobCB2b24gVGhyZWFkcyBhbmdlZ2ViZW4gKCVkKSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM0MSBidWlsdGluL2luZGV4LXBhY2suYzoxNTE0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzYyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGhyZWFkcyBzdXBwb3J0LCBpZ25vcmluZyAlcyIKIG1zZ3N0ciAia2VpbmUgVW50ZXJzdMO8dHp1bmcgdm9uIFRocmVhZHMsICclcycgd2lyZCBpZ25vcmllcnQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzOTkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBmaWxlICclcyciCiBtc2dzdHIgIkthbm4gZXhpc3RpZXJlbmRlIFBha2V0ZGF0ZWkgJyVzJyBuaWNodCDDtmZmbmVuIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDAxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgaWR4IGZpbGUgZm9yICclcyciCiBtc2dzdHIgIkthbm4gZXhpc3RpZXJlbmRlIEluZGV4ZGF0ZWkgZsO8ciBQYWtldCAnJXMnIG5pY2h0IMO2ZmZuZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NDgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAibm9uIGRlbHRhOiAlZCBvYmplY3QiCiBtc2dpZF9wbHVyYWwgIm5vbiBkZWx0YTogJWQgb2JqZWN0cyIKIG1zZ3N0clswXSAia2VpbiBVbnRlcnNjaGllZDogJWQgT2JqZWt0IgogbXNnc3RyWzFdICJrZWluIFVudGVyc2NoaWVkOiAlZCBPYmpla3RlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDU1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdHMiCiBtc2dzdHJbMF0gIkzDpG5nZSBkZXIgT2JqZWt0LUxpc3RlID0gJWQ6ICVsdSBPYmpla3QiCiBtc2dzdHJbMV0gIkzDpG5nZSBkZXIgT2JqZWt0LUxpc3RlID0gJWQ6ICVsdSBPYmpla3RlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDgyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTAzCiBtc2dpZCAiQ2Fubm90IGNvbWUgYmFjayB0byBjd2QiCiBtc2dzdHIgIkthbm4gbmljaHQgenVyw7xjayB6dSBBcmJlaXRzdmVyemVpY2huaXMgd2VjaHNlbG4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MjYgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUyOQotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU0MSBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgJXMiCiBtc2dzdHIgIiVzIGlzdCB1bmfDvGx0aWciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODAKIG1zZ2lkICItLWZpeC10aGluIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgLS1zdGRpbiIKLW1zZ3N0ciAiLS1maXgtdGhpbiBrYW5uIG5pY2h0IG9obmUgLS1zdGRpbiBiZW51dHp0IHdlcmRlbiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWZpeC10aGluIGthbm4gbmljaHQgb2huZSAtLXN0ZGluIHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTYzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODQgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrZmlsZSBuYW1lICclcycgZG9lcyBub3QgZW5kIHdpdGggJy5wYWNrJyIKIG1zZ3N0ciAiTmFtZSBkZXIgUGFrZXRkYXRlaSAnJXMnIGVuZGV0IG5pY2h0IG1pdCAnLnBhY2snIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNjAzCiBtc2dpZCAiLS12ZXJpZnkgd2l0aCBubyBwYWNrZmlsZSBuYW1lIGdpdmVuIgotbXNnc3RyICItLXZlcmlmeSBvaG5lIE5hbWUgZGVyIFBha2V0ZGF0ZWkgYW5nZWdlYmVuIgorbXNnc3RyICJEaWUgT3B0aW9uIC0tdmVyaWZ5IHd1cmRlIG9obmUgTmFtZW4gZGVyIFBha2V0ZGF0ZWkgYW5nZWdlYmVuLiIKIAogIzogYnVpbHRpbi9pbml0LWRiLmM6MzUKICMsIGMtZm9ybWF0CkBAIC01Mzk5LDM0NCArNTkxMCwzNDggQEAKIG1zZ2lkICJDYW5ub3QgYWNjZXNzIHdvcmsgdHJlZSAnJXMnIgogbXNnc3RyICJLYW5uIG5pY2h0IGF1ZiBBcmJlaXRzYmF1bSAnJXMnIHp1Z3JlaWZlbi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MzcKLW1zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8c2luY2U+Li48dW50aWw+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCi1tc2dzdHIgImdpdCBsb2cgWzxPcHRpb25lbj5dIFs8c2VpdD4uLjxiaXM+XSBbWy0tXSA8UGZhZD4uLi5dXG4iCisjOiBidWlsdGluL2xvZy5jOjQwCittc2dpZCAiZ2l0IGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gPHBhdGg+Li4uXVxuIgorbXNnc3RyICJnaXQgbG9nIFs8T3B0aW9uZW4+XSBbUmV2aXNpb25zYmVyZWljaD5dIFtbLS1dIDxQZmFkPi4uLl1cbiIKIAotIzogYnVpbHRpbi9sb2cuYzozOAorIzogYnVpbHRpbi9sb2cuYzo0MQogbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCiBtc2dzdHIgIiAgIG9kZXI6IGdpdCBzaG93IFtPcHRpb25lbl0gPE9iamVrdD4uLi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTAwCisjOiBidWlsdGluL2xvZy5jOjEwMwogbXNnaWQgInN1cHByZXNzIGRpZmYgb3V0cHV0IgogbXNnc3RyICJ1bnRlcmRyw7xja3QgQXVzZ2FiZSBkZXIgVW50ZXJzY2hpZWRlIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMQorIzogYnVpbHRpbi9sb2cuYzoxMDQKIG1zZ2lkICJzaG93IHNvdXJjZSIKIG1zZ3N0ciAiemVpZ3QgUXVlbGxlIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMgorIzogYnVpbHRpbi9sb2cuYzoxMDUKK21zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKK21zZ3N0ciAidmVyd2VuZGV0IFwibWFpbG1hcFwiLURhdGVpIgorCisjOiBidWlsdGluL2xvZy5jOjEwNgogbXNnaWQgImRlY29yYXRlIG9wdGlvbnMiCiBtc2dzdHIgImRlY29yYXRlLU9wdGlvbmVuIgogCi0jOiBidWlsdGluL2xvZy5jOjE4OQorIzogYnVpbHRpbi9sb2cuYzoxOTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmluYWwgb3V0cHV0OiAlZCAlc1xuIgogbXNnc3RyICJsZXR6dGUgQXVzZ2FiZTogJWQgJXNcbiIKIAotIzogYnVpbHRpbi9sb2cuYzo0MDUgYnVpbHRpbi9sb2cuYzo0OTcKKyM6IGJ1aWx0aW4vbG9nLmM6NDIyIGJ1aWx0aW4vbG9nLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIG9iamVjdCAlcyIKIG1zZ3N0ciAiS2FubiBPYmpla3QgJXMgbmljaHQgbGVzZW4uIgogCi0jOiBidWlsdGluL2xvZy5jOjUyMQorIzogYnVpbHRpbi9sb2cuYzo1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biB0eXBlOiAlZCIKIG1zZ3N0ciAiVW5iZWthbm50ZXIgVHlwOiAlZCIKIAotIzogYnVpbHRpbi9sb2cuYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6NjM4CiBtc2dpZCAiZm9ybWF0LmhlYWRlcnMgd2l0aG91dCB2YWx1ZSIKIG1zZ3N0ciAiZm9ybWF0LmhlYWRlcnMgb2huZSBXZXJ0IgogCi0jOiBidWlsdGluL2xvZy5jOjY4NworIzogYnVpbHRpbi9sb2cuYzo3MjAKIG1zZ2lkICJuYW1lIG9mIG91dHB1dCBkaXJlY3RvcnkgaXMgdG9vIGxvbmciCiBtc2dzdHIgIk5hbWUgZGVzIEF1c2dhYmV2ZXJ6ZWljaG5pc3NlcyBpc3QgenUgbGFuZy4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njk4CisjOiBidWlsdGluL2xvZy5jOjczNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBwYXRjaCBmaWxlICVzIgogbXNnc3RyICJLYW5uIFBhdGNoLURhdGVpICVzIG5pY2h0IMO2ZmZuZW4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzEyCisjOiBidWlsdGluL2xvZy5jOjc1MAogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICJCcmF1Y2hlIGdlbmF1IGVpbmVuIFZlcnNpb25zYmVyZWljaC4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwCisjOiBidWlsdGluL2xvZy5jOjc1OAogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiS2VpbiBWZXJzaW9uc2JlcmVpY2guIgogCi0jOiBidWlsdGluL2xvZy5jOjc5NAorIzogYnVpbHRpbi9sb2cuYzo4NjAKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgogbXNnc3RyICJBbnNjaHJlaWJlbiBiZW7DtnRpZ3QgRS1NYWlsLUZvcm1hdCIKIAotIzogYnVpbHRpbi9sb2cuYzo4NjcKKyM6IGJ1aWx0aW4vbG9nLmM6OTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluc2FuZSBpbi1yZXBseS10bzogJXMiCiBtc2dzdHIgInVuZ8O8bHRpZ2VzIGluLXJlcGx5LXRvOiAlcyIKIAotIzogYnVpbHRpbi9sb2cuYzo4OTUKKyM6IGJ1aWx0aW4vbG9nLmM6OTY0CiBtc2dpZCAiZ2l0IGZvcm1hdC1wYXRjaCBbb3B0aW9uc10gWzxzaW5jZT4gfCA8cmV2aXNpb24gcmFuZ2U+XSIKLW1zZ3N0ciAiZ2l0IGZvcm1hdC1wYXRjaCBbT3B0aW9uZW5dIFs8c2VpdD4gfCA8VmVyc2lvbnNiZXJlaWNoPl0iCittc2dzdHIgImdpdCBmb3JtYXQtcGF0Y2ggW09wdGlvbmVuXSBbPHNlaXQ+IHwgPFJldmlzaW9uc2JlcmVpY2g+XSIKIAotIzogYnVpbHRpbi9sb2cuYzo5NDAKKyM6IGJ1aWx0aW4vbG9nLmM6MTAwOQogbXNnaWQgIlR3byBvdXRwdXQgZGlyZWN0b3JpZXM/IgogbXNnc3RyICJad2VpIEF1c2dhYmV2ZXJ6ZWljaG5pc3NlPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDY4CisjOiBidWlsdGluL2xvZy5jOjExMDgKIG1zZ2lkICJ1c2UgW1BBVENIIG4vbV0gZXZlbiB3aXRoIGEgc2luZ2xlIHBhdGNoIgotbXNnc3RyICJiZW51dHp0IFtQQVRDSCBuL21dIGF1Y2ggbWl0IGVpbnplbG5lbSBQYXRjaCIKK21zZ3N0ciAidmVyd2VuZGV0IFtQQVRDSCBuL21dIGF1Y2ggbWl0IGVpbnplbG5lbSBQYXRjaCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDcxCisjOiBidWlsdGluL2xvZy5jOjExMTEKIG1zZ2lkICJ1c2UgW1BBVENIXSBldmVuIHdpdGggbXVsdGlwbGUgcGF0Y2hlcyIKLW1zZ3N0ciAiYmVudXR6dCBbUEFUQ0hdIGF1Y2ggbWl0IG1laHJlcmVuIFBhdGNoZXMiCittc2dzdHIgInZlcndlbmRldCBbUEFUQ0hdIGF1Y2ggbWl0IG1laHJlcmVuIFBhdGNoZXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3NQorIzogYnVpbHRpbi9sb2cuYzoxMTE1CiBtc2dpZCAicHJpbnQgcGF0Y2hlcyB0byBzdGFuZGFyZCBvdXQiCiBtc2dzdHIgIkF1c2dhYmUgZGVyIFBhdGNoZXMgaW4gU3RhbmRhcmQtQXVzZ2FiZSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDc3CisjOiBidWlsdGluL2xvZy5jOjExMTcKIG1zZ2lkICJnZW5lcmF0ZSBhIGNvdmVyIGxldHRlciIKIG1zZ3N0ciAiZXJ6ZXVndCBlaW4gRGVja2JsYXR0IgogCi0jOiBidWlsdGluL2xvZy5jOjEwNzkKKyM6IGJ1aWx0aW4vbG9nLmM6MTExOQogbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKLW1zZ3N0ciAiYmVudXR6dCBlaW5mYWNoZSBOdW1tZXJuZm9sZ2UgZsO8ciBkaWUgTmFtZW4gZGVyIEF1c2dhYmVkYXRlaWVuIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZWluZmFjaGUgTnVtbWVybmZvbGdlIGbDvHIgZGllIE5hbWVuIGRlciBBdXNnYWJlZGF0ZWllbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDgwCisjOiBidWlsdGluL2xvZy5jOjExMjAKIG1zZ2lkICJzZngiCiBtc2dzdHIgIkRhdGVpZW5kdW5nIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODEKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMQogbXNnaWQgInVzZSA8c2Z4PiBpbnN0ZWFkIG9mICcucGF0Y2gnIgogbXNnc3RyICJ2ZXJ3ZW5kZXQgPERhdGVpZW5kdW5nPiBhbnN0YXR0ICcucGF0Y2gnIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODMKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMwogbXNnaWQgInN0YXJ0IG51bWJlcmluZyBwYXRjaGVzIGF0IDxuPiBpbnN0ZWFkIG9mIDEiCiBtc2dzdHIgImJlZ2lubnQgZGllIE51bW1lcmllcnVuZyBkZXIgUGF0Y2hlcyBiZWkgPG4+IGFuc3RhdHQgYmVpIDEiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA4NQotbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKLW1zZ3N0ciAiYmVudXR6dCBbPFByZWZpeD5dIGFuc3RhdHQgW1BBVENIXSIKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNQorbXNnaWQgIm1hcmsgdGhlIHNlcmllcyBhcyBOdGggcmUtcm9sbCIKK21zZ3N0ciAia2VubnplaWNobmV0IGRpZSBTZXJpZSBhbHMgbi10ZSBGYXNzdW5nIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODgKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNworbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKK21zZ3N0ciAidmVyd2VuZGV0IFs8UHJlZml4Pl0gYW5zdGF0dCBbUEFUQ0hdIgorCisjOiBidWlsdGluL2xvZy5jOjExMzAKIG1zZ2lkICJzdG9yZSByZXN1bHRpbmcgZmlsZXMgaW4gPGRpcj4iCiBtc2dzdHIgInNwZWljaGVydCBlcnpldWd0ZSBEYXRlaWVuIGluIDxWZXJ6ZWljaG5pcz4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA5MQorIzogYnVpbHRpbi9sb2cuYzoxMTMzCiBtc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCiBtc2dzdHIgIltQQVRDSF0gd2lyZCBuaWNodCBlbnRmZXJudC9oaW56dWdlZsO8Z3QiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA5NAorIzogYnVpbHRpbi9sb2cuYzoxMTM2CiBtc2dpZCAiZG9uJ3Qgb3V0cHV0IGJpbmFyeSBkaWZmcyIKIG1zZ3N0ciAiZ2lidCBrZWluZSBiaW7DpHJlbiBVbnRlcnNjaGllZGUgYXVzIgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTYKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzOAogbXNnaWQgImRvbid0IGluY2x1ZGUgYSBwYXRjaCBtYXRjaGluZyBhIGNvbW1pdCB1cHN0cmVhbSIKIG1zZ3N0ciAiIgogInNjaGxpZcOfdCBrZWluZSBQYXRjaGVzIGVpbiwgZGllIGVpbmVyIFZlcnNpb24gaW0gw5xiZXJuYWhtZXp3ZWlnIGVudHNwcmVjaGVuIgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTgKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MAogbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKIG1zZ3N0ciAiemVpZ3QgUGF0Y2hmb3JtYXQgYW5zdGF0dCBkZXMgU3RhbmRhcmRzIChQYXRjaCArIFp1c2FtbWVuZmFzc3VuZykiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMAorIzogYnVpbHRpbi9sb2cuYzoxMTQyCiBtc2dpZCAiTWVzc2FnaW5nIgogbXNnc3RyICJFbWFpbC1FaW5zdGVsbHVuZ2VuIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDEKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MwogbXNnaWQgImhlYWRlciIKIG1zZ3N0ciAiSGVhZGVyIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NAogbXNnaWQgImFkZCBlbWFpbCBoZWFkZXIiCiBtc2dzdHIgImbDvGd0IEVtYWlsLUhlYWRlciBoaW56dSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAzIGJ1aWx0aW4vbG9nLmM6MTEwNQorIzogYnVpbHRpbi9sb2cuYzoxMTQ1IGJ1aWx0aW4vbG9nLmM6MTE0NwogbXNnaWQgImVtYWlsIgogbXNnc3RyICJFbWFpbCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAzCisjOiBidWlsdGluL2xvZy5jOjExNDUKIG1zZ2lkICJhZGQgVG86IGhlYWRlciIKIG1zZ3N0ciAiZsO8Z3QgIFwiVG86XCItSGVhZGVyIGhpbnp1IgogCi0jOiBidWlsdGluL2xvZy5jOjExMDUKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NwogbXNnaWQgImFkZCBDYzogaGVhZGVyIgogbXNnc3RyICJmw7xndCBcIkNjOlwiLUhlYWRlciBoaW56dSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTA3CisjOiBidWlsdGluL2xvZy5jOjExNDkKIG1zZ2lkICJtZXNzYWdlLWlkIgogbXNnc3RyICJtZXNzYWdlLWlkIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MAogbXNnaWQgIm1ha2UgZmlyc3QgbWFpbCBhIHJlcGx5IHRvIDxtZXNzYWdlLWlkPiIKIG1zZ3N0ciAibWFjaHQgYXVzIGVyc3RlciBFbWFpbCBlaW5lIEFudHdvcnQgenUgPG1lc3NhZ2UtaWQ+IgogCi0jOiBidWlsdGluL2xvZy5jOjExMDkgYnVpbHRpbi9sb2cuYzoxMTEyCisjOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0CiBtc2dpZCAiYm91bmRhcnkiCiBtc2dzdHIgIkdyZW56ZSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTEwCisjOiBidWlsdGluL2xvZy5jOjExNTIKIG1zZ2lkICJhdHRhY2ggdGhlIHBhdGNoIgogbXNnc3RyICJow6RuZ3QgZWluZW4gUGF0Y2ggYW4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExMworIzogYnVpbHRpbi9sb2cuYzoxMTU1CiBtc2dpZCAiaW5saW5lIHRoZSBwYXRjaCIKIG1zZ3N0ciAiZsO8Z3QgZGVuIFBhdGNoIGRpcmVrdCBpbiBkaWUgTmFjaHJpY2h0IGVpbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTE3CisjOiBidWlsdGluL2xvZy5jOjExNTkKIG1zZ2lkICJlbmFibGUgbWVzc2FnZSB0aHJlYWRpbmcsIHN0eWxlczogc2hhbGxvdywgZGVlcCIKIG1zZ3N0ciAiYWt0aXZpZXJ0IE5hY2hyaWNodGVudmVya2V0dHVuZywgU3RpbGU6IHNoYWxsb3csIGRlZXAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExOQorIzogYnVpbHRpbi9sb2cuYzoxMTYxCiBtc2dpZCAic2lnbmF0dXJlIgogbXNnc3RyICJTaWduYXR1ciIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIwCisjOiBidWlsdGluL2xvZy5jOjExNjIKIG1zZ2lkICJhZGQgYSBzaWduYXR1cmUiCiBtc2dzdHIgImbDvGd0IGVpbmUgU2lnbmF0dXIgaGluenUiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMgorIzogYnVpbHRpbi9sb2cuYzoxMTY0CiBtc2dpZCAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIKIG1zZ3N0ciAiemVpZ3Qga2VpbmUgRGF0ZWluYW1lbiBkZXIgUGF0Y2hlcyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTYzCi0jLCBjLWZvcm1hdAotbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgotbXNnc3RyICJ1bmVjaHRlIEVpbnJlaWNoZXItSW5mb3JtYXRpb25lbiAlcyIKLQotIzogYnVpbHRpbi9sb2cuYzoxMjA4CisjOiBidWlsdGluL2xvZy5jOjEyNDgKIG1zZ2lkICItbiBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCi1tc2dzdHIgIi1uIHVuZCAtayBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLW4gdW5kIC1rIHNjaGxpZcOfZW4gc2ljaCBnZWdlbnNlaXRpZyBhdXMuIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1MAogbXNnaWQgIi0tc3ViamVjdC1wcmVmaXggYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgotbXNnc3RyICItLXN1YmplY3QtcHJlZml4IHVuZCAtayBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLS1zdWJqZWN0LXByZWZpeCB1bmQgLWsgc2NobGllw59lbiBzaWNoIGdlZ2Vuc2VpdGlnIGF1cy4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxOAorIzogYnVpbHRpbi9sb2cuYzoxMjU4CiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKLW1zZ3N0ciAiLS1uYW1lLW9ubHkgbWFjaHQga2VpbmVuIFNpbm4iCittc2dzdHIgIkRpZSBPcHRpb24gLS1uYW1lLW9ubHkga2FubiBuaWNodCB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjIwCisjOiBidWlsdGluL2xvZy5jOjEyNjAKIG1zZ2lkICItLW5hbWUtc3RhdHVzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCi1tc2dzdHIgIi0tbmFtZS1zdGF0dXMgbWFjaHQga2VpbmVuIFNpbm4iCittc2dzdHIgIkRpZSBPcHRpb24gLS1uYW1lLXN0YXR1cyBrYW5uIG5pY2h0IHZlcndlbmRldCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMjIKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MgogbXNnaWQgIi0tY2hlY2sgZG9lcyBub3QgbWFrZSBzZW5zZSIKLW1zZ3N0ciAiLS1jaGVjayBtYWNodCBrZWluZW4gU2lubiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWNoZWNrIGthbm4gbmljaHQgdmVyd2VuZGV0IHdlcmRlbi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI0NQorIzogYnVpbHRpbi9sb2cuYzoxMjg1CiBtc2dpZCAic3RhbmRhcmQgb3V0cHV0LCBvciBkaXJlY3RvcnksIHdoaWNoIG9uZT8iCiBtc2dzdHIgIlN0YW5kYXJkLUF1c2dhYmUgb2RlciBWZXJ6ZWljaG5pcywgd2VsY2hlcyB2b24gYmVpZGVtPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjQ3CisjOiBidWlsdGluL2xvZy5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAiS29ubnRlIFZlcnplaWNobmlzICclcycgbmljaHQgZXJzdGVsbGVuLiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDAwCisjOiBidWlsdGluL2xvZy5jOjE0MzUKIG1zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIG91dHB1dCBmaWxlcyIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gRXJzdGVsbGVuIGRlciBBdXNnYWJlZGF0ZWllbi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQ0OQorIzogYnVpbHRpbi9sb2cuYzoxNDg0CiBtc2dpZCAiZ2l0IGNoZXJyeSBbLXZdIFs8dXBzdHJlYW0+IFs8aGVhZD4gWzxsaW1pdD5dXV0iCiBtc2dzdHIgImdpdCBjaGVycnkgWy12XSBbPMOcYmVybmFobWV6d2VpZz4gWzxBcmJlaXRzendlaWc+IFs8TGltaXQ+XV1dIgogCi0jOiBidWlsdGluL2xvZy5jOjE1MDQKKyM6IGJ1aWx0aW4vbG9nLmM6MTUzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGZpbmQgYSB0cmFja2VkIHJlbW90ZSBicmFuY2gsIHBsZWFzZSBzcGVjaWZ5IDx1cHN0cmVhbT4gbWFudWFsbHkuXG4iCiBtc2dzdHIgIiIKLSJLb25udGUgZ2Vmb2xndGVuLCBleHRlcm5lbiBad2VpZyBuaWNodCBmaW5kZW4sIGJpdHRlIGdlYmUgPHVwc3RyZWFtPiBtYW51ZWxsICIKLSJhbi5cbiIKKyJLb25udGUgZ2Vmb2xndGVuLCBleHRlcm5lbiBad2VpZyBuaWNodCBmaW5kZW4sIGJpdHRlIGdlYmVuIFNpZSA8dXBzdHJlYW0+ICIKKyJtYW51ZWxsIGFuLlxuIgogCi0jOiBidWlsdGluL2xvZy5jOjE1MTcgYnVpbHRpbi9sb2cuYzoxNTE5IGJ1aWx0aW4vbG9nLmM6MTUzMQorIzogYnVpbHRpbi9sb2cuYzoxNTUyIGJ1aWx0aW4vbG9nLmM6MTU1NCBidWlsdGluL2xvZy5jOjE1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBjb21taXQgJXMiCiBtc2dzdHIgIlVuYmVrYW5udGUgVmVyc2lvbiAlcyIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQwOAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQwMgogbXNnaWQgImdpdCBscy1maWxlcyBbb3B0aW9uc10gWzxmaWxlPi4uLl0iCiBtc2dzdHIgImdpdCBscy1maWxlcyBbT3B0aW9uZW5dIFs8RGF0ZWk+Li4uXSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ1OQogbXNnaWQgImlkZW50aWZ5IHRoZSBmaWxlIHN0YXR1cyB3aXRoIHRhZ3MiCiBtc2dzdHIgInplaWd0IGRlbiBEYXRlaXN0YXR1cyBtaXQgTWFya2llcnVuZ2VuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDY1CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCiBtc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCi1tc2dzdHIgImJlbnV0enQgS2xlaW5idWNoc3RhYmVuIGbDvHIgRGF0ZWllbiBtaXQgJ2Fzc3VtZSB1bmNoYW5nZWQnIE1hcmtpZXJ1bmciCittc2dzdHIgIiIKKyJ2ZXJ3ZW5kZXQgS2xlaW5idWNoc3RhYmVuIGbDvHIgRGF0ZWllbiBtaXQgJ2Fzc3VtZSB1bmNoYW5nZWQnIE1hcmtpZXJ1bmciCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKIG1zZ2lkICJzaG93IGNhY2hlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IChkZWZhdWx0KSIKIG1zZ3N0ciAiemVpZ3Qgendpc2NoZW5nZXNwZWljaGVydGVuIERhdGVpZW4gaW4gZGVyIEF1c2dhYmUgYW4gKFN0YW5kYXJkKSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2OQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQogbXNnaWQgInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJ6ZWlndCBlbnRmZXJudGUgRGF0ZWllbiBpbiBkZXIgQXVzZ2FiZSBhbiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NwogbXNnaWQgInNob3cgbW9kaWZpZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiemVpZ3QgZ2XDpG5kZXJ0ZSBEYXRlaWVuIGluIGRlciBBdXNnYWJlIGFuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDczCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5CiBtc2dpZCAic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJ6ZWlndCBzb25zdGlnZSBEYXRlaWVuIGluIGRlciBBdXNnYWJlIGFuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc1CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDcxCiBtc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgInplaWd0IGlnbm9yaWVydGUgRGF0ZWllbiBpbiBkZXIgQXVzZ2FiZSBhbiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3OAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NAogbXNnaWQgInNob3cgc3RhZ2VkIGNvbnRlbnRzJyBvYmplY3QgbmFtZSBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJ6ZWlndCBPYmpla3RuYW1lbiB2b24gSW5oYWx0ZW4gaW4gZGVyIEJlcmVpdHN0ZWxsdW5nIGluIGRlciBBdXNnYWJlIGFuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDgwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2CiBtc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKIG1zZ3N0ciAiemVpZ3QgRGF0ZWllbiBpbSBEYXRlaXN5c3RlbSwgZGllIGdlbMO2c2NodCB3ZXJkZW4gbcO8c3NlbiwgYW4iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODIKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzgKIG1zZ2lkICJzaG93ICdvdGhlcicgZGlyZWN0b3JpZXMnIG5hbWUgb25seSIKIG1zZ3N0ciAiemVpZ3QgbnVyIE5hbWVuIHZvbiAnc29uc3RpZ2VuJyBWZXJ6ZWljaG5pc3NlbiBhbiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQogbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCiBtc2dzdHIgInplaWd0IGtlaW5lIGxlZXJlbiBWZXJ6ZWljaG5pc3NlIGFuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg0CiBtc2dpZCAic2hvdyB1bm1lcmdlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJ6ZWlndCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBEYXRlaWVuIGluIGRlciBBdXNnYWJlIGFuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg2CiBtc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCiBtc2dzdHIgInplaWd0ICdyZXNvbHZlLXVuZG8nIEluZm9ybWF0aW9uZW4gYW4iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTIKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKIG1zZ2lkICJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iCiBtc2dzdHIgImzDpHNzdCBEYXRlaWVuIGF1cywgZGllIGVpbmVtIE11c3RlciBlbnRzcHJlY2hlbiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MQogbXNnaWQgImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iCiBtc2dzdHIgInNjaGxpZcOfdCBNdXN0ZXIsIGdlbGVzZW4gdm9uIDxEYXRlaT4sIGF1cyIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NAogbXNnaWQgInJlYWQgYWRkaXRpb25hbCBwZXItZGlyZWN0b3J5IGV4Y2x1ZGUgcGF0dGVybnMgaW4gPGZpbGU+IgogbXNnc3RyICJsaWVzdCB6dXPDpHR6bGljaGUgcHJvLVZlcnplaWNobmlzIEF1c2NobHVzc211c3RlciBhdXMgPERhdGVpPiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgogbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCiBtc2dzdHIgImbDvGd0IGRpZSBzdGFuZGFyZG3DpMOfaWdlbiBHaXQtQXVzc2NobMO8c3NlIGhpbnp1IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTAzCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk5CiBtc2dpZCAibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiCiBtc2dzdHIgIkF1c2dhYmUgcmVsYXRpdiB6dW0gUHJvamVrdHZlcnplaWNobmlzIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCiBtc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgogbXNnc3RyICIiCiAiYmVoYW5kbGUgZXMgYWxzIEZlaGxlciwgd2VubiBzaWNoIGVpbmUgPERhdGVpPiBuaWNodCBpbiBkZXIgQmVyZWl0c3RlbGx1bmcgIgogImJlZmluZGV0IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAzCiBtc2dpZCAidHJlZS1pc2giCiBtc2dzdHIgIlZlcnNpb25zcmVmZXJlbnoiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDQKIG1zZ2lkICJwcmV0ZW5kIHRoYXQgcGF0aHMgcmVtb3ZlZCBzaW5jZSA8dHJlZS1pc2g+IGFyZSBzdGlsbCBwcmVzZW50IgogbXNnc3RyICIiCiAiZ2lidCB2b3IsIGRhc3MgUGZhZGUsIGRpZSBzZWl0IDxWZXJzaW9uc3JlZmVyZW56PiBnZWzDtnNjaHQgd3VyZGVuLCBpbW1lciAiCiAibm9jaCB2b3JoYW5kZW4gc2luZCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUxMAorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNgogbXNnaWQgInNob3cgZGVidWdnaW5nIGRhdGEiCiBtc2dzdHIgInplaWd0IEF1c2dhYmVuIHp1ciBGZWhsZXJzdWNoZSBhbiIKIApAQCAtNTc3MCw3ICs2Mjg1LDcgQEAKIAogIzogYnVpbHRpbi9scy10cmVlLmM6MTQwCiBtc2dpZCAidXNlIGZ1bGwgcGF0aCBuYW1lcyIKLW1zZ3N0ciAiYmVudXR6dCB2b2xsc3TDpG5kaWdlIFBmYWRuYW1lbiIKK21zZ3N0ciAidmVyd2VuZGV0IHZvbGxzdMOkbmRpZ2UgUGZhZG5hbWVuIgogCiAjOiBidWlsdGluL2xzLXRyZWUuYzoxNDIKIG1zZ2lkICJsaXN0IGVudGlyZSB0cmVlOyBub3QganVzdCBjdXJyZW50IGRpcmVjdG9yeSAoaW1wbGllcyAtLWZ1bGwtbmFtZSkiCkBAIC01ODUyLDI3MyArNjM2NywzMDIgQEAKIG1zZ2lkICJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIgogbXNnc3RyICJicmljaHQgYWIsIHdlbm4ga2VpbiBWb3JzcHVsZW4gbcO2Z2xpY2ggaXN0IgogCi0jOiBidWlsdGluL21lcmdlLmM6MjAyIGJ1aWx0aW4vbm90ZXMuYzo4NzAgYnVpbHRpbi9yZXZlcnQuYzoxMTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDMKK21zZ2lkICJWZXJpZnkgdGhhdCB0aGUgbmFtZWQgY29tbWl0IGhhcyBhIHZhbGlkIEdQRyBzaWduYXR1cmUiCittc2dzdHIgIsO8YmVycHLDvGZ0IGRpZSBnZW5hbm50ZSBWZXJzaW9uIGF1ZiBlaW5lIGfDvGx0aWdlIEdQRy1TaWduYXR1ciIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNCBidWlsdGluL25vdGVzLmM6ODY2IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCiBtc2dpZCAic3RyYXRlZ3kiCiBtc2dzdHIgIlN0cmF0ZWdpZSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwMworIzogYnVpbHRpbi9tZXJnZS5jOjIwNQogbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKIG1zZ3N0ciAienUgdmVyd2VuZGVuZGUgWnVzYW1tZW5mw7xocnVuZ3NzdHJhdGVnaWUiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKIG1zZ2lkICJvcHRpb249dmFsdWUiCiBtc2dzdHIgIk9wdGlvbj1XZXJ0IgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA1CisjOiBidWlsdGluL21lcmdlLmM6MjA3CiBtc2dpZCAib3B0aW9uIGZvciBzZWxlY3RlZCBtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAiT3B0aW9uIGbDvHIgYXVzZ2V3w6RobHRlIFp1c2FtbWVuZsO8aHJ1bmdzc3RyYXRlZ2llIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA3CisjOiBidWlsdGluL21lcmdlLmM6MjA5CiBtc2dpZCAibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIgogbXNnc3RyICIiCiAiZsO8aHJ0IFZlcnNpb25zYmVzY2hyZWlidW5nIHp1c2FtbWVuIChmw7xyIGVpbmUgWnVzYW1tZW5mw7xocnVuZywgZGllIGtlaW4gIgogIlZvcnNwdWxlbiB3YXIpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjExCisjOiBidWlsdGluL21lcmdlLmM6MjEzCiBtc2dpZCAiYWJvcnQgdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgbWVyZ2UiCiBtc2dzdHIgImJyaWNodCBkaWUgc2ljaCBpbSBHYW5nZSBiZWZpbmRsaWNoZSBadXNhbW1lbmbDvGhydW5nIGFiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQwCisjOiBidWlsdGluL21lcmdlLmM6MjQyCiBtc2dpZCAiY291bGQgbm90IHJ1biBzdGFzaC4iCiBtc2dzdHIgIktvbm50ZSBcInN0YXNoXCIgbmljaHQgYXVzZsO8aHJlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDcKIG1zZ2lkICJzdGFzaCBmYWlsZWQiCiBtc2dzdHIgIlwic3Rhc2hcIiBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MAorIzogYnVpbHRpbi9tZXJnZS5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICJrZWluIGfDvGx0aWdlcyBPYmpla3Q6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjY5IGJ1aWx0aW4vbWVyZ2UuYzoyODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNzEgYnVpbHRpbi9tZXJnZS5jOjI4OAogbXNnaWQgInJlYWQtdHJlZSBmYWlsZWQiCiBtc2dzdHIgInJlYWQtdHJlZSBmZWhsZ2VzY2hsYWdlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMxNgorIzogYnVpbHRpbi9tZXJnZS5jOjMxOAogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIgKG5pY2h0cyB6dSBxdWV0c2NoZW4pIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiUXVldHNjaGUgVmVyc2lvbiAtLSBad2VpZ3NwaXR6ZSAoSEVBRCkgd2lyZCBuaWNodCBha3R1YWxpc2llcnRcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MQorIzogYnVpbHRpbi9tZXJnZS5jOjM2MwogbXNnaWQgIldyaXRpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAiU2NocmVpYmUgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MworIzogYnVpbHRpbi9tZXJnZS5jOjM2NQogbXNnaWQgIkZpbmlzaGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICJTY2hsaWXDn2UgU1FVQVNIX01TRyBhYiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM4NgorIzogYnVpbHRpbi9tZXJnZS5jOjM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIiIKICJLZWluZSBadXNhbW1lbmbDvGhydW5nc2Jlc2NocmVpYnVuZyAtLSBad2VpZ3NwaXR6ZSAoSEVBRCkgd2lyZCBuaWNodCAiCiAiYWt0dWFsaXNpZXJ0XG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKIG1zZ3N0ciAiJyVzJyB6ZWlndCBhdWYga2VpbmUgVmVyc2lvbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjUzNQorIzogYnVpbHRpbi9tZXJnZS5jOjU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucyBzdHJpbmc6ICVzIgogbXNnc3RyICJVbmfDvGx0aWdlciBicmFuY2guJXMubWVyZ2VvcHRpb25zIFN0cmluZzogJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2MjgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBmYWlsZWQgdG8gd3JpdGUgYSB0cmVlIgogbXNnc3RyICJcImdpdCB3cml0ZS10cmVlXCIgc2NobHVnIGJlaW0gU2NocmVpYmVuIGVpbmVzIEJhdW1lcyBmZWhsIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjU2CisjOiBidWlsdGluL21lcmdlLmM6NjcxCiBtc2dpZCAiTm90IGhhbmRsaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gdHdvIGhlYWRzIG1lcmdlLiIKIG1zZ3N0ciAiRXMgd2lyZCBudXIgZGllIFp1c2FtbWVuZsO8aHJ1bmcgdm9uIHp3ZWkgWndlaWdlbiBiZWhhbmRlbHQuIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjcwCisjOiBidWlsdGluL21lcmdlLmM6Njg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gb3B0aW9uIGZvciBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiBtc2dzdHIgIlVuYmVrYW5udGUgT3B0aW9uIGbDvHIgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6Njg0CisjOiBidWlsdGluL21lcmdlLmM6Njk5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSAlcyIKIG1zZ3N0ciAia29ubnRlICVzIG5pY2h0IHNjaHJlaWJlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc3MworIzogYnVpbHRpbi9tZXJnZS5jOjc4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBmcm9tICclcyciCiBtc2dzdHIgImtvbm50ZSBuaWNodCB2b24gJyVzJyBsZXNlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc4MgorIzogYnVpbHRpbi9tZXJnZS5jOjc5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgY29tbWl0dGluZyBtZXJnZTsgdXNlICdnaXQgY29tbWl0JyB0byBjb21wbGV0ZSB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKLSJadXNhbW1lbmbDvGhydW5nIHd1cmRlIG5pY2h0IGVpbmdldHJhZ2VuOyBiZW51dHplICdnaXQgY29tbWl0JyB1bSBkaWUgIgorIlp1c2FtbWVuZsO8aHJ1bmcgd3VyZGUgbmljaHQgZWluZ2V0cmFnZW47IGJlbnV0emVuIFNpZSAnZ2l0IGNvbW1pdCcgdW0gZGllICIKICJadXNhbW1lbmbDvGhydW5nIGFienVzY2hsaWXDn2VuLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6Nzg4CisjOiBidWlsdGluL21lcmdlLmM6ODAzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgYSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoeSB0aGlzIG1lcmdlIGlzIG5lY2Vzc2FyeSxcbiIKICJlc3BlY2lhbGx5IGlmIGl0IG1lcmdlcyBhbiB1cGRhdGVkIHVwc3RyZWFtIGludG8gYSB0b3BpYyBicmFuY2guXG4iCiAiXG4iCi0iTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHNcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHNcbiIKICJ0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCi0iQml0dGUgZ2ViZSBlaW5lIFZlcnNpb25zYmVzY2hyZWlidW5nIGVpbiB1bSB6dSBlcmtsw6RyZW4sIHdhcnVtIGRpZXNlICIKKyJCaXR0ZSBnZWJlbiBTaWUgZWluZSBWZXJzaW9uc2Jlc2NocmVpYnVuZyBlaW4gdW0genUgZXJrbMOkcmVuLCB3YXJ1bSBkaWVzZSAiCiAiWnVzYW1tZW5mw7xocnVuZyBlcmZvcmRlcmxpY2ggaXN0LFxuIgogImluc2Jlc29uZGVyZSB3ZW5uIGVzIGVpbmVuIGFrdHVhbGlzaWVydGVuLCBleHRlcm5lbiBad2VpZyBtaXQgZWluZW0gVGhlbWEtIgogIlp3ZWlnIHp1c2FtbWVuZsO8aHJ0LlxuIgogIlxuIgotIlplaWxlbiBiZWdpbm5lbmQgbWl0ICcjJyB3ZXJkZW4gaWdub3JpZXJ0LCB1bmQgZWluZSBsZWVyZSBCZXNjaHJlaWJ1bmcgIgorIlplaWxlbiBiZWdpbm5lbmQgbWl0ICclYycgd2VyZGVuIGlnbm9yaWVydCwgdW5kIGVpbmUgbGVlcmUgQmVzY2hyZWlidW5nICIKICJicmljaHQgZGllIEVpbnRyYWd1bmcgYWIuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjcKIG1zZ2lkICJFbXB0eSBjb21taXQgbWVzc2FnZS4iCiBtc2dzdHIgIkxlZXJlIFZlcnNpb25zYmVzY2hyZWlidW5nIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODI0CisjOiBidWlsdGluL21lcmdlLmM6ODM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIldvbmRlcmZ1bC5cbiIKIG1zZ3N0ciAiV3VuZGVyYmFyLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODg5CisjOiBidWlsdGluL21lcmdlLmM6OTA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSBmYWlsZWQ7IGZpeCBjb25mbGljdHMgYW5kIHRoZW4gY29tbWl0IHRoZSByZXN1bHQuXG4iCiBtc2dzdHIgIiIKLSJBdXRvbWF0aXNjaGUgWnVzYW1tZW5mw7xocnVuZyBmZWhsZ2VzY2hsYWdlbjsgYmVoZWJlIGRpZSBLb25mbGlrdGUgdW5kIHRyYWdlICIKLSJkYW5uIGRhcyBFcmdlYm5pcyBlaW4uXG4iCisiQXV0b21hdGlzY2hlIFp1c2FtbWVuZsO8aHJ1bmcgZmVobGdlc2NobGFnZW47IGJlaGViZW4gU2llIGRpZSBLb25mbGlrdGUgdW5kICIKKyJ0cmFnZW4gU2llIGRhbm4gZGFzIEVyZ2VibmlzIGVpbi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkwNQorIzogYnVpbHRpbi9tZXJnZS5jOjkyMAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGlzIG5vdCBhIGNvbW1pdCIKIG1zZ3N0ciAiJyVzJyBpc3Qga2VpbmUgVmVyc2lvbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk0NgorIzogYnVpbHRpbi9tZXJnZS5jOjk2MQogbXNnaWQgIk5vIGN1cnJlbnQgYnJhbmNoLiIKLW1zZ3N0ciAiRHUgYmVmaW5kZXN0IGRpY2ggYXVmIGtlaW5lbSBad2VpZy4iCittc2dzdHIgIlNpZSBiZWZpbmRlbiBzaWNoIGF1ZiBrZWluZW0gWndlaWcuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTQ4CisjOiBidWlsdGluL21lcmdlLmM6OTYzCiBtc2dpZCAiTm8gcmVtb3RlIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICJLZWluIGV4dGVybmVzIEFyY2hpdiBmw7xyIGRlbiBha3R1ZWxsZW4gWndlaWcuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTUwCisjOiBidWlsdGluL21lcmdlLmM6OTY1CiBtc2dpZCAiTm8gZGVmYXVsdCB1cHN0cmVhbSBkZWZpbmVkIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICIiCiAiRXMgaXN0IGtlaW4gZXh0ZXJuZXMgU3RhbmRhcmQtUHJvamVrdGFyY2hpdiBmw7xyIGRlbiBha3R1ZWxsZW4gWndlaWcgIgogImRlZmluaWVydC4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NTUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiS2VpbiBleHRlcm5lciDDnGJlcm5haG1lendlaWcgZsO8ciAlcyB2b24gJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDQyIGJ1aWx0aW4vbWVyZ2UuYzoxMTk5CisjOiBidWlsdGluL21lcmdlLmM6MTA1NyBidWlsdGluL21lcmdlLmM6MTIxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIgogbXNnc3RyICIlcyAtIG5pY2h0cyB3YXMgd2lyIHp1c2FtbWVuZsO8aHJlbiBrw7ZubmVuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTExMAorIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKIG1zZ2lkICJUaGVyZSBpcyBubyBtZXJnZSB0byBhYm9ydCAoTUVSR0VfSEVBRCBtaXNzaW5nKS4iCiBtc2dzdHIgIkVzIGdpYnQga2VpbmUgWnVzYW1tZW5mw7xocnVuZyB6dW0gQWJicmVjaGVuICh2ZXJtaXNzZSBNRVJHRV9IRUFEKSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMjYgZ2l0LXB1bGwuc2g6MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQxIGdpdC1wdWxsLnNoOjMxCiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCiBtc2dzdHIgIiIKLSJEdSBoYXN0IGRlaW5lIFp1c2FtbWVuZsO8aHJ1bmcgbmljaHQgYWJnZXNjaGxvc3NlbiAoTUVSR0VfSEVBRCBleGlzdGllcnQpLlxuIgotIkJpdHRlIHRyYWdlIGRlaW5lIMOEbmRlcnVuZ2VuIGVpbiwgYmV2b3IgZHUgenVzYW1tZW5mw7xocmVuIGthbm5zdC4iCisiU2llIGhhYmVuIElocmUgWnVzYW1tZW5mw7xocnVuZyBuaWNodCBhYmdlc2NobG9zc2VuIChNRVJHRV9IRUFEIGV4aXN0aWVydCkuXG4iCisiQml0dGUgdHJhZ2VuIFNpZSBJaHJlIMOEbmRlcnVuZ2VuIGVpbiwgYmV2b3IgU2llIHp1c2FtbWVuZsO8aHJlbiBrw7ZubmVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMjkgZ2l0LXB1bGwuc2g6MzQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuIgogbXNnc3RyICIiCi0iRHUgaGFzdCBkZWluZSBadXNhbW1lbmbDvGhydW5nIG5pY2h0IGFiZ2VzY2hsb3NzZW4gKE1FUkdFX0hFQUQgZXhpc3RpZXJ0KS4iCisiU2llIGhhYmVuIElocmUgWnVzYW1tZW5mw7xocnVuZyBuaWNodCBhYmdlc2NobG9zc2VuIChNRVJHRV9IRUFEIGV4aXN0aWVydCkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTEzMworIzogYnVpbHRpbi9tZXJnZS5jOjExNDgKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKIG1zZ3N0ciAiIgotIkR1IGhhc3QgXCJjaGVycnktcGlja1wiIG5pY2h0IGFiZ2VzY2hsb3NzZW4gKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RpZXJ0KS5cbiIKLSJCaXR0ZSB0cmFnZSBkZWluZSDDhG5kZXJ1bmdlbiBlaW4sIGJldm9yIGR1IHp1c2FtbWVuZsO8aHJlbiBrYW5uc3QuIgorIlNpZSBoYWJlbiBcImNoZXJyeS1waWNrXCIgbmljaHQgYWJnZXNjaGxvc3NlbiAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdGllcnQpLlxuIgorIkJpdHRlIHRyYWdlbiBTaWUgSWhyZSDDhG5kZXJ1bmdlbiBlaW4sIGJldm9yIFNpZSB6dXNhbW1lbmbDvGhyZW4ga8O2bm5lbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTM2CisjOiBidWlsdGluL21lcmdlLmM6MTE1MQogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiIgotIkR1IGhhc3QgXCJjaGVycnktcGlja1wiIG5pY2h0IGFiZ2VzY2hsb3NzZW4gKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RpZXJ0KS4iCisiU2llIGhhYmVuIFwiY2hlcnJ5LXBpY2tcIiBuaWNodCBhYmdlc2NobG9zc2VuIChDSEVSUllfUElDS19IRUFEIGV4aXN0aWVydCkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0NQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKLW1zZ3N0ciAiRHUga2FubnN0IC0tc3F1YXNoIG5pY2h0IG1pdCAtLW5vLWZmIGtvbWJpbmllcmVuLiIKK21zZ3N0ciAiU2llIGvDtm5uZW4gLS1zcXVhc2ggbmljaHQgbWl0IC0tbm8tZmYga29tYmluaWVyZW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE1MAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCi1tc2dzdHIgIkR1IGthbm5zdCAtLW5vLWZmIG5pY2h0IG1pdCAtLWZmLS1vbmx5IGtvbWJpbmllcmVuLiIKK21zZ3N0ciAiU2llIGvDtm5uZW4gLS1uby1mZiBuaWNodCBtaXQgLS1mZi0tb25seSBrb21iaW5pZXJlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTU3CisjOiBidWlsdGluL21lcmdlLmM6MTE3MgogbXNnaWQgIk5vIGNvbW1pdCBzcGVjaWZpZWQgYW5kIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIG5vdCBzZXQuIgogbXNnc3RyICJLZWluZSBWZXJzaW9uIGFuZ2VnZWJlbiB1bmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gaXN0IG5pY2h0IGdlc2V0enQuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE4OQorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDQKIG1zZ2lkICJDYW4gbWVyZ2Ugb25seSBleGFjdGx5IG9uZSBjb21taXQgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLYW5uIG51ciBleGFrdCBlaW5lIFZlcnNpb24gaW4gZWluZW0gbGVlcmVuIFp3ZWlnIHp1c2FtbWVuZsO8aHJlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTkyCisjOiBidWlsdGluL21lcmdlLmM6MTIwNwogbXNnaWQgIlNxdWFzaCBjb21taXQgaW50byBlbXB0eSBoZWFkIG5vdCBzdXBwb3J0ZWQgeWV0IgogbXNnc3RyICJCaW4gYXVmIGVpbmVtIFp3ZWlnLCBkZXIgbm9jaCBnZWJvcmVuIHdpcmQ7IGthbm4gbmljaHQgcXVldHNjaGVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExOTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CiBtc2dpZCAiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvIGFuIGVtcHR5IGhlYWQiCi1tc2dzdHIgIm5pY2h0IHZvcnp1c3B1bGVuZGUgVmVyc2lvbiBtYWNodCBpbiBlaW5lbSBsZWVyZW4gWndlaWcga2VpbmVuIFNpbm4iCittc2dzdHIgIiIKKyJOaWNodCB2b3J6dXNwdWxlbmRlIFZlcnNpb24ga2FubiBuaWNodCBpbiBlaW5lbSBsZWVyZW4gWndlaWcgdmVyd2VuZGV0ICIKKyJ3ZXJkZW4uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTMwOQorIzogYnVpbHRpbi9tZXJnZS5jOjEyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorIlZlcnNpb24gJXMgaGF0IGVpbmUgbmljaHQgdmVydHJhdWVuc3fDvHJkaWdlIEdQRy1TaWduYXR1ciwgYW5nZWJsaWNoIHZvbiAlcy4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBiYWQgR1BHIHNpZ25hdHVyZSBhbGxlZ2VkbHkgYnkgJXMuIgorbXNnc3RyICJWZXJzaW9uICVzIGhhdCBlaW5lIHVuZ8O8bHRpZ2UgR1BHLVNpZ25hdHVyLCBhbmdlYmxpY2ggdm9uICVzLiIKKworIy4gJ04nCisjOiBidWlsdGluL21lcmdlLmM6MTI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgorbXNnc3RyICJWZXJzaW9uICVzIGhhdCBrZWluZSBHUEctU2lnbmF0dXIuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTI3NAorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIGJ5ICVzXG4iCittc2dzdHIgIlZlcnNpb24gJXMgaGF0IGVpbmUgZ8O8bHRpZ2UgR1BHLVNpZ25hdHVyIHZvbiAlc1xuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyAlcy4uJXNcbiIKIG1zZ3N0ciAiQWt0dWFsaXNpZXJlICVzLi4lc1xuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTM0OAorIzogYnVpbHRpbi9tZXJnZS5jOjEzOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIHJlYWxseSB0cml2aWFsIGluLWluZGV4IG1lcmdlLi4uXG4iCiBtc2dzdHIgIlByb2JpZXJlIHdpcmtsaWNoIHRyaXZpYWxlIFwiaW4taW5kZXhcIi1adXNhbW1lbmbDvGhydW5nLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU1CisjOiBidWlsdGluL21lcmdlLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICJOZWluLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTM4NworIzogYnVpbHRpbi9tZXJnZS5jOjE0MzYKIG1zZ2lkICJOb3QgcG9zc2libGUgdG8gZmFzdC1mb3J3YXJkLCBhYm9ydGluZy4iCiBtc2dzdHIgIlZvcnNwdWxlbiBuaWNodCBtw7ZnbGljaCwgYnJlY2hlIGFiLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTAgYnVpbHRpbi9tZXJnZS5jOjE0ODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICJSw7xja2xhdWYgZGVzIFp3ZWlnZXMgYmlzIHp1bSBVcnNwcnVuZy4uLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQxNAorIzogYnVpbHRpbi9tZXJnZS5jOjE0NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIG1lcmdlIHN0cmF0ZWd5ICVzLi4uXG4iCiBtc2dzdHIgIlByb2JpZXJlIFp1c2FtbWVuZsO8aHJ1bmdzc3RyYXRlZ2llICVzLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDgwCisjOiBidWlsdGluL21lcmdlLmM6MTUyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBzdHJhdGVneSBoYW5kbGVkIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAiS2VpbmUgWnVzYW1tZW5mw7xocnVuZ3NzdHJhdGVnaWUgYmVoYW5kZWx0IGRpZXNlIFp1c2FtbWVuZsO8aHJ1bmcuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDgyCisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAiWnVzYW1tZW5mw7xocnVuZyBtaXQgU3RyYXRlZ2llICVzIGZlaGxnZXNjaGxhZ2VuLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ5MQorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCi1tc2dzdHIgIkJlbnV0emUgXCIlc1wiIHVtIGRpZSBBdWZsw7ZzdW5nIHBlciBIYW5kIHZvcnp1YmVyZWl0ZW4uXG4iCittc2dzdHIgIkJlbnV0emVuIFNpZSBcIiVzXCIgdW0gZGllIEF1ZmzDtnN1bmcgcGVyIEhhbmQgdm9yenViZXJlaXRlbi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MDMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSB3ZW50IHdlbGw7IHN0b3BwZWQgYmVmb3JlIGNvbW1pdHRpbmcgYXMgcmVxdWVzdGVkXG4iCiBtc2dzdHIgIiIKQEAgLTYxNTEsNyArNjY5NSw3IEBACiAKICM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMAogbXNnaWQgImxpc3QgcmV2cyBub3QgcmVhY2hhYmxlIGZyb20gb3RoZXJzIgotbXNnc3RyICJsaXN0ZXQgUmV2aXNpb25lbiBhdWYsIGRpZSBuaWNodCBkdXJjaCBBbmRlcmUgZXJyZWljaGJhciBzaW5kIgorbXNnc3RyICJsaXN0ZXQgVmVyc2lvbmVuIGF1ZiwgZGllIG5pY2h0IGR1cmNoIEFuZGVyZSBlcnJlaWNoYmFyIHNpbmQiCiAKICM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMgogbXNnaWQgImlzIHRoZSBmaXJzdCBvbmUgYW5jZXN0b3Igb2YgdGhlIG90aGVyPyIKQEAgLTYxNzEsNyArNjcxNSw3IEBACiAKICM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM0CiBtc2dpZCAidXNlIGEgZGlmZjMgYmFzZWQgbWVyZ2UiCi1tc2dzdHIgImJlbnV0enQgZWluZSBkaWZmMyBiYXNpZXJ0ZSBadXNhbW1lbmbDvGhydW5nIgorbXNnc3RyICJ2ZXJ3ZW5kZXQgZWluZSBkaWZmMyBiYXNpZXJ0ZSBadXNhbW1lbmbDvGhydW5nIgogCiAjOiBidWlsdGluL21lcmdlLWZpbGUuYzozNQogbXNnaWQgImZvciBjb25mbGljdHMsIHVzZSBvdXIgdmVyc2lvbiIKQEAgLTYzMDUsMTEgKzY4NDksMTEgQEAKIAogIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzMAogbXNnaWQgIm9ubHkgdXNlIHRhZ3MgdG8gbmFtZSB0aGUgY29tbWl0cyIKLW1zZ3N0ciAiYmVudXR6dCBudXIgTWFya2llcnVuZ2VuIHVtIGRpZSBWZXJzaW9uZW4genUgYmVuZW5uZW4iCittc2dzdHIgInZlcndlbmRldCBudXIgTWFya2llcnVuZ2VuIHVtIGRpZSBWZXJzaW9uZW4genUgYmVuZW5uZW4iCiAKICM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzIKIG1zZ2lkICJvbmx5IHVzZSByZWZzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKLW1zZ3N0ciAiYmVudXR6dCBudXIgUmVmZXJlbnplbiBkaWUgPE11c3Rlcj4gZW50c3ByZWNoZW4iCittc2dzdHIgInZlcndlbmRldCBudXIgUmVmZXJlbnplbiBkaWUgPE11c3Rlcj4gZW50c3ByZWNoZW4iCiAKICM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzQKIG1zZ2lkICJsaXN0IGFsbCBjb21taXRzIHJlYWNoYWJsZSBmcm9tIGFsbCByZWZzIgpAQCAtNjQzNSw4MSArNjk3OSw3NyBAQAogbXNnaWQgImdpdCBub3RlcyBnZXQtcmVmIgogbXNnc3RyICJnaXQgbm90ZXMgZ2V0LXJlZiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjEzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAia29ubnRlICdzaG93JyBmw7xyIE9iamVrdCAnJXMnIG5pY2h0IHN0YXJ0ZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNDgKLW1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKLW1zZ3N0ciAia29ubnRlIERhdGVpLURlc2tyaXB0b3IgZsO8ciBBdXNnYWJlIHZvbiAnc2hvdycgbmljaHQgw7ZmZm5lbiIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNDMKK21zZ2lkICJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IgorbXNnc3RyICJLb25udGUgQXVzZ2FiZSB2b24gJ3Nob3cnIG5pY2h0IGxlc2VuLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE1OAotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgotbXNnc3RyICJTY2hsaWXDn2VuIGRlciBWZXJiaW5kdW5nIHp1ICdzaG93JyBpc3QgZsO8ciBPYmpla3QgJyVzJyBmZWhsZ2VzY2hsYWdlbi4iCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNjEKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGZpbmlzaCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICJrb25udGUgJ3Nob3cnIGbDvHIgT2JqZWt0ICclcycgbmljaHQgYWJzY2hsaWXDn2VuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTc4IGJ1aWx0aW4vdGFnLmM6MzQ3CisjOiBidWlsdGluL25vdGVzLmM6MTY5IGJ1aWx0aW4vdGFnLmM6MzQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgZmlsZSAnJXMnIgogbXNnc3RyICJrb25udGUgRGF0ZWkgJyVzJyBuaWNodCBlcnN0ZWxsZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxOTIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCi1tc2dzdHIgIkJpdHRlIGxpZWZlcmUgZGVuIE5vdGl6LUluaGFsdCB1bnRlciBWZXJ3ZW5kdW5nIGRlciBPcHRpb24gLW0gb2RlciAtRi4iCittc2dzdHIgIiIKKyJCaXR0ZSBsaWVmZXJuIFNpZSBkZW4gTm90aXotSW5oYWx0IHVudGVyIFZlcndlbmR1bmcgZGVyIE9wdGlvbiAtbSBvZGVyIC1GLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxMyBidWlsdGluL25vdGVzLmM6OTc2CisjOiBidWlsdGluL25vdGVzLmM6MjA5IGJ1aWx0aW4vbm90ZXMuYzo5NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3Zpbmcgbm90ZSBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIkVudGZlcm5lIE5vdGl6IGbDvHIgT2JqZWt0ICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbm90ZSBvYmplY3QiCiBtc2dzdHIgIktvbm50ZSBOb3Rpei1PYmpla3QgbmljaHQgc2NocmVpYmVuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjIwCisjOiBidWlsdGluL25vdGVzLmM6MjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBub3RlIGNvbnRlbnRzIGhhcyBiZWVuIGxlZnQgaW4gJXMiCiBtc2dzdHIgIkRpZSBOb3Rpei1JbmhhbHRlIHd1cmRlbiBpbiAlcyBiZWxhc3NlbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1NCBidWlsdGluL3RhZy5jOjU0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICJrYW5uICclcycgbmljaHQgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTYgYnVpbHRpbi90YWcuYzo1NDUKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTIgYnVpbHRpbi90YWcuYzo1NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gb3IgcmVhZCAnJXMnIgogbXNnc3RyICJrb25udGUgJyVzJyBuaWNodCDDtmZmbmVuIG9kZXIgbGVzZW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzUgYnVpbHRpbi9ub3Rlcy5jOjQ0OCBidWlsdGluL25vdGVzLmM6NDUwCi0jOiBidWlsdGluL25vdGVzLmM6NTEwIGJ1aWx0aW4vbm90ZXMuYzo1NjQgYnVpbHRpbi9ub3Rlcy5jOjY0NwotIzogYnVpbHRpbi9ub3Rlcy5jOjY1MiBidWlsdGluL25vdGVzLmM6NzI3IGJ1aWx0aW4vbm90ZXMuYzo3NjkKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NzEgYnVpbHRpbi9yZXNldC5jOjI5MyBidWlsdGluL3RhZy5jOjU1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3MSBidWlsdGluL25vdGVzLmM6NDQ0IGJ1aWx0aW4vbm90ZXMuYzo0NDYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MDYgYnVpbHRpbi9ub3Rlcy5jOjU2MCBidWlsdGluL25vdGVzLmM6NjQzCisjOiBidWlsdGluL25vdGVzLmM6NjQ4IGJ1aWx0aW4vbm90ZXMuYzo3MjMgYnVpbHRpbi9ub3Rlcy5jOjc2NQorIzogYnVpbHRpbi9ub3Rlcy5jOjk2NyBidWlsdGluL3RhZy5jOjU1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmVmLiIKIG1zZ3N0ciAiS29ubnRlICclcycgbmljaHQgYWxzIGfDvGx0aWdlIFJlZmVyZW56IGF1ZmzDtnNlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgb2JqZWN0ICclcycuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBMZXNlbiBkZXMgT2JqZWt0ZXMgJyVzJy4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozMDIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOTgKIG1zZ2lkICJDYW5ub3QgY29tbWl0IHVuaW5pdGlhbGl6ZWQvdW5yZWZlcmVuY2VkIG5vdGVzIHRyZWUiCiBtc2dzdHIgIkthbm4gdW5pbml0aWFsaXNpZXJ0ZW4vdW5yZWZlcmVuemllcnRlbiBOb3Rpei1CYXVtIG5pY2h0IGVpbnRyYWdlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNDMKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIgogbXNnc3RyICJVbmfDvGx0aWdlciBub3Rlcy5yZXdyaXRlTW9kZSBXZXJ0OiAnJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUzCisjOiBidWlsdGluL25vdGVzLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgogbXNnc3RyICIiCkBAIC02NTE3LDExNyArNzA1NywxMTcgQEAKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiB0aGUKICMuIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgc2Vjb25kICVzIGlzIGl0cyB2YWx1ZQotIzogYnVpbHRpbi9ub3Rlcy5jOjM4MAorIzogYnVpbHRpbi9ub3Rlcy5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCiBtc2dzdHIgIlVuZ8O8bHRpZ2VyICVzIFdlcnQ6ICclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlucHV0IGxpbmU6ICclcycuIgogbXNnc3RyICJGZWhsZXJoYWZ0ZSBFaW5nYWJlemVpbGU6ICclcycuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDU5CisjOiBidWlsdGluL25vdGVzLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjb3B5IG5vdGVzIGZyb20gJyVzJyB0byAnJXMnIgogbXNnc3RyICJGZWhsZXIgYmVpbSBLb3BpZXJlbiBkZXIgTm90aXplbiB2b24gJyVzJyBuYWNoICclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MDMgYnVpbHRpbi9ub3Rlcy5jOjU1NyBidWlsdGluL25vdGVzLmM6NjMwCi0jOiBidWlsdGluL25vdGVzLmM6NjQyIGJ1aWx0aW4vbm90ZXMuYzo3MTUgYnVpbHRpbi9ub3Rlcy5jOjc2MgotIzogYnVpbHRpbi9ub3Rlcy5jOjEwMzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0OTkgYnVpbHRpbi9ub3Rlcy5jOjU1MyBidWlsdGluL25vdGVzLmM6NjI2CisjOiBidWlsdGluL25vdGVzLmM6NjM4IGJ1aWx0aW4vbm90ZXMuYzo3MTEgYnVpbHRpbi9ub3Rlcy5jOjc1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjEwMzIKIG1zZ2lkICJ0b28gbWFueSBwYXJhbWV0ZXJzIgogbXNnc3RyICJ6dSB2aWVsZSBQYXJhbWV0ZXIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MTYgYnVpbHRpbi9ub3Rlcy5jOjc3NQorIzogYnVpbHRpbi9ub3Rlcy5jOjUxMiBidWlsdGluL25vdGVzLmM6NzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG5vdGUgZm91bmQgZm9yIG9iamVjdCAlcy4iCiBtc2dzdHIgIktlaW4gTm90aXogZsO8ciBPYmpla3QgJXMgZ2VmdW5kZW4uIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM4IGJ1aWx0aW4vbm90ZXMuYzo2OTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQogbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCiBtc2dzdHIgIk5vdGl6aW5oYWx0ZSBhbHMgWmVpY2hlbmtldHRlIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQxIGJ1aWx0aW4vbm90ZXMuYzo2OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzcgYnVpbHRpbi9ub3Rlcy5jOjY5NAogbXNnaWQgIm5vdGUgY29udGVudHMgaW4gYSBmaWxlIgogbXNnc3RyICJOb3RpemluaGFsdGUgaW4gZWluZXIgRGF0ZWkiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjU0NiBidWlsdGluL25vdGVzLmM6NzAwCi0jOiBidWlsdGluL25vdGVzLmM6NzAzIGJ1aWx0aW4vdGFnLmM6NDc2CisjOiBidWlsdGluL25vdGVzLmM6NTM5IGJ1aWx0aW4vbm90ZXMuYzo1NDIgYnVpbHRpbi9ub3Rlcy5jOjY5NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5OSBidWlsdGluL3RhZy5jOjQ3NAogbXNnaWQgIm9iamVjdCIKIG1zZ3N0ciAiT2JqZWt0IgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQ0IGJ1aWx0aW4vbm90ZXMuYzo3MDEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDAgYnVpbHRpbi9ub3Rlcy5jOjY5NwogbXNnaWQgInJldXNlIGFuZCBlZGl0IHNwZWNpZmllZCBub3RlIG9iamVjdCIKIG1zZ3N0ciAiV2llZGVydmVyd2VuZHVuZyB1bmQgQmVhcmJlaXR1bmcgZGVzIGFuZ2VnZWJlbmVuIE5vdGl6LU9iamVrdGVzIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQ3IGJ1aWx0aW4vbm90ZXMuYzo3MDQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjcwMAogbXNnaWQgInJldXNlIHNwZWNpZmllZCBub3RlIG9iamVjdCIKIG1zZ3N0ciAiV2llZGVydmVyd2VuZHVuZyBkZXMgYW5nZWdlYmVuZW4gTm90aXotT2JqZWt0ZXMiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDkgYnVpbHRpbi9ub3Rlcy5jOjYxNworIzogYnVpbHRpbi9ub3Rlcy5jOjU0NSBidWlsdGluL25vdGVzLmM6NjEzCiBtc2dpZCAicmVwbGFjZSBleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAiZXJzZXR6dCBleGlzdGllcmVuZGUgTm90aXplbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4MworIzogYnVpbHRpbi9ub3Rlcy5jOjU3OQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGFkZCBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAiIgogIktvbm50ZSBOb3RpemVuIG5pY2h0IGhpbnp1ZsO8Z2VuLiBFeGlzdGllcmVuZGUgTm90aXplbiBmw7xyIE9iamVrdCAlcyAiCi0iZ2VmdW5kZW4uIFZlcndlbmRlICctZicgdW0gZGllIGV4aXN0aWVyZW5kZW4gTm90aXplbiB6dSDDvGJlcnNjaHJlaWJlbi4iCisiZ2VmdW5kZW4uIFZlcndlbmRlbiBTaWUgJy1mJyB1bSBkaWUgZXhpc3RpZXJlbmRlbiBOb3RpemVuIHp1IMO8YmVyc2NocmVpYmVuLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4OCBidWlsdGluL25vdGVzLmM6NjY1CisjOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3ZlcndyaXRpbmcgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICLDnGJlcnNjaHJlaWJlIGV4aXN0aWVyZW5kZSBOb3RpemVuIGbDvHIgT2JqZWt0ICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKIG1zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKIG1zZ3N0ciAibGllc3QgT2JqZWt0ZSB2b24gZGVyIFN0YW5kYXJkLUVpbmdhYmUiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MjAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTYKIG1zZ2lkICJsb2FkIHJld3JpdGluZyBjb25maWcgZm9yIDxjb21tYW5kPiAoaW1wbGllcyAtLXN0ZGluKSIKIG1zZ3N0ciAiIgogImzDpGR0IEtvbmZpZ3VyYXRpb24gZsO8ciA8S29tbWFuZG8+IGJlaW0gVW1zY2hyZWliZW4gdm9uIFZlcnNpb25lbiAoaW1wbGl6aWVydCAiCiAiLS1zdGRpbikiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzQKIG1zZ2lkICJ0b28gZmV3IHBhcmFtZXRlcnMiCiBtc2dzdHIgInp1IHdlbmlnIFBhcmFtZXRlciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY1OQorIzogYnVpbHRpbi9ub3Rlcy5jOjY1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCiAiZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgIiIKICJLYW5uIE5vdGl6ZW4gbmljaHQga29waWVyZW4uIEV4aXN0aWVyZW5kZSBOb3RpemVuIGbDvHIgT2JqZWt0ICVzIGdlZnVuZGVuLiAiCi0iVmVyd2VuZGUgJy1mJyB1bSBkaWUgZXhpc3RpZXJlbmRlbiBOb3RpemVuIHp1IMO8YmVyc2NocmVpYmVuLiIKKyJWZXJ3ZW5kZW4gU2llICctZicgdW0gZGllIGV4aXN0aWVyZW5kZW4gTm90aXplbiB6dSDDvGJlcnNjaHJlaWJlbi4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBub3RlcyBvbiBzb3VyY2Ugb2JqZWN0ICVzLiBDYW5ub3QgY29weS4iCiBtc2dzdHIgIktlaW5lIE5vdGl6ZW4gZsO8ciBRdWVsbC1PYmpla3QgJXMuIEtvcGllIG5pY2h0IG3DtmdsaWNoLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjcyMAorIzogYnVpbHRpbi9ub3Rlcy5jOjcxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIC1tLy1GLy1jLy1DIG9wdGlvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHRoZSAnZWRpdCcgc3ViY29tbWFuZC5cbiIKICJQbGVhc2UgdXNlICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJyBpbnN0ZWFkLlxuIgogbXNnc3RyICIiCiAiRGllIE9wdGlvbmVuIC1tLy1GLy1jLy1DIHNpbmQgZsO8ciBkYXMgVW50ZXJrb21tYW5kbyAnZWRpdCcgdmVyYWx0ZXQuXG4iCi0iQml0dGUgYmVudXR6ZSBzdGF0dGRlc3NlbiAnZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQycuXG4iCisiQml0dGUgYmVudXR6ZW4gU2llIHN0YXR0ZGVzc2VuICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJy5cbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2NworIzogYnVpbHRpbi9ub3Rlcy5jOjg2MwogbXNnaWQgIkdlbmVyYWwgb3B0aW9ucyIKIG1zZ3N0ciAiQWxsZ2VtZWluZSBPcHRpb25lbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2OQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2NQogbXNnaWQgIk1lcmdlIG9wdGlvbnMiCiBtc2dzdHIgIk9wdGlvbmVuIGbDvHIgWnVzYW1tZW5mw7xocnVuZyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2NwogbXNnaWQgIiIKICJyZXNvbHZlIG5vdGVzIGNvbmZsaWN0cyB1c2luZyB0aGUgZ2l2ZW4gc3RyYXRlZ3kgKG1hbnVhbC9vdXJzL3RoZWlycy91bmlvbi8iCiAiY2F0X3NvcnRfdW5pcSkiCkBAIC02NjM1LDQ2ICs3MTc1LDQ2IEBACiAibMO2c3QgS29uZmxpa3RlIGJlaSBOb3RpemVuIG1pdCBkZXIgYW5nZWdlYmVuZW4gU3RyYXRlZ2llIGF1ZiAobWFudWFsL291cnMvIgogInRoZWlycy91bmlvbi9jYXRfc29ydF91bmlxKSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3MworIzogYnVpbHRpbi9ub3Rlcy5jOjg2OQogbXNnaWQgIkNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCiBtc2dzdHIgInRyw6RndCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBOb3RpemVuIGVpbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3NQorIzogYnVpbHRpbi9ub3Rlcy5jOjg3MQogbXNnaWQgImZpbmFsaXplIG5vdGVzIG1lcmdlIGJ5IGNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCiBtc2dzdHIgIiIKICJzY2hsaWXDn3QgWnVzYW1tZW5mw7xocnVuZyB2b24gTm90aXplbiBhYiwgaW4gZGVtIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlICIKICJOb3RpemVuIGVpbmdldHJhZ2VuIHdlcmRlbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3NworIzogYnVpbHRpbi9ub3Rlcy5jOjg3MwogbXNnaWQgIkFib3J0aW5nIG5vdGVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgImJyaWNodCBLb25mbGlrdGF1ZmzDtnN1bmcgYmVpIFp1c2FtbWVuZsO8aHJ1bmcgdm9uIE5vdGl6ZW4gYWIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKIG1zZ2lkICJhYm9ydCBub3RlcyBtZXJnZSIKIG1zZ3N0ciAiYnJpY2h0IFp1c2FtbWVuZsO8aHJ1bmcgdm9uIE5vdGl6ZW4gYWIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NzQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIk9iamVrdCAlcyBoYXQga2VpbmUgTm90aXpcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk4NgorIzogYnVpbHRpbi9ub3Rlcy5jOjk4MgogbXNnaWQgImF0dGVtcHQgdG8gcmVtb3ZlIG5vbi1leGlzdGVudCBub3RlIGlzIG5vdCBhbiBlcnJvciIKIG1zZ3N0ciAiZGVyIFZlcnN1Y2gsIGVpbmUgbmljaHQgZXhpc3RpZXJlbmRlIE5vdGl6IHp1IGzDtnNjaGVuLCBpc3Qga2VpbiBGZWhsZXIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5ODkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODUKIG1zZ2lkICJyZWFkIG9iamVjdCBuYW1lcyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAibGllc3QgT2JqZWt0bmFtZW4gdm9uIGRlciBTdGFuZGFyZC1FaW5nYWJlIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTA3MAorIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKIG1zZ2lkICJub3Rlc19yZWYiCiBtc2dzdHIgIk5vdGl6LVJlZmVyZW56IgogCi0jOiBidWlsdGluL25vdGVzLmM6MTA3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjcKIG1zZ2lkICJ1c2Ugbm90ZXMgZnJvbSA8bm90ZXNfcmVmPiIKLW1zZ3N0ciAiYmVudXR6dCBOb3RpemVuIHZvbiA8Tm90aXotUmVmZXJlbno+IgorbXNnc3RyICJ2ZXJ3ZW5kZXQgTm90aXplbiB2b24gPE5vdGl6LVJlZmVyZW56PiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjExMDYgYnVpbHRpbi9yZW1vdGUuYzoxNTk4CisjOiBidWlsdGluL25vdGVzLmM6MTEwMiBidWlsdGluL3JlbW90ZS5jOjE1OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBzdWJjb21tYW5kOiAlcyIKIG1zZ3N0ciAiVW5iZWthbm50ZXMgVW50ZXJrb21tYW5kbzogJXMiCkBAIC02Nzc0LDEyICs3MzE0LDEyIEBACiAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3NQogbXNnaWQgInVzZSBPRlNfREVMVEEgb2JqZWN0cyIKLW1zZ3N0ciAiYmVudXR6dCBPRlNfREVMVEEgT2JqZWt0ZSIKK21zZ3N0ciAidmVyd2VuZGV0IE9GU19ERUxUQSBPYmpla3RlIgogCiAjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzcKIG1zZ2lkICJ1c2UgdGhyZWFkcyB3aGVuIHNlYXJjaGluZyBmb3IgYmVzdCBkZWx0YSBtYXRjaGVzIgogbXNnc3RyICIiCi0iYmVudXR6dCBUaHJlYWRzIGJlaSBkZXIgU3VjaGUgbmFjaCBkZW4gYmVzdGVuIMOcYmVyZWluc3RpbW11bmdlbiBiZWkgIgorInZlcndlbmRldCBUaHJlYWRzIGJlaSBkZXIgU3VjaGUgbmFjaCBkZW4gYmVzdGVuIMOcYmVyZWluc3RpbW11bmdlbiBiZWkgIgogIlVudGVyc2NoaWVkZW4iCiAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3OQpAQCAtNjg4Myw3ICs3NDIzLDcgQEAKIAogIzogYnVpbHRpbi9wdXNoLmM6NjQKIG1zZ2lkICItLWRlbGV0ZSBvbmx5IGFjY2VwdHMgcGxhaW4gdGFyZ2V0IHJlZiBuYW1lcyIKLW1zZ3N0ciAiLS1kZWxldGUgYWt6ZXB0aWVydCBudXIgcmVpbmUgUmVmZXJlbnotTmFtZW4gYWxzIFppZWwiCittc2dzdHIgIkRpZSBPcHRpb24gLS1kZWxldGUgYWt6ZXB0aWVydCBudXIgcmVpbmUgUmVmZXJlbnpuYW1lbiBhbHMgWmllbC4iCiAKICM6IGJ1aWx0aW4vcHVzaC5jOjk5CiBtc2dpZCAiIgpAQCAtNjkwOCwxNCArNzQ0OCwxNCBAQAogIiAgICBnaXQgcHVzaCAlcyAlc1xuIgogIiVzIgogbXNnc3RyICIiCi0iRGVyIE5hbWUgZGVzIGV4dGVybmVuIMOcYmVybmFobWV6d2VpZ2VzIHN0aW1tdCBuaWNodCBtaXQgZGVtIE5hbWVuIGRlaW5lc1xuIgorIkRlciBOYW1lIGRlcyBleHRlcm5lbiDDnGJlcm5haG1lendlaWdlcyBzdGltbXQgbmljaHQgbWl0IGRlbSBOYW1lbiBJaHJlc1xuIgogImFrdHVlbGxlbiBad2VpZ2VzIMO8YmVyZWluLiBVbSBhdWYgZGVuIMOcYmVybmFobWV6d2VpZyBpbiBkZW0gZXh0ZXJuZW5cbiIKLSJQcm9qZWt0YXJjaGl2IHp1IHZlcnNlbmRlbiwgYmVudXR6ZTpcbiIKKyJQcm9qZWt0YXJjaGl2IHp1IHZlcnNlbmRlbiwgYmVudXR6ZW4gU2llOlxuIgogIlxuIgogIiAgICBnaXQgcHVzaCAlcyBIRUFEOiVzXG4iCiAiXG4iCiAiVW0gYXVmIGRlbiBad2VpZyBtaXQgZGVtIHNlbGJlbiBOYW1lbiBpbiBkZW0gZXh0ZXJuZW4gUHJvamVrYXJjaGl2XG4iCi0ienUgdmVyc2VuZGVuLCBiZW51dHplOlxuIgorInp1IHZlcnNlbmRlbiwgYmVudXR6ZW4gU2llOlxuIgogIlxuIgogIiAgICBnaXQgcHVzaCAlcyAlc1xuIgogIiVzIgpAQCAtNjkyOSw5ICs3NDY5LDkgQEAKICJcbiIKICIgICAgZ2l0IHB1c2ggJXMgSEVBRDo8bmFtZS1vZi1yZW1vdGUtYnJhbmNoPlxuIgogbXNnc3RyICIiCi0iRHUgYmVmaW5kZXN0IGRpY2ggc2ljaCBpbSBNb21lbnQgYXVmIGtlaW5lbSBad2VpZy5cbiIKKyJTaWUgYmVmaW5kZW4gc2ljaCBpbSBNb21lbnQgYXVmIGtlaW5lbSBad2VpZy5cbiIKICJVbSBkaWUgSGlzdG9yaWUsIGbDvGhyZW5kIHp1bSBha3R1ZWxsZW4gKGZyZWlzdGVoZW5kZSBad2VpZ3NwaXR6ZSAoSEVBRCkpXG4iCi0iU3RhdHVzIHp1IHZlcnNlbmRlbiwgYmVudXR6ZVxuIgorIlN0YXR1cyB6dSB2ZXJzZW5kZW4sIGJlbnV0emVuIFNpZVxuIgogIlxuIgogIiAgICBnaXQgcHVzaCAlcyBIRUFEOjxOYW1lLWRlcy1leHRlcm5lbi1ad2VpZ2VzPlxuIgogCkBAIC02OTQ1LDcgKzc0ODUsNyBAQAogbXNnc3RyICIiCiAiRGVyIGFrdHVlbGxlIFp3ZWlnICVzIGhhdCBrZWluZW4gWndlaWcgaW0gZXh0ZXJuZW4gUHJvamVrdGFyY2hpdi5cbiIKICJVbSBkZW4gYWt0dWVsbGVuIFp3ZWlnIHp1IHZlcnNlbmRlbiB1bmQgZGFzIEZlcm5hcmNoaXYgYWxzIGV4dGVybmVzXG4iCi0iUHJvamVrdGFyY2hpdiB6dSB2ZXJ3ZW5kZW4sIGJlbnV0emVcbiIKKyJQcm9qZWt0YXJjaGl2IHp1IHZlcndlbmRlbiwgYmVudXR6ZW4gU2llXG4iCiAiXG4iCiAiICAgIGdpdCBwdXNoIC0tc2V0LXVwc3RyZWFtICVzICVzXG4iCiAKQEAgLTY5NjEsNyArNzUwMSw3IEBACiAieW91ciBjdXJyZW50IGJyYW5jaCAnJXMnLCB3aXRob3V0IHRlbGxpbmcgbWUgd2hhdCB0byBwdXNoXG4iCiAidG8gdXBkYXRlIHdoaWNoIHJlbW90ZSBicmFuY2guIgogbXNnc3RyICIiCi0iRHUgdmVyc2VuZGVzdCBuYWNoICclcycsIHdlbGNoZXMga2VpbiBleHRlcm5lcyBQcm9qZWt0YXJjaGl2IGRlaW5lc1xuIgorIlNpZSB2ZXJzZW5kZW4gbmFjaCAnJXMnLCB3ZWxjaGVzIGtlaW4gZXh0ZXJuZXMgUHJvamVrdGFyY2hpdiBJaHJlc1xuIgogImFrdHVlbGxlbiBad2VpZ2VzICclcycgaXN0LCBvaG5lIG1pciBtaXR6dXRlaWxlbiwgd2FzIGljaCB2ZXJzZW5kZW5cbiIKICJzb2xsLCB1bSB3ZWxjaGVuIGV4dGVybmVuIFp3ZWlnIHp1IGFrdHVhbGlzaWVyZW4uIgogCkBAIC02OTg1LDI2ICs3NTI1LDI1IEBACiAiJ3B1c2guZGVmYXVsdCcgaXN0IG5pY2h0IGdlc2V0enQ7IGRlciBpbXBsaXppdCBnZXNldHp0ZSBXZXJ0XG4iCiAid2lyZCBpbiBHaXQgMi4wIHZvbiAnbWF0Y2hpbmcnIG5hY2ggJ3NpbXBsZScgZ2XDpG5kZXJ0LiBVbSBkaWVzZSBNZWxkdW5nIHp1XG4iCiAidW50ZXJkcsO8Y2tlbiB1bmQgZGFzIGFrdHVlbGxlIFZlcmhhbHRlbiBuYWNoIMOEbmRlcnVuZyBkZXMgU3RhbmRhcmR3ZXJ0ZXNcbiIKLSJiZWl6dWJlaGFsdGVuLCBiZW51dHplOlxuIgorImJlaXp1YmVoYWx0ZW4sIGJlbnV0emVuIFNpZTpcbiIKICIgIGdpdCBjb25maWcgLS1nbG9iYWwgcHVzaC5kZWZhdWx0IG1hdGNoaW5nXG4iCiAiXG4iCi0iVW0gZGllc2UgTWVsZHVuZyB6dSB1bnRlcmRyw7xja2VuIHVuZCBkYXMgbmV1ZSBWZXJoYWx0ZW4gamV0enQgenUgIgotIsO8YmVybmVobWVuLFxuIgotImJlbnV0emU6XG4iCisiVW0gZGllc2UgTWVsZHVuZyB6dSB1bnRlcmRyw7xja2VuIHVuZCBkYXMgbmV1ZSBWZXJoYWx0ZW4gamV0enQgenUgw7xiZXJuZWhtZW4sICIKKyJiZW51dHplbiBTaWU6XG4iCiAiXG4iCiAiICBnaXQgY29uZmlnIC0tZ2xvYmFsIHB1c2guZGVmYXVsdCBzaW1wbGVcbiIKICJcbiIKLSJGw7xocmUgJ2dpdCBoZWxwIGNvbmZpZycgYXVzIHVuZCBzdWNoZSBuYWNoICdwdXNoLmRlZmF1bHQnIGbDvHIgd2VpdGVyZSAiCi0iSW5mb3JtYXRpb25lbi5cbiIKKyJGw7xocmVuIFNpZSAnZ2l0IGhlbHAgY29uZmlnJyBhdXMgdW5kIHN1Y2hlbiBTaWUgbmFjaCAncHVzaC5kZWZhdWx0JyBmw7xyICIKKyJ3ZWl0ZXJlIEluZm9ybWF0aW9uZW4uXG4iCiAiKERlciBNb2R1cyAnc2ltcGxlJyB3dXJkZSBpbiBHaXQgMS43LjExIGVpbmdlZsO8aHJ0LiBCZW51dHplIGRlbiDDpGhubGljaGVuICIKLSJNb2R1cyAnY3VycmVudCcgYW5zdGF0dCAnc2ltcGxlJywgZmFsbHMgZHUgZ2VsZWdlbnRsaWNoIMOkbHRlcmUgVmVyc2lvbmVuIHZvbiAiCi0iR2l0IGJlbnV0enQuKSIKKyJNb2R1cyAnY3VycmVudCcgYW5zdGF0dCAnc2ltcGxlJywgZmFsbHMgU2llIGdlbGVnZW50bGljaCDDpGx0ZXJlIFZlcnNpb25lbiAiCisidm9uIEdpdCBiZW51dHplbi4pIgogCiAjOiBidWlsdGluL3B1c2guYzoxOTkKIG1zZ2lkICIiCiAiWW91IGRpZG4ndCBzcGVjaWZ5IGFueSByZWZzcGVjcyB0byBwdXNoLCBhbmQgcHVzaC5kZWZhdWx0IGlzIFwibm90aGluZ1wiLiIKIG1zZ3N0ciAiIgotIkR1IGhhc3Qga2VpbmUgUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4genVtIFZlcnNlbmRlbiBhbmdlZ2ViZW4sIHVuZCBwdXNoLiIKKyJTaWUgaGFiZW4ga2VpbmUgUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4genVtIFZlcnNlbmRlbiBhbmdlZ2ViZW4sIHVuZCBwdXNoLiIKICJkZWZhdWx0IGlzdCBcIm5vdGhpbmdcIi4iCiAKICM6IGJ1aWx0aW4vcHVzaC5jOjIwNgpAQCAtNzAxNCw5ICs3NTUzLDEwIEBACiAiYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKLSJBa3R1YWxpc2llcnVuZ2VuIHd1cmRlbiB6dXLDvGNrZ2V3aWVzZW4sIHdlaWwgZGllIFNwaXR6ZSBkZWluZXMgYWt0dWVsbGVuXG4iCi0iWndlaWdlcyBoaW50ZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIHp1csO8Y2tnZWZhbGxlbiBpc3QuIEbDvGhyZSBkaWVcbiIKLSJleHRlcm5lbiDDhG5kZXJ1bmdlbiB6dXNhbW1lbiAoei5CLiAnZ2l0IHB1bGwnKSBiZXZvciBkdSBlcm5ldXQgdmVyc2VuZGVzdC5cbiIKKyJBa3R1YWxpc2llcnVuZ2VuIHd1cmRlbiB6dXLDvGNrZ2V3aWVzZW4sIHdlaWwgZGllIFNwaXR6ZSBJaHJlcyBha3R1ZWxsZW5cbiIKKyJad2VpZ2VzIGhpbnRlciBzZWluZW0gZXh0ZXJuZW4gR2VnZW5zdMO8Y2sgenVyw7xja2dlZmFsbGVuIGlzdC4gRsO8aHJlbiBTaWVcbiIKKyJkaWUgZXh0ZXJuZW4gw4RuZGVydW5nZW4genVzYW1tZW4gKHouQi4gJ2dpdCBwdWxsJykgYmV2b3IgU2llIGVybmV1dFxuIgorInZlcnNlbmRlbi5cbiIKICJTaWVoZSBhdWNoIGRpZSBTZWt0aW9uICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnXG4iCiAiZsO8ciB3ZWl0ZXJlIERldGFpbHMuIgogCkBAIC03MDI4LDggKzc1NjgsOSBAQAogInRvICdzaW1wbGUnLCAnY3VycmVudCcgb3IgJ3Vwc3RyZWFtJyB0byBwdXNoIG9ubHkgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiIgogIkFrdHVhbGlzaWVydW5nZW4gd3VyZGVuIHp1csO8Y2tnZXdpZXNlbiwgd2VpbCBkaWUgU3BpdHplIGVpbmVzIHZlcnNlbmRldGVuXG4iCi0iWndlaWdlcyBoaW50ZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIHp1csO8Y2tnZWZhbGxlbiBpc3QuIFdlbm4gZHUgbmljaHRcbiIKLSJiZWFic2ljaHRpZ3QgaGFzdCwgZGllc2VuIFp3ZWlnIHp1IHZlcnNlbmRlbiwga2FubnN0IGR1IGF1Y2ggZGVuIHp1ICIKKyJad2VpZ2VzIGhpbnRlciBzZWluZW0gZXh0ZXJuZW4gR2VnZW5zdMO8Y2sgenVyw7xja2dlZmFsbGVuIGlzdC4gV2VubiBTaWUgIgorIm5pY2h0XG4iCisiYmVhYnNpY2h0aWd0IGhhYmVuLCBkaWVzZW4gWndlaWcgenUgdmVyc2VuZGVuLCBrw7ZubmVuIFNpZSBhdWNoIGRlbiB6dSAiCiAidmVyc2VuZGVuZGVuXG4iCiAiWndlaWcgc3BlemlmaXppZXJlbiBvZGVyIGRpZSBLb25maWd1cmF0aW9uc3ZhcmlhYmxlICdwdXNoLmRlZmF1bHQnIHp1ICIKICInc2ltcGxlJywgJ2N1cnJlbnQnXG4iCkBAIC03MDQzLDI4ICs3NTg0LDY0IEBACiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJBa3R1YWxpc2llcnVuZ2VuIHd1cmRlbiB6dXLDvGNrZ2V3aWVzZW4sIHdlaWwgZGllIFNwaXR6ZSBlaW5lcyB2ZXJzZW5kZXRlblxuIgotIlp3ZWlnZXMgaGludGVyIHNlaW5lbSBleHRlcm5lbiBHZWdlbnN0w7xjayB6dXLDvGNrZ2VmYWxsZW4gaXN0LiBDaGVja2UgZGllc2VuXG4iCi0iWndlaWcgYXVzIHVuZCBmw7xocmUgZGllIGV4dGVybmVuIMOEbmRlcnVuZ2VuIHp1c2FtbWVuICh6LkIuICdnaXQgcHVsbCcpXG4iCi0iYmV2b3IgZHUgZXJuZXV0IHZlcnNlbmRlc3QuXG4iCisiWndlaWdlcyBoaW50ZXIgc2VpbmVtIGV4dGVybmVuIEdlZ2Vuc3TDvGNrIHp1csO8Y2tnZWZhbGxlbiBpc3QuIENoZWNrZW4gU2llXG4iCisiZGllc2VuIFp3ZWlnIGF1cyB1bmQgZsO8aHJlbiBTaWUgZGllIGV4dGVybmVuIMOEbmRlcnVuZ2VuIHp1c2FtbWVuXG4iCisiKHouQi4gJ2dpdCBwdWxsJykgYmV2b3IgU2llIGVybmV1dCB2ZXJzZW5kZW4uXG4iCiAiU2llaGUgYXVjaCBkaWUgU2VrdGlvbiAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJ1xuIgogImbDvHIgd2VpdGVyZSBEZXRhaWxzLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjU4CisjOiBidWlsdGluL3B1c2guYzoyMjQKK21zZ2lkICIiCisiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHJlbW90ZSBjb250YWlucyB3b3JrIHRoYXQgeW91IGRvXG4iCisibm90IGhhdmUgbG9jYWxseS4gVGhpcyBpcyB1c3VhbGx5IGNhdXNlZCBieSBhbm90aGVyIHJlcG9zaXRvcnkgcHVzaGluZ1xuIgorInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLixcbiIKKyInZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKyJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKK21zZ3N0ciAiIgorIkFrdHVhbGlzaWVydW5nZW4gd3VyZGVuIHp1csO8Y2tnZXdpZXNlbiwgd2VpbCBkYXMgRmVybmFyY2hpdiBWZXJzaW9uZW4gIgorImVudGjDpGx0LFxuIgorImRpZSBsb2thbCBuaWNodCB2b3JoYW5kZW4gc2luZC4gRGFzIHdpcmQgw7xibGljaGVyd2Vpc2UgZHVyY2ggZGFzIFZlcnNlbmRlbiAiCisidm9uXG4iCisiVmVyc2lvbmVuIGF1ZiBkaWVzZWxiZSBSZWZlcmVueiB2b24gZWluZW0gYW5kZXJlbiBQcm9qZWt0YXJjaGl2IGF1cyAiCisidmVydXJzYWNodC5cbiIKKyJWaWVsbGVpY2h0IG3DvHNzZW4gU2llIGRpZSBleHRlcm5lbiDDhG5kZXJ1bmdlbiB6dXNhbW1lbnp1ZsO8aHJlbiAoei5CLiAnZ2l0ICIKKyJwdWxsJylcbiIKKyJiZXZvciBTaWUgZXJuZXV0IHZlcnNlbmRlbi5cbiIKKyJTaWVoZSBhdWNoIGRpZSBTZWt0aW9uICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnXG4iCisiZsO8ciB3ZWl0ZXJlIERldGFpbHMuIgorCisjOiBidWlsdGluL3B1c2guYzoyMzEKK21zZ2lkICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIgorbXNnc3RyICIiCisiQWt0dWFsaXNpZXJ1bmdlbiB3dXJkZW4genVyw7xja2dld2llc2VuLCB3ZWlsIGRpZSBNYXJraWVydW5nIGJlcmVpdHNcbiIKKyJpbSBGZXJuYXJjaGl2IGV4aXN0aWVydC4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzNAorbXNnaWQgIiIKKyJZb3UgY2Fubm90IHVwZGF0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJ3aXRob3V0IHVzaW5nIHRoZSAnLS1mb3JjZScgb3B0aW9uLlxuIgorbXNnc3RyICIiCisiU2llIGvDtm5uZW4ga2VpbmUgZXh0ZXJuZSBSZWZlcmVueiBha3R1YWxpc2llcmVuLCBkaWUgYXVmIGVpbiBPYmpla3QgemVpZ3QsXG4iCisiZGFzIGtlaW5lIFZlcnNpb24gaXN0LCBvZGVyIGVzIGF1ZiBlaW4gc29sY2hlcyBPYmpla3QgemVpZ2VuIGxhc3Nlbiwgb2huZVxuIgorImRpZSBPcHRpb24gJy0tZm9yY2UnIHp1IHZlcndlbmRlbi5cbiIKKworIzogYnVpbHRpbi9wdXNoLmM6Mjk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgdG8gJXNcbiIKIG1zZ3N0ciAiVmVyc2VuZGUgbmFjaCAlc1xuIgogCi0jOiBidWlsdGluL3B1c2guYzoyNjIKKyM6IGJ1aWx0aW4vcHVzaC5jOjI5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJyVzJyIKIG1zZ3N0ciAiRmVobGVyIGJlaW0gVmVyc2VuZGVuIGVpbmlnZXIgUmVmZXJlbnplbiBuYWNoICclcyciCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI5NAorIzogYnVpbHRpbi9wdXNoLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCiBtc2dzdHIgInVuZ8O8bHRpZ2VzIFByb2pla3RhcmNoaXYgJyVzJyIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk1CisjOiBidWlsdGluL3B1c2guYzozMzIKIG1zZ2lkICIiCiAiTm8gY29uZmlndXJlZCBwdXNoIGRlc3RpbmF0aW9uLlxuIgogIkVpdGhlciBzcGVjaWZ5IHRoZSBVUkwgZnJvbSB0aGUgY29tbWFuZC1saW5lIG9yIGNvbmZpZ3VyZSBhIHJlbW90ZSAiCkBAIC03MDc3LDkxICs3NjU0LDEwMSBAQAogIiAgICBnaXQgcHVzaCA8bmFtZT5cbiIKIG1zZ3N0ciAiIgogIktlaW4gWmllbCB6dW0gVmVyc2VuZGVuIGtvbmZpZ3VyaWVydC5cbiIKLSJFbnR3ZWRlciBzcGV6aWZpemllcnN0IGR1IGRpZSBVUkwgdm9uIGRlciBLb21tYW5kb3plaWxlIG9kZXIga29uZmlndXJpZXJzdCAiCisiRW50d2VkZXIgc3BlemlmaXppZXJlbiBTaWUgZGllIFVSTCB2b24gZGVyIEtvbW1hbmRvemVpbGUgb2RlciBrb25maWd1cmllcmVuICIKICJlaW4gZXh0ZXJuZXMgUHJvamVrdGFyY2hpdiB1bnRlciBCZW51dHp1bmcgdm9uXG4iCiAiXG4iCiAiICAgIGdpdCByZW1vdGUgYWRkIDxOYW1lPiA8VVJMPlxuIgogIlxuIgotInVuZCB2ZXJzZW5kZXN0IGRhbm4gdW50ZXIgQmVudXR6dW5nIGRpZXNlcyBOYW1lbnNcbiIKKyJ1bmQgdmVyc2VuZGVuIGRhbm4gdW50ZXIgQmVudXR6dW5nIGRpZXNlcyBOYW1lbnNcbiIKICJcbiIKICIgICAgZ2l0IHB1c2ggPE5hbWU+XG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMAorIzogYnVpbHRpbi9wdXNoLmM6MzQ3CiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgotbXNnc3RyICItLWFsbCB1bmQgLS10YWdzIHNpbmQgaW5rb21wYXRpYmVsIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLS1hbGwgdW5kIC0tdGFncyBzaW5kIGlua29tcGF0aWJlbC4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMQorIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKLW1zZ3N0ciAiLS1hbGwga2FubiBuaWNodCBtaXQgUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4ga29tYmluaWVydCB3ZXJkZW4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0tYWxsIGthbm4gbmljaHQgbWl0IFJlZmVyZW56c3BlemlmaWthdGlvbmVuIGtvbWJpbmllcnQgd2VyZGVuLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzE2CisjOiBidWlsdGluL3B1c2guYzozNTMKIG1zZ2lkICItLW1pcnJvciBhbmQgLS10YWdzIGFyZSBpbmNvbXBhdGlibGUiCi1tc2dzdHIgIi0tbWlycm9yIHVuZCAtLXRhZ3Mgc2luZCBpbmtvbXBhdGliZWwiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtLW1pcnJvciB1bmQgLS10YWdzIHNpbmQgaW5rb21wYXRpYmVsLiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzE3CisjOiBidWlsdGluL3B1c2guYzozNTQKIG1zZ2lkICItLW1pcnJvciBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgotbXNnc3RyICItLW1pcnJvciBrYW5uIG5pY2h0IG1pdCBSZWZlcmVuenNwZXppZmlrYXRpb25lbiBrb21iaW5pZXJ0IHdlcmRlbiIKK21zZ3N0ciAiIgorIkRpZSBPcHRpb24gLS1taXJyb3Iga2FubiBuaWNodCBtaXQgUmVmZXJlbnpzcGV6aWZpa2F0aW9uZW4ga29tYmluaWVydCB3ZXJkZW4uIgogCi0jOiBidWlsdGluL3B1c2guYzozMjIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1OQogbXNnaWQgIi0tYWxsIGFuZCAtLW1pcnJvciBhcmUgaW5jb21wYXRpYmxlIgotbXNnc3RyICItLWFsbCB1bmQgLS1taXJyb3Igc2luZCBpbmtvbXBhdGliZWwiCittc2dzdHIgIkRpZSBPcHRpb25lbiAtLWFsbCB1bmQgLS1taXJyb3Igc2luZCBpbmtvbXBhdGliZWwuIgogCi0jOiBidWlsdGluL3B1c2guYzozODIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQxOQogbXNnaWQgInJlcG9zaXRvcnkiCiBtc2dzdHIgIlByb2pla3RhcmNoaXYiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4MworIzogYnVpbHRpbi9wdXNoLmM6NDIwCiBtc2dpZCAicHVzaCBhbGwgcmVmcyIKIG1zZ3N0ciAidmVyc2VuZGV0IGFsbGUgUmVmZXJlbnplbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg0CisjOiBidWlsdGluL3B1c2guYzo0MjEKIG1zZ2lkICJtaXJyb3IgYWxsIHJlZnMiCiBtc2dzdHIgInNwaWVnZWx0IGFsbGUgUmVmZXJlbnplbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg2CisjOiBidWlsdGluL3B1c2guYzo0MjMKIG1zZ2lkICJkZWxldGUgcmVmcyIKIG1zZ3N0ciAibMO2c2NodCBSZWZlcmVuemVuIgogCi0jOiBidWlsdGluL3B1c2guYzozODcKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNAogbXNnaWQgInB1c2ggdGFncyAoY2FuJ3QgYmUgdXNlZCB3aXRoIC0tYWxsIG9yIC0tbWlycm9yKSIKIG1zZ3N0ciAiIgotInZlcnNlbmRldCBNYXJraWVydW5nZW4gKGthbm4gbmljaHQgbWl0IC0tYWxsIG9kZXIgLS1taXJyb3IgYmVudXR6dCB3ZXJkZW4pIgorInZlcnNlbmRldCBNYXJraWVydW5nZW4gKGthbm4gbmljaHQgbWl0IC0tYWxsIG9kZXIgLS1taXJyb3IgdmVyd2VuZGV0IHdlcmRlbikiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MAorIzogYnVpbHRpbi9wdXNoLmM6NDI3CiBtc2dpZCAiZm9yY2UgdXBkYXRlcyIKIG1zZ3N0ciAiZXJ6d2luZ3QgQWt0dWFsaXNpZXJ1bmciCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MQorIzogYnVpbHRpbi9wdXNoLmM6NDI4CiBtc2dpZCAiY2hlY2siCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzkyCisjOiBidWlsdGluL3B1c2guYzo0MjkKIG1zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBwdXNoaW5nIG9mIHN1Ym1vZHVsZXMiCiBtc2dzdHIgInN0ZXVlcnQgcmVrdXJzaXZlcyBWZXJzZW5kZW4gdm9uIFVudGVycHJvamVrdGVuIgogCi0jOiBidWlsdGluL3B1c2guYzozOTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzMQogbXNnaWQgInVzZSB0aGluIHBhY2siCi1tc2dzdHIgImJlbnV0enQga2xlaW5lcmUgUGFrZXRlIgorbXNnc3RyICJ2ZXJ3ZW5kZXQga2xlaW5lcmUgUGFrZXRlIgogCi0jOiBidWlsdGluL3B1c2guYzozOTUgYnVpbHRpbi9wdXNoLmM6Mzk2CisjOiBidWlsdGluL3B1c2guYzo0MzIgYnVpbHRpbi9wdXNoLmM6NDMzCiBtc2dpZCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iCiBtc2dzdHIgIidyZWNlaXZlIHBhY2snIFByb2dyYW1tIgogCi0jOiBidWlsdGluL3B1c2guYzozOTcKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNAogbXNnaWQgInNldCB1cHN0cmVhbSBmb3IgZ2l0IHB1bGwvc3RhdHVzIgogbXNnc3RyICJzZXR6dCBleHRlcm5lcyBQcm9qZWt0YXJjaGl2IGbDvHIgXCJnaXQgcHVsbC9zdGF0dXNcIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDAwCisjOiBidWlsdGluL3B1c2guYzo0MzcKIG1zZ2lkICJwcnVuZSBsb2NhbGx5IHJlbW92ZWQgcmVmcyIKIG1zZ3N0ciAiZW50ZmVybnQgbG9rYWwgZ2Vsw7ZzY2h0ZSBSZWZlcmVuemVuIgogCi0jOiBidWlsdGluL3B1c2guYzo0MTAKLW1zZ2lkICItLWRlbGV0ZSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLWFsbCwgLS1taXJyb3IgYW5kIC0tdGFncyIKLW1zZ3N0ciAiLS1kZWxldGUgaXN0IGlua29tcGF0aWJlbCBtaXQgLS1hbGwsIC0tbWlycm9yIHVuZCAtLXRhZ3MiCisjOiBidWlsdGluL3B1c2guYzo0MzkKK21zZ2lkICJieXBhc3MgcHJlLXB1c2ggaG9vayIKK21zZ3N0ciAidW1nZWh0IFwicHJlLXB1c2ggaG9va1wiIgogCi0jOiBidWlsdGluL3B1c2guYzo0MTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAidmVyc2VuZGV0IGZlaGxlbmRlLCBhYmVyIHJlbGV2YW50ZSBNYXJraWVydW5nZW4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAorbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgorbXNnc3RyICJEaWUgT3B0aW9uIC0tZGVsZXRlIGlzdCBpbmtvbXBhdGliZWwgbWl0IC0tYWxsLCAtLW1pcnJvciB1bmQgLS10YWdzLiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDUyCiBtc2dpZCAiLS1kZWxldGUgZG9lc24ndCBtYWtlIHNlbnNlIHdpdGhvdXQgYW55IHJlZnMiCi1tc2dzdHIgIi0tZGVsZXRlIG1hY2h0IG9obmUgaXJnZW5kZWluZSBSZWZlcmVueiBrZWluZW4gU2lubiIKK21zZ3N0ciAiRGllIE9wdGlvbiAtLWRlbGV0ZSBrYW5uIG51ciBtaXQgUmVmZXJlbnplbiB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzozNgogbXNnaWQgIiIKQEAgLTczMzEsNyArNzkxOCw3IEBACiAiXHQgdXNlIC0tbWlycm9yPWZldGNoIG9yIC0tbWlycm9yPXB1c2ggaW5zdGVhZCIKIG1zZ3N0ciAiIgogIi0tbWlycm9yIGlzdCBnZWbDpGhybGljaCB1bmQgdmVyYWx0ZXQ7IGJpdHRlXG4iCi0iXHQgYmVudXR6ZSBzdGF0dGRlc3NlbiAtLW1pcnJvcj1mZXRjaCBvZGVyIC0tbWlycm9yPXB1c2giCisiXHQgYmVudXR6ZW4gU2llIHN0YXR0ZGVzc2VuIC0tbWlycm9yPWZldGNoIG9kZXIgLS1taXJyb3I9cHVzaCIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDcKICMsIGMtZm9ybWF0CkBAIC03MzY5LDEzICs3OTU2LDE1IEBACiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTg1CiBtc2dpZCAic3BlY2lmeWluZyBhIG1hc3RlciBicmFuY2ggbWFrZXMgbm8gc2Vuc2Ugd2l0aCAtLW1pcnJvciIKLW1zZ3N0ciAiQW5nYWJlIGVpbmVzIEhhdXB0endlaWdlcyBtYWNodCBtaXQgLS1taXJyb3Iga2VpbmVuIFNpbm4iCittc2dzdHIgIiIKKyJEaWUgT3B0aW9uIC0tbWlycm9yIGthbm4gbmljaHQgbWl0IGRlciBBbmdhYmUgZWluZXMgSGF1cHR6d2VpZ2VzIHZlcndlbmRldCAiCisid2VyZGVuLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxODcKIG1zZ2lkICJzcGVjaWZ5aW5nIGJyYW5jaGVzIHRvIHRyYWNrIG1ha2VzIHNlbnNlIG9ubHkgd2l0aCBmZXRjaCBtaXJyb3JzIgogbXNnc3RyICIiCi0iZGllIEFuZ2FiZSB2b24genUgZm9sZ2VuZGVuIFp3ZWlnZW4gbWFjaHQgbnVyIG1pdCBkZW0gQW5mb3JkZXJuIHZvbiAiCi0iU3BpZWdlbGFyY2hpdmVuIFNpbm4iCisiRGllIEFuZ2FiZSB2b24genUgZm9sZ2VuZGVuIFp3ZWlnZW4ga2FubiBudXIgbWl0IGRlbSBBbmZvcmRlcm4gdm9uICIKKyJTcGllZ2VsYXJjaGl2ZW4gdmVyd2VuZGV0IHdlcmRlbi4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTk1IGJ1aWx0aW4vcmVtb3RlLmM6NjQ2CiAjLCBjLWZvcm1hdApAQCAtNzQ0MCw3ICs4MDI5LDcgQEAKICJLZWluZSBBa3R1YWxpc2llcnVuZyBkZXIgbmljaHQgc3RhbmRhcmRtw6TDn2lnZW4gUmVmZXJlbnpzcGV6aWZpa2F0aW9uIHp1bSAiCiAiQWJob2xlblxuIgogIlx0JXNcbiIKLSJcdEJpdHRlIGFrdHVhbGlzaWVyZSwgZmFsbHMgbm90d2VuZGlnLCBkaWUgS29uZmlndXJhdGlvbiBtYW51ZWxsLiIKKyJcdEJpdHRlIGFrdHVhbGlzaWVyZW4gU2llLCBmYWxscyBub3R3ZW5kaWcsIGRpZSBLb25maWd1cmF0aW9uIG1hbnVlbGwuIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjY4MwogIywgYy1mb3JtYXQKQEAgLTc0NzcsMTEgKzgwNjYsMTEgQEAKIG1zZ3N0clswXSAiIgogIkhpbndlaXM6IEVpbiBad2VpZyBhdcOfZXJoYWxiIGRlciAvcmVmcy9yZW1vdGVzLyBIaWVyYWNoaWUgd3VyZGUgbmljaHQgIgogImdlbMO2c2NodDtcbiIKLSJ1bSBkaWVzZW4genUgbMO2c2NoZW4sIGJlbnV0emU6IgorInVtIGRpZXNlbiB6dSBsw7ZzY2hlbiwgYmVudXR6ZW4gU2llOiIKIG1zZ3N0clsxXSAiIgogIkhpbndlaXM6IEVpbmlnZSBad2VpZ2UgYXXDn2VyIGRlciAvcmVmcy9yZW1vdGVzLyBIaWVyYXJjaGllIHd1cmRlbiBuaWNodCAiCiAiZW50ZmVybnQ7XG4iCi0idW0gZGllc2UgenUgZW50ZmVybmVuLCBiZW51dHplOiIKKyJ1bSBkaWVzZSB6dSBlbnRmZXJuZW4sIGJlbnV0emVuIFNpZToiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6OTQzCiAjLCBjLWZvcm1hdApAQCAtNzQ5NCw3ICs4MDgzLDcgQEAKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5NDgKIG1zZ2lkICIgc3RhbGUgKHVzZSAnZ2l0IHJlbW90ZSBwcnVuZScgdG8gcmVtb3ZlKSIKLW1zZ3N0ciAiIHZlcmFsdGV0IChiZW51dHplICdnaXQgcmVtb3RlIHBydW5lJyB6dW0gTMO2c2NoZW4pIgorbXNnc3RyICIgdmVyYWx0ZXQgKGJlbnV0emVuIFNpZSAnZ2l0IHJlbW90ZSBwcnVuZScgenVtIEzDtnNjaGVuKSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5NTAKIG1zZ2lkICIgPz8/IgpAQCAtNzY0Nyw4ICs4MjM2LDggQEAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIxOAogbXNnaWQgIk11bHRpcGxlIHJlbW90ZSBIRUFEIGJyYW5jaGVzLiBQbGVhc2UgY2hvb3NlIG9uZSBleHBsaWNpdGx5IHdpdGg6IgogbXNnc3RyICIiCi0iTWVocmVyZSBIYXVwdHp3ZWlnZSBpbSBleHRlcm5lbiBQcm9qZWt0YXJjaGl2LiBCaXR0ZSB3w6RobGUgZXhwbGl6aXQgZWluZW4gIgotImF1cyBtaXQ6IgorIk1laHJlcmUgSGF1cHR6d2VpZ2UgaW0gZXh0ZXJuZW4gUHJvamVrdGFyY2hpdi4gQml0dGUgd8OkaGxlbiBTaWUgZXhwbGl6aXQgIgorImVpbmVuIGF1cyBtaXQ6IgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjEyMjgKICMsIGMtZm9ybWF0CkBAIC03NzI2LDcgKzgzMTUsOCBAQAogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE0NDcKIG1zZ2lkICItLWFkZCAtLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2UiCi1tc2dzdHIgIi0tYWRkIC0tZGVsZXRlIG1hY2h0IGtlaW5lbiBTaW5uIgorbXNnc3RyICIiCisiRGllIE9wdGlvbmVuIC0tYWRkIHVuZCAtLWRlbGV0ZSBrw7ZubmVuIG5pY2h0IGdlbWVpbnNhbSB2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDg3CiAjLCBjLWZvcm1hdApAQCAtNzc4NSwxMiArODM3NSwxMiBAQAogImdpdCByZXNldCBbLS1taXhlZCB8IC0tc29mdCB8IC0taGFyZCB8IC0tbWVyZ2UgfCAtLWtlZXBdIFstcV0gWzxWZXJzaW9uPl0iCiAKICM6IGJ1aWx0aW4vcmVzZXQuYzoyNgotbXNnaWQgImdpdCByZXNldCBbLXFdIDxjb21taXQ+IFstLV0gPHBhdGhzPi4uLiIKLW1zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPFZlcnNpb24+IFstLV0gPFBmYWRlPi4uLiIKK21zZ2lkICJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPFZlcnNpb25zcmVmZXJlbno+IFstLV0gPFBmYWRlPi4uLiIKIAogIzogYnVpbHRpbi9yZXNldC5jOjI3Ci1tc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzxjb21taXQ+XSBbLS1dIFs8cGF0aHM+Li4uXSIKLW1zZ3N0ciAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzxWZXJzaW9uPl0gWy0tXSBbPFBmYWRlPi4uLl0iCittc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIgorbXNnc3RyICJnaXQgcmVzZXQgLS1wYXRjaCBbPFZlcnNpb25zcmVmZXJlbno+XSBbLS1dIFs8UGZhZGU+Li4uXSIKIAogIzogYnVpbHRpbi9yZXNldC5jOjMzCiBtc2dpZCAibWl4ZWQiCkBAIC03ODEyLDkxICs4NDAyLDk4IEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAia2VlcCIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc3CisjOiBidWlsdGluL3Jlc2V0LmM6NzMKIG1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFELiIKLW1zZ3N0ciAiRHUgaGFzdCBrZWluZSBnw7xsdGlnZSBad2VpZ3NwaXR6ZSAoSEVBRCkuIgorbXNnc3RyICJTaWUgaGFiZW4ga2VpbmUgZ8O8bHRpZ2UgWndlaWdzcGl0emUgKEhFQUQpLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc5CisjOiBidWlsdGluL3Jlc2V0LmM6NzUKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mIEhFQUQuIgogbXNnc3RyICJGZWhsZXIgYmVpbSBGaW5kZW4gZGVzIEJhdW1lcyBkZXIgWndlaWdzcGl0emUgKEhFQUQpLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjg1CisjOiBidWlsdGluL3Jlc2V0LmM6ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiAlcy4iCiBtc2dzdHIgIkZlaGxlciBiZWltIEZpbmRlbiBkZXMgQmF1bWVzIHZvbiAlcy4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo5NgotbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iCi1tc2dzdHIgIktvbm50ZSBuZXVlIEJlcmVpdHN0ZWxsdW5nc2RhdGVpIG5pY2h0IHNjaHJlaWJlbi4iCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMDYKKyM6IGJ1aWx0aW4vcmVzZXQuYzo5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCAlcyIKIG1zZ3N0ciAiWndlaWdzcGl0emUgKEhFQUQpIGlzdCBqZXR6dCBiZWkgJXMiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzAKLW1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKLW1zZ3N0ciAiS29ubnRlIEJlcmVpdHN0ZWxsdW5nIG5pY2h0IGxlc2VuIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMzCi1tc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCi1tc2dzdHIgIk5pY2h0IGJlcmVpdGdlc3RlbGx0ZSDDhG5kZXJ1bmdlbiBuYWNoIFp1csO8Y2tzZXR6dW5nOiIKLQotIzogYnVpbHRpbi9yZXNldC5jOjIyMworIzogYnVpbHRpbi9yZXNldC5jOjE2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gYSAlcyByZXNldCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UuIgogbXNnc3RyICIiCiAiS2FubiBrZWluZSAnJXMnIFp1csO8Y2tzZXR6dW5nIGR1cmNoZsO8aHJlbiwgd8OkaHJlbmQgZWluZSBadXNhbW1lbmbDvGhydW5nIGltICIKICJHYW5nZSBpc3QuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjM4CisjOiBidWlsdGluL3Jlc2V0LmM6MjQ4CiBtc2dpZCAiYmUgcXVpZXQsIG9ubHkgcmVwb3J0IGVycm9ycyIKIG1zZ3N0ciAid2VuaWdlciBBdXNnYWJlbiwgbWVsZGV0IG51ciBGZWhsZXIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDAKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTAKIG1zZ2lkICJyZXNldCBIRUFEIGFuZCBpbmRleCIKLW1zZ3N0ciAic2V0enQgWndlaWdzcGl0emUgKEhFQUQpIHVuZCBCZXJlaXRzdGVsbHVuZyB6dXLDvGNrIgorbXNnc3RyICJzZXR6dCBad2VpZ3NwaXR6ZSAoSEVBRCkgdW5kIEJlcmVpdHN0ZWxsdW5nIG5ldSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MQorIzogYnVpbHRpbi9yZXNldC5jOjI1MQogbXNnaWQgInJlc2V0IG9ubHkgSEVBRCIKLW1zZ3N0ciAic2V0enQgbnVyIFp3ZWlnc3BpdHplIChIRUFEKSB6dXLDvGNrIgorbXNnc3RyICJzZXR6dCBudXIgWndlaWdzcGl0emUgKEhFQUQpIG5ldSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MyBidWlsdGluL3Jlc2V0LmM6MjQ1CisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKIG1zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgotbXNnc3RyICJzZXR6dCBad2VpZ3NwaXR6ZSAoSEVBRCksIEJlcmVpdHN0ZWxsdW5nIHVuZCBBcmJlaXRzYmF1bSB6dXLDvGNrIgorbXNnc3RyICJzZXR6dCBad2VpZ3NwaXR6ZSAoSEVBRCksIEJlcmVpdHN0ZWxsdW5nIHVuZCBBcmJlaXRzYmF1bSBuZXUiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDcKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTcKIG1zZ2lkICJyZXNldCBIRUFEIGJ1dCBrZWVwIGxvY2FsIGNoYW5nZXMiCi1tc2dzdHIgInNldHp0IFp3ZWlnc3BpdHplIChIRUFEKSB6dXLDvGNrLCBiZWjDpGx0IGFiZXIgbG9rYWxlIMOEbmRlcnVuZ2VuIgorbXNnc3RyICJzZXR6dCBad2VpZ3NwaXR6ZSAoSEVBRCkgbmV1LCBiZWjDpGx0IGFiZXIgbG9rYWxlIMOEbmRlcnVuZ2VuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzAzCisjOiBidWlsdGluL3Jlc2V0LmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZXZpc2lvbi4iCittc2dzdHIgIktvbm50ZSAnJXMnIG5pY2h0IGFscyBnw7xsdGlnZSBSZXZpc2lvbiBhdWZsw7ZzZW4uIgorCisjOiBidWlsdGluL3Jlc2V0LmM6Mjc4IGJ1aWx0aW4vcmVzZXQuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiS29ubnRlIE9iamVrdCAnJXMnIG5pY2h0IHBhcnNlbi4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMDgKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHRyZWUuIgorbXNnc3RyICJLb25udGUgJyVzJyBuaWNodCBhbHMgZ8O8bHRpZ2VuIEJhdW0gYXVmbMO2c2VuLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI5MgogbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggLS17aGFyZCxtaXhlZCxzb2Z0fSIKIG1zZ3N0ciAiLS1wYXRjaCBpc3QgaW5rb21wYXRpYmVsIG1pdCAtLXtoYXJkLG1peGVkLHNvZnR9IgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE3CisjOiBidWlsdGluL3Jlc2V0LmM6MzAxCiBtc2dpZCAiLS1taXhlZCB3aXRoIHBhdGhzIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnZ2l0IHJlc2V0IC0tIDxwYXRocz4nIGluc3RlYWQuIgogbXNnc3RyICIiCi0iLS1taXhlZCBtaXQgUGZhZGVuIGlzdCB2ZXJhbHRldDsgYmVudXR6ZSBzdGF0dGRlc3NlbiAnZ2l0IHJlc2V0IC0tIDxQZmFkZT4nLiIKKyItLW1peGVkIG1pdCBQZmFkZW4gaXN0IHZlcmFsdGV0OyBiZW51dHplbiBTaWUgc3RhdHRkZXNzZW4gJ2dpdCByZXNldCAtLSAiCisiPFBmYWRlPicuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE5CisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiRWluZSAnJXMnIFp1csO8Y2tzZXR6dW5nIG1pdCBQZmFkZW4gaXN0IG5pY2h0IG3DtmdsaWNoLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMzMQorIzogYnVpbHRpbi9yZXNldC5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiJyVzJyBadXLDvGNrc2V0enVuZyBpc3QgaW4gZWluZW0gYmxvw59lbiBQcm9qZWt0YXJjaGl2IG5pY2h0IGVybGF1YnQiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozNDcKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iCi1tc2dzdHIgIktvbm50ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCB6dSBWZXJzaW9uICclcycgenVyw7xja3NldHplbi4iCittc2dzdHIgIktvbm50ZSBCZXJlaXRzdGVsbHVuZ3NkYXRlaSBuaWNodCB6dSBSZXZpc2lvbiAnJXMnIHNldHplbi4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzkKK21zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKK21zZ3N0ciAiTmljaHQgYmVyZWl0Z2VzdGVsbHRlIMOEbmRlcnVuZ2VuIG5hY2ggWnVyw7xja3NldHp1bmc6IgorCisjOiBidWlsdGluL3Jlc2V0LmM6MzQ0Cittc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKK21zZ3N0ciAiS29ubnRlIG5ldWUgQmVyZWl0c3RlbGx1bmdzZGF0ZWkgbmljaHQgc2NocmVpYmVuLiIKIAogIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozMzkKIG1zZ2lkICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dIgpAQCAtNzkyMiwyMCArODUxOSwyMCBAQAogIiAgIG9kZXI6IGdpdCByZXYtcGFyc2UgLS1zcS1xdW90ZSBbPEFyZ3VtZW50ZT4uLi5dXG4iCiAiICAgb2RlcjogZ2l0IHJldi1wYXJzZSBbT3B0aW9uZW5dIFs8QXJndW1lbnRlPi4uLl1cbiIKICJcbiIKLSJGw7xocmUgXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiBmw7xyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiBiZWkgZXJzdGVyICIKLSJWZXJ3ZW5kdW5nIGF1cy4iCisiRsO8aHJlbiBTaWUgXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiBmw7xyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiBiZWkgIgorImVyc3RlciBWZXJ3ZW5kdW5nIGF1cy4iCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIKLW1zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4iCi1tc2dzdHIgImdpdCByZXZlcnQgW29wdGlvbnNdIDxWZXJzaW9uc2FuZ2FiZT4iCittc2dpZCAiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgcmV2ZXJ0IFtPcHRpb25lbl0gPFZlcnNpb25zYW5nYWJlPi4uLiIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoyMwogbXNnaWQgImdpdCByZXZlcnQgPHN1YmNvbW1hbmQ+IgogbXNnc3RyICJnaXQgcmV2ZXJ0IDxVbnRlcmtvbW1hbmRvPiIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoyOAotbXNnaWQgImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+IgotbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgW09wdGlvbmVuXSA8VmVyc2lvbnNhbmdhYmU+IgorbXNnaWQgImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgW09wdGlvbmVuXSA8VmVyc2lvbnNhbmdhYmU+Li4uIgogCiAjOiBidWlsdGluL3JldmVydC5jOjI5CiBtc2dpZCAiZ2l0IGNoZXJyeS1waWNrIDxzdWJjb21tYW5kPiIKQEAgLTc5NDQsNyArODU0MSw3IEBACiAjOiBidWlsdGluL3JldmVydC5jOjcwIGJ1aWx0aW4vcmV2ZXJ0LmM6OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCi1tc2dzdHIgIiVzOiAlcyBrYW5uIG5pY2h0IG1pdCAlcyBiZW51dHp0IHdlcmRlbiIKK21zZ3N0ciAiJXM6ICVzIGthbm4gbmljaHQgbWl0ICVzIHZlcndlbmRldCB3ZXJkZW4iCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTAzCiBtc2dpZCAiZW5kIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKQEAgLTgwMjUsOCArODYyMiw5IEBACiAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgogbXNnc3RyICIiCiAiVW50ZXJwcm9qZWt0ICclcycgKG9kZXIgZWluIGdlc2NoYWNodGVsdGVzIFVudGVycHJvamVrdCBoaWVydm9uKSB2ZXJ3ZW5kZXRcbiIKLSJlaW4gLmdpdC1WZXJ6ZWljaG5pcyAoYmVudXR6ZSAncm0gLXJmJyB3ZW5uIGR1IGRpZXNlcyB3aXJrbGljaCBtaXRzYW10XG4iCi0ic2VpbmVyIEhpc3RvcmllIGzDtnNjaGVuIG3DtmNodGVzdCkiCisiZWluIC5naXQtVmVyemVpY2huaXMgKGJlbnV0emVuIFNpZSAncm0gLXJmJyB3ZW5uIFNpZSBkaWVzZXMgd2lya2xpY2ggIgorIm1pdHNhbXRcbiIKKyJzZWluZXIgSGlzdG9yaWUgbMO2c2NoZW4gbcO2Y2h0ZW4pIgogCiAjOiBidWlsdGluL3JtLmM6MTc0CiAjLCBjLWZvcm1hdApAQCAtODAzNSw3ICs4NjMzLDcgQEAKICIodXNlIC1mIHRvIGZvcmNlIHJlbW92YWwpIgogbXNnc3RyICIiCiAiJyVzJyBoYXQgYmVyZWl0Z2VzdGVsbHRlbiBJbmhhbHQgdW50ZXJzY2hpZWRsaWNoIHp1IGRlciBEYXRlaSB1bmQgZGVyXG4iCi0iWndlaWdzcGl0emUgKEhFQUQpIChiZW51dHplIC1mIHVtIGRpZSBFbnRmZXJudW5nIHp1IGVyendpbmdlbikiCisiWndlaWdzcGl0emUgKEhFQUQpIChiZW51dHplbiBTaWUgLWYgdW0gZGllIEVudGZlcm51bmcgenUgZXJ6d2luZ2VuKSIKIAogIzogYnVpbHRpbi9ybS5jOjE4MAogIywgYy1mb3JtYXQKQEAgLTgwNDQsOCArODY0Miw4IEBACiAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgogIiclcycgaGF0IMOEbmRlcnVuZ2VuIGluIGRlciBCZXJlaXRzdGVsbHVuZ1xuIgotIihiZW51dHplIC0tY2FjaGVkIHVtIGRpZSBEYXRlaSB6dSBiZWhhbHRlbiwgb2RlciAtZiB1bSBkaWUgRW50ZmVybnVuZyB6dSAiCi0iZXJ6d2luZ2VuKSIKKyIoYmVudXR6ZW4gU2llIC0tY2FjaGVkIHVtIGRpZSBEYXRlaSB6dSBiZWhhbHRlbiwgb2RlciAtZiB1bSBkaWUgRW50ZmVybnVuZyAiCisienUgZXJ6d2luZ2VuKSIKIAogIzogYnVpbHRpbi9ybS5jOjE5MQogIywgYy1mb3JtYXQKQEAgLTgwNTQsOCArODY1Miw4IEBACiAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgogIiclcycgaGF0IGxva2FsZSBNb2RpZmlrYXRpb25lblxuIgotIihiZW51dHplIC0tY2FjaGVkIHVtIGRpZSBEYXRlaSB6dSBiZWhhbHRlbiwgb2RlciAtZiB1bSBkaWUgRW50ZmVybnVuZyB6dSAiCi0iZXJ6d2luZ2VuKSIKKyIoYmVudXR6ZW4gU2llIC0tY2FjaGVkIHVtIGRpZSBEYXRlaSB6dSBiZWhhbHRlbiwgb2RlciAtZiB1bSBkaWUgRW50ZmVybnVuZyAiCisienUgZXJ6d2luZ2VuKSIKIAogIzogYnVpbHRpbi9ybS5jOjIwNwogbXNnaWQgImRvIG5vdCBsaXN0IHJlbW92ZWQgZmlsZXMiCkBAIC04MDg4LDMzICs4Njg2LDMxIEBACiBtc2dzdHIgImdpdCBybToga29ubnRlICVzIG5pY2h0IGzDtnNjaGVuIgogCiAjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMKLW1zZ2lkICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iCi1tc2dzdHIgIiIKLSJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gIgotIls8VmVyc2lvbnNpZGVudGlmaWthdGlvbj4uLi4gXSIKK21zZ2lkICJnaXQgc2hvcnRsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIFs8cGF0aD4uLi5dXSIKK21zZ3N0ciAiZ2l0IHNob3J0bG9nIFs8T3B0aW9uZW4+XSBbUmV2aXNpb25zYmVyZWljaF0gW1stLV0gPFBmYWQ+Li4uXSIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIGF1dGhvcjogJXMiCiBtc2dzdHIgImZlaGxlbmRlciBBdXRvcjogJXMiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTMKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjcKIG1zZ2lkICJzb3J0IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjb21taXRzIHBlciBhdXRob3IiCiBtc2dzdHIgInNvcnRpZXJ0IGRpZSBBdXNnYWJlIGVudHNwcmVjaGVuZCBkZXIgQW56YWhsIHZvbiBWZXJzaW9uZW4gcHJvIEF1dG9yIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU1CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5CiBtc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCiBtc2dzdHIgIlVudGVyZHLDvGNrdCBWZXJzaW9uc2Jlc2NocmVpYnVuZ2VuLCBsaWVmZXJ0IG51ciBBbnphaGwgZGVyIFZlcnNpb25lbiIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMQogbXNnaWQgIlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgZWFjaCBhdXRob3IiCiBtc2dzdHIgIlplaWd0IGRpZSBFbWFpbC1BZHJlc3NlIHZvbiBqZWRlbSBBdXRvciIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1OAorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgogbXNnaWQgIndbLGkxWyxpMl1dIgogbXNnc3RyICJ3WyxpMVssaTJdXSIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1OQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMwogbXNnaWQgIkxpbmV3cmFwIG91dHB1dCIKIG1zZ3N0ciAiQXVzZ2FiZSBtaXQgWmVpbGVudW1icsO8Y2hlbiIKIApAQCAtODEzNCw2OCArODczMCw2OCBAQAogbXNnaWQgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxiYXNlPl1dIFstLWxpc3RdIFs8cmVmPl0iCiBtc2dzdHIgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxCYXNpcz5dXSBbLS1saXN0XSBbPFJlZmVyZW56Pl0iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTEKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTAKIG1zZ2lkICJzaG93IHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCiBtc2dzdHIgInplaWd0IGV4dGVybmUgw5xiZXJuYWhtZXp3ZWlnZSB1bmQgbG9rYWxlIFp3ZWlnZSBhbiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MgogbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIgogbXNnc3RyICJ6ZWlndCBleHRlcm5lIMOcYmVybmFobWV6d2VpZ2UgYW4iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTQKIG1zZ2lkICJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIgogbXNnc3RyICJmw6RyYnQgJyohKy0nIGVudHNwcmVjaGVuZCBkZXMgWndlaWdlcyBlaW4iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTcKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYKIG1zZ2lkICJzaG93IDxuPiBtb3JlIGNvbW1pdHMgYWZ0ZXIgdGhlIGNvbW1vbiBhbmNlc3RvciIKIG1zZ3N0ciAiemVpZ3QgPG4+IHdlaXRlcmUgVmVyc2lvbmVuIG5hY2ggZGVtIGdlbWVpbnNhbWVuIFZvcmZhaHJlbiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OQorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OAogbXNnaWQgInN5bm9ueW0gdG8gbW9yZT0tMSIKIG1zZ3N0ciAiU3lub255bSBmw7xyIG1vcmU9LTEiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjAKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTkKIG1zZ2lkICJzdXBwcmVzcyBuYW1pbmcgc3RyaW5ncyIKIG1zZ3N0ciAidW50ZXJkcsO8Y2t0IE5hbWVuIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYyCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCiBtc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCiBtc2dzdHIgImJlemllaHQgZGVuIGFrdHVlbGxlbiBad2VpZyBlaW4iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjQKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjMKIG1zZ2lkICJuYW1lIGNvbW1pdHMgd2l0aCB0aGVpciBvYmplY3QgbmFtZXMiCiBtc2dzdHIgImJlbmVubnQgVmVyc2lvbmVuIG5hY2ggaWhyZW4gT2JqZWt0bmFtZW4iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjYKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjUKIG1zZ2lkICJzaG93IHBvc3NpYmxlIG1lcmdlIGJhc2VzIgogbXNnc3RyICJ6ZWlndCBtw7ZnbGljaGUgQmFzZW4gZsO8ciBadXNhbW1lbmbDvGhydW5nIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY4CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY3CiBtc2dpZCAic2hvdyByZWZzIHVucmVhY2hhYmxlIGZyb20gYW55IG90aGVyIHJlZiIKIG1zZ3N0ciAiemVpZ3QgUmVmZXJlbnplbiBkaWUgdW5lcnJlaWNoYmFyIHZvbiBhbGxlbiBhbmRlcmVuIFJlZmVyZW56ZW4gc2luZCIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2OQogbXNnaWQgInNob3cgY29tbWl0cyBpbiB0b3BvbG9naWNhbCBvcmRlciIKIG1zZ3N0ciAiemVpZ3QgVmVyc2lvbmVuIGluIHRvcG9sb2dpc2NoZXIgT3JkbnVuZyIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MQogbXNnaWQgInNob3cgb25seSBjb21taXRzIG5vdCBvbiB0aGUgZmlyc3QgYnJhbmNoIgogbXNnc3RyICJ6ZWlndCBudXIgVmVyc2lvbmVuLCBkaWUgc2ljaCBuaWNodCBpbSBlcnN0ZW4gWndlaWcgYmVmaW5kZW4iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzQKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzMKIG1zZ2lkICJzaG93IG1lcmdlcyByZWFjaGFibGUgZnJvbSBvbmx5IG9uZSB0aXAiCiBtc2dzdHIgIiIKICJ6ZWlndCBadXNhbW1lbmbDvGhydW5nZW4sIGRpZSBudXIgdm9uIGVpbmVyIFp3ZWlnc3BpdHplIGF1cyBlcnJlaWNoYmFyIHNpbmQiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzYKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzUKIG1zZ2lkICJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgY2hpbGRyZW4iCiBtc2dzdHIgInplaWd0IFZlcnNpb25lbiwgd28ga2VpbiBFbHRlcm50ZWlsIHZvciBzZWluZW0gS2luZCBrb21tdCIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NwogbXNnaWQgIjxuPlssPGJhc2U+XSIKIG1zZ3N0ciAiPG4+Wyw8QmFzaXM+XSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OQorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAogbXNnaWQgInNob3cgPG4+IG1vc3QgcmVjZW50IHJlZi1sb2cgZW50cmllcyBzdGFydGluZyBhdCBiYXNlIgogbXNnc3RyICIiCiAiemVpZ3QgZGllIDxuPiBqw7xuZ3N0ZW4gRWludHLDpGdlIGltIFJlZmVyZW56cHJvdG9rb2xsIGJlZ2lubmVuZCBhbiBkZXIgQmFzaXMiCkBAIC04MzI1LDE3MCArODkyMSwxNjQgQEAKIG1zZ3N0ciAiS29ubnRlIE1hcmtpZXJ1bmcgJyVzJyBuaWNodCB2ZXJpZml6aWVyZW4iCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgR2ViZSBlaW5lIE1hcmtpZXJ1bmdzYmVzY2hyZWlidW5nIGVpblxuIgotIiMgWmVpbGVuLCBkaWUgbWl0ICcjJyBiZWdpbm5lbiwgd2VyZGVuIGlnbm9yaWVydC5cbiIKLSIjXG4iCisiR2ViZW4gU2llIGVpbmUgTWFya2llcnVuZ3NiZXNjaHJlaWJ1bmcgZWluLlxuIgorIlplaWxlbiwgZGllIG1pdCAnJWMnIGJlZ2lubmVuLCB3ZXJkZW4gaWdub3JpZXJ0LlxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI1NgorIzogYnVpbHRpbi90YWcuYzoyNTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgotIiNcbiIKLSIjIFdyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKLSIjIExpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3UgIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCiAid2FudCB0by5cbiIKLSIjXG4iCiBtc2dzdHIgIiIKICJcbiIKLSIjXG4iCi0iIyBHZWJlIGVpbmUgTWFya2llcnVuZ3NiZXNjaHJlaWJ1bmcgZWluXG4iCi0iIyBaZWlsZW4sIGRpZSBtaXQgJyMnIGJlZ2lubmVuLCB3ZXJkZW4gYmVoYWx0ZW47IGR1IGRhcmZzdCBkaWVzZVxuIgotIiMgc2VsYnN0IGVudGZlcm5lbiB3ZW5uIGR1IG3DtmNodGVzdC5cbiIKLSIjXG4iCisiR2ViZW4gU2llIGVpbmUgTWFya2llcnVuZ3NiZXNjaHJlaWJ1bmcgZWluLlxuIgorIlplaWxlbiwgZGllIG1pdCAnJWMnIGJlZ2lubmVuLCB3ZXJkZW4gYmVoYWx0ZW47IFNpZSBkw7xyZmVuIGRpZXNlXG4iCisic2VsYnN0IGVudGZlcm5lbiB3ZW5uIFNpZSBtw7ZjaHRlbi5cbiIKIAotIzogYnVpbHRpbi90YWcuYzoyOTgKKyM6IGJ1aWx0aW4vdGFnLmM6MjkyCiBtc2dpZCAidW5hYmxlIHRvIHNpZ24gdGhlIHRhZyIKIG1zZ3N0ciAia29ubnRlIE1hcmtpZXJ1bmcgbmljaHQgc2lnbmllcmVuIgogCi0jOiBidWlsdGluL3RhZy5jOjMwMAorIzogYnVpbHRpbi90YWcuYzoyOTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgdGFnIGZpbGUiCiBtc2dzdHIgImtvbm50ZSBNYXJraWVydW5nc2RhdGVpIG5pY2h0IHNjaHJlaWJlbiIKIAotIzogYnVpbHRpbi90YWcuYzozMjUKKyM6IGJ1aWx0aW4vdGFnLmM6MzE5CiBtc2dpZCAiYmFkIG9iamVjdCB0eXBlLiIKIG1zZ3N0ciAidW5nw7xsdGlnZXIgT2JqZWt0LVR5cCIKIAotIzogYnVpbHRpbi90YWcuYzozMzgKKyM6IGJ1aWx0aW4vdGFnLmM6MzMyCiBtc2dpZCAidGFnIGhlYWRlciB0b28gYmlnLiIKIG1zZ3N0ciAiTWFya2llcnVuZ3Nrb3BmIHp1IGdyb8OfLiIKIAotIzogYnVpbHRpbi90YWcuYzozNzAKKyM6IGJ1aWx0aW4vdGFnLmM6MzY4CiBtc2dpZCAibm8gdGFnIG1lc3NhZ2U/IgogbXNnc3RyICJrZWluZSBNYXJraWVydW5nc2Jlc2NocmVpYnVuZz8iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mzc2CisjOiBidWlsdGluL3RhZy5jOjM3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgdGFnIG1lc3NhZ2UgaGFzIGJlZW4gbGVmdCBpbiAlc1xuIgogbXNnc3RyICJEaWUgTWFya2llcnVuZ3NiZXNjaHJlaWJ1bmcgd3VyZGUgZ2VsYXNzZW4gaW4gJXNcbiIKIAotIzogYnVpbHRpbi90YWcuYzo0MjUKKyM6IGJ1aWx0aW4vdGFnLmM6NDIzCiBtc2dpZCAic3dpdGNoICdwb2ludHMtYXQnIHJlcXVpcmVzIGFuIG9iamVjdCIKIG1zZ3N0ciAiT3B0aW9uICdwb2ludHMtYXQnIGVyZm9yZGVydCBlaW4gT2JqZWt0IgogCi0jOiBidWlsdGluL3RhZy5jOjQyNworIzogYnVpbHRpbi90YWcuYzo0MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICclcyciCiBtc2dzdHIgImZlaGxlcmhhZnRlciBPYmpla3QtTmFtZSAnJXMnIgogCi0jOiBidWlsdGluL3RhZy5jOjQ0NworIzogYnVpbHRpbi90YWcuYzo0NDUKIG1zZ2lkICJsaXN0IHRhZyBuYW1lcyIKIG1zZ3N0ciAibGlzdGV0IE1hcmtpZXJ1bmdzbmFtZW4gYXVmIgogCi0jOiBidWlsdGluL3RhZy5jOjQ0OQorIzogYnVpbHRpbi90YWcuYzo0NDcKIG1zZ2lkICJwcmludCA8bj4gbGluZXMgb2YgZWFjaCB0YWcgbWVzc2FnZSIKIG1zZ3N0ciAiemVpZ3QgPG4+IFplaWxlbiBqZWRlciBNYXJraWVydW5nc2Jlc2NocmVpYnVuZyIKIAotIzogYnVpbHRpbi90YWcuYzo0NTEKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ5CiBtc2dpZCAiZGVsZXRlIHRhZ3MiCiBtc2dzdHIgImzDtnNjaHQgTWFya2llcnVuZ2VuIgogCi0jOiBidWlsdGluL3RhZy5jOjQ1MgorIzogYnVpbHRpbi90YWcuYzo0NTAKIG1zZ2lkICJ2ZXJpZnkgdGFncyIKIG1zZ3N0ciAiw7xiZXJwcsO8ZnQgTWFya2llcnVuZ2VuIgogCi0jOiBidWlsdGluL3RhZy5jOjQ1NAorIzogYnVpbHRpbi90YWcuYzo0NTIKIG1zZ2lkICJUYWcgY3JlYXRpb24gb3B0aW9ucyIKIG1zZ3N0ciAiT3B0aW9uZW4gZsO8ciBFcnN0ZWxsdW5nIHZvbiBNYXJraWVydW5nZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU2CisjOiBidWlsdGluL3RhZy5jOjQ1NAogbXNnaWQgImFubm90YXRlZCB0YWcsIG5lZWRzIGEgbWVzc2FnZSIKIG1zZ3N0ciAiYW5ub3RpZXJ0ZSBNYXJraWVydW5nLCBiZW7DtnRpZ3QgZWluZSBCZXNjaHJlaWJ1bmciCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU4CisjOiBidWlsdGluL3RhZy5jOjQ1NgogbXNnaWQgInRhZyBtZXNzYWdlIgogbXNnc3RyICJNYXJraWVydW5nc2Jlc2NocmVpYnVuZyIKIAotIzogYnVpbHRpbi90YWcuYzo0NjAKKyM6IGJ1aWx0aW4vdGFnLmM6NDU4CiBtc2dpZCAiYW5ub3RhdGVkIGFuZCBHUEctc2lnbmVkIHRhZyIKIG1zZ3N0ciAiYW5ub3RpZXJ0ZSB1bmQgR1BHLXNpZ25pZXJ0ZSBNYXJraWVydW5nIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2NAorIzogYnVpbHRpbi90YWcuYzo0NjIKIG1zZ2lkICJ1c2UgYW5vdGhlciBrZXkgdG8gc2lnbiB0aGUgdGFnIgotbXNnc3RyICJiZW51dHp0IGVpbmVuIGFuZGVyZW4gU2NobMO8c3NlbCB1bSBkaWUgTWFya2llcnVuZyB6dSBzaWduaWVyZW4iCittc2dzdHIgInZlcndlbmRldCBlaW5lbiBhbmRlcmVuIFNjaGzDvHNzZWwgdW0gZGllIE1hcmtpZXJ1bmcgenUgc2lnbmllcmVuIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2NQorIzogYnVpbHRpbi90YWcuYzo0NjMKIG1zZ2lkICJyZXBsYWNlIHRoZSB0YWcgaWYgZXhpc3RzIgogbXNnc3RyICJlcnNldHp0IGRpZSBNYXJraWVydW5nLCB3ZW5uIHNpZSBleGlzdGllcnQiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDY2CisjOiBidWlsdGluL3RhZy5jOjQ2NAogbXNnaWQgInNob3cgdGFnIGxpc3QgaW4gY29sdW1ucyIKIG1zZ3N0ciAiemVpZ3QgTGlzdGUgZGVyIE1hcmtpZXJ1bmdlbiBpbiBTcGFsdGVuIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2OAorIzogYnVpbHRpbi90YWcuYzo0NjYKIG1zZ2lkICJUYWcgbGlzdGluZyBvcHRpb25zIgogbXNnc3RyICJPcHRpb25lbiBmw7xyIEF1Zmxpc3R1bmcgZGVyIE1hcmtpZXJ1bmdlbiIKIAotIzogYnVpbHRpbi90YWcuYzo0NzEKKyM6IGJ1aWx0aW4vdGFnLmM6NDY5CiBtc2dpZCAicHJpbnQgb25seSB0YWdzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IgogbXNnc3RyICJnaWJ0IG51ciBNYXJraWVydW5nZW4gYXVzLCBkaWUgZGllc2UgVmVyc2lvbiBiZWluaGFsdGVuIgogCi0jOiBidWlsdGluL3RhZy5jOjQ3NworIzogYnVpbHRpbi90YWcuYzo0NzUKIG1zZ2lkICJwcmludCBvbmx5IHRhZ3Mgb2YgdGhlIG9iamVjdCIKIG1zZ3N0ciAiZ2lidCBudXIgTWFya2llcnVuZ2VuIHZvbiBkZW0gT2JqZWt0IGF1cyIKIAotIzogYnVpbHRpbi90YWcuYzo1MDYKKyM6IGJ1aWx0aW4vdGFnLmM6NTA0CiBtc2dpZCAiLS1jb2x1bW4gYW5kIC1uIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tY29sdW1uIHVuZCAtbiBzaW5kIGlua29tcGF0aWJlbCIKIAotIzogYnVpbHRpbi90YWcuYzo1MjMKKyM6IGJ1aWx0aW4vdGFnLmM6NTIxCiBtc2dpZCAiLW4gb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAiLW4gT3B0aW9uIGlzdCBudXIgZXJsYXVidCBtaXQgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNQorIzogYnVpbHRpbi90YWcuYzo1MjMKIG1zZ2lkICItLWNvbnRhaW5zIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIi0tY29udGFpbnMgT3B0aW9uIGlzdCBudXIgZXJsYXVidCBtaXQgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNworIzogYnVpbHRpbi90YWcuYzo1MjUKIG1zZ2lkICItLXBvaW50cy1hdCBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICItLXBvaW50cy1hdCBPcHRpb24gaXN0IG51ciBlcmxhdWJ0IG1pdCAtbC4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTM1CisjOiBidWlsdGluL3RhZy5jOjUzMwogbXNnaWQgIm9ubHkgb25lIC1GIG9yIC1tIG9wdGlvbiBpcyBhbGxvd2VkLiIKIG1zZ3N0ciAibnVyIGVpbmUgLUYgb2RlciAtbSBPcHRpb24gaXN0IGVybGF1YnQuIgogCi0jOiBidWlsdGluL3RhZy5jOjU1NQorIzogYnVpbHRpbi90YWcuYzo1NTMKIG1zZ2lkICJ0b28gbWFueSBwYXJhbXMiCiBtc2dzdHIgInp1IHZpZWxlIFBhcmFtZXRlciIKIAotIzogYnVpbHRpbi90YWcuYzo1NjEKKyM6IGJ1aWx0aW4vdGFnLmM6NTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgdGFnIG5hbWUuIgogbXNnc3RyICInJXMnIGlzdCBrZWluIGfDvGx0aWdlciBNYXJraWVydW5nc25hbWUuIgogCi0jOiBidWlsdGluL3RhZy5jOjU2NgorIzogYnVpbHRpbi90YWcuYzo1NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIk1hcmtpZXJ1bmcgJyVzJyBleGlzdGllcnQgYmVyZWl0cyIKIAotIzogYnVpbHRpbi90YWcuYzo1ODQKKyM6IGJ1aWx0aW4vdGFnLmM6NTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgbG9jayB0aGUgcmVmIgogbXNnc3RyICIlczoga2FubiBSZWZlcmVueiBuaWNodCBzcGVycmVuIgogCi0jOiBidWlsdGluL3RhZy5jOjU4NgorIzogYnVpbHRpbi90YWcuYzo1ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCB1cGRhdGUgdGhlIHJlZiIKIG1zZ3N0ciAiJXM6IGthbm4gUmVmZXJlbnogbmljaHQgYWt0dWFsaXNpZXJlbiIKIAotIzogYnVpbHRpbi90YWcuYzo1ODgKKyM6IGJ1aWx0aW4vdGFnLmM6NTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0ZWQgdGFnICclcycgKHdhcyAlcylcbiIKIG1zZ3N0ciAiQWt0dWFsaXNpZXJ0ZSBNYXJraWVydW5nICclcycgKHdhciAlcylcbiIKQEAgLTg2NzQsMjQgKzkyNjQsMjkgQEAKIG1zZ3N0ciAibnVyIG7DvHR6bGljaCBmw7xyIEZlaGxlcnN1Y2hlIgogCiAjOiBnaXQuYzoxNgotbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgorbXNnaWQgIiIKKyInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgorImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKyJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKIG1zZ3N0ciAiIgotIlNpZWhlICdnaXQgaGVscCA8S29tbWFuZG8+JyBmw7xyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiB6dSBlaW5lbSBzcGV6aWZpc2NoZW4gIgotIktvbW1hbmRvIgorIidnaXQgaGVscCAtYScgdW5kICdnaXQgaGVscCAtZycgbGlzdGV0IHZlcmbDvGdiYXJlIFVudGVya29tbWFuZG9zIHVuZFxuIgorImVpbmlnZSBBbmxlaXR1bmdlbiB6dSBHaXQtS29uemVwdGVuIGF1Zi4gQmVudXR6ZW4gU2llICdnaXQgaGVscCA8S29tbWFuZG8+J1xuIgorIm9kZXIgJ2dpdCBoZWxwIDxLb256ZXB0PicgdW0gbWVociDDvGJlciBlaW4gc3BlemlmaXNjaGVzIEtvbW1hbmRvIG9kZXJcbiIKKyJLb256ZXB0IHp1IGVyZmFocmVuLiIKIAogIzogcGFyc2Utb3B0aW9ucy5oOjE1NgogbXNnaWQgIm5vLW9wIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSIKIG1zZ3N0ciAiS2VpbiBFZmZla3QgKFLDvGNrd8OkcnRza29tcGF0aWJpbGl0w6R0KSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIyOAorIzogcGFyc2Utb3B0aW9ucy5oOjIzMgogbXNnaWQgImJlIG1vcmUgdmVyYm9zZSIKIG1zZ3N0ciAiZXJ3ZWl0ZXJ0ZSBBdXNnYWJlbiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzMAorIzogcGFyc2Utb3B0aW9ucy5oOjIzNAogbXNnaWQgImJlIG1vcmUgcXVpZXQiCiBtc2dzdHIgIndlbmlnZXIgQXVzZ2FiZW4iCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAiYmVudXR6ZSA8bj4gWmlmZmVybiB6dXIgQW56ZWlnZSB2b24gU0hBLTFzIgogCkBAIC04NzMzLDcgKzkzMjgsNyBAQAogbXNnc3RyICJTdGVsbHQgWmVpbGVuIGRhciwgZGllIGVpbmVtIE11c3RlciBlbnRzcHJlY2hlbiIKIAogIzogY29tbW9uLWNtZHMuaDoxNwotbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgorbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgogbXNnc3RyICIiCiAiRXJzdGVsbHQgZWluIGxlZXJlcyBHaXQtUHJvamVrdGFyY2hpdiBvZGVyIGluaXRpYWxpc2llcnQgZWluIGJlc3RlaGVuZGVzIG5ldSIKIApAQCAtODc2Nyw4ICs5MzYyLDcgQEAKIAogIzogY29tbW9uLWNtZHMuaDoyNAogbXNnaWQgIlJlc2V0IGN1cnJlbnQgSEVBRCB0byB0aGUgc3BlY2lmaWVkIHN0YXRlIgotbXNnc3RyICIiCi0iU2V0enQgZGllIGFrdHVlbGxlIFp3ZWlnc3BpdHplIChIRUFEKSB6dSBlaW5lbSBzcGV6aWZpemllcnRlbiBadXN0YW5kIHp1csO8Y2siCittc2dzdHIgIlNldHp0IGRpZSBha3R1ZWxsZSBad2VpZ3NwaXR6ZSAoSEVBRCkgenUgZWluZW0gc3BlemlmaXppZXJ0ZW4gWnVzdGFuZCIKIAogIzogY29tbW9uLWNtZHMuaDoyNQogbXNnaWQgIlJlbW92ZSBmaWxlcyBmcm9tIHRoZSB3b3JraW5nIHRyZWUgYW5kIGZyb20gdGhlIGluZGV4IgpAQCAtODc5MCwxNCArOTM4NCwxNCBAQAogCiAjOiBnaXQtYW0uc2g6NTAKIG1zZ2lkICJZb3UgbmVlZCB0byBzZXQgeW91ciBjb21taXR0ZXIgaW5mbyBmaXJzdCIKLW1zZ3N0ciAiRHUgbXVzc3QgenVlcnN0IGRpZSBJbmZvcm1hdGlvbmVuIGRlcyBFaW50cmFnZW5kZW4gc2V0emVuLiIKK21zZ3N0ciAiU2llIG3DvHNzZW4genVlcnN0IGRpZSBJbmZvcm1hdGlvbmVuIGRlcyBFaW50cmFnZW5kZW4gc2V0emVuLiIKIAogIzogZ2l0LWFtLnNoOjk1CiBtc2dpZCAiIgogIllvdSBzZWVtIHRvIGhhdmUgbW92ZWQgSEVBRCBzaW5jZSB0aGUgbGFzdCAnYW0nIGZhaWx1cmUuXG4iCiAiTm90IHJld2luZGluZyB0byBPUklHX0hFQUQiCiBtc2dzdHIgIiIKLSJEdSBzY2hlaW5zdCBzZWl0IGRlbSBsZXR6dGVuIGdlc2NoZWl0ZXJ0ZW4gJ2FtJyBkaWUgWndlaWdzcGl0emUgKEhFQUQpXG4iCisiU2llIHNjaGVpbmVuIHNlaXQgZGVtIGxldHp0ZW4gZ2VzY2hlaXRlcnRlbiAnYW0nIGRpZSBad2VpZ3NwaXR6ZSAoSEVBRClcbiIKICJnZcOkbmRlcnQgenUgaGFiZW4uXG4iCiAiS2VpbmUgWnVyw7xja3NldHp1bmcgenUgT1JJR19IRUFELiIKIApAQCAtODgwOCwxMiArOTQwMiwxMSBAQAogIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCIkY21kbGluZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgogIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZywgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIG1zZ3N0ciAiIgotIldlbm4gZHUgZGFzIFByb2JsZW0gZ2Vsw7ZzdCBoYXN0LCBmw7xocmUgXCIkY21kbGluZSAtLXJlc29sdmVkXCIgYXVzLlxuIgotIkZhbGxzIGR1IGRpZXNlbiBQYXRjaCBhdXNsYXNzZW4gbcO2Y2h0ZXN0LCBmw7xocmUgc3RhdHRkZXNzZW4gXCIkY21kbGluZSAtLXNraXAiCi0iXCIgYXVzLlxuIgotIlVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgd2llZGVyaGVyenVzdGVsbGVuIHVuZCBkaWUgQW53ZW5kdW5nIGRlciAiCi0iUGF0Y2hlc1xuIgotImFienVicmVjaGVuLCBmw7xocmUgXCIkY21kbGluZSAtLWFib3J0XCIgYXVzLiIKKyJXZW5uIFNpZSBkYXMgUHJvYmxlbSBnZWzDtnN0IGhhYmVuLCBmw7xocmVuIFNpZSBcIiRjbWRsaW5lIC0tcmVzb2x2ZWRcIiBhdXMuXG4iCisiRmFsbHMgU2llIGRpZXNlbiBQYXRjaCBhdXNsYXNzZW4gbcO2Y2h0ZW4sIGbDvGhyZW4gU2llIHN0YXR0ZGVzc2VuXG4iCisiXCIkY21kbGluZSAtLXNraXBcIiBhdXMuXG4iCisiVW0gZGVuIHVyc3Byw7xuZ2xpY2hlbiBad2VpZyB3aWVkZXJoZXJ6dXN0ZWxsZW4gdW5kIGRpZSBBbndlbmR1bmcgZGVyXG4iCisiUGF0Y2hlcyBhYnp1YnJlY2hlbiwgZsO8aHJlbiBTaWUgXCIkY21kbGluZSAtLWFib3J0XCIgYXVzLiIKIAogIzogZ2l0LWFtLnNoOjEyMQogbXNnaWQgIkNhbm5vdCBmYWxsIGJhY2sgdG8gdGhyZWUtd2F5IG1lcmdlLiIKQEAgLTg4MzYsNyArOTQyOSw3IEBACiAiRGlkIHlvdSBoYW5kIGVkaXQgeW91ciBwYXRjaD9cbiIKICJJdCBkb2VzIG5vdCBhcHBseSB0byBibG9icyByZWNvcmRlZCBpbiBpdHMgaW5kZXguIgogbXNnc3RyICIiCi0iSGFzdCBkdSBkZW4gUGF0Y2ggcGVyIEhhbmQgZWRpdGllcnQ/XG4iCisiSGFiZW4gU2llIGRlbiBQYXRjaCBwZXIgSGFuZCBlZGl0aWVydD9cbiIKICJFciBrYW5uIG5pY2h0IGF1ZiBkaWUgQmxvYnMgaW4gc2VpbmVyICdpbmRleCcgWmVpbGUgYW5nZXdlbmRldCB3ZXJkZW4uIgogCiAjOiBnaXQtYW0uc2g6MTYzCkBAIC04ODc3LDcgKzk0NzAsNyBAQAogCiAjOiBnaXQtYW0uc2g6NDgyCiBtc2dpZCAiUGxlYXNlIG1ha2UgdXAgeW91ciBtaW5kLiAtLXNraXAgb3IgLS1hYm9ydD8iCi1tc2dzdHIgIkJpdHRlIHdlcmRlIGRpciBrbGFyLiAtLXNraXAgb2RlciAtLWFib3J0PyIKK21zZ3N0ciAiQml0dGUgd2VyZGVuIFNpZSBzaWNoIGtsYXIuIC0tc2tpcCBvZGVyIC0tYWJvcnQ/IgogCiAjOiBnaXQtYW0uc2g6NTA5CiBtc2dpZCAiUmVzb2x2ZSBvcGVyYXRpb24gbm90IGluIHByb2dyZXNzLCB3ZSBhcmUgbm90IHJlc3VtaW5nLiIKQEAgLTg4OTcsMTEgKzk0OTAsMTEgQEAKICJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIG1zZ3N0ciAiIgogIlBhdGNoIGlzdCBsZWVyLiBXdXJkZSBlciBmYWxzY2ggYXVmZ2V0ZWlsdD9cbiIKLSJXZW5uIGR1IGRpZXNlbiBQYXRjaCBhdXNsYXNzZW4gbcO2Y2h0ZXN0LCBmw7xocmUgc3RhdHRkZXNzZW4gXCIkY21kbGluZSAtLXNraXAiCi0iXCIgYXVzLlxuIgorIldlbm4gU2llIGRpZXNlbiBQYXRjaCBhdXNsYXNzZW4gbcO2Y2h0ZW4sIGbDvGhyZW4gU2llIHN0YXR0ZGVzc2VuXG4iCisiXCIkY21kbGluZSAtLXNraXBcIiBhdXMuXG4iCiAiVW0gZGVuIHVyc3Byw7xuZ2xpY2hlbiBad2VpZyB3aWVkZXJoZXJ6dXN0ZWxsZW4gdW5kIGRpZSBBbndlbmR1bmcgZGVyICIKICJQYXRjaGVzXG4iCi0iYWJ6dWJyZWNoZW4sIGbDvGhyZSBcIiRjbWRsaW5lIC0tYWJvcnRcIiBhdXMuIgorImFienVicmVjaGVuLCBmw7xocmVuIFNpZSBcIiRjbWRsaW5lIC0tYWJvcnRcIiBhdXMuIgogCiAjOiBnaXQtYW0uc2g6NzA2CiBtc2dpZCAiUGF0Y2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLiIKQEAgLTg5MzUsOSArOTUyOCw5IEBACiAiSWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN0YWdlLCBjaGFuY2VzIGFyZSB0aGF0IHNvbWV0aGluZyBlbHNlXG4iCiAiYWxyZWFkeSBpbnRyb2R1Y2VkIHRoZSBzYW1lIGNoYW5nZXM7IHlvdSBtaWdodCB3YW50IHRvIHNraXAgdGhpcyBwYXRjaC4iCiBtc2dzdHIgIiIKLSJLZWluZSDDhG5kZXJ1bmdlbiAtIGhhc3QgZHUgdmVyZ2Vzc2VuICdnaXQgYWRkJyB6dSBiZW51dHplbj9cbiIKKyJLZWluZSDDhG5kZXJ1bmdlbiAtIGhhYmVuIFNpZSB2ZXJnZXNzZW4gJ2dpdCBhZGQnIHp1IGJlbnV0emVuP1xuIgogIldlbm4ga2VpbmUgw4RuZGVydW5nZW4gbWVociB6dW0gQmVyZWl0c3RlbGxlbiB2b3JoYW5kZW4gc2luZCwga8O2bm50ZW5cbiIKLSJkaWVzZSBiZXJlaXRzIGFuZGVyd2VpdGlnIGVpbmdlZsO8Z3Qgd29yZGVuIHNlaW47IGR1IGvDtm5udGVzdCBkaWVzZW4gUGF0Y2hcbiIKKyJkaWVzZSBiZXJlaXRzIGFuZGVyd2VpdGlnIGVpbmdlZsO8Z3Qgd29yZGVuIHNlaW47IFNpZSBrw7ZubnRlbiBkaWVzZW4gUGF0Y2hcbiIKICJhdXNsYXNzZW4uIgogCiAjOiBnaXQtYW0uc2g6ODI5CkBAIC04OTQ1LDggKzk1MzgsOCBAQAogIllvdSBzdGlsbCBoYXZlIHVubWVyZ2VkIHBhdGhzIGluIHlvdXIgaW5kZXhcbiIKICJkaWQgeW91IGZvcmdldCB0byB1c2UgJ2dpdCBhZGQnPyIKIG1zZ3N0ciAiIgotIkR1IGhhc3QgaW1tZXIgbm9jaCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBQZmFkZSBpbiBkZXIgQmVyZWl0c3RlbGx1bmcuXG4iCi0iSGFzdCBkdSB2ZXJnZXNzZW4gJ2dpdCBhZGQnIHp1IGJlbnV0emVuPyIKKyJTaWUgaGFiZW4gaW1tZXIgbm9jaCBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBQZmFkZSBpbiBkZXIgQmVyZWl0c3RlbGx1bmcuXG4iCisiSGFiZW4gU2llIHZlcmdlc3NlbiAnZ2l0IGFkZCcgenUgYmVudXR6ZW4/IgogCiAjOiBnaXQtYW0uc2g6ODQ1CiBtc2dpZCAiTm8gY2hhbmdlcyAtLSBQYXRjaCBhbHJlYWR5IGFwcGxpZWQuIgpAQCAtODk3MiwxNCArOTU2NSwxNCBAQAogCiAjOiBnaXQtYmlzZWN0LnNoOjQ4CiBtc2dpZCAiWW91IG5lZWQgdG8gc3RhcnQgYnkgXCJnaXQgYmlzZWN0IHN0YXJ0XCIiCi1tc2dzdHIgIkR1IG11c3N0IG1pdCBcImdpdCBiaXNlY3Qgc3RhcnRcIiBiZWdpbm5lbi4iCittc2dzdHIgIlNpZSBtw7xzc2VuIG1pdCBcImdpdCBiaXNlY3Qgc3RhcnRcIiBiZWdpbm5lbi4iCiAKICMuIFRSQU5TTEFUT1JTOiBNYWtlIHN1cmUgdG8gaW5jbHVkZSBbWV0gYW5kIFtuXSBpbiB5b3VyCiAjLiB0cmFuc2xhdGlvbi4gVGhlIHByb2dyYW0gd2lsbCBvbmx5IGFjY2VwdCBFbmdsaXNoIGlucHV0CiAjLiBhdCB0aGlzIHBvaW50LgogIzogZ2l0LWJpc2VjdC5zaDo1NAogbXNnaWQgIkRvIHlvdSB3YW50IG1lIHRvIGRvIGl0IGZvciB5b3UgW1kvbl0/ICIKLW1zZ3N0ciAiV2lsbHN0IGR1LCBkYXNzIGljaCBlcyBmw7xyIGRpY2ggbWFjaGUgW1kvbl0/ICIKK21zZ3N0ciAiV29sbGVuIFNpZSwgZGFzcyBpY2ggZXMgZsO8ciBTaWUgbWFjaGUgW1kvbl0/ICIKIAogIzogZ2l0LWJpc2VjdC5zaDo5NQogIywgc2gtZm9ybWF0CkBAIC04OTg5LDcgKzk1ODIsNyBAQAogIzogZ2l0LWJpc2VjdC5zaDo5OQogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRhcmcnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIHZhbGlkIHJldmlzaW9uIgotbXNnc3RyICInJGFyZycgc2NoZWludCBrZWluZSBnw7xsdGlnZSBWZXJzaW9uIHp1IHNlaW4iCittc2dzdHIgIickYXJnJyBzY2hlaW50IGtlaW5lIGfDvGx0aWdlIFJldmlzaW9uIHp1IHNlaW4iCiAKICM6IGdpdC1iaXNlY3Quc2g6MTE3CiBtc2dpZCAiQmFkIEhFQUQgLSBJIG5lZWQgYSBIRUFEIgpAQCAtOTAwMCwxMiArOTU5MywxMiBAQAogbXNnaWQgIiIKICJDaGVja2luZyBvdXQgJyRzdGFydF9oZWFkJyBmYWlsZWQuIFRyeSAnZ2l0IGJpc2VjdCByZXNldCA8dmFsaWRicmFuY2g+Jy4iCiBtc2dzdHIgIiIKLSJBdXNjaGVja2VuIHZvbiAnJHN0YXJ0X2hlYWQnIGZlaGxnZXNjaGxhZ2VuLiBWZXJzdWNoZSAnZ2l0IGJpc2VjdCByZXNldCAiCisiQXVzY2hlY2tlbiB2b24gJyRzdGFydF9oZWFkJyBmZWhsZ2VzY2hsYWdlbi4gVmVyc3VjaGVuIFNpZSAnZ2l0IGJpc2VjdCByZXNldCAiCiAiPGd1ZWx0aWdlcnp3ZWlnPicuIgogCiAjOiBnaXQtYmlzZWN0LnNoOjE0MAogbXNnaWQgIndvbid0IGJpc2VjdCBvbiBzZWVrZWQgdHJlZSIKLW1zZ3N0ciAiXCJiaXNlY3RcIiBhdWYgZ2VzdWNodGVtIFp3ZWlnIG5pY2h0IG3DtmdsaWNoIgorbXNnc3RyICJiaW7DpHJlIFN1Y2hlIGF1ZiBnZXN1Y2h0ZW0gWndlaWcgbmljaHQgbcO2Z2xpY2giCiAKICM6IGdpdC1iaXNlY3Quc2g6MTQ0CiBtc2dpZCAiQmFkIEhFQUQgLSBzdHJhbmdlIHN5bWJvbGljIHJlZiIKQEAgLTkwMjMsNyArOTYxNiw3IEBACiAKICM6IGdpdC1iaXNlY3Quc2g6MjMyCiBtc2dpZCAiUGxlYXNlIGNhbGwgJ2Jpc2VjdF9zdGF0ZScgd2l0aCBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIgotbXNnc3RyICJCaXR0ZSBydWZlICdiaXNlY3Rfc3RhdGUnIG1pdCBtaW5kZXN0ZW5zIGVpbmVtIEFyZ3VtZW50IGF1Zi4iCittc2dzdHIgIkJpdHRlIHJ1ZmVuIFNpZSAnYmlzZWN0X3N0YXRlJyBtaXQgbWluZGVzdGVucyBlaW5lbSBBcmd1bWVudCBhdWYuIgogCiAjOiBnaXQtYmlzZWN0LnNoOjI0NAogIywgc2gtZm9ybWF0CkBAIC05MDM4LDIyICs5NjMxLDIyIEBACiAjLiB0aGlzIGlzIGxlc3Mgb3B0aW11bS4KICM6IGdpdC1iaXNlY3Quc2g6MjczCiBtc2dpZCAiV2FybmluZzogYmlzZWN0aW5nIG9ubHkgd2l0aCBhIGJhZCBjb21taXQuIgotbXNnc3RyICJXYXJudW5nOiBoYWxiaWVyZSBudXIgbWl0IGVpbmVyIGZlaGxlcmhhZnRlbiBWZXJzaW9uIgorbXNnc3RyICJXYXJudW5nOiBiaW7DpHJlIFN1Y2hlIG51ciBtaXQgZWluZXIgZmVobGVyaGFmdGVuIFZlcnNpb24iCiAKICMuIFRSQU5TTEFUT1JTOiBNYWtlIHN1cmUgdG8gaW5jbHVkZSBbWV0gYW5kIFtuXSBpbiB5b3VyCiAjLiB0cmFuc2xhdGlvbi4gVGhlIHByb2dyYW0gd2lsbCBvbmx5IGFjY2VwdCBFbmdsaXNoIGlucHV0CiAjLiBhdCB0aGlzIHBvaW50LgogIzogZ2l0LWJpc2VjdC5zaDoyNzkKIG1zZ2lkICJBcmUgeW91IHN1cmUgW1kvbl0/ICIKLW1zZ3N0ciAiQmlzdCBkdSBzaWNoZXIgW1kvbl0/ICIKK21zZ3N0ciAiU2luZCBTaWUgc2ljaGVyIFtZL25dPyAiCiAKICM6IGdpdC1iaXNlY3Quc2g6Mjg5CiBtc2dpZCAiIgogIllvdSBuZWVkIHRvIGdpdmUgbWUgYXQgbGVhc3Qgb25lIGdvb2QgYW5kIG9uZSBiYWQgcmV2aXNpb25zLlxuIgogIihZb3UgY2FuIHVzZSBcImdpdCBiaXNlY3QgYmFkXCIgYW5kIFwiZ2l0IGJpc2VjdCBnb29kXCIgZm9yIHRoYXQuKSIKIG1zZ3N0ciAiIgotIkR1IG11c3N0IG1pbmRlc3RlbnMgZWluZSBrb3JyZWt0ZSB1bmQgZWluZSBmZWhsZXJoYWZ0ZSBWZXJzaW9uIGFuZ2ViZW4uXG4iCi0iKER1IGthbm5zdCBkYWbDvHIgXCJnaXQgYmlzZWN0IGJhZFwiIHVuZCBcImdpdCBiaXNlY3QgZ29vZFwiIGJlbnV0emVuLikiCisiU2llIG3DvHNzZW4gbWluZGVzdGVucyBlaW5lIGtvcnJla3RlIHVuZCBlaW5lIGZlaGxlcmhhZnRlIFJldmlzaW9uIGFuZ2ViZW4uXG4iCisiKFNpZSBrw7ZubmVuIGRhZsO8ciBcImdpdCBiaXNlY3QgYmFkXCIgdW5kIFwiZ2l0IGJpc2VjdCBnb29kXCIgYmVudXR6ZW4uKSIKIAogIzogZ2l0LWJpc2VjdC5zaDoyOTIKIG1zZ2lkICIiCkBAIC05MDYxLDcyICs5NjU0LDcyIEBACiAiWW91IHRoZW4gbmVlZCB0byBnaXZlIG1lIGF0IGxlYXN0IG9uZSBnb29kIGFuZCBvbmUgYmFkIHJldmlzaW9ucy5cbiIKICIoWW91IGNhbiB1c2UgXCJnaXQgYmlzZWN0IGJhZFwiIGFuZCBcImdpdCBiaXNlY3QgZ29vZFwiIGZvciB0aGF0LikiCiBtc2dzdHIgIiIKLSJEdSBtdXNzdCBtaXQgXCJnaXQgYmlzZWN0IHN0YXJ0XCIgYmVnaW5uZW4uXG4iCi0iRGFuYWNoIG11c3N0IGR1IG1pbmRlc3RlbnMgZWluZSBrb3JyZWt0ZSB1bmQgZWluZSBmZWhsZXJoYWZ0ZSBWZXJzaW9uICIKKyJTaWUgbcO8c3NlbiBtaXQgXCJnaXQgYmlzZWN0IHN0YXJ0XCIgYmVnaW5uZW4uXG4iCisiRGFuYWNoIG3DvHNzZW4gU2llIG1pbmRlc3RlbnMgZWluZSBrb3JyZWt0ZSB1bmQgZWluZSBmZWhsZXJoYWZ0ZSBSZXZpc2lvbiAiCiAiYW5nZWJlbi5cbiIKLSIoRHUga2FubnN0IGRhZsO8ciBcImdpdCBiaXNlY3QgYmFkXCIgdW5kIFwiZ2l0IGJpc2VjdCBnb29kXCIgYmVudXR6ZW4uKSIKKyIoU2llIGvDtm5uZW4gZGFmw7xyIFwiZ2l0IGJpc2VjdCBiYWRcIiB1bmQgXCJnaXQgYmlzZWN0IGdvb2RcIiBiZW51dHplbi4pIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM0NyBnaXQtYmlzZWN0LnNoOjQ3NAorIzogZ2l0LWJpc2VjdC5zaDozNjMgZ2l0LWJpc2VjdC5zaDo0OTAKIG1zZ2lkICJXZSBhcmUgbm90IGJpc2VjdGluZy4iCi1tc2dzdHIgIldpciBzaW5kIG5pY2h0IGJlaW0gSGFsYmllcmVuLiIKK21zZ3N0ciAia2VpbmUgYmluw6RyZSBTdWNoZSBpbSBHYW5nZSIKIAotIzogZ2l0LWJpc2VjdC5zaDozNTQKKyM6IGdpdC1iaXNlY3Quc2g6MzcwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGludmFsaWQnIGlzIG5vdCBhIHZhbGlkIGNvbW1pdCIKIG1zZ3N0ciAiJyRpbnZhbGlkJyBpc3Qga2VpbmUgZ8O8bHRpZ2UgVmVyc2lvbiIKIAotIzogZ2l0LWJpc2VjdC5zaDozNjMKKyM6IGdpdC1iaXNlY3Quc2g6Mzc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGNoZWNrIG91dCBvcmlnaW5hbCBIRUFEICckYnJhbmNoJy5cbiIKICJUcnkgJ2dpdCBiaXNlY3QgcmVzZXQgPGNvbW1pdD4nLiIKIG1zZ3N0ciAiIgogIktvbm50ZSBkaWUgdXJzcHLDvG5nbGljaGUgWndlaWdzcGl0emUgKEhFQUQpICckYnJhbmNoJyBuaWNodCBhdXNjaGVja2VuLlxuIgotIlZlcnN1Y2hlICdnaXQgYmlzZWN0IHJlc2V0IDxWZXJzaW9uPicuIgorIlZlcnN1Y2hlbiBTaWUgJ2dpdCBiaXNlY3QgcmVzZXQgPFZlcnNpb24+Jy4iCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzkwCisjOiBnaXQtYmlzZWN0LnNoOjQwNgogbXNnaWQgIk5vIGxvZ2ZpbGUgZ2l2ZW4iCiBtc2dzdHIgIktlaW5lIExvZy1EYXRlaSBnZWdlYmVuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MQorIzogZ2l0LWJpc2VjdC5zaDo0MDcKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICRmaWxlIGZvciByZXBsYXlpbmciCiBtc2dzdHIgImthbm4gJGZpbGUgbmljaHQgZsO8ciBkYXMgQWJzcGllbGVuIGxlc2VuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQwOAorIzogZ2l0LWJpc2VjdC5zaDo0MjQKIG1zZ2lkICI/PyB3aGF0IGFyZSB5b3UgdGFsa2luZyBhYm91dD8iCi1tc2dzdHIgIj8/IFdhcyByZWRlc3QgZHUgZGE/IgorbXNnc3RyICI/PyBXYXMgcmVkZW4gU2llIGRhPyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MjAKKyM6IGdpdC1iaXNlY3Quc2g6NDM2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJydW5uaW5nICRjb21tYW5kIgogbXNnc3RyICJmw7xocmUgJGNvbW1hbmQgYXVzIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyNworIzogZ2l0LWJpc2VjdC5zaDo0NDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICJleGl0IGNvZGUgJHJlcyBmcm9tICckY29tbWFuZCcgaXMgPCAwIG9yID49IDEyOCIKIG1zZ3N0ciAiIgotIkF1c2bDvGhydW5nIGRlciBIYWxiaWVydW5nIGZlaGxnZXNjaGxhZ2VuOlxuIgorIidiaXNlY3QgcnVuJyBmZWhsZ2VzY2hsYWdlbjpcbiIKICJSw7xja2tlaHJ3ZXJ0ICRyZXMgdm9uICckY29tbWFuZCcgaXN0IDwgMCBvZGVyID49IDEyOCIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTMKKyM6IGdpdC1iaXNlY3Quc2g6NDY5CiBtc2dpZCAiYmlzZWN0IHJ1biBjYW5ub3QgY29udGludWUgYW55IG1vcmUiCi1tc2dzdHIgIkF1c2bDvGhydW5nIGRlciBIYWxiaWVydW5nIGthbm4gbmljaHQgbWVociBmb3J0Z2VzZXR6dCB3ZXJkZW4iCittc2dzdHIgIidiaXNlY3QgcnVuJyBrYW5uIG5pY2h0IG1laHIgZm9ydGdlc2V0enQgd2VyZGVuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQ1OQorIzogZ2l0LWJpc2VjdC5zaDo0NzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICInYmlzZWN0X3N0YXRlICRzdGF0ZScgZXhpdGVkIHdpdGggZXJyb3IgY29kZSAkcmVzIgogbXNnc3RyICIiCi0iQXVzZsO8aHJ1bmcgZGVyIEhhbGJpZXJ1bmcgZmVobGdlc2NobGFnZW46XG4iCisiJ2Jpc2VjdCBydW4nIGZlaGxnZXNjaGxhZ2VuOlxuIgogIidiaXNlY3Rfc3RhdGUgJHN0YXRlJyB3dXJkZSBtaXQgRmVobGVyd2VydCAkcmVzIGJlZW5kZXQiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDY2CisjOiBnaXQtYmlzZWN0LnNoOjQ4MgogbXNnaWQgImJpc2VjdCBydW4gc3VjY2VzcyIKLW1zZ3N0ciAiSGFsYmllcnVuZyBlcmZvbGdyZWljaCBhdXNnZWbDvGhydCIKK21zZ3N0ciAiJ2Jpc2VjdCBydW4nIGVyZm9sZ3JlaWNoIGF1c2dlZsO8aHJ0IgogCiAjOiBnaXQtcHVsbC5zaDoyMQogbXNnaWQgIiIKQEAgLTkxMzQsMTYgKzk3MjcsMTggQEAKICJQbGVhc2UsIGZpeCB0aGVtIHVwIGluIHRoZSB3b3JrIHRyZWUsIGFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nXG4iCiAiYXMgYXBwcm9wcmlhdGUgdG8gbWFyayByZXNvbHV0aW9uLCBvciB1c2UgJ2dpdCBjb21taXQgLWEnLiIKIG1zZ3N0ciAiIgotIlwicHVsbFwiIGlzdCBuaWNodCBtw7ZnbGljaCwgd2VpbCBkdSBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBEYXRlaWVuIGhhc3QuXG4iCi0iQml0dGUga29ycmlnaWVyZSBkaWVzIGltIEFyYmVpdHNiYXVtIHVuZCBiZW51dHplIGRhbm4gJ2dpdCBhZGQvcm0gPERhdGVpPidcbiIKLSJ1bSBkaWUgQXVmbMO2c3VuZyBlbnRzcHJlY2hlbmQgenUgbWFya2llcmVuLCBvZGVyIGJlbnV0emUgJ2dpdCBjb21taXQgLWEnLiIKKyJcInB1bGxcIiBpc3QgbmljaHQgbcO2Z2xpY2gsIHdlaWwgU2llIG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlIERhdGVpZW4gaGFiZW4uXG4iCisiQml0dGUga29ycmlnaWVyZW4gU2llIGRpZXMgaW0gQXJiZWl0c2JhdW0gdW5kIGJlbnV0emVuIFNpZSBkYW5uICdnaXQgYWRkL3JtICIKKyI8RGF0ZWk+J1xuIgorInVtIGRpZSBBdWZsw7ZzdW5nIGVudHNwcmVjaGVuZCB6dSBtYXJraWVyZW4sIG9kZXIgYmVudXR6ZW4gU2llICdnaXQgY29tbWl0IC0iCisiYScuIgogCiAjOiBnaXQtcHVsbC5zaDoyNQogbXNnaWQgIlB1bGwgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2UgeW91IGhhdmUgdW5tZXJnZWQgZmlsZXMuIgogbXNnc3RyICIiCi0iXCJwdWxsXCIgaXN0IG5pY2h0IG3DtmdsaWNoLCB3ZWlsIGR1IG5pY2h0IHp1c2FtbWVuZ2Vmw7xocnRlIERhdGVpZW4gaGFzdC4iCisiXCJwdWxsXCIgaXN0IG5pY2h0IG3DtmdsaWNoLCB3ZWlsIFNpZSBuaWNodCB6dXNhbW1lbmdlZsO8aHJ0ZSBEYXRlaWVuIGhhYmVuLiIKIAotIzogZ2l0LXB1bGwuc2g6MTk3CisjOiBnaXQtcHVsbC5zaDoyMDMKIG1zZ2lkICJ1cGRhdGluZyBhbiB1bmJvcm4gYnJhbmNoIHdpdGggY2hhbmdlcyBhZGRlZCB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKICJBa3R1YWxpc2llcmUgZWluZSB1bmdlYm9yZW5lbiBad2VpZyBtaXQgw4RuZGVydW5nZW4sIGRpZSB6dXIgQmVyZWl0c3RlbGx1bmcgIgpAQCAtOTE1Myw3ICs5NzQ4LDcgQEAKICMuIFRoZSB3b3JraW5nIHRyZWUgYW5kIHRoZSBpbmRleCBmaWxlIGlzIHN0aWxsIGJhc2VkIG9uIHRoZQogIy4gJG9yaWdfaGVhZCBjb21taXQsIGJ1dCB3ZSBhcmUgbWVyZ2luZyBpbnRvICRjdXJyX2hlYWQuCiAjLiBGaXJzdCB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSB0byBtYXRjaCAkY3Vycl9oZWFkLgotIzogZ2l0LXB1bGwuc2g6MjI5CisjOiBnaXQtcHVsbC5zaDoyMzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiBmZXRjaCB1cGRhdGVkIHRoZSBjdXJyZW50IGJyYW5jaCBoZWFkLlxuIgpAQCAtOTE2MSwxMyArOTc1NiwxMyBAQAogIldhcm5pbmc6IGNvbW1pdCAkb3JpZ19oZWFkLiIKIG1zZ3N0ciAiIgogIldhcm51bmc6IERpZSBBbmZvcmRlcnVuZyBha3R1YWxpc2llcnRlIGRpZSBTcGl0emUgZGVzIGFrdHVlbGxlbiBad2VpZ2VzLlxuIgotIldhcm51bmc6IFNwdWxlIGRlaW5lbiBBcmJlaXRzendlaWcgdm9uIFZlcnNpb24gJG9yaWdfaGVhZCB2b3IuIgorIldhcm51bmc6IFNwdWxlIElocmVuIEFyYmVpdHN6d2VpZyB2b24gVmVyc2lvbiAkb3JpZ19oZWFkIHZvci4iCiAKLSM6IGdpdC1wdWxsLnNoOjI1NAorIzogZ2l0LXB1bGwuc2g6MjYwCiBtc2dpZCAiQ2Fubm90IG1lcmdlIG11bHRpcGxlIGJyYW5jaGVzIGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiS2FubiBuaWNodCBtZWhyZXJlIFp3ZWlnZSBpbiBlaW5lbiB1bmdlYm9yZW5lbiBad2VpZyB6dXNhbW1lbmbDvGhyZW4iCiAKLSM6IGdpdC1wdWxsLnNoOjI1OAorIzogZ2l0LXB1bGwuc2g6MjY0CiBtc2dpZCAiQ2Fubm90IHJlYmFzZSBvbnRvIG11bHRpcGxlIGJyYW5jaGVzIgogbXNnc3RyICJrYW5uIG5pY2h0IGF1ZiBtZWhyZXJlIFp3ZWlnZSBuZXUgYXVmYmF1ZW4iCiAKQEAgLTkxNzgsMTIgKzk3NzMsMTMgQEAKICJUbyBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCByZWJhc2luZywgcnVuIFwiZ2l0IHJlYmFzZSAtLWFib3J0IgogIlwiLiIKIG1zZ3N0ciAiIgotIldlbm4gZHUgZGFzIFByb2JsZW0gYXVmZ2Vsw7ZzdCBoYXN0LCBmw7xocmUgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBhdXMuXG4iCi0iRmFsbHMgZHUgZGllc2VuIFBhdGNoIGF1c2xhc3NlbiBtw7ZjaHRlc3QsIGbDvGhyZSBzdGF0dGRlc3NlbiBcImdpdCByZWJhc2UgLS0iCi0ic2tpcFwiIGF1cy5cbiIKKyJXZW5uIFNpZSBkYXMgUHJvYmxlbSBhdWZnZWzDtnN0IGhhYmVuLCBmw7xocmVuIFNpZSBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiICIKKyJhdXMuXG4iCisiRmFsbHMgU2llIGRpZXNlbiBQYXRjaCBhdXNsYXNzZW4gbcO2Y2h0ZW4sIGbDvGhyZW4gU2llIHN0YXR0ZGVzc2VuIFwiZ2l0ICIKKyJyZWJhc2UgLS1za2lwXCIgYXVzLlxuIgogIlVtIGRlbiB1cnNwcsO8bmdsaWNoZW4gWndlaWcgd2llZGVyaGVyenVzdGVsbGVuIHVuZCBkZW4gTmV1YXVmYmF1ICIKICJhYnp1YnJlY2hlbixcbiIKLSJmw7xocmUgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiBhdXMuIgorImbDvGhyZW4gU2llIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgYXVzLiIKIAogIzogZ2l0LXJlYmFzZS5zaDoxNjAKIG1zZ2lkICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKQEAgLTkxOTUsNyArOTc5MSw3IEBACiAKICM6IGdpdC1yZWJhc2Uuc2g6Mjk2CiBtc2dpZCAiVGhlIC0tZXhlYyBvcHRpb24gbXVzdCBiZSB1c2VkIHdpdGggdGhlIC0taW50ZXJhY3RpdmUgb3B0aW9uIgotbXNnc3RyICJEaWUgLS1leGVjIE9wdGlvbiBtdXNzIG1pdCBkZXIgLS1pbnRlcmFjdGl2ZSBPcHRpb24gYmVudXR6dCB3ZXJkZW4iCittc2dzdHIgIkRpZSBPcHRpb24gLS1leGVjIG11c3MgbWl0IC0taW50ZXJhY3RpdmUgdmVyd2VuZGV0IHdlcmRlbi4iCiAKICM6IGdpdC1yZWJhc2Uuc2g6MzAxCiBtc2dpZCAiTm8gcmViYXNlIGluIHByb2dyZXNzPyIKQEAgLTkyMDMsOCArOTc5OSw5IEBACiAKICM6IGdpdC1yZWJhc2Uuc2g6MzEyCiBtc2dpZCAiVGhlIC0tZWRpdC10b2RvIGFjdGlvbiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnRlcmFjdGl2ZSByZWJhc2UuIgotbXNnc3RyICJEaWUgLS1lZGl0LXRvZG8gQWt0aW9uIGthbm4gbnVyIHfDpGhyZW5kIGVpbmVzIGludGVyYWt0aXZlbiAiCi0iTmV1YXVmYmF1cyBiZW51dHp0IHdlcmRlbi4iCittc2dzdHIgIiIKKyJEaWUgLS1lZGl0LXRvZG8gQWt0aW9uIGthbm4gbnVyIHfDpGhyZW5kIGVpbmVzIGludGVyYWt0aXZlbiBOZXVhdWZiYXVzICIKKyJ2ZXJ3ZW5kZXQgd2VyZGVuLiIKIAogIzogZ2l0LXJlYmFzZS5zaDozMTkKIG1zZ2lkICJDYW5ub3QgcmVhZCBIRUFEIgpAQCAtOTIxNSw3ICs5ODEyLDcgQEAKICJZb3UgbXVzdCBlZGl0IGFsbCBtZXJnZSBjb25mbGljdHMgYW5kIHRoZW5cbiIKICJtYXJrIHRoZW0gYXMgcmVzb2x2ZWQgdXNpbmcgZ2l0IGFkZCIKIG1zZ3N0ciAiIgotIkR1IG11c3N0IGFsbGUgWnVzYW1tZW5mw7xocnVuZ3Nrb25mbGlrdGUgZWRpdGllcmVuIHVuZCBkaWVzZSBkYW5uXG4iCisiU2llIG3DvHNzZW4gYWxsZSBadXNhbW1lbmbDvGhydW5nc2tvbmZsaWt0ZSBlZGl0aWVyZW4gdW5kIGRpZXNlIGRhbm5cbiIKICJtaXR0ZWxzIFwiZ2l0IGFkZFwiIGFscyBhdWZnZWzDtnN0IG1hcmtpZXJlbiIKIAogIzogZ2l0LXJlYmFzZS5zaDozNDAKQEAgLTkyMzcsMTEgKzk4MzQsMTEgQEAKIG1zZ3N0ciAiIgogIkVzIHNpZWh0IHNvIGF1cywgYWxzIG9iIGVzIGRhcyBWZXJ6ZWljaG5pcyAkc3RhdGVfZGlyX2Jhc2UgYmVyZWl0cyBnaWJ0XG4iCiAidW5kIGVzIGvDtm5udGUgZWluIGFuZGVyZXIgTmV1YXVmYmF1IGltIEdhbmdlIHNlaW4uIFdlbm4gZGFzIGRlciBGYWxsIGlzdCxcbiIKLSJwcm9iaWVyZSBiaXR0ZVxuIgorInByb2JpZXJlbiBTaWUgYml0dGVcbiIKICJcdCRjbWRfbGl2ZV9yZWJhc2VcbiIKLSJXZW5uIGRhcyBuaWNodCBkZXIgRmFsbCBpc3QsIHByb2JpZXJlIGJpdHRlXG4iCisiV2VubiBkYXMgbmljaHQgZGVyIEZhbGwgaXN0LCBwcm9iaWVyZW4gU2llIGJpdHRlXG4iCiAiXHQkY21kX2NsZWFyX3N0YWxlX3JlYmFzZVxuIgotInVuZCBmw7xocmUgZGllc2VzIEtvbW1hbmRvIG5vY2htYWwgYXVzLiBFcyB3aXJkIGFuZ2VoYWx0ZW4sIGZhbGxzIG5vY2hcbiIKKyJ1bmQgZsO8aHJlbiBTaWUgZGllc2VzIEtvbW1hbmRvIG5vY2htYWwgYXVzLiBFcyB3aXJkIGFuZ2VoYWx0ZW4sIGZhbGxzIG5vY2hcbiIKICJldHdhcyBTY2jDvHR6ZW5zd2VydGVzIHZvcmhhbmRlbiBpc3QuIgogCiAjOiBnaXQtcmViYXNlLnNoOjQwNApAQCAtOTI3MSw3ICs5ODY4LDcgQEAKIAogIzogZ2l0LXJlYmFzZS5zaDo0ODMKIG1zZ2lkICJQbGVhc2UgY29tbWl0IG9yIHN0YXNoIHRoZW0uIgotbXNnc3RyICJCaXR0ZSB0cmFnZSBkaWUgw4RuZGVydW5nZW4gZWluIG9kZXIgYmVudXR6ZSBcInN0YXNoXCIuIgorbXNnc3RyICJCaXR0ZSB0cmFnZW4gU2llIGRpZSDDhG5kZXJ1bmdlbiBlaW4gb2RlciBiZW51dHplbiBTaWUgXCJzdGFzaFwiLiIKIAogIzogZ2l0LXJlYmFzZS5zaDo1MDEKICMsIHNoLWZvcm1hdApAQCAtOTI5Myw3ICs5ODkwLDcgQEAKICM6IGdpdC1yZWJhc2Uuc2g6NTI0CiBtc2dpZCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIgogbXNnc3RyICIiCi0iWnVuw6RjaHN0IHdpcmQgZGllIFp3ZWlnc3BpdHplIHp1csO8Y2tnZXNwdWx0LCB1bSBkZWluZSDDhG5kZXJ1bmdlblxuIgorIlp1bsOkY2hzdCB3aXJkIGRpZSBad2VpZ3NwaXR6ZSB6dXLDvGNrZ2VzcHVsdCwgdW0gSWhyZSDDhG5kZXJ1bmdlblxuIgogImRhcmF1ZiBuZXUgYW56dXdlbmRlbi4uLiIKIAogIzogZ2l0LXJlYmFzZS5zaDo1MzIKQEAgLTkzMDcsNyArOTkwNCw3IEBACiAKICM6IGdpdC1zdGFzaC5zaDo3NAogbXNnaWQgIllvdSBkbyBub3QgaGF2ZSB0aGUgaW5pdGlhbCBjb21taXQgeWV0IgotbXNnc3RyICJEdSBoYXN0IGJpc2hlciBub2NoIGtlaW5lIGluaXRpYWxlIFZlcnNpb24iCittc2dzdHIgIlNpZSBoYWJlbiBiaXNoZXIgbm9jaCBrZWluZSBpbml0aWFsZSBWZXJzaW9uIgogCiAjOiBnaXQtc3Rhc2guc2g6ODkKIG1zZ2lkICJDYW5ub3Qgc2F2ZSB0aGUgY3VycmVudCBpbmRleCBzdGF0ZSIKQEAgLTkzNDYsNyArOTk0Myw3IEBACiAiICAgICAgIFRvIHByb3ZpZGUgYSBtZXNzYWdlLCB1c2UgZ2l0IHN0YXNoIHNhdmUgLS0gJyRvcHRpb24nIgogbXNnc3RyICIiCiAiRmVobGVyOiB1bmJla2FubnRlIE9wdGlvbiBmw7xyICdzdGFzaCBzYXZlJzogJG9wdGlvblxuIgotIiAgICAgICAgVW0gZWluZSBCZXNjaHJlaWJ1bmcgYW56dWdlYmVuLCBiZW51dHplIFwiZ2l0IHN0YXNoIHNhdmUgLS0gIgorIiAgICAgICAgVW0gZWluZSBCZXNjaHJlaWJ1bmcgYW56dWdlYmVuLCBiZW51dHplbiBTaWUgXCJnaXQgc3Rhc2ggc2F2ZSAtLSAiCiAiJyRvcHRpb24nXCIiCiAKICM6IGdpdC1zdGFzaC5zaDoyMjMKQEAgLTk0MDAsNyArOTk5Nyw3IEBACiAKICM6IGdpdC1zdGFzaC5zaDo0MjQKIG1zZ2lkICJDb25mbGljdHMgaW4gaW5kZXguIFRyeSB3aXRob3V0IC0taW5kZXguIgotbXNnc3RyICJLb25mbGlrdGUgaW4gZGVyIEJlcmVpdHN0ZWxsdW5nLiBWZXJzdWNoZSBlcyBvaG5lIC0taW5kZXguIgorbXNnc3RyICJLb25mbGlrdGUgaW4gZGVyIEJlcmVpdHN0ZWxsdW5nLiBWZXJzdWNoZW4gU2llIGVzIG9obmUgLS1pbmRleC4iCiAKICM6IGdpdC1zdGFzaC5zaDo0MjYKIG1zZ2lkICJDb3VsZCBub3Qgc2F2ZSBpbmRleCB0cmVlIgpAQCAtOTQzMCwyNDMgKzEwMDI3LDM3MiBAQAogCiAjOiBnaXQtc3Rhc2guc2g6NTcxCiBtc2dpZCAiKFRvIHJlc3RvcmUgdGhlbSB0eXBlIFwiZ2l0IHN0YXNoIGFwcGx5XCIpIgotbXNnc3RyICIoWnVyIFdpZWRlcmhlcnN0ZWxsdW5nIGdlYmUgXCJnaXQgc3Rhc2ggYXBwbHlcIiBlaW4pIgorbXNnc3RyICIoWnVyIFdpZWRlcmhlcnN0ZWxsdW5nIGdlYmVuIFNpZSBcImdpdCBzdGFzaCBhcHBseVwiIGVpbikiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTEKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCBzdHJpcCBvbmUgY29tcG9uZW50IG9mZiB1cmwgJyRyZW1vdGV1cmwnIgogbXNnc3RyICJLYW5uIGVpbmUgS29tcG9uZW50ZSB2b24gVVJMICckcmVtb3RldXJsJyBuaWNodCBleHRyYWhpZXJlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxNjgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTk2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJObyBzdWJtb2R1bGUgbWFwcGluZyBmb3VuZCBpbiAuZ2l0bW9kdWxlcyBmb3IgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAiS2VpbmUgVW50ZXJwcm9qZWt0LVp1b3JkbnVuZyBpbiAuZ2l0bW9kdWxlcyBmw7xyIFBmYWQgJyRzbV9wYXRoJyBnZWZ1bmRlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAiS2xvbmVuIHZvbiAnJHVybCcgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyBmZWhsZ2VzY2hsYWdlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMjMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJHaXRkaXIgJyRhJyBpcyBwYXJ0IG9mIHRoZSBzdWJtb2R1bGUgcGF0aCAnJGInIG9yIHZpY2UgdmVyc2EiCiBtc2dzdHIgIiIKICJHaXQtVmVyemVpY2huaXMgJyRhJyBpc3QgVGVpbCBkZXMgVW50ZXJwcm9qZWt0LVBmYWRlcyAnJGInLCBvZGVyIHVtZ2VrZWhydCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJyZXBvIFVSTDogJyRyZXBvJyBtdXN0IGJlIGFic29sdXRlIG9yIGJlZ2luIHdpdGggLi98Li4vIgogbXNnc3RyICJyZXBvIFVSTDogJyRyZXBvJyBtdXNzIGFic29sdXQgc2VpbiBvZGVyIG1pdCAuL3wuLi8gYmVnaW5uZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzMzCisjOiBnaXQtc3VibW9kdWxlLnNoOjM2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgiCiBtc2dzdHIgIickc21fcGF0aCcgZXhpc3RpZXJ0IGJlcmVpdHMgaW4gZGVyIEJlcmVpdHN0ZWxsdW5nIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgZm9sbG93aW5nIHBhdGggaXMgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgogIiRzbV9wYXRoXG4iCiAiVXNlIC1mIGlmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgaXQuIgogbXNnc3RyICIiCi0iRGVyIGZvbGdlbmRlIFBmYWQgd2lyZCBkdXJjaCBlaW5lIGRlaW5lciBcIi5naXRpZ25vcmVcIiBEYXRlaWVuIGlnbm9yaWVydDpcbiIKKyJEZXIgZm9sZ2VuZGUgUGZhZCB3aXJkIGR1cmNoIGVpbmUgSWhyZXIgXCIuZ2l0aWdub3JlXCIgRGF0ZWllbiBpZ25vcmllcnQ6XG4iCiAiJHNtX3BhdGhcbiIKLSJCZW51dHplIC1mIHdlbm4gZHUgZGllc2VuIHdpcmtsaWNoIGhpbnp1ZsO8Z2VuIG3DtmNodGVzdC4iCisiQmVudXR6ZW4gU2llIC1mIHdlbm4gU2llIGRpZXNlbiB3aXJrbGljaCBoaW56dWbDvGdlbiBtw7ZjaHRlbi4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzU1CisjOiBnaXQtc3VibW9kdWxlLnNoOjM4OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGV4aXN0aW5nIHJlcG8gYXQgJyRzbV9wYXRoJyB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKICJGw7xnZSBleGlzdGllcmVuZGVzIFByb2pla3RhcmNoaXYgaW4gJyRzbV9wYXRoJyBkZXIgQmVyZWl0c3RlbGx1bmcgaGluenUuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM1NworIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgogbXNnc3RyICInJHNtX3BhdGgnIGV4aXN0aWVydCBiZXJlaXRzIHVuZCBpc3Qga2VpbiBnw7xsdGlnZXMgR2l0LVByb2pla3RhcmNoaXYiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzY1CisjOiBnaXQtc3VibW9kdWxlLnNoOjM5OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgotbXNnc3RyICJFaW4gR2l0LVZlcnplaWNobmlzIGbDvHIgJyRzbV9uYW1lJyB3dXJkZSBsb2thbCBnZWZ1bmRlbiBtaXQgZGVuICIKLSJGZXJuYXJjaGl2KGVuKToiCittc2dzdHIgIiIKKyJFaW4gR2l0LVZlcnplaWNobmlzIGbDvHIgJyRzbV9uYW1lJyB3dXJkZSBsb2thbCBnZWZ1bmRlbiBtaXQgZGVuIEZlcm5hcmNoaXYiCisiKGVuKToiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIklmIHlvdSB3YW50IHRvIHJldXNlIHRoaXMgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGNsb25pbmcgYWdhaW4gZnJvbSIKIG1zZ3N0ciAiIgotIldlbm4gZHUgZGllc2VzIGxva2FsZSBHaXQtVmVyemVpY2huaXMgd2llZGVydmVyd2VuZGVuIG3DtmNodGVzdCwgYW5zdGF0dCAiCisiV2VubiBTaWUgZGllc2VzIGxva2FsZSBHaXQtVmVyemVpY2huaXMgd2llZGVydmVyd2VuZGVuIG3DtmNodGVzdCwgYW5zdGF0dCAiCiAiZXJuZXV0IHp1IGtsb25lbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAidXNlIHRoZSAnLS1mb3JjZScgb3B0aW9uLiBJZiB0aGUgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpcyBub3QgdGhlIGNvcnJlY3QgcmVwbyIKIG1zZ3N0ciAiIgotImJlbnV0emUgZGllIE9wdGlvbiAnLS1mb3JjZScuIFdlbm4gZGFzIGxva2FsZSBHaXQtVmVyemVpY2huaXMgbmljaHQgZGFzICIKKyJiZW51dHplbiBTaWUgZGllIE9wdGlvbiAnLS1mb3JjZScuIFdlbm4gZGFzIGxva2FsZSBHaXQtVmVyemVpY2huaXMgbmljaHQgZGFzICIKICJrb3JyZWt0ZSBQcm9qZWt0YXJjaGl2IGlzdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAib3IgeW91IGFyZSB1bnN1cmUgd2hhdCB0aGlzIG1lYW5zIGNob29zZSBhbm90aGVyIG5hbWUgd2l0aCB0aGUgJy0tbmFtZScgIgogIm9wdGlvbi4iCiBtc2dzdHIgIiIKLSJvZGVyIGR1IGRpciB1bnNpY2hlciBiaXN0LCB3YXMgZGFzIGJlZGV1dGV0LCB3w6RobGUgZWluZW4gYW5kZXJlbiBOYW1lbiBtaXQgIgotImRlciBPcHRpb24gJy0tbmFtZScuIgorIm9kZXIgU2llIHNpY2ggdW5zaWNoZXIgc2luZCwgd2FzIGRhcyBiZWRldXRldCwgd8OkaGxlbiBTaWUgZWluZW4gYW5kZXJlbiAiCisiTmFtZW5taXQgZGVyIE9wdGlvbiAnLS1uYW1lJy4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzcyCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiUmVhY3RpdmF0aW5nIGxvY2FsIGdpdCBkaXJlY3RvcnkgZm9yIHN1Ym1vZHVsZSAnJHNtX25hbWUnLiIKIG1zZ3N0ciAiUmVha3RpdmllcmUgbG9rYWxlcyBHaXQtVmVyemVpY2huaXMgZsO8ciBVbnRlcnByb2pla3QgJyRzbV9uYW1lJy4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg0CisjOiBnaXQtc3VibW9kdWxlLnNoOjQxNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0IHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICJVbmbDpGhpZyBVbnRlcnByb2pla3QgJyRzbV9wYXRoJyBhdXN6dWNoZWNrZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg5CisjOiBnaXQtc3VibW9kdWxlLnNoOjQyMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiSGluenVmw7xnZW4gdm9uIFVudGVycHJvamVrdCAnJHNtX3BhdGgnIGZlaGxnZXNjaGxhZ2VuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM5NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKLW1zZ3N0ciAiUmVnaXN0aWVydW5nIHZvbiBVbnRlcnByb2pla3QgJyRzbV9wYXRoJyBmZWhsZ2VzY2hsYWdlbiIKK21zZ3N0ciAiIgorIkZlaGxlciBiZWltIEVpbnRyYWdlbiB2b24gVW50ZXJwcm9qZWt0ICckc21fcGF0aCcgaW4gZGllIEtvbmZpZ3VyYXRpb24uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkVudGVyaW5nICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICJCZXRyZXRlICckcHJlZml4JHNtX3BhdGgnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQ1MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODgKICMsIHNoLWZvcm1hdAogbXNnaWQgIlN0b3BwaW5nIGF0ICckc21fcGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgogbXNnc3RyICJTdG9wcGUgYmVpICckc21fcGF0aCc7IFNrcmlwdCBnYWIgbmljaHQtTnVsbCBTdGF0dXMgenVyw7xjay4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDk1CisjOiBnaXQtc3VibW9kdWxlLnNoOjUzMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gdXJsIGZvdW5kIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIgogbXNnc3RyICJLZWluZSBVUkwgZsO8ciBVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIGdlZnVuZGVuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUwNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIlJlZ2lzdHJpZXJ1bmcgZGVyIFVSTCBmw7xyIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgZmVobGdlc2NobGFnZW4iCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpbSBFaW50cmFnZW4gZGVyIFVSTCBmw7xyIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgaW4gZGllICIKKyJLb25maWd1cmF0aW9uLiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MDYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJVbnRlcnByb2pla3QgJyRuYW1lJyAoJHVybCkgaXN0IGbDvHIgUGZhZCAnJHNtX3BhdGgnIHJlZ2lzdHJpZXJ0IgorbXNnc3RyICIiCisiVW50ZXJwcm9qZWt0ICckbmFtZScgKCR1cmwpIGbDvHIgUGZhZCAnJHNtX3BhdGgnIGluIGRpZSBLb25maWd1cmF0aW9uICIKKyJlaW5nZXRyYWdlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MTQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKLSJSZWdpc3RyaWVydW5nIGRlcyBBa3R1YWxpc2llcnVuZ3Ntb2R1cyBmw7xyIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgIgotImZlaGxnZXNjaGxhZ2VuIgorIkZlaGxlciBiZWkgw4RuZGVydW5nIGRlcyBBa3R1YWxpc2llcnVuZ3Ntb2R1cyBmw7xyIFVudGVycHJvamVrdC1QZmFkICIKKyInJHNtX3BhdGgnIGluIGRlciBLb25maWd1cmF0aW9uLiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo1ODgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlVzZSAnLicgaWYgeW91IHJlYWxseSB3YW50IHRvIGRlaW5pdGlhbGl6ZSBhbGwgc3VibW9kdWxlcyIKK21zZ3N0ciAiIgorIlZlcndlbmRlbiBTaWUgJy4nIHdlbm4gU2llIHdpcmtsaWNoIGFsbGUgVW50ZXJwcm9qZWt0ZVxuIgorImRlaW5pdGlhbGlzaWVyZW4gbcO2Y2h0ZW4uIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYwMworIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiCittc2dzdHIgIiIKKyJBcmJlaXRzYmF1bSBkZXMgVW50ZXJwcm9qZWt0cyBpbiAnJHNtX3BhdGgnIGVudGjDpGx0IGVpbiAuZ2l0LVZlcnplaWNobmlzIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIKK21zZ3N0ciAiIgorIihiZW51dHplbiBTaWUgJ3JtIC1yZicgd2VubiBTaWUgZGllc2VzIFVudGVycHJvamVrdCB3aXJrbGljaCBtaXRzYW10XG4iCisic2VpbmVyIEhpc3RvcmllIGzDtnNjaGVuIG3DtmNodGVuKSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gIgorImRpc2NhcmQgdGhlbSIKK21zZ3N0ciAiIgorIkFyYmVpdHNiYXVtIHZvbiBVbnRlcnByb2pla3QgaW4gJyRzbV9wYXRoJyBlbnRow6RsdCBsb2thbGUgw4RuZGVydW5nZW47ICIKKyJ2ZXJ3ZW5kZW4gU2llICctZicgdW0gZGllc2UgenUgdmVyd2VyZmVuIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMworIywgc2gtZm9ybWF0Cittc2dpZCAiQ2xlYXJlZCBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiVmVyemVpY2huaXMgJyRzbV9wYXRoJyBiZXJlaW5pZ3QuIgogCiAjOiBnaXQtc3VibW9kdWxlLnNoOjYxNAogIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCciCittc2dzdHIgIktvbm50ZSBBcmJlaXRzYmF1bSBkZXMgVW50ZXJwcm9qZWt0ZXMgaW4gJyRzbV9wYXRoJyBuaWNodCBsw7ZzY2hlbi4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE3CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktvbm50ZSBrZWluIGxlZXJlcyBWZXJ6ZWljaG5pcyBmw7xyIFVudGVycHJvamVrdCBpbiAnJHNtX3BhdGgnIGVyc3RlbGxlbi4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjI2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgdW5yZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dzdHIgIiIKKyJVbnRlcnByb2pla3QgJyRuYW1lJyAoJHVybCkgZsO8ciBQZmFkICckc21fcGF0aCcgd3VyZGUgYXVzIGRlciBLb25maWd1cmF0aW9uICIKKyJlbnRmZXJudC4iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzMxCisjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKICJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKIG1zZ3N0ciAiIgotIlVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgaXN0IG5pY2h0IGluaXRpYWxpc2llcnRcbiIKLSJWaWVsbGVpY2h0IG3DtmNodGVzdCBkdSAndXBkYXRlIC0taW5pdCcgYmVudXR6ZW4/IgorIlVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnIGlzdCBuaWNodCBpbml0aWFsaXNpZXJ0LlxuIgorIlZpZWxsZWljaHQgbcO2Y2h0ZW4gU2llICd1cGRhdGUgLS1pbml0JyBiZW51dHplbj8iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjI3CisjOiBnaXQtc3VibW9kdWxlLnNoOjc0NAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJLb25udGUgYWt0dWVsbGUgVmVyc2lvbiBpbiBVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIG5pY2h0IGZpbmRlbiIKK21zZ2lkICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICIiCisiS29ubnRlIGFrdHVlbGxlIFJldmlzaW9uIGluIFVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnIG5pY2h0IGZpbmRlbi4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjQ2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc1MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIktvbm50ZSBpbiBVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnIG5pY2h0IGFuZm9yZGVybiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NjAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiTmV1YXVmYmF1IHZvbiAnJHNoYTEnIGluIFVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCcgbmljaHQgbcO2Z2xpY2giCittc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJLb25udGUgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRwcmVmaXgkc21fcGF0aCcgbmljaHQgYW5mb3JkZXJuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY2MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTEKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgotbXNnc3RyICJVbnRlcnByb2pla3QtUGZhZCAnJHNtX3BhdGgnOiBuZXUgYXVmZ2ViYXV0IGluICckc2hhMSciCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjY2Ci0jLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKIG1zZ3N0ciAiIgotIlp1c2FtbWVuZsO8aHJ1bmcgdm9uICckc2hhMScgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyBmZWhsZ2VzY2hsYWdlbiIKKyJOZXVhdWZiYXUgdm9uICckc2hhMScgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRwcmVmaXgkc21fcGF0aCcgbmljaHQgbcO2Z2xpY2giCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCi1tc2dzdHIgIlVudGVycHJvamVrdC1QZmFkICckc21fcGF0aCc6IHp1c2FtbWVuZ2Vmw7xocnQgaW4gJyRzaGExJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCittc2dzdHIgIlVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnOiBuZXUgYXVmZ2ViYXV0IGluICckc2hhMSciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjcyCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS29ubnRlICckc2hhMScgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyBuaWNodCBhdXNjaGVja2VuLiIKK21zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIlp1c2FtbWVuZsO8aHJ1bmcgdm9uICckc2hhMScgaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRwcmVmaXgkc21fcGF0aCcgIgorImZlaGxnZXNjaGxhZ2VuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY3MworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCi1tc2dzdHIgIlVudGVycHJvamVrdC1QZmFkOiAnJHNtX3BhdGgnOiAnJHNoYTEnIGF1c2dlY2hlY2t0IgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY5NSBnaXQtc3VibW9kdWxlLnNoOjEwMTcKLSMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiRmVobGVyIGJlaSBSZWt1cnNpb24gaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dzdHIgIlVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnOiB6dXNhbW1lbmdlZsO8aHJ0IGluICckc2hhMSciCiAKICM6IGdpdC1zdWJtb2R1bGUuc2g6ODAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIktvbm50ZSAnJHNoYTEnIGluIFVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnIG5pY2h0IGF1c2NoZWNrZW4uIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjgwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCittc2dzdHIgIlVudGVycHJvamVrdC1QZmFkOiAnJHByZWZpeCRzbV9wYXRoJzogJyRzaGExJyBhdXNnZWNoZWNrdCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIkZlaGxlciBiZWkgUmVrdXJzaW9uIGluIFVudGVycHJvamVrdC1QZmFkICckcHJlZml4JHNtX3BhdGgnIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjkzOQogbXNnaWQgIlRoZSAtLWNhY2hlZCBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgLS1maWxlcyBvcHRpb24iCi1tc2dzdHIgIkRpZSAtLWNhY2hlZCBPcHRpb24ga2FubiBuaWNodCBtaXQgZGVyIC0tZmlsZXMgT3B0aW9uIGJlbnV0enQgd2VyZGVuIgorbXNnc3RyICIiCisiRGllIE9wdGlvbmVuIC0tY2FjaGVkIHVuZCAtLWZpbGVzIGvDtm5uZW4gbmljaHQgZ2VtZWluc2FtIHZlcndlbmRldCB3ZXJkZW4uIgogCiAjLiB1bmV4cGVjdGVkIHR5cGUKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODQzCisjOiBnaXQtc3VibW9kdWxlLnNoOjk3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgogbXNnc3RyICJ1bmVyd2FydGV0ZXIgTW9kdXMgJG1vZF9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODYxCisjOiBnaXQtc3VibW9kdWxlLnNoOjk5NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKIG1zZ3N0ciAiICBXYXJudW5nOiAkbmFtZSBiZWluaGFsdGV0IG5pY2h0IFZlcnNpb24gJHNoYTFfc3JjIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjg2NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDAwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfZHN0IgogbXNnc3RyICIgIFdhcm51bmc6ICRuYW1lIGJlaW5oYWx0ZXQgbmljaHQgVmVyc2lvbiAkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiIKICIgIFdhcm51bmc6ICRuYW1lIGJlaW5oYWx0ZXQgbmljaHQgZGllIFZlcnNpb25lbiAkc2hhMV9zcmMgdW5kICRzaGExX2RzdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4OTIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAyOAogbXNnaWQgImJsb2IiCiBtc2dzdHIgIkJsb2IiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6OTMwCi1tc2dpZCAiIyBTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKLW1zZ3N0ciAiIyBVbnRlcnByb2pla3RlIGdlw6RuZGVydCwgYWJlciBuaWNodCBha3R1YWxpc2llcnQ6IgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY2Cittc2dpZCAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCittc2dzdHIgIlVudGVycHJvamVrdGUgZ2XDpG5kZXJ0LCBhYmVyIG5pY2h0IGFrdHVhbGlzaWVydDoiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6OTMyCi1tc2dpZCAiIyBTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgotbXNnc3RyICIjIMOEbmRlcnVuZ2VuIGluIFVudGVycHJvamVrdCB6dW0gRWludHJhZ2VuOiIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2OAorbXNnaWQgIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCittc2dzdHIgIsOEbmRlcnVuZ2VuIGluIFVudGVycHJvamVrdCB6dW0gRWludHJhZ2VuOiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDgwCisjOiBnaXQtc3VibW9kdWxlLnNoOjExNTMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ3N0ciAiRmVobGVyIGJlaSBSZWt1cnNpb24gaW4gVW50ZXJwcm9qZWt0LVBmYWQgJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICJTeW5jaHJvbmlzaWVyZSBVbnRlcnByb2pla3QtVVJMIGbDvHIgJyRwcmVmaXgkc21fcGF0aCciCiAKKyN+IG1zZ2lkICJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAgJ3N0YXR1cyAtdW5vJyIKKyN+IG1zZ3N0ciAiIgorI34gIkVzIGRhdWVydGUgJS4yZiBTZWt1bmRlbiBkaWUgdW5iZW9iYWNodGV0ZW4gRGF0ZWllbiB6dSBiZXN0aW1tZW4uJ3N0YXR1cyAtIgorI34gInVubyciCisKKyN+IG1zZ2lkICJtYXkgc3BlZWQgaXQgdXAsIGJ1dCB5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIG5vdCB0byBmb3JnZXQgdG8gYWRkIgorI34gbXNnc3RyICJrw7ZubnRlIGRhcyBiZXNjaGxldW5pZ2VuLCBhYmVyIFNpZSBtw7xzc2VuIGRhcmF1ZiBhY2h0ZW4sIG5ldWUiCisKKyN+IG1zZ2lkICJuZXcgZmlsZXMgeW91cnNlbGYgKHNlZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorI34gbXNnc3RyICJEYXRlaWVuIHNlbGJzdHN0w6RuZGlnIGhpbnp1enVmw7xnZW4gKHNpZWhlICdnaXQgaGVscCBzdGF0dXMnKS4iCisKKyN+IG1zZ2lkICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iCisjfiBtc2dzdHIgIiIKKyN+ICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gIgorI34gIls8VmVyc2lvbnNpZGVudGlmaWthdGlvbj4uLi4gXSIKKworI34gbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgorI34gbXNnc3RyICIiCisjfiAiU2llaGUgJ2dpdCBoZWxwIDxLb21tYW5kbz4nIGbDvHIgd2VpdGVyZSBJbmZvcm1hdGlvbmVuIHp1IGVpbmVtICIKKyN+ICJzcGV6aWZpc2NoZW4gS29tbWFuZG8iCisKKyN+IG1zZ2lkICJ1c2UgYW55IHJlZiBpbiAuZ2l0L3JlZnMiCisjfiBtc2dzdHIgInZlcndlbmRldCBhbGxlIFJlZmVyZW56ZW4gaW4gLmdpdC9yZWZzIgorCisjfiBtc2dpZCAidXNlIGFueSB0YWcgaW4gLmdpdC9yZWZzL3RhZ3MiCisjfiBtc2dzdHIgInZlcndlbmRldCBhbGxlIE1hcmtpZXJ1bmdlbiBpbiAuZ2l0L3JlZnMvdGFncyIKKworI34gbXNnaWQgImJhZCBvYmplY3QgJXMiCisjfiBtc2dzdHIgInVuZ8O8bHRpZ2VzIE9iamVrdCAlcyIKKworI34gbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgorI34gbXNnc3RyICJ1bmVjaHRlIEVpbnJlaWNoZXItSW5mb3JtYXRpb25lbiAlcyIKKworI34gbXNnaWQgImNhbid0IGZkb3BlbiAnc2hvdycgb3V0cHV0IGZkIgorI34gbXNnc3RyICJrb25udGUgRGF0ZWktRGVza3JpcHRvciBmw7xyIEF1c2dhYmUgdm9uICdzaG93JyBuaWNodCDDtmZmbmVuIgorCisjfiBtc2dpZCAiZmFpbGVkIHRvIGNsb3NlIHBpcGUgdG8gJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKKyN+IG1zZ3N0ciAiIgorI34gIlNjaGxpZcOfZW4gZGVyIFZlcmJpbmR1bmcgenUgJ3Nob3cnIGlzdCBmw7xyIE9iamVrdCAnJXMnIGZlaGxnZXNjaGxhZ2VuLiIKKworI34gbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQiCisjfiBtc2dzdHIgIlNpZSBoYWJlbiBrZWluZSBnw7xsdGlnZSBad2VpZ3NwaXR6ZSAoSEVBRCkiCisKKyN+IG1zZ2lkICJvb3BzIgorI34gbXNnc3RyICJVcHMiCisKKyN+IG1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCisjfiBtc2dzdHIgIlfDvHJkZSAnJXMnIG5pY2h0IGzDtnNjaGVuXG4iCisKKyN+IG1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKKyN+IG1zZ3N0ciAiRW50ZmVybmUgbmljaHQgJXNcbiIKKworI34gbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgorI34gbXNnc3RyICJLb25udGUgQmVyZWl0c3RlbGx1bmcgbmljaHQgbGVzZW4iCisKICN+IG1zZ2lkICIgMCBmaWxlcyBjaGFuZ2VkIgogI34gbXNnc3RyICIgMCBEYXRlaWVuIGdlw6RuZGVydCIKIApkaWZmIC0tZ2l0IGEvcG8vZ2l0LnBvdCBiL3BvL2dpdC5wb3QKaW5kZXggNDMwZDAzMy4uNGE5ZDRlZiAxMDA2NDQKLS0tIGEvcG8vZ2l0LnBvdAorKysgYi9wby9naXQucG90CkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogR2l0IE1haWxpbmcgTGlzdCA8Z2l0QHZnZXIua2VybmVsLm9yZz5cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMi0xMS0zMCAxMjo0MCswODAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgogIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgogIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCkBAIC0xOCw3ICsxOCw3IEBACiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9SU5URUdFUjsgcGx1cmFsPUVYUFJFU1NJT047XG4iCiAKLSM6IGFkdmljZS5jOjQwCisjOiBhZHZpY2UuYzo1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJoaW50OiAlLipzXG4iCiBtc2dzdHIgIiIKQEAgLTI3LDcgKzI3LDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo3MAorIzogYWR2aWNlLmM6ODMKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtNTIsODAgKzUyLDE5NCBAQAogbXNnaWQgImdpdCBhcmNoaXZlIC0tcmVtb3RlIDxyZXBvPiBbLS1leGVjIDxjbWQ+XSAtLWxpc3QiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjMyMgorIzogYXJjaGl2ZS5jOjMyMwogbXNnaWQgImZtdCIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzIyCisjOiBhcmNoaXZlLmM6MzIzCiBtc2dpZCAiYXJjaGl2ZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjMyMyBidWlsdGluL2xvZy5jOjEwODQKKyM6IGFyY2hpdmUuYzozMjQgYnVpbHRpbi9sb2cuYzoxMTI2CiBtc2dpZCAicHJlZml4IgogbXNnc3RyICIiCiAKLSM6IGFyY2hpdmUuYzozMjQKKyM6IGFyY2hpdmUuYzozMjUKIG1zZ2lkICJwcmVwZW5kIHByZWZpeCB0byBlYWNoIHBhdGhuYW1lIGluIHRoZSBhcmNoaXZlIgogbXNnc3RyICIiCiAKLSM6IGFyY2hpdmUuYzozMjUgYnVpbHRpbi9hcmNoaXZlLmM6OTEgYnVpbHRpbi9ibGFtZS5jOjIzOTAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkxIGJ1aWx0aW4vY29uZmlnLmM6NTUgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MgotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0NCBidWlsdGluL2dyZXAuYzo3MTUgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTcgYnVpbHRpbi9ub3Rlcy5jOjU0MAotIzogYnVpbHRpbi9ub3Rlcy5jOjY5NyBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5CisjOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjg4IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MiBidWlsdGluL2NvbmZpZy5jOjU1IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjcgYnVpbHRpbi9ncmVwLmM6NzE1IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MCBidWlsdGluL2xzLWZpbGVzLmM6NDkzIGJ1aWx0aW4vbm90ZXMuYzo1MzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTMgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDcgcGFyc2Utb3B0aW9ucy5oOjE0OQogbXNnaWQgImZpbGUiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo5MgorIzogYXJjaGl2ZS5jOjMyNyBidWlsdGluL2FyY2hpdmUuYzo4OQogbXNnaWQgIndyaXRlIHRoZSBhcmNoaXZlIHRvIHRoaXMgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzI4CisjOiBhcmNoaXZlLmM6MzI5CiBtc2dpZCAicmVhZCAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzI5CisjOiBhcmNoaXZlLmM6MzMwCiBtc2dpZCAicmVwb3J0IGFyY2hpdmVkIGZpbGVzIG9uIHN0ZGVyciIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzMwCisjOiBhcmNoaXZlLmM6MzMxCiBtc2dpZCAic3RvcmUgb25seSIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzMxCisjOiBhcmNoaXZlLmM6MzMyCiBtc2dpZCAiY29tcHJlc3MgZmFzdGVyIgogbXNnc3RyICIiCiAKLSM6IGFyY2hpdmUuYzozMzkKKyM6IGFyY2hpdmUuYzozNDAKIG1zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjM0MgorIzogYXJjaGl2ZS5jOjM0MwogbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzQ0IGJ1aWx0aW4vYXJjaGl2ZS5jOjkzIGJ1aWx0aW4vY2xvbmUuYzo4NQorIzogYXJjaGl2ZS5jOjM0NSBidWlsdGluL2FyY2hpdmUuYzo5MCBidWlsdGluL2Nsb25lLmM6ODYKIG1zZ2lkICJyZXBvIgogbXNnc3RyICIiCiAKLSM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTQKKyM6IGFyY2hpdmUuYzozNDYgYnVpbHRpbi9hcmNoaXZlLmM6OTEKIG1zZ2lkICJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzQ2IGJ1aWx0aW4vYXJjaGl2ZS5jOjk1IGJ1aWx0aW4vbm90ZXMuYzo2MTkKKyM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTIgYnVpbHRpbi9ub3Rlcy5jOjYxNQogbXNnaWQgImNvbW1hbmQiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5NgorIzogYXJjaGl2ZS5jOjM0OCBidWlsdGluL2FyY2hpdmUuYzo5MwogbXNnaWQgInBhdGggdG8gdGhlIHJlbW90ZSBnaXQtdXBsb2FkLWFyY2hpdmUgY29tbWFuZCIKIG1zZ3N0ciAiIgogCiAjOiBhdHRyLmM6MjU5CiBtc2dpZCAiIgotIk5lZ2F0aXZlIHBhdHRlcm5zIGFyZSBmb3JiaWRkZW4gaW4gZ2l0IGF0dHJpYnV0ZXNcbiIKKyJOZWdhdGl2ZSBwYXR0ZXJucyBhcmUgaWdub3JlZCBpbiBnaXQgYXR0cmlidXRlc1xuIgogIlVzZSAnXFwhJyBmb3IgbGl0ZXJhbCBsZWFkaW5nIGV4Y2xhbWF0aW9uLiIKIG1zZ3N0ciAiIgogCisjOiBicmFuY2guYzo2MAorIywgYy1mb3JtYXQKK21zZ2lkICJOb3Qgc2V0dGluZyBicmFuY2ggJXMgYXMgaXRzIG93biB1cHN0cmVhbS4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIGJyYW5jaCAlcyBmcm9tICVzLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjkyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIHJlZiAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMuIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHRyYWNraW5nOiBhbWJpZ3VvdXMgaW5mb3JtYXRpb24gZm9yIHJlZiAlcyIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoxODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCBicmFuY2ggbmFtZS4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MTg3CisjLCBjLWZvcm1hdAorbXNnaWQgIkEgYnJhbmNoIG5hbWVkICclcycgYWxyZWFkeSBleGlzdHMuIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjE5NQorbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKK21zZ3N0ciAiIgorCisjOiBicmFuY2guYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldHVwIHRyYWNraW5nIGluZm9ybWF0aW9uOyBzdGFydGluZyBwb2ludCAnJXMnIGlzIG5vdCBhIGJyYW5jaC4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgInRoZSByZXF1ZXN0ZWQgdXBzdHJlYW0gYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MjA1Cittc2dpZCAiIgorIlxuIgorIklmIHlvdSBhcmUgcGxhbm5pbmcgb24gYmFzaW5nIHlvdXIgd29yayBvbiBhbiB1cHN0cmVhbVxuIgorImJyYW5jaCB0aGF0IGFscmVhZHkgZXhpc3RzIGF0IHRoZSByZW1vdGUsIHlvdSBtYXkgbmVlZCB0b1xuIgorInJ1biBcImdpdCBmZXRjaFwiIHRvIHJldHJpZXZlIGl0LlxuIgorIlxuIgorIklmIHlvdSBhcmUgcGxhbm5pbmcgdG8gcHVzaCBvdXQgYSBuZXcgbG9jYWwgYnJhbmNoIHRoYXRcbiIKKyJ3aWxsIHRyYWNrIGl0cyByZW1vdGUgY291bnRlcnBhcnQsIHlvdSBtYXkgd2FudCB0byB1c2VcbiIKKyJcImdpdCBwdXNoIC11XCIgdG8gc2V0IHRoZSB1cHN0cmVhbSBjb25maWcgYXMgeW91IHB1c2guIgorbXNnc3RyICIiCisKKyM6IGJyYW5jaC5jOjI1MAorIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFtYmlndW91cyBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIGJyYW5jaCBwb2ludDogJyVzJy4iCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6MjgxCittc2dpZCAiRmFpbGVkIHRvIGxvY2sgcmVmIGZvciB1cGRhdGUiCittc2dzdHIgIiIKKworIzogYnJhbmNoLmM6Mjk5Cittc2dpZCAiRmFpbGVkIHRvIHdyaXRlIHJlZiIKK21zZ3N0ciAiIgorCiAjOiBidW5kbGUuYzozNgogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGRvZXMgbm90IGxvb2sgbGlrZSBhIHYyIGJ1bmRsZSBmaWxlIgpAQCAtMTM2LDcgKzI1MCw3IEBACiBtc2dpZCAidW5yZWNvZ25pemVkIGhlYWRlcjogJXMlcyAoJWQpIgogbXNnc3RyICIiCiAKLSM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6Njc0CisjOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIgogbXNnc3RyICIiCkBAIC0xNDUsMjcgKzI1OSwyNyBAQAogbXNnaWQgIlJlcG9zaXRvcnkgbGFja3MgdGhlc2UgcHJlcmVxdWlzaXRlIGNvbW1pdHM6IgogbXNnc3RyICIiCiAKLSM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo1NjIgc2VxdWVuY2VyLmM6OTk0IGJ1aWx0aW4vbG9nLmM6MjkwCi0jOiBidWlsdGluL2xvZy5jOjczMiBidWlsdGluL2xvZy5jOjEzMTkgYnVpbHRpbi9sb2cuYzoxNTM1IGJ1aWx0aW4vbWVyZ2UuYzozNDcKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxODEKKyM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo2NTEgc2VxdWVuY2VyLmM6MTEwMSBidWlsdGluL2xvZy5jOjMwMAorIzogYnVpbHRpbi9sb2cuYzo3NzAgYnVpbHRpbi9sb2cuYzoxMzQ0IGJ1aWx0aW4vbG9nLmM6MTU3MCBidWlsdGluL21lcmdlLmM6MzQ5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTU1CiBtc2dpZCAicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiCiBtc2dzdHIgIiIKIAogIzogYnVuZGxlLmM6MTg2CiAjLCBjLWZvcm1hdAotbXNnaWQgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIGNvbnRhaW5zICVkIHJlZnMiCittc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgdGhlc2UgJWQgcmVmczoiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidW5kbGUuYzoxOTIKKyM6IGJ1bmRsZS5jOjE5MwogbXNnaWQgIlRoZSBidW5kbGUgcmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkuIgogbXNnc3RyICIiCiAKICM6IGJ1bmRsZS5jOjE5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnMiCittc2dpZCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhlc2UgJWQgcmVmczoiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCkBAIC0xNzMsNyArMjg3LDcgQEAKIG1zZ2lkICJyZXYtbGlzdCBkaWVkIgogbXNnc3RyICIiCiAKLSM6IGJ1bmRsZS5jOjMwMCBidWlsdGluL2xvZy5jOjEyMTUgYnVpbHRpbi9zaG9ydGxvZy5jOjI4NAorIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTI1NSBidWlsdGluL3Nob3J0bG9nLmM6MjU4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBhcmd1bWVudDogJXMiCiBtc2dzdHIgIiIKQEAgLTI5OSw0MSArNDEzLDQxIEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBkaWZmLmM6MTExCisjOiBkaWZmLmM6MTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBkaWZmLmM6MTE2CisjOiBkaWZmLmM6MTE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgVW5rbm93biBkaXJzdGF0IHBhcmFtZXRlciAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogZGlmZi5jOjE5NAorIzogZGlmZi5jOjIxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHZhbHVlIGZvciAnZGlmZi5zdWJtb2R1bGUnIGNvbmZpZyB2YXJpYWJsZTogJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBkaWZmLmM6MjM3CisjOiBkaWZmLmM6MjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJGb3VuZCBlcnJvcnMgaW4gJ2RpZmYuZGlyc3RhdCcgY29uZmlnIHZhcmlhYmxlOlxuIgogIiVzIgogbXNnc3RyICIiCiAKLSM6IGRpZmYuYzozNDk0CisjOiBkaWZmLmM6MzQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgogIiVzIgogbXNnc3RyICIiCiAKLSM6IGRpZmYuYzozNTA4CisjOiBkaWZmLmM6MzQ5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgLS1zdWJtb2R1bGUgb3B0aW9uIHBhcmFtZXRlcjogJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBncGctaW50ZXJmYWNlLmM6NTkKKyM6IGdwZy1pbnRlcmZhY2UuYzo1OSBncGctaW50ZXJmYWNlLmM6MTMxCiBtc2dpZCAiY291bGQgbm90IHJ1biBncGcuIgogbXNnc3RyICIiCiAKQEAgLTM0NSwxNyArNDU5LDI3IEBACiBtc2dpZCAiZ3BnIGZhaWxlZCB0byBzaWduIHRoZSBkYXRhIgogbXNnc3RyICIiCiAKLSM6IGdyZXAuYzoxNjIyCisjOiBncGctaW50ZXJmYWNlLmM6MTE1CisjLCBjLWZvcm1hdAorbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJyVzJzogJXMiCittc2dzdHIgIiIKKworIzogZ3BnLWludGVyZmFjZS5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJmYWlsZWQgd3JpdGluZyBkZXRhY2hlZCBzaWduYXR1cmUgdG8gJyVzJzogJXMiCittc2dzdHIgIiIKKworIzogZ3JlcC5jOjE2MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogdW5hYmxlIHRvIHJlYWQgJXMiCiBtc2dzdHIgIiIKIAotIzogZ3JlcC5jOjE2MzkKKyM6IGdyZXAuYzoxNjQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGdyZXAuYzoxNjUwCisjOiBncmVwLmM6MTY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICIiCkBAIC0zNjksMzUgKzQ5MywzOSBAQAogbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKIG1zZ3N0ciAiIgogCi0jOiBoZWxwLmM6Mjc1CisjOiBoZWxwLmM6MjM1Cittc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKK21zZ3N0ciAiIgorCisjOiBoZWxwLmM6MjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGFwcGVhcnMgdG8gYmUgYSBnaXQgY29tbWFuZCwgYnV0IHdlIHdlcmUgbm90XG4iCiAiYWJsZSB0byBleGVjdXRlIGl0LiBNYXliZSBnaXQtJXMgaXMgYnJva2VuPyIKIG1zZ3N0ciAiIgogCi0jOiBoZWxwLmM6MzMyCisjOiBoZWxwLmM6MzQ5CiBtc2dpZCAiVWggb2guIFlvdXIgc3lzdGVtIHJlcG9ydHMgbm8gR2l0IGNvbW1hbmRzIGF0IGFsbC4iCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM1NAorIzogaGVscC5jOjM3MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV0FSTklORzogWW91IGNhbGxlZCBhIEdpdCBjb21tYW5kIG5hbWVkICclcycsIHdoaWNoIGRvZXMgbm90IGV4aXN0LlxuIgogIkNvbnRpbnVpbmcgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB5b3UgbWVhbnQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBoZWxwLmM6MzU5CisjOiBoZWxwLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLiIKIG1zZ3N0ciAiIgogCi0jOiBoZWxwLmM6MzY2CisjOiBoZWxwLmM6MzgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdDogJyVzJyBpcyBub3QgYSBnaXQgY29tbWFuZC4gU2VlICdnaXQgLS1oZWxwJy4iCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM3MAorIzogaGVscC5jOjM4NwogbXNnaWQgIiIKICJcbiIKICJEaWQgeW91IG1lYW4gdGhpcz8iCkBAIC00MTEsOCArNTM5LDggQEAKIG1zZ2lkICJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UuYzoxMTAgYnVpbHRpbi9jaGVja291dC5jOjMzMyBidWlsdGluL2NoZWNrb3V0LmM6NTM0Ci0jOiBidWlsdGluL2Nsb25lLmM6NTg2CisjOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDUKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIApAQCAtNDYxLDcgKzU4OSw3IEBACiBtc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMwMgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzczIGJ1aWx0aW4vY2xvbmUuYzozMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIG9wZW4gJyVzJyIKIG1zZ3N0ciAiIgpAQCAtNTg4LDcgKzcxNiw3IEBACiBtc2dpZCAiQXV0by1tZXJnaW5nICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDo4OTMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDoxMDI5CiBtc2dpZCAic3VibW9kdWxlIgogbXNnc3RyICIiCiAKQEAgLTY1OCw0MyArNzg2LDYyIEBACiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY0MworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAwOSBidWlsdGluL21lcmdlLmM6NjU4CiBtc2dpZCAiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIKIG1zZ3N0ciAiIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NDk0CisjOiBvYmplY3QuYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCittc2dzdHIgIiIKKworIzogcGFyc2Utb3B0aW9ucy5jOjQ4OQogbXNnaWQgIi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NTEyCisjOiBwYXJzZS1vcHRpb25zLmM6NTA3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVzYWdlOiAlcyIKIG1zZ3N0ciAiIgogCiAjLiBUUkFOU0xBVE9SUzogdGhlIGNvbG9uIGhlcmUgc2hvdWxkIGFsaWduIHdpdGggdGhlCiAjLiBvbmUgaW4gInVzYWdlOiAlcyIgdHJhbnNsYXRpb24KLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTYKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgb3I6ICVzIgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTkKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICVzIgogbXNnc3RyICIiCiAKLSM6IHJlbW90ZS5jOjE2MzIKKyM6IHBhcnNlLW9wdGlvbnMuYzo1NDgKK21zZ2lkICItTlVNIgorbXNnc3RyICIiCisKKyM6IHBhdGhzcGVjLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCittc2dzdHIgIiIKKworIzogcGF0aHNwZWMuYzo5OQorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCittc2dzdHIgIiIKKworIzogcmVtb3RlLmM6MTc4MQogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdC5cbiIKIG1zZ2lkX3BsdXJhbCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXRzLlxuIgogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogcmVtb3RlLmM6MTYzNworIzogcmVtb3RlLmM6MTc4NwogbXNnaWQgIiAgKHVzZSBcImdpdCBwdXNoXCIgdG8gcHVibGlzaCB5b3VyIGxvY2FsIGNvbW1pdHMpXG4iCiBtc2dzdHIgIiIKIAotIzogcmVtb3RlLmM6MTY0MAorIzogcmVtb3RlLmM6MTc5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3VyIGJyYW5jaCBpcyBiZWhpbmQgJyVzJyBieSAlZCBjb21taXQsIGFuZCBjYW4gYmUgZmFzdC1mb3J3YXJkZWQuXG4iCiBtc2dpZF9wbHVyYWwgIiIKQEAgLTcwMiwxMSArODQ5LDExIEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiByZW1vdGUuYzoxNjQ3CisjOiByZW1vdGUuYzoxNzk4CiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byB1cGRhdGUgeW91ciBsb2NhbCBicmFuY2gpXG4iCiBtc2dzdHIgIiIKIAotIzogcmVtb3RlLmM6MTY1MAorIzogcmVtb3RlLmM6MTgwMQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiWW91ciBicmFuY2ggYW5kICclcycgaGF2ZSBkaXZlcmdlZCxcbiIKQEAgLTcxNywyNjEgKzg2NCwyNjcgQEAKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IHJlbW90ZS5jOjE2NTkKKyM6IHJlbW90ZS5jOjE4MTEKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIG1lcmdlIHRoZSByZW1vdGUgYnJhbmNoIGludG8geW91cnMpXG4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTIzIGJ1aWx0aW4vbWVyZ2UuYzo3NjEgYnVpbHRpbi9tZXJnZS5jOjg3NCBidWlsdGluL21lcmdlLmM6OTg0Ci0jOiBidWlsdGluL21lcmdlLmM6OTk0CisjOiBzZXF1ZW5jZXIuYzoyMDYgYnVpbHRpbi9tZXJnZS5jOjc3NiBidWlsdGluL21lcmdlLmM6ODg5IGJ1aWx0aW4vbWVyZ2UuYzo5OTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTI1IGJ1aWx0aW4vbWVyZ2UuYzozMzMgYnVpbHRpbi9tZXJnZS5jOjc2NCBidWlsdGluL21lcmdlLmM6OTg2Ci0jOiBidWlsdGluL21lcmdlLmM6OTk5CisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjMzNSBidWlsdGluL21lcmdlLmM6Nzc5CisjOiBidWlsdGluL21lcmdlLmM6MTAwMSBidWlsdGluL21lcmdlLmM6MTAxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxNDYKKyM6IHNlcXVlbmNlci5jOjIyOQogbXNnaWQgIiIKICJhZnRlciByZXNvbHZpbmcgdGhlIGNvbmZsaWN0cywgbWFyayB0aGUgY29ycmVjdGVkIHBhdGhzXG4iCiAid2l0aCAnZ2l0IGFkZCA8cGF0aHM+JyBvciAnZ2l0IHJtIDxwYXRocz4nIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjE0OQorIzogc2VxdWVuY2VyLmM6MjMyCiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPidcbiIKICJhbmQgY29tbWl0IHRoZSByZXN1bHQgd2l0aCAnZ2l0IGNvbW1pdCciCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTYyIHNlcXVlbmNlci5jOjc3MCBzZXF1ZW5jZXIuYzo4NTMKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjUKKyM6IHNlcXVlbmNlci5jOjI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxODAKKyM6IHNlcXVlbmNlci5jOjI2MwogbXNnaWQgIllvdXIgbG9jYWwgY2hhbmdlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTgyCisjOiBzZXF1ZW5jZXIuYzoyNjUKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgcmV2ZXJ0LiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxODUKKyM6IHNlcXVlbmNlci5jOjI2OAogbXNnaWQgIkNvbW1pdCB5b3VyIGNoYW5nZXMgb3Igc3Rhc2ggdGhlbSB0byBwcm9jZWVkLiIKIG1zZ3N0ciAiIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzUKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjI2NgorIzogc2VxdWVuY2VyLmM6MzUwCiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoyODcKKyM6IHNlcXVlbmNlci5jOjM3MQogbXNnaWQgIlVuYWJsZSB0byB1cGRhdGUgY2FjaGUgdHJlZVxuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjMzMgorIzogc2VxdWVuY2VyLmM6NDE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzozMzcKKyM6IHNlcXVlbmNlci5jOjQyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjQwMworIzogc2VxdWVuY2VyLmM6NDg3CiBtc2dpZCAiWW91ciBpbmRleCBmaWxlIGlzIHVubWVyZ2VkLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo0MDYKLW1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIgotbXNnc3RyICIiCi0KLSM6IHNlcXVlbmNlci5jOjQyMQorIzogc2VxdWVuY2VyLmM6NTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhIG1lcmdlIGJ1dCBubyAtbSBvcHRpb24gd2FzIGdpdmVuLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo0MjkKKyM6IHNlcXVlbmNlci5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBwYXJlbnQgJWQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NDMzCisjOiBzZXF1ZW5jZXIuYzo1MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFpbmxpbmUgd2FzIHNwZWNpZmllZCBidXQgY29tbWl0ICVzIGlzIG5vdCBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogCiAjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIHdpbGwgYmUgInJldmVydCIgb3IKICMuICJjaGVycnktcGljayIsIHRoZSBzZWNvbmQgJXMgYSBTSEExCi0jOiBzZXF1ZW5jZXIuYzo0NDQKKyM6IHNlcXVlbmNlci5jOjUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHBhcnNlIHBhcmVudCBjb21taXQgJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NDQ4CisjOiBzZXF1ZW5jZXIuYzo1MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGdldCBjb21taXQgbWVzc2FnZSBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NTMyCisjOiBzZXF1ZW5jZXIuYzo2MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJldmVydCAlcy4uLiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo1MzMKKyM6IHNlcXVlbmNlci5jOjYyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgYXBwbHkgJXMuLi4gJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NTY1CisjOiBzZXF1ZW5jZXIuYzo2NTQKIG1zZ2lkICJlbXB0eSBjb21taXQgc2V0IHBhc3NlZCIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo1NzMKKyM6IHNlcXVlbmNlci5jOjY2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo1NzgKKyM6IHNlcXVlbmNlci5jOjY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo2MzYKKyM6IHNlcXVlbmNlci5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgJXMgZHVyaW5nIGEgJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjU4CisjOiBzZXF1ZW5jZXIuYzo3NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGxpbmUgJWQuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjY2MworIzogc2VxdWVuY2VyLmM6NzUyCiBtc2dpZCAiTm8gY29tbWl0cyBwYXJzZWQuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjY3NgorIzogc2VxdWVuY2VyLmM6NzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjY4MAorIzogc2VxdWVuY2VyLmM6NzY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkICVzLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo2ODcKKyM6IHNlcXVlbmNlci5jOjc3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnVzYWJsZSBpbnN0cnVjdGlvbiBzaGVldDogJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzE1CisjOiBzZXF1ZW5jZXIuYzo4MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBrZXk6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjcxOAorIzogc2VxdWVuY2VyLmM6ODA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdmFsdWUgZm9yICVzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3MzAKKyM6IHNlcXVlbmNlci5jOjgxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgb3B0aW9ucyBzaGVldDogJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzUxCisjOiBzZXF1ZW5jZXIuYzo4NDAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjc1MgorIzogc2VxdWVuY2VyLmM6ODQxCiBtc2dpZCAidHJ5IFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3NTYKKyM6IHNlcXVlbmNlci5jOjg0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIHNlcXVlbmNlciBkaXJlY3RvcnkgJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzcyIHNlcXVlbmNlci5jOjg1NworIzogc2VxdWVuY2VyLmM6ODYxIHNlcXVlbmNlci5jOjk0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcy4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzkxIHNlcXVlbmNlci5jOjkyNQorIzogc2VxdWVuY2VyLmM6ODgwIHNlcXVlbmNlci5jOjEwMTQKIG1zZ2lkICJubyBjaGVycnktcGljayBvciByZXZlcnQgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzkzCisjOiBzZXF1ZW5jZXIuYzo4ODIKIG1zZ2lkICJjYW5ub3QgcmVzb2x2ZSBIRUFEIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjc5NQorIzogc2VxdWVuY2VyLmM6ODg0CiBtc2dpZCAiY2Fubm90IGFib3J0IGZyb20gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODE3IGJ1aWx0aW4vYXBwbHkuYzo0MDA1CisjOiBzZXF1ZW5jZXIuYzo5MDYgYnVpbHRpbi9hcHBseS5jOjQwNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjgyMAorIzogc2VxdWVuY2VyLmM6OTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICVzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo4MjEKKyM6IHNlcXVlbmNlci5jOjkxMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODI3CisjOiBzZXF1ZW5jZXIuYzo5MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAic3RvcmVkIHByZS1jaGVycnktcGljayBIRUFEIGZpbGUgJyVzJyBpcyBjb3JydXB0IgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjg1MAorIzogc2VxdWVuY2VyLmM6OTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmb3JtYXQgJXMuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjEwMTIKKyM6IHNlcXVlbmNlci5jOjEwODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNhbid0IGNoZXJyeS1waWNrIGEgJXMiCittc2dzdHIgIiIKKworIzogc2VxdWVuY2VyLmM6MTA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmFkIHJldmlzaW9uIgorbXNnc3RyICIiCisKKyM6IHNlcXVlbmNlci5jOjExMTkKIG1zZ2lkICJDYW4ndCByZXZlcnQgYXMgaW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTAxMworIzogc2VxdWVuY2VyLmM6MTEyMAogbXNnaWQgIkNhbid0IGNoZXJyeS1waWNrIGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBzaGExX25hbWUuYzoxMDQ0CisjOiBzaGExX25hbWUuYzoxMDM2CiBtc2dpZCAiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBzaGExX25hbWUuYzoxMDQ3CisjOiBzaGExX25hbWUuYzoxMDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IHNoYTFfbmFtZS5jOjEwNDkKKyM6IHNoYTFfbmFtZS5jOjEwNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gdXBzdHJlYW0gY29uZmlndXJlZCBmb3IgYnJhbmNoICclcyciCiBtc2dzdHIgIiIKIAotIzogc2hhMV9uYW1lLmM6MTA1MgorIzogc2hhMV9uYW1lLmM6MTA0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcHN0cmVhbSBicmFuY2ggJyVzJyBub3Qgc3RvcmVkIGFzIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCIKIG1zZ3N0ciAiIgpAQCAtOTgxLDEyICsxMTM0LDE3IEBACiBtc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3cmFwcGVyLmM6NDI2CisjOiB3cmFwcGVyLmM6NDIzCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJyIKK21zZ3N0ciAiIgorCisjOiB3cmFwcGVyLmM6NDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBsb29rIHVwIGN1cnJlbnQgdXNlciBpbiB0aGUgcGFzc3dkIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IHdyYXBwZXIuYzo0MjcKKyM6IHdyYXBwZXIuYzo0MzUKIG1zZ2lkICJubyBzdWNoIHVzZXIiCiBtc2dzdHIgIiIKIApAQCAtMTA4OSw0MDEgKzEyNDcsNDk2IEBACiBtc2dpZCAidW50cmFja2VkIGNvbnRlbnQsICIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMDMKKyM6IHd0LXN0YXR1cy5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZTogICAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMDYKKyM6IHd0LXN0YXR1cy5jOjMwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3BpZWQ6ICAgICAlcyAtPiAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMDkKKyM6IHd0LXN0YXR1cy5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkOiAgICAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMTIKKyM6IHd0LXN0YXR1cy5jOjMxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJtb2RpZmllZDogICAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMTUKKyM6IHd0LXN0YXR1cy5jOjMxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW5hbWVkOiAgICAlcyAtPiAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMTgKKyM6IHd0LXN0YXR1cy5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0eXBlY2hhbmdlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMjEKKyM6IHd0LXN0YXR1cy5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duOiAgICAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMjQKKyM6IHd0LXN0YXR1cy5jOjMyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bm1lcmdlZDogICAlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzozMjcKKyM6IHd0LXN0YXR1cy5jOjMzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJidWc6IHVuaGFuZGxlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjgwMwogbXNnaWQgIllvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo3ODggd3Qtc3RhdHVzLmM6OTEyCisjOiB3dC1zdGF0dXMuYzo4MDYgd3Qtc3RhdHVzLmM6OTU4CiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNvbW1pdFwiKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo3OTEKKyM6IHd0LXN0YXR1cy5jOjgwOQogbXNnaWQgIkFsbCBjb25mbGljdHMgZml4ZWQgYnV0IHlvdSBhcmUgc3RpbGwgbWVyZ2luZy4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6Nzk0CisjOiB3dC1zdGF0dXMuYzo4MTIKIG1zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0XCIgdG8gY29uY2x1ZGUgbWVyZ2UpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNAorIzogd3Qtc3RhdHVzLmM6ODIyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNworIzogd3Qtc3RhdHVzLmM6ODI1CiBtc2dpZCAiVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZW1wdHkuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjgxMQorIzogd3Qtc3RhdHVzLmM6ODI5CiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo4MTMKKyM6IHd0LXN0YXR1cy5jOjgzMQogbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLXNraXBcIiB0byBza2lwIHRoaXMgcGF0Y2gpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjgxNQorIzogd3Qtc3RhdHVzLmM6ODMzCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjg3MyB3dC1zdGF0dXMuYzo4ODMKKyM6IHd0LXN0YXR1cy5jOjg5MyB3dC1zdGF0dXMuYzo5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6ODk4IHd0LXN0YXR1cy5jOjkxNQogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo4NzYKKyM6IHd0LXN0YXR1cy5jOjkwMQogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjg3OAorIzogd3Qtc3RhdHVzLmM6OTAzCiBtc2dpZCAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiB0byBza2lwIHRoaXMgcGF0Y2gpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjg4MAorIzogd3Qtc3RhdHVzLmM6OTA1CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgdG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjg4NgorIzogd3Qtc3RhdHVzLmM6OTE4CiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjg4OAorIzogd3Qtc3RhdHVzLmM6OTIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6OTI3CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6ODkxCisjOiB3dC1zdGF0dXMuYzo5MzAKIG1zZ2lkICIgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo4OTMKKyM6IHd0LXN0YXR1cy5jOjkzNAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjkzOQogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo4OTYKKyM6IHd0LXN0YXR1cy5jOjk0MgogbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXQgLS1hbWVuZFwiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6ODk4CisjOiB3dC1zdGF0dXMuYzo5NDQKIG1zZ2lkICIiCiAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTA4CisjOiB3dC1zdGF0dXMuYzo5NTQKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTE1CisjOiB3dC1zdGF0dXMuYzo5NjEKIG1zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgY29tbWl0XCIpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjkyNAotbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZy4iCisjOiB3dC1zdGF0dXMuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmV2ZXJ0aW5nIGNvbW1pdCAlcy4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTI3Ci1tc2dpZCAiICAodXNlIFwiZ2l0IGJpc2VjdCByZXNldFwiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpIgorIzogd3Qtc3RhdHVzLmM6OTc1Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIiCiAKICM6IHd0LXN0YXR1cy5jOjk3OAorbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5ODAKK21zZ2lkICIgICh1c2UgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIHJldmVydCBvcGVyYXRpb24pIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjk5MQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcsIHN0YXJ0ZWQgZnJvbSBicmFuY2ggJyVzJy4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6OTk1Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKK21zZ3N0ciAiIgorCisjOiB3dC1zdGF0dXMuYzo5OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgYmlzZWN0IHJlc2V0XCIgdG8gZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCkiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE3MwogbXNnaWQgIk9uIGJyYW5jaCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTg1CisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE4NgorbXNnaWQgIkhFQUQgZGV0YWNoZWQgZnJvbSAiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE4OQogbXNnaWQgIk5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTk3CisjOiB3dC1zdGF0dXMuYzoxMjA2CiBtc2dpZCAiSW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTAxMQorIzogd3Qtc3RhdHVzLmM6MTIyMAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMDEzCisjOiB3dC1zdGF0dXMuYzoxMjIyCiBtc2dpZCAiSWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMDE1CisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTIzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnRyYWNrZWQgZmlsZXMgbm90IGxpc3RlZCVzIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEwMTcKKyM6IHd0LXN0YXR1cy5jOjEyMzQKIG1zZ2lkICIgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEwMjMKKyM6IHd0LXN0YXR1cy5jOjEyNDAKIG1zZ2lkICJObyBjaGFuZ2VzIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEwMjgKKyM6IHd0LXN0YXR1cy5jOjEyNDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpXG4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTAzMQorIzogd3Qtc3RhdHVzLmM6MTI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEwMzQKKyM6IHd0LXN0YXR1cy5jOjEyNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgcHJlc2VudCAodXNlIFwiZ2l0IGFkZFwiIHRvICIKICJ0cmFjaylcbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMDM3CisjOiB3dC1zdGF0dXMuYzoxMjU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgcHJlc2VudFxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEwNDAKKyM6IHd0LXN0YXR1cy5jOjEyNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKGNyZWF0ZS9jb3B5IGZpbGVzIGFuZCB1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spXG4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTA0MyB3dC1zdGF0dXMuYzoxMDQ4CisjOiB3dC1zdGF0dXMuYzoxMjYwIHd0LXN0YXR1cy5jOjEyNjUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXRcbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMDQ2CisjOiB3dC1zdGF0dXMuYzoxMjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpXG4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTA1MAorIzogd3Qtc3RhdHVzLmM6MTI2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMTU4CisjOiB3dC1zdGF0dXMuYzoxMzc1CiBtc2dpZCAiSEVBRCAobm8gYnJhbmNoKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMTY0CisjOiB3dC1zdGF0dXMuYzoxMzgxCiBtc2dpZCAiSW5pdGlhbCBjb21taXQgb24gIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjExNzkKKyM6IHd0LXN0YXR1cy5jOjEzOTYKIG1zZ2lkICJiZWhpbmQgIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjExODIgd3Qtc3RhdHVzLmM6MTE4NQorIzogd3Qtc3RhdHVzLmM6MTM5OSB3dC1zdGF0dXMuYzoxNDAyCiBtc2dpZCAiYWhlYWQgIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjExODcKKyM6IHd0LXN0YXR1cy5jOjE0MDQKIG1zZ2lkICIsIGJlaGluZCAiCiBtc2dzdHIgIiIKIAotIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNDEKKyM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjE5Ci1tc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIgorIzogYnVpbHRpbi9hZGQuYzoyMAorbXNnaWQgImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjYyCisjLgorIy4gKiBUbyBiZSBjb25zaXN0ZW50IHdpdGggImdpdCBhZGQgLXAiIGFuZCBtb3N0IEdpdAorIy4gKiBjb21tYW5kcywgd2Ugc2hvdWxkIGRlZmF1bHQgdG8gYmVpbmcgdHJlZS13aWRlLCBidXQKKyMuICogdGhpcyBpcyBub3QgdGhlIG9yaWdpbmFsIGJlaGF2aW9yIGFuZCBjYW4ndCBiZQorIy4gKiBjaGFuZ2VkIHVudGlsIHVzZXJzIHRyYWluZWQgdGhlbXNlbHZlcyBub3QgdG8gdHlwZQorIy4gKiAiZ2l0IGFkZCAtdSIgb3IgImdpdCBhZGQgLUEiLiBGb3Igbm93LCB3ZSB3YXJuIGFuZAorIy4gKiBrZWVwIHRoZSBvbGQgYmVoYXZpb3IuIExhdGVyLCB0aGUgYmVoYXZpb3IgY2FuIGJlIGNoYW5nZWQKKyMuICogdG8gdHJlZS13aWRlLCBrZWVwaW5nIHRoZSB3YXJuaW5nIGZvciBhIHdoaWxlLCBhbmQKKyMuICogZXZlbnR1YWxseSB3ZSBjYW4gZHJvcCB0aGUgd2FybmluZy4KKyMuCisjOiBidWlsdGluL2FkZC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgYmVoYXZpb3Igb2YgJ2dpdCBhZGQgJXMgKG9yICVzKScgd2l0aCBubyBwYXRoIGFyZ3VtZW50IGZyb20gYVxuIgorInN1YmRpcmVjdG9yeSBvZiB0aGUgdHJlZSB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgIgorImFueW1vcmUuXG4iCisiVG8gYWRkIGNvbnRlbnQgZm9yIHRoZSB3aG9sZSB0cmVlLCBydW46XG4iCisiXG4iCisiICBnaXQgYWRkICVzIDovXG4iCisiICAob3IgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyJUbyByZXN0cmljdCB0aGUgY29tbWFuZCB0byB0aGUgY3VycmVudCBkaXJlY3RvcnksIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKG9yIGdpdCBhZGQgJXMgLilcbiIKKyJcbiIKKyJXaXRoIHRoZSBjdXJyZW50IEdpdCB2ZXJzaW9uLCB0aGUgY29tbWFuZCBpcyByZXN0cmljdGVkIHRvIHRoZSBjdXJyZW50ICIKKyJkaXJlY3RvcnkuXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIllvdSByYW4gJ2dpdCBhZGQnIHdpdGggbmVpdGhlciAnLUEgKC0tYWxsKScgb3IgJy0taWdub3JlLXJlbW92YWwnLFxuIgorIndob3NlIGJlaGF2aW91ciB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIHdpdGggcmVzcGVjdCB0byBwYXRocyB5b3UgcmVtb3ZlZC5cbiIKKyJQYXRocyBsaWtlICclcycgdGhhdCBhcmVcbiIKKyJyZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUgYXJlIGlnbm9yZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgR2l0LlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aHNwZWM+Jywgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZGVmYXVsdCxcbiIKKyIgIGlnbm9yZXMgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0tYWxsIDxwYXRoc3BlYz4nIHdpbGwgbGV0IHlvdSBhbHNvIHJlY29yZCB0aGUgcmVtb3ZhbHMuXG4iCisiXG4iCisiUnVuICdnaXQgc3RhdHVzJyB0byBjaGVjayB0aGUgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2FkZC5jOjE0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIGRpZmYgc3RhdHVzICVjIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjcgYnVpbHRpbi9jb21taXQuYzoyMzEKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjMzCiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NzcKKyM6IGJ1aWx0aW4vYWRkLmM6MTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbW92ZSAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9hZGQuYzoxOTIKKyM6IGJ1aWx0aW4vYWRkLmM6MjUzCiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZWZyZXNoaW5nIHRoZSBpbmRleDoiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUgYnVpbHRpbi9hZGQuYzo0NjAgYnVpbHRpbi9ybS5jOjI3NQorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2FkZC5jOjI3NgorIzogYnVpbHRpbi9hZGQuYzozMzkKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoyODYKKyM6IGJ1aWx0aW4vYWRkLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjkwCisjOiBidWlsdGluL2FkZC5jOjM1MwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NQorIzogYnVpbHRpbi9hZGQuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NworIzogYnVpbHRpbi9hZGQuYzozNjAKIG1zZ2lkICJFbXB0eSBwYXRjaC4gQWJvcnRlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMDMKKyM6IGJ1aWx0aW4vYWRkLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBhcHBseSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzEzCisjOiBidWlsdGluL2FkZC5jOjM3NgogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjMxOSBidWlsdGluL2NsZWFuLmM6NTIgYnVpbHRpbi9mZXRjaC5jOjc4IGJ1aWx0aW4vbXYuYzo2MwotIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NiBidWlsdGluL3B1c2guYzozODggYnVpbHRpbi9yZW1vdGUuYzoxMjUzCisjOiBidWlsdGluL2FkZC5jOjM5MyBidWlsdGluL2NsZWFuLmM6MTYxIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKKyM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6NDI1IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MwogIzogYnVpbHRpbi9ybS5jOjIwNgogbXNnaWQgImRyeSBydW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjAgYnVpbHRpbi9hcHBseS5jOjQzNTQgYnVpbHRpbi9jb21taXQuYzoxMTYwCi0jOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo4MiBidWlsdGluL2ZzY2suYzo2MTMgYnVpbHRpbi9sb2cuYzoxNDgzCi0jOiBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKIG1zZ2lkICJiZSB2ZXJib3NlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzIyCisjOiBidWlsdGluL2FkZC5jOjM5NgogbXNnaWQgImludGVyYWN0aXZlIHBpY2tpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjMgYnVpbHRpbi9jaGVja291dC5jOjEwMzEgYnVpbHRpbi9yZXNldC5jOjI0OAorIzogYnVpbHRpbi9hZGQuYzozOTcgYnVpbHRpbi9jaGVja291dC5jOjEwNjMgYnVpbHRpbi9yZXNldC5jOjI1OAogbXNnaWQgInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI0CisjOiBidWlsdGluL2FkZC5jOjM5OAogbXNnaWQgImVkaXQgY3VycmVudCBkaWZmIGFuZCBhcHBseSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjMyNQorIzogYnVpbHRpbi9hZGQuYzozOTkKIG1zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjYKKyM6IGJ1aWx0aW4vYWRkLmM6NDAwCiBtc2dpZCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjcKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI4CisjOiBidWlsdGluL2FkZC5jOjQwMgogbXNnaWQgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjMyOQorIy4gdGFrZXMgbm8gYXJndW1lbnRzCisjOiBidWlsdGluL2FkZC5jOjQwNQorbXNnaWQgImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA3CiBtc2dpZCAiZG9uJ3QgYWRkLCBvbmx5IHJlZnJlc2ggdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzMwCisjOiBidWlsdGluL2FkZC5jOjQwOAogbXNnaWQgImp1c3Qgc2tpcCBmaWxlcyB3aGljaCBjYW5ub3QgYmUgYWRkZWQgYmVjYXVzZSBvZiBlcnJvcnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5CiBtc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjQzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCB0aGVtLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzU0CisjOiBidWlsdGluL2FkZC5jOjQzMgogbXNnaWQgIm5vIGZpbGVzIGFkZGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzYwCisjOiBidWlsdGluL2FkZC5jOjQzOAogbXNnaWQgImFkZGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozOTIKKyM6IGJ1aWx0aW4vYWRkLmM6NDc3CiBtc2dpZCAiLUEgYW5kIC11IGFyZSBtdXR1YWxseSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozOTQKKyM6IGJ1aWx0aW4vYWRkLmM6NDk1CiBtc2dpZCAiT3B0aW9uIC0taWdub3JlLW1pc3NpbmcgY2FuIG9ubHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIC0tZHJ5LXJ1biIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQxNAorIzogYnVpbHRpbi9hZGQuYzo1MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MTUKKyM6IGJ1aWx0aW4vYWRkLmM6NTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1heWJlIHlvdSB3YW50ZWQgdG8gc2F5ICdnaXQgYWRkIC4nP1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDIxIGJ1aWx0aW4vY2xlYW4uYzo5NSBidWlsdGluL2NvbW1pdC5jOjI5MSBidWlsdGluL212LmM6ODIKLSM6IGJ1aWx0aW4vcm0uYzoyMzUKKyM6IGJ1aWx0aW4vYWRkLmM6NTMyIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6NjYgYnVpbHRpbi9jbGVhbi5jOjIwNAorIzogYnVpbHRpbi9jb21taXQuYzoyOTMgYnVpbHRpbi9tdi5jOjgyIGJ1aWx0aW4vcm0uYzoyMzUKIG1zZ2lkICJpbmRleCBmaWxlIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo0ODEgYnVpbHRpbi9hcHBseS5jOjQ0NTAgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCisjOiBidWlsdGluL2FkZC5jOjYwNCBidWlsdGluL2FwcGx5LmM6NDUwNSBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzozNzAKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIApAQCAtMTUzNiwxNyArMTc4OSwxNyBAQAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gZXhwZWN0ZWQgL2Rldi9udWxsIG9uIGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0MjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlY291bnQ6IHVuZXhwZWN0ZWQgbGluZTogJS4qcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQ3NworIzogYnVpbHRpbi9hcHBseS5jOjE0NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZnJhZ21lbnQgd2l0aG91dCBoZWFkZXIgYXQgbGluZSAlZDogJS4qcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQ5NAorIzogYnVpbHRpbi9hcHBseS5jOjE0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgIgpAQCAtMTU1Nyw0MDAgKzE4MTAsMzk2IEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY1NAorIzogYnVpbHRpbi9hcHBseS5jOjE2NTYKIG1zZ2lkICJuZXcgZmlsZSBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY1NgorIzogYnVpbHRpbi9hcHBseS5jOjE2NTgKIG1zZ2lkICJkZWxldGVkIGZpbGUgc3RpbGwgaGFzIGNvbnRlbnRzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjgyCisjOiBidWlsdGluL2FwcGx5LmM6MTY4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE3MTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBmaWxlICVzIGRlcGVuZHMgb24gb2xkIGNvbnRlbnRzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIwCisjOiBidWlsdGluL2FwcGx5LmM6MTcyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkIGZpbGUgJXMgc3RpbGwgaGFzIGNvbnRlbnRzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIzCisjOiBidWlsdGluL2FwcGx5LmM6MTcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIqKiB3YXJuaW5nOiBmaWxlICVzIGJlY29tZXMgZW1wdHkgYnV0IGlzIG5vdCBkZWxldGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODY5CisjOiBidWlsdGluL2FwcGx5LmM6MTg3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IGJpbmFyeSBwYXRjaCBhdCBsaW5lICVkOiAlLipzIgogbXNnc3RyICIiCiAKICMuIHRoZXJlIGhhcyB0byBiZSBvbmUgaHVuayAoZm9yd2FyZCBodW5rKQotIzogYnVpbHRpbi9hcHBseS5jOjE4OTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxOTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTk4NAorIzogYnVpbHRpbi9hcHBseS5jOjE5ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggd2l0aCBvbmx5IGdhcmJhZ2UgYXQgbGluZSAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA3NAorIzogYnVpbHRpbi9hcHBseS5jOjIwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgc3ltbGluayAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA3OAorIzogYnVpbHRpbi9hcHBseS5jOjIwODAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG9wZW4gb3IgcmVhZCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjE0OQotbXNnaWQgIm9vcHMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9hcHBseS5jOjI2NzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyNjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc3RhcnQgb2YgbGluZTogJyVjJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mjc4OQorIzogYnVpbHRpbi9hcHBseS5jOjI4MDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZSkuIgogbXNnaWRfcGx1cmFsICJIdW5rICMlZCBzdWNjZWVkZWQgYXQgJWQgKG9mZnNldCAlZCBsaW5lcykuIgogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI4MDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbnRleHQgcmVkdWNlZCB0byAoJWxkLyVsZCkgdG8gYXBwbHkgZnJhZ21lbnQgYXQgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI4MDcKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJ3aGlsZSBzZWFyY2hpbmcgZm9yOlxuIgogIiUuKnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI4MjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1pc3NpbmcgYmluYXJ5IHBhdGNoIGRhdGEgZm9yICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJpbmFyeSBwYXRjaCBkb2VzIG5vdCBhcHBseSB0byAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyOTM1CisjOiBidWlsdGluL2FwcGx5LmM6Mjk1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJiaW5hcnkgcGF0Y2ggdG8gJyVzJyBjcmVhdGVzIGluY29ycmVjdCByZXN1bHQgKGV4cGVjdGluZyAlcywgZ290ICVzKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mjk1NgorIzogYnVpbHRpbi9hcHBseS5jOjI5NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZmFpbGVkOiAlczolbGQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwNzgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMDk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjaGVja291dCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzEyMyBidWlsdGluL2FwcGx5LmM6MzEzMiBidWlsdGluL2FwcGx5LmM6MzE3NgorIzogYnVpbHRpbi9hcHBseS5jOjMxNDAgYnVpbHRpbi9hcHBseS5jOjMxNDkgYnVpbHRpbi9hcHBseS5jOjMxOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVhZCBvZiAlcyBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxNTYgYnVpbHRpbi9hcHBseS5jOjMzNzgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMTczIGJ1aWx0aW4vYXBwbHkuYzozMzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJXMgaGFzIGJlZW4gcmVuYW1lZC9kZWxldGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjM3IGJ1aWx0aW4vYXBwbHkuYzozMzkyCisjOiBidWlsdGluL2FwcGx5LmM6MzI1NCBidWlsdGluL2FwcGx5LmM6MzQwOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNDEgYnVpbHRpbi9hcHBseS5jOjMzODQgYnVpbHRpbi9hcHBseS5jOjM0MDYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU4IGJ1aWx0aW4vYXBwbHkuYzozNDAxIGJ1aWx0aW4vYXBwbHkuYzozNDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI0NiBidWlsdGluL2FwcGx5LmM6MzQwMAorIzogYnVpbHRpbi9hcHBseS5jOjMyNjMgYnVpbHRpbi9hcHBseS5jOjM0MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IG1hdGNoIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMzQ4CisjOiBidWlsdGluL2FwcGx5LmM6MzM2NQogbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0MTcKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3cm9uZyB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNDE5CisjOiBidWlsdGluL2FwcGx5LmM6MzQzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBoYXMgdHlwZSAlbywgZXhwZWN0ZWQgJW8iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyMworIzogYnVpbHRpbi9hcHBseS5jOjM1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQzCisjOiBidWlsdGluL2FwcGx5LmM6MzU2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBtb2RlICglbykgb2YgJXMgZG9lcyBub3QgbWF0Y2ggb2xkIG1vZGUgKCVvKSBvZiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU1NgorIzogYnVpbHRpbi9hcHBseS5jOjM1NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTY5CisjOiBidWlsdGluL2FwcGx5LmM6MzU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyBwYXRjaCAlcy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzYyNCBidWlsdGluL2NoZWNrb3V0LmM6MjE1IGJ1aWx0aW4vcmVzZXQuYzoxNTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNjc5IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTYgYnVpbHRpbi9yZXNldC5jOjEyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWtlX2NhY2hlX2VudHJ5IGZhaWxlZCBmb3IgcGF0aCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzY3CisjOiBidWlsdGluL2FwcGx5LmM6MzgyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVtb3ZlICVzIGZyb20gaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3OTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgcGF0Y2ggZm9yIHN1YnByb2plY3QgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3OTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODA0CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIGJhY2tpbmcgc3RvcmUgZm9yIG5ld2x5IGNyZWF0ZWQgZmlsZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzgwNyBidWlsdGluL2FwcGx5LmM6MzkxNQorIzogYnVpbHRpbi9hcHBseS5jOjM4NjIgYnVpbHRpbi9hcHBseS5jOjM5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFkZCBjYWNoZSBlbnRyeSBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NDAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNsb3NpbmcgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODg5CisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGxpZWQgcGF0Y2ggJXMgY2xlYW5seS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDM5CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgIiIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjM5ODcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTk3CisjOiBidWlsdGluL2FwcGx5LmM6NDA1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cnVuY2F0aW5nIC5yZWogZmlsZW5hbWUgdG8gJS4qcy5yZWoiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlamVjdGVkIGh1bmsgIyVkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDE3MQorIzogYnVpbHRpbi9hcHBseS5jOjQyMjYKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaW5wdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQxODIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjM3CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwMSBidWlsdGluL2FwcGx5LmM6NDMwNCBidWlsdGluL2Nsb25lLmM6OTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2IGJ1aWx0aW4vYXBwbHkuYzo0MzU5IGJ1aWx0aW4vY2xvbmUuYzo5MgogIzogYnVpbHRpbi9mZXRjaC5jOjYzCiBtc2dpZCAicGF0aCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwMgorIzogYnVpbHRpbi9hcHBseS5jOjQzNTcKIG1zZ2lkICJkb24ndCBhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA1CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MAogbXNnaWQgImFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMDcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCiBtc2dpZCAibnVtIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA4CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MwogbXNnaWQgInJlbW92ZSA8bnVtPiBsZWFkaW5nIHNsYXNoZXMgZnJvbSB0cmFkaXRpb25hbCBkaWZmIHBhdGhzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzExCisjOiBidWlsdGluL2FwcGx5LmM6NDM2NgogbXNnaWQgImlnbm9yZSBhZGRpdGlvbnMgbWFkZSBieSB0aGUgcGF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY4CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBkaWZmc3RhdCBmb3IgdGhlIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzE3CisjOiBidWlsdGluL2FwcGx5LmM6NDM3MgogbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc0CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyMQorIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzIzCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNQorIzogYnVpbHRpbi9hcHBseS5jOjQzODAKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNworIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyOQorIzogYnVpbHRpbi9hcHBseS5jOjQzODQKIG1zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzMxCisjOiBidWlsdGluL2FwcGx5LmM6NDM4NgogbXNnaWQgImJ1aWxkIGEgdGVtcG9yYXJ5IGluZGV4IGJhc2VkIG9uIGVtYmVkZGVkIGluZGV4IGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzMzIGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTcgYnVpbHRpbi9scy1maWxlcy5jOjQ2MAorIzogYnVpbHRpbi9hcHBseS5jOjQzODggYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NyBidWlsdGluL2xzLWZpbGVzLmM6NDU2CiBtc2dpZCAicGF0aHMgYXJlIHNlcGFyYXRlZCB3aXRoIE5VTCBjaGFyYWN0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkxCiBtc2dpZCAiZW5zdXJlIGF0IGxlYXN0IDxuPiBsaW5lcyBvZiBjb250ZXh0IG1hdGNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM3CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MgogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMzOAorIzogYnVpbHRpbi9hcHBseS5jOjQzOTMKIG1zZ2lkICJkZXRlY3QgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIHRoYXQgaGF2ZSB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM0MSBidWlsdGluL2FwcGx5LmM6NDM0NAorIzogYnVpbHRpbi9hcHBseS5jOjQzOTYgYnVpbHRpbi9hcHBseS5jOjQzOTkKIG1zZ2lkICJpZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIHdoZW4gZmluZGluZyBjb250ZXh0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ3CisjOiBidWlsdGluL2FwcGx5LmM6NDQwMgogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ5CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNAogbXNnaWQgImRvbid0IGV4cGVjdCBhdCBsZWFzdCBvbmUgbGluZSBvZiBjb250ZXh0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzUxCisjOiBidWlsdGluL2FwcGx5LmM6NDQwNgogbXNnaWQgImxlYXZlIHRoZSByZWplY3RlZCBodW5rcyBpbiBjb3JyZXNwb25kaW5nICoucmVqIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzUzCisjOiBidWlsdGluL2FwcGx5LmM6NDQwOAogbXNnaWQgImFsbG93IG92ZXJsYXBwaW5nIGh1bmtzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2CisjOiBidWlsdGluL2FwcGx5LmM6NDQxMQogbXNnaWQgInRvbGVyYXRlIGluY29ycmVjdGx5IGRldGVjdGVkIG1pc3NpbmcgbmV3LWxpbmUgYXQgdGhlIGVuZCBvZiBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU5CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNAogbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM2MQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTYKIG1zZ2lkICJyb290IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCisjOiBidWlsdGluL2FwcGx5LmM6NDQxNwogbXNnaWQgInByZXBlbmQgPHJvb3Q+IHRvIGFsbCBmaWxlbmFtZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDM5CiBtc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCisjOiBidWlsdGluL2FwcGx5LmM6NDQ0NwogbXNnaWQgIi0taW5kZXggb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzOTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDUwCiBtc2dpZCAiLS1jYWNoZWQgb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gcGF0Y2ggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQyNQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDMxIGJ1aWx0aW4vYXBwbHkuYzo0NDQxCisjOiBidWlsdGluL2FwcGx5LmM6NDQ4NiBidWlsdGluL2FwcGx5LmM6NDQ5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBsaW5lIGFkZHMgd2hpdGVzcGFjZSBlcnJvcnMuIgogbXNnaWRfcGx1cmFsICIlZCBsaW5lcyBhZGQgd2hpdGVzcGFjZSBlcnJvcnMuIgpAQCAtMTk3NCwyMSArMjIyMywyMSBAQAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBBQ0svTkFLLCBnb3QgRU9GIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYzCisjOiBidWlsdGluL2FyY2hpdmUuYzo2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogTkFDSyAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGVycm9yOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NgorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogcHJvdG9jb2wgZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NzEKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY4CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIGEgZmx1c2giCiBtc2dzdHIgIiIKIApAQCAtMjAwOCwzOTUgKzIyNTcsNDcyIEBACiBtc2dpZCAiZ2l0IGJsYW1lIFtvcHRpb25zXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MzAgYnVpbHRpbi9zaG9ydGxvZy5jOjE1CisjOiBidWlsdGluL2JsYW1lLmM6MzAKIG1zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNTUKIG1zZ2lkICJTaG93IGJsYW1lIGVudHJpZXMgYXMgd2UgZmluZCB0aGVtLCBpbmNyZW1lbnRhbGx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CisjOiBidWlsdGluL2JsYW1lLmM6MjM1NgogbXNnaWQgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzYKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU3CiBtc2dpZCAiRG8gbm90IHRyZWF0IHJvb3QgY29tbWl0cyBhcyBib3VuZGFyaWVzIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc3CisjOiBidWlsdGluL2JsYW1lLmM6MjM1OAogbXNnaWQgIlNob3cgd29yayBjb3N0IHN0YXRpc3RpY3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU5CiBtc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODAKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYxCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBsaW5lbnVtYmVyIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgxCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgogbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYzCiBtc2dpZCAiU2hvdyBwb3JjZWxhaW4gZm9ybWF0IHdpdGggcGVyLWxpbmUgY29tbWl0IGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgzCisjOiBidWlsdGluL2JsYW1lLmM6MjM2NAogbXNnaWQgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY1CiBtc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg1CisjOiBidWlsdGluL2JsYW1lLmM6MjM2NgogbXNnaWQgIlNob3cgbG9uZyBjb21taXQgU0hBMSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4NgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjcKIG1zZ2lkICJTdXBwcmVzcyBhdXRob3IgbmFtZSBhbmQgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg3CisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAogbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4OAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjkKIG1zZ2lkICJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4OQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzAKIG1zZ2lkICJTcGVuZCBleHRyYSBjeWNsZXMgdG8gZmluZCBiZXR0ZXIgbWF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTAKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCiBtc2dpZCAiVXNlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2l0LXJldi1saXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkxCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MgogbXNnaWQgIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTIgYnVpbHRpbi9ibGFtZS5jOjIzOTMKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczIGJ1aWx0aW4vYmxhbWUuYzoyMzc0CiBtc2dpZCAic2NvcmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczCiBtc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzQKIG1zZ2lkICJGaW5kIGxpbmUgbW92ZW1lbnRzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzk0CisjOiBidWlsdGluL2JsYW1lLmM6MjM3NQogbXNnaWQgIm4sbSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKIG1zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzCisjOiBidWlsdGluL2JyYW5jaC5jOjI0CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI0CisjOiBidWlsdGluL2JyYW5jaC5jOjI1CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNQorIzogYnVpbHRpbi9icmFuY2guYzoyNgogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI2CisjOiBidWlsdGluL2JyYW5jaC5jOjI3CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gKC1tIHwgLU0pIFs8b2xkYnJhbmNoPl0gPG5ld2JyYW5jaD4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNDUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGhhcyBiZWVuIG1lcmdlZCB0b1xuIgogIiAgICAgICAgICclcycsIGJ1dCBub3QgeWV0IG1lcmdlZCB0byBIRUFELiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE0OQorIzogYnVpbHRpbi9icmFuY2guYzoxNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm5vdCBkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGlzIG5vdCB5ZXQgbWVyZ2VkIHRvXG4iCiAiICAgICAgICAgJyVzJywgZXZlbiB0aG91Z2ggaXQgaXMgbWVyZ2VkIHRvIEhFQUQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTYzCisjOiBidWlsdGluL2JyYW5jaC5jOjE2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNjcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgYnJhbmNoICclcycgaXMgbm90IGZ1bGx5IG1lcmdlZC5cbiIKICJJZiB5b3UgYXJlIHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGl0LCBydW4gJ2dpdCBicmFuY2ggLUQgJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE4MAorIzogYnVpbHRpbi9icmFuY2guYzoxODUKIG1zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjA4CisjOiBidWlsdGluL2JyYW5jaC5jOjIxMwogbXNnaWQgImNhbm5vdCB1c2UgLWEgd2l0aCAtZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIxNAorIzogYnVpbHRpbi9icmFuY2guYzoyMTkKIG1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yIEhFQUQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMjIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkZWxldGUgdGhlIGJyYW5jaCAnJXMnIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG9uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzNQorIzogYnVpbHRpbi9icmFuY2guYzoyNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNTAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIGRlbGV0aW5nIHJlbW90ZSBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI1MQorIzogYnVpbHRpbi9icmFuY2guYzoyNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgYnJhbmNoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgcmVtb3RlIGJyYW5jaCAlcyAod2FzICVzKS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI1OQorIzogYnVpbHRpbi9icmFuY2guYzoyNjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCBicmFuY2ggJXMgKHdhcyAlcykuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzozNjEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IHBvaW50IGF0IGEgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDMzCisjOiBidWlsdGluL2JyYW5jaC5jOjQ1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGJlaGluZCAlZF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MzUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIltiZWhpbmQgJWRdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDM5CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGFoZWFkICVkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQ0MQorIzogYnVpbHRpbi9icmFuY2guYzo0NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQ0NAorIzogYnVpbHRpbi9icmFuY2guYzo0NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQ0NworIzogYnVpbHRpbi9icmFuY2guYzo0NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkLCBiZWhpbmQgJWRdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NTYwCisjOiBidWlsdGluL2JyYW5jaC5jOjQ5MAorbXNnaWQgIiAqKioqIGludmFsaWQgcmVmICoqKioiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgcmViYXNpbmcgJXMpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg1CisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIGJpc2VjdCBzdGFydGVkIG9uICVzKSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4OAorIywgYy1mb3JtYXQKK21zZ2lkICIoZGV0YWNoZWQgZnJvbSAlcykiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1OTEKIG1zZ2lkICIobm8gYnJhbmNoKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYyNQorIzogYnVpbHRpbi9icmFuY2guYzo2MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo2NjkKIG1zZ2lkICJzb21lIHJlZnMgY291bGQgbm90IGJlIHJlYWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MzgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjgyCiBtc2dpZCAiY2Fubm90IHJlbmFtZSB0aGUgY3VycmVudCBicmFuY2ggd2hpbGUgbm90IG9uIGFueS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NDgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgYnJhbmNoIG5hbWU6ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzA3CiBtc2dpZCAiQnJhbmNoIHJlbmFtZSBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzExCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbmFtZWQgYSBtaXNuYW1lZCBicmFuY2ggJyVzJyBhd2F5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjcxCisjOiBidWlsdGluL2JyYW5jaC5jOjcxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJCcmFuY2ggcmVuYW1lZCB0byAlcywgYnV0IEhFQUQgaXMgbm90IHVwZGF0ZWQhIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Njc4CisjOiBidWlsdGluL2JyYW5jaC5jOjcyMgogbXNnaWQgIkJyYW5jaCBpcyByZW5hbWVkLCBidXQgdXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY5MworIzogYnVpbHRpbi9icmFuY2guYzo3MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzE3CisjOiBidWlsdGluL2JyYW5jaC5jOjc2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgYnJhbmNoIGRlc2NyaXB0aW9uIHRlbXBsYXRlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc0NworIzogYnVpbHRpbi9icmFuY2guYzo3OTEKIG1zZ2lkICJHZW5lcmljIG9wdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NDkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzkzCiBtc2dpZCAic2hvdyBoYXNoIGFuZCBzdWJqZWN0LCBnaXZlIHR3aWNlIGZvciB1cHN0cmVhbSBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk0CiBtc2dpZCAic3VwcHJlc3MgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1MQorIzogYnVpbHRpbi9icmFuY2guYzo3OTUKIG1zZ2lkICJzZXQgdXAgdHJhY2tpbmcgbW9kZSAoc2VlIGdpdC1wdWxsKDEpKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1MworIzogYnVpbHRpbi9icmFuY2guYzo3OTcKIG1zZ2lkICJjaGFuZ2UgdXBzdHJlYW0gaW5mbyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1NworIzogYnVpbHRpbi9icmFuY2guYzo4MDEKIG1zZ2lkICJ1c2UgY29sb3JlZCBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCiBtc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc2MSBidWlsdGluL2JyYW5jaC5jOjc2NyBidWlsdGluL2JyYW5jaC5jOjc4OAotIzogYnVpbHRpbi9icmFuY2guYzo3OTQgYnVpbHRpbi9jb21taXQuYzoxMzc2IGJ1aWx0aW4vY29tbWl0LmM6MTM3NwotIzogYnVpbHRpbi9jb21taXQuYzoxMzc4IGJ1aWx0aW4vY29tbWl0LmM6MTM3OSBidWlsdGluL3RhZy5jOjQ3MAorIzogYnVpbHRpbi9icmFuY2guYzo4MDUgYnVpbHRpbi9icmFuY2guYzo4MTEgYnVpbHRpbi9icmFuY2guYzo4MzIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4IGJ1aWx0aW4vY29tbWl0LmM6MTM2OCBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MCBidWlsdGluL2NvbW1pdC5jOjEzNzEgYnVpbHRpbi90YWcuYzo0NjgKIG1zZ2lkICJjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NjIgYnVpbHRpbi9icmFuY2guYzo3NjgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA2IGJ1aWx0aW4vYnJhbmNoLmM6ODEyCiBtc2dpZCAicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3NAorIzogYnVpbHRpbi9icmFuY2guYzo4MTgKIG1zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzc1CisjOiBidWlsdGluL2JyYW5jaC5jOjgxOQogbXNnaWQgImxpc3QgYm90aCByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzc3CisjOiBidWlsdGluL2JyYW5jaC5jOjgyMQogbXNnaWQgImRlbGV0ZSBmdWxseSBtZXJnZWQgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzc4CisjOiBidWlsdGluL2JyYW5jaC5jOjgyMgogbXNnaWQgImRlbGV0ZSBicmFuY2ggKGV2ZW4gaWYgbm90IG1lcmdlZCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NzkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIzCiBtc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2ggYW5kIGl0cyByZWZsb2ciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI0CiBtc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MQorIzogYnVpbHRpbi9icmFuY2guYzo4MjUKIG1zZ2lkICJsaXN0IGJyYW5jaCBuYW1lcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MgorIzogYnVpbHRpbi9icmFuY2guYzo4MjYKIG1zZ2lkICJjcmVhdGUgdGhlIGJyYW5jaCdzIHJlZmxvZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4NAorIzogYnVpbHRpbi9icmFuY2guYzo4MjgKIG1zZ2lkICJlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4NQorIzogYnVpbHRpbi9icmFuY2guYzo4MjkKIG1zZ2lkICJmb3JjZSBjcmVhdGlvbiAod2hlbiBhbHJlYWR5IGV4aXN0cykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODMyCiBtc2dpZCAicHJpbnQgb25seSBub3QgbWVyZ2VkIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk0CisjOiBidWlsdGluL2JyYW5jaC5jOjgzOAogbXNnaWQgInByaW50IG9ubHkgbWVyZ2VkIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk4CisjOiBidWlsdGluL2JyYW5jaC5jOjg0MgogbXNnaWQgImxpc3QgYnJhbmNoZXMgaW4gY29sdW1ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjgxMQorIzogYnVpbHRpbi9icmFuY2guYzo4NTUKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSBIRUFEIGFzIGEgdmFsaWQgcmVmLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjgxNiBidWlsdGluL2Nsb25lLmM6NTYxCisjOiBidWlsdGluL2JyYW5jaC5jOjg2MCBidWlsdGluL2Nsb25lLmM6NjE5CiBtc2dpZCAiSEVBRCBub3QgZm91bmQgYmVsb3cgcmVmcy9oZWFkcyEiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODgzCiBtc2dpZCAiLS1jb2x1bW4gYW5kIC0tdmVyYm9zZSBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODg3CisjOiBidWlsdGluL2JyYW5jaC5jOjg4OSBidWlsdGluL2JyYW5jaC5jOjkyOAorbXNnaWQgImJyYW5jaCBuYW1lIHJlcXVpcmVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA0Cittc2dpZCAiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkwOQorbXNnaWQgImNhbm5vdCBlZGl0IGRlc2NyaXB0aW9uIG9mIG1vcmUgdGhhbiBvbmUgYnJhbmNoIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIGNvbW1pdCBvbiBicmFuY2ggJyVzJyB5ZXQuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vIGJyYW5jaCBuYW1lZCAnJXMnLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzNAorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIGZvciBhIHJlbmFtZSBvcGVyYXRpb24iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MzkKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byBzZXQgbmV3IHVwc3RyZWFtIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTQzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJjb3VsZCBub3Qgc2V0IHVwc3RyZWFtIG9mIEhFQUQgdG8gJXMgd2hlbiBpdCBkb2VzIG5vdCBwb2ludCB0byBhbnkgYnJhbmNoLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk0NiBidWlsdGluL2JyYW5jaC5jOjk2OCBidWlsdGluL2JyYW5jaC5jOjk5MAorIywgYy1mb3JtYXQKK21zZ2lkICJubyBzdWNoIGJyYW5jaCAnJXMnIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODk5CisjOiBidWlsdGluL2JyYW5jaC5jOjk2MgorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHVuc2V0IHVwc3RyZWFtIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTY2Cittc2dpZCAiY291bGQgbm90IHVuc2V0IHVwc3RyZWFtIG9mIEhFQUQgd2hlbiBpdCBkb2VzIG5vdCBwb2ludCB0byBhbnkgYnJhbmNoLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJCcmFuY2ggJyVzJyBoYXMgbm8gdXBzdHJlYW0gaW5mb3JtYXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MTQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTg3Cittc2dpZCAiaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBjcmVhdGUgJ0hFQUQnIG1hbnVhbGx5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTkzCiBtc2dpZCAiLWEgYW5kIC1yIG9wdGlvbnMgdG8gJ2dpdCBicmFuY2gnIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGggYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkxNworIzogYnVpbHRpbi9icmFuY2guYzo5OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtLXNldC11cHN0cmVhbSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gQ29uc2lkZXIgdXNpbmcgLS0iCiAidHJhY2sgb3IgLS1zZXQtdXBzdHJlYW0tdG9cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkzNAorIzogYnVpbHRpbi9icmFuY2guYzoxMDEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTI0MDQsMTIgKzI3MzAsMTIgQEAKICJcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkzNQorIzogYnVpbHRpbi9icmFuY2guYzoxMDE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICBnaXQgYnJhbmNoIC1kICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgogbXNnc3RyICIiCkBAIC0yNDI3LDQzICsyNzUzLDQzIEBACiBtc2dpZCAiTmVlZCBhIHJlcG9zaXRvcnkgdG8gdW5idW5kbGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNDcKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzYKIG1zZ2lkICJnaXQgY2F0LWZpbGUgKC10fC1zfC1lfC1wfDx0eXBlPnwtLXRleHRjb252KSA8b2JqZWN0PiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjQ4CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc3CiBtc2dpZCAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGxpc3Rfb2Zfb2JqZWN0cz4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI2NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NQogbXNnaWQgIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk2CiBtc2dpZCAic2hvdyBvYmplY3QgdHlwZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY4CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk3CiBtc2dpZCAic2hvdyBvYmplY3Qgc2l6ZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjcwCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk5CiBtc2dpZCAiZXhpdCB3aXRoIHplcm8gd2hlbiB0aGVyZSdzIG5vIGVycm9yIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzEKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDAKIG1zZ2lkICJwcmV0dHktcHJpbnQgb2JqZWN0J3MgY29udGVudCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjczCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjAyCiBtc2dpZCAiZm9yIGJsb2Igb2JqZWN0cywgcnVuIHRleHRjb252IG9uIG9iamVjdCdzIGNvbnRlbnQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3NQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwNAogbXNnaWQgInNob3cgaW5mbyBhbmQgY29udGVudCBvZiBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6Mjc4CisjOiBidWlsdGluL2NhdC1maWxlLmM6MjA3CiBtc2dpZCAic2hvdyBpbmZvIGFib3V0IG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICIiCiAKQEAgLTI0ODMsMTQgKzI4MDksMzggQEAKIG1zZ2lkICJ1c2UgLmdpdGF0dHJpYnV0ZXMgb25seSBmcm9tIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzUKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1CiBtc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjMKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIzIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjQKIG1zZ2lkICJpbnB1dCBwYXRocyBhcmUgdGVybWluYXRlZCBieSBhIG51bGwgY2hhcmFjdGVyIgogbXNnc3RyICIiCiAKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTggYnVpbHRpbi9jaGVja291dC5jOjEwNDQgYnVpbHRpbi9nYy5jOjE3NworbXNnaWQgInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0NgorbXNnaWQgImNhbm5vdCBzcGVjaWZ5IHBhdGhuYW1lcyB3aXRoIC0tc3RkaW4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDkKK21zZ2lkICIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1MQorbXNnaWQgIm5vIHBhdGggc3BlY2lmaWVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU1Cittc2dpZCAiLS1xdWlldCBpcyBvbmx5IHZhbGlkIHdpdGggYSBzaW5nbGUgcGF0aG5hbWUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTcKK21zZ2lkICJjYW5ub3QgaGF2ZSBib3RoIC0tcXVpZXQgYW5kIC0tdmVyYm9zZSIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2CiBtc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgogbXNnc3RyICIiCkBAIC0yNTQzLDEwNiArMjg5MywxMDYgQEAKIG1zZ2lkICJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIFs8YnJhbmNoPl0gLS0gPGZpbGU+Li4uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYgYnVpbHRpbi9jaGVja291dC5jOjE0OQorIzogYnVpbHRpbi9jaGVja291dC5jOjExNyBidWlsdGluL2NoZWNrb3V0LmM6MTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIG91ciB2ZXJzaW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTggYnVpbHRpbi9jaGVja291dC5jOjE1MQorIzogYnVpbHRpbi9jaGVja291dC5jOjExOSBidWlsdGluL2NoZWNrb3V0LmM6MTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIHRoZWlyIHZlcnNpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEzNAorIzogYnVpbHRpbi9jaGVja291dC5jOjEzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBhbGwgbmVjZXNzYXJ5IHZlcnNpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNzkKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgbmVjZXNzYXJ5IHZlcnNpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnOiBjYW5ub3QgbWVyZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjIxMgorIzogYnVpbHRpbi9jaGVja291dC5jOjIxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gYWRkIG1lcmdlIHJlc3VsdCBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjM2IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzkgYnVpbHRpbi9jaGVja291dC5jOjI0MgotIzogYnVpbHRpbi9jaGVja291dC5jOjI0NQorIzogYnVpbHRpbi9jaGVja291dC5jOjIzNyBidWlsdGluL2NoZWNrb3V0LmM6MjQwIGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHVwZGF0aW5nIHBhdGhzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDggYnVpbHRpbi9jaGVja291dC5jOjI1MQorIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjU0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo0MjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjYgYnVpbHRpbi9jaGVja291dC5jOjQ1OAogbXNnaWQgImNvcnJ1cHQgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6Mjk1IGJ1aWx0aW4vY2hlY2tvdXQuYzozMDIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMjkgYnVpbHRpbi9jaGVja291dC5jOjMzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgaXMgdW5tZXJnZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjQ0OAorIzogYnVpbHRpbi9jaGVja291dC5jOjQ4MAogbXNnaWQgInlvdSBuZWVkIHRvIHJlc29sdmUgeW91ciBjdXJyZW50IGluZGV4IGZpcnN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyByZWZsb2cgZm9yICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjAyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjM0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYwOQorIzogYnVpbHRpbi9jaGVja291dC5jOjY0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWxyZWFkeSBvbiAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYxNgorIzogYnVpbHRpbi9jaGVja291dC5jOjY0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhbmQgcmVzZXQgYnJhbmNoICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjE4IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTAgYnVpbHRpbi9jaGVja291dC5jOjk4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MjAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYnJhbmNoICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6Njc2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAuLi4gYW5kICVkIG1vcmUuXG4iCiBtc2dzdHIgIiIKIAogIy4gVGhlIHNpbmd1bGFyIHZlcnNpb24KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2ODIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldhcm5pbmc6IHlvdSBhcmUgbGVhdmluZyAlZCBjb21taXQgYmVoaW5kLCBub3QgY29ubmVjdGVkIHRvXG4iCkBAIC0yNjU3LDcgKzMwMDcsNyBAQAogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcwMAorIzogYnVpbHRpbi9jaGVja291dC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGJ5IGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhpcyBtYXkgYmUgYSBnb29kIHRpbWVcbiIKQEAgLTI2NjcsNDMxICszMDE3LDQ1MCBAQAogIlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjIKIG1zZ2lkICJpbnRlcm5hbCBlcnJvciBpbiByZXZpc2lvbiB3YWxrIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjYKIG1zZ2lkICJQcmV2aW91cyBIRUFEIHBvc2l0aW9uIHdhcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzYxIGJ1aWx0aW4vY2hlY2tvdXQuYzo5NTAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3OTMgYnVpbHRpbi9jaGVja291dC5jOjk4MgogbXNnaWQgIllvdSBhcmUgb24gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgIiIKIAogIy4gY2FzZSAoMSkKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo4ODYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWZlcmVuY2U6ICVzIgogbXNnc3RyICIiCiAKICMuIGNhc2UgKDEpOiB3YW50IGEgdHJlZQotIzogYnVpbHRpbi9jaGVja291dC5jOjkyNQorIzogYnVpbHRpbi9jaGVja291dC5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgaXMgbm90IGEgdHJlZTogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk2NAorIzogYnVpbHRpbi9jaGVja291dC5jOjk5NgogbXNnaWQgInBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NjcgYnVpbHRpbi9jaGVja291dC5jOjk3MQorIzogYnVpbHRpbi9jaGVja291dC5jOjk5OSBidWlsdGluL2NoZWNrb3V0LmM6MTAwMwogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzUgYnVpbHRpbi9jaGVja291dC5jOjk3OCBidWlsdGluL2NoZWNrb3V0LmM6OTgzCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTg2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNyBidWlsdGluL2NoZWNrb3V0LmM6MTAxMCBidWlsdGluL2NoZWNrb3V0LmM6MTAxNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk5MQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTIgYnVpbHRpbi9nYy5jOjE3NwotbXNnaWQgInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxMyBidWlsdGluL2NoZWNrb3V0LmM6MTAxNSBidWlsdGluL2Nsb25lLmM6ODkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNjkgYnVpbHRpbi9yZW1vdGUuYzoxNzEKIG1zZ2lkICJicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ2CiBtc2dpZCAiY3JlYXRlIGFuZCBjaGVja291dCBhIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ4CiBtc2dpZCAiY3JlYXRlL3Jlc2V0IGFuZCBjaGVja291dCBhIGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKIG1zZ2lkICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MAogbXNnaWQgImRldGFjaCB0aGUgSEVBRCBhdCBuYW1lZCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUxCiBtc2dpZCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCiBtc2dpZCAibmV3IGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKIG1zZ2lkICJuZXcgdW5wYXJlbnRlZCBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0CiBtc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1NgogbXNnaWQgImNoZWNrb3V0IHRoZWlyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OAogbXNnaWQgImZvcmNlIGNoZWNrb3V0ICh0aHJvdyBhd2F5IGxvY2FsIG1vZGlmaWNhdGlvbnMpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQogbXNnaWQgInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI4IGJ1aWx0aW4vbWVyZ2UuYzoyMTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwIGJ1aWx0aW4vbWVyZ2UuYzoyMTcKIG1zZ2lkICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjkgYnVpbHRpbi9sb2cuYzoxMTE2IHBhcnNlLW9wdGlvbnMuaDoyNDEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1CiBtc2dpZCAic3R5bGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMzAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCiBtc2dpZCAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAzMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjcKIG1zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkxCiBtc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDc0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTEwOAogbXNnaWQgIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA4MQorIzogYnVpbHRpbi9jaGVja291dC5jOjExMTUKIG1zZ2lkICJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUwCiBtc2dpZCAiaW52YWxpZCBwYXRoIHNwZWNpZmljYXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMjMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS5cbiIKICJEaWQgeW91IGludGVuZCB0byBjaGVja291dCAnJXMnIHdoaWNoIGNhbiBub3QgYmUgcmVzb2x2ZWQgYXMgY29tbWl0PyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTEyOAorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTMyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTkKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyMAogbXNnaWQgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjUxCisjOiBidWlsdGluL2NsZWFuLmM6MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNraXBwaW5nIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgc2tpcCByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byByZW1vdmUgJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjE2MAogbXNnaWQgImRvIG5vdCBwcmludCBuYW1lcyBvZiBmaWxlcyByZW1vdmVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo1MworIzogYnVpbHRpbi9jbGVhbi5jOjE2MgogbXNnaWQgImZvcmNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo1NQorIzogYnVpbHRpbi9jbGVhbi5jOjE2NAogbXNnaWQgInJlbW92ZSB3aG9sZSBkaXJlY3RvcmllcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTYgYnVpbHRpbi9kZXNjcmliZS5jOjQxMyBidWlsdGluL2dyZXAuYzo3MTcKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTEgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCisjOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgogbXNnaWQgInBhdHRlcm4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU3CisjOiBidWlsdGluL2NsZWFuLmM6MTY2CiBtc2dpZCAiYWRkIDxwYXR0ZXJuPiB0byBpZ25vcmUgcnVsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU4CisjOiBidWlsdGluL2NsZWFuLmM6MTY3CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NjAKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjkKIG1zZ2lkICJyZW1vdmUgb25seSBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo3OAorIzogYnVpbHRpbi9jbGVhbi5jOjE4NwogbXNnaWQgIi14IGFuZCAtWCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTEKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gY2xlYW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjg1CisjOiBidWlsdGluL2NsZWFuLmM6MTk0CiBtc2dpZCAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgogImNsZWFuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTUgYnVpbHRpbi9jbGVhbi5jOjE3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTU5IGJ1aWx0aW4vY2xlYW4uYzoxNzkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTYyIGJ1aWx0aW4vY2xlYW4uYzoxODIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIHJlbW92ZSAlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTY2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIldvdWxkIG5vdCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTY4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIk5vdCByZW1vdmluZyAlc1xuIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vY2xvbmUuYzozNgorIzogYnVpbHRpbi9jbG9uZS5jOjM3CiBtc2dpZCAiZ2l0IGNsb25lIFtvcHRpb25zXSBbLS1dIDxyZXBvPiBbPGRpcj5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NCBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxMgotIzogYnVpbHRpbi9wdXNoLmM6Mzk5CisjOiBidWlsdGluL2Nsb25lLmM6NjUgYnVpbHRpbi9mZXRjaC5jOjgyIGJ1aWx0aW4vbWVyZ2UuYzoyMTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNgogbXNnaWQgImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NwogbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NyBidWlsdGluL2Nsb25lLmM6NjkgYnVpbHRpbi9pbml0LWRiLmM6NDg4CisjOiBidWlsdGluL2Nsb25lLmM6NjggYnVpbHRpbi9jbG9uZS5jOjcwIGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAogbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3MwogbXNnaWQgImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NAorIzogYnVpbHRpbi9jbG9uZS5jOjc1CiBtc2dpZCAidG8gY2xvbmUgZnJvbSBhIGxvY2FsIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2CisjOiBidWlsdGluL2Nsb25lLmM6NzcKIG1zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OQogbXNnaWQgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MCBidWlsdGluL2Nsb25lLmM6ODIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MSBidWlsdGluL2Nsb25lLmM6ODMKIG1zZ2lkICJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MyBidWlsdGluL2luaXQtZGIuYzo0ODUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NCBidWlsdGluL2luaXQtZGIuYzo0ODUKIG1zZ2lkICJ0ZW1wbGF0ZS1kaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg1IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgogbXNnaWQgImRpcmVjdG9yeSBmcm9tIHdoaWNoIHRlbXBsYXRlcyB3aWxsIGJlIHVzZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg2CisjOiBidWlsdGluL2Nsb25lLmM6ODcKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODcgYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAorIzogYnVpbHRpbi9jbG9uZS5jOjg4IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKIG1zZ2lkICJuYW1lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4OAorIzogYnVpbHRpbi9jbG9uZS5jOjg5CiBtc2dpZCAidXNlIDxuYW1lPiBpbnN0ZWFkIG9mICdvcmlnaW4nIHRvIHRyYWNrIHVwc3RyZWFtIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9jbG9uZS5jOjkxCiBtc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MwogbXNnaWQgInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkzIGJ1aWx0aW4vZmV0Y2guYzo4MyBidWlsdGluL2dyZXAuYzo2NjIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NCBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCiBtc2dpZCAiZGVwdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk0CisjOiBidWlsdGluL2Nsb25lLmM6OTUKIG1zZ2lkICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk2CisjOiBidWlsdGluL2Nsb25lLmM6OTcKIG1zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk3IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAorIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAogbXNnaWQgImdpdGRpciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTggYnVpbHRpbi9pbml0LWRiLmM6NDk1CisjOiBidWlsdGluL2Nsb25lLmM6OTkgYnVpbHRpbi9pbml0LWRiLmM6NDk1CiBtc2dpZCAic2VwYXJhdGUgZ2l0IGRpciBmcm9tIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKIG1zZ2lkICJrZXk9dmFsdWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjEwMAorIzogYnVpbHRpbi9jbG9uZS5jOjEwMQogbXNnaWQgInNldCBjb25maWcgaW5zaWRlIHRoZSBuZXcgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MjQzCisjOiBidWlsdGluL2Nsb25lLmM6MjU0CiAjLCBjLWZvcm1hdAotbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgZGlyZWN0b3J5LiIKK21zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDYKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA4IGJ1aWx0aW4vZGlmZi5jOjc3CisjOiBidWlsdGluL2Nsb25lLmM6MzE5IGJ1aWx0aW4vZGlmZi5jOjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxMAorIzogYnVpbHRpbi9jbG9uZS5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzI0CisjOiBidWlsdGluL2Nsb25lLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM0NgorIzogYnVpbHRpbi9jbG9uZS5jOjM1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIGxpbmsgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzUwCisjOiBidWlsdGluL2Nsb25lLmM6MzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjb3B5IGZpbGUgdG8gJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzczCisjOiBidWlsdGluL2Nsb25lLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjQ0MworIzogYnVpbHRpbi9jbG9uZS5jOjM5NworbXNnaWQgIiIKKyJDbG9uZSBzdWNjZWVkZWQsIGJ1dCBjaGVja291dCBmYWlsZWQuXG4iCisiWW91IGNhbiBpbnNwZWN0IHdoYXQgd2FzIGNoZWNrZWQgb3V0IHdpdGggJ2dpdCBzdGF0dXMnXG4iCisiYW5kIHJldHJ5IHRoZSBjaGVja291dCB3aXRoICdnaXQgY2hlY2tvdXQgLWYgSEVBRCdcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NTIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6NjEwCiBtc2dpZCAicmVtb3RlIEhFQUQgcmVmZXJzIHRvIG5vbmV4aXN0ZW50IHJlZiwgdW5hYmxlIHRvIGNoZWNrb3V0LlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDEKK21zZ2lkICJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NDkKIG1zZ2lkICJUb28gbWFueSBhcmd1bWVudHMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NTMKIG1zZ2lkICJZb3UgbXVzdCBzcGVjaWZ5IGEgcmVwb3NpdG9yeSB0byBjbG9uZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwNQorIzogYnVpbHRpbi9jbG9uZS5jOjc2NAogIywgYy1mb3JtYXQKIG1zZ2lkICItLWJhcmUgYW5kIC0tb3JpZ2luICVzIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcxOQorIzogYnVpbHRpbi9jbG9uZS5jOjc2NworbXNnaWQgIi0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVwb3NpdG9yeSAnJXMnIGRvZXMgbm90IGV4aXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3ODUKIG1zZ2lkICItLWRlcHRoIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2UgZmlsZTovLyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzM0CisjOiBidWlsdGluL2Nsb25lLmM6Nzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGFuIGVtcHR5IGRpcmVjdG9yeS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc0NAorIzogYnVpbHRpbi9jbG9uZS5jOjgwNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ3b3JraW5nIHRyZWUgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc1NyBidWlsdGluL2Nsb25lLmM6NzcxCisjOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBsZWFkaW5nIGRpcmVjdG9yaWVzIG9mICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2MAorIzogYnVpbHRpbi9jbG9uZS5jOjgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc3OQorIzogYnVpbHRpbi9jbG9uZS5jOjg0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICclcycuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgxCisjOiBidWlsdGluL2Nsb25lLmM6ODQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byAnJXMnLi4uXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgyMworIzogYnVpbHRpbi9jbG9uZS5jOjg3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCBrbm93IGhvdyB0byBjbG9uZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODcyCisjOiBidWlsdGluL2Nsb25lLmM6OTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW90ZSBicmFuY2ggJXMgbm90IGZvdW5kIGluIHVwc3RyZWFtICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NzkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MzMKIG1zZ2lkICJZb3UgYXBwZWFyIHRvIGhhdmUgY2xvbmVkIGFuIGVtcHR5IHJlcG9zaXRvcnkuIgogbXNnc3RyICIiCiAKQEAgLTMxMjgsMTEgKzM0OTcsMTEgQEAKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbW1pdC5jOjM0Ci1tc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIgorbXNnaWQgImdpdCBjb21taXQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbW1pdC5jOjM5Ci1tc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIgorbXNnaWQgImdpdCBzdGF0dXMgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbW1pdC5jOjQ0CkBAIC0zMTY2LDkzICszNTM1LDkzIEBACiAiT3RoZXJ3aXNlLCBwbGVhc2UgdXNlICdnaXQgcmVzZXQnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoyNTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjYwCiBtc2dpZCAiZmFpbGVkIHRvIHVucGFjayBIRUFEIHRyZWUgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzAwCisjOiBidWlsdGluL2NvbW1pdC5jOjMwMgogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzA2CisjOiBidWlsdGluL2NvbW1pdC5jOjMwOAogbXNnaWQgImludGVyYWN0aXZlIGFkZCBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMzkgYnVpbHRpbi9jb21taXQuYzozNjAgYnVpbHRpbi9jb21taXQuYzo0MTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzQxIGJ1aWx0aW4vY29tbWl0LmM6MzYyIGJ1aWx0aW4vY29tbWl0LmM6NDEyCiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ld19pbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzkxCisjOiBidWlsdGluL2NvbW1pdC5jOjM5MwogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5MworIzogYnVpbHRpbi9jb21taXQuYzozOTUKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MDMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDA1CiBtc2dpZCAiY2Fubm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDIzCisjOiBidWlsdGluL2NvbW1pdC5jOjQyNQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjUxMSBidWlsdGluL2NvbW1pdC5jOjUxNworIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTQwCisjOiBidWlsdGluL2NvbW1pdC5jOjU0MgogbXNnaWQgIm1hbGZvcm1lZCAtLWF1dGhvciBwYXJhbWV0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpZGVudCBzdHJpbmc6ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1OTggYnVpbHRpbi9jb21taXQuYzo2MzEgYnVpbHRpbi9jb21taXQuYzo5NTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjAwIGJ1aWx0aW4vY29tbWl0LmM6NjMzIGJ1aWx0aW4vY29tbWl0LmM6OTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBsb29rdXAgY29tbWl0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjEwIGJ1aWx0aW4vc2hvcnRsb2cuYzoyOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiKHJlYWRpbmcgbG9nIG1lc3NhZ2UgZnJvbSBzdGFuZGFyZCBpbnB1dClcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxMgorIzogYnVpbHRpbi9jb21taXQuYzo2MTQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxNgorIzogYnVpbHRpbi9jb21taXQuYzo2MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYyMgorIzogYnVpbHRpbi9jb21taXQuYzo2MjQKIG1zZ2lkICJjb21taXQgaGFzIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQwCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQyCisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MDcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzA5CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGNvbW1pdCB0ZW1wbGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcxOAorIzogYnVpbHRpbi9jb21taXQuYzo3MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMzI2Miw3ICszNjMxLDcgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzIzCisjOiBidWlsdGluL2NvbW1pdC5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0zMjcyLDM2NCArMzY0MSwzNjYgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzM1CisjOiBidWlsdGluL2NvbW1pdC5jOjczNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCisid2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzQyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIExpbmVzIHN0YXJ0aW5nXG4iCi0id2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgorIndpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCiAiQW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc1MworIzogYnVpbHRpbi9jb21taXQuYzo3NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNBdXRob3I6ICAgICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzYwCisjOiBidWlsdGluL2NvbW1pdC5jOjc2MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0NvbW1pdHRlcjogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3ODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCiBtc2dpZCAiQ2Fubm90IHJlYWQgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4MTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6ODE5CiBtc2dpZCAiRXJyb3IgYnVpbGRpbmcgdHJlZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4MzIgYnVpbHRpbi90YWcuYzozNjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6ODM0IGJ1aWx0aW4vdGFnLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlBsZWFzZSBzdXBwbHkgdGhlIG1lc3NhZ2UgdXNpbmcgZWl0aGVyIC1tIG9yIC1GIG9wdGlvbi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjkyOQorIzogYnVpbHRpbi9jb21taXQuYzo5MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gZXhpc3RpbmcgYXV0aG9yIGZvdW5kIHdpdGggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk0NCBidWlsdGluL2NvbW1pdC5jOjExNDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHVudHJhY2tlZCBmaWxlcyBtb2RlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5ODQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTc2CiBtc2dpZCAiVXNpbmcgYm90aCAtLXJlc2V0LWF1dGhvciBhbmQgLS1hdXRob3IgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NQorIzogYnVpbHRpbi9jb21taXQuYzo5ODcKIG1zZ2lkICJZb3UgaGF2ZSBub3RoaW5nIHRvIGFtZW5kLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5OAorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwMAorIzogYnVpbHRpbi9jb21taXQuYzo5OTIKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGVycnktcGljayAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwMworIzogYnVpbHRpbi9jb21taXQuYzo5OTUKIG1zZ2lkICJPcHRpb25zIC0tc3F1YXNoIGFuZCAtLWZpeHVwIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMworIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CiBtc2dpZCAiT25seSBvbmUgb2YgLWMvLUMvLUYvLS1maXh1cCBjYW4gYmUgdXNlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKIG1zZ2lkICJPcHRpb24gLW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLWMvLUMvLUYvLS1maXh1cC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDIzCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMTUKIG1zZ2lkICItLXJlc2V0LWF1dGhvciBjYW4gYmUgdXNlZCBvbmx5IHdpdGggLUMsIC1jIG9yIC0tYW1lbmQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0MAorIzogYnVpbHRpbi9jb21taXQuYzoxMDMyCiBtc2dpZCAiT25seSBvbmUgb2YgLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggY2FuIGJlIHVzZWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0MgorIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CiBtc2dpZCAiTm8gcGF0aHMgd2l0aCAtLWluY2x1ZGUvLS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0NAorIzogYnVpbHRpbi9jb21taXQuYzoxMDM2CiBtc2dpZCAiQ2xldmVyLi4uIGFtZW5kaW5nIHRoZSBsYXN0IG9uZSB3aXRoIGRpcnR5IGluZGV4LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAogbXNnaWQgIkV4cGxpY2l0IHBhdGhzIHNwZWNpZmllZCB3aXRob3V0IC1pIG5vciAtbzsgYXNzdW1pbmcgLS1vbmx5IHBhdGhzLi4uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NiBidWlsdGluL3RhZy5jOjU3NworIzogYnVpbHRpbi9jb21taXQuYzoxMDQ4IGJ1aWx0aW4vdGFnLmM6NTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgY2xlYW51cCBtb2RlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA2MQorIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCiBtc2dpZCAiUGF0aHMgd2l0aCAtYSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNjcgYnVpbHRpbi9jb21taXQuYzoxMjAyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTkgYnVpbHRpbi9jb21taXQuYzoxMTk0CiBtc2dpZCAiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MiBidWlsdGluL2NvbW1pdC5jOjEzOTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NCBidWlsdGluL2NvbW1pdC5jOjEzOTAKIG1zZ2lkICJzaG93IHN0YXR1cyBjb25jaXNlbHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTQwMAorIzogYnVpbHRpbi9jb21taXQuYzoxMTU2IGJ1aWx0aW4vY29tbWl0LmM6MTM5MgogbXNnaWQgInNob3cgYnJhbmNoIGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NiBidWlsdGluL2NvbW1pdC5jOjE0MDIgYnVpbHRpbi9wdXNoLmM6Mzg5CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTggYnVpbHRpbi9jb21taXQuYzoxMzk0IGJ1aWx0aW4vcHVzaC5jOjQyNgogbXNnaWQgIm1hY2hpbmUtcmVhZGFibGUgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2OSBidWlsdGluL2NvbW1pdC5jOjE0MDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKIG1zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTcyIGJ1aWx0aW4vY29tbWl0LmM6MTQwNworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQogbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NCBidWlsdGluL2NvbW1pdC5jOjE0MTAgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzNgotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzOSBidWlsdGluL3RhZy5jOjQ2MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU5CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYyIGJ1aWx0aW4vdGFnLmM6NDU5CiBtc2dpZCAibW9kZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzUgYnVpbHRpbi9jb21taXQuYzoxNDEwCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjcgYnVpbHRpbi9jb21taXQuYzoxNDAyCiBtc2dpZCAic2hvdyB1bnRyYWNrZWQgZmlsZXMsIG9wdGlvbmFsIG1vZGVzOiBhbGwsIG5vcm1hbCwgbm8uIChEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3OAorIzogYnVpbHRpbi9jb21taXQuYzoxMTcwCiBtc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3OSBwYXJzZS1vcHRpb25zLmg6MTUxCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzEgcGFyc2Utb3B0aW9ucy5oOjE1MQogbXNnaWQgIndoZW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTgwCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzIKIG1zZ2lkICIiCiAiaWdub3JlIGNoYW5nZXMgdG8gc3VibW9kdWxlcywgb3B0aW9uYWwgd2hlbjogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCiAiKERlZmF1bHQ6IGFsbCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTgyCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzQKIG1zZ2lkICJsaXN0IHVudHJhY2tlZCBmaWxlcyBpbiBjb2x1bW5zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1NgorIzogYnVpbHRpbi9jb21taXQuYzoxMjQ4CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1MAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyOTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MQogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzAxCisjOiBidWlsdGluL2NvbW1pdC5jOjEyOTMKIG1zZ2lkICIgKHJvb3QtY29tbWl0KSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MAogbXNnaWQgInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjEKIG1zZ2lkICJzaG93IGRpZmYgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzcxCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjMKIG1zZ2lkICJDb21taXQgbWVzc2FnZSBvcHRpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MiBidWlsdGluL3RhZy5jOjQ1OQorIzogYnVpbHRpbi9jb21taXQuYzoxMzY0IGJ1aWx0aW4vdGFnLmM6NDU3CiBtc2dpZCAicmVhZCBtZXNzYWdlIGZyb20gZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQogbXNnaWQgImF1dGhvciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQogbXNnaWQgIm92ZXJyaWRlIGF1dGhvciBmb3IgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NCBidWlsdGluL2djLmM6MTc4CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYgYnVpbHRpbi9nYy5jOjE3OAogbXNnaWQgImRhdGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc0CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjYKIG1zZ2lkICJvdmVycmlkZSBkYXRlIGZvciBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1IGJ1aWx0aW4vbWVyZ2UuYzoyMDYgYnVpbHRpbi9ub3Rlcy5jOjUzNwotIzogYnVpbHRpbi9ub3Rlcy5jOjY5NCBidWlsdGluL3RhZy5jOjQ1NworIzogYnVpbHRpbi9jb21taXQuYzoxMzY3IGJ1aWx0aW4vbWVyZ2UuYzoyMDggYnVpbHRpbi9ub3Rlcy5jOjUzMworIzogYnVpbHRpbi9ub3Rlcy5jOjY5MCBidWlsdGluL3RhZy5jOjQ1NQogbXNnaWQgIm1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcKIG1zZ2lkICJjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAogbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NworIzogYnVpbHRpbi9jb21taXQuYzoxMzY5CiBtc2dpZCAicmV1c2UgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc4CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzAKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBmaXh1cCBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OQorIzogYnVpbHRpbi9jb21taXQuYzoxMzcxCiBtc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgwCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzIKIG1zZ2lkICJ0aGUgY29tbWl0IGlzIGF1dGhvcmVkIGJ5IG1lIG5vdyAodXNlZCB3aXRoIC1DLy1jLy0tYW1lbmQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MSBidWlsdGluL2xvZy5jOjEwNzMgYnVpbHRpbi9yZXZlcnQuYzoxMDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MyBidWlsdGluL2xvZy5jOjExMTMgYnVpbHRpbi9yZXZlcnQuYzoxMDkKIG1zZ2lkICJhZGQgU2lnbmVkLW9mZi1ieToiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgyCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzQKIG1zZ2lkICJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzUKIG1zZ2lkICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgogbXNnaWQgImRlZmF1bHQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg0IGJ1aWx0aW4vdGFnLmM6NDYyCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzYgYnVpbHRpbi90YWcuYzo0NjAKIG1zZ2lkICJob3cgdG8gc3RyaXAgc3BhY2VzIGFuZCAjY29tbWVudHMgZnJvbSBtZXNzYWdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQorIzogYnVpbHRpbi9jb21taXQuYzoxMzc3CiBtc2dpZCAiaW5jbHVkZSBzdGF0dXMgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg2IGJ1aWx0aW4vbWVyZ2UuYzoyMTMgYnVpbHRpbi90YWcuYzo0NjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCiBtc2dpZCAia2V5IGlkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NyBidWlsdGluL21lcmdlLmM6MjE0CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi9tZXJnZS5jOjIxNgogbXNnaWQgIkdQRyBzaWduIGNvbW1pdCIKIG1zZ3N0ciAiIgogCiAjLiBlbmQgY29tbWl0IG1lc3NhZ2Ugb3B0aW9ucwotIzogYnVpbHRpbi9jb21taXQuYzoxMzkwCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODIKIG1zZ2lkICJDb21taXQgY29udGVudHMgb3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MwogbXNnaWQgImNvbW1pdCBhbGwgY2hhbmdlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAogbXNnaWQgImFkZCBzcGVjaWZpZWQgZmlsZXMgdG8gaW5kZXggZm9yIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5NAorIzogYnVpbHRpbi9jb21taXQuYzoxMzg2CiBtc2dpZCAiaW50ZXJhY3RpdmVseSBhZGQgY2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NwogbXNnaWQgImNvbW1pdCBvbmx5IHNwZWNpZmllZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OAogbXNnaWQgImJ5cGFzcyBwcmUtY29tbWl0IGhvb2siCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk3CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODkKIG1zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOAorIzogYnVpbHRpbi9jb21taXQuYzoxNDAwCiBtc2dpZCAiYW1lbmQgcHJldmlvdXMgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOQorIzogYnVpbHRpbi9jb21taXQuYzoxNDAxCiBtc2dpZCAiYnlwYXNzIHBvc3QtcmV3cml0ZSBob29rIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNAorIzogYnVpbHRpbi9jb21taXQuYzoxNDA2CiBtc2dpZCAib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOQogbXNnaWQgIm9rIHRvIHJlY29yZCBhIGNoYW5nZSB3aXRoIGFuIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDQ5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDEKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgSEVBRCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDg3IGJ1aWx0aW4vbWVyZ2UuYzo1MDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ3OSBidWlsdGluL21lcmdlLmM6NTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcycgZm9yIHJlYWRpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDk0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29ycnVwdCBNRVJHRV9IRUFEIGZpbGUgKCVzKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MDEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5MwogbXNnaWQgImNvdWxkIG5vdCByZWFkIE1FUkdFX01PREUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTIwCisjOiBidWlsdGluL2NvbW1pdC5jOjE1MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgY29tbWl0IG1lc3NhZ2U6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzNAorIzogYnVpbHRpbi9jb21taXQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBYm9ydGluZyBjb21taXQgZHVlIHRvIGVtcHR5IGNvbW1pdCBtZXNzYWdlLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU1NCBidWlsdGluL21lcmdlLmM6ODMyIGJ1aWx0aW4vbWVyZ2UuYzo4NTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU0NiBidWlsdGluL21lcmdlLmM6ODQ3IGJ1aWx0aW4vbWVyZ2UuYzo4NzIKIG1zZ2lkICJmYWlsZWQgdG8gd3JpdGUgY29tbWl0IG9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU2NwogbXNnaWQgImNhbm5vdCBsb2NrIEhFQUQgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3OQorIzogYnVpbHRpbi9jb21taXQuYzoxNTcxCiBtc2dpZCAiY2Fubm90IHVwZGF0ZSBIRUFEIHJlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1OTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU4MgogbXNnaWQgIiIKICJSZXBvc2l0b3J5IGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB1bmFibGUgdG8gd3JpdGVcbiIKICJuZXdfaW5kZXggZmlsZS4gQ2hlY2sgdGhhdCBkaXNrIGlzIG5vdCBmdWxsIG9yIHF1b3RhIGlzXG4iCkBAIC0zNzUyLDggKzQxMjMsMTIgQEAKIG1zZ2lkICJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6NjkKLW1zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgorIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjk3Cittc2dpZCAicHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoxNQpAQCAtMzc2NCwxMjUgKzQxMzksMTI1IEBACiBtc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSAtLWRpcnR5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBoYXMgbm8gZW1iZWRkZWQgbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjQwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGlzIHJlYWxseSAnJXMnIGhlcmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG5vdCBhIHZhbGlkICclcycgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODgKICMsIGMtZm9ybWF0CiBtc2dpZCAic2VhcmNoaW5nIHRvIGRlc2NyaWJlICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzZWFyY2ggYXQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyBhbm5vdGF0ZWQgdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKICJIb3dldmVyLCB0aGVyZSB3ZXJlIHVuYW5ub3RhdGVkIHRhZ3M6IHRyeSAtLXRhZ3MuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCiAiVHJ5IC0tYWx3YXlzLCBvciBjcmVhdGUgc29tZSB0YWdzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc3CiAjLCBjLWZvcm1hdAogbXNnaWQgInRyYXZlcnNlZCAlbHUgY29tbWl0c1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKICJnYXZlIHVwIHNlYXJjaCBhdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDIKIG1zZ2lkICJmaW5kIHRoZSB0YWcgdGhhdCBjb21lcyBhZnRlciB0aGUgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKIG1zZ2lkICJkZWJ1ZyBzZWFyY2ggc3RyYXRlZ3kgb24gc3RkZXJyIgogbXNnc3RyICIiCiAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKK21zZ2lkICJ1c2UgYW55IHJlZiIKK21zZ3N0ciAiIgorCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA1Ci1tc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgorbXNnaWQgInVzZSBhbnkgdGFnLCBldmVuIHVuYW5ub3RhdGVkIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDYKLW1zZ2lkICJ1c2UgYW55IHRhZyBpbiAuZ2l0L3JlZnMvdGFncyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA3CiBtc2dpZCAiYWx3YXlzIHVzZSBsb25nIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5CiBtc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDExCiBtc2dpZCAiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE0CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCiBtc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAogbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2CiBtc2dpZCAibWFyayIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CiBtc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzUKIG1zZ2lkICItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYxCiBtc2dpZCAiTm8gbmFtZXMgZm91bmQsIGNhbm5vdCBkZXNjcmliZSBhbnl0aGluZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MQogbXNnaWQgIi0tZGlydHkgaXMgaW5jb21wYXRpYmxlIHdpdGggY29tbWl0dGlzaGVzIgogbXNnc3RyICIiCiAKQEAgLTM5MjQsMzkgKzQyOTksMzkgQEAKIG1zZ2lkICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2MzUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTgKIG1zZ2lkICJzaG93IHByb2dyZXNzIGFmdGVyIDxuPiBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2MzcKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjAKIG1zZ2lkICJzZWxlY3QgaGFuZGxpbmcgb2Ygc2lnbmVkIHRhZ3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MwogbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiB0YWdzIHRoYXQgdGFnIGZpbHRlcmVkIG9iamVjdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgogbXNnaWQgIkR1bXAgbWFya3MgdG8gdGhpcyBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKIG1zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0NworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MAogbXNnaWQgIkZha2UgYSB0YWdnZXIgd2hlbiB0YWdzIGxhY2sgb25lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKIG1zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjUxCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0CiBtc2dpZCAiVXNlIHRoZSBkb25lIGZlYXR1cmUgdG8gdGVybWluYXRlIHRoZSBzdHJlYW0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1MgorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NQogbXNnaWQgIlNraXAgb3V0cHV0IG9mIGJsb2IgZGF0YSIKIG1zZ3N0ciAiIgogCkBAIC00MDI4LDE2NiArNDQwMywxNzggQEAKIG1zZ2lkICJkZWVwZW4gaGlzdG9yeSBvZiBzaGFsbG93IGNsb25lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4NSBidWlsdGluL2xvZy5jOjEwODgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4NgorbXNnaWQgImNvbnZlcnQgdG8gYSBjb21wbGV0ZSByZXBvc2l0b3J5IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OCBidWlsdGluL2xvZy5jOjExMzAKIG1zZ2lkICJkaXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg2CisjOiBidWlsdGluL2ZldGNoLmM6ODkKIG1zZ2lkICJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OQorIzogYnVpbHRpbi9mZXRjaC5jOjkyCiBtc2dpZCAiZGVmYXVsdCBtb2RlIGZvciByZWN1cnNpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjIwMQorIzogYnVpbHRpbi9mZXRjaC5jOjIwNAogbXNnaWQgIkNvdWxkbid0IGZpbmQgcmVtb3RlIHJlZiBIRUFEIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTQKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0ICVzIG5vdCBmb3VuZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjU5CisjOiBidWlsdGluL2ZldGNoLmM6MjYyCiBtc2dpZCAiW3VwIHRvIGRhdGVdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiISAlLSpzICUtKnMgLT4gJXMgIChjYW4ndCBmZXRjaCBpbiBjdXJyZW50IGJyYW5jaCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3NCBidWlsdGluL2ZldGNoLmM6MzYwCisjOiBidWlsdGluL2ZldGNoLmM6Mjc3IGJ1aWx0aW4vZmV0Y2guYzozNjMKIG1zZ2lkICJbcmVqZWN0ZWRdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyODgKIG1zZ2lkICJbdGFnIHVwZGF0ZV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NyBidWlsdGluL2ZldGNoLmM6MzIyIGJ1aWx0aW4vZmV0Y2guYzozNDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCiBtc2dpZCAiICAodW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKIG1zZ2lkICJbbmV3IHRhZ10iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwOAorIzogYnVpbHRpbi9mZXRjaC5jOjMxMQogbXNnaWQgIltuZXcgYnJhbmNoXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzExCisjOiBidWlsdGluL2ZldGNoLmM6MzE0CiBtc2dpZCAiW25ldyByZWZdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTYKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICJ1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzYyCisjOiBidWlsdGluL2ZldGNoLmM6MzY1CiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozOTMgYnVpbHRpbi9mZXRjaC5jOjY4NQorIzogYnVpbHRpbi9mZXRjaC5jOjM5NiBidWlsdGluL2ZldGNoLmM6Njg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICVzOiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0MDIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo0MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0c1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0ODgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo0OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRnJvbSAlLipzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQ5OQorIzogYnVpbHRpbi9mZXRjaC5jOjUwMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAic29tZSBsb2NhbCByZWZzIGNvdWxkIG5vdCBiZSB1cGRhdGVkOyB0cnkgcnVubmluZ1xuIgogIiAnZ2l0IHJlbW90ZSBwcnVuZSAlcycgdG8gcmVtb3ZlIGFueSBvbGQsIGNvbmZsaWN0aW5nIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIHdpbGwgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTUwCisjOiBidWlsdGluL2ZldGNoLmM6NTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU3CisjOiBidWlsdGluL2ZldGNoLmM6NTYwCiBtc2dpZCAiW2RlbGV0ZWRdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTggYnVpbHRpbi9yZW1vdGUuYzoxMDU1CisjOiBidWlsdGluL2ZldGNoLmM6NTYxIGJ1aWx0aW4vcmVtb3RlLmM6MTA1NQogbXNnaWQgIihub25lKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Njc1CisjOiBidWlsdGluL2ZldGNoLmM6Njc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIGZldGNoIGludG8gY3VycmVudCBicmFuY2ggJXMgb2Ygbm9uLWJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NzA5CisjOiBidWlsdGluL2ZldGNoLmM6NzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGZldGNoIGZyb20gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4NgorIzogYnVpbHRpbi9mZXRjaC5jOjc4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIHZhbHVlIFwiJXNcIiBpcyBub3QgdmFsaWQgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3ODkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIFwiJXNcIiBpcyBpZ25vcmVkIGZvciAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODkzIGJ1aWx0aW4vcmVtb3RlLmM6MTAwCisjOiBidWlsdGluL2ZldGNoLmM6ODk2IGJ1aWx0aW4vcmVtb3RlLmM6MTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmZXRjaCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTEyCisjOiBidWlsdGluL2ZldGNoLmM6OTE1CiBtc2dpZCAiIgogIk5vIHJlbW90ZSByZXBvc2l0b3J5IHNwZWNpZmllZC4gIFBsZWFzZSwgc3BlY2lmeSBlaXRoZXIgYSBVUkwgb3IgYVxuIgogInJlbW90ZSBuYW1lIGZyb20gd2hpY2ggbmV3IHJldmlzaW9ucyBzaG91bGQgYmUgZmV0Y2hlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjkzMgorIzogYnVpbHRpbi9mZXRjaC5jOjkzNQogbXNnaWQgIllvdSBuZWVkIHRvIHNwZWNpZnkgYSB0YWcgbmFtZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk4NAorIzogYnVpbHRpbi9mZXRjaC5jOjk4MQorbXNnaWQgIi0tZGVwdGggYW5kIC0tdW5zaGFsbG93IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODMKK21zZ2lkICItLXVuc2hhbGxvdyBvbiBhIGNvbXBsZXRlIHJlcG9zaXRvcnkgZG9lcyBub3QgbWFrZSBzZW5zZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2ZldGNoLmM6MTAwMgogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IHRha2UgYSByZXBvc2l0b3J5IGFyZ3VtZW50IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODYKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA0CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5OTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggcmVtb3RlIG9yIHJlbW90ZSBncm91cDogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDIzCiBtc2dpZCAiRmV0Y2hpbmcgYSBncm91cCBhbmQgc3BlY2lmeWluZyByZWZzcGVjcyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICIiCiAKQEAgLTQxOTUsMjkgKzQ1ODIsMjkgQEAKIG1zZ2lkICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPG1lc3NhZ2U+XSBbLS1sb2dbPTxuPl18LS1uby1sb2ddIFstLWZpbGUgPGZpbGU+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NTMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjU2IGJ1aWx0aW4vZ3JlcC5jOjcwMQotIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU2IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKLSM6IGJ1aWx0aW4vdGFnLmM6NDQ4IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzNQorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYzIGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NiBidWlsdGluL2dyZXAuYzo3MDEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxODggYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NSBidWlsdGluL3Nob3ctcmVmLmM6MTc1CisjOiBidWlsdGluL3RhZy5jOjQ0NiBwYXJzZS1vcHRpb25zLmg6MTMzIHBhcnNlLW9wdGlvbnMuaDoyMzkKIG1zZ2lkICJuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NAorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY0CiBtc2dpZCAicG9wdWxhdGUgbG9nIHdpdGggYXQgbW9zdCA8bj4gZW50cmllcyBmcm9tIHNob3J0bG9nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY3CiBtc2dpZCAiYWxpYXMgZm9yIC0tbG9nIChkZXByZWNhdGVkKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjAKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MAogbXNnaWQgInRleHQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYxCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzEKIG1zZ2lkICJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYyCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzIKIG1zZ2lkICJmaWxlIHRvIHJlYWQgZnJvbSIKIG1zZ3N0ciAiIgogCkBAIC00NTQ5LDExICs0OTM2LDYgQEAKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo4MjUKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYmFkIG9iamVjdCAlcyIKLW1zZ3N0ciAiIgotCiAjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCiBtc2dzdHIgIiIKQEAgLTQ2MTMsMzU5ICs0OTk1LDM5MSBAQAogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vaGVscC5jOjQ0Ci1tc2dpZCAic2hvdyBtYW4gcGFnZSIKK21zZ2lkICJwcmludCBsaXN0IG9mIHVzZWZ1bCBndWlkZXMiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9oZWxwLmM6NDUKK21zZ2lkICJzaG93IG1hbiBwYWdlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2CiBtc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDcKKyM6IGJ1aWx0aW4vaGVscC5jOjQ4CiBtc2dpZCAic2hvdyBpbmZvIHBhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NTMKLW1zZ2lkICJnaXQgaGVscCBbLS1hbGxdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKKyM6IGJ1aWx0aW4vaGVscC5jOjU0Cittc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo2NQorIzogYnVpbHRpbi9oZWxwLmM6NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6OTMKKyM6IGJ1aWx0aW4vaGVscC5jOjk0CiBtc2dpZCAiRmFpbGVkIHRvIHN0YXJ0IGVtYWNzY2xpZW50LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDYKKyM6IGJ1aWx0aW4vaGVscC5jOjEwNwogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBlbWFjc2NsaWVudCB2ZXJzaW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMTQKKyM6IGJ1aWx0aW4vaGVscC5jOjExNQogIywgYy1mb3JtYXQKIG1zZ2lkICJlbWFjc2NsaWVudCB2ZXJzaW9uICclZCcgdG9vIG9sZCAoPCAyMikuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEzMiBidWlsdGluL2hlbHAuYzoxNjAgYnVpbHRpbi9oZWxwLmM6MTY5IGJ1aWx0aW4vaGVscC5jOjE3NworIzogYnVpbHRpbi9oZWxwLmM6MTMzIGJ1aWx0aW4vaGVscC5jOjE2MSBidWlsdGluL2hlbHAuYzoxNzAgYnVpbHRpbi9oZWxwLmM6MTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIxNworIzogYnVpbHRpbi9oZWxwLmM6MjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBwYXRoIGZvciB1bnN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5jbWQnIGluc3RlYWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIyOQorIzogYnVpbHRpbi9oZWxwLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoyOTkKLW1zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vaGVscC5jOjM2NworIzogYnVpbHRpbi9oZWxwLmM6MzUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVua25vd24gbWFuIHZpZXdlci4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mzg0CisjOiBidWlsdGluL2hlbHAuYzozNjgKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzkyCisjOiBidWlsdGluL2hlbHAuYzozNzYKIG1zZ2lkICJubyBpbmZvIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ0NyBidWlsdGluL2hlbHAuYzo0NTQKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMgorbXNnaWQgIkRlZmluaW5nIGF0dHJpYnV0ZXMgcGVyIHBhdGgiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDIzCittc2dpZCAiQSBHaXQgZ2xvc3NhcnkiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI0Cittc2dpZCAiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjUKK21zZ2lkICJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjYKK21zZ2lkICJTcGVjaWZ5aW5nIHJldmlzaW9ucyBhbmQgcmFuZ2VzIGZvciBHaXQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI3Cittc2dpZCAiQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gR2l0IChmb3IgdmVyc2lvbiAxLjUuMSBvciBuZXdlcikiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI4Cittc2dpZCAiQW4gb3ZlcnZpZXcgb2YgcmVjb21tZW5kZWQgd29ya2Zsb3dzIHdpdGggR2l0IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0MAorbXNnaWQgIlRoZSBjb21tb24gR2l0IGd1aWRlcyBhcmU6XG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NzAKKyM6IGJ1aWx0aW4vaGVscC5jOjQ5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJgZ2l0ICVzJyBpcyBhbGlhc2VkIHRvIGAlcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxODIKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0IHR5cGUgbWlzbWF0Y2ggYXQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTkwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyMDIKIG1zZ2lkICJvYmplY3Qgb2YgdW5leHBlY3RlZCB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIyNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBmaWxsICVkIGJ5dGUiCiBtc2dpZF9wbHVyYWwgImNhbm5vdCBmaWxsICVkIGJ5dGVzIgogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKIG1zZ2lkICJlYXJseSBFT0YiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKIG1zZ2lkICJyZWFkIGVycm9yIG9uIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCiBtc2dpZCAidXNlZCBtb3JlIGJ5dGVzIHRoYW4gd2VyZSBhdmFpbGFibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjU3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKIG1zZ2lkICJwYWNrIHRvbyBsYXJnZSBmb3IgY3VycmVudCBkZWZpbml0aW9uIG9mIG9mZl90IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI3MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjg1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiBwYWNrZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA0CiBtc2dpZCAicGFjayBzaWduYXR1cmUgbWlzbWF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjk0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayB2ZXJzaW9uICU8UFJJdTMyPiB1bnN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQzNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluZmxhdGUgcmV0dXJuZWQgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDgzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKIG1zZ2lkICJvZmZzZXQgdmFsdWUgb3ZlcmZsb3cgZm9yIGRlbHRhIGJhc2Ugb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5MQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTAzCiBtc2dpZCAiZGVsdGEgYmFzZSBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTExCiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTMwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDIKIG1zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUzMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZSBtaXNzaW5nIgogbXNnaWRfcGx1cmFsICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGVzIG1pc3NpbmciCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1NTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU3MAogbXNnaWQgInNlcmlvdXMgaW5mbGF0ZSBpbmNvbnNpc3RlbmN5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY0OSBidWlsdGluL2luZGV4LXBhY2suYzo2NTUgYnVpbHRpbi9pbmRleC1wYWNrLmM6Njc4Ci0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MTIgYnVpbHRpbi9pbmRleC1wYWNrLmM6NzIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjEgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY5MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzI0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMwogIywgYy1mb3JtYXQKIG1zZ2lkICJTSEExIENPTExJU0lPTiBGT1VORCBXSVRIICVzICEiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjUyIGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjQgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcxOAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkIGV4aXN0aW5nIG9iamVjdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGJsb2Igb2JqZWN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjEKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzUxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODIxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg0NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MwogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5ODYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKIG1zZ2lkICJSZWNlaXZpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo5ODYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKIG1zZ2lkICJJbmRleGluZyBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzAKIG1zZ2lkICJwYWNrIGlzIGNvcnJ1cHRlZCAoU0hBMSBtaXNtYXRjaCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAxNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgImNhbm5vdCBmc3RhdCBwYWNrZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDIwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM4CiBtc2dpZCAicGFjayBoYXMganVuayBhdCB0aGUgZW5kIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDkKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IGluIHBhcnNlX3BhY2tfb2JqZWN0cygpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNzIKIG1zZ2lkICJSZXNvbHZpbmcgZGVsdGFzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNjQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwODIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjQKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29tcGxldGVkIHdpdGggJWQgbG9jYWwgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgKGRpc2sgY29ycnVwdGlvbj8pIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YSIKIG1zZ2lkX3BsdXJhbCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YXMiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTcxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBkZWZsYXRlIGFwcGVuZGVkIG9iamVjdCAoJWQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyMjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAibG9jYWwgb2JqZWN0ICVzIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI1MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI3NAogbXNnaWQgImVycm9yIHdoaWxlIGNsb3NpbmcgcGFjayBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHdyaXRlIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNsb3NlIHdyaXR0ZW4ga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwOAogbXNnaWQgImNhbm5vdCBzdG9yZSBwYWNrIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMzEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzM3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgbnVtYmVyIG9mIHRocmVhZHMgc3BlY2lmaWVkICglZCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM0MSBidWlsdGluL2luZGV4LXBhY2suYzoxNTE0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzYyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGhyZWFkcyBzdXBwb3J0LCBpZ25vcmluZyAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzk5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MDEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBpZHggZmlsZSBmb3IgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDQ4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vbiBkZWx0YTogJWQgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJub24gZGVsdGE6ICVkIG9iamVjdHMiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDU1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdHMiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDgyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTAzCiBtc2dpZCAiQ2Fubm90IGNvbWUgYmFjayB0byBjd2QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUyNiBidWlsdGluL2luZGV4LXBhY2suYzoxNTI5Ci0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTU5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgwCiBtc2dpZCAiLS1maXgtdGhpbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IC0tc3RkaW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MyBidWlsdGluL2luZGV4LXBhY2suYzoxNTczCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTg0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFja2ZpbGUgbmFtZSAnJXMnIGRvZXMgbm90IGVuZCB3aXRoICcucGFjayciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwMwogbXNnaWQgIi0tdmVyaWZ5IHdpdGggbm8gcGFja2ZpbGUgbmFtZSBnaXZlbiIKIG1zZ3N0ciAiIgogCkBAIC01MDg3LDggKzU1MDEsOCBAQAogCiAjOiBidWlsdGluL2luaXQtZGIuYzo0NjcKIG1zZ2lkICIiCi0iZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PHRlbXBsYXRlLWRpcmVjdG9yeT5dIFstLXNoYXJlZCIKLSJbPTxwZXJtaXNzaW9ucz5dXSBbZGlyZWN0b3J5XSIKKyJnaXQgaW5pdCBbLXEgfCAtLXF1aWV0XSBbLS1iYXJlXSBbLS10ZW1wbGF0ZT08dGVtcGxhdGUtZGlyZWN0b3J5Pl0gWy0tIgorInNoYXJlZFs9PHBlcm1pc3Npb25zPl1dIFtkaXJlY3RvcnldIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MApAQCAtNTEyOSwzMzcgKzU1NDMsMzQwIEBACiBtc2dpZCAiQ2Fubm90IGFjY2VzcyB3b3JrIHRyZWUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjM3Ci1tc2dpZCAiZ2l0IGxvZyBbPG9wdGlvbnM+XSBbPHNpbmNlPi4uPHVudGlsPl0gW1stLV0gPHBhdGg+Li4uXVxuIgorIzogYnVpbHRpbi9sb2cuYzo0MAorbXNnaWQgImdpdCBsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIDxwYXRoPi4uLl1cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjM4CisjOiBidWlsdGluL2xvZy5jOjQxCiBtc2dpZCAiICAgb3I6IGdpdCBzaG93IFtvcHRpb25zXSA8b2JqZWN0Pi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMAorIzogYnVpbHRpbi9sb2cuYzoxMDMKIG1zZ2lkICJzdXBwcmVzcyBkaWZmIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMQorIzogYnVpbHRpbi9sb2cuYzoxMDQKIG1zZ2lkICJzaG93IHNvdXJjZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMgorIzogYnVpbHRpbi9sb2cuYzoxMDUKK21zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjEwNgogbXNnaWQgImRlY29yYXRlIG9wdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxODkKKyM6IGJ1aWx0aW4vbG9nLmM6MTk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZpbmFsIG91dHB1dDogJWQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjQwNSBidWlsdGluL2xvZy5jOjQ5NworIzogYnVpbHRpbi9sb2cuYzo0MjIgYnVpbHRpbi9sb2cuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgb2JqZWN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NTIxCisjOiBidWlsdGluL2xvZy5jOjUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHR5cGU6ICVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NjEzCisjOiBidWlsdGluL2xvZy5jOjYzOAogbXNnaWQgImZvcm1hdC5oZWFkZXJzIHdpdGhvdXQgdmFsdWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzo2ODcKKyM6IGJ1aWx0aW4vbG9nLmM6NzIwCiBtc2dpZCAibmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5IGlzIHRvbyBsb25nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njk4CisjOiBidWlsdGluL2xvZy5jOjczNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBwYXRjaCBmaWxlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzEyCisjOiBidWlsdGluL2xvZy5jOjc1MAogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwCisjOiBidWlsdGluL2xvZy5jOjc1OAogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjc5NAorIzogYnVpbHRpbi9sb2cuYzo4NjAKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODY3CisjOiBidWlsdGluL2xvZy5jOjkzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmUgaW4tcmVwbHktdG86ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODk1CisjOiBidWlsdGluL2xvZy5jOjk2NAogbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzo5NDAKKyM6IGJ1aWx0aW4vbG9nLmM6MTAwOQogbXNnaWQgIlR3byBvdXRwdXQgZGlyZWN0b3JpZXM/IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA2OAorIzogYnVpbHRpbi9sb2cuYzoxMTA4CiBtc2dpZCAidXNlIFtQQVRDSCBuL21dIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNzEKKyM6IGJ1aWx0aW4vbG9nLmM6MTExMQogbXNnaWQgInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3NQorIzogYnVpbHRpbi9sb2cuYzoxMTE1CiBtc2dpZCAicHJpbnQgcGF0Y2hlcyB0byBzdGFuZGFyZCBvdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDc3CisjOiBidWlsdGluL2xvZy5jOjExMTcKIG1zZ2lkICJnZW5lcmF0ZSBhIGNvdmVyIGxldHRlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNzkKKyM6IGJ1aWx0aW4vbG9nLmM6MTExOQogbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODAKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMAogbXNnaWQgInNmeCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODEKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMQogbXNnaWQgInVzZSA8c2Z4PiBpbnN0ZWFkIG9mICcucGF0Y2gnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA4MworIzogYnVpbHRpbi9sb2cuYzoxMTIzCiBtc2dpZCAic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODUKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNQorbXNnaWQgIm1hcmsgdGhlIHNlcmllcyBhcyBOdGggcmUtcm9sbCIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExMjcKIG1zZ2lkICJVc2UgWzxwcmVmaXg+XSBpbnN0ZWFkIG9mIFtQQVRDSF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDg4CisjOiBidWlsdGluL2xvZy5jOjExMzAKIG1zZ2lkICJzdG9yZSByZXN1bHRpbmcgZmlsZXMgaW4gPGRpcj4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDkxCisjOiBidWlsdGluL2xvZy5jOjExMzMKIG1zZ2lkICJkb24ndCBzdHJpcC9hZGQgW1BBVENIXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTQKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzNgogbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDk2CisjOiBidWlsdGluL2xvZy5jOjExMzgKIG1zZ2lkICJkb24ndCBpbmNsdWRlIGEgcGF0Y2ggbWF0Y2hpbmcgYSBjb21taXQgdXBzdHJlYW0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDk4CisjOiBidWlsdGluL2xvZy5jOjExNDAKIG1zZ2lkICJzaG93IHBhdGNoIGZvcm1hdCBpbnN0ZWFkIG9mIGRlZmF1bHQgKHBhdGNoICsgc3RhdCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAwCisjOiBidWlsdGluL2xvZy5jOjExNDIKIG1zZ2lkICJNZXNzYWdpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAxCisjOiBidWlsdGluL2xvZy5jOjExNDMKIG1zZ2lkICJoZWFkZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAyCisjOiBidWlsdGluL2xvZy5jOjExNDQKIG1zZ2lkICJhZGQgZW1haWwgaGVhZGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMyBidWlsdGluL2xvZy5jOjExMDUKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKIG1zZ2lkICJlbWFpbCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDMKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NQogbXNnaWQgImFkZCBUbzogaGVhZGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwNQorIzogYnVpbHRpbi9sb2cuYzoxMTQ3CiBtc2dpZCAiYWRkIENjOiBoZWFkZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTA3CisjOiBidWlsdGluL2xvZy5jOjExNDkKIG1zZ2lkICJtZXNzYWdlLWlkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwOAorIzogYnVpbHRpbi9sb2cuYzoxMTUwCiBtc2dpZCAibWFrZSBmaXJzdCBtYWlsIGEgcmVwbHkgdG8gPG1lc3NhZ2UtaWQ+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwOSBidWlsdGluL2xvZy5jOjExMTIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MSBidWlsdGluL2xvZy5jOjExNTQKIG1zZ2lkICJib3VuZGFyeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MgogbXNnaWQgImF0dGFjaCB0aGUgcGF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTEzCisjOiBidWlsdGluL2xvZy5jOjExNTUKIG1zZ2lkICJpbmxpbmUgdGhlIHBhdGNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExNworIzogYnVpbHRpbi9sb2cuYzoxMTU5CiBtc2dpZCAiZW5hYmxlIG1lc3NhZ2UgdGhyZWFkaW5nLCBzdHlsZXM6IHNoYWxsb3csIGRlZXAiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTE5CisjOiBidWlsdGluL2xvZy5jOjExNjEKIG1zZ2lkICJzaWduYXR1cmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIwCisjOiBidWlsdGluL2xvZy5jOjExNjIKIG1zZ2lkICJhZGQgYSBzaWduYXR1cmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIyCisjOiBidWlsdGluL2xvZy5jOjExNjQKIG1zZ2lkICJkb24ndCBwcmludCB0aGUgcGF0Y2ggZmlsZW5hbWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2MwotIywgYy1mb3JtYXQKLW1zZ2lkICJib2d1cyBjb21taXR0ZXIgaW5mbyAlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xvZy5jOjEyMDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI0OAogbXNnaWQgIi1uIGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1MAogbXNnaWQgIi0tc3ViamVjdC1wcmVmaXggYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxOAorIzogYnVpbHRpbi9sb2cuYzoxMjU4CiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMjAKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MAogbXNnaWQgIi0tbmFtZS1zdGF0dXMgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMjIKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MgogbXNnaWQgIi0tY2hlY2sgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEyNDUKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4NQogbXNnaWQgInN0YW5kYXJkIG91dHB1dCwgb3IgZGlyZWN0b3J5LCB3aGljaCBvbmU/IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI0NworIzogYnVpbHRpbi9sb2cuYzoxMjg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDAwCisjOiBidWlsdGluL2xvZy5jOjE0MzUKIG1zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIG91dHB1dCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjE0NDkKKyM6IGJ1aWx0aW4vbG9nLmM6MTQ4NAogbXNnaWQgImdpdCBjaGVycnkgWy12XSBbPHVwc3RyZWFtPiBbPGhlYWQ+IFs8bGltaXQ+XV1dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTUwNAorIzogYnVpbHRpbi9sb2cuYzoxNTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDb3VsZCBub3QgZmluZCBhIHRyYWNrZWQgcmVtb3RlIGJyYW5jaCwgcGxlYXNlIHNwZWNpZnkgPHVwc3RyZWFtPiBtYW51YWxseS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjE1MTcgYnVpbHRpbi9sb2cuYzoxNTE5IGJ1aWx0aW4vbG9nLmM6MTUzMQorIzogYnVpbHRpbi9sb2cuYzoxNTUyIGJ1aWx0aW4vbG9nLmM6MTU1NCBidWlsdGluL2xvZy5jOjE1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBjb21taXQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQwOAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQwMgogbXNnaWQgImdpdCBscy1maWxlcyBbb3B0aW9uc10gWzxmaWxlPi4uLl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ1OQogbXNnaWQgImlkZW50aWZ5IHRoZSBmaWxlIHN0YXR1cyB3aXRoIHRhZ3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MQogbXNnaWQgInVzZSBsb3dlcmNhc2UgbGV0dGVycyBmb3IgJ2Fzc3VtZSB1bmNoYW5nZWQnIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKIG1zZ2lkICJzaG93IGNhY2hlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IChkZWZhdWx0KSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY1CiBtc2dpZCAic2hvdyBkZWxldGVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NwogbXNnaWQgInNob3cgbW9kaWZpZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDczCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5CiBtc2dpZCAic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzUKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzEKIG1zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc0CiBtc2dpZCAic2hvdyBzdGFnZWQgY29udGVudHMnIG9iamVjdCBuYW1lIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NgogbXNnaWQgInNob3cgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3OAogbXNnaWQgInNob3cgJ290aGVyJyBkaXJlY3RvcmllcycgbmFtZSBvbmx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODUKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODEKIG1zZ2lkICJkb24ndCBzaG93IGVtcHR5IGRpcmVjdG9yaWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODQKIG1zZ2lkICJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NgogbXNnaWQgInNob3cgcmVzb2x2ZS11bmRvIGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTIKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKIG1zZ2lkICJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MQogbXNnaWQgImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NAogbXNnaWQgInJlYWQgYWRkaXRpb25hbCBwZXItZGlyZWN0b3J5IGV4Y2x1ZGUgcGF0dGVybnMgaW4gPGZpbGU+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDAKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTYKIG1zZ2lkICJhZGQgdGhlIHN0YW5kYXJkIGdpdCBleGNsdXNpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDMKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTkKIG1zZ2lkICJtYWtlIHRoZSBvdXRwdXQgcmVsYXRpdmUgdG8gdGhlIHByb2plY3QgdG9wIGRpcmVjdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCiBtc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDMKIG1zZ2lkICJ0cmVlLWlzaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA0CiBtc2dpZCAicHJldGVuZCB0aGF0IHBhdGhzIHJlbW92ZWQgc2luY2UgPHRyZWUtaXNoPiBhcmUgc3RpbGwgcHJlc2VudCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTEwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CiBtc2dpZCAic2hvdyBkZWJ1Z2dpbmcgZGF0YSIKIG1zZ3N0ciAiIgogCkBAIC01NTY2LDI1MCArNTk4MywyNzYgQEAKIG1zZ2lkICJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDIgYnVpbHRpbi9ub3Rlcy5jOjg3MCBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9tZXJnZS5jOjIwMworbXNnaWQgIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA0IGJ1aWx0aW4vbm90ZXMuYzo4NjYgYnVpbHRpbi9yZXZlcnQuYzoxMTIKIG1zZ2lkICJzdHJhdGVneSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjAzCisjOiBidWlsdGluL21lcmdlLmM6MjA1CiBtc2dpZCAibWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKIG1zZ2lkICJvcHRpb249dmFsdWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNQorIzogYnVpbHRpbi9tZXJnZS5jOjIwNwogbXNnaWQgIm9wdGlvbiBmb3Igc2VsZWN0ZWQgbWVyZ2Ugc3RyYXRlZ3kiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNworIzogYnVpbHRpbi9tZXJnZS5jOjIwOQogbXNnaWQgIm1lcmdlIGNvbW1pdCBtZXNzYWdlIChmb3IgYSBub24tZmFzdC1mb3J3YXJkIG1lcmdlKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjExCisjOiBidWlsdGluL21lcmdlLmM6MjEzCiBtc2dpZCAiYWJvcnQgdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgbWVyZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0MAorIzogYnVpbHRpbi9tZXJnZS5jOjI0MgogbXNnaWQgImNvdWxkIG5vdCBydW4gc3Rhc2guIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDcKIG1zZ2lkICJzdGFzaCBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MAorIzogYnVpbHRpbi9tZXJnZS5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNjkgYnVpbHRpbi9tZXJnZS5jOjI4NgorIzogYnVpbHRpbi9tZXJnZS5jOjI3MSBidWlsdGluL21lcmdlLmM6Mjg4CiBtc2dpZCAicmVhZC10cmVlIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzE2CisjOiBidWlsdGluL21lcmdlLmM6MzE4CiBtc2dpZCAiIChub3RoaW5nIHRvIHNxdWFzaCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMyOQorIzogYnVpbHRpbi9tZXJnZS5jOjMzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJTcXVhc2ggY29tbWl0IC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MQorIzogYnVpbHRpbi9tZXJnZS5jOjM2MwogbXNnaWQgIldyaXRpbmcgU1FVQVNIX01TRyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYzCisjOiBidWlsdGluL21lcmdlLmM6MzY1CiBtc2dpZCAiRmluaXNoaW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM4NgorIzogYnVpbHRpbi9tZXJnZS5jOjM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjQzNgorIzogYnVpbHRpbi9tZXJnZS5jOjQzOAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo1MzUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo1NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMgc3RyaW5nOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjI4CisjOiBidWlsdGluL21lcmdlLmM6NjQzCiBtc2dpZCAiZ2l0IHdyaXRlLXRyZWUgZmFpbGVkIHRvIHdyaXRlIGEgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjU2CisjOiBidWlsdGluL21lcmdlLmM6NjcxCiBtc2dpZCAiTm90IGhhbmRsaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gdHdvIGhlYWRzIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjcwCisjOiBidWlsdGluL21lcmdlLmM6Njg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gb3B0aW9uIGZvciBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY4NAorIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc3MworIzogYnVpbHRpbi9tZXJnZS5jOjc4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBmcm9tICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc4MgorIzogYnVpbHRpbi9tZXJnZS5jOjc5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgY29tbWl0dGluZyBtZXJnZTsgdXNlICdnaXQgY29tbWl0JyB0byBjb21wbGV0ZSB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc4OAorIzogYnVpbHRpbi9tZXJnZS5jOjgwMworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIGEgY29tbWl0IG1lc3NhZ2UgdG8gZXhwbGFpbiB3aHkgdGhpcyBtZXJnZSBpcyBuZWNlc3NhcnksXG4iCiAiZXNwZWNpYWxseSBpZiBpdCBtZXJnZXMgYW4gdXBkYXRlZCB1cHN0cmVhbSBpbnRvIGEgdG9waWMgYnJhbmNoLlxuIgogIlxuIgotIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzXG4iCisiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzXG4iCiAidGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODEyCisjOiBidWlsdGluL21lcmdlLmM6ODI3CiBtc2dpZCAiRW1wdHkgY29tbWl0IG1lc3NhZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4ODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIGZhaWxlZDsgZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBjb21taXQgdGhlIHJlc3VsdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTA1CisjOiBidWlsdGluL21lcmdlLmM6OTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NDYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjEKIG1zZ2lkICJObyBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk0OAorIzogYnVpbHRpbi9tZXJnZS5jOjk2MwogbXNnaWQgIk5vIHJlbW90ZSBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTUwCisjOiBidWlsdGluL21lcmdlLmM6OTY1CiBtc2dpZCAiTm8gZGVmYXVsdCB1cHN0cmVhbSBkZWZpbmVkIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NTUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA0MiBidWlsdGluL21lcmdlLmM6MTE5OQorIzogYnVpbHRpbi9tZXJnZS5jOjEwNTcgYnVpbHRpbi9tZXJnZS5jOjEyMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTExMAorIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKIG1zZ2lkICJUaGVyZSBpcyBubyBtZXJnZSB0byBhYm9ydCAoTUVSR0VfSEVBRCBtaXNzaW5nKS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMjYgZ2l0LXB1bGwuc2g6MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQxIGdpdC1wdWxsLnNoOjMxCiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMjkgZ2l0LXB1bGwuc2g6MzQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTMzCisjOiBidWlsdGluL21lcmdlLmM6MTE0OAogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTM2CisjOiBidWlsdGluL21lcmdlLmM6MTE1MQogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0NQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE1MAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNTcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCiBtc2dpZCAiTm8gY29tbWl0IHNwZWNpZmllZCBhbmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gbm90IHNldC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA0CiBtc2dpZCAiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE5MgorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDcKIG1zZ2lkICJTcXVhc2ggY29tbWl0IGludG8gZW1wdHkgaGVhZCBub3Qgc3VwcG9ydGVkIHlldCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE5NAorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDkKIG1zZ2lkICJOb24tZmFzdC1mb3J3YXJkIGNvbW1pdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGludG8gYW4gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTMwOQorIzogYnVpbHRpbi9tZXJnZS5jOjEyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MTI2OAorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorCisjLiAnTicKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIGEgR1BHIHNpZ25hdHVyZS4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGdvb2QgR1BHIHNpZ25hdHVyZSBieSAlc1xuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzLi4lc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzQ4CisjOiBidWlsdGluL21lcmdlLmM6MTM5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTM1NQorIzogYnVpbHRpbi9tZXJnZS5jOjE0MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm9wZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTM4NworIzogYnVpbHRpbi9tZXJnZS5jOjE0MzYKIG1zZ2lkICJOb3QgcG9zc2libGUgdG8gZmFzdC1mb3J3YXJkLCBhYm9ydGluZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTAgYnVpbHRpbi9tZXJnZS5jOjE0ODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDE0CisjOiBidWlsdGluL21lcmdlLmM6MTQ2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ4MAorIzogYnVpbHRpbi9tZXJnZS5jOjE1MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbWVyZ2Ugc3RyYXRlZ3kgaGFuZGxlZCB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0ODIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1lcmdlIHdpdGggc3RyYXRlZ3kgJXMgZmFpbGVkLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDkxCisjOiBidWlsdGluL21lcmdlLmM6MTU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2luZyB0aGUgJXMgdG8gcHJlcGFyZSByZXNvbHZpbmcgYnkgaGFuZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTUwMworIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKIG1zZ3N0ciAiIgpAQCAtNjExNSwyMzMgKzY1NTgsMjI4IEBACiBtc2dpZCAiZ2l0IG5vdGVzIGdldC1yZWYiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjEzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTQ4Ci1tc2dpZCAiY2FuJ3QgZmRvcGVuICdzaG93JyBvdXRwdXQgZmQiCisjOiBidWlsdGluL25vdGVzLmM6MTQzCittc2dpZCAiY291bGQgbm90IHJlYWQgJ3Nob3cnIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTU4Ci0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ub3Rlcy5jOjE2MQorIzogYnVpbHRpbi9ub3Rlcy5jOjE1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gZmluaXNoICdzaG93JyBmb3Igb2JqZWN0ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE3OCBidWlsdGluL3RhZy5jOjM0NworIzogYnVpbHRpbi9ub3Rlcy5jOjE2OSBidWlsdGluL3RhZy5jOjM0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTkyCisjOiBidWlsdGluL25vdGVzLmM6MTg4CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbm90ZSBjb250ZW50cyB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTMgYnVpbHRpbi9ub3Rlcy5jOjk3NgorIzogYnVpbHRpbi9ub3Rlcy5jOjIwOSBidWlsdGluL25vdGVzLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nIG5vdGUgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbm90ZSBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIyMAorIzogYnVpbHRpbi9ub3Rlcy5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgbm90ZSBjb250ZW50cyBoYXMgYmVlbiBsZWZ0IGluICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTQgYnVpbHRpbi90YWcuYzo1NDIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTAgYnVpbHRpbi90YWcuYzo1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjU2IGJ1aWx0aW4vdGFnLmM6NTQ1CisjOiBidWlsdGluL25vdGVzLmM6MjUyIGJ1aWx0aW4vdGFnLmM6NTQzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuIG9yIHJlYWQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc1IGJ1aWx0aW4vbm90ZXMuYzo0NDggYnVpbHRpbi9ub3Rlcy5jOjQ1MAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxMCBidWlsdGluL25vdGVzLmM6NTY0IGJ1aWx0aW4vbm90ZXMuYzo2NDcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NTIgYnVpbHRpbi9ub3Rlcy5jOjcyNyBidWlsdGluL25vdGVzLmM6NzY5Ci0jOiBidWlsdGluL25vdGVzLmM6OTcxIGJ1aWx0aW4vcmVzZXQuYzoyOTMgYnVpbHRpbi90YWcuYzo1NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzEgYnVpbHRpbi9ub3Rlcy5jOjQ0NCBidWlsdGluL25vdGVzLmM6NDQ2CisjOiBidWlsdGluL25vdGVzLmM6NTA2IGJ1aWx0aW4vbm90ZXMuYzo1NjAgYnVpbHRpbi9ub3Rlcy5jOjY0MworIzogYnVpbHRpbi9ub3Rlcy5jOjY0OCBidWlsdGluL25vdGVzLmM6NzIzIGJ1aWx0aW4vbm90ZXMuYzo3NjUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NjcgYnVpbHRpbi90YWcuYzo1NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI3OAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMwMgorIzogYnVpbHRpbi9ub3Rlcy5jOjI5OAogbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzQzCisjOiBidWlsdGluL25vdGVzLmM6MzM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUzCisjOiBidWlsdGluL25vdGVzLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgogbXNnc3RyICIiCiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCiAjLiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUKLSM6IGJ1aWx0aW4vbm90ZXMuYzozODAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkICVzIHZhbHVlOiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlucHV0IGxpbmU6ICclcycuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NTkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNvcHkgbm90ZXMgZnJvbSAnJXMnIHRvICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUwMyBidWlsdGluL25vdGVzLmM6NTU3IGJ1aWx0aW4vbm90ZXMuYzo2MzAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDIgYnVpbHRpbi9ub3Rlcy5jOjcxNSBidWlsdGluL25vdGVzLmM6NzYyCi0jOiBidWlsdGluL25vdGVzLmM6MTAzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4CisjOiBidWlsdGluL25vdGVzLmM6MTAzMgogbXNnaWQgInRvbyBtYW55IHBhcmFtZXRlcnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxNiBidWlsdGluL25vdGVzLmM6Nzc1CisjOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBmb3VuZCBmb3Igb2JqZWN0ICVzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM4IGJ1aWx0aW4vbm90ZXMuYzo2OTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQogbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0MSBidWlsdGluL25vdGVzLmM6Njk4CisjOiBidWlsdGluL25vdGVzLmM6NTM3IGJ1aWx0aW4vbm90ZXMuYzo2OTQKIG1zZ2lkICJub3RlIGNvbnRlbnRzIGluIGEgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQzIGJ1aWx0aW4vbm90ZXMuYzo1NDYgYnVpbHRpbi9ub3Rlcy5jOjcwMAotIzogYnVpbHRpbi9ub3Rlcy5jOjcwMyBidWlsdGluL3RhZy5jOjQ3NgorIzogYnVpbHRpbi9ub3Rlcy5jOjUzOSBidWlsdGluL25vdGVzLmM6NTQyIGJ1aWx0aW4vbm90ZXMuYzo2OTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTkgYnVpbHRpbi90YWcuYzo0NzQKIG1zZ2lkICJvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0NCBidWlsdGluL25vdGVzLmM6NzAxCisjOiBidWlsdGluL25vdGVzLmM6NTQwIGJ1aWx0aW4vbm90ZXMuYzo2OTcKIG1zZ2lkICJyZXVzZSBhbmQgZWRpdCBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0NyBidWlsdGluL25vdGVzLmM6NzA0CisjOiBidWlsdGluL25vdGVzLmM6NTQzIGJ1aWx0aW4vbm90ZXMuYzo3MDAKIG1zZ2lkICJyZXVzZSBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0OSBidWlsdGluL25vdGVzLmM6NjE3CisjOiBidWlsdGluL25vdGVzLmM6NTQ1IGJ1aWx0aW4vbm90ZXMuYzo2MTMKIG1zZ2lkICJyZXBsYWNlIGV4aXN0aW5nIG5vdGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1ODMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCBhZGQgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCiAiZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4OCBidWlsdGluL25vdGVzLmM6NjY1CisjOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3ZlcndyaXRpbmcgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKIG1zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjIwCisjOiBidWlsdGluL25vdGVzLmM6NjE2CiBtc2dpZCAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgLS1zdGRpbikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOAorIzogYnVpbHRpbi9ub3Rlcy5jOjYzNAogbXNnaWQgInRvbyBmZXcgcGFyYW1ldGVycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjU5CisjOiBidWlsdGluL25vdGVzLmM6NjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgY29weSBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjcxCisjOiBidWlsdGluL25vdGVzLmM6NjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3Npbmcgbm90ZXMgb24gc291cmNlIG9iamVjdCAlcy4gQ2Fubm90IGNvcHkuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MjAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtbS8tRi8tYy8tQyBvcHRpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciB0aGUgJ2VkaXQnIHN1YmNvbW1hbmQuXG4iCiAiUGxlYXNlIHVzZSAnZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQycgaW5zdGVhZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODY3CisjOiBidWlsdGluL25vdGVzLmM6ODYzCiBtc2dpZCAiR2VuZXJhbCBvcHRpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjUKIG1zZ2lkICJNZXJnZSBvcHRpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjcKIG1zZ2lkICIiCiAicmVzb2x2ZSBub3RlcyBjb25mbGljdHMgdXNpbmcgdGhlIGdpdmVuIHN0cmF0ZWd5IChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgogImNhdF9zb3J0X3VuaXEpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjkKIG1zZ2lkICJDb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKIG1zZ2lkICJmaW5hbGl6ZSBub3RlcyBtZXJnZSBieSBjb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKIG1zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKIG1zZ2lkICJhYm9ydCBub3RlcyBtZXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTc0CisjOiBidWlsdGluL25vdGVzLmM6OTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9iamVjdCAlcyBoYXMgbm8gbm90ZVxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5ODYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODIKIG1zZ2lkICJhdHRlbXB0IHRvIHJlbW92ZSBub24tZXhpc3RlbnQgbm90ZSBpcyBub3QgYW4gZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk4OQorIzogYnVpbHRpbi9ub3Rlcy5jOjk4NQogbXNnaWQgInJlYWQgb2JqZWN0IG5hbWVzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDcwCisjOiBidWlsdGluL25vdGVzLmM6MTA2NgogbXNnaWQgIm5vdGVzX3JlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTA3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjcKIG1zZ2lkICJ1c2Ugbm90ZXMgZnJvbSA8bm90ZXNfcmVmPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwNiBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAyIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHN1YmNvbW1hbmQ6ICVzIgogbXNnc3RyICIiCkBAIC02NjQzLDIyICs3MDgxLDQyIEBACiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjU4Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlB1c2hpbmcgdG8gJXNcbiIKKyM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorbXNnaWQgIiIKKyJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgcmVtb3RlIGNvbnRhaW5zIHdvcmsgdGhhdCB5b3UgZG9cbiIKKyJub3QgaGF2ZSBsb2NhbGx5LiBUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGFub3RoZXIgcmVwb3NpdG9yeSBwdXNoaW5nXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgbWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuLFxuIgorIidnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgorIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI2MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJyVzJyIKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzMQorbXNnaWQgIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSB0YWcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlbW90ZS4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjM0Cittc2dpZCAiIgorIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIndpdGhvdXQgdXNpbmcgdGhlICctLWZvcmNlJyBvcHRpb24uXG4iCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9wdXNoLmM6Mjk0CiAjLCBjLWZvcm1hdAorbXNnaWQgIlB1c2hpbmcgdG8gJXNcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3B1c2guYzoyOTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHB1c2ggc29tZSByZWZzIHRvICclcyciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6MzMxCisjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk1CisjOiBidWlsdGluL3B1c2guYzozMzIKIG1zZ2lkICIiCiAiTm8gY29uZmlndXJlZCBwdXNoIGRlc3RpbmF0aW9uLlxuIgogIkVpdGhlciBzcGVjaWZ5IHRoZSBVUkwgZnJvbSB0aGUgY29tbWFuZC1saW5lIG9yIGNvbmZpZ3VyZSBhIHJlbW90ZSAiCkBAIC02NjcxLDc5ICs3MTI5LDg3IEBACiAiICAgIGdpdCBwdXNoIDxuYW1lPlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMAorIzogYnVpbHRpbi9wdXNoLmM6MzQ3CiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMQorIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozMTYKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1MwogbXNnaWQgIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozMTcKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1NAogbXNnaWQgIi0tbWlycm9yIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzIyCisjOiBidWlsdGluL3B1c2guYzozNTkKIG1zZ2lkICItLWFsbCBhbmQgLS1taXJyb3IgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozODIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQxOQogbXNnaWQgInJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzgzCisjOiBidWlsdGluL3B1c2guYzo0MjAKIG1zZ2lkICJwdXNoIGFsbCByZWZzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NAorIzogYnVpbHRpbi9wdXNoLmM6NDIxCiBtc2dpZCAibWlycm9yIGFsbCByZWZzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NgorIzogYnVpbHRpbi9wdXNoLmM6NDIzCiBtc2dpZCAiZGVsZXRlIHJlZnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg3CisjOiBidWlsdGluL3B1c2guYzo0MjQKIG1zZ2lkICJwdXNoIHRhZ3MgKGNhbid0IGJlIHVzZWQgd2l0aCAtLWFsbCBvciAtLW1pcnJvcikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzkwCisjOiBidWlsdGluL3B1c2guYzo0MjcKIG1zZ2lkICJmb3JjZSB1cGRhdGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MQorIzogYnVpbHRpbi9wdXNoLmM6NDI4CiBtc2dpZCAiY2hlY2siCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzkyCisjOiBidWlsdGluL3B1c2guYzo0MjkKIG1zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBwdXNoaW5nIG9mIHN1Ym1vZHVsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzk0CisjOiBidWlsdGluL3B1c2guYzo0MzEKIG1zZ2lkICJ1c2UgdGhpbiBwYWNrIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5NSBidWlsdGluL3B1c2guYzozOTYKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzMiBidWlsdGluL3B1c2guYzo0MzMKIG1zZ2lkICJyZWNlaXZlIHBhY2sgcHJvZ3JhbSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozOTcKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNAogbXNnaWQgInNldCB1cHN0cmVhbSBmb3IgZ2l0IHB1bGwvc3RhdHVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQwMAorIzogYnVpbHRpbi9wdXNoLmM6NDM3CiBtc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDEwCisjOiBidWlsdGluL3B1c2guYzo0MzkKK21zZ2lkICJieXBhc3MgcHJlLXB1c2ggaG9vayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL3B1c2guYzo0NDAKK21zZ2lkICJwdXNoIG1pc3NpbmcgYnV0IHJlbGV2YW50IHRhZ3MiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9wdXNoLmM6NDUwCiBtc2dpZCAiLS1kZWxldGUgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hbGwsIC0tbWlycm9yIGFuZCAtLXRhZ3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDEyCisjOiBidWlsdGluL3B1c2guYzo0NTIKIG1zZ2lkICItLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCBhbnkgcmVmcyIKIG1zZ3N0ciAiIgogCkBAIC03MzM4LDExICs3ODA0LDExIEBACiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9yZXNldC5jOjI2Ci1tc2dpZCAiZ2l0IHJlc2V0IFstcV0gPGNvbW1pdD4gWy0tXSA8cGF0aHM+Li4uIgorbXNnaWQgImdpdCByZXNldCBbLXFdIDx0cmVlLWlzaD4gWy0tXSA8cGF0aHM+Li4uIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vcmVzZXQuYzoyNwotbXNnaWQgImdpdCByZXNldCAtLXBhdGNoIFs8Y29tbWl0Pl0gWy0tXSBbPHBhdGhzPi4uLl0iCittc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vcmVzZXQuYzozMwpAQCAtNzM2NSw4OSArNzgzMSw5NSBAQAogbXNnaWQgImtlZXAiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc3CisjOiBidWlsdGluL3Jlc2V0LmM6NzMKIG1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFELiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6NzkKKyM6IGJ1aWx0aW4vcmVzZXQuYzo3NQogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgSEVBRC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjg1CisjOiBidWlsdGluL3Jlc2V0LmM6ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiAlcy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjk2Ci1tc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTA2CisjOiBidWlsdGluL3Jlc2V0LmM6OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjEzMAotbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzMKLW1zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MjIzCisjOiBidWlsdGluL3Jlc2V0LmM6MTY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyBhICVzIHJlc2V0IGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjIzOAorIzogYnVpbHRpbi9yZXNldC5jOjI0OAogbXNnaWQgImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MAorIzogYnVpbHRpbi9yZXNldC5jOjI1MAogbXNnaWQgInJlc2V0IEhFQUQgYW5kIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDEKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKIG1zZ2lkICJyZXNldCBvbmx5IEhFQUQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MyBidWlsdGluL3Jlc2V0LmM6MjQ1CisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKIG1zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDcKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTcKIG1zZ2lkICJyZXNldCBIRUFEIGJ1dCBrZWVwIGxvY2FsIGNoYW5nZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMworIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzggYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMDgKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHRyZWUuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyOTIKIG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIC0te2hhcmQsbWl4ZWQsc29mdH0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxNworIzogYnVpbHRpbi9yZXNldC5jOjMwMQogbXNnaWQgIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE5CisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzMxCisjOiBidWlsdGluL3Jlc2V0LmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHJlc2V0IGlzIG5vdCBhbGxvd2VkIGluIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozNDcKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9yZXNldC5jOjMzOQorbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozNDQKK21zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgorbXNnc3RyICIiCisKICM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzM5CiBtc2dpZCAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIKIG1zZ3N0ciAiIgpAQCAtNzQ3MCw3ICs3OTQyLDcgQEAKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL3JldmVydC5jOjIyCi1tc2dpZCAiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+IgorbXNnaWQgImdpdCByZXZlcnQgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL3JldmVydC5jOjIzCkBAIC03NDc4LDcgKzc5NTAsNyBAQAogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjgKLW1zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgW29wdGlvbnNdIDxjb21taXQtaXNoPiIKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL3JldmVydC5jOjI5CkBAIC03NjIxLDMxICs4MDkzLDMxIEBACiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzCi1tc2dpZCAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1vcHRzXSBbLS1dIFs8Y29tbWl0LWlkPi4uLiBdIgorbXNnaWQgImdpdCBzaG9ydGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gWzxwYXRoPi4uLl1dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTcKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBhdXRob3I6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTMKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjcKIG1zZ2lkICJzb3J0IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjb21taXRzIHBlciBhdXRob3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1NQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOQogbXNnaWQgIlN1cHByZXNzIGNvbW1pdCBkZXNjcmlwdGlvbnMsIG9ubHkgcHJvdmlkZXMgY29tbWl0IGNvdW50IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTcKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzEKIG1zZ2lkICJTaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIGVhY2ggYXV0aG9yIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzIKIG1zZ2lkICJ3WyxpMVssaTJdXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMzCiBtc2dpZCAiTGluZXdyYXAgb3V0cHV0IgogbXNnc3RyICIiCiAKQEAgLTc2NjEsNzQgKzgxMzMsNzQgQEAKIG1zZ2lkICJnaXQgc2hvdy1icmFuY2ggKC1nfC0tcmVmbG9nKVs9PG4+Wyw8YmFzZT5dXSBbLS1saXN0XSBbPHJlZj5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTEKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTAKIG1zZ2lkICJzaG93IHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MgogbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTQKIG1zZ2lkICJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTcKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYKIG1zZ2lkICJzaG93IDxuPiBtb3JlIGNvbW1pdHMgYWZ0ZXIgdGhlIGNvbW1vbiBhbmNlc3RvciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU5CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU4CiBtc2dpZCAic3lub255bSB0byBtb3JlPS0xIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjAKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTkKIG1zZ2lkICJzdXBwcmVzcyBuYW1pbmcgc3RyaW5ncyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYyCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCiBtc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MwogbXNnaWQgIm5hbWUgY29tbWl0cyB3aXRoIHRoZWlyIG9iamVjdCBuYW1lcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY2CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY1CiBtc2dpZCAic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY4CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY3CiBtc2dpZCAic2hvdyByZWZzIHVucmVhY2hhYmxlIGZyb20gYW55IG90aGVyIHJlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcwCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY5CiBtc2dpZCAic2hvdyBjb21taXRzIGluIHRvcG9sb2dpY2FsIG9yZGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzIKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzEKIG1zZ2lkICJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc0CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjczCiBtc2dpZCAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzYKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzUKIG1zZ2lkICJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgY2hpbGRyZW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NwogbXNnaWQgIjxuPlssPGJhc2U+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc5CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4CiBtc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9zaG93LXJlZi5jOjEwCiBtc2dpZCAiIgotImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0taGFzaCIKLSJbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW3BhdHRlcm4qXSAiCisiZ2l0IHNob3ctcmVmIFstcXwtLXF1aWV0XSBbLS12ZXJpZnldIFstLWhlYWRdIFstZHwtLWRlcmVmZXJlbmNlXSBbLXN8LS0iCisiaGFzaFs9PG4+XV0gWy0tYWJicmV2Wz08bj5dXSBbLS10YWdzXSBbLS1oZWFkc10gWy0tXSBbcGF0dGVybipdICIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL3Nob3ctcmVmLmM6MTEKQEAgLTc4NDAsMTU5ICs4MzEyLDE1NyBAQAogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MjU2CisjOiBidWlsdGluL3RhZy5jOjI1MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCi0iI1xuIgotIiMgV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgotIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKICJ3YW50IHRvLlxuIgotIiNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjI5OAorIzogYnVpbHRpbi90YWcuYzoyOTIKIG1zZ2lkICJ1bmFibGUgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzAwCisjOiBidWlsdGluL3RhZy5jOjI5NAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0YWcgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjMyNQorIzogYnVpbHRpbi90YWcuYzozMTkKIG1zZ2lkICJiYWQgb2JqZWN0IHR5cGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzM4CisjOiBidWlsdGluL3RhZy5jOjMzMgogbXNnaWQgInRhZyBoZWFkZXIgdG9vIGJpZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzozNzAKKyM6IGJ1aWx0aW4vdGFnLmM6MzY4CiBtc2dpZCAibm8gdGFnIG1lc3NhZ2U/IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mzc2CisjOiBidWlsdGluL3RhZy5jOjM3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgdGFnIG1lc3NhZ2UgaGFzIGJlZW4gbGVmdCBpbiAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDI1CisjOiBidWlsdGluL3RhZy5jOjQyMwogbXNnaWQgInN3aXRjaCAncG9pbnRzLWF0JyByZXF1aXJlcyBhbiBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo0MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDQ3CisjOiBidWlsdGluL3RhZy5jOjQ0NQogbXNnaWQgImxpc3QgdGFnIG5hbWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDQ5CisjOiBidWlsdGluL3RhZy5jOjQ0NwogbXNnaWQgInByaW50IDxuPiBsaW5lcyBvZiBlYWNoIHRhZyBtZXNzYWdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDUxCisjOiBidWlsdGluL3RhZy5jOjQ0OQogbXNnaWQgImRlbGV0ZSB0YWdzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDUyCisjOiBidWlsdGluL3RhZy5jOjQ1MAogbXNnaWQgInZlcmlmeSB0YWdzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU0CisjOiBidWlsdGluL3RhZy5jOjQ1MgogbXNnaWQgIlRhZyBjcmVhdGlvbiBvcHRpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU2CisjOiBidWlsdGluL3RhZy5jOjQ1NAogbXNnaWQgImFubm90YXRlZCB0YWcsIG5lZWRzIGEgbWVzc2FnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjQ1OAorIzogYnVpbHRpbi90YWcuYzo0NTYKIG1zZ2lkICJ0YWcgbWVzc2FnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2MAorIzogYnVpbHRpbi90YWcuYzo0NTgKIG1zZ2lkICJhbm5vdGF0ZWQgYW5kIEdQRy1zaWduZWQgdGFnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDY0CisjOiBidWlsdGluL3RhZy5jOjQ2MgogbXNnaWQgInVzZSBhbm90aGVyIGtleSB0byBzaWduIHRoZSB0YWciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo0NjUKKyM6IGJ1aWx0aW4vdGFnLmM6NDYzCiBtc2dpZCAicmVwbGFjZSB0aGUgdGFnIGlmIGV4aXN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2NgorIzogYnVpbHRpbi90YWcuYzo0NjQKIG1zZ2lkICJzaG93IHRhZyBsaXN0IGluIGNvbHVtbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo0NjgKKyM6IGJ1aWx0aW4vdGFnLmM6NDY2CiBtc2dpZCAiVGFnIGxpc3Rpbmcgb3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjQ3MQorIzogYnVpbHRpbi90YWcuYzo0NjkKIG1zZ2lkICJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo0NzcKKyM6IGJ1aWx0aW4vdGFnLmM6NDc1CiBtc2dpZCAicHJpbnQgb25seSB0YWdzIG9mIHRoZSBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1MDYKKyM6IGJ1aWx0aW4vdGFnLmM6NTA0CiBtc2dpZCAiLS1jb2x1bW4gYW5kIC1uIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjMKKyM6IGJ1aWx0aW4vdGFnLmM6NTIxCiBtc2dpZCAiLW4gb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNQorIzogYnVpbHRpbi90YWcuYzo1MjMKIG1zZ2lkICItLWNvbnRhaW5zIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NTI1CiBtc2dpZCAiLS1wb2ludHMtYXQgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjUzNQorIzogYnVpbHRpbi90YWcuYzo1MzMKIG1zZ2lkICJvbmx5IG9uZSAtRiBvciAtbSBvcHRpb24gaXMgYWxsb3dlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1NTUKKyM6IGJ1aWx0aW4vdGFnLmM6NTUzCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTYxCisjOiBidWlsdGluL3RhZy5jOjU1OQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIHRhZyBuYW1lLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3RhZy5jOjU2NgorIzogYnVpbHRpbi90YWcuYzo1NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi90YWcuYzo1ODQKKyM6IGJ1aWx0aW4vdGFnLmM6NTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgbG9jayB0aGUgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg2CisjOiBidWlsdGluL3RhZy5jOjU4NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHVwZGF0ZSB0aGUgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg4CisjOiBidWlsdGluL3RhZy5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGVkIHRhZyAnJXMnICh3YXMgJXMpXG4iCiBtc2dzdHIgIiIKQEAgLTgxNzAsMjIgKzg2NDAsMjUgQEAKIG1zZ3N0ciAiIgogCiAjOiBnaXQuYzoxNgotbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgorbXNnaWQgIiIKKyInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgorImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKyJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKIG1zZ3N0ciAiIgogCiAjOiBwYXJzZS1vcHRpb25zLmg6MTU2CiBtc2dpZCAibm8tb3AgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMjgKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzIKIG1zZ2lkICJiZSBtb3JlIHZlcmJvc2UiCiBtc2dzdHIgIiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzMAorIzogcGFyc2Utb3B0aW9ucy5oOjIzNAogbXNnaWQgImJlIG1vcmUgcXVpZXQiCiBtc2dzdHIgIiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzNgorIzogcGFyc2Utb3B0aW9ucy5oOjI0MAogbXNnaWQgInVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzIgogbXNnc3RyICIiCiAKQEAgLTgyMjYsNyArODY5OSw3IEBACiBtc2dzdHIgIiIKIAogIzogY29tbW9uLWNtZHMuaDoxNwotbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgorbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBHaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgogbXNnc3RyICIiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTgKQEAgLTg1MDcsNTkgKzg5ODAsNTkgQEAKICIoWW91IGNhbiB1c2UgXCJnaXQgYmlzZWN0IGJhZFwiIGFuZCBcImdpdCBiaXNlY3QgZ29vZFwiIGZvciB0aGF0LikiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWJpc2VjdC5zaDozNDcgZ2l0LWJpc2VjdC5zaDo0NzQKKyM6IGdpdC1iaXNlY3Quc2g6MzYzIGdpdC1iaXNlY3Quc2g6NDkwCiBtc2dpZCAiV2UgYXJlIG5vdCBiaXNlY3RpbmcuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzU0CisjOiBnaXQtYmlzZWN0LnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRpbnZhbGlkJyBpcyBub3QgYSB2YWxpZCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWJpc2VjdC5zaDozNjMKKyM6IGdpdC1iaXNlY3Quc2g6Mzc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGNoZWNrIG91dCBvcmlnaW5hbCBIRUFEICckYnJhbmNoJy5cbiIKICJUcnkgJ2dpdCBiaXNlY3QgcmVzZXQgPGNvbW1pdD4nLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MAorIzogZ2l0LWJpc2VjdC5zaDo0MDYKIG1zZ2lkICJObyBsb2dmaWxlIGdpdmVuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzkxCisjOiBnaXQtYmlzZWN0LnNoOjQwNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJGZpbGUgZm9yIHJlcGxheWluZyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQwOAorIzogZ2l0LWJpc2VjdC5zaDo0MjQKIG1zZ2lkICI/PyB3aGF0IGFyZSB5b3UgdGFsa2luZyBhYm91dD8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MjAKKyM6IGdpdC1iaXNlY3Quc2g6NDM2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJydW5uaW5nICRjb21tYW5kIgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDI3CisjOiBnaXQtYmlzZWN0LnNoOjQ0MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogImJpc2VjdCBydW4gZmFpbGVkOlxuIgogImV4aXQgY29kZSAkcmVzIGZyb20gJyRjb21tYW5kJyBpcyA8IDAgb3IgPj0gMTI4IgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDUzCisjOiBnaXQtYmlzZWN0LnNoOjQ2OQogbXNnaWQgImJpc2VjdCBydW4gY2Fubm90IGNvbnRpbnVlIGFueSBtb3JlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDU5CisjOiBnaXQtYmlzZWN0LnNoOjQ3NQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogImJpc2VjdCBydW4gZmFpbGVkOlxuIgogIidiaXNlY3Rfc3RhdGUgJHN0YXRlJyBleGl0ZWQgd2l0aCBlcnJvciBjb2RlICRyZXMiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NjYKKyM6IGdpdC1iaXNlY3Quc2g6NDgyCiBtc2dpZCAiYmlzZWN0IHJ1biBzdWNjZXNzIgogbXNnc3RyICIiCiAKQEAgLTg1NzQsNyArOTA0Nyw3IEBACiBtc2dpZCAiUHVsbCBpcyBub3QgcG9zc2libGUgYmVjYXVzZSB5b3UgaGF2ZSB1bm1lcmdlZCBmaWxlcy4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXB1bGwuc2g6MTk3CisjOiBnaXQtcHVsbC5zaDoyMDMKIG1zZ2lkICJ1cGRhdGluZyBhbiB1bmJvcm4gYnJhbmNoIHdpdGggY2hhbmdlcyBhZGRlZCB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIApAQCAtODU4Miw3ICs5MDU1LDcgQEAKICMuIFRoZSB3b3JraW5nIHRyZWUgYW5kIHRoZSBpbmRleCBmaWxlIGlzIHN0aWxsIGJhc2VkIG9uIHRoZQogIy4gJG9yaWdfaGVhZCBjb21taXQsIGJ1dCB3ZSBhcmUgbWVyZ2luZyBpbnRvICRjdXJyX2hlYWQuCiAjLiBGaXJzdCB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSB0byBtYXRjaCAkY3Vycl9oZWFkLgotIzogZ2l0LXB1bGwuc2g6MjI5CisjOiBnaXQtcHVsbC5zaDoyMzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiBmZXRjaCB1cGRhdGVkIHRoZSBjdXJyZW50IGJyYW5jaCBoZWFkLlxuIgpAQCAtODU5MCwxMSArOTA2MywxMSBAQAogIldhcm5pbmc6IGNvbW1pdCAkb3JpZ19oZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcHVsbC5zaDoyNTQKKyM6IGdpdC1wdWxsLnNoOjI2MAogbXNnaWQgIkNhbm5vdCBtZXJnZSBtdWx0aXBsZSBicmFuY2hlcyBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXB1bGwuc2g6MjU4CisjOiBnaXQtcHVsbC5zaDoyNjQKIG1zZ2lkICJDYW5ub3QgcmViYXNlIG9udG8gbXVsdGlwbGUgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIApAQCAtODgzNSwzNyArOTMwOCwzNyBAQAogbXNnaWQgIihUbyByZXN0b3JlIHRoZW0gdHlwZSBcImdpdCBzdGFzaCBhcHBseVwiKSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjg5CisjOiBnaXQtc3VibW9kdWxlLnNoOjkxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RyaXAgb25lIGNvbXBvbmVudCBvZmYgdXJsICckcmVtb3RldXJsJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjE2OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxOTYKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHN1Ym1vZHVsZSBtYXBwaW5nIGZvdW5kIGluIC5naXRtb2R1bGVzIGZvciBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjIyMworIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkdpdGRpciAnJGEnIGlzIHBhcnQgb2YgdGhlIHN1Ym1vZHVsZSBwYXRoICckYicgb3IgdmljZSB2ZXJzYSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMxNgorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNDkKICMsIHNoLWZvcm1hdAogbXNnaWQgInJlcG8gVVJMOiAnJHJlcG8nIG11c3QgYmUgYWJzb2x1dGUgb3IgYmVnaW4gd2l0aCAuL3wuLi8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMzMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzY2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJHNtX3BhdGgnIGFscmVhZHkgZXhpc3RzIGluIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgZm9sbG93aW5nIHBhdGggaXMgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgpAQCAtODg3MywxODAgKzkzNDYsMjMzIEBACiAiVXNlIC1mIGlmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgaXQuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzU1CisjOiBnaXQtc3VibW9kdWxlLnNoOjM4OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGV4aXN0aW5nIHJlcG8gYXQgJyRzbV9wYXRoJyB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzkwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJHNtX3BhdGgnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYSB2YWxpZCBnaXQgcmVwbyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2NQorIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkEgZ2l0IGRpcmVjdG9yeSBmb3IgJyRzbV9uYW1lJyBpcyBmb3VuZCBsb2NhbGx5IHdpdGggcmVtb3RlKHMpOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2NworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byByZXVzZSB0aGlzIGxvY2FsIGdpdCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjbG9uaW5nIGFnYWluIGZyb20iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAidXNlIHRoZSAnLS1mb3JjZScgb3B0aW9uLiBJZiB0aGUgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpcyBub3QgdGhlIGNvcnJlY3QgcmVwbyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM3MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJvciB5b3UgYXJlIHVuc3VyZSB3aGF0IHRoaXMgbWVhbnMgY2hvb3NlIGFub3RoZXIgbmFtZSB3aXRoIHRoZSAnLS1uYW1lJyAiCiAib3B0aW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM3MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDUKICMsIHNoLWZvcm1hdAogbXNnaWQgIlJlYWN0aXZhdGluZyBsb2NhbCBnaXQgZGlyZWN0b3J5IGZvciBzdWJtb2R1bGUgJyRzbV9uYW1lJy4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozODQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDE3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgc3VibW9kdWxlICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozODkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDIyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gYWRkIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzk0CisjOiBnaXQtc3VibW9kdWxlLnNoOjQzMQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDM3CisjOiBnaXQtc3VibW9kdWxlLnNoOjQ3NAogIywgc2gtZm9ybWF0CiBtc2dpZCAiRW50ZXJpbmcgJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDg4CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdG9wcGluZyBhdCAnJHNtX3BhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQ5NQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MzIKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBpbiAuZ2l0bW9kdWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjUwNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MDYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTE0CisjOiBnaXQtc3VibW9kdWxlLnNoOjU1MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVwZGF0ZSBtb2RlIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjE0CisjOiBnaXQtc3VibW9kdWxlLnNoOjU4OAorIywgc2gtZm9ybWF0Cittc2dpZCAiVXNlICcuJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZGVpbml0aWFsaXplIGFsbCBzdWJtb2R1bGVzIgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgYSAuZ2l0IGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYwNAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEwCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvICIKKyJkaXNjYXJkIHRoZW0iCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNsZWFyZWQgZGlyZWN0b3J5ICckc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgc3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE3CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYyNgorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCiAiTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzQ0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY0NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjYwCisjOiBnaXQtc3VibW9kdWxlLnNoOjc3NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIHJlYmFzZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjYxCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCittc2dpZCAiVW5hYmxlIHRvIHJlYmFzZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjY2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY3MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIiIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NzMKLSMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCi1tc2dzdHIgIiIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2OTUgZ2l0LXN1Ym1vZHVsZS5zaDoxMDE3Ci0jLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgogbXNnc3RyICIiCiAKICM6IGdpdC1zdWJtb2R1bGUuc2g6ODAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjgwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKIG1zZ2lkICJUaGUgLS1jYWNoZWQgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC0tZmlsZXMgb3B0aW9uIgogbXNnc3RyICIiCiAKICMuIHVuZXhwZWN0ZWQgdHlwZQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIG1vZGUgJG1vZF9kc3QiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NjEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTk3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfc3JjIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODY0CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0cyAkc2hhMV9zcmMgYW5kICRzaGExX2RzdCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjg5MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CiBtc2dpZCAiYmxvYiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkzMAotbXNnaWQgIiMgU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjYKK21zZ2lkICJTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkzMgotbXNnaWQgIiMgU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2OAorbXNnaWQgIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDgwCisjOiBnaXQtc3VibW9kdWxlLnNoOjExNTMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjEyMTYKICMsIHNoLWZvcm1hdAogbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKZGlmZiAtLWdpdCBhL3BvL3N2LnBvIGIvcG8vc3YucG8KaW5kZXggZWU2YjBmYy4uYTVjODhjOSAxMDA2NDQKLS0tIGEvcG8vc3YucG8KKysrIGIvcG8vc3YucG8KQEAgLTEsMTQgKzEsMTQgQEAKICMgU3dlZGlzaCB0cmFuc2xhdGlvbnMgZm9yIEdpdC4KLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgUGV0ZXIga3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+CisjIENvcHlyaWdodCAoQykgMjAxMC0yMDEzIFBldGVyIGtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgR2l0IHBhY2thZ2UuCi0jIFBldGVyIEtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiwgMjAxMCwgMjAxMSwgMjAxMi4KKyMgUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLgogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0IDEuOC4xXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQgMS44LjNcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogR2l0IE1haWxpbmcgTGlzdCA8Z2l0QHZnZXIua2VybmVsLm9yZz5cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMi0xMS0zMCAxMjo0MCswODAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxMi0xMS0zMCAxMDo0OSswMTAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMDQtMzAgMTI6MjIrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogUGV0ZXIgS3JlZnRpbmcgPHBldGVyQHNvZnR3b2x2ZXMucHAuc2U+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgogIkxhbmd1YWdlOiBzdlxuIgpAQCAtMTcsNyArMTcsNyBAQAogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiAhPSAxKTtcbiIKIAotIzogYWR2aWNlLmM6NDAKKyM6IGFkdmljZS5jOjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgImhpbnQ6ICUuKnNcbiIKIG1zZ3N0ciAidGlwczogJS4qc1xuIgpAQCAtMjYsNyArMjYsNyBAQAogIy4gKiBNZXNzYWdlIHVzZWQgYm90aCB3aGVuICdnaXQgY29tbWl0JyBmYWlscyBhbmQgd2hlbgogIy4gKiBvdGhlciBjb21tYW5kcyBkb2luZyBhIG1lcmdlIGRvLgogIy4KLSM6IGFkdmljZS5jOjcwCisjOiBhZHZpY2UuYzo4MwogbXNnaWQgIiIKICJGaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLFxuIgogImFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nIGFzXG4iCkBAIC01Nyw4MiArNTcsMjA2IEBACiBtc2dpZCAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIC0tbGlzdCIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPGFya2l2PiBbLS1leGVjIDxrbWQ+XSAtLWxpc3QiCiAKLSM6IGFyY2hpdmUuYzozMjIKKyM6IGFyY2hpdmUuYzozMjMKIG1zZ2lkICJmbXQiCiBtc2dzdHIgImZtdCIKIAotIzogYXJjaGl2ZS5jOjMyMgorIzogYXJjaGl2ZS5jOjMyMwogbXNnaWQgImFyY2hpdmUgZm9ybWF0IgogbXNnc3RyICJhcmtpdmZvcm1hdCIKIAotIzogYXJjaGl2ZS5jOjMyMyBidWlsdGluL2xvZy5jOjEwODQKKyM6IGFyY2hpdmUuYzozMjQgYnVpbHRpbi9sb2cuYzoxMTI2CiBtc2dpZCAicHJlZml4IgogbXNnc3RyICJwcmVmaXgiCiAKLSM6IGFyY2hpdmUuYzozMjQKKyM6IGFyY2hpdmUuYzozMjUKIG1zZ2lkICJwcmVwZW5kIHByZWZpeCB0byBlYWNoIHBhdGhuYW1lIGluIHRoZSBhcmNoaXZlIgogbXNnc3RyICJsw6RnZyB0aWxsIHByZWZpeCB0aWxsIHZhcmplIHPDtmt2w6RnIGkgYXJraXZldCIKIAotIzogYXJjaGl2ZS5jOjMyNSBidWlsdGluL2FyY2hpdmUuYzo5MSBidWlsdGluL2JsYW1lLmM6MjM5MAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTEgYnVpbHRpbi9jb25maWcuYzo1NSBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQyCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQ0IGJ1aWx0aW4vZ3JlcC5jOjcxNSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTQgYnVpbHRpbi9scy1maWxlcy5jOjQ5NyBidWlsdGluL25vdGVzLmM6NTQwCi0jOiBidWlsdGluL25vdGVzLmM6Njk3IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA3IHBhcnNlLW9wdGlvbnMuaDoxNDkKKyM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6ODggYnVpbHRpbi9ibGFtZS5jOjIzNzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyIGJ1aWx0aW4vY29uZmlnLmM6NTUgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NyBidWlsdGluL2dyZXAuYzo3MTUgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwIGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTMgYnVpbHRpbi9ub3Rlcy5jOjUzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5MyBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5CiBtc2dpZCAiZmlsZSIKIG1zZ3N0ciAiZmlsIgogCi0jOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyCisjOiBhcmNoaXZlLmM6MzI3IGJ1aWx0aW4vYXJjaGl2ZS5jOjg5CiBtc2dpZCAid3JpdGUgdGhlIGFyY2hpdmUgdG8gdGhpcyBmaWxlIgogbXNnc3RyICJza3JpdiBhcmtpdmV0IHRpbGwgZmlsZW4iCiAKLSM6IGFyY2hpdmUuYzozMjgKKyM6IGFyY2hpdmUuYzozMjkKIG1zZ2lkICJyZWFkIC5naXRhdHRyaWJ1dGVzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICJsw6RzIC5naXRhdHRyaWJ1dGVzIGkgYXJiZXRza2F0YWxvZ2VuIgogCi0jOiBhcmNoaXZlLmM6MzI5CisjOiBhcmNoaXZlLmM6MzMwCiBtc2dpZCAicmVwb3J0IGFyY2hpdmVkIGZpbGVzIG9uIHN0ZGVyciIKIG1zZ3N0ciAicmFwcG9ydGVyYSBhcmtpdmVyYWRlIGZpbGVyIHDDpSBzdGFuZGFyZCBmZWwiCiAKLSM6IGFyY2hpdmUuYzozMzAKKyM6IGFyY2hpdmUuYzozMzEKIG1zZ2lkICJzdG9yZSBvbmx5IgogbXNnc3RyICJlbmRhc3Qgc3BhcmEiCiAKLSM6IGFyY2hpdmUuYzozMzEKKyM6IGFyY2hpdmUuYzozMzIKIG1zZ2lkICJjb21wcmVzcyBmYXN0ZXIiCiBtc2dzdHIgImtvbXByaW1lcmEgc25hYmJhcmUiCiAKLSM6IGFyY2hpdmUuYzozMzkKKyM6IGFyY2hpdmUuYzozNDAKIG1zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCiBtc2dzdHIgImtvbXByaW1lcmEgYsOkdHRyZSIKIAotIzogYXJjaGl2ZS5jOjM0MgorIzogYXJjaGl2ZS5jOjM0MwogbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKIG1zZ3N0ciAidmlzYSB1bmRlcnN0w7ZkZGEgYXJraXZmb3JtYXQiCiAKLSM6IGFyY2hpdmUuYzozNDQgYnVpbHRpbi9hcmNoaXZlLmM6OTMgYnVpbHRpbi9jbG9uZS5jOjg1CisjOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkwIGJ1aWx0aW4vY2xvbmUuYzo4NgogbXNnaWQgInJlcG8iCiBtc2dzdHIgImFya2l2IgogCi0jOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjk0CisjOiBhcmNoaXZlLmM6MzQ2IGJ1aWx0aW4vYXJjaGl2ZS5jOjkxCiBtc2dpZCAicmV0cmlldmUgdGhlIGFyY2hpdmUgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSA8cmVwbz4iCiBtc2dzdHIgImjDpG10YSBhcmtpdmV0IGZyw6VuIGZqw6RycmFya2l2ZXQgPGFya2l2PiIKIAotIzogYXJjaGl2ZS5jOjM0NiBidWlsdGluL2FyY2hpdmUuYzo5NSBidWlsdGluL25vdGVzLmM6NjE5CisjOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyIGJ1aWx0aW4vbm90ZXMuYzo2MTUKIG1zZ2lkICJjb21tYW5kIgogbXNnc3RyICJrb21tYW5kbyIKIAotIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5NgorIzogYXJjaGl2ZS5jOjM0OCBidWlsdGluL2FyY2hpdmUuYzo5MwogbXNnaWQgInBhdGggdG8gdGhlIHJlbW90ZSBnaXQtdXBsb2FkLWFyY2hpdmUgY29tbWFuZCIKIG1zZ3N0ciAic8O2a3bDpGcgdGlsbCBrb21tYW5kb3QgZ2l0LXVwbG9hZC1hcmNoaXZlIHDDpSBmasOkcnJlbiIKIAogIzogYXR0ci5jOjI1OQogbXNnaWQgIiIKLSJOZWdhdGl2ZSBwYXR0ZXJucyBhcmUgZm9yYmlkZGVuIGluIGdpdCBhdHRyaWJ1dGVzXG4iCisiTmVnYXRpdmUgcGF0dGVybnMgYXJlIGlnbm9yZWQgaW4gZ2l0IGF0dHJpYnV0ZXNcbiIKICJVc2UgJ1xcIScgZm9yIGxpdGVyYWwgbGVhZGluZyBleGNsYW1hdGlvbi4iCiBtc2dzdHIgIiIKLSJOZWdhdGl2YSBtw7Zuc3RlciDDpHIgZsO2cmJqdWRuYSBpIGdpdC1hdHRyaWJ1dFxuIgorIk5lZ2F0aXZhIG3Dtm5zdGVyIGlnbm9yZXJhcyBpIGdpdC1hdHRyaWJ1dFxuIgogIkFudsOkbmQgJ1xcIScgZsO2ciBhdHQgaW5sZWRhIG1lZCBldHQgdXRyb3BzdGVja2VuLiIKIAorIzogYnJhbmNoLmM6NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHNldHRpbmcgYnJhbmNoICVzIGFzIGl0cyBvd24gdXBzdHJlYW0uIgorbXNnc3RyICJTdMOkbGxlciBpbnRlIGluIGdyZW5lbiAlcyBzb20gc2luIGVnZW4gdXBwc3Ryw7Ztc2dyZW4uIgorCisjOiBicmFuY2guYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIiIKKyJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZmrDpHJyZ3JlbmVuICVzIGZyw6VuICVzIGdlbm9tIG9tYmFzZXJpbmcuIgorCisjOiBicmFuY2guYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcy4iCittc2dzdHIgIkdyZW5lbiAlcyBzdMOkbGxkZXMgaW4gYXR0IHNww6VyYSBmasOkcnJncmVuZW4gJXMgZnLDpW4gJXMuIgorCisjOiBicmFuY2guYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIkdyZW5lbiAlcyBzdMOkbGxkZXMgaW4gYXR0IHNww6VyYSBkZW4gbG9rYWxhIGdyZW5lbiAlcyBnZW5vbSBvbWJhc2VyaW5nLiIKKworIzogYnJhbmNoLmM6ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZGVuIGxva2FsYSBncmVuZW4gJXMuIgorCisjOiBicmFuY2guYzo5MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZmrDpHJyZWZlcmVuc2VuICVzIGdlbm9tIG9tYmFzZXJpbmcuIgorCisjOiBicmFuY2guYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZmrDpHJyZWZlcmVuc2VuICVzLiIKKworIzogYnJhbmNoLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICIiCisiR3JlbmVuICVzIHN0w6RsbGRlcyBpbiBhdHQgc3DDpXJhIGRlbiBsb2thbGEgcmVmZXJlbnNlbiAlcyBnZW5vbSBvbWJhc2VyaW5nLiIKKworIzogYnJhbmNoLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMuIgorbXNnc3RyICJHcmVuZW4gJXMgc3TDpGxsZGVzIGluIGF0dCBzcMOlcmEgZGVuIGxva2FsYSByZWZlcmVuc2VuICVzLiIKKworIzogYnJhbmNoLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRyYWNraW5nIG5vdCBzZXQgdXA6IG5hbWUgdG9vIGxvbmc6ICVzIgorbXNnc3RyICJTcMOlcm5pbmcgaGFyIGludGUgc3TDpGxsdHMgaW46IG5hbW5ldCBmw7ZyIGzDpW5ndDogJXMiCisKKyM6IGJyYW5jaC5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIgorbXNnc3RyICJTcMOlcmFyIGludGU6IHR2ZXR5ZGlnIGluZm9ybWF0aW9uIGbDtnIgcmVmZXJlbnNlbiAlcyIKKworIzogYnJhbmNoLmM6MTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgYnJhbmNoIG5hbWUuIgorbXNnc3RyICJcIiVzXCIgw6RyIGludGUgZXR0IGdpbHRpZ3QgZ3Jlbm5hbW4uIgorCisjOiBicmFuY2guYzoxODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIkRldCBmaW5ucyByZWRhbiBlbiBncmVuIHNvbSBoZXRlciBcIiVzXCIiCisKKyM6IGJyYW5jaC5jOjE5NQorbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKK21zZ3N0ciAiS2FuIGludGUgdHZpbmdhIHVwcGRhdGVyaW5nIGF2IGFrdHVlbGwgZ3Jlbi4iCisKKyM6IGJyYW5jaC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKK21zZ3N0ciAiS2FuIGludGUgc3TDpGxsYSBpbiBzcMOlcm5pbmc7IHN0YXJ0cHVua3RlbiBcIiVzXCIgw6RyIGludGUgZW4gZ3Jlbi4iCisKKyM6IGJyYW5jaC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICJ0aGUgcmVxdWVzdGVkIHVwc3RyZWFtIGJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJkZW4gZWZ0ZXJmcsOlZ2FkZSB1cHBzdHLDtm1zZ3JlbmVuIFwiJXNcIiBmaW5ucyBpbnRlIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyJPbSBkdSBoYXIgdMOkbmt0IGJhc2VyYSBkaXR0IGFyYmV0ZSBww6UgZW4gdXBwc3Ryw7Ztc2dyZW5cbiIKKyJzb20gcmVkYW4gZmlubnMgcMOlIGZqw6RycmVuIGthbiBkdSBiZWjDtnZhIGvDtnJhIFwiZ2l0IGZldGNoXCJcbiIKKyJmw7ZyIGF0dCBow6RtdGEgZGVuLlxuIgorIlxuIgorIk9tIGR1IGhhciB0w6Rua3Qgc8OkbmRhIGluIGVuIG55IGxva2FsIGdyZW4gc29tIHNrYWxsXG4iCisic3DDpXJhIGRlc3MgZmrDpHJybW90c3ZhcmlnaGV0IGthbiBkdSBhbnbDpG5kYSBcImdpdCBwdXNoIC11XCJcbiIKKyJmw7ZyIGF0dCBzdMOkbGxhIGluIHVwcHN0csO2bXNrb25maWd1cmF0aW9uZW4gbsOkciBkdSBzw6RuZGVyIGluLiIKKworIzogYnJhbmNoLmM6MjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAiT2JqZWt0bmFtbmV0IMOkciBpbnRlIGdpbHRpZ3Q6IFwiJXNcIi4iCisKKyM6IGJyYW5jaC5jOjI3MAorIywgYy1mb3JtYXQKK21zZ2lkICJBbWJpZ3VvdXMgb2JqZWN0IG5hbWU6ICclcycuIgorbXNnc3RyICJPYmpla3RuYW1uZXQgw6RyIHR2ZXR5ZGlndDogXCIlc1wiLiIKKworIzogYnJhbmNoLmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIGJyYW5jaCBwb2ludDogJyVzJy4iCittc2dzdHIgIkF2Z3JlbmluZ3NwdW5rdGVuIMOkciBpbnRlIGdpbHRpZzogXCIlc1wiIgorCisjOiBicmFuY2guYzoyODEKK21zZ2lkICJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGzDpXNhIHJlZmVyZW5zIGbDtnIgdXBwZGF0ZXJpbmciCisKKyM6IGJyYW5jaC5jOjI5OQorbXNnaWQgIkZhaWxlZCB0byB3cml0ZSByZWYiCittc2dzdHIgIk1pc3NseWNrYWRlcyBza3JpdmEgcmVmZXJlbnMiCisKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgbG9vayBsaWtlIGEgdjIgYnVuZGxlIGZpbGUiCkBAIC0xNDMsNyArMjY3LDcgQEAKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVhZGVyOiAlcyVzICglZCkiCiBtc2dzdHIgIm9rw6RudCBodXZ1ZDogJXMlcyAoJWQpIgogCi0jOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NAorIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyIKIG1zZ3N0ciAia3VuZGUgaW50ZSDDtnBwbmEgXCIlc1wiIgpAQCAtMTUyLDM1ICsyNzYsMzUgQEAKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIHRoZXNlIHByZXJlcXVpc2l0ZSBjb21taXRzOiIKIG1zZ3N0ciAiQXJraXZldCBzYWtuYXIgZGVzc2EgbsO2ZHbDpG5kaWdhIGluY2hlY2tuaW5nYXI6IgogCi0jOiBidW5kbGUuYzoxNjQgc2VxdWVuY2VyLmM6NTYyIHNlcXVlbmNlci5jOjk5NCBidWlsdGluL2xvZy5jOjI5MAotIzogYnVpbHRpbi9sb2cuYzo3MzIgYnVpbHRpbi9sb2cuYzoxMzE5IGJ1aWx0aW4vbG9nLmM6MTUzNSBidWlsdGluL21lcmdlLmM6MzQ3Ci0jOiBidWlsdGluL3Nob3J0bG9nLmM6MTgxCisjOiBidW5kbGUuYzoxNjQgc2VxdWVuY2VyLmM6NjUxIHNlcXVlbmNlci5jOjExMDEgYnVpbHRpbi9sb2cuYzozMDAKKyM6IGJ1aWx0aW4vbG9nLmM6NzcwIGJ1aWx0aW4vbG9nLmM6MTM0NCBidWlsdGluL2xvZy5jOjE1NzAgYnVpbHRpbi9tZXJnZS5jOjM0OQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NQogbXNnaWQgInJldmlzaW9uIHdhbGsgc2V0dXAgZmFpbGVkIgogbXNnc3RyICJtaXNzbHlja2FkZXMgc2thcGEgcmV2aXNpb25zdHJhdmVyc2VyaW5nIgogCiAjOiBidW5kbGUuYzoxODYKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWYiCi1tc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmcyIKLW1zZ3N0clswXSAiUGFrZXRldCAoYnVuZGxlbikgaW5uZWjDpWxsZXIgJWQgcmVmZXJlbnMiCi1tc2dzdHJbMV0gIlBha2V0ZXQgKGJ1bmRsZW4pIGlubmVow6VsbGVyICVkIHJlZmVyZW5zZXIiCittc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgdGhlc2UgJWQgcmVmczoiCittc2dzdHJbMF0gIlBha2V0ZXQgKGJ1bmRsZW4pIGRlbm5hIHJlZmVyZW5zOiIKK21zZ3N0clsxXSAiUGFrZXRldCAoYnVuZGxlbikgZGVzc2EgJWQgcmVmZXJlbnNlcjoiCiAKLSM6IGJ1bmRsZS5jOjE5MgorIzogYnVuZGxlLmM6MTkzCiBtc2dpZCAiVGhlIGJ1bmRsZSByZWNvcmRzIGEgY29tcGxldGUgaGlzdG9yeS4iCiBtc2dzdHIgIlBha2V0ZXQgKGJ1bmRsZW4pIGJlc2tyaXZlciBlbiBrb21wbGV0dCBoaXN0b3Jpay4iCiAKICM6IGJ1bmRsZS5jOjE5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnMiCi1tc2dzdHJbMF0gIlBha2V0ZXQgKGJ1bmRsZW4pIGtyw6R2ZXIgZGVubmEgcmVmZXJlbnMiCi1tc2dzdHJbMV0gIlBha2V0ZXQgKGJ1bmRsZW4pIGtyw6R2ZXIgZGVzc2EgJWQgcmVmZXJlbnNlciIKK21zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAiUGFrZXRldCAoYnVuZGxlbikga3LDpHZlciBkZW5uYSByZWZlcmVuczoiCittc2dzdHJbMV0gIlBha2V0ZXQgKGJ1bmRsZW4pIGtyw6R2ZXIgZGVzc2EgJWQgcmVmZXJlbnNlcjoiCiAKICM6IGJ1bmRsZS5jOjI5NAogbXNnaWQgInJldi1saXN0IGRpZWQiCiBtc2dzdHIgInJldi1saXN0IGRvZyIKIAotIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTIxNSBidWlsdGluL3Nob3J0bG9nLmM6Mjg0CisjOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAib2vDpG50IGFyZ3VtZW50OiAlcyIKQEAgLTMwNiwyMiArNDMwLDIyIEBACiBtc2dzdHJbMF0gIiVsdSDDpXIgc2VkYW4iCiBtc2dzdHJbMV0gIiVsdSDDpXIgc2VkYW4iCiAKLSM6IGRpZmYuYzoxMTEKKyM6IGRpZmYuYzoxMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICBGYWlsZWQgdG8gcGFyc2UgZGlyc3RhdCBjdXQtb2ZmIHBlcmNlbnRhZ2UgJyVzJ1xuIgogbXNnc3RyICIgIE1pc3NseWNrYWRlcyB0b2xrYSBkaXJzdGF0LWF2c2vDpHJuaW5nc3Byb2NlbnRhbmRlbCBcIiVzXCJcbiIKIAotIzogZGlmZi5jOjExNgorIzogZGlmZi5jOjExNwogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyVzJ1xuIgogbXNnc3RyICIgIE9rw6RuZCBkaXJzdGF0LXBhcmFtZXRlciBcIiVzXCJcbiIKIAotIzogZGlmZi5jOjE5NAorIzogZGlmZi5jOjIxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHZhbHVlIGZvciAnZGlmZi5zdWJtb2R1bGUnIGNvbmZpZyB2YXJpYWJsZTogJyVzJyIKIG1zZ3N0ciAiT2vDpG50IHbDpHJkZSBmw7ZyIGtvbmZpZ3VyYXRpb25zdmFyaWFiZWxuIFwiZGlmZi5zdWJtb2R1bGVcIjogXCIlc1wiIgogCi0jOiBkaWZmLmM6MjM3CisjOiBkaWZmLmM6MjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJGb3VuZCBlcnJvcnMgaW4gJ2RpZmYuZGlyc3RhdCcgY29uZmlnIHZhcmlhYmxlOlxuIgpAQCAtMzMwLDcgKzQ1NCw3IEBACiAiSGl0dGFkZSBmZWwgaSBrb25maWd1cmF0aW9uc3ZhcmlhYmVsbiBcImRpZmYuZGlyc3RhdFwiOlxuIgogIiVzIgogCi0jOiBkaWZmLmM6MzQ5NAorIzogZGlmZi5jOjM0ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZhaWxlZCB0byBwYXJzZSAtLWRpcnN0YXQvLVggb3B0aW9uIHBhcmFtZXRlcjpcbiIKQEAgLTMzOSwxMiArNDYzLDEyIEBACiAiTWlzc2x5Y2thZGVzIHRvbGthIGFyZ3VtZW50IHRpbGwgZmxhZ2dhbiAtLWRpcnN0YXQvLVg7XG4iCiAiJXMiCiAKLSM6IGRpZmYuYzozNTA4CisjOiBkaWZmLmM6MzQ5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgLS1zdWJtb2R1bGUgb3B0aW9uIHBhcmFtZXRlcjogJyVzJyIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIHRvbGthIGFyZ3VtZW50IHRpbGwgZmxhZ2dhbiAtLXN1Ym1vZHVsZTogXCIlc1wiIgogCi0jOiBncGctaW50ZXJmYWNlLmM6NTkKKyM6IGdwZy1pbnRlcmZhY2UuYzo1OSBncGctaW50ZXJmYWNlLmM6MTMxCiBtc2dpZCAiY291bGQgbm90IHJ1biBncGcuIgogbXNnc3RyICJrdW5kZSBpbnRlIGvDtnJhIGdwZy4iCiAKQEAgLTM1NiwxNyArNDgwLDI3IEBACiBtc2dpZCAiZ3BnIGZhaWxlZCB0byBzaWduIHRoZSBkYXRhIgogbXNnc3RyICJncGcgbWlzc2x5Y2thZGVzIHNpZ25lcmEgZGF0YSIKIAotIzogZ3JlcC5jOjE2MjIKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIKK21zZ3N0ciAia3VuZGUgaW50ZSBza2FwYSB0ZW1wb3LDpHJhIGZpbGVuIFwiJXNcIjogJXMiCisKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHdyaXRpbmcgZGV0YWNoZWQgc2lnbmF0dXJlIHRvICclcyc6ICVzIgorbXNnc3RyICJtaXNzbHlja2FkZXMgc2tyaXZhIGZyaXN0w6VlbmRlIHNpZ25hdHVyIHRpbGwgXCIlc1wiOiAlcyIKKworIzogZ3JlcC5jOjE2MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogdW5hYmxlIHRvIHJlYWQgJXMiCiBtc2dzdHIgIlwiJXNcIiBrdW5kZSBpbnRlIGzDpHNhICVzIgogCi0jOiBncmVwLmM6MTYzOQorIzogZ3JlcC5jOjE2NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogJXMiCiBtc2dzdHIgIlwiJXNcIjogJXMiCiAKLSM6IGdyZXAuYzoxNjUwCisjOiBncmVwLmM6MTY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICJcIiVzXCI6IGtvcnQgbMOkc25pbmcgJXMiCkBAIC0zODAsNyArNTE0LDExIEBACiBtc2dpZCAiZ2l0IGNvbW1hbmRzIGF2YWlsYWJsZSBmcm9tIGVsc2V3aGVyZSBvbiB5b3VyICRQQVRIIgogbXNnc3RyICJnaXQta29tbWFuZG9uIGZyw6VuIGFuZHJhIHBsYXRzZXIgaSBkaW4gJFBBVEgiCiAKLSM6IGhlbHAuYzoyNzUKKyM6IGhlbHAuYzoyMzUKK21zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgorbXNnc3RyICJEZSBtZXN0IGFudsOkbmRhIGdpdC1rb21tYW5kb25hIMOkcjoiCisKKyM6IGhlbHAuYzoyOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgYXBwZWFycyB0byBiZSBhIGdpdCBjb21tYW5kLCBidXQgd2Ugd2VyZSBub3RcbiIKQEAgLTM4OSwxMSArNTI3LDExIEBACiAiXCIlc1wiIHZlcmthciB2YXJhIGV0dCBnaXQta29tbWFuZG8sIG1lbiB2aSBrYW4gaW50ZVxuIgogImvDtnJhIGRldC4gS2Fuc2tlIGdpdC0lcyDDpHIgdHJhc2lndD8iCiAKLSM6IGhlbHAuYzozMzIKKyM6IGhlbHAuYzozNDkKIG1zZ2lkICJVaCBvaC4gWW91ciBzeXN0ZW0gcmVwb3J0cyBubyBHaXQgY29tbWFuZHMgYXQgYWxsLiIKIG1zZ3N0ciAiT2ogZMOlLiBEaXR0IHN5c3RlbSByYXBwb3J0ZXJhciBpbmdhIEdpdC1rb21tYW5kb24gYWxscy4iCiAKLSM6IGhlbHAuYzozNTQKKyM6IGhlbHAuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldBUk5JTkc6IFlvdSBjYWxsZWQgYSBHaXQgY29tbWFuZCBuYW1lZCAnJXMnLCB3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKQEAgLTQwMiwxNyArNTQwLDE3IEBACiAiVkFSTklORzogRHUgYW5yb3BhZGUgZXR0IEdpdC1rb21tYW5kbyB2aWQgbmFtbiBcIiVzXCIsIHNvbSBpbnRlIGZpbm5zLlxuIgogIkZvcnRzw6R0dGVyIHVuZGVyIGbDtnJ1dHPDpHR0bmluZ2VuIGF0dCBkdSBtZW5hZGUgXCIlc1wiIgogCi0jOiBoZWxwLmM6MzU5CisjOiBoZWxwLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLiIKIG1zZ3N0ciAiYXV0b21hdGlza3Qgb20gJTAuMWYgc2VrdW5kZXIuLi4iCiAKLSM6IGhlbHAuYzozNjYKKyM6IGhlbHAuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l0OiBcIiVzXCIgw6RyIGludGUgZXR0IGdpdC1rb21tYW5kby4gU2UgXCJnaXQgLS1oZWxwXCIuIgogCi0jOiBoZWxwLmM6MzcwCisjOiBoZWxwLmM6Mzg3CiBtc2dpZCAiIgogIlxuIgogIkRpZCB5b3UgbWVhbiB0aGlzPyIKQEAgLTQzMCw4ICs1NjgsOCBAQAogbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKIG1zZ3N0ciAibWlzc2x5Y2thZHMgbMOkc2EgY2FjaGVuIgogCi0jOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzMzIGJ1aWx0aW4vY2hlY2tvdXQuYzo1MzQKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1ODYKKyM6IG1lcmdlLmM6MTEwIGJ1aWx0aW4vY2hlY2tvdXQuYzozNjUgYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jbG9uZS5jOjY0NQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwiCiAKQEAgLTQ4MCw3ICs2MTgsNyBAQAogbXNnaWQgImJsb2IgZXhwZWN0ZWQgZm9yICVzICclcyciCiBtc2dzdHIgImJsb2IgZsO2cnbDpG50YWRlcyBmw7ZyICVzIFwiJXNcIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzczIGJ1aWx0aW4vY2xvbmUuYzozMDIKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBvcGVuICclcyciCiBtc2dzdHIgIm1pc3NseWNrYWRlcyDDtnBwbmEgXCIlc1wiIgpAQCAtNjE0LDcgKzc1Miw3IEBACiBtc2dpZCAiQXV0by1tZXJnaW5nICVzIgogbXNnc3RyICJTbMOlciBpaG9wICVzIGF1dG9tYXRpc2t0IgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjMzIGdpdC1zdWJtb2R1bGUuc2g6ODkzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjMzIGdpdC1zdWJtb2R1bGUuc2g6MTAyOQogbXNnaWQgInN1Ym1vZHVsZSIKIG1zZ3N0ciAidW5kZXJtb2R1bCIKIApAQCAtNjg1LDQzICs4MjMsNjIgQEAKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciCiBtc2dzdHIgIkt1bmRlIGludGUgdG9sa2Egb2JqZWt0ZXQgXCIlc1wiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDA5IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY1OAogbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iCiBtc2dzdHIgIkt1bmRlIGludGUgc2tyaXZhIGluZGV4ZXQuIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NDk0CisjOiBvYmplY3QuYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCittc2dzdHIgImt1bmRlIGludGUgdG9sa2Egb2JqZWt0ZXQ6ICVzIgorCisjOiBwYXJzZS1vcHRpb25zLmM6NDg5CiBtc2dpZCAiLi4uIgogbXNnc3RyICIuLi4iCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTIKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzIgogbXNnc3RyICJhbnbDpG5kbmluZzogJXMiCiAKICMuIFRSQU5TTEFUT1JTOiB0aGUgY29sb24gaGVyZSBzaG91bGQgYWxpZ24gd2l0aCB0aGUKICMuIG9uZSBpbiAidXNhZ2U6ICVzIiB0cmFuc2xhdGlvbgotIzogcGFyc2Utb3B0aW9ucy5jOjUxNgorIzogcGFyc2Utb3B0aW9ucy5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICBvcjogJXMiCiBtc2dzdHIgIiAgICAgZWxsZXI6ICVzIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NTE5CisjOiBwYXJzZS1vcHRpb25zLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICAlcyIKIG1zZ3N0ciAiICAgICVzIgogCi0jOiByZW1vdGUuYzoxNjMyCisjOiBwYXJzZS1vcHRpb25zLmM6NTQ4Cittc2dpZCAiLU5VTSIKK21zZ3N0ciAiLVRBTCIKKworIzogcGF0aHNwZWMuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJQYXRoICclcycgaXMgaW4gc3VibW9kdWxlICclLipzJyIKK21zZ3N0ciAiU8O2a3bDpGdlbiBcIiVzXCIgw6RyIGkgdW5kZXJtb2R1bGVuIFwiJS4qc1wiIgorCisjOiBwYXRoc3BlYy5jOjk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKK21zZ3N0ciAiXCIlc1wiIMOkciBww6UgYW5kcmEgc2lkYW4gYXYgZW4gc3ltYm9saXNrIGzDpG5rIgorCisjOiByZW1vdGUuYzoxNzgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0LlxuIgogbXNnaWRfcGx1cmFsICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdHMuXG4iCiBtc2dzdHJbMF0gIkRpbiBncmVuIGxpZ2dlciBmw7ZyZSBcIiVzXCIgbWVkICVkIGluY2hlY2tuaW5nLlxuIgogbXNnc3RyWzFdICJEaW4gZ3JlbiBsaWdnZXIgZsO2cmUgXCIlc1wiIG1lZCAlZCBpbmNoZWNrbmluZ2FyLlxuIgogCi0jOiByZW1vdGUuYzoxNjM3CisjOiByZW1vdGUuYzoxNzg3CiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1c2hcIiB0byBwdWJsaXNoIHlvdXIgbG9jYWwgY29tbWl0cylcbiIKIG1zZ3N0ciAiICAoYW52w6RuZCBcImdpdCBwdXNoXCIgZsO2ciBhdHQgcHVibGljZXJhIGRpbmEgbG9rYWxhIGluY2hlY2tuaW5nYXIpXG4iCiAKLSM6IHJlbW90ZS5jOjE2NDAKKyM6IHJlbW90ZS5jOjE3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCBhbmQgY2FuIGJlIGZhc3QtZm9yd2FyZGVkLlxuIgogbXNnaWRfcGx1cmFsICIiCkBAIC03MzEsMTEgKzg4OCwxMSBAQAogbXNnc3RyWzFdICIiCiAiRGluIGdyZW4gbGlnZ2VyIGVmdGVyIFwiJXNcIiBtZWQgJWQgaW5jaGVja25pbmdhciwgb2NoIGthbiBzbmFiYnNwb2xhcy5cbiIKIAotIzogcmVtb3RlLmM6MTY0NworIzogcmVtb3RlLmM6MTc5OAogbXNnaWQgIiAgKHVzZSBcImdpdCBwdWxsXCIgdG8gdXBkYXRlIHlvdXIgbG9jYWwgYnJhbmNoKVxuIgogbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IHB1bGxcIiBmw7ZyIGF0dCB1cHBkYXRlcmEgZGluIGxva2FsYSBncmVuKVxuIgogCi0jOiByZW1vdGUuYzoxNjUwCisjOiByZW1vdGUuYzoxODAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3VyIGJyYW5jaCBhbmQgJyVzJyBoYXZlIGRpdmVyZ2VkLFxuIgpAQCAtNzUwLDIzICs5MDcsMjMgQEAKICJEaW4gZ3JlbiBvY2ggXCIlc1wiIGhhciBkaXZlcmdlcmF0LFxuIgogIm9jaCBoYXIgJWQgcmVzcGVrdGl2ZSAlZCBvbGlrYSBpbmNoZWNrbmluZ2FyLlxuIgogCi0jOiByZW1vdGUuYzoxNjU5CisjOiByZW1vdGUuYzoxODExCiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaCBpbnRvIHlvdXJzKVxuIgogbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IHB1bGxcIiBmw7ZyIGF0dCBzbMOlIGlob3AgZmrDpHJyZ3JlbmVuIG1lZCBkaW4gZWdlbilcbiIKIAotIzogc2VxdWVuY2VyLmM6MTIzIGJ1aWx0aW4vbWVyZ2UuYzo3NjEgYnVpbHRpbi9tZXJnZS5jOjg3NCBidWlsdGluL21lcmdlLmM6OTg0Ci0jOiBidWlsdGluL21lcmdlLmM6OTk0CisjOiBzZXF1ZW5jZXIuYzoyMDYgYnVpbHRpbi9tZXJnZS5jOjc3NiBidWlsdGluL21lcmdlLmM6ODg5IGJ1aWx0aW4vbWVyZ2UuYzo5OTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciCiBtc2dzdHIgIkt1bmRlIGludGUgw7ZwcG5hIFwiJXNcIiBmw7ZyIHNrcml2bmluZyIKIAotIzogc2VxdWVuY2VyLmM6MTI1IGJ1aWx0aW4vbWVyZ2UuYzozMzMgYnVpbHRpbi9tZXJnZS5jOjc2NCBidWlsdGluL21lcmdlLmM6OTg2Ci0jOiBidWlsdGluL21lcmdlLmM6OTk5CisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjMzNSBidWlsdGluL21lcmdlLmM6Nzc5CisjOiBidWlsdGluL21lcmdlLmM6MTAwMSBidWlsdGluL21lcmdlLmM6MTAxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgdGlsbCBcIiVzXCIiCiAKLSM6IHNlcXVlbmNlci5jOjE0NgorIzogc2VxdWVuY2VyLmM6MjI5CiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPiciCkBAIC03NzQsNyArOTMxLDcgQEAKICJlZnRlciBhdHQgaGEgbMO2c3Qga29uZmxpa3Rlcm5hLCBtYXJrZXJhIGRlIHLDpHR0YWRlIHPDtmt2w6RnYXJuYVxuIgogIm1lZCBcImdpdCBhZGQgPHPDtmt2w6RnYXI+XCIgZWxsZXIgXCJnaXQgcm0gPHPDtmt2w6RnYXI+XCIiCiAKLSM6IHNlcXVlbmNlci5jOjE0OQorIzogc2VxdWVuY2VyLmM6MjMyCiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPidcbiIKQEAgLTc4NCwyMzIgKzk0MSwyMzggQEAKICJtZWQgXCJnaXQgYWRkIDxzw7ZrdsOkZ2FyPlwiIGVsbGVyIFwiZ2l0IHJtIDxzw7ZrdsOkZ2FyPlwiXG4iCiAib2NoIGNoZWNrYSBpbiByZXN1bHRhdGV0IG1lZCBcImdpdCBjb21taXRcIiIKIAotIzogc2VxdWVuY2VyLmM6MTYyIHNlcXVlbmNlci5jOjc3MCBzZXF1ZW5jZXIuYzo4NTMKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgdGlsbCAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTY1CisjOiBzZXF1ZW5jZXIuYzoyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMiCiBtc2dzdHIgIkZlbCB2aWQgb21icnl0bmluZyBhdiAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjMKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgY2hlcnJ5LXBpY2suIgogbXNnc3RyICJEaW5hIGxva2FsYSDDpG5kcmluZ2FyIHNrdWxsZSBza3JpdmFzIMO2dmVyIGF2IFwiY2hlcnJ5LXBpY2tcIi4iCiAKLSM6IHNlcXVlbmNlci5jOjE4MgorIzogc2VxdWVuY2VyLmM6MjY1CiBtc2dpZCAiWW91ciBsb2NhbCBjaGFuZ2VzIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IHJldmVydC4iCiBtc2dzdHIgIkRpbmEgbG9rYWxhIMOkbmRyaW5nYXIgc2t1bGxlIHNrcml2YXMgw7Z2ZXIgYXYgXCJyZXZlcnRcIi4iCiAKLSM6IHNlcXVlbmNlci5jOjE4NQorIzogc2VxdWVuY2VyLmM6MjY4CiBtc2dpZCAiQ29tbWl0IHlvdXIgY2hhbmdlcyBvciBzdGFzaCB0aGVtIHRvIHByb2NlZWQuIgogbXNnc3RyICJDaGVja2EgaW4gZGluYSDDpG5kcmluZ2FyIGVsbGVyIGFudsOkbmQgXCJzdGFzaFwiIGbDtnIgYXR0IGZvcnRzw6R0dGEuIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzUKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlczogS3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwiCiAKLSM6IHNlcXVlbmNlci5jOjI2NgorIzogc2VxdWVuY2VyLmM6MzUwCiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBiZXN0w6RtbWEgSEVBRDpzIGluY2hlY2tuaW5nXG4iCiAKLSM6IHNlcXVlbmNlci5jOjI4NworIzogc2VxdWVuY2VyLmM6MzcxCiBtc2dpZCAiVW5hYmxlIHRvIHVwZGF0ZSBjYWNoZSB0cmVlXG4iCiBtc2dzdHIgIkthbiBpbnRlIHVwcGRhdGVyYSBjYWNoZXRyw6RkXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMzMgorIzogc2VxdWVuY2VyLmM6NDE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSB0b2xrYSBpbmNoZWNrbmluZ2VuICVzXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMzNworIzogc2VxdWVuY2VyLmM6NDIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzXG4iCiBtc2dzdHIgIkt1bmRlIGludGUgdG9sa2EgZsO2csOkbGRyYWluY2hlY2tuaW5nZW4gJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6NDAzCisjOiBzZXF1ZW5jZXIuYzo0ODcKIG1zZ2lkICJZb3VyIGluZGV4IGZpbGUgaXMgdW5tZXJnZWQuIgogbXNnc3RyICJEaW4gaW5kZXhmaWwgaGFyIGludGUgc2xhZ2l0cyBpaG9wLiIKIAotIzogc2VxdWVuY2VyLmM6NDA2Ci1tc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKLW1zZ3N0ciAiRHUgaGFyIGluZ2VuIGdpbHRpZyBIRUFEIgotCi0jOiBzZXF1ZW5jZXIuYzo0MjEKKyM6IHNlcXVlbmNlci5jOjUwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYSBtZXJnZSBidXQgbm8gLW0gb3B0aW9uIHdhcyBnaXZlbi4iCiBtc2dzdHIgIkluY2hlY2tuaW5nICVzIMOkciBlbiBzYW1tYW5zbGFnbmluZywgbWVuIGZsYWdnYW4gLW0gYW5nYXZzIGludGUuIgogCi0jOiBzZXF1ZW5jZXIuYzo0MjkKKyM6IHNlcXVlbmNlci5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBwYXJlbnQgJWQiCiBtc2dzdHIgIkluY2hlY2tuaW5nICVzIGhhciBpbnRlIGbDtnLDpGxkZXIgJWQiCiAKLSM6IHNlcXVlbmNlci5jOjQzMworIzogc2VxdWVuY2VyLmM6NTE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1haW5saW5lIHdhcyBzcGVjaWZpZWQgYnV0IGNvbW1pdCAlcyBpcyBub3QgYSBtZXJnZS4iCiBtc2dzdHIgIkh1dnVkbGluamUgYW5nYXZzLCBtZW4gaW5jaGVja25pbmdlbiAlcyDDpHIgaW50ZSBlbiBzYW1tYW5zbGFnbmluZyIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyB3aWxsIGJlICJyZXZlcnQiIG9yCiAjLiAiY2hlcnJ5LXBpY2siLCB0aGUgc2Vjb25kICVzIGEgU0hBMQotIzogc2VxdWVuY2VyLmM6NDQ0CisjOiBzZXF1ZW5jZXIuYzo1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzIgogbXNnc3RyICIlczoga2FuIGludGUgdG9sa2EgZsO2csOkbGRyYWluY2hlY2tuaW5nZW4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjQ0OAorIzogc2VxdWVuY2VyLmM6NTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBnZXQgY29tbWl0IG1lc3NhZ2UgZm9yICVzIgogbXNnc3RyICJLYW4gaW50ZSBow6RtdGEgaW5jaGVja25pbmdzbWVkZGVsYW5kZSBmw7ZyICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo1MzIKKyM6IHNlcXVlbmNlci5jOjYyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmV2ZXJ0ICVzLi4uICVzIgogbXNnc3RyICJrdW5kZSBpbnRlIMOlbmdyYSAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTMzCisjOiBzZXF1ZW5jZXIuYzo2MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGFwcGx5ICVzLi4uICVzIgogbXNnc3RyICJrdW5kZSBpbnRlIHRpbGzDpG1wYSAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTY1CisjOiBzZXF1ZW5jZXIuYzo2NTQKIG1zZ2lkICJlbXB0eSBjb21taXQgc2V0IHBhc3NlZCIKIG1zZ3N0ciAiZGVuIGFuZ2l2bmEgdXBwc8OkdHRuaW5nZW4gaW5jaGVja25pbmdhciDDpHIgdG9tIgogCi0jOiBzZXF1ZW5jZXIuYzo1NzMKKyM6IHNlcXVlbmNlci5jOjY2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVzOiBtaXNzbHlja2FkZXMgbMOkc2EgaW5kZXhldCIKIAotIzogc2VxdWVuY2VyLmM6NTc4CisjOiBzZXF1ZW5jZXIuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlczogbWlzc2x5Y2thZGVzIHVwcGRhdGVyYSBpbmRleGV0IgogCi0jOiBzZXF1ZW5jZXIuYzo2MzYKKyM6IHNlcXVlbmNlci5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgJXMgZHVyaW5nIGEgJXMiCiBtc2dzdHIgImthbiBpbnRlICVzIHVuZGVyIGVuICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2NTgKKyM6IHNlcXVlbmNlci5jOjc0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgbGluZSAlZC4iCiBtc2dzdHIgIkthbiBpbnRlIHRvbGthIHJhZCAlZC4iCiAKLSM6IHNlcXVlbmNlci5jOjY2MworIzogc2VxdWVuY2VyLmM6NzUyCiBtc2dpZCAiTm8gY29tbWl0cyBwYXJzZWQuIgogbXNnc3RyICJJbmdhIGluY2hlY2tuaW5nYXIgbMOkc3Rlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjY3NgorIzogc2VxdWVuY2VyLmM6NzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIMO2cHBuYSAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjgwCisjOiBzZXF1ZW5jZXIuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgJXMuIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhICVzLiIKIAotIzogc2VxdWVuY2VyLmM6Njg3CisjOiBzZXF1ZW5jZXIuYzo3NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW51c2FibGUgaW5zdHJ1Y3Rpb24gc2hlZXQ6ICVzIgogbXNnc3RyICJPYW52w6RuZGJhcnQgbWFudXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3MTUKKyM6IHNlcXVlbmNlci5jOjgwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGtleTogJXMiCiBtc2dzdHIgIkZlbGFrdGlnIG55Y2tlbDogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjcxOAorIzogc2VxdWVuY2VyLmM6ODA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdmFsdWUgZm9yICVzOiAlcyIKIG1zZ3N0ciAiRmVsYWt0aWd0IHbDpHJkZSBmw7ZyICVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzMwCisjOiBzZXF1ZW5jZXIuYzo4MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICJUcmFzaWd0IG1hbnVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzUxCisjOiBzZXF1ZW5jZXIuYzo4NDAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICJlbiBcImNoZXJyeS1waWNrXCIgZWxsZXIgXCJyZXZlcnRcIiBww6Vnw6VyIHJlZGFuIgogCi0jOiBzZXF1ZW5jZXIuYzo3NTIKKyM6IHNlcXVlbmNlci5jOjg0MQogbXNnaWQgInRyeSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCiBtc2dzdHIgInRlc3RhIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIAotIzogc2VxdWVuY2VyLmM6NzU2CisjOiBzZXF1ZW5jZXIuYzo4NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICJLdW5kZSBpbnRlIHNrYXBhIFwic2VxdWVuY2VyXCIta2F0YWxvZ2VuIFwiJXNcIiIKIAotIzogc2VxdWVuY2VyLmM6NzcyIHNlcXVlbmNlci5jOjg1NworIzogc2VxdWVuY2VyLmM6ODYxIHNlcXVlbmNlci5jOjk0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcy4iCiBtc2dzdHIgIkZlbCB2aWQgb21icnl0bmluZyBhdiAlcy4iCiAKLSM6IHNlcXVlbmNlci5jOjc5MSBzZXF1ZW5jZXIuYzo5MjUKKyM6IHNlcXVlbmNlci5jOjg4MCBzZXF1ZW5jZXIuYzoxMDE0CiBtc2dpZCAibm8gY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGluIHByb2dyZXNzIgogbXNnc3RyICJpbmdlbiBcImNoZXJyeS1waWNrXCIgZWxsZXIgXCJyZXZlcnRcIiBww6Vnw6VyIgogCi0jOiBzZXF1ZW5jZXIuYzo3OTMKKyM6IHNlcXVlbmNlci5jOjg4MgogbXNnaWQgImNhbm5vdCByZXNvbHZlIEhFQUQiCiBtc2dzdHIgImthbiBpbnRlIGJlc3TDpG1tYSBIRUFEIgogCi0jOiBzZXF1ZW5jZXIuYzo3OTUKKyM6IHNlcXVlbmNlci5jOjg4NAogbXNnaWQgImNhbm5vdCBhYm9ydCBmcm9tIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgogbXNnc3RyICJrYW4gaW50ZSBhdmJyeXRhIGZyw6VuIGVuIGdyZW4gc29tIMOkbm51IGludGUgw6RyIGbDtmRkIgogCi0jOiBzZXF1ZW5jZXIuYzo4MTcgYnVpbHRpbi9hcHBseS5jOjQwMDUKKyM6IHNlcXVlbmNlci5jOjkwNiBidWlsdGluL2FwcGx5LmM6NDA2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXMiCiBtc2dzdHIgImthbiBpbnRlIMO2cHBuYSAlczogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjgyMAorIzogc2VxdWVuY2VyLmM6OTA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICVzOiAlcyIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MjEKKyM6IHNlcXVlbmNlci5jOjkxMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIm92w6RudGF0IGZpbHNsdXQiCiAKLSM6IHNlcXVlbmNlci5jOjgyNworIzogc2VxdWVuY2VyLmM6OTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0b3JlZCBwcmUtY2hlcnJ5LXBpY2sgSEVBRCBmaWxlICclcycgaXMgY29ycnVwdCIKIG1zZ3N0ciAic3BhcmFkIEhFQUQtZmlsIGZyw6VuIGbDtnJlIFwiY2hlcnJ5LXBpY2tcIiwgXCIlc1wiLCDDpHIgdHJhc2lnIgogCi0jOiBzZXF1ZW5jZXIuYzo4NTAKKyM6IHNlcXVlbmNlci5jOjkzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZm9ybWF0ICVzLiIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBmb3JtYXRlcmEgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDEyCisjOiBzZXF1ZW5jZXIuYzoxMDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIgorbXNnc3RyICIlczoga2FuIGludGUgZ8O2cmEgXCJjaGVycnktcGlja1wiIHDDpSB0eXBlbiBcIiVzXCIiCisKKyM6IHNlcXVlbmNlci5jOjEwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJhZCByZXZpc2lvbiIKK21zZ3N0ciAiJXM6IGZlbGFrdGlnIHJldmlzaW9uIgorCisjOiBzZXF1ZW5jZXIuYzoxMTE5CiBtc2dpZCAiQ2FuJ3QgcmV2ZXJ0IGFzIGluaXRpYWwgY29tbWl0IgogbXNnc3RyICJLYW4gaW50ZSDDpW5ncmEgc29tIGbDtnJzdGEgaW5jaGVja25pbmciCiAKLSM6IHNlcXVlbmNlci5jOjEwMTMKKyM6IHNlcXVlbmNlci5jOjExMjAKIG1zZ2lkICJDYW4ndCBjaGVycnktcGljayBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIkthbiBpbnRlIGfDtnJhIFwiY2hlcnJ5LXBpY2tcIiBpIGV0dCB0b210IGh1dnVkIgogCi0jOiBzaGExX25hbWUuYzoxMDQ0CisjOiBzaGExX25hbWUuYzoxMDM2CiBtc2dpZCAiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIKIG1zZ3N0ciAiSEVBRCBwZWthciBpbnRlIHDDpSBlbiBncmVuIgogCi0jOiBzaGExX25hbWUuYzoxMDQ3CisjOiBzaGExX25hbWUuYzoxMDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICJPa8OkbmQgZ3JlbjogXCIlc1wiIgogCi0jOiBzaGExX25hbWUuYzoxMDQ5CisjOiBzaGExX25hbWUuYzoxMDQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIgogbXNnc3RyICJJbmdlbiBzdGFuZGFyZHVwcHN0csO2bSBhbmdpdmVuIGbDtnIgZ3JlbmVuIFwiJXNcIiIKIAotIzogc2hhMV9uYW1lLmM6MTA1MgorIzogc2hhMV9uYW1lLmM6MTA0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcHN0cmVhbSBicmFuY2ggJyVzJyBub3Qgc3RvcmVkIGFzIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCIKIG1zZ3N0ciAiVXBwc3Ryw7Ztc2dyZW5lbiBcIiVzXCIgw6RyIGludGUgbGFncmFkIHNvbSBlbiBmasOkcnJzcMOlcmFuZGUgZ3JlbiIKQEAgLTEwMTksMTIgKzExODIsMTcgQEAKIG1zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgogbXNnc3RyICJrYW4gaW50ZSBrb21tYSDDpXQgXCIlc1wiOiAlcyIKIAotIzogd3JhcHBlci5jOjQyNgorIzogd3JhcHBlci5jOjQyMworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyciCittc2dzdHIgImthbiBpbnRlIGtvbW1hIMOldCBcIiVzXCIiCisKKyM6IHdyYXBwZXIuYzo0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCiBtc2dzdHIgImthbiBpbnRlIHNsw6UgdXBwIGFrdHVlbGwgYW52w6RuZGFyZSBpIHBhc3N3ZC1maWxlbjogJXMiCiAKLSM6IHdyYXBwZXIuYzo0MjcKKyM6IHdyYXBwZXIuYzo0MzUKIG1zZ2lkICJubyBzdWNoIHVzZXIiCiBtc2dzdHIgIm9rw6RuZCBhbnbDpG5kYXJlIgogCkBAIC0xMTMzLDE5MyArMTMwMSwyNTQgQEAKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgogbXNnc3RyICJvc3DDpXJhdCBpbm5laMOlbGwsICIKIAotIzogd3Qtc3RhdHVzLmM6MzAzCisjOiB3dC1zdGF0dXMuYzozMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgIm55IGZpbDogICAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMDYKKyM6IHd0LXN0YXR1cy5jOjMwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3BpZWQ6ICAgICAlcyAtPiAlcyIKIG1zZ3N0ciAia29waWVyYWQ6ICAgJXMgLT4gJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMwOQorIzogd3Qtc3RhdHVzLmM6MzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQ6ICAgICVzIgogbXNnc3RyICJib3J0dGFnZW46ICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzEyCisjOiB3dC1zdGF0dXMuYzozMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIsOkbmRyYWQ6ICAgICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzE1CisjOiB3dC1zdGF0dXMuYzozMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVuYW1lZDogICAgJXMgLT4gJXMiCiBtc2dzdHIgIm5hbW5ieXRlOiAgICVzIC0+ICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMTgKKyM6IHd0LXN0YXR1cy5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0eXBlY2hhbmdlOiAlcyIKIG1zZ3N0ciAidHlwYnl0ZTogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMyMQorIzogd3Qtc3RhdHVzLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd246ICAgICVzIgogbXNnc3RyICJva8OkbmQ6ICAgICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMyNAorIzogd3Qtc3RhdHVzLmM6MzI3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICJvc2FtbWFuc2wuOiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzI3CisjOiB3dC1zdGF0dXMuYzozMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVnOiB1bmhhbmRsZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgInByb2dyYW1mZWw6IGRpZmYtc3RhdHVzICVjIGVqIGhhbnRlcmFkIgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjgwMwogbXNnaWQgIllvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLiIKIG1zZ3N0ciAiRHUgaGFyIGVqIHNhbW1hbnNsYWduYSBzw7ZrdsOkZ2FyLiIKIAotIzogd3Qtc3RhdHVzLmM6Nzg4IHd0LXN0YXR1cy5jOjkxMgorIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCiBtc2dzdHIgIiAgKHLDpHR0YSBrb25mbGlrdGVyIG9jaCBrw7ZyIFwiZ2l0IGNvbW1pdFwiKSIKIAotIzogd3Qtc3RhdHVzLmM6NzkxCisjOiB3dC1zdGF0dXMuYzo4MDkKIG1zZ2lkICJBbGwgY29uZmxpY3RzIGZpeGVkIGJ1dCB5b3UgYXJlIHN0aWxsIG1lcmdpbmcuIgogbXNnc3RyICJBbGxhIGtvbmZsaWt0ZXIgaGFyIHLDpHR0YXRzIG1lbiBkdSDDpHIgZm9ydGZhcmFuZGUgaSBlbiBzYW1tYW5zbGFnbmluZy4iCiAKLSM6IHd0LXN0YXR1cy5jOjc5NAorIzogd3Qtc3RhdHVzLmM6ODEyCiBtc2dpZCAiICAodXNlIFwiZ2l0IGNvbW1pdFwiIHRvIGNvbmNsdWRlIG1lcmdlKSIKIG1zZ3N0ciAiICAoYW52w6RuZCBcImdpdCBjb21taXRcIiBmw7ZyIGF0dCBzbHV0ZsO2cmEgc2FtbWFuc2xhZ25pbmdlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNAorIzogd3Qtc3RhdHVzLmM6ODIyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIgogbXNnc3RyICJEdSDDpHIgaSBtaXR0ZW4gYXYgZW4ga8O2cm5pbmcgYXYgXCJnaXQgYW1cIi4iCiAKLSM6IHd0LXN0YXR1cy5jOjgwNworIzogd3Qtc3RhdHVzLmM6ODI1CiBtc2dpZCAiVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZW1wdHkuIgogbXNnc3RyICJBa3R1ZWxsIHBhdGNoIMOkciB0b20uIgogCi0jOiB3dC1zdGF0dXMuYzo4MTEKKyM6IHd0LXN0YXR1cy5jOjgyOQogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCiBtc2dzdHIgIiAgKHLDpHR0YSBrb25mbGlrdGVyIG9jaCBrw7ZyIHNlZGFuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCiAKLSM6IHd0LXN0YXR1cy5jOjgxMworIzogd3Qtc3RhdHVzLmM6ODMxCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCiBtc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgYW0gLS1za2lwXCIgZsO2ciBhdHQgaG9wcGEgw7Z2ZXIgcGF0Y2hlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjgxNQorIzogd3Qtc3RhdHVzLmM6ODMzCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IGFtIC0tYWJvcnRcIiBmw7ZyIGF0dCDDpXRlcnN0w6RsbGEgdXJzcHJ1bmdzZ3JlbmVuKSIKIAotIzogd3Qtc3RhdHVzLmM6ODczIHd0LXN0YXR1cy5jOjg4MworIzogd3Qtc3RhdHVzLmM6ODkzIHd0LXN0YXR1cy5jOjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIKK21zZ3N0ciAiRHUgaMOlbGxlciBww6UgYXR0IG9tYmFzZXJhIGdyZW5lbiBcIiVzXCIgb3ZhbnDDpSBcIiVzXCIuIgorCisjOiB3dC1zdGF0dXMuYzo4OTggd3Qtc3RhdHVzLmM6OTE1CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcuIgogbXNnc3RyICJEdSBow6VsbGVyIHDDpSBtZWQgZW4gb21iYXNlcmluZy4iCiAKLSM6IHd0LXN0YXR1cy5jOjg3NgorIzogd3Qtc3RhdHVzLmM6OTAxCiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCiBtc2dzdHIgIiAgKHLDpHR0YSBrb25mbGlrdGVyIG9jaCBrw7ZyIHNlZGFuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogCi0jOiB3dC1zdGF0dXMuYzo4NzgKKyM6IHd0LXN0YXR1cy5jOjkwMwogbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKIG1zZ3N0ciAiICAoYW52w6RuZCBcImdpdCByZWJhc2UgLS1za2lwXCIgZsO2ciBhdHQgaG9wcGEgw7Z2ZXIgcGF0Y2hlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjg4MAorIzogd3Qtc3RhdHVzLmM6OTA1CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgdG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIgIChhbnbDpG5kIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgZsO2ciBhdHQgY2hlY2thIHV0IHVyc3BydW5nc2dyZW5lbikiCiAKLSM6IHd0LXN0YXR1cy5jOjg4NgorIzogd3Qtc3RhdHVzLmM6OTE4CiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIgIChhbGxhIGtvbmZsaWt0ZXIgcsOkdHRhZGU6IGvDtnIgXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCiAKLSM6IHd0LXN0YXR1cy5jOjg4OAorIzogd3Qtc3RhdHVzLmM6OTIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJEdSBow6VsbGVyIHDDpSBhdHQgZGVsYSB1cHAgZW4gaW5jaGVja25pbmcgbWVkYW4gZHUgb21iYXNlcmFyIGdyZW5lbiBcIiVzXCIgIgorIm92YW5ww6UgXCIlc1wiLiIKKworIzogd3Qtc3RhdHVzLmM6OTI3CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iCiBtc2dzdHIgIkR1IGjDpWxsZXIgcMOlIGF0dCBkZWxhIHVwcCBlbiBpbmNoZWNrbmluZyBpIGVuIG9tYmFzZXJpbmcuIgogCi0jOiB3dC1zdGF0dXMuYzo4OTEKKyM6IHd0LXN0YXR1cy5jOjkzMAogbXNnaWQgIiAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIgIChTw6UgZm9ydCBkaW4gYXJiZXRza2F0YWxvZyDDpHIgcmVuLCBrw7ZyIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogCi0jOiB3dC1zdGF0dXMuYzo4OTMKKyM6IHd0LXN0YXR1cy5jOjkzNAorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICIiCisiRHUgaMOlbGxlciBww6UgYXR0IHJlZGlnZXJhIGVuIGluY2hlY2tuaW5nIG1lZGFuIGR1IG9tYmFzZXJhciBncmVuZW4gXCIlc1wiICIKKyJvdmFucMOlIFwiJXNcIi4iCisKKyM6IHd0LXN0YXR1cy5jOjkzOQogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKIG1zZ3N0ciAiRHUgaMOlbGxlciBww6UgYXR0IHJlZGlnZXJhIGVuIGluY2hlY2tuaW5nIHVuZGVyIGVuIG9tYmFzZXJpbmcuIgogCi0jOiB3dC1zdGF0dXMuYzo4OTYKKyM6IHd0LXN0YXR1cy5jOjk0MgogbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXQgLS1hbWVuZFwiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkiCiBtc2dzdHIgIiIKICIgIChhbnbDpG5kIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgZsO2ciBhdHQgbMOkZ2dhIHRpbGwgcMOlIGFrdHVlbGwgaW5jaGVja25pbmcpIgogCi0jOiB3dC1zdGF0dXMuYzo4OTgKKyM6IHd0LXN0YXR1cy5jOjk0NAogbXNnaWQgIiIKICIgICh1c2UgXCJnaXQgcmViYXNlIC0tY29udGludWVcIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKSIKIG1zZ3N0ciAiICAoYW52w6RuZCBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiIG7DpHIgZHUgw6RyIG7DtmpkIG1lZCBkaW5hIMOkbmRyaW5nYXIpIgogCi0jOiB3dC1zdGF0dXMuYzo5MDgKKyM6IHd0LXN0YXR1cy5jOjk1NAogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGNoZXJyeS1waWNraW5nLiIKIG1zZ3N0ciAiRHUgaMOlbGxlciBww6UgbWVkIGVuIFwiY2hlcnJ5LXBpY2tcIi4iCiAKLSM6IHd0LXN0YXR1cy5jOjkxNQorIzogd3Qtc3RhdHVzLmM6OTYxCiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKIG1zZ3N0ciAiICAoYWxsYSBrb25mbGlrdGVyIGhhciByw6R0dGF0czoga8O2ciBcImdpdCBjb21taXRcIikiCiAKLSM6IHd0LXN0YXR1cy5jOjkyNAorIzogd3Qtc3RhdHVzLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJldmVydGluZyBjb21taXQgJXMuIgorbXNnc3RyICJEdSBow6VsbGVyIHDDpSBtZWQgYXR0IMOlbmdyYSBpbmNoZWNrbmluZ2VuICVzLiIKKworIzogd3Qtc3RhdHVzLmM6OTc1Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIChyw6R0dGEga29uZmxpa3RlciBvY2gga8O2ciBzZWRhbiBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKKworIzogd3Qtc3RhdHVzLmM6OTc4Cittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIChhbGxhIGtvbmZsaWt0ZXIgcsOkdHRhZGU6IGvDtnIgXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCisKKyM6IHd0LXN0YXR1cy5jOjk4MAorbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCittc2dzdHIgIiAgKGFudsOkbmQgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiBmw7ZyIGF0dCBhdmJyeXRhIMOlbmdyYW5kZXQpIgorCisjOiB3dC1zdGF0dXMuYzo5OTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLCBzdGFydGVkIGZyb20gYnJhbmNoICclcycuIgorbXNnc3RyICJEdSBow6VsbGVyIHDDpSBtZWQgZW4gXCJiaXNlY3RcIiwgc3RhcnRhZCBmcsOlbiBncmVuZW4gXCIlc1wiLiIKKworIzogd3Qtc3RhdHVzLmM6OTk1CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKIG1zZ3N0ciAiRHUgaMOlbGxlciBww6UgbWVkIGVuIFwiYmlzZWN0XCIuIgogCi0jOiB3dC1zdGF0dXMuYzo5MjcKKyM6IHd0LXN0YXR1cy5jOjk5OAogbXNnaWQgIiAgKHVzZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKIG1zZ3N0ciAiIgogIiAgKGFudsOkbmQgXCJnaXQgYmlzZWN0IHJlc2V0XCIgZsO2ciBhdHQga29tbWEgdGlsbGJha2EgdGlsbCB1cnNwcnVuZ3NncmVuZW4pIgogCi0jOiB3dC1zdGF0dXMuYzo5NzgKKyM6IHd0LXN0YXR1cy5jOjExNzMKIG1zZ2lkICJPbiBicmFuY2ggIgogbXNnc3RyICJQw6UgZ3JlbmVuICIKIAotIzogd3Qtc3RhdHVzLmM6OTg1CisjOiB3dC1zdGF0dXMuYzoxMTg0Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCittc2dzdHIgIkhFQUQgZnLDpW5rb3BwbGFkIHZpZCAiCisKKyM6IHd0LXN0YXR1cy5jOjExODYKK21zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgorbXNnc3RyICJIRUFEIGZyw6Vua29wcGxhZCBmcsOlbiAiCisKKyM6IHd0LXN0YXR1cy5jOjExODkKIG1zZ2lkICJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIgogbXNnc3RyICJJbnRlIHDDpSBuw6Vnb24gZ3JlbiBmw7ZyIG7DpHJ2YXJhbmRlLiIKIAotIzogd3Qtc3RhdHVzLmM6OTk3CisjOiB3dC1zdGF0dXMuYzoxMjA2CiBtc2dpZCAiSW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIkbDtnJzdGEgaW5jaGVja25pbmciCiAKLSM6IHd0LXN0YXR1cy5jOjEwMTEKKyM6IHd0LXN0YXR1cy5jOjEyMjAKIG1zZ2lkICJVbnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIk9zcMOlcmFkZSBmaWxlciIKIAotIzogd3Qtc3RhdHVzLmM6MTAxMworIzogd3Qtc3RhdHVzLmM6MTIyMgogbXNnaWQgIklnbm9yZWQgZmlsZXMiCiBtc2dzdHIgIklnbm9yZXJhZGUgZmlsZXIiCiAKKyM6IHd0LXN0YXR1cy5jOjEyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkl0IHRvb2sgJS4yZiBzZWNvbmRzIHRvIGVudW1lcmF0ZSB1bnRyYWNrZWQgZmlsZXMuICdzdGF0dXMgLXVubydcbiIKKyJtYXkgc3BlZWQgaXQgdXAsIGJ1dCB5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIG5vdCB0byBmb3JnZXQgdG8gYWRkXG4iCisibmV3IGZpbGVzIHlvdXJzZWxmIChzZWUgJ2dpdCBoZWxwIHN0YXR1cycpLiIKK21zZ3N0ciAiIgorIkRldCB0b2cgJS4yZiBzZWt1bmRlciBhdHQgcsOka25hIHVwcCBvc3DDpXJhZGUgZmlsZXIuIFwic3RhdHVzIC11bm9cIlxuIgorImthbiBnw6Ugc25hYmJhcmUsIG1lbiBkdSBtw6VzdGUgdmFyYSBmw7Zyc2lrdGlnIHPDpSBkdSBpbnRlIGdsw7ZtbWVyXG4iCisibMOkZ2dhIHRpbGwgbnlhIGZpbGVyIHNqw6RsdiAoc2UgXCJnaXQgaGVscCBzdGF0dXNcIikuIgorCiAjICVzIMOkciBuw6RzdGEgc3Ryw6RuZyBlbGxlciB0b20uCi0jOiB3dC1zdGF0dXMuYzoxMDE1CisjOiB3dC1zdGF0dXMuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIk9zcMOlcmFkZSBmaWxlciB2aXNhcyBlaiVzIgogCi0jOiB3dC1zdGF0dXMuYzoxMDE3CisjOiB3dC1zdGF0dXMuYzoxMjM0CiBtc2dpZCAiICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKIG1zZ3N0ciAiIChhbnbDpG5kIGZsYWdnYW4gLXUgZsO2ciBhdHQgdmlzYSBvc3DDpXJhZGUgZmlsZXIpIgogCi0jOiB3dC1zdGF0dXMuYzoxMDIzCisjOiB3dC1zdGF0dXMuYzoxMjQwCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAiSW5nYSDDpG5kcmluZ2FyIgogCi0jOiB3dC1zdGF0dXMuYzoxMDI4CisjOiB3dC1zdGF0dXMuYzoxMjQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgogbXNnc3RyICIiCiAiaW5nYSDDpG5kcmluZ2FyIGF0dCBjaGVja2EgaW4gKGFudsOkbmQgXCJnaXQgYWRkXCIgb2NoL2VsbGVyIFwiZ2l0IGNvbW1pdCAtYSIKICJcIilcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTAzMQorIzogd3Qtc3RhdHVzLmM6MTI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIgogbXNnc3RyICJpbmdhIMOkbmRyaW5nYXIgYXR0IGNoZWNrYSBpblxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDM0CisjOiB3dC1zdGF0dXMuYzoxMjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQgKHVzZSBcImdpdCBhZGRcIiB0byAiCkBAIC0xMzI4LDIxMyArMTU1NywyODAgQEAKICJpbmdldCBrw7ZhdCBmw7ZyIGluY2hlY2tuaW5nLCBtZW4gb3Nww6VyYWRlIGZpbGVyIGZpbm5zIChzcMOlcmEgbWVkIFwiZ2l0IGFkZCIKICJcIilcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTAzNworIzogd3Qtc3RhdHVzLmM6MTI1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnRcbiIKIG1zZ3N0ciAiaW5nZXQga8O2YXQgZsO2ciBpbmNoZWNrbmluZywgbWVuIG9zcMOlcmFkZSBmaWxlciBmaW5uc1xuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDQwCisjOiB3dC1zdGF0dXMuYzoxMjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0IChjcmVhdGUvY29weSBmaWxlcyBhbmQgdXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKVxuIgogbXNnc3RyICJpbmdldCBhdHQgY2hlY2thIGluIChza2FwYS9rb3BpZXJhIGZpbGVyIG9jaCBzcMOlcmEgbWVkIFwiZ2l0IGFkZFwiKVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDQzIHd0LXN0YXR1cy5jOjEwNDgKKyM6IHd0LXN0YXR1cy5jOjEyNjAgd3Qtc3RhdHVzLmM6MTI2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdFxuIgogbXNnc3RyICJpbmdldCBhdHQgY2hlY2thIGluXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwNDYKKyM6IHd0LXN0YXR1cy5jOjEyNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcylcbiIKIG1zZ3N0ciAiaW5nZXQgYXR0IGNoZWNrYSBpbiAoYW52w6RuZCAtdSBmw7ZyIGF0dCB2aXNhIG9zcMOlcmFkZSBmaWxlcilcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA1MAorIzogd3Qtc3RhdHVzLmM6MTI2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKIG1zZ3N0ciAiaW5nZXQgYXR0IGNoZWNrYSBpbiwgYXJiZXRza2F0YWxvZ2VuIHJlblxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMTU4CisjOiB3dC1zdGF0dXMuYzoxMzc1CiBtc2dpZCAiSEVBRCAobm8gYnJhbmNoKSIKIG1zZ3N0ciAiSEVBRCAoaW5nZW4gZ3JlbikiCiAKLSM6IHd0LXN0YXR1cy5jOjExNjQKKyM6IHd0LXN0YXR1cy5jOjEzODEKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIkbDtnJzdGEgaW5jaGVja25pbmcgcMOlICIKIAotIzogd3Qtc3RhdHVzLmM6MTE3OQorIzogd3Qtc3RhdHVzLmM6MTM5NgogbXNnaWQgImJlaGluZCAiCiBtc2dzdHIgImVmdGVyICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4MiB3dC1zdGF0dXMuYzoxMTg1CisjOiB3dC1zdGF0dXMuYzoxMzk5IHd0LXN0YXR1cy5jOjE0MDIKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgImbDtnJlICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4NworIzogd3Qtc3RhdHVzLmM6MTQwNAogbXNnaWQgIiwgYmVoaW5kICIKIG1zZ3N0ciAiLCBlZnRlciAiCiAKLSM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzQxCisjOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCiBtc2dzdHIgIm1pc3NseWNrYWRlcyB0YSBib3J0IGzDpG5rZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2FkZC5jOjE5Ci1tc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8ZmlsZXBhdHRlcm4+Li4uIgotbXNnc3RyICJnaXQgYWRkIFtmbGFnZ29yXSBbLS1dIDxmaWxtw7Zuc3Rlcj4uLi4iCisjOiBidWlsdGluL2FkZC5jOjIwCittc2dpZCAiZ2l0IGFkZCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgYWRkIFtmbGFnZ29yXSBbLS1dIDxzw7ZrdsOkZz4uLi4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjIKKyMuCisjLiAqIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCAiZ2l0IGFkZCAtcCIgYW5kIG1vc3QgR2l0CisjLiAqIGNvbW1hbmRzLCB3ZSBzaG91bGQgZGVmYXVsdCB0byBiZWluZyB0cmVlLXdpZGUsIGJ1dAorIy4gKiB0aGlzIGlzIG5vdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IgYW5kIGNhbid0IGJlCisjLiAqIGNoYW5nZWQgdW50aWwgdXNlcnMgdHJhaW5lZCB0aGVtc2VsdmVzIG5vdCB0byB0eXBlCisjLiAqICJnaXQgYWRkIC11IiBvciAiZ2l0IGFkZCAtQSIuIEZvciBub3csIHdlIHdhcm4gYW5kCisjLiAqIGtlZXAgdGhlIG9sZCBiZWhhdmlvci4gTGF0ZXIsIHRoZSBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZAorIy4gKiB0byB0cmVlLXdpZGUsIGtlZXBpbmcgdGhlIHdhcm5pbmcgZm9yIGEgd2hpbGUsIGFuZAorIy4gKiBldmVudHVhbGx5IHdlIGNhbiBkcm9wIHRoZSB3YXJuaW5nLgorIy4KKyM6IGJ1aWx0aW4vYWRkLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBiZWhhdmlvciBvZiAnZ2l0IGFkZCAlcyAob3IgJXMpJyB3aXRoIG5vIHBhdGggYXJndW1lbnQgZnJvbSBhXG4iCisic3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgYW5kIHNob3VsZCBub3QgYmUgdXNlZCAiCisiYW55bW9yZS5cbiIKKyJUbyBhZGQgY29udGVudCBmb3IgdGhlIHdob2xlIHRyZWUsIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvciBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIlRvIHJlc3RyaWN0IHRoZSBjb21tYW5kIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgcnVuOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob3IgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIldpdGggdGhlIGN1cnJlbnQgR2l0IHZlcnNpb24sIHRoZSBjb21tYW5kIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGN1cnJlbnQgIgorImRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiIgorIkJldGVlbmRldCBmw7ZyIFwiZ2l0IGFkZCAlcyAoZWxsZXIgJXMpXCIgdXRhbiBzw7ZrdsOkZ3Nhcmd1bWVudCBmcsOlbiBlblxuIgorInVuZGVya2F0YWxvZyBpIGV0dCB0csOkZCBrb21tZXIgw6RuZHJhcyBpIEdpdCAyLjAgb2NoIGLDtnIgaW50ZSBsw6RuZ3JlICIKKyJhbnbDpG5kYXMuXG4iCisiRsO2ciBhdHQgbMOkZ2dhIHRpbGwgaW5uZWjDpWxsZXQgZsO2ciBoZWxhIHRyw6RkZXQsIGFudsOkbmQ6XG4iCisiXG4iCisiICBnaXQgYWRkICVzIDovXG4iCisiICAoZWxsZXIgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyJGw7ZyIGF0dCBiZWdyw6Ruc2Ega29tbWFuZG90IHRpbGwgYWt0dWVsbCBrYXRhbG9nLCBhbnbDpG5kOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAoZWxsZXIgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIkkgbnV2YXJhbmRlIHZlcnNpb24gYXYgR2l0IGJlZ3LDpG5zYXMga29tbWFuZG90IHRpbGwgYWt0dWVsbCBrYXRhbG9nLlxuIgorCisjOiBidWlsdGluL2FkZC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IHJhbiAnZ2l0IGFkZCcgd2l0aCBuZWl0aGVyICctQSAoLS1hbGwpJyBvciAnLS1pZ25vcmUtcmVtb3ZhbCcsXG4iCisid2hvc2UgYmVoYXZpb3VyIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgd2l0aCByZXNwZWN0IHRvIHBhdGhzIHlvdSByZW1vdmVkLlxuIgorIlBhdGhzIGxpa2UgJyVzJyB0aGF0IGFyZVxuIgorInJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZSBhcmUgaWdub3JlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiBHaXQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4nLCB3aGljaCBpcyB0aGUgY3VycmVudCBkZWZhdWx0LFxuIgorIiAgaWdub3JlcyBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPicgd2lsbCBsZXQgeW91IGFsc28gcmVjb3JkIHRoZSByZW1vdmFscy5cbiIKKyJcbiIKKyJSdW4gJ2dpdCBzdGF0dXMnIHRvIGNoZWNrIHRoZSBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorbXNnc3RyICIiCisiRHUga8O2cmRlIFwiZ2l0IGFkZFwiIHV0YW4gdmFya2VuIFwiLUEgKC0tYWxsKVwiIGVsbGVyIFwiLS1pZ25vcmUtcmVtb3ZhbFwiLlxuIgorIkJldGVlbmRldCBrb21tZXIgw6RuZHJhcyBpIEdpdCAyLjAgdmFkIGfDpGxsZXIgc8O2a3bDpGdhciBkdSB0YWdpdCBib3J0LlxuIgorIlPDtmt2w6RnYXIgc29tIFwiJXNcIiwgc29tIGhhclxuIgorInRhZ2l0cyBib3J0IGZyw6VuIGRpbiBhcmJldHNrYXRhbG9nIGlnbm9yZXJhcyBpIGRlbiBow6RyIHZlcnNpb25lbiBhdiBHaXQuXG4iCisiXG4iCisiKiBcImdpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8c8O2a3bDpGc+XCIsIHNvbSDDpHIgZsO2cnZhbGV0IGp1c3QgbnUsXG4iCisiICBpZ25vcmVyYXIgc8O2a3bDpGdhciBkdSBoYXIgdGFnaXQgYm9ydCBmcsOlbiBhcmJldHNrYXRhbG9nZW4uXG4iCisiXG4iCisiKiBcImdpdCBhZGQgLS1hbGwgPHPDtmt2w6RnPlwiIGzDpXRlciBkaWcgw6R2ZW4gcmVnaXN0cmVyYSBib3J0dGFnbmluZ2FybmEuXG4iCisiXG4iCisiS8O2ciBcImdpdCBzdGF0dXNcIiBmw7ZyIGF0dCBrb250cm9sbGVyYSBzw7ZrdsOkZ2FybmEgZHUgdGFnaXQgYm9ydCBmcsOlblxuIgorImFyYmV0c2thdGFsb2dlbi5cbiIKKworIzogYnVpbHRpbi9hZGQuYzoxNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAiZGlmZi1zdGF0dXMgJWMgZsO2cnbDpG50YWRlcyBpbnRlIgogCi0jOiBidWlsdGluL2FkZC5jOjY3IGJ1aWx0aW4vY29tbWl0LmM6MjMxCisjOiBidWlsdGluL2FkZC5jOjE0OSBidWlsdGluL2NvbW1pdC5jOjIzMwogbXNnaWQgInVwZGF0aW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHVwcGRhdGVyYSBmaWxlciIKIAotIzogYnVpbHRpbi9hZGQuYzo3NworIzogYnVpbHRpbi9hZGQuYzoxNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3ZlICclcydcbiIKIG1zZ3N0ciAidGEgYm9ydCBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCi1tc2dzdHIgIlPDtmt2w6RnZW4gXCIlc1wiIMOkciBpIHVuZGVybW9kdWxlbiBcIiUuKnNcIiIKLQotIzogYnVpbHRpbi9hZGQuYzoxOTIKKyM6IGJ1aWx0aW4vYWRkLmM6MjUzCiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZWZyZXNoaW5nIHRoZSBpbmRleDoiCiBtc2dzdHIgIk9zcMOlcmFkZSDDpG5kcmluZ2FyIGVmdGVyIGF0dCBoYSB1cHBkYXRlcmF0IGluZGV4ZXQ6IgogCi0jOiBidWlsdGluL2FkZC5jOjE5NSBidWlsdGluL2FkZC5jOjQ2MCBidWlsdGluL3JtLmM6Mjc1CisjOiBidWlsdGluL2FkZC5jOjI1NiBidWlsdGluL2FkZC5jOjU3MiBidWlsdGluL3JtLmM6Mjc1CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGhzcGVjICclcycgZGlkIG5vdCBtYXRjaCBhbnkgZmlsZXMiCiBtc2dzdHIgInPDtmt2w6Rnc2FuZ2l2ZWxzZW4gXCIlc1wiIG1vdHN2YXJhZGUgaW50ZSBuw6VncmEgZmlsZXIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAiXCIlc1wiIMOkciBww6UgYW5kcmEgc2lkYW4gYXYgZW4gc3ltYm9saXNrIGzDpG5rIgotCi0jOiBidWlsdGluL2FkZC5jOjI3NgorIzogYnVpbHRpbi9hZGQuYzozMzkKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkc2EgaW5kZXhldCIKIAotIzogYnVpbHRpbi9hZGQuYzoyODYKKyM6IGJ1aWx0aW4vYWRkLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICJLdW5kZSBpbnRlIMO2cHBuYSBcIiVzXCIgZsO2ciBza3Jpdm5pbmciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjkwCisjOiBidWlsdGluL2FkZC5jOjM1MwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgcGF0Y2giCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk1CisjOiBidWlsdGluL2FkZC5jOjM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAnJXMnIgogbXNnc3RyICJLdW5kZSBpbnRlIHRhIHN0YXR1cyBww6UgXCIlc1wiIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NworIzogYnVpbHRpbi9hZGQuYzozNjAKIG1zZ2lkICJFbXB0eSBwYXRjaC4gQWJvcnRlZC4iCiBtc2dzdHIgIlRvbSBwYXRjaC4gQXZicnl0ZXIuIgogCi0jOiBidWlsdGluL2FkZC5jOjMwMworIzogYnVpbHRpbi9hZGQuYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGx5ICclcyciCiBtc2dzdHIgIkt1bmRlIGludGUgdGlsbMOkbXBhIFwiJXNcIiIKIAotIzogYnVpbHRpbi9hZGQuYzozMTMKKyM6IGJ1aWx0aW4vYWRkLmM6Mzc2CiBtc2dpZCAiVGhlIGZvbGxvd2luZyBwYXRocyBhcmUgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgogbXNnc3RyICJGw7ZsamFuZGUgc8O2a3bDpGdhciBpZ25vcmVyYXMgYXYgZW4gYXYgZGluYSAuZ2l0aWdub3JlLWZpbGVyOlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjMxOSBidWlsdGluL2NsZWFuLmM6NTIgYnVpbHRpbi9mZXRjaC5jOjc4IGJ1aWx0aW4vbXYuYzo2MwotIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NiBidWlsdGluL3B1c2guYzozODggYnVpbHRpbi9yZW1vdGUuYzoxMjUzCisjOiBidWlsdGluL2FkZC5jOjM5MyBidWlsdGluL2NsZWFuLmM6MTYxIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKKyM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6NDI1IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MwogIzogYnVpbHRpbi9ybS5jOjIwNgogbXNnaWQgImRyeSBydW4iCiBtc2dzdHIgInRlc3Rrw7ZybmluZyIKIAotIzogYnVpbHRpbi9hZGQuYzozMjAgYnVpbHRpbi9hcHBseS5jOjQzNTQgYnVpbHRpbi9jb21taXQuYzoxMTYwCi0jOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo4MiBidWlsdGluL2ZzY2suYzo2MTMgYnVpbHRpbi9sb2cuYzoxNDgzCi0jOiBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKIG1zZ2lkICJiZSB2ZXJib3NlIgogbXNnc3RyICJ2YXIgcHJhdHNhbSIKIAotIzogYnVpbHRpbi9hZGQuYzozMjIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk2CiBtc2dpZCAiaW50ZXJhY3RpdmUgcGlja2luZyIKIG1zZ3N0ciAicGxvY2thIGludGVyYWt0aXZ0IgogCi0jOiBidWlsdGluL2FkZC5jOjMyMyBidWlsdGluL2NoZWNrb3V0LmM6MTAzMSBidWlsdGluL3Jlc2V0LmM6MjQ4CisjOiBidWlsdGluL2FkZC5jOjM5NyBidWlsdGluL2NoZWNrb3V0LmM6MTA2MyBidWlsdGluL3Jlc2V0LmM6MjU4CiBtc2dpZCAic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiCiBtc2dzdHIgInbDpGxqIHN0eWNrZW4gaW50ZXJha3RpdnQiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI0CisjOiBidWlsdGluL2FkZC5jOjM5OAogbXNnaWQgImVkaXQgY3VycmVudCBkaWZmIGFuZCBhcHBseSIKIG1zZ3N0ciAicmVkaWdlcmEgYWt0dWVsbCBkaWZmIG9jaCBhcHBsaWNlcmEiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI1CisjOiBidWlsdGluL2FkZC5jOjM5OQogbXNnaWQgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAidGlsbMOldCBsw6RnZ2EgdGlsbCBhbm5hcnMgaWdub3JlcmFkZSBmaWxlciIKIAotIzogYnVpbHRpbi9hZGQuYzozMjYKKyM6IGJ1aWx0aW4vYWRkLmM6NDAwCiBtc2dpZCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgInVwcGRhdGVyYSBzcMOlcmFkZSBmaWxlciIKIAotIzogYnVpbHRpbi9hZGQuYzozMjcKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICJyZWdpc3RyZXJhIGVuZGFzdCBhdHQgc8O2a3bDpGdlbiBrb21tZXIgbMOkZ2dhcyB0aWxsIHNlbmFyZSIKIAotIzogYnVpbHRpbi9hZGQuYzozMjgKKyM6IGJ1aWx0aW4vYWRkLmM6NDAyCiBtc2dpZCAiYWRkIGNoYW5nZXMgZnJvbSBhbGwgdHJhY2tlZCBhbmQgdW50cmFja2VkIGZpbGVzIgogbXNnc3RyICJsw6RnZyB0aWxsIMOkbmRyaW5nYXIgZnLDpW4gYWxsYSBzcMOlcmFkZSBvY2ggb3Nww6VyYWRlIGZpbGVyIgogCi0jOiBidWlsdGluL2FkZC5jOjMyOQorIy4gdGFrZXMgbm8gYXJndW1lbnRzCisjOiBidWlsdGluL2FkZC5jOjQwNQorbXNnaWQgImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIgorbXNnc3RyICJpZ25vcmVyYSBzw7ZrdsOkZ2FyIGJvcnR0YWduYSBpIGFyYmV0c2thdGFsb2dlbiAoc2FtbWEgc29tIC0tbm8tYWxsKSIKKworIzogYnVpbHRpbi9hZGQuYzo0MDcKIG1zZ2lkICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImzDpGdnIGludGUgdGlsbCwgdXBwZGF0ZXJhIGVuZGFzdCBpbmRleGV0IgogCi0jOiBidWlsdGluL2FkZC5jOjMzMAorIzogYnVpbHRpbi9hZGQuYzo0MDgKIG1zZ2lkICJqdXN0IHNraXAgZmlsZXMgd2hpY2ggY2Fubm90IGJlIGFkZGVkIGJlY2F1c2Ugb2YgZXJyb3JzIgogbXNnc3RyICJob3BwYSBiYXJhIMO2dmVyIGZpbGVyIHNvbSBpbnRlIGthbiBsw6RnZ2FzIHRpbGwgcMOlIGdydW5kIGF2IGZlbCIKIAotIzogYnVpbHRpbi9hZGQuYzozMzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5CiBtc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgogbXNnc3RyICJzZSBvbSAtIMOkdmVuIHNha25hZGUgLSBmaWxlciBpZ25vcmVyYXMgaSB0ZXN0a8O2cm5pbmciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjQzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCB0aGVtLlxuIgogbXNnc3RyICJBbnbDpG5kIC1mIG9tIGR1IHZlcmtsaWdlbiB2aWxsIGzDpGdnYSB0aWxsIGRlbS5cbiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTQKKyM6IGJ1aWx0aW4vYWRkLmM6NDMyCiBtc2dpZCAibm8gZmlsZXMgYWRkZWQiCiBtc2dzdHIgImluZ2EgZmlsZXIgaGFyIGxhZ3RzIHRpbGwiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzYwCisjOiBidWlsdGluL2FkZC5jOjQzOAogbXNnaWQgImFkZGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgIm1pc3NseWNrYWRlcyBsw6RnZ2EgdGlsbCBmaWxlciIKIAotIzogYnVpbHRpbi9hZGQuYzozOTIKKyM6IGJ1aWx0aW4vYWRkLmM6NDc3CiBtc2dpZCAiLUEgYW5kIC11IGFyZSBtdXR1YWxseSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi1BIG9jaCAtdSDDpHIgw7Ztc2VzaWRpZ3QgaW5rb21wYXRpYmxhIgogCi0jOiBidWlsdGluL2FkZC5jOjM5NAorIzogYnVpbHRpbi9hZGQuYzo0OTUKIG1zZ2lkICJPcHRpb24gLS1pZ25vcmUtbWlzc2luZyBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLS1kcnktcnVuIgogbXNnc3RyICJGbGFnZ2FuIC0taWdub3JlLW1pc3Npbmcga2FuIGVuZGFzdCBhbnbDpG5kYXMgdGlsbHNhbW1hbnMgbWVkIC0tZHJ5LXJ1biIKIAotIzogYnVpbHRpbi9hZGQuYzo0MTQKKyM6IGJ1aWx0aW4vYWRkLmM6NTI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdGhpbmcgc3BlY2lmaWVkLCBub3RoaW5nIGFkZGVkLlxuIgogbXNnc3RyICJJbmdldCBhbmdpdmV0LCBpbmdldCB0aWxsYWd0LlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjQxNQorIzogYnVpbHRpbi9hZGQuYzo1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iCiBtc2dzdHIgIkthbnNrZSBtZW5hZGUgZHUgYXR0IHNrcml2YSBcImdpdCBhZGQgLlwiP1xuIgogCi0jOiBidWlsdGluL2FkZC5jOjQyMSBidWlsdGluL2NsZWFuLmM6OTUgYnVpbHRpbi9jb21taXQuYzoyOTEgYnVpbHRpbi9tdi5jOjgyCi0jOiBidWlsdGluL3JtLmM6MjM1CisjOiBidWlsdGluL2FkZC5jOjUzMiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjY2IGJ1aWx0aW4vY2xlYW4uYzoyMDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjkzIGJ1aWx0aW4vbXYuYzo4MiBidWlsdGluL3JtLmM6MjM1CiBtc2dpZCAiaW5kZXggZmlsZSBjb3JydXB0IgogbXNnc3RyICJpbmRleGZpbGVuIHRyYXNpZyIKIAotIzogYnVpbHRpbi9hZGQuYzo0ODEgYnVpbHRpbi9hcHBseS5jOjQ0NTAgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCisjOiBidWlsdGluL2FkZC5jOjYwNCBidWlsdGluL2FwcGx5LmM6NDUwNSBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzozNzAKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIkt1bmRlIGludGUgc2tyaXZhIG55IGluZGV4ZmlsIgogCkBAIC0xNTg3LDE3ICsxODgzLDE3IEBACiBtc2dpZCAiZ2l0IGFwcGx5OiBiYWQgZ2l0LWRpZmYgLSBleHBlY3RlZCAvZGV2L251bGwgb24gbGluZSAlZCIKIG1zZ3N0ciAiZ2l0IGFwcGx5OiBkw6VsaWcgZ2l0LWRpZmYgLSBmw7ZydsOkbnRhZGUgL2Rldi9udWxsIHDDpSByYWQgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDIwCisjOiBidWlsdGluL2FwcGx5LmM6MTQyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWNvdW50OiB1bmV4cGVjdGVkIGxpbmU6ICUuKnMiCiBtc2dzdHIgInJlY291bnQ6IGbDtnJ2w6RudGFkZSByYWQ6ICUuKnMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDc3CisjOiBidWlsdGluL2FwcGx5LmM6MTQ3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCBmcmFnbWVudCB3aXRob3V0IGhlYWRlciBhdCBsaW5lICVkOiAlLipzIgogbXNnc3RyICJwYXRjaC1mcmFnbWVudCB1dGFuIGh1dnVkIHDDpSByYWQgJWQ6ICUuKnMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDk0CisjOiBidWlsdGluL2FwcGx5LmM6MTQ5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiZ2l0IGRpZmYgaGVhZGVyIGxhY2tzIGZpbGVuYW1lIGluZm9ybWF0aW9uIHdoZW4gcmVtb3ZpbmcgJWQgbGVhZGluZyBwYXRobmFtZSAiCkBAIC0xNjEzLDgyICsxOTA5LDc4IEBACiAic8O2a3bDpGdza29tcG9uZW50ZXJcbiIKICJ0YXMgYm9ydCAocmFkICVkKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2NTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CiBtc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIm55IGZpbCBiZXJvciBww6UgZ2FtbWFsdCBpbm5laMOlbGwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CisjOiBidWlsdGluL2FwcGx5LmM6MTY1OAogbXNnaWQgImRlbGV0ZWQgZmlsZSBzdGlsbCBoYXMgY29udGVudHMiCiBtc2dzdHIgImJvcnR0YWdlbiBmaWwgaGFyIGZvcnRmYXJhbmRlIGlubmVow6VsbCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2ODIKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAidHJhc2lnIHBhdGNoIHDDpSByYWQgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNzE4CisjOiBidWlsdGluL2FwcGx5LmM6MTcyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZSAlcyBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAibnlhIGZpbGVuICVzIGJlcm9yIHDDpSBnYW1tYWx0IGlubmVow6VsbCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE3MjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQgZmlsZSAlcyBzdGlsbCBoYXMgY29udGVudHMiCiBtc2dzdHIgImJvcnR0YWduYSBmaWxlbiAlcyBoYXIgZm9ydGZhcmFuZGUgaW5uZWjDpWxsIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTcyMworIzogYnVpbHRpbi9hcHBseS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiogd2FybmluZzogZmlsZSAlcyBiZWNvbWVzIGVtcHR5IGJ1dCBpcyBub3QgZGVsZXRlZCIKIG1zZ3N0ciAiKiogdmFybmluZzogZmlsZW4gJXMgYmxpciB0b20gbWVuIGhhciBpbnRlIHRhZ2l0cyBib3J0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTg2OQorIzogYnVpbHRpbi9hcHBseS5jOjE4NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZDogJS4qcyIKIG1zZ3N0ciAidHJhc2lnIGJpbsOkcnBhdGNoIHDDpSByYWQgJWQ6ICUuKnMiCiAKICMuIHRoZXJlIGhhcyB0byBiZSBvbmUgaHVuayAoZm9yd2FyZCBodW5rKQotIzogYnVpbHRpbi9hcHBseS5jOjE4OTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxOTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZCIKIG1zZ3N0ciAiYmluw6RycGF0Y2hlbiBww6UgcmFkICVkIGvDpG5ucyBpbnRlIGlnZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxOTg0CisjOiBidWlsdGluL2FwcGx5LmM6MTk4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCB3aXRoIG9ubHkgZ2FyYmFnZSBhdCBsaW5lICVkIgogbXNnc3RyICJwYXRjaCBtZWQgYmFyYSBza3LDpHAgcMOlIHJhZCAlZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIwNzQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkIHN5bWxpbmsgJXMiCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2Egc3ltYm9saXNrYSBsw6Rua2VuICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA3OAorIzogYnVpbHRpbi9hcHBseS5jOjIwODAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG9wZW4gb3IgcmVhZCAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSDDtnBwbmEgZWxsZXIgbMOkc2EgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyMTQ5Ci1tc2dpZCAib29wcyIKLW1zZ3N0ciAiaG9wcHNhbiIKLQotIzogYnVpbHRpbi9hcHBseS5jOjI2NzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyNjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc3RhcnQgb2YgbGluZTogJyVjJyIKIG1zZ3N0ciAiZmVsYWt0aWcgaW5sZWRuaW5nIHDDpSByYWQ6IFwiJWNcIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3ODkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKIG1zZ3N0clswXSAiU3R5Y2tlICVkIGx5Y2thZGVzIHDDpSAlZCAob2Zmc2V0ICVkIHJhZCkuIgogbXNnc3RyWzFdICJTdHlja2UgJWQgbHlja2FkZXMgcMOlICVkIChvZmZzZXQgJWQgcmFkZXIpLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI4MDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbnRleHQgcmVkdWNlZCB0byAoJWxkLyVsZCkgdG8gYXBwbHkgZnJhZ21lbnQgYXQgJWQiCiBtc2dzdHIgIlNhbW1hbmhhbmcgcmVkdWNlcmF0IHRpbGwgKCVsZC8lbGQpIGbDtnIgYXR0IHRpbGzDpG1wYSBmcmFnbWVudCB2aWQgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyODA3CisjOiBidWlsdGluL2FwcGx5LmM6MjgyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAid2hpbGUgc2VhcmNoaW5nIGZvcjpcbiIKQEAgLTE2OTcsMzE4ICsxOTg5LDMxOCBAQAogInZpZCBzw7ZrbmluZyBlZnRlcjpcbiIKICIlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgyNgorIzogYnVpbHRpbi9hcHBseS5jOjI4NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAibWlzc2luZyBiaW5hcnkgcGF0Y2ggZGF0YSBmb3IgJyVzJyIKIG1zZ3N0ciAic2FrbmFyIGJpbsOkcmEgcGF0Y2hkYXRhIGbDtnIgXCIlc1wiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkyOQorIzogYnVpbHRpbi9hcHBseS5jOjI5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIGRvZXMgbm90IGFwcGx5IHRvICclcyciCiBtc2dzdHIgImJpbsOkcnBhdGNoZW4ga2FuIGludGUgdGlsbMOkbXBhcyBww6UgXCIlc1wiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkzNQorIzogYnVpbHRpbi9hcHBseS5jOjI5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIHRvICclcycgY3JlYXRlcyBpbmNvcnJlY3QgcmVzdWx0IChleHBlY3RpbmcgJXMsIGdvdCAlcykiCiBtc2dzdHIgImJpbsOkcnBhdGNoZW4gcMOlIFwiJXNcIiBnZXIgZmVsYWt0aWd0IHJlc3VsdGF0IChmw7ZydsOkbnRhZGUgJXMsIGZpY2sgJXMpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mjk1NgorIzogYnVpbHRpbi9hcHBseS5jOjI5NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZmFpbGVkOiAlczolbGQiCiBtc2dzdHIgInBhdGNoIG1pc3NseWNrYWRlczogJXM6JWxkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzA3OAorIzogYnVpbHRpbi9hcHBseS5jOjMwOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGNoZWNrb3V0ICVzIgogbXNnc3RyICJrYW4gaW50ZSBjaGVja2EgdXQgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTIzIGJ1aWx0aW4vYXBwbHkuYzozMTMyIGJ1aWx0aW4vYXBwbHkuYzozMTc2CisjOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWFkIG9mICVzIGZhaWxlZCIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIGzDpHNhICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE1NiBidWlsdGluL2FwcGx5LmM6MzM3OAorIzogYnVpbHRpbi9hcHBseS5jOjMxNzMgYnVpbHRpbi9hcHBseS5jOjMzOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCiBtc2dzdHIgInPDtmt2w6RnZW4gJXMgaGFyIMOkbmRyYXQgbmFtbi90YWdpdHMgYm9ydCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyMzcgYnVpbHRpbi9hcHBseS5jOjMzOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU0IGJ1aWx0aW4vYXBwbHkuYzozNDA5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleCIKIG1zZ3N0ciAiJXM6IGZpbm5zIGludGUgaSBpbmRleGV0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI0MSBidWlsdGluL2FwcGx5LmM6MzM4NCBidWlsdGluL2FwcGx5LmM6MzQwNgorIzogYnVpbHRpbi9hcHBseS5jOjMyNTggYnVpbHRpbi9hcHBseS5jOjM0MDEgYnVpbHRpbi9hcHBseS5jOjM0MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIgogbXNnc3RyICIlczogJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjQ2IGJ1aWx0aW4vYXBwbHkuYzozNDAwCisjOiBidWlsdGluL2FwcGx5LmM6MzI2MyBidWlsdGluL2FwcGx5LmM6MzQxNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgbWF0Y2ggaW5kZXgiCiBtc2dzdHIgIiVzOiBtb3RzdmFyYXIgaW50ZSBpbmRleGV0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzM0OAorIzogYnVpbHRpbi9hcHBseS5jOjMzNjUKIG1zZ2lkICJyZW1vdmFsIHBhdGNoIGxlYXZlcyBmaWxlIGNvbnRlbnRzIgogbXNnc3RyICJwYXRjaCBmw7ZyIGJvcnR0YWduaW5nIGzDpG1uYXIga3ZhciBmaWxpbm5laMOlbGwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNDE3CisjOiBidWlsdGluL2FwcGx5LmM6MzQzNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd3JvbmcgdHlwZSIKIG1zZ3N0ciAiJXM6IGZlbCB0eXAiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNDE5CisjOiBidWlsdGluL2FwcGx5LmM6MzQzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBoYXMgdHlwZSAlbywgZXhwZWN0ZWQgJW8iCiBtc2dzdHIgIiVzIGhhciB0eXBlbiAlbywgZsO2cnbDpG50YWRlICVvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyMAorIzogYnVpbHRpbi9hcHBseS5jOjM1MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4IgogbXNnc3RyICIlczogZmlubnMgcmVkYW4gaSBpbmRleGV0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyMworIzogYnVpbHRpbi9hcHBseS5jOjM1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIlczogZmlubnMgcmVkYW4gaSBhcmJldHNrYXRhbG9nZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQzCisjOiBidWlsdGluL2FwcGx5LmM6MzU2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykiCiBtc2dzdHIgIm55dHQgbMOkZ2UgKCVvKSBmw7ZyICVzIG1vdHN2YXJhciBpbnRlIGdhbW1hbHQgbMOkZ2UgKCVvKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBtb2RlICglbykgb2YgJXMgZG9lcyBub3QgbWF0Y2ggb2xkIG1vZGUgKCVvKSBvZiAlcyIKIG1zZ3N0ciAibnl0dCBsw6RnZSAoJW8pIGbDtnIgJXMgbW90c3ZhcmFyIGludGUgZ2FtbWFsdCBsw6RnZSAoJW8pIGbDtnIgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTU2CisjOiBidWlsdGluL2FwcGx5LmM6MzU3MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcGF0Y2ggZG9lcyBub3QgYXBwbHkiCiBtc2dzdHIgIiVzOiBwYXRjaGVuIGthbiBpbnRlIHRpbGzDpG1wYXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTY5CisjOiBidWlsdGluL2FwcGx5LmM6MzU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyBwYXRjaCAlcy4uLiIKIG1zZ3N0ciAiS29udHJvbGxlcmFyIHBhdGNoZW4gJXMuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjI0IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTUgYnVpbHRpbi9yZXNldC5jOjE1OAorIzogYnVpbHRpbi9hcHBseS5jOjM2NzkgYnVpbHRpbi9jaGVja291dC5jOjIxNiBidWlsdGluL3Jlc2V0LmM6MTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIm1ha2VfY2FjaGVfZW50cnkgbWlzc2x5Y2thZGVzIGbDtnIgc8O2a3bDpGdlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzY3CisjOiBidWlsdGluL2FwcGx5LmM6MzgyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVtb3ZlICVzIGZyb20gaW5kZXgiCiBtc2dzdHIgImthbiBpbnRlIHRhIGJvcnQgJXMgZnLDpW4gaW5kZXhldCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM3OTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgcGF0Y2ggZm9yIHN1YnByb2plY3QgJXMiCiBtc2dzdHIgInRyYXNpZyBwYXRjaCBmw7ZyIHVuZGVycHJvamVrdGV0ICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzc5OQorIzogYnVpbHRpbi9hcHBseS5jOjM4NTQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXQgbmV3bHkgY3JlYXRlZCBmaWxlICclcyciCiBtc2dzdHIgImthbiBpbnRlIHRhIHN0YXR1cyBww6UgbnlsaWdlbiBza2FwYWRlIGZpbGVuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4MDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgYmFja2luZyBzdG9yZSBmb3IgbmV3bHkgY3JlYXRlZCBmaWxlICVzIgogbXNnc3RyICJrYW4gaW50ZSBza2FwYSBzw6RrZXJoZXRzbWlubmUgZsO2ciBueWxpZ2VuIHNrYXBhZGUgZmlsZW4gJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODA3IGJ1aWx0aW4vYXBwbHkuYzozOTE1CisjOiBidWlsdGluL2FwcGx5LmM6Mzg2MiBidWlsdGluL2FwcGx5LmM6Mzk3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gYWRkIGNhY2hlIGVudHJ5IGZvciAlcyIKIG1zZ3N0ciAia2FuIGludGUgbMOkZ2dhIHRpbGwgY2FjaGVwb3N0IGbDtnIgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODQwCisjOiBidWlsdGluL2FwcGx5LmM6Mzg5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjbG9zaW5nIGZpbGUgJyVzJyIKIG1zZ3N0ciAic3TDpG5nZXIgZmlsZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg4OQorIzogYnVpbHRpbi9hcHBseS5jOjM5NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIGZpbGUgJyVzJyBtb2RlICVvIgogbXNnc3RyICJrYW4gaW50ZSBza3JpdmEgZmlsZW4gXCIlc1wiIGzDpGdlICVvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk3NgorIzogYnVpbHRpbi9hcHBseS5jOjQwMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXBwbGllZCBwYXRjaCAlcyBjbGVhbmx5LiIKIG1zZ3N0ciAiVGlsbMOkbXBhZGUgcGF0Y2hlbiAlcyByZW50LiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDM5CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgImludGVybnQgZmVsIgogCiAjLiBTYXkgdGhpcyBldmVuIHdpdGhvdXQgLS12ZXJib3NlCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4NworIzogYnVpbHRpbi9hcHBseS5jOjQwNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0Li4uIgogbXNnaWRfcGx1cmFsICJBcHBseWluZyBwYXRjaCAlJXMgd2l0aCAlZCByZWplY3RzLi4uIgogbXNnc3RyWzBdICJUaWxsw6RtcGFkZSBwYXRjaGVuICUlcyBtZWQgJWQgcmVmdXNlcmFkLi4uIgogbXNnc3RyWzFdICJUaWxsw6RtcGFkZSBwYXRjaGVuICUlcyBtZWQgJWQgcmVmdXNlcmFkZS4uLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5OTcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUyCiAjLCBjLWZvcm1hdAogbXNnaWQgInRydW5jYXRpbmcgLnJlaiBmaWxlbmFtZSB0byAlLipzLnJlaiIKIG1zZ3N0ciAidHJ1bmtlcmFyIC5yZWotZmlsbmFtbmV0IHRpbGwgJS4qcy5yZWoiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDE4CisjOiBidWlsdGluL2FwcGx5LmM6NDA3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJIdW5rICMlZCBhcHBsaWVkIGNsZWFubHkuIgogbXNnc3RyICJTdHlja2UgJWQgdGlsbMOkbXBhZGVzIHJlbnQuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyMQorIzogYnVpbHRpbi9hcHBseS5jOjQwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVqZWN0ZWQgaHVuayAjJWQuIgogbXNnc3RyICJSZWZ1c2VyYXIgc3R5Y2tlICVkLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQxNzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI2CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICJpbmRhdGEga8Okbm5zIGludGUgaWdlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQxODIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjM3CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgaW5kZXggZmlsZSIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgaW5kZXhmaWxlbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMDEgYnVpbHRpbi9hcHBseS5jOjQzMDQgYnVpbHRpbi9jbG9uZS5jOjkxCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NiBidWlsdGluL2FwcGx5LmM6NDM1OSBidWlsdGluL2Nsb25lLmM6OTIKICM6IGJ1aWx0aW4vZmV0Y2guYzo2MwogbXNnaWQgInBhdGgiCiBtc2dzdHIgInPDtmt2w6RnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwMgorIzogYnVpbHRpbi9hcHBseS5jOjQzNTcKIG1zZ2lkICJkb24ndCBhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICJ0aWxsw6RtcGEgaW50ZSDDpG5kcmluZ2FyIHNvbSBtb3RzdmFyYXIgZ2l2ZW4gc8O2a3bDpGciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA1CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MAogbXNnaWQgImFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgInRpbGzDpG1wYSDDpG5kcmluZ2FyIHNvbSBtb3RzdmFyYXIgZ2l2ZW4gc8O2a3bDpGciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA3CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MgogbXNnaWQgIm51bSIKIG1zZ3N0ciAiYW50YWwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA4CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MwogbXNnaWQgInJlbW92ZSA8bnVtPiBsZWFkaW5nIHNsYXNoZXMgZnJvbSB0cmFkaXRpb25hbCBkaWZmIHBhdGhzIgogbXNnc3RyICJ0YSBib3J0IDxhbnRhbD4gaW5sZWRhbmRlIHNuZWRzdHJlY2sgZnLDpW4gdHJhZGl0aW9uZWxsYSBkaWZmLXPDtmt2w6RnYXIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzExCisjOiBidWlsdGluL2FwcGx5LmM6NDM2NgogbXNnaWQgImlnbm9yZSBhZGRpdGlvbnMgbWFkZSBieSB0aGUgcGF0Y2giCiBtc2dzdHIgImlnbm9yZXJhIHRpbGzDpGdnIGdqb3JkYSBhdiBwYXRjaGVuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMxMworIzogYnVpbHRpbi9hcHBseS5jOjQzNjgKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgb3V0cHV0IGRpZmZzdGF0IGZvciB0aGUgaW5wdXQiCiBtc2dzdHIgImlzdMOkbGxldCBmw7ZyIGF0dCB0aWxsw6RtcGEgcGF0Y2hlbiwgc2tyaXYgdXQgZGlmZnN0YXQgZsO2ciBpbmRhdGEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzE3CisjOiBidWlsdGluL2FwcGx5LmM6NDM3MgogbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgInZpc2EgYW50YWwgdGlsbGFnZGEgb2NoIGJvcnR0YWduYSByYWRlciBkZWNpbWFsdCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc0CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAiaXN0w6RsbGV0IGbDtnIgYXR0IHRpbGzDpG1wYSBwYXRjaGVuLCBza3JpdiB1dCBlbiBzdW1tZXJpbmcgYXYgaW5kYXRhIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyMQorIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICJpc3TDpGxsZXQgZsO2ciBhdHQgdGlsbMOkbXBhIHBhdGNoZW4sIHNlIG9tIHBhdGNoZW4ga2FuIHRpbGzDpG1wYXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzIzCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAic2UgdGlsbCBhdHQgcGF0Y2hlbiBrYW4gdGlsbMOkbXBhcyBww6UgYWt0dWVsbHQgaW5kZXgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzI1CisjOiBidWlsdGluL2FwcGx5LmM6NDM4MAogbXNnaWQgImFwcGx5IGEgcGF0Y2ggd2l0aG91dCB0b3VjaGluZyB0aGUgd29ya2luZyB0cmVlIgogbXNnc3RyICJ0aWxsw6RtcGEgZW4gcGF0Y2ggdXRhbiBhdHQgcsO2cmEgYXJiZXRza2F0YWxvZ2VuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNworIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAidGlsbMOkbXBhIG9ja3PDpSBwYXRjaGVuIChhbnbDpG5kIG1lZCAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2spIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyOQorIzogYnVpbHRpbi9hcHBseS5jOjQzODQKIG1zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICJmw7Zyc8O2ayBlbiB0cmV2w6Rnc3NhbW1hbnNsYWduaW5nIG9tIHBhdGNoZW4gaW50ZSBrYW4gdGlsbMOkbXBhcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCiBtc2dzdHIgImJ5Z2cgZXR0IHRlbXBvcsOkcnQgaW5kZXggYmFzZXJhdCBww6UgaW5ieWdnZCBpbmRleGluZm9ybWF0aW9uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMzMyBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg4IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTcgYnVpbHRpbi9scy1maWxlcy5jOjQ1NgogbXNnaWQgInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIgogbXNnc3RyICJzw7ZrdsOkZ2FyIGF2ZGVsYXMgbWVkIE5VTC10ZWNrZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM2CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MQogbXNnaWQgImVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2YgY29udGV4dCBtYXRjaCIKIG1zZ3N0ciAic2UgdGlsbCBhdHQgw6V0bWluc3RvbmUgPG4+IHJhZGVyIHNhbW1hbmhhbmcgw6RyIGxpa2EiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM3CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MgogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAiw6V0Z8OkcmQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM4CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImRldGVjdCBuZXcgb3IgbW9kaWZpZWQgbGluZXMgdGhhdCBoYXZlIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyICJkZXRla3RlcmEgbnlhIGVsbGVyIMOkbmRyYWRlIHJhZGVyIHNvbSBoYXIgZmVsIGkgYmxhbmt0ZWNrZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQxIGJ1aWx0aW4vYXBwbHkuYzo0MzQ0CisjOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQogbXNnaWQgImlnbm9yZSBjaGFuZ2VzIGluIHdoaXRlc3BhY2Ugd2hlbiBmaW5kaW5nIGNvbnRleHQiCiBtc2dzdHIgImlnbm9yZXJhIMOkbmRyaW5nYXIgaSBibGFua3RlY2tlbiBmw7ZyIHNhbW1hbmhhbmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ3CisjOiBidWlsdGluL2FwcGx5LmM6NDQwMgogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICJ0aWxsw6RtcGEgcGF0Y2hlbiBiYWtsw6RuZ2VzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM0OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDQKIG1zZ2lkICJkb24ndCBleHBlY3QgYXQgbGVhc3Qgb25lIGxpbmUgb2YgY29udGV4dCIKIG1zZ3N0ciAiZsO2cnbDpG50YSBpbnRlIG1pbnN0IGVuIHJhZCBzYW1tYW5oYW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1MQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDYKIG1zZ2lkICJsZWF2ZSB0aGUgcmVqZWN0ZWQgaHVua3MgaW4gY29ycmVzcG9uZGluZyAqLnJlaiBmaWxlcyIKIG1zZ3N0ciAibMOkbW5hIHJlZnVzZXJhZGUgc3R5Y2tlbiBpIG1vdHN2YXJhbmRlICoucmVqLWZpbGVyIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1MworIzogYnVpbHRpbi9hcHBseS5jOjQ0MDgKIG1zZ2lkICJhbGxvdyBvdmVybGFwcGluZyBodW5rcyIKIG1zZ3N0ciAidGlsbMOldCDDtnZlcmxhcHBhbmRlIHN0eWNrZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2CisjOiBidWlsdGluL2FwcGx5LmM6NDQxMQogbXNnaWQgInRvbGVyYXRlIGluY29ycmVjdGx5IGRldGVjdGVkIG1pc3NpbmcgbmV3LWxpbmUgYXQgdGhlIGVuZCBvZiBmaWxlIgogbXNnc3RyICJ0b2xlcmVyYSBmZWxha3RpZ3QgZGV0ZWt0ZXJhZGUgc2FrbmFkZSBueXJhZHN0ZWNrZW4gdmlkIGZpbHNsdXQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU5CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNAogbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKIG1zZ3N0ciAibGl0ZSBpbnRlIHDDpSBhbnRhbGV0IGxpbmplciBpIHN0eWNrZWh1dnVkZW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYxCisjOiBidWlsdGluL2FwcGx5LmM6NDQxNgogbXNnaWQgInJvb3QiCiBtc2dzdHIgInJvdCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE3CiBtc2dpZCAicHJlcGVuZCA8cm9vdD4gdG8gYWxsIGZpbGVuYW1lcyIKIG1zZ3N0ciAibMOkZ2cgdGlsbCA8cm90PiBpIGFsbGEgZmlsbmFtbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDM5CiBtc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLTN3YXkgdXRhbmbDtnIgYXJraXYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCisjOiBidWlsdGluL2FwcGx5LmM6NDQ0NwogbXNnaWQgIi0taW5kZXggb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIi0taW5kZXggdXRhbmbDtnIgYXJraXYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzk1CisjOiBidWlsdGluL2FwcGx5LmM6NDQ1MAogbXNnaWQgIi0tY2FjaGVkIG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLWNhY2hlZCB1dGFuZsO2ciBhcmtpdiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gcGF0Y2ggJyVzJyIKIG1zZ3N0ciAia2FuIGludGUgw7ZwcG5hIHBhdGNoZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQyNQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAidW5kZXJ0cnlja3RlICVkIGZlbCBpIGJsYW5rc3RlZyIKIG1zZ3N0clsxXSAidW5kZXJ0cnlja3RlICVkIGZlbCBpIGJsYW5rc3RlZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MzEgYnVpbHRpbi9hcHBseS5jOjQ0NDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDg2IGJ1aWx0aW4vYXBwbHkuYzo0NDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGxpbmUgYWRkcyB3aGl0ZXNwYWNlIGVycm9ycy4iCiBtc2dpZF9wbHVyYWwgIiVkIGxpbmVzIGFkZCB3aGl0ZXNwYWNlIGVycm9ycy4iCkBAIC0yMDMyLDIxICsyMzI0LDIxIEBACiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIEFDSy9OQUssIGdvdCBFT0YiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBmw7ZydsOkbnRhZGUgQUNLL05BSywgZmljayBFT0YiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYzCisjOiBidWlsdGluL2FyY2hpdmUuYzo2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogTkFDSyAlcyIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IE5BQ0sgJXMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY1CisjOiBidWlsdGluL2FyY2hpdmUuYzo2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdGUgZXJyb3I6ICVzIgogbXNnc3RyICJmasOkcnJmZWw6ICVzIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NgorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjQKIG1zZ2lkICJnaXQgYXJjaGl2ZTogcHJvdG9jb2wgZXJyb3IiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBwcm90b2tvbGxmZWwiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjcxCisjOiBidWlsdGluL2FyY2hpdmUuYzo2OAogbXNnaWQgImdpdCBhcmNoaXZlOiBleHBlY3RlZCBhIGZsdXNoIgogbXNnc3RyICJnaXQgYXJjaGl2ZTogZsO2cnbDpG50YWRlIGVuIHTDtm1uaW5nIChmbHVzaCkiCiAKQEAgLTIwNjYsMTE5ICsyMzU4LDExOSBAQAogbXNnaWQgImdpdCBibGFtZSBbb3B0aW9uc10gW3Jldi1vcHRzXSBbcmV2XSBbLS1dIGZpbGUiCiBtc2dzdHIgImdpdCBibGFtZSBbZmxhZ2dvcl0gW3Jldi1mbGFnZ29yXSBbcmV2XSBbLS1dIGZpbCIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjMwIGJ1aWx0aW4vc2hvcnRsb2cuYzoxNQorIzogYnVpbHRpbi9ibGFtZS5jOjMwCiBtc2dpZCAiW3Jldi1vcHRzXSBhcmUgZG9jdW1lbnRlZCBpbiBnaXQtcmV2LWxpc3QoMSkiCiBtc2dzdHIgIltyZXYtZmxhZ2dvcl0gZG9rdW1lbnRlcmFzIGkgZ2l0LXJldi1saXN0KDEpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNTUKIG1zZ2lkICJTaG93IGJsYW1lIGVudHJpZXMgYXMgd2UgZmluZCB0aGVtLCBpbmNyZW1lbnRhbGx5IgogbXNnc3RyICJWaXNhIGtsYW5kcmluZ3Nwb3N0ZXIgbsOkciB2aSBoaXR0YXIgZGVtLCBpbnRlcmFrdGl2dCIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU2CiBtc2dpZCAiU2hvdyBibGFuayBTSEEtMSBmb3IgYm91bmRhcnkgY29tbWl0cyAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiVmlzYSBibGFuayBTSEEtMSBmw7ZyIGdyw6Ruc2luY2hlY2tuaW5nYXIgKFN0YW5kYXJkOiBhdikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc2CisjOiBidWlsdGluL2JsYW1lLmM6MjM1NwogbXNnaWQgIkRvIG5vdCB0cmVhdCByb290IGNvbW1pdHMgYXMgYm91bmRhcmllcyAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiQmVoYW5kbGEgaW50ZSByb3RpbmNoZWNrbmluZ2FyIHNvbSBncsOkbnNlciAoU3RhbmRhcmQ6IGF2KSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzcKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU4CiBtc2dpZCAiU2hvdyB3b3JrIGNvc3Qgc3RhdGlzdGljcyIKIG1zZ3N0ciAiVmlzYSBzdGF0aXN0aWsgw7Z2ZXIgYXJiZXRza29zdG5hZCIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU5CiBtc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCiBtc2dzdHIgIlZpc2EgdXRkYXRhcG/DpG5nIGbDtnIga2xhbmRyaW5nc3Bvc3RlciIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCiBtc2dzdHIgIlZpc2Egb3JpZ2luYWxmaWxuYW1uIChTdGFuZGFyZDogYXV0bykiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgwCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MQogbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiVmlzYSB1cnNwcnVuZ2xpZ3QgcmFkbnVtbWVyIChTdGFuZGFyZDogYXYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4MQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjIKIG1zZ2lkICJTaG93IGluIGEgZm9ybWF0IGRlc2lnbmVkIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uIgogbXNnc3RyICJWaXNhIGkgZXR0IGZvcm1hdCBhdnNldHQgZsO2ciBtYXNraW5rb25zdW10aW9uIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4MgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKIG1zZ2lkICJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iCiBtc2dzdHIgIlZpc2EgcG9yc2xpbnNmb3JtYXQgbWVkIHBlci1yYWQtaW5jaGVja25pbmdzaW5mb3JtYXRpb24iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgzCisjOiBidWlsdGluL2JsYW1lLmM6MjM2NAogbXNnaWQgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIkFudsOkbmQgc2FtbWEgdXRkYXRhbMOkZ2Ugc29tIGdpdC1hbm5vdGF0ZSAoU3RhbmRhcmQ6IGF2KSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY1CiBtc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJWaXNhIHLDpSB0aWRzc3TDpG1wZWwgKFN0YW5kYXJkOiBhdikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg1CisjOiBidWlsdGluL2JsYW1lLmM6MjM2NgogbXNnaWQgIlNob3cgbG9uZyBjb21taXQgU0hBMSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiVmlzYSBsw6VuZyBpbmNoZWNrbmluZ3MtU0hBMSAoU3RhbmRhcmQ6IGF2KSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODYKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3CiBtc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiVW5kZXJ0cnljayBmw7ZyZmF0dGFybmFtbiBvY2ggdGlkc3N0w6RtcGVsIChTdGFuZGFyZDogYXYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4NworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjgKIG1zZ2lkICJTaG93IGF1dGhvciBlbWFpbCBpbnN0ZWFkIG9mIG5hbWUgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIlZpc2EgZsO2cmZhdHRhcmVucyBlLXBvc3QgaXN0w6RsbGV0IGbDtnIgbmFtbiAoU3RhbmRhcmQ6IGF2KSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY5CiBtc2dpZCAiSWdub3JlIHdoaXRlc3BhY2UgZGlmZmVyZW5jZXMiCiBtc2dzdHIgIklnbm9yZXJhIMOkbmRyaW5nYXIgaSBibGFua3N0ZWciCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg5CisjOiBidWlsdGluL2JsYW1lLmM6MjM3MAogbXNnaWQgIlNwZW5kIGV4dHJhIGN5Y2xlcyB0byBmaW5kIGJldHRlciBtYXRjaCIKIG1zZ3N0ciAiU2zDtnNhIGV4dHJhIGN5a2xlciBtZWQgYXR0IGhpdHRhIGLDpHR0cmUgdHLDpGZmIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzEKIG1zZ2lkICJVc2UgcmV2aXNpb25zIGZyb20gPGZpbGU+IGluc3RlYWQgb2YgY2FsbGluZyBnaXQtcmV2LWxpc3QiCiBtc2dzdHIgIkFudsOkbmQgcmV2aXNpb25lciBmcsOlbiA8ZmlsPiBpc3TDpGxsZXQgZsO2ciBhdHQgYW5yb3BhIGdpdC1yZXYtbGlzdCIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyCiBtc2dpZCAiVXNlIDxmaWxlPidzIGNvbnRlbnRzIGFzIHRoZSBmaW5hbCBpbWFnZSIKIG1zZ3N0ciAiQW52w6RuZCA8ZmlsPnMgaW5uZWjDpWxsIHNvbSBzbHV0Z2lsdGlnIGJpbGQiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkyIGJ1aWx0aW4vYmxhbWUuYzoyMzkzCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MyBidWlsdGluL2JsYW1lLmM6MjM3NAogbXNnaWQgInNjb3JlIgogbXNnc3RyICJwb8OkbmciCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkyCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MwogbXNnaWQgIkZpbmQgbGluZSBjb3BpZXMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCiBtc2dzdHIgIkhpdHRhIGtvcGllcmFkZSByYWRlciBpbnV0aSBvY2ggbWVsbGFuIGZpbGVyIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzQKIG1zZ2lkICJGaW5kIGxpbmUgbW92ZW1lbnRzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgogbXNnc3RyICJIaXR0YSBmbHl0dGFkZSByYWRlciBpbnV0aSBvY2ggbWVsbGFuIGZpbGVyIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKIG1zZ2lkICJuLG0iCiBtc2dzdHIgIm4sbSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzOTQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CiBtc2dpZCAiUHJvY2VzcyBvbmx5IGxpbmUgcmFuZ2UgbixtLCBjb3VudGluZyBmcm9tIDEiCiBtc2dzdHIgIkJlaGFuZGxhIGVuZGFzdCByYWRpbnRlcnZhbGxldCBuLG0sIG1lZCBiw7ZyamFuIHDDpSAxIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzCisjOiBidWlsdGluL2JyYW5jaC5jOjI0CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbZmxhZ2dvcl0gWy1yIHwgLWFdIFstLW1lcmdlZCB8IC0tbm8tbWVyZ2VkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNAorIzogYnVpbHRpbi9icmFuY2guYzoyNQogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstbF0gWy1mXSA8YnJhbmNobmFtZT4gWzxzdGFydC1wb2ludD5dIgogbXNnc3RyICJnaXQgYnJhbmNoIFtmbGFnZ29yXSBbLWxdIFstZl0gPGdyZW5uYW1uPiBbPHN0YXJ0cHVua3Q+XSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNQorIzogYnVpbHRpbi9icmFuY2guYzoyNgogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbZmxhZ2dvcl0gWy1yXSAoLWQgfCAtRCkgPGdyZW5uYW1uPi4uLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNgorIzogYnVpbHRpbi9icmFuY2guYzoyNwogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdICgtbSB8IC1NKSBbPG9sZGJyYW5jaD5dIDxuZXdicmFuY2g+IgogbXNnc3RyICJnaXQgYnJhbmNoIFtmbGFnZ29yXSAoLW0gfCAtTSkgWzxnYW1tYWxfZ3Jlbj5dIDxueV9ncmVuPiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNDUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGhhcyBiZWVuIG1lcmdlZCB0b1xuIgpAQCAtMjE4Nyw3ICsyNDc5LDcgQEAKICJ0YXIgYm9ydCBncmVuZW4gXCIlc1wiIHNvbSBoYXIgc2xhZ2l0cyBpaG9wIG1lZFxuIgogIiAgICAgICAgIFwiJXNcIiwgbWVuIMOkbm51IGludGUgc2xhZ2l0cyBpaG9wIG1lZCBIRUFELiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNDkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJub3QgZGVsZXRpbmcgYnJhbmNoICclcycgdGhhdCBpcyBub3QgeWV0IG1lcmdlZCB0b1xuIgpAQCAtMjE5NiwxMiArMjQ4OCwxMiBAQAogInRhciBpbnRlIGJvcnQgZ3JlbmVuIFwiJXNcIiBzb20gaW50ZSBoYXIgc2xhZ2l0cyBpaG9wIG1lZFxuIgogIiAgICAgICAgIFwiJXNcIiwgdHJvdHMgYXR0IGRlbiBoYXIgc2xhZ2l0cyBpaG9wIG1lZCBIRUFELiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgJyVzJyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBzbMOlIHVwcCBpbmNoZWNrbmluZ3NvYmpla3QgZsO2ciBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTY3CisjOiBidWlsdGluL2JyYW5jaC5jOjE3MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGJyYW5jaCAnJXMnIGlzIG5vdCBmdWxseSBtZXJnZWQuXG4iCkBAIC0yMjEwLDI1MyArMjUwMiwzMzIgQEAKICJHcmVuZW4gXCIlc1wiIGhhciBpbnRlIHNsYWdpdHMgc2FtbWFuIGkgc2luIGhlbGhldC5cbiIKICJPbSBkdSDDpHIgc8Oka2VyIHDDpSBhdHQgZHUgdmlsbCB0YSBib3J0IGRlbiwga8O2ciBcImdpdCBicmFuY2ggLUQgJXNcIi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTgwCisjOiBidWlsdGluL2JyYW5jaC5jOjE4NQogbXNnaWQgIlVwZGF0ZSBvZiBjb25maWctZmlsZSBmYWlsZWQiCiBtc2dzdHIgIk1pc3NseWNrYWRlcyB1cHBkYXRlcmEga29uZmlndXJhdGlvbnNmaWwiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjA4CisjOiBidWlsdGluL2JyYW5jaC5jOjIxMwogbXNnaWQgImNhbm5vdCB1c2UgLWEgd2l0aCAtZCIKIG1zZ3N0ciAia2FuIGludGUgYW5nZSAtYSBtZWQgLWQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjE0CisjOiBidWlsdGluL2JyYW5jaC5jOjIxOQogbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBzbMOlIHVwcCBpbmNoZWNrbmluZ3NvYmpla3QgZsO2ciBIRUFEIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIyMgorIzogYnVpbHRpbi9icmFuY2guYzoyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgogbXNnc3RyICJLYW4gaW50ZSB0YSBib3J0IGdyZW5lbiBcIiVzXCIgc29tIGR1IGJlZmlubmVyIGRpZyBww6UgZsO2ciBuw6RydmFyYW5kZS4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjM1CisjOiBidWlsdGluL2JyYW5jaC5jOjI0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdGUgYnJhbmNoICclcycgbm90IGZvdW5kLiIKIG1zZ3N0ciAiZmrDpHJyZ3JlbmVuIFwiJXNcIiBoaXR0YWRlcyBpbnRlLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCiBtc2dzdHIgImdyZW5lbiBcIiVzXCIgaGl0dGFkZXMgaW50ZS4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjUwCisjOiBidWlsdGluL2JyYW5jaC5jOjI1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciBkZWxldGluZyByZW1vdGUgYnJhbmNoICclcyciCiBtc2dzdHIgIkZlbCB2aWQgYm9ydHRhZ25pbmcgYXYgZmrDpHJyZ3JlbmVuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIGRlbGV0aW5nIGJyYW5jaCAnJXMnIgogbXNnc3RyICJGZWwgdmlkIGJvcnR0YWduaW5nIGF2IGdyZW5lbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU4CisjOiBidWlsdGluL2JyYW5jaC5jOjI2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWxldGVkIHJlbW90ZSBicmFuY2ggJXMgKHdhcyAlcykuXG4iCiBtc2dzdHIgIlRvZyBib3J0IGZqw6RycmdyZW5lbiAlcyAodmFyICVzKS5cbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNTkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgYnJhbmNoICVzICh3YXMgJXMpLlxuIgogbXNnc3RyICJUb2cgYm9ydCBncmVuZW4gJXMgKHZhciAlcykuXG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MzYxCisjOiBidWlsdGluL2JyYW5jaC5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBwb2ludCBhdCBhIGNvbW1pdCIKIG1zZ3N0ciAiZ3JlbmVuIFwiJXNcIiBwZWthciBpbnRlIHDDpSBlbiBpbmNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MzMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYmVoaW5kICVkXSIKIG1zZ3N0ciAiWyVzOiBiYWtvbSAlZF0gIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQzNQorIzogYnVpbHRpbi9icmFuY2guYzo0NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2JlaGluZCAlZF0iCiBtc2dzdHIgIltiYWtvbSAlZF0gIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQzOQorIzogYnVpbHRpbi9icmFuY2guYzo0NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZF0iCiBtc2dzdHIgIlslczogZsO2cmUgJWRdICIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0NDEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlthaGVhZCAlZF0iCiBtc2dzdHIgIltmw7ZyZSAlZF0gIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQ0NAorIzogYnVpbHRpbi9icmFuY2guYzo0NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiWyVzOiBmw7ZyZSAlZCwgYmFrb20gJWRdICIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0NDcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlthaGVhZCAlZCwgYmVoaW5kICVkXSIKIG1zZ3N0ciAiW2bDtnJlICVkLCBiYWtvbSAlZF0gIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjU2MAorIzogYnVpbHRpbi9icmFuY2guYzo0OTAKK21zZ2lkICIgKioqKiBpbnZhbGlkIHJlZiAqKioqIgorbXNnc3RyICIgKioqKiBvZ2lsdGlnIHJlZiAqKioqIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIobm8gYnJhbmNoLCByZWJhc2luZyAlcykiCittc2dzdHIgIihpbmdlbiBncmVuLCBvbWJhc2VyYXIgJXMpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4NQorIywgYy1mb3JtYXQKK21zZ2lkICIobm8gYnJhbmNoLCBiaXNlY3Qgc3RhcnRlZCBvbiAlcykiCittc2dzdHIgIihpbmdlbiBncmVuLCBcImJpc2VjdFwiIHN0YXJ0YWQgcMOlICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiKGRldGFjaGVkIGZyb20gJXMpIgorbXNnc3RyICIoZnLDpW5rb3BwbGFkIGZyw6VuICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1OTEKIG1zZ2lkICIobm8gYnJhbmNoKSIKIG1zZ3N0ciAiKGluZ2VuIGdyZW4pIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYyNQorIzogYnVpbHRpbi9icmFuY2guYzo2MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCittc2dzdHIgIm9iamVrdGV0IFwiJXNcIiBwZWthciBww6UgZW4gaW5jaGVja25pbmciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjY5CiBtc2dpZCAic29tZSByZWZzIGNvdWxkIG5vdCBiZSByZWFkIgogbXNnc3RyICJ2aXNzYSByZWZlcmVuc2VyIGt1bmRlIGludGUgbMOkc2FzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYzOAorIzogYnVpbHRpbi9icmFuY2guYzo2ODIKIG1zZ2lkICJjYW5ub3QgcmVuYW1lIHRoZSBjdXJyZW50IGJyYW5jaCB3aGlsZSBub3Qgb24gYW55LiIKIG1zZ3N0ciAiIgogImt1bmRlIGludGUgYnl0YSBuYW1uIHDDpSBha3R1ZWxsIGdyZW4gbsOkciBkdSBpbnRlIGJlZmlubmVyIGRpZyBww6UgbsOlZ29uLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NDgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgYnJhbmNoIG5hbWU6ICclcyciCiBtc2dzdHIgIkZlbGFrdGlndCBuYW1uIHDDpSBncmVuOiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjYzCisjOiBidWlsdGluL2JyYW5jaC5jOjcwNwogbXNnaWQgIkJyYW5jaCByZW5hbWUgZmFpbGVkIgogbXNnc3RyICJNaXNzbHlja2FkZXMgYnl0YSBuYW1uIHDDpSBncmVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY2NworIzogYnVpbHRpbi9icmFuY2guYzo3MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1lZCBhIG1pc25hbWVkIGJyYW5jaCAnJXMnIGF3YXkiCiBtc2dzdHIgIkJ5dHRlIGJvcnQgbmFtbiBww6UgZW4gZmVsYWt0aWd0IG5hbW5naXZlbiBncmVuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NzEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCByZW5hbWVkIHRvICVzLCBidXQgSEVBRCBpcyBub3QgdXBkYXRlZCEiCiBtc2dzdHIgIkdyZW5lbiBuYW1uYnl0dCB0aWxsICVzLCBtZW4gSEVBRCBoYXIgaW50ZSB1cHBkYXRlcmF0cyEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Njc4CisjOiBidWlsdGluL2JyYW5jaC5jOjcyMgogbXNnaWQgIkJyYW5jaCBpcyByZW5hbWVkLCBidXQgdXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAiR3JlbmVuIG5hbW5ieXR0LCBtZW4gbWlzc2x5Y2thZGVzIHVwcGRhdGVyYSBrb25maWd1cmF0aW9uc2ZpbGVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY5MworIzogYnVpbHRpbi9icmFuY2guYzo3MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICJmZWxmb3JtYXQgb2JqZWt0bmFtbiAlcyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3MTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBicmFuY2ggZGVzY3JpcHRpb24gdGVtcGxhdGU6ICVzIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrcml2YSBncmVuYmVza3Jpdm5pbmdzbWFsbDogJXMiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzQ3CisjOiBidWlsdGluL2JyYW5jaC5jOjc5MQogbXNnaWQgIkdlbmVyaWMgb3B0aW9ucyIKIG1zZ3N0ciAiQWxsbcOkbm5hIGZsYWdnb3IiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzQ5CisjOiBidWlsdGluL2JyYW5jaC5jOjc5MwogbXNnaWQgInNob3cgaGFzaCBhbmQgc3ViamVjdCwgZ2l2ZSB0d2ljZSBmb3IgdXBzdHJlYW0gYnJhbmNoIgogbXNnc3RyICJ2aXNhIGhhc2ggb2NoIMOkcmVuZGVyYWQsIGFuZ2UgdHbDpSBnw6VuZ2VyIGbDtnIgdXBwc3Ryw7Ztc2dyZW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUwCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NAogbXNnaWQgInN1cHByZXNzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMiCiBtc2dzdHIgInVuZGVydHJ5Y2sgaW5mb3JtYXRpb25zbWVkZGVsYW5kZW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUxCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NQogbXNnaWQgInNldCB1cCB0cmFja2luZyBtb2RlIChzZWUgZ2l0LXB1bGwoMSkpIgogbXNnc3RyICJzdMOkbGwgaW4gc3DDpXJuaW5nc2zDpGdlIChzZSBnaXQtcHVsbCgxKSkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUzCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NwogbXNnaWQgImNoYW5nZSB1cHN0cmVhbSBpbmZvIgogbXNnc3RyICLDpG5kcmEgdXBwc3Ryw7Ztc2luZm9ybWF0aW9uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1NworIzogYnVpbHRpbi9icmFuY2guYzo4MDEKIG1zZ2lkICJ1c2UgY29sb3JlZCBvdXRwdXQiCiBtc2dzdHIgImFudsOkbmQgZsOkcmdhZCB1dGRhdGEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzU4CisjOiBidWlsdGluL2JyYW5jaC5jOjgwMgogbXNnaWQgImFjdCBvbiByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCiBtc2dzdHIgImFyYmV0YSBww6UgZmrDpHJyc3DDpXJhbmRlIGdyZW5hciIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NjEgYnVpbHRpbi9icmFuY2guYzo3NjcgYnVpbHRpbi9icmFuY2guYzo3ODgKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk0IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL2NvbW1pdC5jOjEzNzcKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi90YWcuYzo0NzAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJpbmNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NjIgYnVpbHRpbi9icmFuY2guYzo3NjgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA2IGJ1aWx0aW4vYnJhbmNoLmM6ODEyCiBtc2dpZCAicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIKIG1zZ3N0ciAidmlzYSBlbmRhc3QgZ3JlbmFyIHNvbSBpbm5laMOlbGxlciBpbmNoZWNrbmluZ2VuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3NAorIzogYnVpbHRpbi9icmFuY2guYzo4MTgKIG1zZ2lkICJTcGVjaWZpYyBnaXQtYnJhbmNoIGFjdGlvbnM6IgogbXNnc3RyICJTcGVjaWZpa2EgZ2l0LWJyYW5jaC3DpXRnw6RyZGVyOiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NzUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE5CiBtc2dpZCAibGlzdCBib3RoIHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCiBtc2dzdHIgInZpc2EgYsOlZGUgZmrDpHJyc3DDpXJhbmRlIG9jaCBsb2thbGEgZ3JlbmFyIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3NworIzogYnVpbHRpbi9icmFuY2guYzo4MjEKIG1zZ2lkICJkZWxldGUgZnVsbHkgbWVyZ2VkIGJyYW5jaCIKIG1zZ3N0ciAidGEgYm9ydCBoZWx0IHNhbW1hbnNsYWdlbiBncmVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3OAorIzogYnVpbHRpbi9icmFuY2guYzo4MjIKIG1zZ2lkICJkZWxldGUgYnJhbmNoIChldmVuIGlmIG5vdCBtZXJnZWQpIgogbXNnc3RyICJ0YSBib3J0IGdyZW4gKMOkdmVuIG9tIGludGUgaGVsdCBzYW1tYW5zbGFnZW4pIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3OQorIzogYnVpbHRpbi9icmFuY2guYzo4MjMKIG1zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCBhbmQgaXRzIHJlZmxvZyIKIG1zZ3N0ciAiZmx5dHRhL3RhIGJvcnQgZW4gZ3JlbiBvY2ggZGVzcyByZWZsb2dnIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MAorIzogYnVpbHRpbi9icmFuY2guYzo4MjQKIG1zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCwgZXZlbiBpZiB0YXJnZXQgZXhpc3RzIgogbXNnc3RyICJmbHl0dGEvdGEgYm9ydCBlbiBncmVuLCDDpHZlbiBvbSBtw6VsZXQgZmlubnMiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzgxCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNQogbXNnaWQgImxpc3QgYnJhbmNoIG5hbWVzIgogbXNnc3RyICJsaXN0YSBuYW1uIHDDpSBncmVuYXIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzgyCisjOiBidWlsdGluL2JyYW5jaC5jOjgyNgogbXNnaWQgImNyZWF0ZSB0aGUgYnJhbmNoJ3MgcmVmbG9nIgogbXNnc3RyICJza2FwYSBncmVuZW5zIHJlZmxvZ2ciCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzg0CisjOiBidWlsdGluL2JyYW5jaC5jOjgyOAogbXNnaWQgImVkaXQgdGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgYnJhbmNoIgogbXNnc3RyICJyZWRpZ2VyYSBiZXNrcml2bmluZyBmw7ZyIGdyZW5lbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI5CiBtc2dpZCAiZm9yY2UgY3JlYXRpb24gKHdoZW4gYWxyZWFkeSBleGlzdHMpIgogbXNnc3RyICJ0dmluZ2Egc2thcGFuZGUgKG7DpHIgZGVuIHJlZGFuIGZpbm5zKSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODMyCiBtc2dpZCAicHJpbnQgb25seSBub3QgbWVyZ2VkIGJyYW5jaGVzIgogbXNnc3RyICJ2aXNhIGVuZGFzdCBlaiBzYW1tYW5zbGFnbmEgZ3JlbmFyIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc5NAorIzogYnVpbHRpbi9icmFuY2guYzo4MzgKIG1zZ2lkICJwcmludCBvbmx5IG1lcmdlZCBicmFuY2hlcyIKIG1zZ3N0ciAidmlzYSBlbmRhc3Qgc2FtbWFuc2xhZ25hIGdyZW5hciIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3OTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODQyCiBtc2dpZCAibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIgogbXNnc3RyICJ2aXNhIGdyZW5hciBpIHNwYWx0ZXIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODExCisjOiBidWlsdGluL2JyYW5jaC5jOjg1NQogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlIEhFQUQgYXMgYSB2YWxpZCByZWYuIgogbXNnc3RyICJNaXNzbHlja2FkZXMgc2zDpSB1cHAgSEVBRCBzb20gZ2lsdGlnIHJlZmVyZW5zIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjgxNiBidWlsdGluL2Nsb25lLmM6NTYxCisjOiBidWlsdGluL2JyYW5jaC5jOjg2MCBidWlsdGluL2Nsb25lLmM6NjE5CiBtc2dpZCAiSEVBRCBub3QgZm91bmQgYmVsb3cgcmVmcy9oZWFkcyEiCiBtc2dzdHIgIkhFQUQgaGl0dGFkZXMgaW50ZSB1bmRlciByZWZzL2hlYWRzISIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODgzCiBtc2dpZCAiLS1jb2x1bW4gYW5kIC0tdmVyYm9zZSBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWNvbHVtbiBvY2ggLS12ZXJib3NlIMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODg3CisjOiBidWlsdGluL2JyYW5jaC5jOjg4OSBidWlsdGluL2JyYW5jaC5jOjkyOAorbXNnaWQgImJyYW5jaCBuYW1lIHJlcXVpcmVkIgorbXNnc3RyICJncmVubmFtbiBrcsOkdnMiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA0Cittc2dpZCAiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIKK21zZ3N0ciAiS2FuIGludGUgYmVza3JpdmEgZnLDpW5rb3BwbGFkIEhFQUQiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA5Cittc2dpZCAiY2Fubm90IGVkaXQgZGVzY3JpcHRpb24gb2YgbW9yZSB0aGFuIG9uZSBicmFuY2giCittc2dzdHIgImthbiBpbnRlIHJlZGlnZXJhIGJlc2tyaXZuaW5nIGbDtnIgbWVyIMOkbiBlbiBncmVuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkxNgorIywgYy1mb3JtYXQKK21zZ2lkICJObyBjb21taXQgb24gYnJhbmNoICclcycgeWV0LiIKK21zZ3N0ciAiSW5nYSBpbmNoZWNrbmluZ2FyIHDDpSBncmVuZW4gXCIlc1wiIMOkbm51IgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkxOQorIywgYy1mb3JtYXQKK21zZ2lkICJObyBicmFuY2ggbmFtZWQgJyVzJy4iCittc2dzdHIgIkluZ2VuIGdyZW4gdmlkIG5hbW5ldCBcIiVzXCIuIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzNAorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIGZvciBhIHJlbmFtZSBvcGVyYXRpb24iCittc2dzdHIgImbDtnIgbcOlbmdhIGdyZW5hciBmw7ZyIG5hbW5ieXRlIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzOQorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIHRvIHNldCBuZXcgdXBzdHJlYW0iCittc2dzdHIgImbDtnIgbcOlbmdhIGdyZW5hciBmw7ZyIGF0dCBieXRhIHVwcHN0csO2bSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImNvdWxkIG5vdCBzZXQgdXBzdHJlYW0gb2YgSEVBRCB0byAlcyB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICIiCisia3VuZGUgaW50ZSBzw6R0dGEgdXBwc3Ryw7ZtIGbDtnIgSEVBRCB0aWxsICVzIG7DpHIgZGV0IGludGUgcGVrYXIgbW90IG7DpWdvbiBncmVuLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDYgYnVpbHRpbi9icmFuY2guYzo5NjggYnVpbHRpbi9icmFuY2guYzo5OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gc3VjaCBicmFuY2ggJyVzJyIKK21zZ3N0ciAib2vDpG5kIGdyZW4gXCIlc1wiIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiZ3JlbmVuIFwiJXNcIiBmaW5ucyBpbnRlIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjg5OQorIzogYnVpbHRpbi9icmFuY2guYzo5NjIKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byB1bnNldCB1cHN0cmVhbSIKK21zZ3N0ciAiZsO2ciBtw6VuZ2EgZ3JlbmFyIGbDtnIgYXR0IHRhIGJvcnQgdXBwc3Ryw7ZtIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk2NgorbXNnaWQgImNvdWxkIG5vdCB1bnNldCB1cHN0cmVhbSBvZiBIRUFEIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIiIKKyJrdW5kZSBpbnRlIHRhIGJvcnQgdXBwc3Ryw7ZtIGbDtnIgSEVBRCBuw6RyIGRldCBpbnRlIHBla2FyIG1vdCBuw6Vnb24gZ3Jlbi4iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCAnJXMnIGhhcyBubyB1cHN0cmVhbSBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiR3JlbmVuIFwiJXNcIiBoYXIgaW5nZW4gdXBwc3Ryw7Ztc2luZm9ybWF0aW9uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkxNAorIzogYnVpbHRpbi9icmFuY2guYzo5ODcKK21zZ2lkICJpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSAnSEVBRCcgbWFudWFsbHkiCittc2dzdHIgImthbiBpbnRlIHNrYXBhIFwiSEVBRFwiIG1hbnVlbGx0IgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk5MwogbXNnaWQgIi1hIGFuZCAtciBvcHRpb25zIHRvICdnaXQgYnJhbmNoJyBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIiIKICJmbGFnZ29ybmEgLWEgb2NoIC1yIHDDpSBcImdpdCBicmFuY2hcIiBrYW4gaW50ZSBhbmdlcyB0aWxsc2FtbWFucyBtZWQgZXR0ICIKICJncmVubmFtbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgLS1zZXQtdXBzdHJlYW0gZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIENvbnNpZGVyIHVzaW5nIC0tIgpAQCAtMjQ2NSw3ICsyODM2LDcgQEAKICJGbGFnZ2FuIC0tc2V0LXVwc3RyZWFtIHJla29tbWVuZGVyYXMgZWogb2NoIGtvbW1lciB0YXMgYm9ydC4gQW52w6RuZCAtLXRyYWNrICIKICJlbGxlciAtLXNldC11cHN0cmVhbS10b1xuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkzNAorIzogYnVpbHRpbi9icmFuY2guYzoxMDEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTI0NzYsMTIgKzI4NDcsMTIgQEAKICJPbSBkdSB2aWxsIGfDtnJhIHPDpSBhdHQgXCIlc1wiIHNww6VyYXIgXCIlc1wiIGfDtnIgZHUgc8OlIGjDpHI6XG4iCiAiXG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM1CisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKIG1zZ3N0ciAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgogbXNnc3RyICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgpAQCAtMjQ5OSw0MyArMjg3MCw0MyBAQAogbXNnaWQgIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIKIG1zZ3N0ciAiQmVow7Z2ZXIgZXR0IGFya2l2IGbDtnIgYXR0IHBhY2thIHVwcCBldHQgcGFrZXQgKGJ1bmRsZSkuIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjQ3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc2CiBtc2dpZCAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8dHlwZT58LS10ZXh0Y29udikgPG9iamVjdD4iCiBtc2dzdHIgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cD58LS10ZXh0Y29udikgPG9iamVrdD4iCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNDgKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKIG1zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKIG1zZ3N0ciAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPG9iamVrdGxpc3RhPiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI2NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NQogbXNnaWQgIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKIG1zZ3N0ciAiPHR5cD4ga2FuIHZhcmEgZW4gYXY6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk2CiBtc2dpZCAic2hvdyBvYmplY3QgdHlwZSIKIG1zZ3N0ciAidmlzYSBvYmpla3R0eXAiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNjgKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKIG1zZ2lkICJzaG93IG9iamVjdCBzaXplIgogbXNnc3RyICJ2aXNhIG9iamVrdHN0b3JsZWsiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzAKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTkKIG1zZ2lkICJleGl0IHdpdGggemVybyB3aGVuIHRoZXJlJ3Mgbm8gZXJyb3IiCiBtc2dzdHIgImF2c2x1dGEgbWVkIG5vbGwgbsOkciBkZXQgaW50ZSB1cHBzdMOldHQgbsOlZ290IGZlbCIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3MQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAogbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgogbXNnc3RyICJ2aXNhIG9iamVrdGV0cyBpbm5laMOlbGwgc255Z2d0IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjczCisjOiBidWlsdGluL2NhdC1maWxlLmM6MjAyCiBtc2dpZCAiZm9yIGJsb2Igb2JqZWN0cywgcnVuIHRleHRjb252IG9uIG9iamVjdCdzIGNvbnRlbnQiCiBtc2dzdHIgImbDtnIgYmxvYi1vYmpla3QsIGvDtnIgdGV4dGNvbnYgcMOlIG9iamVrdGV0cyBpbm5laMOlbGwiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzUKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDQKIG1zZ2lkICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgInZpc2EgaW5mb3JtYXRpb24gb2NoIGlubmVow6VsbCBmw7ZyIG9iamVrdCBzb20gbGlzdGFzIHDDpSBzdGFuZGFyZCBpbiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3OAorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwNwogbXNnaWQgInNob3cgaW5mbyBhYm91dCBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAidmlzYSBpbmZvcm1hdGlvbiBmw7ZyIG9iamVrdCBzb20gbGlzdGFzIHDDpSBzdGFuZGFyZCBpbiIKIApAQCAtMjU1NSwxNCArMjkyNiwzOCBAQAogbXNnaWQgInVzZSAuZ2l0YXR0cmlidXRlcyBvbmx5IGZyb20gdGhlIGluZGV4IgogbXNnc3RyICJhbnbDpG5kIC5naXRhdHRyaWJ1dGVzIGVuZGFzdCBmcsOlbiBpbmRleGV0IgogCi0jOiBidWlsdGluL2NoZWNrLWF0dHIuYzoyMSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzUKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1CiBtc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCiBtc2dzdHIgImzDpHMgZmlsbmFtbiBmcsOlbiBzdGFuZGFyZCBpbiIKIAotIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjMKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIzIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjQKIG1zZ2lkICJpbnB1dCBwYXRocyBhcmUgdGVybWluYXRlZCBieSBhIG51bGwgY2hhcmFjdGVyIgogbXNnc3RyICJzw7ZrdsOkZ2FyIGF2ZGVsYXMgbWVkIG51bGwtdGVja2VuIgogCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE4IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ0IGJ1aWx0aW4vZ2MuYzoxNzcKK21zZ2lkICJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciCittc2dzdHIgInVuZGVydHJ5Y2sgZsO2cmxvcHBzcmFwcG9ydGVyaW5nIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0NgorbXNnaWQgImNhbm5vdCBzcGVjaWZ5IHBhdGhuYW1lcyB3aXRoIC0tc3RkaW4iCittc2dzdHIgImthbiBpbnRlIGFuZ2Ugc8O2a3bDpGdzbmFtbiBtZWQgLS1zdGRpbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDkKK21zZ2lkICIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIKK21zZ3N0ciAiLXoga2FuIGVuZGFzdCBhbnbDpG5kYXMgdGlsbHNhbW1hbnMgbWVkIC0tc3RkaW4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUxCittc2dpZCAibm8gcGF0aCBzcGVjaWZpZWQiCittc2dzdHIgImluZ2VuIHPDtmt2w6RnIGFuZ2F2cyIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAiLS1xdWlldCBrYW4gZW5kYXN0IGFudsOkbmRhcyBtZWQgZXR0IGVua2VsdCBzw7ZrdsOkZ3NuYW1uIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NworbXNnaWQgImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIgorbXNnc3RyICJrYW4gaW50ZSBhbnbDpG5kYSBiw6VkZSAtLXF1aWV0IG9jaCAtLXZlcmJvc2UiCisKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxMjYKIG1zZ2lkICJnaXQgY2hlY2tvdXQtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCiBtc2dzdHIgImdpdCBjaGVja291dC1pbmRleCBbZmxhZ2dvcl0gWy0tXSBbPGZpbD4uLi5dIgpAQCAtMjYxNSwxMDYgKzMwMTAsMTA2IEBACiBtc2dpZCAiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSBbPGJyYW5jaD5dIC0tIDxmaWxlPi4uLiIKIG1zZ3N0ciAiZ2l0IGNoZWNrb3V0IFtmbGFnZ29yXSBbPGdyZW4+XSAtLSA8ZmlsPi4uLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNiBidWlsdGluL2NoZWNrb3V0LmM6MTQ5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgb3VyIHZlcnNpb24iCiBtc2dzdHIgInPDtmt2w6RnZW4gXCIlc1wiIGhhciBpbnRlIHbDpXIgdmVyc2lvbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExOCBidWlsdGluL2NoZWNrb3V0LmM6MTUxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgdGhlaXIgdmVyc2lvbiIKIG1zZ3N0ciAic8O2a3bDpGdlbiBcIiVzXCIgaGFyIGludGUgZGVyYXMgdmVyc2lvbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEzNAorIzogYnVpbHRpbi9jaGVja291dC5jOjEzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBhbGwgbmVjZXNzYXJ5IHZlcnNpb25zIgogbXNnc3RyICJzw7ZrdsOkZ2VuIFwiJXNcIiBpbm5laMOlbGxlciBpbnRlIGFsbGEgbsO2ZHbDpG5kaWdhIHZlcnNpb25lciIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjE3OAorIzogYnVpbHRpbi9jaGVja291dC5jOjE3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBuZWNlc3NhcnkgdmVyc2lvbnMiCiBtc2dzdHIgInPDtmt2w6RnZW4gXCIlc1wiIGlubmVow6VsbGVyIGludGUgbsO2ZHbDpG5kaWdhIHZlcnNpb25lciIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjE5NQorIzogYnVpbHRpbi9jaGVja291dC5jOjE5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcyc6IGNhbm5vdCBtZXJnZSIKIG1zZ3N0ciAic8O2a3bDpGcgXCIlc1wiOiBrYW4gaW50ZSBzbMOlIGlob3AiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGFkZCBtZXJnZSByZXN1bHQgZm9yICclcyciCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkZ2dhIHRpbGwgc2FtbWFuc2xhZ25pbmdzcmVzdWx0YXQgZsO2ciBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzYgYnVpbHRpbi9jaGVja291dC5jOjIzOSBidWlsdGluL2NoZWNrb3V0LmM6MjQyCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjM3IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDAgYnVpbHRpbi9jaGVja291dC5jOjI0MworIzogYnVpbHRpbi9jaGVja291dC5jOjI0NgogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggdXBkYXRpbmcgcGF0aHMiCiBtc2dzdHIgIlwiJXNcIiBrYW4gaW50ZSBhbnbDpG5kYXMgdmlkIHVwcGRhdGVyaW5nIGF2IHPDtmt2w6RnYXIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDggYnVpbHRpbi9jaGVja291dC5jOjI1MQorIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKIG1zZ3N0ciAiXCIlc1wiIGthbiBpbnRlIGFudsOkbmRhcyBtZWQgJXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuIgogbXNnc3RyICJLYW4gaW50ZSB1cHBkYXRlcmEgc8O2a3bDpGdhciBvY2ggdsOkeGxhIHRpbGwgZ3JlbmVuIFwiJXNcIiBzYW10aWRpZ3QuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo0MjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjYgYnVpbHRpbi9jaGVja291dC5jOjQ1OAogbXNnaWQgImNvcnJ1cHQgaW5kZXggZmlsZSIKIG1zZ3N0ciAiaW5kZXhmaWxlbiDDpHIgdHJhc2lnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6Mjk1IGJ1aWx0aW4vY2hlY2tvdXQuYzozMDIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzozMjkgYnVpbHRpbi9jaGVja291dC5jOjMzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgaXMgdW5tZXJnZWQiCiBtc2dzdHIgInPDtmt2w6RnZW4gXCIlc1wiIGhhciBpbnRlIHNsYWdpdHMgaWhvcCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjQ0OAorIzogYnVpbHRpbi9jaGVja291dC5jOjQ4MAogbXNnaWQgInlvdSBuZWVkIHRvIHJlc29sdmUgeW91ciBjdXJyZW50IGluZGV4IGZpcnN0IgogbXNnc3RyICJkdSBtw6VzdGUgbMO2c2EgZGl0dCBiZWZpbnRsaWdhIGluZGV4IGbDtnJzdCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU2OQorIzogYnVpbHRpbi9jaGVja291dC5jOjYwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4gbm90IGRvIHJlZmxvZyBmb3IgJyVzJ1xuIgogbXNnc3RyICJLYW4gaW50ZSBza2FwYSByZWZlcmVuc2xvZyBmw7ZyIFwiJXNcIlxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjAyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjM0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQiCiBtc2dzdHIgIkhFQUQgw6RyIG51IHDDpSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYwOQorIzogYnVpbHRpbi9jaGVja291dC5jOjY0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLDhXRlcnN0w6RsbCBncmVuIFwiJXNcIlxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjEyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgogbXNnc3RyICJSZWRhbiBww6UgXCIlc1wiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYW5kIHJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIlbDpHhsYWRlIHRpbGwgb2NoIG5vbGxzdMOkbGxkZSBncmVuZW4gXCIlc1wiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTggYnVpbHRpbi9jaGVja291dC5jOjk1NQorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MCBidWlsdGluL2NoZWNrb3V0LmM6OTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIlbDpHhsYWRlIHRpbGwgZW4gbnkgZ3JlbiBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYyMAorIzogYnVpbHRpbi9jaGVja291dC5jOjY1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICJWw6R4bGFkZSB0aWxsIGdyZW5lbiBcIiVzXCJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY3NgorIzogYnVpbHRpbi9jaGVja291dC5jOjcwOAogIywgYy1mb3JtYXQKIG1zZ2lkICIgLi4uIGFuZCAlZCBtb3JlLlxuIgogbXNnc3RyICIgLi4uIG9jaCAlZCB0aWxsLlxuIgogCiAjLiBUaGUgc2luZ3VsYXIgdmVyc2lvbgotIzogYnVpbHRpbi9jaGVja291dC5jOjY4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjcxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogeW91IGFyZSBsZWF2aW5nICVkIGNvbW1pdCBiZWhpbmQsIG5vdCBjb25uZWN0ZWQgdG9cbiIKQEAgLTI3MzcsNyArMzEzMiw3IEBACiAiXG4iCiAiJXNcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcwMAorIzogYnVpbHRpbi9jaGVja291dC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGJ5IGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhpcyBtYXkgYmUgYSBnb29kIHRpbWVcbiIKQEAgLTI3NTIsMTM2ICszMTQ3LDEzNiBAQAogIiBnaXQgYnJhbmNoIG55dHRfZ3Jlbm5hbW4gJXNcbiIKICJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjczMAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgImludGVybnQgZmVsIHZpZCBnZW5vbWfDpW5nIGF2IHJldmlzaW9uZXIgKHJldmlzaW9uIHdhbGspIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzM0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzY2CiBtc2dpZCAiUHJldmlvdXMgSEVBRCBwb3NpdGlvbiB3YXMiCiBtc2dzdHIgIlRpZGlnYXJlIHBvc2l0aW9uIGbDtnIgSEVBRCB2YXIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjEgYnVpbHRpbi9jaGVja291dC5jOjk1MAorIzogYnVpbHRpbi9jaGVja291dC5jOjc5MyBidWlsdGluL2NoZWNrb3V0LmM6OTgyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiRHUgw6RyIHDDpSBlbiBncmVuIHNvbSDDpG5udSBpbnRlIMOkciBmw7ZkZCIKIAogIy4gY2FzZSAoMSkKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo4ODYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCByZWZlcmVuY2U6ICVzIgogbXNnc3RyICJmZWxha3RpZyByZWZlcmVuczogJXMiCiAKICMuIGNhc2UgKDEpOiB3YW50IGEgdHJlZQotIzogYnVpbHRpbi9jaGVja291dC5jOjkyNQorIzogYnVpbHRpbi9jaGVja291dC5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgaXMgbm90IGEgdHJlZTogJXMiCiBtc2dzdHIgInJlZmVyZW5zZW4gw6RyIGludGUgZXR0IHRyw6RkOiAlcyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk2NAorIzogYnVpbHRpbi9jaGVja291dC5jOjk5NgogbXNnaWQgInBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgogbXNnc3RyICJzw7ZrdsOkZ2FyIGthbiBpbnRlIGFudsOkbmRhcyB2aWQgYnl0ZSBhdiBncmVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTY3IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTkgYnVpbHRpbi9jaGVja291dC5jOjEwMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKIG1zZ3N0ciAiXCIlc1wiIGthbiBpbnRlIGFudsOkbmRhcyB2aWQgYnl0ZSBhdiBncmVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTc1IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzggYnVpbHRpbi9jaGVja291dC5jOjk4MwotIzogYnVpbHRpbi9jaGVja291dC5jOjk4NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcgYnVpbHRpbi9jaGVja291dC5jOjEwMTAgYnVpbHRpbi9jaGVja291dC5jOjEwMTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAnJXMnIgogbXNnc3RyICJcIiVzXCIga2FuIGludGUgYW52w6RuZGFzIG1lZCBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdCAnJXMnIgogbXNnc3RyICJLYW4gaW50ZSB2w6R4bGEgZ3JlbiB0aWxsIGlja2UtaW5jaGVja25pbmdlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDEyIGJ1aWx0aW4vZ2MuYzoxNzcKLW1zZ2lkICJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciCi1tc2dzdHIgInVuZGVydHJ5Y2sgZsO2cmxvcHBzcmFwcG9ydGVyaW5nIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxMyBidWlsdGluL2NoZWNrb3V0LmM6MTAxNSBidWlsdGluL2Nsb25lLmM6ODkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNjkgYnVpbHRpbi9yZW1vdGUuYzoxNzEKIG1zZ2lkICJicmFuY2giCiBtc2dzdHIgImdyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NgogbXNnaWQgImNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBuZXcgYnJhbmNoIgogbXNnc3RyICJza2FwYSBvY2ggY2hlY2thIHV0IGVuIG55IGdyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OAogbXNnaWQgImNyZWF0ZS9yZXNldCBhbmQgY2hlY2tvdXQgYSBicmFuY2giCiBtc2dzdHIgInNrYXBhL25vbGxzdMOkbGwgb2NoIGNoZWNrYSB1dCBlbiBncmVuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKIG1zZ2lkICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIgogbXNnc3RyICJza2FwYSByZWZsb2dnIGbDtnIgbnkgZ3JlbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUwCiBtc2dpZCAiZGV0YWNoIHRoZSBIRUFEIGF0IG5hbWVkIGNvbW1pdCIKIG1zZ3N0ciAia29wcGxhIGZyw6VuIEhFQUQgdmlkIG5hbW5naXZlbiBpbmNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUxCiBtc2dpZCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgInPDpHR0IHVwcHN0csO2bXNpbmZvcm1hdGlvbiBmw7ZyIG55IGdyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MwogbXNnaWQgIm5ldyBicmFuY2giCiBtc2dzdHIgIm55IGdyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MwogbXNnaWQgIm5ldyB1bnBhcmVudGVkIGJyYW5jaCIKIG1zZ3N0ciAibnkgZ3JlbiB1dGFuIGbDtnLDpGxkZXIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1NAogbXNnaWQgImNoZWNrb3V0IG91ciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKIG1zZ3N0ciAiY2hlY2thIHV0IHbDpXIgdmVyc2lvbiBmw7ZyIGVqIHNhbW1hbnNsYWduYSBmaWxlciIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2CiBtc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCiBtc2dzdHIgImNoZWNrYSB1dCBkZXJhcyB2ZXJzaW9uIGbDtnIgZWogc2FtbWFuc2xhZ25hIGZpbGVyIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyNgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKIG1zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKIG1zZ3N0ciAidHZpbmdhIHV0Y2hlY2tuaW5nIChrYXN0YSBib3J0IGxva2FsYSDDpG5kcmluZ2FyKSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU5CiBtc2dpZCAicGVyZm9ybSBhIDMtd2F5IG1lcmdlIHdpdGggdGhlIG5ldyBicmFuY2giCiBtc2dzdHIgInV0ZsO2ciBlbiAzLXbDpGdzc2FtbWFuc2xhZ25pbmcgZsO2ciBkZW4gbnlhIGdyZW5lbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjggYnVpbHRpbi9tZXJnZS5jOjIxNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjAgYnVpbHRpbi9tZXJnZS5jOjIxNwogbXNnaWQgInVwZGF0ZSBpZ25vcmVkIGZpbGVzIChkZWZhdWx0KSIKIG1zZ3N0ciAidXBwZGF0ZXJhIGlnbm9yZXJhZGUgZmlsZXIgKHN0YW5kYXJkKSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjkgYnVpbHRpbi9sb2cuYzoxMTE2IHBhcnNlLW9wdGlvbnMuaDoyNDEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1CiBtc2dpZCAic3R5bGUiCiBtc2dzdHIgInN0aWwiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDMwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MgogbXNnaWQgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiCiBtc2dzdHIgImtvbmZsaWt0c3RpbCAobWVyZ2UgZWxsZXIgZGlmZjMpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAzMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgImJlZ3LDpG5zYSBpbnRlIHPDtmt2w6RnYXIgdGlsbCBlbmRhc3QgZ2xlc2EgcG9zdGVyIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NwogbXNnaWQgInNlY29uZCBndWVzcyAnZ2l0IGNoZWNrb3V0IG5vLXN1Y2gtYnJhbmNoJyIKIG1zZ3N0ciAiZsO2cnV0c3DDpSBcImdpdCBjaGVja291dCBncmVuLXNha25hc1wiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1NworIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTEKIG1zZ2lkICItYiwgLUIgYW5kIC0tb3JwaGFuIGFyZSBtdXR1YWxseSBleGNsdXNpdmUiCiBtc2dzdHIgIi1iLCAtQiBvY2ggLS1vcnBoYW4gw6RyIMO2bXNlc2lkaWd0IHV0ZXNsdXRhbmRlIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3NAorIzogYnVpbHRpbi9jaGVja291dC5jOjExMDgKIG1zZ2lkICItLXRyYWNrIG5lZWRzIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIi0tdHJhY2sgYmVow7Z2ZXIgZXR0IG5hbW4gcMOlIGVuIGdyZW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDgxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQogbXNnaWQgIk1pc3NpbmcgYnJhbmNoIG5hbWU7IHRyeSAtYiIKIG1zZ3N0ciAiR3Jlbm5hbW4gc2FrbmFzOyBmw7Zyc8O2ayBtZWQgLWIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTE2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1MAogbXNnaWQgImludmFsaWQgcGF0aCBzcGVjaWZpY2F0aW9uIgogbXNnc3RyICJmZWxha3RpZyBzw7ZrdsOkZ3NhbmdpdmVsc2UiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTIzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuXG4iCkBAIC0yODkwLDEyICszMjg1LDEyIEBACiAiS2FuIGludGUgdXBwZGF0ZXJhIHPDtmt2w6RnYXIgb2NoIHbDpHhsYSB0aWxsIGdyZW5lbiBcIiVzXCIgc2FtdGlkaWd0LlxuIgogIlZpbGxlIGR1IGNoZWNrYSB1dCBcIiVzXCIgc29tIGludGUga2FuIGzDtnNhcyBzb20gZW4gdXRjaGVja25pbmc/IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTEyOAorIzogYnVpbHRpbi9jaGVja291dC5jOjExNjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCAnJXMnIgogbXNnc3RyICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIHRhciBpbnRlIGVuIHPDtmt2w6RnIHNvbSBhcmd1bWVudCBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTMyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKQEAgLTI5MDMsNTIgKzMyOTgsNzcgQEAKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBvY2ggLS1tZXJnZSDDpHIgaW5rb21wYXRpYmxhIG7DpHJcbiIKICJkdSBjaGVja2FyIHV0IGZyw6VuIGluZGV4ZXQuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTkKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyMAogbXNnaWQgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iCiBtc2dzdHIgIiIKICJnaXQgY2xlYW4gWy1kXSBbLWZdIFstbl0gWy1xXSBbLWUgPG3Dtm5zdGVyPl0gWy14IHwgLVhdIFstLV0gPHPDtmt2w6RnYXI+Li4uIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTEKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNAorIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlc1xuIgorbXNnc3RyICJUYXIgYm9ydCAlc1xuIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCittc2dzdHIgIlNrdWxsZSB0YSBib3J0ICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGluZyByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIkhvcHBhciDDtnZlciBhcmtpdmV0ICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNworIywgYy1mb3JtYXQKK21zZ2lkICJXb3VsZCBza2lwIHJlcG9zaXRvcnkgJXNcbiIKK21zZ3N0ciAiU2t1bGxlIGhvcHBhIMO2dmVyIGFya2l2ZXQgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byByZW1vdmUgJXMiCittc2dzdHIgIm1pc3NseWNrYWRlcyB0YSBib3J0ICVzIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTYwCiBtc2dpZCAiZG8gbm90IHByaW50IG5hbWVzIG9mIGZpbGVzIHJlbW92ZWQiCiBtc2dzdHIgInNrcml2IGludGUgdXQgbmFtbiBww6UgYm9ydHRhZ25hIGZpbGVyIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTMKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKIG1zZ2lkICJmb3JjZSIKIG1zZ3N0ciAidHZpbmdhIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTUKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjQKIG1zZ2lkICJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiCiBtc2dzdHIgInRhIGJvcnQgaGVsYSBrYXRhbG9nZXIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo1NiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzIGJ1aWx0aW4vZ3JlcC5jOjcxNwotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MSBidWlsdGluL25hbWUtcmV2LmM6MjMxIGJ1aWx0aW4vc2hvdy1yZWYuYzoxODIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjUgYnVpbHRpbi9kZXNjcmliZS5jOjQxMiBidWlsdGluL2dyZXAuYzo3MTcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODcgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCiBtc2dpZCAicGF0dGVybiIKIG1zZ3N0ciAibcO2bnN0ZXIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo1NworIzogYnVpbHRpbi9jbGVhbi5jOjE2NgogbXNnaWQgImFkZCA8cGF0dGVybj4gdG8gaWdub3JlIHJ1bGVzIgogbXNnc3RyICJsw6RnZyB0aWxsIDxtw7Zuc3Rlcj4gdGlsbCBpZ25vcmVyaW5nc3JlZ2xlciIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU4CisjOiBidWlsdGluL2NsZWFuLmM6MTY3CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKIG1zZ3N0ciAidGEgw6R2ZW4gYm9ydCBpZ25vcmVyYWRlIGZpbGVyIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NjAKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjkKIG1zZ2lkICJyZW1vdmUgb25seSBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICJ0YSBlbmRhc3QgYm9ydCBpZ25vcmVyYWRlIGZpbGVyIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NzgKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxODcKIG1zZ2lkICIteCBhbmQgLVggY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgIi14IG9jaCAtWCBrYW4gaW50ZSBhbnbDpG5kYXMgc2FtdGlkaWd0IgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTEKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gY2xlYW4iCiBtc2dzdHIgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2Ugc2F0dCB0aWxsIHRydWUsIG1lbiB2YXJrZW4gLW4gZWxsZXIgLWYgYW5nYXZzOyB2w6RncmFyICIKICJzdMOkZGEiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo4NQorIzogYnVpbHRpbi9jbGVhbi5jOjE5NAogbXNnaWQgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2UgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtbiBub3IgLWYgZ2l2ZW47IHJlZnVzaW5nIHRvICIKICJjbGVhbiIKQEAgLTI5NTYsMjM3ICszMzc2LDIzNCBAQAogImNsZWFuLnJlcXVpcmVGb3JjZSBoYXIgc3RhbmRhcmR2w6RyZGV0IHRydWUsIG1lbiB2YXJrZW4gLW4gZWxsZXIgLWYgYW5nYXZzOyAiCiAidsOkZ3JhciBzdMOkZGEiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNTUgYnVpbHRpbi9jbGVhbi5jOjE3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKLW1zZ3N0ciAiU2t1bGxlIHRhIGJvcnQgJXNcbiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE1OSBidWlsdGluL2NsZWFuLmM6MTc5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlJlbW92aW5nICVzXG4iCi1tc2dzdHIgIlRhciBib3J0ICVzXG4iCi0KLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIgYnVpbHRpbi9jbGVhbi5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgotbXNnc3RyICJtaXNzbHlja2FkZXMgdGEgYm9ydCAlcyIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE2NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIlNrdWxsZSBpbnRlIHRhIGJvcnQgJXNcbiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE2OAotIywgYy1mb3JtYXQKLW1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAiVGFyIGludGUgYm9ydCAlc1xuIgotCi0jOiBidWlsdGluL2Nsb25lLmM6MzYKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNwogbXNnaWQgImdpdCBjbG9uZSBbb3B0aW9uc10gWy0tXSA8cmVwbz4gWzxkaXI+XSIKIG1zZ3N0ciAiZ2l0IGNsb25lIFtmbGFnZ29yXSBbLS1dIDxhcmtpdj4gWzxrYXQ+XSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0IGJ1aWx0aW4vZmV0Y2guYzo4MiBidWlsdGluL21lcmdlLmM6MjEyCi0jOiBidWlsdGluL3B1c2guYzozOTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9wdXNoLmM6NDM2CiBtc2dpZCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIgogbXNnc3RyICJ0dmluZ2EgZsO2cmxvcHBzcmFwcG9ydGVyaW5nIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NwogbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgogbXNnc3RyICJza2FwYSBpbnRlIG7DpWdvbiB1dGNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY3IGJ1aWx0aW4vY2xvbmUuYzo2OSBidWlsdGluL2luaXQtZGIuYzo0ODgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2OCBidWlsdGluL2Nsb25lLmM6NzAgYnVpbHRpbi9pbml0LWRiLmM6NDg4CiBtc2dpZCAiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICJza2FwYSBldHQgbmFrZXQgKFwiYmFyZVwiKSBhcmtpdiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcyCisjOiBidWlsdGluL2Nsb25lLmM6NzMKIG1zZ2lkICJjcmVhdGUgYSBtaXJyb3IgcmVwb3NpdG9yeSAoaW1wbGllcyBiYXJlKSIKIG1zZ3N0ciAic2thcGEgZXR0IHNwZWdlbGFya2l2IChpbXBsaWNlcmFyIFwiYmFyZVwiKSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc0CisjOiBidWlsdGluL2Nsb25lLmM6NzUKIG1zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiZsO2ciBhdHQga2xvbmEgZnLDpW4gZXR0IGxva2FsdCBhcmtpdiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2CisjOiBidWlsdGluL2Nsb25lLmM6NzcKIG1zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKIG1zZ3N0ciAic2thcGEgaW50ZSBsb2thbGEgaMOlcmRhIGzDpG5rYXIsIGtvcGllcmEgYWxsdGlkIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OQogbXNnaWQgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IgogbXNnc3RyICJza2FwYSBzb20gZXR0IGRlbGF0IGFya2l2IgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODAgYnVpbHRpbi9jbG9uZS5jOjgyCisjOiBidWlsdGluL2Nsb25lLmM6ODEgYnVpbHRpbi9jbG9uZS5jOjgzCiBtc2dpZCAiaW5pdGlhbGl6ZSBzdWJtb2R1bGVzIGluIHRoZSBjbG9uZSIKIG1zZ3N0ciAiaW5pdGllcmEgdW5kZXJtb2R1bGVyIGkga2xvbmVuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODMgYnVpbHRpbi9pbml0LWRiLmM6NDg1CisjOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg1CiBtc2dpZCAidGVtcGxhdGUtZGlyZWN0b3J5IgogbXNnc3RyICJtYWxsa2F0YWxvZyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg1IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgogbXNnaWQgImRpcmVjdG9yeSBmcm9tIHdoaWNoIHRlbXBsYXRlcyB3aWxsIGJlIHVzZWQiCiBtc2dzdHIgImthdGFsb2cgYXR0IGFudsOkbmRhIG1hbGxhciBmcsOlbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg2CisjOiBidWlsdGluL2Nsb25lLmM6ODcKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKIG1zZ3N0ciAicmVmZXJlbnNhcmtpdiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4OCBidWlsdGluL2NvbHVtbi5jOjI2IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ0CiBtc2dpZCAibmFtZSIKIG1zZ3N0ciAibmFtbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg4CisjOiBidWlsdGluL2Nsb25lLmM6ODkKIG1zZ2lkICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iCiBtc2dzdHIgImFudsOkbmQgPG5hbW4+IGlzdMOkbGxldCBmw7ZyIFwib3JpZ2luXCIgZsO2ciBhdHQgc3DDpXJhIHVwcHN0csO2bXMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9jbG9uZS5jOjkxCiBtc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKIG1zZ3N0ciAiY2hlY2thIHV0IDxncmVuPiBpc3TDpGxsZXQgZsO2ciBmasOkcnJlbnMgSEVBRCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkyCisjOiBidWlsdGluL2Nsb25lLmM6OTMKIG1zZ2lkICJwYXRoIHRvIGdpdC11cGxvYWQtcGFjayBvbiB0aGUgcmVtb3RlIgogbXNnc3RyICJzw7ZrdsOkZyB0aWxsIGdpdC11cGxvYWQtcGFjayBww6UgZmrDpHJyZW4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MyBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCisjOiBidWlsdGluL2Nsb25lLmM6OTQgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjY2MgogbXNnaWQgImRlcHRoIgogbXNnc3RyICJkanVwIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NQogbXNnaWQgImNyZWF0ZSBhIHNoYWxsb3cgY2xvbmUgb2YgdGhhdCBkZXB0aCIKIG1zZ3N0ciAic2thcGEgZW4gZ3J1bmQga2xvbiBww6UgZGV0dGEgZGp1cCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk2CisjOiBidWlsdGluL2Nsb25lLmM6OTcKIG1zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCiBtc2dzdHIgImtsb25hIGVuZGFzdCBlbiBncmVuLCBIRUFEIGVsbGVyIC0tYnJhbmNoIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTcgYnVpbHRpbi9pbml0LWRiLmM6NDk0CisjOiBidWlsdGluL2Nsb25lLmM6OTggYnVpbHRpbi9pbml0LWRiLmM6NDk0CiBtc2dpZCAiZ2l0ZGlyIgogbXNnc3RyICJnaXRrYXQiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OSBidWlsdGluL2luaXQtZGIuYzo0OTUKIG1zZ2lkICJzZXBhcmF0ZSBnaXQgZGlyIGZyb20gd29ya2luZyB0cmVlIgogbXNnc3RyICJzZXBhcmVyYSBnaXRrYXRhbG9nZW4gZnLDpW4gYXJiZXRza2F0YWxvZ2VuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKIG1zZ2lkICJrZXk9dmFsdWUiCiBtc2dzdHIgIm55Y2tlbD12w6RyZGUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDEKIG1zZ2lkICJzZXQgY29uZmlnIGluc2lkZSB0aGUgbmV3IHJlcG9zaXRvcnkiCiBtc2dzdHIgInN0w6RsbCBpbiBrb25maWd1cmF0aW9uIGkgZGV0IG55YSBhcmtpdmV0IgogCi0jOiBidWlsdGluL2Nsb25lLmM6MjQzCisjOiBidWlsdGluL2Nsb25lLmM6MjU0CiAjLCBjLWZvcm1hdAotbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgZGlyZWN0b3J5LiIKLW1zZ3N0ciAicmVmZXJlbnNhcmtpdmV0IFwiJXNcIiDDpHIgaW50ZSBlbiBsb2thbCBrYXRhbG9nLiIKK21zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIHJlcG9zaXRvcnkuIgorbXNnc3RyICJyZWZlcmVuc2Fya2l2ZXQgXCIlc1wiIMOkciBpbnRlIGV0dCBsb2thbHQgYXJraXYuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA2CisjOiBidWlsdGluL2Nsb25lLmM6MzE3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICclcyciCiBtc2dzdHIgIm1pc3NseWNrYWRlcyBza2FwYSBrYXRhbG9nZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzA4IGJ1aWx0aW4vZGlmZi5jOjc3CisjOiBidWlsdGluL2Nsb25lLmM6MzE5IGJ1aWx0aW4vZGlmZi5jOjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICclcyciCiBtc2dzdHIgIm1pc3NseWNrYWRlcyB0YSBzdGF0dXMgcMOlIFwiJXNcIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxMAorIzogYnVpbHRpbi9jbG9uZS5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXMgZmlubnMgb2NoIMOkciBpbmdlbiBrYXRhbG9nIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzI0CisjOiBidWlsdGluL2Nsb25lLmM6MzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzdGF0ICVzXG4iCiBtc2dzdHIgIm1pc3NseWNrYWRlcyB0YSBzdGF0dXMgcMOlICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNDYKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBsaW5rICclcyciCiBtc2dzdHIgIm1pc3NseWNrYWRlcyBza2FwYSBsw6Rua2VuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM1MAorIzogYnVpbHRpbi9jbG9uZS5jOjM2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY29weSBmaWxlIHRvICclcyciCiBtc2dzdHIgIm1pc3NseWNrYWRlcyBrb3BpZXJhIGZpbGVuIHRpbGwgXCIlc1wiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzczCisjOiBidWlsdGluL2Nsb25lLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgImtsYXJ0LlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQzCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisiS2xvbmVuIGx5Y2thZGVzLCBtZW4gdXRjaGVja25pbmdlbiBtaXNzbHlja2FkZXMuXG4iCisiRHUga2FuIGluc3Bla3RlcmEgZGV0IHNvbSBjaGVja2FkZXMgdXQgbWVkIFwiZ2l0IHN0YXR1c1wiXG4iCisib2NoIGbDtnJzw7ZrYSBjaGVja2EgdXQgaWdlbiBtZWQgXCJnaXQgY2hlY2tvdXQgLWYgSEVBRFwiXG4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo0NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZpbmQgcmVtb3RlIGJyYW5jaCAlcyB0byBjbG9uZS4iCiBtc2dzdHIgIkt1bmRlIGludGUgaGl0dGEgZmrDpHJyZ3JlbmVuICVzIGbDtnIgYXR0IGtsb25hLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjU1MgorIzogYnVpbHRpbi9jbG9uZS5jOjU1MAorbXNnaWQgInJlbW90ZSBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzIgorbXNnc3RyICJmasOkcnJlbiBzw6RuZGUgaW50ZSBhbGxhIG7DtmR2w6RuZGlnYSBvYmpla3QiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKIG1zZ2lkICJyZW1vdGUgSEVBRCByZWZlcnMgdG8gbm9uZXhpc3RlbnQgcmVmLCB1bmFibGUgdG8gY2hlY2tvdXQuXG4iCiBtc2dzdHIgIiIKICJIRUFEIGhvcyBmasOkcnJlbiBwZWthciBww6UgZW4gb2JlZmludGxpZyByZWZlcmVucywga2FuIGludGUgY2hlY2thIHV0LlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjkwCisjOiBidWlsdGluL2Nsb25lLmM6NjQxCittc2dpZCAidW5hYmxlIHRvIGNoZWNrb3V0IHdvcmtpbmcgdHJlZSIKK21zZ3N0ciAia3VuZGUgaW50ZSBjaGVja2EgdXQgYXJiZXRza2F0YWxvZ2VuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzQ5CiBtc2dpZCAiVG9vIG1hbnkgYXJndW1lbnRzLiIKIG1zZ3N0ciAiRsO2ciBtw6VuZ2EgYXJndW1lbnQuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Njk0CisjOiBidWlsdGluL2Nsb25lLmM6NzUzCiBtc2dpZCAiWW91IG11c3Qgc3BlY2lmeSBhIHJlcG9zaXRvcnkgdG8gY2xvbmUuIgogbXNnc3RyICJEdSBtw6VzdGUgYW5nZSBldHQgYXJraXYgYXR0IGtsb25hLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwNQorIzogYnVpbHRpbi9jbG9uZS5jOjc2NAogIywgYy1mb3JtYXQKIG1zZ2lkICItLWJhcmUgYW5kIC0tb3JpZ2luICVzIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCiBtc2dzdHIgImZsYWdnb3JuYSAtLWJhcmUgb2NoIC0tb3JpZ2luICVzIMOkciBpbmtvbXBhdGlibGEuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzE5CisjOiBidWlsdGluL2Nsb25lLmM6NzY3Cittc2dpZCAiLS1iYXJlIGFuZCAtLXNlcGFyYXRlLWdpdC1kaXIgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgImZsYWdnb3JuYSAtLWJhcmUgb2NoIC0tc2VwYXJhdGUtZ2l0LWRpciDDpHIgaW5rb21wYXRpYmxhLiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXBvc2l0b3J5ICclcycgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgImFya2l2ZXQgXCIlc1wiIGZpbm5zIGludGUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3ODUKIG1zZ2lkICItLWRlcHRoIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2UgZmlsZTovLyBpbnN0ZWFkLiIKIG1zZ3N0ciAiLS1kZXB0aCBpZ25vcmVyYXMgaSBsb2thbGEga2xvbmluZ2FyOyBhbnbDpG5kIGZpbGU6Ly8gaXN0w6RsbGV0IgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzM0CisjOiBidWlsdGluL2Nsb25lLmM6Nzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGFuIGVtcHR5IGRpcmVjdG9yeS4iCiBtc2dzdHIgImRlc3RpbmF0aW9uc3PDtmt2w6RnZW4gXCIlc1wiIGZpbm5zIHJlZGFuIG9jaCDDpHIgaW50ZSBlbiB0b20ga2F0YWxvZy4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NDQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAid29ya2luZyB0cmVlICclcycgYWxyZWFkeSBleGlzdHMuIgogbXNnc3RyICJhcmJldHN0csOkZGV0IFwiJXNcIiBmaW5ucyByZWRhbi4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NTcgYnVpbHRpbi9jbG9uZS5jOjc3MQorIzogYnVpbHRpbi9jbG9uZS5jOjgxOCBidWlsdGluL2Nsb25lLmM6ODMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyBvZiAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrYXBhIGlubGVkYW5kZSBrYXRhbG9nZXIgZsO2ciBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NjAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSB3b3JrIHRyZWUgZGlyICclcycuIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrYXBhIGFyYmV0c2thdGFsb2dlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NzkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBpbnRvIGJhcmUgcmVwb3NpdG9yeSAnJXMnLi4uXG4iCiBtc2dzdHIgIktsb25hciB0aWxsIGV0dCBuYWtldCBhcmtpdiBcIiVzXCIuLi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc4MQorIzogYnVpbHRpbi9jbG9uZS5jOjg0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gJyVzJy4uLlxuIgogbXNnc3RyICJLbG9uYXIgdGlsbCBcIiVzXCIuLi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgyMworIzogYnVpbHRpbi9jbG9uZS5jOjg3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCBrbm93IGhvdyB0byBjbG9uZSAlcyIKIG1zZ3N0ciAiVmV0IGludGUgaHVyIG1hbiBrbG9uYXIgJXMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NzIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3RlIGJyYW5jaCAlcyBub3QgZm91bmQgaW4gdXBzdHJlYW0gJXMiCiBtc2dzdHIgIkZqw6RycmdyZW5lbiAlcyBoaXR0YWRlcyBpbnRlIGkgdXBwc3Ryw7Ztc2Fya2l2ZXQgJXMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NzkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MzMKIG1zZ2lkICJZb3UgYXBwZWFyIHRvIGhhdmUgY2xvbmVkIGFuIGVtcHR5IHJlcG9zaXRvcnkuIgogbXNnc3RyICJEdSB2ZXJrYXIgaGEga2xvbmF0IGV0dCB0b210IGFya2l2LiIKIApAQCAtMzIyMywxMiArMzY0MCwxMiBAQAogbXNnc3RyICItLWNvbW1hbmQgbcOlc3RlIHZhcmEgZsO2cnN0YSBhcmd1bWVudCIKIAogIzogYnVpbHRpbi9jb21taXQuYzozNAotbXNnaWQgImdpdCBjb21taXQgW29wdGlvbnNdIFstLV0gPGZpbGVwYXR0ZXJuPi4uLiIKLW1zZ3N0ciAiZ2l0IGNvbW1pdCBbZmxhZ2dvcl0gWy0tXSA8ZmlsbcO2c3Rlcj4uLi4iCittc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgY29tbWl0IFtmbGFnZ29yXSBbLS1dIDxzw7ZrdsOkZz4uLi4iCiAKICM6IGJ1aWx0aW4vY29tbWl0LmM6MzkKLW1zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iCi1tc2dzdHIgImdpdCBzdGF0dXMgW2ZsYWdnb3JdIFstLV0gPGZpbG3Dtm5zdGVyPi4uLiIKK21zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCittc2dzdHIgImdpdCBzdGF0dXMgW2ZsYWdnb3JdIFstLV0gPHPDtmt2w6RnPi4uLiIKIAogIzogYnVpbHRpbi9jb21taXQuYzo0NAogbXNnaWQgIiIKQEAgLTMyODEsOTMgKzM2OTgsOTMgQEAKICJcbiIKICJBbm5hcnMgYW52w6RuZGVyIGR1IFwiZ2l0IHJlc2V0XCJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoyNTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjYwCiBtc2dpZCAiZmFpbGVkIHRvIHVucGFjayBIRUFEIHRyZWUgb2JqZWN0IgogbXNnc3RyICJtaXNzbHlja2FkZXMgcGFja2EgdXBwIEhFQUQ6cyB0csOkZG9iamVrdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzAyCiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgaW5kZXgiCiBtc2dzdHIgImt1bmRlIGludGUgc2thcGEgdGVtcG9yw6RyIGluZGV4ZmlsIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjMwNgorIzogYnVpbHRpbi9jb21taXQuYzozMDgKIG1zZ2lkICJpbnRlcmFjdGl2ZSBhZGQgZmFpbGVkIgogbXNnc3RyICJpbnRlcmFrdGl2IHRpbGzDpGdnbmluZyBtaXNzbHlja2FkZXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzM5IGJ1aWx0aW4vY29tbWl0LmM6MzYwIGJ1aWx0aW4vY29tbWl0LmM6NDEwCisjOiBidWlsdGluL2NvbW1pdC5jOjM0MSBidWlsdGluL2NvbW1pdC5jOjM2MiBidWlsdGluL2NvbW1pdC5jOjQxMgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXdfaW5kZXggZmlsZSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgZmlsZW4gbmV3X2luZGV4IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5MQorIzogYnVpbHRpbi9jb21taXQuYzozOTMKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBtZXJnZS4iCiBtc2dzdHIgImthbiBpbnRlIHV0ZsO2cmEgZW4gZGVsdmlzIGluY2hlY2tuaW5nIHVuZGVyIGVuIHNhbW1hbnNsYWduaW5nLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6Mzk1CiBtc2dpZCAiY2Fubm90IGRvIGEgcGFydGlhbCBjb21taXQgZHVyaW5nIGEgY2hlcnJ5LXBpY2suIgogbXNnc3RyICJrYW4gaW50ZSB1dGbDtnJhIGVuIGRlbHZpcyBpbmNoZWNrbmluZyB1bmRlciBlbiBjaGVycnktcGljay4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDAzCisjOiBidWlsdGluL2NvbW1pdC5jOjQwNQogbXNnaWQgImNhbm5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgaW5kZXhldCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDI1CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIHRlbXBvcmFyeSBpbmRleCBmaWxlIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrcml2YSB0ZW1wb3LDpHIgaW5kZXhmaWwiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTExIGJ1aWx0aW4vY29tbWl0LmM6NTE3CisjOiBidWlsdGluL2NvbW1pdC5jOjUxMyBidWlsdGluL2NvbW1pdC5jOjUxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNvbW1pdDogJXMiCiBtc2dzdHIgImZlbGFrdGlnIGluY2hlY2tuaW5nOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1NDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCiBtc2dpZCAibWFsZm9ybWVkIC0tYXV0aG9yIHBhcmFtZXRlciIKIG1zZ3N0ciAiZmVsZm9ybWFkIFwiLS1hdXRob3JcIi1mbGFnZ2EiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTYwCisjOiBidWlsdGluL2NvbW1pdC5jOjU2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaWRlbnQgc3RyaW5nOiAnJXMnIgogbXNnc3RyICJGZWxha3RpZyBpbmRyYWduaW5nc3N0csOkbmc6IFwiJXNcIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1OTggYnVpbHRpbi9jb21taXQuYzo2MzEgYnVpbHRpbi9jb21taXQuYzo5NTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjAwIGJ1aWx0aW4vY29tbWl0LmM6NjMzIGJ1aWx0aW4vY29tbWl0LmM6OTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBsb29rdXAgY29tbWl0ICVzIgogbXNnc3RyICJrdW5kZSBpbnRlIHNsw6UgdXBwIGluY2hlY2tuaW5nZW4gJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjEwIGJ1aWx0aW4vc2hvcnRsb2cuYzoyOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiKHJlYWRpbmcgbG9nIG1lc3NhZ2UgZnJvbSBzdGFuZGFyZCBpbnB1dClcbiIKIG1zZ3N0ciAiKGzDpHNlciBsb2dnbWVkZGVsYW5kZSBmcsOlbiBzdGFuZGFyZCBpbilcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZyb20gc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgbG9nZyBmcsOlbiBzdGFuZGFyZCBpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmaWxlICclcyciCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgbG9nZ2ZpbGVuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MjIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjI0CiBtc2dpZCAiY29tbWl0IGhhcyBlbXB0eSBtZXNzYWdlIgogbXNnc3RyICJpbmNoZWNrbmluZ2VuIGhhciBldHQgdG9tdCBtZWRkZWxhbmRlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYzOAorIzogYnVpbHRpbi9jb21taXQuYzo2NDAKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NU0ciCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgTUVSR0VfTVNHIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY0MgorIzogYnVpbHRpbi9jb21taXQuYzo2NDQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBTUVVBU0hfTVNHIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIFNRVUFTSF9NU0ciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ2CisjOiBidWlsdGluL2NvbW1pdC5jOjY0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIFwiJXNcIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MDcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzA5CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGNvbW1pdCB0ZW1wbGF0ZSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgaW5jaGVja25pbmdzbWFsbCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTMzODIsNyArMzc5OSw3IEBACiAiXHQlc1xuIgogIm9jaCBmw7Zyc8O2a2VyIGlnZW4uXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzIzCisjOiBidWlsdGluL2NvbW1pdC5jOjcyNQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0zMzk3LDE1NyArMzgxNCwxNjAgQEAKICJcdCVzXG4iCiAib2NoIGbDtnJzw7ZrZXIgaWdlbi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MzUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzM3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIExpbmVzIHN0YXJ0aW5nXG4iCi0id2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKKyJ3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogIkFuZ2UgaW5jaGVja25pbmdzbWVkZGVsYW5kZXQgZsO2ciBkaW5hIMOkbmRyaW5nYXIuIFJhZGVyIHNvbSBpbmxlZHNcbiIKLSJtZWQgXCIjXCIga29tbWVyIGlnbm9yZXJhcywgb2NoIGV0dCB0b210IG1lZGRlbGFuZGUgYXZicnl0ZXIgaW5jaGVja25pbmdlbi5cbiIKKyJtZWQgXCIlY1wiIGtvbW1lciBpZ25vcmVyYXMsIG9jaCBldHQgdG9tdCBtZWRkZWxhbmRlIGF2YnJ5dGVyICIKKyJpbmNoZWNrbmluZ2VuLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc0MAorIzogYnVpbHRpbi9jb21taXQuYzo3NDIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKLSJ3aXRoICcjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCisid2l0aCAnJWMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKICJBbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCiAiQW5nZSBpbmNoZWNrbmluZ3NtZWRkZWxhbmRldCBmw7ZyIGRpbmEgw6RuZHJpbmdhci4gUmFkZXIgc29tIGlubGVkc1xuIgotIm1lZCBcIiNcIiBrb21tZXIgYmVow6VsbGFzOyBkdSBrYW4gc2rDpGx2IHRhIGJvcnQgZGVtIG9tIGR1IHZpbGwuXG4iCisibWVkIFwiJWNcIiBrb21tZXIgYmVow6VsbGFzOyBkdSBrYW4gc2rDpGx2IHRhIGJvcnQgZGVtIG9tIGR1IHZpbGwuXG4iCiAiRXR0IHRvbXQgbWVkZGVsYW5kZSBhdmJyeXRlciBpbmNoZWNrbmluZ2VuLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc1MworIzogYnVpbHRpbi9jb21taXQuYzo3NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNBdXRob3I6ICAgICVzIgogbXNnc3RyICIlc0bDtnJmYXR0YXJlOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQ29tbWl0dGVyOiAlcyIKIG1zZ3N0ciAiJXNJbmNoZWNrYXJlOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3ODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCiBtc2dpZCAiQ2Fubm90IHJlYWQgaW5kZXgiCiBtc2dzdHIgIkthbiBpbnRlIGzDpHNhIGluZGV4ZXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODE3CisjOiBidWlsdGluL2NvbW1pdC5jOjgxOQogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICJGZWwgdmlkIGJ5Z2dhbmRlIGF2IHRyw6RkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjgzMiBidWlsdGluL3RhZy5jOjM2MQorIzogYnVpbHRpbi9jb21taXQuYzo4MzQgYnVpbHRpbi90YWcuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbWVzc2FnZSB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uLlxuIgogbXNnc3RyICJBbmdlIG1lZGRlbGFuZGV0IGVuIGF2IGZsYWdnb3JuYSAtbSBlbGxlciAtRi5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5MjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIGV4aXN0aW5nIGF1dGhvciBmb3VuZCB3aXRoICclcyciCiBtc2dzdHIgIkhpdHRhZGUgaW5nZW4gYmVmaW50bGlnIGbDtnJmYXR0YXJlIG1lZCBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ0IGJ1aWx0aW4vY29tbWl0LmM6MTE0OAorIzogYnVpbHRpbi9jb21taXQuYzo5NDYgYnVpbHRpbi9jb21taXQuYzoxMTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdW50cmFja2VkIGZpbGVzIG1vZGUgJyVzJyIKIG1zZ3N0ciAiT2dpbHRpZ3QgbMOkZ2UgZsO2ciBvc3DDpXJhZGUgZmlsZXI6IFwiJXNcIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5ODQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTc2CiBtc2dpZCAiVXNpbmcgYm90aCAtLXJlc2V0LWF1dGhvciBhbmQgLS1hdXRob3IgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiS2FuIGludGUgYW52w6RuZGEgYsOlZGUgLS1yZXNldC1hdXRob3Igb2NoIC0tYXV0aG9yIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NQorIzogYnVpbHRpbi9jb21taXQuYzo5ODcKIG1zZ2lkICJZb3UgaGF2ZSBub3RoaW5nIHRvIGFtZW5kLiIKIG1zZ3N0ciAiRHUgaGFyIGluZ2V0IGF0dCB1dMO2a2EuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5OAorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICJEdSDDpHIgaSBtaXR0ZW4gYXYgZW4gc2FtbWFuc2xhZ25pbmcgLS0ga2FuIGludGUgdXTDtmthLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDAwCisjOiBidWlsdGluL2NvbW1pdC5jOjk5MgogbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoZXJyeS1waWNrIC0tIGNhbm5vdCBhbWVuZC4iCiBtc2dzdHIgIkR1IMOkciBpIG1pdHRlbiBhdiBlbiBjaGVycnktcGljayAtLSBrYW4gaW50ZSB1dMO2a2EuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMDMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTk1CiBtc2dpZCAiT3B0aW9ucyAtLXNxdWFzaCBhbmQgLS1maXh1cCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiRmxhZ2dvcm5hIC0tc3F1YXNoIG9jaCAtLWZpeHVwIGthbiBpbnRlIGFudsOkbmRhcyBzYW10aWRpZ3QiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxMworIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CiBtc2dpZCAiT25seSBvbmUgb2YgLWMvLUMvLUYvLS1maXh1cCBjYW4gYmUgdXNlZC4iCiBtc2dzdHIgIkVuZGFzdCBlbiBhdiAtYy8tQy8tRi8tLWZpeHVwIGthbiBhbnbDpG5kYXMuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwNwogbXNnaWQgIk9wdGlvbiAtbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtYy8tQy8tRi8tLWZpeHVwLiIKIG1zZ3N0ciAiRmxhZ2dhbiAtbSBrYW4gaW50ZSBrb21iaW5lcmFzIG1lZCAtYy8tQy8tRi8tLWZpeHVwLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDIzCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMTUKIG1zZ2lkICItLXJlc2V0LWF1dGhvciBjYW4gYmUgdXNlZCBvbmx5IHdpdGggLUMsIC1jIG9yIC0tYW1lbmQuIgogbXNnc3RyICItLXJlc2V0LWF1dGhvciBrYW4gZW5kYXN0IGFudsOkbmRhcyBtZWQgLUMsIC1jIGVsbGVyIC0tYW1lbmQuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzMgogbXNnaWQgIk9ubHkgb25lIG9mIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiIgogIkVuZGFzdCBlbiBhdiAtLWluY2x1ZGUvLS1vbmx5Ly0tYWxsLy0taW50ZXJhY3RpdmUvLS1wYXRjaCBrYW4gYW52w6RuZGFzLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDQyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzQKIG1zZ2lkICJObyBwYXRocyB3aXRoIC0taW5jbHVkZS8tLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIkR1IG3DpXN0ZSBhbmdlIHPDtmt2w6RnYXIgdGlsbHNhbW1hbnMgbWVkIC0taW5jbHVkZS8tLW9ubHkuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIlNtYXJ0Li4uIHV0w7ZrYSBkZW4gc2VuYXN0ZSBtZWQgc211dHNpZ3QgaW5kZXguIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAogbXNnaWQgIkV4cGxpY2l0IHBhdGhzIHNwZWNpZmllZCB3aXRob3V0IC1pIG5vciAtbzsgYXNzdW1pbmcgLS1vbmx5IHBhdGhzLi4uIgogbXNnc3RyICJFeHBsaWNpdGEgc8O2a3bDpGdhciBhbmdhdnMgdXRhbiAtaSBlbGxlciAtbzsgYW50YXIgLS1vbmx5IHPDtmt2w6RnYXIuLi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NiBidWlsdGluL3RhZy5jOjU3NworIzogYnVpbHRpbi9jb21taXQuYzoxMDQ4IGJ1aWx0aW4vdGFnLmM6NTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgY2xlYW51cCBtb2RlICVzIgogbXNnc3RyICJGZWxha3RpZ3Qgc3TDpGRuaW5nc2zDpGdlICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MwogbXNnaWQgIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIkthbiBpbnRlIGFuZ2Ugc8O2a3bDpGdhciBtZWQgLWEuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNjcgYnVpbHRpbi9jb21taXQuYzoxMjAyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTkgYnVpbHRpbi9jb21taXQuYzoxMTk0CiBtc2dpZCAiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWxvbmcgb2NoIC16IMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MiBidWlsdGluL2NvbW1pdC5jOjEzOTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NCBidWlsdGluL2NvbW1pdC5jOjEzOTAKIG1zZ2lkICJzaG93IHN0YXR1cyBjb25jaXNlbHkiCiBtc2dzdHIgInZpcyBrb25jaXMgc3RhdHVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjQgYnVpbHRpbi9jb21taXQuYzoxNDAwCisjOiBidWlsdGluL2NvbW1pdC5jOjExNTYgYnVpbHRpbi9jb21taXQuYzoxMzkyCiBtc2dpZCAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iCiBtc2dzdHIgInZpc2EgaW5mb3JtYXRpb24gb20gZ3JlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL3B1c2guYzozODkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1OCBidWlsdGluL2NvbW1pdC5jOjEzOTQgYnVpbHRpbi9wdXNoLmM6NDI2CiBtc2dpZCAibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiCiBtc2dzdHIgIm1hc2tpbmzDpHNiYXIgdXRkYXRhIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjkgYnVpbHRpbi9jb21taXQuYzoxNDA0CisjOiBidWlsdGluL2NvbW1pdC5jOjExNjEgYnVpbHRpbi9jb21taXQuYzoxMzk2CiBtc2dpZCAic2hvdyBzdGF0dXMgaW4gbG9uZyBmb3JtYXQgKGRlZmF1bHQpIgogbXNnc3RyICJ2aXNhIHN0YXR1cyBpIGzDpW5ndCBmb3JtYXQgKHN0YW5kYXJkKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTcyIGJ1aWx0aW4vY29tbWl0LmM6MTQwNworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQogbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgogbXNnc3RyICJ0ZXJtaW5lcmEgcG9zdGVyIG1lZCBOVUwiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NCBidWlsdGluL2NvbW1pdC5jOjE0MTAgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzNgotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzOSBidWlsdGluL3RhZy5jOjQ2MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU5CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYyIGJ1aWx0aW4vdGFnLmM6NDU5CiBtc2dpZCAibW9kZSIKIG1zZ3N0ciAibMOkZ2UiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NSBidWlsdGluL2NvbW1pdC5jOjE0MTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NyBidWlsdGluL2NvbW1pdC5jOjE0MDIKIG1zZ2lkICJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiCiBtc2dzdHIgInZpc2Egb3Nww6VyYWRlIGZpbGVyLCB2YWxmcmlhIGzDpGdlbjogYWxsYSwgbm9ybWFsLCBuby4gKFN0YW5kYXJkOiBhbGwpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MAogbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAidmlzYSBpZ25vcmVyYWRlIGZpbGVyIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzkgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTcxIHBhcnNlLW9wdGlvbnMuaDoxNTEKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICJuw6RyIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MgogbXNnaWQgIiIKICJpZ25vcmUgY2hhbmdlcyB0byBzdWJtb2R1bGVzLCBvcHRpb25hbCB3aGVuOiBhbGwsIGRpcnR5LCB1bnRyYWNrZWQuICIKICIoRGVmYXVsdDogYWxsKSIKQEAgLTM1NTUsMjE3ICszOTc1LDIxNyBAQAogImlnbm9yZXJhIMOkbmRyaW5nYXIgaSB1bmRlcm1vZHVsZXIsIHZhbGZyaXR0IG7DpHI6IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgogIihEZWZhdWx0OiBhbGwpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAogbXNnaWQgImxpc3QgdW50cmFja2VkIGZpbGVzIGluIGNvbHVtbnMiCiBtc2dzdHIgInZpc2Egb3Nww6VyYWRlIGZpbGVyIGkgc3BhbHRlciIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjU2CisjOiBidWlsdGluL2NvbW1pdC5jOjEyNDgKIG1zZ2lkICJjb3VsZG4ndCBsb29rIHVwIG5ld2x5IGNyZWF0ZWQgY29tbWl0IgogbXNnc3RyICJrdW5kZSBpbnRlIHNsw6UgdXBwIGVuIHByZWNpcyBza2FwYWQgaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1OAorIzogYnVpbHRpbi9jb21taXQuYzoxMjUwCiBtc2dpZCAiY291bGQgbm90IHBhcnNlIG5ld2x5IGNyZWF0ZWQgY29tbWl0IgogbXNnc3RyICJrdW5kZSBpbnRlIHRvbGthIGVuIHByZWNpcyBza2FwYWQgaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5OQorIzogYnVpbHRpbi9jb21taXQuYzoxMjkxCiBtc2dpZCAiZGV0YWNoZWQgSEVBRCIKIG1zZ3N0ciAiZnLDpW5rb3BwbGFkIEhFQUQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTMwMQorIzogYnVpbHRpbi9jb21taXQuYzoxMjkzCiBtc2dpZCAiIChyb290LWNvbW1pdCkiCiBtc2dzdHIgIiAocm90aW5jaGVja25pbmcpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MAogbXNnaWQgInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiCiBtc2dzdHIgInVuZGVydHJ5Y2sgc2FtbWFuZmF0dG5pbmcgZWZ0ZXIgZnJhbWfDpW5nc3JpayBpbmNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjEKIG1zZ2lkICJzaG93IGRpZmYgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCiBtc2dzdHIgInZpc2EgZGlmZiBpIG1hbGxlbiBmw7ZyIGluY2hlY2tuaW5nc21lZGRlbGFuZGV0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MwogbXNnaWQgIkNvbW1pdCBtZXNzYWdlIG9wdGlvbnMiCiBtc2dzdHIgIkFsdGVybmF0aXYgZsO2ciBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzIgYnVpbHRpbi90YWcuYzo0NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NCBidWlsdGluL3RhZy5jOjQ1NwogbXNnaWQgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiCiBtc2dzdHIgImzDpHMgbWVkZGVsYW5kZSBmcsOlbiBmaWwiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MworIzogYnVpbHRpbi9jb21taXQuYzoxMzY1CiBtc2dpZCAiYXV0aG9yIgogbXNnc3RyICJmw7ZyZmF0dGFyZSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzczCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKIG1zZ2lkICJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiw7Z2ZXJzdHlyIGbDtnJmYXR0YXJlIGbDtnIgaW5jaGVja25pbmdlbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc0IGJ1aWx0aW4vZ2MuYzoxNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NiBidWlsdGluL2djLmM6MTc4CiBtc2dpZCAiZGF0ZSIKIG1zZ3N0ciAiZGF0dW0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAorIzogYnVpbHRpbi9jb21taXQuYzoxMzY2CiBtc2dpZCAib3ZlcnJpZGUgZGF0ZSBmb3IgY29tbWl0IgogbXNnc3RyICLDtnZlcnN0eXIgZGF0dW0gZsO2ciBpbmNoZWNrbmlnbmVuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzUgYnVpbHRpbi9tZXJnZS5jOjIwNiBidWlsdGluL25vdGVzLmM6NTM3Ci0jOiBidWlsdGluL25vdGVzLmM6Njk0IGJ1aWx0aW4vdGFnLmM6NDU3CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcgYnVpbHRpbi9tZXJnZS5jOjIwOCBidWlsdGluL25vdGVzLmM6NTMzCisjOiBidWlsdGluL25vdGVzLmM6NjkwIGJ1aWx0aW4vdGFnLmM6NDU1CiBtc2dpZCAibWVzc2FnZSIKIG1zZ3N0ciAibWVkZGVsYW5kZSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcKIG1zZ2lkICJjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAiaW5jaGVja25pbmdzbWVkZGVsYW5kZSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc2CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjgKIG1zZ2lkICJyZXVzZSBhbmQgZWRpdCBtZXNzYWdlIGZyb20gc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiw6V0ZXJhbnbDpG5kIG9jaCByZWRpZ2VyYSBtZWRkZWxhbmRlIGZyw6VuIGFuZ2l2ZW4gaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NworIzogYnVpbHRpbi9jb21taXQuYzoxMzY5CiBtc2dpZCAicmV1c2UgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgIsOldGVyYW52w6RuZCBtZWRkZWxhbmRlIGZyw6VuIGFuZ2l2ZW4gaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OAorIzogYnVpbHRpbi9jb21taXQuYzoxMzcwCiBtc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gZml4dXAgc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogImFudsOkbmQgYXV0b3NxdWFzaC1mb3JtYXRlcmF0IG1lZGRlbGFuZGUgZsO2ciBhdHQgZml4YSBhbmdpdmVuIGluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MQogbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIHNxdWFzaCBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAiYW52w6RuZCBhdXRvc3F1YXNoLWZvcm1hdGVyYXQgbWVkZGVsYW5kZSBmw7ZyIGF0dCBzbMOlIGlob3AgbWVkIGFuZ2l2ZW4gIgogImluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MgogbXNnaWQgInRoZSBjb21taXQgaXMgYXV0aG9yZWQgYnkgbWUgbm93ICh1c2VkIHdpdGggLUMvLWMvLS1hbWVuZCkiCiBtc2dzdHIgImphZyDDpHIgbnUgZsO2cmZhdHRhcmUgYXYgaW5jaGVja25pbmdlbiAoYW52w6RuZHMgbWVkIC1DLy1jLy0tYW1lbmQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODEgYnVpbHRpbi9sb2cuYzoxMDczIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CiBtc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgogbXNnc3RyICJsw6RnZyB0aWxsIFNpZ25lZC1vZmYtYnk6IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAogbXNnaWQgInVzZSBzcGVjaWZpZWQgdGVtcGxhdGUgZmlsZSIKIG1zZ3N0ciAiYW52w6RuZCBhbmdpdmVuIG1hbGxmaWwiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MworIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CiBtc2dpZCAiZm9yY2UgZWRpdCBvZiBjb21taXQiCiBtc2dzdHIgInR2aW5nYSByZWRpZ2VyaW5nIGF2IGluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgogbXNnaWQgImRlZmF1bHQiCiBtc2dzdHIgInN0YW5kYXJkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODQgYnVpbHRpbi90YWcuYzo0NjIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAogbXNnaWQgImhvdyB0byBzdHJpcCBzcGFjZXMgYW5kICNjb21tZW50cyBmcm9tIG1lc3NhZ2UiCiBtc2dzdHIgImh1ciBibGFua3N0ZWcgb2NoICNrb21tZW50YXJlciBza2FsbCB0YXMgYm9ydCBmcsOlbiBtZWRkZWxhbmRlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NwogbXNnaWQgImluY2x1ZGUgc3RhdHVzIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgogbXNnc3RyICJpbmtsdWRlcmEgc3RhdHVzIGkgbWFsbGVuIGbDtnIgaW5jaGVja25pbmdzbWVkZGVsYW5kZXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NiBidWlsdGluL21lcmdlLmM6MjEzIGJ1aWx0aW4vdGFnLmM6NDYzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzggYnVpbHRpbi9tZXJnZS5jOjIxNSBidWlsdGluL3RhZy5jOjQ2MQogbXNnaWQgImtleSBpZCIKIG1zZ3N0ciAibnlja2VsLWlkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODcgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9jb21taXQuYzoxMzc5IGJ1aWx0aW4vbWVyZ2UuYzoyMTYKIG1zZ2lkICJHUEcgc2lnbiBjb21taXQiCiBtc2dzdHIgIkdQRy1zaWduZXJhIGluY2hlY2tuaW5nIgogCiAjLiBlbmQgY29tbWl0IG1lc3NhZ2Ugb3B0aW9ucwotIzogYnVpbHRpbi9jb21taXQuYzoxMzkwCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODIKIG1zZ2lkICJDb21taXQgY29udGVudHMgb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGluY2hlY2tuaW5nZW5zIGlubmVow6VsbCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzkxCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODMKIG1zZ2lkICJjb21taXQgYWxsIGNoYW5nZWQgZmlsZXMiCiBtc2dzdHIgImNoZWNrYSBpbiBhbGxhIMOkbmRyYWRlIGZpbGVyIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAogbXNnaWQgImFkZCBzcGVjaWZpZWQgZmlsZXMgdG8gaW5kZXggZm9yIGNvbW1pdCIKIG1zZ3N0ciAibMOkZ2cgdGlsbCBhbmdpdm5hIGZpbGVyIHRpbGwgaW5kZXhldCBmw7ZyIGluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIgogbXNnc3RyICJsw6RnZyB0aWxsIGZpbGVyIGludGVyYWt0aXZ0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NgogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiCiBtc2dzdHIgImzDpGdnIHRpbGwgw6RuZHJpbmdhciBpbnRlcmFrdGl2dCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODcKIG1zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCiBtc2dzdHIgImNoZWNrYSBlbmRhc3QgaW4gYW5naXZuYSBmaWxlciIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk2CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODgKIG1zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgogbXNnc3RyICJmw7ZyYmlnw6UgcHJlLWNvbW1pdC1rcm9rIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OQogbXNnaWQgInNob3cgd2hhdCB3b3VsZCBiZSBjb21taXR0ZWQiCiBtc2dzdHIgInZpc2EgdmFkIHNvbSBza3VsbGUgY2hlY2thcyBpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKIG1zZ2lkICJhbWVuZCBwcmV2aW91cyBjb21taXQiCiBtc2dzdHIgImzDpGdnIHRpbGwgZsO2cmVnw6VlbmRlIGluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQogbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKIG1zZ3N0ciAiZsO2cmJpZ8OlIHBvc3QtcmV3cml0ZS1rcm9rIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNgogbXNnaWQgIm9rIHRvIHJlY29yZCBhbiBlbXB0eSBjaGFuZ2UiCiBtc2dzdHIgIm9rIGF0dCByZWdpc3RyZXJhIGVuIHRvbSDDpG5kcmluZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDE3CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKIG1zZ2lkICJvayB0byByZWNvcmQgYSBjaGFuZ2Ugd2l0aCBhbiBlbXB0eSBtZXNzYWdlIgogbXNnc3RyICJvayBhdHQgcmVnaXN0cmVyYSBlbiDDpG5kcmluZyBtZWQgdG9tdCBtZWRkZWxhbmRlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0NDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBIRUFEIGNvbW1pdCIKIG1zZ3N0ciAia3VuZGUgaW50ZSB0b2xrYSBIRUFEOnMgaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NyBidWlsdGluL21lcmdlLmM6NTA4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NzkgYnVpbHRpbi9tZXJnZS5jOjUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICJrdW5kZSBpbnRlIMO2cHBuYSBcIiVzXCIgZsO2ciBsw6RzbmluZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDk0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29ycnVwdCBNRVJHRV9IRUFEIGZpbGUgKCVzKSIKIG1zZ3N0ciAiVHJhc2lnIE1FUkdFX0hFQUQtZmlsICglcykiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUwMQorIzogYnVpbHRpbi9jb21taXQuYzoxNDkzCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTU9ERSIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6RzYSBNRVJHRV9NT0RFIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBjb21taXQgbWVzc2FnZTogJXMiCiBtc2dzdHIgImt1bmRlIGludGUgbMOkc2EgaW5jaGVja25pbmdzbWVkZGVsYW5kZTogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzNAorIzogYnVpbHRpbi9jb21taXQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiQXZicnl0ZXIgaW5jaGVja25pbmc7IG1lZGRlbGFuZGV0IGludGUgcmVkaWdlcmF0LlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJBYm9ydGluZyBjb21taXQgZHVlIHRvIGVtcHR5IGNvbW1pdCBtZXNzYWdlLlxuIgogbXNnc3RyICJBdmJyeXRlciBww6UgZ3J1bmQgYXYgdG9tdCBpbmNoZWNrbmluZ3NtZWRkZWxhbmRlLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NTQgYnVpbHRpbi9tZXJnZS5jOjgzMiBidWlsdGluL21lcmdlLmM6ODU3CisjOiBidWlsdGluL2NvbW1pdC5jOjE1NDYgYnVpbHRpbi9tZXJnZS5jOjg0NyBidWlsdGluL21lcmdlLmM6ODcyCiBtc2dpZCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1pdCBvYmplY3QiCiBtc2dzdHIgImt1bmRlIGludGUgc2tyaXZhIGluY2hlY2tuaW5nc29iamVrdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTc1CisjOiBidWlsdGluL2NvbW1pdC5jOjE1NjcKIG1zZ2lkICJjYW5ub3QgbG9jayBIRUFEIHJlZiIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6VzYSBIRUFELXJlZmVyZW5zIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MQogbXNnaWQgImNhbm5vdCB1cGRhdGUgSEVBRCByZWYiCiBtc2dzdHIgImt1bmRlIGludGUgdXBwZGF0ZXJhIEhFQUQtcmVmZXJlbnMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU5MAorIzogYnVpbHRpbi9jb21taXQuYzoxNTgyCiBtc2dpZCAiIgogIlJlcG9zaXRvcnkgaGFzIGJlZW4gdXBkYXRlZCwgYnV0IHVuYWJsZSB0byB3cml0ZVxuIgogIm5ld19pbmRleCBmaWxlLiBDaGVjayB0aGF0IGRpc2sgaXMgbm90IGZ1bGwgb3IgcXVvdGEgaXNcbiIKQEAgLTM4OTIsOSArNDMxMiwxMyBAQAogbXNnaWQgInJlc3BlY3QgaW5jbHVkZSBkaXJlY3RpdmVzIG9uIGxvb2t1cCIKIG1zZ3N0ciAicmVzcGVrdGVyYSBpbmtsdWRlcmluZ3NkaXJla3RpdiB2aWQgdXBwc2xhZyIKIAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6NjkKLW1zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgotbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgorIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorCisjOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NworbXNnaWQgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIKK21zZ3N0ciAic2tyaXYgc3Rvcmxla2FyIGkgbcOkbm5pc2tvbMOkc2JhcnQgZm9ybWF0IgogCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTUKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCkBAIC0zOTA0LDQ3ICs0MzI4LDQ3IEBACiBtc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSAtLWRpcnR5IgogbXNnc3RyICJnaXQgZGVzY3JpYmUgW2ZsYWdnb3JdIC0tZGlydHkiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICJkZW4gYW5ub3RlcmFkZSB0YWdnZW4gJXMgaW50ZSB0aWxsZ8OkbmdsaWciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBoYXMgbm8gZW1iZWRkZWQgbmFtZSIKIG1zZ3N0ciAiZGVuIGFubm90ZXJhZGUgdGFnZ2VuICVzIGhhciBpbmdldCBpbmLDpGRkYXQgbmFtbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI0MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBpcyByZWFsbHkgJyVzJyBoZXJlIgogbXNnc3RyICJ0YWdnZW4gXCIlc1wiIMOkciBpIHZlcmtsaWdoZXRlbiBcIiVzXCIgaMOkciIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAiT2JqZWt0bmFtbmV0IMOkciBpbnRlIGdpbHRpZ3Q6ICVzIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG5vdCBhIHZhbGlkICclcycgb2JqZWN0IgogbXNnc3RyICIlcyDDpHIgaW50ZSBldHQgZ2lsdGlndCBcIiVzXCItb2JqZWt0IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRhZyBleGFjdGx5IG1hdGNoZXMgJyVzJyIKIG1zZ3N0ciAiaW5nZW4gdGFnZyBtb3RzdmFyYXIgXCIlc1wiIGV4YWt0IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgInNlYXJjaGluZyB0byBkZXNjcmliZSAlc1xuIgogbXNnc3RyICJzw7ZrZXIgZsO2ciBhdHQgYmVza3JpdmEgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzZWFyY2ggYXQgJXNcbiIKIG1zZ3N0ciAiYXZzbHV0YWRlIHPDtmtuaW5nIHDDpSAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyBhbm5vdGF0ZWQgdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKQEAgLTM5NTMsNyArNDM3Nyw3IEBACiAiSW5nYSBhbm5vdGVyYWRlIHRhZ2dhciBrYW4gYmVza3JpdmEgXCIlc1wiLlxuIgogIkRldCBmaW5ucyBkb2NrIG9hbm5vdGVyYWRlIHRhZ2dhcjogdGVzdGEgLS10YWdzLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKQEAgLTM5NjIsMTIgKzQzODYsMTIgQEAKICJJbmdhIHRhZ2dhciBrYW4gYmVza3JpdmEgXCIlc1wiLlxuIgogIlRlc3RhIC0tYWx3YXlzLCBlbGxlciBza2FwYSBuw6VncmEgdGFnZ2FyLiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3OAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cmF2ZXJzZWQgJWx1IGNvbW1pdHNcbiIKIG1zZ3N0ciAidHJhdmVyc2VyYWRlICVsdSBpbmNoZWNrbmluZ2FyXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKQEAgLTM5NzYsNTkgKzQ0MDAsNTkgQEAKICJtZXIgw6RuICVpIHRhZ2dhciBoaXR0YWRlczsgbGlzdGFyIGRlICVpIHNlbmFzdGVcbiIKICJnYXYgdXBwIHPDtmtuaW5nZW4gdmlkICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDIKIG1zZ2lkICJmaW5kIHRoZSB0YWcgdGhhdCBjb21lcyBhZnRlciB0aGUgY29tbWl0IgogbXNnc3RyICJoaXR0YSB0YWdnZW4gc29tIGtvbW1lciBlZnRlciBpbmNoZWNrbmluZ2VuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA0CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAzCiBtc2dpZCAiZGVidWcgc2VhcmNoIHN0cmF0ZWd5IG9uIHN0ZGVyciIKIG1zZ3N0ciAiZmVsc8O2ayBzw7Zrc3RyYXRlZ2luIHDDpSBzdGFuZGFyZCBmZWwiCiAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKK21zZ2lkICJ1c2UgYW55IHJlZiIKK21zZ3N0ciAiYW52w6RuZCBhbGxhIHJlZmVyZW5zZXIiCisKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDUKLW1zZ2lkICJ1c2UgYW55IHJlZiBpbiAuZ2l0L3JlZnMiCi1tc2dzdHIgImFudsOkbmQgYWxsYSByZWZlcmVuc2VyIGkgLmdpdC9yZWZzIgorbXNnaWQgInVzZSBhbnkgdGFnLCBldmVuIHVuYW5ub3RhdGVkIgorbXNnc3RyICJhbnbDpG5kIGFsbGEgdGFnZ2FyLCDDpHZlbiBvYW5ub3RlcmFkZSIKIAogIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNgotbXNnaWQgInVzZSBhbnkgdGFnIGluIC5naXQvcmVmcy90YWdzIgotbXNnc3RyICJhbnbDpG5kIGFsbGEgdGFnZ2FyIGkgLmdpdC9yZWZzL3RhZ3MiCi0KLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDcKIG1zZ2lkICJhbHdheXMgdXNlIGxvbmcgZm9ybWF0IgogbXNnc3RyICJhbnbDpG5kIGFsbHRpZCBsw6VuZ3QgZm9ybWF0IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5CiBtc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKIG1zZ3N0ciAic2tyaXYgZW5kYXN0IHV0IGV4YWt0YSB0csOkZmZhciIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMQogbXNnaWQgImNvbnNpZGVyIDxuPiBtb3N0IHJlY2VudCB0YWdzIChkZWZhdWx0OiAxMCkiCiBtc2dzdHIgIsO2dmVydsOkZyBkZSA8bj4gbnlhc3RlIHRhZ2dhcm5hIChzdGFuZGFyZDogMTApIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE0CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCiBtc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKIG1zZ3N0ciAiw7Z2ZXJ2w6RnIGVuZGFzdCB0YWdnYXIgc29tIG1vdHN2YXJhciA8bcO2bnN0ZXI+IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAogbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKIG1zZ3N0ciAidmlzYSBmw7Zya29ydGFkZSBpbmNoZWNrbmluZ3NvYmpla3Qgc29tIHN0YW5kYXJkIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2CiBtc2dpZCAibWFyayIKIG1zZ3N0ciAibcOkcmtlIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CiBtc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgogbXNnc3RyICJsw6RnZyB0aWxsIDxtw6Rya2U+IHDDpSBsb3J0aWd0IGFyYmV0c3Ryw6RkIChzdGFuZGFyZDogXCItZGlydHlcIikiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzUKIG1zZ2lkICItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIKIG1zZ3N0ciAiLS1sb25nIMOkciBpbmtvbXBhdGliZWwgbWVkIC0tYWJicmV2PTAiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjEKIG1zZ2lkICJObyBuYW1lcyBmb3VuZCwgY2Fubm90IGRlc2NyaWJlIGFueXRoaW5nLiIKIG1zZ3N0ciAiSW5nYSBuYW1uIGhpdHRhZGVzLCBrYW4gaW50ZSBiZXNrcml2YSBuw6Vnb3QuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgxCiBtc2dpZCAiLS1kaXJ0eSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb21taXR0aXNoZXMiCiBtc2dzdHIgIi0tZGlydHkgw6RyIGlua29tcGF0aWJlbHQgbWVkIFwiY29tbWl0dGlzaFwiLXbDpHJkZW4iCiAKQEAgLTQwNzAsMzkgKzQ0OTQsMzkgQEAKIG1zZ2lkICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgogbXNnc3RyICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LWZsYWdnb3JdIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU4CiBtc2dpZCAic2hvdyBwcm9ncmVzcyBhZnRlciA8bj4gb2JqZWN0cyIKIG1zZ3N0ciAidmlzYSBmw7ZybG9wcCBlZnRlciA8bj4gb2JqZWt0IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgogbXNnc3RyICJ2w6RsaiBoYW50ZXJpbmcgYXYgc2lnbmVyYWRlIHRhZ2dhciIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MwogbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiB0YWdzIHRoYXQgdGFnIGZpbHRlcmVkIG9iamVjdHMiCiBtc2dzdHIgInbDpGxqIGhhbnRlcmluZyBhdiB0YWdnYXIgc29tIGhhciB0YWdnZmlsdHJlcmFkZSBvYmpla3QiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDMKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjYKIG1zZ2lkICJEdW1wIG1hcmtzIHRvIHRoaXMgZmlsZSIKIG1zZ3N0ciAiRHVtcCBtw6Rya2VuIHRpbGwgZmlsZW4iCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKIG1zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCiBtc2dzdHIgIkltcG9ydGVyYSBtw6Rya2VuIGZyw6VuIGZpbGVuIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQ3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCiBtc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCiBtc2dzdHIgIkZlamthIHRhZ2dhcmUgbsOkciB0YWdnZW4gc2FrbmFyIGVuIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQ5CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcyCiBtc2dpZCAiT3V0cHV0IGZ1bGwgdHJlZSBmb3IgZWFjaCBjb21taXQiCiBtc2dzdHIgIlNrcml2IHV0IGhlbGEgdHLDpGRldCBmw7ZyIHZhcmplIGluY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjUxCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0CiBtc2dpZCAiVXNlIHRoZSBkb25lIGZlYXR1cmUgdG8gdGVybWluYXRlIHRoZSBzdHJlYW0iCiBtc2dzdHIgIkFudsOkbmQgZG9uZS1mdW5rdGlvbmVuIGbDtnIgYXR0IGF2c2x1dGEgc3Ryw7ZtbWVuIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjUyCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1CiBtc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgogbXNnc3RyICJIb3BwYSDDtnZlciBza3Jpdm5pbmcgYXYgYmxvYi1kYXRhIgogCkBAIC00MTc0LDg4ICs0NTk4LDkyIEBACiBtc2dpZCAiZGVlcGVuIGhpc3Rvcnkgb2Ygc2hhbGxvdyBjbG9uZSIKIG1zZ3N0ciAiZsO2cmRqdXBhIGhpc3RvcmlrIGbDtnIgZ3J1bmQga2xvbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg1IGJ1aWx0aW4vbG9nLmM6MTA4OAorIzogYnVpbHRpbi9mZXRjaC5jOjg2Cittc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCittc2dzdHIgImtvbnZlcnRlcmEgdGlsbCBrb21wbGV0dCBhcmtpdiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAogbXNnaWQgImRpciIKIG1zZ3N0ciAia2F0IgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODYKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OQogbXNnaWQgInByZXBlbmQgdGhpcyB0byBzdWJtb2R1bGUgcGF0aCBvdXRwdXQiCiBtc2dzdHIgImzDpGdnIHRpbGwgaSBiw7ZyamFuIGF2IHVuZGVybW9kdWxlbnMgc8O2a3bDpGdzdXRkYXRhIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MgogbXNnaWQgImRlZmF1bHQgbW9kZSBmb3IgcmVjdXJzaW9uIgogbXNnc3RyICJzdGFuZGFyZGzDpGdlIGbDtnIgcmVrdXJzaW9uIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjAxCisjOiBidWlsdGluL2ZldGNoLmM6MjA0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCByZW1vdGUgcmVmIEhFQUQiCiBtc2dzdHIgIkt1bmRlIGludGUgaGl0dGEgZmrDpHJyLXJlZmVyZW5zZW4gSEVBRCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1NAorIzogYnVpbHRpbi9mZXRjaC5jOjI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgJXMgbm90IGZvdW5kIgogbXNnc3RyICJvYmpla3RldCAlcyBoaXR0YWRlcyBpbnRlIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjU5CisjOiBidWlsdGluL2ZldGNoLmM6MjYyCiBtc2dpZCAiW3VwIHRvIGRhdGVdIgogbXNnc3RyICJbw6Bqb3VyXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3MworIzogYnVpbHRpbi9mZXRjaC5jOjI3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIhICUtKnMgJS0qcyAtPiAlcyAgKGNhbid0IGZldGNoIGluIGN1cnJlbnQgYnJhbmNoKSIKIG1zZ3N0ciAiISAlLSpzICUtKnMgLT4gJXMgIChrYW4gaW50ZSBow6RtdGEgaSBha3R1ZWxsIGdyZW4pIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjc0IGJ1aWx0aW4vZmV0Y2guYzozNjAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzcgYnVpbHRpbi9mZXRjaC5jOjM2MwogbXNnaWQgIltyZWplY3RlZF0iCiBtc2dzdHIgIltyZWZ1c2VyYWRdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjg1CisjOiBidWlsdGluL2ZldGNoLmM6Mjg4CiBtc2dpZCAiW3RhZyB1cGRhdGVdIgogbXNnc3RyICJbdXBwZGF0ZXJhZCB0YWdnXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NyBidWlsdGluL2ZldGNoLmM6MzIyIGJ1aWx0aW4vZmV0Y2guYzozNDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCiBtc2dpZCAiICAodW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYpIgogbXNnc3RyICIgIChrdW5kZSBpbnRlIHVwcGRhdGVyYSBsb2thbCByZWYpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzA1CisjOiBidWlsdGluL2ZldGNoLmM6MzA4CiBtc2dpZCAiW25ldyB0YWddIgogbXNnc3RyICJbbnkgdGFnZ10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKIG1zZ2lkICJbbmV3IGJyYW5jaF0iCiBtc2dzdHIgIltueSBncmVuXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMxMQorIzogYnVpbHRpbi9mZXRjaC5jOjMxNAogbXNnaWQgIltuZXcgcmVmXSIKIG1zZ3N0ciAiW255IHJlZl0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTYKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICJ1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZiIKIG1zZ3N0ciAia3VuZGUgaW50ZSB1cHBkYXRlcmEgbG9rYWwgcmVmIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAidHZpbmdhZCB1cHBkYXRlcmluZyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM2MgorIzogYnVpbHRpbi9mZXRjaC5jOjM2NQogbXNnaWQgIihub24tZmFzdC1mb3J3YXJkKSIKIG1zZ3N0ciAiKGVqIHNuYWJic3BvbGFkKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM5MyBidWlsdGluL2ZldGNoLmM6Njg1CisjOiBidWlsdGluL2ZldGNoLmM6Mzk2IGJ1aWx0aW4vZmV0Y2guYzo2ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzXG4iCiBtc2dzdHIgImthbiBpbnRlIMO2cHBuYSAlczogJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQwMgorIzogYnVpbHRpbi9mZXRjaC5jOjQwNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzXG4iCiBtc2dzdHIgIiVzIHPDpG5kZSBpbnRlIGFsbGEgbsO2ZHbDpG5kaWdhIG9iamVrdFxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDg4CisjOiBidWlsdGluL2ZldGNoLmM6NDkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZyb20gJS4qc1xuIgogbXNnc3RyICJGcsOlbiAlLipzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0OTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogInNvbWUgbG9jYWwgcmVmcyBjb3VsZCBub3QgYmUgdXBkYXRlZDsgdHJ5IHJ1bm5pbmdcbiIKQEAgLTQyNjQsNTUgKzQ2OTIsNTUgQEAKICJ2aXNzYSBsb2thbGEgcmVmZXJlbnNlciBrdW5kZSBpbnRlIHVwcGRhdGVyYXM7IHRlc3RhIGF0dCBrw7ZyYVxuIgogIiBcImdpdCByZW1vdGUgcHJ1bmUgJXNcIiBmw7ZyIGF0dCB0YSBib3J0IGdhbWxhIGdyZW5hciBzb20gc3TDpXIgaSBrb25mbGlrdCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU0OQorIzogYnVpbHRpbi9mZXRjaC5jOjU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIgICAoJXMga29tbWVyIGJsaSBkaW5nbGFuZGUpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTUwCisjOiBidWlsdGluL2ZldGNoLmM6NTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiICAgKCVzIGhhciBibGl2aXQgZGluZ2xhbmRlKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1NworIzogYnVpbHRpbi9mZXRjaC5jOjU2MAogbXNnaWQgIltkZWxldGVkXSIKIG1zZ3N0ciAiW2JvcnR0YWdlbl0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTggYnVpbHRpbi9yZW1vdGUuYzoxMDU1CisjOiBidWlsdGluL2ZldGNoLmM6NTYxIGJ1aWx0aW4vcmVtb3RlLmM6MTA1NQogbXNnaWQgIihub25lKSIKIG1zZ3N0ciAiKGluZ2VuKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjY3NQorIzogYnVpbHRpbi9mZXRjaC5jOjY3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byBmZXRjaCBpbnRvIGN1cnJlbnQgYnJhbmNoICVzIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIlbDpGdyYXIgaMOkbXRhIHRpbGwgYWt0dWVsbCBncmVuICVzIGkgZXR0IGlja2UtbmFrZXQgYXJraXYiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAiVmV0IGludGUgaHVyIG1hbiBow6RtdGFyIGZyw6VuICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg2CisjOiBidWlsdGluL2ZldGNoLmM6Nzg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIkZsYWdnYW4gXCIlc1wiIG9jaCB2w6RyZGV0IFwiJXNcIiDDpHIgaW50ZSBnaWx0aWd0IGbDtnIgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3ODkKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3B0aW9uIFwiJXNcIiBpcyBpZ25vcmVkIGZvciAlc1xuIgogbXNnc3RyICJGbGFnZ2FuIFwiJXNcIiBpZ25vcmVyYXMgZsO2ciAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODkxCisjOiBidWlsdGluL2ZldGNoLmM6ODk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZldGNoaW5nICVzXG4iCiBtc2dzdHIgIkjDpG10YXIgJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5MyBidWlsdGluL3JlbW90ZS5jOjEwMAorIzogYnVpbHRpbi9mZXRjaC5jOjg5NiBidWlsdGluL3JlbW90ZS5jOjEwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmV0Y2ggJXMiCiBtc2dzdHIgIkt1bmRlIGludGUgaMOkbXRhICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTEyCisjOiBidWlsdGluL2ZldGNoLmM6OTE1CiBtc2dpZCAiIgogIk5vIHJlbW90ZSByZXBvc2l0b3J5IHNwZWNpZmllZC4gIFBsZWFzZSwgc3BlY2lmeSBlaXRoZXIgYSBVUkwgb3IgYVxuIgogInJlbW90ZSBuYW1lIGZyb20gd2hpY2ggbmV3IHJldmlzaW9ucyBzaG91bGQgYmUgZmV0Y2hlZC4iCkBAIC00MzIwLDI0ICs0NzQ4LDMyIEBACiAiSW5nZXQgZmrDpHJyYXJraXYgYW5nYXZzLiBBbmdlIGFudGluZ2VuIGVuIFVSTCBlbGxlciBuYW1uZXQgcMOlIGV0dFxuIgogImZqw6RycmFya2l2IHNvbSBueWEgaW5jaGVja25pbmdhciBza2FsbCBow6RtdGFzIGZyw6VuLiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjkzMgorIzogYnVpbHRpbi9mZXRjaC5jOjkzNQogbXNnaWQgIllvdSBuZWVkIHRvIHNwZWNpZnkgYSB0YWcgbmFtZS4iCiBtc2dzdHIgIkR1IG3DpXN0ZSBhbmdlIG5hbW5ldCBww6UgZW4gdGFnZy4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODQKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKK21zZ2lkICItLWRlcHRoIGFuZCAtLXVuc2hhbGxvdyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKK21zZ3N0ciAiLS1kZXB0aCBvY2ggLS11bnNoYWxsb3cga2FuIGludGUgYW52w6RuZGFzIHNhbXRpZGlndCIKKworIzogYnVpbHRpbi9mZXRjaC5jOjk4MworbXNnaWQgIi0tdW5zaGFsbG93IG9uIGEgY29tcGxldGUgcmVwb3NpdG9yeSBkb2VzIG5vdCBtYWtlIHNlbnNlIgorbXNnc3RyICItLXVuc2hhbGxvdyBrYW4gaW50ZSBhbnbDpG5kYXMgcMOlIGV0dCBrb21wbGV0dCBhcmtpdiIKKworIzogYnVpbHRpbi9mZXRjaC5jOjEwMDIKIG1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCB0YWtlIGEgcmVwb3NpdG9yeSBhcmd1bWVudCIKIG1zZ3N0ciAiZmV0Y2ggLS1hbGwgdGFyIGludGUgbmFtbmV0IHDDpSBldHQgYXJraXYgc29tIGFyZ3VtZW50IgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTg2CisjOiBidWlsdGluL2ZldGNoLmM6MTAwNAogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiZmV0Y2ggLS1hbGwga2FuIGludGUgYW5nZXMgbWVkIHJlZmVyZW5zc3BlY2lmaWthdGlvbmVyIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTk3CisjOiBidWlsdGluL2ZldGNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzdWNoIHJlbW90ZSBvciByZW1vdGUgZ3JvdXA6ICVzIgogbXNnc3RyICJGasOkcnJlbiBlbGxlciBmasOkcnJncnVwcGVuIGZpbm5zIGludGU6ICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MTAwNQorIzogYnVpbHRpbi9mZXRjaC5jOjEwMjMKIG1zZ2lkICJGZXRjaGluZyBhIGdyb3VwIGFuZCBzcGVjaWZ5aW5nIHJlZnNwZWNzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIkthbiBpbnRlIGjDpG10YSBmcsOlbiBncnVwcCBvY2ggYW5nZSByZWZlcmVuc3NwZWNpZmlrYXRpb25lciIKIApAQCAtNDM0NiwyOSArNDc4MiwyOSBAQAogbXNnc3RyICIiCiAiZ2l0IGZtdC1tZXJnZS1tc2cgWy1tIDxtZWRkZWxhbmRlPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxmaWw+XSIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjUzIGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NiBidWlsdGluL2dyZXAuYzo3MDEKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODggYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NiBidWlsdGluL3Nob3ctcmVmLmM6MTc1Ci0jOiBidWlsdGluL3RhZy5jOjQ0OCBwYXJzZS1vcHRpb25zLmg6MTMzIHBhcnNlLW9wdGlvbnMuaDoyMzUKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjYgYnVpbHRpbi9ncmVwLmM6NzAxCisjOiBidWlsdGluL21lcmdlLmM6MTg4IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUgYnVpbHRpbi9zaG93LXJlZi5jOjE3NQorIzogYnVpbHRpbi90YWcuYzo0NDYgcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM5CiBtc2dpZCAibiIKIG1zZ3N0ciAibiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjU0CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjQKIG1zZ2lkICJwb3B1bGF0ZSBsb2cgd2l0aCBhdCBtb3N0IDxuPiBlbnRyaWVzIGZyb20gc2hvcnRsb2ciCiBtc2dzdHIgImZ5bGwgaSBsb2dnZW4gbWVkIHNvbSBtZXN0IDxuPiBwb3N0ZXIgZnLDpW4gc2hvcnRsb2ciCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY3CiBtc2dpZCAiYWxpYXMgZm9yIC0tbG9nIChkZXByZWNhdGVkKSIKIG1zZ3N0ciAiYWxpYXMgZsO2ciAtLWxvZyAoYXZyw6VkcykiCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MAorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcwCiBtc2dpZCAidGV4dCIKIG1zZ3N0ciAidGV4dCIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYxCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzEKIG1zZ2lkICJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiCiBtc2dzdHIgImlubGVkIG1lZGRlbGFuZGUgbWVkIDx0ZXh0PiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYyCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzIKIG1zZ2lkICJmaWxlIHRvIHJlYWQgZnJvbSIKIG1zZ3N0ciAiZmlsIGF0dCBsw6RzYSBmcsOlbiIKIApAQCAtNDcwNCwxMSArNTE0MCw2IEBACiBtc2dpZCAibm8gcGF0dGVybiBnaXZlbi4iCiBtc2dzdHIgImluZ2V0IG3Dtm5zdGVyIGFuZ2F2cy4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjgyNQotIywgYy1mb3JtYXQKLW1zZ2lkICJiYWQgb2JqZWN0ICVzIgotbXNnc3RyICJmZWxha3RpZ3Qgb2JqZWt0ICVzIgotCiAjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCiBtc2dzdHIgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBmdW5nZXJhciBlbmRhc3QgaSBhcmJldHNrYXRhbG9nZW4iCkBAIC00NzcwLDQ1ICs1MjAxLDQ5IEBACiBtc2dzdHIgInZpc2EgYWxsYSB0aWxsZ8OkbmdsaWdhIGtvbW1hbmRvbiIKIAogIzogYnVpbHRpbi9oZWxwLmM6NDQKK21zZ2lkICJwcmludCBsaXN0IG9mIHVzZWZ1bCBndWlkZXMiCittc2dzdHIgImxpc3RhIGFudsOkbmRiYXJhIHbDpGdsZWRuaW5nYXIiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ1CiBtc2dpZCAic2hvdyBtYW4gcGFnZSIKIG1zZ3N0ciAidmlzYSBtYW51YWxzaWRhIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NQorIzogYnVpbHRpbi9oZWxwLmM6NDYKIG1zZ2lkICJzaG93IG1hbnVhbCBpbiB3ZWIgYnJvd3NlciIKIG1zZ3N0ciAidmlzYSBtYW51YWwgaSB3ZWJibMOkc2FyZSIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDcKKyM6IGJ1aWx0aW4vaGVscC5jOjQ4CiBtc2dpZCAic2hvdyBpbmZvIHBhZ2UiCiBtc2dzdHIgInZpc2EgaW5mby1zaWRhIgogCi0jOiBidWlsdGluL2hlbHAuYzo1MwotbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIgotbXNnc3RyICJnaXQgaGVscCBbLS1hbGxdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtrb21tYW5kb10iCisjOiBidWlsdGluL2hlbHAuYzo1NAorbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCittc2dzdHIgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBba29tbWFuZG9dIgogCi0jOiBidWlsdGluL2hlbHAuYzo2NQorIzogYnVpbHRpbi9oZWxwLmM6NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgIm9rw6RudCBoasOkbHBmb3JtYXQ6ICVzIgogCi0jOiBidWlsdGluL2hlbHAuYzo5MworIzogYnVpbHRpbi9oZWxwLmM6OTQKIG1zZ2lkICJGYWlsZWQgdG8gc3RhcnQgZW1hY3NjbGllbnQuIgogbXNnc3RyICJNaXNzbHlja2FkZXMgc3RhcnRhIGVtYWNzY2xpZW50LiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTA2CisjOiBidWlsdGluL2hlbHAuYzoxMDcKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi4iCiBtc2dzdHIgIkt1bmRlIGludGUgdG9sa2EgZW1hY3NjbGllbnQtdmVyc2lvbi4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjExNAorIzogYnVpbHRpbi9oZWxwLmM6MTE1CiAjLCBjLWZvcm1hdAogbXNnaWQgImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS4iCiBtc2dzdHIgImVtYWNzY2xpZW50IHZlcnNpb24gXCIlZFwiIGbDtnIgZ2FtbWFsICg8IDIyKS4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEzMiBidWlsdGluL2hlbHAuYzoxNjAgYnVpbHRpbi9oZWxwLmM6MTY5IGJ1aWx0aW4vaGVscC5jOjE3NworIzogYnVpbHRpbi9oZWxwLmM6MTMzIGJ1aWx0aW4vaGVscC5jOjE2MSBidWlsdGluL2hlbHAuYzoxNzAgYnVpbHRpbi9oZWxwLmM6MTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgogbXNnc3RyICJleGVjIG1pc3NseWNrYWRlcyBmw7ZyIFwiJXNcIjogJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIxNworIzogYnVpbHRpbi9oZWxwLmM6MjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBwYXRoIGZvciB1bnN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgpAQCAtNDgxNyw3ICs1MjUyLDcgQEAKICJcIiVzXCI6IHPDtmt2w6RnIGbDtnIgbWFuLXZpc2FyZSBzb20gZWogc3TDtmRzLlxuIgogIkFudsOkbmQgXCJtYW4uPHZlcmt0eWc+LmNtZFwiIGlzdMOkbGxldC4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIyOQorIzogYnVpbHRpbi9oZWxwLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgpAQCAtNDgyNiwzMDcgKzUyNjEsMzM1IEBACiAiXCIlc1wiOiBrb21tYW5kbyBmw7ZyIG1hbi12aXNhcmUgc29tIHN0w7Zkcy5cbiIKICJBbnbDpG5kIFwibWFuLjx2ZXJrdHlnPi5wYXRoXCIgaXN0w6RsbGV0LiIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mjk5Ci1tc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKLW1zZ3N0ciAiRGUgbWVzdCBhbnbDpG5kYSBnaXQta29tbWFuZG9uYSDDpHI6IgotCi0jOiBidWlsdGluL2hlbHAuYzozNjcKKyM6IGJ1aWx0aW4vaGVscC5jOjM1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIgogbXNnc3RyICJcIiVzXCI6IG9rw6RuZCBtYW4tdmlzYXJlLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mzg0CisjOiBidWlsdGluL2hlbHAuYzozNjgKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgImluZ2VuIG1hbi12aXNhcmUgaGFudGVyYWRlIGbDtnJmcsOlZ2FuIgogCi0jOiBidWlsdGluL2hlbHAuYzozOTIKKyM6IGJ1aWx0aW4vaGVscC5jOjM3NgogbXNnaWQgIm5vIGluZm8gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgImluZ2VuIGluZm8tdmlzYXJlIGhhbnRlcmFkZSBmw7ZyZnLDpWdhbiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDQ3IGJ1aWx0aW4vaGVscC5jOjQ1NAorIzogYnVpbHRpbi9oZWxwLmM6NDIyCittc2dpZCAiRGVmaW5pbmcgYXR0cmlidXRlcyBwZXIgcGF0aCIKK21zZ3N0ciAiRGVmaW5pZXJhciBhdHRyaWJ1dCBwZXIgc8O2a3bDpGciCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMworbXNnaWQgIkEgR2l0IGdsb3NzYXJ5IgorbXNnc3RyICJFbiBHaXQtb3JkbGlzdGEiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNAorbXNnaWQgIlNwZWNpZmllcyBpbnRlbnRpb25hbGx5IHVudHJhY2tlZCBmaWxlcyB0byBpZ25vcmUiCittc2dzdHIgIkFuZ2UgYXZzaWt0bGlnZW4gb3Nww6VyYWRlIGZpbGVyIGF0dCBpZ25vcmVyYSIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI1Cittc2dpZCAiRGVmaW5pbmcgc3VibW9kdWxlIHByb3BlcnRpZXMiCittc2dzdHIgIkFuZ2UgZWdlbnNrYXBlciBmw7ZyIHVuZGVybW9kdWxlciIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI2Cittc2dpZCAiU3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0IgorbXNnc3RyICJBbmdlIHZlcnNpb25lciBvY2ggaW50ZXJ2YWxsIGkgR2l0IgorCisjOiBidWlsdGluL2hlbHAuYzo0MjcKK21zZ2lkICJBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBHaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKSIKK21zZ3N0ciAiSW50cm9kdWt0aW9uIHRpbGwgR2l0IChmw7ZyIHZlcnNpb24gMS41LjEgb2NoIHNlbmFyZSkiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyOAorbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKK21zZ3N0ciAiw5Z2ZXJzaWt0IMO2dmVyIHJla29tbWVuZGVyYWRlIGFyYmV0c2Zsw7ZkZW4gbWVkIEdpdCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDQwCittc2dpZCAiVGhlIGNvbW1vbiBHaXQgZ3VpZGVzIGFyZTpcbiIKK21zZ3N0ciAiRGUgdmFubGlnYSBHaXQtdsOkZ2xlZG5pbmdhcm5hIMOkcjpcbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAiYW52w6RuZG5pbmc6ICVzJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ3MAorIzogYnVpbHRpbi9oZWxwLmM6NDk0CiAjLCBjLWZvcm1hdAogbXNnaWQgImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJyIKIG1zZ3N0ciAiXCJnaXQgJXNcIiDDpHIgZXR0IGFsaWFzIGbDtnIgXCIlc1wiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgdHlwZSBtaXNtYXRjaCBhdCAlcyIKIG1zZ3N0ciAib2JqZWt0dHlwIHN0w6RtbWVyIGludGUgw7Z2ZXJlbnMgdmlkICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxOTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIwMgogbXNnaWQgIm9iamVjdCBvZiB1bmV4cGVjdGVkIHR5cGUiCiBtc2dzdHIgIm9iamVrdCBhdiBvdsOkbnRhZCB0eXAiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIyNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBmaWxsICVkIGJ5dGUiCiBtc2dpZF9wbHVyYWwgImNhbm5vdCBmaWxsICVkIGJ5dGVzIgogbXNnc3RyWzBdICJrYW4gaW50ZSBmeWxsYSAlZCBieXRlIgogbXNnc3RyWzFdICJrYW4gaW50ZSBmeWxsYSAlZCBieXRlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMzcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI0OQogbXNnaWQgImVhcmx5IEVPRiIKIG1zZ3N0ciAidGlkaWd0IGZpbHNsdXQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjUwCiBtc2dpZCAicmVhZCBlcnJvciBvbiBpbnB1dCIKIG1zZ3N0ciAiaW5kYXRhbMOkc2ZlbCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjIKIG1zZ2lkICJ1c2VkIG1vcmUgYnl0ZXMgdGhhbiB3ZXJlIGF2YWlsYWJsZSIKIG1zZ3N0ciAiYW52w6RuZGUgZmxlciBieXRlIMOkbiB0aWxsZ8OkbmdsaWd0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI2OQogbXNnaWQgInBhY2sgdG9vIGxhcmdlIGZvciBjdXJyZW50IGRlZmluaXRpb24gb2Ygb2ZmX3QiCiBtc2dzdHIgInBha2V0IGbDtnIgc3RvcnQgZsO2ciBudXZhcmFuZGUgZGVmaW5pdGlvbiBhdiBvZmZfdCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjczCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyODUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrYXBhIFwiJXNcIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjc4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKIG1zZ3N0ciAia2FuIGludGUgw7ZwcG5hIHBha2V0ZmlsZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNAogbXNnaWQgInBhY2sgc2lnbmF0dXJlIG1pc21hdGNoIgogbXNnc3RyICJwYWtldHNpZ25hdHVyIHN0w6RtbWVyIGludGUgw7Z2ZXJlbnMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgdmVyc2lvbiAlPFBSSXUzMj4gdW5zdXBwb3J0ZWQiCiBtc2dzdHIgInBha2V0dmVyc2lvbiAlPFBSSXUzMj4gc3TDtmRzIGVqIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgogbXNnc3RyICJwYWtldGV0IGhhciBmZWxha3RpZ3Qgb2JqZWt0IHZpZCBpbmRleCAlbHU6ICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0MzQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbmZsYXRlIHJldHVybmVkICVkIgogbXNnc3RyICJpbmZsYXRlIHJldHVybmVyYWRlICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0ODMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5NQogbXNnaWQgIm9mZnNldCB2YWx1ZSBvdmVyZmxvdyBmb3IgZGVsdGEgYmFzZSBvYmplY3QiCiBtc2dzdHIgImluZGV4dsOkcmRlc3BpbGwgZsO2ciBkZWx0YWJhc29iamVrdCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDkxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MDMKIG1zZ2lkICJkZWx0YSBiYXNlIG9mZnNldCBpcyBvdXQgb2YgYm91bmQiCiBtc2dzdHIgImRlbHRhYmFzaW5kZXggdXRhbmbDtnIgZ3LDpG5zZW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTExCiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgIm9rw6RuZCBvYmpla3R0eXAgJWQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQyCiBtc2dpZCAiY2Fubm90IHByZWFkIHBhY2sgZmlsZSIKIG1zZ3N0ciAia2FuIGludGUgdXRmw7ZyYSBcInByZWFkXCIgcMOlIHBha2V0ZmlsIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1MzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGUgbWlzc2luZyIKIG1zZ2lkX3BsdXJhbCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlcyBtaXNzaW5nIgogbXNnc3RyWzBdICJmw7ZyIHRpZGlndCBzbHV0IHDDpSBwYWtldGZpbGVuLCAlbHUgYnl0ZSBzYWtuYXMiCiBtc2dzdHJbMV0gImbDtnIgdGlkaWd0IHNsdXQgcMOlIHBha2V0ZmlsZW4sICVsdSBieXRlIHNha25hcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTU4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NzAKIG1zZ2lkICJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIKIG1zZ3N0ciAiYWxsdmFybGlnIGluZmxhdGUtaW5rb25zZWt2ZW5zIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2NDkgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjU1IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY3OAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzEyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjYxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NyBidWlsdGluL2luZGV4LXBhY2suYzo2OTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyNCBidWlsdGluL2luZGV4LXBhY2suYzo3MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIgogbXNnc3RyICJTSEExLUtPTExJU0lPTiBVUFBUw4RDS1QgVklEICVzICEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY1MiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY0IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCiAjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBsw6RzYSAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzE4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgZXhpc3Rpbmcgb2JqZWN0ICVzIgogbXNnc3RyICJrYW4gaW50ZSBsw6RzYSBiZWZpbnRsaWd0IG9iamVrdCAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBibG9iIG9iamVjdCAlcyIKIG1zZ3N0ciAib2dpbHRpZ3QgYmxvYi1vYmpla3QgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgJXMiCiBtc2dzdHIgIm9naWx0aWd0ICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MQogbXNnaWQgIkVycm9yIGluIG9iamVjdCIKIG1zZ3N0ciAiRmVsIGkgb2JqZWt0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYWxsIGNoaWxkIG9iamVjdHMgb2YgJXMgYXJlIHJlYWNoYWJsZSIKIG1zZ3N0ciAiSW50ZSBhbGxhIGJhcm5vYmpla3QgZsO2ciAlcyBrYW4gbsOlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODIxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg0NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MwogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHRpbGzDpG1wYSBkZWx0YSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTg2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiUmVjZWl2aW5nIG9iamVjdHMiCiBtc2dzdHIgIlRhciBlbW90IG9iamVrdCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTg2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiSW5kZXhpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiU2thcGFyIGluZGV4IGbDtnIgb2JqZWt0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDEyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDMwCiBtc2dpZCAicGFjayBpcyBjb3JydXB0ZWQgKFNIQTEgbWlzbWF0Y2gpIgogbXNnc3RyICJwYWtldGV0IMOkciB0cmFzaWd0IChTSEExIHN0w6RtbWVyIGludGUpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDE3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM1CiBtc2dpZCAiY2Fubm90IGZzdGF0IHBhY2tmaWxlIgogbXNnc3RyICJrYW4gaW50ZSB1dGbDtnJhIFwiZnN0YXRcIiBww6UgcGFrZXRmaWwiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMjAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzgKIG1zZ2lkICJwYWNrIGhhcyBqdW5rIGF0IHRoZSBlbmQiCiBtc2dzdHIgInBha2V0IGhhciBza3LDpHAgaSBzbHV0ZXQiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDkKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IGluIHBhcnNlX3BhY2tfb2JqZWN0cygpIgogbXNnc3RyICJmw7ZydmlycmFkIGJvcnRvbSB2YW52ZXR0IGkgcGFyc2VfcGFja19vYmplY3RzKCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNzIKIG1zZ2lkICJSZXNvbHZpbmcgZGVsdGFzIgogbXNnc3RyICJBbmFseXNlcmFyIGRlbHRhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDY0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDgyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGhyZWFkOiAlcyIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza2FwYSB0csOlZDogJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjQKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IgogbXNnc3RyICJmw7ZydmlycmFkIGJvcnRvbSB2YW52ZXR0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTEyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTMyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvbXBsZXRlZCB3aXRoICVkIGxvY2FsIG9iamVjdHMiCiBtc2dzdHIgInNsdXRmw7ZyZGVzIG1lZCAlZCBsb2thbGEgb2JqZWt0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgKGRpc2sgY29ycnVwdGlvbj8pIgogbXNnc3RyICJPdsOkbnRhZCBzdmFuc2NoZWNrc3VtbWEgZsO2ciAlcyAodHJhc2lnIGRpc2s/KSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhIgogbXNnaWRfcGx1cmFsICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhcyIKIG1zZ3N0clswXSAicGFrZXRldCBoYXIgJWQgb2FuYWx5c2VyYXQgZGVsdGEiCiBtc2dzdHJbMV0gInBha2V0ZXQgaGFyICVkIG9hbmFseXNlcmFkZSBkZWx0YSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gZGVmbGF0ZSBhcHBlbmRlZCBvYmplY3QgKCVkKSIKIG1zZ3N0ciAia3VuZGUgaW50ZSB1dGbDtnJhIFwiZGVmbGF0ZVwiIHDDpSB0aWxsYWd0IG9iamVrdCAoJWQpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjI5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIG9iamVjdCAlcyBpcyBjb3JydXB0IgogbXNnc3RyICJsb2thbHQgb2JqZWt0ICVzIMOkciB0cmFzaWd0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CiBtc2dpZCAiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGUiCiBtc2dzdHIgImZlbCB2aWQgc3TDpG5nbmluZyBhdiBwYWtldGZpbCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI2NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgImthbiBpbnRlIHRhIHNrcml2YSBcImtlZXBcIi1maWwgXCIlc1wiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjbG9zZSB3cml0dGVuIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICJha24gaW50ZSBzdMOkbmdhIHNrcml2ZW4gXCJrZWVwXCItZmlsIFwiJXNcIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwOAogbXNnaWQgImNhbm5vdCBzdG9yZSBwYWNrIGZpbGUiCiBtc2dzdHIgImthbiBpbnRlIHNwYXJhIHBha2V0ZmlsIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjk4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzE5CiBtc2dpZCAiY2Fubm90IHN0b3JlIGluZGV4IGZpbGUiCiBtc2dzdHIgImthbiBpbnRlIHNwYXJhIGluZGV4ZmlsIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzMxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCiBtc2dzdHIgImZlbGFrdGlnIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMzNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG51bWJlciBvZiB0aHJlYWRzIHNwZWNpZmllZCAoJWQpIgogbXNnc3RyICJmZWxha3RpZ3QgYW50YWwgdHLDpWRhciBhbmdpdmV0ICglZCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNDEgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUxNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRocmVhZHMgc3VwcG9ydCwgaWdub3JpbmcgJXMiCiBtc2dzdHIgInRyw6Vkc3TDtmQgc2FrbmFzLCBpZ25vcmVyYXIgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzOTkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBmaWxlICclcyciCiBtc2dzdHIgIkthbiBpbnRlIMO2cHBuYSBiZWZpbnRsaWcgcGFrZXRmaWwgXCIlc1wiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDAxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgaWR4IGZpbGUgZm9yICclcyciCiBtc2dzdHIgIkthbiBpbnRlIMO2cHBuYSBiZWZpbnRsaWd0IHBha2V0LWlkeC1maWwgZsO2ciBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NDgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAibm9uIGRlbHRhOiAlZCBvYmplY3QiCiBtc2dpZF9wbHVyYWwgIm5vbiBkZWx0YTogJWQgb2JqZWN0cyIKIG1zZ3N0clswXSAiaWNrZS1kZWx0YTogJWQgb2JqZWt0IgogbXNnc3RyWzFdICJpY2tlLWRlbHRhOiAlZCBvYmpla3QiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3QiCiBtc2dpZF9wbHVyYWwgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0cyIKIG1zZ3N0clswXSAia2VkamVsw6RuZ2QgPSAlZDogJWx1IG9iamVrdCIKIG1zZ3N0clsxXSAia2VkamVsw6RuZ2QgPSAlZDogJWx1IG9iamVrdCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwMwogbXNnaWQgIkNhbm5vdCBjb21lIGJhY2sgdG8gY3dkIgogbXNnc3RyICJLYW4gaW50ZSBnw6UgdGlsbGJha2EgdGlsbCBhcmJldHNrYXRhbG9nZW4gKGN3ZCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MjYgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUyOQotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU0MSBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgJXMiCiBtc2dzdHIgImZlbGFrdGlnICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTU5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgwCiBtc2dpZCAiLS1maXgtdGhpbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IC0tc3RkaW4iCiBtc2dzdHIgIi0tZml4LXRoaW4ga2FuIGludGUgYW52w6RuZGFzIG1lZCAtLXN0ZGluIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTYzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODQgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrZmlsZSBuYW1lICclcycgZG9lcyBub3QgZW5kIHdpdGggJy5wYWNrJyIKIG1zZ3N0ciAicGFrZXRmaWxuYW1uZXQgXCIlc1wiIHNsdXRhciBpbnRlIG1lZCBcIi5wYWNrXCIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2MDMKIG1zZ2lkICItLXZlcmlmeSB3aXRoIG5vIHBhY2tmaWxlIG5hbWUgZ2l2ZW4iCiBtc2dzdHIgIi0tdmVyaWZ5IGFuZ2F2cyB1dGFuIHBha2V0ZmlsbmFtbiIKIApAQCAtNTI5NCwzMzcgKzU3NTcsMzQwIEBACiBtc2dpZCAiQ2Fubm90IGFjY2VzcyB3b3JrIHRyZWUgJyVzJyIKIG1zZ3N0ciAiS2FuIGludGUga29tbWEgw6V0IGFyYmV0c2thdGFsb2dlbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MzcKLW1zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8c2luY2U+Li48dW50aWw+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCi1tc2dzdHIgImdpdCBsb2cgWzxmbGFnZ29yPl0gWzxzZWRhbj4uLjx0aWxsPl0gW1stLV0gPHPDtmt2w6RnPi4uLl1cbiIKKyM6IGJ1aWx0aW4vbG9nLmM6NDAKK21zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCittc2dzdHIgImdpdCBsb2cgWzxmbGFnZ29yPl0gWzx2ZXJzaW9uc2ludGVydmFsbD5dIFtbLS1dIDxzw7ZrdsOkZz4uLi5dXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MzgKKyM6IGJ1aWx0aW4vbG9nLmM6NDEKIG1zZ2lkICIgICBvcjogZ2l0IHNob3cgW29wdGlvbnNdIDxvYmplY3Q+Li4uIgogbXNnc3RyICIgICAgIGVsbGVyOiBnaXQgc2hvdyBbZmxhZ2dvcl0gPG9iamVrdD4uLi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTAwCisjOiBidWlsdGluL2xvZy5jOjEwMwogbXNnaWQgInN1cHByZXNzIGRpZmYgb3V0cHV0IgogbXNnc3RyICJ1bmRlcnRyeWNrIGRpZmYtdXRkYXRhIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMQorIzogYnVpbHRpbi9sb2cuYzoxMDQKIG1zZ2lkICJzaG93IHNvdXJjZSIKIG1zZ3N0ciAidmlzYSBrw6RsbGtvZCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTA1Cittc2dpZCAiVXNlIG1haWwgbWFwIGZpbGUiCittc2dzdHIgIkFudsOkbmQgZS1wb3N0bWFwcG5pbmdzZmlsIgorCisjOiBidWlsdGluL2xvZy5jOjEwNgogbXNnaWQgImRlY29yYXRlIG9wdGlvbnMiCiBtc2dzdHIgImRla29yZXJpbmdzZmxhZ2dvciIKIAotIzogYnVpbHRpbi9sb2cuYzoxODkKKyM6IGJ1aWx0aW4vbG9nLmM6MTk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZpbmFsIG91dHB1dDogJWQgJXNcbiIKIG1zZ3N0ciAiU2x1dHV0ZGF0YTogJWQgJXNcbiIKIAotIzogYnVpbHRpbi9sb2cuYzo0MDUgYnVpbHRpbi9sb2cuYzo0OTcKKyM6IGJ1aWx0aW4vbG9nLmM6NDIyIGJ1aWx0aW4vbG9nLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIG9iamVjdCAlcyIKIG1zZ3N0ciAiS3VuZGUgaW50ZSBsw6RzYSBvYmpla3RldCAlcyIKIAotIzogYnVpbHRpbi9sb2cuYzo1MjEKKyM6IGJ1aWx0aW4vbG9nLmM6NTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gdHlwZTogJWQiCiBtc2dzdHIgIk9rw6RuZCB0eXA6ICVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYxMworIzogYnVpbHRpbi9sb2cuYzo2MzgKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyB1dGFuIHbDpHJkZSIKIAotIzogYnVpbHRpbi9sb2cuYzo2ODcKKyM6IGJ1aWx0aW4vbG9nLmM6NzIwCiBtc2dpZCAibmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5IGlzIHRvbyBsb25nIgogbXNnc3RyICJuYW1uZXQgcMOlIHV0ZGF0YWthdGFsb2dlbiDDpHIgZsO2ciBsw6VuZ3QiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6Njk4CisjOiBidWlsdGluL2xvZy5jOjczNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBwYXRjaCBmaWxlICVzIgogbXNnc3RyICJLYW4gaW50ZSDDtnBwbmEgcGF0Y2hmaWxlbiAlcyIKIAotIzogYnVpbHRpbi9sb2cuYzo3MTIKKyM6IGJ1aWx0aW4vbG9nLmM6NzUwCiBtc2dpZCAiTmVlZCBleGFjdGx5IG9uZSByYW5nZS4iCiBtc2dzdHIgIkJlaMO2dmVyIHByZWNpcyBldHQgaW50ZXJ2YWxsLiIKIAotIzogYnVpbHRpbi9sb2cuYzo3MjAKKyM6IGJ1aWx0aW4vbG9nLmM6NzU4CiBtc2dpZCAiTm90IGEgcmFuZ2UuIgogbXNnc3RyICJJbnRlIGV0dCBpbnRlcnZhbGwuIgogCi0jOiBidWlsdGluL2xvZy5jOjc5NAorIzogYnVpbHRpbi9sb2cuYzo4NjAKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgogbXNnc3RyICJPbXNsYWdzYnJldmV0IGJlaMO2dmVyIGUtcG9zdGZvcm1hdCIKIAotIzogYnVpbHRpbi9sb2cuYzo4NjcKKyM6IGJ1aWx0aW4vbG9nLmM6OTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluc2FuZSBpbi1yZXBseS10bzogJXMiCiBtc2dzdHIgInRva2lndCBpbi1yZXBseS10bzogJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODk1CisjOiBidWlsdGluL2xvZy5jOjk2NAogbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCiBtc2dzdHIgImdpdCBmb3JtYXQtcGF0Y2ggW2ZsYWdnb3JdIFs8c2VkYW4+IHwgPHJldmlzaW9uc2ludGVydmFsbD5dIgogCi0jOiBidWlsdGluL2xvZy5jOjk0MAorIzogYnVpbHRpbi9sb2cuYzoxMDA5CiBtc2dpZCAiVHdvIG91dHB1dCBkaXJlY3Rvcmllcz8iCiBtc2dzdHIgIlR2w6UgdXRkYXRha2F0YWxvZ2VyPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDY4CisjOiBidWlsdGluL2xvZy5jOjExMDgKIG1zZ2lkICJ1c2UgW1BBVENIIG4vbV0gZXZlbiB3aXRoIGEgc2luZ2xlIHBhdGNoIgogbXNnc3RyICJhbnbDpG5kIFtQQVRDSCBuL21dIMOkdmVuIGbDtnIgZW4gZW5zYW0gcGF0Y2giCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3MQorIzogYnVpbHRpbi9sb2cuYzoxMTExCiBtc2dpZCAidXNlIFtQQVRDSF0gZXZlbiB3aXRoIG11bHRpcGxlIHBhdGNoZXMiCiBtc2dzdHIgImFudsOkbmQgW1BBVENIXSDDpHZlbiBmw7ZyIGZsZXJhIHBhdGNoYXIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3NQorIzogYnVpbHRpbi9sb2cuYzoxMTE1CiBtc2dpZCAicHJpbnQgcGF0Y2hlcyB0byBzdGFuZGFyZCBvdXQiCiBtc2dzdHIgInNrcml2IHBhdGNoYXJuYSBww6Ugc3RuYWRhcmQgdXQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3NworIzogYnVpbHRpbi9sb2cuYzoxMTE3CiBtc2dpZCAiZ2VuZXJhdGUgYSBjb3ZlciBsZXR0ZXIiCiBtc2dzdHIgImdlbmVyZXJhIGV0dCBmw7ZsamVicmV2IgogCi0jOiBidWlsdGluL2xvZy5jOjEwNzkKKyM6IGJ1aWx0aW4vbG9nLmM6MTExOQogbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKIG1zZ3N0ciAiYW52w6RuZCBlbmtlbCBudW1tZXJzZWt2ZW5zIGbDtnIgdXRkYXRhZmlsbmFtbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDgwCisjOiBidWlsdGluL2xvZy5jOjExMjAKIG1zZ2lkICJzZngiCiBtc2dzdHIgInNmeCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDgxCisjOiBidWlsdGluL2xvZy5jOjExMjEKIG1zZ2lkICJ1c2UgPHNmeD4gaW5zdGVhZCBvZiAnLnBhdGNoJyIKIG1zZ3N0ciAiYW52w6RuZCA8c2Z4PiBpc3TDpGxsZXQgZsO2ciBcIi5wYXRjaFwiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODMKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMwogbXNnaWQgInN0YXJ0IG51bWJlcmluZyBwYXRjaGVzIGF0IDxuPiBpbnN0ZWFkIG9mIDEiCiBtc2dzdHIgImLDtnJqYSBudW1yZXJhIHBhdGNoYXIgcMOlIDxuPiBpc3TDpGxsZXQgZsO2ciAxIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODUKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNQorbXNnaWQgIm1hcmsgdGhlIHNlcmllcyBhcyBOdGggcmUtcm9sbCIKK21zZ3N0ciAibWFya2VyYSBzZXJpZW4gc29tIE46dGUgZsO2cnPDtmsiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNwogbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKIG1zZ3N0ciAiQW52w6RuZCBbPHByZWZpeD5dIGlzdMOkbGxldCBmw7ZyIFtQQVRDSF0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA4OAorIzogYnVpbHRpbi9sb2cuYzoxMTMwCiBtc2dpZCAic3RvcmUgcmVzdWx0aW5nIGZpbGVzIGluIDxkaXI+IgogbXNnc3RyICJzcGFyYSBmaWxlcm5hIGkgPGthdGFsb2c+IgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTEKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMwogbXNnaWQgImRvbid0IHN0cmlwL2FkZCBbUEFUQ0hdIgogbXNnc3RyICJ0YSBpbnRlIGJvcnQgZWxsZXIgbMOkZ2cgdGlsbCBbUEFUQ0hdIgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTQKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzNgogbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCiBtc2dzdHIgInNrcml2IGludGUgYmluw6RyYSBkaWZmYXIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA5NgorIzogYnVpbHRpbi9sb2cuYzoxMTM4CiBtc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgogbXNnc3RyICJ0YSBpbnRlIG1lZCBwYXRjaGFyIHNvbSBtb3RzdmFyYXIgZW4gdXBwc3Ryw7Ztc2luY2hlY2tuaW5nIgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTgKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MAogbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKIG1zZ3N0ciAidmlzYSBwYXRjaGZvcm1hdCBpc3TDpGxsZXQgZsO2ciBzdGFuZGFyZCAocGF0Y2ggKyBzdGF0KSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAwCisjOiBidWlsdGluL2xvZy5jOjExNDIKIG1zZ2lkICJNZXNzYWdpbmciCiBtc2dzdHIgIkUtcG9zdCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTAxCisjOiBidWlsdGluL2xvZy5jOjExNDMKIG1zZ2lkICJoZWFkZXIiCiBtc2dzdHIgImh1dnVkIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NAogbXNnaWQgImFkZCBlbWFpbCBoZWFkZXIiCiBtc2dzdHIgImzDpGdnIHRpbGwgZS1wb3N0aHV2dWQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMyBidWlsdGluL2xvZy5jOjExMDUKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKIG1zZ2lkICJlbWFpbCIKIG1zZ3N0ciAiZXBvc3QiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMworIzogYnVpbHRpbi9sb2cuYzoxMTQ1CiBtc2dpZCAiYWRkIFRvOiBoZWFkZXIiCiBtc2dzdHIgIkzDpGdnIHRpbGwgbW90dGFnYXJodXZ1ZCAoXCJUbzpcIikiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwNQorIzogYnVpbHRpbi9sb2cuYzoxMTQ3CiBtc2dpZCAiYWRkIENjOiBoZWFkZXIiCiBtc2dzdHIgIkzDpGdnIHRpbGwga29waWVodXZ1ZCAoXCJDYzpcIikiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwNworIzogYnVpbHRpbi9sb2cuYzoxMTQ5CiBtc2dpZCAibWVzc2FnZS1pZCIKIG1zZ3N0ciAibWVkZGVsYW5kZS1pZCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTA4CisjOiBidWlsdGluL2xvZy5jOjExNTAKIG1zZ2lkICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iCiBtc2dzdHIgIkfDtnIgZGV0IGbDtnJzdGEgYnJldmV0IGV0dCBzdmFyIHRpbGwgPG1lZGRlbGFuZGUtaWQ+IgogCi0jOiBidWlsdGluL2xvZy5jOjExMDkgYnVpbHRpbi9sb2cuYzoxMTEyCisjOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0CiBtc2dpZCAiYm91bmRhcnkiCiBtc2dzdHIgImdyw6RucyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTEwCisjOiBidWlsdGluL2xvZy5jOjExNTIKIG1zZ2lkICJhdHRhY2ggdGhlIHBhdGNoIgogbXNnc3RyICJiaWZvZ2EgcGF0Y2hlbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTEzCisjOiBidWlsdGluL2xvZy5jOjExNTUKIG1zZ2lkICJpbmxpbmUgdGhlIHBhdGNoIgogbXNnc3RyICJnw7ZyIHBhdGNoZW4gZXR0IGlubGluZS1vYmpla3QiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExNworIzogYnVpbHRpbi9sb2cuYzoxMTU5CiBtc2dpZCAiZW5hYmxlIG1lc3NhZ2UgdGhyZWFkaW5nLCBzdHlsZXM6IHNoYWxsb3csIGRlZXAiCiBtc2dzdHIgImFrdGl2ZXJhIGJyZXZ0csOlZG5pbmcsIHR5cGVyOiBzaGFsbG93LCBkZWVwIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTkKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2MQogbXNnaWQgInNpZ25hdHVyZSIKIG1zZ3N0ciAic2lnbmF0dXIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMAorIzogYnVpbHRpbi9sb2cuYzoxMTYyCiBtc2dpZCAiYWRkIGEgc2lnbmF0dXJlIgogbXNnc3RyICJsw6RnZyB0aWxsIHNpZ25hdHVyIgogCi0jOiBidWlsdGluL2xvZy5jOjExMjIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NAogbXNnaWQgImRvbid0IHByaW50IHRoZSBwYXRjaCBmaWxlbmFtZXMiCiBtc2dzdHIgInZpc2EgaW50ZSBmaWxuYW1uIGbDtnIgcGF0Y2hhciIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTYzCi0jLCBjLWZvcm1hdAotbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgotbXNnc3RyICJmZWxha3RpZyBpbmNoZWNrYXJpbmZvcm1hdGlvbiAlcyIKLQotIzogYnVpbHRpbi9sb2cuYzoxMjA4CisjOiBidWlsdGluL2xvZy5jOjEyNDgKIG1zZ2lkICItbiBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCiBtc2dzdHIgIi1uIG9jaCAtayBrYW4gaW50ZSBhbnbDpG5kYXMgc2FtdGlkaWd0LiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjEwCisjOiBidWlsdGluL2xvZy5jOjEyNTAKIG1zZ2lkICItLXN1YmplY3QtcHJlZml4IGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLS1zdWJqZWN0LXByZWZpeCBvY2ggLWsga2FuIGludGUgYW52w6RuZGFzIHNhbXRpZGlndC4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxOAorIzogYnVpbHRpbi9sb2cuYzoxMjU4CiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAia2FuIGludGUgYW52w6RuZGEgLS1uYW1lLW9ubHkiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIyMAorIzogYnVpbHRpbi9sb2cuYzoxMjYwCiBtc2dpZCAiLS1uYW1lLXN0YXR1cyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICJrYW4gaW50ZSBhbnbDpG5kYSAtLW5hbWUtc3RhdHVzIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMjIKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MgogbXNnaWQgIi0tY2hlY2sgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAia2FuIGludGUgYW52w6RuZGEgLS1jaGVjayIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjQ1CisjOiBidWlsdGluL2xvZy5jOjEyODUKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAic3RhbmRhcmQgdXQsIGVsbGVyIGthdGFsb2csIHZpbGtlbiBza2FsbCBkZXQgdmFyYT8iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI0NworIzogYnVpbHRpbi9sb2cuYzoxMjg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5ICclcyciCiBtc2dzdHIgIkt1bmRlIGludGUgc2thcGEga2F0YWxvZ2VuIFwiJXNcIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDAwCisjOiBidWlsdGluL2xvZy5jOjE0MzUKIG1zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIG91dHB1dCBmaWxlcyIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIHNrYXBhIHV0ZGF0YWZpbGVyIgogCi0jOiBidWlsdGluL2xvZy5jOjE0NDkKKyM6IGJ1aWx0aW4vbG9nLmM6MTQ4NAogbXNnaWQgImdpdCBjaGVycnkgWy12XSBbPHVwc3RyZWFtPiBbPGhlYWQ+IFs8bGltaXQ+XV1dIgogbXNnc3RyICJnaXQgY2hlcnJ5IFstdl0gWzx1cHBzdHLDtm0+IFs8aHV2dWQ+IFs8Z3LDpG5zPl1dXSIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTA0CisjOiBidWlsdGluL2xvZy5jOjE1MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBmaW5kIGEgdHJhY2tlZCByZW1vdGUgYnJhbmNoLCBwbGVhc2Ugc3BlY2lmeSA8dXBzdHJlYW0+IG1hbnVhbGx5LlxuIgogbXNnc3RyICJLdW5kZSBpbnRlIGhpdHRhIGVuIHNww6VyYWQgZmrDpHJyZ3JlbiwgYW5nZSA8dXBwc3Ryw7ZtPiBtYW51ZWxsdC5cbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTE3IGJ1aWx0aW4vbG9nLmM6MTUxOSBidWlsdGluL2xvZy5jOjE1MzEKKyM6IGJ1aWx0aW4vbG9nLmM6MTU1MiBidWlsdGluL2xvZy5jOjE1NTQgYnVpbHRpbi9sb2cuYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gY29tbWl0ICVzIgogbXNnc3RyICJPa8OkbmQgaW5jaGVja25pbmcgJXMiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0MDgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0MDIKIG1zZ2lkICJnaXQgbHMtZmlsZXMgW29wdGlvbnNdIFs8ZmlsZT4uLi5dIgogbXNnc3RyICJnaXQgbHMtZmlsZXMgW2ZsYWdnb3JdIFs8ZmlsPi4uLl0iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTkKIG1zZ2lkICJpZGVudGlmeSB0aGUgZmlsZSBzdGF0dXMgd2l0aCB0YWdzIgogbXNnc3RyICJpZGVudGlmaWVyYSBmaWxzdGF0dXMgbWVkIHRhZ2dhciIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MQogbXNnaWQgInVzZSBsb3dlcmNhc2UgbGV0dGVycyBmb3IgJ2Fzc3VtZSB1bmNoYW5nZWQnIGZpbGVzIgogbXNnc3RyICJhbnbDpG5kIHNtw6UgYm9rc3TDpHZlciBmw7ZyIFwiYW50YSBvZsO2csOkbmRyYWRlXCItZmlsZXIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKIG1zZ2lkICJzaG93IGNhY2hlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IChkZWZhdWx0KSIKIG1zZ3N0ciAidmlzYSBjYWNoYWRlIGZpbGVyIGkgdXRkYXRhIChzdGFuZGFyZCkiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjUKIG1zZ2lkICJzaG93IGRlbGV0ZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAidmlzYSBib3J0dGFnbmEgZmlsZXIgaSB1dGRhdGEiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzEKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjcKIG1zZ2lkICJzaG93IG1vZGlmaWVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgInZpc2EgbW9kaWZpZXJhZGUgZmlsZXIgaSB1dGRhdGEiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzMKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKIG1zZ2lkICJzaG93IG90aGVyIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgInZpc2EgYW5kcmEgZmlsZXIgaSB1dGRhdGEiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzUKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzEKIG1zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAidmlzYSBpZ25vcmVyYWRlIGZpbGVyIGkgdXRkYXRhIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc0CiBtc2dpZCAic2hvdyBzdGFnZWQgY29udGVudHMnIG9iamVjdCBuYW1lIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgInZpc2Ega8O2YXQgaW5uZWjDpWxscyBvYmpla3RuYW1uIGkgdXRkYXRhIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDgwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2CiBtc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKIG1zZ3N0ciAidmlzYSBmaWxlciBpIGZpbHN5c3RlbWV0IHNvbSBiZWjDtnZlciB0YXMgYm9ydCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3OAogbXNnaWQgInNob3cgJ290aGVyJyBkaXJlY3RvcmllcycgbmFtZSBvbmx5IgogbXNnc3RyICJ2aXNhIGVuZGFzdCBuYW1uIGbDtnIgXCJhbmRyYVwiIGthdGFsb2dlciIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQogbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCiBtc2dzdHIgInZpc2EgaW50ZSB0b21tYSBrYXRhbG9nZXIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODQKIG1zZ2lkICJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgInZpc2EgZWogc2FtbWFuc2xhZ25hIGZpbGVyIGkgdXRkYXRhIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg2CiBtc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCiBtc2dzdHIgInZpc2EgXCJyZXNvbHZlLXVuZG9cIi1pbmZvcm1hdGlvbiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4OAogbXNnaWQgInNraXAgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIKIG1zZ3N0ciAiaG9wcGEgw7Z2ZXIgZmlsZXIgc29tIG1vdHN2YXJhciBtw7Zuc3RlciIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MQogbXNnaWQgImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iCiBtc2dzdHIgImV4a2x1ZGVyYSBtw7Zuc3RlciBzb20gbMOkc2VzIGZyw6VuIDxmaWw+IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0CiBtc2dpZCAicmVhZCBhZGRpdGlvbmFsIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBwYXR0ZXJucyBpbiA8ZmlsZT4iCiBtc2dzdHIgImzDpHMgeXR0ZXJsaWdhcmUgcGVyLWthdGFsb2ctZXhrbHVkZXJpbmdzbcO2bnN0ZXIgZnLDpW4gPGZpbD4iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDAKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTYKIG1zZ2lkICJhZGQgdGhlIHN0YW5kYXJkIGdpdCBleGNsdXNpb25zIgogbXNnc3RyICJsw6RnZyB0aWxsIGdpdDpzIHN0YW5kYXJkZXhrbHVkZXJpbmdhciIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OQogbXNnaWQgIm1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCB0b3AgZGlyZWN0b3J5IgogbXNnc3RyICJnw7ZyIHV0ZGF0YSByZWxhdGl2IHRpbGwgcHJvamVrdGV0cyB0b3Bwa2F0YWxvZyIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNgorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMgogbXNnaWQgImlmIGFueSA8ZmlsZT4gaXMgbm90IGluIHRoZSBpbmRleCwgdHJlYXQgdGhpcyBhcyBhbiBlcnJvciIKIG1zZ3N0ciAib20gZW4gPGZpbD4gaW50ZSDDpHIgaW5kZXhldCwgYmV0cmFrdGEgZGV0IHNvbSBldHQgZmVsIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAzCiBtc2dpZCAidHJlZS1pc2giCiBtc2dzdHIgInRyw6RkLWlndCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOAorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNAogbXNnaWQgInByZXRlbmQgdGhhdCBwYXRocyByZW1vdmVkIHNpbmNlIDx0cmVlLWlzaD4gYXJlIHN0aWxsIHByZXNlbnQiCiBtc2dzdHIgImzDpXRzYXMgYXR0IHPDtmt2w6RnYXIgYm9ydHRhZ25hIHNlZGFuIDx0csOkZC1pZ3Q+IGZvcnRmYXJhbmRlIGZpbm5zIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTEwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CiBtc2dpZCAic2hvdyBkZWJ1Z2dpbmcgZGF0YSIKIG1zZ3N0ciAidmlzYSBmZWxzw7ZrbmluZ3N1dGRhdGEiCiAKQEAgLTU3MzIsMTcxICs2MTk4LDE3NiBAQAogbXNnaWQgImFib3J0IGlmIGZhc3QtZm9yd2FyZCBpcyBub3QgcG9zc2libGUiCiBtc2dzdHIgImF2YnJ5dCBvbSBzbmFiYnNwb2xuaW5nIGludGUgw6RyIG3DtmpsaWciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDIgYnVpbHRpbi9ub3Rlcy5jOjg3MCBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9tZXJnZS5jOjIwMworbXNnaWQgIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIKK21zZ3N0ciAiQmVrcsOkZnRhIGF0dCBkZW4gbmFtbmdpdm5hIGluY2hlY2tuaW5nZW4gaGFyIGVuIGdpbHRpZyBHUEctc2lnbmF0dXIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQgYnVpbHRpbi9ub3Rlcy5jOjg2NiBidWlsdGluL3JldmVydC5jOjExMgogbXNnaWQgInN0cmF0ZWd5IgogbXNnc3RyICJzdHJhdGVnaSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwMworIzogYnVpbHRpbi9tZXJnZS5jOjIwNQogbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKIG1zZ3N0ciAic2FtbWFuc2xhZ25pbnNzdHJhdGVnaSBhdHQgYW52w6RuZGEiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKIG1zZ2lkICJvcHRpb249dmFsdWUiCiBtc2dzdHIgImFsdGVybmF0aXY9dsOkcmRlIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA1CisjOiBidWlsdGluL21lcmdlLmM6MjA3CiBtc2dpZCAib3B0aW9uIGZvciBzZWxlY3RlZCBtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAiYWx0ZXJuYXRpdiBmw7ZyIHZhbGQgc2FtbWFuc2xhZ25pbmdzc3RyYXRlZ2kiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKIG1zZ2lkICJtZXJnZSBjb21taXQgbWVzc2FnZSAoZm9yIGEgbm9uLWZhc3QtZm9yd2FyZCBtZXJnZSkiCiBtc2dzdHIgImluY2hlY2tuaW5nc21lZGRlbGFuZGUgZsO2ciAoaWNrZSBzbmFiYnNwb2xhbmRlKSBzYW1tYW5zbGFnbmluZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIxMQorIzogYnVpbHRpbi9tZXJnZS5jOjIxMwogbXNnaWQgImFib3J0IHRoZSBjdXJyZW50IGluLXByb2dyZXNzIG1lcmdlIgogbXNnc3RyICJhdmJyeXQgZGVuIHDDpWfDpWVuZGUgc2FtbWFuc2xhZ25pbmdlbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0MAorIzogYnVpbHRpbi9tZXJnZS5jOjI0MgogbXNnaWQgImNvdWxkIG5vdCBydW4gc3Rhc2guIgogbXNnc3RyICJrdW5kZSBrw7ZyYSBzdGFzaC4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDcKIG1zZ2lkICJzdGFzaCBmYWlsZWQiCiBtc2dzdHIgInN0YXNoIG1pc3NseWNrYWRlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MAorIzogYnVpbHRpbi9tZXJnZS5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICJpbnRlIGV0dCBnaWx0aWd0IG9iamVrdDogJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNjkgYnVpbHRpbi9tZXJnZS5jOjI4NgorIzogYnVpbHRpbi9tZXJnZS5jOjI3MSBidWlsdGluL21lcmdlLmM6Mjg4CiBtc2dpZCAicmVhZC10cmVlIGZhaWxlZCIKIG1zZ3N0ciAicmVhZC10cmVlIG1pc3NseWNrYWRlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMxNgorIzogYnVpbHRpbi9tZXJnZS5jOjMxOAogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIgKGluZ2V0IGF0dCBwbGF0dGEgdGlsbCkiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMjkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCAtLSBub3QgdXBkYXRpbmcgSEVBRFxuIgogbXNnc3RyICJUaWxscGxhdHRuaW5nc2luY2hlY2tuaW5nIC0tIHVwcGRhdGVyYXIgaW50ZSBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKIG1zZ2lkICJXcml0aW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIlNrcml2ZXIgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MworIzogYnVpbHRpbi9tZXJnZS5jOjM2NQogbXNnaWQgIkZpbmlzaGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICJBdnNsdXRhciBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6Mzg2CisjOiBidWlsdGluL21lcmdlLmM6Mzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIG1lc3NhZ2UgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiSW5nZXQgc2FtbWFuc2xhZ25pbmdzbWVkZGVsYW5kZSAtLSB1cHBkYXRlcmFyIGludGUgSEVBRFxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6NDM2CisjOiBidWlsdGluL21lcmdlLmM6NDM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCiBtc2dzdHIgIlwiJXNcIiB2ZXJrYXIgaW50ZSBwZWthIHDDpSBlbiBpbmNoZWNrbmluZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjUzNQorIzogYnVpbHRpbi9tZXJnZS5jOjU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucyBzdHJpbmc6ICVzIgogbXNnc3RyICJGZWxha3RpZyBicmFuY2guJXMubWVyZ2VvcHRpb25zLXN0csOkbmc6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjI4CisjOiBidWlsdGluL21lcmdlLmM6NjQzCiBtc2dpZCAiZ2l0IHdyaXRlLXRyZWUgZmFpbGVkIHRvIHdyaXRlIGEgdHJlZSIKIG1zZ3N0ciAiZ2l0IHdyaXRlLXRyZWUgbWlzc2x5Y2thZGVzIHNrcml2YSBldHQgdHLDpGQiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2NTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NzEKIG1zZ2lkICJOb3QgaGFuZGxpbmcgYW55dGhpbmcgb3RoZXIgdGhhbiB0d28gaGVhZHMgbWVyZ2UuIgogbXNnc3RyICJIYW50ZXJhciBpbnRlIG7DpWdvdCBhbm5hdCDDpG4gZW4gc2FtbWFuc2xhZ25pbmcgYXYgdHbDpSBodXZ1ZGVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY3MAorIzogYnVpbHRpbi9tZXJnZS5jOjY4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogbXNnc3RyICJGZWxha3RpZyBmbGFnZ2EgZsO2ciBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2ODQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlICVzIgogbXNnc3RyICJrdW5kZSBpbnRlIHNrcml2YSAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc3MworIzogYnVpbHRpbi9tZXJnZS5jOjc4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBmcm9tICclcyciCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkc2EgZnLDpW4gXCIlc1wiIgogCi0jOiBidWlsdGluL21lcmdlLmM6NzgyCisjOiBidWlsdGluL21lcmdlLmM6Nzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBjb21taXR0aW5nIG1lcmdlOyB1c2UgJ2dpdCBjb21taXQnIHRvIGNvbXBsZXRlIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAiIgogIkNoZWNrYXIgaW50ZSBpbiBzYW1tYW5zbGFnbmluZ2VuOyBhbnbDpG5kIFwiZ2l0IGNvbW1pdFwiIGbDtnIgYXR0IHNsdXRmw7ZyYSAiCiAiZGVuLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6Nzg4CisjOiBidWlsdGluL21lcmdlLmM6ODAzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgYSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoeSB0aGlzIG1lcmdlIGlzIG5lY2Vzc2FyeSxcbiIKICJlc3BlY2lhbGx5IGlmIGl0IG1lcmdlcyBhbiB1cGRhdGVkIHVwc3RyZWFtIGludG8gYSB0b3BpYyBicmFuY2guXG4iCiAiXG4iCi0iTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHNcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHNcbiIKICJ0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCiAiQW5nZSBldHQgaW5jaGVja25pbmdzbWVkZGVsYW5kZSBmw7ZyIGF0dCBmw7Zya2xhcmEgdmFyZsO2ciBzYW1tYW5zbGFnbmluZ2VuXG4iCiAiw6RyIG7DtmR2w6RuZGlnLCBzcGVjaWVsbHQgb20gZGVuIHNsw6VyIGluIGVuIHVwcGRhdGVyYWQgdXBwc3Ryw7ZtIGkgZW5cbiIKICJ0ZW1hZ3Jlbi5cbiIKICJcbiIKLSJSYWRlciBzb20gaW5sZWRzIG1lZCBcIiNcIiBrb21tZXIgaWdub3JlcmFzLCBvY2ggZXR0IHRvbXQgbWVkZGVsYW5kZVxuIgorIlJhZGVyIHNvbSBpbmxlZHMgbWVkIFwiJWNcIiBrb21tZXIgaWdub3JlcmFzLCBvY2ggZXR0IHRvbXQgbWVkZGVsYW5kZVxuIgogImF2YnJ5dGVyIGluY2hlY2tuaW5nZW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjcKIG1zZ2lkICJFbXB0eSBjb21taXQgbWVzc2FnZS4iCiBtc2dzdHIgIlRvbXQgaW5jaGVja25pbmdzbWVkZGVsYW5kZS4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICJVbmRlcmJhcnQuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4ODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIGZhaWxlZDsgZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBjb21taXQgdGhlIHJlc3VsdC5cbiIKIG1zZ3N0ciAiIgogIkt1bmRlIGludGUgc2zDpSBpaG9wIGF1dG9tYXRpc2t0OyBmaXhhIGtvbmZsaWt0ZXIgb2NoIGNoZWNrYSBpbiByZXN1bHRhdGV0LlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTA1CisjOiBidWlsdGluL21lcmdlLmM6OTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICJcIiVzXCIgw6RyIGludGUgZW4gaW5jaGVja25pbmciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NDYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjEKIG1zZ2lkICJObyBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIkludGUgcMOlIG7DpWdvbiBncmVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk0OAorIzogYnVpbHRpbi9tZXJnZS5jOjk2MwogbXNnaWQgIk5vIHJlbW90ZSBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiSW5nZW4gZmrDpHJyIGbDtnIgYWt0dWVsbCBncmVuLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk1MAorIzogYnVpbHRpbi9tZXJnZS5jOjk2NQogbXNnaWQgIk5vIGRlZmF1bHQgdXBzdHJlYW0gZGVmaW5lZCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiSW5nZW4gc3RhbmRhcmR1cHBzdHLDtm0gYW5naXZlbiBmw7ZyIGFrdHVlbGwgZ3Jlbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NTUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiSW5nZW4gZmrDpHJyc3DDpXJhbmRlIGdyZW4gZsO2ciAlcyBmcsOlbiAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNDIgYnVpbHRpbi9tZXJnZS5jOjExOTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDU3IGJ1aWx0aW4vbWVyZ2UuYzoxMjE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIC0gbm90IHNvbWV0aGluZyB3ZSBjYW4gbWVyZ2UiCiBtc2dzdHIgIiVzIC0gaW50ZSBuw6Vnb3Qgdmkga2FuIHNsw6UgaWhvcCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTI1CiBtc2dpZCAiVGhlcmUgaXMgbm8gbWVyZ2UgdG8gYWJvcnQgKE1FUkdFX0hFQUQgbWlzc2luZykuIgogbXNnc3RyICJEZXQgZmlubnMgaW5nZW4gc2FtbWFuc2xhZ25pbmcgYXR0IGF2YnJ5dGEgKE1FUkdFX0hFQUQgc2FrbmFzKS4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTI2IGdpdC1wdWxsLnNoOjMxCisjOiBidWlsdGluL21lcmdlLmM6MTE0MSBnaXQtcHVsbC5zaDozMQogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtNTkwNCwxMSArNjM3NSwxMSBAQAogIkR1IGhhciBpbnRlIGF2c2x1dGF0IHNhbW1hbnNsYWduaW5nZW4gKE1FUkdFX0hFQUQgZmlubnMpLlxuIgogIkNoZWNrYSBpbiBkaW5hIMOkbmRyaW5nYXIgaW5uYW4gZHUga2FuIHNsw6UgaWhvcC4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTI5IGdpdC1wdWxsLnNoOjM0CisjOiBidWlsdGluL21lcmdlLmM6MTE0NCBnaXQtcHVsbC5zaDozNAogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiRHUgaGFyIGludGUgYXZzbHV0YXQgc2FtbWFuc2xhZ25pbmdlbiAoTUVSR0VfSEVBRCBmaW5ucykuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTEzMworIzogYnVpbHRpbi9tZXJnZS5jOjExNDgKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKQEAgLTU5MTYsNzkgKzYzODcsMTAyIEBACiAiRHUgaGFyIGludGUgYXZzbHV0YXQgZGluIFwiY2hlcnJ5LXBpY2tcIiAoQ0hFUlJZX1BJQ0tfSEVBRCBmaW5ucykuXG4iCiAiQ2hlY2thIGluIGRpbmEgw6RuZHJpbmdhciBpbm5hbiBkdSBrYW4gc2zDpSBpaG9wLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTUxCiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuIgogbXNnc3RyICJEdSBoYXIgaW50ZSBhdnNsdXRhdCBkaW4gXCJjaGVycnktcGlja1wiIChDSEVSUllfUElDS19IRUFEIGZpbm5zKS4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ1CisjOiBidWlsdGluL21lcmdlLmM6MTE2MAogbXNnaWQgIllvdSBjYW5ub3QgY29tYmluZSAtLXNxdWFzaCB3aXRoIC0tbm8tZmYuIgogbXNnc3RyICJEdSBrYW4gaW50ZSBrb21iaW5lcmEgLS1zcXVhc2ggbWVkIC0tbm8tZmYuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE1MAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCiBtc2dzdHIgIkR1IGthbiBpbnRlIGtvbWJpbmVyYSAtLW5vLWZmIG1lZCAtLWZmLW9ubHkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE1NworIzogYnVpbHRpbi9tZXJnZS5jOjExNzIKIG1zZ2lkICJObyBjb21taXQgc3BlY2lmaWVkIGFuZCBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbSBub3Qgc2V0LiIKIG1zZ3N0ciAiSW5nZW4gaW5jaGVja25pbmcgYW5naXZlbiBvY2ggbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gw6RyIGVqIHNhdHQuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE4OQorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDQKIG1zZ2lkICJDYW4gbWVyZ2Ugb25seSBleGFjdGx5IG9uZSBjb21taXQgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLYW4gZW5kYXN0IHNsw6UgaWhvcCBlbiBlbmRhIGluY2hlY2tuaW5nIGkgZXR0IHRvbXQgaHV2dWQuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE5MgorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDcKIG1zZ2lkICJTcXVhc2ggY29tbWl0IGludG8gZW1wdHkgaGVhZCBub3Qgc3VwcG9ydGVkIHlldCIKIG1zZ3N0ciAiU3TDtmRlciBpbnRlIGVuIHRpbGxwbGF0dG5pbmdzaW5jaGVja25pbmcgcMOlIGV0dCB0b210IGh1dnVkIMOkbm51IgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE5NAorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDkKIG1zZ2lkICJOb24tZmFzdC1mb3J3YXJkIGNvbW1pdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGludG8gYW4gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiSWNrZS1zbmFiYnNwb2xhZCBpbmNoZWNrbmluZyBrYW4gaW50ZSBhbnbDpG5kYXMgbWVkIGV0dCB0b210IGh1dnVkIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTMwOQorIzogYnVpbHRpbi9tZXJnZS5jOjEyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKK21zZ3N0ciAiIgorIkluY2hlY2tuaW5nZW4gJXMgaGFyIGVuIG9iZXRyb2RkIEdQRy1zaWduYXR1ciBzb20gcMOlc3TDpXMgdmFyYSBnam9yZCBhdiAlcy4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBiYWQgR1BHIHNpZ25hdHVyZSBhbGxlZ2VkbHkgYnkgJXMuIgorbXNnc3RyICIiCisiSW5jaGVja25pbmdlbiAlcyBoYXIgZW4gZmVsYWt0aWcgR1BHLXNpZ25hdHVyIHNvbSBww6VzdMOlcyB2YXJhIGdqb3JkIGF2ICVzLiIKKworIy4gJ04nCisjOiBidWlsdGluL21lcmdlLmM6MTI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgorbXNnc3RyICJJbmNoZWNrbmluZyAlcyBoYXIgaW50ZSBuw6Vnb24gR1BHLXNpZ25hdHVyLiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGdvb2QgR1BHIHNpZ25hdHVyZSBieSAlc1xuIgorbXNnc3RyICJJbmNoZWNrbmluZ2VuICVzIGhhciBlbiBrb3JyZWt0IEdQRy1zaWduYXR1ciBhdiAlc1xuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyAlcy4uJXNcbiIKIG1zZ3N0ciAiVXBwZGF0ZXJhciAlcy4uJXNcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEzNDgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyeWluZyByZWFsbHkgdHJpdmlhbCBpbi1pbmRleCBtZXJnZS4uLlxuIgogbXNnc3RyICJGw7Zyc8O2a2VyIHJpa3RpZ3QgZW5rZWwgc2FtbWFuc2xhZ25pbmcgaSBpbmRleGV0Li4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU1CisjOiBidWlsdGluL21lcmdlLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICJOZWouXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzg3CisjOiBidWlsdGluL21lcmdlLmM6MTQzNgogbXNnaWQgIk5vdCBwb3NzaWJsZSB0byBmYXN0LWZvcndhcmQsIGFib3J0aW5nLiIKIG1zZ3N0ciAiS2FuIGludGUgc25hYmJzcG9sYSwgYXZicnl0ZXIuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQxMCBidWlsdGluL21lcmdlLmM6MTQ4OQorIzogYnVpbHRpbi9tZXJnZS5jOjE0NTkgYnVpbHRpbi9tZXJnZS5jOjE1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmV3aW5kaW5nIHRoZSB0cmVlIHRvIHByaXN0aW5lLi4uXG4iCiBtc2dzdHIgIsOFdGVyc3BvbGFyIHRyw6RkZXQgdGlsbCBvcsO2cnQuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyeWluZyBtZXJnZSBzdHJhdGVneSAlcy4uLlxuIgogbXNnc3RyICJGw7Zyc8O2a2VyIHNhbW1hbnNsYWduaW5zc3RyYXRlZ2luICVzLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDgwCisjOiBidWlsdGluL21lcmdlLmM6MTUyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBzdHJhdGVneSBoYW5kbGVkIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAiSW5nZW4gc2FtbWFuc2xhZ25pbmdzc3RyYXRlZ2kgaGFudGVyYWRlIHNhbW1hbnNsYWduaW5nZW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDgyCisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAiU2FtbWFuc2xhZ25pbmcgbWVkIHN0cmF0ZWdpbiAlcyBtaXNzbHlja2FkZXMuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDkxCisjOiBidWlsdGluL21lcmdlLmM6MTU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2luZyB0aGUgJXMgdG8gcHJlcGFyZSByZXNvbHZpbmcgYnkgaGFuZC5cbiIKIG1zZ3N0ciAiQW52w6RuZGVyICVzIGbDtnIgYXR0IGbDtnJiZXJlZGEgbMO2c25pbmcgZsO2ciBoYW5kLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTUwMworIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKIG1zZ3N0ciAiIgpAQCAtNjMwMywxMzkgKzY3OTcsMTM0IEBACiBtc2dpZCAiZ2l0IG5vdGVzIGdldC1yZWYiCiBtc2dzdHIgImdpdCBub3RlcyBnZXQtcmVmIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTQyCisjOiBidWlsdGluL25vdGVzLmM6MTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGFydCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIHN0YXJ0YSBcInNob3dcIiBmw7ZyIG9iamVrdGV0IFwiJXNcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE0OAotbXNnaWQgImNhbid0IGZkb3BlbiAnc2hvdycgb3V0cHV0IGZkIgotbXNnc3RyICJrdW5kZSBpbnRlIMO2cHBuYSAoZmRvcGVuKSBcInNob3dcIi11dGRhdGEtZmlsaGFuZHRhZyIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNDMKK21zZ2lkICJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IgorbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIHV0ZGF0YSBmcsOlbiBcInNob3dcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE1OAotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgotbXNnc3RyICJrdW5kZSBpbnRlIHN0w6RuZ2EgcsO2cmV0IHRpbGwgXCJzaG93XCIgZsO2ciBvYmpla3RldCBcIiVzXCIiCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNjEKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGZpbmlzaCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIGF2c2x1dGEgXCJzaG93XCIgZsO2ciBvYmpla3RldCBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNzggYnVpbHRpbi90YWcuYzozNDcKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNjkgYnVpbHRpbi90YWcuYzozNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBmaWxlICclcyciCiBtc2dzdHIgImt1bmRlIGludGUgc2thcGEgZmlsZW4gXCIlc1wiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTkyCisjOiBidWlsdGluL25vdGVzLmM6MTg4CiBtc2dpZCAiUGxlYXNlIHN1cHBseSB0aGUgbm90ZSBjb250ZW50cyB1c2luZyBlaXRoZXIgLW0gb3IgLUYgb3B0aW9uIgogbXNnc3RyICJBbmdlIGlubmVow6VsbCBmw7ZyIGFudGVja25pbmdlbiBtZWQgYW50aW5nZW4gLW0gZWxsZXIgLUYiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTMgYnVpbHRpbi9ub3Rlcy5jOjk3NgorIzogYnVpbHRpbi9ub3Rlcy5jOjIwOSBidWlsdGluL25vdGVzLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nIG5vdGUgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICJUYXIgYm9ydCBhbnRlY2tuaW5nIGbDtnIgb2JqZWt0ZXQgJXNcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxOAorIzogYnVpbHRpbi9ub3Rlcy5jOjIxNAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBub3RlIG9iamVjdCIKIG1zZ3N0ciAia3VuZGUgaW50ZSBza3JpdmEgYW50ZWNrbmluZ3NvYmpla3QiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMjAKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIG5vdGUgY29udGVudHMgaGFzIGJlZW4gbGVmdCBpbiAlcyIKIG1zZ3N0ciAiQW50ZWNrbmluZ2VucyBpbm5laMOlbGwgaGFyIGzDpG1uYXRzIGt2YXIgaSAlcyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1NCBidWlsdGluL3RhZy5jOjU0MgorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICJrdW5kZSBpbnRlIGzDpHNhIFwiJXNcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1NiBidWlsdGluL3RhZy5jOjU0NQorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MiBidWlsdGluL3RhZy5jOjU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiBvciByZWFkICclcyciCiBtc2dzdHIgImt1bmRlIGludGUgw7ZwcG5hIGVsbGVyIGzDpHNhIFwiJXNcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI3NSBidWlsdGluL25vdGVzLmM6NDQ4IGJ1aWx0aW4vbm90ZXMuYzo0NTAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MTAgYnVpbHRpbi9ub3Rlcy5jOjU2NCBidWlsdGluL25vdGVzLmM6NjQ3Ci0jOiBidWlsdGluL25vdGVzLmM6NjUyIGJ1aWx0aW4vbm90ZXMuYzo3MjcgYnVpbHRpbi9ub3Rlcy5jOjc2OQotIzogYnVpbHRpbi9ub3Rlcy5jOjk3MSBidWlsdGluL3Jlc2V0LmM6MjkzIGJ1aWx0aW4vdGFnLmM6NTU4CisjOiBidWlsdGluL25vdGVzLmM6MjcxIGJ1aWx0aW4vbm90ZXMuYzo0NDQgYnVpbHRpbi9ub3Rlcy5jOjQ0NgorIzogYnVpbHRpbi9ub3Rlcy5jOjUwNiBidWlsdGluL25vdGVzLmM6NTYwIGJ1aWx0aW4vbm90ZXMuYzo2NDMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2NDggYnVpbHRpbi9ub3Rlcy5jOjcyMyBidWlsdGluL25vdGVzLmM6NzY1CisjOiBidWlsdGluL25vdGVzLmM6OTY3IGJ1aWx0aW4vdGFnLmM6NTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZWYuIgogbXNnc3RyICJLdW5kZSBpbnRlIHNsw6UgdXBwIFwiJXNcIiBzb20gZW4gZ2lsdGlnIHJlZmVyZW5zLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI3OAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJyVzJy4iCiBtc2dzdHIgIkt1bmRlIGludGUgbMOkc2Egb2JqZWt0ZXQgXCIlc1wiLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMwMgorIzogYnVpbHRpbi9ub3Rlcy5jOjI5OAogbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKIG1zZ3N0ciAiS2FuIGludGUgY2hlY2thIGluIG9pbml0aWVyYXQvb3JlZmVyZXJhdCBhbnRlY2tuaW5nc3Ryw6RkIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzQzCisjOiBidWlsdGluL25vdGVzLmM6MzM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIKIG1zZ3N0ciAiRmVsYWt0aWd0IHbDpHJkZSBmw7ZyIG5vdGVzLnJld3JpdGVNb2RlOiAnJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUzCisjOiBidWlsdGluL25vdGVzLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgogbXNnc3RyICJWw6RncmFyIHNrcml2YSDDtnZlciBhbnRlY2tuaW5nYXIgaSAlcyAodXRhbmbDtnIgcmVmcy9ub3Rlcy8pIgogCiAjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQogIy4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlCi0jOiBidWlsdGluL25vdGVzLmM6MzgwCisjOiBidWlsdGluL25vdGVzLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCAlcyB2YWx1ZTogJyVzJyIKIG1zZ3N0ciAiRmVsYWt0aWd0IHbDpHJkZSBww6UgJXM6IFwiJXNcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0NAorIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaW5wdXQgbGluZTogJyVzJy4iCiBtc2dzdHIgIkZlbGFrdGlnIGluZGF0YXJhZDogXCIlc1wiLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ1OQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY29weSBub3RlcyBmcm9tICclcycgdG8gJyVzJyIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIGtvcGllcmEgYW50ZWNrbmluZ2FyIGZyw6VuIFwiJXNcIiB0aWxsIFwiJXNcIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUwMyBidWlsdGluL25vdGVzLmM6NTU3IGJ1aWx0aW4vbm90ZXMuYzo2MzAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDIgYnVpbHRpbi9ub3Rlcy5jOjcxNSBidWlsdGluL25vdGVzLmM6NzYyCi0jOiBidWlsdGluL25vdGVzLmM6MTAzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4CisjOiBidWlsdGluL25vdGVzLmM6MTAzMgogbXNnaWQgInRvbyBtYW55IHBhcmFtZXRlcnMiCiBtc2dzdHIgImbDtnIgbcOlbmdhIHBhcmFtZXRyYXIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MTYgYnVpbHRpbi9ub3Rlcy5jOjc3NQorIzogYnVpbHRpbi9ub3Rlcy5jOjUxMiBidWlsdGluL25vdGVzLmM6NzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG5vdGUgZm91bmQgZm9yIG9iamVjdCAlcy4iCiBtc2dzdHIgIkluZ2EgYW50ZWNrbmluZ2FyIGhpdHRhZGVzIGbDtnIgb2JqZWt0ZXQgJXMuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM4IGJ1aWx0aW4vbm90ZXMuYzo2OTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQogbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCiBtc2dzdHIgImFudGVja25pbmdzaW5uZWjDpWxsIHNvbSBzdHLDpG5nIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQxIGJ1aWx0aW4vbm90ZXMuYzo2OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzcgYnVpbHRpbi9ub3Rlcy5jOjY5NAogbXNnaWQgIm5vdGUgY29udGVudHMgaW4gYSBmaWxlIgogbXNnc3RyICJhbnRlY2tuaW5nc2lubmVow6VsbCBpIGVuIGZpbCIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0MyBidWlsdGluL25vdGVzLmM6NTQ2IGJ1aWx0aW4vbm90ZXMuYzo3MDAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MDMgYnVpbHRpbi90YWcuYzo0NzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzkgYnVpbHRpbi9ub3Rlcy5jOjU0MiBidWlsdGluL25vdGVzLmM6Njk2CisjOiBidWlsdGluL25vdGVzLmM6Njk5IGJ1aWx0aW4vdGFnLmM6NDc0CiBtc2dpZCAib2JqZWN0IgogbXNnc3RyICJvYmpla3QiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDQgYnVpbHRpbi9ub3Rlcy5jOjcwMQorIzogYnVpbHRpbi9ub3Rlcy5jOjU0MCBidWlsdGluL25vdGVzLmM6Njk3CiBtc2dpZCAicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgogbXNnc3RyICLDpXRlcmFudsOkbmQgb2NoIHJlZGlnZXJhIGFuZ2l2ZXQgYW50ZWNrbmluZ3NvYmpla3QiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDcgYnVpbHRpbi9ub3Rlcy5jOjcwNAorIzogYnVpbHRpbi9ub3Rlcy5jOjU0MyBidWlsdGluL25vdGVzLmM6NzAwCiBtc2dpZCAicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgogbXNnc3RyICLDpXRlcmFudsOkbmQgYW5naXZldCBhbnRlY2tuaW5nc29iamVrdCIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0OSBidWlsdGluL25vdGVzLmM6NjE3CisjOiBidWlsdGluL25vdGVzLmM6NTQ1IGJ1aWx0aW4vbm90ZXMuYzo2MTMKIG1zZ2lkICJyZXBsYWNlIGV4aXN0aW5nIG5vdGVzIgogbXNnc3RyICJlcnPDpHR0IGJlZmludGxpZ2EgYW50ZWNrbmluZ2FyIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTgzCisjOiBidWlsdGluL25vdGVzLmM6NTc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgYWRkIG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgpAQCAtNjQ0NCwyNCArNjkzMywyNCBAQAogIkthbiBpbnRlIGzDpGdnYSB0aWxsIGFudGVja25pbmdhci4gSGl0dGFkZSBiZWZpbnRsaWdhIGFudGVja25pbmdhciBmw7ZyICIKICJvYmpla3RldCAlcy4gQW52w6RuZCBcIi1mXCIgZsO2ciBhdHQgc2tyaXZhIMO2dmVyIGJlZmludGxpZ2EgYW50ZWNrbmluZ2FyIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTg4IGJ1aWx0aW4vbm90ZXMuYzo2NjUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1ODQgYnVpbHRpbi9ub3Rlcy5jOjY2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJPdmVyd3JpdGluZyBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIlNrcml2ZXIgw7Z2ZXIgYmVmaW50bGlnYSBhbnRlY2tuaW5nYXIgZsO2ciBvYmpla3RldCAlc1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjE4CisjOiBidWlsdGluL25vdGVzLmM6NjE0CiBtc2dpZCAicmVhZCBvYmplY3RzIGZyb20gc3RkaW4iCiBtc2dzdHIgImzDpHMgb2JqZWt0IGZyw6VuIHN0YW5kYXJkIGluIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjIwCisjOiBidWlsdGluL25vdGVzLmM6NjE2CiBtc2dpZCAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgLS1zdGRpbikiCiBtc2dzdHIgImzDpHMgb21za3Jpdm5pbmdzaW5zdMOkbGxuaW5nIGbDtnIgPGtvbW1hbmRvPiAoaW1wbGljZXJhciAtLXN0ZGluKSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOAorIzogYnVpbHRpbi9ub3Rlcy5jOjYzNAogbXNnaWQgInRvbyBmZXcgcGFyYW1ldGVycyIKIG1zZ3N0ciAiZsO2ciBmw6UgcGFyYW1ldHJhciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY1OQorIzogYnVpbHRpbi9ub3Rlcy5jOjY1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCkBAIC02NDcwLDEyICs2OTU5LDEyIEBACiAiS2FuIGludGUga29waWVyYSBhbnRlY2tuaW5nYXIuIEhpdHRhZGUgYmVmaW50bGlnYSBhbnRlY2tuaW5nYXIgZsO2ciBvYmpla3RldCAiCiAiJXMuIEFudsOkbmQgXCItZlwiIGbDtnIgYXR0IHNrcml2YSDDtnZlciBiZWZpbnRsaWdhIGFudGVja25pbmdhciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIG5vdGVzIG9uIHNvdXJjZSBvYmplY3QgJXMuIENhbm5vdCBjb3B5LiIKIG1zZ3N0ciAiQW50ZWNrbmluZ2FyIHDDpSBrw6RsbG9iamVrdGV0ICVzIHNha25hcy4gS2FuIGludGUga29waWVyYS4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MjAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtbS8tRi8tYy8tQyBvcHRpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciB0aGUgJ2VkaXQnIHN1YmNvbW1hbmQuXG4iCkBAIC02NDg0LDE1ICs2OTczLDE1IEBACiAiRmxhZ2dvcm5hIC1tLy1GLy1jLy1DIHJla29tbWVuZGVyYXMgaW50ZSBmw7ZyIHVuZGVya29tbWFuZG90IFwiZWRpdFwiLlxuIgogIkFudsOkbmQgXCJnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DXCIgaXN0w6RsbGV0LlxuIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODY3CisjOiBidWlsdGluL25vdGVzLmM6ODYzCiBtc2dpZCAiR2VuZXJhbCBvcHRpb25zIgogbXNnc3RyICJBbGxtw6RubmEgZmxhZ2dvciIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2OQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2NQogbXNnaWQgIk1lcmdlIG9wdGlvbnMiCiBtc2dzdHIgIkZsYWdnb3IgZsO2ciBzYW1tYW5zbGFnbmluZyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjg2NwogbXNnaWQgIiIKICJyZXNvbHZlIG5vdGVzIGNvbmZsaWN0cyB1c2luZyB0aGUgZ2l2ZW4gc3RyYXRlZ3kgKG1hbnVhbC9vdXJzL3RoZWlycy91bmlvbi8iCiAiY2F0X3NvcnRfdW5pcSkiCkBAIC02NTAwLDQ2ICs2OTg5LDQ2IEBACiAibMOkcyBrb25mbGlrdGVyIGkgYW50ZWNrbmluZ2FyIG1lZCBhbmdpdmVuIHN0cmF0ZWdpIChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgogImNhdF9zb3J0X3VuaXEpIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODczCisjOiBidWlsdGluL25vdGVzLmM6ODY5CiBtc2dpZCAiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKIG1zZ3N0ciAiQ2hlY2thciBpbiBlaiBzYW1tYW5zbGFnbmEgYW50ZWNrbmluZ2FyIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODc1CisjOiBidWlsdGluL25vdGVzLmM6ODcxCiBtc2dpZCAiZmluYWxpemUgbm90ZXMgbWVyZ2UgYnkgY29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKIG1zZ3N0ciAiIgogImbDpHJkaWdzdMOkbGwgc2FtbWFuc2xhZ25pbmcgYXYgYW50ZWNrbmluZ2FyIGdlbm9tIGF0dCBjaGVja2EgaW4gZWogIgogInNhbW1hbnNsYWduYSBhbnRlY2tuaW5nYXIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKIG1zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgogbXNnc3RyICJBdmJyeXQgbMO2c25pbmcgYXYgc2FtbWFuc2xhZ25pbmcgYXYgYW50ZWNrbmluZ2FyIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODc5CisjOiBidWlsdGluL25vdGVzLmM6ODc1CiBtc2dpZCAiYWJvcnQgbm90ZXMgbWVyZ2UiCiBtc2dzdHIgImF2YnJ5dCBzYW1tYW5zbGFnbmluZyBhdiBhbnRlY2tuaW5nYXIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NzQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIk9iamVrdGV0ICVzIGhhciBpbmdlbiBhbnRlY2tuaW5nXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5ODYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODIKIG1zZ2lkICJhdHRlbXB0IHRvIHJlbW92ZSBub24tZXhpc3RlbnQgbm90ZSBpcyBub3QgYW4gZXJyb3IiCiBtc2dzdHIgImbDtnJzw7ZrIGF0dCB0YSBib3J0IGlja2UtZXhpc3RlcmFuZGUgYW50ZWNrbmluZ2FyIMOkciBpbnRlIGV0dCBmZWwiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5ODkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODUKIG1zZ2lkICJyZWFkIG9iamVjdCBuYW1lcyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAibMOkcyBvYmpla3RuYW1uIGZyw6VuIHN0YW5kYXJkIGluIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTA3MAorIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKIG1zZ2lkICJub3Rlc19yZWYiCiBtc2dzdHIgImFudGVja25pbmdhci1yZWYiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDcxCisjOiBidWlsdGluL25vdGVzLmM6MTA2NwogbXNnaWQgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IgogbXNnc3RyICJhbnbDpG5kIGFudGVja25pbmdhciBmcsOlbiA8YW50ZWNrbmluZ3NyZWY+IgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwNiBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAyIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHN1YmNvbW1hbmQ6ICVzIgogbXNnc3RyICJPa8OkbnQgdW5kZXJrb21tYW5kbzogJXMiCkBAIC02ODk4LDIyICs3Mzg3LDUxIEBACiAiXCJnaXQgcHVsbFwiKSBpbm5hbiBkdSBzw6RuZGVyIGlnZW4uXG4iCiAiU2UgYXZzbml0dGV0IFwiTm90ZSBhYm91dCBmYXN0LWZvcndhcmRcIiBpIFwiZ2l0IHB1c2ggLS1oZWxwXCIgZsO2ciBkZXRhbGplci4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI1OAorIzogYnVpbHRpbi9wdXNoLmM6MjI0Cittc2dpZCAiIgorIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgorIm5vdCBoYXZlIGxvY2FsbHkuIFRoaXMgaXMgdXN1YWxseSBjYXVzZWQgYnkgYW5vdGhlciByZXBvc2l0b3J5IHB1c2hpbmdcbiIKKyJ0byB0aGUgc2FtZSByZWYuIFlvdSBtYXkgd2FudCB0byBmaXJzdCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4sXG4iCisiJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCittc2dzdHIgIiIKKyJVcHBkYXRlcmluZ2FyIGF2dmlzYWRlcyBkw6UgZmrDpHJyZW4gaW5uZWjDpWxsZXIgw6RuZHJpbmdhciBzb20gZHUgaW50ZVxuIgorImhhciBsb2thbHQuIERldCBiZXJvciBvZnRhc3QgcMOlIGF0dCBldHQgYW5uYXQgYXJraXYgaGFyIHPDpG50IGluIHNhbW1hXG4iCisicmVmZXJlbnNlci4gRGV0IGthbiB2YXJhIGVuIGlkw6kgYXR0IGbDtnJzdCBzbMOlIGlob3AgZmrDpHJyw6RuZHJpbmdhcm5hXG4iCisiKHQuZXguIFwiZ2l0IHB1bGxcIikgaW5uYW4gZHUgc8OkbmRlciBpZ2VuLlxuIgorIlNlIGF2c25pdHRldCBcIk5vdGUgYWJvdXQgZmFzdC1mb3J3YXJkc1wiIGkgXCJnaXQgcHVzaCAtLWhlbHBcIiBmw7ZyIGRldGFsamVyLiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjMxCittc2dpZCAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRhZyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVtb3RlLiIKK21zZ3N0ciAiVXBwZGF0ZXJpbmdhcm5hIGF2dmlzYWRlcyBlZnRlcnNvbSB0YWdnZW4gcmVkYW4gZmlubnMgcMOlIGZqw6RycmVuLiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjM0Cittc2dpZCAiIgorIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgorIndpdGhvdXQgdXNpbmcgdGhlICctLWZvcmNlJyBvcHRpb24uXG4iCittc2dzdHIgIiIKKyJEdSBrYW4gaW50ZSB1cHBkYXRlcmEgZW4gZmrDpHJyLXJlZmVyZW5zIHNvbSBwZWthciBww6UgZXR0IG9iamVrdCBzb21cbiIKKyJpbnRlIMOkciBlbiBpbmNoZWNrbmluZywgZWxsZXIgdXBwZGF0ZXJhIGVuIGZqw6Ryci1yZWZlcmVucyBzw6UgYXR0IGRlblxuIgorInBla2FyIHDDpSBuw6Vnb3Qgc29tIGludGUgw6RyIGVuIGluY2hlY2tuaW5nLCB1dGFuIGF0dCBhbnbDpG5kYSBmbGFnZ2FuXG4iCisiXCItLWZvcmNlXCIuXG4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjI5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIHRvICVzXG4iCiBtc2dzdHIgIlPDpG5kZXIgdGlsbCAlc1xuIgogCi0jOiBidWlsdGluL3B1c2guYzoyNjIKKyM6IGJ1aWx0aW4vcHVzaC5jOjI5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJyVzJyIKIG1zZ3N0ciAibWlzc2x5Y2thZGVzIHPDpG5kYSB2aXNzYSByZWZlcmVuc2VyIHRpbGwgXCIlc1wiIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcmVwb3NpdG9yeSAnJXMnIgogbXNnc3RyICJmZWxha3RpZ3QgYXJraXYgXCIlc1wiIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTUKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMgogbXNnaWQgIiIKICJObyBjb25maWd1cmVkIHB1c2ggZGVzdGluYXRpb24uXG4iCiAiRWl0aGVyIHNwZWNpZnkgdGhlIFVSTCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgb3IgY29uZmlndXJlIGEgcmVtb3RlICIKQEAgLTY5MzQsNzkgKzc0NTIsODcgQEAKICJcbiIKICIgICAgZ2l0IHB1c2ggPG5hbW4+XG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMAorIzogYnVpbHRpbi9wdXNoLmM6MzQ3CiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWFsbCBvY2ggLS10YWdzIMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMQorIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1hbGwga2FuIGludGUga29tYmluZXJhcyBtZWQgcmVmZXJlbnNzcGVjaWZpa2F0aW9uZXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxNgorIzogYnVpbHRpbi9wdXNoLmM6MzUzCiBtc2dpZCAiLS1taXJyb3IgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLW1pcnJvciBvY2ggLS10YWdzIMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxNworIzogYnVpbHRpbi9wdXNoLmM6MzU0CiBtc2dpZCAiLS1taXJyb3IgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1taXJyb3Iga2FuIGludGUga29tYmluZXJhcyBtZWQgcmVmZXJlbnNzcGVjaWZpa2F0aW9uZXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMyMgorIzogYnVpbHRpbi9wdXNoLmM6MzU5CiBtc2dpZCAiLS1hbGwgYW5kIC0tbWlycm9yIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tYWxsIG9jaCAtLW1pcnJvciDDpHIgaW5rb21wYXRpYmxhIgogCi0jOiBidWlsdGluL3B1c2guYzozODIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQxOQogbXNnaWQgInJlcG9zaXRvcnkiCiBtc2dzdHIgImFya2l2IgogCi0jOiBidWlsdGluL3B1c2guYzozODMKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMAogbXNnaWQgInB1c2ggYWxsIHJlZnMiCiBtc2dzdHIgInPDpG5kIGFsbGEgcmVmZXJlbnNlciIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg0CisjOiBidWlsdGluL3B1c2guYzo0MjEKIG1zZ2lkICJtaXJyb3IgYWxsIHJlZnMiCiBtc2dzdHIgInNwZWdsYSBhbGxhIHJlZmVyZW5zZXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NgorIzogYnVpbHRpbi9wdXNoLmM6NDIzCiBtc2dpZCAiZGVsZXRlIHJlZnMiCiBtc2dzdHIgInRhIGJvcnQgcmVmZXJlbnNlciIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg3CisjOiBidWlsdGluL3B1c2guYzo0MjQKIG1zZ2lkICJwdXNoIHRhZ3MgKGNhbid0IGJlIHVzZWQgd2l0aCAtLWFsbCBvciAtLW1pcnJvcikiCiBtc2dzdHIgInPDpG5kIHRhZ2dhciAoa2FuIGludGUgYW52w6RuZGFzIG1lZCAtLWFsbCBlbGxlciAtLW1pcnJvcikiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MAorIzogYnVpbHRpbi9wdXNoLmM6NDI3CiBtc2dpZCAiZm9yY2UgdXBkYXRlcyIKIG1zZ3N0ciAidHZpbmdhIHVwcGRhdGVyaW5nYXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MQorIzogYnVpbHRpbi9wdXNoLmM6NDI4CiBtc2dpZCAiY2hlY2siCiBtc2dzdHIgImtvbnRyb2xsZXJhIgogCi0jOiBidWlsdGluL3B1c2guYzozOTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyOQogbXNnaWQgImNvbnRyb2wgcmVjdXJzaXZlIHB1c2hpbmcgb2Ygc3VibW9kdWxlcyIKIG1zZ3N0ciAic3R5ciByZWt1cnNpdiBpbnPDpG5kbmluZyBhdiB1bmRlcm1vZHVsZXIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5NAorIzogYnVpbHRpbi9wdXNoLmM6NDMxCiBtc2dpZCAidXNlIHRoaW4gcGFjayIKIG1zZ3N0ciAiYW52w6RuZCB0dW5uYSBwYWtldCIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzk1IGJ1aWx0aW4vcHVzaC5jOjM5NgorIzogYnVpbHRpbi9wdXNoLmM6NDMyIGJ1aWx0aW4vcHVzaC5jOjQzMwogbXNnaWQgInJlY2VpdmUgcGFjayBwcm9ncmFtIgogbXNnc3RyICJwcm9ncmFtIGbDtnIgYXR0IHRhIGVtb3QgcGFrZXQiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5NworIzogYnVpbHRpbi9wdXNoLmM6NDM0CiBtc2dpZCAic2V0IHVwc3RyZWFtIGZvciBnaXQgcHVsbC9zdGF0dXMiCiBtc2dzdHIgInN0w6RsbCBpbiB1cHBzdHLDtm0gZsO2ciBnaXQgcHVsbC9zdGF0dXMiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQwMAorIzogYnVpbHRpbi9wdXNoLmM6NDM3CiBtc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCiBtc2dzdHIgInRhIGJvcnQgbG9rYWx0IGJvcnR0YWduYSByZWZlcmVuc2VyIgogCi0jOiBidWlsdGluL3B1c2guYzo0MTAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzOQorbXNnaWQgImJ5cGFzcyBwcmUtcHVzaCBob29rIgorbXNnc3RyICJmw7ZyYmlnw6UgcHJlLXB1c2gta3JvayIKKworIzogYnVpbHRpbi9wdXNoLmM6NDQwCittc2dpZCAicHVzaCBtaXNzaW5nIGJ1dCByZWxldmFudCB0YWdzIgorbXNnc3RyICJzw6RuZCBpbiBzYWtuYWRlIG1lbiByZWxldmFudGEgdGFnZ2FyIgorCisjOiBidWlsdGluL3B1c2guYzo0NTAKIG1zZ2lkICItLWRlbGV0ZSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLWFsbCwgLS1taXJyb3IgYW5kIC0tdGFncyIKIG1zZ3N0ciAiLS1kZWxldGUgw6RyIGlta29tcGF0aWJlbCBtZWQgLS1hbGwsIC0tbWlycm9yIG9jaCAtLXRhZ3MiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQxMgorIzogYnVpbHRpbi9wdXNoLmM6NDUyCiBtc2dpZCAiLS1kZWxldGUgZG9lc24ndCBtYWtlIHNlbnNlIHdpdGhvdXQgYW55IHJlZnMiCiBtc2dzdHIgIi0tZGVsZXRlIGthbiBpbnRlIGFudsOkbmRhcyB1dGFuIHJlZmVyZW5zZXIiCiAKQEAgLTc2MTcsMTIgKzgxNDMsMTIgQEAKICJnaXQgcmVzZXQgWy0tbWl4ZWQgfCAtLXNvZnQgfCAtLWhhcmQgfCAtLW1lcmdlIHwgLS1rZWVwXSBbLXFdIFs8aW5jaGVja25pbmc+XSIKIAogIzogYnVpbHRpbi9yZXNldC5jOjI2Ci1tc2dpZCAiZ2l0IHJlc2V0IFstcV0gPGNvbW1pdD4gWy0tXSA8cGF0aHM+Li4uIgotbXNnc3RyICJnaXQgcmVzZXQgWy1xXSA8aW5jaGVja25pbmc+IFstLV0gPHPDtmt2w6RnYXI+Li4uIgorbXNnaWQgImdpdCByZXNldCBbLXFdIDx0cmVlLWlzaD4gWy0tXSA8cGF0aHM+Li4uIgorbXNnc3RyICJnaXQgcmVzZXQgWy1xXSA8dHLDpGQtaWd0PiBbLS1dIDxzw7ZrdsOkZ2FyPi4uLiIKIAogIzogYnVpbHRpbi9yZXNldC5jOjI3Ci1tc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzxjb21taXQ+XSBbLS1dIFs8cGF0aHM+Li4uXSIKLW1zZ3N0ciAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzxpbmNoZWNrbmluZz5dIFstLV0gWzxzw7ZrdsOkZ2FyPi4uLl0iCittc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxwYXRocz4uLi5dIgorbXNnc3RyICJnaXQgcmVzZXQgLS1wYXRjaCBbPHRyw6RkLWlndD5dIFstLV0gWzxzw7ZrdsOkZ2FyPi4uLl0iCiAKICM6IGJ1aWx0aW4vcmVzZXQuYzozMwogbXNnaWQgIm1peGVkIgpAQCAtNzY0NCw5MCArODE3MCw5NiBAQAogbXNnaWQgImtlZXAiCiBtc2dzdHIgImJlaMOlbGwiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo3NworIzogYnVpbHRpbi9yZXNldC5jOjczCiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRC4iCiBtc2dzdHIgIkR1IGhhciBpbnRlIGVuIGdpbHRpZyBIRUFELiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc5CisjOiBidWlsdGluL3Jlc2V0LmM6NzUKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mIEhFQUQuIgogbXNnc3RyICJLdW5kZSBpbnRlIGhpdHRhIHRyw6RkZXIgZsO2ciBIRUFELiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjg1CisjOiBidWlsdGluL3Jlc2V0LmM6ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiAlcy4iCiBtc2dzdHIgIkt1bmRlIGludGUgaGl0dGEgdHLDpGRlciBmw7ZyICVzLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjk2Ci1tc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKLW1zZ3N0ciAiS3VuZGUgaW50ZSBza3JpdmEgbnkgaW5kZXhmaWwuIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTA2CisjOiBidWlsdGluL3Jlc2V0LmM6OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQgJXMiCiBtc2dzdHIgIkhFQUQgw6RyIG51IHDDpSAlcyIKIAotIzogYnVpbHRpbi9yZXNldC5jOjEzMAotbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgotbXNnc3RyICJLdW5kZSBpbnRlIGzDpHNhIGluZGV4ZXQiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzMKLW1zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKLW1zZ3N0ciAiT2vDtmFkZSDDpG5kcmluZ2FyIGVmdGVyIMOldGVyc3TDpGxsbmluZzoiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoyMjMKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAiS2FuIGludGUgdXRmw7ZyYSBlbiAlcyDDpXRlcnN0w6RsbG5pbmcgbWl0dCBpIGVuIHNhbW1hbnNsYWduaW5nLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjIzOAorIzogYnVpbHRpbi9yZXNldC5jOjI0OAogbXNnaWQgImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiCiBtc2dzdHIgInZhciB0eXN0LCByYXBwb3J0ZXJhIGVuZGFzdCBmZWwiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDAKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTAKIG1zZ2lkICJyZXNldCBIRUFEIGFuZCBpbmRleCIKIG1zZ3N0ciAiw6V0ZXJzdMOkbGwgSEVBRCBvY2ggaW5kZXgiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDEKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKIG1zZ2lkICJyZXNldCBvbmx5IEhFQUQiCiBtc2dzdHIgIsOldGVyc3TDpGxsIGVuZGFzdCBIRUFEIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjQzIGJ1aWx0aW4vcmVzZXQuYzoyNDUKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTMgYnVpbHRpbi9yZXNldC5jOjI1NQogbXNnaWQgInJlc2V0IEhFQUQsIGluZGV4IGFuZCB3b3JraW5nIHRyZWUiCiBtc2dzdHIgIsOldGVyc3TDpGxsIEhFQUQsIGluZGV4IG9jaCBhcmJldHNrYXRhbG9nIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjQ3CisjOiBidWlsdGluL3Jlc2V0LmM6MjU3CiBtc2dpZCAicmVzZXQgSEVBRCBidXQga2VlcCBsb2NhbCBjaGFuZ2VzIgogbXNnc3RyICLDpXRlcnN0w6RsbCBIRUFEIG1lbiBiZWjDpWxsIGxva2FsYSDDpG5kcmluZ2FyIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzAzCisjOiBidWlsdGluL3Jlc2V0LmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZXZpc2lvbi4iCittc2dzdHIgIkt1bmRlIGludGUgc2zDpSB1cHAgXCIlc1wiIHNvbSBlbiBnaWx0aWcgcmV2aXNpb24uIgorCisjOiBidWlsdGluL3Jlc2V0LmM6Mjc4IGJ1aWx0aW4vcmVzZXQuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiS2FuIGludGUgdG9sa2Egb2JqZWt0ZXQgXCIlc1wiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzA4CisjOiBidWlsdGluL3Jlc2V0LmM6MjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCB0cmVlLiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBzbMOlIHVwcCBcIiVzXCIgc29tIGV0dCBnaWx0aWd0IHRyw6RkLiIKKworIzogYnVpbHRpbi9yZXNldC5jOjI5MgogbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggLS17aGFyZCxtaXhlZCxzb2Z0fSIKIG1zZ3N0ciAiLS1wYXRjaCDDpHIgaW5rb21wYXRpYmVsIG1lZCAtLXtoYXJkLG1peGVkLHNvZnR9IgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE3CisjOiBidWlsdGluL3Jlc2V0LmM6MzAxCiBtc2dpZCAiLS1taXhlZCB3aXRoIHBhdGhzIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnZ2l0IHJlc2V0IC0tIDxwYXRocz4nIGluc3RlYWQuIgogbXNnc3RyICIiCiAiLS1taXhlZCByZWtvbW1lbmRlcmFzIGludGUgbWVkIHPDtmt2w6RnYXI7IGFudsOkbmQgXCJnaXQgcmVzZXQgLS0gPHPDtmt2w6RnYXI+XCIuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE5CisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiS2FuIGludGUgZ8O2cmEgJXMgw6V0ZXJzdMOkbGxuaW5nIG1lZCBzw7ZrdsOkZ2FyLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMzMQorIzogYnVpbHRpbi9yZXNldC5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiJXMgw6V0ZXJzdMOkbGxuaW5nIHRpbGzDpXRzIGludGUgaSBldHQgbmFrZXQgYXJraXYiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozNDcKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iCiBtc2dzdHIgIkt1bmRlIGludGUgw6V0ZXJzdMOkbGxhIGluZGV4ZmlsZW4gdGlsbCB2ZXJzaW9uZW4gXCIlc1wiLiIKIAorIzogYnVpbHRpbi9yZXNldC5jOjMzOQorbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IgorbXNnc3RyICJPa8O2YWRlIMOkbmRyaW5nYXIgZWZ0ZXIgw6V0ZXJzdMOkbGxuaW5nOiIKKworIzogYnVpbHRpbi9yZXNldC5jOjM0NAorbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iCittc2dzdHIgIkt1bmRlIGludGUgc2tyaXZhIG55IGluZGV4ZmlsLiIKKwogIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozMzkKIG1zZ2lkICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dIgogbXNnc3RyICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJndW1lbnQ+Li4uXSIKQEAgLTc3NTYsMTYgKzgyODgsMTYgQEAKICJ2YXJpYW50ZW4uIgogCiAjOiBidWlsdGluL3JldmVydC5jOjIyCi1tc2dpZCAiZ2l0IHJldmVydCBbb3B0aW9uc10gPGNvbW1pdC1pc2g+IgotbXNnc3RyICJnaXQgcmV2ZXJ0IFtmbGFnZ29yXSA8aW5jaGVja25pbmctaWd0PiIKK21zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgImdpdCByZXZlcnQgW2ZsYWdnb3JdIDxpbmNoZWNrbmluZy1pZ3Q+Li4uIgogCiAjOiBidWlsdGluL3JldmVydC5jOjIzCiBtc2dpZCAiZ2l0IHJldmVydCA8c3ViY29tbWFuZD4iCiBtc2dzdHIgImdpdCByZXZlcnQgPHVuZGVya29tbWFuZG8+IgogCiAjOiBidWlsdGluL3JldmVydC5jOjI4Ci1tc2dpZCAiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4iCi1tc2dzdHIgImdpdCBjaGVycnktcGljayBbZmxhZ2dvcl0gPGluY2hlY2tuaW5nLWlndD4iCittc2dpZCAiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgImdpdCBjaGVycnktcGljayBbZmxhZ2dvcl0gPGluY2hlY2tuaW5nLWlndD4uLi4iCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjkKIG1zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgPHN1YmNvbW1hbmQ+IgpAQCAtNzkxNiwzMiArODQ0OCwzMSBAQAogbXNnc3RyICJnaXQgcm06IGthbiBpbnRlIHRhIGJvcnQgJXMiCiAKICM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxMwotbXNnaWQgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtb3B0c10gWy0tXSBbPGNvbW1pdC1pZD4uLi4gXSIKLW1zZ3N0ciAiIgotImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtZmxhZ2dvcl0gWy0tXSBbPGluY2hlY2tuaW5nLWlkPi4uLiBdIgorbXNnaWQgImdpdCBzaG9ydGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gWzxwYXRoPi4uLl1dIgorbXNnc3RyICJnaXQgc2hvcnRsb2cgWzxmbGFnZ29yPl0gWzx2ZXJzaW9uc2ludGVydmFsbD5dIFtbLS1dIDxzw7ZrdsOkZz4uLi5dIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MTU3CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3NpbmcgYXV0aG9yOiAlcyIKIG1zZ3N0ciAiRsO2cmZhdHRhcmUgc2FrbmFzOiAlcyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1MworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyNwogbXNnaWQgInNvcnQgb3V0cHV0IGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgcGVyIGF1dGhvciIKIG1zZ3N0ciAic29ydGVyYSB1dGRhdGEgZW5saWd0IGFudGFsIGluY2hlY2tuaW5nYXIgcGVyIGbDtnJmYXR0YXJlIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU1CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5CiBtc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCiBtc2dzdHIgIlVuZGVydHJ5Y2sgYmVza3Jpdm5pbmdhciwgdmlzYSBiYXJhIGFudGFsIGluY2hlY2tuaW5nYXIiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTcKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzEKIG1zZ2lkICJTaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIGVhY2ggYXV0aG9yIgogbXNnc3RyICJWaXNhIGUtcG9zdGFkcmVzcyBmw7ZyIHZhcmplIGbDtnJmYXR0YXJlIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU4CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMyCiBtc2dpZCAid1ssaTFbLGkyXV0iCiBtc2dzdHIgIndbLGkxWyxpMl1dIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMzCiBtc2dpZCAiTGluZXdyYXAgb3V0cHV0IgogbXNnc3RyICJSYWRicnl0IHV0ZGF0YSIKIApAQCAtNzk2MSw2NyArODQ5Miw2NyBAQAogbXNnaWQgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxiYXNlPl1dIFstLWxpc3RdIFs8cmVmPl0iCiBtc2dzdHIgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxiYXM+XV0gWy0tbGlzdF0gWzxyZWY+XSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MQorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MAogbXNnaWQgInNob3cgcmVtb3RlLXRyYWNraW5nIGFuZCBsb2NhbCBicmFuY2hlcyIKIG1zZ3N0ciAidmlzYSBmasOkcnJzcMOlcmFuZGUgb2NoIGxva2FsYSBncmVuYXIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTMKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTIKIG1zZ2lkICJzaG93IHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKIG1zZ3N0ciAidmlzYSBmasOkcnJzcMOlcmFuZGUgZ3JlbmFyIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU0CiBtc2dpZCAiY29sb3IgJyohKy0nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJyYW5jaCIKIG1zZ3N0ciAiZsOkcmdhIFwiKiErLVwiIGVubGlndCBncmVuZW4iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTcKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYKIG1zZ2lkICJzaG93IDxuPiBtb3JlIGNvbW1pdHMgYWZ0ZXIgdGhlIGNvbW1vbiBhbmNlc3RvciIKIG1zZ3N0ciAidmlzYSA8bj4geXR0ZXJsaWdhcmUgaW5jaGVja25pbmdhciBlZnRlciBnZW1lbnNhbSBhbmZhZGVyIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU5CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU4CiBtc2dpZCAic3lub255bSB0byBtb3JlPS0xIgogbXNnc3RyICJzeW5vbnltIHRpbGwgbW9yZT0tMSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OQogbXNnaWQgInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIgogbXNnc3RyICJ1bmRlcnR5Y2sgbmFtbnN0csOkbmdhciIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MQogbXNnaWQgImluY2x1ZGUgdGhlIGN1cnJlbnQgYnJhbmNoIgogbXNnc3RyICJpbmtsdWRlcmEgYWt0dWVsbCBncmVuIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY0CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYzCiBtc2dpZCAibmFtZSBjb21taXRzIHdpdGggdGhlaXIgb2JqZWN0IG5hbWVzIgogbXNnc3RyICJuYW1uZ2UgaW5jaGVja25pbmdhciBtZWQgZGVyYXMgb2JqZWt0bmFtbiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NQogbXNnaWQgInNob3cgcG9zc2libGUgbWVyZ2UgYmFzZXMiCiBtc2dzdHIgInZpc2EgbcO2amxpZ2Egc2FtbWFuc2xhbmluZ3NiYXNlciIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NwogbXNnaWQgInNob3cgcmVmcyB1bnJlYWNoYWJsZSBmcm9tIGFueSBvdGhlciByZWYiCiBtc2dzdHIgInZpc2EgcmVmZXJlbnNlciBzb20gaW50ZSBrYW4gbsOlcyBmcsOlbiBuw6Vnb24gYW5uYW4gcmVmZXJlbnMiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzAKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjkKIG1zZ2lkICJzaG93IGNvbW1pdHMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIiCiBtc2dzdHIgInZpc2EgaW5jaGVja25pbmdhciBpIHRvcG9sb2dpc2sgb3JkbmluZyIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MQogbXNnaWQgInNob3cgb25seSBjb21taXRzIG5vdCBvbiB0aGUgZmlyc3QgYnJhbmNoIgogbXNnc3RyICJ2aXNhIGVuZGFzdCBpbmNoZWNrbmluZ2FyIGludGUgcMOlIGRlbiBmw7Zyc3RhIGdyZW5lbiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MwogbXNnaWQgInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIKIG1zZ3N0ciAidmlzYSBzYW1tYW5zbGFnbmluZ2FyIHNvbSBlbmRhc3Qga2FuIG7DpXMgZnLDpW4gZW4gc3BldHMiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzYKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzUKIG1zZ2lkICJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgY2hpbGRyZW4iCiBtc2dzdHIgInZpc2EgaW5jaGVja25pbmdhciBkw6RyIGluZ2VuIGbDtnLDpGxkZXIga29tbWVyIGbDtnJlIGRlc3MgYmFybiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NwogbXNnaWQgIjxuPlssPGJhc2U+XSIKIG1zZ3N0ciAiPG4+Wyw8YmFzPl0iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzkKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzgKIG1zZ2lkICJzaG93IDxuPiBtb3N0IHJlY2VudCByZWYtbG9nIGVudHJpZXMgc3RhcnRpbmcgYXQgYmFzZSIKIG1zZ3N0ciAidmlzYSA8bj4gbnlhc3RlIHJlZmxvZ2dwb3N0ZXIgbWVkIGLDtnJqYW4gcMOlIGJhcyIKIApAQCAtODE0NiwxNzAgKzg2NzcsMTY0IEBACiBtc2dzdHIgImt1bmRlIGludGUgYmVrcsOkZnRhIHRhZ2dlbiBcIiVzXCIiCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgU2tyaXYgZXR0IHRhZ2dtZWRkZWxhbmRlXG4iCi0iIyBSYWRlciBzb20gaW5sZWRzIG1lZCBcIiNcIiBpZ25vcmVyYXMuXG4iCi0iI1xuIgorIlNrcml2IGV0dCB0YWdnbWVkZGVsYW5kZVxuIgorIlJhZGVyIHNvbSBpbmxlZHMgbWVkIFwiJWNcIiBpZ25vcmVyYXMuXG4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MjU2CisjOiBidWlsdGluL3RhZy5jOjI1MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCi0iI1xuIgotIiMgV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgotIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKICJ3YW50IHRvLlxuIgotIiNcbiIKIG1zZ3N0ciAiIgogIlxuIgotIiNcbiIKLSIjIFNrcml2IGV0dCB0YWdnbWVkZGVsYW5kZVxuIgotIiMgUmFkZXIgc29tIGlubGVkcyBtZWQgXCIjXCIga29tbWVyIGJlaMOlbGxhczsgZHUga2FuIHNqw6RsdiB0YSBib3J0IGRlbSBvbVxuIgotIiMgZHUgdmlsbC5cbiIKLSIjXG4iCisiU2tyaXYgZXR0IHRhZ2dtZWRkZWxhbmRlXG4iCisiUmFkZXIgc29tIGlubGVkcyBtZWQgXCIlY1wiIGtvbW1lciBiZWjDpWxsYXM7IGR1IGthbiBzasOkbHYgdGEgYm9ydCBkZW0gb21cbiIKKyJkdSB2aWxsLlxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI5OAorIzogYnVpbHRpbi90YWcuYzoyOTIKIG1zZ2lkICJ1bmFibGUgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICJrdW5kZSBpbnRlIHNpZ25lcmEgdGFnZ2VuIgogCi0jOiBidWlsdGluL3RhZy5jOjMwMAorIzogYnVpbHRpbi90YWcuYzoyOTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgdGFnIGZpbGUiCiBtc2dzdHIgImt1bmRlIGludGUgc2tyaXZhIHRhZ2ctZmlsZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzI1CisjOiBidWlsdGluL3RhZy5jOjMxOQogbXNnaWQgImJhZCBvYmplY3QgdHlwZS4iCiBtc2dzdHIgImZlbGFrdGlnIG9iamVrdHR5cCIKIAotIzogYnVpbHRpbi90YWcuYzozMzgKKyM6IGJ1aWx0aW4vdGFnLmM6MzMyCiBtc2dpZCAidGFnIGhlYWRlciB0b28gYmlnLiIKIG1zZ3N0ciAidGFnZ2h1dnVkIGbDtnIgc3RvcnQuIgogCi0jOiBidWlsdGluL3RhZy5jOjM3MAorIzogYnVpbHRpbi90YWcuYzozNjgKIG1zZ2lkICJubyB0YWcgbWVzc2FnZT8iCiBtc2dzdHIgImluZ2V0IHRhZ2dtZWRkZWxhbmRlPyIKIAotIzogYnVpbHRpbi90YWcuYzozNzYKKyM6IGJ1aWx0aW4vdGFnLmM6Mzc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSB0YWcgbWVzc2FnZSBoYXMgYmVlbiBsZWZ0IGluICVzXG4iCiBtc2dzdHIgIlRhZ2dtZWRkZWxhbmRldCBoYXIgbMOkbW5hdHMgaSAlc1xuIgogCi0jOiBidWlsdGluL3RhZy5jOjQyNQorIzogYnVpbHRpbi90YWcuYzo0MjMKIG1zZ2lkICJzd2l0Y2ggJ3BvaW50cy1hdCcgcmVxdWlyZXMgYW4gb2JqZWN0IgogbXNnc3RyICJmbGFnZ2FuIFwicG9pbnRzLWF0XCIgYmVow7Z2ZXIgZXR0IG9iamVjdCIKIAotIzogYnVpbHRpbi90YWcuYzo0MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAnJXMnIgogbXNnc3RyICJmZWxmb3JtYXQgb2JqZWt0bmFtbiBcIiVzXCIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDQ3CisjOiBidWlsdGluL3RhZy5jOjQ0NQogbXNnaWQgImxpc3QgdGFnIG5hbWVzIgogbXNnc3RyICJsaXN0YSB0YWdnbmFtbiIKIAotIzogYnVpbHRpbi90YWcuYzo0NDkKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ3CiBtc2dpZCAicHJpbnQgPG4+IGxpbmVzIG9mIGVhY2ggdGFnIG1lc3NhZ2UiCiBtc2dzdHIgInZpc2EgPG4+IHJhZGVyIGZyw6VuIHZhcmplIHRhZ2dtZWRkZWxhbmRlIgogCi0jOiBidWlsdGluL3RhZy5jOjQ1MQorIzogYnVpbHRpbi90YWcuYzo0NDkKIG1zZ2lkICJkZWxldGUgdGFncyIKIG1zZ3N0ciAidGEgYm9ydCB0YWdnYXIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDUyCisjOiBidWlsdGluL3RhZy5jOjQ1MAogbXNnaWQgInZlcmlmeSB0YWdzIgogbXNnc3RyICJ2ZXJpZmllcmEgdGFnZ2FyIgogCi0jOiBidWlsdGluL3RhZy5jOjQ1NAorIzogYnVpbHRpbi90YWcuYzo0NTIKIG1zZ2lkICJUYWcgY3JlYXRpb24gb3B0aW9ucyIKIG1zZ3N0ciAiQWx0ZXJuYXRpdiBmw7ZyIGF0dCBza2FwYSB0YWdnYXIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU2CisjOiBidWlsdGluL3RhZy5jOjQ1NAogbXNnaWQgImFubm90YXRlZCB0YWcsIG5lZWRzIGEgbWVzc2FnZSIKIG1zZ3N0ciAiYW5ub3RlcmFkIHRhZ2csIGJlaMO2dmVyIG1lZGRlbGFuZGUiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU4CisjOiBidWlsdGluL3RhZy5jOjQ1NgogbXNnaWQgInRhZyBtZXNzYWdlIgogbXNnc3RyICJ0YWdnbWVkZGVsYW5kZSIKIAotIzogYnVpbHRpbi90YWcuYzo0NjAKKyM6IGJ1aWx0aW4vdGFnLmM6NDU4CiBtc2dpZCAiYW5ub3RhdGVkIGFuZCBHUEctc2lnbmVkIHRhZyIKIG1zZ3N0ciAiYW5ub3RlcmFkIG9jaCBHUEctc2lnbmVyYWQgdGFnZyIKIAotIzogYnVpbHRpbi90YWcuYzo0NjQKKyM6IGJ1aWx0aW4vdGFnLmM6NDYyCiBtc2dpZCAidXNlIGFub3RoZXIga2V5IHRvIHNpZ24gdGhlIHRhZyIKIG1zZ3N0ciAiYW52w6RuZCBhbm5hbiBueWNrZWwgZsO2ciBhdHQgc2lnbmVyYSB0YWdnZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDY1CisjOiBidWlsdGluL3RhZy5jOjQ2MwogbXNnaWQgInJlcGxhY2UgdGhlIHRhZyBpZiBleGlzdHMiCiBtc2dzdHIgImVyc8OkdHQgdGFnZ2VuIG9tIGRlbiBmaW5ucyIKIAotIzogYnVpbHRpbi90YWcuYzo0NjYKKyM6IGJ1aWx0aW4vdGFnLmM6NDY0CiBtc2dpZCAic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIgogbXNnc3RyICJsaXN0YSB0YWdnYXIgaSBzcGFsdGVyIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2OAorIzogYnVpbHRpbi90YWcuYzo0NjYKIG1zZ2lkICJUYWcgbGlzdGluZyBvcHRpb25zIgogbXNnc3RyICJBbHRlcm5hdGl2IGbDtnIgbGlzdG5pbmcgYXYgdGFnZ2FyIgogCi0jOiBidWlsdGluL3RhZy5jOjQ3MQorIzogYnVpbHRpbi90YWcuYzo0NjkKIG1zZ2lkICJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiCiBtc2dzdHIgInZpc2EgZW5kYXN0IHRhZ2dhciBzb20gaW5uZWjDpWxsZXIgaW5jaGVja25pbmdlbiIKIAotIzogYnVpbHRpbi90YWcuYzo0NzcKKyM6IGJ1aWx0aW4vdGFnLmM6NDc1CiBtc2dpZCAicHJpbnQgb25seSB0YWdzIG9mIHRoZSBvYmplY3QiCiBtc2dzdHIgInZpc2EgZW5kYXN0IHRhZ2dhciBmw7ZyIG9iamVrdGV0IgogCi0jOiBidWlsdGluL3RhZy5jOjUwNgorIzogYnVpbHRpbi90YWcuYzo1MDQKIG1zZ2lkICItLWNvbHVtbiBhbmQgLW4gYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1jb2x1bW4gb2NoIC1uIMOkciBpbmtvbXBhdGlibGEiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTIzCisjOiBidWlsdGluL3RhZy5jOjUyMQogbXNnaWQgIi1uIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIkZsYWdnYW4gLW4gw6RyIGVuZGFzdCB0aWxsw6V0ZW4gdGlsbHNhbW1hbnMgbWVkIC1sLiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjUKKyM6IGJ1aWx0aW4vdGFnLmM6NTIzCiBtc2dpZCAiLS1jb250YWlucyBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICJGbGFnZ2FuIC0tY29udGFpbnMgw6RyIGVuZGFzdCB0aWxsw6V0ZW4gdGlsbHNhbW1hbnMgbWVkIC1sIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNworIzogYnVpbHRpbi90YWcuYzo1MjUKIG1zZ2lkICItLXBvaW50cy1hdCBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICJGbGFnZ2FuIC0tcG9pbnRzLWF0IMOkciBlbmRhc3QgdGlsbMOldGVuIHRpbGxzYW1tYW5zIG1lZCAtbC4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTM1CisjOiBidWlsdGluL3RhZy5jOjUzMwogbXNnaWQgIm9ubHkgb25lIC1GIG9yIC1tIG9wdGlvbiBpcyBhbGxvd2VkLiIKIG1zZ3N0ciAiZW5kYXN0IGVuIGF2IGZsYWdnb3JuYSAtRiBlbGxlciAtbSB0aWxsw6V0cy4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTU1CisjOiBidWlsdGluL3RhZy5jOjU1MwogbXNnaWQgInRvbyBtYW55IHBhcmFtcyIKIG1zZ3N0ciAiZsO2ciBtw6VuZ2EgcGFyYW1ldHJhciIKIAotIzogYnVpbHRpbi90YWcuYzo1NjEKKyM6IGJ1aWx0aW4vdGFnLmM6NTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgdGFnIG5hbWUuIgogbXNnc3RyICJcIiVzXCIgw6RyIGludGUgZXR0IGdpbHRpZ3QgdGFnZ25hbW4uIgogCi0jOiBidWlsdGluL3RhZy5jOjU2NgorIzogYnVpbHRpbi90YWcuYzo1NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgInRhZ2dlbiBcIiVzXCIgZmlubnMgcmVkYW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg0CisjOiBidWlsdGluL3RhZy5jOjU4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IGxvY2sgdGhlIHJlZiIKIG1zZ3N0ciAiJXM6IGthbiBpbnRlIGzDpXNhIHJlZmVyZW5zZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg2CisjOiBidWlsdGluL3RhZy5jOjU4NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHVwZGF0ZSB0aGUgcmVmIgogbXNnc3RyICIlczoga2FuIGludGUgdXBwZGF0ZXJhIHJlZmVyZW5zZW4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg4CisjOiBidWlsdGluL3RhZy5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGVkIHRhZyAnJXMnICh3YXMgJXMpXG4iCiBtc2dzdHIgIlVwcGRhdGVyYWQgdGFnZyBcIiVzXCIgKHZhciAlcylcbiIKQEAgLTg0ODcsMjMgKzkwMTIsMjggQEAKIG1zZ3N0ciAiZW5kYXN0IGFudsOkbmRiYXJ0IHZpZCBmZWxzw7ZrbmluZyIKIAogIzogZ2l0LmM6MTYKLW1zZ2lkICJTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLiIKK21zZ2lkICIiCisiJ2dpdCBoZWxwIC1hJyBhbmQgJ2dpdCBoZWxwIC1nJyBsaXN0cyBhdmFpbGFibGUgc3ViY29tbWFuZHMgYW5kIHNvbWVcbiIKKyJjb25jZXB0IGd1aWRlcy4gU2VlICdnaXQgaGVscCA8Y29tbWFuZD4nIG9yICdnaXQgaGVscCA8Y29uY2VwdD4nXG4iCisidG8gcmVhZCBhYm91dCBhIHNwZWNpZmljIHN1YmNvbW1hbmQgb3IgY29uY2VwdC4iCiBtc2dzdHIgIiIKLSJTZSBcImdpdCBoZWxwIDxrb21tYW5kbz5cIiBmw7ZyIG1lciBpbmZvcm1hdGlvbiBvbSBldHQgc3BlY2lmaWt0IGtvbW1hbmRvLiIKKyJcImdpdCBoZWxwIC1hXCIgb2NoIFwiZ2l0IGhlbHAgLWdcIiB2aXNhciB0aWxsZ8OkbmdsaWdhIHVuZGVya29tbWFuZG9uIG9jaFxuIgorIm7DpWdyYSBrb25jZXB0dsOkZ2xlZG5pbmdhci4gU2UgXCJnaXQgaGVscCA8a29tbWFuZG8+XCIgZWxsZXIgXCJnaXQgaGVscFxuIgorIjxrb25jZXB0PlwiIGbDtnIgYXR0IGzDpHNhIG1lciBvbSBzcGVjaWZpa2EgdW5kZXJrb21tYW5kb24gb2NoIGtvbmNlcHQuIgogCiAjOiBwYXJzZS1vcHRpb25zLmg6MTU2CiBtc2dpZCAibm8tb3AgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIgogbXNnc3RyICJpbmdlbiBmdW5rdGlvbiAoYmFrw6V0a29tcGF0aWJpbGl0ZXQpIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjI4CisjOiBwYXJzZS1vcHRpb25zLmg6MjMyCiBtc2dpZCAiYmUgbW9yZSB2ZXJib3NlIgogbXNnc3RyICJ2YXIgbWVyIHByYXRzYW0iCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzAKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzQKIG1zZ2lkICJiZSBtb3JlIHF1aWV0IgogbXNnc3RyICJ2YXIgbWVyIHR5c3QiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAiYW52w6RuZCA8bj4gc2lmZnJvciBmw7ZyIGF0dCB2aXNhIFNIQS0xOm9yIgogCkBAIC04NTQ0LDggKzkwNzQsOCBAQAogbXNnc3RyICJWaXNhIHJhZGVyIHNvbSBtb3RzdmFyYXIgbcO2bnN0ZXIiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTcKLW1zZ2lkICJDcmVhdGUgYW4gZW1wdHkgZ2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKLW1zZ3N0ciAiU2thcGEgdG9tdCBnaXQtYXJraXYgZWxsZXIgb21pbml0aWVyYSBldHQgYmVmaW50bGlndCIKK21zZ2lkICJDcmVhdGUgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKK21zZ3N0ciAiU2thcGEgdG9tdCBHaXQtYXJraXYgZWxsZXIgb21pbml0aWVyYSBldHQgYmVmaW50bGlndCIKIAogIzogY29tbW9uLWNtZHMuaDoxOAogbXNnaWQgIlNob3cgY29tbWl0IGxvZ3MiCkBAIC04ODU2LDE2ICs5Mzg2LDE2IEBACiAiRHUgbcOlc3RlIHNlZGFuIGFuZ2Ugw6V0bWluc3RvbmUgZW4gYnJhIG9jaCBlbiBkw6VsaWcgdmVyc2lvbi5cbiIKICIoRHUga2FuIGFudsOkbmRhIFwiZ2l0IGJpc2VjdCBiYWRcIiBvY2ggXCJnaXQgYmlzZWN0IGdvb2RcIiBmw7ZyIGRldHRhLikiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzQ3IGdpdC1iaXNlY3Quc2g6NDc0CisjOiBnaXQtYmlzZWN0LnNoOjM2MyBnaXQtYmlzZWN0LnNoOjQ5MAogbXNnaWQgIldlIGFyZSBub3QgYmlzZWN0aW5nLiIKIG1zZ3N0ciAiVmkgdXRmw7ZyIGluZ2VuIGJpc2VjdCBmw7ZyIHRpbGxmw6RsbGV0LiIKIAotIzogZ2l0LWJpc2VjdC5zaDozNTQKKyM6IGdpdC1iaXNlY3Quc2g6MzcwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGludmFsaWQnIGlzIG5vdCBhIHZhbGlkIGNvbW1pdCIKIG1zZ3N0ciAiXCIkaW52YWxpZFwiIMOkciBpbnRlIGVuIGdpbHRpZyBpbmNoZWNrbmluZyIKIAotIzogZ2l0LWJpc2VjdC5zaDozNjMKKyM6IGdpdC1iaXNlY3Quc2g6Mzc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGNoZWNrIG91dCBvcmlnaW5hbCBIRUFEICckYnJhbmNoJy5cbiIKQEAgLTg4NzQsMjUgKzk0MDQsMjUgQEAKICJLdW5kZSBpbnRlIGNoZWNrYSB1dCBvcmlnaW5hbC1IRUFEIFwiJGJyYW5jaFwiLlxuIgogIkbDtnJzw7ZrIFwiZ2l0IGJpc2VjdCByZXNldCA8aW5jaGVja25pbmc+XCIuIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MAorIzogZ2l0LWJpc2VjdC5zaDo0MDYKIG1zZ2lkICJObyBsb2dmaWxlIGdpdmVuIgogbXNnc3RyICJJbmdlbiBsb2dnZmlsIGFuZ2l2ZW4iCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzkxCisjOiBnaXQtYmlzZWN0LnNoOjQwNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJGZpbGUgZm9yIHJlcGxheWluZyIKIG1zZ3N0ciAia2FuIGludGUgbMOkc2EgJGZpbGUgZsO2ciB1cHBzcGVsbmluZyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0MDgKKyM6IGdpdC1iaXNlY3Quc2g6NDI0CiBtc2dpZCAiPz8gd2hhdCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/IgogbXNnc3RyICI/PyB2YWQgbWVuYXIgZHU/IgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyMAorIzogZ2l0LWJpc2VjdC5zaDo0MzYKICMsIHNoLWZvcm1hdAogbXNnaWQgInJ1bm5pbmcgJGNvbW1hbmQiCiBtc2dzdHIgImvDtnIgJGNvbW1hbmQiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDI3CisjOiBnaXQtYmlzZWN0LnNoOjQ0MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogImJpc2VjdCBydW4gZmFpbGVkOlxuIgpAQCAtODkwMSwxMSArOTQzMSwxMSBAQAogIlwiYmlzZWN0XCIta8O2cm5pbmdlbiBtaXNzbHlja2FkZXM6XG4iCiAiZmVsa29kICRyZXMgZnLDpW4gXCIkY29tbWFuZFwiIMOkciA8IDAgZWxsZXIgPj0gMTI4IgogCi0jOiBnaXQtYmlzZWN0LnNoOjQ1MworIzogZ2l0LWJpc2VjdC5zaDo0NjkKIG1zZ2lkICJiaXNlY3QgcnVuIGNhbm5vdCBjb250aW51ZSBhbnkgbW9yZSIKIG1zZ3N0ciAiXCJiaXNlY3RcIi1rw7ZybmluZ2VuIGthbiBpbnRlIGZvcnRzw6R0dGEgbMOkbmdyZSIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTkKKyM6IGdpdC1iaXNlY3Quc2g6NDc1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiYmlzZWN0IHJ1biBmYWlsZWQ6XG4iCkBAIC04OTE0LDcgKzk0NDQsNyBAQAogIlwiYmlzZWN0XCIta8O2cm5pbmdlbiBtaXNzbHlja2FkZXM6XG4iCiAiXCJiaXNlY3Rfc3RhdGUgJHN0YXRlXCIgYXZzbHV0YWRlcyBtZWQgZmVsa29kZW4gJHJlcyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NjYKKyM6IGdpdC1iaXNlY3Quc2g6NDgyCiBtc2dpZCAiYmlzZWN0IHJ1biBzdWNjZXNzIgogbXNnc3RyICJcImJpc2VjdFwiLWvDtnJuaW5nZW4gbHlja2FkZXMiCiAKQEAgLTg5MzIsNyArOTQ2Miw3IEBACiBtc2dpZCAiUHVsbCBpcyBub3QgcG9zc2libGUgYmVjYXVzZSB5b3UgaGF2ZSB1bm1lcmdlZCBmaWxlcy4iCiBtc2dzdHIgIkR1IGthbiBpbnRlIGfDtnJhIGVuIFwicHVsbFwiIGTDpSBkdSBoYXIgw6RuZHJpbmdhciBzb20gaW50ZSBjaGVja2F0cyBpbi4iCiAKLSM6IGdpdC1wdWxsLnNoOjE5NworIzogZ2l0LXB1bGwuc2g6MjAzCiBtc2dpZCAidXBkYXRpbmcgYW4gdW5ib3JuIGJyYW5jaCB3aXRoIGNoYW5nZXMgYWRkZWQgdG8gdGhlIGluZGV4IgogbXNnc3RyICJ1cHBkYXRlcmFyIGVuIG9mw7ZkZCBncmVuIG1lZCDDpG5kcmluZ2FyIHNvbSBsYWd0cyB0aWxsIGkgaW5kZXhldCIKIApAQCAtODk0MCw3ICs5NDcwLDcgQEAKICMuIFRoZSB3b3JraW5nIHRyZWUgYW5kIHRoZSBpbmRleCBmaWxlIGlzIHN0aWxsIGJhc2VkIG9uIHRoZQogIy4gJG9yaWdfaGVhZCBjb21taXQsIGJ1dCB3ZSBhcmUgbWVyZ2luZyBpbnRvICRjdXJyX2hlYWQuCiAjLiBGaXJzdCB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSB0byBtYXRjaCAkY3Vycl9oZWFkLgotIzogZ2l0LXB1bGwuc2g6MjI5CisjOiBnaXQtcHVsbC5zaDoyMzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiBmZXRjaCB1cGRhdGVkIHRoZSBjdXJyZW50IGJyYW5jaCBoZWFkLlxuIgpAQCAtODk1MSwxMSArOTQ4MSwxMSBAQAogIlZhcm5pbmc6IHNuYWJic3BvbGFyIGRpbiBhcmJldHNrYXRhbG9nIGZyw6VuXG4iCiAiVmFybmluZzogaW5jaGVja25pbmdlbiAkb3JpZ19oZWFkLiIKIAotIzogZ2l0LXB1bGwuc2g6MjU0CisjOiBnaXQtcHVsbC5zaDoyNjAKIG1zZ2lkICJDYW5ub3QgbWVyZ2UgbXVsdGlwbGUgYnJhbmNoZXMgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLYW4gaW50ZSBzbMOlIGlob3AgZmxlcmEgZ3JlbmFyIGkgZXR0IHRvbXQgaHV2dWQuIgogCi0jOiBnaXQtcHVsbC5zaDoyNTgKKyM6IGdpdC1wdWxsLnNoOjI2NAogbXNnaWQgIkNhbm5vdCByZWJhc2Ugb250byBtdWx0aXBsZSBicmFuY2hlcyIKIG1zZ3N0ciAiS2FuIGludGUgdXRmw7ZyYSBlbiBcInJlYmFzZVwiIG92YW5ww6UgZmxlcmEgZ3JlbmFyIgogCkBAIC05MjEyLDM4ICs5NzQyLDM4IEBACiBtc2dpZCAiKFRvIHJlc3RvcmUgdGhlbSB0eXBlIFwiZ2l0IHN0YXNoIGFwcGx5XCIpIgogbXNnc3RyICIoRsO2ciBhdHQgw6V0ZXJzdMOkbGxhIGRlbSwgc2tyaXYgXCJnaXQgc3Rhc2ggYXBwbHlcIikiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTEKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCBzdHJpcCBvbmUgY29tcG9uZW50IG9mZiB1cmwgJyRyZW1vdGV1cmwnIgogbXNnc3RyICJrYW4gaW50ZSB0YSBib3J0IGVuIGtvbXBvbmVudCBmcsOlbiB1cmw6ZW4gXCIkcmVtb3RldXJsXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTY4CisjOiBnaXQtc3VibW9kdWxlLnNoOjE5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAiIgogIkhpdHRhZGUgaW5nZW4gdW5kZXJtb2R1bG1hcHBuaW5nIGkgLmdpdG1vZHVsZXMgZsO2ciBzw7ZrdsOkZ2VuIFwiJHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIGtsb25hIFwiJHVybFwiIHRpbGwgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjIyMworIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkdpdGRpciAnJGEnIGlzIHBhcnQgb2YgdGhlIHN1Ym1vZHVsZSBwYXRoICckYicgb3IgdmljZSB2ZXJzYSIKIG1zZ3N0ciAiR2l0a2F0YWxvZyBcIiRhXCIgaW5nw6VyIGkgdW5kZXJrYXRhbG9nc8O2a3bDpGdlbiBcIiRiXCIgZWxsZXIgb212w6RudCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozMTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJyZXBvIFVSTDogJyRyZXBvJyBtdXN0IGJlIGFic29sdXRlIG9yIGJlZ2luIHdpdGggLi98Li4vIgogbXNnc3RyICJhcmtpdi1VUkw6IFwiJHJlcG9cIiBtw6VzdGUgdmFyYSBhYnNvbHV0IGVsbGVyIGLDtnJqYSBtZWQgLi98Li4vIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMzMworIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjYKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgogbXNnc3RyICJcIiRzbV9wYXRoXCIgZmlubnMgcmVkYW4gaSBpbmRleGV0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgZm9sbG93aW5nIHBhdGggaXMgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgpAQCAtOTI1NCwyMiArOTc4NCwyMiBAQAogIiRzbV9wYXRoXG4iCiAiQW52w6RuZCAtZiBvbSBkdSB2ZXJrbGlnZW4gdmlsbCBsw6RnZ2EgdGlsbCBkZW4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzU1CisjOiBnaXQtc3VibW9kdWxlLnNoOjM4OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGV4aXN0aW5nIHJlcG8gYXQgJyRzbV9wYXRoJyB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIkzDpGdnZXIgdGlsbCBiZWZpbnRsaWd0IGFya2l2IGkgXCIkc21fcGF0aFwiIGkgaW5kZXhldCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MzkwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJHNtX3BhdGgnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYSB2YWxpZCBnaXQgcmVwbyIKIG1zZ3N0ciAiXCIkc21fcGF0aFwiIGZpbm5zIHJlZGFuIG9jaCDDpHIgaW50ZSBldHQgZ2lsdGlndCBnaXQtYXJraXYiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzY1CisjOiBnaXQtc3VibW9kdWxlLnNoOjM5OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgogbXNnc3RyICJFbiBnaXQta2F0YWxvZyBmw7ZyIFwiJHNtX25hbWVcIiBoaXR0YWRlcyBsb2thbHQgbWVkIGZqw6Rycihhcik6IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2NworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byByZXVzZSB0aGlzIGxvY2FsIGdpdCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjbG9uaW5nIGFnYWluIGZyb20iCkBAIC05Mjc3LDE0ICs5ODA3LDE0IEBACiAiRsO2ciBhdHQgw6V0ZXJhbnbDpG5kYSBkZW4gbG9rYWxhIGdpdC1rYXRhbG9nZW4gaXN0w6RsbGV0IGbDtnIgYXR0IHDDpSBueXR0IGtsb25hICIKICJmcsOlbiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAidXNlIHRoZSAnLS1mb3JjZScgb3B0aW9uLiBJZiB0aGUgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpcyBub3QgdGhlIGNvcnJlY3QgcmVwbyIKIG1zZ3N0ciAiIgogImFudsOkbmQgZmxhZ2dhbiBcIi0tZm9yY2VcIi4gT20gZGVuIGxva2FsYSBnaXQta2F0YWxvZ2VuIGludGUgw6RyIHJpa3RpZ3QgYXJraXYiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzcwCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIm9yIHlvdSBhcmUgdW5zdXJlIHdoYXQgdGhpcyBtZWFucyBjaG9vc2UgYW5vdGhlciBuYW1lIHdpdGggdGhlICctLW5hbWUnICIKQEAgLTkyOTMsMTU0ICs5ODIzLDI2MSBAQAogImVsbGVyIG9tIGR1IMOkciBvc8Oka2VyIHDDpSB2YWQgZGV0IGlubmViw6RyLCB2w6RsaiBueXR0IG5hbW4gbWVkIGZsYWdnYW4gXCItLW5hbWUiCiAiXCIuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM3MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDUKICMsIHNoLWZvcm1hdAogbXNnaWQgIlJlYWN0aXZhdGluZyBsb2NhbCBnaXQgZGlyZWN0b3J5IGZvciBzdWJtb2R1bGUgJyRzbV9uYW1lJy4iCiBtc2dzdHIgIkFrdGl2ZXJhciBsb2thbCBnaXQta2F0YWxvZyBmw7ZyIHVuZGVybW9kdWxlbiBcIiRzbV9uYW1lXCIgcMOlIG55dHQuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM4NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MTcKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiS2FuIGludGUgY2hlY2thIHV0IHVuZGVybW9kdWxlbiBcIiRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg5CisjOiBnaXQtc3VibW9kdWxlLnNoOjQyMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiTWlzc2x5Y2thZGVzIGzDpGdnYSB0aWxsIHVuZGVybW9kdWxlbiBcIiRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzk0CisjOiBnaXQtc3VibW9kdWxlLnNoOjQzMQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1bmRlcm1vZHVsZW4gXCIkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQzNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkVudGVyaW5nICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICJHw6VyIGluIGkgXCIkcHJlZml4JHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDg4CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdG9wcGluZyBhdCAnJHNtX3BhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKIG1zZ3N0ciAiIgogIlN0b3BwYXIgcMOlIFwiJHNtX3BhdGhcIjsgc2tyaXB0ZXQgcmV0dXJuZXJhZGUgZW4gc3RhdHVzIHNraWxkIGZyw6VuIG5vbGwuIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQ5NQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MzIKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBpbiAuZ2l0bW9kdWxlcyIKIG1zZ3N0ciAiSGl0dGFkZSBpbmdlbiB1cmwgZsO2ciB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRzbV9wYXRoXCIgaSAuZ2l0bW9kdWxlcyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1cmwgZsO2ciB1bmRlcmthdGFsb2dzw7ZrdsOkZyBcIiRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTA2CisjOiBnaXQtc3VibW9kdWxlLnNoOjU0MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAiVW5kZXJtb2R1bGVuIFwiJG5hbWVcIiAoJHVybCkgcmVnaXN0cmVyYWQgZsO2ciBzw7ZrdsOkZ2VuIFwiJHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MTQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKICJNaXNzbHlja2FkZXMgcmVnaXN0cmVyYSB1cHBkYXRlcmluZ3Nsw6RnZSBmw7ZyIHVuZGVybW9kdWxzw7ZrdsOkZyBcIiRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjE0CisjOiBnaXQtc3VibW9kdWxlLnNoOjU4OAorIywgc2gtZm9ybWF0Cittc2dpZCAiVXNlICcuJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZGVpbml0aWFsaXplIGFsbCBzdWJtb2R1bGVzIgorbXNnc3RyICJBbnbDpG5kIFwiLlwiIG9tIGR1IHZlcmtsaWdlbiB2aWxsIGF2aW5pdGllcmEgYWxsYSB1bmRlcm1vZHVsZXIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgYSAuZ2l0IGRpcmVjdG9yeSIKK21zZ3N0ciAiVW5kZXJtb2R1bGVucyBhcmJldHNrYXRhbG9nIFwiJHNtX3BhdGhcIiBpbm5laMOlbGxlciBrYXRhbG9nZW4gXCIuZ2l0XCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjA0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCittc2dzdHIgIiIKKyIoYW52w6RuZCBcInJtIC1yZlwiIG9tIGR1IHZlcmtsaWdlbiB2aWxsIHRhIGJvcnQgZGVuIG9jaCBhbGwgZGVzcyBoaXN0b3JpaykiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEwCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvICIKKyJkaXNjYXJkIHRoZW0iCittc2dzdHIgIiIKKyJVbmRlcm1vZHVsZW5zIGFyYmV0c2thdGFsb2cgXCIkc21fcGF0aFwiIGhhciBsb2thbGEgw6RuZHJpbmdhcjsgXCItZlwiIGthc3RhciAiCisiYm9ydCBkZW0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICJSZW5zYWRlIGthdGFsb2dlbiBcIiRzbV9wYXRoXCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE0CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyIKK21zZ3N0ciAiS3VuZGUgaW50ZSB0YSBib3J0IHVuZGVya2F0YWxvZ2VucyBhcmJldHNrYXRhbG9nIFwiJHNtX3BhdGhcIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZW1wdHkgc3VibW9kdWxlIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICJLdW5kZSBpbnRlIHNrYXBhIHRvbSB1bmRlcm1vZHVsc2thdGFsb2cgXCIkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYyNgorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJVbmRlcm1vZHVsZW4gXCIkbmFtZVwiICgkdXJsKSBhdnJlZ2lzdHJlcmFkIGbDtnIgc8O2a3bDpGdlbiBcIiRzbV9wYXRoXCIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCiAiTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iCiBtc2dzdHIgIiIKLSJVbmRlcm1vZHVsZW4gXCIkc21fcGF0aFwiIGhhciBpbnRlIGluaXRpZXJhdHNcbiIKKyJVbmRlcm1vZHVsZW4gXCIkcHJlZml4JHNtX3BhdGhcIiBoYXIgaW50ZSBpbml0aWVyYXRzXG4iCiAiS2Fuc2tlIGR1IHZpbGwga8O2cmEgXCJ1cGRhdGUgLS1pbml0XCI/IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYyNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2FuIGludGUgaGl0dGEgYWt0dWVsbCByZXZpc2lvbiBpIHVuZGVybW9kdWxzw7ZrdsOkZyBcIiRzbV9wYXRoXCIiCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiIgorIkthbiBpbnRlIGhpdHRhIGFrdHVlbGwgcmV2aXNpb24gaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY0NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICJLYW4gaW50ZSBow6RtdGEgaSB1bmRlcm1vZHVsc8O2a3bDpGcgXCIkc21fcGF0aFwiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY2MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzcKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJLYW4gaW50ZSBvbWJhc2VyYSBcIiRzaGExXCIgaSB1bmRlcm1vZHVsc8O2a3bDpGcgXCIkc21fcGF0aFwiIgorbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiS2FuIGludGUgaMOkbXRhIGkgdW5kZXJtb2R1bHPDtmt2w6RnIFwiJHByZWZpeCRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjYxCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCi1tc2dzdHIgIlVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHNtX3BhdGhcIjogb21iYXNlcmFkZSBpbiBpIFwiJHNoYTFcIiIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIkthbiBpbnRlIG9tYmFzZXJhIFwiJHNoYTFcIiBpIHVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHByZWZpeCRzbV9wYXRoXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjY2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2FuIGludGUgc2zDpSBpaG9wIFwiJHNoYTFcIiBpIHVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHNtX3BhdGhcIiIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCittc2dzdHIgIlVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHByZWZpeCRzbV9wYXRoXCI6IG9tYmFzZXJhZGUgaW4gaSBcIiRzaGExXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjc5NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCi1tc2dzdHIgIlVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHNtX3BhdGhcIjogc2FtbWFuc2xhZ2VuIGkgXCIkc2hhMVwiIgorbXNnaWQgIlVuYWJsZSB0byBtZXJnZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICJLYW4gaW50ZSBzbMOlIGlob3AgXCIkc2hhMVwiIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcHJlZml4JHNtX3BhdGhcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NzIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJLYW4gaW50ZSBjaGVja2EgdXQgXCIkc2hhMVwiIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiIgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY3MwotIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKLW1zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiOiBjaGVja2FkZSB1dCBcIiRzaGExXCIiCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6Njk1IGdpdC1zdWJtb2R1bGUuc2g6MTAxNwotIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJNaXNzbHlja2FkZXMgcmVrdXJzZXJhIGluIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKK21zZ3N0ciAiVW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkcHJlZml4JHNtX3BhdGhcIjogc2FtbWFuc2xhZ2VuIGkgXCIkc2hhMVwiIgogCiAjOiBnaXQtc3VibW9kdWxlLnNoOjgwMworIywgc2gtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIkthbiBpbnRlIGNoZWNrYSB1dCBcIiRzaGExXCIgaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjgwNAorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCittc2dzdHIgIlVuZGVybW9kdWxzw7ZrdsOkZ2VuIFwiJHByZWZpeCRzbV9wYXRoXCI6IGNoZWNrYWRlIHV0IFwiJHNoYTFcIiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIk1pc3NseWNrYWRlcyByZWt1cnNlcmEgaW4gaSB1bmRlcm1vZHVsc8O2a3bDpGdlbiBcIiRwcmVmaXgkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjkzOQogbXNnaWQgIlRoZSAtLWNhY2hlZCBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgLS1maWxlcyBvcHRpb24iCiBtc2dzdHIgIkZsYWdnYW4gLS1jYWNoZWQga2FuIGludGUgYW52w6RuZGFzIG1lZCBmbGFnZ2FuIC0tZmlsZXMiCiAKICMuIHVuZXhwZWN0ZWQgdHlwZQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NDMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIG1vZGUgJG1vZF9kc3QiCiBtc2dzdHIgIm92w6RudGF0IGzDpGdlICRtb2RfZHN0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjg2MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo5OTcKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9zcmMiCiBtc2dzdHIgIiAgVmFybmluZzogJG5hbWUgaW5uZWjDpWxsZXIgaW50ZSBpbmNoZWNrbmluZyAkc2hhMV9zcmMiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODY0CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAgVmFybmluZzogJG5hbWUgaW5uZWjDpWxsZXIgaW50ZSBpbmNoZWNrbmluZyAkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAgVmFybmluZzogJG5hbWUgaW5uZWjDpWxsZXIgaW50ZSBpbmNoZWNrbmluZ2FyICRzaGExX3NyYyBvY2ggJHNoYTFfZHN0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjg5MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CiBtc2dpZCAiYmxvYiIKIG1zZ3N0ciAiYmxvYiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzAKLW1zZ2lkICIjIFN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgotbXNnc3RyICIjIFVuZGVybW9kdWxlciDDpG5kcmFkZSBtZW4gaW50ZSB1cHBkYXRlcmFkZToiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjYKK21zZ2lkICJTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKK21zZ3N0ciAiVW5kZXJtb2R1bGVyIMOkbmRyYWRlIG1lbiBpbnRlIHVwcGRhdGVyYWRlOiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzIKLW1zZ2lkICIjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCi1tc2dzdHIgIiMgVW5kZXJtb2R1bGVycyDDpG5kcmluZ2FyIGF0dCBjaGVja2EgaW46IgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY4Cittc2dpZCAiU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKK21zZ3N0ciAiVW5kZXJtb2R1bGVycyDDpG5kcmluZ2FyIGF0dCBjaGVja2EgaW46IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEwODAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1MworIywgc2gtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJNaXNzbHlja2FkZXMgcmVrdXJzZXJhIGluIGkgdW5kZXJtb2R1bHPDtmt2w6RnZW4gXCIkc21fcGF0aFwiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjEyMTYKICMsIHNoLWZvcm1hdAogbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIlN5bmtyb25pc2VyYXIgdW5kZXJtb2R1bC11cmwgZsO2ciBcIiRwcmVmaXgkc21fcGF0aFwiIgogCisjfiBtc2dpZCAiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gICdzdGF0dXMgLXVubyciCisjfiBtc2dzdHIgIkRldCB0b2cgJS4yZiBzZWt1bmRlciBhdHQgcsOka25hIG9zcMOlcmFkZSBmaWxlci4gXCJzdGF0dXMgLXVub1wiIgorCisjfiBtc2dpZCAibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZCIKKyN+IG1zZ3N0ciAia2Fuc2tlIGfDtnIgZGV0IHNuYWJiYXJlLCBtZW4gZHUgbcOlc3RlIHZhcmEgZsO2cnNpa3RpZyBzw6UgYXR0IGR1IgorCisjfiBtc2dpZCAibmV3IGZpbGVzIHlvdXJzZWxmIChzZWUgJ2dpdCBoZWxwIHN0YXR1cycpLiIKKyN+IG1zZ3N0ciAiaW50ZSBnbMO2bW1lciBsw6RnZ2EgdGlsbCBmaWxlciBzasOkbHYgKHNlIFwiZ2l0IGhlbHAgc3RhdHVzXCIpIgorCisjfiBtc2dpZCAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1vcHRzXSBbLS1dIFs8Y29tbWl0LWlkPi4uLiBdIgorI34gbXNnc3RyICIiCisjfiAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW3Jldi1mbGFnZ29yXSBbLS1dIFs8aW5jaGVja25pbmctaWQ+Li4uIF0iCisKKyN+IG1zZ2lkICJTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYSBzcGVjaWZpYyBjb21tYW5kLiIKKyN+IG1zZ3N0ciAiIgorI34gIlNlIFwiZ2l0IGhlbHAgPGtvbW1hbmRvPlwiIGbDtnIgbWVyIGluZm9ybWF0aW9uIG9tIGV0dCBzcGVjaWZpa3Qga29tbWFuZG8uIgorCisjfiBtc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgorI34gbXNnc3RyICJhbnbDpG5kIGFsbGEgcmVmZXJlbnNlciBpIC5naXQvcmVmcyIKKworI34gbXNnaWQgInVzZSBhbnkgdGFnIGluIC5naXQvcmVmcy90YWdzIgorI34gbXNnc3RyICJhbnbDpG5kIGFsbGEgdGFnZ2FyIGkgLmdpdC9yZWZzL3RhZ3MiCisKKyN+IG1zZ2lkICJiYWQgb2JqZWN0ICVzIgorI34gbXNnc3RyICJmZWxha3RpZ3Qgb2JqZWt0ICVzIgorCisjfiBtc2dpZCAiYm9ndXMgY29tbWl0dGVyIGluZm8gJXMiCisjfiBtc2dzdHIgImZlbGFrdGlnIGluY2hlY2thcmluZm9ybWF0aW9uICVzIgorCisjfiBtc2dpZCAiY2FuJ3QgZmRvcGVuICdzaG93JyBvdXRwdXQgZmQiCisjfiBtc2dzdHIgImt1bmRlIGludGUgw7ZwcG5hIChmZG9wZW4pIFwic2hvd1wiLXV0ZGF0YS1maWxoYW5kdGFnIgorCisjfiBtc2dpZCAiZmFpbGVkIHRvIGNsb3NlIHBpcGUgdG8gJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKKyN+IG1zZ3N0ciAia3VuZGUgaW50ZSBzdMOkbmdhIHLDtnJldCB0aWxsIFwic2hvd1wiIGbDtnIgb2JqZWt0ZXQgXCIlc1wiIgorCisjfiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKKyN+IG1zZ3N0ciAiRHUgaGFyIGluZ2VuIGdpbHRpZyBIRUFEIgorCisjfiBtc2dpZCAib29wcyIKKyN+IG1zZ3N0ciAiaG9wcHNhbiIKKworI34gbXNnaWQgIldvdWxkIG5vdCByZW1vdmUgJXNcbiIKKyN+IG1zZ3N0ciAiU2t1bGxlIGludGUgdGEgYm9ydCAlc1xuIgorCisjfiBtc2dpZCAiTm90IHJlbW92aW5nICVzXG4iCisjfiBtc2dzdHIgIlRhciBpbnRlIGJvcnQgJXNcbiIKKworI34gbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgorI34gbXNnc3RyICJLdW5kZSBpbnRlIGzDpHNhIGluZGV4ZXQiCisKICN+IG1zZ2lkICJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+XSkiCiAjfiBtc2dzdHIgImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbW4+ICgtYSB8IC1kIHwgPGdyZW4+XSkiCiAKQEAgLTk1MjcsOSArMTAxNjQsNiBAQAogI34gbXNnaWQgIiMgQ2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgogI34gbXNnc3RyICIjIMOEbmRyYWRlIG1lbiBpbnRlIHVwcGRhdGVyYWRlOiIKIAotI34gbXNnaWQgIkEgYnJhbmNoIG5hbWVkICclcycgYWxyZWFkeSBleGlzdHMuIgotI34gbXNnc3RyICJEZXQgZmlubnMgcmVkYW4gZW4gZ3JlbiBzb20gaGV0ZXIgXCIlc1wiIgotCiAjfiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgYWxsIDMgdmVyc2lvbnMiCiAjfiBtc2dzdHIgInPDtmt2w6RnZW4gXCIlc1wiIGhhciBpbnRlIGFsbGEgMyB2ZXJzaW9uZXJuYSIKIApAQCAtOTU5Miw5ICsxMDIyNiw2IEBACiAjfiBtc2dpZCAiQ291bGQgbm90IGV4dHJhY3QgYXV0aG9yIHRpbWUgZnJvbSAlcyIKICN+IG1zZ3N0ciAiS3VuZGUgaW50ZSBow6RtdGEgZsO2cmZhdHRhcnRpZCBmcsOlbiAlcyIKIAotI34gbXNnaWQgIk5vIGF1dGhvciBpbmZvcm1hdGlvbiBmb3VuZCBpbiAlcyIKLSN+IG1zZ3N0ciAiSGl0dGFkZSBpbmdlbiBmw7ZyZmF0dGFyaW5mb3JtYXRpb24gaSAlcyIKLQogI34gbXNnaWQgImNoZXJyeS1waWNrIC0tZmYgY2Fubm90IGJlIHVzZWQgd2l0aCAtLXNpZ25vZmYiCiAjfiBtc2dzdHIgImNoZXJyeS1waWNrIC0tZmYga2FuIGludGUgYW52w6RuZGFzIG1lZCAtLXNpZ25vZmYiCiAKZGlmZiAtLWdpdCBhL3BvL3ZpLnBvIGIvcG8vdmkucG8KaW5kZXggMmNjZGY4Ni4uYzZhZjhkNSAxMDA2NDQKLS0tIGEvcG8vdmkucG8KKysrIGIvcG8vdmkucG8KQEAgLTEsMjYgKzEsMjggQEAKICMgVmlldG5hbWVzZSB0cmFuc2xhdGlvbiBmb3IgR0lULUNPUkUuCi0jIENvcHlyaWdodCAoQykgMjAxMiwgVHLhuqduIE5n4buNYyBRdcOibi4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgVHLhuqduIE5n4buNYyBRdcOibi4KICMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGdpdC1jb3JlIHBhY2thZ2UuCi0jIEZpcnN0IHRyYW5zbGF0ZWQgYnkgVHLhuqduIE5n4buNYyBRdcOibiA8dm53aWxkbWFuQGdtYWlsLmNvbT4sIDIwMTIuCisjIEZpcnN0IHRyYW5zbGF0ZWQgYnkgVHLhuqduIE5n4buNYyBRdcOibiA8dm53aWxkbWFuQGdtYWlsLmNvbT4sIDIwMTItMjAxMy4KICMgTmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eSA8cGNsb3Vkc0BnbWFpbC5jb20+LCAyMDEyLgogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LXYxLjguMC4xLTM0Ny1nZjk0YzNcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdpdC12MS44LjMtcmMwLTIwLWdjNmJjN1xuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBHaXQgTWFpbGluZyBMaXN0IDxnaXRAdmdlci5rZXJuZWwub3JnPlxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEyLTExLTMwIDEyOjQwKzA4MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTExLTMwIDEzOjQwKzA3MDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMy0wNC0zMCAwODoyNSswODAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMy0wNS0wMSAxNDoyNiswNzAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBUcuG6p24gTmfhu41jIFF1w6JuIDx2bndpbGRtYW5AZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFZpZXRuYW1lc2UgPHRyYW5zbGF0aW9uLXRlYW0tdmlAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgogIkxhbmd1YWdlOiB2aVxuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlRlYW0tV2Vic2l0ZTogPGh0dHA6Ly90cmFuc2xhdGlvbnByb2plY3Qub3JnL3RlYW0vdmkuaHRtbD5cbiIKICJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0xO1xuIgogIlgtUG9lZGl0LVNvdXJjZUNoYXJzZXQ6IFVURi04XG4iCiAiWC1Qb2VkaXQtQmFzZXBhdGg6IC4uL1xuIgorIlgtR2VuZXJhdG9yOiBQb2VkaXQgMS41LjVcbiIKIAotIzogYWR2aWNlLmM6NDAKKyM6IGFkdmljZS5jOjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgImhpbnQ6ICUuKnNcbiIKIG1zZ3N0ciAiZ+G7o2kgw706ICUuKnNcbiIKQEAgLTI5LDcgKzMxLDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo3MAorIzogYWR2aWNlLmM6ODMKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtNjAsODEgKzYyLDIwNyBAQAogbXNnaWQgImdpdCBhcmNoaXZlIC0tcmVtb3RlIDxyZXBvPiBbLS1leGVjIDxjbWQ+XSAtLWxpc3QiCiBtc2dzdHIgImdpdCBhcmNoaXZlIC0tcmVtb3RlIDxraG8+IFstLWV4ZWMgPGzhu4duaD5dIC0tbGlzdCIKIAotIzogYXJjaGl2ZS5jOjMyMgorIzogYXJjaGl2ZS5jOjMyMwogbXNnaWQgImZtdCIKIG1zZ3N0ciAiZm10IgogCi0jOiBhcmNoaXZlLmM6MzIyCisjOiBhcmNoaXZlLmM6MzIzCiBtc2dpZCAiYXJjaGl2ZSBmb3JtYXQiCiBtc2dzdHIgIsSR4buLbmggZOG6oW5nIGzGsHUgdHLhu68iCiAKLSM6IGFyY2hpdmUuYzozMjMgYnVpbHRpbi9sb2cuYzoxMDg0CisjOiBhcmNoaXZlLmM6MzI0IGJ1aWx0aW4vbG9nLmM6MTEyNgogbXNnaWQgInByZWZpeCIKIG1zZ3N0ciAidGnhu4FuIHThu5EiCiAKLSM6IGFyY2hpdmUuYzozMjQKKyM6IGFyY2hpdmUuYzozMjUKIG1zZ2lkICJwcmVwZW5kIHByZWZpeCB0byBlYWNoIHBhdGhuYW1lIGluIHRoZSBhcmNoaXZlIgogbXNnc3RyICJu4buRaSB0aMOqbSB0aeG7gW4gdOG7kSB2w6BvIHThu6tuZyDEkcaw4budbmcgZOG6q24gdOG6rXAgdGluIHRyb25nIGtobyBsxrB1IgogCi0jOiBhcmNoaXZlLmM6MzI1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkxIGJ1aWx0aW4vYmxhbWUuYzoyMzkwCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MSBidWlsdGluL2NvbmZpZy5jOjU1IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDIKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDQgYnVpbHRpbi9ncmVwLmM6NzE1IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NwotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NCBidWlsdGluL2xzLWZpbGVzLmM6NDk3IGJ1aWx0aW4vbm90ZXMuYzo1NDAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTcgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDcgcGFyc2Utb3B0aW9ucy5oOjE0OQorIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo4OCBidWlsdGluL2JsYW1lLmM6MjM3MQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzIgYnVpbHRpbi9jb25maWcuYzo1NSBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY3IGJ1aWx0aW4vZ3JlcC5jOjcxNSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTAgYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25vdGVzLmM6NTM2CisjOiBidWlsdGluL25vdGVzLmM6NjkzIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA3IHBhcnNlLW9wdGlvbnMuaDoxNDkKIG1zZ2lkICJmaWxlIgogbXNnc3RyICJ04bqtcC10aW4iCiAKLSM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6OTIKKyM6IGFyY2hpdmUuYzozMjcgYnVpbHRpbi9hcmNoaXZlLmM6ODkKIG1zZ2lkICJ3cml0ZSB0aGUgYXJjaGl2ZSB0byB0aGlzIGZpbGUiCiBtc2dzdHIgImdoaSBraG8gbMawdSB2w6BvIHThuq1wIHRpbiBuw6B5IgogCi0jOiBhcmNoaXZlLmM6MzI4CisjOiBhcmNoaXZlLmM6MzI5CiBtc2dpZCAicmVhZCAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAixJHhu41jIC5naXRhdHRyaWJ1dGVzIHRyb25nIHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MiCiAKLSM6IGFyY2hpdmUuYzozMjkKLW1zZ2lkICJyZXBvcnQgYXJjaGl2ZWQgZmlsZXMgb24gc3RkZXJyIgotbXNnc3RyICJsaeG7h3Qga8OqIGPDoWMgdOG6rXAgdGluIMSRxrDhu6NjIGzGsHUgdHLhu68gdsOgbyBzdGRlcnIgKMSR4bqndSByYSBs4buXaSBjaHXhuqluKSIKLQogIzogYXJjaGl2ZS5jOjMzMAorbXNnaWQgInJlcG9ydCBhcmNoaXZlZCBmaWxlcyBvbiBzdGRlcnIiCittc2dzdHIgImxp4buHdCBrw6ogY8OhYyB04bqtcCB0aW4gxJHGsOG7o2MgbMawdSB0cuG7ryB2w6BvIHN0ZGVyciAoxJHhuqd1IHJhIGzhu5dpIHRpw6p1IGNodeG6qW4pIgorCisjOiBhcmNoaXZlLmM6MzMxCiBtc2dpZCAic3RvcmUgb25seSIKIG1zZ3N0ciAiY2jhu4kgbMawdSAoa2jDtG5nIG7DqW4pIgogCi0jOiBhcmNoaXZlLmM6MzMxCisjOiBhcmNoaXZlLmM6MzMyCiBtc2dpZCAiY29tcHJlc3MgZmFzdGVyIgogbXNnc3RyICJuw6luIG5oYW5oIGjGoW4iCiAKLSM6IGFyY2hpdmUuYzozMzkKKyM6IGFyY2hpdmUuYzozNDAKIG1zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCiBtc2dzdHIgIm7DqW4gbmjhu48gaMahbiIKIAotIzogYXJjaGl2ZS5jOjM0MgorIzogYXJjaGl2ZS5jOjM0MwogbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKIG1zZ3N0ciAibGnhu4d0IGvDqiBjw6FjIGtp4buDdSBuw6luIMSRxrDhu6NjIGjhu5cgdHLhu6MiCiAKLSM6IGFyY2hpdmUuYzozNDQgYnVpbHRpbi9hcmNoaXZlLmM6OTMgYnVpbHRpbi9jbG9uZS5jOjg1CisjOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkwIGJ1aWx0aW4vY2xvbmUuYzo4NgogbXNnaWQgInJlcG8iCiBtc2dzdHIgImtobyIKIAotIzogYXJjaGl2ZS5jOjM0NSBidWlsdGluL2FyY2hpdmUuYzo5NAorIzogYXJjaGl2ZS5jOjM0NiBidWlsdGluL2FyY2hpdmUuYzo5MQogbXNnaWQgInJldHJpZXZlIHRoZSBhcmNoaXZlIGZyb20gcmVtb3RlIHJlcG9zaXRvcnkgPHJlcG8+IgogbXNnc3RyICJuaOG6rW4ga2hvIGzGsHUgdOG7qyBraG8gY2jhu6lhIDxraG8+IHRyw6puIG3DoXkgY2jhu6ciCiAKLSM6IGFyY2hpdmUuYzozNDYgYnVpbHRpbi9hcmNoaXZlLmM6OTUgYnVpbHRpbi9ub3Rlcy5jOjYxOQorIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5MiBidWlsdGluL25vdGVzLmM6NjE1CiBtc2dpZCAiY29tbWFuZCIKIG1zZ3N0ciAibOG7h25oIgogCi0jOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjk2CisjOiBhcmNoaXZlLmM6MzQ4IGJ1aWx0aW4vYXJjaGl2ZS5jOjkzCiBtc2dpZCAicGF0aCB0byB0aGUgcmVtb3RlIGdpdC11cGxvYWQtYXJjaGl2ZSBjb21tYW5kIgogbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHhur9uIGzhu4duaCBnaXQtdXBsb2FkLXBhY2sgdHLDqm4gbcOheSBjaOG7pyIKIAogIzogYXR0ci5jOjI1OQogbXNnaWQgIiIKLSJOZWdhdGl2ZSBwYXR0ZXJucyBhcmUgZm9yYmlkZGVuIGluIGdpdCBhdHRyaWJ1dGVzXG4iCisiTmVnYXRpdmUgcGF0dGVybnMgYXJlIGlnbm9yZWQgaW4gZ2l0IGF0dHJpYnV0ZXNcbiIKICJVc2UgJ1xcIScgZm9yIGxpdGVyYWwgbGVhZGluZyBleGNsYW1hdGlvbi4iCiBtc2dzdHIgIiIKLSJN4bqldSBk4bqhbmcgcGjhu6cgxJHhu4tuaCBi4buLIGPhuqVtIGNo4buJIGTDuW5nIHRyb25nIGPDoWMgdGh14buZYyB0w61uaCBj4bunYSBnaXRcbiIKLSJEw7luZyAnXFwhJyBjaG8gY8OhYyBjaHXhu5dpIHbEg24gYuG6o24gY8OzIGThuqV1IGNo4bqlbSB0aGFuLiIKKyJDw6FjIG3huqt1IGThuqFuZyBwaOG7pyDEkeG7i25oIGLhu4sgY+G6pW0gZMO5bmcgY2hvIGPDoWMgdGh14buZYyB0w61uaCBj4bunYSBnaXRcbiIKKyJEw7luZyDigJxcXCHigJ0gY2hvIGPDoWMgY2h14buXaSB2xINuIGLhuqNuIGPDsyBk4bqldSBjaOG6pW0gdGhhbiBk4bqrbiDEkeG6p3UuIgorCisjOiBicmFuY2guYzo2MAorIywgYy1mb3JtYXQKK21zZ2lkICJOb3Qgc2V0dGluZyBicmFuY2ggJXMgYXMgaXRzIG93biB1cHN0cmVhbS4iCittc2dzdHIgIkNoxrBhIGPDoGkgxJHhurd0IG5ow6FuaCAlcyBuaMawIGzDoCB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pIGPhu6dhIG7Dsy4iCisKKyM6IGJyYW5jaC5jOjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIGJyYW5jaCAlcyBmcm9tICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorIk5ow6FuaCAlcyBjw6BpIMSR4bq3dCDEkeG7gyB0aGVvIGTDtWkgduG6v3QgbmjDoW5oIG3DoXkgY2jhu6cgJXMgdOG7qyAlcyBi4bqxbmcgY8OhY2ggcmViYXNlLiIKKworIzogYnJhbmNoLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgYnJhbmNoICVzIGZyb20gJXMuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCBuaMOhbmggbcOheSBjaOG7pyAlcyB04burICVzLiIKKworIzogYnJhbmNoLmM6ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCBuaMOhbmggbuG7mWkgYuG7mSAlcyBi4bqxbmcgY8OhY2ggcmViYXNlLiIKKworIzogYnJhbmNoLmM6ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCBicmFuY2ggJXMuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCBuaMOhbmggbuG7mWkgYuG7mSAlcy4iCisKKyM6IGJyYW5jaC5jOjkyCisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgcmVtb3RlIHJlZiAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIk5ow6FuaCAlcyBjw6BpIMSR4bq3dCDEkeG7gyB0aGVvIHbhur90IG5ow6FuaCBtw6F5IGNo4bunICVzIGLhurFuZyBjw6FjaCByZWJhc2UuIgorCisjOiBicmFuY2guYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSByZWYgJXMuIgorbXNnc3RyICJOaMOhbmggJXMgY8OgaSDEkeG6t3QgxJHhu4MgdGhlbyB24bq/dCB0aGFtIGNoaeG6v3UgbcOheSBjaOG7pyAlcy4iCisKKyM6IGJyYW5jaC5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAiIgorIk5ow6FuaCAlcyBjw6BpIMSR4bq3dCDEkeG7gyB0aGVvIGTDtWkgduG6v3QgdGhhbSBjaGnhur91IG7hu5lpIGLhu5kgJXMgYuG6sW5nIGPDoWNoIHJlYmFzZS4iCisKKyM6IGJyYW5jaC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgcmVmICVzLiIKK21zZ3N0ciAiTmjDoW5oICVzIGPDoGkgxJHhurd0IMSR4buDIHRoZW8gZMO1aSB0aGFtIGNoaeG6v3UgbuG7mWkgYuG7mSAlcy4iCisKKyM6IGJyYW5jaC5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIKK21zZ3N0ciAiVGhlbyB24bq/dCBjaMawYSDEkcaw4bujYyBjw6BpIMSR4bq3dDogdMOqbiBxdcOhIGTDoGk6ICVzIgorCisjOiBicmFuY2guYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHRyYWNraW5nOiBhbWJpZ3VvdXMgaW5mb3JtYXRpb24gZm9yIHJlZiAlcyIKK21zZ3N0ciAiS2jDtG5nIHRoZW8gduG6v3Q6IHRow7RuZyB0aW4gY2jGsGEgcsO1IHLDoG5nIGNobyB0aGFtIGNoaeG6v3UgJXMiCisKKyM6IGJyYW5jaC5jOjE4MgorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIGJyYW5jaCBuYW1lLiIKK21zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdMOqbiBuaMOhbmggaOG7o3AgbOG7hy4iCisKKyM6IGJyYW5jaC5jOjE4NworIywgYy1mb3JtYXQKK21zZ2lkICJBIGJyYW5jaCBuYW1lZCAnJXMnIGFscmVhZHkgZXhpc3RzLiIKK21zZ3N0ciAixJDDoyBjw7MgbmjDoW5oIG1hbmcgdMOqbiDigJwlc+KAnS4iCisKKyM6IGJyYW5jaC5jOjE5NQorbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMOpcCBideG7mWMgY+G6rXAgbmjhuq10IG5ow6FuaCBoaeG7h24gaMOgbmguIgorCisjOiBicmFuY2guYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldHVwIHRyYWNraW5nIGluZm9ybWF0aW9uOyBzdGFydGluZyBwb2ludCAnJXMnIGlzIG5vdCBhIGJyYW5jaC4iCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4MgY8OgaSDEkeG6t3QgdGjDtG5nIHRpbiB0aGVvIHbhur90OyDEkWnhu4NtIGLhuq90IMSR4bqndSDigJwlc+KAnSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCAiCisibmjDoW5oLiIKKworIzogYnJhbmNoLmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgInRoZSByZXF1ZXN0ZWQgdXBzdHJlYW0gYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIm5ow6FuaCBkw7JuZyBuZ8aw4bujYyDEkcOjIHnDqnUgY+G6p3Ug4oCcJXPigJ0gY2jGsGEgc+G6tW4gY8OzIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyJO4bq/dSBi4bqhbiBjw7Mgw70gxJHhu4tuaCB0csOqbiBjxqEgc+G7nyBjw7RuZyB2aeG7h2MgY+G7p2EgYuG6oW4gdHLDqm4gbmjDoW5oIGTDsm5nIG5nxrDhu6NjXG4iCisiKHVwc3RyZWFtKSBjw6FpIG3DoCDEkcOjIHPhurVuIGPDsyB0csOqbiBtw6F5IGNo4bunLCBi4bqhbiBj4bqnbiBjaOG6oXlcbiIKKyJs4buHbmggXCJnaXQgZmV0Y2hcIiDEkeG7gyBs4bqleSBuw7MgduG7gS5cbiIKKyJcbiIKKyJO4bq/dSBi4bqhbiBjw7Mgw70gxJHhu4tuaCBwdXNoIGzDqm5oIG3hu5l0IG5ow6FuaCBu4buZaSBi4buZIG3hu5tpIGPDoWkgbcOgXG4iCisic+G6vSB0aGVvIGTDtWkgYuG6o24gxJHhu5FpIGNoaeG6v3UgbcOheSBjaOG7pyBj4bunYSBuw7MsIGLhuqFuIGPhuqduIGTDuW5nIGzhu4duaFxuIgorIlwiZ2l0IHB1c2ggLXVcIiDEkeG7gyDEkeG6t3QgY+G6pXUgaMOsbmggZMOybmcgbmfGsOG7o2MgYuG6oW4gbXXhu5FuIHB1c2guIgorCisjOiBicmFuY2guYzoyNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWU6ICclcycuIgorbXNnc3RyICJLaMO0bmcgcGjhuqNpIHTDqm4gxJHhu5FpIHTGsOG7o25nIGjhu6NwIGzhu4c6IOKAnCVz4oCdLiIKKworIzogYnJhbmNoLmM6MjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFtYmlndW91cyBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIlTDqm4gxJHhu5FpIHTGsOG7o25nIGNoxrBhIHLDtSByw6BuZzog4oCcJXPigJ0uIgorCisjOiBicmFuY2guYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IGEgdmFsaWQgYnJhbmNoIHBvaW50OiAnJXMnLiIKK21zZ3N0ciAiTmjDoW5oIGtow7RuZyBo4bujcCBs4buHOiDigJwlc+KAnS4iCisKKyM6IGJyYW5jaC5jOjI4MQorbXNnaWQgIkZhaWxlZCB0byBsb2NrIHJlZiBmb3IgdXBkYXRlIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkga2jDs2EgdGhhbSBjaGnhur91IChyZWYpIMSR4buDIGPhuq1wIG5o4bqtdCIKKworIzogYnJhbmNoLmM6Mjk5Cittc2dpZCAiRmFpbGVkIHRvIHdyaXRlIHJlZiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGdoaSB0aGFtIGNoaeG6v3UgKHJlZikiCiAKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdApAQCAtMTQ2LDQ0ICsyNzQsNDQgQEAKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVhZGVyOiAlcyVzICglZCkiCiBtc2dzdHIgInBo4bqnbiDEkeG6p3UgKGhlYWRlcikga2jDtG5nIMSRxrDhu6NjIHRo4burYSBuaOG6rW46ICVzJXMgKCVkKSIKIAotIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzQKKyM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6Njc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIOKAnCVz4oCdIgogCiAjOiBidW5kbGUuYzoxNDAKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIHRoZXNlIHByZXJlcXVpc2l0ZSBjb21taXRzOiIKLW1zZ3N0ciAiS2jDsyBjaOG7qWEgdGhp4bq/dSBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY+G6p24gdHLGsOG7m2MgaOG6v3QgbsOgeToiCittc2dzdHIgIktobyBjaOG7qWEgdGhp4bq/dSBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY+G6p24gdHLGsOG7m2MgaOG6v3QgbsOgeToiCiAKLSM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo1NjIgc2VxdWVuY2VyLmM6OTk0IGJ1aWx0aW4vbG9nLmM6MjkwCi0jOiBidWlsdGluL2xvZy5jOjczMiBidWlsdGluL2xvZy5jOjEzMTkgYnVpbHRpbi9sb2cuYzoxNTM1IGJ1aWx0aW4vbWVyZ2UuYzozNDcKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxODEKKyM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo2NTEgc2VxdWVuY2VyLmM6MTEwMSBidWlsdGluL2xvZy5jOjMwMAorIzogYnVpbHRpbi9sb2cuYzo3NzAgYnVpbHRpbi9sb2cuYzoxMzQ0IGJ1aWx0aW4vbG9nLmM6MTU3MCBidWlsdGluL21lcmdlLmM6MzQ5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTU1CiBtc2dpZCAicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiCiBtc2dzdHIgImPDoGkgxJHhurd0IHZp4buHYyBkaSBjaHV54buDbiBxdWEgY8OhYyDEkWnhu4NtIHjDqXQgbOG6oWkgZ+G6t3AgbOG7l2kiCiAKICM6IGJ1bmRsZS5jOjE4NgogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIGNvbnRhaW5zICVkIHJlZiIKLW1zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWZzIgotbXNnc3RyWzBdICJCdW5kbGUgY2jhu6lhICVkIHRoYW0gY2hp4bq/dSAocmVmcykiCi1tc2dzdHJbMV0gIkJ1bmRsZSBjaOG7qWEgJWQgdGhhbSBjaGnhur91IChyZWZzKSIKK21zZ2lkICJUaGUgYnVuZGxlIGNvbnRhaW5zIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAiQnVuZGxlIGNo4bupYSB0aGFtIGNoaeG6v3UgKHJlZikgbsOgeToiCittc2dzdHJbMV0gIkJ1bmRsZSBjaOG7qWEgJWQgdGhhbSBjaGnhur91IChyZWYpOiIKIAotIzogYnVuZGxlLmM6MTkyCisjOiBidW5kbGUuYzoxOTMKIG1zZ2lkICJUaGUgYnVuZGxlIHJlY29yZHMgYSBjb21wbGV0ZSBoaXN0b3J5LiIKIG1zZ3N0ciAiTOG7h25oIGJ1bmRsZSBnaGkgbOG6oWkgdG/DoG4gYuG7mSBs4buLY2ggc+G7rS4iCiAKICM6IGJ1bmRsZS5jOjE5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnMiCi1tc2dzdHJbMF0gIkzhu4duaCBidW5kbGUgecOqdSBj4bqndSB0aGFtIGNoaeG6v3UgKHJlZnMpIG7DoHkiCi1tc2dzdHJbMV0gIkzhu4duaCBidW5kbGUgecOqdSBj4bqndSAlZCB0aGFtIGNoaeG6v3UgKHJlZnMpIG7DoHkiCittc2dpZCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGlzIHJlZjoiCittc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgcmVxdWlyZXMgdGhlc2UgJWQgcmVmczoiCittc2dzdHJbMF0gIkzhu4duaCBidW5kbGUgecOqdSBj4bqndSB0aGFtIGNoaeG6v3UgbsOgeToiCittc2dzdHJbMV0gIkzhu4duaCBidW5kbGUgecOqdSBj4bqndSAlZCB0aGFtIGNoaeG6v3UgKHJlZnMpIG7DoHk6IgogCiAjOiBidW5kbGUuYzoyOTQKIG1zZ2lkICJyZXYtbGlzdCBkaWVkIgogbXNnc3RyICJyZXYtbGlzdCDEkcOjIGNo4bq/dCIKIAotIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTIxNSBidWlsdGluL3Nob3J0bG9nLmM6Mjg0CisjOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAixJHhu5FpIHPhu5Ega2jDtG5nIMSRxrDhu6NjIHRo4burYSBuaOG6rW46ICVzIgpAQCAtMzA5LDIyICs0MzcsMjIgQEAKIG1zZ3N0clswXSAiJWx1IG7Eg20gdHLGsOG7m2MiCiBtc2dzdHJbMV0gIiVsdSBuxINtIHRyxrDhu5tjIgogCi0jOiBkaWZmLmM6MTExCisjOiBkaWZmLmM6MTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclcydcbiIKLW1zZ3N0ciAiICBH4bq3cCBs4buXaSBraGkgcGjDom4gdMOtY2ggZGlyc3RhdCBj4bqvdCBi4buPIHBo4bqnbiB0csSDbSAnJXMnXG4iCittc2dzdHIgIiAgR+G6t3AgbOG7l2kga2hpIHBow6JuIHTDrWNoIGRpcnN0YXQgY+G6r3QgYuG7jyBwaOG6p24gdHLEg20g4oCcJXPigJ1cbiIKIAotIzogZGlmZi5jOjExNgorIzogZGlmZi5jOjExNwogIywgYy1mb3JtYXQKIG1zZ2lkICIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyVzJ1xuIgotbXNnc3RyICIgIEtow7RuZyBoaeG7g3UgxJHhu5FpIHPhu5EgZGlyc3RhdCAnJXMnXG4iCittc2dzdHIgIiAgS2jDtG5nIGhp4buDdSDEkeG7kWkgc+G7kSBkaXJzdGF0IOKAnCVz4oCdXG4iCiAKLSM6IGRpZmYuYzoxOTQKKyM6IGRpZmYuYzoyMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biB2YWx1ZSBmb3IgJ2RpZmYuc3VibW9kdWxlJyBjb25maWcgdmFyaWFibGU6ICclcyciCi1tc2dzdHIgIktow7RuZyBoaeG7g3UgZ2nDoSB0cuG7iyBjaG8gYmnhur9uIGPhuqV1IGjDrG5oIOKAnGRpZmYuc3VibW9kdWxl4oCdOiBgJXMnIgorbXNnc3RyICJLaMO0bmcgaGnhu4N1IGdpw6EgdHLhu4sgY2hvIGJp4bq/biBj4bqldSBow6xuaCDigJxkaWZmLnN1Ym1vZHVsZeKAnTog4oCcJXPigJ0iCiAKLSM6IGRpZmYuYzoyMzcKKyM6IGRpZmYuYzoyNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZvdW5kIGVycm9ycyBpbiAnZGlmZi5kaXJzdGF0JyBjb25maWcgdmFyaWFibGU6XG4iCkBAIC0zMzMsNyArNDYxLDcgQEAKICJUw6xtIHRo4bqleSBjw6FjIGzhu5dpIHRyb25nIGJp4bq/biBj4bqldSBow6xuaCDigJxkaWZmLmRpcnN0YXTigJ06XG4iCiAiJXMiCiAKLSM6IGRpZmYuYzozNDk0CisjOiBkaWZmLmM6MzQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgpAQCAtMzQyLDM0ICs0NzAsNDQgQEAKICJH4bq3cCBs4buXaSBraGkgcGjDom4gdMOtY2ggxJHhu5FpIHPhu5EgdMO5eSBjaOG7jW4gLS1kaXJzdGF0Ly1YOlxuIgogIiVzIgogCi0jOiBkaWZmLmM6MzUwOAorIzogZGlmZi5jOjM0OTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHBhcnNlIC0tc3VibW9kdWxlIG9wdGlvbiBwYXJhbWV0ZXI6ICclcyciCi1tc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiB0w61jaCDEkeG7kWkgc+G7kSB0w7l5IGNo4buNbiAtLXN1Ym1vZHVsZTogYCVzJyIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHBow6JuIHTDrWNoIMSR4buRaSBz4buRIHTDuXkgY2jhu41uIC0tc3VibW9kdWxlOiDigJwlc+KAnSIKIAotIzogZ3BnLWludGVyZmFjZS5jOjU5CisjOiBncGctaW50ZXJmYWNlLmM6NTkgZ3BnLWludGVyZmFjZS5jOjEzMQogbXNnaWQgImNvdWxkIG5vdCBydW4gZ3BnLiIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGNo4bqheSBncGcuIgogCiAjOiBncGctaW50ZXJmYWNlLmM6NzEKIG1zZ2lkICJncGcgZGlkIG5vdCBhY2NlcHQgdGhlIGRhdGEiCi1tc2dzdHIgImdwZyDEkcOjIGtow7RuZyDEkeG7k25nIMO9IGThu68gbGnhu4d1IgorbXNnc3RyICJncGcgxJHDoyBraMO0bmcgY2jhuqVwIG5o4bqtbiBk4buvIGxp4buHdSIKIAogIzogZ3BnLWludGVyZmFjZS5jOjgyCiBtc2dpZCAiZ3BnIGZhaWxlZCB0byBzaWduIHRoZSBkYXRhIgogbXNnc3RyICJncGcgZ+G6t3AgbOG7l2kga2hpIGvDvSBk4buvIGxp4buHdSIKIAotIzogZ3JlcC5jOjE2MjIKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiY291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSAnJXMnOiAlcyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHThuqFvIHThuq1wIHRpbiB04bqhbSB0aOG7nWkg4oCcJXPigJ06ICVzIgorCisjOiBncGctaW50ZXJmYWNlLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB3cml0aW5nIGRldGFjaGVkIHNpZ25hdHVyZSB0byAnJXMnOiAlcyIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIGdoaSBjaOG7ryBrw70gxJHDrW5oIGvDqG0gdsOgbyDigJwlc+KAnTogJXMiCisKKyM6IGdyZXAuYzoxNjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICLigJwlc+KAnToga2jDtG5nIHRo4buDIMSR4buNYyAlcyIKIAotIzogZ3JlcC5jOjE2MzkKKyM6IGdyZXAuYzoxNjQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6ICVzIgogbXNnc3RyICLigJwlc+KAnTogJXMiCiAKLSM6IGdyZXAuYzoxNjUwCisjOiBncmVwLmM6MTY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICLigJwlc+KAnTogxJHhu41jIG5n4bqvbiAlcyIKQEAgLTM4Myw3ICs1MjEsMTEgQEAKIG1zZ2lkICJnaXQgY29tbWFuZHMgYXZhaWxhYmxlIGZyb20gZWxzZXdoZXJlIG9uIHlvdXIgJFBBVEgiCiBtc2dzdHIgImPDoWMgbOG7h25oIGdpdCBz4bq1biBzw6BuZyDEkeG7gyBkw7luZyB04burIG3hu5l0IG7GoWkga2jDoWMgdHJvbmcgJFBBVEggY+G7p2EgYuG6oW4iCiAKLSM6IGhlbHAuYzoyNzUKKyM6IGhlbHAuYzoyMzUKK21zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgorbXNnc3RyICJOaOG7r25nIGzhu4duaCBnaXQgaGF5IMSRxrDhu6NjIHPhu60gZOG7pW5nIG5o4bqldCBsw6A6IgorCisjOiBoZWxwLmM6MjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGFwcGVhcnMgdG8gYmUgYSBnaXQgY29tbWFuZCwgYnV0IHdlIHdlcmUgbm90XG4iCkBAIC0zOTIsMTEgKzUzNCwxMSBAQAogIuKAnCVz4oCdIHRyw7RuZyBuaMawIGzDoCBt4buZdCBs4buHbmggZ2l0LCBuaMawbmcgY2jDum5nIHTDtGkga2jDtG5nXG4iCiAidGjhu4MgdGjhu7FjIHRoaSBuw7MuIEPDsyBs4bq9IGzDoCBs4buHbmggZ2l0LSVzIMSRw6MgYuG7iyBo4buPbmc/IgogCi0jOiBoZWxwLmM6MzMyCisjOiBoZWxwLmM6MzQ5CiBtc2dpZCAiVWggb2guIFlvdXIgc3lzdGVtIHJlcG9ydHMgbm8gR2l0IGNvbW1hbmRzIGF0IGFsbC4iCiBtc2dzdHIgIuG7kGkgY2jDoC4gSOG7hyB0aOG7kW5nIGPhu6dhIGLhuqFuIGLDoW8gcuG6sW5nIGNo4bqzbmcgY8OzIGzhu4duaCBHaXQgbsOgbyBj4bqjLiIKIAotIzogaGVscC5jOjM1NAorIzogaGVscC5jOjM3MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV0FSTklORzogWW91IGNhbGxlZCBhIEdpdCBjb21tYW5kIG5hbWVkICclcycsIHdoaWNoIGRvZXMgbm90IGV4aXN0LlxuIgpAQCAtNDA1LDE3ICs1NDcsMTcgQEAKICJD4bqiTkggQsOBTzogQuG6oW4gxJHDoyBn4buNaSBs4buHbmggR2l0IGPDsyB0w6puIOKAnCVz4oCdLCBtw6AgbsOzIGzhuqFpIGtow7RuZyBjw7Mgc+G6tW4uXG4iCiAiR2nhuqMgxJHhu4tuaCBy4bqxbmcgw70gYuG6oW4gbMOgIOKAnCVz4oCdIgogCi0jOiBoZWxwLmM6MzU5CisjOiBoZWxwLmM6Mzc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluICUwLjFmIHNlY29uZHMgYXV0b21hdGljYWxseS4uLiIKIG1zZ3N0ciAidHJvbmcgJTAuMWYgZ2nDonkgbeG7mXQgY8OhY2ggdOG7sSDEkeG7mW5nLi4uIgogCi0jOiBoZWxwLmM6MzY2CisjOiBoZWxwLmM6MzgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdDogJyVzJyBpcyBub3QgYSBnaXQgY29tbWFuZC4gU2VlICdnaXQgLS1oZWxwJy4iCiBtc2dzdHIgImdpdDog4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG7h25oIGPhu6dhIGdpdC4gWGVtIOKAnGdpdCAtLWhlbHDigJ0uIgogCi0jOiBoZWxwLmM6MzcwCisjOiBoZWxwLmM6Mzg3CiBtc2dpZCAiIgogIlxuIgogIkRpZCB5b3UgbWVhbiB0aGlzPyIKQEAgLTQzMyw4ICs1NzUsOCBAQAogbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIMSR4buNYyBi4buZIG5o4bubIHThuqFtIgogCi0jOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzMzIGJ1aWx0aW4vY2hlY2tvdXQuYzo1MzQKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1ODYKKyM6IG1lcmdlLmM6MTEwIGJ1aWx0aW4vY2hlY2tvdXQuYzozNjUgYnVpbHRpbi9jaGVja291dC5jOjU2NgorIzogYnVpbHRpbi9jbG9uZS5jOjY0NQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kiCiAKQEAgLTQ4Myw3ICs2MjUsNyBAQAogbXNnaWQgImJsb2IgZXhwZWN0ZWQgZm9yICVzICclcyciCiBtc2dzdHIgIsSR4buRaSB0xrDhu6NuZyBibG9iIMSRxrDhu6NjIG1vbmcgxJHhu6NpIGNobyAlcyDigJwlc+KAnSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzczIGJ1aWx0aW4vY2xvbmUuYzozMDIKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBvcGVuICclcyciCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSBt4bufIOKAnCVz4oCdIgpAQCAtNjE4LDcgKzc2MCw3IEBACiBtc2dpZCAiQXV0by1tZXJnaW5nICVzIgogbXNnc3RyICJU4buxLcSR4buZbmctaMOyYS10cuG7mW4gJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDo4OTMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDoxMDI5CiBtc2dpZCAic3VibW9kdWxlIgogbXNnc3RyICJtw7QtxJF1bi1jb24iCiAKQEAgLTY5MCw0MyArODMyLDYyIEBACiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDA5IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY1OAogbXNnaWQgIlVuYWJsZSB0byB3cml0ZSBpbmRleC4iCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBwYXJzZS1vcHRpb25zLmM6NDk0CisjOiBvYmplY3QuYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCDEkeG7kWkgdMaw4bujbmc6IOKAnCVz4oCdIgorCisjOiBwYXJzZS1vcHRpb25zLmM6NDg5CiBtc2dpZCAiLi4uIgogbXNnc3RyICIuLi4iCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTIKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzIgogbXNnc3RyICJjw6FjaCBkw7luZzogJXMiCiAKICMuIFRSQU5TTEFUT1JTOiB0aGUgY29sb24gaGVyZSBzaG91bGQgYWxpZ24gd2l0aCB0aGUKICMuIG9uZSBpbiAidXNhZ2U6ICVzIiB0cmFuc2xhdGlvbgotIzogcGFyc2Utb3B0aW9ucy5jOjUxNgorIzogcGFyc2Utb3B0aW9ucy5jOjUxMQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICBvcjogJXMiCiBtc2dzdHIgIiAgICAgaG/hurdjOiAlcyIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjUxOQorIzogcGFyc2Utb3B0aW9ucy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgJXMiCiBtc2dzdHIgIiAgICAlcyIKIAotIzogcmVtb3RlLmM6MTYzMgorIzogcGFyc2Utb3B0aW9ucy5jOjU0OAorbXNnaWQgIi1OVU0iCittc2dzdHIgIi1T4buQIgorCisjOiBwYXRoc3BlYy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgorbXNnc3RyICLEkMaw4budbmcgZOG6q24g4oCcJXPigJ0gdGjDrCDhu58gdHJvbmcgbcO0LcSRdW4tY29uIOKAnCUuKnPigJ0iCisKKyM6IHBhdGhzcGVjLmM6OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIgorbXNnc3RyICLigJwlc+KAnSBu4bqxbSBuZ2/DoGkgbeG7mXQgbGnDqm4ga+G6v3QgdMaw4bujbmcgdHLGsG5nIgorCisjOiByZW1vdGUuYzoxNzgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0LlxuIgogbXNnaWRfcGx1cmFsICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdHMuXG4iCiBtc2dzdHJbMF0gIk5ow6FuaCBj4bunYSBi4bqhbiBsw6AgxJHhuqd1IGPhu6dhIOKAnCVz4oCdIGLhu59pICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCiBtc2dzdHJbMV0gIk5ow6FuaCBj4bunYSBi4bqhbiBsw6AgxJHhuqd1IGPhu6dhIOKAnCVz4oCdIGLhu59pICVkIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCiAKLSM6IHJlbW90ZS5jOjE2MzcKKyM6IHJlbW90ZS5jOjE3ODcKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVzaFwiIHRvIHB1Ymxpc2ggeW91ciBsb2NhbCBjb21taXRzKVxuIgogbXNnc3RyICIgIChkw7luZyBcImdpdCBwdXNoXCIgxJHhu4MgeHXhuqV0IGLhuqNuIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBu4buZaSBi4buZIGPhu6dhIGLhuqFuKVxuIgogCi0jOiByZW1vdGUuYzoxNjQwCisjOiByZW1vdGUuYzoxNzkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGJlaGluZCAnJXMnIGJ5ICVkIGNvbW1pdCwgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKIG1zZ2lkX3BsdXJhbCAiIgpAQCAtNzM4LDExICs4OTksMTEgQEAKICJOaMOhbmggY+G7p2EgYuG6oW4gdGjDrCDhu58gxJHhurFuZyBzYXUg4oCcJXPigJ0gYuG7n2kgJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgdsOgIGPDsyB0aOG7gyAiCiAixJHGsOG7o2MgZmFzdC1mb3J3YXJkLlxuIgogCi0jOiByZW1vdGUuYzoxNjQ3CisjOiByZW1vdGUuYzoxNzk4CiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byB1cGRhdGUgeW91ciBsb2NhbCBicmFuY2gpXG4iCiBtc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHB1bGxcIiDEkeG7gyBj4bqtcCBuaOG6rXQgbmjDoW5oIG7hu5lpIGLhu5kgY+G7p2EgYuG6oW4pXG4iCiAKLSM6IHJlbW90ZS5jOjE2NTAKKyM6IHJlbW90ZS5jOjE4MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdXIgYnJhbmNoIGFuZCAnJXMnIGhhdmUgZGl2ZXJnZWQsXG4iCkBAIC03NTgsMjUgKzkxOSwyNSBAQAogIllvdXIgYnJhbmNoIGFuZCDigJwlc+KAnSBoYXZlIGRpdmVyZ2VkLFxuIgogImFuZCBoYXZlICVkIGFuZCAlZCBkaWZmZXJlbnQgY29tbWl0IGVhY2gsIHJlc3BlY3RpdmVseS5cbiIKIAotIzogcmVtb3RlLmM6MTY1OQorIzogcmVtb3RlLmM6MTgxMQogbXNnaWQgIiAgKHVzZSBcImdpdCBwdWxsXCIgdG8gbWVyZ2UgdGhlIHJlbW90ZSBicmFuY2ggaW50byB5b3VycylcbiIKIG1zZ3N0ciAiIgogIiAgKGTDuW5nIFwiZ2l0IHB1bGxcIiDEkeG7gyBow7JhIHRy4buZbiBuaMOhbmggdHLDqm4gbcOheSBjaOG7pyB2w6BvIHRyb25nIG5ow6FuaCBj4bunYSAiCiAiYuG6oW4pXG4iCiAKLSM6IHNlcXVlbmNlci5jOjEyMyBidWlsdGluL21lcmdlLmM6NzYxIGJ1aWx0aW4vbWVyZ2UuYzo4NzQgYnVpbHRpbi9tZXJnZS5jOjk4NAotIzogYnVpbHRpbi9tZXJnZS5jOjk5NAorIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5CisjOiBidWlsdGluL21lcmdlLmM6MTAwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyBnaGkiCiAKLSM6IHNlcXVlbmNlci5jOjEyNSBidWlsdGluL21lcmdlLmM6MzMzIGJ1aWx0aW4vbWVyZ2UuYzo3NjQgYnVpbHRpbi9tZXJnZS5jOjk4NgotIzogYnVpbHRpbi9tZXJnZS5jOjk5OQorIzogc2VxdWVuY2VyLmM6MjA4IGJ1aWx0aW4vbWVyZ2UuYzozMzUgYnVpbHRpbi9tZXJnZS5jOjc3OQorIzogYnVpbHRpbi9tZXJnZS5jOjEwMDEgYnVpbHRpbi9tZXJnZS5jOjEwMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHRvICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdsOgbyDigJwlc+KAnSIKIAotIzogc2VxdWVuY2VyLmM6MTQ2CisjOiBzZXF1ZW5jZXIuYzoyMjkKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+JyIKQEAgLTc4NCw3ICs5NDUsNyBAQAogInNhdSBraGkgZ2nhuqNpIHF1eeG6v3QgY8OhYyB4dW5nIMSR4buZdCwgxJHDoW5oIGThuqV1IMSRxrDhu51uZyBk4bqrbiDEkcOjIHPhu61hXG4iCiAiduG7m2kgbOG7h25oIOKAnGdpdCBhZGQgPMSRxrDhu51uZ19k4bqrbj7igJ0gaG/hurdjIOKAnGdpdCBybSA8xJHGsOG7nW5nX2ThuqtuPuKAnSIKIAotIzogc2VxdWVuY2VyLmM6MTQ5CisjOiBzZXF1ZW5jZXIuYzoyMzIKIG1zZ2lkICIiCiAiYWZ0ZXIgcmVzb2x2aW5nIHRoZSBjb25mbGljdHMsIG1hcmsgdGhlIGNvcnJlY3RlZCBwYXRoc1xuIgogIndpdGggJ2dpdCBhZGQgPHBhdGhzPicgb3IgJ2dpdCBybSA8cGF0aHM+J1xuIgpAQCAtNzk0LDIzNiArOTU1LDI0MiBAQAogInbhu5tpIGzhu4duaCDigJxnaXQgYWRkIDzEkcaw4budbmdfZOG6q24+4oCdIGhv4bq3YyDigJxnaXQgcm0gPMSRxrDhu51uZ19k4bqrbj7igJ1cbiIKICJ2w6AgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBr4bq/dCBxdeG6oyBi4bqxbmcgbOG7h25oIOKAnGdpdCBjb21taXTigJ0iCiAKLSM6IHNlcXVlbmNlci5jOjE2MiBzZXF1ZW5jZXIuYzo3NzAgc2VxdWVuY2VyLmM6ODUzCisjOiBzZXF1ZW5jZXIuYzoyNDUgc2VxdWVuY2VyLmM6ODU5IHNlcXVlbmNlci5jOjk0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdsOgbyAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTY1CisjOiBzZXF1ZW5jZXIuYzoyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMiCiBtc2dzdHIgIkzhu5dpIGJhbyBi4buNYyAlcyIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjMKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgY2hlcnJ5LXBpY2suIgogbXNnc3RyICJDw6FjIHRoYXkgxJHhu5VpIG7hu5lpIGLhu5kgY+G7p2EgYuG6oW4gY8OzIHRo4buDIGLhu4sgZ2hpIMSRw6ggYuG7n2kgbOG7h25oIGNoZXJyeS1waWNrLiIKIAotIzogc2VxdWVuY2VyLmM6MTgyCisjOiBzZXF1ZW5jZXIuYzoyNjUKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgcmV2ZXJ0LiIKIG1zZ3N0ciAiQ8OhYyB0aGF5IMSR4buVaSBu4buZaSBi4buZIGPhu6dhIGLhuqFuIGPDsyB0aOG7gyBi4buLIGdoaSDEkcOoIGLhu59pIGzhu4duaCByZXZlcnQuIgogCi0jOiBzZXF1ZW5jZXIuYzoxODUKKyM6IHNlcXVlbmNlci5jOjI2OAogbXNnaWQgIkNvbW1pdCB5b3VyIGNoYW5nZXMgb3Igc3Rhc2ggdGhlbSB0byBwcm9jZWVkLiIKIG1zZ3N0ciAiQ2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw6FjIHRoYXkgxJHhu5VpIGPhu6dhIGLhuqFuIGhheSBzdGFzaCBjaMO6bmcgxJHhu4MgeOG7rSBsw70uIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzUKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlczogS2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kiCiAKLSM6IHNlcXVlbmNlci5jOjI2NgorIzogc2VxdWVuY2VyLmM6MzUwCiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIGdp4bqjaSBjb21taXQgKGzhuqduIGNodXnhu4NuIGdpYW8pIEhFQURcbiIKIAotIzogc2VxdWVuY2VyLmM6Mjg3CisjOiBzZXF1ZW5jZXIuYzozNzEKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCBjw6J5IGLhu5kgbmjhu5sgxJHhu4dtXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMzMgorIzogc2VxdWVuY2VyLmM6NDE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6MzM3CisjOiBzZXF1ZW5jZXIuYzo0MjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIHBhcmVudCBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgY2hhIG3hurkgJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6NDAzCisjOiBzZXF1ZW5jZXIuYzo0ODcKIG1zZ2lkICJZb3VyIGluZGV4IGZpbGUgaXMgdW5tZXJnZWQuIgogbXNnc3RyICJU4bqtcCB0aW4gbMawdSBt4bulYyBs4bulYyBj4bunYSBi4bqhbiBraMO0bmcgxJHGsOG7o2MgaMOyYSB0cuG7mW4uIgogCi0jOiBzZXF1ZW5jZXIuYzo0MDYKLW1zZ2lkICJZb3UgZG8gbm90IGhhdmUgYSB2YWxpZCBIRUFEIgotbXNnc3RyICJC4bqhbiBraMO0bmcgY8OzIEhFQUQgbsOgbyBo4bujcCBs4buHIgotCi0jOiBzZXF1ZW5jZXIuYzo0MjEKKyM6IHNlcXVlbmNlci5jOjUwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYSBtZXJnZSBidXQgbm8gLW0gb3B0aW9uIHdhcyBnaXZlbi4iCiBtc2dzdHIgIiIKICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIGzDoCBt4buZdCBs4bqnbiBow7JhIHRy4buZbiBuaMawbmcga2jDtG5nIMSRxrBhIHJhIHTDuXkgY2jhu41uIC0iCiAibS4iCiAKLSM6IHNlcXVlbmNlci5jOjQyOQorIzogc2VxdWVuY2VyLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIHBhcmVudCAlZCIKIG1zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAlcyBraMO0bmcgY8OzIGNoYSBt4bq5ICVkIgogCi0jOiBzZXF1ZW5jZXIuYzo0MzMKKyM6IHNlcXVlbmNlci5jOjUxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWlubGluZSB3YXMgc3BlY2lmaWVkIGJ1dCBjb21taXQgJXMgaXMgbm90IGEgbWVyZ2UuIgogbXNnc3RyICIiCi0iTHXhu5NuZyBjaMOtbmggxJHGsOG7o2MgY2jhu4kgcmEgbmjGsG5nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgIgotImzhuqduIGjDsmEgdHLhu5luLiIKKyJMdeG7k25nIGNow61uaCDEkcOjIMSRxrDhu6NjIGNo4buJIHJhIG5oxrBuZyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIGtow7RuZyBwaOG6o2kgbMOgICIKKyJt4buZdCBs4bqnbiBow7JhIHRy4buZbi4iCiAKICMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgd2lsbCBiZSAicmV2ZXJ0IiBvcgogIy4gImNoZXJyeS1waWNrIiwgdGhlIHNlY29uZCAlcyBhIFNIQTEKLSM6IHNlcXVlbmNlci5jOjQ0NAorIzogc2VxdWVuY2VyLmM6NTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW5ub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlcyIKIG1zZ3N0ciAiJXM6IGtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBs4bqnbiBjaHV54buDbiBnaWFvIG3hurkgY+G7p2EgJXMiCiAKLSM6IHNlcXVlbmNlci5jOjQ0OAorIzogc2VxdWVuY2VyLmM6NTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBnZXQgY29tbWl0IG1lc3NhZ2UgZm9yICVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgbOG6pXkgdGjDtG5nIMSRaeG7h3AgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjaG8gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjUzMgorIzogc2VxdWVuY2VyLmM6NjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZXZlcnQgJXMuLi4gJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyByZXZlcnQgJXMuLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjUzMworIzogc2VxdWVuY2VyLmM6NjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBhcHBseSAlcy4uLiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGFwcGx5ICjDoXAgZOG7pW5nIG1p4bq/bmcgdsOhKSAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTY1CisjOiBzZXF1ZW5jZXIuYzo2NTQKIG1zZ2lkICJlbXB0eSBjb21taXQgc2V0IHBhc3NlZCIKIG1zZ3N0ciAibOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSB0cuG7kW5nIHLhu5duZyDEkeG6t3QgbMOgIGjhu6NwIHF1eSBjw6FjaCIKIAotIzogc2VxdWVuY2VyLmM6NTczCisjOiBzZXF1ZW5jZXIuYzo2NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlczogZ+G6t3AgbOG7l2kgxJHhu41jIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogc2VxdWVuY2VyLmM6NTc4CisjOiBzZXF1ZW5jZXIuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlczogZ+G6t3AgbOG7l2kga2hpIGzDoG0gdMawxqFpIG3hu5tpIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogc2VxdWVuY2VyLmM6NjM2CisjOiBzZXF1ZW5jZXIuYzo3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90ICVzIGR1cmluZyBhICVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgJXMgdHJvbmcga2hpICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2NTgKKyM6IHNlcXVlbmNlci5jOjc0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgbGluZSAlZC4iCiBtc2dzdHIgIktow7RuZyBwaMOibiB0w61jaCDEkcaw4bujYyBkw7JuZyAlZC4iCiAKLSM6IHNlcXVlbmNlci5jOjY2MworIzogc2VxdWVuY2VyLmM6NzUyCiBtc2dpZCAiTm8gY29tbWl0cyBwYXJzZWQuIgogbXNnc3RyICJLaMO0bmcgY8OzIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyDEkcaw4bujYyBwaMOibiB0w61jaC4iCiAKLSM6IHNlcXVlbmNlci5jOjY3NgorIzogc2VxdWVuY2VyLmM6NzY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjgwCisjOiBzZXF1ZW5jZXIuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgJXMuIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jICVzLiIKIAotIzogc2VxdWVuY2VyLmM6Njg3CisjOiBzZXF1ZW5jZXIuYzo3NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW51c2FibGUgaW5zdHJ1Y3Rpb24gc2hlZXQ6ICVzIgogbXNnc3RyICJC4bqjbmcgY2jhu4kgdGjhu4sga2jDtG5nIHRo4buDIGTDuW5nIMSRxrDhu6NjOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzE1CisjOiBzZXF1ZW5jZXIuYzo4MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBrZXk6ICVzIgogbXNnc3RyICJLaMOzYSBraMO0bmcgxJHDum5nOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzE4CisjOiBzZXF1ZW5jZXIuYzo4MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzIgogbXNnc3RyICJHacOhIHRy4buLIGtow7RuZyBo4bujcCBs4buHICVzOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NzMwCisjOiBzZXF1ZW5jZXIuYzo4MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICJC4bqjbmcgdMO5eSBjaOG7jW4gZOG7iyBow6xuaDogJXMiCiAKLSM6IHNlcXVlbmNlci5jOjc1MQorIzogc2VxdWVuY2VyLmM6ODQwCiBtc2dpZCAiYSBjaGVycnktcGljayBvciByZXZlcnQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcyIKIG1zZ3N0ciAibeG7mXQgdGhhbyB0w6FjIGNoZXJyeS1waWNrIGhv4bq3YyByZXZlcnQgxJFhbmcgxJHGsOG7o2MgdGjhu7FjIGhp4buHbiIKIAotIzogc2VxdWVuY2VyLmM6NzUyCisjOiBzZXF1ZW5jZXIuYzo4NDEKIG1zZ2lkICJ0cnkgXCJnaXQgY2hlcnJ5LXBpY2sgKC0tY29udGludWUgfCAtLXF1aXQgfCAtLWFib3J0KVwiIgogbXNnc3RyICJow6N5IHRo4butIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIAotIzogc2VxdWVuY2VyLmM6NzU2CisjOiBzZXF1ZW5jZXIuYzo4NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdOG6oW8gdGjGsCBt4bulYyB44bq/cCBkw6N5ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3NzIgc2VxdWVuY2VyLmM6ODU3CisjOiBzZXF1ZW5jZXIuYzo4NjEgc2VxdWVuY2VyLmM6OTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIHdyYXBwaW5nIHVwICVzLiIKIG1zZ3N0ciAiTOG7l2kgYmFvIGLhu41jICVzLiIKIAotIzogc2VxdWVuY2VyLmM6NzkxIHNlcXVlbmNlci5jOjkyNQorIzogc2VxdWVuY2VyLmM6ODgwIHNlcXVlbmNlci5jOjEwMTQKIG1zZ2lkICJubyBjaGVycnktcGljayBvciByZXZlcnQgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgImtow7RuZyBjaGVycnktcGljayBoYXkgcmV2ZXJ0IHRyb25nIHRp4bq/biB0csOsbmgiCiAKLSM6IHNlcXVlbmNlci5jOjc5MworIzogc2VxdWVuY2VyLmM6ODgyCiBtc2dpZCAiY2Fubm90IHJlc29sdmUgSEVBRCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHBow6JuIGdp4bqjaSBIRUFEIgogCi0jOiBzZXF1ZW5jZXIuYzo3OTUKKyM6IHNlcXVlbmNlci5jOjg4NAogbXNnaWQgImNhbm5vdCBhYm9ydCBmcm9tIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgaOG7p3kgYuG7jyB04burIG3hu5l0IG5ow6FuaCBtw6AgbsOzIGPDsm4gY2jGsGEgxJHGsOG7o2MgdOG6oW8gcmEiCiAKLSM6IHNlcXVlbmNlci5jOjgxNyBidWlsdGluL2FwcGx5LmM6NDAwNQorIzogc2VxdWVuY2VyLmM6OTA2IGJ1aWx0aW4vYXBwbHkuYzo0MDYwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICVzOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MjAKKyM6IHNlcXVlbmNlci5jOjkwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAlczogJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MjEKKyM6IHNlcXVlbmNlci5jOjkxMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgImvhur90IHRow7pjIHThuq1wIHRpbiDEkeG7mXQgeHXhuqV0IgogCi0jOiBzZXF1ZW5jZXIuYzo4MjcKKyM6IHNlcXVlbmNlci5jOjkxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdG9yZWQgcHJlLWNoZXJyeS1waWNrIEhFQUQgZmlsZSAnJXMnIGlzIGNvcnJ1cHQiCiBtc2dzdHIgInThuq1wIHRpbiBIRUFEIOKAnHByZS1jaGVycnktcGlja+KAnSDEkcOjIGzGsHUg4oCcJXPigJ0gYuG7iyBo4buPbmciCiAKLSM6IHNlcXVlbmNlci5jOjg1MAorIzogc2VxdWVuY2VyLmM6OTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmb3JtYXQgJXMuIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu4tuaCBk4bqhbmcgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDEyCisjOiBzZXF1ZW5jZXIuYzoxMDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIgorbXNnc3RyICIlczoga2jDtG5nIHRo4buDIGNoZXJyeS1waWNrIG3hu5l0ICVzIgorCisjOiBzZXF1ZW5jZXIuYzoxMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCittc2dzdHIgIiVzOiDEkWnhu4NtIHjDqXQgZHV54buHdCBzYWkiCisKKyM6IHNlcXVlbmNlci5jOjExMTkKIG1zZ2lkICJDYW4ndCByZXZlcnQgYXMgaW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIktow7RuZyB0aOG7gyByZXZlcnQgbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraOG7n2kgdOG6oW8iCiAKLSM6IHNlcXVlbmNlci5jOjEwMTMKKyM6IHNlcXVlbmNlci5jOjExMjAKIG1zZ2lkICJDYW4ndCBjaGVycnktcGljayBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBjaGVycnktcGljayB2w6BvIG3hu5l0IMSR4bqndSAoaGVhZCkgdHLhu5FuZyBy4buXbmciCiAKLSM6IHNoYTFfbmFtZS5jOjEwNDQKKyM6IHNoYTFfbmFtZS5jOjEwMzYKIG1zZ2lkICJIRUFEIGRvZXMgbm90IHBvaW50IHRvIGEgYnJhbmNoIgogbXNnc3RyICJIRUFEIGtow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbmjDoW5oIG7DoG8gY+G6oyIKIAotIzogc2hhMV9uYW1lLmM6MTA0NworIzogc2hhMV9uYW1lLmM6MTAzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzdWNoIGJyYW5jaDogJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIGPDsyBuaMOhbmggbsOgbyBuaMawIHRo4bq/OiDigJwlc+KAnSIKIAotIzogc2hhMV9uYW1lLmM6MTA0OQorIzogc2hhMV9uYW1lLmM6MTA0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIGPDsyB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pIMSRxrDhu6NjIGPhuqV1IGjDrG5oIGNobyBuaMOhbmgg4oCcJXPigJ0iCiAKLSM6IHNoYTFfbmFtZS5jOjEwNTIKKyM6IHNoYTFfbmFtZS5jOjEwNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCiBtc2dzdHIgIiIKQEAgLTEwMzUsMTIgKzEyMDIsMTcgQEAKIG1zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdHJ1eSBj4bqtcCDigJwlc+KAnTogJXMiCiAKLSM6IHdyYXBwZXIuYzo0MjYKKyM6IHdyYXBwZXIuYzo0MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnIgorbXNnc3RyICJraMO0bmcgdGjhu4MgdHJ1eSBj4bqtcCDigJwlc+KAnSIKKworIzogd3JhcHBlci5jOjQzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gbG9vayB1cCBjdXJyZW50IHVzZXIgaW4gdGhlIHBhc3N3ZCBmaWxlOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHTDrG0gdGjhuqV5IG5nxrDhu51pIGTDuW5nIGhp4buHbiB04bqhaSB0cm9uZyB04bqtcCB0aW4gcGFzc3dkOiAlcyIKIAotIzogd3JhcHBlci5jOjQyNworIzogd3JhcHBlci5jOjQzNQogbXNnaWQgIm5vIHN1Y2ggdXNlciIKIG1zZ3N0ciAia2jDtG5nIGPDsyBuZ8aw4budaSBkw7luZyBuaMawIHbhuq15IgogCkBAIC0xMTIxLDcgKzEyOTMsNyBAQAogCiAjOiB3dC1zdGF0dXMuYzoyNTAKIG1zZ2lkICJhZGRlZCBieSB1czoiCi1tc2dzdHIgIsSRxrDhu6NjIHRow6ptIHbDoG8gYuG7n2kgY2jDum5nIHTDtGk6IgorbXNnc3RyICLEkcaw4bujYyB0aMOqbSB2w6BvIGLhu59pIGNow7puZyB0YToiCiAKICM6IHd0LXN0YXR1cy5jOjI1MQogbXNnaWQgImRlbGV0ZWQgYnkgdGhlbToiCkBAIC0xMTMzLDcgKzEzMDUsNyBAQAogCiAjOiB3dC1zdGF0dXMuYzoyNTMKIG1zZ2lkICJkZWxldGVkIGJ5IHVzOiIKLW1zZ3N0ciAiYuG7iyB4w7NhIGLhu59pIGNow7puZyB0w7RpOiIKK21zZ3N0ciAiYuG7iyB4w7NhIGLhu59pIGNow7puZyB0YToiCiAKICM6IHd0LXN0YXR1cy5jOjI1NAogbXNnaWQgImJvdGggYWRkZWQ6IgpAQCAtMTE0OSwyMDQgKzEzMjEsMjY5IEBACiAKICM6IHd0LXN0YXR1cy5jOjI4NwogbXNnaWQgIm1vZGlmaWVkIGNvbnRlbnQsICIKLW1zZ3N0ciAibuG7mWkgZHVuZyDEkcaw4bujYyBz4butYSDEkeG7lWksICIKK21zZ3N0ciAibuG7mWkgZHVuZyBi4buLIHPhu61hIMSR4buVaSwgIgogCiAjOiB3dC1zdGF0dXMuYzoyODkKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgogbXNnc3RyICJu4buZaSBkdW5nIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSwgIgogCi0jOiB3dC1zdGF0dXMuYzozMDMKKyM6IHd0LXN0YXR1cy5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZTogICAlcyIKIG1zZ3N0ciAidOG6rXAgdGluIG3hu5tpOiAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMDYKKyM6IHd0LXN0YXR1cy5jOjMwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3BpZWQ6ICAgICAlcyAtPiAlcyIKIG1zZ3N0ciAixJHDoyBzYW8gY2jDqXA6ICAgICAlcyAtPiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzA5CisjOiB3dC1zdGF0dXMuYzozMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZDogICAgJXMiCiBtc2dzdHIgIsSRw6MgeMOzYTogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMxMgorIzogd3Qtc3RhdHVzLmM6MzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vZGlmaWVkOiAgICVzIgogbXNnc3RyICLEkcOjIHPhu61hIMSR4buVaTogICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzE1CisjOiB3dC1zdGF0dXMuYzozMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVuYW1lZDogICAgJXMgLT4gJXMiCiBtc2dzdHIgIsSRw6MgxJHhu5VpIHTDqm46ICAgICVzIC0+ICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMTgKKyM6IHd0LXN0YXR1cy5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0eXBlY2hhbmdlOiAlcyIKIG1zZ3N0ciAixJHhu5VpLWtp4buDdTogJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMyMQorIzogd3Qtc3RhdHVzLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd246ICAgICVzIgogbXNnc3RyICJraMO0bmcgaGnhu4N1OiAgICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzI0CisjOiB3dC1zdGF0dXMuYzozMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5tZXJnZWQ6ICAgJXMiCiBtc2dzdHIgImNoxrBhIGjDsmEgdHLhu5luOiAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMjcKKyM6IHd0LXN0YXR1cy5jOjMzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJidWc6IHVuaGFuZGxlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAibOG7l2k6IGtow7RuZyBs4bqleSDEkcaw4bujYyB0cuG6oW5nIHRow6FpIGzhu4duaCBkaWZmICVjIgogCi0jOiB3dC1zdGF0dXMuYzo3ODUKKyM6IHd0LXN0YXR1cy5jOjgwMwogbXNnaWQgIllvdSBoYXZlIHVubWVyZ2VkIHBhdGhzLiIKIG1zZ3N0ciAiQuG6oW4gY8OzIG5o4buvbmcgxJHGsOG7nW5nIGThuqtuIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luLiIKIAotIzogd3Qtc3RhdHVzLmM6Nzg4IHd0LXN0YXR1cy5jOjkxMgorIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCiBtc2dzdHIgIiAgKHPhu61hIGPDoWMgeHVuZyDEkeG7mXQgc2F1IMSRw7MgY2jhuqF5IFwiZ2l0IGNvbW1pdFwiKSIKIAotIzogd3Qtc3RhdHVzLmM6NzkxCisjOiB3dC1zdGF0dXMuYzo4MDkKIG1zZ2lkICJBbGwgY29uZmxpY3RzIGZpeGVkIGJ1dCB5b3UgYXJlIHN0aWxsIG1lcmdpbmcuIgogbXNnc3RyICJU4bqldCBj4bqjIGPDoWMgeHVuZyDEkeG7mXQgxJHDoyDEkcaw4bujYyBnaeG6o2kgcXV54bq/dCBuaMawbmcgYuG6oW4gduG6q24gxJFhbmcgaMOyYSB0cuG7mW4uIgogCi0jOiB3dC1zdGF0dXMuYzo3OTQKKyM6IHd0LXN0YXR1cy5jOjgxMgogbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXRcIiB0byBjb25jbHVkZSBtZXJnZSkiCiBtc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IGNvbW1pdFwiIMSR4buDIGhvw6BuIHThuqV0IHZp4buHYyBow7JhIHRy4buZbikiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNAorIzogd3Qtc3RhdHVzLmM6ODIyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uIgogbXNnc3RyICJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIG3hu5l0IHBoacOqbiDigJxhbeKAnS4iCiAKLSM6IHd0LXN0YXR1cy5jOjgwNworIzogd3Qtc3RhdHVzLmM6ODI1CiBtc2dpZCAiVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZW1wdHkuIgogbXNnc3RyICJNaeG6v25nIHbDoSBoaeG7h24gdOG6oWkgYuG7iyB0cuG7kW5nIHLhu5duZy4iCiAKLSM6IHd0LXN0YXR1cy5jOjgxMQorIzogd3Qtc3RhdHVzLmM6ODI5CiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKIG1zZ3N0ciAiICAoc+G7rWEgY8OhYyB4dW5nIMSR4buZdCB2w6Agc2F1IMSRw7MgY2jhuqF5IGzhu4duaCBcImdpdCBhbSAtLXJlc29sdmVkXCIpIgogCi0jOiB3dC1zdGF0dXMuYzo4MTMKKyM6IHd0LXN0YXR1cy5jOjgzMQogbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLXNraXBcIiB0byBza2lwIHRoaXMgcGF0Y2gpIgotbXNnc3RyICIgIChkw7luZyBcImdpdCBhbSAtLXNraXBcIiDEkeG7gyBi4buPIHF1YSBs4bqnbiB2w6EgbsOgeSkiCittc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IGFtIC0tc2tpcFwiIMSR4buDIGLhu48gcXVhIG1p4bq/bmcgdsOhIG7DoHkpIgogCi0jOiB3dC1zdGF0dXMuYzo4MTUKKyM6IHd0LXN0YXR1cy5jOjgzMwogbXNnaWQgIiAgKHVzZSBcImdpdCBhbSAtLWFib3J0XCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgYW0gLS1hYm9ydFwiIMSR4buDIHBo4bulYyBo4buTaSBs4bqhaSBuaMOhbmggbmd1ecOqbiB0aOG7p3kpIgogCi0jOiB3dC1zdGF0dXMuYzo4NzMgd3Qtc3RhdHVzLmM6ODgzCisjOiB3dC1zdGF0dXMuYzo4OTMgd3Qtc3RhdHVzLmM6OTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdmnhu4djIHJlYmFzZSBuaMOhbmgg4oCcJXPigJ0gdHLDqm4g4oCcJXPigJ0uIgorCisjOiB3dC1zdGF0dXMuYzo4OTggd3Qtc3RhdHVzLmM6OTE1CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcuIgogbXNnc3RyICJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdmnhu4djIHJlYmFzZSAodMOhaSBj4bqldSB0csO6YykuIgogCi0jOiB3dC1zdGF0dXMuYzo4NzYKKyM6IHd0LXN0YXR1cy5jOjkwMQogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIgIChz4butYSBjw6FjIHh1bmcgxJHhu5l0IHbDoCBzYXUgxJHDsyBjaOG6oXkgbOG7h25oIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogCi0jOiB3dC1zdGF0dXMuYzo4NzgKKyM6IHd0LXN0YXR1cy5jOjkwMwogbXNnaWQgIiAgKHVzZSBcImdpdCByZWJhc2UgLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcmViYXNlIC0tc2tpcFwiIMSR4buDIGLhu48gcXVhIGzhuqduIHbDoSBuw6B5KSIKIAotIzogd3Qtc3RhdHVzLmM6ODgwCisjOiB3dC1zdGF0dXMuYzo5MDUKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkiCiBtc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIgxJHhu4MgY2hlY2stb3V0IG5ow6FuaCBuZ3V5w6puIHRo4buneSkiCiAKLSM6IHd0LXN0YXR1cy5jOjg4NgorIzogd3Qtc3RhdHVzLmM6OTE4CiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIiCiAiICAoa2hpIHThuqV0IGPhuqMgY8OhYyB4dW5nIMSR4buZdCDEkcOjIHPhu61hIHhvbmc6IGNo4bqheSBs4buHbmggXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCiAKLSM6IHd0LXN0YXR1cy5jOjg4OAorIzogd3Qtc3RhdHVzLmM6OTIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdmnhu4djIGNoaWEgdMOhY2ggbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAiCisidHJvbmcga2hpIMSRYW5nIHJlYmFzZSBuaMOhbmgg4oCcJXPigJ0gdHLDqm4g4oCcJXPigJ0uIgorCisjOiB3dC1zdGF0dXMuYzo5MjcKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKIG1zZ3N0ciAiIgogIkLhuqFuIGhp4buHbiB04bqhaSDEkWFuZyBj4bqvdCDEkcO0aSBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIHRyb25nIGtoaSDEkWFuZyB0aOG7sWMgaGnhu4duIHZp4buHYyAiCiAicmViYXNlLiIKIAotIzogd3Qtc3RhdHVzLmM6ODkxCisjOiB3dC1zdGF0dXMuYzo5MzAKIG1zZ2lkICIgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgogIiAgKE3hu5l0IGtoaSB0aMawIG3hu6VjIGzDoG0gdmnhu4djIGPhu6dhIGLhuqFuIMSRw6MgZ+G7jW4gZ8OgbmcsIGNo4bqheSBcImdpdCByZWJhc2UgLS1jb250aW51ZSIKICJcIikiCiAKLSM6IHd0LXN0YXR1cy5jOjg5MworIzogd3Qtc3RhdHVzLmM6OTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iCittc2dzdHIgIiIKKyJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdmnhu4djIHPhu61hIGNo4buvYSBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIHRyb25nICIKKyJraGkgxJFhbmcgcmViYXNlIG5ow6FuaCDigJwlc+KAnSB0csOqbiDigJwlc+KAnS4iCisKKyM6IHd0LXN0YXR1cy5jOjkzOQogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLiIKIG1zZ3N0ciAiQuG6oW4gaGnhu4duIMSRYW5nIHPhu61hIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gdHJvbmcga2hpIGLhuqFuIHRo4buxYyBoaeG7h24gcmViYXNlLiIKIAotIzogd3Qtc3RhdHVzLmM6ODk2CisjOiB3dC1zdGF0dXMuYzo5NDIKIG1zZ2lkICIgICh1c2UgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpIgogbXNnc3RyICIiCiAiICAoZMO5bmcgXCJnaXQgY29tbWl0IC0tYW1lbmRcIiDEkeG7gyB0dSBi4buVIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgaGnhu4duIHThuqFpKSIKIAotIzogd3Qtc3RhdHVzLmM6ODk4CisjOiB3dC1zdGF0dXMuYzo5NDQKIG1zZ2lkICIiCiAiICAodXNlIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykiCiBtc2dzdHIgIiIKICIgIChkw7luZyBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiIG3hu5l0IGtoaSBi4bqhbiBj4bqjbSB0aOG6pXkgaMOgaSBsw7JuZyB24buBIG5o4buvbmcgIgogInRoYXkgxJHhu5VpIGPhu6dhIG3DrG5oKSIKIAotIzogd3Qtc3RhdHVzLmM6OTA4CisjOiB3dC1zdGF0dXMuYzo5NTQKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4iCiBtc2dzdHIgIkLhuqFuIGhp4buHbiBuYXkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgY2hlcnJ5LXBpY2suIgogCi0jOiB3dC1zdGF0dXMuYzo5MTUKKyM6IHd0LXN0YXR1cy5jOjk2MQogbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjb21taXRcIikiCiBtc2dzdHIgIiAgKGtoaSB04bqldCBj4bqjIGPDoWMgeHVuZyDEkeG7mXQgxJHDoyBz4butYSB4b25nOiBjaOG6oXkgbOG7h25oIFwiZ2l0IGNvbW1pdFwiKSIKIAotIzogd3Qtc3RhdHVzLmM6OTI0CisjOiB3dC1zdGF0dXMuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgcmV2ZXJ0aW5nIGNvbW1pdCAlcy4iCittc2dzdHIgIkLhuqFuIGhp4buHbiBuYXkgxJFhbmcgdGjhu7FjIGhp4buHbiB0aGFvIHTDoWMgcmV2ZXJ0IGzhuqduIGNodXnhu4NuIGdpYW8g4oCcJXPigJ0uIgorCisjOiB3dC1zdGF0dXMuYzo5NzUKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCittc2dzdHIgIiAgKHPhu61hIGPDoWMgeHVuZyDEkeG7mXQgdsOgIHNhdSDEkcOzIGNo4bqheSBs4buHbmggXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCisKKyM6IHd0LXN0YXR1cy5jOjk3OAorbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiIgorIiAgKGtoaSB04bqldCBj4bqjIGPDoWMgeHVuZyDEkeG7mXQgxJHDoyBz4butYSB4b25nOiBjaOG6oXkgbOG7h25oIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgorCisjOiB3dC1zdGF0dXMuYzo5ODAKK21zZ2lkICIgICh1c2UgXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIHJldmVydCBvcGVyYXRpb24pIgorbXNnc3RyICIgIChkw7luZyBcImdpdCByZXZlcnQgLS1hYm9ydFwiIMSR4buDIGjhu6d5IGLhu48gdGhhbyB0w6FjIHJldmVydCkiCisKKyM6IHd0LXN0YXR1cy5jOjk5MQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcsIHN0YXJ0ZWQgZnJvbSBicmFuY2ggJyVzJy4iCittc2dzdHIgIiIKKyJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdGhhbyB0w6FjIGRpIGNodXnhu4NuIG7hu61hIGLGsOG7m2MgKGJpc2VjdCksIGLhuq90IMSR4bqndSB04burICIKKyJuaMOhbmgg4oCcJXPigJ0uIgorCisjOiB3dC1zdGF0dXMuYzo5OTUKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcuIgogbXNnc3RyICJC4bqhbiBoaeG7h24gdOG6oWkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgYmlzZWN0IChjaGlhIMSRw7RpKS4iCiAKLSM6IHd0LXN0YXR1cy5jOjkyNworIzogd3Qtc3RhdHVzLmM6OTk4CiBtc2dpZCAiICAodXNlIFwiZ2l0IGJpc2VjdCByZXNldFwiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIgIChkw7luZyBcImdpdCBiaXNlY3QgcmVzZXRcIiDEkeG7gyBxdWF5IHRy4bufIGzhuqFpIG5ow6FuaCBuZ3V5w6puIHRo4buneSkiCiAKLSM6IHd0LXN0YXR1cy5jOjk3OAorIzogd3Qtc3RhdHVzLmM6MTE3MwogbXNnaWQgIk9uIGJyYW5jaCAiCiBtc2dzdHIgIlRyw6puIG5ow6FuaCAiCiAKLSM6IHd0LXN0YXR1cy5jOjk4NQorIzogd3Qtc3RhdHVzLmM6MTE4NAorbXNnaWQgIkhFQUQgZGV0YWNoZWQgYXQgIgorbXNnc3RyICJIRUFEIMSRxrDhu6NjIHTDoWNoIHLhu51pIHThuqFpIgorCisjOiB3dC1zdGF0dXMuYzoxMTg2Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBmcm9tICIKK21zZ3N0ciAiSEVBRCDEkcaw4bujYyB0w6FjaCBy4budaSB04burIgorCisjOiB3dC1zdGF0dXMuYzoxMTg5CiBtc2dpZCAiTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLiIKIG1zZ3N0ciAiSGnhu4duIHThuqFpIGNo4bqzbmcg4bufIG5ow6FuaCBuw6BvIGPhuqMuIgogCi0jOiB3dC1zdGF0dXMuYzo5OTcKKyM6IHd0LXN0YXR1cy5jOjEyMDYKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraOG7n2kgxJHhuqd1IgogCi0jOiB3dC1zdGF0dXMuYzoxMDExCisjOiB3dC1zdGF0dXMuYzoxMjIwCiBtc2dpZCAiVW50cmFja2VkIGZpbGVzIgogbXNnc3RyICJOaOG7r25nIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkiCiAKLSM6IHd0LXN0YXR1cy5jOjEwMTMKKyM6IHd0LXN0YXR1cy5jOjEyMjIKIG1zZ2lkICJJZ25vcmVkIGZpbGVzIgogbXNnc3RyICJOaOG7r25nIHThuq1wIHRpbiBi4buLIGzhu50gxJFpIgogCi0jOiB3dC1zdGF0dXMuYzoxMDE1CisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKyJD4bqnbiAlLjJmIGdpw6J5IMSR4buDIGxp4buHdCBrw6ogdOG6pXQgY+G6oyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkuIOKAnHN0YXR1cyAtIgorInVub+KAnVxuIgorImPDsyBs4bq9IGzDoG0gbsOzIG5oYW5oIGjGoW4sIG5oxrBuZyBi4bqhbiBwaOG6o2kgY+G6qW4gdGjhuq1uIMSR4burbmcgcXXDqm4gbcOsbmggcGjhuqNpXG4iCisidOG7sSB0aMOqbSBjw6FjIHThuq1wIHRpbiBt4bubaSAoeGVtIOKAnGdpdCBoZWxwIHN0YXR1c+KAnS4uIgorCisjOiB3dC1zdGF0dXMuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIk5o4buvbmcgdOG6rXAgdGluIGtow7RuZyBi4buLIHRoZW8gduG6v3Qga2jDtG5nIMSRxrDhu6NjIGxp4buHdCBrw6ogcmEgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjEwMTcKKyM6IHd0LXN0YXR1cy5jOjEyMzQKIG1zZ2lkICIgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpIgogbXNnc3RyICIgKGTDuW5nIHTDuXkgY2jhu41uIC11IMSR4buDIGhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkpIgogCi0jOiB3dC1zdGF0dXMuYzoxMDIzCisjOiB3dC1zdGF0dXMuYzoxMjQwCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAiS2jDtG5nIGPDsyB0aGF5IMSR4buVaSBuw6BvIgogCi0jOiB3dC1zdGF0dXMuYzoxMDI4CisjOiB3dC1zdGF0dXMuYzoxMjQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgogbXNnc3RyICIiCiAia2jDtG5nIGPDsyB0aGF5IMSR4buVaSBuw6BvIMSRxrDhu6NjIHRow6ptIHbDoG8gY29tbWl0IChkw7luZyBcImdpdCBhZGRcIiB2w6AvaG/hurdjIFwiZ2l0ICIKICJjb21taXQgLWFcIilcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTAzMQorIzogd3Qtc3RhdHVzLmM6MTI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdFxuIgogbXNnc3RyICJraMO0bmcgY8OzIHRoYXkgxJHhu5VpIG7DoG8gxJHGsOG7o2MgdGjDqm0gdsOgbyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwMzQKKyM6IHd0LXN0YXR1cy5jOjEyNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm5vdGhpbmcgYWRkZWQgdG8gY29tbWl0IGJ1dCB1bnRyYWNrZWQgZmlsZXMgcHJlc2VudCAodXNlIFwiZ2l0IGFkZFwiIHRvICIKQEAgLTEzNTUsMjI1ICsxNTkyLDI5NSBAQAogImtow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIHRow6ptIHbDoG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuaMawbmcgY8OzIG5o4buvbmcgdOG6rXAgdGluICIKICJraMO0bmcgxJHGsOG7o2MgdGhlbyBk4bqldSB24bq/dCBoaeG7h24gZGnhu4duIChkw7luZyBcImdpdCBhZGRcIiDEkeG7gyDEkcawYSB2w6BvIHRoZW8gZMO1aSlcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTAzNworIzogd3Qtc3RhdHVzLmM6MTI1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnRcbiIKIG1zZ3N0ciAiIgogImtow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIHRow6ptIHbDoG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuaMawbmcgY8OzIG5o4buvbmcgdOG6rXAgdGluICIKICJraMO0bmcgxJHGsOG7o2MgdGhlbyBk4bqldSB24bq/dCBoaeG7h24gZGnhu4duXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwNDAKKyM6IHd0LXN0YXR1cy5jOjEyNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKGNyZWF0ZS9jb3B5IGZpbGVzIGFuZCB1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spXG4iCiBtc2dzdHIgIiIKICIga2jDtG5nIGPDsyBnw6wgxJHhu4MgY29tbWl0ICh04bqhby9zYW8tY2jDqXAgY8OhYyB04bqtcCB0aW4gdsOgIGTDuW5nIFwiZ2l0IGFkZFwiIMSR4buDIHRoZW8gIgogImTDtWkgZOG6pXUgduG6v3QpXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwNDMgd3Qtc3RhdHVzLmM6MTA0OAorIzogd3Qtc3RhdHVzLmM6MTI2MCB3dC1zdGF0dXMuYzoxMjY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0XG4iCiBtc2dzdHIgImtow7RuZyBjw7MgZ8OsIMSR4buDIGNodXnhu4NuIGdpYW8gKGNvbW1pdClcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA0NgorIzogd3Qtc3RhdHVzLmM6MTI2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIgogbXNnc3RyICIiCiAia2jDtG5nIGPDsyBnw6wgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAoZMO5bmcgLXUgxJHhu4MgYuG7jyBjw6FjIHThuq1wIHRpbiBj4bqnbiB0aGVvIGThuqV1ICIKICJ24bq/dClcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA1MAorIzogd3Qtc3RhdHVzLmM6MTI2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKIG1zZ3N0ciAia2jDtG5nIGPDsyBnw6wgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgdGjGsCBt4bulYyBsw6BtIHZp4buHYyBz4bqhY2ggc+G6vVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMTU4CisjOiB3dC1zdGF0dXMuYzoxMzc1CiBtc2dpZCAiSEVBRCAobm8gYnJhbmNoKSIKIG1zZ3N0ciAiSEVBRCAoa2jDtG5nIG5ow6FuaCkiCiAKLSM6IHd0LXN0YXR1cy5jOjExNjQKKyM6IHd0LXN0YXR1cy5jOjEzODEKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIkzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jhu59pIHThuqFvIHRyw6puICIKIAotIzogd3Qtc3RhdHVzLmM6MTE3OQorIzogd3Qtc3RhdHVzLmM6MTM5NgogbXNnaWQgImJlaGluZCAiCiBtc2dzdHIgIsSR4bqxbmcgc2F1ICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4MiB3dC1zdGF0dXMuYzoxMTg1CisjOiB3dC1zdGF0dXMuYzoxMzk5IHd0LXN0YXR1cy5jOjE0MDIKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgInBow61hIHRyxrDhu5tjICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4NworIzogd3Qtc3RhdHVzLmM6MTQwNAogbXNnaWQgIiwgYmVoaW5kICIKIG1zZ3N0ciAiLCDEkeG6sW5nIHNhdSAiCiAKLSM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzQxCisjOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCiBtc2dzdHIgImLhu48gbGnDqm4ga+G6v3QgKHVubGluaykgJXMga2jDtG5nIHRow6BuaCBjw7RuZyIKIAotIzogYnVpbHRpbi9hZGQuYzoxOQotbXNnaWQgImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPGZpbGVwYXR0ZXJuPi4uLiIKLW1zZ3N0ciAiZ2l0IGFkZCBbY8OhYy10w7l5LWNo4buNbl0gWy0tXSA8beG6q3UtdOG6rXAtdGluPi4uLiIKKyM6IGJ1aWx0aW4vYWRkLmM6MjAKK21zZ2lkICJnaXQgYWRkIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCittc2dzdHIgImdpdCBhZGQgW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gIDxwYXRoc3BlYz4uLi4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjIKKyMuCisjLiAqIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCAiZ2l0IGFkZCAtcCIgYW5kIG1vc3QgR2l0CisjLiAqIGNvbW1hbmRzLCB3ZSBzaG91bGQgZGVmYXVsdCB0byBiZWluZyB0cmVlLXdpZGUsIGJ1dAorIy4gKiB0aGlzIGlzIG5vdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IgYW5kIGNhbid0IGJlCisjLiAqIGNoYW5nZWQgdW50aWwgdXNlcnMgdHJhaW5lZCB0aGVtc2VsdmVzIG5vdCB0byB0eXBlCisjLiAqICJnaXQgYWRkIC11IiBvciAiZ2l0IGFkZCAtQSIuIEZvciBub3csIHdlIHdhcm4gYW5kCisjLiAqIGtlZXAgdGhlIG9sZCBiZWhhdmlvci4gTGF0ZXIsIHRoZSBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZAorIy4gKiB0byB0cmVlLXdpZGUsIGtlZXBpbmcgdGhlIHdhcm5pbmcgZm9yIGEgd2hpbGUsIGFuZAorIy4gKiBldmVudHVhbGx5IHdlIGNhbiBkcm9wIHRoZSB3YXJuaW5nLgorIy4KKyM6IGJ1aWx0aW4vYWRkLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBiZWhhdmlvciBvZiAnZ2l0IGFkZCAlcyAob3IgJXMpJyB3aXRoIG5vIHBhdGggYXJndW1lbnQgZnJvbSBhXG4iCisic3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgYW5kIHNob3VsZCBub3QgYmUgdXNlZCAiCisiYW55bW9yZS5cbiIKKyJUbyBhZGQgY29udGVudCBmb3IgdGhlIHdob2xlIHRyZWUsIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvciBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIlRvIHJlc3RyaWN0IHRoZSBjb21tYW5kIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgcnVuOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob3IgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIldpdGggdGhlIGN1cnJlbnQgR2l0IHZlcnNpb24sIHRoZSBjb21tYW5kIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGN1cnJlbnQgIgorImRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiIgorIkPDoWNoIOG7qW5nIHjhu60gY+G7p2EgbOG7h25oIOKAnGdpdCBhZGQgJXMgKGhheSAlcynigJ0ga2hpIGtow7RuZyBjw7MgdGhhbSBz4buRIMSRxrDhu51uZyBk4bqrbiAiCisidOG7q1xuIgorInRoxrAtbeG7pWMgY29uIGPhu6dhIGPDonkgc+G6vSB0aGF5IMSR4buVaSBr4buDIHThu6sgR2l0IDIuMCB2w6Aga2jDtG5nIHRo4buDIHPhu60gZOG7pW5nIG5oxrAgdGjhur8gIgorIm7hu69hLlxuIgorIsSQ4buDIHRow6ptIG7hu5lpIGR1bmcgY2hvIHRvw6BuIGLhu5kgY8OieSwgY2jhuqF5OlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyA6L1xuIgorIiAgKGhheSBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIsSQ4buDIGjhuqFuIGNo4bq/IGzhu4duaCBjaG8gdGjGsC1t4bulYyBoaeG7h24gdOG6oWksIGNo4bqheTpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKGhheSBnaXQgYWRkICVzIC4pXG4iCisiXG4iCisiVuG7m2kgcGhpw6puIGLhuqNuIGhp4buHbiB04bqhaSBj4bunYSBHaXQsIGzhu4duaCBi4buLIGjhuqFuIGNo4bq/IGNobyB0aMawLW3hu6VjIGhp4buHbiB04bqhaS5cbiIKKworIzogYnVpbHRpbi9hZGQuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIllvdSByYW4gJ2dpdCBhZGQnIHdpdGggbmVpdGhlciAnLUEgKC0tYWxsKScgb3IgJy0taWdub3JlLXJlbW92YWwnLFxuIgorIndob3NlIGJlaGF2aW91ciB3aWxsIGNoYW5nZSBpbiBHaXQgMi4wIHdpdGggcmVzcGVjdCB0byBwYXRocyB5b3UgcmVtb3ZlZC5cbiIKKyJQYXRocyBsaWtlICclcycgdGhhdCBhcmVcbiIKKyJyZW1vdmVkIGZyb20geW91ciB3b3JraW5nIHRyZWUgYXJlIGlnbm9yZWQgd2l0aCB0aGlzIHZlcnNpb24gb2YgR2l0LlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aHNwZWM+Jywgd2hpY2ggaXMgdGhlIGN1cnJlbnQgZGVmYXVsdCxcbiIKKyIgIGlnbm9yZXMgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0tYWxsIDxwYXRoc3BlYz4nIHdpbGwgbGV0IHlvdSBhbHNvIHJlY29yZCB0aGUgcmVtb3ZhbHMuXG4iCisiXG4iCisiUnVuICdnaXQgc3RhdHVzJyB0byBjaGVjayB0aGUgcGF0aHMgeW91IHJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZS5cbiIKK21zZ3N0ciAiIgorIkLhuqFuIGNo4bqheSDigJxnaXQgYWRk4oCdIG3DoCBraMO0bmcgY8OzIOKAnC1BICgtLWFsbCnigJ0gY8Wpbmcga2jDtG5nIOKAnC0taWdub3JlLXJlbW92YWzigJ0sXG4iCisiY8OhY2gg4bupbmcgeOG7rSBj4bunYSBuw7Mgc+G6vSB0aGF5IMSR4buVaSBr4buDIHThu6sgR2l0IDIuMDogbsOzIHF1YW4gdMOibSDEkeG6v24gY8OhYyDEkcaw4budbmcgZOG6q24gIgorIm3DoFxuIgorImLhuqFuIMSRw6MgZ+G7oSBi4buPLiBDw6FjIMSRxrDhu51uZyBk4bqrbiBuaMawIGzDoCDigJwlc+KAnSBjw6FpIG3DoFxuIgorImLhu4sgZ+G7oSBi4buPIHThu6sgY8OieSBsw6BtIHZp4buHYyBj4bunYSBi4bqhbiB0aMOsIGLhu4sgYuG7jyBxdWEgduG7m2kgcGhpw6puIGLhuqNuIG7DoHkgY+G7p2EgR2l0LlxuIgorIlxuIgorIiog4oCcZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz7igJ0sIGPDoWkgaGnhu4duIHThuqFpIGzDoCBt4bq3YyDEkeG7i25oLFxuIgorIiAgYuG7jyBxdWEgY8OhYyDEkcaw4budbmcgZOG6q24gYuG6oW4gxJHDoyBn4buhIGLhu48gdOG7qyBjw6J5IGzDoG0gdmnhu4djIGPhu6dhIGLhuqFuLlxuIgorIlxuIgorIiog4oCcZ2l0IGFkZCAtLWFsbCA8cGF0aHNwZWM+4oCdIHPhur0gxJHhu5NuZyB0aOG7nWkgZ2nDunAgYuG6oW4gZ2hpIGzhuqFpIHZp4buHYyBk4budaSDEkWkuXG4iCisiXG4iCisiQ2jhuqF5IOKAnGdpdCBzdGF0dXPigJ0gxJHhu4Mga2nhu4NtIHRyYSBjw6FjIMSRxrDhu51uZyBk4bqrbiBi4bqhbiDEkcOjIGfhu6EgYuG7jyB04burIGPDonkgbMOgbSB2aeG7h2MgY+G7p2EgIgorImLhuqFuLlxuIgorCisjOiBidWlsdGluL2FkZC5jOjE0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmV4cGVjdGVkIGRpZmYgc3RhdHVzICVjIgogbXNnc3RyICJ0cuG6oW5nIHRow6FpIGzhu4duaCBkaWZmIGtow7RuZyBuaMawIG1vbmcgxJHhu6NpICVjIgogCi0jOiBidWlsdGluL2FkZC5jOjY3IGJ1aWx0aW4vY29tbWl0LmM6MjMxCisjOiBidWlsdGluL2FkZC5jOjE0OSBidWlsdGluL2NvbW1pdC5jOjIzMwogbXNnaWQgInVwZGF0aW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAiQ+G6rXAgbmjhuq10IHThuq1wIHRpbiBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9hZGQuYzo3NworIzogYnVpbHRpbi9hZGQuYzoxNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3ZlICclcydcbiIKIG1zZ3N0ciAiZ+G7oSBi4buPIOKAnCVz4oCdXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MTc2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgotbXNnc3RyICLEkMaw4budbmcgZOG6q24g4oCcJXPigJ0gdGjDrCDhu58gdHJvbmcgbcO0LcSRdW4tY29uIOKAnCUuKnPigJ0iCi0KLSM6IGJ1aWx0aW4vYWRkLmM6MTkyCisjOiBidWlsdGluL2FkZC5jOjI1MwogbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVmcmVzaGluZyB0aGUgaW5kZXg6IgogbXNnc3RyICIiCiAiQ8OhYyB0aGF5IMSR4buVaSBraMO0bmcgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIHNhdSBraGkgbMOgbSB0xrDGoWkgbeG7m2kgbOG6oWkgYuG6o25nIG3hu6VjIGzhu6VjOiIKIAotIzogYnVpbHRpbi9hZGQuYzoxOTUgYnVpbHRpbi9hZGQuYzo0NjAgYnVpbHRpbi9ybS5jOjI3NQorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICJwYXRoc3BlYyDigJwlc+KAnSBraMO0bmcga2jhu5twIHbhu5tpIGLhuqV0IGvhu7MgdOG6rXAgdGluIG7DoG8iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjA5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKLW1zZ3N0ciAi4oCcJXPigJ0gbuG6sW0gbmdvw6BpIG3hu5l0IGxpw6puIGvhur90IHTGsOG7o25nIHRyxrBuZyIKLQotIzogYnVpbHRpbi9hZGQuYzoyNzYKKyM6IGJ1aWx0aW4vYWRkLmM6MzM5CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hZGQuYzoyODYKKyM6IGJ1aWx0aW4vYWRkLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgotbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyBnaGkiCittc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIOKAnCVz4oCdIMSR4buDIGdoaS4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjkwCisjOiBidWlsdGluL2FkZC5jOjM1MwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSByYSBtaeG6v25nIHbDoSIKIAotIzogYnVpbHRpbi9hZGQuYzoyOTUKKyM6IGJ1aWx0aW4vYWRkLmM6MzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBzdGF0ICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBs4bqleSB0cuG6oW5nIHRow6FpIHbhu4Eg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk3CisjOiBidWlsdGluL2FkZC5jOjM2MAogbXNnaWQgIkVtcHR5IHBhdGNoLiBBYm9ydGVkLiIKIG1zZ3N0ciAiTWnhur9uZyB2w6EgdHLhu5FuZyBy4buXbmcuIMSQw6MgYuG7jyBxdWEuIgogCi0jOiBidWlsdGluL2FkZC5jOjMwMworIzogYnVpbHRpbi9hZGQuYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGx5ICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBhcHBseSAow6FwIGThu6VuZyBtaeG6v25nIHbDoSkg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzEzCisjOiBidWlsdGluL2FkZC5jOjM3NgogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKIG1zZ3N0ciAiIgogIkPDoWMgxJHGsOG7nW5nIGThuqtuIHRoZW8gc2F1IMSRw6J5IHPhur0gYuG7iyBs4budIMSRaSBi4bufaSBt4buZdCB0cm9uZyBjw6FjIHThuq1wIHRpbiAuZ2l0aWdub3JlICIKICJj4bunYSBi4bqhbjpcbiIKIAotIzogYnVpbHRpbi9hZGQuYzozMTkgYnVpbHRpbi9jbGVhbi5jOjUyIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKLSM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6Mzg4IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MworIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKICM6IGJ1aWx0aW4vcm0uYzoyMDYKIG1zZ2lkICJkcnkgcnVuIgogbXNnc3RyICJjaOG6oXkgdGjhu60iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzIwIGJ1aWx0aW4vYXBwbHkuYzo0MzU0IGJ1aWx0aW4vY29tbWl0LmM6MTE2MAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIgYnVpbHRpbi9mc2NrLmM6NjEzIGJ1aWx0aW4vbG9nLmM6MTQ4MwotIzogYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCisjOiBidWlsdGluL2FkZC5jOjM5NCBidWlsdGluL2FwcGx5LmM6NDQwOSBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE5CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTIgYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTUgYnVpbHRpbi9mc2NrLmM6NjEzCisjOiBidWlsdGluL2xvZy5jOjE1MTggYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCiBtc2dpZCAiYmUgdmVyYm9zZSIKIG1zZ3N0ciAiY2hpIHRp4bq/dCIKIAotIzogYnVpbHRpbi9hZGQuYzozMjIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk2CiBtc2dpZCAiaW50ZXJhY3RpdmUgcGlja2luZyIKIG1zZ3N0ciAic+G7rWEgYuG6sW5nIGPDoWNoIHTGsMahbmcgdMOhYyIKIAotIzogYnVpbHRpbi9hZGQuYzozMjMgYnVpbHRpbi9jaGVja291dC5jOjEwMzEgYnVpbHRpbi9yZXNldC5jOjI0OAorIzogYnVpbHRpbi9hZGQuYzozOTcgYnVpbHRpbi9jaGVja291dC5jOjEwNjMgYnVpbHRpbi9yZXNldC5jOjI1OAogbXNnaWQgInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IgogbXNnc3RyICJjaOG7jW4g4oCcaHVua3PigJ0gbeG7mXQgY8OhY2ggdMawxqFuZyB0w6FjIgogCi0jOiBidWlsdGluL2FkZC5jOjMyNAorIzogYnVpbHRpbi9hZGQuYzozOTgKIG1zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCiBtc2dzdHIgInPhu61hIGRpZmYgaGnhu4duIG5heSB2w6Agw6FwIGThu6VuZyBuw7MiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI1CisjOiBidWlsdGluL2FkZC5jOjM5OQogbXNnaWQgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiY2hvIHBow6lwIHRow6ptIGPDoWMgdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEga2jDoWMiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzI2CisjOiBidWlsdGluL2FkZC5jOjQwMAogbXNnaWQgInVwZGF0ZSB0cmFja2VkIGZpbGVzIgogbXNnc3RyICJj4bqtcCBuaOG6rXQgY8OhYyB04bqtcCB0aW4gxJHGsOG7o2MgdGhlbyB24bq/dCIKIAotIzogYnVpbHRpbi9hZGQuYzozMjcKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICJjaOG7iSBnaGkgbOG6oWkgc+G7sSB2aeG7h2MgbcOgIMSRxrDhu51uZyBk4bqrbiBz4bq9IMSRxrDhu6NjIHRow6ptIHbDoG8gc2F1IgogCi0jOiBidWlsdGluL2FkZC5jOjMyOAorIzogYnVpbHRpbi9hZGQuYzo0MDIKIG1zZ2lkICJhZGQgY2hhbmdlcyBmcm9tIGFsbCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIiIKICJ0aMOqbSBjw6FjIHRoYXkgxJHhu5VpIHThu6sgdOG6pXQgY+G6oyBjw6FjIHThuq1wIHRpbiBjw7MgY8WpbmcgbmjGsCBraMO0bmcgxJHGsOG7o2MgdGhlbyBkw7VpIGThuqV1ICIKICJ24bq/dCIKIAotIzogYnVpbHRpbi9hZGQuYzozMjkKKyMuIHRha2VzIG5vIGFyZ3VtZW50cworIzogYnVpbHRpbi9hZGQuYzo0MDUKK21zZ2lkICJpZ25vcmUgcGF0aHMgcmVtb3ZlZCBpbiB0aGUgd29ya2luZyB0cmVlIChzYW1lIGFzIC0tbm8tYWxsKSIKK21zZ3N0ciAiIgorImzhu50gxJFpIGPDoWMgxJHGsOG7nW5nIGThuqtuIGLhu4sgZ+G7oSBi4buPIHRyb25nIGPDonkgdGjGsCBt4bulYyBsw6BtIHZp4buHYyAoZ2nhu5FuZyB24bubaSAtLW5vLWFsbCkiCisKKyM6IGJ1aWx0aW4vYWRkLmM6NDA3CiBtc2dpZCAiZG9uJ3QgYWRkLCBvbmx5IHJlZnJlc2ggdGhlIGluZGV4IgogbXNnc3RyICJraMO0bmcgdGjDqm0sIGNo4buJIGzDoG0gdMawxqFpIG3hu5tpIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hZGQuYzozMzAKKyM6IGJ1aWx0aW4vYWRkLmM6NDA4CiBtc2dpZCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIKIG1zZ3N0ciAiY2hpZSBi4buPIHF1YSBuaOG7r25nIHThuq1wIHRpbiBtw6AgbsOzIGtow7RuZyB0aOG7gyDEkcaw4bujYyB0aMOqbSB2w6BvIGLhu59pIHbDrCBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9hZGQuYzozMzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5CiBtc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgogbXNnc3RyICIiCiAia2nhu4NtIHRyYSB4ZW0gLSB0aOG6rW0gY2jDrSB0aGnhur91IC0gdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEgdHJvbmcgcXXDoSB0csOsbmggY2jhuqF5IHRo4butIgogCi0jOiBidWlsdGluL2FkZC5jOjM1MworIzogYnVpbHRpbi9hZGQuYzo0MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNlIC1mIGlmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgdGhlbS5cbiIKIG1zZ3N0ciAiU+G7rSBk4bulbmcgdMO5eSBjaOG7jW4gLWYgbuG6v3UgYuG6oW4gdGjhu7FjIHPhu7EgbXXhu5FuIHRow6ptIGNow7puZyB2w6BvLlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM1NAorIzogYnVpbHRpbi9hZGQuYzo0MzIKIG1zZ2lkICJubyBmaWxlcyBhZGRlZCIKIG1zZ3N0ciAiY2jGsGEgY8OzIHThuq1wIHRpbiBuw6BvIMSRxrDhu6NjIHRow6ptIHbDoG8iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzYwCisjOiBidWlsdGluL2FkZC5jOjQzOAogbXNnaWQgImFkZGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgInRow6ptIHThuq1wIHRpbiBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9hZGQuYzozOTIKKyM6IGJ1aWx0aW4vYWRkLmM6NDc3CiBtc2dpZCAiLUEgYW5kIC11IGFyZSBtdXR1YWxseSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi1BIHbDoCAtdSB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL2FkZC5jOjM5NAorIzogYnVpbHRpbi9hZGQuYzo0OTUKIG1zZ2lkICJPcHRpb24gLS1pZ25vcmUtbWlzc2luZyBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggLS1kcnktcnVuIgogbXNnc3RyICJUw7l5IGNo4buNbiAtLWlnbm9yZS1taXNzaW5nIGNo4buJIGPDsyB0aOG7gyDEkcaw4bujYyBkw7luZyBjw7luZyB24bubaSAtLWRyeS1ydW4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE0CisjOiBidWlsdGluL2FkZC5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3RoaW5nIHNwZWNpZmllZCwgbm90aGluZyBhZGRlZC5cbiIKIG1zZ3N0ciAiS2jDtG5nIGPDsyBnw6wgxJHGsOG7o2MgY2jhu4kgcmEsIGtow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIHRow6ptIHbDoG8uXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE1CisjOiBidWlsdGluL2FkZC5jOjUyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYXliZSB5b3Ugd2FudGVkIHRvIHNheSAnZ2l0IGFkZCAuJz9cbiIKIG1zZ3N0ciAiQ8OzIGzhur0gYuG6oW4gbXXhu5FuIGzDoCDigJxnaXQgYWRkIC7igJ0gcGjhuqNpIGtow7RuZz9cbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MjEgYnVpbHRpbi9jbGVhbi5jOjk1IGJ1aWx0aW4vY29tbWl0LmM6MjkxIGJ1aWx0aW4vbXYuYzo4MgotIzogYnVpbHRpbi9ybS5jOjIzNQorIzogYnVpbHRpbi9hZGQuYzo1MzIgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzo2NiBidWlsdGluL2NsZWFuLmM6MjA0CisjOiBidWlsdGluL2NvbW1pdC5jOjI5MyBidWlsdGluL212LmM6ODIgYnVpbHRpbi9ybS5jOjIzNQogbXNnaWQgImluZGV4IGZpbGUgY29ycnVwdCIKIG1zZ3N0ciAidOG6rXAgdGluIGdoaSBi4bqjbmcgbeG7pWMgbOG7pWMgYuG7iyBo4buPbmciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDgxIGJ1aWx0aW4vYXBwbHkuYzo0NDUwIGJ1aWx0aW4vbXYuYzoyMjkgYnVpbHRpbi9ybS5jOjM3MAorIzogYnVpbHRpbi9hZGQuYzo2MDQgYnVpbHRpbi9hcHBseS5jOjQ1MDUgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCiBtc2dpZCAiVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIHThuq1wIHRpbiBsxrB1IGLhuqNuZyBt4bulYyBs4bulYyBt4bubaSIKIApAQCAtMTYyNiwxOSArMTkzMywxOSBAQAogIzogYnVpbHRpbi9hcHBseS5jOjk1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgYXBwbHk6IGJhZCBnaXQtZGlmZiAtIGV4cGVjdGVkIC9kZXYvbnVsbCBvbiBsaW5lICVkIgotbXNnc3RyICJnaXQgYXBwbHk6IGdpdC1kaWZmIHNhaSAtIG1vbmcgxJHhu6NpIC9kZXYvbnVsbCB0csOqbiBkw7JuZyAlZCIKK21zZ3N0ciAiZ2l0IGFwcGx5OiBnaXQtZGlmZiBzYWkgLSBj4bqnbiAvZGV2L251bGwgdHLDqm4gZMOybmcgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDIwCisjOiBidWlsdGluL2FwcGx5LmM6MTQyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWNvdW50OiB1bmV4cGVjdGVkIGxpbmU6ICUuKnMiCi1tc2dzdHIgImNoaSB0aeG6v3Q6IGTDsm5nIGtow7RuZyDEkcaw4bujYyBtb25nIMSR4bujaTogJS4qcyIKK21zZ3N0ciAiY2hpIHRp4bq/dDogZMOybmcga2jDtG5nIGPhuqduOiAlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQ3NworIzogYnVpbHRpbi9hcHBseS5jOjE0NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggZnJhZ21lbnQgd2l0aG91dCBoZWFkZXIgYXQgbGluZSAlZDogJS4qcyIKIG1zZ3N0ciAibWnhur9uZyB2w6EgcGjDom4gbeG6o25oIG3DoCBraMO0bmcgY8OzIHBo4bqnbiDEkeG6p3UgdOG6oWkgZMOybmcgJWQ6ICUuKnMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNDk0CisjOiBidWlsdGluL2FwcGx5LmM6MTQ5NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiZ2l0IGRpZmYgaGVhZGVyIGxhY2tzIGZpbGVuYW1lIGluZm9ybWF0aW9uIHdoZW4gcmVtb3ZpbmcgJWQgbGVhZGluZyBwYXRobmFtZSAiCkBAIC0xNjUzLDgyICsxOTYwLDc4IEBACiAicGjhuqduIMSR4bqndSBkaWZmIGNobyBnaXQgIHRoaeG6v3UgdGjDtG5nIHRpbiB0w6puIHThuq1wIHRpbiBraGkgZ+G7oSBi4buPIMSRaSAlZCB0cm9uZyAiCiAidGjDoG5oIHBo4bqnbiBk4bqrbiDEkeG6p3UgdMOqbiBj4bunYSDEkcaw4budbmcgZOG6q24gKGTDsm5nICVkKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2NTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CiBtc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgInThuq1wIHRpbiBt4bubaSBwaOG7pSB0aHXhu5ljIHbDoG8gbuG7mWkgZHVuZyBjxakiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CisjOiBidWlsdGluL2FwcGx5LmM6MTY1OAogbXNnaWQgImRlbGV0ZWQgZmlsZSBzdGlsbCBoYXMgY29udGVudHMiCiBtc2dzdHIgInThuq1wIHRpbiDEkcOjIHjDs2EgduG6q24gY8OybiBu4buZaSBkdW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY4MgorIzogYnVpbHRpbi9hcHBseS5jOjE2ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBwYXRjaCBhdCBsaW5lICVkIgogbXNnc3RyICJtaeG6v25nIHbDoSBo4buPbmcgdOG6oWkgZMOybmcgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNzE4CisjOiBidWlsdGluL2FwcGx5LmM6MTcyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZSAlcyBkZXBlbmRzIG9uIG9sZCBjb250ZW50cyIKIG1zZ3N0ciAidOG6rXAgdGluIG3hu5tpICVzIHBo4bulIHRodeG7mWMgdsOgbyBu4buZaSBkdW5nIGPFqSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE3MjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQgZmlsZSAlcyBzdGlsbCBoYXMgY29udGVudHMiCiBtc2dzdHIgInThuq1wIHRpbiDEkcOjIHjDs2EgJXMgduG6q24gY8OybiBu4buZaSBkdW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTcyMworIzogYnVpbHRpbi9hcHBseS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiogd2FybmluZzogZmlsZSAlcyBiZWNvbWVzIGVtcHR5IGJ1dCBpcyBub3QgZGVsZXRlZCIKIG1zZ3N0ciAiKiogY+G6o25oIGLDoW86IHThuq1wIHRpbiAlcyB0cuG7nyBuw6puIHRy4buRbmcgcuG7l25nIG5oxrBuZyBraMO0bmcgYuG7iyB4w7NhIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTg2OQorIzogYnVpbHRpbi9hcHBseS5jOjE4NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBiaW5hcnkgcGF0Y2ggYXQgbGluZSAlZDogJS4qcyIKIG1zZ3N0ciAibWnhur9uZyB2w6EgxJHhu4tuaCBk4bqhbmcgbmjhu4sgcGjDom4gc2FpIGjhu49uZyB04bqhaSBkw7JuZyAlZDogJS4qcyIKIAogIy4gdGhlcmUgaGFzIHRvIGJlIG9uZSBodW5rIChmb3J3YXJkIGh1bmspCi0jOiBidWlsdGluL2FwcGx5LmM6MTg5OAorIzogYnVpbHRpbi9hcHBseS5jOjE5MDAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGJpbmFyeSBwYXRjaCBhdCBsaW5lICVkIgogbXNnc3RyICJtaeG6v25nIHbDoSDEkeG7i25oIGThuqFuZyBuaOG7iyBwaMOibiBraMO0bmcgxJHGsOG7o2Mgbmjhuq1uIHJhIHThuqFpIGTDsm5nICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTk4NAorIzogYnVpbHRpbi9hcHBseS5jOjE5ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0Y2ggd2l0aCBvbmx5IGdhcmJhZ2UgYXQgbGluZSAlZCIKIG1zZ3N0ciAidsOhIGNo4buJIHbhu5tpIOKAnGdhcmJhZ2XigJ0gdOG6oWkgZMOybmcgJWQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyMDc0CisjOiBidWlsdGluL2FwcGx5LmM6MjA3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCBzeW1saW5rICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIGxpw6puIGvhur90IHTGsOG7o25nIHRyxrBuZyAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjIwNzgKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyMDgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBvcGVuIG9yIHJlYWQgJXMiCi1tc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIMSR4buDIMSR4buNYyBoYXkgZ2hpICVzIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyBoYXkgxJHhu41jICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjE0OQotbXNnaWQgIm9vcHMiCi1tc2dzdHIgIsO0aT8iCi0KLSM6IGJ1aWx0aW4vYXBwbHkuYzoyNjcxCisjOiBidWlsdGluL2FwcGx5LmM6MjY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHN0YXJ0IG9mIGxpbmU6ICclYyciCiBtc2dzdHIgInNhaSBraOG7n2kgxJHhuqd1IGTDsm5nOiDigJwlY+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3ODkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKIG1zZ3N0clswXSAiS2jhu5FpIGThu68gbGnhu4d1ICMlZCB0aMOgbmggY8O0bmcgdOG6oWkgJWQgKG9mZnNldCAlZCBkw7JuZykuIgogbXNnc3RyWzFdICJLaOG7kWkgZOG7ryBsaeG7h3UgIyVkIHRow6BuaCBjw7RuZyB04bqhaSAlZCAob2Zmc2V0ICVkIGTDsm5nKS4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyODAxCisjOiBidWlsdGluL2FwcGx5LmM6MjgxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb250ZXh0IHJlZHVjZWQgdG8gKCVsZC8lbGQpIHRvIGFwcGx5IGZyYWdtZW50IGF0ICVkIgogbXNnc3RyICJO4buZaSBkdW5nIGLhu4sgZ2nhuqNtIHh14buRbmcgKCVsZC8lbGQpIMSR4buDIMOhcCBk4bulbmcgbeG6o25oIGThu68gbGnhu4d1IHThuqFpICVkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgwNworIzogYnVpbHRpbi9hcHBseS5jOjI4MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIndoaWxlIHNlYXJjaGluZyBmb3I6XG4iCkBAIC0xNzM3LDMyNSArMjA0MCwzMjUgQEAKICJUcm9uZyBraGkgxJFhbmcgdMOsbSBraeG6v20gY2hvOlxuIgogIiUuKnMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyODI2CisjOiBidWlsdGluL2FwcGx5LmM6Mjg0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJtaXNzaW5nIGJpbmFyeSBwYXRjaCBkYXRhIGZvciAnJXMnIgogbXNnc3RyICJ0aGnhur91IGThu68gbGnhu4d1IGPhu6dhIG1p4bq/bmcgdsOhIMSR4buLbmggZOG6oW5nIG5o4buLIHBow6JuIGNobyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5MjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJpbmFyeSBwYXRjaCBkb2VzIG5vdCBhcHBseSB0byAnJXMnIgogbXNnc3RyICJtaeG6v25nIHbDoSDEkeG7i25oIGThuqFuZyBuaOG7iyBwaMOibiBraMO0bmcgxJHGsOG7o2Mgw6FwIGThu6VuZyBjaG8g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoyOTM1CisjOiBidWlsdGluL2FwcGx5LmM6Mjk1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJiaW5hcnkgcGF0Y2ggdG8gJyVzJyBjcmVhdGVzIGluY29ycmVjdCByZXN1bHQgKGV4cGVjdGluZyAlcywgZ290ICVzKSIKIG1zZ3N0ciAiIgogInbDoSBuaOG7iyBwaMOibiBjaG8g4oCcJXPigJ0gdOG6oW8gcmEga+G6v3QgcXXhuqMga2jDtG5nIGNow61uaCB4w6FjIChtb25nIGNo4budICVzLCBs4bqhaSBuaOG6rW4gIgogIiVzKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5NTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTczCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZhaWxlZDogJXM6JWxkIgogbXNnc3RyICJ2w6EgZ+G6t3AgbOG7l2k6ICVzOiVsZCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMwNzgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMDk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjaGVja291dCAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIFwiY2hlY2tvdXRcIiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxMjMgYnVpbHRpbi9hcHBseS5jOjMxMzIgYnVpbHRpbi9hcHBseS5jOjMxNzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMTQwIGJ1aWx0aW4vYXBwbHkuYzozMTQ5IGJ1aWx0aW4vYXBwbHkuYzozMTkzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlYWQgb2YgJXMgZmFpbGVkIgogbXNnc3RyICLEkeG7jWMgJXMgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTU2IGJ1aWx0aW4vYXBwbHkuYzozMzc4CisjOiBidWlsdGluL2FwcGx5LmM6MzE3MyBidWlsdGluL2FwcGx5LmM6MzM5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICVzIGhhcyBiZWVuIHJlbmFtZWQvZGVsZXRlZCIKIG1zZ3N0ciAixJHGsOG7nW5nIGThuqtuICVzIMSRw6MgYuG7iyB4w7NhL8SR4buVaSB0w6puIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzIzNyBidWlsdGluL2FwcGx5LmM6MzM5MgorIzogYnVpbHRpbi9hcHBseS5jOjMyNTQgYnVpbHRpbi9hcHBseS5jOjM0MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4IgogbXNnc3RyICIlczoga2jDtG5nIHThu5NuIHThuqFpIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNDEgYnVpbHRpbi9hcHBseS5jOjMzODQgYnVpbHRpbi9hcHBseS5jOjM0MDYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU4IGJ1aWx0aW4vYXBwbHkuYzozNDAxIGJ1aWx0aW4vYXBwbHkuYzozNDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAlcyIKIG1zZ3N0ciAiJXM6ICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI0NiBidWlsdGluL2FwcGx5LmM6MzQwMAorIzogYnVpbHRpbi9hcHBseS5jOjMyNjMgYnVpbHRpbi9hcHBseS5jOjM0MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IG1hdGNoIGluZGV4IgogbXNnc3RyICIlczoga2jDtG5nIGto4bubcCB0cm9uZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMzNDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMzY1CiBtc2dpZCAicmVtb3ZhbCBwYXRjaCBsZWF2ZXMgZmlsZSBjb250ZW50cyIKIG1zZ3N0ciAibG/huqFpIGLhu48gbWnhur9uZyB2w6EgxJHhu4MgbOG6oWkgbuG7mWkgZHVuZyB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNDE3CisjOiBidWlsdGluL2FwcGx5LmM6MzQzNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogd3JvbmcgdHlwZSIKIG1zZ3N0ciAiJXM6IHNhaSBraeG7g3UiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNDE5CisjOiBidWlsdGluL2FwcGx5LmM6MzQzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBoYXMgdHlwZSAlbywgZXhwZWN0ZWQgJW8iCiBtc2dzdHIgIiVzIGPDsyBraeG7g3UgJW8sIG1vbmcgY2jhu50gJW8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTIwCisjOiBidWlsdGluL2FwcGx5LmM6MzUzNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgiCiBtc2dzdHIgIiVzOiDEkcOjIGPDsyB04burIHRyxrDhu5tjIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXM6IMSRw6Mgc+G6tW4gY8OzIHRyb25nIHRoxrAgbeG7pWMgxJFhbmcgbMOgbSB2aeG7h2MiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQzCisjOiBidWlsdGluL2FwcGx5LmM6MzU2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykiCiBtc2dzdHIgImNo4bq/IMSR4buZIG3hu5tpICglbykgY+G7p2EgJXMga2jDtG5nIGto4bubcCB24bubaSBjaOG6vyDEkeG7mSBjxakgKCVvKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NDgKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBtb2RlICglbykgb2YgJXMgZG9lcyBub3QgbWF0Y2ggb2xkIG1vZGUgKCVvKSBvZiAlcyIKIG1zZ3N0ciAiY2jhur8gxJHhu5kgbeG7m2kgKCVvKSBj4bunYSAlcyBraMO0bmcga2jhu5twIHbhu5tpIGNo4bq/IMSR4buZIGPFqSAoJW8pIGPhu6dhICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU1NgorIzogYnVpbHRpbi9hcHBseS5jOjM1NzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICIlczogbWnhur9uZyB2w6Ega2jDtG5nIMSRxrDhu6NjIMOhcCBk4bulbmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTY5CisjOiBidWlsdGluL2FwcGx5LmM6MzU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyBwYXRjaCAlcy4uLiIKIG1zZ3N0ciAixJBhbmcga2nhu4NtIHRyYSBtaeG6v25nIHbDoSAlcy4uLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM2MjQgYnVpbHRpbi9jaGVja291dC5jOjIxNSBidWlsdGluL3Jlc2V0LmM6MTU4CisjOiBidWlsdGluL2FwcGx5LmM6MzY3OSBidWlsdGluL2NoZWNrb3V0LmM6MjE2IGJ1aWx0aW4vcmVzZXQuYzoxMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFrZV9jYWNoZV9lbnRyeSBmYWlsZWQgZm9yIHBhdGggJyVzJyIKIG1zZ3N0ciAibWFrZV9jYWNoZV9lbnRyeSBn4bq3cCBs4buXaSDEkeG7kWkgduG7m2kgxJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzc2NworIzogYnVpbHRpbi9hcHBseS5jOjM4MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlbW92ZSAlcyBmcm9tIGluZGV4IgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ+G7oSBi4buPICVzIHThu6sgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzk1CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IHBhdGNoIGZvciBzdWJwcm9qZWN0ICVzIgogbXNnc3RyICJtaeG6v25nIHbDoSBzYWkgaOG7j25nIGNobyBk4buxIMOhbiBjb24gKHN1YnByb2plY3QpICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzc5OQorIzogYnVpbHRpbi9hcHBseS5jOjM4NTQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXQgbmV3bHkgY3JlYXRlZCBmaWxlICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBs4bqleSB0cuG6oW5nIHRow6FpIHbhu4EgdOG6rXAgdGluICVzIG3hu5tpIGjGoW4gxJHDoyDEkcaw4bujYyB04bqhbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4MDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgYmFja2luZyBzdG9yZSBmb3IgbmV3bHkgY3JlYXRlZCBmaWxlICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8g4oCcYmFja2luZyBzdG9yZeKAnSBjaG8gdOG6rXAgdGluIMSRxrDhu6NjIHThuqFvIG3hu5tpIGjGoW4gJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODA3IGJ1aWx0aW4vYXBwbHkuYzozOTE1CisjOiBidWlsdGluL2FwcGx5LmM6Mzg2MiBidWlsdGluL2FwcGx5LmM6Mzk3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gYWRkIGNhY2hlIGVudHJ5IGZvciAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHRow6ptIG3hu6VjIG5o4bubIHThuqFtIGNobyAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NDAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNsb3NpbmcgZmlsZSAnJXMnIgogbXNnc3RyICLEkWFuZyDEkcOzbmcgdOG6rXAgdGluIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg4OQorIzogYnVpbHRpbi9hcHBseS5jOjM5NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIGZpbGUgJyVzJyBtb2RlICVvIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIHbDoG8gdOG6rXAgdGluIOKAnCVz4oCdIGNo4bq/IMSR4buZIChtb2RlKSAlbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGxpZWQgcGF0Y2ggJXMgY2xlYW5seS4iCiBtc2dzdHIgIsSQw6Mgw6FwIGThu6VuZyBtaeG6v25nIHbDoCAlcyBt4buZdCBjw6FjaCBz4bqhY2ggc+G6vS4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTg0CisjOiBidWlsdGluL2FwcGx5LmM6NDAzOQogbXNnaWQgImludGVybmFsIGVycm9yIgogbXNnc3RyICJs4buXaSBu4buZaSBi4buZIgogCiAjLiBTYXkgdGhpcyBldmVuIHdpdGhvdXQgLS12ZXJib3NlCi0jOiBidWlsdGluL2FwcGx5LmM6Mzk4NworIzogYnVpbHRpbi9hcHBseS5jOjQwNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0Li4uIgogbXNnaWRfcGx1cmFsICJBcHBseWluZyBwYXRjaCAlJXMgd2l0aCAlZCByZWplY3RzLi4uIgogbXNnc3RyWzBdICLEkGFuZyDDoXAgZOG7pW5nIG1p4bq/bmcgdsOhICUlcyB24bubaSAlZCBs4bqnbiB04burIGNo4buRaS4uLiIKIG1zZ3N0clsxXSAixJBhbmcgw6FwIGThu6VuZyBtaeG6v25nIHbDoSAlJXMgduG7m2kgJWQgbOG6p24gdOG7qyBjaOG7kWkuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTk3CisjOiBidWlsdGluL2FwcGx5LmM6NDA1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cnVuY2F0aW5nIC5yZWogZmlsZW5hbWUgdG8gJS4qcy5yZWoiCiBtc2dzdHIgIsSRYW5nIGPhuq90IGPhu6V0IHTDqm4gdOG6rXAgdGluIC5yZWogdGjDoG5oICUuKnMucmVqIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAxOAorIzogYnVpbHRpbi9hcHBseS5jOjQwNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiSHVuayAjJWQgYXBwbGllZCBjbGVhbmx5LiIKIG1zZ3N0ciAiS2jhu5FpIG5o4bubICMlZCDEkcaw4bujYyDDoXAgZOG7pW5nIGfhu41uIGfDoG5nLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlamVjdGVkIGh1bmsgIyVkLiIKIG1zZ3N0ciAiaHVuayAjJWQgYuG7iyB04burIGNo4buRaS4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MTcxCisjOiBidWlsdGluL2FwcGx5LmM6NDIyNgogbXNnaWQgInVucmVjb2duaXplZCBpbnB1dCIKIG1zZ3N0ciAia2jDtG5nIHRo4burYSBuaOG6rW4gxJHhuqd1IHbDoG8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MTgyCisjOiBidWlsdGluL2FwcGx5LmM6NDIzNwogbXNnaWQgInVuYWJsZSB0byByZWFkIGluZGV4IGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwMSBidWlsdGluL2FwcGx5LmM6NDMwNCBidWlsdGluL2Nsb25lLmM6OTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2IGJ1aWx0aW4vYXBwbHkuYzo0MzU5IGJ1aWx0aW4vY2xvbmUuYzo5MgogIzogYnVpbHRpbi9mZXRjaC5jOjYzCiBtc2dpZCAicGF0aCIKIG1zZ3N0ciAixJHGsOG7nW5nLWThuqtuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwMgorIzogYnVpbHRpbi9hcHBseS5jOjQzNTcKIG1zZ2lkICJkb24ndCBhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICJraMO0bmcgw6FwIGThu6VuZyBjw6FjIHRoYXkgxJHhu5VpIGto4bubcCB24bubaSDEkcaw4budbmcgZOG6q24gxJHDoyBjaG8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA1CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MAogbXNnaWQgImFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgIsOhcCBk4bulbmcgY8OhYyB0aGF5IMSR4buVaSBraOG7m3AgduG7m2kgxJHGsOG7nW5nIGThuqtuIMSRw6MgY2hvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwNworIzogYnVpbHRpbi9hcHBseS5jOjQzNjIKIG1zZ2lkICJudW0iCiBtc2dzdHIgInPhu5EiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA4CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MwogbXNnaWQgInJlbW92ZSA8bnVtPiBsZWFkaW5nIHNsYXNoZXMgZnJvbSB0cmFkaXRpb25hbCBkaWZmIHBhdGhzIgogbXNnc3RyICJn4buhIGLhu48gPHPhu5E+IHBo4bqnbiBk4bqrbiDEkeG6p3UgKHNsYXNoZSkgdOG7qyDEkcaw4budbmcgZOG6q24gZGlmZiBj4buVIMSRaeG7g24iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzExCisjOiBidWlsdGluL2FwcGx5LmM6NDM2NgogbXNnaWQgImlnbm9yZSBhZGRpdGlvbnMgbWFkZSBieSB0aGUgcGF0Y2giCiBtc2dzdHIgImzhu50gxJFpIHBo4bqnbiBwaOG7pSB0aMOqbSB04bqhbyByYSBi4bufaSBtaeG6v25nIHbDoSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY4CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBkaWZmc3RhdCBmb3IgdGhlIGlucHV0IgogbXNnc3RyICIiCiAidGhheSB2w6wgw6FwIGThu6VuZyBt4buZdCBtaeG6v25nIHbDoSwga+G6v3QgeHXhuqV0IGvhur90IHF14bqjIHThu6sgbOG7h25oIGRpZmZzdGF0IGNobyDEkeG6p3UgcmEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzE3CisjOiBidWlsdGluL2FwcGx5LmM6NDM3MgogbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgIiIKICJoaeG7g24gdGjhu4sgc+G7kSBsxrDhu6NuZyBjw6FjIGTDsm5nIMSRxrDhu6NjIHRow6ptIHbDoG8gdsOgIHjDs2EgxJFpIHRoZW8ga8O9IGhp4buHdSB0aOG6rXAgcGjDom4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzE5CisjOiBidWlsdGluL2FwcGx5LmM6NDM3NAogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgYSBzdW1tYXJ5IGZvciB0aGUgaW5wdXQiCiBtc2dzdHIgInRoYXkgdsOsIMOhcCBk4bulbmcgbeG7mXQgbWnhur9uZyB2w6EsIGvhur90IHh14bqldCBr4bq/dCBxdeG6oyBjaG8gxJHhuqd1IHbDoG8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzIxCisjOiBidWlsdGluL2FwcGx5LmM6NDM3NgogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBzZWUgaWYgdGhlIHBhdGNoIGlzIGFwcGxpY2FibGUiCiBtc2dzdHIgInRoYXkgdsOsIMOhcCBk4bulbmcgbWnhur9uZyB2w6EsIGjDo3kgeGVtIHhlbSBtaeG6v25nIHbDoSBjw7MgdGjDrWNoIGjhu6NwIGtow7RuZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc4CiBtc2dpZCAibWFrZSBzdXJlIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIHRvIHRoZSBjdXJyZW50IGluZGV4IgogbXNnc3RyICJow6N5IGNo4bqvYyBjaOG6r24gbMOgIG1p4bq/bmcgdsOhIHRow61jaCBo4bujcCB24bubaSBi4bqjbmcgbeG7pWMgbOG7pWMgaGnhu4duIGjDoG5oIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNQorIzogYnVpbHRpbi9hcHBseS5jOjQzODAKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAiw6FwIGThu6VuZyBt4buZdCBtaeG6v25nIHbDoSBtw6Aga2jDtG5nIMSR4buZbmcgY2jhuqFtIMSR4bq/biBjw6J5IGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNworIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAiIgogIsSR4buTbmcgdGjhu51pIMOhcCBk4bulbmcgbWnhur9uZyB2w6EgKGTDuW5nIHbhu5tpIHTDuXkgY2jhu41uIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjaykiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzI5CisjOiBidWlsdGluL2FwcGx5LmM6NDM4NAogbXNnaWQgImF0dGVtcHQgdGhyZWUtd2F5IG1lcmdlIGlmIGEgcGF0Y2ggZG9lcyBub3QgYXBwbHkiCiBtc2dzdHIgInRo4butIGjDsmEgdHLhu5luIGtp4buDdSB0aHJlZS13YXkgbuG6v3Ugdmnhu4djIHbDoSBraMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiDEkcaw4bujYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCiBtc2dzdHIgIiIKICJ4w6J5IGThu7FuZyBi4bqjbmcgbeG7pWMgbOG7pWMgdOG6oW0gdGjhu51pIHRyw6puIGPGoSBz4bufIHRow7RuZyB0aW4gYuG6o25nIG3hu6VjIGzhu6VjIMSRxrDhu6NjIG5ow7puZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzMgYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NyBidWlsdGluL2xzLWZpbGVzLmM6NDYwCisjOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKIG1zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKIG1zZ3N0ciAiY8OhYyDEkcaw4budbmcgZOG6q24gYuG7iyBuZ8SDbiBjw6FjaCBi4bufaSBrw70gdOG7sSBOVUxMIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMzNgorIzogYnVpbHRpbi9hcHBseS5jOjQzOTEKIG1zZ2lkICJlbnN1cmUgYXQgbGVhc3QgPG4+IGxpbmVzIG9mIGNvbnRleHQgbWF0Y2giCiBtc2dzdHIgIsSR4bqjbSBi4bqjbyBy4bqxbmcgY8OzIMOtdCBuaOG6pXQgPG4+IGTDsm5nIG7hu5lpIGR1bmcga2jhu5twIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMzNworIzogYnVpbHRpbi9hcHBseS5jOjQzOTIKIG1zZ2lkICJhY3Rpb24iCiBtc2dzdHIgImjDoG5oIMSR4buZbmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM4CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImRldGVjdCBuZXcgb3IgbW9kaWZpZWQgbGluZXMgdGhhdCBoYXZlIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyICJ0w6xtIHRo4bqleSBt4buZdCBkw7JuZyBt4bubaSBob+G6t2MgYuG7iyBz4butYSDEkeG7lWkgbcOgIG7DsyBjw7MgbOG7l2kgZG8ga2hv4bqjbmcgdHLhuq9uZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNDEgYnVpbHRpbi9hcHBseS5jOjQzNDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzk2IGJ1aWx0aW4vYXBwbHkuYzo0Mzk5CiBtc2dpZCAiaWdub3JlIGNoYW5nZXMgaW4gd2hpdGVzcGFjZSB3aGVuIGZpbmRpbmcgY29udGV4dCIKIG1zZ3N0ciAibOG7nSDEkWkgc+G7sSB0aGF5IMSR4buVaSBkbyBraG/huqNuZyB0cuG6r25nIGtoaSBxdcOpdCBu4buZaSBkdW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM0NworIzogYnVpbHRpbi9hcHBseS5jOjQ0MDIKIG1zZ2lkICJhcHBseSB0aGUgcGF0Y2ggaW4gcmV2ZXJzZSIKIG1zZ3N0ciAiw6FwIGThu6VuZyBtaeG6v25nIHbDoSB0aGVvIGNoaeG7gXUgbmfGsOG7o2MiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ5CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNAogbXNnaWQgImRvbid0IGV4cGVjdCBhdCBsZWFzdCBvbmUgbGluZSBvZiBjb250ZXh0IgogbXNnc3RyICLEkeG7q25nIGh5IHbhu41uZyBjw7Mgw610IG5o4bqldCBt4buZdCBkw7JuZyBu4buZaSBkdW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1MQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDYKIG1zZ2lkICJsZWF2ZSB0aGUgcmVqZWN0ZWQgaHVua3MgaW4gY29ycmVzcG9uZGluZyAqLnJlaiBmaWxlcyIKIG1zZ3N0ciAixJHhu4MgbOG6oWkga2jhu5FpIGThu68gbGnhu4d1IGLhu4sgdOG7qyBjaOG7kWkgdHJvbmcgY8OhYyB04bqtcCB0aW4gKi5yZWogdMawxqFuZyDhu6luZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA4CiBtc2dpZCAiYWxsb3cgb3ZlcmxhcHBpbmcgaHVua3MiCiBtc2dzdHIgImNobyBwaMOpcCBjaOG7k25nIGto4buRaSBuaOG7myIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDExCiBtc2dpZCAidG9sZXJhdGUgaW5jb3JyZWN0bHkgZGV0ZWN0ZWQgbWlzc2luZyBuZXctbGluZSBhdCB0aGUgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIiIKICLEkcOjIGTDsiB0w6xtIHRo4bqleSBkdW5nIHNhaSBraMO0bmcgY2jDrW5oIHjDoWMgdGhp4bq/dSBkw7JuZyBt4bubaSB04bqhaSBjdeG7kWkgdOG6rXAgdGluIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTQKIG1zZ2lkICJkbyBub3QgdHJ1c3QgdGhlIGxpbmUgY291bnRzIGluIHRoZSBodW5rIGhlYWRlcnMiCiBtc2dzdHIgImtow7RuZyB0aW4gc+G7kSBsxrDhu6NuZyBkw7JuZyB0cm9uZyBwaOG6p24gxJHhuqd1IGto4buRaSBk4buvIGxp4buHdSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE2CiBtc2dpZCAicm9vdCIKIG1zZ3N0ciAicm9vdCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE3CiBtc2dpZCAicHJlcGVuZCA8cm9vdD4gdG8gYWxsIGZpbGVuYW1lcyIKIG1zZ3N0ciAidHJlbyB0aMOqbSA8cm9vdD4gdsOgbyB04bqldCBj4bqjIGPDoWMgdMOqbiB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg0CisjOiBidWlsdGluL2FwcGx5LmM6NDQzOQogbXNnaWQgIi0tM3dheSBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS0zd2F5IOG7nyBuZ2/DoGkgbeG7mXQga2hvIGNo4bupYSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQ3CiBtc2dpZCAiLS1pbmRleCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS1pbmRleCDhu58gbmdvw6BpIG3hu5l0IGtobyBjaOG7qWEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzk1CisjOiBidWlsdGluL2FwcGx5LmM6NDQ1MAogbXNnaWQgIi0tY2FjaGVkIG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLWNhY2hlZCDhu58gbmdvw6BpIG3hu5l0IGtobyBjaOG7qWEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDExCisjOiBidWlsdGluL2FwcGx5LmM6NDQ2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBvcGVuIHBhdGNoICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIG1p4bq/bmcgdsOhIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQyNQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAixJHDoyBjaOG6pW0gZOG7qXQgJWQgbOG7l2kga2hv4bqjbmcgdHLhuq9uZyIKIG1zZ3N0clsxXSAixJHDoyBjaOG6pW0gZOG7qXQgJWQgbOG7l2kga2hv4bqjbmcgdHLhuq9uZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MzEgYnVpbHRpbi9hcHBseS5jOjQ0NDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDg2IGJ1aWx0aW4vYXBwbHkuYzo0NDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGxpbmUgYWRkcyB3aGl0ZXNwYWNlIGVycm9ycy4iCiBtc2dpZF9wbHVyYWwgIiVkIGxpbmVzIGFkZCB3aGl0ZXNwYWNlIGVycm9ycy4iCkBAIC0yMDc5LDIxICsyMzgyLDIxIEBACiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIEFDSy9OQUssIGdvdCBFT0YiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBtb25nIMSR4bujaSBBQ0svTkFLLCBuaOG6rW4gRU9GIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2MworIzogYnVpbHRpbi9hcmNoaXZlLmM6NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IE5BQ0sgJXMiCiBtc2dzdHIgImdpdCBhcmNoaXZlOiBOQUNLICVzIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo2NQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGVycm9yOiAlcyIKIG1zZ3N0ciAibOG7l2kgbcOheSBjaOG7pzogJXMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY2CisjOiBidWlsdGluL2FyY2hpdmUuYzo2NAogbXNnaWQgImdpdCBhcmNoaXZlOiBwcm90b2NvbCBlcnJvciIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IGzhu5dpIGdpYW8gdGjhu6ljIgogCi0jOiBidWlsdGluL2FyY2hpdmUuYzo3MQorIzogYnVpbHRpbi9hcmNoaXZlLmM6NjgKIG1zZ2lkICJnaXQgYXJjaGl2ZTogZXhwZWN0ZWQgYSBmbHVzaCIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmU6IMSRw6MgbW9uZyBjaOG7nSBt4buZdCBmbHVzaCIKIApAQCAtMjExNSwxMjEgKzI0MTgsMTIxIEBACiBtc2dpZCAiZ2l0IGJsYW1lIFtvcHRpb25zXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gZmlsZSIKIG1zZ3N0ciAiZ2l0IGJsYW1lIFtjw6FjLXTDuXktY2jhu41uXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gdOG6rXAtdGluIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MzAgYnVpbHRpbi9zaG9ydGxvZy5jOjE1CisjOiBidWlsdGluL2JsYW1lLmM6MzAKIG1zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKIG1zZ3N0ciAiW3Jldi1vcHRzXSDEkcaw4bujYyBtw7QgdOG6oyB0cm9uZyBnaXQtcmV2LWxpc3QoMSkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc0CisjOiBidWlsdGluL2JsYW1lLmM6MjM1NQogbXNnaWQgIlNob3cgYmxhbWUgZW50cmllcyBhcyB3ZSBmaW5kIHRoZW0sIGluY3JlbWVudGFsbHkiCiBtc2dzdHIgIkhp4buDbiB0aOG7iyBjw6FjIG3hu6VjIOKAnGJsYW1l4oCdIG5oxrAgbMOgIGNow7puZyB0YSB0aOG6pXkgY2jDum5nLCB0xINuZyBk4bqnbiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU2CiBtc2dpZCAiU2hvdyBibGFuayBTSEEtMSBmb3IgYm91bmRhcnkgY29tbWl0cyAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiIgogIkhp4buDbiB0aOG7iyBTSEEtMSB0cuG6r25nIGNobyBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gYmnDqm4gZ2nhu5tpIChN4bq3YyDEkeG7i25oOiBvZmYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKIG1zZ2lkICJEbyBub3QgdHJlYXQgcm9vdCBjb21taXRzIGFzIGJvdW5kYXJpZXMgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIktow7RuZyBjb2kgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIGfhu5FjIGzDoCBnaeG7m2kgaOG6oW4gKE3hurdjIMSR4buLbmg6IG9mZikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc3CisjOiBidWlsdGluL2JsYW1lLmM6MjM1OAogbXNnaWQgIlNob3cgd29yayBjb3N0IHN0YXRpc3RpY3MiCiBtc2dzdHIgIkhp4buDbiB0aOG7iyB0aOG7kW5nIGvDqiBjw7RuZyBz4bupYyBsw6BtIHZp4buHYyIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU5CiBtc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCiBtc2dzdHIgIkhp4buDbiB0aOG7iyBr4bq/dCB4deG6pXQgxJFp4buDbSBz4buRIGPDsyBjw6FjIG3hu6VjIHRpbiDigJxibGFtZeKAnSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCiBtc2dzdHIgIkhp4buDbiB0aOG7iyB0w6puIHThuq1wIHRpbiBn4buRYyAoTeG6t2MgxJHhu4tuaDogYXV0bykiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgwCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MQogbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIHPhu5EgZMOybmcgZ+G7kWMgKE3hurdjIMSR4buLbmg6IG9mZikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgxCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgogbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCiBtc2dzdHIgIkhp4buDbiB0aOG7iyDhu58gxJHhu4tuaCBk4bqhbmcgxJHDoyB0aGnhur90IGvhur8gY2hvIHPhu7EgdGnDqnUgZMO5bmcgYuG6sW5nIG3DoXkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgyCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MwogbXNnaWQgIlNob3cgcG9yY2VsYWluIGZvcm1hdCB3aXRoIHBlci1saW5lIGNvbW1pdCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIMSR4buLbmggZOG6oW5nIOKAnHBvcmNlbGFpbuKAnSB24bubaSB0aMO0bmcgdGluIGNodXnhu4NuIGdpYW8gbeG7l2kgZMOybmciCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzgzCisjOiBidWlsdGluL2JsYW1lLmM6MjM2NAogbXNnaWQgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIkTDuW5nIGPDuW5nIGNo4bq/IMSR4buZIHh14bqldCByYSB2w7NpZ2l0LWFubm90YXRlIChN4bq3YyDEkeG7i25oOiBvZmYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKIG1zZ2lkICJTaG93IHJhdyB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIkhp4buDbiB0aOG7iyBk4bqldSB24bq/dCB0aOG7nWkgZ2lhbiBk4bqhbmcgdGjDtCAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2CiBtc2dpZCAiU2hvdyBsb25nIGNvbW1pdCBTSEExIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJIaeG7g24gdGjhu4sgU0hBMSBj4bunYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGThuqFuZyBkw6BpIChN4bq3YyDEkeG7i25oOiBvZmYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM4NgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjcKIG1zZ2lkICJTdXBwcmVzcyBhdXRob3IgbmFtZSBhbmQgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJLaMO0bmcgaGnhu4NuIHRo4buLIHTDqm4gdMOhYyBnaeG6oyB2w6AgZOG6pXUgduG6v3QgdGjhu51pIGdpYW4gKE3hurdjIMSR4buLbmg6IG9mZikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzg3CisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAogbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIHRoxrAgxJFp4buHbiB04butIGPhu6dhIHTDoWMgZ2nhuqMgdGhheSB2w6wgdMOqbiAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY5CiBtc2dpZCAiSWdub3JlIHdoaXRlc3BhY2UgZGlmZmVyZW5jZXMiCiBtc2dzdHIgIkLhu48gcXVhIGPDoWMga2jDoWMgYmnhu4d0IGRvIGtob+G6o25nIHRy4bqvbmcgZ8OieSByYSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzODkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcwCiBtc2dpZCAiU3BlbmQgZXh0cmEgY3ljbGVzIHRvIGZpbmQgYmV0dGVyIG1hdGNoIgogbXNnc3RyICJUacOqdSB0aOG7pSB0aMOqbSBuxINuZyB0w6BpIG5ndXnDqm4gbcOheSBtw7NjIMSR4buDIHTDrG0ga2nhur9tIHThu5F0IGjGoW4gbuG7r2EiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkwCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MQogbXNnaWQgIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIKIG1zZ3N0ciAiIgogIlPhu60gZOG7pW5nIMSRaeG7g20geMOpdCBkdXnhu4d0IChyZXZpc2lvbikgdOG7qyA8dOG6rXAgdGluPiB0aGF5IHbDrCBn4buNaSDigJxnaXQtcmV2LWxpc3TigJ0iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzkxCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MgogbXNnaWQgIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiCiBtc2dzdHIgIlPhu60gZOG7pW5nIG7hu5lpIGR1bmcgY+G7p2EgPHThuq1wIHRpbj4gbmjGsCBsw6Ag4bqjbmggY3Xhu5FpIGPDuW5nIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MiBidWlsdGluL2JsYW1lLmM6MjM5MworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMgYnVpbHRpbi9ibGFtZS5jOjIzNzQKIG1zZ2lkICJzY29yZSIKIG1zZ3N0ciAixJFp4buDbSBz4buRIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMKIG1zZ2lkICJGaW5kIGxpbmUgY29waWVzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgogbXNnc3RyICJUw6xtIGPDoWMgYuG6o24gc2FvIGNow6lwIGTDsm5nIHRyb25nIHbDoCBuZ2FuZyBxdWEgdOG6rXAgdGluIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5MworIzogYnVpbHRpbi9ibGFtZS5jOjIzNzQKIG1zZ2lkICJGaW5kIGxpbmUgbW92ZW1lbnRzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgogbXNnc3RyICJUw6xtIGPDoWMgZGkgY2h1eeG7g24gZMOybmcgdHJvbmcgdsOgIG5nYW5nIHF1YSB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzk0CisjOiBidWlsdGluL2JsYW1lLmM6MjM3NQogbXNnaWQgIm4sbSIKIG1zZ3N0ciAibixtIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM5NAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKIG1zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKIG1zZ3N0ciAiWOG7rSBsw70gY2jhu4kgZMOybmcgdsO5bmcgbixtLCB0w61uaCB04burIDEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQKIG1zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgogbXNnc3RyICJnaXQgYnJhbmNoIFtjw6FjLXTDuXktY2jhu41uXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI0CisjOiBidWlsdGluL2JyYW5jaC5jOjI1CiBtc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCiBtc2dzdHIgImdpdCBicmFuY2ggW2PDoWMtdMO5eS1jaOG7jW5dIFstbF0gWy1mXSA8dMOqbi1uaMOhbmg+IFs8xJFp4buDbS3EkeG6p3U+XSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNQorIzogYnVpbHRpbi9icmFuY2guYzoyNgogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbY8OhYy10w7l5LWNo4buNbl0gWy1yXSAoLWQgfCAtRCkgPHTDqm4tbmjDoW5oPiAuLi4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjcKIG1zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSAoLW0gfCAtTSkgWzxvbGRicmFuY2g+XSA8bmV3YnJhbmNoPiIKIG1zZ3N0ciAiZ2l0IGJyYW5jaCBbY8OhYy10w7l5LWNo4buNbl0gKC1tIHwgLU0pIFs8bmjDoW5oLWPFqT5dIDxuaMOhbmgtbeG7m2k+IgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE0NQorIzogYnVpbHRpbi9icmFuY2guYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImRlbGV0aW5nIGJyYW5jaCAnJXMnIHRoYXQgaGFzIGJlZW4gbWVyZ2VkIHRvXG4iCkBAIC0yMjM4LDcgKzI1NDEsNyBAQAogIsSRYW5nIHjDs2EgbmjDoW5oIOKAnCVz4oCdIG3DoCBuw7MgbOG6oWkgxJHDoyDEkcaw4bujYyBow7JhIHRy4buZbiB2w6BvXG4iCiAiICAgICAgICAg4oCcJXPigJ0sIG5oxrBuZyB24bqrbiBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbiB2w6BvIEhFQUQuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjE0OQorIzogYnVpbHRpbi9icmFuY2guYzoxNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm5vdCBkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGlzIG5vdCB5ZXQgbWVyZ2VkIHRvXG4iCkBAIC0yMjQ3LDEyICsyNTUwLDEyIEBACiAia2jDtG5nIHjDs2EgbmjDoW5oIOKAnCVz4oCdIGPDoWkgbcOgIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIHbDoG9cbiIKICIgICAgICAgICDigJwlc+KAnSwgY2hvIGTDuSBsw6AgbsOzIMSRw6MgxJHGsOG7o2MgaMOyYSB0cuG7mW4gdsOgbyBIRUFELiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHTDrG0ga2nhur9tIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIChjb21taXQpIGNobyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxNjcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgYnJhbmNoICclcycgaXMgbm90IGZ1bGx5IG1lcmdlZC5cbiIKQEAgLTIyNjEsMjUyICsyNTY0LDMzMyBAQAogIk5ow6FuaCDigJwlc+KAnSBraMO0bmcgxJHGsOG7o2MgdHLhu5luIG3hu5l0IGPDoWNoIMSR4bqneSDEkeG7py5cbiIKICJO4bq/dSBi4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4geMOzYSBuw7MsIHRow6wgY2jhuqF5IGzhu4duaCDigJxnaXQgYnJhbmNoIC1EICVz4oCdLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoxODAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTg1CiBtc2dpZCAiVXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAiQ+G6rXAgbmjhuq10IHThuq1wIHRpbiBj4bqldSBow6xuaCBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMDgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjEzCiBtc2dpZCAiY2Fubm90IHVzZSAtYSB3aXRoIC1kIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZMO5bmcgdMO5eSBjaOG7jW4gLWEgduG7m2kgLWQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjE0CisjOiBidWlsdGluL2JyYW5jaC5jOjIxOQogbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHTDrG0ga2nhur9tIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIChjb21taXQpIGNobyBIRUFEIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIyMgorIzogYnVpbHRpbi9icmFuY2guYzoyMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgeMOzYSBuaMOhbmgg4oCcJXPigJ0gY8OhaSBtw6AgYuG6oW4gaGnhu4duIG5heSDEkWFuZyDhu58uIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIzNQorIzogYnVpbHRpbi9icmFuY2guYzoyNDAKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3RlIGJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCiBtc2dzdHIgImtow7RuZyB0w6xtIHRo4bqleSBuaMOhbmggbcOheSBjaOG7pyDigJwlc+KAnS4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjM2CisjOiBidWlsdGluL2JyYW5jaC5jOjI0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBub3QgZm91bmQuIgogbXNnc3RyICJraMO0bmcgdMOsbSB0aOG6pXkgbmjDoW5oIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyNTAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIGRlbGV0aW5nIHJlbW90ZSBicmFuY2ggJyVzJyIKLW1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSRYW5nIHjDs2EgbmjDoW5oIG3DoXkgY2jhu6cg4oCcJXPigJ0iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkWFuZyB4w7NhIG5ow6FuaCB0csOqbiBtw6F5IGNo4bunIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI1MQorIzogYnVpbHRpbi9icmFuY2guYzoyNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgYnJhbmNoICclcyciCiBtc2dzdHIgIkzhu5dpIGtoaSB4b8OhIGLhu48gbmjDoW5oIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI1OAorIzogYnVpbHRpbi9icmFuY2guYzoyNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCByZW1vdGUgYnJhbmNoICVzICh3YXMgJXMpLlxuIgotbXNnc3RyICJOaMOhbmggbcOheSBjaOG7pyBcIiVzXCIgxJHDoyBi4buLIHjDs2EgKHThu6tuZyBsw6AgJXMpLlxuIgorbXNnc3RyICJOaMOhbmggdHLDqm4gbcOheSBjaOG7pyBcIiVzXCIgxJHDoyBi4buLIHjDs2EgKHThu6tuZyBsw6AgJXMpLlxuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjI1OQorIzogYnVpbHRpbi9icmFuY2guYzoyNjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGVsZXRlZCBicmFuY2ggJXMgKHdhcyAlcykuXG4iCiBtc2dzdHIgIk5ow6FuaCDigJwlc+KAnSDEkcOjIGLhu4sgeMOzYSAodOG7q25nIGzDoCAlcylcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzozNjEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IHBvaW50IGF0IGEgY29tbWl0IgogbXNnc3RyICJuaMOhbmgg4oCcJXPigJ0ga2jDtG5nIGNo4buJIMSR4bq/biBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG7DoG8gY+G6oyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MzMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYmVoaW5kICVkXSIKIG1zZ3N0ciAiWyVzOiDEkeG6sW5nIHNhdSAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDM1CisjOiBidWlsdGluL2JyYW5jaC5jOjQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJbYmVoaW5kICVkXSIKIG1zZ3N0ciAiW8SR4bqxbmcgc2F1ICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MzkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYWhlYWQgJWRdIgogbXNnc3RyICJbJXM6IHBow61hIHRyxrDhu5tjICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0NDEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlthaGVhZCAlZF0iCiBtc2dzdHIgIltwaMOtYSB0csaw4bubYyAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDQ0CisjOiBidWlsdGluL2JyYW5jaC5jOjQ2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJbJXM6IGFoZWFkICVkLCBiZWhpbmQgJWRdIgogbXNnc3RyICJbJXM6IHRyxrDhu5tjICVkLCBzYXUgJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQ0NworIzogYnVpbHRpbi9icmFuY2guYzo0NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2FoZWFkICVkLCBiZWhpbmQgJWRdIgogbXNnc3RyICJbdHLGsOG7m2MgJWQsIHNhdSAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NTYwCisjOiBidWlsdGluL2JyYW5jaC5jOjQ5MAorbXNnaWQgIiAqKioqIGludmFsaWQgcmVmICoqKioiCittc2dzdHIgIiAqKioqIHRoYW0gY2hp4bq/dSBzYWkgKioqKiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgcmViYXNpbmcgJXMpIgorbXNnc3RyICIoa2jDtG5nIG5ow6FuaCwgxJFhbmcgcmViYXNlICVzKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgYmlzZWN0IHN0YXJ0ZWQgb24gJXMpIgorbXNnc3RyICIoa2jDtG5nIG5ow6FuaCwgYmlzZWN0IMSRxrDhu6NjIGLhuq90IMSR4bqndSB04bqhaSAlcykiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIihkZXRhY2hlZCBmcm9tICVzKSIKK21zZ3N0ciAiKMSRxrDhu6NjIHTDoWNoIHLhu51pIHThu6sgJXMpIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU5MQogbXNnaWQgIihubyBicmFuY2gpIgogbXNnc3RyICIoa2jDtG5nIG5ow6FuaCkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjI1CisjOiBidWlsdGluL2JyYW5jaC5jOjYzNworIywgYy1mb3JtYXQKK21zZ2lkICJvYmplY3QgJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKK21zZ3N0ciAixJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIGtow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuw6BvIGPhuqMiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjY5CiBtc2dpZCAic29tZSByZWZzIGNvdWxkIG5vdCBiZSByZWFkIgogbXNnc3RyICJt4buZdCBz4buRIHRoYW0gY2hp4bq/dSDEkcOjIGtow7RuZyB0aOG7gyDEkeG7jWMgxJHGsOG7o2MiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjM4CisjOiBidWlsdGluL2JyYW5jaC5jOjY4MgogbXNnaWQgImNhbm5vdCByZW5hbWUgdGhlIGN1cnJlbnQgYnJhbmNoIHdoaWxlIG5vdCBvbiBhbnkuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu5VpIHTDqm4gbmjDoW5oIGhp4buHbiBow6BuaCB0cm9uZyBraGkgbsOzIGNo4bqzbmcg4bufIMSRw6J1IGPhuqMuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY0OAorIzogYnVpbHRpbi9icmFuY2guYzo2OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBicmFuY2ggbmFtZTogJyVzJyIKIG1zZ3N0ciAiU2FpIHTDqm4gbmjDoW5oOiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjMKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzA3CiBtc2dpZCAiQnJhbmNoIHJlbmFtZSBmYWlsZWQiCiBtc2dzdHIgIsSQ4buVaSB0w6puIG5ow6FuaCBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NjcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzExCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbmFtZWQgYSBtaXNuYW1lZCBicmFuY2ggJyVzJyBhd2F5IgogbXNnc3RyICLEkMOjIMSR4buVaSB0w6puIG5ow6FuaCBraHV54bq/dCBkYW5oIOKAnCVz4oCdIMSRaSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2NzEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCByZW5hbWVkIHRvICVzLCBidXQgSEVBRCBpcyBub3QgdXBkYXRlZCEiCiBtc2dzdHIgIk5ow6FuaCBi4buLIMSR4buVaSB0w6puIHRow6BuaCAlcywgbmjGsG5nIEhFQUQgbOG6oWkga2jDtG5nIMSRxrDhu6NjIGPhuq1wIG5o4bqtdCEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Njc4CisjOiBidWlsdGluL2JyYW5jaC5jOjcyMgogbXNnaWQgIkJyYW5jaCBpcyByZW5hbWVkLCBidXQgdXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAiTmjDoW5oIGLhu4sgxJHhu5VpIHTDqm4sIG5oxrBuZyBj4bqtcCBuaOG6rXQgdOG6rXAgdGluIGPhuqV1IGjDrG5oIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjY5MworIzogYnVpbHRpbi9icmFuY2guYzo3MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFsZm9ybWVkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICJ0w6puIMSR4buRaSB0xrDhu6NuZyBk4buLIGjDrG5oICVzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjcxNworIzogYnVpbHRpbi9icmFuY2guYzo3NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGJyYW5jaCBkZXNjcmlwdGlvbiB0ZW1wbGF0ZTogJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdsOgbyBt4bqrdSBtw7QgdOG6oyBuaMOhbmg6ICVzIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc0NworIzogYnVpbHRpbi9icmFuY2guYzo3OTEKIG1zZ2lkICJHZW5lcmljIG9wdGlvbnMiCiBtc2dzdHIgIlTDuXkgY2jhu41uIGNodW5nIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc0OQorIzogYnVpbHRpbi9icmFuY2guYzo3OTMKIG1zZ2lkICJzaG93IGhhc2ggYW5kIHN1YmplY3QsIGdpdmUgdHdpY2UgZm9yIHVwc3RyZWFtIGJyYW5jaCIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIG3DoyBixINtIHbDoCBjaOG7pyDEkeG7gSwgxJHGsGEgcmEgaGFpIGzhuqduIGNobyBuaMOhbmggdGjGsOG7o25nIG5ndeG7k24iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUwCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NAogbXNnaWQgInN1cHByZXNzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMiCiBtc2dzdHIgIlRodSBo4buTaSBjw6FjIHRow7RuZyDEkWnhu4dwIHRow7RuZyB0aW4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUxCisjOiBidWlsdGluL2JyYW5jaC5jOjc5NQogbXNnaWQgInNldCB1cCB0cmFja2luZyBtb2RlIChzZWUgZ2l0LXB1bGwoMSkpIgogbXNnc3RyICJjw6BpIMSR4bq3dCBjaOG6vyDEkeG7mSB0aGVvIHbhur90ICh4ZW0gZ2l0LXB1bGwoMSkpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1MworIzogYnVpbHRpbi9icmFuY2guYzo3OTcKIG1zZ2lkICJjaGFuZ2UgdXBzdHJlYW0gaW5mbyIKIG1zZ3N0ciAidGhheSDEkeG7lWkgdGjDtG5nIHRpbiB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1NworIzogYnVpbHRpbi9icmFuY2guYzo4MDEKIG1zZ2lkICJ1c2UgY29sb3JlZCBvdXRwdXQiCiBtc2dzdHIgInPhu60gZOG7pW5nIGvhur90IHh14bqldCBjw7MgdMO0IG3DoHUiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzU4CisjOiBidWlsdGluL2JyYW5jaC5jOjgwMgogbXNnaWQgImFjdCBvbiByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCiBtc2dzdHIgInRoYW8gdMOhYyB0csOqbiBuaMOhbmgg4oCccmVtb3RlLXRyYWNraW5n4oCdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc2MSBidWlsdGluL2JyYW5jaC5jOjc2NyBidWlsdGluL2JyYW5jaC5jOjc4OAotIzogYnVpbHRpbi9icmFuY2guYzo3OTQgYnVpbHRpbi9jb21taXQuYzoxMzc2IGJ1aWx0aW4vY29tbWl0LmM6MTM3NwotIzogYnVpbHRpbi9jb21taXQuYzoxMzc4IGJ1aWx0aW4vY29tbWl0LmM6MTM3OSBidWlsdGluL3RhZy5jOjQ3MAorIzogYnVpbHRpbi9icmFuY2guYzo4MDUgYnVpbHRpbi9icmFuY2guYzo4MTEgYnVpbHRpbi9icmFuY2guYzo4MzIKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4IGJ1aWx0aW4vY29tbWl0LmM6MTM2OCBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MCBidWlsdGluL2NvbW1pdC5jOjEzNzEgYnVpbHRpbi90YWcuYzo0NjgKIG1zZ2lkICJjb21taXQiCiBtc2dzdHIgImNvbW1pdCIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NjIgYnVpbHRpbi9icmFuY2guYzo3NjgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA2IGJ1aWx0aW4vYnJhbmNoLmM6ODEyCiBtc2dpZCAicHJpbnQgb25seSBicmFuY2hlcyB0aGF0IGNvbnRhaW4gdGhlIGNvbW1pdCIKIG1zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIG5o4buvbmcgbmjDoW5oIG3DoCBuw7MgY2jhu6lhIGzhuqduIGNodXnhu4NuIGdpYW8iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzc0CisjOiBidWlsdGluL2JyYW5jaC5jOjgxOAogbXNnaWQgIlNwZWNpZmljIGdpdC1icmFuY2ggYWN0aW9uczoiCiBtc2dzdHIgIkjDoG5oIMSR4buZbmcgZ2l0LWJyYW5jaDoiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzc1CisjOiBidWlsdGluL2JyYW5jaC5jOjgxOQogbXNnaWQgImxpc3QgYm90aCByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIgogbXNnc3RyICJsaeG7h3Qga8OqIGPhuqMgbmjDoW5oIOKAnHJlbW90ZS10cmFja2luZ+KAnSB2w6AgbuG7mWkgYuG7mSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NzcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIxCiBtc2dpZCAiZGVsZXRlIGZ1bGx5IG1lcmdlZCBicmFuY2giCiBtc2dzdHIgInjDs2EgbeG7mXQgY8OhY2ggxJHhuqd5IMSR4bunIG5ow6FuaCDEkcOjIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3OAorIzogYnVpbHRpbi9icmFuY2guYzo4MjIKIG1zZ2lkICJkZWxldGUgYnJhbmNoIChldmVuIGlmIG5vdCBtZXJnZWQpIgogbXNnc3RyICJ4b8OhIG5ow6FuaCAoY2hvIGTDuSBsw6AgY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4pIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc3OQorIzogYnVpbHRpbi9icmFuY2guYzo4MjMKIG1zZ2lkICJtb3ZlL3JlbmFtZSBhIGJyYW5jaCBhbmQgaXRzIHJlZmxvZyIKIG1zZ3N0ciAiZGkgY2h1eeG7g24gaGF5IMSR4buVaSB0w6puIG3hu5l0IG5ow6FuaCB2w6AgcmVmbG9nIGPhu6dhIG7DsyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODAKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI0CiBtc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKIG1zZ3N0ciAiZGkgY2h1eeG7g24gaG/hurdjIMSR4buVaSB0w6puIG3hu5l0IG5ow6FuaCwgdGjhuq1tIGNow60gY+G6oyBraGkgxJHDrWNoIMSRw6MgY8OzIHPhurVuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MQorIzogYnVpbHRpbi9icmFuY2guYzo4MjUKIG1zZ2lkICJsaXN0IGJyYW5jaCBuYW1lcyIKIG1zZ3N0ciAibGnhu4d0IGvDqiBjw6FjIHTDqm4gbmjDoW5oIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4MgorIzogYnVpbHRpbi9icmFuY2guYzo4MjYKIG1zZ2lkICJjcmVhdGUgdGhlIGJyYW5jaCdzIHJlZmxvZyIKIG1zZ3N0ciAidOG6oW8gcmVmbG9nIGPhu6dhIG5ow6FuaCIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI4CiBtc2dpZCAiZWRpdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBicmFuY2giCiBtc2dzdHIgInPhu61hIG3DtCB04bqjIGNobyBuaMOhbmgiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzg1CisjOiBidWlsdGluL2JyYW5jaC5jOjgyOQogbXNnaWQgImZvcmNlIGNyZWF0aW9uICh3aGVuIGFscmVhZHkgZXhpc3RzKSIKIG1zZ3N0ciAiw6lwIGJ14buZYyB04bqhbyAoa2hpIMSRw6Mgc+G6tW4gdOG7k24gdOG6oWkgcuG7k2kpIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc4OAorIzogYnVpbHRpbi9icmFuY2guYzo4MzIKIG1zZ2lkICJwcmludCBvbmx5IG5vdCBtZXJnZWQgYnJhbmNoZXMiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBjw6FjIG5ow6FuaCBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3OTQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM4CiBtc2dpZCAicHJpbnQgb25seSBtZXJnZWQgYnJhbmNoZXMiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBjw6FjIG5ow6FuaCDEkcaw4bujYyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3OTgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODQyCiBtc2dpZCAibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIgogbXNnc3RyICJsaeG7h3Qga8OqIGPDoWMgbmjDoW5oIHRyb25nIGPDoWMgY+G7mXQiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODExCisjOiBidWlsdGluL2JyYW5jaC5jOjg1NQogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlIEhFQUQgYXMgYSB2YWxpZCByZWYuIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgZ2nhuqNpIHF1eeG6v3QgSEVBRCBuaMawIGzDoCBt4buZdCB0aGFtIGNoaeG6v3UgKHJlZikgaOG7o3AgbOG7hy4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kgSEVBRCBuaMawIGzDoCBt4buZdCB0aGFtIGNoaeG6v3UgKHJlZikgaOG7o3AgbOG7hy4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE2IGJ1aWx0aW4vY2xvbmUuYzo1NjEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODYwIGJ1aWx0aW4vY2xvbmUuYzo2MTkKIG1zZ2lkICJIRUFEIG5vdCBmb3VuZCBiZWxvdyByZWZzL2hlYWRzISIKIG1zZ3N0ciAia2jDtG5nIHTDrG0gdGjhuqV5IEhFQUQg4bufIGTGsOG7m2kgcmVmcy9oZWFkcyEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODM2CisjOiBidWlsdGluL2JyYW5jaC5jOjg4MwogbXNnaWQgIi0tY29sdW1uIGFuZCAtLXZlcmJvc2UgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1jb2x1bW4gdsOgIC0tdmVyYm9zZSB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjg4NworIzogYnVpbHRpbi9icmFuY2guYzo4ODkgYnVpbHRpbi9icmFuY2guYzo5MjgKK21zZ2lkICJicmFuY2ggbmFtZSByZXF1aXJlZCIKK21zZ3N0ciAiY+G6p24gdMOqbiBuaMOhbmgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA0Cittc2dpZCAiQ2Fubm90IGdpdmUgZGVzY3JpcHRpb24gdG8gZGV0YWNoZWQgSEVBRCIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSRxrBhIHJhIG3DtCB04bqjIEhFQUQgxJHDoyB0w6FjaCBy4budaSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MDkKK21zZ2lkICJjYW5ub3QgZWRpdCBkZXNjcmlwdGlvbiBvZiBtb3JlIHRoYW4gb25lIGJyYW5jaCIKK21zZ3N0ciAia2jDtG5nIHRo4buDIHPhu61hIG3DtCB04bqjIGNobyBuaGnhu4F1IGjGoW4gbeG7mXQgbmjDoW5oIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkxNgorIywgYy1mb3JtYXQKK21zZ2lkICJObyBjb21taXQgb24gYnJhbmNoICclcycgeWV0LiIKK21zZ3N0ciAiVuG6q24gY2jGsGEgY2h1eeG7g24gZ2lhbyB0csOqbiBuaMOhbmgg4oCcJXPigJ0uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkxOQorIywgYy1mb3JtYXQKK21zZ2lkICJObyBicmFuY2ggbmFtZWQgJyVzJy4iCittc2dzdHIgIktow7RuZyBjw7MgbmjDoW5oIG7DoG8gY8OzIHTDqm4g4oCcJXPigJ0uIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjkzNAorbXNnaWQgInRvbyBtYW55IGJyYW5jaGVzIGZvciBhIHJlbmFtZSBvcGVyYXRpb24iCittc2dzdHIgInF1w6Egbmhp4buBdSBuaMOhbmggZMOgbmggY2hvIHRoYW8gdMOhYyDEkeG7lWkgdMOqbiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MzkKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyB0byBzZXQgbmV3IHVwc3RyZWFtIgorbXNnc3RyICJxdcOhIG5oaeG7gXUgbmjDoW5oIMSRxrDhu6NjIMSR4bq3dCBjaG8gZMOybmcgbmfGsOG7o2MgKHVwc3RyZWFtKSBt4bubaSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImNvdWxkIG5vdCBzZXQgdXBzdHJlYW0gb2YgSEVBRCB0byAlcyB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICIiCisia2jDtG5nIHRo4buDIMSR4bq3dCBkw7JuZyBuZ8aw4bujYyAodXBzdHJlYW0pIGPhu6dhIEhFQUQgdGjDoG5oICVzIGtoaSBtw6AgbsOzIGNo4bqzbmcgY2jhu4kgIgorIsSR4bq/biBuaMOhbmggbsOgbyBj4bqjLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDYgYnVpbHRpbi9icmFuY2guYzo5NjggYnVpbHRpbi9icmFuY2guYzo5OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gc3VjaCBicmFuY2ggJyVzJyIKK21zZ3N0ciAia2jDtG5nIGPDsyBuaMOhbmggbsOgbyBuaMawIHRo4bq/IOKAnCVz4oCdIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAibmjDoW5oIOKAnCVz4oCdIGNoxrBhIHPhurVuIGPDsyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4OTkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTYyCittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgdG8gdW5zZXQgdXBzdHJlYW0iCittc2dzdHIgInF1w6Egbmhp4buBdSBuaMOhbmggxJHhu4MgYuG7jyDEkeG6t3QgbmfGsOG7o2MgZMOybmcgKHVwc3RyZWFtKSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NjYKK21zZ2lkICJjb3VsZCBub3QgdW5zZXQgdXBzdHJlYW0gb2YgSEVBRCB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICIiCisia2jDtG5nIHRo4buDIGLhu48gxJHhurd0IG5nxrDhu6NjIGTDsm5nICh1cHN0cmVhbSkgY+G7p2EgSEVBRCBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IG5ow6FuaCBuw6BvICIKKyJj4bqjLiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQnJhbmNoICclcycgaGFzIG5vIHVwc3RyZWFtIGluZm9ybWF0aW9uIgogbXNnc3RyICJOaMOhbmgg4oCcJXPigJ0ga2jDtG5nIGPDsyB0aMO0bmcgdGluIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHN0cmVhbSkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6OTE0CisjOiBidWlsdGluL2JyYW5jaC5jOjk4NworbXNnaWQgIml0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gY3JlYXRlICdIRUFEJyBtYW51YWxseSIKK21zZ3N0ciAia2jDtG5nIGjhu6NwIGzDvSBraGkgdOG6oW8g4oCcSEVBROKAnSB0aOG7pyBjw7RuZyAiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTkzCiBtc2dpZCAiLWEgYW5kIC1yIG9wdGlvbnMgdG8gJ2dpdCBicmFuY2gnIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGggYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiIgogImhhaSB0w7l5IGNo4buNbiAtYSB2w6AgLXIgw6FwIGThu6VuZyBjaG8gbOG7h25oIOKAnGdpdCBicmFuY2jigJ0ga2jDtG5nIGjhu6NwIGzDvSDEkeG7kWkgduG7m2kgdMOqbiAiCiAibmjDoW5oIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkxNworIzogYnVpbHRpbi9icmFuY2guYzo5OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtLXNldC11cHN0cmVhbSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gQ29uc2lkZXIgdXNpbmcgLS0iCkBAIC0yNTE1LDcgKzI4OTksNyBAQAogIkPhu50gLS1zZXQtdXBzdHJlYW0gYuG7iyBwaOG6o24gxJHhu5FpIHbDoCBz4bq9IGLhu4sgeMOzYSBi4buPLiBOw6puIGTDuW5nIC0tdHJhY2sgaG/hurdjIC0tc2V0LSIKICJ1cHN0cmVhbS10b1xuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkzNAorIzogYnVpbHRpbi9icmFuY2guYzoxMDEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTI1MjYsMTIgKzI5MTAsMTIgQEAKICJO4bq/dSBi4bqhbiBtdeG7kW4g4oCcJXPigJ0gdGhlbyBkw7VpIOKAnCVz4oCdLCB0aOG7sWMgaGnhu4duIGzhu4duaCBzYXU6XG4iCiAiXG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM1CisjOiBidWlsdGluL2JyYW5jaC5jOjEwMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKIG1zZ3N0ciAiICAgIGdpdCBicmFuY2ggLWQgJXNcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MzYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgogbXNnc3RyICIgICAgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byAlc1xuIgpAQCAtMjU0OSw0NCArMjkzMyw0NCBAQAogbXNnaWQgIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIKIG1zZ3N0ciAiQ+G6p24gbeG7mXQga2hvIGNo4bupYSDEkeG7gyBtw6AgYnVuZyBt4buZdCBidW5kbGUuIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjQ3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc2CiBtc2dpZCAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8dHlwZT58LS10ZXh0Y29udikgPG9iamVjdD4iCiBtc2dzdHIgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PGtp4buDdT58LS10ZXh0Y29udikgPMSR4buRaSB0xrDhu6NuZz4iCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNDgKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKIG1zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKIG1zZ3N0ciAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGRhbmgtc8OhY2gtxJHhu5FpLXTGsOG7o25nPiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI2NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NQogbXNnaWQgIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKIG1zZ3N0ciAiPGtp4buDdT4gbMOgIG3hu5l0IHRyb25nIHPhu5E6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk2CiBtc2dpZCAic2hvdyBvYmplY3QgdHlwZSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGtp4buDdSDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNjgKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKIG1zZ2lkICJzaG93IG9iamVjdCBzaXplIgogbXNnc3RyICJoaeG7g24gdGjhu4sga8OtY2ggdGjGsOG7m2MgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjcwCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk5CiBtc2dpZCAiZXhpdCB3aXRoIHplcm8gd2hlbiB0aGVyZSdzIG5vIGVycm9yIgogbXNnc3RyICJ0aG/DoXQgduG7m2kgMCBraGkga2jDtG5nIGPDsyBs4buXaSIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3MQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAogbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgogbXNnc3RyICJpbiBu4buZaSBkdW5nIMSR4buRaSB0xrDhu6NuZyBk4bqhbmcgZOG7hSDEkeG7jWMiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzMKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDIKIG1zZ2lkICJmb3IgYmxvYiBvYmplY3RzLCBydW4gdGV4dGNvbnYgb24gb2JqZWN0J3MgY29udGVudCIKIG1zZ3N0ciAiduG7m2kgxJHhu5FpIHTGsOG7o25nIGJsb2IsIGNo4bqheSBs4buHbmggdGV4dGNvbnYgdHLDqm4gbuG7mWkgZHVuZyBj4bunYSDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzUKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDQKIG1zZ2lkICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIiIKICJoaeG7g24gdGjhu4sgdGjDtG5nIHRpbiB2w6AgbuG7mWkgZHVuZyBj4bunYSBjw6FjIMSR4buRaSB0xrDhu6NuZyBs4bqleSB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzgKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKIG1zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHRow7RuZyB0aW4gduG7gSDEkeG7kWkgdMaw4bujbmcgZmVkICB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCiAKQEAgLTI2MDcsMTQgKzI5OTEsMzggQEAKIG1zZ2lkICJ1c2UgLmdpdGF0dHJpYnV0ZXMgb25seSBmcm9tIHRoZSBpbmRleCIKIG1zZ3N0ciAiY2jhu4kgc+G7rSBk4bulbmcgLmdpdGF0dHJpYnV0ZXMgdOG7qyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NQorIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjEgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoyMiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzUKIG1zZ2lkICJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIKIG1zZ3N0ciAixJHhu41jIHTDqm4gdOG6rXAgdGluIHThu6sgxJHhuqd1IHbDoG8gdGnDqnUgY2h14bqpbiIKIAotIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjMKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIzIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjQKIG1zZ2lkICJpbnB1dCBwYXRocyBhcmUgdGVybWluYXRlZCBieSBhIG51bGwgY2hhcmFjdGVyIgogbXNnc3RyICJjw6FjIMSRxrDhu51uZyBk4bqrbiDEkcaw4bujYyAgbmfEg24gY8OhY2ggYuG7n2kga8O9IHThu7EgbnVsbCIKIAorIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA0NCBidWlsdGluL2djLmM6MTc3Cittc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgorbXNnc3RyICJjaOG6t24gY8OhYyBiw6FvIGPDoW8gdGnhur9uIHRyw6xuaCBob+G6oXQgxJHhu5luZyIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDYKK21zZ2lkICJjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIgorbXNnc3RyICJraMO0bmcgdGjhu4MgY2jhu4kgxJHhu4tuaCBjw6FjIHTDqm4gxJHGsOG7nW5nIGThuqtuIHbhu5tpIC0tc3RkaW4iCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ5Cittc2dpZCAiLXogb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tc3RkaW4iCittc2dzdHIgIi16IGNo4buJIGjhu6NwIGzDvSB24bubaSAtLXN0ZGluIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1MQorbXNnaWQgIm5vIHBhdGggc3BlY2lmaWVkIgorbXNnc3RyICJjaMawYSBnaGkgcsO1IMSRxrDhu51uZyBk4bqrbiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKK21zZ2lkICItLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKK21zZ3N0ciAiLS1xdWlldCBjaOG7iSBo4bujcCBs4buHIHbhu5tpIHTDqm4gxJHGsOG7nW5nIGThuqtuIMSRxqFuIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NworbXNnaWQgImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIgorbXNnc3RyICJraMO0bmcgdGjhu4MgZMO5bmcgY+G6oyBoYWkgdMO5eSBjaOG7jW4gLS1xdWlldCB2w6AgLS12ZXJib3NlIgorCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2CiBtc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgogbXNnc3RyICJnaXQgY2hlY2tvdXQtaW5kZXggW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gWzx04bqtcC10aW4+Li4uXSIKQEAgLTI2NjgsMTA3ICszMDc2LDEwNyBAQAogbXNnaWQgImdpdCBjaGVja291dCBbb3B0aW9uc10gWzxicmFuY2g+XSAtLSA8ZmlsZT4uLi4iCiBtc2dzdHIgImdpdCBjaGVja291dCBbY8OhYy10w7l5LWNo4buNbl0gWzxuaMOhbmg+XSAtLSA8dOG6rXAtdGluPi4uLiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNiBidWlsdGluL2NoZWNrb3V0LmM6MTQ5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgb3VyIHZlcnNpb24iCiBtc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSBraMO0bmcgY8OzIGPDoWMgcGhpw6puIGLhuqNuIGPhu6dhIGNow7puZyB0YSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExOCBidWlsdGluL2NoZWNrb3V0LmM6MTUxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgdGhlaXIgdmVyc2lvbiIKIG1zZ3N0ciAixJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIGtow7RuZyBjw7MgY8OhYyBwaGnDqm4gYuG6o24gY+G7p2EgY2jDum5nIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTM0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIGFsbCBuZWNlc3NhcnkgdmVyc2lvbnMiCiBtc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSBraMO0bmcgY8OzIHThuqV0IGPhuqMgY8OhYyBwaGnDqm4gYuG6o24gY+G6p24gdGhp4bq/dCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjE3OAorIzogYnVpbHRpbi9jaGVja291dC5jOjE3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBuZWNlc3NhcnkgdmVyc2lvbnMiCiBtc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSBraMO0bmcgY8OzIGPDoWMgcGhpw6puIGLhuqNuIGPhuqduIHRoaeG6v3QiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnOiBjYW5ub3QgbWVyZ2UiCiBtc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDigJwlc+KAnToga2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjEyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgbWVyZ2UgcmVzdWx0IGZvciAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjDqm0ga+G6v3QgcXXhuqMgaMOyYSB0cuG7mW4gY2hvIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjM2IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMzkgYnVpbHRpbi9jaGVja291dC5jOjI0MgotIzogYnVpbHRpbi9jaGVja291dC5jOjI0NQorIzogYnVpbHRpbi9jaGVja291dC5jOjIzNyBidWlsdGluL2NoZWNrb3V0LmM6MjQwIGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHVwZGF0aW5nIHBhdGhzIgogbXNnc3RyICLigJwlc+KAnSBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kgY8OhYyDEkcaw4budbmcgZOG6q24gY+G6rXAgbmjhuq10IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ4IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDkgYnVpbHRpbi9jaGVja291dC5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCiBtc2dzdHIgIuKAnCVz4oCdIGtow7RuZyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyB24bubaSAlcyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjI1NAorIzogYnVpbHRpbi9jaGVja291dC5jOjI1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS4iCiBtc2dzdHIgIiIKICJLaMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IGPDoWMgxJHGsOG7nW5nIGThuqtuIHbDoCBjaHV54buDbiDEkeG6v24gbmjDoW5oIOKAnCVz4oCdIGPDuW5nIG3hu5l0IGzDumMuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo0MjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjYgYnVpbHRpbi9jaGVja291dC5jOjQ1OAogbXNnaWQgImNvcnJ1cHQgaW5kZXggZmlsZSIKIG1zZ3N0ciAidOG6rXAgdGluIGdoaSBi4bqjbmcgbeG7pWMgbOG7pWMgYuG7iyBo4buPbmciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyOTUgYnVpbHRpbi9jaGVja291dC5jOjMwMgorIzogYnVpbHRpbi9jaGVja291dC5jOjMyOSBidWlsdGluL2NoZWNrb3V0LmM6MzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBpcyB1bm1lcmdlZCIKIG1zZ3N0ciAixJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdIGtow7RuZyDEkcaw4bujYyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjQ0OAorIzogYnVpbHRpbi9jaGVja291dC5jOjQ4MAogbXNnaWQgInlvdSBuZWVkIHRvIHJlc29sdmUgeW91ciBjdXJyZW50IGluZGV4IGZpcnN0IgotbXNnc3RyICJi4bqhbiBj4bqnbiBwaOG6o2kgZ2nhuqNpIHF1eeG6v3QgYuG6o25nIG3hu6VjIGzhu6VjIGhp4buHbiB04bqhaSBj4bunYSBi4bqhbiB0csaw4bubYyDEkcOjISIKK21zZ3N0ciAiYuG6oW4gY+G6p24gcGjhuqNpIHBow6JuIGdp4bqjaSBi4bqjbmcgbeG7pWMgbOG7pWMgaGnhu4duIHThuqFpIGPhu6dhIGLhuqFuIHRyxrDhu5tjIMSRw6MiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2FuIG5vdCBkbyByZWZsb2cgZm9yICclcydcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gcmVmbG9nIGNobyDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjAyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjM0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQiCiBtc2dzdHIgIkhFQUQgaGnhu4duIGdp4budIHThuqFpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIsSQ4bq3dCBs4bqhaSBuaMOhbmgg4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYxMgorIzogYnVpbHRpbi9jaGVja291dC5jOjY0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJBbHJlYWR5IG9uICclcydcbiIKIG1zZ3N0ciAixJDDoyBz4bq1biBzw6BuZyB0csOqbiDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjE2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGFuZCByZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLEkMOjIGNodXnhu4NuIHThu5tpIHbDoCByZXNldCBuaMOhbmgg4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYxOCBidWlsdGluL2NoZWNrb3V0LmM6OTU1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUwIGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICclcydcbiIKIG1zZ3N0ciAixJDDoyBjaHV54buDbiDEkeG6v24gbmjDoW5oIG3hu5tpIOKAnCVz4oCdXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MjAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYnJhbmNoICclcydcbiIKIG1zZ3N0ciAixJDDoyBjaHV54buDbiDEkeG6v24gbmjDoW5oIOKAnCVz4oCdXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NzYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIC4uLiBhbmQgJWQgbW9yZS5cbiIKIG1zZ3N0ciAiIC4uLiB2w6Agbmhp4buBdSBoxqFuICVkLlxuIgogCiAjLiBUaGUgc2luZ3VsYXIgdmVyc2lvbgotIzogYnVpbHRpbi9jaGVja291dC5jOjY4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjcxNAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogeW91IGFyZSBsZWF2aW5nICVkIGNvbW1pdCBiZWhpbmQsIG5vdCBjb25uZWN0ZWQgdG9cbiIKQEAgLTI3OTMsNyArMzIwMSw3IEBACiAiXG4iCiAiJXNcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcwMAorIzogYnVpbHRpbi9jaGVja291dC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8ga2VlcCB0aGVtIGJ5IGNyZWF0aW5nIGEgbmV3IGJyYW5jaCwgdGhpcyBtYXkgYmUgYSBnb29kIHRpbWVcbiIKQEAgLTI4MDksMTM4ICszMjE3LDEzOCBAQAogIiBnaXQgYnJhbmNoIHTDqm5fbmjDoW5oX23hu5tpICVzXG4iCiAiXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjIKIG1zZ2lkICJpbnRlcm5hbCBlcnJvciBpbiByZXZpc2lvbiB3YWxrIgogbXNnc3RyICJs4buXaSBu4buZaSBi4buZIHRyb25nIGtoaSBkaSBjaHV54buDbiBxdWEgY8OhYyDEkWnhu4NtIHjDqXQgbOG6oWkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjYKIG1zZ2lkICJQcmV2aW91cyBIRUFEIHBvc2l0aW9uIHdhcyIKIG1zZ3N0ciAiVuG7iyB0csOtIGvhur8gdHLGsOG7m2MgY+G7p2EgSEVBRCBsw6AiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjEgYnVpbHRpbi9jaGVja291dC5jOjk1MAorIzogYnVpbHRpbi9jaGVja291dC5jOjc5MyBidWlsdGluL2NoZWNrb3V0LmM6OTgyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiQuG6oW4gdOG6oWkgbmjDoW5oIG3DoCBuw7MgY2jGsGEgaOG7gSDEkcaw4bujYyBzaW5oIHJhIgogCiAjLiBjYXNlICgxKQotIzogYnVpbHRpbi9jaGVja291dC5jOjg4NgorIzogYnVpbHRpbi9jaGVja291dC5jOjkxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHJlZmVyZW5jZTogJXMiCiBtc2dzdHIgInRoYW0gY2hp4bq/dSBzYWk6ICVzIgogCiAjLiBjYXNlICgxKTogd2FudCBhIHRyZWUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MjUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVmZXJlbmNlIGlzIG5vdCBhIHRyZWU6ICVzIgogbXNnc3RyICJ0aGFtIGNoaeG6v3Uga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgY8OieSAodHJlZSk6JXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NjQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTYKIG1zZ2lkICJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKIG1zZ3N0ciAiY8OhYyDEkcaw4budbmcgZOG6q24ga2jDtG5nIHRo4buDIGTDuW5nIGPDuW5nIHbhu5tpIGPDoWMgbmjDoW5oIGNodXnhu4NuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTY3IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTkgYnVpbHRpbi9jaGVja291dC5jOjEwMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKIG1zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIGPDoWMgbmjDoW5oIGNodXnhu4NuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTc1IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzggYnVpbHRpbi9jaGVja291dC5jOjk4MwotIzogYnVpbHRpbi9jaGVja291dC5jOjk4NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcgYnVpbHRpbi9jaGVja291dC5jOjEwMTAgYnVpbHRpbi9jaGVja291dC5jOjEwMTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAnJXMnIgogbXNnc3RyICLigJwlc+KAnSBraMO0bmcgdGjhu4MgxJHGsOG7o2Mgc+G7rSBk4bulbmcgduG7m2kg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdCAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgY2h1eeG7g24gbmjDoW5oIMSR4bq/biBt4buZdCBub24tY29tbWl0IOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxMiBidWlsdGluL2djLmM6MTc3Ci1tc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgotbXNnc3RyICJjaOG6t24gY8OhYyBiw6FvIGPDoW8gdGnhur9uIHRyw6xuaCBob+G6oXQgxJHhu5luZyIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTMgYnVpbHRpbi9jaGVja291dC5jOjEwMTUgYnVpbHRpbi9jbG9uZS5jOjg5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NSBidWlsdGluL2NoZWNrb3V0LmM6MTA0NyBidWlsdGluL2Nsb25lLmM6OTAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY5IGJ1aWx0aW4vcmVtb3RlLmM6MTcxCiBtc2dpZCAiYnJhbmNoIgogbXNnc3RyICJuaMOhbmgiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NgogbXNnaWQgImNyZWF0ZSBhbmQgY2hlY2tvdXQgYSBuZXcgYnJhbmNoIgogbXNnc3RyICJ04bqhbyB2w6AgY2hlY2tvdXQgbeG7mXQgbmjDoW5oIG3hu5tpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDgKIG1zZ2lkICJjcmVhdGUvcmVzZXQgYW5kIGNoZWNrb3V0IGEgYnJhbmNoIgogbXNnc3RyICJjcmVhdGUvcmVzZXQgdsOgIGNoZWNrb3V0IG3hu5l0IG5ow6FuaCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ5CiBtc2dpZCAiY3JlYXRlIHJlZmxvZyBmb3IgbmV3IGJyYW5jaCIKIG1zZ3N0ciAidOG6oW8gcmVmbG9nIGNobyBuaMOhbmggbeG7m2kiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MAogbXNnaWQgImRldGFjaCB0aGUgSEVBRCBhdCBuYW1lZCBjb21taXQiCiBtc2dzdHIgInLhu51pIGLhu48gSEVBRCB04bqhaSBs4bqnbiBjaHV54buDbiBnaWFvIGRhbmggbmdoxKlhIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTEKIG1zZ2lkICJzZXQgdXBzdHJlYW0gaW5mbyBmb3IgbmV3IGJyYW5jaCIKIG1zZ3N0ciAixJHhurd0IHRow7RuZyB0aW4gdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSBjaG8gbmjDoW5oIG3hu5tpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKIG1zZ2lkICJuZXcgYnJhbmNoIgogbXNnc3RyICJuaMOhbmggbeG7m2kiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MwogbXNnaWQgIm5ldyB1bnBhcmVudGVkIGJyYW5jaCIKIG1zZ3N0ciAibmjDoW5oIG3hu5MgY8O0aSBt4bubaSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0CiBtc2dpZCAiY2hlY2tvdXQgb3VyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgogbXNnc3RyICIiCiAibOG6pXkgcmEgKGNoZWNrb3V0KSBwaGnDqm4gYuG6o24gY+G7p2EgY2jDum5nIHRhIGNobyBjw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2CiBtc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCiBtc2dzdHIgIiIKICJs4bqleSByYSAoY2hlY2tvdXQpIHBoacOqbiBi4bqjbiBj4bunYSBjaMO6bmcgaOG7jSBjaG8gY8OhYyB04bqtcCB0aW4gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OAogbXNnaWQgImZvcmNlIGNoZWNrb3V0ICh0aHJvdyBhd2F5IGxvY2FsIG1vZGlmaWNhdGlvbnMpIgogbXNnc3RyICLDqXAgYnXhu5ljIGzhuqV5IHJhIChjaGVja291dCkgKGLhu48gxJFpIG5o4buvbmcgdGhheSDEkeG7lWkgbuG7mWkgYuG7mSkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQogbXNnaWQgInBlcmZvcm0gYSAzLXdheSBtZXJnZSB3aXRoIHRoZSBuZXcgYnJhbmNoIgogbXNnc3RyICJ0aOG7sWMgaGnhu4duIGjDsmEgdHLhu5luIGtp4buDdSAzLXdheSB24bubaSBuaMOhbmggbeG7m2kiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI4IGJ1aWx0aW4vbWVyZ2UuYzoyMTUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwIGJ1aWx0aW4vbWVyZ2UuYzoyMTcKIG1zZ2lkICJ1cGRhdGUgaWdub3JlZCBmaWxlcyAoZGVmYXVsdCkiCiBtc2dzdHIgImPhuq1wIG5o4bqtdCBjw6FjIHThuq1wIHRpbiBi4buLIGLhu48gcXVhICht4bq3YyDEkeG7i25oKSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjkgYnVpbHRpbi9sb2cuYzoxMTE2IHBhcnNlLW9wdGlvbnMuaDoyNDEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1CiBtc2dpZCAic3R5bGUiCiBtc2dzdHIgImtp4buDdSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMzAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCiBtc2dpZCAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIKIG1zZ3N0ciAieHVuZyDEkeG7mXQga2nhu4N1IChow7JhIHRy4buZbiBoYXkgZGlmZjMpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAzMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKK21zZ2lkICJkbyBub3QgbGltaXQgcGF0aHNwZWNzIHRvIHNwYXJzZSBlbnRyaWVzIG9ubHkiCittc2dzdHIgImtow7RuZyBnaeG7m2kgaOG6oW4gcGF0aHNwZWNzIGNo4buJIHRow6BuaCBjw6FjIG3hu6VjIHRoxrBhIHRo4bubdCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjcKIG1zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCiBtc2dzdHIgImfhu6NpIMO9IHRo4bupIGhhaSDigJxnaXQgY2hlY2tvdXQga2jDtG5nLW5ow6FuaC1uw6BvLW5oxrAtduG6rXnigJ0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA5MQogbXNnaWQgIi1iLCAtQiBhbmQgLS1vcnBoYW4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gLWJ8LUIgdsOgIC0tb3JwaGFuIGxv4bqhaSB04burIGzhuqtuIG5oYXUiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDc0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTEwOAogbXNnaWQgIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiLS10cmFjayBj4bqnbiB0w6puIG3hu5l0IG5ow6FuaCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwODEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTE1CiBtc2dpZCAiTWlzc2luZyBicmFuY2ggbmFtZTsgdHJ5IC1iIgogbXNnc3RyICJUaGnhur91IHTDqm4gbmjDoW5oOyBow6N5IHRo4butIC1iIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNTAKIG1zZ2lkICJpbnZhbGlkIHBhdGggc3BlY2lmaWNhdGlvbiIKIG1zZ3N0ciAixJHGsOG7nW5nIGThuqtuIMSRw6MgY2hvIGtow7RuZyBo4bujcCBs4buHIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTEyMworIzogYnVpbHRpbi9jaGVja291dC5jOjExNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCB1cGRhdGUgcGF0aHMgYW5kIHN3aXRjaCB0byBicmFuY2ggJyVzJyBhdCB0aGUgc2FtZSB0aW1lLlxuIgpAQCAtMjk1MCwxMiArMzM1OCwxMiBAQAogIkLhuqFuIMSRw6MgY8OzIMO9IMSR4buLbmggY2hlY2tvdXQg4oCcJXPigJ0gY8OhaSBtw6Aga2jDtG5nIHRo4buDIMSRxrDhu6NjIHBow6JuIGdp4bqjaSBuaMawIGzDoCBs4bqnbiAiCiAiY2h1eeG7g24gZ2lhbyAoY29tbWl0KT8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTI4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGRvZXMgbm90IHRha2UgYSBwYXRoIGFyZ3VtZW50ICclcyciCiBtc2dzdHIgImdpdCBjaGVja291dDogLS1kZXRhY2gga2jDtG5nIG5o4bqtbiBt4buZdCDEkeG7kWkgc+G7kSDEkcaw4budbmcgZOG6q24g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTMyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKQEAgLTI5NjMsNTEgKzMzNzEsNzYgQEAKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSB2w6AgLS1tZXJnZSBsw6AgeHVuZyBraOG6r2MgduG7m2kgbmhhdSBraGlcbiIKICJjaGVja291dCBi4bqjbmcgbeG7pWMgbOG7pWMgKGluZGV4KS4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxOQorIzogYnVpbHRpbi9jbGVhbi5jOjIwCiBtc2dpZCAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIKIG1zZ3N0ciAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxt4bqrdT5dIFsteCB8IC1YXSBbLS1dIDzEkcaw4budbmctZOG6q24+Li4uIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTEKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNAorIywgYy1mb3JtYXQKK21zZ2lkICJSZW1vdmluZyAlc1xuIgorbXNnc3RyICLEkGFuZyBn4buhIGLhu48gJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI1CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgorbXNnc3RyICJDw7MgdGjhu4MgZ+G7oSBi4buPICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGluZyByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIsSQYW5nIGLhu48gcXVhIGtobyBjaOG7qWEgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI3CisjLCBjLWZvcm1hdAorbXNnaWQgIldvdWxkIHNraXAgcmVwb3NpdG9yeSAlc1xuIgorbXNnc3RyICJOw6puIGLhu48gcXVhIGtobyBjaOG7qWEgJXNcbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI4CisjLCBjLWZvcm1hdAorbXNnaWQgImZhaWxlZCB0byByZW1vdmUgJXMiCittc2dzdHIgImfhurdwIGzhu5dpIGtoaSBn4buhIGLhu48gJXMiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjAKIG1zZ2lkICJkbyBub3QgcHJpbnQgbmFtZXMgb2YgZmlsZXMgcmVtb3ZlZCIKIG1zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyB0w6puIGPhu6dhIGPDoWMgdOG6rXAgdGluIMSRw6MgZ+G7oSBi4buPIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTMKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKIG1zZ2lkICJmb3JjZSIKIG1zZ3N0ciAiw6lwIGJ14buZYyIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU1CisjOiBidWlsdGluL2NsZWFuLmM6MTY0CiBtc2dpZCAicmVtb3ZlIHdob2xlIGRpcmVjdG9yaWVzIgogbXNnc3RyICJn4buhIGLhu48gdG/DoG4gYuG7mSB0aMawIG3hu6VjIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTYgYnVpbHRpbi9kZXNjcmliZS5jOjQxMyBidWlsdGluL2dyZXAuYzo3MTcKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTEgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTgyCisjOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgogbXNnaWQgInBhdHRlcm4iCiBtc2dzdHIgIm3huqt1IgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTcKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKIG1zZ2lkICJhZGQgPHBhdHRlcm4+IHRvIGlnbm9yZSBydWxlcyIKIG1zZ3N0ciAidGjDqm0gPG3huqt1PiB2w6BvIHRyb25nIHF1aSB04bqvYyBi4buPIHF1YSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU4CisjOiBidWlsdGluL2NsZWFuLmM6MTY3CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKIG1zZ3N0ciAixJHhu5NuZyB0aOG7nWkgZ+G7oSBi4buPIGPhuqMgY8OhYyB04bqtcCB0aW4gYuG7iyBi4buPIHF1YSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjYwCisjOiBidWlsdGluL2NsZWFuLmM6MTY5CiBtc2dpZCAicmVtb3ZlIG9ubHkgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiY2jhu4kgZ+G7oSBi4buPIG5o4buvbmcgdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo3OAorIzogYnVpbHRpbi9jbGVhbi5jOjE4NwogbXNnaWQgIi14IGFuZCAtWCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiLXggdsOgIC1YIGtow7RuZyB0aOG7gyBkw7luZyBjw7luZyBt4buZdCBsw7pjIHbhu5tpIG5oYXUiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo4MgorIzogYnVpbHRpbi9jbGVhbi5jOjE5MQogbXNnaWQgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKIG1zZ3N0ciAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSDEkcaw4bujYyDEkeG6t3QgdGjDoG5oIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAgLW4gbcOgIGPFqW5nICIKICJraMO0bmcgLWY7IHThu6sgY2jhu5FpIGzhu4duaCBk4buNbiBk4bq5cCAoY2xlYW4pIgogCi0jOiBidWlsdGluL2NsZWFuLmM6ODUKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxOTQKIG1zZ2lkICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byAiCiAiY2xlYW4iCkBAIC0zMDE1LDIzNiArMzQ0OCwyMzMgQEAKICJjbGVhbi5yZXF1aXJlRm9yY2UgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyDEkeG6t3QgdGjDoG5oIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAgLW4gIgogIm3DoCBjxaluZyBraMO0bmcgLWY7IHThu6sgY2jhu5FpIGzhu4duaCBk4buNbiBk4bq5cCAoY2xlYW4pIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTU1IGJ1aWx0aW4vY2xlYW4uYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIkPDsyB0aOG7gyBn4buhIGLhu48gJXNcbiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE1OSBidWlsdGluL2NsZWFuLmM6MTc5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlJlbW92aW5nICVzXG4iCi1tc2dzdHIgIsSQYW5nIGfhu6EgYuG7jyAlc1xuIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTYyIGJ1aWx0aW4vY2xlYW4uYzoxODIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIHJlbW92ZSAlcyIKLW1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIGfhu6EgYuG7jyAlcyIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE2NgotIywgYy1mb3JtYXQKLW1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIktow7RuZyB0aOG7gyBn4buhIGLhu48gJXNcbiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE2OAotIywgYy1mb3JtYXQKLW1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAiS2jDtG5nIHjDs2EgJXNcbiIKLQotIzogYnVpbHRpbi9jbG9uZS5jOjM2CisjOiBidWlsdGluL2Nsb25lLmM6MzcKIG1zZ2lkICJnaXQgY2xvbmUgW29wdGlvbnNdIFstLV0gPHJlcG8+IFs8ZGlyPl0iCiBtc2dzdHIgImdpdCBjbG9uZSBbY8OhYy10w7l5LWNo4buNbl0gWy0tXSA8a2hvPiBbPHQubeG7pWM+XSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0IGJ1aWx0aW4vZmV0Y2guYzo4MiBidWlsdGluL21lcmdlLmM6MjEyCi0jOiBidWlsdGluL3B1c2guYzozOTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAorIzogYnVpbHRpbi9wdXNoLmM6NDM2CiBtc2dpZCAiZm9yY2UgcHJvZ3Jlc3MgcmVwb3J0aW5nIgogbXNnc3RyICLDqXAgYnXhu5ljIGLDoW8gY8OhbyB0aeG6v24gdHLDrG5oIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NwogbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgogbXNnc3RyICJraMO0bmcgdOG6oW8gbeG7mXQgY2hlY2tvdXQiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NyBidWlsdGluL2Nsb25lLmM6NjkgYnVpbHRpbi9pbml0LWRiLmM6NDg4CisjOiBidWlsdGluL2Nsb25lLmM6NjggYnVpbHRpbi9jbG9uZS5jOjcwIGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAogbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAidOG6oW8ga2hvIGNo4bupYSBiYXJlIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3MwogbXNnaWQgImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIgogbXNnc3RyICJ04bqhbyBraG8gYuG6o24gc2FvIChtaXJyb3IpIChuZ+G7pSDDvSBsw6AgYmFyZSkiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NAorIzogYnVpbHRpbi9jbG9uZS5jOjc1CiBtc2dpZCAidG8gY2xvbmUgZnJvbSBhIGxvY2FsIHJlcG9zaXRvcnkiCiBtc2dzdHIgIsSR4buDIG5ow6JuIGLhuqNuIHThu6sga2hvIG7hu5lpIGLhu5kiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NgorIzogYnVpbHRpbi9jbG9uZS5jOjc3CiBtc2dpZCAiZG9uJ3QgdXNlIGxvY2FsIGhhcmRsaW5rcywgYWx3YXlzIGNvcHkiCiBtc2dzdHIgImtow7RuZyBz4butIGThu6VuZyBsacOqbiBr4bq/dCBj4bupbmcgbuG7mWkgYuG7mSwgbHXDtG4gc2FvIGNow6lwIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OQogbXNnaWQgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IgogbXNnc3RyICJjw6BpIMSR4bq3dCDEkcOieSBsw6Aga2hvIGNoaWEgc+G6uyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgwIGJ1aWx0aW4vY2xvbmUuYzo4MgorIzogYnVpbHRpbi9jbG9uZS5jOjgxIGJ1aWx0aW4vY2xvbmUuYzo4MwogbXNnaWQgImluaXRpYWxpemUgc3VibW9kdWxlcyBpbiB0aGUgY2xvbmUiCiBtc2dzdHIgImto4bufaSB04bqhbyBtw7QtxJF1bi1jb24gdHJvbmcgYuG6o24gc2FvIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODMgYnVpbHRpbi9pbml0LWRiLmM6NDg1CisjOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg1CiBtc2dpZCAidGVtcGxhdGUtZGlyZWN0b3J5IgogbXNnc3RyICJ0aMawLW3hu6VjLXThuqFtIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg2CisjOiBidWlsdGluL2Nsb25lLmM6ODUgYnVpbHRpbi9pbml0LWRiLmM6NDg2CiBtc2dpZCAiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIKIG1zZ3N0ciAidGjGsCBt4bulYyBtw6AgdOG6oWkgxJHDsyBjw6FjIG3huqt1IHPhur0gxJHGsOG7o2MgZMO5bmciCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg3CiBtc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkiCiBtc2dzdHIgImtobyB0aGFtIGNoaeG6v3UiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NyBidWlsdGluL2NvbHVtbi5jOjI2IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ0CisjOiBidWlsdGluL2Nsb25lLmM6ODggYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAogbXNnaWQgIm5hbWUiCiBtc2dzdHIgInTDqm4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4OAorIzogYnVpbHRpbi9jbG9uZS5jOjg5CiBtc2dpZCAidXNlIDxuYW1lPiBpbnN0ZWFkIG9mICdvcmlnaW4nIHRvIHRyYWNrIHVwc3RyZWFtIgogbXNnc3RyICJkw7luZyA8dMOqbj4gdGhheSB2w6wg4oCcb3JpZ2lu4oCdIMSR4buDIHRoZW8gZMO1aSB0aMaw4bujbmcgbmd14buTbiAodXB0cmVhbSkiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9jbG9uZS5jOjkxCiBtc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKIG1zZ3N0ciAibOG6pXkgcmEgbmjDoW5oIChjaGVja291dCA8bmjDoW5oPikgdGhheSB2w6wgSEVBRCBj4bunYSBtw6F5IGNo4bunIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MwogbXNnaWQgInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiCiBtc2dzdHIgIsSRxrDhu51uZyBk4bqrbiDEkeG6v24gZ2l0LXVwbG9hZC1wYWNrIHRyw6puIG3DoXkgY2jhu6ciCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MyBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYyCisjOiBidWlsdGluL2Nsb25lLmM6OTQgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjY2MgogbXNnaWQgImRlcHRoIgogbXNnc3RyICLEkeG7mSBzw6J1IgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NQogbXNnaWQgImNyZWF0ZSBhIHNoYWxsb3cgY2xvbmUgb2YgdGhhdCBkZXB0aCIKIG1zZ3N0ciAidOG6oW8gYuG6o24gc2FvIGtow7RuZyDEkeG6p3kgxJHhu6cgY2hvIG3hu6ljIHPDonUgxJHDoyBjaG8iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5NgorIzogYnVpbHRpbi9jbG9uZS5jOjk3CiBtc2dpZCAiY2xvbmUgb25seSBvbmUgYnJhbmNoLCBIRUFEIG9yIC0tYnJhbmNoIgogbXNnc3RyICJuaMOibiBi4bqjbiAoY2xvbmUpIGNo4buJIG3hu5l0IG5ow6FuaCwgSEVBRCBob+G6t2MgLS1icmFuY2giCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5NyBidWlsdGluL2luaXQtZGIuYzo0OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTQKIG1zZ2lkICJnaXRkaXIiCiBtc2dzdHIgImdpdGRpciIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQorIzogYnVpbHRpbi9jbG9uZS5jOjk5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQogbXNnaWQgInNlcGFyYXRlIGdpdCBkaXIgZnJvbSB3b3JraW5nIHRyZWUiCiBtc2dzdHIgImtow7RuZyBkw7luZyBjaHVuZyB0aMawIG3hu6VjIGTDoG5oIHJpw6puZyBjaG8gZ2l0IHbDoCB0aMawIG3hu6VjIGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTkKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKIG1zZ2lkICJrZXk9dmFsdWUiCiBtc2dzdHIgImtow7NhPWdpw6EgdHLhu4siCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDEKIG1zZ2lkICJzZXQgY29uZmlnIGluc2lkZSB0aGUgbmV3IHJlcG9zaXRvcnkiCiBtc2dzdHIgIsSR4bq3dCBj4bqldSBow6xuaCBiw6puIHRyb25nIG3hu5l0IGtobyBjaOG7qWEgbeG7m2kiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoyNDMKKyM6IGJ1aWx0aW4vY2xvbmUuYzoyNTQKICMsIGMtZm9ybWF0Ci1tc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCBkaXJlY3RvcnkuIgotbXNnc3RyICJraG8gdGhhbSBjaGnhur91IOKAnCVz4oCdIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHRoxrAgbeG7pWMgbuG7mWkgYuG7mS4iCittc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkgJyVzJyBpcyBub3QgYSBsb2NhbCByZXBvc2l0b3J5LiIKK21zZ3N0ciAia2hvIHRoYW0gY2hp4bq/dSDigJwlc+KAnSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBraG8gbuG7mWkgYuG7mS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDYKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAidOG6oW8gdGjGsCBt4bulYyBcIiVzXCIgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDggYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTkgYnVpbHRpbi9kaWZmLmM6NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJyVzJyIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kgc3RhdCAobOG6pXkgdHLhuqFuZyB0aMOhaSB24buBKSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxMAorIzogYnVpbHRpbi9jbG9uZS5jOjMyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBleGlzdHMgYW5kIGlzIG5vdCBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXMgdOG7k24gdOG6oWkgbmjGsG5nIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHRoxrAgbeG7pWMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAibOG7l2kgc3RhdCAobOG6pXkgdHLhuqFuZyB0aMOhaSB24buBKSAlc1xuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgdOG6oW8gxJHGsOG7o2MgbGnDqm4ga+G6v3QgbeG7gW0gJXMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNvcHkgZmlsZSB0byAnJXMnIgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgY2jDqXAgdOG6rXAgdGluIHThu5tpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzczCisjOiBidWlsdGluL2Nsb25lLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgImhvw6BuIHThuqV0LlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQzCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisiVmnhu4djIG5ow6JuIGLhuqNuIHRow6BuaCBjw7RuZywgbmjGsG5nIGNoZWNrb3V0IGfhurdwIGzhu5dpLlxuIgorIkLhuqFuIGtp4buDbSB0cmEga+G7uSB4ZW0gY8OhaSBnw6wgxJHGsOG7o2MgbOG6pXkgcmEgYuG6sW5nIGzhu4duaCDigJxnaXQgc3RhdHVz4oCdXG4iCisidsOgIHRo4butIGNoZWNrb3V0IHbhu5tpIGzhu4duaCDigJxnaXQgY2hlY2tvdXQgLWYgSEVBROKAnVxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgbmjDoW5oIG3DoXkgY2jhu6cgJXMgxJHhu4MgbmjDom4gYuG6o24gKGNsb25lKS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NTIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAibcOheSBjaOG7pyDEkcOjIGtow7RuZyBn4butaSB04bqldCBj4bqjIGPDoWMgxJHhu5FpIHTGsOG7o25nIGPhuqduIHRoaeG6v3QiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKIG1zZ2lkICJyZW1vdGUgSEVBRCByZWZlcnMgdG8gbm9uZXhpc3RlbnQgcmVmLCB1bmFibGUgdG8gY2hlY2tvdXQuXG4iCiBtc2dzdHIgInJlZmVycyBIRUFEIG3DoXkgY2jhu6cgIGNo4buJIMSR4bq/biByZWYga2jDtG5nIHThu5NuIHThuqFpLCBraMO0bmcgdGjhu4MgY2hlY2tvdXQuXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDEKK21zZ2lkICJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbOG6pXkgcmEgKGNoZWNrb3V0KSBjw6J5IGzDoG0gdmnhu4djIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzQ5CiBtc2dpZCAiVG9vIG1hbnkgYXJndW1lbnRzLiIKIG1zZ3N0ciAiQ8OzIHF1w6Egbmhp4buBdSDEkeG7kWkgc+G7kS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NTMKIG1zZ2lkICJZb3UgbXVzdCBzcGVjaWZ5IGEgcmVwb3NpdG9yeSB0byBjbG9uZS4iCiBtc2dzdHIgIkLhuqFuIHBo4bqjaSBjaOG7iSDEkeG7i25oIG3hu5l0IGtobyDEkeG7gyBtw6AgbmjDom4gYuG6o24gKGNsb25lKS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MDUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiLS1iYXJlIGFuZCAtLW9yaWdpbiAlcyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgogbXNnc3RyICJ0w7l5IGNo4buNbiAtLWJhcmUgdsOgIC0tb3JpZ2luICVzIHh1bmcga2jhuq9jIG5oYXUuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzE5CisjOiBidWlsdGluL2Nsb25lLmM6NzY3Cittc2dpZCAiLS1iYXJlIGFuZCAtLXNlcGFyYXRlLWdpdC1kaXIgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgInTDuXkgY2jhu41uIC0tYmFyZSB2w6AgLS1zZXBhcmF0ZS1naXQtZGlyIHh1bmcga2jhuq9jIG5oYXUuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlcG9zaXRvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAia2hvIGNo4bupYSDigJwlc+KAnSBjaMawYSB04buTbiB04bqhaSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcyNAorIzogYnVpbHRpbi9jbG9uZS5jOjc4NQogbXNnaWQgIi0tZGVwdGggaXMgaWdub3JlZCBpbiBsb2NhbCBjbG9uZXM7IHVzZSBmaWxlOi8vIGluc3RlYWQuIgogbXNnc3RyICItLWRlcHRoIGLhu4sgbOG7nSDEkWkga2hpIG5ow6JuIGLhuqNuIG7hu5lpIGLhu5k7IGjDo3kgc+G7rSBk4bulbmcgZmlsZTovLyDEkeG7gyB0aGF5IHRo4bq/LiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjczNAorIzogYnVpbHRpbi9jbG9uZS5jOjc5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJkZXN0aW5hdGlvbiBwYXRoICclcycgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhbiBlbXB0eSBkaXJlY3RvcnkuIgogbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHDrWNoIOKAnCVz4oCdIMSRw6MgY8OzIHThu6sgdHLGsOG7m2MgdsOgIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHRoxrAgbeG7pWMgcuG7l25nLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc0NAorIzogYnVpbHRpbi9jbG9uZS5jOjgwNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ3b3JraW5nIHRyZWUgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgImPDonkgbMOgbSB2aeG7h2Mg4oCcJXPigJ0gxJHDoyBz4bq1biB04buTbiB04bqhaSBy4buTaS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NTcgYnVpbHRpbi9jbG9uZS5jOjc3MQorIzogYnVpbHRpbi9jbG9uZS5jOjgxOCBidWlsdGluL2Nsb25lLmM6ODMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyBvZiAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gY8OhYyB0aMawIG3hu6VjIGThuqtuIMSR4bqndSBj4bunYSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2MAorIzogYnVpbHRpbi9jbG9uZS5jOjgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyBjw6J5IHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MgZGlyIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc3OQorIzogYnVpbHRpbi9jbG9uZS5jOjg0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICclcycuLi5cbiIKIG1zZ3N0ciAixJBhbmcgbmjDom4gYuG6o24gdGjDoG5oIGtobyBjaOG7qWEgYmFyZSDigJwlc+KAnS4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgxCisjOiBidWlsdGluL2Nsb25lLmM6ODQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byAnJXMnLi4uXG4iCiBtc2dzdHIgIsSQYW5nIG5ow6JuIGLhuqNuIHRow6BuaCDigJwlc+KAnS4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODIzCisjOiBidWlsdGluL2Nsb25lLmM6ODc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICJLaMO0bmcgYmnhur90IGzDoG0gY8OhY2ggbsOgbyDEkeG7gyBuaMOibiBi4bqjbiAoY2xvbmUpICVzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODcyCisjOiBidWlsdGluL2Nsb25lLmM6OTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW90ZSBicmFuY2ggJXMgbm90IGZvdW5kIGluIHVwc3RyZWFtICVzIgogbXNnc3RyICJOaMOhbmggbcOheSBjaOG7pyAlcyBraMO0bmcgdMOsbSB0aOG6pXkgdHJvbmcgdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSAlcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3OQorIzogYnVpbHRpbi9jbG9uZS5jOjkzMwogbXNnaWQgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIkLhuqFuIGjDrG5oIG5oxrAgbMOgIMSRw6MgbmjDom4gYuG6o24gbeG7mXQga2hvIHRy4buRbmcgcuG7l25nLiIKIApAQCAtMzI4MSwxMiArMzcxMSwxMiBAQAogbXNnc3RyICItLWNvbW1hbmQgcGjhuqNpIGzDoCDEkeG7kWkgc+G7kSDEkeG6p3UgdGnDqm4iCiAKICM6IGJ1aWx0aW4vY29tbWl0LmM6MzQKLW1zZ2lkICJnaXQgY29tbWl0IFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iCi1tc2dzdHIgImdpdCBjb21taXQgW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gPG3huqt1LXThuq1wLXRpbj4uLi4iCittc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgY29tbWl0IFtjw6FjLXTDuXktY2jhu41uXSBbLS1dIDxwYXRoc3BlYz4uLi4iCiAKICM6IGJ1aWx0aW4vY29tbWl0LmM6MzkKLW1zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iCi1tc2dzdHIgImdpdCBzdGF0dXMgW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gPG3huqt1LXThuq1wLXRpbj4uLi4iCittc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgc3RhdHVzIFtjw6FjLXTDuXktY2jhu41uXSBbLS1dIDxwYXRoc3BlYz4uLi4iCiAKICM6IGJ1aWx0aW4vY29tbWl0LmM6NDQKIG1zZ2lkICIiCkBAIC0zMzQ2LDk3ICszNzc2LDk3IEBACiAiXG4iCiAiTuG6v3Uga2jDtG5nLCBow6N5IHRo4butIGTDuW5nIOKAnGdpdCByZXNldOKAnVxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjI1OAorIzogYnVpbHRpbi9jb21taXQuYzoyNjAKIG1zZ2lkICJmYWlsZWQgdG8gdW5wYWNrIEhFQUQgdHJlZSBvYmplY3QiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSB0aMOhbyBk4buhIEhFQUQgxJHhu5FpIHTGsOG7o25nIGPDonkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzAwCisjOiBidWlsdGluL2NvbW1pdC5jOjMwMgogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gYuG6o25nIG3hu6VjIGzhu6VjIHThuqFtIHRo4budaSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzA4CiBtc2dpZCAiaW50ZXJhY3RpdmUgYWRkIGZhaWxlZCIKIG1zZ3N0ciAidmnhu4djIHRow6ptIHTGsMahbmcgdMOhYyBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMzkgYnVpbHRpbi9jb21taXQuYzozNjAgYnVpbHRpbi9jb21taXQuYzo0MTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzQxIGJ1aWx0aW4vY29tbWl0LmM6MzYyIGJ1aWx0aW4vY29tbWl0LmM6NDEyCiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ld19pbmRleCBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIHThuq1wIHRpbiBsxrB1IGLhuqNuZyBt4bulYyBs4bulYyBt4bubaSAobmV3X2luZGV4KSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOTEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzkzCiBtc2dpZCAiY2Fubm90IGRvIGEgcGFydGlhbCBjb21taXQgZHVyaW5nIGEgbWVyZ2UuIgogbXNnc3RyICIiCiAia2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gdmnhu4djIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY+G7pWMgYuG7mSB0cm9uZyBraGkgxJFhbmcgxJHGsOG7o2MgaMOyYSAiCiAidHLhu5luLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6Mzk1CiBtc2dpZCAiY2Fubm90IGRvIGEgcGFydGlhbCBjb21taXQgZHVyaW5nIGEgY2hlcnJ5LXBpY2suIgogbXNnc3RyICIiCiAia2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gdmnhu4djIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgYuG7mSBwaOG6rW4gdHJvbmcga2hpIMSRYW5nIGNoZXJyeS0iCiAicGljay4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDAzCisjOiBidWlsdGluL2NvbW1pdC5jOjQwNQogbXNnaWQgImNhbm5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAia2jDtG5nIMSR4buNYyDEkcaw4bujYyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDIzCisjOiBidWlsdGluL2NvbW1pdC5jOjQyNQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgdOG6oW0gdGjhu51pIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjUxMSBidWlsdGluL2NvbW1pdC5jOjUxNworIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICJs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGtow7RuZyBo4bujcCBs4buHOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1NDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCiBtc2dpZCAibWFsZm9ybWVkIC0tYXV0aG9yIHBhcmFtZXRlciIKIG1zZ3N0ciAixJHhu5FpIHPhu5EgLS1hdXRob3IgYuG7iyBk4buLIGjDrG5oIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjU2MAorIzogYnVpbHRpbi9jb21taXQuYzo1NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlkZW50IHN0cmluZzogJyVzJyIKIG1zZ3N0ciAiQ2h14buXaSB0aOG7pXQgbOG7gSDEkeG6p3UgZMOybmcgZOG7iyBow6xuaDog4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTk4IGJ1aWx0aW4vY29tbWl0LmM6NjMxIGJ1aWx0aW4vY29tbWl0LmM6OTU0CisjOiBidWlsdGluL2NvbW1pdC5jOjYwMCBidWlsdGluL2NvbW1pdC5jOjYzMyBidWlsdGluL2NvbW1pdC5jOjk1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHTDrG0ga2nhur9tIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjEwIGJ1aWx0aW4vc2hvcnRsb2cuYzoyOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjEyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiKHJlYWRpbmcgbG9nIG1lc3NhZ2UgZnJvbSBzdGFuZGFyZCBpbnB1dClcbiIKIG1zZ3N0ciAiKMSRYW5nIMSR4buNYyB0aMO0bmcgxJFp4buHcCBuaOG6rXQga8O9IHThu6sgxJHhuqd1IHbDoG8gdGnDqnUgY2h14bqpbilcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZyb20gc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgbmjhuq10IGvDvSB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjE2CisjOiBidWlsdGluL2NvbW1pdC5jOjYxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZmlsZSAnJXMnIgogbXNnc3RyICJraMO0bmcgxJHhu41jIMSRxrDhu6NjIHThu4dwIG5o4bqtdCBrw70g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjIyCisjOiBidWlsdGluL2NvbW1pdC5jOjYyNAogbXNnaWQgImNvbW1pdCBoYXMgZW1wdHkgbWVzc2FnZSIKIG1zZ3N0ciAibOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw7MgZ2hpIGNow7ogdHLhu5FuZyBy4buXbmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjM4CisjOiBidWlsdGluL2NvbW1pdC5jOjY0MAogbXNnaWQgImNvdWxkIG5vdCByZWFkIE1FUkdFX01TRyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyBNRVJHRV9NU0ciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQyCisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMg4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcwNworIzogYnVpbHRpbi9jb21taXQuYzo3MDkKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgY29tbWl0IHRlbXBsYXRlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIG3huqt1IGNvbW1pdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTM0NTEsNyArMzg4MSw3IEBACiAiXHQlc1xuIgogInbDoCB0aOG7rSBs4bqhaS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTM0NjYsMTY5ICszODk2LDE3MSBAQAogIlx0JXNcbiIKICJ2w6AgdGjhu60gbOG6oWkuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzM1CisjOiBidWlsdGluL2NvbW1pdC5jOjczNworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgotIndpdGggJyMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCisid2l0aCAnJWMnIHdpbGwgYmUgaWdub3JlZCwgYW5kIGFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKICJIw6N5IG5o4bqtcCB2w6BvIGPDoWMgdGjDtG5nIHRpbiDEkeG7gyBnaeG6o2kgdGjDrWNoIGPDoWMgdGhheSDEkeG7lWkgY+G7p2EgYuG6oW4uIE5o4buvbmcgZMOybmcgIgogIsSRxrDhu6NjXG4iCi0iYuG6r3QgxJHhuqd1IGLhurFuZyDigJwj4oCdIHPhur0gxJHGsOG7o2MgYuG7jyBxdWEsIHBo4bqnbiBjaMO6IHRow61jaCBuw6B5IG7hur91IHLhu5duZyBz4bq9IGzDoG0gaOG7p3kgYuG7jyAiCi0ibOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKKyJi4bqvdCDEkeG6p3UgYuG6sW5nIOKAnCVj4oCdIHPhur0gxJHGsOG7o2MgYuG7jyBxdWEsIG7hur91IHBo4bqnbiBjaMO6IHRow61jaCBy4buXbmcgc+G6vSBo4buneSBi4buPIGzhuqduICIKKyJjaHV54buDbiBnaWFvIChjb21taXQpLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc0MAorIzogYnVpbHRpbi9jb21taXQuYzo3NDIKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKLSJ3aXRoICcjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCisid2l0aCAnJWMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3Ugd2FudCB0by5cbiIKICJBbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCi0iSMOjeSBuaOG6rXAgdsOgbyBjw6FjIHRow7RuZyB0aW4gxJHhu4MgZ2nhuqNpIHRow61jaCBjw6FjIHRoYXkgxJHhu5VpIGPhu6dhIGLhuqFuLk5o4buvbmcgZMOybmcgIgorIkjDo3kgbmjhuq1wIHbDoG8gY8OhYyB0aMO0bmcgdGluIMSR4buDIGdp4bqjaSB0aMOtY2ggY8OhYyB0aGF5IMSR4buVaSBj4bunYSBi4bqhbi4gTmjhu69uZyBkw7JuZyAiCiAixJHGsOG7o2NcbiIKLSJi4bqvdCDEkeG6p3UgYuG6sW5nIOKAnCPigJ0gc+G6vSDEkcaw4bujYyBi4buPIHF1YTsgYuG6oW4gY8OzIHRo4buDIHjDs2EgY2jDum5nIMSRaSBu4bq/dSBtdeG7kW4uXG4iCi0iUGjhuqduIGNow7ogdGjDrWNoIG7DoHkgbuG6v3UgcuG7l25nIHPhur0gbMOgbSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCisiYuG6r3QgxJHhuqd1IGLhurFuZyDigJwlY+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhOyBi4bqhbiBjw7MgdGjhu4MgeMOzYSBjaMO6bmcgxJFpIG7hur91IG114buRbiB0aOG6vy5cbiIKKyJQaOG6p24gY2jDuiB0aMOtY2ggbsOgeSBu4bq/dSB0cuG7kW5nIHLhu5duZyBz4bq9IGjhu6d5IGLhu48gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiJXNUw6FjIGdp4bqjOiAgICAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQ29tbWl0dGVyOiAlcyIKIG1zZ3N0ciAiJXNOZ8aw4budaSBjaHV54buDbiBnaWFvIChjb21taXQpOiAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3ODAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCiBtc2dpZCAiQ2Fubm90IHJlYWQgaW5kZXgiCiBtc2dzdHIgImtow7RuZyDEkeG7jWMgxJHGsOG7o2MgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjgxNworIzogYnVpbHRpbi9jb21taXQuYzo4MTkKIG1zZ2lkICJFcnJvciBidWlsZGluZyB0cmVlcyIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHjDonkgZOG7sW5nIGPDonkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODMyIGJ1aWx0aW4vdGFnLmM6MzYxCisjOiBidWlsdGluL2NvbW1pdC5jOjgzNCBidWlsdGluL3RhZy5jOjM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBtZXNzYWdlIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24uXG4iCiBtc2dzdHIgIlhpbiBow6N5IMOhcCBk4bulbmcgdGjDtG5nIMSRaeG7h3Agc+G7rSBk4bulbmcgaG/hurdjIGzDoCB0w7l5IGNo4buNbiAtbSBob+G6t2MgbMOgIC1GLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjkyOQorIzogYnVpbHRpbi9jb21taXQuYzo5MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gZXhpc3RpbmcgYXV0aG9yIGZvdW5kIHdpdGggJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IHTDoWMgZ2nhuqMgY8OzIHPhurVuIHbhu5tpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk0NCBidWlsdGluL2NvbW1pdC5jOjExNDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHVudHJhY2tlZCBmaWxlcyBtb2RlICclcyciCiBtc2dzdHIgIkNo4bq/IMSR4buZIGNobyBjw6FjIHThuq1wIHRpbiBraMO0bmcgYuG7iyB0aGVvIHbhur90IGtow7RuZyBo4bujcCBs4buHIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk4NAorIzogYnVpbHRpbi9jb21taXQuYzo5NzYKIG1zZ2lkICJVc2luZyBib3RoIC0tcmVzZXQtYXV0aG9yIGFuZCAtLWF1dGhvciBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICJT4butIGThu6VuZyBj4bqjIGhhaSB0w7l5IGNo4buNbiAtLXJlc2V0LWF1dGhvciB2w6AgLS1hdXRob3Iga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5OTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTg3CiBtc2dpZCAiWW91IGhhdmUgbm90aGluZyB0byBhbWVuZC4iCiBtc2dzdHIgIktow7RuZyBjw7MgZ8OsIMSR4buDIGFtZW5kICh0dSBi4buVKSBj4bqjLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5OTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTkwCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAiIgogIkLhuqFuIMSRYW5nIOG7nyBnaeG7r2EgY+G7p2EgcXXDoSB0csOsbmggaMOyYSB0cuG7mW4gLS0ga2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gYW1lbmQgKHR1IGLhu5UpLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDAwCisjOiBidWlsdGluL2NvbW1pdC5jOjk5MgogbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoZXJyeS1waWNrIC0tIGNhbm5vdCBhbWVuZC4iCiBtc2dzdHIgIiIKICJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGNoZXJyeS1waWNrIC0tIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGFtZW5kICh0dSAiCiAiYuG7lSkuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMDMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTk1CiBtc2dpZCAiT3B0aW9ucyAtLXNxdWFzaCBhbmQgLS1maXh1cCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiQ8OhYyB0w7l5IGNo4buNbiAtLXNxdWFzaCB2w6AgLS1maXh1cCBraMO0bmcgdGjhu4Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgbmhhdSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDEzCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDUKIG1zZ2lkICJPbmx5IG9uZSBvZiAtYy8tQy8tRi8tLWZpeHVwIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiQ2jhu4kgbeG7mXQgdMO5eSBjaOG7jW4gdHJvbmcgc+G7kSAtYy8tQy8tRi8tLWZpeHVwIMSRxrDhu6NjIHPhu60gZOG7pW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwNwogbXNnaWQgIk9wdGlvbiAtbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtYy8tQy8tRi8tLWZpeHVwLiIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gLW0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgLWMvLUMvLUYvLS1maXh1cC4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAyMworIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKIG1zZ3N0ciAiIgogIi0tcmVzZXQtYXV0aG9yIGNo4buJIGPDsyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyB24bubaSB0w7l5IGNo4buNbiAtQywgLWMgaGF5IC0tYW1lbmQuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzMgogbXNnaWQgIk9ubHkgb25lIG9mIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiIgogIkNo4buJIG3hu5l0IHRyb25nIGPDoWMgdMO5eSBjaOG7jW4gLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggxJHGsOG7o2MgIgogInPhu60gZOG7pW5nLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDQyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzQKIG1zZ2lkICJObyBwYXRocyB3aXRoIC0taW5jbHVkZS8tLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIktow7RuZyDEkcaw4budbmcgZOG6q24gduG7m2kgY8OhYyB0w7l5IGNo4buNbiAtLWluY2x1ZGUvLS1vbmx5IGtow7RuZyBo4bujcCBsw70uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIkdp4buPaS4uLiAgdHUgYuG7lSBjw6FpIGN14buRaSB24bubaSBi4bqjbmcgbeG7pWMgbOG7pWMgcGhpIG5naMSpYS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0NgorIzogYnVpbHRpbi9jb21taXQuYzoxMDM4CiBtc2dpZCAiRXhwbGljaXQgcGF0aHMgc3BlY2lmaWVkIHdpdGhvdXQgLWkgbm9yIC1vOyBhc3N1bWluZyAtLW9ubHkgcGF0aHMuLi4iCiBtc2dzdHIgIiIKICJOaOG7r25nIMSRxrDhu51uZyBk4bqrbiByw7UgcsOgbmcgxJHGsOG7o2MgY2jhu4kgcmEga2jDtG5nIGPDsyB0w7l5IGNo4buNbiAtaSBjxaluZyBraMO0bmcgLW87IMSRYW5nICIKICJnaeG6oyDEkeG7i25oIC0tb25seSBuaOG7r25nLcSRxrDhu51uZy1k4bqrbi4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDU2IGJ1aWx0aW4vdGFnLmM6NTc3CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNDggYnVpbHRpbi90YWcuYzo1NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBjbGVhbnVwIG1vZGUgJXMiCiBtc2dzdHIgIkNo4bq/IMSR4buZIGThu41uIGThurlwIGtow7RuZyBo4bujcCBs4buHICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MwogbXNnaWQgIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIkPDoWMgxJHGsOG7nW5nIGThuqtuIHbhu5tpIHTDuXkgY2jhu41uIC1hIGtow7RuZyBo4bujcCBsw70uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNjcgYnVpbHRpbi9jb21taXQuYzoxMjAyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTkgYnVpbHRpbi9jb21taXQuYzoxMTk0CiBtc2dpZCAiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICJoYWkgdMO5eSBjaOG7jW4gLWxvbmcgdsOgIC16IGtow7RuZyB0xrDGoW5nIHRow61jaCB24bubaSBuaGF1IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjIgYnVpbHRpbi9jb21taXQuYzoxMzk4CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTQgYnVpbHRpbi9jb21taXQuYzoxMzkwCiBtc2dpZCAic2hvdyBzdGF0dXMgY29uY2lzZWx5IgogbXNnc3RyICJoaeG7g24gdGjhu4sgdHLhuqFuZyB0aMOhaSDhu58gZOG6oW5nIHPDumMgdMOtY2giCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NCBidWlsdGluL2NvbW1pdC5jOjE0MDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NiBidWlsdGluL2NvbW1pdC5jOjEzOTIKIG1zZ2lkICJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRow7RuZyB0aW4gbmjDoW5oIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjYgYnVpbHRpbi9jb21taXQuYzoxNDAyIGJ1aWx0aW4vcHVzaC5jOjM4OQorIzogYnVpbHRpbi9jb21taXQuYzoxMTU4IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL3B1c2guYzo0MjYKIG1zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKIG1zZ3N0ciAia+G6v3QgeHXhuqV0IGThuqFuZyBtw6F5LWPDsy10aOG7gy3EkeG7jWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2OSBidWlsdGluL2NvbW1pdC5jOjE0MDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKIG1zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCiBtc2dzdHIgImhp4buDbiB0aOG7iyB0cuG6oW5nIHRow6FpIOG7nyDEkeG7i25oIGThuqFuZyBkw6BpICht4bq3YyDEkeG7i25oKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTcyIGJ1aWx0aW4vY29tbWl0LmM6MTQwNworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQogbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgogbXNnc3RyICJjaOG6pW0gZOG7qXQgY8OhYyBt4bulYyBi4bqxbmcgTlVMIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzQgYnVpbHRpbi9jb21taXQuYzoxNDEwIGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2MzYKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2MzkgYnVpbHRpbi90YWcuYzo0NjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NiBidWlsdGluL2NvbW1pdC5jOjE0MDIgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1OQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MiBidWlsdGluL3RhZy5jOjQ1OQogbXNnaWQgIm1vZGUiCiBtc2dzdHIgImNo4bq/IMSR4buZIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzUgYnVpbHRpbi9jb21taXQuYzoxNDEwCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjcgYnVpbHRpbi9jb21taXQuYzoxNDAyCiBtc2dpZCAic2hvdyB1bnRyYWNrZWQgZmlsZXMsIG9wdGlvbmFsIG1vZGVzOiBhbGwsIG5vcm1hbCwgbm8uIChEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCiAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSAgZOG6pXUgduG6v3QsIGPDoWMgY2jhur8gxJHhu5kgdMO5eSBjaOG7jW46ICBhbGwsICIKICJub3JtYWwsIG5vLiAoTeG6t2MgxJHhu4tuaDogYWxsKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTc4CisjOiBidWlsdGluL2NvbW1pdC5jOjExNzAKIG1zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiDhuqluIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzkgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTcxIHBhcnNlLW9wdGlvbnMuaDoxNTEKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICJraGkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE4MAorIzogYnVpbHRpbi9jb21taXQuYzoxMTcyCiBtc2dpZCAiIgogImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgogIihEZWZhdWx0OiBhbGwpIgpAQCAtMzYzNiwyMjMgKzQwNjgsMjIzIEBACiAiYuG7jyBxdWEgY8OhYyB0aGF5IMSR4buVaSB0cm9uZyBtw7QtxJF1biBjb24sIHTDuXkgY2jhu41uIGtoaTogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCiAiKE3hurdjIMSR4buLbmg6IGFsbCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE4MgorIzogYnVpbHRpbi9jb21taXQuYzoxMTc0CiBtc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggY8OhYyB04bqtcC10aW4gY2jGsGEgxJHGsOG7o2MgdGhlbyBkw7VpIHRyb25nIGPDoWMgY+G7mXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1NgorIzogYnVpbHRpbi9jb21taXQuYzoxMjQ4CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHTDrG0gdGjhuqV5IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbeG7m2kgaMahbiDEkcOjIMSRxrDhu6NjIHThuqFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1MAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBjw7ogcGjDoXAgY+G7p2EgxJHhu5FpIHTGsOG7o25nIGNodXnhu4NuIGdpYW8gbeG7m2kgaMahbiDEkcOjIMSRxrDhu6NjIHThuqFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyOTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MQogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgIsSRw6MgcuG7nWkga2jhu49pIEhFQUQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTMwMQorIzogYnVpbHRpbi9jb21taXQuYzoxMjkzCiBtc2dpZCAiIChyb290LWNvbW1pdCkiCiBtc2dzdHIgIiAocm9vdC1jb21taXQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MAogbXNnaWQgInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiCiBtc2dzdHIgImtow7RuZyBoaeG7g24gdGjhu4sgdOG7lW5nIGvhur90IHNhdSBraGkgY2h1eeG7g24gZ2lhbyB0aMOgbmggY8O0bmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQorIzogYnVpbHRpbi9jb21taXQuYzoxMzYxCiBtc2dpZCAic2hvdyBkaWZmIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgogbXNnc3RyICJoaeG7g24gdGjhu4sgc+G7sSBraMOhYyBiaeG7h3QgdHJvbmcgbeG6q3UgdGluIG5o4bqvbiBjaHV54buDbiBnaWFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MwogbXNnaWQgIkNvbW1pdCBtZXNzYWdlIG9wdGlvbnMiCiBtc2dzdHIgIkPDoWMgdMO5eSBjaOG7jW4gZ2hpIGNow7ogY29tbWl0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzIgYnVpbHRpbi90YWcuYzo0NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NCBidWlsdGluL3RhZy5jOjQ1NwogbXNnaWQgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiCiBtc2dzdHIgIsSR4buNYyBjaMO6IHRow61jaCB04burIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzczCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKIG1zZ2lkICJhdXRob3IiCiBtc2dzdHIgInTDoWMgZ2nhuqMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MworIzogYnVpbHRpbi9jb21taXQuYzoxMzY1CiBtc2dpZCAib3ZlcnJpZGUgYXV0aG9yIGZvciBjb21taXQiCiBtc2dzdHIgImdoaSDEkcOoIHTDoWMgZ2nhuqMgY2hvIGNvbW1pdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc0IGJ1aWx0aW4vZ2MuYzoxNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NiBidWlsdGluL2djLmM6MTc4CiBtc2dpZCAiZGF0ZSIKIG1zZ3N0ciAibmfDoHkgdGjDoW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NgogbXNnaWQgIm92ZXJyaWRlIGRhdGUgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiZ2hpIMSRw6ggbmfDoHkgdGjDoW5nIGNobyBjb21taXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NSBidWlsdGluL21lcmdlLmM6MjA2IGJ1aWx0aW4vbm90ZXMuYzo1MzcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTQgYnVpbHRpbi90YWcuYzo0NTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NyBidWlsdGluL21lcmdlLmM6MjA4IGJ1aWx0aW4vbm90ZXMuYzo1MzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTAgYnVpbHRpbi90YWcuYzo0NTUKIG1zZ2lkICJtZXNzYWdlIgogbXNnc3RyICJ0aMO0bmcgxJFp4buHcCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcKIG1zZ2lkICJjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAiY2jDuiB0aMOtY2ggY+G7p2EgbOG6p24gY29tbWl0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAogbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAiZMO5bmcgbOG6oWkgY8OhYyBnaGkgY2jDuiB04burIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgxJHDoyBjaG8gbmjGsG5nIGPDsyBjaG8gc+G7rWEgY2jhu69hIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQogbXNnaWQgInJldXNlIG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICJkw7luZyBs4bqhaSBjw6FjIGdoaSBjaMO6IHThu6sgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc4CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzAKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBmaXh1cCBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAiZMO5bmcgZ2hpIGNow7ogY8OzIMSR4buLbmggZOG6oW5nIGF1dG9zcXVhc2ggxJHhu4Mgc+G7rWEgY2jhu69hIGzhuqduIGNodXnhu4NuIGdpYW8gxJHDoyBjaOG7iSByYSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBzcXVhc2ggc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogImTDuW5nIGzhu51pIG5o4bqvbiBjw7MgxJHhu4tuaCBk4bqhbmcgdOG7sSDEkeG7mW5nIG7DqW4gxJHhu4MgbsOpbiBs4bqhaSBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gxJHDoyBjaOG7iSAiCiAicmEiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MAorIzogYnVpbHRpbi9jb21taXQuYzoxMzcyCiBtc2dpZCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIKIG1zZ3N0ciAiIgogImzhuqduIGNodXnhu4NuIGdpYW8gbmjhuq1uIHTDtGkgbMOgIHTDoWMgZ2nhuqMgKMSRxrDhu6NjIGTDuW5nIHbhu5tpIHTDuXkgY2jhu41uIC1DLy1jLy0tYW1lbmQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODEgYnVpbHRpbi9sb2cuYzoxMDczIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CiBtc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgogbXNnc3RyICJ0aMOqbSBkw7JuZyBTaWduZWQtb2ZmLWJ5OiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgyCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzQKIG1zZ2lkICJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiCiBtc2dzdHIgInPhu60gZOG7pW5nIHThuq1wIHRpbiBt4bqrdSDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzUKIG1zZ2lkICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIKIG1zZ3N0ciAiw6lwIGJ14buZYyBz4butYSBs4bqnbiBjb21taXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAorIzogYnVpbHRpbi9jb21taXQuYzoxMzc2CiBtc2dpZCAiZGVmYXVsdCIKIG1zZ3N0ciAibeG6t2MgxJHhu4tuaCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg0IGJ1aWx0aW4vdGFnLmM6NDYyCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzYgYnVpbHRpbi90YWcuYzo0NjAKIG1zZ2lkICJob3cgdG8gc3RyaXAgc3BhY2VzIGFuZCAjY29tbWVudHMgZnJvbSBtZXNzYWdlIgogbXNnc3RyICJsw6BtIHRo4bq/IG7DoG8gxJHhu4MgY+G6r3QgYuG7jyBraG/huqNuZyB0cuG6r25nIHbDoCAjZ2hpY2jDuiB04burIG3huql1IHRpbiBuaOG6r24iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQorIzogYnVpbHRpbi9jb21taXQuYzoxMzc3CiBtc2dpZCAiaW5jbHVkZSBzdGF0dXMgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCiBtc2dzdHIgImJhbyBn4buTbSBjw6FjIHRy4bqhbmcgdGjDoWkgZ2hpIG3huqt1IGdoaSBjaMO6IGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NiBidWlsdGluL21lcmdlLmM6MjEzIGJ1aWx0aW4vdGFnLmM6NDYzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzggYnVpbHRpbi9tZXJnZS5jOjIxNSBidWlsdGluL3RhZy5jOjQ2MQogbXNnaWQgImtleSBpZCIKIG1zZ3N0ciAiaWQga2jDs2EiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NyBidWlsdGluL21lcmdlLmM6MjE0CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi9tZXJnZS5jOjIxNgogbXNnaWQgIkdQRyBzaWduIGNvbW1pdCIKIG1zZ3N0ciAia8O9IGzhuqduIGNvbW1pdCBkw7luZyBHUEciCiAKICMuIGVuZCBjb21taXQgbWVzc2FnZSBvcHRpb25zCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MgogbXNnaWQgIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIgogbXNnc3RyICJDw6FjIHTDuXkgbuG7mWkgZHVuZyBnaGkgY2jDuiBjb21taXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5MQorIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCiBtc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgogbXNnc3RyICJjaHV54buDbiBnaWFvIHThuqV0IGPhuqMgY8OhYyB04bqtcCB0aW4gY8OzIHRoYXkgxJHhu5VpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAogbXNnaWQgImFkZCBzcGVjaWZpZWQgZmlsZXMgdG8gaW5kZXggZm9yIGNvbW1pdCIKIG1zZ3N0ciAidGjDqm0gY8OhYyB04bqtcCB0aW4gxJHDoyBjaOG7iSByYSB2w6BvIGLhuqNuZyBt4bulYyBs4bulYyDEkeG7gyBjaHV54buDbiBnaWFvIChjb21taXQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIgogbXNnc3RyICJ0aMOqbSBjw6FjIHThuq1wLXRpbiBi4bqxbmcgdMawxqFuZyB0w6FjIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NgogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiCiBtc2dzdHIgInRow6ptIGPDoWMgdGhheSDEkeG7lWkgYuG6sW5nIHTGsMahbmcgdMOhYyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk1CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODcKIG1zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCiBtc2dzdHIgImNo4buJIGNodXnhu4NuIGdpYW8gY8OhYyB04bqtcCB0aW4gxJHDoyBjaOG7iSByYSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk2CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODgKIG1zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgogbXNnc3RyICJ2w7JuZyBxdWEgbcOzYyAoaG9vaykgcHJlLWNvbW1pdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk3CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODkKIG1zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgogbXNnc3RyICJoaeG7g24gdGjhu4sgeGVtIGPDoWkgZ8OsIGPDsyB0aOG7gyDEkcaw4bujYyBjaHV54buDbiBnaWFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMAogbXNnaWQgImFtZW5kIHByZXZpb3VzIGNvbW1pdCIKIG1zZ3N0ciAidHUgYuG7lSAoYW1lbmQpIGzhuqduIGNvbW1pdCB0csaw4bubYyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDEKIG1zZ2lkICJieXBhc3MgcG9zdC1yZXdyaXRlIGhvb2siCiBtc2dzdHIgInbDsm5nIHF1YSBtw7NjIChob29rKSBwb3N0LXJld3JpdGUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNAorIzogYnVpbHRpbi9jb21taXQuYzoxNDA2CiBtc2dpZCAib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIKIG1zZ3N0ciAib2sgxJHhu4MgZ2hpIGzhuqFpIG3hu5l0IHRoYXkgxJHhu5VpIHRy4buRbmcgcuG7l25nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOQogbXNnaWQgIm9rIHRvIHJlY29yZCBhIGNoYW5nZSB3aXRoIGFuIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIm9rIMSR4buDIGdoaSBjw6FjIHRoYXkgxJHhu5VpIHbhu5tpIGzhu51pIG5o4bqvbiB0cuG7kW5nIHLhu5duZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDQ5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDEKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgSEVBRCBjb21taXQiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBjb21taXQgKGzhuqduIGNodXnhu4NuIGdpYW8pIEhFQUQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NyBidWlsdGluL21lcmdlLmM6NTA4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NzkgYnVpbHRpbi9tZXJnZS5jOjUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyDEkeG7jWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5NAorIzogYnVpbHRpbi9jb21taXQuYzoxNDg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvcnJ1cHQgTUVSR0VfSEVBRCBmaWxlICglcykiCiBtc2dzdHIgIlThuq1wIHRpbiBNRVJHRV9IRUFEIHNhaSBo4buPbmcgKCVzKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTAxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0OTMKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIE1FUkdFX01PREUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUyMAorIzogYnVpbHRpbi9jb21taXQuYzoxNTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGNvbW1pdCBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyB0aMO0bmcgxJFp4buHcCAobWVzc2FnZSkgY29tbWl0IChs4bqnbiBjaHV54buDbiBnaWFvKTogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzNAorIzogYnVpbHRpbi9jb21taXQuYzoxNTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiIgogIsSQYW5nIGLhu48gcXVhIHZp4buHYyBjaHV54buDbiBnaWFvIChjb21taXQpOyBi4bqhbiDEkcOjIGtow7RuZyBiacOqbiBzb+G6oW4gdGjDtG5nIMSRaeG7h3AgIgogIihtZXNzYWdlKS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTM5CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiIgogIsSQYW5nIGLhu48gcXVhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgYuG7n2kgdsOsIHRow7RuZyDEkWnhu4dwIGPhu6dhIG7DsyB0cuG7kW5nIHLhu5duZy5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTU0IGJ1aWx0aW4vbWVyZ2UuYzo4MzIgYnVpbHRpbi9tZXJnZS5jOjg1NworIzogYnVpbHRpbi9jb21taXQuYzoxNTQ2IGJ1aWx0aW4vbWVyZ2UuYzo4NDcgYnVpbHRpbi9tZXJnZS5jOjg3MgogbXNnaWQgImZhaWxlZCB0byB3cml0ZSBjb21taXQgb2JqZWN0IgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgZ2hpIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIChjb21taXQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU2NwogbXNnaWQgImNhbm5vdCBsb2NrIEhFQUQgcmVmIgogbXNnc3RyICJraMO0bmcgdGjhu4Mga2jDs2EgSEVBRCByZWYgKHRoYW0gY2hp4bq/dSkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3OQorIzogYnVpbHRpbi9jb21taXQuYzoxNTcxCiBtc2dpZCAiY2Fubm90IHVwZGF0ZSBIRUFEIHJlZiIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCByZWYgKHRoYW0gY2hp4bq/dSkgSEVBRCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTkwCisjOiBidWlsdGluL2NvbW1pdC5jOjE1ODIKIG1zZ2lkICIiCiAiUmVwb3NpdG9yeSBoYXMgYmVlbiB1cGRhdGVkLCBidXQgdW5hYmxlIHRvIHdyaXRlXG4iCiAibmV3X2luZGV4IGZpbGUuIENoZWNrIHRoYXQgZGlzayBpcyBub3QgZnVsbCBvciBxdW90YSBpc1xuIgpAQCAtMzk3OSw5ICs0NDExLDEzIEBACiBtc2dpZCAicmVzcGVjdCBpbmNsdWRlIGRpcmVjdGl2ZXMgb24gbG9va3VwIgogbXNnc3RyICJ0w7RuIHRy4buNbmcga+G7gyBjw6AgY8OhYyBoxrDhu5tuZyB0cm9uZyB0w6xtIGtp4bq/bSIKIAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6NjkKLW1zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgotbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgorIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6ODIKK21zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorbXNnc3RyICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIFstSCB8IC0taHVtYW4tcmVhZGFibGVdIgorCisjOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NworbXNnaWQgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIGvDrWNoIGPhu6EgdGhlbyDEkeG7i25oIGThuqFuZyBkw6BuaCBjaG8gbmfGsOG7nWkgxJHhu41jIgogCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTUKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCkBAIC0zOTkxLDQ3ICs0NDI3LDQ3IEBACiBtc2dpZCAiZ2l0IGRlc2NyaWJlIFtvcHRpb25zXSAtLWRpcnR5IgogbXNnc3RyICJnaXQgZGVzY3JpYmUgW2PDoWMtdMO5eS1jaOG7jW5dIC0tZGlydHkiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICJ0aOG6uyDEkcOjIMSRxrDhu6NjIGdoaSBjaMO6ICVzIGtow7RuZyBz4bq1biDEkeG7gyBkw7luZyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIGhhcyBubyBlbWJlZGRlZCBuYW1lIgogbXNnc3RyICJ0aOG6uyDEkcaw4bujYyBjaMO6IGdp4bqjaSAlcyBraMO0bmcgY8OzIHTDqm4gbmjDum5nIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjQwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGlzIHJlYWxseSAnJXMnIGhlcmUiCiBtc2dzdHIgInRo4bq7IOKAnCVz4oCdIMSRw6MgdGjhu7FjIHPhu7Eg4bufIMSRw6J5IOKAnCVz4oCdIHLhu5NpIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICJLaMO0bmcgcGjhuqNpIHTDqm4gxJHhu5FpIHTGsOG7o25nICVzIGjhu6NwIGzhu4ciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNzAKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgbm90IGEgdmFsaWQgJyVzJyBvYmplY3QiCiBtc2dzdHIgIiVzIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IMSR4buRaSB0xrDhu6NuZyDigJwlc+KAnSBo4bujcCBs4buHIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRhZyBleGFjdGx5IG1hdGNoZXMgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIGPDsyB0aOG6uyBuw6BvIGto4bubcCBjaMOtbmggeMOhYyB24bubaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4OQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJzZWFyY2hpbmcgdG8gZGVzY3JpYmUgJXNcbiIKIG1zZ3N0ciAixJBhbmcgdMOsbSBraeG6v20gxJHhu4MgbcO0IHThuqMgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzZWFyY2ggYXQgJXNcbiIKIG1zZ3N0ciAidmnhu4djIHTDrG0ga2nhur9tIMSRw6Mga+G6v3QgdGjDumMgdOG6oWkgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1MworIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gYW5ub3RhdGVkIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCkBAIC00MDQwLDcgKzQ0NzYsNyBAQAogIktow7RuZyBjw7MgdGjhursgxJHGsOG7o2MgY2jDuiBnaeG6o2kgbsOgbyDEkcaw4bujYyBtw7QgdOG6oyBsw6Ag4oCcJXPigJ0uXG4iCiAiVHV5IG5oacOqbiwg4bufIMSRw6J5IGPDsyBuaOG7r25nIHRo4bq7IGtow7RuZyDEkcaw4bujYyBjaMO6IGdp4bqjaTogaMOjeSB0aOG7rSAtLXRhZ3MuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzU3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgpAQCAtNDA0OSwxMiArNDQ4NSwxMiBAQAogIktow7RuZyBjw7MgdGjhursgKHRhZykgY8OzIHRo4buDIG3DtCB04bqjIOKAnCVz4oCdLlxuIgogIkjDo3kgdGjhu60gLS1hbHdheXMsIGhv4bq3dCB04bqhbyBt4buZdCBz4buRIHRo4bq7LiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3OAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cmF2ZXJzZWQgJWx1IGNvbW1pdHNcbiIKIG1zZ3N0ciAixJHDoyB4dXnDqm4gJWx1IHF1YSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKQEAgLTQwNjMsNTkgKzQ0OTksNTkgQEAKICJ0w6xtIHRo4bqleSBuaGnhu4F1IGjGoW4gJWkgdGjhursgKHRhZyk7IMSRw6MgbGnhu4d0IGvDqiAlaSBn4bqnbiDEkcOieSBuaOG6pXRcbiIKICJi4buPIMSRaSB0w6xtIGtp4bq/bSB04bqhaSAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAyCiBtc2dpZCAiZmluZCB0aGUgdGFnIHRoYXQgY29tZXMgYWZ0ZXIgdGhlIGNvbW1pdCIKIG1zZ3N0ciAidMOsbSBjw6FjIHRo4bq7IG3DoCBuw7MgxJHhur9uIHRyxrDhu5tjIGzhuqduIGNodXnhu4NuIGdpYW8iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKIG1zZ2lkICJkZWJ1ZyBzZWFyY2ggc3RyYXRlZ3kgb24gc3RkZXJyIgogbXNnc3RyICJjaGnhur9uIGzGsOG7o2MgdMOsbSBraeG6v20gdHLDqm4gxJHhuqd1IHJhIGzhu5dpIGNodeG6qW4gc3RkZXJyIgogCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA0Cittc2dpZCAidXNlIGFueSByZWYiCittc2dzdHIgImTDuW5nIHJlZiBi4bqldCBr4buzIgorCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA1Ci1tc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgotbXNnc3RyICJz4butIGThu6VuZyBi4bqldCBr4buzIHJlZiBuw6BvIHRyb25nIC5naXQvcmVmcyIKK21zZ2lkICJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIKK21zZ3N0ciAiZMO5bmcgdGjhursgYuG6pXQga+G7sywgY+G6oyBraGkg4oCcdW5hbm5vdGF0ZWTigJ0iCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDYKLW1zZ2lkICJ1c2UgYW55IHRhZyBpbiAuZ2l0L3JlZnMvdGFncyIKLW1zZ3N0ciAic+G7rSBk4bulbmcgYuG6pXQga+G7syB0aOG6uyBuw6BvIHRyb25nIC5naXQvcmVmcy90YWdzIgotCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA3CiBtc2dpZCAiYWx3YXlzIHVzZSBsb25nIGZvcm1hdCIKIG1zZ3N0ciAibHXDtG4gZMO5bmcgxJHhu4tuaCBk4bqhbmcgZMOgaSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwOQogbXNnaWQgIm9ubHkgb3V0cHV0IGV4YWN0IG1hdGNoZXMiCiBtc2dzdHIgImNo4buJIHh14bqldCBuaOG7r25nIGfDrCBraOG7m3AgY2jDrW5oIHjDoWMiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTEKIG1zZ2lkICJjb25zaWRlciA8bj4gbW9zdCByZWNlbnQgdGFncyAoZGVmYXVsdDogMTApIgogbXNnc3RyICJjb2kgbmjGsCAgPG4+IHRo4bq7IGfhuqduIMSRw6J5IG5o4bqldCAobeG6t2MgxJHhu4tuaDogMTApIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE0CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCiBtc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKIG1zZ3N0ciAiY2jhu4kgY8OibiBuaOG6r2MgxJHhur9uIG5o4buvbmcgdGjhursga2jhu5twIHbhu5tpICA8beG6q3U+IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAogbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIHbhuq9uIHThuq90IG5oxrAgbMOgIGZhbGxiYWNrIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2CiBtc2dpZCAibWFyayIKIG1zZ3N0ciAiZOG6pXUiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTcKIG1zZ2lkICJhcHBlbmQgPG1hcms+IG9uIGRpcnR5IHdvcmtpbmcgdHJlZSAoZGVmYXVsdDogXCItZGlydHlcIikiCiBtc2dzdHIgInRow6ptIDxk4bqldT4gdHLDqm4gY8OieSB0aMawIG3hu6VjIGzDoG0gdmnhu4djIGLhuqluICht4bq3YyDEkeG7i25oIFwiLWRpcnR5XCIpIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDM2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDM1CiBtc2dpZCAiLS1sb25nIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWJicmV2PTAiCiBtc2dzdHIgIi0tbG9uZyBsw6AgeHVuZyBraOG6r2MgduG7m2kgdMO5eSBjaOG7jW4gLS1hYmJyZXY9MCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ2MgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ2MQogbXNnaWQgIk5vIG5hbWVzIGZvdW5kLCBjYW5ub3QgZGVzY3JpYmUgYW55dGhpbmcuIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgY8OhYyB0w6puLCBraMO0bmcgdGjhu4MgbcO0IHThuqMgZ8OsIGPhuqMuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgxCiBtc2dpZCAiLS1kaXJ0eSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb21taXR0aXNoZXMiCiBtc2dzdHIgIi0tZGlydHkgbMOgIHh1bmcga2jhuq9jIHbhu5tpIGPDoWMgdMO5eSBjaOG7jW4gZMOgbmggY2hvIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCiAKQEAgLTQxNTcsMzkgKzQ1OTMsMzkgQEAKIG1zZ2lkICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgogbXNnc3RyICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU4CiBtc2dpZCAic2hvdyBwcm9ncmVzcyBhZnRlciA8bj4gb2JqZWN0cyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRp4bq/biB0cmnhu4NuIHNhdSA8bj4gxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgogbXNnc3RyICJjaOG7jW4gxJFp4buBdSBraGnhu4NuIGPhu6dhIHRo4bq7IMSRw6Mga8O9IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYzCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHRhZ3MgdGhhdCB0YWcgZmlsdGVyZWQgb2JqZWN0cyIKIG1zZ3N0ciAiY2jhu41uIHPhu7EgeOG7rSBsw70gY+G7p2EgY8OhYyB0aOG6uywgY8OhaSBtw6AgxJHDoW5oIHRo4bq7IGPDoWMgxJHhu5FpIHTGsOG7o25nIMSRxrDhu6NjIGzhu41jIHJhIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQzCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2CiBtc2dpZCAiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiCiBtc2dzdHIgIsSQ4buVIGPDoWMgxJHDoW5oIGThuqV1IG7DoHkgdsOgbyB04bqtcC10aW4iCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKIG1zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCiBtc2dzdHIgIm5o4bqtcCB2w6BvIMSRw6FuaCBk4bqldSB04burIHThuq1wIHRpbiBuw6B5IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQ3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCiBtc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCiBtc2dzdHIgIkzDoG0gZ2nhuqMgbeG7mXQgY8OhaSB0aOG6uyBraGkgdGjhursgYuG7iyB0aGnhur91IG3hu5l0IGPDoWkiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKIG1zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKIG1zZ3N0ciAiWHXhuqV0IHJhIHRvw6BuIGLhu5kgY8OieSBjaG8gbeG7l2kgbOG6p24gY2h1eeG7g24gZ2lhbyIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1MQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NAogbXNnaWQgIlVzZSB0aGUgZG9uZSBmZWF0dXJlIHRvIHRlcm1pbmF0ZSB0aGUgc3RyZWFtIgogbXNnc3RyICJT4butIGThu6VuZyB0w61uaCBuxINuZyBkb25lIMSR4buDIGNo4bqlbSBk4bupdCBsdeG7k25nIGThu68gbGnhu4d1IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjUyCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1CiBtc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgogbXNnc3RyICJC4buPIHF1YSBr4bq/dCB4deG6pXQgY+G7p2EgZOG7ryBsaeG7h3UgYmxvYiIKIApAQCAtNDI2Myw4OCArNDY5OSw5MiBAQAogbXNnaWQgImRlZXBlbiBoaXN0b3J5IG9mIHNoYWxsb3cgY2xvbmUiCiBtc2dzdHIgImzDoG0gc8OidSBoxqFuIGzhu4tjaCBz4butIGPhu6dhIGLhuqNuIHNhbyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg1IGJ1aWx0aW4vbG9nLmM6MTA4OAorIzogYnVpbHRpbi9mZXRjaC5jOjg2Cittc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCittc2dzdHIgImNodXnhu4NuIMSR4buVaSBob8OgbiB0b8OgbiBzYW5nIGtobyBnaXQiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OCBidWlsdGluL2xvZy5jOjExMzAKIG1zZ2lkICJkaXIiCiBtc2dzdHIgInRt4bulYyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg2CisjOiBidWlsdGluL2ZldGNoLmM6ODkKIG1zZ2lkICJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IgogbXNnc3RyICJzb+G6oW4gc+G6tW4gY8OhaSBuw6B5IGNobyBr4bq/dCB4deG6pXQgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5CisjOiBidWlsdGluL2ZldGNoLmM6OTIKIG1zZ2lkICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIKIG1zZ3N0ciAiY2jhur8gxJHhu5kgbeG6t2MgxJHhu4tuaCBjaG8gxJHhu4cgcXVpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjAxCisjOiBidWlsdGluL2ZldGNoLmM6MjA0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCByZW1vdGUgcmVmIEhFQUQiCiBtc2dzdHIgIktow7RuZyB0aOG7gyB0w6xtIHRo4bqleSBtw6F5IGNo4bunIGNobyB0aGFtIGNoaeG6v3UgSEVBRCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1NAorIzogYnVpbHRpbi9mZXRjaC5jOjI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgJXMgbm90IGZvdW5kIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgxJHhu5FpIHTGsOG7o25nICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjU5CisjOiBidWlsdGluL2ZldGNoLmM6MjYyCiBtc2dpZCAiW3VwIHRvIGRhdGVdIgogbXNnc3RyICJbxJHDoyBj4bqtcCBuaOG6rXRdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjczCisjOiBidWlsdGluL2ZldGNoLmM6Mjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiEgJS0qcyAlLSpzIC0+ICVzICAoY2FuJ3QgZmV0Y2ggaW4gY3VycmVudCBicmFuY2gpIgogbXNnc3RyICIhICUtKnMgJS0qcyAtPiAlcyAgKGtow7RuZyB0aOG7gyBmZXRjaCAobOG6pXkpIHbhu4EgbmjDoW5oIGhp4buHbiBow6BuaCkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzQgYnVpbHRpbi9mZXRjaC5jOjM2MAorIzogYnVpbHRpbi9mZXRjaC5jOjI3NyBidWlsdGluL2ZldGNoLmM6MzYzCiBtc2dpZCAiW3JlamVjdGVkXSIKIG1zZ3N0ciAiW0Lhu4sgdOG7qyBjaOG7kWldIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjg1CisjOiBidWlsdGluL2ZldGNoLmM6Mjg4CiBtc2dpZCAiW3RhZyB1cGRhdGVdIgogbXNnc3RyICJbY+G6rXAgbmjhuq10IHRo4bq7XSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NyBidWlsdGluL2ZldGNoLmM6MzIyIGJ1aWx0aW4vZmV0Y2guYzozNDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCiBtc2dpZCAiICAodW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYpIgogbXNnc3RyICIgIChraMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IHRoYW0gY2hp4bq/dSAocmVmKSBu4buZaSBi4buZKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwNQorIzogYnVpbHRpbi9mZXRjaC5jOjMwOAogbXNnaWQgIltuZXcgdGFnXSIKIG1zZ3N0ciAiW3Ro4bq7IG3hu5tpXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwOAorIzogYnVpbHRpbi9mZXRjaC5jOjMxMQogbXNnaWQgIltuZXcgYnJhbmNoXSIKIG1zZ3N0ciAiW25ow6FuaCBt4bubaV0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTQKIG1zZ2lkICJbbmV3IHJlZl0iCiBtc2dzdHIgIltyZWYgKHRoYW0gY2hp4bq/dSkgbeG7m2ldIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU2CisjOiBidWlsdGluL2ZldGNoLmM6MzU5CiBtc2dpZCAidW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBj4bqtcCBuaOG6rXQgdGhhbSBjaGnhur91IChyZWYpIG7hu5lpIGLhu5kiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTYKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICJmb3JjZWQgdXBkYXRlIgogbXNnc3RyICJjxrDhu6FuZyBi4bupYyBj4bqtcCBuaOG6rXQiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNjIKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNjUKIG1zZ2lkICIobm9uLWZhc3QtZm9yd2FyZCkiCiBtc2dzdHIgIihub24tZmFzdC1mb3J3YXJkKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM5MyBidWlsdGluL2ZldGNoLmM6Njg1CisjOiBidWlsdGluL2ZldGNoLmM6Mzk2IGJ1aWx0aW4vZmV0Y2guYzo2ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzXG4iCiBtc2dzdHIgImtow7RuZyB0aOG7gyBt4bufICVzOiAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDAyCisjOiBidWlsdGluL2ZldGNoLmM6NDA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGRpZCBub3Qgc2VuZCBhbGwgbmVjZXNzYXJ5IG9iamVjdHNcbiIKIG1zZ3N0ciAiJXMgxJHDoyBraMO0bmcgZ+G7rWkgdOG6pXQgY+G6oyBjw6FjIMSR4buRaSB0xrDhu6NuZyBj4bqnbiB0aGnhur90XG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0ODgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo0OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRnJvbSAlLipzXG4iCiBtc2dzdHIgIlThu6sgJS4qc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDk5CisjOiBidWlsdGluL2ZldGNoLmM6NTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJzb21lIGxvY2FsIHJlZnMgY291bGQgbm90IGJlIHVwZGF0ZWQ7IHRyeSBydW5uaW5nXG4iCkBAIC00MzUzLDU3ICs0NzkzLDU3IEBACiAibeG7mXQgc+G7kSB0aGFtIGNoaeG6v3UgKHJlZnMpIG7hu5lpIGLhu5kga2jDtG5nIHRo4buDIMSRxrDhu6NjIGPhuq1wIG5o4bqtdDsgaMOjeSB0aOG7rSBjaOG6oXlcbiIKICIg4oCcZ2l0IHJlbW90ZSBwcnVuZSAlc+KAnSDEkeG7gyBi4buPIMSRaSBuaOG7r25nIG5ow6FuaCBjxaksIGhheSBi4buLIHh1bmcgxJHhu5l0IgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTQ5CisjOiBidWlsdGluL2ZldGNoLmM6NTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyB3aWxsIGJlY29tZSBkYW5nbGluZykiCiBtc2dzdHIgIiAgICglcyBz4bq9IHRy4bufIHRow6BuaCBraMO0bmcgxJHhuqd1IChraMO0bmcgxJHGsOG7o2MgcXXhuqNuIGzDvSkpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTUwCisjOiBidWlsdGluL2ZldGNoLmM6NTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiICAgKCVzIMSRw6MgdHLhu58gdGjDoG5oIGtow7RuZyDEkeG6p3UgKGtow7RuZyDEkcaw4bujYyBxdeG6o24gbMO9KSkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjAKIG1zZ2lkICJbZGVsZXRlZF0iCiBtc2dzdHIgIlvEkcOjIHjDs2FdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU4IGJ1aWx0aW4vcmVtb3RlLmM6MTA1NQorIzogYnVpbHRpbi9mZXRjaC5jOjU2MSBidWlsdGluL3JlbW90ZS5jOjEwNTUKIG1zZ2lkICIobm9uZSkiCiBtc2dzdHIgIihraMO0bmcpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Njc1CisjOiBidWlsdGluL2ZldGNoLmM6Njc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIGZldGNoIGludG8gY3VycmVudCBicmFuY2ggJXMgb2Ygbm9uLWJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogIlThu6sgY2jhu5FpIHZp4buHYyBs4bqleSAoZmV0Y2gpIHbDoG8gdHJvbmcgbmjDoW5oIGhp4buHbiB04bqhaSAlcyBj4bunYSBt4buZdCBraG8gY2jhu6lhIGtow7RuZyAiCiAicGjhuqNpIGtobyB0cuG6p24gKGJhcmUpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NzA5CisjOiBidWlsdGluL2ZldGNoLmM6NzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGZldGNoIGZyb20gJXMiCiBtc2dzdHIgIktow7RuZyBiaeG6v3QgbMOgbSBjw6FjaCBuw6BvIMSR4buDIGzhuqV5IHbhu4EgKGZldGNoKSB04burICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg2CisjOiBidWlsdGluL2ZldGNoLmM6Nzg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIlTDuXkgY2jhu41uIFwiJXNcIiBjw7MgZ2nDoSB0cuG7iyBcIiVzXCIgbMOgIGtow7RuZyBo4bujcCBs4buHIGNobyAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4OQorIzogYnVpbHRpbi9mZXRjaC5jOjc5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIGlzIGlnbm9yZWQgZm9yICVzXG4iCiBtc2dzdHIgIlTDuXkgY2jhu41uIFwiJXNcIiBi4buLIGLhu48gcXVhIHbhu5tpICVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXNcbiIKIG1zZ3N0ciAixJBhbmcgbOG6pXkgKGZldGNoKSAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODkzIGJ1aWx0aW4vcmVtb3RlLmM6MTAwCisjOiBidWlsdGluL2ZldGNoLmM6ODk2IGJ1aWx0aW4vcmVtb3RlLmM6MTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmZXRjaCAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGZldGNoIChs4bqleSkgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MTUKIG1zZ2lkICIiCiAiTm8gcmVtb3RlIHJlcG9zaXRvcnkgc3BlY2lmaWVkLiAgUGxlYXNlLCBzcGVjaWZ5IGVpdGhlciBhIFVSTCBvciBhXG4iCiAicmVtb3RlIG5hbWUgZnJvbSB3aGljaCBuZXcgcmV2aXNpb25zIHNob3VsZCBiZSBmZXRjaGVkLiIKQEAgLTQ0MTEsMjQgKzQ4NTEsMzIgQEAKICJDaMawYSBjaOG7iSByYSBraG8gY2jhu6lhIG3DoXkgY2jhu6cuICBYaW4gaMOjeSBjaOG7iSDEkeG7i25oIGhv4bq3YyBsw6AgVVJMIGhv4bq3Y1xuIgogInTDqm4gbcOheSBjaOG7pyB04burIGPDoWkgbcOgIG5o4buvbmcgxJFp4buDbSB4w6l0IGR1eeG7h3QgbeG7m2kgY8OzIHRo4buDIMSRxrDhu6NjIGZldGNoIChs4bqleSB24buBKS4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MzIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MzUKIG1zZ2lkICJZb3UgbmVlZCB0byBzcGVjaWZ5IGEgdGFnIG5hbWUuIgogbXNnc3RyICJC4bqhbiBwaOG6o2kgxJHhu4tuaCByw7UgdMOqbiB0aOG6uy4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODQKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKK21zZ2lkICItLWRlcHRoIGFuZCAtLXVuc2hhbGxvdyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKK21zZ3N0ciAidMO5eSBjaOG7jW4gLS1kZXB0aCB2w6AgLS11bnNoYWxsb3cga2jDtG5nIHRo4buDIHPhu60gZOG7pW5nIGPDuW5nIHbhu5tpIG5oYXUiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODMKK21zZ2lkICItLXVuc2hhbGxvdyBvbiBhIGNvbXBsZXRlIHJlcG9zaXRvcnkgZG9lcyBub3QgbWFrZSBzZW5zZSIKK21zZ3N0ciAiLS11bnNoYWxsb3cgdHLDqm4ga2hvIGhvw6BuIGNo4buJbmggbMOgIGtow7RuZyBo4bujcCBsw70iCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDAyCiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCiBtc2dzdHIgImzhu4duaCBs4bqleSB24buBIFwiZmV0Y2ggLS1hbGxcIiBraMO0bmcgbOG6pXkgxJHhu5FpIHPhu5Ega2hvIGNo4bupYSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk4NgorIzogYnVpbHRpbi9mZXRjaC5jOjEwMDQKIG1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgImzhu4duaCBs4bqleSB24buBIFwiZmV0Y2ggLS1hbGxcIiBraMO0bmcgaOG7o3AgbMO9IHbhu5tpIHJlZnNwZWNzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTk3CisjOiBidWlsdGluL2ZldGNoLmM6MTAxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzdWNoIHJlbW90ZSBvciByZW1vdGUgZ3JvdXA6ICVzIgogbXNnc3RyICJraMO0bmcgY8OzIG5ow7NtIG3DoXkgY2jhu6cgaGF5IG3DoXkgY2jhu6cgbmjGsCB0aOG6vzogJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA1CisjOiBidWlsdGluL2ZldGNoLmM6MTAyMwogbXNnaWQgIkZldGNoaW5nIGEgZ3JvdXAgYW5kIHNwZWNpZnlpbmcgcmVmc3BlY3MgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiVmnhu4djIGzhuqV5IHbhu4EgY+G6oyBt4buZdCBuaMOzbSB2w6AgY2jhu4kgxJHhu4tuaCByZWZzcGVjcyBraMO0bmcgaOG7o3AgbMO9IgogCkBAIC00NDM3LDI5ICs0ODg1LDI5IEBACiBtc2dzdHIgIiIKICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPHRow7RuZyDEkWnhu4dwPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDx04bqtcC10aW4+XSIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjUzIGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NiBidWlsdGluL2dyZXAuYzo3MDEKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODggYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NiBidWlsdGluL3Nob3ctcmVmLmM6MTc1Ci0jOiBidWlsdGluL3RhZy5jOjQ0OCBwYXJzZS1vcHRpb25zLmg6MTMzIHBhcnNlLW9wdGlvbnMuaDoyMzUKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjYgYnVpbHRpbi9ncmVwLmM6NzAxCisjOiBidWlsdGluL21lcmdlLmM6MTg4IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUgYnVpbHRpbi9zaG93LXJlZi5jOjE3NQorIzogYnVpbHRpbi90YWcuYzo0NDYgcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM5CiBtc2dpZCAibiIKIG1zZ3N0ciAibiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjU0CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjQKIG1zZ2lkICJwb3B1bGF0ZSBsb2cgd2l0aCBhdCBtb3N0IDxuPiBlbnRyaWVzIGZyb20gc2hvcnRsb2ciCiBtc2dzdHIgImfhuq9uIG5o4bqtdCBrw70gduG7m2kgw610IG5o4bqldCA8bj4gbeG7pWMgdOG7qyBs4buHbmgg4oCcc2hvcnRsb2figJ0iCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1NworIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY3CiBtc2dpZCAiYWxpYXMgZm9yIC0tbG9nIChkZXByZWNhdGVkKSIKIG1zZ3N0ciAiYsOtIGRhbmggY2hvIC0tbG9nIChraMO0bmcgxJHGsOG7o2MgZMO5bmcpIgogCi0jOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjAKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY3MAogbXNnaWQgInRleHQiCiBtc2dzdHIgInbEg24gYuG6o24iCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MQorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcxCiBtc2dpZCAidXNlIDx0ZXh0PiBhcyBzdGFydCBvZiBtZXNzYWdlIgogbXNnc3RyICJkw7luZyA8dsSDbiBi4bqjbiB0aMaw4budbmc+IMSR4buDIGLhuq90IMSR4bqndSBnaGkgY2jDuiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYyCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzIKIG1zZ2lkICJmaWxlIHRvIHJlYWQgZnJvbSIKIG1zZ3N0ciAidOG6rXAgdGluIMSR4buDIMSR4buNYyBk4buvIGxp4buHdSB04burIMSRw7MiCiAKQEAgLTQ2MTcsNyArNTA2NSw3IEBACiAjOiBidWlsdGluL2dyZXAuYzo1NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3dpdGNoIGAlYycgZXhwZWN0cyBhIG51bWVyaWNhbCB2YWx1ZSIKLW1zZ3N0ciAiY2h1eeG7g24gxJHhur9uIGAlYycgY+G6p24gbeG7mXQgZ2nDoSB0cuG7iyBi4bqxbmcgc+G7kSIKK21zZ3N0ciAiY2h1eeG7g24gxJHhur9uIOKAnCVj4oCdIGPhuqduIG3hu5l0IGdpw6EgdHLhu4sgYuG6sW5nIHPhu5EiCiAKICM6IGJ1aWx0aW4vZ3JlcC5jOjU2OAogIywgYy1mb3JtYXQKQEAgLTQ3OTcsMTEgKzUyNDUsNiBAQAogbXNnaWQgIm5vIHBhdHRlcm4gZ2l2ZW4uIgogbXNnc3RyICJjaMawYSBjaOG7iSByYSBt4bqrdS4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjgyNQotIywgYy1mb3JtYXQKLW1zZ2lkICJiYWQgb2JqZWN0ICVzIgotbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgc2FpICVzIgotCiAjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCiBtc2dzdHIgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBjaOG7iSBsw6BtIHZp4buHYyB0csOqbiBjw6J5LWzDoG0tdmnhu4djIgpAQCAtNDg2NSw0NSArNTMwOCw0OSBAQAogbXNnc3RyICJoaeG7g24gdGjhu4sgZGFuaCBzw6FjaCBjw6FjIGPDonUgbOG7h25oIG5nxrDhu51pIGTDuW5nIGPDsyB0aOG7gyBz4butIGThu6VuZyIKIAogIzogYnVpbHRpbi9oZWxwLmM6NDQKK21zZ2lkICJwcmludCBsaXN0IG9mIHVzZWZ1bCBndWlkZXMiCittc2dzdHIgImhp4buDbiB0aOG7iyBkYW5oIHPDoWNoIGPDoWMgaMaw4bubbmcgZOG6q24gaOG7r3UgZOG7pW5nIgorCisjOiBidWlsdGluL2hlbHAuYzo0NQogbXNnaWQgInNob3cgbWFuIHBhZ2UiCiBtc2dzdHIgImhp4buDbiB0aOG7iyB0cmFuZyBtYW4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ1CisjOiBidWlsdGluL2hlbHAuYzo0NgogbXNnaWQgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIgogbXNnc3RyICJoaeG7g24gdGjhu4sgaMaw4bubbmcgZOG6q24gc+G7rSBk4bulbmcgdHJvbmcgdHLDrG5oIGR1eeG7h3Qgd2ViIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NworIzogYnVpbHRpbi9oZWxwLmM6NDgKIG1zZ2lkICJzaG93IGluZm8gcGFnZSIKIG1zZ3N0ciAiaGnhu4duIHRyYW5nIGluZm8iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjUzCi1tc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCi1tc2dzdHIgImdpdCBoZWxwIFstLWFsbF0gWy0tbWFufC0td2VifC0taW5mb10gW2zhu4duaF0iCisjOiBidWlsdGluL2hlbHAuYzo1NAorbXNnaWQgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCittc2dzdHIgImdpdCBoZWxwIFstLWFsbF0gWy0tZ3VpZGVzXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbbOG7h25oXSIKIAotIzogYnVpbHRpbi9oZWxwLmM6NjUKKyM6IGJ1aWx0aW4vaGVscC5jOjY2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBoZWxwIGZvcm1hdCAnJXMnIgogbXNnc3RyICJraMO0bmcgbmjhuq1uIHJhIMSR4buLbmggZOG6oW5nIHRy4bujIGdpw7pwIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2hlbHAuYzo5MworIzogYnVpbHRpbi9oZWxwLmM6OTQKIG1zZ2lkICJGYWlsZWQgdG8gc3RhcnQgZW1hY3NjbGllbnQuIgogbXNnc3RyICJM4buXaSBraOG7n2kgY2jhuqF5IGVtYWNzY2xpZW50LiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTA2CisjOiBidWlsdGluL2hlbHAuYzoxMDcKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiB0w61jaCBwaGnDqm4gYuG6o24gZW1hY3NjbGllbnQuIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMTQKKyM6IGJ1aWx0aW4vaGVscC5jOjExNQogIywgYy1mb3JtYXQKIG1zZ2lkICJlbWFjc2NsaWVudCB2ZXJzaW9uICclZCcgdG9vIG9sZCAoPCAyMikuIgogbXNnc3RyICJwaGnDqm4gYuG6o24gY+G7p2EgZW1hY3NjbGllbnQg4oCcJWTigJ0gcXXDoSBjxakgKDwgMjIpLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTMyIGJ1aWx0aW4vaGVscC5jOjE2MCBidWlsdGluL2hlbHAuYzoxNjkgYnVpbHRpbi9oZWxwLmM6MTc3CisjOiBidWlsdGluL2hlbHAuYzoxMzMgYnVpbHRpbi9oZWxwLmM6MTYxIGJ1aWx0aW4vaGVscC5jOjE3MCBidWlsdGluL2hlbHAuYzoxNzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGV4ZWMgJyVzJzogJXMiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSB0aOG7sWMgdGhpIOKAnCVz4oCdOiAlcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6MjE3CisjOiBidWlsdGluL2hlbHAuYzoyMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcyc6IHBhdGggZm9yIHVuc3VwcG9ydGVkIG1hbiB2aWV3ZXIuXG4iCkBAIC00OTEyLDcgKzUzNTksNyBAQAogIuKAnCVz4oCdOiDEkcaw4budbmcgZOG6q24ga2jDtG5nIGjhu5cgdHLhu6MgYuG7mSB0csOsbmggY2hp4bq/dSBtYW4uXG4iCiAiSMOjeSBjw6JuIG5o4bqvYyDEkeG6v24gdmnhu4djIHPhu60gZOG7pW5nIOKAnG1hbi48dG9vbD4uY21k4oCdIMSR4buDIHRoYXkgdGjhur8uIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMjkKKyM6IGJ1aWx0aW4vaGVscC5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogY21kIGZvciBzdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKQEAgLTQ5MjEsMzA3ICs1MzY4LDMzNSBAQAogIuKAnCVz4oCdOiBjbWQgKGzhu4duaCkgaOG7lyB0cuG7oyBi4buZIHRyw6xuaCBjaGnhur91IG1hbi5cbiIKICJIw6N5IGPDom4gbmjhuq9jIMSR4bq/biB2aeG7h2Mgc+G7rSBk4bulbmcg4oCcbWFuLjx0b29sPi5wYXRo4oCdIMSR4buDIHRoYXkgdGjhur8uIgogCi0jOiBidWlsdGluL2hlbHAuYzoyOTkKLW1zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgotbXNnc3RyICJOaOG7r25nIGzhu4duaCBnaXQgaGF5IMSRxrDhu6NjIHPhu60gZOG7pW5nIG5o4bqldCBsw6A6IgotCi0jOiBidWlsdGluL2hlbHAuYzozNjcKKyM6IGJ1aWx0aW4vaGVscC5jOjM1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIgogbXNnc3RyICLigJwlc+KAnToga2jDtG5nIHLDtSBjaMawxqFuZyB0csOsbmggeGVtIG1hbi4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM4NAorIzogYnVpbHRpbi9oZWxwLmM6MzY4CiBtc2dpZCAibm8gbWFuIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICJraMO0bmcgY8OzIHRyw6xuaCB4ZW0gdHLhu6MgZ2nDunAgZOG6oW5nIG1hbnBhZ2UgdGnhur9wIGjhu6NwIHbhu5tpIHnDqnUgY+G6p3UiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM5MgorIzogYnVpbHRpbi9oZWxwLmM6Mzc2CiBtc2dpZCAibm8gaW5mbyB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKIG1zZ3N0ciAia2jDtG5nIGPDsyB0csOsbmggeGVtIHRy4bujIGdpw7pwIGThuqFuZyBpbmZvIHRp4bq/cCBo4bujcCB24bubaSB5w6p1IGPhuqd1IgogCi0jOiBidWlsdGluL2hlbHAuYzo0NDcgYnVpbHRpbi9oZWxwLmM6NDU0CisjOiBidWlsdGluL2hlbHAuYzo0MjIKK21zZ2lkICJEZWZpbmluZyBhdHRyaWJ1dGVzIHBlciBwYXRoIgorbXNnc3RyICLEkOG7i25oIG5naMSpYSBjw6FjIHRodeG7mWMgdMOtbmggY2hvIG3hu5dpIMSRxrDhu51uZyBk4bqrbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDIzCittc2dpZCAiQSBHaXQgZ2xvc3NhcnkiCittc2dzdHIgIlRodeG6rXQgbmfhu68gY2h1ecOqbiBtw7RuIEdpdCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI0Cittc2dpZCAiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIKK21zZ3N0ciAiQ2jhu4kgxJHhu4tuaCBjw6FjIHThuq1wIHRpbiBjaMawYSB0aGVvIGTDtWkgZOG6pXUgduG6v3QgYuG7iyBi4buPIHF1YSBt4buZdCBjw6FjaCBj4buRIMO9IgorCisjOiBidWlsdGluL2hlbHAuYzo0MjUKK21zZ2lkICJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIKK21zZ3N0ciAixJDhu4tuaCBuZ2jEqWEgdGh14buZYyB0w61uaCBtw7QtxJF1bi1jb24iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNgorbXNnaWQgIlNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIEdpdCIKK21zZ3N0ciAiQ2jhu4kgxJHhu4tuaCDEkWnhu4NtIHjDqXQgZHV54buHdCB2w6AgdsO5bmcgY2hvIEdpdCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDI3Cittc2dpZCAiQSB0dXRvcmlhbCBpbnRyb2R1Y3Rpb24gdG8gR2l0IChmb3IgdmVyc2lvbiAxLjUuMSBvciBuZXdlcikiCittc2dzdHIgIkjGsOG7m25nIGThuqtuIGPDoWNoIGTDuW5nIEdpdCDhu58gbeG7qWMgY8ahIGLhuqNuIChkw6BuaCBjaG8gYuG6o24gMS41LjEgaGF5IG3hu5tpIGjGoW4pIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjgKK21zZ2lkICJBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBHaXQiCittc2dzdHIgIlThu5VuZyBxdWFuIHbhu4EgbHXhu5NuZyBjw7RuZyB2aeG7h2Mga2h1eeG6v24gbmdo4buLIG7Dqm4gZMO5bmcgduG7m2kgR2l0LiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDQwCittc2dpZCAiVGhlIGNvbW1vbiBHaXQgZ3VpZGVzIGFyZTpcbiIKK21zZ3N0ciAiQ8OhYyBjaOG7iSBk4bqrbiBjaHVuZyB24buBIGPDoWNoIGTDuW5nIEdpdCBsw6A6XG4iCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2MiBidWlsdGluL2hlbHAuYzo0NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAidXNhZ2U6ICVzJXMiCiBtc2dzdHIgImPDoWNoIHPhu60gZOG7pW5nOiAlcyVzIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NzAKKyM6IGJ1aWx0aW4vaGVscC5jOjQ5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJgZ2l0ICVzJyBpcyBhbGlhc2VkIHRvIGAlcyciCi1tc2dzdHIgImBnaXQgJXMnIMSRxrDhu6NjIMSR4bq3dCBiw60gZGFuaCB0aMOgbmggYCVzJyIKK21zZ3N0ciAi4oCcZ2l0ICVz4oCdIMSRxrDhu6NjIMSR4bq3dCBiw60gZGFuaCB0aMOgbmgg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE3MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCB0eXBlIG1pc21hdGNoIGF0ICVzIgogbXNnc3RyICJraeG7g3UgxJHhu5FpIHTGsOG7o25nIGtow7RuZyBraOG7m3AgdOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE5MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCiBtc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKIG1zZ3N0ciAixJHhu5FpIHTGsOG7o25nIGPhu6dhIGtp4buDdSBraMO0bmcgbW9uZyDEkeG7o2kiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIyNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBmaWxsICVkIGJ5dGUiCiBtc2dpZF9wbHVyYWwgImNhbm5vdCBmaWxsICVkIGJ5dGVzIgogbXNnc3RyWzBdICJraMO0bmcgdGjhu4MgxJFp4buBbiB2w6BvICVkIGJ5dGUiCiBtc2dzdHJbMV0gImtow7RuZyB0aOG7gyDEkWnhu4FuIHbDoG8gJWQgYnl0ZSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKIG1zZ2lkICJlYXJseSBFT0YiCiBtc2dzdHIgInbhu6thIMSRw7puZyBsw7pjIEVPRiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKIG1zZ2lkICJyZWFkIGVycm9yIG9uIGlucHV0IgogbXNnc3RyICJs4buXaSDEkeG7jWMg4bufIMSR4bqndSB2w6BvIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI2MgogbXNnaWQgInVzZWQgbW9yZSBieXRlcyB0aGFuIHdlcmUgYXZhaWxhYmxlIgogbXNnc3RyICJz4butIGThu6VuZyBuaGnhu4F1IGjGoW4gc+G7kSBsxrDhu6NuZyBieXRlIG3DoCBuw7Mgc+G6tW4gY8OzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI2OQogbXNnaWQgInBhY2sgdG9vIGxhcmdlIGZvciBjdXJyZW50IGRlZmluaXRpb24gb2Ygb2ZmX3QiCiBtc2dzdHIgInBhY2sgcXXDoSBs4bubbiBzbyB24bubaSDEkeG7i25oIG5naMSpYSBoaeG7h24gdOG6oWkgY+G7p2Ega2nhu4N1IG9mZl90IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjc4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gcGFja2ZpbGUg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA0CiBtc2dpZCAicGFjayBzaWduYXR1cmUgbWlzbWF0Y2giCiBtc2dzdHIgImNo4buvIGvDvSBjaG8gcGFjayBraMO0bmcga2jhu5twIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIHZlcnNpb24gJTxQUkl1MzI+IHVuc3VwcG9ydGVkIgogbXNnc3RyICJraMO0bmcgaOG7lyB0cuG7oyBwaGnDqm4gYuG6o24gcGFjayAlPFBSSXUzMj4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMxMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzIGJhZCBvYmplY3QgYXQgb2Zmc2V0ICVsdTogJXMiCiBtc2dzdHIgInBhY2sgY8OzIMSR4buRaSB0xrDhu6NuZyBzYWkga2hv4bqjbmcgYsO5IChvZmZzZXQpICVsdTogJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQzNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgImluZmxhdGUgcmV0dXJuZWQgJWQiCiBtc2dzdHIgInjhuqMgbsOpbiB0cuG6oyB24buBICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0ODMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5NQogbXNnaWQgIm9mZnNldCB2YWx1ZSBvdmVyZmxvdyBmb3IgZGVsdGEgYmFzZSBvYmplY3QiCiBtc2dzdHIgInRyw6BuIGdpw6EgdHLhu4sga2hv4bqjbmcgYsO5IGNobyDEkeG7kWkgdMaw4bujbmcgZGVsdGEgY8ahIHPhu58iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5MQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTAzCiBtc2dpZCAiZGVsdGEgYmFzZSBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kIgogbXNnc3RyICJraG/huqNuZyBiw7kgY8ahIHPhu58gY2hvIGRlbHRhIG7hurFtIG5nb8OgaSBwaOG6oW0gdmkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTExCiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgImtow7RuZyBoaeG7g3Uga2nhu4N1IMSR4buRaSB0xrDhu6NuZyAlZCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTMwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDIKIG1zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY2jhuqF5IGjDoG0gcHJlYWQgY2hvIHThuq1wIHRpbiBwYWNrIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1MzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGUgbWlzc2luZyIKIG1zZ2lkX3BsdXJhbCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlcyBtaXNzaW5nIgogbXNnc3RyWzBdICJ04bqtcCB0aW4gcGFjayBi4buLIGvhur90IHRow7pjIHPhu5ttLCAlbHUgYnl0ZSBi4buLIHRoaeG6v3UiCiBtc2dzdHJbMV0gInThuq1wIHRpbiBwYWNrIGLhu4sga+G6v3QgdGjDumMgc+G7m20sICVsdSBieXRlIGLhu4sgdGhp4bq/dSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTU4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NzAKIG1zZ2lkICJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIKIG1zZ3N0ciAic+G7sSBtw6J1IHRodeG6q24geOG6oyBuw6luIG5naGnDqm0gdHLhu41uZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjQ5IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY1NSBidWlsdGluL2luZGV4LXBhY2suYzo2NzgKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcxMiBidWlsdGluL2luZGV4LXBhY2suYzo3MjEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2MSBidWlsdGluL2luZGV4LXBhY2suYzo2NjcgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjkwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MjQgYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNIQTEgQ09MTElTSU9OIEZPVU5EIFdJVEggJXMgISIKIG1zZ3N0ciAiU+G7sCBWQSBDSOG6oE0gU0hBMSDEkMODIFjhuqJZIFJBIFbhu5pJICVzISIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjUyIGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjQgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nIMSRw6MgdOG7k24gdOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgYmxvYiBvYmplY3QgJXMiCiBtc2dzdHIgIsSR4buRaSB0xrDhu6NuZyBibG9iIGtow7RuZyBo4bujcCBs4buHICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkICVzIgogbXNnc3RyICIlcyBraMO0bmcgaOG7o3AgbOG7hyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjEKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIkzhu5dpIHRyb25nIMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzUxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgdOG6pXQgY+G6oyBjw6FjIMSR4buRaSB0xrDhu6NuZyBjb24gY+G7p2EgJXMgbMOgIGPDsyB0aOG7gyB24bubaSB04bubaSDEkcaw4bujYyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODIxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg0NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MwogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIMOhcCBk4bulbmcgZGVsdGEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk4NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAogbXNnaWQgIlJlY2VpdmluZyBvYmplY3RzIgogbXNnc3RyICLEkGFuZyBuaOG6rW4gduG7gSBjw6FjIMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6OTg2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CiBtc2dpZCAiSW5kZXhpbmcgb2JqZWN0cyIKIG1zZ3N0ciAiQ8OhYyDEkeG7kWkgdMaw4bujbmcgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDEyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDMwCiBtc2dpZCAicGFjayBpcyBjb3JydXB0ZWQgKFNIQTEgbWlzbWF0Y2gpIgogbXNnc3RyICJwYWNrIGLhu4sgc2FpIGjhu49uZyAoU0hBMSBraMO0bmcga2jhu5twKSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAxNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgImNhbm5vdCBmc3RhdCBwYWNrZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGZzdGF0IHBhY2tmaWxlIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDIwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM4CiBtc2dpZCAicGFjayBoYXMganVuayBhdCB0aGUgZW5kIgogbXNnc3RyICJwYWNrIGPDsyBwaOG6p24gdGjhu6thIOG7nyBjdeG7kWkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDkKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IGluIHBhcnNlX3BhY2tfb2JqZWN0cygpIgogbXNnc3RyICJs4buZbiB44buZbiBoxqFuIGPhuqMgxJFpw6puIHLhu5Mga2hpIGNo4bqheSBow6BtIHBhcnNlX3BhY2tfb2JqZWN0cygpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDU0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDcyCiBtc2dpZCAiUmVzb2x2aW5nIGRlbHRhcyIKIG1zZ3N0ciAixJBhbmcgcGjDom4gZ2nhuqNpIGPDoWMgZGVsdGEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNjQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwODIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gdHV54bq/bjogJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjQKIG1zZ2lkICJjb25mdXNpb24gYmV5b25kIGluc2FuaXR5IgogbXNnc3RyICJs4buZbiB44buZbiBoxqFuIGPhuqMgxJFpw6puIHLhu5MiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29tcGxldGVkIHdpdGggJWQgbG9jYWwgb2JqZWN0cyIKIG1zZ3N0ciAixJHhuqd5IMSR4bunIHbhu5tpICVkIMSR4buRaSB0xrDhu6NuZyBu4buZaSBi4buZIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTIxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuZXhwZWN0ZWQgdGFpbCBjaGVja3N1bSBmb3IgJXMgKGRpc2sgY29ycnVwdGlvbj8pIgogbXNnc3RyICJU4buVbmcga2nhu4NtIHRyYSB0YWlsIGtow7RuZyBuaMawIG1vbmcgxJHhu6NpIGNobyAlcyAoxJHEqWEgaOG7j25nPykiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YSIKIG1zZ2lkX3BsdXJhbCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YXMiCiBtc2dzdHJbMF0gInBhY2sgY8OzICVkIGRlbHRhIGNoxrBhIMSRxrDhu6NjIGdp4bqjaSBxdXnhur90IgogbXNnc3RyWzFdICJwYWNrIGPDsyAlZCBkZWx0YSBjaMawYSDEkcaw4bujYyBnaeG6o2kgcXV54bq/dCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gZGVmbGF0ZSBhcHBlbmRlZCBvYmplY3QgKCVkKSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHjhuqMgxJHhu5FpIHTGsOG7o25nIG7hu5FpIHRow6ptICglZCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyMjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAibG9jYWwgb2JqZWN0ICVzIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIsSR4buRaSB0xrDhu6NuZyBu4buZaSBi4buZICVzIGLhu4sgaOG7j25nIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CiBtc2dpZCAiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGUiCiBtc2dzdHIgImfhurdwIGzhu5dpIHRyb25nIGtoaSDEkcOzbmcgdOG6rXAgdGluIHBhY2siCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNjYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHdyaXRlIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIHThuq1wIHRpbiBnaeG7ryBs4bqhaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI3NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY2xvc2Ugd3JpdHRlbiBrZWVwIGZpbGUgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSRw7NuZyB04bqtcCB0aW4gZ2nhu68gbOG6oWkgxJHDoyDEkcaw4bujYyBnaGkg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyODcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMDgKIG1zZ2lkICJjYW5ub3Qgc3RvcmUgcGFjayBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbMawdSB04bqtcCB0aW4gcGFjayIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbMawdSB0cuG7ryB04bqtcCB0aW4gZ2hpIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzMxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzUyCiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCiBtc2dzdHIgInNhaSBwYWNrLmluZGV4dmVyc2lvbj0lPFBSSXUzMj4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMzcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBudW1iZXIgb2YgdGhyZWFkcyBzcGVjaWZpZWQgKCVkKSIKIG1zZ3N0ciAic+G7kSB0dXnhur9uIGNo4buJIHJhIGtow7RuZyBo4bujcCBs4buHICglZCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNDEgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUxNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRocmVhZHMgc3VwcG9ydCwgaWdub3JpbmcgJXMiCiBtc2dzdHIgImtow7RuZyBo4buXIHRy4bujIMSRYSB0dXnhur9uLCBi4buPIHF1YSAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM5OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGZpbGUgJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gdOG6rXAgdGluIHBhY2sgxJHDoyBz4bq1biBjw7Mg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MDEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBpZHggZmlsZSBmb3IgJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gdOG6rXAgdGluIOKAnHBhY2sgaWR44oCdIGNobyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ0OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJub24gZGVsdGE6ICVkIG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAibm9uIGRlbHRhOiAlZCBvYmplY3RzIgogbXNnc3RyWzBdICJraMO0bmcgZGVsdGE6ICVkIMSR4buRaSB0xrDhu6NuZyIKIG1zZ3N0clsxXSAia2jDtG5nIGRlbHRhOiAlZCDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3QiCiBtc2dpZF9wbHVyYWwgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0cyIKIG1zZ3N0clswXSAiY2hp4buBdSBkw6BpIHjDrWNoID0gJWQ6ICVsdSDEkeG7kWkgdMaw4bujbmciCiBtc2dzdHJbMV0gImNoaeG7gXUgZMOgaSB4w61jaCA9ICVkOiAlbHUgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDgyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTAzCiBtc2dpZCAiQ2Fubm90IGNvbWUgYmFjayB0byBjd2QiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBxdWF5IGzhuqFpIGN3ZCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUyNiBidWlsdGluL2luZGV4LXBhY2suYzoxNTI5Ci0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCAlcyIKIG1zZ3N0ciAiJXMgc2FpIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTU5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTgwCiBtc2dpZCAiLS1maXgtdGhpbiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IC0tc3RkaW4iCiBtc2dzdHIgIi0tZml4LXRoaW4ga2jDtG5nIHRo4buDIMSRxrDhu6NjIGTDuW5nIG3DoCBraMO0bmcgY8OzIC0tc3RkaW4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjMgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU3MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4NCBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2tmaWxlIG5hbWUgJyVzJyBkb2VzIG5vdCBlbmQgd2l0aCAnLnBhY2snIgogbXNnc3RyICJ0w6puIHThuq1wIHRpbiBwYWNrZmlsZSDigJwlc+KAnSBraMO0bmcgxJHGsOG7o2Mga+G6v3QgdGjDumMgYuG6sW5nIMSRdcO0aSDigJwucGFja+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwMwogbXNnaWQgIi0tdmVyaWZ5IHdpdGggbm8gcGFja2ZpbGUgbmFtZSBnaXZlbiIKIG1zZ3N0ciAiZMO5bmcgdMO5eSBjaOG7jW4gLS12ZXJpZnkgbcOgIGtow7RuZyDEkcawYSByYSB0w6puIHBhY2tmaWxlIgogCkBAIC01Mzg5LDIzOCArNTg2NCwyNDEgQEAKIG1zZ2lkICJDYW5ub3QgYWNjZXNzIHdvcmsgdHJlZSAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdHJ1eSBj4bqtcCBjw6J5ICh0cmVlKSBsw6BtIHZp4buHYyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9sb2cuYzozNwotbXNnaWQgImdpdCBsb2cgWzxvcHRpb25zPl0gWzxzaW5jZT4uLjx1bnRpbD5dIFtbLS1dIDxwYXRoPi4uLl1cbiIKLW1zZ3N0ciAiZ2l0IGxvZyBbPGPDoWMtdMO5eS1jaOG7jW4+XSBbPGvhu4MtdOG7qz4uLjxjaG8txJHhur9uPl0gW1stLV0gPMSRxrDhu51uZy1k4bqrbj4uLi5dXG4iCisjOiBidWlsdGluL2xvZy5jOjQwCittc2dpZCAiZ2l0IGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gPHBhdGg+Li4uXVxuIgorbXNnc3RyICJnaXQgbG9nIFs8Y8OhYy10w7l5LWNo4buNbj5dIFs8dsO5bmcgeGVtIHjDqXQ+XSBbWy0tXSA8xJHGsOG7nW5nLWThuqtuPi4uLl1cbiIKIAotIzogYnVpbHRpbi9sb2cuYzozOAorIzogYnVpbHRpbi9sb2cuYzo0MQogbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCi1tc2dzdHIgIiAgIG9yOiBnaXQgc2hvdyBbY8OhYy10w7l5LWNo4buNbl0gPMSR4buRaS10xrDhu6NuZz4uLi4iCittc2dzdHIgIiAgaGF5OiBnaXQgc2hvdyBbY8OhYy10w7l5LWNo4buNbl0gPMSR4buRaS10xrDhu6NuZz4uLi4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTAwCisjOiBidWlsdGluL2xvZy5jOjEwMwogbXNnaWQgInN1cHByZXNzIGRpZmYgb3V0cHV0IgogbXNnc3RyICJjaOG6t24gbeG7jWkga+G6v3QgeHXhuqV0IHThu6sgZGlmZiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDEKKyM6IGJ1aWx0aW4vbG9nLmM6MTA0CiBtc2dpZCAic2hvdyBzb3VyY2UiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBtw6Mgbmd14buTbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTA1Cittc2dpZCAiVXNlIG1haWwgbWFwIGZpbGUiCittc2dzdHIgIlPhu60gZOG7pW5nIHThuq1wIHRpbiDDoW5oIHjhuqEgdGjGsCIKKworIzogYnVpbHRpbi9sb2cuYzoxMDYKIG1zZ2lkICJkZWNvcmF0ZSBvcHRpb25zIgogbXNnc3RyICJjw6FjIHTDuXkgY2jhu41uIHRyYW5nIHRyw60iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTg5CisjOiBidWlsdGluL2xvZy5jOjE5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIkvhur90IHh14bqldCBjdeG7kWkgY8O5bmc6ICVkICVzXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NDA1IGJ1aWx0aW4vbG9nLmM6NDk3CisjOiBidWlsdGluL2xvZy5jOjQyMiBidWlsdGluL2xvZy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjUyMQorIzogYnVpbHRpbi9sb2cuYzo1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biB0eXBlOiAlZCIKIG1zZ3N0ciAiS2jDtG5nIG5o4bqtbiByYSBraeG7g3U6ICVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYxMworIzogYnVpbHRpbi9sb2cuYzo2MzgKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyBraMO0bmcgY8OzIGdpw6EgdHLhu4sgY+G7pSB0aOG7gyIKIAotIzogYnVpbHRpbi9sb2cuYzo2ODcKKyM6IGJ1aWx0aW4vbG9nLmM6NzIwCiBtc2dpZCAibmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5IGlzIHRvbyBsb25nIgogbXNnc3RyICJ0w6puIGPhu6dhIHRoxrAgbeG7pWMga+G6v3QgeHXhuqV0IHF1w6EgZMOgaSIKIAotIzogYnVpbHRpbi9sb2cuYzo2OTgKKyM6IGJ1aWx0aW4vbG9nLmM6NzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIHBhdGNoIGZpbGUgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIHThuq1wIHRpbiBtaeG6v25nIHbDoTogJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzEyCisjOiBidWlsdGluL2xvZy5jOjc1MAogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICJD4bqnbiBjaMOtbmggeMOhYyBt4buZdCB2w7luZy4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwCisjOiBidWlsdGluL2xvZy5jOjc1OAogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiS2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdsO5bmcuIgogCi0jOiBidWlsdGluL2xvZy5jOjc5NAorIzogYnVpbHRpbi9sb2cuYzo4NjAKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgogbXNnc3RyICLigJ1Db3ZlciBsZXR0ZXLigJ0gY+G6p24gY2hvIMSR4buLbmggZOG6oW5nIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODY3CisjOiBidWlsdGluL2xvZy5jOjkzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmUgaW4tcmVwbHktdG86ICVzIgogbXNnc3RyICJpbi1yZXBseS10byDEkWnDqm4gcuG7kzogJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODk1CisjOiBidWlsdGluL2xvZy5jOjk2NAogbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCiBtc2dzdHIgImdpdCBmb3JtYXQtcGF0Y2ggW2PDoWMtdMO5eS1jaOG7jW5dIFs8a+G7gy104burPiB8IDx2w7luZy14ZW0teMOpdD5dIgogCi0jOiBidWlsdGluL2xvZy5jOjk0MAorIzogYnVpbHRpbi9sb2cuYzoxMDA5CiBtc2dpZCAiVHdvIG91dHB1dCBkaXJlY3Rvcmllcz8iCiBtc2dzdHIgIkhhaSB0aMawIG3hu6VjIGvhur90IHh14bqldD8iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA2OAorIzogYnVpbHRpbi9sb2cuYzoxMTA4CiBtc2dpZCAidXNlIFtQQVRDSCBuL21dIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaCIKIG1zZ3N0ciAiZMO5bmcgW1BBVENIIG4vbV0gbmdheSBj4bqjIHbhu5tpIG1p4bq/bmcgdsOhIMSRxqFuIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNzEKKyM6IGJ1aWx0aW4vbG9nLmM6MTExMQogbXNnaWQgInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIgogbXNnc3RyICJkw7luZyBbVsOBXSBuZ2F5IGPhuqMgduG7m2kgY8OhYyBtaeG6v25nIHbDoSBwaOG7qWMgdOG6oXAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3NQorIzogYnVpbHRpbi9sb2cuYzoxMTE1CiBtc2dpZCAicHJpbnQgcGF0Y2hlcyB0byBzdGFuZGFyZCBvdXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBtaeG6v25nIHbDoSByYSDEkeG6p3UgcmEgY2h14bqpbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDc3CisjOiBidWlsdGluL2xvZy5jOjExMTcKIG1zZ2lkICJnZW5lcmF0ZSBhIGNvdmVyIGxldHRlciIKIG1zZ3N0ciAidOG6oW8gYsOsIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA3OQorIzogYnVpbHRpbi9sb2cuYzoxMTE5CiBtc2dpZCAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIgogbXNnc3RyICJz4butIGThu6VuZyBjaOG7l2kgZMOjeSBz4buRIGThuqFuZyDEkcahbiBnaeG6o24gY2hvIHTDqm4gdOG6rXAtdGluIHh14bqldCByYSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDgwCisjOiBidWlsdGluL2xvZy5jOjExMjAKIG1zZ2lkICJzZngiCiBtc2dzdHIgInNmeCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDgxCisjOiBidWlsdGluL2xvZy5jOjExMjEKIG1zZ2lkICJ1c2UgPHNmeD4gaW5zdGVhZCBvZiAnLnBhdGNoJyIKIG1zZ3N0ciAic+G7rSBk4bulbmcgPHNmeD4gdGhheSBjaG8g4oCcLnBhdGNo4oCdIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODMKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMwogbXNnaWQgInN0YXJ0IG51bWJlcmluZyBwYXRjaGVzIGF0IDxuPiBpbnN0ZWFkIG9mIDEiCiBtc2dzdHIgImLhuq90IMSR4bqndSDEkcOhbmggc+G7kSBtaeG6v25nIHbDoSB04burIDxuPiB0aGF5IHbDrCAxIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODUKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNQorbXNnaWQgIm1hcmsgdGhlIHNlcmllcyBhcyBOdGggcmUtcm9sbCIKK21zZ3N0ciAixJHDoW5oIGThuqV1IGNodeG7l2kgbuG7kWkgdGnhur9wIGThuqFuZyB0aOG7qS1OIHJlLXJvbGwiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyNwogbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKIG1zZ3N0ciAiRMO5bmcgWzx0aeG7gW4tdOG7kT5dIHRoYXkgY2hvIFtWw4FdIgogCi0jOiBidWlsdGluL2xvZy5jOjEwODgKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMAogbXNnaWQgInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIKIG1zZ3N0ciAibMawdSBjw6FjIHThuq1wIHRpbiBr4bq/dCBxdeG6oyB0cm9uZyA8dC5t4bulYz4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA5MQorIzogYnVpbHRpbi9sb2cuYzoxMTMzCiBtc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCiBtc2dzdHIgImtow7RuZyBzdHJpcC9hZGQgW1bDgV0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA5NAorIzogYnVpbHRpbi9sb2cuYzoxMTM2CiBtc2dpZCAiZG9uJ3Qgb3V0cHV0IGJpbmFyeSBkaWZmcyIKIG1zZ3N0ciAia2jDtG5nIGvhur90IHh14bqldCBkaWZmIChuaOG7r25nIGtow6FjIGJp4buHdCkgbmjhu4sgcGjDom4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTA5NgorIzogYnVpbHRpbi9sb2cuYzoxMTM4CiBtc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgogbXNnc3RyICJraMO0bmcgYmFvIGfhu5NtIG1p4bq/bmcgdsOhIGto4bubcCB24bubaSBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIHRoxrDhu6NuZyBuZ3Xhu5NuIgogCi0jOiBidWlsdGluL2xvZy5jOjEwOTgKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MAogbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIMSR4buLbmggZOG6oW5nIG1p4bq/bmcgdsOhIHRoYXkgdsOsIG3hurdjIMSR4buLbmggKG1p4bq/bmcgdsOhICsgdGjhu5FuZyBrw6opIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDAKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MgogbXNnaWQgIk1lc3NhZ2luZyIKIG1zZ3N0ciAiTOG7nWkgbmjhuq9uIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDEKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MwogbXNnaWQgImhlYWRlciIKIG1zZ3N0ciAixJHhuqd1IMSR4buBIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMgorIzogYnVpbHRpbi9sb2cuYzoxMTQ0CiBtc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKIG1zZ3N0ciAidGjDqm0gxJHhuqd1IMSR4buBIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMyBidWlsdGluL2xvZy5jOjExMDUKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKIG1zZ2lkICJlbWFpbCIKIG1zZ3N0ciAidGjGsCDEkWnhu4duIHThu60iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwMworIzogYnVpbHRpbi9sb2cuYzoxMTQ1CiBtc2dpZCAiYWRkIFRvOiBoZWFkZXIiCiBtc2dzdHIgInRow6ptIFRvOiDEkeG6p3UgxJHhu4EgdGjGsCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTA1CisjOiBidWlsdGluL2xvZy5jOjExNDcKIG1zZ2lkICJhZGQgQ2M6IGhlYWRlciIKIG1zZ3N0ciAidGjDqm0gQ2M6IMSR4bqndSDEkeG7gSB0aMawIgogCi0jOiBidWlsdGluL2xvZy5jOjExMDcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0OQogbXNnaWQgIm1lc3NhZ2UtaWQiCiBtc2dzdHIgIm1lc3NhZ2UtaWQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwOAorIzogYnVpbHRpbi9sb2cuYzoxMTUwCiBtc2dpZCAibWFrZSBmaXJzdCBtYWlsIGEgcmVwbHkgdG8gPG1lc3NhZ2UtaWQ+IgogbXNnc3RyICJkw7luZyB0aMawIMSR4bqndSB0acOqbiDEkeG7gyB0cuG6oyBs4budaSA8bWVzc2FnZS1pZD4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwOSBidWlsdGluL2xvZy5jOjExMTIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1MSBidWlsdGluL2xvZy5jOjExNTQKIG1zZ2lkICJib3VuZGFyeSIKIG1zZ3N0ciAicmFuaCBnaeG7m2kiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExMAorIzogYnVpbHRpbi9sb2cuYzoxMTUyCiBtc2dpZCAiYXR0YWNoIHRoZSBwYXRjaCIKIG1zZ3N0ciAixJHDrW5oIGvDqG0gbWnhur9uZyB2w6EiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExMworIzogYnVpbHRpbi9sb2cuYzoxMTU1CiBtc2dpZCAiaW5saW5lIHRoZSBwYXRjaCIKIG1zZ3N0ciAiZMO5bmcgbWnhur9uZyB2w6EgbMOgbSBu4buZaSBkdW5nIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1OQogbXNnaWQgImVuYWJsZSBtZXNzYWdlIHRocmVhZGluZywgc3R5bGVzOiBzaGFsbG93LCBkZWVwIgogbXNnc3RyICJjaG8gcGjDqXAgbHXhu5NuZyBs4budaSBuaOG6r24sIGtp4buDdTog4oCcc2hhbGxvd+KAnSwg4oCcZGVlcOKAnSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTE5CisjOiBidWlsdGluL2xvZy5jOjExNjEKIG1zZ2lkICJzaWduYXR1cmUiCiBtc2dzdHIgImNo4buvIGvDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIwCisjOiBidWlsdGluL2xvZy5jOjExNjIKIG1zZ2lkICJhZGQgYSBzaWduYXR1cmUiCiBtc2dzdHIgInRow6ptIGNo4buvIGvDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIyCisjOiBidWlsdGluL2xvZy5jOjExNjQKIG1zZ2lkICJkb24ndCBwcmludCB0aGUgcGF0Y2ggZmlsZW5hbWVzIgogbXNnc3RyICJraMO0bmcgaGnhu4NuIHRo4buLIGPDoWMgdMOqbiB04bqtcCB0aW4gY+G7p2EgbWnhur9uZyB2w6EiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2MwotIywgYy1mb3JtYXQKLW1zZ2lkICJib2d1cyBjb21taXR0ZXIgaW5mbyAlcyIKLW1zZ3N0ciAidGjDtG5nIHRpbiBuZ8aw4budaSBjaHV54buDbiBnaWFvIGtow7RuZyBjw7MgdGjhu7FjICVzIgotCi0jOiBidWlsdGluL2xvZy5jOjEyMDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI0OAogbXNnaWQgIi1uIGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLW4gdsOgICAtayBsb+G6oWkgdOG7qyBs4bqrbiBuaGF1LiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjEwCisjOiBidWlsdGluL2xvZy5jOjEyNTAKIG1zZ2lkICItLXN1YmplY3QtcHJlZml4IGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLS1zdWJqZWN0LXByZWZpeCB2w6AgLWsgeHVuZyBraOG6r2MgbmhhdS4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIxOAorIzogYnVpbHRpbi9sb2cuYzoxMjU4CiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1uYW1lLW9ubHkga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjIwCisjOiBidWlsdGluL2xvZy5jOjEyNjAKIG1zZ2lkICItLW5hbWUtc3RhdHVzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tbmFtZS1zdGF0dXMga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjIyCisjOiBidWlsdGluL2xvZy5jOjEyNjIKIG1zZ2lkICItLWNoZWNrIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tY2hlY2sga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjQ1CisjOiBidWlsdGluL2xvZy5jOjEyODUKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAixJHhuqd1IHJhIGNodeG6qW4sIGhheSB0aMawIG3hu6VjLCBjaOG7jW4gY8OhaSBuw6BvPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjQ3CisjOiBidWlsdGluL2xvZy5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHThuqFvIHRoxrAgbeG7pWMg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQwMAorIzogYnVpbHRpbi9sb2cuYzoxNDM1CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgZmlsZXMiCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB04bqhbyBjw6FjIHThuq1wIHRpbiBr4bq/dCB4deG6pXQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQ0OQorIzogYnVpbHRpbi9sb2cuYzoxNDg0CiBtc2dpZCAiZ2l0IGNoZXJyeSBbLXZdIFs8dXBzdHJlYW0+IFs8aGVhZD4gWzxsaW1pdD5dXV0iCiBtc2dzdHIgImdpdCBjaGVycnkgWy12XSBbPHRoxrDhu6NuZy1uZ3Xhu5NuPiBbPGhlYWQ+IFs8Z2nhu5tpLWjhuqFuPl1dXSIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTA0CisjOiBidWlsdGluL2xvZy5jOjE1MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBmaW5kIGEgdHJhY2tlZCByZW1vdGUgYnJhbmNoLCBwbGVhc2Ugc3BlY2lmeSA8dXBzdHJlYW0+IG1hbnVhbGx5LlxuIgpAQCAtNTYyOCwxMDMgKzYxMDYsMTAzIEBACiAiS2jDtG5nIHTDrG0gdGjhuqV5IG5ow6FuaCBt4bqhbmcgYuG7iyB0aGVvIHbhur90LCBow6N5IGNo4buJIMSR4buLbmggPHRoxrDhu6NuZy1uZ3Xhu5NuPiBt4buZdCBjw6FjaCAiCiAidGjhu6cgY8O0bmcuXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTUxNyBidWlsdGluL2xvZy5jOjE1MTkgYnVpbHRpbi9sb2cuYzoxNTMxCisjOiBidWlsdGluL2xvZy5jOjE1NTIgYnVpbHRpbi9sb2cuYzoxNTU0IGJ1aWx0aW4vbG9nLmM6MTU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIGNvbW1pdCAlcyIKIG1zZ3N0ciAiS2jDtG5nIGhp4buDdSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDA4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDAyCiBtc2dpZCAiZ2l0IGxzLWZpbGVzIFtvcHRpb25zXSBbPGZpbGU+Li4uXSIKIG1zZ3N0ciAiZ2l0IGxzLWZpbGVzIFtjw6FjLXTDuXktY2jhu41uXSBbPHThuq1wLXRpbj4uLi5dIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDYzCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDU5CiBtc2dpZCAiaWRlbnRpZnkgdGhlIGZpbGUgc3RhdHVzIHdpdGggdGFncyIKIG1zZ3N0ciAibmjhuq1uIGThuqFuZyBjw6FjIHRy4bqhbmcgdGjDoWkgdOG6rXAgdGluIHbhu5tpIHRo4bq7IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDY1CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCiBtc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCiBtc2dzdHIgIiIKICJkw7luZyBjaOG7ryBjw6FpIHZp4bq/dCB0aMaw4budbmcgY2hvIGPDoWMgdOG6rXAgdGluIOKAnGFzc3VtZSB1bmNoYW5nZWTigJ0gKGdp4bqjIMSR4buLbmgga2jDtG5nICIKICJ0aGF5IMSR4buVaSkiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKIG1zZ2lkICJzaG93IGNhY2hlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IChkZWZhdWx0KSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIMSRxrDhu6NjIG5o4bubIHThuqFtIHbDoG8gxJHhuqd1IHJhICht4bq3YyDEkeG7i25oKSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2OQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQogbXNnaWQgInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4gxJHDoyB4w7NhIHRyb25nIGvhur90IHh14bqldCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NwogbXNnaWQgInNob3cgbW9kaWZpZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIMSRw6MgYuG7iyBz4butYSDEkeG7lWkgcmEga+G6v3QgeHXhuqV0IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDczCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5CiBtc2dpZCAic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4ga2jDoWMgdHJvbmcga+G6v3QgeHXhuqV0IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc1CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDcxCiBtc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBi4buLIGLhu48gcXVhIHRyb25nIGvhur90IHh14bqldCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3OAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NAogbXNnaWQgInNob3cgc3RhZ2VkIGNvbnRlbnRzJyBvYmplY3QgbmFtZSBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgdMOqbiDEkeG7kWkgdMaw4bujbmcgY+G7p2EgbuG7mWkgZHVuZyDEkcaw4bujYyBsxrB1IHRy4bqhbmcgdGjDoWkg4bufIGvhur90IHh14bqldCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NgogbXNnaWQgInNob3cgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluIG3DoCBuw7MgY+G6p24gxJHGsOG7o2MgZ+G7oSBi4buPIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDgyCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4CiBtc2dpZCAic2hvdyAnb3RoZXInIGRpcmVjdG9yaWVzJyBuYW1lIG9ubHkiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyB0w6puIGPhu6dhIGPDoWMgdGjGsCBt4bulYyDigJxraMOhY+KAnSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQogbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCiBtc2dzdHIgImtow7RuZyBoaeG7g24gdGjhu4sgdGjGsCBt4bulYyBy4buXbmciCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODQKIG1zZ2lkICJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBjaMawYSBow7JhIHRy4buZbiB0cm9uZyBr4bq/dCB4deG6pXQiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTAKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODYKIG1zZ2lkICJzaG93IHJlc29sdmUtdW5kbyBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRow7RuZyB0aW4gcmVzb2x2ZS11bmRvIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDkyCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg4CiBtc2dpZCAic2tpcCBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIgogbXNnc3RyICJi4buPIHF1YSBuaOG7r25nIHThuq1wIHRpbiBraOG7m3AgduG7m2kgbeG7mXQgbeG6q3UiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTUKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTEKIG1zZ2lkICJleGNsdWRlIHBhdHRlcm5zIGFyZSByZWFkIGZyb20gPGZpbGU+IgogbXNnc3RyICJt4bqrdSBsb+G6oWkgdHLhu6sgxJHGsOG7o2MgxJHhu41jIHThu6sgPHThuq1wIHRpbj4iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTQKIG1zZ2lkICJyZWFkIGFkZGl0aW9uYWwgcGVyLWRpcmVjdG9yeSBleGNsdWRlIHBhdHRlcm5zIGluIDxmaWxlPiIKIG1zZ3N0ciAixJHhu41jIHRow6ptIGPDoWMgbeG6q3Ugbmdv4bqhaSB0cuG7qyBt4buXaSB0aMawIG3hu6VjIHRyb25nIDx04bqtcCB0aW4+IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTAwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk2CiBtc2dpZCAiYWRkIHRoZSBzdGFuZGFyZCBnaXQgZXhjbHVzaW9ucyIKIG1zZ3N0ciAidGjDqm0gbG/huqFpIHRy4burIHRpw6p1IGNodeG6qW4ga2nhu4N1IGdpdCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OQogbXNnaWQgIm1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCB0b3AgZGlyZWN0b3J5IgogbXNnc3RyICJsw6BtIGNobyBr4bq/dCB4deG6pXQgbGnDqm4gcXVhbiDEkeG6v24gdGjGsCBt4bulYyDhu58gbeG7qWMgY2FvIG5o4bqldCAoZ+G7kWMpIGPhu6dhIGThu7Egw6FuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCiBtc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgogbXNnc3RyICJu4bq/dSA8dOG6rXAgdGluPiBi4bqldCBr4buzIGtow7RuZyDhu58gdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjLCB44butIGzDvSBuw7MgbmjGsCBt4buZdCBs4buXaSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMwogbXNnaWQgInRyZWUtaXNoIgogbXNnc3RyICJ0cmVlLWlzaCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOAorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNAogbXNnaWQgInByZXRlbmQgdGhhdCBwYXRocyByZW1vdmVkIHNpbmNlIDx0cmVlLWlzaD4gYXJlIHN0aWxsIHByZXNlbnQiCiBtc2dzdHIgIiIKICJnaeG6oyDEkeG7i25oIHLhurFuZyBjw6FjIMSRxrDhu51uZyBk4bqrbiDEkcOjIGLhu4sgZ+G7oSBi4buPIGvhu4MgdOG7qyA8dHJlZS1pc2g+IG5heSB24bqrbiBoaeG7h24gZGnhu4duIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTEwCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CiBtc2dpZCAic2hvdyBkZWJ1Z2dpbmcgZGF0YSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGThu68gbGnhu4d1IGfhu6EgbOG7l2kiCiAKQEAgLTU3NzgsNyArNjI1Niw3IEBACiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzo5MAogbXNnaWQgInN3aXRjaCBgbScgcmVxdWlyZXMgYSB2YWx1ZSIKLW1zZ3N0ciAic3dpdGNoIGBtJyB5w6p1IGPhuqd1IG3hu5l0IGdpw6EgdHLhu4siCittc2dzdHIgInN3aXRjaCDigJxt4oCdIHnDqnUgY+G6p3UgbeG7mXQgZ2nDoSB0cuG7iyIKIAogIzogYnVpbHRpbi9tZXJnZS5jOjEyNwogIywgYy1mb3JtYXQKQEAgLTU4MzEsMTc2ICs2MzA5LDE4MSBAQAogbXNnaWQgImFib3J0IGlmIGZhc3QtZm9yd2FyZCBpcyBub3QgcG9zc2libGUiCiBtc2dzdHIgImLhu48gcXVhIG7hur91IGZhc3QtZm9yd2FyZCBraMO0bmcgdGjhu4MgxJHGsOG7o2MiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDIgYnVpbHRpbi9ub3Rlcy5jOjg3MCBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9tZXJnZS5jOjIwMworbXNnaWQgIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIKK21zZ3N0ciAiVGjhuqltIHRyYSB4ZW0gbOG6p24gY2h1eeG7g24gZ2lhbyBjw7MgdMOqbiDEkcOzIGPDsyBjaOG7ryBrw70gR1BHIGjhu6NwIGzhu4cgaGF5IGtow7RuZyIKKworIzogYnVpbHRpbi9tZXJnZS5jOjIwNCBidWlsdGluL25vdGVzLmM6ODY2IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCiBtc2dpZCAic3RyYXRlZ3kiCiBtc2dzdHIgImNoaeG6v24gbMaw4bujYyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwMworIzogYnVpbHRpbi9tZXJnZS5jOjIwNQogbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKIG1zZ3N0ciAiY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIHPhur0gZMO5bmciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDYKIG1zZ2lkICJvcHRpb249dmFsdWUiCiBtc2dzdHIgInTDuXlfY2jhu41uPWdpw6FfdHLhu4siCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKIG1zZ2lkICJvcHRpb24gZm9yIHNlbGVjdGVkIG1lcmdlIHN0cmF0ZWd5IgogbXNnc3RyICJ0w7l5IGNo4buNbiBjaG8gY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIMSRw6MgY2jhu41uIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA3CisjOiBidWlsdGluL21lcmdlLmM6MjA5CiBtc2dpZCAibWVyZ2UgY29tbWl0IG1lc3NhZ2UgKGZvciBhIG5vbi1mYXN0LWZvcndhcmQgbWVyZ2UpIgogbXNnc3RyICIiCiAiaMOyYSB0cuG7mW4gZ2hpIGNow7ogY+G7p2EgbOG6p24gY2h1eeG7g24gZ2lhbyAoZMOgbmggY2hvIGjDsmEgdHLhu5luIG5vbi1mYXN0LWZvcndhcmQpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjExCisjOiBidWlsdGluL21lcmdlLmM6MjEzCiBtc2dpZCAiYWJvcnQgdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgbWVyZ2UiCiBtc2dzdHIgImLDo2kgYuG7jyBxdcOhIHRyw6xuaCBow7JhIHRy4buZbiBoaeG7h24gdOG6oWkgxJFhbmcgdGjhu7FjIGhp4buHbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0MAorIzogYnVpbHRpbi9tZXJnZS5jOjI0MgogbXNnaWQgImNvdWxkIG5vdCBydW4gc3Rhc2guIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY2jhuqF5IHN0YXNoLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0NQorIzogYnVpbHRpbi9tZXJnZS5jOjI0NwogbXNnaWQgInN0YXNoIGZhaWxlZCIKIG1zZ3N0ciAic3Rhc2ggZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGEgdmFsaWQgb2JqZWN0OiAlcyIKIG1zZ3N0ciAia2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nIGjhu6NwIGzhu4c6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjY5IGJ1aWx0aW4vbWVyZ2UuYzoyODYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNzEgYnVpbHRpbi9tZXJnZS5jOjI4OAogbXNnaWQgInJlYWQtdHJlZSBmYWlsZWQiCiBtc2dzdHIgInJlYWQtdHJlZSBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMxNgorIzogYnVpbHRpbi9tZXJnZS5jOjMxOAogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIgKGtow7RuZyBjw7MgZ8OsIMSR4buDIHNxdWFzaCkiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMjkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCAtLSBub3QgdXBkYXRpbmcgSEVBRFxuIgogbXNnc3RyICJTcXVhc2ggY29tbWl0IC0tIGtow7RuZyBj4bqtcCBuaOG6rXQgSEVBRFxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYxCisjOiBidWlsdGluL21lcmdlLmM6MzYzCiBtc2dpZCAiV3JpdGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICLEkGFuZyBnaGkgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2MworIzogYnVpbHRpbi9tZXJnZS5jOjM2NQogbXNnaWQgIkZpbmlzaGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICJIb8OgbiB0aMOgbmggU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM4NgorIzogYnVpbHRpbi9tZXJnZS5jOjM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIktow7RuZyB0aMO0bmcgxJFp4buHcCBow7JhIHRy4buZbiAtLSBraMO0bmcgY+G6rXAgbmjhuq10IEhFQURcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjQzNgorIzogYnVpbHRpbi9tZXJnZS5jOjQzOAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgY29tbWl0IgogbXNnc3RyICLigJwlc+KAnSBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyBj4bqjIgogCi0jOiBidWlsdGluL21lcmdlLmM6NTM1CisjOiBidWlsdGluL21lcmdlLmM6NTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBicmFuY2guJXMubWVyZ2VvcHRpb25zIHN0cmluZzogJXMiCiBtc2dzdHIgIkNodeG7l2kgYnJhbmNoLiVzLm1lcmdlb3B0aW9ucyBzYWk6ICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjI4CisjOiBidWlsdGluL21lcmdlLmM6NjQzCiBtc2dpZCAiZ2l0IHdyaXRlLXRyZWUgZmFpbGVkIHRvIHdyaXRlIGEgdHJlZSIKIG1zZ3N0ciAibOG7h25oIGdpdCB3cml0ZS10cmVlIGfhurdwIGzhu5dpIGtoaSBnaGkgbeG7mXQgY8OieSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY1NgorIzogYnVpbHRpbi9tZXJnZS5jOjY3MQogbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIktow7RuZyBj4bqnbSBu4bqvbSBnw6wgbmdvw6BpIGhhaSBoZWFkIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjcwCisjOiBidWlsdGluL21lcmdlLmM6Njg1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gb3B0aW9uIGZvciBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiBtc2dzdHIgIktow7RuZyBoaeG7g3UgdMO5eSBjaOG7jW4gY2hvIG1lcmdlLXJlY3Vyc2l2ZTogLVglcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY4NAorIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3NzMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgZnJvbSAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jIHThu6sg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3ODIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGNvbW1pdHRpbmcgbWVyZ2U7IHVzZSAnZ2l0IGNvbW1pdCcgdG8gY29tcGxldGUgdGhlIG1lcmdlLlxuIgogbXNnc3RyICIiCiAiVuG6q24gY2jGsGEgaMOyYSB0cuG7mW4gY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpOyBz4butIGThu6VuZyBs4buHbmgg4oCcZ2l0IGNvbW1pdOKAnSDEkeG7gyAiCiAiaG/DoG4gdOG6pXQgdmnhu4djIGjDsmEgdHLhu5luLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6Nzg4CisjOiBidWlsdGluL21lcmdlLmM6ODAzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgYSBjb21taXQgbWVzc2FnZSB0byBleHBsYWluIHdoeSB0aGlzIG1lcmdlIGlzIG5lY2Vzc2FyeSxcbiIKICJlc3BlY2lhbGx5IGlmIGl0IG1lcmdlcyBhbiB1cGRhdGVkIHVwc3RyZWFtIGludG8gYSB0b3BpYyBicmFuY2guXG4iCiAiXG4iCi0iTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHNcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHNcbiIKICJ0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCiAiSMOjeSBuaOG6rXAgdsOgbyBjw6FjIHRow7RuZyB0aW4gxJHhu4MgZ2nhuqNpIHRow61jaCB04bqhaSBzYW8gc+G7sSBow7JhIHRy4buZbiBuw6B5IGzDoCBj4bqnbiAiCiAidGhp4bq/dCxcbiIKLSLEkeG6t2MgYmnhu4d0IGzDoCBraGkgbsOzIGjDsmEgdHLhu5luIHRoxrDhu6NuZyBuZ3Xhu5NuIMSRw6MgY+G6rXAgbmjhuq10IHbDoG8gdHJvbmcgbeG7mXQgbmjDoW5oICIKKyLEkeG6t2MgYmnhu4d0IGzDoCBraGkgbsOzIGjDsmEgdHLhu5luIG5nxrDhu6NjIGTDsm5nIMSRw6MgY+G6rXAgbmjhuq10IHbDoG8gdHJvbmcgbeG7mXQgbmjDoW5oICIKICJ0b3BpYy5cbiIKICJcbiIKLSJOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcg4oCcI+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLCB2w6AgcGjhuqduIGNow7ogdGjDrWNoIG7DoHkgbuG6v3UgIgorIk5o4buvbmcgZMOybmcgxJHGsOG7o2MgYuG6r3QgxJHhuqd1IGLhurFuZyDigJwlY+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLCB2w6AgcGjhuqduIGNow7ogdGjDrWNoIG7DoHkgbuG6v3UgIgogInLhu5duZ1xuIgotInPhur0gbMOgbSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCisic+G6vSBo4buneSBi4buPIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjcKIG1zZ2lkICJFbXB0eSBjb21taXQgbWVzc2FnZS4iCiBtc2dzdHIgIkNow7ogdGjDrWNoIGPhu6dhIGzhuqduIGNvbW1pdCAoY2h1eeG7g24gZ2lhbykgYuG7iyB0cuG7kW5nIHLhu5duZy4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICJUaOG6p24ga+G7sy5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg4OQorIzogYnVpbHRpbi9tZXJnZS5jOjkwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LlxuIgogbXNnc3RyICIiCiAiVmnhu4djIHThu7EgxJHhu5luZyBow7JhIHRy4buZbiBn4bq3cCBs4buXaTsgaMOjeSBz4butYSBjw6FjIHh1bmcgxJHhu5l0IHNhdSDEkcOzIGNodXnhu4NuIGdpYW8gIgogIihjb21taXQpIGvhur90IHF14bqjLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTA1CisjOiBidWlsdGluL21lcmdlLmM6OTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICIlcyBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBs4bqnbiBjb21taXQgKGNodXnhu4NuIGdpYW8pIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTQ2CisjOiBidWlsdGluL21lcmdlLmM6OTYxCiBtc2dpZCAiTm8gY3VycmVudCBicmFuY2guIgogbXNnc3RyICJraMO0bmcgcGjhuqNpIG5ow6FuaCBoaeG7h24gaMOgbmgiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NDgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjMKIG1zZ2lkICJObyByZW1vdGUgZm9yIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIktow7RuZyBjw7MgbcOheSBjaOG7pyBjaG8gbmjDoW5oIGhp4buHbiBow6BuaC4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjUKIG1zZ2lkICJObyBkZWZhdWx0IHVwc3RyZWFtIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIktow7RuZyBjw7MgdGjGsOG7o25nIG5ndeG7k24gbeG6t2MgxJHhu4tuaCDEkcaw4bujYyDEkeG7i25oIG5naMSpYSBjaG8gbmjDoW5oIGhp4buHbiBow6BuaC4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NTUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiS2jDtG5nIG5ow6FuaCBt4bqhbmcgdGhlbyB24bq/dCBjaG8gJXMgdOG7qyAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNDIgYnVpbHRpbi9tZXJnZS5jOjExOTkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDU3IGJ1aWx0aW4vbWVyZ2UuYzoxMjE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIC0gbm90IHNvbWV0aGluZyB3ZSBjYW4gbWVyZ2UiCiBtc2dzdHIgIiVzIC0ga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgc+G7kSB0aOG7qSBjaMO6bmcgdMO0aSBjw7MgdGjhu4MgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTEwCisjOiBidWlsdGluL21lcmdlLmM6MTEyNQogbXNnaWQgIlRoZXJlIGlzIG5vIG1lcmdlIHRvIGFib3J0IChNRVJHRV9IRUFEIG1pc3NpbmcpLiIKIG1zZ3N0ciAiIgogIuG7niDEkcOieSBraMO0bmcgY8OzIGzhuqduIGjDsmEgdHLhu5luIG7DoG8gxJHGsOG7o2MgaOG7p3kgYuG7jyBnaeG7r2EgY2jhu6tuZyBj4bqjICh0aGnhur91IE1FUkdFX0hFQUQpLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMjYgZ2l0LXB1bGwuc2g6MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQxIGdpdC1wdWxsLnNoOjMxCiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCkBAIC02MDA4LDExICs2NDkxLDExIEBACiAiQuG6oW4gY2jGsGEga+G6v3QgdGjDumMgdmnhu4djIGjDsmEgdHLhu5luZyAoTUVSR0VfSEVBRCB24bqrbiB04buTbiB04bqhaSkuXG4iCiAiSMOjeSBjaHV54buDbiBnaWFvIChjb21taXQpIGPDoWMgdGhheSDEkeG7lWkgdHLGsOG7m2Mga2hpIGLhuqFuIGPDsyB0aOG7gyBow7JhIHRy4buZbi4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTI5IGdpdC1wdWxsLnNoOjM0CisjOiBidWlsdGluL21lcmdlLmM6MTE0NCBnaXQtcHVsbC5zaDozNAogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiQuG6oW4gY2jGsGEga+G6v3QgdGjDumMgdmnhu4djIGjDsmEgdHLhu5luZyAoTUVSR0VfSEVBRCB24bqrbiB04buTbiB04bqhaSkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTEzMworIzogYnVpbHRpbi9tZXJnZS5jOjExNDgKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKQEAgLTYwMjAsODUgKzY1MDMsMTA3IEBACiAiQuG6oW4gY2jGsGEga+G6v3QgdGjDumMgdmnhu4djIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIHbhuqtuIHThu5NuIHThuqFpKS5cbiIKICJIw6N5IGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY8OhYyB0aGF5IMSR4buVaSB0csaw4bubYyBraGkgYuG6oW4gY8OzIHRo4buDIGjDsmEgdHLhu5luLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExMzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTUxCiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuIgogbXNnc3RyICJC4bqhbiBjaMawYSBr4bq/dCB0aMO6YyB2aeG7h2MgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgduG6q24gdOG7k24gdOG6oWkpLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTYwCiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tc3F1YXNoIHdpdGggLS1uby1mZi4iCiBtc2dzdHIgIkLhuqFuIGtow7RuZyB0aOG7gyBr4bq/dCBo4bujcCAtLXNxdWFzaCB24bubaSAtLW5vLWZmLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTY1CiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tbm8tZmYgd2l0aCAtLWZmLW9ubHkuIgogbXNnc3RyICJC4bqhbiBraMO0bmcgdGjhu4Mga+G6v3QgaOG7o3AgLS1uby1mZiB24bubaSAtLWZmLW9ubHkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE1NworIzogYnVpbHRpbi9tZXJnZS5jOjExNzIKIG1zZ2lkICJObyBjb21taXQgc3BlY2lmaWVkIGFuZCBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbSBub3Qgc2V0LiIKIG1zZ3N0ciAiIgogIktow7RuZyBjaOG7iSByYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIHbDoCBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbSBjaMawYSDEkcaw4bujYyAiCiAixJHhurd0LiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA0CiBtc2dpZCAiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogIktow7RuZyB0aOG7gyBow7JhIHRy4buZbiBt4buZdCBjw6FjaCDEkcO6bmcgxJHhuq9uIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgdsOgbyBt4buZdCAiCiAiaGVhZCBy4buXbmciCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTkyCisjOiBidWlsdGluL21lcmdlLmM6MTIwNwogbXNnaWQgIlNxdWFzaCBjb21taXQgaW50byBlbXB0eSBoZWFkIG5vdCBzdXBwb3J0ZWQgeWV0IgogbXNnc3RyICJTcXVhc2ggY29tbWl0IHbDoG8gbeG7mXQgaGVhZCB0cuG7kW5nIHLhu5duZyB24bqrbiBjaMawYSDEkcaw4bujYyBo4buXIHRy4bujIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE5NAorIzogYnVpbHRpbi9tZXJnZS5jOjEyMDkKIG1zZ2lkICJOb24tZmFzdC1mb3J3YXJkIGNvbW1pdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGludG8gYW4gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogIkNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jDtG5nLWZhc3QtZm9yd2FyZCBraMO0bmcgaOG7o3AgbMO9IOG7nyB0cm9uZyBt4buZdCBoZWFkIHRy4buRbmcgIgogInLhu5duZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEzMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYW4gdW50cnVzdGVkIEdQRyBzaWduYXR1cmUsIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIiIKKyJM4bqnbiBjaHV54buDbiBnaWFvICVzIGPDsyBt4buZdCBjaOG7ryBrw70gR1BHIGtow7RuZyDEkcOhbmcgdGluLCDEkcaw4bujYyBjaG8gbMOgIGLhu59pICVzLiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGJhZCBHUEcgc2lnbmF0dXJlIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIkzhuqduIGNodXnhu4NuIGdpYW8gJXMgY8OzIG3hu5l0IGNo4buvIGvDvSBHUEcgc2FpLCDEkcaw4bujYyBjaG8gbMOgIGLhu59pICVzLiIKKworIy4gJ04nCisjOiBidWlsdGluL21lcmdlLmM6MTI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgorbXNnc3RyICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIGtow7RuZyBjw7MgY2jhu68ga8O9IEdQRy4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjc0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBnb29kIEdQRyBzaWduYXR1cmUgYnkgJXNcbiIKK21zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAlcyBjw7MgbeG7mXQgY2jhu68ga8O9IEdQRyB04buRdCBi4bufaSAlc1xuIgorCisjOiBidWlsdGluL21lcmdlLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyAlcy4uJXNcbiIKIG1zZ3N0ciAixJBhbmcgY+G6rXAgbmjhuq10ICVzLi4lc1xuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTM0OAorIzogYnVpbHRpbi9tZXJnZS5jOjEzOTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIHJlYWxseSB0cml2aWFsIGluLWluZGV4IG1lcmdlLi4uXG4iCiBtc2dzdHIgIsSQYW5nIHRo4butIGjDsmEgdHLhu5luIGtp4buDdSDigJx0cml2aWFsIGluLWluZGV44oCdLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU1CisjOiBidWlsdGluL21lcmdlLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICJLaMO0bmcuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzg3CisjOiBidWlsdGluL21lcmdlLmM6MTQzNgogbXNnaWQgIk5vdCBwb3NzaWJsZSB0byBmYXN0LWZvcndhcmQsIGFib3J0aW5nLiIKIG1zZ3N0ciAiVGjhu7FjIGhp4buHbiBs4buHbmggZmFzdC1mb3J3YXJkIGzDoCBraMO0bmcgdGjhu4MgxJHGsOG7o2MsIMSRYW5nIGLhu48gcXVhLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTAgYnVpbHRpbi9tZXJnZS5jOjE0ODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICLEkGFuZyB0dWEgbOG6oWkgY8OieSB0aMOgbmggdGjhu51pIHhhIHjGsGEuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyeWluZyBtZXJnZSBzdHJhdGVneSAlcy4uLlxuIgogbXNnc3RyICLEkGFuZyB0aOG7rSBjaGnhur9uIGzGsOG7o2MgaMOyYSB0cuG7mW4gJXMuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0ODAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIHN0cmF0ZWd5IGhhbmRsZWQgdGhlIG1lcmdlLlxuIgogbXNnc3RyICJLaMO0bmcgY8OzIGNoaeG6v24gbMaw4bujYyBow7JhIHRy4buZbiBuw6BvIMSRxrDhu6NjIG7huq9tIGdp4buvIChoYW5kbGUpIHPhu7EgaMOyYSB0cuG7mW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDgyCisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAiSMOyYSB0cuG7mW4gduG7m2kgY2hp4bq/biBsxrDhu6NjICVzIGfhurdwIGzhu5dpLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQ5MQorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIlPhu60gZOG7pW5nICVzIMSR4buDIGNodeG6qW4gYuG7iyBnaeG6o2kgcXV54bq/dCBi4bqxbmcgdGF5LlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTUwMworIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKIG1zZ3N0ciAiIgpAQCAtNjMwMiw3ICs2ODA3LDcgQEAKIAogIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNgogbXNnaWQgImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIgotbXNnc3RyICJjaG8gcGjDqXAgaGnhu4NuIHRo4buLIGPDoWMgdMOqbiBgY2jGsGEgxJHhu4tuaCBuZ2jEqWFgIgorbXNnc3RyICJjaG8gcGjDqXAgaGnhu4NuIHRo4buLIGPDoWMgdMOqbiDigJxjaMawYSDEkeG7i25oIG5naMSpYeKAnCIKIAogIzogYnVpbHRpbi9ub3Rlcy5jOjI2CiBtc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzxvYmplY3Q+XV0iCkBAIC02NDE0LDE0MiArNjkxOSwxMzcgQEAKIG1zZ2lkICJnaXQgbm90ZXMgZ2V0LXJlZiIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGdldC1yZWYiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNDIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXJ0ICdzaG93JyBmb3Igb2JqZWN0ICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBraOG7n2kgY2jhuqF5IOKAnHNob3figJ0gY2hvIMSR4buRaSB0xrDhu6NuZyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE0OAotbXNnaWQgImNhbid0IGZkb3BlbiAnc2hvdycgb3V0cHV0IGZkIgotbXNnc3RyICJraMO0bmcgdGjhu4MgZmRvcGVuIOKAnHNob3figJ0gKGzhu4duaCBoaeG7g24gdGjhu4spIG3DtCB04bqjIHThuq1wIHRpbiAoZmQpIGvhur90IHh14bqldCIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNDMKK21zZ2lkICJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IgorbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIGvhur90IHh14bqldCDigJxzaG934oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTU4Ci0jLCBjLWZvcm1hdAotbXNnaWQgImZhaWxlZCB0byBjbG9zZSBwaXBlIHRvICdzaG93JyBmb3Igb2JqZWN0ICclcyciCi1tc2dzdHIgImfhurdwIGzhu5dpIGtoaSDEkcOzbmcgxJHGsOG7nW5nIOG7kW5nIGNobyBs4buHbmgg4oCcc2hvd+KAnSBjaG8gxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIgotCi0jOiBidWlsdGluL25vdGVzLmM6MTYxCisjOiBidWlsdGluL25vdGVzLmM6MTUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIGhvw6BuIHRow6BuaCDigJxzaG934oCdIGNobyDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNzggYnVpbHRpbi90YWcuYzozNDcKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNjkgYnVpbHRpbi90YWcuYzozNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBmaWxlICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyB04bqtcCB0aW4g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxOTIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIiIKICJYaW4gaMOjeSDDoXAgZOG7pW5nIG7hu5lpIGR1bmcgY+G7p2EgZ2hpIGNow7ogc+G7rSBk4bulbmcgaG/hurdjIGzDoCB0w7l5IGNo4buNbiAtbSBob+G6t2MgbMOgIC1GIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjEzIGJ1aWx0aW4vbm90ZXMuYzo5NzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMDkgYnVpbHRpbi9ub3Rlcy5jOjk3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdmluZyBub3RlIGZvciBvYmplY3QgJXNcbiIKIG1zZ3N0ciAixJBhbmcgZ+G7oSBi4buPIGdoaSBjaMO6IChub3RlKSBjaG8gxJHhu5FpIHTGsOG7o25nICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbm90ZSBvYmplY3QiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgxJHhu5FpIHTGsOG7o25nIGdoaSBjaMO6IChub3RlKSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIyMAorIzogYnVpbHRpbi9ub3Rlcy5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgbm90ZSBjb250ZW50cyBoYXMgYmVlbiBsZWZ0IGluICVzIgogbXNnc3RyICJO4buZaSBkdW5nIGdoaSBjaMO6IGPDsm4gbOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTQgYnVpbHRpbi90YWcuYzo1NDIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTAgYnVpbHRpbi90YWcuYzo1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1NiBidWlsdGluL3RhZy5jOjU0NQorIzogYnVpbHRpbi9ub3Rlcy5jOjI1MiBidWlsdGluL3RhZy5jOjU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiBvciByZWFkICclcyciCi1tc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIMSR4buDIMSR4buNYyBoYXkgZ2hpIOKAnCVz4oCdIgorbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyBoYXkgxJHhu41jIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc1IGJ1aWx0aW4vbm90ZXMuYzo0NDggYnVpbHRpbi9ub3Rlcy5jOjQ1MAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxMCBidWlsdGluL25vdGVzLmM6NTY0IGJ1aWx0aW4vbm90ZXMuYzo2NDcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NTIgYnVpbHRpbi9ub3Rlcy5jOjcyNyBidWlsdGluL25vdGVzLmM6NzY5Ci0jOiBidWlsdGluL25vdGVzLmM6OTcxIGJ1aWx0aW4vcmVzZXQuYzoyOTMgYnVpbHRpbi90YWcuYzo1NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzEgYnVpbHRpbi9ub3Rlcy5jOjQ0NCBidWlsdGluL25vdGVzLmM6NDQ2CisjOiBidWlsdGluL25vdGVzLmM6NTA2IGJ1aWx0aW4vbm90ZXMuYzo1NjAgYnVpbHRpbi9ub3Rlcy5jOjY0MworIzogYnVpbHRpbi9ub3Rlcy5jOjY0OCBidWlsdGluL25vdGVzLmM6NzIzIGJ1aWx0aW4vbm90ZXMuYzo3NjUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NjcgYnVpbHRpbi90YWcuYzo1NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iCi1tc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBnaeG6o2kgcXV54bq/dCDigJwlc+KAnSBuaMawIGzDoCBt4buZdCB0aGFtIGNoaeG6v3UgKHJlZikgaOG7o3AgbOG7hy4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kg4oCcJXPigJ0gbmjGsCBsw6AgbeG7mXQgdGhhbSBjaGnhur91IChyZWYpIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc4CisjOiBidWlsdGluL25vdGVzLmM6Mjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWFkIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzAyCisjOiBidWlsdGluL25vdGVzLmM6Mjk4CiBtc2dpZCAiQ2Fubm90IGNvbW1pdCB1bmluaXRpYWxpemVkL3VucmVmZXJlbmNlZCBub3RlcyB0cmVlIgogbXNnc3RyICIiCiAiS2jDtG5nIHRo4buDIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY2jGsGEgxJHGsOG7o2Mga2jhu59pIHThuqFvIGhv4bq3YyBraMO0bmcgxJHGsOG7o2MgdGhhbSBjaGnhur91ICIKICJjw6J5IGdoaSBjaMO6IgogCi0jOiBidWlsdGluL25vdGVzLmM6MzQzCisjOiBidWlsdGluL25vdGVzLmM6MzM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIKIG1zZ3N0ciAiR2nDoSB0cuG7iyBub3Rlcy5yZXdyaXRlTW9kZSBzYWk6IOKAnCVz4oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUzCisjOiBidWlsdGluL25vdGVzLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgogbXNnc3RyICJU4burIGNo4buRaSBnaGkgxJHDqCBnaGkgY2jDuiB0cm9uZyAlcyAobuG6sW0gbmdvw6BpIGPhu6dhIHJlZnMvbm90ZXMvKSIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiB0aGUKICMuIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgc2Vjb25kICVzIGlzIGl0cyB2YWx1ZQotIzogYnVpbHRpbi9ub3Rlcy5jOjM4MAorIzogYnVpbHRpbi9ub3Rlcy5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCiBtc2dzdHIgIkdpw6EgdHLhu4sgJXMgc2FpOiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0NAorIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaW5wdXQgbGluZTogJyVzJy4iCiBtc2dzdHIgIkTDsm5nIG5o4bqtcCB2w6BvIGThu4sgaMOsbmg6IOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ1OQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY29weSBub3RlcyBmcm9tICclcycgdG8gJyVzJyIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHNhbyBjaMOpcCBnaGkgY2jDuiAobm90ZSkgdOG7qyDigJwlc+KAnSB04bubaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUwMyBidWlsdGluL25vdGVzLmM6NTU3IGJ1aWx0aW4vbm90ZXMuYzo2MzAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDIgYnVpbHRpbi9ub3Rlcy5jOjcxNSBidWlsdGluL25vdGVzLmM6NzYyCi0jOiBidWlsdGluL25vdGVzLmM6MTAzNgorIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4CisjOiBidWlsdGluL25vdGVzLmM6MTAzMgogbXNnaWQgInRvbyBtYW55IHBhcmFtZXRlcnMiCiBtc2dzdHIgInF1w6Egbmhp4buBdSDEkeG7kWkgc+G7kSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxNiBidWlsdGluL25vdGVzLmM6Nzc1CisjOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBmb3VuZCBmb3Igb2JqZWN0ICVzLiIKIG1zZ3N0ciAia2jDtG5nIHTDrG0gdGjhuqV5IGdoaSBjaMO6IGNobyDEkeG7kWkgdMaw4bujbmcgJXMuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM4IGJ1aWx0aW4vbm90ZXMuYzo2OTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQogbXNnaWQgIm5vdGUgY29udGVudHMgYXMgYSBzdHJpbmciCiBtc2dzdHIgIm7hu5lpIGR1bmcgZ2hpIGNow7ogKG5vdGUpIG7hurFtIHRyb25nIG3hu5l0IGNodeG7l2kiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDEgYnVpbHRpbi9ub3Rlcy5jOjY5OAorIzogYnVpbHRpbi9ub3Rlcy5jOjUzNyBidWlsdGluL25vdGVzLmM6Njk0CiBtc2dpZCAibm90ZSBjb250ZW50cyBpbiBhIGZpbGUiCiBtc2dzdHIgIm7hu5lpIGR1bmcgZ2hpIGNow7ogKG5vdGUpIG7hurFtIHRyb25nIG3hu5l0IHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0MyBidWlsdGluL25vdGVzLmM6NTQ2IGJ1aWx0aW4vbm90ZXMuYzo3MDAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MDMgYnVpbHRpbi90YWcuYzo0NzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzkgYnVpbHRpbi9ub3Rlcy5jOjU0MiBidWlsdGluL25vdGVzLmM6Njk2CisjOiBidWlsdGluL25vdGVzLmM6Njk5IGJ1aWx0aW4vdGFnLmM6NDc0CiBtc2dpZCAib2JqZWN0IgogbXNnc3RyICLEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDQgYnVpbHRpbi9ub3Rlcy5jOjcwMQorIzogYnVpbHRpbi9ub3Rlcy5jOjU0MCBidWlsdGluL25vdGVzLmM6Njk3CiBtc2dpZCAicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgogbXNnc3RyICJkw7luZyBs4bqhaSBuaMawbmcgY8OzIHPhu61hIGNo4buvYSDEkeG7kWkgdMaw4bujbmcgbm90ZSDEkcOjIGNo4buJIHJhIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQ3IGJ1aWx0aW4vbm90ZXMuYzo3MDQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjcwMAogbXNnaWQgInJldXNlIHNwZWNpZmllZCBub3RlIG9iamVjdCIKIG1zZ3N0ciAiZMO5bmcgbOG6oWkgxJHhu5FpIHTGsOG7o25nIGdoaSBjaMO6IChub3RlKSDEkcOjIGNo4buJIHJhIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQ5IGJ1aWx0aW4vbm90ZXMuYzo2MTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDUgYnVpbHRpbi9ub3Rlcy5jOjYxMwogbXNnaWQgInJlcGxhY2UgZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgInRoYXkgdGjhur8gZ2hpIGNow7ogdHLGsOG7m2MiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1ODMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCBhZGQgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCkBAIC02NTU4LDI0ICs3MDU4LDI0IEBACiAiS2jDtG5nIHRo4buDIHRow6ptIGPDoWMgZ2hpIGNow7ouIMSQw6MgdMOsbSB0aOG6pXkgY8OhYyBnaGkgY2jDuiDEkcOjIGPDsyBz4bq1biBjaG8gxJHhu5FpIHTGsOG7o25nICIKICIlcy4gU+G7rSBk4bulbmcgdMO5eSBjaOG7jW4g4oCcLWbigJ0gxJHhu4MgZ2hpIMSRw6ggbMOqbiBjw6FjIGdoaSBjaMO6IGPFqSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4OCBidWlsdGluL25vdGVzLmM6NjY1CisjOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3ZlcndyaXRpbmcgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICLEkGFuZyBnaGkgxJHDqCBsw6puIGdoaSBjaMO6IGPFqSBjaG8gxJHhu5FpIHTGsOG7o25nICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKIG1zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKIG1zZ3N0ciAixJHhu41jIGPDoWMgxJHhu5FpIHTGsOG7o25nIHThu6sgxJHhuqd1IHbDoG8gdGnDqnUgY2h14bqpbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYyMAorIzogYnVpbHRpbi9ub3Rlcy5jOjYxNgogbXNnaWQgImxvYWQgcmV3cml0aW5nIGNvbmZpZyBmb3IgPGNvbW1hbmQ+IChpbXBsaWVzIC0tc3RkaW4pIgogbXNnc3RyICJ04bqjaSBj4bqldSBow6xuaCBjaMOpcCBs4bqhaSBjaG8gPGzhu4duaD4gKG5n4bqnbSDEkeG7i25oIGzDoCAtLXN0ZGluKSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOAorIzogYnVpbHRpbi9ub3Rlcy5jOjYzNAogbXNnaWQgInRvbyBmZXcgcGFyYW1ldGVycyIKIG1zZ3N0ciAicXXDoSDDrXQgxJHhu5FpIHPhu5EiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NTkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCBjb3B5IG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgpAQCAtNjU4NCwxMiArNzA4NCwxMiBAQAogIktow7RuZyB0aOG7gyBzYW8gY2jDqXAgY8OhYyBnaGkgY2jDui4gxJDDoyB0w6xtIHRo4bqleSBjw6FjIGdoaSBjaMO6IMSRw6MgY8OzIHPhurVuIGNobyDEkeG7kWkgIgogInTGsOG7o25nICVzLiBT4butIGThu6VuZyB0w7l5IGNo4buNbiDigJwtZuKAnSDEkeG7gyBnaGkgxJHDqCBsw6puIGPDoWMgZ2hpIGNow7ogY8WpIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjcxCisjOiBidWlsdGluL25vdGVzLmM6NjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3Npbmcgbm90ZXMgb24gc291cmNlIG9iamVjdCAlcy4gQ2Fubm90IGNvcHkuIgogbXNnc3RyICJUaGnhur91IGdoaSBjaMO6IHRyw6puIMSR4buRaSB0xrDhu6NuZyBuZ3Xhu5FuICVzLiBLaMO0bmcgdGjhu4Mgc2FvIGNow6lwLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjcyMAorIzogYnVpbHRpbi9ub3Rlcy5jOjcxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIC1tLy1GLy1jLy1DIG9wdGlvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHRoZSAnZWRpdCcgc3ViY29tbWFuZC5cbiIKQEAgLTY1OTgsMTUgKzcwOTgsMTUgQEAKICJDw6FjIHTDuXkgY2jhu41uIC1tLy1GLy1jLy1DIMSRw6MgY+G7lSBraMO0bmcgY8OybiBkw7luZyBu4buvYSBjaG8gbOG7h25oIGNvbiDigJxlZGl04oCdLlxuIgogIlhpbiBow6N5IHPhu60gZOG7pW5nIGzhu4duaCBzYXUgxJHhu4MgdGhheSB0aOG6vzog4oCcZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQ+KAnS5cbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2NworIzogYnVpbHRpbi9ub3Rlcy5jOjg2MwogbXNnaWQgIkdlbmVyYWwgb3B0aW9ucyIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gY2h1bmciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjUKIG1zZ2lkICJNZXJnZSBvcHRpb25zIgogbXNnc3RyICJUw7l5IGNo4buNbiB24buBIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODcxCisjOiBidWlsdGluL25vdGVzLmM6ODY3CiBtc2dpZCAiIgogInJlc29sdmUgbm90ZXMgY29uZmxpY3RzIHVzaW5nIHRoZSBnaXZlbiBzdHJhdGVneSAobWFudWFsL291cnMvdGhlaXJzL3VuaW9uLyIKICJjYXRfc29ydF91bmlxKSIKQEAgLTY2MTQsNDYgKzcxMTQsNDYgQEAKICJwaMOibiBnaeG6o2kgY8OhYyB4dW5nIMSR4buZdCDigJxub3Rlc+KAnSBz4butIGThu6VuZyBjaGnhur9uIGzGsOG7o2MgxJHDoyDEkcawYSByYSAobWFudWFsL291cnMvIgogInRoZWlycy91bmlvbi9jYXRfc29ydF91bmlxKSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3MworIzogYnVpbHRpbi9ub3Rlcy5jOjg2OQogbXNnaWQgIkNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCiBtc2dzdHIgIkNodXnhu4NuIGdpYW8gY8OhYyBub3RlIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODc1CisjOiBidWlsdGluL25vdGVzLmM6ODcxCiBtc2dpZCAiZmluYWxpemUgbm90ZXMgbWVyZ2UgYnkgY29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKIG1zZ3N0ciAiIgogImPDoWMgbm90ZSBjdeG7kWkgY8O5bmcgxJHGsOG7o2MgaMOyYSB0cuG7mW4gYuG7n2kgY8OhYyBub3RlIGNoxrBhIGjDsmEgdHLhu5luIGPhu6dhIGzhuqduIGNodXnhu4NuICIKICJnaWFvIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODc3CisjOiBidWlsdGluL25vdGVzLmM6ODczCiBtc2dpZCAiQWJvcnRpbmcgbm90ZXMgbWVyZ2UgcmVzb2x1dGlvbiIKIG1zZ3N0ciAiSOG7p3kgYuG7jyBwaMOibiBnaeG6o2kgZ2hpIGNow7ogKG5vdGUpIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODc5CisjOiBidWlsdGluL25vdGVzLmM6ODc1CiBtc2dpZCAiYWJvcnQgbm90ZXMgbWVyZ2UiCiBtc2dzdHIgImLhu48gcXVhIGjDsmEgdHLhu5luIGPDoWMgZ2hpIGNow7ogKG5vdGUpIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTc0CisjOiBidWlsdGluL25vdGVzLmM6OTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9iamVjdCAlcyBoYXMgbm8gbm90ZVxuIgogbXNnc3RyICLEkOG7kWkgdMaw4bujbmcgJXMga2jDtG5nIGPDsyBnaGkgY2jDuiAobm90ZSlcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk4NgorIzogYnVpbHRpbi9ub3Rlcy5jOjk4MgogbXNnaWQgImF0dGVtcHQgdG8gcmVtb3ZlIG5vbi1leGlzdGVudCBub3RlIGlzIG5vdCBhbiBlcnJvciIKIG1zZ3N0ciAiY+G7kSBn4bqvbmcgZ+G7oSBi4buPIG3hu5l0IG5vdGUgY2jGsGEgdOG7q25nIHThu5NuIHThuqFpIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IGzhu5dpIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTg5CisjOiBidWlsdGluL25vdGVzLmM6OTg1CiBtc2dpZCAicmVhZCBvYmplY3QgbmFtZXMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIsSR4buNYyB0w6puIMSR4buRaSB0xrDhu6NuZyB04burIHRoaeG6v3QgYuG7iyBuaOG6rXAgY2h14bqpbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjEwNzAKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMDY2CiBtc2dpZCAibm90ZXNfcmVmIgogbXNnc3RyICJub3Rlc19yZWYiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDcxCisjOiBidWlsdGluL25vdGVzLmM6MTA2NwogbXNnaWQgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IgogbXNnc3RyICJkw7luZyDigJxub3Rlc+KAnSB04burIDxub3Rlc19yZWY+IgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwNiBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAyIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHN1YmNvbW1hbmQ6ICVzIgogbXNnc3RyICJLaMO0bmcgaGnhu4N1IGPDonUgbOG7h25oIGNvbjogJXMiCkBAIC03MDIzLDIyICs3NTIzLDU0IEBACiAiWGVtIHRyb25nIHBo4bqnbiDigJxOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHPigJ0gdOG7qyBs4buHbmgg4oCcZ2l0IHB1c2ggLS1oZWxw4oCdIMSR4buDIGPDsyAiCiAidGjDtG5nIHRpbiBjaGkgdGnhur90LiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjU4CisjOiBidWlsdGluL3B1c2guYzoyMjQKK21zZ2lkICIiCisiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHJlbW90ZSBjb250YWlucyB3b3JrIHRoYXQgeW91IGRvXG4iCisibm90IGhhdmUgbG9jYWxseS4gVGhpcyBpcyB1c3VhbGx5IGNhdXNlZCBieSBhbm90aGVyIHJlcG9zaXRvcnkgcHVzaGluZ1xuIgorInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLixcbiIKKyInZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKyJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKK21zZ3N0ciAiIgorIlZp4buHYyBj4bqtcCBuaOG6rXQgYuG7iyB04burIGNo4buRaSBi4bufaSB2w6wgbcOheSBjaOG7pyBjw7MgY2jhu6lhIGPDtG5nIHZp4buHYyBtw6AgYuG6oW4ga2jDtG5nXG4iCisiY8OzIOG7nyBtw6F5IG7hu5lpIGLhu5kgY+G7p2EgbcOsbmguIEzhu5dpIG7DoHkgdGjGsOG7nW5nIGPDsyBuZ3V5w6puIG5ow6JuIGLhu59pIGtobyBraMOhYyDEkeG6qXkgZOG7ryAiCisibGnhu4d1IGzDqm5cbiIKKyJjw7luZyBt4buZdCB0aGFtIGNoaeG6v3UuIELhuqFuIGPDsyBs4bq9IG114buRbiBow7JhIHRy4buZbiB24bubaSBjw6FjIHRoYXkgxJHhu5VpIHThu6sgbcOheSBjaOG7p1xuIgorIih2LmQuIOKAnGdpdCBwdWxs4oCdKSB0csaw4bubYyBraGkgbOG6oWkgcHVzaCBs4bqnbiBu4buvYS5cbiIKKyJYZW0gdHJvbmcgcGjhuqduIOKAnE5vdGUgYWJvdXQgZmFzdC1mb3J3YXJkc+KAnSB04burIGzhu4duaCDigJxnaXQgcHVzaCAtLWhlbHDigJ0gxJHhu4MgY8OzICIKKyJ0aMO0bmcgdGluIGNoaSB0aeG6v3QuIgorCisjOiBidWlsdGluL3B1c2guYzoyMzEKK21zZ2lkICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIgorbXNnc3RyICJWaeG7h2MgY+G6rXAgbmjhuq10IGLhu4sgdOG7qyBjaOG7kWkgYuG7n2kgdsOsIHRo4bq7IMSRw6Mgc+G6tW4gY8OzIHThu6sgdHLGsOG7m2MgdHLDqm4gbcOheSBjaOG7py4iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzNAorbXNnaWQgIiIKKyJZb3UgY2Fubm90IHVwZGF0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJ3aXRob3V0IHVzaW5nIHRoZSAnLS1mb3JjZScgb3B0aW9uLlxuIgorbXNnc3RyICIiCisiS2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCBt4buZdCB0aGFtIGNoaeG6v3UgdHLDqm4gbcOheSBjaOG7pyBtw6AgbsOzIGNo4buJIMSR4bq/biDEkeG7kWkgdMaw4bujbmcgIgorImtow7RuZ1xuIgorInBo4bqjaSBjaHV54buDbiBnaWFvLCBob+G6t2MgY+G6rXAgbmjhuq10IG3hu5l0IHRoYW0gY2hp4bq/dSBtw6F5IGNo4bunIMSR4buDIG7DsyBjaOG7iSDEkeG6v24gxJHhu5FpICIKKyJ0xrDhu6NuZ1xuIgorImtow7RuZyBwaOG6o2kgY2h1eeG7g24gZ2lhbywgbcOgIGtow7RuZyBz4butIGThu6VuZyB0w7l5IGNo4buNbiDigJwtLWZvcmNl4oCdLlxuIgorCisjOiBidWlsdGluL3B1c2guYzoyOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyB0byAlc1xuIgogbXNnc3RyICLEkGFuZyBwdXNoICjEkeG6qXkpIGzDqm4gJXNcbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjYyCisjOiBidWlsdGluL3B1c2guYzoyOTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHB1c2ggc29tZSByZWZzIHRvICclcyciCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSBwdXNoICjEkeG6qXkgbMOqbikgbeG7mXQgc+G7kSB0aGFtIGNoaeG6v3UgKHJlZikgxJHhur9uIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjMzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcmVwb3NpdG9yeSAnJXMnIgogbXNnc3RyICJyZXBvc2l0b3J5IChraG8pIHNhaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk1CisjOiBidWlsdGluL3B1c2guYzozMzIKIG1zZ2lkICIiCiAiTm8gY29uZmlndXJlZCBwdXNoIGRlc3RpbmF0aW9uLlxuIgogIkVpdGhlciBzcGVjaWZ5IHRoZSBVUkwgZnJvbSB0aGUgY29tbWFuZC1saW5lIG9yIGNvbmZpZ3VyZSBhIHJlbW90ZSAiCkBAIC03MDU5LDgwICs3NTkxLDg4IEBACiAiXG4iCiAiICAgIGdpdCBwdXNoIDx0w6puPlxuIgogCi0jOiBidWlsdGluL3B1c2guYzozMTAKKyM6IGJ1aWx0aW4vcHVzaC5jOjM0NwogbXNnaWQgIi0tYWxsIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1hbGwgdsOgIC0tdGFncyB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL3B1c2guYzozMTEKKyM6IGJ1aWx0aW4vcHVzaC5jOjM0OAogbXNnaWQgIi0tYWxsIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgIi0tYWxsIGtow7RuZyB0aOG7gyDEkcaw4bujYyB04buVIGjhu6NwIGPDuW5nIHbhu5tpIHJlZnNwZWNzIgogCi0jOiBidWlsdGluL3B1c2guYzozMTYKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1MwogbXNnaWQgIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1taXJyb3IgdsOgIC0tdGFncyB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL3B1c2guYzozMTcKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1NAogbXNnaWQgIi0tbWlycm9yIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgIi0tbWlycm9yIGtow7RuZyB0aOG7gyDEkcaw4bujYyB04buVIGjhu6NwIGPDuW5nIHbhu5tpIHJlZnNwZWNzIgogCi0jOiBidWlsdGluL3B1c2guYzozMjIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1OQogbXNnaWQgIi0tYWxsIGFuZCAtLW1pcnJvciBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWFsbCB2w6AgLS1taXJyb3IgeHVuZyBraOG6r2MgbmhhdSIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzgyCisjOiBidWlsdGluL3B1c2guYzo0MTkKIG1zZ2lkICJyZXBvc2l0b3J5IgogbXNnc3RyICJraG8iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4MworIzogYnVpbHRpbi9wdXNoLmM6NDIwCiBtc2dpZCAicHVzaCBhbGwgcmVmcyIKIG1zZ3N0ciAicHVzaCB04bqldCBj4bqjIHJlZnMiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NAorIzogYnVpbHRpbi9wdXNoLmM6NDIxCiBtc2dpZCAibWlycm9yIGFsbCByZWZzIgogbXNnc3RyICJtaXJyb3IgdOG6pXQgY+G6oyByZWZzIgogCi0jOiBidWlsdGluL3B1c2guYzozODYKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMwogbXNnaWQgImRlbGV0ZSByZWZzIgogbXNnc3RyICJ4w7NhIHJlZnMiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NworIzogYnVpbHRpbi9wdXNoLmM6NDI0CiBtc2dpZCAicHVzaCB0YWdzIChjYW4ndCBiZSB1c2VkIHdpdGggLS1hbGwgb3IgLS1taXJyb3IpIgogbXNnc3RyICIiCiAiY8OhYyB0aOG6uyBwdXNoIChraMO0bmcgdGjhu4Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgY8OhYyB0w7l5IGNo4buNbiAtLWFsbCBoYXkgLS1taXJyb3IpIgogCi0jOiBidWlsdGluL3B1c2guYzozOTAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNwogbXNnaWQgImZvcmNlIHVwZGF0ZXMiCiBtc2dzdHIgIsOpcCBideG7mWMgY+G6rXAgbmjhuq10IgogCi0jOiBidWlsdGluL3B1c2guYzozOTEKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyOAogbXNnaWQgImNoZWNrIgogbXNnc3RyICJraeG7g20gdHJhIgogCi0jOiBidWlsdGluL3B1c2guYzozOTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyOQogbXNnaWQgImNvbnRyb2wgcmVjdXJzaXZlIHB1c2hpbmcgb2Ygc3VibW9kdWxlcyIKIG1zZ3N0ciAixJFp4buBdSBraGnhu4NuIHZp4buHYyDEkeG6qXkgbMOqbiAocHVzaCkgxJHhu4cgcXVpIGPhu6dhIG3DtC3EkXVuLWNvbiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzk0CisjOiBidWlsdGluL3B1c2guYzo0MzEKIG1zZ2lkICJ1c2UgdGhpbiBwYWNrIgogbXNnc3RyICJ04bqhbyBnw7NpIG5o4bq5IgogCi0jOiBidWlsdGluL3B1c2guYzozOTUgYnVpbHRpbi9wdXNoLmM6Mzk2CisjOiBidWlsdGluL3B1c2guYzo0MzIgYnVpbHRpbi9wdXNoLmM6NDMzCiBtc2dpZCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iCiBtc2dzdHIgIm5o4bqtbiB24buBIGNoxrDGoW5nIHRyw6xuaCBwYWNrIgogCi0jOiBidWlsdGluL3B1c2guYzozOTcKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNAogbXNnaWQgInNldCB1cHN0cmVhbSBmb3IgZ2l0IHB1bGwvc3RhdHVzIgogbXNnc3RyICLEkeG6t3QgdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSBjaG8gZ2l0IHB1bGwvc3RhdHVzIgogCi0jOiBidWlsdGluL3B1c2guYzo0MDAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNwogbXNnaWQgInBydW5lIGxvY2FsbHkgcmVtb3ZlZCByZWZzIgogbXNnc3RyICJwcnVuZSAoY+G6r3QgY+G7pXQpIG5o4buvbmcgdGhhbSBjaGnhur91IChyZWZzKSBi4buLIGfhu6EgYuG7jyIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDEwCisjOiBidWlsdGluL3B1c2guYzo0MzkKK21zZ2lkICJieXBhc3MgcHJlLXB1c2ggaG9vayIKK21zZ3N0ciAidsOybmcgcXVhIOKAnHByZS1wdXNoIGhvb2vigJ0iCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAicHVzaCBi4buLIHRyxrDhu6N0IG5oxrBuZyBjw6FjIHRo4bq7IHRow61jaCBo4bujcCIKKworIzogYnVpbHRpbi9wdXNoLmM6NDUwCiBtc2dpZCAiLS1kZWxldGUgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hbGwsIC0tbWlycm9yIGFuZCAtLXRhZ3MiCiBtc2dzdHIgIi0tZGVsZXRlIGzDoCB4dW5nIGto4bqvYyB24bubaSBjw6FjIHTDuXkgY2jhu41uIC0tYWxsLCAtLW1pcnJvciB2w6AgLS10YWdzIgogCi0jOiBidWlsdGluL3B1c2guYzo0MTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MgogbXNnaWQgIi0tZGVsZXRlIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IGFueSByZWZzIgogbXNnc3RyICItLWRlbGV0ZSBraMO0bmcgaOG7o3AgbMO9IG7hur91IGtow7RuZyBjw7MgYuG6pXQga+G7syB0aGFtIGNoaeG6v3UgKHJlZnMpIG7DoG8iCiAKQEAgLTczNzIsMTEgKzc5MTIsMTEgQEAKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo0NDAgYnVpbHRpbi9yZW1vdGUuYzo0NDgKIG1zZ2lkICIobWF0Y2hpbmcpIgotbXNnc3RyICIobeG6q3UpIgorbXNnc3RyICIoa2jhu5twKSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo0NTIKIG1zZ2lkICIoZGVsZXRlKSIKLW1zZ3N0ciAiKHhvw6EpIgorbXNnc3RyICIoeMOzYSkiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NTk1IGJ1aWx0aW4vcmVtb3RlLmM6NjAxIGJ1aWx0aW4vcmVtb3RlLmM6NjA3CiAjLCBjLWZvcm1hdApAQCAtNzY1NSw3ICs4MTk1LDcgQEAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTI5OAogIywgYy1mb3JtYXQKIG1zZ2lkICIgKiBbcHJ1bmVkXSAlcyIKLW1zZ3N0ciAiICpbxJHDoyB4w6luIGLhu5tdICVzIgorbXNnc3RyICIgKlvEkcOjIGLhu4sgeMOpbl0gJXMiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTMyMQogbXNnaWQgInBydW5lIHJlbW90ZXMgYWZ0ZXIgZmV0Y2hpbmciCkBAIC03NzQ3LDEyICs4Mjg3LDEyIEBACiAiZ2l0IHJlc2V0IFstLW1peGVkIHwgLS1zb2Z0IHwgLS1oYXJkIHwgLS1tZXJnZSB8IC0ta2VlcF0gWy1xXSBbPGNvbW1pdD5dIgogCiAjOiBidWlsdGluL3Jlc2V0LmM6MjYKLW1zZ2lkICJnaXQgcmVzZXQgWy1xXSA8Y29tbWl0PiBbLS1dIDxwYXRocz4uLi4iCi1tc2dzdHIgImdpdCByZXNldCBbLXFdIDxjb21taXQ+IFstLV0gPGPDoWMtxJHGsOG7nW5nLWThuqtuPi4uLiIKK21zZ2lkICJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPHRyZWUtaXNoPiBbLS1dIDzEkcaw4budbmctZOG6q24+Li4uIgogCiAjOiBidWlsdGluL3Jlc2V0LmM6MjcKLW1zZ2lkICJnaXQgcmVzZXQgLS1wYXRjaCBbPGNvbW1pdD5dIFstLV0gWzxwYXRocz4uLi5dIgotbXNnc3RyICJnaXQgcmVzZXQgLS1wYXRjaCBbPGNvbW1pdD5dIFstLV0gWzxjw6FjLcSRxrDhu51uZy1k4bqrbj4uLi5dIgorbXNnaWQgImdpdCByZXNldCAtLXBhdGNoIFs8dHJlZS1pc2g+XSBbLS1dIFs8cGF0aHM+Li4uXSIKK21zZ3N0ciAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzx0cmVlLWlzaD5dIFstLV0gWzxjw6FjLcSRxrDhu51uZy1k4bqrbj4uLi5dIgogCiAjOiBidWlsdGluL3Jlc2V0LmM6MzMKIG1zZ2lkICJtaXhlZCIKQEAgLTc3NzQsOTggKzgzMTQsMTA0IEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAiZ2nhu68gbOG6oWkiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo3NworIzogYnVpbHRpbi9yZXNldC5jOjczCiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRC4iCiBtc2dzdHIgIkLhuqFuIGtow7RuZyBjw7MgSEVBRCBuw6BvIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6NzkKKyM6IGJ1aWx0aW4vcmVzZXQuYzo3NQogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgSEVBRC4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB0w6xtIGPDonkgY+G7p2EgSEVBRC4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo4NQorIzogYnVpbHRpbi9yZXNldC5jOjgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgJXMuIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdMOsbSBjw6J5IGPhu6dhICVzLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjk2Ci1tc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kuIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTA2CisjOiBidWlsdGluL3Jlc2V0LmM6OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQgJXMiCiBtc2dzdHIgIkhFQUQgaGnhu4duIGdp4budIHThuqFpICVzIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMwCi1tc2dpZCAiQ291bGQgbm90IHJlYWQgaW5kZXgiCi1tc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgYuG6o25nIG3hu6VjIGzhu6VjIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMzCi1tc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCi1tc2dzdHIgIk5o4buvbmcgdGhheSDEkeG7lWkgYuG7iyBi4buPIHRy4bqhbmcgdGjDoWkgKHN0YWdlKSBzYXUga2hpIHJlc2V0OiIKLQotIzogYnVpbHRpbi9yZXNldC5jOjIyMworIzogYnVpbHRpbi9yZXNldC5jOjE2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gYSAlcyByZXNldCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UuIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiBt4buZdCAlcyByZXNldCDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGjDsmEgdHLhu5luLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjIzOAorIzogYnVpbHRpbi9yZXNldC5jOjI0OAogbXNnaWQgImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiCiBtc2dzdHIgImzDoG0gdmnhu4djIOG7nyBjaOG6vyDEkeG7mSBpbSBs4bq3bmcsIGNo4buJIGhp4buDbiB0aOG7iyBraGkgY8OzIGzhu5dpIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjQwCisjOiBidWlsdGluL3Jlc2V0LmM6MjUwCiBtc2dpZCAicmVzZXQgSEVBRCBhbmQgaW5kZXgiCiBtc2dzdHIgIsSR4bq3dCBs4bqhaSAocmVzZXQpIEhFQUQgdsOgIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MQorIzogYnVpbHRpbi9yZXNldC5jOjI1MQogbXNnaWQgInJlc2V0IG9ubHkgSEVBRCIKIG1zZ3N0ciAiY2jhu4kgxJHhurd0IGzhuqFpIChyZXNldCkgSEVBRCIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MyBidWlsdGluL3Jlc2V0LmM6MjQ1CisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKIG1zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgogbXNnc3RyICLEkeG6t3QgbOG6oWkgSEVBRCwgYuG6o25nIG3hu6VjIGzhu6VjIHbDoCBjw6J5IGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjQ3CisjOiBidWlsdGluL3Jlc2V0LmM6MjU3CiBtc2dpZCAicmVzZXQgSEVBRCBidXQga2VlcCBsb2NhbCBjaGFuZ2VzIgogbXNnc3RyICLEkeG6t3QgbOG6oWkgSEVBRCBuaMawbmcgZ2nhu68gbOG6oWkgY8OhYyB0aGF5IMSR4buVaSBu4buZaSBi4buZIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzAzCisjOiBidWlsdGluL3Jlc2V0LmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZXZpc2lvbi4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kg4oCcJXPigJ0gbmjGsCBsw6AgxJFp4buDbSB4w6l0IGR1eeG7h3QgaOG7o3AgbOG7hy4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzggYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwOAorIzogYnVpbHRpbi9yZXNldC5jOjI4MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgdHJlZS4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kg4oCcJXPigJ0gbmjGsCBsw6AgbeG7mXQgY8OieSAodHJlZSkgaOG7o3AgbOG7hy4iCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyOTIKIG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIC0te2hhcmQsbWl4ZWQsc29mdH0iCiBtc2dzdHIgIi0tcGF0Y2ggeHVuZyBraOG6r2MgduG7m2kgLS17aGFyZCxtaXhlZCxzb2Z0fSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxNworIzogYnVpbHRpbi9yZXNldC5jOjMwMQogbXNnaWQgIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogIi0tbWl4ZWQgduG7m2kgY8OhYyDEkcaw4budbmcgZOG6q24ga2jDtG5nIGPDsm4gZMO5bmcgbuG7r2E7IGjDo3kgdGhheSB0aOG6vyBi4bqxbmcgbOG7h25oIOKAnGdpdCAiCiAicmVzZXQgLS0gPMSRxrDhu51uZ19k4bqrbj7igJ0uIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE5CisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gbOG7h25oICVzIHJlc2V0IHbhu5tpIGPDoWMgxJHGsOG7nW5nIGThuqtuLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMzMQorIzogYnVpbHRpbi9yZXNldC5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiJXMgcmVzZXQga2jDtG5nIMSRxrDhu6NjIHBow6lwIHRyw6puIGtobyBiYXJlICh0csOqbiBtw6F5IGNo4bunKSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0NworIzogYnVpbHRpbi9yZXNldC5jOjMzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVzZXQgaW5kZXggZmlsZSB0byByZXZpc2lvbiAnJXMnLiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4bq3dCBs4bqhaSAocmVzZXQpIGLhuqNuZyBt4bulYyBs4bulYyB0aMOgbmggxJFp4buDbSB4w6l0IGzhuqFpIOKAnCVz4oCdLiIKIAorIzogYnVpbHRpbi9yZXNldC5jOjMzOQorbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVzZXQ6IgorbXNnc3RyICJOaOG7r25nIHRoYXkgxJHhu5VpIGLhu4sgYuG7jyB0cuG6oW5nIHRow6FpIChzdGFnZSkgc2F1IGtoaSByZXNldDoiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozNDQKK21zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIHThuq1wIHRpbiBsxrB1IGLhuqNuZyBt4bulYyBs4bulYyBt4bubaS4iCisKICM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzM5CiBtc2dpZCAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIKIG1zZ3N0ciAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtjw6FjLXTDuXktY2jhu41uXSAtLSBbPHRoLnPhu5E+Li4uXSIKIAogIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozNDQKIG1zZ2lkICJrZWVwIHRoZSBgLS1gIHBhc3NlZCBhcyBhbiBhcmciCi1tc2dzdHIgImdp4buvIGAtLWAgY2h1eeG7g24gcXVhIGzDoG0gdGhhbSBz4buRIgorbXNnc3RyICJnaeG7ryDigJwtLeKAnCBjaHV54buDbiBxdWEgbMOgbSB0aGFtIHPhu5EiCiAKICM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ2CiBtc2dpZCAic3RvcCBwYXJzaW5nIGFmdGVyIHRoZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50IgpAQCAtNzg4NiwxNiArODQzMiwxNiBAQAogIkNo4bqheSBs4buHbmggXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiDEkeG7gyBjw7MgdGjDqm0gdGjDtG5nIHRpbiB24buBIGPDoWNoIGTDuW5nLiIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoyMgotbXNnaWQgImdpdCByZXZlcnQgW29wdGlvbnNdIDxjb21taXQtaXNoPiIKLW1zZ3N0ciAiZ2l0IHJldmVydCBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdC1pc2g+IgorbXNnaWQgImdpdCByZXZlcnQgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIKK21zZ3N0ciAiZ2l0IHJldmVydCBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdC1pc2g+Li4uIgogCiAjOiBidWlsdGluL3JldmVydC5jOjIzCiBtc2dpZCAiZ2l0IHJldmVydCA8c3ViY29tbWFuZD4iCiBtc2dzdHIgImdpdCByZXZlcnQgPGzhu4duaC1jb24+IgogCiAjOiBidWlsdGluL3JldmVydC5jOjI4Ci1tc2dpZCAiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4iCi1tc2dzdHIgImdpdCBjaGVycnktcGljayBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdC1pc2g+IgorbXNnaWQgImdpdCBjaGVycnktcGljayBbb3B0aW9uc10gPGNvbW1pdC1pc2g+Li4uIgorbXNnc3RyICJnaXQgY2hlcnJ5LXBpY2sgW2PDoWMtdMO5eS1jaOG7jW5dIDxjb21taXQtaXNoPi4uLiIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoyOQogbXNnaWQgImdpdCBjaGVycnktcGljayA8c3ViY29tbWFuZD4iCkBAIC03OTg0LDggKzg1MzAsOCBAQAogInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKICIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCiBtc2dzdHIgIiIKLSJtw7QtxJF1bi1jb24gJyVzJyAoaG/hurdjIGPDoWkgbuG6sW0gdHJvbmcgY8OhYyBtw7QtxJF1bi1jb24pIGTDuW5nIHRoxrAgbeG7pWMgLmdpdFxuIgotIihkw7luZyAncm0gLXJmJyBu4bq/dSBi4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4gZ+G7oSBi4buPIG7DsyBjw7luZyB24bubaSB04bqldCBj4bqjIGzhu4tjaCBz4butIGPhu6dhICIKKyJtw7QtxJF1bi1jb24g4oCcJXPigJ0gKGhv4bq3YyBjw6FpIG7hurFtIHRyb25nIGPDoWMgbcO0LcSRdW4tY29uKSBkw7luZyB0aMawIG3hu6VjIC5naXRcbiIKKyIoZMO5bmcg4oCccm0gLXJm4oCdIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBn4buhIGLhu48gbsOzIGPDuW5nIHbhu5tpIHThuqV0IGPhuqMgbOG7i2NoIHPhu60gY+G7p2EgIgogImNow7puZykiCiAKICM6IGJ1aWx0aW4vcm0uYzoxNzQKQEAgLTgwNDYsMzEgKzg1OTIsMzEgQEAKIG1zZ3N0ciAiZ2l0IHJtOiBraMO0bmcgdGjhu4MgZ+G7oSBi4buPICVzIgogCiAjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMKLW1zZ2lkICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iCi1tc2dzdHIgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtb3B0c10gWy0tXSBbPGNvbW1pdC1pZD4uLi4gXSIKK21zZ2lkICJnaXQgc2hvcnRsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIFs8cGF0aD4uLi5dXSIKK21zZ3N0ciAiZ2l0IHNob3J0bG9nIFtjw6FjLXTDuXktY2jhu41uXSBbPHbDuW5nLXhlbS14w6l0Pl0gW1stLV0gWzzEkcaw4budbmctZOG6q24+Li4uXV0iCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTcKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBhdXRob3I6ICVzIgogbXNnc3RyICJUaGnhur91IHTDqm4gdMOhYyBnaeG6ozogJXMiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTMKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjcKIG1zZ2lkICJzb3J0IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjb21taXRzIHBlciBhdXRob3IiCiBtc2dzdHIgInPhuq9wIHjhur9wIGvhur90IHh14bqldCB0dcOibiB0aGVvIHPhu5EgbMaw4bujbmcgY2h1eeG7g24gZ2lhbyB0csOqbiBt4buXaSB0w6FjIGdp4bqjIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU1CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5CiBtc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCiBtc2dzdHIgIkNo4bq3biBt4buNaSBtw7QgdOG6oyBs4bqnbiBjaHV54buDbiBnaWFvLCBjaOG7iSDEkcawYSByYSBz4buRIGzGsOG7o25nIGzhuqduIGNodXnhu4NuIGdpYW8iCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTcKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzEKIG1zZ2lkICJTaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIGVhY2ggYXV0aG9yIgogbXNnc3RyICJIaeG7g24gdGjhu4sgdGjGsCDEkWnhu4duIHThu60gY2hvIHThu6tuZyB0w6FjIGdp4bqjIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU4CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMyCiBtc2dpZCAid1ssaTFbLGkyXV0iCiBtc2dzdHIgIndbLGkxWyxpMl1dIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMzCiBtc2dpZCAiTGluZXdyYXAgb3V0cHV0IgogbXNnc3RyICJOZ+G6r3QgZMOybmcga2hpIHF1w6EgZMOgaSIKIApAQCAtODA5MCw2NyArODYzNiw2NyBAQAogbXNnaWQgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxiYXNlPl1dIFstLWxpc3RdIFs8cmVmPl0iCiBtc2dzdHIgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxu4buBbj5dXSBbLS1saXN0XSBbPHJlZj5dIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUxCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUwCiBtc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBuaMOhbmggcmVtb3RlLXRyYWNraW5nIHbDoCBu4buZaSBi4buZIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUzCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjUyCiBtc2dpZCAic2hvdyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIG5ow6FuaCByZW1vdGUtdHJhY2tpbmciCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTQKIG1zZ2lkICJjb2xvciAnKiErLScgY29ycmVzcG9uZGluZyB0byB0aGUgYnJhbmNoIgogbXNnc3RyICJtw6B1IOKAnCohKy3igJ0gdMawxqFuZyDhu6luZyB24bubaSBuaMOhbmgiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTcKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYKIG1zZ2lkICJzaG93IDxuPiBtb3JlIGNvbW1pdHMgYWZ0ZXIgdGhlIGNvbW1vbiBhbmNlc3RvciIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRow6ptIDxuPiBs4bqnbiBjaHV54buDbiBnaWFvIHNhdSBjaGEgbeG6uSBjaHVuZyIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OQorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OAogbXNnaWQgInN5bm9ueW0gdG8gbW9yZT0tMSIKIG1zZ3N0ciAixJHhu5NuZyBuZ2jEqWEgduG7m2kgbW9yZT0tMSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1OQogbXNnaWQgInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIgogbXNnc3RyICJjaOG6t24gY8OhYyBjaHXhu5dpIMSR4bq3dCB0w6puIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYyCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYxCiBtc2dpZCAiaW5jbHVkZSB0aGUgY3VycmVudCBicmFuY2giCiBtc2dzdHIgImJhbyBn4buTbSBuaMOhbmggaGnhu4duIGjDoG5oIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY0CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYzCiBtc2dpZCAibmFtZSBjb21taXRzIHdpdGggdGhlaXIgb2JqZWN0IG5hbWVzIgogbXNnc3RyICLEkeG6t3QgdMOqbiBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gYuG6sW5nIGPDoWMgdMOqbiBj4bunYSDEkeG7kWkgdMaw4bujbmcgY+G7p2EgY2jDum5nIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY2CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY1CiBtc2dpZCAic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIG3hu41pIGPGoSBz4bufIGPDsyB0aOG7gyBkw7luZyDEkeG7gyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NwogbXNnaWQgInNob3cgcmVmcyB1bnJlYWNoYWJsZSBmcm9tIGFueSBvdGhlciByZWYiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHRoYW0gY2hp4bq/dSBraMO0bmcgdGjhu4MgxJHGsOG7o2MgxJHhu41jIGLhu59pIGLhuqV0IGvhu7MgdGhhbSBjaGnhur91IGtow6FjIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcwCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY5CiBtc2dpZCAic2hvdyBjb21taXRzIGluIHRvcG9sb2dpY2FsIG9yZGVyIgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIHRoZW8gdGjhu6kgdOG7sSB0w7Rww7QiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzIKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzEKIG1zZ2lkICJzaG93IG9ubHkgY29tbWl0cyBub3Qgb24gdGhlIGZpcnN0IGJyYW5jaCIKIG1zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBraMO0bmcgbuG6sW0gdHLDqm4gbmjDoW5oIMSR4bqndSB0acOqbiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MwogbXNnaWQgInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgbOG6p24gaMOyYSB0cuG7mW4gY8OzIHRo4buDIMSR4buNYyDEkcaw4bujYyBjaOG7iSB04burIG3hu5l0IMSR4bqndSBtw7p0IgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc2CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc1CiBtc2dpZCAic2hvdyBjb21taXRzIHdoZXJlIG5vIHBhcmVudCBjb21lcyBiZWZvcmUgaXRzIGNoaWxkcmVuIgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIG7GoWkgbcOgIGNoYSBt4bq5IMSR4bq/biB0csaw4bubYyBjb24gY+G7p2EgbsOzIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc3CiBtc2dpZCAiPG4+Wyw8YmFzZT5dIgogbXNnc3RyICI8bj5bLDxjxqEgc+G7nz5dIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc5CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc4CiBtc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCiBtc2dzdHIgImhp4buDbiB0aOG7iyA8bj4gY8OhYyBt4bulYyDigJxyZWYtbG9n4oCdIGfhuqduIG5o4bqldCBr4buDIHThu6sgbuG7gW4gKGJhc2UpIgogCkBAIC04MjgwLDE3MCArODgyNiwxNjQgQEAKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHRo4bqpbSB0cmEgdGjhursg4oCcJXPigJ0iCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgVmnhur90IGPDoWMgZ2hpIGNow7ogY2hvICh0aOG6uykgdGFnXG4iCi0iIyBOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcg4oCcI+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLlxuIgotIiNcbiIKKyJWaeG6v3QgY8OhYyBnaGkgY2jDuiBjaG8gKHRo4bq7KSB0YWdcbiIKKyJOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcg4oCcJWPigJ0gc+G6vSDEkcaw4bujYyBi4buPIHF1YS5cbiIKIAotIzogYnVpbHRpbi90YWcuYzoyNTYKKyM6IGJ1aWx0aW4vdGFnLmM6MjUzCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKKyJXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCisiTGluZXMgc3RhcnRpbmcgd2l0aCAnJWMnIHdpbGwgYmUga2VwdDsgeW91IG1heSByZW1vdmUgdGhlbSB5b3Vyc2VsZiBpZiB5b3UgIgogIndhbnQgdG8uXG4iCi0iI1xuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMgVmnhur90IGPDoWMgZ2hpIGNow7ogY2hvICh0aOG6uykgdGFnXG4iCi0iIyBOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcg4oCcI+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhOyBi4bqhbiBjw7MgdGjhu4MgeMOzYSBjaMO6bmcgxJFpICIKKyJWaeG6v3QgY8OhYyBnaGkgY2jDuiBjaG8gKHRo4bq7KSB0YWdcbiIKKyJOaOG7r25nIGTDsm5nIMSRxrDhu6NjIGLhuq90IMSR4bqndSBi4bqxbmcg4oCcJWPigJ0gc+G6vSDEkcaw4bujYyBi4buPIHF1YTsgYuG6oW4gY8OzIHRo4buDIHjDs2EgY2jDum5nIMSRaSAiCiAibuG6v3UgbXXhu5FuLlxuIgotIiNcbiIKIAotIzogYnVpbHRpbi90YWcuYzoyOTgKKyM6IGJ1aWx0aW4vdGFnLmM6MjkyCiBtc2dpZCAidW5hYmxlIHRvIHNpZ24gdGhlIHRhZyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGvDvSB0aOG6uyIKIAotIzogYnVpbHRpbi90YWcuYzozMDAKKyM6IGJ1aWx0aW4vdGFnLmM6Mjk0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIHRhZyBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIHbDoG8gdOG6rXAgdGluIGzGsHUgdGjhursiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzI1CisjOiBidWlsdGluL3RhZy5jOjMxOQogbXNnaWQgImJhZCBvYmplY3QgdHlwZS4iCiBtc2dzdHIgImtp4buDdSDEkeG7kWkgdMaw4bujbmcgc2FpLiIKIAotIzogYnVpbHRpbi90YWcuYzozMzgKKyM6IGJ1aWx0aW4vdGFnLmM6MzMyCiBtc2dpZCAidGFnIGhlYWRlciB0b28gYmlnLiIKIG1zZ3N0ciAixJHhuqd1IHRo4bq7ICh0YWcpIHF1w6EgbOG7m24uIgogCi0jOiBidWlsdGluL3RhZy5jOjM3MAorIzogYnVpbHRpbi90YWcuYzozNjgKIG1zZ2lkICJubyB0YWcgbWVzc2FnZT8iCiBtc2dzdHIgImtow7RuZyBjw7MgdGjDtG5nIMSRaeG7h3AgKG1lc3NhZ2UpIGNobyB0aOG6uyAodGFnKT8iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mzc2CisjOiBidWlsdGluL3RhZy5jOjM3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgdGFnIG1lc3NhZ2UgaGFzIGJlZW4gbGVmdCBpbiAlc1xuIgogbXNnc3RyICJO4buZaSBkdW5nIGdoaSBjaMO6IGPDsm4gbOG6oWkgJXNcbiIKIAotIzogYnVpbHRpbi90YWcuYzo0MjUKKyM6IGJ1aWx0aW4vdGFnLmM6NDIzCiBtc2dpZCAic3dpdGNoICdwb2ludHMtYXQnIHJlcXVpcmVzIGFuIG9iamVjdCIKIG1zZ3N0ciAiY2h1eeG7g24gxJHhur9uIOKAnHBvaW50cy1hdOKAnSB5w6p1IGPhuqduIG3hu5l0IMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi90YWcuYzo0MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1hbGZvcm1lZCBvYmplY3QgbmFtZSAnJXMnIgogbXNnc3RyICJ0w6puIMSR4buRaSB0xrDhu6NuZyBk4buLIGjDrG5oIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL3RhZy5jOjQ0NworIzogYnVpbHRpbi90YWcuYzo0NDUKIG1zZ2lkICJsaXN0IHRhZyBuYW1lcyIKIG1zZ3N0ciAiY2jhu4kgbGnhu4d0IGvDqiB0w6puIGPDoWMgdGjhursiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDQ5CisjOiBidWlsdGluL3RhZy5jOjQ0NwogbXNnaWQgInByaW50IDxuPiBsaW5lcyBvZiBlYWNoIHRhZyBtZXNzYWdlIgogbXNnc3RyICJoaeG7g24gdGjhu4sgPG4+IGTDsm5nIGNobyBt4buXaSBnaGkgY2jDuiIKIAotIzogYnVpbHRpbi90YWcuYzo0NTEKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ5CiBtc2dpZCAiZGVsZXRlIHRhZ3MiCiBtc2dzdHIgInjDs2EgdGjhursiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDUyCisjOiBidWlsdGluL3RhZy5jOjQ1MAogbXNnaWQgInZlcmlmeSB0YWdzIgogbXNnc3RyICJ0aOG6qW0gdHJhIHRo4bq7IgogCi0jOiBidWlsdGluL3RhZy5jOjQ1NAorIzogYnVpbHRpbi90YWcuYzo0NTIKIG1zZ2lkICJUYWcgY3JlYXRpb24gb3B0aW9ucyIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gdOG6oW8gdGFnIgogCi0jOiBidWlsdGluL3RhZy5jOjQ1NgorIzogYnVpbHRpbi90YWcuYzo0NTQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnLCBuZWVkcyBhIG1lc3NhZ2UiCiBtc2dzdHIgIsSR4buDIGNow7ogZ2nhuqNpIGNobyB0aOG6uywgY+G6p24gbeG7mXQgbOG7nWkgZ2hpIGNow7oiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDU4CisjOiBidWlsdGluL3RhZy5jOjQ1NgogbXNnaWQgInRhZyBtZXNzYWdlIgogbXNnc3RyICJ0aW4gbmjhuq9uIGNobyB0aOG6uyAodGFnKSIKIAotIzogYnVpbHRpbi90YWcuYzo0NjAKKyM6IGJ1aWx0aW4vdGFnLmM6NDU4CiBtc2dpZCAiYW5ub3RhdGVkIGFuZCBHUEctc2lnbmVkIHRhZyIKIG1zZ3N0ciAidGjhursgY2jDuiBnaeG6o2kgdsOgIGvDvSBraeG7g3UgR1BHIgogCi0jOiBidWlsdGluL3RhZy5jOjQ2NAorIzogYnVpbHRpbi90YWcuYzo0NjIKIG1zZ2lkICJ1c2UgYW5vdGhlciBrZXkgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICJkw7luZyBraMOhbyBraMOhYyDEkeG7gyBrw70gdGjhursiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDY1CisjOiBidWlsdGluL3RhZy5jOjQ2MwogbXNnaWQgInJlcGxhY2UgdGhlIHRhZyBpZiBleGlzdHMiCiBtc2dzdHIgInRoYXkgdGjhur8gbuG6v3UgdGFnIMSRw7MgxJHDoyBjw7MgdHLGsOG7m2MiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDY2CisjOiBidWlsdGluL3RhZy5jOjQ2NAogbXNnaWQgInNob3cgdGFnIGxpc3QgaW4gY29sdW1ucyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggdGjhursgdHJvbmcgY8OhYyBj4buZdCIKIAotIzogYnVpbHRpbi90YWcuYzo0NjgKKyM6IGJ1aWx0aW4vdGFnLmM6NDY2CiBtc2dpZCAiVGFnIGxpc3Rpbmcgb3B0aW9ucyIKIG1zZ3N0ciAiQ8OhYyB0w7l5IGNo4buNbiBsaeG7h3Qga8OqIHRo4bq7IgogCi0jOiBidWlsdGluL3RhZy5jOjQ3MQorIzogYnVpbHRpbi90YWcuYzo0NjkKIG1zZ2lkICJwcmludCBvbmx5IHRhZ3MgdGhhdCBjb250YWluIHRoZSBjb21taXQiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBuaOG7r25nIG5ow6FuaCBtw6AgbsOzIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIgogCi0jOiBidWlsdGluL3RhZy5jOjQ3NworIzogYnVpbHRpbi90YWcuYzo0NzUKIG1zZ2lkICJwcmludCBvbmx5IHRhZ3Mgb2YgdGhlIG9iamVjdCIKIG1zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIGPDoWMgdGjhursgY+G7p2EgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL3RhZy5jOjUwNgorIzogYnVpbHRpbi90YWcuYzo1MDQKIG1zZ2lkICItLWNvbHVtbiBhbmQgLW4gYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1jb2x1bW4gdsOgIC1uIHh1bmcga2jhuq9jIG5oYXUiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTIzCisjOiBidWlsdGluL3RhZy5jOjUyMQogbXNnaWQgIi1uIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgInTDuXkgY2jhu41uIC1uIGNo4buJIGNobyBwaMOpcCBkw7luZyB24bubaSAtbC4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTI1CisjOiBidWlsdGluL3RhZy5jOjUyMwogbXNnaWQgIi0tY29udGFpbnMgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAidMO5eSBjaOG7jW4gLS1jb250YWlucyBjaOG7iSBjaG8gcGjDqXAgZMO5bmcgduG7m2kgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNworIzogYnVpbHRpbi90YWcuYzo1MjUKIG1zZ2lkICItLXBvaW50cy1hdCBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICJ0w7l5IGNo4buNbiAtLXBvaW50cy1hdCBjaOG7iSBjaG8gcGjDqXAgZMO5bmcgduG7m2kgLWwuIgogCi0jOiBidWlsdGluL3RhZy5jOjUzNQorIzogYnVpbHRpbi90YWcuYzo1MzMKIG1zZ2lkICJvbmx5IG9uZSAtRiBvciAtbSBvcHRpb24gaXMgYWxsb3dlZC4iCiBtc2dzdHIgImNo4buJIGPDsyBt4buZdCB0w7l5IGNo4buNbiAtRiBob+G6t2MgLW0gbMOgIMSRxrDhu6NjIHBow6lwLiIKIAotIzogYnVpbHRpbi90YWcuYzo1NTUKKyM6IGJ1aWx0aW4vdGFnLmM6NTUzCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1zIgogbXNnc3RyICJxdcOhIG5oaeG7gXUgxJHhu5FpIHPhu5EiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTYxCisjOiBidWlsdGluL3RhZy5jOjU1OQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIHRhZyBuYW1lLiIKIG1zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSB0aOG6uyBo4bujcCBs4buHLiIKIAotIzogYnVpbHRpbi90YWcuYzo1NjYKKyM6IGJ1aWx0aW4vdGFnLmM6NTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgInRhZyAnJXMnIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJUaOG6uyDigJwlc+KAnSDEkcOjIHThu5NuIHThuqFpIHLhu5NpIgogCi0jOiBidWlsdGluL3RhZy5jOjU4NAorIzogYnVpbHRpbi90YWcuYzo1ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBsb2NrIHRoZSByZWYiCiBtc2dzdHIgIiVzOiBraMO0bmcgdGjhu4Mga2jDs2EgcmVmICh0aGFtIGNoaeG6v3UpIgogCi0jOiBidWlsdGluL3RhZy5jOjU4NgorIzogYnVpbHRpbi90YWcuYzo1ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCB1cGRhdGUgdGhlIHJlZiIKIG1zZ3N0ciAiJXM6IGtow7RuZyB0aOG7gyBj4bqtcCBuaOG6rXQgcmVmICh0aGFtIGNoaeG6v3UpIgogCi0jOiBidWlsdGluL3RhZy5jOjU4OAorIzogYnVpbHRpbi90YWcuYzo1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBkYXRlZCB0YWcgJyVzJyAod2FzICVzKVxuIgogbXNnc3RyICLEkMOjIGPhuq1wIG5o4bqtdCB0aOG6uyDigJwlc+KAnSAodHLGsOG7m2MgbMOgICVzKVxuIgpAQCAtODYyNSwyMyArOTE2NSwyOSBAQAogbXNnc3RyICJjaOG7iSBo4buvdSDDrWNoIGtoaSBj4bqnbiBn4buhIGzhu5dpIgogCiAjOiBnaXQuYzoxNgotbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgorbXNnaWQgIiIKKyInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgorImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKyJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKIG1zZ3N0ciAiIgotIkNo4bqheSBs4buHbmgg4oCcZ2l0IGhlbHAgPHTDqm4tbOG7h25oPuKAnSDEkeG7gyBjw7MgdGjDqm0gdGjDtG5nIHRpbiB24buBIGzhu4duaCDEkcaw4bujYyBjaOG7iSByYS4iCisi4oCcZ2l0IGhlbHAgLWHigJ0gdsOgIOKAnGdpdCBoZWxwIC1n4oCdIGxp4buHdCBrw6ogY8OhYyBjw6J1IGzhu4duaCBjb24gc+G6tW4gY8OzIHbDoCBt4buZdCBz4buRXG4iCisiaMaw4bubbmcgZOG6q24ga2jDoWkgbmnhu4dtIGPGoSBi4bqjbi4gWGVtIOKAnGdpdCBoZWxwIDxs4buHbmg+4oCdIGhheSDigJxnaXQgaGVscCA8a2jDoWkgIgorIm5p4buHbT7igJ1cbiIKKyLEkeG7gyDEkeG7jWMgY8OhYyDEkeG6t2MgdOG6oyBjaG8gbOG7h25oIGhheSBraMOhaSBuaeG7h20gxJHDsy4iCiAKICM6IHBhcnNlLW9wdGlvbnMuaDoxNTYKIG1zZ2lkICJuby1vcCAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSkiCiBtc2dzdHIgIm5vLW9wICh0xrDGoW5nIHRow61jaCBuZ8aw4bujYykiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMjgKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzIKIG1zZ2lkICJiZSBtb3JlIHZlcmJvc2UiCiBtc2dzdHIgImNoaSB0aeG6v3QgaMahbiBu4buvYSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzMAorIzogcGFyc2Utb3B0aW9ucy5oOjIzNAogbXNnaWQgImJlIG1vcmUgcXVpZXQiCiBtc2dzdHIgImltIGzhurduZyBoxqFuIG7hu69hIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjM2CisjOiBwYXJzZS1vcHRpb25zLmg6MjQwCiBtc2dpZCAidXNlIDxuPiBkaWdpdHMgdG8gZGlzcGxheSBTSEEtMXMiCiBtc2dzdHIgInPhu60gZOG7pW5nIDxuPiBjaOG7ryBz4buRIMSR4buDIGhp4buDbiB0aOG7iyBTSEEtMXMiCiAKQEAgLTg2ODQsNyArOTIzMCw3IEBACiBtc2dzdHIgIkluIHJhIG5o4buvbmcgZMOybmcga2jhu5twIHbhu5tpIG3hu5l0IG3huqt1IgogCiAjOiBjb21tb24tY21kcy5oOjE3Ci1tc2dpZCAiQ3JlYXRlIGFuIGVtcHR5IGdpdCByZXBvc2l0b3J5IG9yIHJlaW5pdGlhbGl6ZSBhbiBleGlzdGluZyBvbmUiCittc2dpZCAiQ3JlYXRlIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5IG9yIHJlaW5pdGlhbGl6ZSBhbiBleGlzdGluZyBvbmUiCiBtc2dzdHIgIiIKICJU4bqhbyBt4buZdCBraG8gZ2l0IHRy4buRbmcgcuG7l25nIGhheSBraOG7n2kgdOG6oW8gbOG6oWkgbeG7mXQga2hvIMSRw6MgdOG7k24gdOG6oWkgdOG7qyB0csaw4bubYyIKIApAQCAtODgyNCw4ICs5MzcwLDcgQEAKIAogIzogZ2l0LWFtLnNoOjUwOQogbXNnaWQgIlJlc29sdmUgb3BlcmF0aW9uIG5vdCBpbiBwcm9ncmVzcywgd2UgYXJlIG5vdCByZXN1bWluZy4iCi1tc2dzdHIgIiIKLSJUaGFvIHTDoWMgcGjDom4gZ2nhuqNpIGtow7RuZyDEkWFuZyDEkcaw4bujYyB0aeG6v24gaMOgbmgsIGNow7puZyB0YSBraMO0bmcgcGjhu6VjIGjhu5NpIGzhuqFpLiIKK21zZ3N0ciAiVGhhbyB0w6FjIHBow6JuIGdp4bqjaSBraMO0bmcgxJHGsOG7o2MgdGnhur9uIGjDoG5oLCBjaMO6bmcgdGEga2jDtG5nIHBo4bulYyBo4buTaSBs4bqhaS4iCiAKICM6IGdpdC1hbS5zaDo1NzUKICMsIHNoLWZvcm1hdApAQCAtOTAxMCwxNiArOTU1NSwxNiBAQAogInNhaS5cbiIKICIoQuG6oW4gY8OzIHRo4buDIHPhu60gZOG7pW5nIFwiZ2l0IGJpc2VjdCBiYWRcIiB2w6AgXCJnaXQgYmlzZWN0IGdvb2RcIiBjaG8gY2jDum5nLikiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzQ3IGdpdC1iaXNlY3Quc2g6NDc0CisjOiBnaXQtYmlzZWN0LnNoOjM2MyBnaXQtYmlzZWN0LnNoOjQ5MAogbXNnaWQgIldlIGFyZSBub3QgYmlzZWN0aW5nLiIKIG1zZ3N0ciAiQ2jDum5nIHTDtGkga2jDtG5nIGJpc2VjdC4iCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzU0CisjOiBnaXQtYmlzZWN0LnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRpbnZhbGlkJyBpcyBub3QgYSB2YWxpZCBjb21taXQiCiBtc2dzdHIgIuKAnSRpbnZhbGlk4oCdIGtow7RuZyBwaOG6o2kgbMOgIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgaOG7o3AgbOG7hyIKIAotIzogZ2l0LWJpc2VjdC5zaDozNjMKKyM6IGdpdC1iaXNlY3Quc2g6Mzc5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiQ291bGQgbm90IGNoZWNrIG91dCBvcmlnaW5hbCBIRUFEICckYnJhbmNoJy5cbiIKQEAgLTkwMjgsMjUgKzk1NzMsMjUgQEAKICJLaMO0bmcgdGjhu4MgY2hlY2stb3V0IEhFQUQgbmd1ecOqbiB0aOG7p3kgY+G7p2Eg4oCcJGJyYW5jaOKAnS5cbiIKICJIw6N5IHRo4butIOKAnGdpdCBiaXNlY3QgcmVzZXQgPGzhuqduLWNodXnhu4NuLWdpYW8+4oCdLiIKIAotIzogZ2l0LWJpc2VjdC5zaDozOTAKKyM6IGdpdC1iaXNlY3Quc2g6NDA2CiBtc2dpZCAiTm8gbG9nZmlsZSBnaXZlbiIKIG1zZ3N0ciAiQ2jGsGEgY2jhu4kgcmEgdOG6rXAgdGluIGdoaSBuaOG6rXQga8O9IgogCi0jOiBnaXQtYmlzZWN0LnNoOjM5MQorIzogZ2l0LWJpc2VjdC5zaDo0MDcKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICRmaWxlIGZvciByZXBsYXlpbmciCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgJGZpbGUgxJHhu4MgdGhhbyBkaeG7hW4gbOG6oWkiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDA4CisjOiBnaXQtYmlzZWN0LnNoOjQyNAogbXNnaWQgIj8/IHdoYXQgYXJlIHlvdSB0YWxraW5nIGFib3V0PyIKIG1zZ3N0ciAiPz8gYuG6oW4gxJFhbmcgbsOzaSBnw6wgdGjhur8/IgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyMAorIzogZ2l0LWJpc2VjdC5zaDo0MzYKICMsIHNoLWZvcm1hdAogbXNnaWQgInJ1bm5pbmcgJGNvbW1hbmQiCiBtc2dzdHIgIsSRYW5nIGNo4bqheSBs4buHbmggJGNvbW1hbmQiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDI3CisjOiBnaXQtYmlzZWN0LnNoOjQ0MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogImJpc2VjdCBydW4gZmFpbGVkOlxuIgpAQCAtOTA1NSwxMSArOTYwMCwxMSBAQAogImNo4bqheSBiaXNlY3QgZ+G6t3AgbOG7l2k6XG4iCiAibcOjIHRy4bqjIHbhu4EgJHJlcyB04burIGzhu4duaCDigJwkY29tbWFuZOKAnSBsw6AgPCAwIGhv4bq3YyA+PSAxMjgiCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDUzCisjOiBnaXQtYmlzZWN0LnNoOjQ2OQogbXNnaWQgImJpc2VjdCBydW4gY2Fubm90IGNvbnRpbnVlIGFueSBtb3JlIgogbXNnc3RyICJiaXNlY3Qga2jDtG5nIHRo4buDIHRp4bq/cCB04bulYyB0aMOqbSDEkcaw4bujYyBu4buvYSIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTkKKyM6IGdpdC1iaXNlY3Quc2g6NDc1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiYmlzZWN0IHJ1biBmYWlsZWQ6XG4iCkBAIC05MDY4LDcgKzk2MTMsNyBAQAogImNo4bqheSBiaXNlY3QgZ+G6t3AgbOG7l2k6XG4iCiAi4oCdYmlzZWN0X3N0YXRlICRzdGF0ZeKAnSDEkcOjIHRob8OhdCByYSB24bubaSBtw6MgbOG7l2kgJHJlcyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NjYKKyM6IGdpdC1iaXNlY3Quc2g6NDgyCiBtc2dpZCAiYmlzZWN0IHJ1biBzdWNjZXNzIgogbXNnc3RyICJiaXNlY3QgY2jhuqF5IHRow6BuaCBjw7RuZyIKIApAQCAtOTA4OCw3ICs5NjMzLDcgQEAKIG1zZ3N0ciAiIgogIkZ1bGwgbMOgIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGLhu59pIHbDrCBi4bqhbiBjw7Mgbmjhu69uZyB04bqtcCB0aW4gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4uIgogCi0jOiBnaXQtcHVsbC5zaDoxOTcKKyM6IGdpdC1wdWxsLnNoOjIwMwogbXNnaWQgInVwZGF0aW5nIGFuIHVuYm9ybiBicmFuY2ggd2l0aCBjaGFuZ2VzIGFkZGVkIHRvIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogIsSRYW5nIGPhuq1wIG5o4bqtdCBt4buZdCBuaMOhbmggY2jGsGEgxJHGsOG7o2Mgc2luaCByYSB24bubaSBjw6FjIHRoYXkgxJHhu5VpIMSRxrDhu6NjIHRow6ptIHbDoG8gIgpAQCAtOTA5OCw3ICs5NjQzLDcgQEAKICMuIFRoZSB3b3JraW5nIHRyZWUgYW5kIHRoZSBpbmRleCBmaWxlIGlzIHN0aWxsIGJhc2VkIG9uIHRoZQogIy4gJG9yaWdfaGVhZCBjb21taXQsIGJ1dCB3ZSBhcmUgbWVyZ2luZyBpbnRvICRjdXJyX2hlYWQuCiAjLiBGaXJzdCB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSB0byBtYXRjaCAkY3Vycl9oZWFkLgotIzogZ2l0LXB1bGwuc2g6MjI5CisjOiBnaXQtcHVsbC5zaDoyMzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiBmZXRjaCB1cGRhdGVkIHRoZSBjdXJyZW50IGJyYW5jaCBoZWFkLlxuIgpAQCAtOTEwOSwxMSArOTY1NCwxMSBAQAogIkPhuqNuaCBiw6FvOiDEkWFuZyBmYXN0LWZvcndhcmQgY8OieSBsw6BtIHZp4buHYyBj4bunYSBi4bqhbiB04burXG4iCiAiQ+G6o25oIGLDoW86IGNvbW1pdCAkb3JpZ19oZWFkLiIKIAotIzogZ2l0LXB1bGwuc2g6MjU0CisjOiBnaXQtcHVsbC5zaDoyNjAKIG1zZ2lkICJDYW5ub3QgbWVyZ2UgbXVsdGlwbGUgYnJhbmNoZXMgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgaMOyYSB0cuG7mW4gbmhp4buBdSBuaMOhbmggdsOgIHRyb25nIG3hu5l0IGhlYWQgdHLhu5FuZyBy4buXbmciCiAKLSM6IGdpdC1wdWxsLnNoOjI1OAorIzogZ2l0LXB1bGwuc2g6MjY0CiBtc2dpZCAiQ2Fubm90IHJlYmFzZSBvbnRvIG11bHRpcGxlIGJyYW5jaGVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiBs4buHbmggcmViYXNlIChjxqEgY+G6pXUgbOG6oWkpIHRyw6puIG5oaeG7gXUgbmjDoW5oIgogCkBAIC05Mzc5LDQxICs5OTI0LDQxIEBACiBtc2dpZCAiKFRvIHJlc3RvcmUgdGhlbSB0eXBlIFwiZ2l0IHN0YXNoIGFwcGx5XCIpIgogbXNnc3RyICIoxJDhu4MgcGjhu6VjIGjhu5NpIGzhuqFpIGNow7puZyBow6N5IGfDtSBcImdpdCBzdGFzaCBhcHBseVwiKSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHN0cmlwIG9uZSBjb21wb25lbnQgb2ZmIHVybCAnJHJlbW90ZXVybCciCiBtc2dzdHIgImtow7RuZyB0aOG7gyB0aMOhbyBi4buPIG3hu5l0IHRow6BuaCBwaOG6p24gcmEga2jhu49pIOKAnCRyZW1vdGV1cmzigJ0gdXJsIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjE2OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxOTYKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHN1Ym1vZHVsZSBtYXBwaW5nIGZvdW5kIGluIC5naXRtb2R1bGVzIGZvciBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKICJLaMO0bmcgdMOsbSB0aOG6pXkgw6FuaCB44bqhIChtYXBwaW5nKSBtw7QtxJF1bi1jb24gdHJvbmcgLmdpdG1vZHVsZXMgY2hvIMSRxrDhu51uZyBk4bqrbiAiCiAi4oCcJHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjExCisjOiBnaXQtc3VibW9kdWxlLnNoOjIzOQogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ2xvbmUgb2YgJyR1cmwnIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBmYWlsZWQiCiBtc2dzdHIgIk5ow6JuIGLhuqNuIOKAnCR1cmzigJ0gdsOgbyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIGfhurdwIGzhu5dpIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjIyMworIzogZ2l0LXN1Ym1vZHVsZS5zaDoyNTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkdpdGRpciAnJGEnIGlzIHBhcnQgb2YgdGhlIHN1Ym1vZHVsZSBwYXRoICckYicgb3IgdmljZSB2ZXJzYSIKIG1zZ3N0ciAiIgogIkdpdGRpciDigJwkYeKAnSBsw6AgYuG7mSBwaOG6rW4gY+G7p2EgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkYuKAnSBob+G6t2MgXCJ2aWNlIHZlcnNhXCIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzE2CisjOiBnaXQtc3VibW9kdWxlLnNoOjM0OQogIywgc2gtZm9ybWF0CiBtc2dpZCAicmVwbyBVUkw6ICckcmVwbycgbXVzdCBiZSBhYnNvbHV0ZSBvciBiZWdpbiB3aXRoIC4vfC4uLyIKIG1zZ3N0ciAiIgogInJlcG8gVVJMOiDigJwkcmVwb+KAnSBwaOG6o2kgbMOgIMSRxrDhu51uZyBk4bqrbiB0dXnhu4d0IMSR4buRaSBob+G6t2MgbMOgIGLhuq90IMSR4bqndSBi4bqxbmcgLi98Li4vIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMzMworIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjYKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgogbXNnc3RyICLigJ0kc21fcGF0aOKAnSB0aOG7sWMgc+G7sSDEkcOjIHThu5NuIHThuqFpIOG7nyBi4bqjbmcgbeG7pWMgbOG7pWMgcuG7k2kiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzM3CisjOiBnaXQtc3VibW9kdWxlLnNoOjM3MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBmb2xsb3dpbmcgcGF0aCBpcyBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iCkBAIC05NDI1LDE5NiArOTk3MCwzMDYgQEAKICIkc21fcGF0aFxuIgogIlPhu60gZOG7pW5nIC1mIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiB0aMOqbSBuw7MgdsOgby4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzU1CisjOiBnaXQtc3VibW9kdWxlLnNoOjM4OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGV4aXN0aW5nIHJlcG8gYXQgJyRzbV9wYXRoJyB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIsSQYW5nIHRow6ptIHJlcG8gY8OzIHPhurVuIHThuqFpIOKAnCRzbV9wYXRo4oCdIHbDoG8gYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM1NworIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgogbXNnc3RyICLigJ0kc21fcGF0aOKAnSDEkcOjIHThu5NuIHThuqFpIHThu6sgdHLGsOG7m2MgdsOgIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IGtobyBnaXQgaOG7o3AgbOG7hyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjUKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Mzk4CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJBIGdpdCBkaXJlY3RvcnkgZm9yICckc21fbmFtZScgaXMgZm91bmQgbG9jYWxseSB3aXRoIHJlbW90ZShzKToiCiBtc2dzdHIgIiIKLSJUaMawIG3hu6VjIGdpdCBjaG8gJyRzbV9uYW1lJyDEkcaw4bujYyB0w6xtIHRo4bqleSBt4buZdCBjw6FjaCBj4bulYyBi4buZIHbhu5tpIGPDoWMgbcOheSBjaOG7pzoiCisiVGjGsCBt4bulYyBnaXQgY2hvIOKAnCRzbV9uYW1l4oCdIMSRxrDhu6NjIHTDrG0gdGjhuqV5IG3hu5l0IGPDoWNoIGPhu6VjIGLhu5kgduG7m2kgY8OhYyBtw6F5IGNo4bunOiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiSWYgeW91IHdhbnQgdG8gcmV1c2UgdGhpcyBsb2NhbCBnaXQgZGlyZWN0b3J5IGluc3RlYWQgb2YgY2xvbmluZyBhZ2FpbiBmcm9tIgogbXNnc3RyICJO4bq/dSBi4bqhbiBtdeG7kW4gZMO5bmcgbOG6oWkgdGjGsCBt4bulYyBnaXQgbuG7mWkgYuG7mSBuw6B5IHRoYXkgdsOsIG5ow6JuIGLhuqNuIHThu6sgbsOzIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDIKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJ1c2UgdGhlICctLWZvcmNlJyBvcHRpb24uIElmIHRoZSBsb2NhbCBnaXQgZGlyZWN0b3J5IGlzIG5vdCB0aGUgY29ycmVjdCByZXBvIgogbXNnc3RyICIiCi0iZMO5bmcgdMO5eSBjaOG7jW4gJy0tZm9yY2UnLiBO4bq/dSB0aMawIG3hu6VjIGdpdCBu4buZaSBi4buZIGtow7RuZyBwaOG6o2kgbMOgIHJlcG8gKGtobykgxJHDum5nIgorImTDuW5nIHTDuXkgY2jhu41uIOKAnC0tZm9yY2XigJ0uIE7hur91IHRoxrAgbeG7pWMgZ2l0IG7hu5lpIGLhu5kga2jDtG5nIHBo4bqjaSBsw6AgcmVwbyAoa2hvKSDEkcO6bmciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzcwCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIm9yIHlvdSBhcmUgdW5zdXJlIHdoYXQgdGhpcyBtZWFucyBjaG9vc2UgYW5vdGhlciBuYW1lIHdpdGggdGhlICctLW5hbWUnICIKICJvcHRpb24uIgogbXNnc3RyICIiCi0iaGF5IGLhuqFuIGtow7RuZyBjaOG6r2MgY2jhuq9uIMSRaeG7gXUgxJHDsyBjw7MgbmdoxKlhIGfDrCBjaOG7jW4gdMOqbiBraMOhYyB24bubaSB0w7l5IGNo4buNbiAnLS0iCi0ibmFtZScuIgorImhheSBi4bqhbiBraMO0bmcgY2jhuq9jIGNo4bqvbiDEkWnhu4F1IMSRw7MgY8OzIG5naMSpYSBnw6wgY2jhu41uIHTDqm4ga2jDoWMgduG7m2kgdMO5eSBjaOG7jW4g4oCcLS0iCisibmFtZeKAnS4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzcyCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiUmVhY3RpdmF0aW5nIGxvY2FsIGdpdCBkaXJlY3RvcnkgZm9yIHN1Ym1vZHVsZSAnJHNtX25hbWUnLiIKIG1zZ3N0ciAiIgotIlBo4bulYyBo4buTaSBz4buxIGhv4bqhdCDEkeG7mW5nIGPhu6dhIHRoxrAgbeG7pWMgZ2l0IG7hu5lpIGLhu5kgY2hvIG3DtC3EkXVuLWNvbiAnJHNtX25hbWUnLiIKKyJQaOG7pWMgaOG7k2kgc+G7sSBob+G6oXQgxJHhu5luZyBj4bunYSB0aMawIG3hu6VjIGdpdCBu4buZaSBi4buZIGNobyBtw7QtxJF1bi1jb24g4oCcJHNtX25hbWXigJ0uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM4NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MTcKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGNoZWNrb3V0IG3DtC3EkXVuIGNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozODkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDIyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gYWRkIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdGjDqm0gbcO0LcSRdW4gY29uIOKAnCRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM5NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSRxINuZyBrw70gduG7m2kgaOG7hyB0aOG7kW5nIG3DtC3EkXVuIGNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDc0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRzbV9wYXRoJyIKIG1zZ3N0ciAixJBhbmcgbmjhuq1wIOKAnCRwcmVmaXgkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDg4CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdG9wcGluZyBhdCAnJHNtX3BhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKIG1zZ3N0ciAiROG7q25nIGzhuqFpIHThuqFpIOKAnCRzbV9wYXRo4oCdOyBzY3JpcHQgdHLhuqMgduG7gSB0cuG6oW5nIHRow6FpIGtow6FjIGtow7RuZy4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDk1CisjOiBnaXQtc3VibW9kdWxlLnNoOjUzMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gdXJsIGZvdW5kIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIgogbXNnc3RyICIiCiAiS2jDtG5nIHTDrG0gdGjhuqV5IHVybCBjaG8gxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSB0cm9uZyAuZ2l0bW9kdWxlcyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHEg25nIGvDvSB1cmwgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTA2CisjOiBnaXQtc3VibW9kdWxlLnNoOjU0MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAiTcO0LcSRdW4tY29uIOKAnCRuYW1l4oCdICgkdXJsKSDEkcaw4bujYyDEkcSDbmcga8O9IGNobyDEkcaw4budbmcgZOG6q24g4oCcJHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTE0CisjOiBnaXQtc3VibW9kdWxlLnNoOjU1MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVwZGF0ZSBtb2RlIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAiR+G6t3AgbOG7l2kga2hpIMSRxINuZyBrw70gY2jhur8gxJHhu5kgY+G6rXAgbmjhuq10IGNobyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYxNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1ODgKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlVzZSAnLicgaWYgeW91IHJlYWxseSB3YW50IHRvIGRlaW5pdGlhbGl6ZSBhbGwgc3VibW9kdWxlcyIKK21zZ3N0ciAiRMO5bmcg4oCcLuKAnSBu4bq/dSBi4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4gZ+G7oSBi4buPIG3hu41pIG3DtC3EkXVuLWNvbiIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDMKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IgorbXNnc3RyICJDw6J5IGzDoG0gdmnhu4djIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSBjw7MgY2jhu6lhIHRoxrAgbeG7pWMgLmdpdCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDQKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKLSJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIG5vdCBpbml0aWFsaXplZFxuIgorIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIKK21zZ3N0ciAiIgorIihkw7luZyDigJxybSAtcmbigJ0gbuG6v3UgYuG6oW4gdGjhu7FjIHPhu7EgbXXhu5FuIGfhu6EgYuG7jyBuw7MgY8O5bmcgduG7m2kgdOG6pXQgY+G6oyBs4buLY2ggc+G7rSBj4bunYSAiCisiY2jDum5nKSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gIgorImRpc2NhcmQgdGhlbSIKK21zZ3N0ciAiIgorIkPDonkgbMOgbSB2aeG7h2MgbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIGNo4bupYSBjw6FjIHRoYXkgxJHhu5VpIG7hu5lpIGLhu5k7IGjDo3kgZMO5bmcg4oCcLWbigJ0gIgorIsSR4buDIGxv4bqhaSBi4buPIGNow7puZyDEkWkiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICJUaMawIG3hu6VjIMSRxrDhu6NjIGThu41uIOKAnCRzbV9wYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyBn4buhIGLhu48gY8OieSBsw6BtIHZp4buHYyBtw7QtxJF1biBjb24g4oCcJHNtX3BhdGjigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE3CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHThuqFvIHRoxrAgbeG7pWMgbcO0LcSRdW4tY29uIHLhu5duZyDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjYKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKK21zZ3N0ciAiTcO0LcSRdW4tY29uIOKAnCRuYW1l4oCdICgkdXJsKSDEkcaw4bujYyBi4buPIMSRxINuZyBrw70gY2hvIMSRxrDhu51uZyBk4bqrbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKICJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKIG1zZ3N0ciAiIgotIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0gY2jGsGEgxJHGsOG7o2Mga2jhu59pIHThuqFvXG4iCisixJDGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0gY2jGsGEgxJHGsOG7o2Mga2jhu59pIHThuqFvXG4iCiAiQ8OzIGzhur0gYuG6oW4gbXXhu5FuIHPhu60gZOG7pW5nIGzhu4duaCDigJx1cGRhdGUgLS1pbml04oCdPyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzQ0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKIG1zZ3N0ciAiIgotIktow7RuZyB0w6xtIHRo4bqleSDEkWnhu4NtIHjDqXQgbOG6oWkgaGnhu4duIGjDoG5oIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0iCisiS2jDtG5nIHTDrG0gdGjhuqV5IMSRaeG7g20geMOpdCBs4bqhaSBoaeG7h24gaMOgbmggdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4IgorIiRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY0NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgbOG6pXkgduG7gSAoZmV0Y2gpIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjYwCisjOiBnaXQtc3VibW9kdWxlLnNoOjc3NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIHJlYmFzZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIktow7RuZyB0aOG7gyByZWJhc2Ug4oCcJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKK21zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB24buBIChmZXRjaCkgdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjYxCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5MQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCi1tc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ06IMSRxrDhu6NjIHJlYmFzZSB2w6BvIHRyb25nIOKAnCRzaGEx4oCdIgorbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHJlYmFzZSDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NjYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKK21zZ3N0ciAixJDGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ06IMSRxrDhu6NjIHJlYmFzZSB2w6BvIHRyb25nIOKAnCRzaGEx4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjc5NworIywgc2gtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKLSJLaMO0bmcgdGjhu4MgaMOyYSB0cuG7mW4gKG1lcmdlKSDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIgorIktow7RuZyB0aOG7gyBow7JhIHRy4buZbiAobWVyZ2UpIOKAnCRzaGEx4oCdIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCIKKyIkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NjcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKLW1zZ3N0ciAixJDGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnTogxJHGsOG7o2MgaMOyYSB0cuG7mW4gdsOgbyDigJwkc2hhMeKAnSIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NzIKLSMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBjaGVja291dCDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY3MwotIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKLW1zZ3N0ciAixJDGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnTogxJHGsOG7o2MgY2hlY2tvdXQg4oCcJHNoYTHigJ0iCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6Njk1IGdpdC1zdWJtb2R1bGUuc2g6MTAxNwotIywgc2gtZm9ybWF0Ci1tc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdOiDEkcaw4bujYyBow7JhIHRy4buZbiB2w6BvIOKAnCRzaGEx4oCdIgogCiAjOiBnaXQtc3VibW9kdWxlLnNoOjgwMworIywgc2gtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4MgY2hlY2tvdXQg4oCcJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODA0CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKK21zZ3N0ciAixJDGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ06IMSRxrDhu6NjIGNoZWNrb3V0IOKAnCRzaGEx4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjgzMQorIywgc2gtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buHIHF1eSB2w6BvIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjkzOQogbXNnaWQgIlRoZSAtLWNhY2hlZCBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgLS1maWxlcyBvcHRpb24iCiBtc2dzdHIgIlTDuXkgY2jhu41uIC0tY2FjaGVkIGtow7RuZyB0aOG7gyBkw7luZyBjw7luZyB24bubaSB0w7l5IGNo4buNbiAtLWZpbGVzIgogCiAjLiB1bmV4cGVjdGVkIHR5cGUKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODQzCisjOiBnaXQtc3VibW9kdWxlLnNoOjk3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgogbXNnc3RyICJjaOG6vyDEkeG7mSBraMO0bmcgbmjGsCBtb25nIGNo4budICRtb2RfZHN0IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjg2MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo5OTcKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9zcmMiCiBtc2dzdHIgIiAgQ+G6o25oIGLDoW86ICRuYW1lIGtow7RuZyBjaOG7qWEgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAkc2hhMV9zcmMiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODY0CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAgQ+G6o25oIGLDoW86ICRuYW1lIGtow7RuZyBjaOG7qWEgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiIKICIgIEPhuqNuaCBiw6FvOiAkbmFtZSBraMO0bmcgY2jhu6lhIG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAkc2hhMV9zcmMgdsOgICIKICIkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODkyCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMjgKIG1zZ2lkICJibG9iIgogbXNnc3RyICJibG9iIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkzMAotbXNnaWQgIiMgU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCi1tc2dzdHIgIiMgQ8OhYyBtw7QtxJF1bi1jb24gxJHDoyBi4buLIHRoYXkgxJHhu5VpIG5oxrBuZyBjaMawYSDEkcaw4bujYyBj4bqtcCBuaOG6rXQ6IgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY2Cittc2dpZCAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCittc2dzdHIgIk5o4buvbmcgbcO0LcSRdW4tY29uIMSRw6MgYuG7iyB0aGF5IMSR4buVaSBuaMawbmcgY2jGsGEgxJHGsOG7o2MgY+G6rXAgbmjhuq10OiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzIKLW1zZ2lkICIjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCi1tc2dzdHIgIiMgTmjhu69uZyB0aGF5IMSR4buVaSBtw7QtxJF1bi1jb24gxJHGsOG7o2MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KToiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjgKK21zZ2lkICJTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgorbXNnc3RyICJOaOG7r25nIG3DtC3EkXVuLWNvbiB0aGF5IMSR4buVaSDEkcOjIMSRxrDhu6NjIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk6IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEwODAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1MworIywgc2gtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckcHJlZml4JHNtX3BhdGgnIgotbXNnc3RyICJVcmwgTcO0LcSRdW4tY29uIMSR4buTbmcgYuG7mSBow7NhIGNobyAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAiVXJsIE3DtC3EkXVuLWNvbiDEkeG7k25nIGLhu5kgaMOzYSBjaG8g4oCcJHByZWZpeCRzbV9wYXRo4oCdIgorCisjfiBtc2dpZCAiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gICdzdGF0dXMgLXVubyciCisjfiBtc2dzdHIgIkPhuqduICUuMmYgZ2nDonkgxJHhu4MgxJHhur9tIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gduG6v3QuICDigJxzdGF0dXMgLXVub+KAnSIKKworI34gbXNnaWQgIm1heSBzcGVlZCBpdCB1cCwgYnV0IHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIGZvcmdldCB0byBhZGQiCisjfiBtc2dzdHIgIiIKKyN+ICJjw7MgdGjhu4MgbMOgbSBuw7MgbmhhbmggbMOqbiwgbmjGsG5nIGLhuqFuIHBo4bqjaSBj4bqpbiB0cuG7jW5nIMSR4burbmcgcXXDqm4gdGjDqm0gbsOzIHbDoG8iCisKKyN+IG1zZ2lkICJuZXcgZmlsZXMgeW91cnNlbGYgKHNlZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgorI34gbXNnc3RyICJ04bqtcCB0aW4gbeG7m2kgY+G7p2EgY2jDrW5oIGLhuqFuICh4ZW0g4oCcZ2l0IGhlbHAgc3RhdHVz4oCdLi4iCisKKyN+IG1zZ2lkICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iCisjfiBtc2dzdHIgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtb3B0c10gWy0tXSBbPGNvbW1pdC1pZD4uLi4gXSIKKworI34gbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgorI34gbXNnc3RyICIiCisjfiAiQ2jhuqF5IGzhu4duaCDigJxnaXQgaGVscCA8dMOqbi1s4buHbmg+4oCdIMSR4buDIGPDsyB0aMOqbSB0aMO0bmcgdGluIHbhu4EgbOG7h25oIMSRxrDhu6NjIGNo4buJIHJhLiIKKworI34gbXNnaWQgInVzZSBhbnkgcmVmIGluIC5naXQvcmVmcyIKKyN+IG1zZ3N0ciAic+G7rSBk4bulbmcgYuG6pXQga+G7syByZWYgbsOgbyB0cm9uZyAuZ2l0L3JlZnMiCisKKyN+IG1zZ2lkICJ1c2UgYW55IHRhZyBpbiAuZ2l0L3JlZnMvdGFncyIKKyN+IG1zZ3N0ciAic+G7rSBk4bulbmcgYuG6pXQga+G7syB0aOG6uyBuw6BvIHRyb25nIC5naXQvcmVmcy90YWdzIgorCisjfiBtc2dpZCAiYmFkIG9iamVjdCAlcyIKKyN+IG1zZ3N0ciAixJHhu5FpIHTGsOG7o25nIHNhaSAlcyIKKworI34gbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgorI34gbXNnc3RyICJ0aMO0bmcgdGluIG5nxrDhu51pIGNodXnhu4NuIGdpYW8ga2jDtG5nIGPDsyB0aOG7sWMgJXMiCisKKyN+IG1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKKyN+IG1zZ3N0ciAia2jDtG5nIHRo4buDIGZkb3BlbiDigJxzaG934oCdIChs4buHbmggaGnhu4NuIHRo4buLKSBtw7QgdOG6oyB04bqtcCB0aW4gKGZkKSBr4bq/dCB4deG6pXQiCisKKyN+IG1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgorI34gbXNnc3RyICJn4bq3cCBs4buXaSBraGkgxJHDs25nIMSRxrDhu51uZyDhu5FuZyBjaG8gbOG7h25oIOKAnHNob3figJ0gY2hvIMSR4buRaSB0xrDhu6NuZyDigJwlc+KAnSIKKworI34gbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQiCisjfiBtc2dzdHIgIkLhuqFuIGtow7RuZyBjw7MgSEVBRCBuw6BvIGjhu6NwIGzhu4ciCisKKyN+IG1zZ2lkICJvb3BzIgorI34gbXNnc3RyICLDtGk/IgorCisjfiBtc2dpZCAiV291bGQgbm90IHJlbW92ZSAlc1xuIgorI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPICVzXG4iCisKKyN+IG1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKKyN+IG1zZ3N0ciAiS2jDtG5nIHjDs2EgJXNcbiIKKworI34gbXNnaWQgIkNvdWxkIG5vdCByZWFkIGluZGV4IgorI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jIGLhuqNuZyBt4bulYyBs4bulYyIKIAogI34gbXNnaWQgImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbWU+ICgtYSB8IC1kIHwgPGJyYW5jaD5dKSIKICN+IG1zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8dMOqbj4gKC1hIHwgLWQgfCA8bmjDoW5oPl0pIgpkaWZmIC0tZ2l0IGEvcG8vemhfQ04ucG8gYi9wby96aF9DTi5wbwppbmRleCA0NmQxNThmLi5iYTc1N2Q5IDEwMDY0NAotLS0gYS9wby96aF9DTi5wbworKysgYi9wby96aF9DTi5wbwpAQCAtMSw2ICsxLDYgQEAKICMgQ2hpbmVzZSB0cmFuc2xhdGlvbnMgZm9yIEdpdCBwYWNrYWdlCiAjIEdpdCDova/ku7bljIXnmoTnroDkvZPkuK3mlofnv7vor5EuCi0jIENvcHlyaWdodCAoQykgMjAxMiBKaWFuZyBYaW4gPHdvcmxkaGVsbG8ubmV0IEFUIGdtYWlsLmNvbT4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLDIwMTMgSmlhbmcgWGluIDx3b3JsZGhlbGxvLm5ldCBBVCBnbWFpbC5jb20+CiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBHaXQgcGFja2FnZS4KICMgQ29udHJpYnV0ZXJzOgogIyAgIC0gSmlhbmcgWGluIDx3b3JsZGhlbGxvLm5ldCBBVCBnbWFpbC5jb20+CkBAIC0xMiw4ICsxMiw4IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IEdpdFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBHaXQgTWFpbGluZyBMaXN0IDxnaXRAdmdlci5rZXJuZWwub3JnPlxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEyLTA5LTE1IDEwOjIxKzA4MDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTA5LTA3IDE3OjU2KzA4MDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMy0wNC0zMCAwODoyNSswODAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMy0wNC0xMiAwOToyMyswODAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBKaWFuZyBYaW4gPHdvcmxkaGVsbG8ubmV0QGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9nb3RnaXQvZ2l0Lz5cbiIKICJMYW5ndWFnZTogemhfQ05cbiIKQEAgLTIyLDcgKzIyLDcgQEAKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCiAKLSM6IGFkdmljZS5jOjQwCisjOiBhZHZpY2UuYzo1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJoaW50OiAlLipzXG4iCiBtc2dzdHIgIuaPkOekuu+8miUuKnNcbiIKQEAgLTMxLDcgKzMxLDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo3MAorIzogYWR2aWNlLmM6ODMKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtNDMsOTMgKzQzLDIxOCBAQAogIuaIluS9v+eUqCAnZ2l0IGNvbW1pdCAtYSfjgIIiCiAKICM6IGFyY2hpdmUuYzoxMAotIywgZnV6enkKIG1zZ2lkICJnaXQgYXJjaGl2ZSBbb3B0aW9uc10gPHRyZWUtaXNoPiBbPHBhdGg+Li4uXSIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBhcmNoaXZlIFvpgInpobldIDzmoJHmiJbmj5DkuqQ+IFs86Lev5b6EPi4uLl0iCiAKICM6IGFyY2hpdmUuYzoxMQotIywgZnV6enkKIG1zZ2lkICJnaXQgYXJjaGl2ZSAtLWxpc3QiCi1tc2dzdHIgImdpdCBhcmNoaXZl77yaTkFDSyAlcyIKK21zZ3N0ciAiZ2l0IGFyY2hpdmUgLS1saXN0IgogCiAjOiBhcmNoaXZlLmM6MTIKIG1zZ2lkICIiCiAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIFtvcHRpb25zXSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgogbXNnc3RyICIiCisiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPOeJiOacrOW6kz4gWy0tZXhlYyA85ZG95LukPl0gW+mAiemhuV0gPOagkeaIluaPkOS6pD4gWzzot6/lvoQ+Li4uXSIKIAogIzogYXJjaGl2ZS5jOjEzCiBtc2dpZCAiZ2l0IGFyY2hpdmUgLS1yZW1vdGUgPHJlcG8+IFstLWV4ZWMgPGNtZD5dIC0tbGlzdCIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgYXJjaGl2ZSAtLXJlbW90ZSA854mI5pys5bqTPiBbLS1leGVjIDzlkb3ku6Q+XSAtLWxpc3QiCiAKLSM6IGFyY2hpdmUuYzozMjIKKyM6IGFyY2hpdmUuYzozMjMKIG1zZ2lkICJmbXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5qC85byPIgogCi0jOiBhcmNoaXZlLmM6MzIyCisjOiBhcmNoaXZlLmM6MzIzCiBtc2dpZCAiYXJjaGl2ZSBmb3JtYXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5b2S5qGj5qC85byPIgogCi0jOiBhcmNoaXZlLmM6MzIzIGJ1aWx0aW4vbG9nLmM6MTA3OQorIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExMjYKIG1zZ2lkICJwcmVmaXgiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5YmN57yAIgogCi0jOiBhcmNoaXZlLmM6MzI0CisjOiBhcmNoaXZlLmM6MzI1CiBtc2dpZCAicHJlcGVuZCBwcmVmaXggdG8gZWFjaCBwYXRobmFtZSBpbiB0aGUgYXJjaGl2ZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLkuLrlvZLmoaPkuK3mr4/kuKrot6/lvoTlkI3liqDkuIrliY3nvIAiCiAKLSM6IGFyY2hpdmUuYzozMjUgYnVpbHRpbi9hcmNoaXZlLmM6OTEgYnVpbHRpbi9ibGFtZS5jOjIzMzIKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzMzIGJ1aWx0aW4vY29uZmlnLmM6NTYgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MgotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0NCBidWlsdGluL2dyZXAuYzo4MDAgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTcgYnVpbHRpbi9ub3Rlcy5jOjUzNwotIzogYnVpbHRpbi9ub3Rlcy5jOjY5NCBidWlsdGluL3JlYWQtdHJlZS5jOjEwNyBwYXJzZS1vcHRpb25zLmg6MTQ5CisjOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjg4IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCisjOiBidWlsdGluL2JsYW1lLmM6MjM3MiBidWlsdGluL2NvbmZpZy5jOjU1IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjUKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjcgYnVpbHRpbi9ncmVwLmM6NzE1IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MCBidWlsdGluL2xzLWZpbGVzLmM6NDkzIGJ1aWx0aW4vbm90ZXMuYzo1MzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OTMgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDcgcGFyc2Utb3B0aW9ucy5oOjE0OQogbXNnaWQgImZpbGUiCiBtc2dzdHIgIuaWh+S7tiIKIAotIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo5MgorIzogYXJjaGl2ZS5jOjMyNyBidWlsdGluL2FyY2hpdmUuYzo4OQogbXNnaWQgIndyaXRlIHRoZSBhcmNoaXZlIHRvIHRoaXMgZmlsZSIKLW1zZ3N0ciAiIgotCi0jOiBhcmNoaXZlLmM6MzI4Ci0jLCBmdXp6eQotbXNnaWQgInJlYWQgLmdpdGF0dHJpYnV0ZXMgaW4gd29ya2luZyBkaXJlY3RvcnkiCi1tc2dzdHIgIiVz77ya5bey57uP5a2Y5Zyo5LqO5bel5L2c5Yy65LitIgorbXNnc3RyICLlvZLmoaPlhpnlhaXmraTmlofku7YiCiAKICM6IGFyY2hpdmUuYzozMjkKLW1zZ2lkICJyZXBvcnQgYXJjaGl2ZWQgZmlsZXMgb24gc3RkZXJyIgotbXNnc3RyICIiCittc2dpZCAicmVhZCAuZ2l0YXR0cmlidXRlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAi6K+75Y+W5bel5L2c5Yy65Lit55qEIC5naXRhdHRyaWJ1dGVzIgogCiAjOiBhcmNoaXZlLmM6MzMwCi1tc2dpZCAic3RvcmUgb25seSIKLW1zZ3N0ciAiIgorbXNnaWQgInJlcG9ydCBhcmNoaXZlZCBmaWxlcyBvbiBzdGRlcnIiCittc2dzdHIgIuWcqOagh+WHhumUmeivr+S4iuaKpeWRiuW9kuaho+aWh+S7tiIKIAogIzogYXJjaGl2ZS5jOjMzMQorbXNnaWQgInN0b3JlIG9ubHkiCittc2dzdHIgIuWPquWtmOWCqCIKKworIzogYXJjaGl2ZS5jOjMzMgogbXNnaWQgImNvbXByZXNzIGZhc3RlciIKLW1zZ3N0ciAiIgorbXNnc3RyICLljovnvKnpgJ/luqbmm7Tlv6siCiAKLSM6IGFyY2hpdmUuYzozMzkKKyM6IGFyY2hpdmUuYzozNDAKIG1zZ2lkICJjb21wcmVzcyBiZXR0ZXIiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y6L57yp5pWI5p6c5pu05aW9IgogCi0jOiBhcmNoaXZlLmM6MzQyCisjOiBhcmNoaXZlLmM6MzQzCiBtc2dpZCAibGlzdCBzdXBwb3J0ZWQgYXJjaGl2ZSBmb3JtYXRzIgotbXNnc3RyICIiCittc2dzdHIgIuWIl+WHuuaUr+aMgeeahOW9kuaho+agvOW8jyIKIAotIzogYXJjaGl2ZS5jOjM0NCBidWlsdGluL2FyY2hpdmUuYzo5MyBidWlsdGluL2Nsb25lLmM6ODUKKyM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg2CiBtc2dpZCAicmVwbyIKLW1zZ3N0ciAiIgorbXNnc3RyICLniYjmnKzlupMiCiAKLSM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTQKKyM6IGFyY2hpdmUuYzozNDYgYnVpbHRpbi9hcmNoaXZlLmM6OTEKIG1zZ2lkICJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIKLW1zZ3N0ciAiIgorbXNnc3RyICLku47ov5znqIvniYjmnKzlupPvvIg854mI5pys5bqTPu+8ieaPkOWPluW9kuaho+aWh+S7tiIKIAotIzogYXJjaGl2ZS5jOjM0NiBidWlsdGluL2FyY2hpdmUuYzo5NSBidWlsdGluL25vdGVzLmM6NjE2Ci0jLCBmdXp6eQorIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5MiBidWlsdGluL25vdGVzLmM6NjE1CiBtc2dpZCAiY29tbWFuZCIKLW1zZ3N0ciAi6L+Q6KGMICRjb21tYW5kIgorbXNnc3RyICLlkb3ku6QiCiAKLSM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTYKKyM6IGFyY2hpdmUuYzozNDggYnVpbHRpbi9hcmNoaXZlLmM6OTMKIG1zZ2lkICJwYXRoIHRvIHRoZSByZW1vdGUgZ2l0LXVwbG9hZC1hcmNoaXZlIGNvbW1hbmQiCittc2dzdHIgIui/nOeoiyBnaXQtdXBsb2FkLWFyY2hpdmUg5ZG95Luk55qE6Lev5b6EIgorCisjOiBhdHRyLmM6MjU5Cittc2dpZCAiIgorIk5lZ2F0aXZlIHBhdHRlcm5zIGFyZSBpZ25vcmVkIGluIGdpdCBhdHRyaWJ1dGVzXG4iCisiVXNlICdcXCEnIGZvciBsaXRlcmFsIGxlYWRpbmcgZXhjbGFtYXRpb24uIgogbXNnc3RyICIiCisi6LSf5YC85qih54mI5ZyoIGdpdCBhdHRyaWJ1dGVzIOS4reiiq+W/veeVpVxuIgorIuW9k+Wtl+espuS4suehruWunuimgeS7peaEn+WPueWPt+W8gOWni+aXtu+8jOS9v+eUqCAnXFwhJ+OAgiIKKworIzogYnJhbmNoLmM6NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm90IHNldHRpbmcgYnJhbmNoICVzIGFzIGl0cyBvd24gdXBzdHJlYW0uIgorbXNnc3RyICLmnKrorr7nva7liIbmlK8gJXMg5L2c5Li65a6D6Ieq5bex55qE5LiK5ri444CCIgorCisjOiBicmFuY2guYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIuWIhuaUryAlMSRzIOiuvue9ruS4uuS9v+eUqOWPmOWfuuadpei3n+i4quadpeiHqiAlMyRzIOeahOi/nOeoi+WIhuaUryAlMiRz44CCIgorCisjOiBicmFuY2guYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIHJlbW90ZSBicmFuY2ggJXMgZnJvbSAlcy4iCittc2dzdHIgIuWIhuaUryAlMSRzIOiuvue9ruS4uui3n+i4quadpeiHqiAlMyRzIOeahOi/nOeoi+WIhuaUryAlMiRz44CCIgorCisjOiBicmFuY2guYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIGJyYW5jaCAlcyBieSByZWJhc2luZy4iCittc2dzdHIgIuWIhuaUryAlcyDorr7nva7kuLrkvb/nlKjlj5jln7rmnaXot5/ouKrmnKzlnLDliIbmlK8gJXPjgIIiCisKKyM6IGJyYW5jaC5jOjg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJyYW5jaCAlcyBzZXQgdXAgdG8gdHJhY2sgbG9jYWwgYnJhbmNoICVzLiIKK21zZ3N0ciAi5YiG5pSvICVzIOiuvue9ruS4uui3n+i4quacrOWcsOWIhuaUryAlc+OAgiIKKworIzogYnJhbmNoLmM6OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzIGJ5IHJlYmFzaW5nLiIKK21zZ3N0ciAi5YiG5pSvICVzIOiuvue9ruS4uuS9v+eUqOWPmOWfuuadpei3n+i4qui/nOeoi+W8leeUqCAlc+OAgiIKKworIzogYnJhbmNoLmM6OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayByZW1vdGUgcmVmICVzLiIKK21zZ3N0ciAi5YiG5pSvICVzIOiuvue9ruS4uui3n+i4qui/nOeoi+W8leeUqCAlc+OAgiIKKworIzogYnJhbmNoLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQnJhbmNoICVzIHNldCB1cCB0byB0cmFjayBsb2NhbCByZWYgJXMgYnkgcmViYXNpbmcuIgorbXNnc3RyICLliIbmlK8gJXMg6K6+572u5Li65L2/55So5Y+Y5Z+65p2l6Lef6Liq5pys5Zyw5byV55SoICVz44CCIgorCisjOiBicmFuY2guYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJCcmFuY2ggJXMgc2V0IHVwIHRvIHRyYWNrIGxvY2FsIHJlZiAlcy4iCittc2dzdHIgIuWIhuaUryAlcyDorr7nva7kuLrot5/ouKrmnKzlnLDlvJXnlKggJXPjgIIiCisKKyM6IGJyYW5jaC5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJUcmFja2luZyBub3Qgc2V0IHVwOiBuYW1lIHRvbyBsb25nOiAlcyIKK21zZ3N0ciAi6Lef6Liq5pyq6K6+572u77ya5ZCN5a2X5aSq6ZW/77yaJXMiCisKKyM6IGJyYW5jaC5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgdHJhY2tpbmc6IGFtYmlndW91cyBpbmZvcm1hdGlvbiBmb3IgcmVmICVzIgorbXNnc3RyICLmnKrot5/ouKrvvJrlvJXnlKggJXMg5pyJ5q2n5LmJIgorCisjOiBicmFuY2guYzoxODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCBicmFuY2ggbmFtZS4iCittc2dzdHIgIiclcycg5LiN5piv5LiA5Liq5pyJ5pWI55qE5YiG5pSv5ZCN56ew44CCIgorCisjOiBicmFuY2guYzoxODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQSBicmFuY2ggbmFtZWQgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCittc2dzdHIgIuS4gOS4quWIhuaUr+WQjSAnJXMnIOW3sue7j+WtmOWcqOOAgiIKKworIzogYnJhbmNoLmM6MTk1Cittc2dpZCAiQ2Fubm90IGZvcmNlIHVwZGF0ZSB0aGUgY3VycmVudCBicmFuY2guIgorbXNnc3RyICLml6Dms5XlvLrliLbmm7TmlrDlvZPliY3liIbmlK/jgIIiCisKKyM6IGJyYW5jaC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKK21zZ3N0ciAi5peg5rOV6K6+572u6Lef6Liq5L+h5oGv77yb6LW35aeL54K5ICclcycg5LiN5piv5LiA5Liq5YiG5pSv44CCIgorCisjOiBicmFuY2guYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAidGhlIHJlcXVlc3RlZCB1cHN0cmVhbSBicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAi6K+35rGC55qE5LiK5ri45YiG5pSvICclcycg5LiN5a2Y5ZyoIgorCisjOiBicmFuY2guYzoyMDUKK21zZ2lkICIiCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyBvbiBiYXNpbmcgeW91ciB3b3JrIG9uIGFuIHVwc3RyZWFtXG4iCisiYnJhbmNoIHRoYXQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIHJlbW90ZSwgeW91IG1heSBuZWVkIHRvXG4iCisicnVuIFwiZ2l0IGZldGNoXCIgdG8gcmV0cmlldmUgaXQuXG4iCisiXG4iCisiSWYgeW91IGFyZSBwbGFubmluZyB0byBwdXNoIG91dCBhIG5ldyBsb2NhbCBicmFuY2ggdGhhdFxuIgorIndpbGwgdHJhY2sgaXRzIHJlbW90ZSBjb3VudGVycGFydCwgeW91IG1heSB3YW50IHRvIHVzZVxuIgorIlwiZ2l0IHB1c2ggLXVcIiB0byBzZXQgdGhlIHVwc3RyZWFtIGNvbmZpZyBhcyB5b3UgcHVzaC4iCittc2dzdHIgIiIKKyJcbiIKKyLlpoLmnpzmgqjmraPorqHliJLln7rkuo7ov5znqIvkuIDkuKrnjrDlrZjnmoTkuIrmuLjliIbmlK/lvIDlp4vkvaDnmoTlt6XkvZzvvIxcbiIKKyLmgqjlj6/og73pnIDopoHmiafooYwgXCJnaXQgZmV0Y2hcIiDmnaXojrflj5bliIbmlK/jgIJcbiIKKyJcbiIKKyLlpoLmnpzmgqjmraPorqHliJLmjqjpgIHkuIDkuKrog73kuI7lr7nlupTov5znqIvliIbmlK/lu7rnq4vot5/ouKrnmoTmlrDnmoTmnKzlnLDliIbmlK/vvIxcbiIKKyLmgqjlj6/og73pnIDopoHkvb/nlKggXCJnaXQgcHVzaCAtdVwiIOaOqOmAgeWIhuaUr+W5tumFjee9ruWSjOS4iua4uOeahOWFs+iBlOOAgiIKKworIzogYnJhbmNoLmM6MjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lOiAnJXMnLiIKK21zZ3N0ciAi5LiN5piv5LiA5Liq5pyJ5pWI55qE5a+56LGh5ZCN77yaJyVzJ+OAgiIKKworIzogYnJhbmNoLmM6MjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkFtYmlndW91cyBvYmplY3QgbmFtZTogJyVzJy4iCittc2dzdHIgIuatp+S5ieeahOWvueixoeWQje+8miclcyfjgIIiCisKKyM6IGJyYW5jaC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJOb3QgYSB2YWxpZCBicmFuY2ggcG9pbnQ6ICclcycuIgorbXNnc3RyICLml6DmlYjnmoTliIbmlK/ngrnvvJonJXMn44CCIgorCisjOiBicmFuY2guYzoyODEKK21zZ2lkICJGYWlsZWQgdG8gbG9jayByZWYgZm9yIHVwZGF0ZSIKK21zZ3N0ciAi5peg5rOV5Li65pu05paw6ZSB5a6a5byV55SoIgorCisjOiBicmFuY2guYzoyOTkKK21zZ2lkICJGYWlsZWQgdG8gd3JpdGUgcmVmIgorbXNnc3RyICLkuI3og73lhpnlvJXnlKgiCiAKICM6IGJ1bmRsZS5jOjM2CiAjLCBjLWZvcm1hdApAQCAtMTQxLDcgKzI2Niw3IEBACiBtc2dpZCAidW5yZWNvZ25pemVkIGhlYWRlcjogJXMlcyAoJWQpIgogbXNnc3RyICLmnKrog73or4bliKvnmoTljIXlpLTvvJolcyVzICglZCkiCiAKLSM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6NzE0CisjOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIgogbXNnc3RyICLkuI3og73miZPlvIAgJyVzJyIKQEAgLTE1MCwzNSArMjc1LDM1IEBACiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCiBtc2dzdHIgIueJiOacrOW6k+e8uuWwkei/meS6m+W/heWkh+eahOaPkOS6pO+8miIKIAotIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjU1NyBzZXF1ZW5jZXIuYzo5ODkgYnVpbHRpbi9sb2cuYzoyOTAKLSM6IGJ1aWx0aW4vbG9nLmM6NzI3IGJ1aWx0aW4vbG9nLmM6MTMxMyBidWlsdGluL2xvZy5jOjE1MjkgYnVpbHRpbi9tZXJnZS5jOjM0NwotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE4MQorIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCisjOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKIG1zZ2lkICJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIKIG1zZ3N0ciAi54mI5pys6YGN5Y6G6K6+572u5aSx6LSlIgogCiAjOiBidW5kbGUuYzoxODYKICMsIGMtZm9ybWF0Ci1tc2dpZCAiVGhlIGJ1bmRsZSBjb250YWlucyAlZCByZWYiCi1tc2dpZF9wbHVyYWwgIlRoZSBidW5kbGUgY29udGFpbnMgJWQgcmVmcyIKLW1zZ3N0clswXSAi6L+Z5Liq5YyF5Lit5ZCr5pyJICVkIOS4quW8leeUqCIKLW1zZ3N0clsxXSAi6L+Z5Liq5YyF5Lit5ZCr5pyJICVkIOS4quW8leeUqCIKK21zZ2lkICJUaGUgYnVuZGxlIGNvbnRhaW5zIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSBjb250YWlucyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAi6L+Z5Liq5YyF5Lit5ZCr5pyJ6L+Z5Liq5byV55So77yaIgorbXNnc3RyWzFdICLov5nkuKrljIXkuK3lkKvmnIkgJWQg5Liq5byV55So77yaIgogCi0jOiBidW5kbGUuYzoxOTIKKyM6IGJ1bmRsZS5jOjE5MwogbXNnaWQgIlRoZSBidW5kbGUgcmVjb3JkcyBhIGNvbXBsZXRlIGhpc3RvcnkuIgogbXNnc3RyICLov5nkuKrljIXorrDlvZXkuIDkuKrlrozmlbTljoblj7LjgIIiCiAKICM6IGJ1bmRsZS5jOjE5NQogIywgYy1mb3JtYXQKLW1zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmIgotbXNnaWRfcGx1cmFsICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoZXNlICVkIHJlZnMiCi1tc2dzdHJbMF0gIui/meS4quWMhemcgOimgei/meS4quW8leeUqCIKLW1zZ3N0clsxXSAi6L+Z5Liq5YyF6ZyA6KaBICVkIOS4qui/meS6m+W8leeUqCIKK21zZ2lkICJUaGUgYnVuZGxlIHJlcXVpcmVzIHRoaXMgcmVmOiIKK21zZ2lkX3BsdXJhbCAiVGhlIGJ1bmRsZSByZXF1aXJlcyB0aGVzZSAlZCByZWZzOiIKK21zZ3N0clswXSAi6L+Z5Liq5YyF6ZyA6KaB6L+Z5Liq5byV55So77yaIgorbXNnc3RyWzFdICLov5nkuKrljIXpnIDopoEgJWQg5Liq5byV55So77yaIgogCiAjOiBidW5kbGUuYzoyOTQKIG1zZ2lkICJyZXYtbGlzdCBkaWVkIgogbXNnc3RyICJyZXYtbGlzdCDnu4jmraIiCiAKLSM6IGJ1bmRsZS5jOjMwMCBidWlsdGluL2xvZy5jOjEyMDkgYnVpbHRpbi9zaG9ydGxvZy5jOjI4NAorIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTI1NSBidWlsdGluL3Nob3J0bG9nLmM6MjU4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBhcmd1bWVudDogJXMiCiBtc2dzdHIgIuacquiDveivhuWIq+eahOWPguaVsO+8miVzIgpAQCAtMjA5LDEyICszMzQsMTIgQEAKIG1zZ2lkICJpbmRleC1wYWNrIGRpZWQiCiBtc2dzdHIgImluZGV4LXBhY2sg57uI5q2iIgogCi0jOiBjb21taXQuYzo0OAorIzogY29tbWl0LmM6NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHBhcnNlICVzIgogbXNnc3RyICLkuI3og73op6PmnpAgJXMiCiAKLSM6IGNvbW1pdC5jOjUwCisjOiBjb21taXQuYzo1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAlcyBpcyBub3QgYSBjb21taXQhIgogbXNnc3RyICIlcyAlcyDkuI3mmK/kuIDkuKrmj5DkuqQhIgpAQCAtMzA1LDE5ICs0MzAsMjQgQEAKIG1zZ3N0clsxXSAiJWx1IOW5tOWJjSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiBkaWZmLmM6MTA1CisjOiBkaWZmLmM6MTEyCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgRmFpbGVkIHRvIHBhcnNlIGRpcnN0YXQgY3V0LW9mZiBwZXJjZW50YWdlICclLipzJ1xuIgotbXNnc3RyICIgIOaXoOazleino+aekCBkaXJzdGF0IOmYiOWAvCAnJS4qcydcbiIKK21zZ2lkICIgIEZhaWxlZCB0byBwYXJzZSBkaXJzdGF0IGN1dC1vZmYgcGVyY2VudGFnZSAnJXMnXG4iCittc2dzdHIgIiAg5peg5rOV6Kej5p6QIGRpcnN0YXQg5oiq5q2i77yIY3V0LW9mZu+8ieeZvuWIhuavlCAnJXMnXG4iCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogZGlmZi5jOjExMAorIzogZGlmZi5jOjExNwogIywgYy1mb3JtYXQKLW1zZ2lkICIgIFVua25vd24gZGlyc3RhdCBwYXJhbWV0ZXIgJyUuKnMnXG4iCi1tc2dzdHIgIiAg5pyq55+lIGRpcnN0YXQg5Y+C5pWwICclLipzJ1xuIgorbXNnaWQgIiAgVW5rbm93biBkaXJzdGF0IHBhcmFtZXRlciAnJXMnXG4iCittc2dzdHIgIiAg5pyq55+l55qEIGRpcnN0YXQg5Y+C5pWwICclcydcbiIKIAogIzogZGlmZi5jOjIxMAogIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIHZhbHVlIGZvciAnZGlmZi5zdWJtb2R1bGUnIGNvbmZpZyB2YXJpYWJsZTogJyVzJyIKK21zZ3N0ciAi6YWN572u5Y+Y6YePICdkaWZmLnN1Ym1vZHVsZScg5pyq55+l55qE5Y+W5YC877yaJyVzJyIKKworIzogZGlmZi5jOjI2MAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRm91bmQgZXJyb3JzIGluICdkaWZmLmRpcnN0YXQnIGNvbmZpZyB2YXJpYWJsZTpcbiIKICIlcyIKQEAgLTMyNSwzMiArNDU1LDcgQEAKICLlj5HnjrDphY3nva7lj5jph48gJ2RpZmYuZGlyc3RhdCcg5Lit55qE6ZSZ6K+v77yaXG4iCiAiJXMiCiAKLSM6IGRpZmYuYzoxNDAxCi1tc2dpZCAiIDAgZmlsZXMgY2hhbmdlZCIKLW1zZ3N0ciAiIDAg5Liq5paH5Lu26KKr5L+u5pS5IgotCi0jOiBkaWZmLmM6MTQwNQotIywgYy1mb3JtYXQKLW1zZ2lkICIgJWQgZmlsZSBjaGFuZ2VkIgotbXNnaWRfcGx1cmFsICIgJWQgZmlsZXMgY2hhbmdlZCIKLW1zZ3N0clswXSAiICVkIOS4quaWh+S7tuiiq+S/ruaUuSIKLW1zZ3N0clsxXSAiICVkIOS4quaWh+S7tuiiq+S/ruaUuSIKLQotIzogZGlmZi5jOjE0MjIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiLCAlZCBpbnNlcnRpb24oKykiCi1tc2dpZF9wbHVyYWwgIiwgJWQgaW5zZXJ0aW9ucygrKSIKLW1zZ3N0clswXSAi77yM5o+S5YWlICVkIOihjCgrKSIKLW1zZ3N0clsxXSAi77yM5o+S5YWlICVkIOihjCgrKSIKLQotIzogZGlmZi5jOjE0MzMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiLCAlZCBkZWxldGlvbigtKSIKLW1zZ2lkX3BsdXJhbCAiLCAlZCBkZWxldGlvbnMoLSkiCi1tc2dzdHJbMF0gIu+8jOWIoOmZpCAlZCDooYwoLSkiCi1tc2dzdHJbMV0gIu+8jOWIoOmZpCAlZCDooYwoLSkiCi0KLSM6IGRpZmYuYzozNDYwCisjOiBkaWZmLmM6MzQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgpAQCAtMzU5LDcgKzQ2NCwxMiBAQAogIuaXoOazleino+aekCAtLWRpcnN0YXQvLVgg6YCJ6aG555qE5Y+C5pWw77yaXG4iCiAiJXMiCiAKLSM6IGdwZy1pbnRlcmZhY2UuYzo1OQorIzogZGlmZi5jOjM0OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIC0tc3VibW9kdWxlIG9wdGlvbiBwYXJhbWV0ZXI6ICclcyciCittc2dzdHIgIuaXoOazleino+aekCAtLXN1Ym1vZHVsZSDpgInpobnnmoTlj4LmlbDvvJonJXMnIgorCisjOiBncGctaW50ZXJmYWNlLmM6NTkgZ3BnLWludGVyZmFjZS5jOjEzMQogbXNnaWQgImNvdWxkIG5vdCBydW4gZ3BnLiIKIG1zZ3N0ciAi5LiN6IO95omn6KGMIGdwZ+OAgiIKIApAQCAtMzcxLDE3ICs0ODEsMjcgQEAKIG1zZ2lkICJncGcgZmFpbGVkIHRvIHNpZ24gdGhlIGRhdGEiCiBtc2dzdHIgImdwZyDml6Dms5XkuLrmlbDmja7nrb7lkI0iCiAKLSM6IGdyZXAuYzoxMzIwCisjOiBncGctaW50ZXJmYWNlLmM6MTE1CisjLCBjLWZvcm1hdAorbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJyVzJzogJXMiCittc2dzdHIgIuS4jeiDveWIm+W7uuS4tOaXtuaWh+S7tiAnJXMn77yaJXMiCisKKyM6IGdwZy1pbnRlcmZhY2UuYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHdyaXRpbmcgZGV0YWNoZWQgc2lnbmF0dXJlIHRvICclcyc6ICVzIgorbXNnc3RyICLml6Dms5XlsIbliIbnprvlvI/nrb7lkI3lhpnlhaUgJyVzJ++8miVzIgorCisjOiBncmVwLmM6MTYyMwogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmFibGUgdG8gcmVhZCAlcyIKIG1zZ3N0ciAiJyVzJ++8muaXoOazleivu+WPliAlcyIKIAotIzogZ3JlcC5jOjEzMzcKKyM6IGdyZXAuYzoxNjQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6ICVzIgogbXNnc3RyICInJXMn77yaJXMiCiAKLSM6IGdyZXAuYzoxMzQ4CisjOiBncmVwLmM6MTY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICInJXMn77ya6K+75Y+W5LiN5a6M5pW0ICVzIgpAQCAtMzk1LDcgKzUxNSwxMSBAQAogbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKIG1zZ3N0ciAi5ZyoICRQQVRIIOi3r+W+hOS4reeahOWFtuS7luWcsOaWueWPr+eUqOeahCBnaXQg5ZG95LukIgogCi0jOiBoZWxwLmM6Mjc1CisjOiBoZWxwLmM6MjM1Cittc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKK21zZ3N0ciAi5pyA5bi455So55qEIGdpdCDlkb3ku6TmnInvvJoiCisKKyM6IGhlbHAuYzoyOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgYXBwZWFycyB0byBiZSBhIGdpdCBjb21tYW5kLCBidXQgd2Ugd2VyZSBub3RcbiIKQEAgLTQwNCwxMSArNTI4LDExIEBACiAiJyVzJyDlg4/mmK/kuIDkuKogZ2l0IOWRveS7pO+8jOS9huWNtOaXoOazlei/kOihjOOAglxuIgogIuWPr+iDveaYryBnaXQtJXMg5Y+X5o2f77yfIgogCi0jOiBoZWxwLmM6MzMyCisjOiBoZWxwLmM6MzQ5CiBtc2dpZCAiVWggb2guIFlvdXIgc3lzdGVtIHJlcG9ydHMgbm8gR2l0IGNvbW1hbmRzIGF0IGFsbC4iCiBtc2dzdHIgIuWUieWRgO+8jOaCqOeahOezu+e7n+S4reacquWPkeeOsCBHaXQg5ZG95Luk44CCIgogCi0jOiBoZWxwLmM6MzU0CisjOiBoZWxwLmM6MzcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXQVJOSU5HOiBZb3UgY2FsbGVkIGEgR2l0IGNvbW1hbmQgbmFtZWQgJyVzJywgd2hpY2ggZG9lcyBub3QgZXhpc3QuXG4iCkBAIC00MTcsMTcgKzU0MSwxNyBAQAogIuitpuWRiu+8muaCqOi/kOihjOS4gOS4quS4jeWtmOWcqOeahCBHaXQg5ZG95LukICclcyfjgILnu6fnu63miafooYzlgYflrprmgqjopoHopoHov5DooYznmoRcbiIKICLmmK8gJyVzJyIKIAotIzogaGVscC5jOjM1OQorIzogaGVscC5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCiBtc2dzdHIgIuWcqCAlMC4xZiDnp5Lpkp/lkI7oh6rliqjov5DooYwuLi4iCiAKLSM6IGhlbHAuYzozNjYKKyM6IGhlbHAuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l077yaJyVzJyDkuI3mmK/kuIDkuKogZ2l0IOWRveS7pOOAguWPguingSAnZ2l0IC0taGVscCfjgIIiCiAKLSM6IGhlbHAuYzozNzAKKyM6IGhlbHAuYzozODcKIG1zZ2lkICIiCiAiXG4iCiAiRGlkIHlvdSBtZWFuIHRoaXM/IgpAQCAtNDQxLDYgKzU2NSwxNSBAQAogIlxuIgogIuaCqOaMh+eahOaYr+i/meWFtuS4reeahOafkOS4gOS4quS5iO+8nyIKIAorIzogbWVyZ2UuYzo1NgorbXNnaWQgImZhaWxlZCB0byByZWFkIHRoZSBjYWNoZSIKK21zZ3N0ciAi5peg5rOV6K+75Y+W57yT5a2YIgorCisjOiBtZXJnZS5jOjExMCBidWlsdGluL2NoZWNrb3V0LmM6MzY1IGJ1aWx0aW4vY2hlY2tvdXQuYzo1NjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NDUKK21zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCittc2dzdHIgIuaXoOazleWGmeaWsOeahOe0ouW8leaWh+S7tiIKKwogIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIihiYWQgY29tbWl0KVxuIgpAQCAtNDg0LDkgKzYxNyw5IEBACiAjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKLW1zZ3N0ciAiJXMgJyVzJyDlupTkuLrkuozov5vliLblr7nosaHvvIhibG9i77yJIgorbXNnc3RyICIlcyAnJXMnIOW6lOS4uuaVsOaNru+8iGJsb2LvvInlr7nosaEiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzAyCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgogbXNnc3RyICLml6Dms5XmiZPlvIAgJyVzJyIKQEAgLTU2OCw3ICs3MDEsNyBAQAogIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW5hbWluZyAlcyB0byAlcyBhbmQgJXMgdG8gJXMgaW5zdGVhZCIKLW1zZ3N0ciAi6ICM5piv6YeN5ZG95ZCNICVzIOiHsyAlcyDku6Xlj4ogJXMg6IezICVzIgorbXNnc3RyICLogIzmmK/ph43lkb3lkI0gJXMg6IezICVz77yM5Lul5Y+KICVzIOiHsyAlcyIKIAogIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ0NwogIywgYy1mb3JtYXQKQEAgLTU5Myw3ICs3MjYsNyBAQAogIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTUxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgJXMgaXMgbm90IGEgYmxvYiIKLW1zZ3N0ciAi5a+56LGhICVzIOS4jeaYr+S4gOS4quS6jOi/m+WItuWvueixoe+8iGJsb2LvvIkiCittc2dzdHIgIuWvueixoSAlcyDkuI3mmK/kuIDkuKrmlbDmja7vvIhibG9i77yJ5a+56LGhIgogCiAjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0CiBtc2dpZCAibW9kaWZ5IgpAQCAtNjIxLDcgKzc1NCw3IEBACiBtc2dpZCAiQXV0by1tZXJnaW5nICVzIgogbXNnc3RyICLoh6rliqjlkIjlubYgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDo4NjkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDoxMDI5CiBtc2dpZCAic3VibW9kdWxlIgogbXNnc3RyICLlrZDmqKHnu4QiCiAKQEAgLTY5MSw0MCArODI0LDYzIEBACiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgogbXNnc3RyICLkuI3og73op6PmnpDlr7nosaEgJyVzJyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAwOSBidWlsdGluL21lcmdlLmM6Njk2CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDA5IGJ1aWx0aW4vbWVyZ2UuYzo2NTgKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgogbXNnc3RyICLkuI3og73lhpnlhaXntKLlvJXjgIIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuYzo0OTQKKyM6IG9iamVjdC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcGFyc2Ugb2JqZWN0OiAlcyIKK21zZ3N0ciAi5LiN6IO96Kej5p6Q5a+56LGh77yaJXMiCisKKyM6IHBhcnNlLW9wdGlvbnMuYzo0ODkKIG1zZ2lkICIuLi4iCiBtc2dzdHIgIi4uLiIKIAotIzogcGFyc2Utb3B0aW9ucy5jOjUxMgorIzogcGFyc2Utb3B0aW9ucy5jOjUwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMiCiBtc2dzdHIgIueUqOazle+8miVzIgogCiAjLiBUUkFOU0xBVE9SUzogdGhlIGNvbG9uIGhlcmUgc2hvdWxkIGFsaWduIHdpdGggdGhlCiAjLiBvbmUgaW4gInVzYWdlOiAlcyIgdHJhbnNsYXRpb24KLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTYKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgb3I6ICVzIgogbXNnc3RyICIgIOaIlu+8miVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHBhcnNlLW9wdGlvbnMuYzo1MTkKKyM6IHBhcnNlLW9wdGlvbnMuYzo1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgICVzIgogbXNnc3RyICIgICAgJXMiCiAKLSM6IHJlbW90ZS5jOjE2MzIKKyM6IHBhcnNlLW9wdGlvbnMuYzo1NDgKK21zZ2lkICItTlVNIgorbXNnc3RyICIt5pWw5a2XIgorCisjOiBwYXRoc3BlYy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIlBhdGggJyVzJyBpcyBpbiBzdWJtb2R1bGUgJyUuKnMnIgorbXNnc3RyICLot6/lvoQgJyVzJyDlsZ7kuo7mqKHnu4QgJyUuKnMnIgorCisjOiBwYXRoc3BlYy5jOjk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKK21zZ3N0ciAiJyVzJyDkvY3kuo7nrKblj7fpk77mjqXkuK0iCisKKyM6IHJlbW90ZS5jOjE3ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iCiBtc2dpZF9wbHVyYWwgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIKIG1zZ3N0clswXSAi5oKo55qE5YiG5pSv6aKG5YWIICclcycg5YWxICVkIOS4quaPkOS6pOOAglxuIgogbXNnc3RyWzFdICLmgqjnmoTliIbmlK/pooblhYggJyVzJyDlhbEgJWQg5Liq5o+Q5Lqk44CCXG4iCiAKLSM6IHJlbW90ZS5jOjE2MzgKKyM6IHJlbW90ZS5jOjE3ODcKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVzaFwiIHRvIHB1Ymxpc2ggeW91ciBsb2NhbCBjb21taXRzKVxuIgorbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBwdXNoXCIg5p2l5Y+R5biD5oKo55qE5pys5Zyw5o+Q5Lqk77yJXG4iCisKKyM6IHJlbW90ZS5jOjE3OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCBhbmQgY2FuIGJlIGZhc3QtZm9yd2FyZGVkLlxuIgogbXNnaWRfcGx1cmFsICIiCkBAIC03MzIsNyArODg4LDEyIEBACiBtc2dzdHJbMF0gIuaCqOeahOWIhuaUr+iQveWQjiAnJXMnIOWFsSAlZCDkuKrmj5DkuqTvvIzlubbkuJTlj6/ku6Xlv6vov5vjgIJcbiIKIG1zZ3N0clsxXSAi5oKo55qE5YiG5pSv6JC95ZCOICclcycg5YWxICVkIOS4quaPkOS6pO+8jOW5tuS4lOWPr+S7peW/q+i/m+OAglxuIgogCi0jOiByZW1vdGUuYzoxNjQ2CisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHJlbW90ZS5jOjE3OTgKK21zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKK21zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgcHVsbFwiIOadpeabtOaWsOaCqOeahOacrOWcsOWIhuaUr++8iVxuIgorCisjOiByZW1vdGUuYzoxODAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3VyIGJyYW5jaCBhbmQgJyVzJyBoYXZlIGRpdmVyZ2VkLFxuIgpAQCAtNzQ3LDE5ICs5MDgsMjQgQEAKICLmgqjnmoTliIbmlK/lkowgJyVzJyDlh7rnjrDkuoblgY/nprvvvIxcbiIKICLlubbkuJTliIbliKvmnIkgJWQg5ZKMICVkIOWkhOS4jeWQjOeahOaPkOS6pOOAglxuIgogCi0jOiBzZXF1ZW5jZXIuYzoxMjEgYnVpbHRpbi9tZXJnZS5jOjg2NCBidWlsdGluL21lcmdlLmM6OTc3Ci0jOiBidWlsdGluL21lcmdlLmM6MTA4NyBidWlsdGluL21lcmdlLmM6MTA5NworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiByZW1vdGUuYzoxODExCittc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaCBpbnRvIHlvdXJzKVxuIgorbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBwdWxsXCIg5p2l5ZCI5bm26L+c56iL5YiG5pSv77yJXG4iCisKKyM6IHNlcXVlbmNlci5jOjIwNiBidWlsdGluL21lcmdlLmM6Nzc2IGJ1aWx0aW4vbWVyZ2UuYzo4ODkgYnVpbHRpbi9tZXJnZS5jOjk5OQorIzogYnVpbHRpbi9tZXJnZS5jOjEwMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZyIKIG1zZ3N0ciAi5LiN6IO95Li65YaZ5YWl5omT5byAICclcyciCiAKLSM6IHNlcXVlbmNlci5jOjEyMyBidWlsdGluL21lcmdlLmM6MzMzIGJ1aWx0aW4vbWVyZ2UuYzo4NjcKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDg5IGJ1aWx0aW4vbWVyZ2UuYzoxMTAyCisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjMzNSBidWlsdGluL21lcmdlLmM6Nzc5CisjOiBidWlsdGluL21lcmdlLmM6MTAwMSBidWlsdGluL21lcmdlLmM6MTAxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKIG1zZ3N0ciAi5LiN6IO95YaZ5YWlICclcyciCiAKLSM6IHNlcXVlbmNlci5jOjE0NAorIzogc2VxdWVuY2VyLmM6MjI5CiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPiciCkBAIC03NjcsNyArOTMzLDcgQEAKICLlhrLnqoHop6PlhrPlrozmr5XlkI7vvIznlKggJ2dpdCBhZGQgPHBhdGhzPicg5oiWICdnaXQgcm0gPHBhdGhzPidcbiIKICLlkb3ku6TmoIforrDkv67mraPlkI7nmoTmlofku7YiCiAKLSM6IHNlcXVlbmNlci5jOjE0NworIzogc2VxdWVuY2VyLmM6MjMyCiBtc2dpZCAiIgogImFmdGVyIHJlc29sdmluZyB0aGUgY29uZmxpY3RzLCBtYXJrIHRoZSBjb3JyZWN0ZWQgcGF0aHNcbiIKICJ3aXRoICdnaXQgYWRkIDxwYXRocz4nIG9yICdnaXQgcm0gPHBhdGhzPidcbiIKQEAgLTc3NiwyNDcgKzk0MiwyNTggQEAKICLlhrLnqoHop6PlhrPlrozmr5XlkI7vvIznlKggJ2dpdCBhZGQgPHBhdGhzPicg5oiWICdnaXQgcm0gPHBhdGhzPidcbiIKICLlr7nkv67mraPlkI7nmoTmlofku7blgZrmoIforrDvvIznhLblkI7nlKggJ2dpdCBjb21taXQnIOaPkOS6pCIKIAotIzogc2VxdWVuY2VyLmM6MTYwIHNlcXVlbmNlci5jOjc2NSBzZXF1ZW5jZXIuYzo4NDgKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAi5LiN6IO95YaZ5YWlICVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxNjMKKyM6IHNlcXVlbmNlci5jOjI0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcyIKIG1zZ3N0ciAi6ZSZ6K+v5pS25bC+ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxNzgKKyM6IHNlcXVlbmNlci5jOjI2MwogbXNnaWQgIllvdXIgbG9jYWwgY2hhbmdlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBjaGVycnktcGljay4iCiBtc2dzdHIgIuaCqOeahOacrOWcsOS/ruaUueWwhuiiq+aLo+mAieaTjeS9nOimhuebluOAgiIKIAotIzogc2VxdWVuY2VyLmM6MTgwCisjOiBzZXF1ZW5jZXIuYzoyNjUKIG1zZ2lkICJZb3VyIGxvY2FsIGNoYW5nZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgcmV2ZXJ0LiIKIG1zZ3N0ciAi5oKo55qE5pys5Zyw5L+u5pS55bCG6KKr6L+Y5Y6f5pON5L2c6KaG55uW44CCIgogCi0jOiBzZXF1ZW5jZXIuYzoxODMKKyM6IHNlcXVlbmNlci5jOjI2OAogbXNnaWQgIkNvbW1pdCB5b3VyIGNoYW5nZXMgb3Igc3Rhc2ggdGhlbSB0byBwcm9jZWVkLiIKIG1zZ3N0ciAi5o+Q5Lqk5oKo55qE5L+u5pS55oiW5L+d5a2Y6L+b5bqm5ZCO5YaN57un57ut44CCIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzoyMzMKKyM6IHNlcXVlbmNlci5jOjMxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlc++8muaXoOazleWGmeWFpeaWsOe0ouW8leaWh+S7tiIKIAotIzogc2VxdWVuY2VyLmM6MjYxCisjOiBzZXF1ZW5jZXIuYzozNTAKIG1zZ2lkICJDb3VsZCBub3QgcmVzb2x2ZSBIRUFEIGNvbW1pdFxuIgogbXNnc3RyICLkuI3og73op6PmnpAgSEVBRCDmj5DkuqRcbiIKIAotIzogc2VxdWVuY2VyLmM6MjgyCisjOiBzZXF1ZW5jZXIuYzozNzEKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAi5LiN6IO95pu05paw57yT5a2YXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMyNworIzogc2VxdWVuY2VyLmM6NDE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q5o+Q5LqkICVzXG4iCiAKLSM6IHNlcXVlbmNlci5jOjMzMgorIzogc2VxdWVuY2VyLmM6NDIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzXG4iCiBtc2dzdHIgIuS4jeiDveino+aekOeItuaPkOS6pCAlc1xuIgogCi0jOiBzZXF1ZW5jZXIuYzozOTgKKyM6IHNlcXVlbmNlci5jOjQ4NwogbXNnaWQgIllvdXIgaW5kZXggZmlsZSBpcyB1bm1lcmdlZC4iCiBtc2dzdHIgIuaCqOeahOe0ouW8leaWh+S7tuacquWujOaIkOWQiOW5tuOAgiIKIAotIzogc2VxdWVuY2VyLmM6NDAxCi1tc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKLW1zZ3N0ciAi5oKo5rKh5pyJ5LiA5Liq5pyJ5pWI55qEIEhFQUQiCi0KLSM6IHNlcXVlbmNlci5jOjQxNgorIzogc2VxdWVuY2VyLmM6NTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBpcyBhIG1lcmdlIGJ1dCBubyAtbSBvcHRpb24gd2FzIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5LqkICVzIOaYr+S4gOS4quWQiOW5tuaPkOS6pOS9huacquaPkOS+myAtbSDpgInpobnjgIIiCiAKLSM6IHNlcXVlbmNlci5jOjQyNAorIzogc2VxdWVuY2VyLmM6NTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIHBhcmVudCAlZCIKIG1zZ3N0ciAi5o+Q5LqkICVzIOayoeacieeItuaPkOS6pCAlZCIKIAotIzogc2VxdWVuY2VyLmM6NDI4CisjOiBzZXF1ZW5jZXIuYzo1MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFpbmxpbmUgd2FzIHNwZWNpZmllZCBidXQgY29tbWl0ICVzIGlzIG5vdCBhIG1lcmdlLiIKIG1zZ3N0ciAi5oyH5a6a5LqG5Li757q/5L2G5o+Q5LqkICVzIOS4jeaYr+S4gOS4quWQiOW5tuOAgiIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyB3aWxsIGJlICJyZXZlcnQiIG9yCiAjLiAiY2hlcnJ5LXBpY2siLCB0aGUgc2Vjb25kICVzIGEgU0hBMQotIzogc2VxdWVuY2VyLmM6NDM5CisjOiBzZXF1ZW5jZXIuYzo1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzIgogbXNnc3RyICIlc++8muS4jeiDveino+aekOeItuaPkOS6pCAlcyIKIAotIzogc2VxdWVuY2VyLmM6NDQzCisjOiBzZXF1ZW5jZXIuYzo1MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGdldCBjb21taXQgbWVzc2FnZSBmb3IgJXMiCiBtc2dzdHIgIuS4jeiDveW+l+WIsCAlcyDnmoTmj5DkuqTor7TmmI4iCiAKLSM6IHNlcXVlbmNlci5jOjUyNworIzogc2VxdWVuY2VyLmM6NjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZXZlcnQgJXMuLi4gJXMiCiBtc2dzdHIgIuS4jeiDvei/mOWOnyAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTI4CisjOiBzZXF1ZW5jZXIuYzo2MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGFwcGx5ICVzLi4uICVzIgogbXNnc3RyICLkuI3og73lupTnlKggJXMuLi4gJXMiCiAKLSM6IHNlcXVlbmNlci5jOjU2MAorIzogc2VxdWVuY2VyLmM6NjU0CiBtc2dpZCAiZW1wdHkgY29tbWl0IHNldCBwYXNzZWQiCiBtc2dzdHIgIuaPkOS+m+S6huepuueahOaPkOS6pOmbhiIKIAotIzogc2VxdWVuY2VyLmM6NTY4CisjOiBzZXF1ZW5jZXIuYzo2NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlc++8muaXoOazleivu+WPlue0ouW8lSIKIAotIzogc2VxdWVuY2VyLmM6NTczCisjOiBzZXF1ZW5jZXIuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgImdpdCAlc++8muaXoOazleWIt+aWsOe0ouW8lSIKIAotIzogc2VxdWVuY2VyLmM6NjMxCisjOiBzZXF1ZW5jZXIuYzo3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90ICVzIGR1cmluZyBhICVzIgogbXNnc3RyICLml6Dms5UgJXMg5Zyo5LiA5LiqICVzIOi/h+eoi+S4rSIKIAotIzogc2VxdWVuY2VyLmM6NjUzCisjOiBzZXF1ZW5jZXIuYzo3NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIGxpbmUgJWQuIgogbXNnc3RyICLkuI3og73op6PmnpDnrKwgJWQg6KGM44CCIgogCi0jOiBzZXF1ZW5jZXIuYzo2NTgKKyM6IHNlcXVlbmNlci5jOjc1MgogbXNnaWQgIk5vIGNvbW1pdHMgcGFyc2VkLiIKIG1zZ3N0ciAi5rKh5pyJ5o+Q5Lqk6KKr6Kej5p6Q44CCIgogCi0jOiBzZXF1ZW5jZXIuYzo2NzEKKyM6IHNlcXVlbmNlci5jOjc2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAlcyIKIG1zZ3N0ciAi5LiN6IO95omT5byAICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2NzUKKyM6IHNlcXVlbmNlci5jOjc2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCAlcy4iCiBtc2dzdHIgIuS4jeiDveivu+WPliAlc+OAgiIKIAotIzogc2VxdWVuY2VyLmM6NjgyCisjOiBzZXF1ZW5jZXIuYzo3NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW51c2FibGUgaW5zdHJ1Y3Rpb24gc2hlZXQ6ICVzIgogbXNnc3RyICLml6DnlKjnmoTmjIfku6TooajljZXvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzEwCisjOiBzZXF1ZW5jZXIuYzo4MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBrZXk6ICVzIgogbXNnc3RyICLml6DmlYjplK7lkI3vvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzEzCisjOiBzZXF1ZW5jZXIuYzo4MDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzIgogbXNnc3RyICIlcyDnmoTlgLzml6DmlYjvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzI1CisjOiBzZXF1ZW5jZXIuYzo4MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICLpnZ7ms5XnmoTpgInpobnooajljZXvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6NzQ2CisjOiBzZXF1ZW5jZXIuYzo4NDAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICLkuIDkuKrmi6PpgInmiJbov5jljp/mk43kvZzlt7LlnKjov5vooYwiCiAKLSM6IHNlcXVlbmNlci5jOjc0NworIzogc2VxdWVuY2VyLmM6ODQxCiBtc2dpZCAidHJ5IFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIG1zZ3N0ciAi5bCd6K+VIFwiZ2l0IGNoZXJyeS1waWNrICgtLWNvbnRpbnVlIHwgLS1xdWl0IHwgLS1hYm9ydClcIiIKIAotIzogc2VxdWVuY2VyLmM6NzUxCisjOiBzZXF1ZW5jZXIuYzo4NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICLkuI3og73liJvlu7rluo/liJfnm67lvZUgJXMiCiAKLSM6IHNlcXVlbmNlci5jOjc2NyBzZXF1ZW5jZXIuYzo4NTIKKyM6IHNlcXVlbmNlci5jOjg2MSBzZXF1ZW5jZXIuYzo5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMuIgogbXNnc3RyICLplJnor6/mlLblsL4gJXPjgIIiCiAKLSM6IHNlcXVlbmNlci5jOjc4NiBzZXF1ZW5jZXIuYzo5MjAKKyM6IHNlcXVlbmNlci5jOjg4MCBzZXF1ZW5jZXIuYzoxMDE0CiBtc2dpZCAibm8gY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGluIHByb2dyZXNzIgogbXNnc3RyICLmi6PpgInmiJbov5jljp/mk43kvZzlubbmnKrov5vooYwiCiAKLSM6IHNlcXVlbmNlci5jOjc4OAorIzogc2VxdWVuY2VyLmM6ODgyCiBtc2dpZCAiY2Fubm90IHJlc29sdmUgSEVBRCIKIG1zZ3N0ciAi5LiN6IO96Kej5p6QIEhFQUQiCiAKLSM6IHNlcXVlbmNlci5jOjc5MAorIzogc2VxdWVuY2VyLmM6ODg0CiBtc2dpZCAiY2Fubm90IGFib3J0IGZyb20gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgIuS4jeiDveS7juWwmuacquW7uueri+eahOWIhuaUr+e7iOatoiIKIAotIzogc2VxdWVuY2VyLmM6ODEyIGJ1aWx0aW4vYXBwbHkuYzo0MDA1CisjOiBzZXF1ZW5jZXIuYzo5MDYgYnVpbHRpbi9hcHBseS5jOjQwNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzIgogbXNnc3RyICLkuI3og73miZPlvIAgJXPvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6ODE1CisjOiBzZXF1ZW5jZXIuYzo5MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJXM6ICVzIgogbXNnc3RyICLkuI3og73or7vlj5YgJXPvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6ODE2CisjOiBzZXF1ZW5jZXIuYzo5MTAKIG1zZ2lkICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIgogbXNnc3RyICLmhI/lpJbnmoTmlofku7bnu5PmnZ8iCiAKLSM6IHNlcXVlbmNlci5jOjgyMgorIzogc2VxdWVuY2VyLmM6OTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0b3JlZCBwcmUtY2hlcnJ5LXBpY2sgSEVBRCBmaWxlICclcycgaXMgY29ycnVwdCIKIG1zZ3N0ciAi5L+d5a2Y5ouj6YCJ5o+Q5Lqk5YmN55qEIEhFQUQg5paH5Lu2ICclcycg5o2f5Z2PIgogCi0jOiBzZXF1ZW5jZXIuYzo4NDUKKyM6IHNlcXVlbmNlci5jOjkzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZm9ybWF0ICVzLiIKIG1zZ3N0ciAi5LiN6IO95qC85byP5YyWICVz44CCIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDA3CisjOiBzZXF1ZW5jZXIuYzoxMDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIgorbXNnc3RyICIlc++8muS4jeiDveaLo+mAieS4gOS4qiVzIgorCisjOiBzZXF1ZW5jZXIuYzoxMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCittc2dzdHIgIiVz77ya6ZSZ6K+v55qE54mI5pysIgorCisjOiBzZXF1ZW5jZXIuYzoxMTE5CiBtc2dpZCAiQ2FuJ3QgcmV2ZXJ0IGFzIGluaXRpYWwgY29tbWl0IgogbXNnc3RyICLkuI3og73kvZzkuLrliJ3lp4vmj5DkuqTov5jljp8iCiAKLSM6IHNlcXVlbmNlci5jOjEwMDgKKyM6IHNlcXVlbmNlci5jOjExMjAKIG1zZ2lkICJDYW4ndCBjaGVycnktcGljayBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuS4jeiDveaLo+mAieWIsOepuuWIhuaUryIKIAotIzogc2hhMV9uYW1lLmM6MTA0NAorIzogc2hhMV9uYW1lLmM6MTAzNgogbXNnaWQgIkhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2giCiBtc2dzdHIgIkhFQUQg5rKh5pyJ5oyH5ZCR5LiA5Liq5YiG5pSvIgogCi0jOiBzaGExX25hbWUuYzoxMDQ3CisjOiBzaGExX25hbWUuYzoxMDM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICLmsqHmnInmraTliIbmlK/vvJonJXMnIgogCi0jOiBzaGExX25hbWUuYzoxMDQ5CisjOiBzaGExX25hbWUuYzoxMDQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIgogbXNnc3RyICLlsJrmnKrnu5nliIbmlK8gJyVzJyDorr7nva7kuIrmuLgiCiAKLSM6IHNoYTFfbmFtZS5jOjEwNTIKKyM6IHNoYTFfbmFtZS5jOjEwNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCiBtc2dzdHIgIuS4iua4uOWIhuaUryAnJXMnIOayoeacieWtmOWCqOS4uuS4gOS4qui/nOeoi+i3n+i4quWIhuaUryIKIAogIzogd3JhcHBlci5jOjQwOAotIywgZnV6enksIGMtZm9ybWF0CisjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJzogJXMiCi1tc2dzdHIgIuS4jeiDveWIm+W7uiAnJXMnIgorbXNnc3RyICLkuI3og73orr/pl64gJyVzJ++8miVzIgogCi0jOiB3cmFwcGVyLmM6NDI2CisjOiB3cmFwcGVyLmM6NDIzCisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJyIKK21zZ3N0ciAi5LiN6IO96K6/6ZeuICclcyciCisKKyM6IHdyYXBwZXIuYzo0MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCi1tc2dzdHIgIuaXoOazleWcqCBwYXNzd2Qg5paH5Lu25Lit5p+l6K+i5Yiw6K+l55So5oi377yaJXMiCittc2dzdHIgIuaXoOazleWcqOWPo+S7pOaWh+S7tuS4reafpeivouWIsOW9k+WJjeeUqOaIt++8miVzIgogCi0jOiB3cmFwcGVyLmM6NDI3CisjOiB3cmFwcGVyLmM6NDM1CiBtc2dpZCAibm8gc3VjaCB1c2VyIgogbXNnc3RyICLml6DmraTnlKjmiLciCiAKQEAgLTExMzMsNDM3ICsxMzEwLDU1NSBAQAogbXNnc3RyICLmnKrot5/ouKrnmoTlhoXlrrksICIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiB3dC1zdGF0dXMuYzozMDMKKyM6IHd0LXN0YXR1cy5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZTogICAlcyIKIG1zZ3N0ciAi5paw5paH5Lu277yaICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjMwNgorIzogd3Qtc3RhdHVzLmM6MzA5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcGllZDogICAgICVzIC0+ICVzIgogbXNnc3RyICLmi7fotJ3vvJogICAgICAlcyAtPiAlcyIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiB3dC1zdGF0dXMuYzozMDkKKyM6IHd0LXN0YXR1cy5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkOiAgICAlcyIKIG1zZ3N0ciAi5Yig6Zmk77yaICAgICAgJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MzEyCisjOiB3dC1zdGF0dXMuYzozMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIuS/ruaUue+8miAgICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjMxNQorIzogd3Qtc3RhdHVzLmM6MzE4CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbmFtZWQ6ICAgICVzIC0+ICVzIgogbXNnc3RyICLph43lkb3lkI3vvJogICAgJXMgLT4gJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MzE4CisjOiB3dC1zdGF0dXMuYzozMjEKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIuexu+Wei+WPmOabtO+8miAgJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MzIxCisjOiB3dC1zdGF0dXMuYzozMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCiBtc2dzdHIgIuacquefpe+8miAgICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjMyNAorIzogd3Qtc3RhdHVzLmM6MzI3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICLmnKrlkIjlubbvvJogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMyNworIzogd3Qtc3RhdHVzLmM6MzMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImJ1ZzogdW5oYW5kbGVkIGRpZmYgc3RhdHVzICVjIgogbXNnc3RyICJidWfvvJrmnKrlpITnkIbnmoTlt67lvILnirbmgIEgJWMiCiAKLSM6IHd0LXN0YXR1cy5jOjc4NQorIzogd3Qtc3RhdHVzLmM6ODAzCiBtc2dpZCAiWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuIgogbXNnc3RyICLmgqjmnInlsJrmnKrlkIjlubbnmoTot6/lvoTjgIIiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6Nzg4IHd0LXN0YXR1cy5jOjkxMgorIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCiBtc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB5bm26L+Q6KGMIFwiZ2l0IGNvbW1pdFwi77yJIgogCi0jOiB3dC1zdGF0dXMuYzo3OTEKKyM6IHd0LXN0YXR1cy5jOjgwOQogbXNnaWQgIkFsbCBjb25mbGljdHMgZml4ZWQgYnV0IHlvdSBhcmUgc3RpbGwgbWVyZ2luZy4iCiBtc2dzdHIgIuaJgOacieWGsueqgeW3suino+WGs+S9huaCqOS7jeWkhOS6juWQiOW5tuS4reOAgiIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzo3OTQKKyM6IHd0LXN0YXR1cy5jOjgxMgogbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXRcIiB0byBjb25jbHVkZSBtZXJnZSkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGNvbW1pdFwiIOe7k+adn+WQiOW5tu+8iSIKIAotIzogd3Qtc3RhdHVzLmM6ODA0CisjOiB3dC1zdGF0dXMuYzo4MjIKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gYW0gc2Vzc2lvbi4iCiBtc2dzdHIgIuaCqOato+WkhOS6juS4gOS4qiBhbSDov4fnqIvkuK3jgIIiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNworIzogd3Qtc3RhdHVzLmM6ODI1CiBtc2dpZCAiVGhlIGN1cnJlbnQgcGF0Y2ggaXMgZW1wdHkuIgogbXNnc3RyICLlvZPliY3nmoTooaXkuIHkuLrnqbrjgIIiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6ODExCisjOiB3dC1zdGF0dXMuYzo4MjkKIG1zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIpIgogbXNnc3RyICIgIO+8iOino+WGs+WGsueqge+8jOeEtuWQjui/kOihjCBcImdpdCBhbSAtLXJlc29sdmVkXCLvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6ODEzCisjOiB3dC1zdGF0dXMuYzo4MzEKIG1zZ2lkICIgICh1c2UgXCJnaXQgYW0gLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgYW0gLS1za2lwXCIg6Lez6L+H5q2k6KGl5LiB77yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjgxNQorIzogd3Qtc3RhdHVzLmM6ODMzCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBhbSAtLWFib3J0XCIg5oGi5aSN5Y6f5pyJ5YiG5pSv77yJIgogCi0jOiB3dC1zdGF0dXMuYzo4NzMgd3Qtc3RhdHVzLmM6ODgzCisjOiB3dC1zdGF0dXMuYzo4OTMgd3Qtc3RhdHVzLmM6OTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICLmgqjmraPlnKjlsIbliIbmlK8gJyVzJyDlj5jln7rliLAgJyVzJ+OAgiIKKworIzogd3Qtc3RhdHVzLmM6ODk4IHd0LXN0YXR1cy5jOjkxNQogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIKIG1zZ3N0ciAi5oKo5q2j5Zyo5Y+Y5Z+644CCIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjg3NgorIzogd3Qtc3RhdHVzLmM6OTAxCiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiCiBtc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB77yM54S25ZCO6L+Q6KGMIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCLvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6ODc4CisjOiB3dC1zdGF0dXMuYzo5MDMKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiDot7Pov4fmraTooaXkuIHvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6ODgwCisjOiB3dC1zdGF0dXMuYzo5MDUKIG1zZ2lkICIgICh1c2UgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCIg5Lul5qOA5Ye65Y6f5pyJ5YiG5pSv77yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjg4NgorIzogd3Qtc3RhdHVzLmM6OTE4CiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIgIO+8iOaJgOacieWGsueqgeW3suino+WGs++8mui/kOihjCBcImdpdCByZWJhc2UgLS1jb250aW51ZVwi77yJIgogCi0jOiB3dC1zdGF0dXMuYzo4ODgKKyM6IHd0LXN0YXR1cy5jOjkyMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIgorbXNnc3RyICLmgqjmraPlnKjlsIbliIbmlK8gJyVzJyDlj5jln7rliLAgJyVzJyDov4fnqIvkuK3mi4bliIbkuIDkuKrmj5DkuqTjgIIiCisKKyM6IHd0LXN0YXR1cy5jOjkyNwogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIgogbXNnc3RyICLmgqjmraPlnKjlj5jln7rov4fnqIvkuK3mi4bliIbkuIDkuKrmj5DkuqTjgIIiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6ODkxCisjOiB3dC1zdGF0dXMuYzo5MzAKIG1zZ2lkICIgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiICDvvIjkuIDml6bmgqjlt6XkvZznm67lvZXmj5DkuqTlubLlh4DlkI7vvIzov5DooYwgXCJnaXQgcmViYXNlIC0tY29udGludWVcIu+8iSIKIAotIzogd3Qtc3RhdHVzLmM6ODkzCisjOiB3dC1zdGF0dXMuYzo5MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIKK21zZ3N0ciAi5oKo5q2j5Zyo5bCG5YiG5pSvICclcycg5Y+Y5Z+65YiwICclcycg6L+H56iL5Lit57yW6L6R5LiA5Liq5o+Q5Lqk44CCIgorCisjOiB3dC1zdGF0dXMuYzo5MzkKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iCiBtc2dzdHIgIuaCqOato+WcqOWPmOWfuui/h+eoi+S4ree8lui+keS4gOS4quaPkOS6pOOAgiIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzo4OTYKKyM6IHd0LXN0YXR1cy5jOjk0MgogbXNnaWQgIiAgKHVzZSBcImdpdCBjb21taXQgLS1hbWVuZFwiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIg5L+u6KGl5b2T5YmN5o+Q5Lqk77yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjg5OAorIzogd3Qtc3RhdHVzLmM6OTQ0CiBtc2dpZCAiIgogIiAgKHVzZSBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpIgogbXNnc3RyICIgIO+8iOW9k+aCqOWvueaCqOeahOS/ruaUuea7oeaEj+WQjuaJp+ihjCBcImdpdCByZWJhc2UgLS1jb250aW51ZVwi77yJIgogCi0jOiB3dC1zdGF0dXMuYzo5MDgKKyM6IHd0LXN0YXR1cy5jOjk1NAogbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IGNoZXJyeS1waWNraW5nLiIKIG1zZ3N0ciAi5oKo5q2j5Zyo5YGa5ouj6YCJ5pON5L2c44CCIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjkxNQorIzogd3Qtc3RhdHVzLmM6OTYxCiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKIG1zZ3N0ciAiICDvvIjop6PlhrPmiYDmnInlhrLnqoHlkI7vvIzmiafooYwgXCJnaXQgY29tbWl0XCLvvIkiCiAKLSM6IHd0LXN0YXR1cy5jOjkyNAorIzogd3Qtc3RhdHVzLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBhcmUgY3VycmVudGx5IHJldmVydGluZyBjb21taXQgJXMuIgorbXNnc3RyICLmgqjmraPlnKjlj43ovazmj5DkuqQgJXMg44CCIgorCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjk3NQorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKK21zZ3N0ciAiICDvvIjop6PlhrPlhrLnqoHlubbov5DooYwgXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIu+8iSIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjOiB3dC1zdGF0dXMuYzo5NzgKK21zZ2lkICIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIikiCittc2dzdHIgIiAg77yI5omA5pyJ5Yay56qB5bey6Kej5Yaz77ya6L+Q6KGMIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCLvvIkiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6OTgwCittc2dpZCAiICAodXNlIFwiZ2l0IHJldmVydCAtLWFib3J0XCIgdG8gY2FuY2VsIHRoZSByZXZlcnQgb3BlcmF0aW9uKSIKK21zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgcmV2ZXJ0IC0tYWJvcnRcIiDku6Xlj5bmtojlj43ovazmj5DkuqTmk43kvZzvvIkiCisKKyM6IHd0LXN0YXR1cy5jOjk5MQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcsIHN0YXJ0ZWQgZnJvbSBicmFuY2ggJyVzJy4iCittc2dzdHIgIuaCqOato+WcqOS7juWIhuaUryAnJXMnIOW8gOWni+WBmuS6jOWIhuafpeaJvuOAgiIKKworIzogd3Qtc3RhdHVzLmM6OTk1CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKIG1zZ3N0ciAi5oKo5q2j5Zyo5YGa5LqM5YiG5p+l5om+44CCIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjkyNworIzogd3Qtc3RhdHVzLmM6OTk4CiBtc2dpZCAiICAodXNlIFwiZ2l0IGJpc2VjdCByZXNldFwiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBiaXNlY3QgcmVzZXRcIiDku6Xlm57liLDljp/mnInliIbmlK/vvIkiCiAKLSM6IHd0LXN0YXR1cy5jOjk3OAorIzogd3Qtc3RhdHVzLmM6MTE3MwogbXNnaWQgIk9uIGJyYW5jaCAiCiBtc2dzdHIgIuS9jeS6juWIhuaUryAiCiAKLSM6IHd0LXN0YXR1cy5jOjk4NQorIzogd3Qtc3RhdHVzLmM6MTE4NAorbXNnaWQgIkhFQUQgZGV0YWNoZWQgYXQgIgorbXNnc3RyICLlpLTmjIfpkojliIbnprvkuo4gIgorCisjOiB3dC1zdGF0dXMuYzoxMTg2Cittc2dpZCAiSEVBRCBkZXRhY2hlZCBmcm9tICIKK21zZ3N0ciAi5aS05oyH6ZKI5YiG56a76IeqICIKKworIzogd3Qtc3RhdHVzLmM6MTE4OQogbXNnaWQgIk5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4iCiBtc2dzdHIgIuW9k+WJjeS4jeWcqOS7u+S9leWIhuaUr+S4iuOAgiIKIAotIzogd3Qtc3RhdHVzLmM6OTk3CisjOiB3dC1zdGF0dXMuYzoxMjA2CiBtc2dpZCAiSW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIuWIneWni+aPkOS6pCIKIAotIzogd3Qtc3RhdHVzLmM6MTAxMQotIywgZnV6enkKKyM6IHd0LXN0YXR1cy5jOjEyMjAKIG1zZ2lkICJVbnRyYWNrZWQgZmlsZXMiCi1tc2dzdHIgIuacqui3n+i4queahCIKK21zZ3N0ciAi5pyq6Lef6Liq55qE5paH5Lu2IgogCi0jOiB3dC1zdGF0dXMuYzoxMDEzCi0jLCBmdXp6eQorIzogd3Qtc3RhdHVzLmM6MTIyMgogbXNnaWQgIklnbm9yZWQgZmlsZXMiCi1tc2dzdHIgIuW/veeVpeeahCIKK21zZ3N0ciAi5b+955Wl55qE5paH5Lu2IgogCi0jOiB3dC1zdGF0dXMuYzoxMDE1CisjOiB3dC1zdGF0dXMuYzoxMjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCisibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorIm5ldyBmaWxlcyB5b3Vyc2VsZiAoc2VlICdnaXQgaGVscCBzdGF0dXMnKS4iCittc2dzdHIgIiIKKyLogJfotLnkuoYgJS4yZiDnp5Lku6XmnprkuL7mnKrot5/ouKrnmoTmlofku7bjgIInc3RhdHVzIC11bm8nIOS5n+iuuOiDveaPkOmrmOmAn+W6pu+8jFxuIgorIuS9huaCqOmcgOimgeWwj+W/g+S4jeimgeW/mOS6hua3u+WKoOaWsOaWh+S7tu+8iOWPguingSAnZ2l0IGhlbHAgc3RhdHVzJ++8ieOAgiIKKworIzogd3Qtc3RhdHVzLmM6MTIzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnRyYWNrZWQgZmlsZXMgbm90IGxpc3RlZCVzIgogbXNnc3RyICLmnKrot5/ouKrnmoTmlofku7bmsqHmnInliJflh7olcyIKIAogIyAg6K+R6ICF77ya5Lit5paH5a2X56ym5Liy5ou85o6l77yM5Y+v5Yig6Zmk5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxMDE3CisjOiB3dC1zdGF0dXMuYzoxMjM0CiBtc2dpZCAiICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKIG1zZ3N0ciAi77yI5L2/55SoIC11IOWPguaVsOaYvuekuuacqui3n+i4queahOaWh+S7tu+8iSIKIAotIzogd3Qtc3RhdHVzLmM6MTAyMworIzogd3Qtc3RhdHVzLmM6MTI0MAogbXNnaWQgIk5vIGNoYW5nZXMiCiBtc2dzdHIgIuayoeacieS/ruaUuSIKIAotIyAg6K+R6ICF77ya5Lit5paH5a2X56ym5Liy5ou85o6l77yM5Y+v5Yig6Zmk5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxMDI4Ci0jLCBmdXp6eSwgYy1mb3JtYXQKKyM6IHd0LXN0YXR1cy5jOjEyNDUKKyMsIGMtZm9ybWF0CiBtc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpXG4iCi1tc2dzdHIgIu+8iOS9v+eUqCBcImdpdCBhZGRcIiDlkowv5oiWIFwiZ2l0IGNvbW1pdCAtYVwi77yJIgorbXNnc3RyICLkv67mlLnlsJrmnKrliqDlhaXmj5DkuqTvvIjkvb/nlKggXCJnaXQgYWRkXCIg5ZKML+aIliBcImdpdCBjb21taXQgLWFcIu+8iVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMDMxCi0jLCBmdXp6eSwgYy1mb3JtYXQKKyM6IHd0LXN0YXR1cy5jOjEyNDgKKyMsIGMtZm9ybWF0CiBtc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXRcbiIKLW1zZ3N0ciAi5L+u5pS55bCa5pyq5Yqg5YWl5o+Q5LqkJXNcbiIKK21zZ3N0ciAi5L+u5pS55bCa5pyq5Yqg5YWl5o+Q5LqkXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwMzQKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogd3Qtc3RhdHVzLmM6MTI1MQorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50ICh1c2UgXCJnaXQgYWRkXCIgdG8gIgogInRyYWNrKVxuIgotbXNnc3RyICLnqbrmj5DkuqTkvYblrZjlnKjmnKrot5/ouKrmlofku7Ylc1xuIgorbXNnc3RyICLmj5DkuqTkuLrnqbrvvIzkvYbmmK/lrZjlnKjlsJrmnKrot5/ouKrnmoTmlofku7bvvIjkvb/nlKggXCJnaXQgYWRkXCIg5bu656uL6Lef6Liq77yJXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEwMzcKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogd3Qtc3RhdHVzLmM6MTI1NAorIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnRcbiIKLW1zZ3N0ciAi56m65o+Q5Lqk5L2G5a2Y5Zyo5pyq6Lef6Liq5paH5Lu2JXNcbiIKK21zZ3N0ciAi5o+Q5Lqk5Li656m677yM5L2G5piv5a2Y5Zyo5bCa5pyq6Lef6Liq55qE5paH5Lu2XG4iCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTA0MAotIywgZnV6enksIGMtZm9ybWF0CisjOiB3dC1zdGF0dXMuYzoxMjU3CisjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0IChjcmVhdGUvY29weSBmaWxlcyBhbmQgdXNlIFwiZ2l0IGFkZFwiIHRvIHRyYWNrKVxuIgotbXNnc3RyICLvvIjmlrDlu7ov5ou36LSd55qE5paH5Lu25L2/55SoIFwiZ2l0IGFkZFwiIOW7uueri+i3n+i4qu+8iSIKK21zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5Lqk77yI5Yib5bu6L+aLt+i0neaWh+S7tuW5tuS9v+eUqCBcImdpdCBhZGRcIiDlu7rnq4vot5/ouKrvvIlcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTA0MyB3dC1zdGF0dXMuYzoxMDQ4Ci0jLCBmdXp6eSwgYy1mb3JtYXQKKyM6IHd0LXN0YXR1cy5jOjEyNjAgd3Qtc3RhdHVzLmM6MTI2NQorIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdFxuIgotbXNnc3RyICLml6Dpobvmj5DkuqQlc1xuIgorbXNnc3RyICLml6Dmlofku7bopoHmj5DkuqRcbiIKIAogIyAg6K+R6ICF77ya5Lit5paH5a2X56ym5Liy5ou85o6l77yM5Y+v5Yig6Zmk5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxMDQ2Ci0jLCBmdXp6eSwgYy1mb3JtYXQKKyM6IHd0LXN0YXR1cy5jOjEyNjMKKyMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcylcbiIKLW1zZ3N0ciAi77yI5L2/55SoIC11IOaYvuekuuacqui3n+i4quaWh+S7tu+8iSIKK21zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5Lqk77yI5L2/55SoIC11IOaYvuekuuacqui3n+i4queahOaWh+S7tu+8iVxuIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjEwNTAKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogd3Qtc3RhdHVzLmM6MTI2NworIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKLW1zZ3N0ciAi77yI5bmy5YeA55qE5bel5L2c5Yy677yJIgorbXNnc3RyICLml6Dmlofku7bopoHmj5DkuqTvvIzlubLlh4DnmoTlt6XkvZzljLpcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTE1OAorIzogd3Qtc3RhdHVzLmM6MTM3NQogbXNnaWQgIkhFQUQgKG5vIGJyYW5jaCkiCiBtc2dzdHIgIkhFQUTvvIjpnZ7liIbmlK/vvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogd3Qtc3RhdHVzLmM6MTE2NAorIzogd3Qtc3RhdHVzLmM6MTM4MQogbXNnaWQgIkluaXRpYWwgY29tbWl0IG9uICIKIG1zZ3N0ciAi5Yid5aeL5o+Q5Lqk5LqOICIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5Y+l5bC+56m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxMTc5CisjOiB3dC1zdGF0dXMuYzoxMzk2CiBtc2dpZCAiYmVoaW5kICIKIG1zZ3N0ciAi6JC95ZCOICIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5Y+l5bC+56m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxMTgyIHd0LXN0YXR1cy5jOjExODUKKyM6IHd0LXN0YXR1cy5jOjEzOTkgd3Qtc3RhdHVzLmM6MTQwMgogbXNnaWQgImFoZWFkICIKIG1zZ3N0ciAi6aKG5YWIICIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5Y+l5bC+56m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxMTg3CisjOiB3dC1zdGF0dXMuYzoxNDA0CiBtc2dpZCAiLCBiZWhpbmQgIgogbXNnc3RyICLvvIzokL3lkI4gIgogCi0jOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM0MQorIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHVubGluayAnJXMnIgogbXNnc3RyICLml6Dms5XliKDpmaQgJyVzJyIKIAotIzogYnVpbHRpbi9hZGQuYzoxOQotIywgZnV6enkKLW1zZ2lkICJnaXQgYWRkIFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iCi1tc2dzdHIgImdpdCBhcHBseSBb6YCJ6aG5XSBbPOihpeS4gT4uLi5dIgorIzogYnVpbHRpbi9hZGQuYzoyMAorbXNnaWQgImdpdCBhZGQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiZ2l0IGFkZCBb6YCJ6aG5XSBbLS1dIDzot6/lvoTljLnphY0+Li4uIgogCi0jOiBidWlsdGluL2FkZC5jOjYyCisjICDor5HogIXvvJrlrZfnrKbkuLLpppbooYzooYzpppbopoHmt7vliqDigJx3YXJuaW5nOiDigJ3lrZfkuLLvvIzmlYXmraTpppbooYzopoHovoPlhbbkvZnooYznn60KKyMuCisjLiAqIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCAiZ2l0IGFkZCAtcCIgYW5kIG1vc3QgR2l0CisjLiAqIGNvbW1hbmRzLCB3ZSBzaG91bGQgZGVmYXVsdCB0byBiZWluZyB0cmVlLXdpZGUsIGJ1dAorIy4gKiB0aGlzIGlzIG5vdCB0aGUgb3JpZ2luYWwgYmVoYXZpb3IgYW5kIGNhbid0IGJlCisjLiAqIGNoYW5nZWQgdW50aWwgdXNlcnMgdHJhaW5lZCB0aGVtc2VsdmVzIG5vdCB0byB0eXBlCisjLiAqICJnaXQgYWRkIC11IiBvciAiZ2l0IGFkZCAtQSIuIEZvciBub3csIHdlIHdhcm4gYW5kCisjLiAqIGtlZXAgdGhlIG9sZCBiZWhhdmlvci4gTGF0ZXIsIHRoZSBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZAorIy4gKiB0byB0cmVlLXdpZGUsIGtlZXBpbmcgdGhlIHdhcm5pbmcgZm9yIGEgd2hpbGUsIGFuZAorIy4gKiBldmVudHVhbGx5IHdlIGNhbiBkcm9wIHRoZSB3YXJuaW5nLgorIy4KKyM6IGJ1aWx0aW4vYWRkLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBiZWhhdmlvciBvZiAnZ2l0IGFkZCAlcyAob3IgJXMpJyB3aXRoIG5vIHBhdGggYXJndW1lbnQgZnJvbSBhXG4iCisic3ViZGlyZWN0b3J5IG9mIHRoZSB0cmVlIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgYW5kIHNob3VsZCBub3QgYmUgdXNlZCAiCisiYW55bW9yZS5cbiIKKyJUbyBhZGQgY29udGVudCBmb3IgdGhlIHdob2xlIHRyZWUsIHJ1bjpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgIChvciBnaXQgYWRkICVzIDovKVxuIgorIlxuIgorIlRvIHJlc3RyaWN0IHRoZSBjb21tYW5kIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgcnVuOlxuIgorIlxuIgorIiAgZ2l0IGFkZCAlcyAuXG4iCisiICAob3IgZ2l0IGFkZCAlcyAuKVxuIgorIlxuIgorIldpdGggdGhlIGN1cnJlbnQgR2l0IHZlcnNpb24sIHRoZSBjb21tYW5kIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGN1cnJlbnQgIgorImRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiIgorIuWcqCBHaXQgMi4wIOeJiOacrO+8jOS9jeS6juS4gOS4quWtkOebruW9leS4i+S4jeW4puS7u+S9lei3r+W+hOWPguaVsOWcsOaJp+ihjOWRveS7pFxuIgorIidnaXQgYWRkICVzICjmiJYgJXMpJyDnmoTooYzkuLrlsIbooqvmlLnlj5jvvIzkuI3opoHlho3nu6fnu63kvb/nlKjkuobjgIJcbiIKKyLlpoLmnpzopoHmt7vliqDmlbTkuKrnm67lvZXmoJHnmoTlhoXlrrnvvIzmiafooYzvvJpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgOi9cbiIKKyIgICjmiJYgZ2l0IGFkZCAlcyA6LylcbiIKKyJcbiIKKyLlpoLmnpzopoHpmZDliLbor6Xlkb3ku6Tlj6rkvZznlKjkuo7lvZPliY3nm67lvZXvvIzmiafooYzvvJpcbiIKKyJcbiIKKyIgIGdpdCBhZGQgJXMgLlxuIgorIiAgKOaIliBnaXQgYWRkICVzIC4pXG4iCisiXG4iCisi5a+55LqO5b2T5YmN54mI5pys55qEIEdpdO+8jOi/meadoeWRveS7pOWPquS9nOeUqOS6juW9k+WJjeebruW9leOAglxuIgorCisjOiBidWlsdGluL2FkZC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWW91IHJhbiAnZ2l0IGFkZCcgd2l0aCBuZWl0aGVyICctQSAoLS1hbGwpJyBvciAnLS1pZ25vcmUtcmVtb3ZhbCcsXG4iCisid2hvc2UgYmVoYXZpb3VyIHdpbGwgY2hhbmdlIGluIEdpdCAyLjAgd2l0aCByZXNwZWN0IHRvIHBhdGhzIHlvdSByZW1vdmVkLlxuIgorIlBhdGhzIGxpa2UgJyVzJyB0aGF0IGFyZVxuIgorInJlbW92ZWQgZnJvbSB5b3VyIHdvcmtpbmcgdHJlZSBhcmUgaWdub3JlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiBHaXQuXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4nLCB3aGljaCBpcyB0aGUgY3VycmVudCBkZWZhdWx0LFxuIgorIiAgaWdub3JlcyBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorIlxuIgorIiogJ2dpdCBhZGQgLS1hbGwgPHBhdGhzcGVjPicgd2lsbCBsZXQgeW91IGFsc28gcmVjb3JkIHRoZSByZW1vdmFscy5cbiIKKyJcbiIKKyJSdW4gJ2dpdCBzdGF0dXMnIHRvIGNoZWNrIHRoZSBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHlvdXIgd29ya2luZyB0cmVlLlxuIgorbXNnc3RyICIiCisi5oKo5Zyo6L+Q6KGMICdnaXQgYWRkJyDml7bmsqHmnInmjIflrpogJy1BICgtLWFsbCknIOaIliAnLS1pZ25vcmUtcmVtb3ZhbCfvvIxcbiIKKyLpkojlr7nlhbbkuK3mnKzlnLDnp7vpmaTot6/lvoTnmoTooYzkuLrlsIblnKggR2l0IDIuMCDniYjmnKzlupPlj5HnlJ/lj5jljJbjgIJcbiIKKyLlg4/mnKzlnLDlt6XkvZzljLrnp7vpmaTnmoTot6/lvoQgJyVzJ1xuIgorIuWcqOatpOeJiOacrOeahCBHaXQg5Lit6KKr5b+955Wl44CCXG4iCisiXG4iCisiKiAnZ2l0IGFkZCAtLWlnbm9yZS1yZW1vdmFsIDxwYXRoc3BlYz4n77yM5piv5b2T5YmN54mI5pys55qE6buY6K6k5pON5L2c77yMXG4iCisiICDlv73nlaXmgqjmnKzlnLDlt6XkvZzljLrkuK3np7vpmaTnmoTmlofku7bjgIJcbiIKKyJcbiIKKyIqICdnaXQgYWRkIC0tYWxsIDxwYXRoc3BlYz4nIOWwhuiuqeaCqOWQjOaXtuWvueWIoOmZpOaTjeS9nOi/m+ihjOiusOW9leOAglxuIgorIlxuIgorIui/kOihjCAnZ2l0IHN0YXR1cycg5p2l5qOA5p+l5oKo5pys5Zyw5bel5L2c5Yy65Lit56e76Zmk55qE6Lev5b6E44CCXG4iCisKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgIuaEj+WklueahOW3ruW8gueKtuaAgSAlYyIKIAotIzogYnVpbHRpbi9hZGQuYzo2NyBidWlsdGluL2NvbW1pdC5jOjIyOQorIzogYnVpbHRpbi9hZGQuYzoxNDkgYnVpbHRpbi9jb21taXQuYzoyMzMKIG1zZ2lkICJ1cGRhdGluZyBmaWxlcyBmYWlsZWQiCiBtc2dzdHIgIuabtOaWsOaWh+S7tuWksei0pSIKIAotIzogYnVpbHRpbi9hZGQuYzo3NworIzogYnVpbHRpbi9hZGQuYzoxNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVtb3ZlICclcydcbiIKIG1zZ3N0ciAi5Yig6ZmkICclcydcbiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUGF0aCAnJXMnIGlzIGluIHN1Ym1vZHVsZSAnJS4qcyciCi1tc2dzdHIgIui3r+W+hCAnJXMnIOWxnuS6juaooee7hCAnJS4qcyciCi0KLSM6IGJ1aWx0aW4vYWRkLmM6MTkyCisjOiBidWlsdGluL2FkZC5jOjI1MwogbXNnaWQgIlVuc3RhZ2VkIGNoYW5nZXMgYWZ0ZXIgcmVmcmVzaGluZyB0aGUgaW5kZXg6IgogbXNnc3RyICLliLfmlrDntKLlvJXkuYvlkI7lsJrmnKrooqvmmoLlrZjnmoTlj5jmm7TvvJoiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MTk1IGJ1aWx0aW4vYWRkLmM6NDYwIGJ1aWx0aW4vcm0uYzoxODYKKyM6IGJ1aWx0aW4vYWRkLmM6MjU2IGJ1aWx0aW4vYWRkLmM6NTcyIGJ1aWx0aW4vcm0uYzoyNzUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aHNwZWMgJyVzJyBkaWQgbm90IG1hdGNoIGFueSBmaWxlcyIKIG1zZ3N0ciAi6Lev5b6EICclcycg5pyq5Yy56YWN5Lu75L2V5paH5Lu2IgogCi0jOiBidWlsdGluL2FkZC5jOjIwOQotIywgYy1mb3JtYXQKLW1zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCi1tc2dzdHIgIiclcycg5L2N5LqO56ym5Y+36ZO+5o6l5LitIgotCi0jOiBidWlsdGluL2FkZC5jOjI3NgorIzogYnVpbHRpbi9hZGQuYzozMzkKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIuS4jeiDveivu+WPlue0ouW8lSIKIAotIzogYnVpbHRpbi9hZGQuYzoyODYKKyM6IGJ1aWx0aW4vYWRkLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICLkuI3og73miZPlvIAgJyVzJyDku6XlhpnlhaXjgIIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MjkwCisjOiBidWlsdGluL2FkZC5jOjM1MwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAi5LiN6IO955Sf5oiQ6KGl5LiBIgogCi0jOiBidWlsdGluL2FkZC5jOjI5NQorIzogYnVpbHRpbi9hZGQuYzozNTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95p+l55yL5paH5Lu254q25oCBICclcyciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mjk3CisjOiBidWlsdGluL2FkZC5jOjM2MAogbXNnaWQgIkVtcHR5IHBhdGNoLiBBYm9ydGVkLiIKIG1zZ3N0ciAi56m66KGl5LiB44CC5byC5bi457uI5q2i44CCIgogCi0jOiBidWlsdGluL2FkZC5jOjMwMworIzogYnVpbHRpbi9hZGQuYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGx5ICclcyciCiBtc2dzdHIgIuS4jeiDveW6lOeUqCAnJXMnIgogCi0jOiBidWlsdGluL2FkZC5jOjMxMworIzogYnVpbHRpbi9hZGQuYzozNzYKIG1zZ2lkICJUaGUgZm9sbG93aW5nIHBhdGhzIGFyZSBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iCiBtc2dzdHIgIuS4i+WIl+i3r+W+hOagueaNruaCqOeahOS4gOS4qiAuZ2l0aWdub3JlIOaWh+S7tuiAjOiiq+W/veeVpe+8mlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjMxOSBidWlsdGluL2NsZWFuLmM6NTIgYnVpbHRpbi9mZXRjaC5jOjc4IGJ1aWx0aW4vbXYuYzo2MwotIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NiBidWlsdGluL3B1c2guYzozODggYnVpbHRpbi9yZW1vdGUuYzoxMjUzCi0jOiBidWlsdGluL3JtLmM6MTMzCisjOiBidWlsdGluL2FkZC5jOjM5MyBidWlsdGluL2NsZWFuLmM6MTYxIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKKyM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6NDI1IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MworIzogYnVpbHRpbi9ybS5jOjIwNgogbXNnaWQgImRyeSBydW4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5ryU5LmgIgogCi0jOiBidWlsdGluL2FkZC5jOjMyMCBidWlsdGluL2FwcGx5LmM6NDM1NCBidWlsdGluL2NvbW1pdC5jOjExODcKLSM6IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjgyIGJ1aWx0aW4vZnNjay5jOjYxMyBidWlsdGluL2xvZy5jOjE0NzcKLSM6IGJ1aWx0aW4vbXYuYzo2MiBidWlsdGluL3JlYWQtdHJlZS5jOjExMgorIzogYnVpbHRpbi9hZGQuYzozOTQgYnVpbHRpbi9hcHBseS5jOjQ0MDkgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOQorIzogYnVpbHRpbi9jb21taXQuYzoxMTUyIGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjk1IGJ1aWx0aW4vZnNjay5jOjYxMworIzogYnVpbHRpbi9sb2cuYzoxNTE4IGJ1aWx0aW4vbXYuYzo2MiBidWlsdGluL3JlYWQtdHJlZS5jOjExMgogbXNnaWQgImJlIHZlcmJvc2UiCiBtc2dzdHIgIuWGl+mVv+i+k+WHuiIKIAotIzogYnVpbHRpbi9hZGQuYzozMjIKLSMsIGZ1enp5CisjOiBidWlsdGluL2FkZC5jOjM5NgogbXNnaWQgImludGVyYWN0aXZlIHBpY2tpbmciCi1tc2dzdHIgIuS6pOS6kuW8j+a3u+WKoOWksei0pSIKK21zZ3N0ciAi5Lqk5LqS5byP5ouj6YCJIgogCi0jOiBidWlsdGluL2FkZC5jOjMyMyBidWlsdGluL2NoZWNrb3V0LmM6MTAyOCBidWlsdGluL3Jlc2V0LmM6MjQ4CisjOiBidWlsdGluL2FkZC5jOjM5NyBidWlsdGluL2NoZWNrb3V0LmM6MTA2MyBidWlsdGluL3Jlc2V0LmM6MjU4CiBtc2dpZCAic2VsZWN0IGh1bmtzIGludGVyYWN0aXZlbHkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Lqk5LqS5byP5oyR6YCJ5pWw5o2u5Z2XIgogCi0jOiBidWlsdGluL2FkZC5jOjMyNAorIzogYnVpbHRpbi9hZGQuYzozOTgKIG1zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi57yW6L6R5b2T5YmN5beu5byC5bm25bqU55SoIgogCi0jOiBidWlsdGluL2FkZC5jOjMyNQorIzogYnVpbHRpbi9hZGQuYzozOTkKIG1zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5YWB6K645re75Yqg5b+955Wl55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2FkZC5jOjMyNgotIywgZnV6enkKKyM6IGJ1aWx0aW4vYWRkLmM6NDAwCiBtc2dpZCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiCi1tc2dzdHIgIuaXoOazleWtmOWCqOWMheaWh+S7tiIKK21zZ3N0ciAi5pu05paw5bey6Lef6Liq55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2FkZC5jOjMyNworIzogYnVpbHRpbi9hZGQuYzo0MDEKIG1zZ2lkICJyZWNvcmQgb25seSB0aGUgZmFjdCB0aGF0IHRoZSBwYXRoIHdpbGwgYmUgYWRkZWQgbGF0ZXIiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q6K6w5b2V77yM6K+l6Lev5b6E56iN5ZCO5YaN5re75YqgIgogCi0jOiBidWlsdGluL2FkZC5jOjMyOAorIzogYnVpbHRpbi9hZGQuYzo0MDIKIG1zZ2lkICJhZGQgY2hhbmdlcyBmcm9tIGFsbCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5re75Yqg5omA5pyJ5pS55Y+Y55qE5bey6Lef6Liq5paH5Lu25ZKM5pyq6Lef6Liq5paH5Lu2IgogCi0jOiBidWlsdGluL2FkZC5jOjMyOQotIywgZnV6enkKKyMuIHRha2VzIG5vIGFyZ3VtZW50cworIzogYnVpbHRpbi9hZGQuYzo0MDUKK21zZ2lkICJpZ25vcmUgcGF0aHMgcmVtb3ZlZCBpbiB0aGUgd29ya2luZyB0cmVlIChzYW1lIGFzIC0tbm8tYWxsKSIKK21zZ3N0ciAi5b+955Wl5bel5L2c5Yy65Lit56e76Zmk55qE6Lev5b6E77yI5ZKMIC0tbm8tYWxsIOebuOWQjO+8iSIKKworIzogYnVpbHRpbi9hZGQuYzo0MDcKIG1zZ2lkICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiCi1tc2dzdHIgImdpdCAlc++8muaXoOazleWIt+aWsOe0ouW8lSIKK21zZ3N0ciAi5LiN5re75Yqg77yM5Y+q5Yi35paw57Si5byVIgogCi0jOiBidWlsdGluL2FkZC5jOjMzMAorIzogYnVpbHRpbi9hZGQuYzo0MDgKIG1zZ2lkICJqdXN0IHNraXAgZmlsZXMgd2hpY2ggY2Fubm90IGJlIGFkZGVkIGJlY2F1c2Ugb2YgZXJyb3JzIgotbXNnc3RyICIiCittc2dzdHIgIui3s+i/h+WboOWHuumUmeS4jeiDvea3u+WKoOeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9hZGQuYzozMzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5CiBtc2dpZCAiY2hlY2sgaWYgLSBldmVuIG1pc3NpbmcgLSBmaWxlcyBhcmUgaWdub3JlZCBpbiBkcnkgcnVuIgotbXNnc3RyICIiCittc2dzdHIgIuajgOafpeWcqOa8lOS5oOaooeW8j+S4i+aWh+S7tu+8iOWNs+S9v+S4jeWtmOWcqO+8ieaYr+WQpuiiq+W/veeVpSIKIAotIzogYnVpbHRpbi9hZGQuYzozNTMKKyM6IGJ1aWx0aW4vYWRkLmM6NDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIHRoZW0uXG4iCiBtc2dzdHIgIuS9v+eUqCAtZiDlj4LmlbDlpoLmnpzmgqjnoa7lrp7opoHmt7vliqDlroPku6zjgIJcbiIKIAotIzogYnVpbHRpbi9hZGQuYzozNTQKKyM6IGJ1aWx0aW4vYWRkLmM6NDMyCiBtc2dpZCAibm8gZmlsZXMgYWRkZWQiCiBtc2dzdHIgIuayoeacieaWh+S7tuiiq+a3u+WKoCIKIAotIzogYnVpbHRpbi9hZGQuYzozNjAKKyM6IGJ1aWx0aW4vYWRkLmM6NDM4CiBtc2dpZCAiYWRkaW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAi5re75Yqg5paH5Lu25aSx6LSlIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MgorIzogYnVpbHRpbi9hZGQuYzo0NzcKIG1zZ2lkICItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLUEg5ZKMIC11IOmAiemhueS6kuaWpSIKIAotIzogYnVpbHRpbi9hZGQuYzozOTQKKyM6IGJ1aWx0aW4vYWRkLmM6NDk1CiBtc2dpZCAiT3B0aW9uIC0taWdub3JlLW1pc3NpbmcgY2FuIG9ubHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIC0tZHJ5LXJ1biIKIG1zZ3N0ciAi6YCJ6aG5IC0taWdub3JlLW1pc3Npbmcg5Y+q6IO95ZKMIC0tZHJ5LXJ1biDlkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE0CisjOiBidWlsdGluL2FkZC5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3RoaW5nIHNwZWNpZmllZCwgbm90aGluZyBhZGRlZC5cbiIKIG1zZ3N0ciAi5rKh5pyJ5oyH5a6a5paH5Lu277yM5Lmf5rKh5pyJ5paH5Lu26KKr5re75Yqg44CCXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDE1CisjOiBidWlsdGluL2FkZC5jOjUyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYXliZSB5b3Ugd2FudGVkIHRvIHNheSAnZ2l0IGFkZCAuJz9cbiIKIG1zZ3N0ciAi5Lmf6K645oKo5oOz6KaB5omn6KGMICdnaXQgYWRkIC4n77yfXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDIxIGJ1aWx0aW4vY2xlYW4uYzo5NSBidWlsdGluL2NvbW1pdC5jOjI4OSBidWlsdGluL212LmM6ODIKLSM6IGJ1aWx0aW4vcm0uYzoxNjIKKyM6IGJ1aWx0aW4vYWRkLmM6NTMyIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6NjYgYnVpbHRpbi9jbGVhbi5jOjIwNAorIzogYnVpbHRpbi9jb21taXQuYzoyOTMgYnVpbHRpbi9tdi5jOjgyIGJ1aWx0aW4vcm0uYzoyMzUKIG1zZ2lkICJpbmRleCBmaWxlIGNvcnJ1cHQiCiBtc2dzdHIgIue0ouW8leaWh+S7tuaNn+WdjyIKIAotIzogYnVpbHRpbi9hZGQuYzo0ODEgYnVpbHRpbi9hcHBseS5jOjQ0NTAgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MjYwCisjOiBidWlsdGluL2FkZC5jOjYwNCBidWlsdGluL2FwcGx5LmM6NDUwNSBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzozNzAKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIuaXoOazleWGmeWFpeaWsOe0ouW8leaWh+S7tiIKIApAQCAtMTYxNiwxNyArMTkxMSwxNyBAQAogbXNnaWQgImdpdCBhcHBseTogYmFkIGdpdC1kaWZmIC0gZXhwZWN0ZWQgL2Rldi9udWxsIG9uIGxpbmUgJWQiCiBtc2dzdHIgImdpdCBhcHBsee+8mumUmeivr+eahCBnaXQtZGlmZiAtIOesrCAlZCDooYzlpITlupTkuLogL2Rldi9udWxsIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQyMAorIzogYnVpbHRpbi9hcHBseS5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVjb3VudDogdW5leHBlY3RlZCBsaW5lOiAlLipzIgogbXNnc3RyICJyZWNvdW5077ya5oSP5aSW55qE6KGM77yaJS4qcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE0NzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNDc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZyYWdtZW50IHdpdGhvdXQgaGVhZGVyIGF0IGxpbmUgJWQ6ICUuKnMiCiBtc2dzdHIgIuesrCAlZCDooYznmoTooaXkuIHniYfmrrXmsqHmnInlpLTkv6Hmga/vvJolLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTQ5NAorIzogYnVpbHRpbi9hcHBseS5jOjE0OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogImdpdCBkaWZmIGhlYWRlciBsYWNrcyBmaWxlbmFtZSBpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nICVkIGxlYWRpbmcgcGF0aG5hbWUgIgpAQCAtMTYzNyw4MiArMTkzMiw3OCBAQAogbXNnc3RyWzBdICLlvZPnp7vpmaQgJWQg5Liq5YmN5a+86Lev5b6E5ZCOIGdpdCBkaWZmIOWktOe8uuS5j+aWh+S7tuWQjeS/oeaBr++8iOesrCAlZCDooYzvvIkiCiBtc2dzdHJbMV0gIuW9k+enu+mZpCAlZCDkuKrliY3lr7zot6/lvoTlkI4gZ2l0IGRpZmYg5aS057y65LmP5paH5Lu25ZCN5L+h5oGv77yI56ysICVkIOihjO+8iSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2NTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU2CiBtc2dpZCAibmV3IGZpbGUgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIuaWsOaWh+S7tuS+nei1luaXp+WGheWuuSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE2NTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxNjU4CiBtc2dpZCAiZGVsZXRlZCBmaWxlIHN0aWxsIGhhcyBjb250ZW50cyIKIG1zZ3N0ciAi5Yig6Zmk55qE5paH5Lu25LuN5pyJ5YaF5a65IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTY4MgorIzogYnVpbHRpbi9hcHBseS5jOjE2ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29ycnVwdCBwYXRjaCBhdCBsaW5lICVkIgogbXNnc3RyICLooaXkuIHlnKjnrKwgJWQg6KGM5o2f5Z2PIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTcxOAorIzogYnVpbHRpbi9hcHBseS5jOjE3MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGUgJXMgZGVwZW5kcyBvbiBvbGQgY29udGVudHMiCiBtc2dzdHIgIuaWsOaWh+S7tiAlcyDkvp3otZbml6flhoXlrrkiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxNzIwCisjOiBidWlsdGluL2FwcGx5LmM6MTcyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkIGZpbGUgJXMgc3RpbGwgaGFzIGNvbnRlbnRzIgogbXNnc3RyICLliKDpmaTnmoTmlofku7YgJXMg5LuN5pyJ5YaF5a65IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MTcyMworIzogYnVpbHRpbi9hcHBseS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiKiogd2FybmluZzogZmlsZSAlcyBiZWNvbWVzIGVtcHR5IGJ1dCBpcyBub3QgZGVsZXRlZCIKIG1zZ3N0ciAiKiog6K2m5ZGK77ya5paH5Lu2ICVzIOaIkOS4uuepuuaWh+S7tuS9huW5tuacquWIoOmZpCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjE4NjkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoxODcxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcnJ1cHQgYmluYXJ5IHBhdGNoIGF0IGxpbmUgJWQ6ICUuKnMiCiBtc2dzdHIgIuS6jOi/m+WItuihpeS4geWcqOesrCAlZCDooYzmjZ/lnY/vvJolLipzIgogCiAjLiB0aGVyZSBoYXMgdG8gYmUgb25lIGh1bmsgKGZvcndhcmQgaHVuaykKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxODk4CisjOiBidWlsdGluL2FwcGx5LmM6MTkwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgYmluYXJ5IHBhdGNoIGF0IGxpbmUgJWQiCiBtc2dzdHIgIuacquiDveivhuWIq+eahOS6jOi/m+WItuihpeS4geS9jeS6juesrCAlZCDooYwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzoxOTg0CisjOiBidWlsdGluL2FwcGx5LmM6MTk4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRjaCB3aXRoIG9ubHkgZ2FyYmFnZSBhdCBsaW5lICVkIgogbXNnc3RyICLooaXkuIHmlofku7bnmoTnrKwgJWQg6KGM5Y+q5pyJ5Z6D5Zy+5pWw5o2uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA3NAorIzogYnVpbHRpbi9hcHBseS5jOjIwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgc3ltbGluayAlcyIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W56ym5Y+36ZO+5o6lICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjA3OAorIzogYnVpbHRpbi9hcHBseS5jOjIwODAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIG9wZW4gb3IgcmVhZCAlcyIKIG1zZ3N0ciAi5LiN6IO95omT5byA5oiW6K+75Y+WICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjE0OQotbXNnaWQgIm9vcHMiCi1tc2dzdHIgIuWTjuWTnyIKLQotIzogYnVpbHRpbi9hcHBseS5jOjI2NzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyNjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgc3RhcnQgb2YgbGluZTogJyVjJyIKIG1zZ3N0ciAi5peg5pWI55qE6KGM6aaW5a2X56ym77yaJyVjJyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI3ODkKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIHN1Y2NlZWRlZCBhdCAlZCAob2Zmc2V0ICVkIGxpbmUpLiIKIG1zZ2lkX3BsdXJhbCAiSHVuayAjJWQgc3VjY2VlZGVkIGF0ICVkIChvZmZzZXQgJWQgbGluZXMpLiIKLW1zZ3N0clswXSAi5Z2XICMlZCDmiJDlip/lupTnlKjkuo4gJWQgKOWBj+enuyAlZCDooYzvvIkiCi1tc2dzdHJbMV0gIuWdlyAjJWQg5oiQ5Yqf5bqU55So5LqOICVkICjlgY/np7sgJWQg6KGM77yJIgorbXNnc3RyWzBdICLlnZcgIyVkIOaIkOWKn+W6lOeUqOS6jiAlZO+8iOWBj+enuyAlZCDooYzvvIkiCittc2dzdHJbMV0gIuWdlyAjJWQg5oiQ5Yqf5bqU55So5LqOICVk77yI5YGP56e7ICVkIOihjO+8iSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI4MDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbnRleHQgcmVkdWNlZCB0byAoJWxkLyVsZCkgdG8gYXBwbHkgZnJhZ21lbnQgYXQgJWQiCiBtc2dzdHIgIuS4iuS4i+aWh+WHj+WwkeWIsO+8iCVsZC8lbGTvvInku6XlnKjnrKwgJWQg6KGM5bqU55So6KGl5LiB54mH5q61IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgwNworIzogYnVpbHRpbi9hcHBseS5jOjI4MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIndoaWxlIHNlYXJjaGluZyBmb3I6XG4iCkBAIC0xNzIxLDMxOSArMjAxMiwzMTggQEAKICLlvZPmn6Xor6LvvJpcbiIKICIlLipzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjgyNgorIzogYnVpbHRpbi9hcHBseS5jOjI4NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAibWlzc2luZyBiaW5hcnkgcGF0Y2ggZGF0YSBmb3IgJyVzJyIKIG1zZ3N0ciAi57y65aSxICclcycg55qE5LqM6L+b5Yi26KGl5LiB5pWw5o2uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkyOQorIzogYnVpbHRpbi9hcHBseS5jOjI5NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIGRvZXMgbm90IGFwcGx5IHRvICclcyciCiBtc2dzdHIgIuS6jOi/m+WItuihpeS4geacquW6lOeUqOWIsCAnJXMnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MjkzNQorIzogYnVpbHRpbi9hcHBseS5jOjI5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmluYXJ5IHBhdGNoIHRvICclcycgY3JlYXRlcyBpbmNvcnJlY3QgcmVzdWx0IChleHBlY3RpbmcgJXMsIGdvdCAlcykiCiBtc2dzdHIgIuWIsCAnJXMnIOeahOS6jOi/m+WItuihpeS4geS6p+eUn+S6huS4jeato+ehrueahOe7k+aenO+8iOW6lOS4uiAlc++8jOWNtOS4uiAlc++8iSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjI5NTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzoyOTczCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGNoIGZhaWxlZDogJXM6JWxkIgogbXNnc3RyICLmiZPooaXkuIHlpLHotKXvvJolczolbGQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMDc4CisjOiBidWlsdGluL2FwcGx5LmM6MzA5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY2hlY2tvdXQgJXMiCiBtc2dzdHIgIuS4jeiDveajgOWHuiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMxMjMgYnVpbHRpbi9hcHBseS5jOjMxMzIgYnVpbHRpbi9hcHBseS5jOjMxNzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMTQwIGJ1aWx0aW4vYXBwbHkuYzozMTQ5IGJ1aWx0aW4vYXBwbHkuYzozMTkzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlYWQgb2YgJXMgZmFpbGVkIgogbXNnc3RyICLor7vlj5YgJXMg5aSx6LSlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE1NiBidWlsdGluL2FwcGx5LmM6MzM3OAorIzogYnVpbHRpbi9hcHBseS5jOjMxNzMgYnVpbHRpbi9hcHBseS5jOjMzOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCiBtc2dzdHIgIui3r+W+hCAlcyDlt7Lnu4/ooqvph43lkb3lkI0v5Yig6ZmkIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzIzNyBidWlsdGluL2FwcGx5LmM6MzM5MgorIzogYnVpbHRpbi9hcHBseS5jOjMyNTQgYnVpbHRpbi9hcHBseS5jOjM0MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IGV4aXN0IGluIGluZGV4IgogbXNnc3RyICIlc++8muS4jeWtmOWcqOS6jue0ouW8leS4rSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNDEgYnVpbHRpbi9hcHBseS5jOjMzODQgYnVpbHRpbi9hcHBseS5jOjM0MDYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU4IGJ1aWx0aW4vYXBwbHkuYzozNDAxIGJ1aWx0aW4vYXBwbHkuYzozNDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAlcyIKIG1zZ3N0ciAiJXPvvJolcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNDYgYnVpbHRpbi9hcHBseS5jOjM0MDAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjYzIGJ1aWx0aW4vYXBwbHkuYzozNDE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBtYXRjaCBpbmRleCIKIG1zZ3N0ciAiJXPvvJrlkozntKLlvJXkuI3ljLnphY0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMzQ4CisjOiBidWlsdGluL2FwcGx5LmM6MzM2NQogbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCiBtc2dzdHIgIuenu+mZpOihpeS4geS7jeeVmeS4i+S6huaWh+S7tuWGheWuuSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0MTcKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiB3cm9uZyB0eXBlIgogbXNnc3RyICIlc++8mumUmeivr+exu+WeiyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0MTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlbyIKIG1zZ3N0ciAiJXMg55qE57G75Z6L5pivICVv77yM5bqU5Li6ICVvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUyMAorIzogYnVpbHRpbi9hcHBseS5jOjM1MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4IgogbXNnc3RyICIlc++8muW3sue7j+WtmOWcqOS6jue0ouW8leS4rSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1MjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBhbHJlYWR5IGV4aXN0cyBpbiB3b3JraW5nIGRpcmVjdG9yeSIKIG1zZ3N0ciAiJXPvvJrlt7Lnu4/lrZjlnKjkuo7lt6XkvZzljLrkuK0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQzCisjOiBidWlsdGluL2FwcGx5LmM6MzU2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykiCiBtc2dzdHIgIiUyJHMg55qE5paw5qih5byP77yIJTEkb++8ieWSjOaXp+aooeW8j++8iCUzJG/vvInkuI3ljLnphY0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQ4CisjOiBidWlsdGluL2FwcGx5LmM6MzU2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykgb2YgJXMiCiBtc2dzdHIgIiUyJHMg55qE5paw5qih5byP77yIJTEkb++8ieWSjCAlNCRzIOeahOaXp+aooeW8j++8iCUzJG/vvInkuI3ljLnphY0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTU2CisjOiBidWlsdGluL2FwcGx5LmM6MzU3MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcGF0Y2ggZG9lcyBub3QgYXBwbHkiCiBtc2dzdHIgIiVz77ya6KGl5LiB5pyq5bqU55SoIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU2OQorIzogYnVpbHRpbi9hcHBseS5jOjM1ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hlY2tpbmcgcGF0Y2ggJXMuLi4iCiBtc2dzdHIgIuajgOafpeihpeS4gSAlcy4uLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM2MjQgYnVpbHRpbi9jaGVja291dC5jOjIxNSBidWlsdGluL3Jlc2V0LmM6MTU4CisjOiBidWlsdGluL2FwcGx5LmM6MzY3OSBidWlsdGluL2NoZWNrb3V0LmM6MjE2IGJ1aWx0aW4vcmVzZXQuYzoxMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAibWFrZV9jYWNoZV9lbnRyeSBmYWlsZWQgZm9yIHBhdGggJyVzJyIKIG1zZ3N0ciAi5a+56Lev5b6EICclcycg55qEIG1ha2VfY2FjaGVfZW50cnkg5pON5L2c5aSx6LSlIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzc2NworIzogYnVpbHRpbi9hcHBseS5jOjM4MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlbW92ZSAlcyBmcm9tIGluZGV4IgogbXNnc3RyICLkuI3og73ku47ntKLlvJXkuK3np7vpmaQgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNzk1CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3JydXB0IHBhdGNoIGZvciBzdWJwcm9qZWN0ICVzIgogbXNnc3RyICLlrZDpobnnm64gJXMg5o2f5Z2P55qE6KGl5LiBIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzc5OQorIzogYnVpbHRpbi9hcHBseS5jOjM4NTQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXQgbmV3bHkgY3JlYXRlZCBmaWxlICclcyciCiBtc2dzdHIgIuS4jeiDveaemuS4vuaWsOW7uuaWh+S7tiAnJXMnIOeahOeKtuaAgSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4MDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgYmFja2luZyBzdG9yZSBmb3IgbmV3bHkgY3JlYXRlZCBmaWxlICVzIgogbXNnc3RyICLkuI3og73kuLrmlrDlu7rmlofku7YgJXMg5Yib5bu65ZCO56uv5a2Y5YKoIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzgwNyBidWlsdGluL2FwcGx5LmM6MzkxNQorIzogYnVpbHRpbi9hcHBseS5jOjM4NjIgYnVpbHRpbi9hcHBseS5jOjM5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFkZCBjYWNoZSBlbnRyeSBmb3IgJXMiCiBtc2dzdHIgIuaXoOazleS4uiAlcyDmt7vliqDnvJPlrZjmnaHnm64iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODQwCisjOiBidWlsdGluL2FwcGx5LmM6Mzg5NQogIywgYy1mb3JtYXQKIG1zZ2lkICJjbG9zaW5nIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5YWz6Zet5paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODg5CisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgIuS4jeiDveWGmeaWh+S7tiAnJXMnIOadg+mZkCAlbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5NzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGxpZWQgcGF0Y2ggJXMgY2xlYW5seS4iCiBtc2dzdHIgIuaIkOWKn+W6lOeUqOihpeS4gSAlc+OAgiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM5ODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDM5CiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgIuWGhemDqOmUmeivryIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjM5ODcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAi5bqU55SoICUlcyDkuKrooaXkuIHvvIzlhbbkuK0gJWQg5Liq6KKr5ouS57udLi4uIgogbXNnc3RyWzFdICLlupTnlKggJSVzIOS4quihpeS4ge+8jOWFtuS4rSAlZCDkuKrooqvmi5Lnu50uLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTk3CisjOiBidWlsdGluL2FwcGx5LmM6NDA1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cnVuY2F0aW5nIC5yZWogZmlsZW5hbWUgdG8gJS4qcy5yZWoiCiBtc2dzdHIgIuaIquefrSAucmVqIOaWh+S7tuWQjeS4uiAlLipzLnJlaiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMTgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIuesrCAjJWQg5Liq54mH5q615oiQ5Yqf5bqU55So44CCIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAyMQorIzogYnVpbHRpbi9hcHBseS5jOjQwNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVqZWN0ZWQgaHVuayAjJWQuIgogbXNnc3RyICLmi5Lnu53nrKwgIyVkIOS4queJh+auteOAgiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQxNzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI2CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICLmnKrog73or4bliKvnmoTovpPlhaUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MTgyCisjOiBidWlsdGluL2FwcGx5LmM6NDIzNwogbXNnaWQgInVuYWJsZSB0byByZWFkIGluZGV4IGZpbGUiCiBtc2dzdHIgIuaXoOazleivu+WPlue0ouW8leaWh+S7tiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMDEgYnVpbHRpbi9hcHBseS5jOjQzMDQgYnVpbHRpbi9jbG9uZS5jOjkxCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NiBidWlsdGluL2FwcGx5LmM6NDM1OSBidWlsdGluL2Nsb25lLmM6OTIKICM6IGJ1aWx0aW4vZmV0Y2guYzo2MwogbXNnaWQgInBhdGgiCiBtc2dzdHIgIui3r+W+hCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMDIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU3CiBtc2dpZCAiZG9uJ3QgYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKIG1zZ3N0ciAi5LiN6KaB5bqU55So5LiO57uZ5Ye66Lev5b6E5ZCR5Yy56YWN55qE5Y+Y5pu0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwNQorIzogYnVpbHRpbi9hcHBseS5jOjQzNjAKIG1zZ2lkICJhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICLlupTnlKjkuI7nu5nlh7rot6/lvoTlkJHljLnphY3nmoTlj5jmm7QiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzA3CisjOiBidWlsdGluL2FwcGx5LmM6NDM2MgogbXNnaWQgIm51bSIKIG1zZ3N0ciAi5pWw5a2XIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMwOAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjMKIG1zZ2lkICJyZW1vdmUgPG51bT4gbGVhZGluZyBzbGFzaGVzIGZyb20gdHJhZGl0aW9uYWwgZGlmZiBwYXRocyIKLW1zZ3N0ciAi5LuO5Lyg57uf55qEIGRpZmYg6Lev5b6E5Lit56e76ZmkIDzmlbDlrZc+IOS4quWJjeWvvOi3r+W+hCIKK21zZ3N0ciAi5LuO5Lyg57uf55qEIGRpZmYg6Lev5b6E5Lit56e76Zmk5oyH5a6a5pWw6YeP55qE5YmN5a+85pac57q/IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMxMQorIzogYnVpbHRpbi9hcHBseS5jOjQzNjYKIG1zZ2lkICJpZ25vcmUgYWRkaXRpb25zIG1hZGUgYnkgdGhlIHBhdGNoIgogbXNnc3RyICLlv73nlaXooaXkuIHkuK3nmoTmt7vliqDnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzEzCisjOiBidWlsdGluL2FwcGx5LmM6NDM2OAogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgZGlmZnN0YXQgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAi5LiN5bqU55So6KGl5LiB77yM6ICM5piv5pi+56S66L6T5YWl55qE5beu5byC57uf6K6h77yIZGlmZnN0YXTvvIkiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzE3Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9hcHBseS5jOjQzNzIKIG1zZ2lkICJzaG93IG51bWJlciBvZiBhZGRlZCBhbmQgZGVsZXRlZCBsaW5lcyBpbiBkZWNpbWFsIG5vdGF0aW9uIgotbXNnc3RyICLku6XmlbDlrZfmlrnlvI/mmL7npLrmt7vliqDmiJbliKDpmaTooYznmoTmlbDph48iCittc2dzdHIgIuS7peWNgei/m+WItuaVsOaYvuekuua3u+WKoOWSjOWIoOmZpOeahOihjOaVsCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc0CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAi5LiN5bqU55So6KGl5LiB77yM6ICM5piv5pi+56S66L6T5YWl55qE5qaC6KaBIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyMQorIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICLkuI3lupTnlKjooaXkuIHvvIzogIzmmK/mn6XnnIvooaXkuIHmmK/lkKblj6/lupTnlKgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzIzCisjOiBidWlsdGluL2FwcGx5LmM6NDM3OAogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAi56Gu6K6k6KGl5LiB5Y+v5Lul5bqU55So5Yiw5b2T5YmN57Si5byVIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNQorIzogYnVpbHRpbi9hcHBseS5jOjQzODAKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAi5bqU55So6KGl5LiB6ICM5LiN5L+u5pS55bel5L2c5Yy6IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMyNworIzogYnVpbHRpbi9hcHBseS5jOjQzODIKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAi6L+Y5bqU55So5q2k6KGl5LiB77yI5LiOIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjayDpgInpobnlkIzml7bkvb/nlKjvvIkiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzI5CisjOiBidWlsdGluL2FwcGx5LmM6NDM4NAogbXNnaWQgImF0dGVtcHQgdGhyZWUtd2F5IG1lcmdlIGlmIGEgcGF0Y2ggZG9lcyBub3QgYXBwbHkiCiBtc2dzdHIgIuWmguaenOS4gOS4quihpeS4geS4jeiDveW6lOeUqOWImeWwneivleS4iei3r+WQiOW5tiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCiBtc2dzdHIgIuWIm+W7uuS4gOS4quS4tOaXtue0ouW8leWfuuS6juW1jOWFpeeahOe0ouW8leS/oeaBryIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzMzMgYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NyBidWlsdGluL2xzLWZpbGVzLmM6NDYwCisjOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKIG1zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKIG1zZ3N0ciAi6Lev5b6E5LulIE5VTCDlrZfnrKbliIbpmpQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM2CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MQogbXNnaWQgImVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2YgY29udGV4dCBtYXRjaCIKIG1zZ3N0ciAi56Gu5L+d6Iez5bCR5Yy56YWNIDxuPiDooYzkuIrkuIvmlociCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzM3CisjOiBidWlsdGluL2FwcGx5LmM6NDM5MgogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAi5Yqo5L2cIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDMzOAorIzogYnVpbHRpbi9hcHBseS5jOjQzOTMKIG1zZ2lkICJkZXRlY3QgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIHRoYXQgaGF2ZSB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0ciAi5qOA5p+l5paw5aKe5ZKM5L+u5pS555qE6KGM5Lit6Ze055qE56m655m95a2X56ym5rul55SoIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM0MSBidWlsdGluL2FwcGx5LmM6NDM0NAorIzogYnVpbHRpbi9hcHBseS5jOjQzOTYgYnVpbHRpbi9hcHBseS5jOjQzOTkKIG1zZ2lkICJpZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIHdoZW4gZmluZGluZyBjb250ZXh0IgogbXNnc3RyICLmn6Xmib7kuIrkuIvmlofml7blv73nlaXnqbrnmb3lrZfnrKbnmoTlj5jmm7QiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ3CisjOiBidWlsdGluL2FwcGx5LmM6NDQwMgogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICLlj43lkJHlupTnlKjooaXkuIEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzQ5CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNAogbXNnaWQgImRvbid0IGV4cGVjdCBhdCBsZWFzdCBvbmUgbGluZSBvZiBjb250ZXh0IgogbXNnc3RyICLml6DpnIDoh7PlsJHkuIDooYzkuIrkuIvmlociCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzUxCisjOiBidWlsdGluL2FwcGx5LmM6NDQwNgogbXNnaWQgImxlYXZlIHRoZSByZWplY3RlZCBodW5rcyBpbiBjb3JyZXNwb25kaW5nICoucmVqIGZpbGVzIgogbXNnc3RyICLlsIbmi5Lnu53nmoTooaXkuIHniYfmrrXkv53lrZjlnKjlr7nlupTnmoQgKi5yZWog5paH5Lu25LitIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1MworIzogYnVpbHRpbi9hcHBseS5jOjQ0MDgKIG1zZ2lkICJhbGxvdyBvdmVybGFwcGluZyBodW5rcyIKIG1zZ3N0ciAi5YWB6K646YeN5Y+g55qE6KGl5LiB54mH5q61IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1NgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTEKIG1zZ2lkICJ0b2xlcmF0ZSBpbmNvcnJlY3RseSBkZXRlY3RlZCBtaXNzaW5nIG5ldy1saW5lIGF0IHRoZSBlbmQgb2YgZmlsZSIKIG1zZ3N0ciAi5YWB6K645LiN5q2j56Gu55qE5paH5Lu25pyr5bC+5o2i6KGM56ymIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1OQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTQKIG1zZ2lkICJkbyBub3QgdHJ1c3QgdGhlIGxpbmUgY291bnRzIGluIHRoZSBodW5rIGhlYWRlcnMiCiBtc2dzdHIgIuS4jeS/oeS7u+ihpeS4geeJh+auteeahOWktOS/oeaBr+S4reeahOihjOWPtyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE2CiBtc2dpZCAicm9vdCIKIG1zZ3N0ciAi5qC555uu5b2VIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM2MgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTcKIG1zZ2lkICJwcmVwZW5kIDxyb290PiB0byBhbGwgZmlsZW5hbWVzIgogbXNnc3RyICLkuLrmiYDmnInmlofku7blkI3liY3mt7vliqAgPOagueebruW9lT4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg0CisjOiBidWlsdGluL2FwcGx5LmM6NDQzOQogbXNnaWQgIi0tM3dheSBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS0zd2F5IOWcqOS4gOS4queJiOacrOW6k+S5i+WkliIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzOTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQ3CiBtc2dpZCAiLS1pbmRleCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS1pbmRleCDlnKjkuIDkuKrniYjmnKzlupPkuYvlpJYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzk1CisjOiBidWlsdGluL2FwcGx5LmM6NDQ1MAogbXNnaWQgIi0tY2FjaGVkIG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLWNhY2hlZCDlnKjkuIDkuKrniYjmnKzlupPkuYvlpJYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDExCisjOiBidWlsdGluL2FwcGx5LmM6NDQ2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBvcGVuIHBhdGNoICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gOihpeS4gSAnJXMnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQyNQorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAi5oqR5Yi25LiL5LuN5pyJICVkIOS4quepuueZveWtl+espuivr+eUqCIKIG1zZ3N0clsxXSAi5oqR5Yi25LiL5LuN5pyJICVkIOS4quepuueZveWtl+espuivr+eUqCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MzEgYnVpbHRpbi9hcHBseS5jOjQ0NDEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDg2IGJ1aWx0aW4vYXBwbHkuYzo0NDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGxpbmUgYWRkcyB3aGl0ZXNwYWNlIGVycm9ycy4iCiBtc2dpZF9wbHVyYWwgIiVkIGxpbmVzIGFkZCB3aGl0ZXNwYWNlIGVycm9ycy4iCkBAIC0yMDU3LDE1OCArMjM0NywxNTQgQEAKIG1zZ2lkICJnaXQgYXJjaGl2ZTogZXhwZWN0ZWQgQUNLL05BSywgZ290IEVPRiIKIG1zZ3N0ciAiZ2l0IGFyY2hpdmXvvJrlupTkuLpBQ0svTkFDS++8jOWNtOW+l+WIsEVPRiIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjMKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBhcmNoaXZlOiBOQUNLICVzIgogbXNnc3RyICJnaXQgYXJjaGl2Ze+8mk5BQ0sgJXMiCiAKLSM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY1CisjOiBidWlsdGluL2FyY2hpdmUuYzo2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZW1vdGUgZXJyb3I6ICVzIgogbXNnc3RyICLov5znqIvplJnor6/vvJolcyIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NjYKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY0CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IHByb3RvY29sIGVycm9yIgogbXNnc3RyICJnaXQgYXJjaGl2Ze+8muWNj+iurumUmeivryIKIAotIzogYnVpbHRpbi9hcmNoaXZlLmM6NzEKKyM6IGJ1aWx0aW4vYXJjaGl2ZS5jOjY4CiBtc2dpZCAiZ2l0IGFyY2hpdmU6IGV4cGVjdGVkIGEgZmx1c2giCiBtc2dzdHIgImdpdCBhcmNoaXZl77ya5bqU5Li65Yi35pawIgogCiAjOiBidWlsdGluL2Jpc2VjdC0taGVscGVyLmM6NwogbXNnaWQgImdpdCBiaXNlY3QtLWhlbHBlciAtLW5leHQtYWxsIFstLW5vLWNoZWNrb3V0XSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgYmlzZWN0LS1oZWxwZXIgLS1uZXh0LWFsbCBbLS1uby1jaGVja291dF0iCiAKICM6IGJ1aWx0aW4vYmlzZWN0LS1oZWxwZXIuYzoxNwogbXNnaWQgInBlcmZvcm0gJ2dpdCBiaXNlY3QgbmV4dCciCi1tc2dzdHIgIiIKK21zZ3N0ciAi5omn6KGMICdnaXQgYmlzZWN0IG5leHQnIgogCiAjOiBidWlsdGluL2Jpc2VjdC0taGVscGVyLmM6MTkKIG1zZ2lkICJ1cGRhdGUgQklTRUNUX0hFQUQgaW5zdGVhZCBvZiBjaGVja2luZyBvdXQgdGhlIGN1cnJlbnQgY29tbWl0IgotbXNnc3RyICIiCittc2dzdHIgIuabtOaWsCBCSVNFQ1RfSEVBRCDogIzpnZ7mo4Dlh7rlvZPliY3mj5DkuqQiCiAKICM6IGJ1aWx0aW4vYmxhbWUuYzoyNQogbXNnaWQgImdpdCBibGFtZSBbb3B0aW9uc10gW3Jldi1vcHRzXSBbcmV2XSBbLS1dIGZpbGUiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGJsYW1lIFvpgInpobldIFvniYjmnKzpgInpobldIFvniYjmnKxdIFstLV0g5paH5Lu2IgogCi0jOiBidWlsdGluL2JsYW1lLmM6MzAgYnVpbHRpbi9zaG9ydGxvZy5jOjE1CisjOiBidWlsdGluL2JsYW1lLmM6MzAKIG1zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKLW1zZ3N0ciAiIgorbXNnc3RyICJb54mI5pys6YCJ6aG5XSDnmoTmlofmoaPorrDlvZXlnKggZ2l0LXJldi1saXN0KDEpIOS4rSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMTYKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU1CiBtc2dpZCAiU2hvdyBibGFtZSBlbnRyaWVzIGFzIHdlIGZpbmQgdGhlbSwgaW5jcmVtZW50YWxseSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlop7ph4/lvI/lnLDmmL7npLrlj5HnjrDnmoQgYmxhbWUg5p2h55uuIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMxNworIzogYnVpbHRpbi9ibGFtZS5jOjIzNTYKIG1zZ2lkICJTaG93IGJsYW5rIFNIQS0xIGZvciBib3VuZGFyeSBjb21taXRzIChEZWZhdWx0OiBvZmYpIgotbXNnc3RyICIiCittc2dzdHIgIui+ueeVjOaPkOS6pOaYvuekuuepuueahCBTSEEtMe+8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMTgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU3CiBtc2dpZCAiRG8gbm90IHRyZWF0IHJvb3QgY29tbWl0cyBhcyBib3VuZGFyaWVzIChEZWZhdWx0OiBvZmYpIgotbXNnc3RyICIiCittc2dzdHIgIuS4jeaKiuagueaPkOS6pOS9nOS4uui+ueeVjO+8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMTkKLSMsIGZ1enp5CisjOiBidWlsdGluL2JsYW1lLmM6MjM1OAogbXNnaWQgIlNob3cgd29yayBjb3N0IHN0YXRpc3RpY3MiCi1tc2dzdHIgIuaYvuekuuW3peS9nOWMuueKtuaAgSIKK21zZ3N0ciAi5pi+56S65ZG95Luk5raI6ICX57uf6K6hIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMyMAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNTkKIG1zZ2lkICJTaG93IG91dHB1dCBzY29yZSBmb3IgYmxhbWUgZW50cmllcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrliKTmlq0gYmxhbWUg5p2h55uu5L2N56e755qE5b6X5YiG6K+K5pat5L+h5oGvIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMyMQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjAKIG1zZ2lkICJTaG93IG9yaWdpbmFsIGZpbGVuYW1lIChEZWZhdWx0OiBhdXRvKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrljp/lp4vmlofku7blkI3vvIjpu5jorqTvvJroh6rliqjvvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzIyCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MQogbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrljp/lp4vnmoTooYzlj7fvvIjpu5jorqTvvJrlhbPpl63vvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzIzCisjOiBidWlsdGluL2JsYW1lLmM6MjM2MgogbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65Li65LiA5Liq6YCC5ZCI5py65Zmo6K+75Y+W55qE5qC85byPIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMyNAorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKIG1zZ2lkICJTaG93IHBvcmNlbGFpbiBmb3JtYXQgd2l0aCBwZXItbGluZSBjb21taXQgaW5mb3JtYXRpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Li65q+P5LiA6KGM5pi+56S65py65Zmo6YCC55So55qE5o+Q5Lqk5L+h5oGvIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMyNQorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjQKIG1zZ2lkICJVc2UgdGhlIHNhbWUgb3V0cHV0IG1vZGUgYXMgZ2l0LWFubm90YXRlIChEZWZhdWx0OiBvZmYpIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOWSjCBnaXQtYW5ub3RhdGUg55u45ZCM55qE6L6T5Ye65qih5byP77yI6buY6K6k77ya5YWz6Zet77yJIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMyNgorIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKIG1zZ2lkICJTaG93IHJhdyB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65Y6f5aeL5pe26Ze05oiz77yI6buY6K6k77ya5YWz6Zet77yJIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMyNworIzogYnVpbHRpbi9ibGFtZS5jOjIzNjYKIG1zZ2lkICJTaG93IGxvbmcgY29tbWl0IFNIQTEgKERlZmF1bHQ6IG9mZikiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S66ZW/55qEU0hBMeaPkOS6pOWPt++8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMjgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3CiBtc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLpmpDol4/kvZzogIXlkI3lrZflkozml7bpl7TmiLPvvIjpu5jorqTvvJrlhbPpl63vvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzI5CisjOiBidWlsdGluL2JsYW1lLmM6MjM2OAogbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrkvZzogIXnmoTpgq7nrrHogIzkuI3mmK/lkI3lrZfvvIjpu5jorqTvvJrlhbPpl63vvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzMwCisjOiBidWlsdGluL2JsYW1lLmM6MjM2OQogbXNnaWQgIklnbm9yZSB3aGl0ZXNwYWNlIGRpZmZlcmVuY2VzIgotbXNnc3RyICIiCittc2dzdHIgIuW/veeVpeepuueZveW3ruW8giIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcwCiBtc2dpZCAiU3BlbmQgZXh0cmEgY3ljbGVzIHRvIGZpbmQgYmV0dGVyIG1hdGNoIgotbXNnc3RyICIiCittc2dzdHIgIuiKsei0uemineWklueahOW+queOr+adpeaJvuWIsOabtOWlveeahOWMuemFjSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMzIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCiBtc2dpZCAiVXNlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2l0LXJldi1saXN0IgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOadpeiHqiA8ZmlsZT4g55qE5L+u6K6i6ZuG6ICM5LiN5piv6LCD55SoIGdpdC1yZXYtbGlzdCIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMzMKLSMsIGZ1enp5CisjOiBidWlsdGluL2JsYW1lLmM6MjM3MgogbXNnaWQgIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiCi1tc2dzdHIgIua3u+WKoOaWh+S7tuWGheWuueiHs+e0ouW8lSIKK21zZ3N0ciAi5L2/55SoIDxmaWxlPiDnmoTlhoXlrrnkvZzkuLrmnIDnu4jnmoTlm77niYciCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzM0IGJ1aWx0aW4vYmxhbWUuYzoyMzM1CisjOiBidWlsdGluL2JsYW1lLmM6MjM3MyBidWlsdGluL2JsYW1lLmM6MjM3NAogbXNnaWQgInNjb3JlIgotbXNnc3RyICIiCittc2dzdHIgIuW+l+WIhiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMzQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczCiBtc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmib7liLDmlofku7blhoXlj4rot6jmlofku7bnmoTooYzmi7fotJ0iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzM1CisjOiBidWlsdGluL2JsYW1lLmM6MjM3NAogbXNnaWQgIkZpbmQgbGluZSBtb3ZlbWVudHMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5om+5Yiw5paH5Lu25YaF5Y+K6Leo5paH5Lu255qE6KGM56e75YqoIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjMzNgotIywgZnV6enkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CiBtc2dpZCAibixtIgotbXNnc3RyICLmlbDlrZciCittc2dzdHIgIm4sbSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzMzYKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CiBtc2dpZCAiUHJvY2VzcyBvbmx5IGxpbmUgcmFuZ2UgbixtLCBjb3VudGluZyBmcm9tIDEiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoyMwotbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstciB8IC1hXSBbLS1tZXJnZWQgfCAtLW5vLW1lcmdlZF0iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5aSE55CG6KGM6IyD5Zu05ZyoIG4g5ZKMIG0g5LmL6Ze055qE77yM5LuOIDEg5byA5aeLIgogCiAjOiBidWlsdGluL2JyYW5jaC5jOjI0Ci1tc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1sXSBbLWZdIDxicmFuY2huYW1lPiBbPHN0YXJ0LXBvaW50Pl0iCi1tc2dzdHIgIiIKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLXIgfCAtYV0gWy0tbWVyZ2VkIHwgLS1uby1tZXJnZWRdIgorbXNnc3RyICJnaXQgYnJhbmNoIFvpgInpobldIFstciB8IC1hXSBbLS1tZXJnZWQgfCAtLW5vLW1lcmdlZF0iCiAKICM6IGJ1aWx0aW4vYnJhbmNoLmM6MjUKLSMsIGZ1enp5Ci1tc2dpZCAiZ2l0IGJyYW5jaCBbb3B0aW9uc10gWy1yXSAoLWQgfCAtRCkgPGJyYW5jaG5hbWU+Li4uIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ2lkICJnaXQgYnJhbmNoIFtvcHRpb25zXSBbLWxdIFstZl0gPGJyYW5jaG5hbWU+IFs8c3RhcnQtcG9pbnQ+XSIKK21zZ3N0ciAiZ2l0IGJyYW5jaCBb6YCJ6aG5XSBbLWxdIFstZl0gPOWIhuaUr+WQjT4gWzzotbflp4vngrk+XSIKIAogIzogYnVpbHRpbi9icmFuY2guYzoyNgorbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdIFstcl0gKC1kIHwgLUQpIDxicmFuY2huYW1lPi4uLiIKK21zZ3N0ciAiZ2l0IGJyYW5jaCBb6YCJ6aG5XSBbLXJdICgtZCB8IC1EKSA85YiG5pSv5ZCNPi4uLiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyNwogbXNnaWQgImdpdCBicmFuY2ggW29wdGlvbnNdICgtbSB8IC1NKSBbPG9sZGJyYW5jaD5dIDxuZXdicmFuY2g+IgotbXNnc3RyICIiCittc2dzdHIgImdpdCBicmFuY2ggW+mAiemhuV0gKC1tIHwgLU0pIFs85pen5YiG5pSvPl0gPOaWsOWIhuaUrz4iCiAKICMgIOivkeiAhe+8muS/neaMgeWOn+aNouihjOagvOW8j++8jOWcqOi+k+WHuuaXtiAlcyDnmoTmm7/ku6PlhoXlrrnkvJrorqnlrZfnrKbkuLLlj5jplb8KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTQ1CisjOiBidWlsdGluL2JyYW5jaC5jOjE1MAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiZGVsZXRpbmcgYnJhbmNoICclcycgdGhhdCBoYXMgYmVlbiBtZXJnZWQgdG9cbiIKQEAgLTIyMTgsNyArMjUwNCw3IEBACiAiICAgICAgICAgJyVzJ++8jOS9huacquWQiOW5tuWIsCBIRUFE44CCIgogCiAjICDor5HogIXvvJrkv53mjIHljp/mjaLooYzmoLzlvI/vvIzlnKjovpPlh7rml7YgJXMg55qE5pu/5Luj5YaF5a655Lya6K6p5a2X56ym5Liy5Y+Y6ZW/Ci0jOiBidWlsdGluL2JyYW5jaC5jOjE0OQorIzogYnVpbHRpbi9icmFuY2guYzoxNTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm5vdCBkZWxldGluZyBicmFuY2ggJyVzJyB0aGF0IGlzIG5vdCB5ZXQgbWVyZ2VkIHRvXG4iCkBAIC0yMjI3LDM1ICsyNTEzLDEyIEBACiAi5bm25pyq5Yig6Zmk5YiG5pSvICclcyfvvIwg6Jm954S25a6D5bey57uP5ZCI5bm25YiwIEhFQUTvvIxcbiIKICIgICAgICAgICDnhLbogIzljbTlsJrmnKrooqvlkIjlubbliLDliIbmlK8gJyVzJyDjgIIiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MTgxCi1tc2dpZCAiY2Fubm90IHVzZSAtYSB3aXRoIC1kIgotbXNnc3RyICLkuI3og73lsIYgLWEg5ZKMIC1kIOWQjOaXtuS9v+eUqCIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxODcKLW1zZ2lkICJDb3VsZG4ndCBsb29rIHVwIGNvbW1pdCBvYmplY3QgZm9yIEhFQUQiCi1tc2dzdHIgIuaXoOazleafpeivoiBIRUFEIOaMh+WQkeeahOaPkOS6pOWvueixoSIKLQotIzogYnVpbHRpbi9icmFuY2guYzoxOTIKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IGRlbGV0ZSB0aGUgYnJhbmNoICclcycgd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgb24uIgotbXNnc3RyICLml6Dms5XliKDpmaTmgqjlvZPliY3miYDlnKjnmoTliIbmlK8gJyVzJ+OAgiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoyMDMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAicmVtb3RlIGJyYW5jaCAnJXMnIG5vdCBmb3VuZC4iCi1tc2dzdHIgIui/nOeoi+WIhuaUryAnJXMnIOacquWPkeeOsOOAgiIKLQotIzogYnVpbHRpbi9icmFuY2guYzoyMDQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiYnJhbmNoICclcycgbm90IGZvdW5kLiIKLW1zZ3N0ciAi5YiG5pSvICclcycg5pyq5Y+R546w44CCIgotCi0jOiBidWlsdGluL2JyYW5jaC5jOjIxMQorIzogYnVpbHRpbi9icmFuY2guYzoxNjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgbG9vayB1cCBjb21taXQgb2JqZWN0IGZvciAnJXMnIgogbXNnc3RyICLml6Dms5Xmn6Xor6IgJyVzJyDmjIflkJHnmoTmj5DkuqTlr7nosaEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjE3CisjOiBidWlsdGluL2JyYW5jaC5jOjE3MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGJyYW5jaCAnJXMnIGlzIG5vdCBmdWxseSBtZXJnZWQuXG4iCkBAIC0yMjY0LDI1NyArMjUyNywzNTQgQEAKICLliIbmlK8gJyVzJyDmsqHmnInlrozlhajlkIjlubbjgIJcbiIKICLlpoLmnpzmgqjnoa7orqTopoHliKDpmaTlroPvvIzmiafooYwgJ2dpdCBicmFuY2ggLUQgJXMn44CCIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIyNgorIzogYnVpbHRpbi9icmFuY2guYzoxODUKK21zZ2lkICJVcGRhdGUgb2YgY29uZmlnLWZpbGUgZmFpbGVkIgorbXNnc3RyICLml6Dms5Xmm7TmlrAgY29uZmlnIOaWh+S7tiIKKworIzogYnVpbHRpbi9icmFuY2guYzoyMTMKK21zZ2lkICJjYW5ub3QgdXNlIC1hIHdpdGggLWQiCittc2dzdHIgIuS4jeiDveWwhiAtYSDlkowgLWQg5ZCM5pe25L2/55SoIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIxOQorbXNnaWQgIkNvdWxkbid0IGxvb2sgdXAgY29tbWl0IG9iamVjdCBmb3IgSEVBRCIKK21zZ3N0ciAi5peg5rOV5p+l6K+iIEhFQUQg5oyH5ZCR55qE5o+Q5Lqk5a+56LGhIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjIyNworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGVsZXRlIHRoZSBicmFuY2ggJyVzJyB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBvbi4iCittc2dzdHIgIuaXoOazleWIoOmZpOaCqOW9k+WJjeaJgOWcqOeahOWIhuaUryAnJXMn44CCIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICJyZW1vdGUgYnJhbmNoICclcycgbm90IGZvdW5kLiIKK21zZ3N0ciAi6L+c56iL5YiG5pSvICclcycg5pyq5Y+R546w44CCIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICJicmFuY2ggJyVzJyBub3QgZm91bmQuIgorbXNnc3RyICLliIbmlK8gJyVzJyDmnKrlj5HnjrDjgIIiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkVycm9yIGRlbGV0aW5nIHJlbW90ZSBicmFuY2ggJyVzJyIKIG1zZ3N0ciAi5Yig6Zmk6L+c56iL5YiG5pSvICclcycg5pe25Ye66ZSZIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjIyNworIzogYnVpbHRpbi9icmFuY2guYzoyNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3IgZGVsZXRpbmcgYnJhbmNoICclcyciCiBtc2dzdHIgIuWIoOmZpOWIhuaUryAnJXMnIOaXtuWHuumUmSIKIAotIzogYnVpbHRpbi9icmFuY2guYzoyMzQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MjYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRlbGV0ZWQgcmVtb3RlIGJyYW5jaCAlcyAod2FzICVzKS5cbiIKIG1zZ3N0ciAi5bey5Yig6Zmk6L+c56iL5YiG5pSvICVz77yI5pu+5Li6ICVz77yJ44CCXG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjM1CisjOiBidWlsdGluL2JyYW5jaC5jOjI2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJEZWxldGVkIGJyYW5jaCAlcyAod2FzICVzKS5cbiIKIG1zZ3N0ciAi5bey5Yig6Zmk5YiG5pSvICVz77yI5pu+5Li6ICVz77yJ44CCXG4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MjQwCi1tc2dpZCAiVXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKLW1zZ3N0ciAi5peg5rOV5pu05pawIGNvbmZpZyDmlofku7YiCi0KLSM6IGJ1aWx0aW4vYnJhbmNoLmM6MzM4CisjOiBidWlsdGluL2JyYW5jaC5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBwb2ludCBhdCBhIGNvbW1pdCIKIG1zZ3N0ciAi5YiG5pSvICclcycg5pyq5oyH5ZCR5LiA5Liq5o+Q5LqkIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxMAorIzogYnVpbHRpbi9icmFuY2guYzo0NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBiZWhpbmQgJWRdIgogbXNnc3RyICJbJXPvvJrokL3lkI4gJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxMgorIzogYnVpbHRpbi9icmFuY2guYzo0NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiW2JlaGluZCAlZF0iCiBtc2dzdHIgIlvokL3lkI4gJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjQxNgorIzogYnVpbHRpbi9icmFuY2guYzo0NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiWyVzOiBhaGVhZCAlZF0iCiBtc2dzdHIgIlslc++8mumihuWFiCAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDE4CisjOiBidWlsdGluL2JyYW5jaC5jOjQ2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJbYWhlYWQgJWRdIgogbXNnc3RyICJb6aKG5YWIICVkXSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo0MjEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NDY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlslczogYWhlYWQgJWQsIGJlaGluZCAlZF0iCiBtc2dzdHIgIlslc++8mumihuWFiCAlZO+8jOiQveWQjiAlZF0iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NDI0CisjOiBidWlsdGluL2JyYW5jaC5jOjQ2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJbYWhlYWQgJWQsIGJlaGluZCAlZF0iCiBtc2dzdHIgIlvpooblhYggJWTvvIzokL3lkI4gJWRdIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjUzNworIzogYnVpbHRpbi9icmFuY2guYzo0OTAKK21zZ2lkICIgKioqKiBpbnZhbGlkIHJlZiAqKioqIgorbXNnc3RyICIgKioqKiDml6DmlYjlvJXnlKggKioqKiIKKworIzogYnVpbHRpbi9icmFuY2guYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiKG5vIGJyYW5jaCwgcmViYXNpbmcgJXMpIgorbXNnc3RyICLvvIjpnZ7liIbmlK/vvIzmraPlj5jln7ogJXPvvIkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NTg1CisjLCBjLWZvcm1hdAorbXNnaWQgIihubyBicmFuY2gsIGJpc2VjdCBzdGFydGVkIG9uICVzKSIKK21zZ3N0ciAi77yI6Z2e5YiG5pSv77yM5LqM5YiG5p+l5om+5byA5aeL5LqOICVz77yJIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjU4OAorIywgYy1mb3JtYXQKK21zZ2lkICIoZGV0YWNoZWQgZnJvbSAlcykiCittc2dzdHIgIu+8iOWIhuemu+iHqiAlc++8iSIKKworIzogYnVpbHRpbi9icmFuY2guYzo1OTEKIG1zZ2lkICIobm8gYnJhbmNoKSIKIG1zZ3N0ciAi77yI6Z2e5YiG5pSv77yJIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjYwMgorIzogYnVpbHRpbi9icmFuY2guYzo2MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAib2JqZWN0ICclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCittc2dzdHIgIuWvueixoSAnJXMnIOayoeacieaMh+WQkeS4gOS4quaPkOS6pCIKKworIzogYnVpbHRpbi9icmFuY2guYzo2NjkKIG1zZ2lkICJzb21lIHJlZnMgY291bGQgbm90IGJlIHJlYWQiCiBtc2dzdHIgIuS4gOS6m+W8leeUqOS4jeiDveivu+WPliIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MTUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjgyCiBtc2dpZCAiY2Fubm90IHJlbmFtZSB0aGUgY3VycmVudCBicmFuY2ggd2hpbGUgbm90IG9uIGFueS4iCiBtc2dzdHIgIuaXoOazlemHjeWRveWQjeW9k+WJjeWIhuaUr+WboOS4uuS4jeWkhOS6juS7u+S9leWIhuaUr+S4iuOAgiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2MjUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgYnJhbmNoIG5hbWU6ICclcyciCiBtc2dzdHIgIuaXoOaViOeahOWIhuaUr+WQje+8miclcyciCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjQwCisjOiBidWlsdGluL2JyYW5jaC5jOjcwNwogbXNnaWQgIkJyYW5jaCByZW5hbWUgZmFpbGVkIgogbXNnc3RyICLliIbmlK/ph43lkb3lkI3lpLHotKUiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjQ0CisjOiBidWlsdGluL2JyYW5jaC5jOjcxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW5hbWVkIGEgbWlzbmFtZWQgYnJhbmNoICclcycgYXdheSIKIG1zZ3N0ciAi6YeN5ZG95ZCN5o6J5LiA5Liq6ZSZ6K+v5ZG95ZCN55qE5pen5YiG5pSvICclcyciCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjQ4CisjOiBidWlsdGluL2JyYW5jaC5jOjcxNQogIywgYy1mb3JtYXQKIG1zZ2lkICJCcmFuY2ggcmVuYW1lZCB0byAlcywgYnV0IEhFQUQgaXMgbm90IHVwZGF0ZWQhIgogbXNnc3RyICLliIbmlK/ph43lkb3lkI3kuLogJXPvvIzkvYYgSEVBRCDmsqHmnInmm7TmlrDvvIEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjU1CisjOiBidWlsdGluL2JyYW5jaC5jOjcyMgogbXNnaWQgIkJyYW5jaCBpcyByZW5hbWVkLCBidXQgdXBkYXRlIG9mIGNvbmZpZy1maWxlIGZhaWxlZCIKIG1zZ3N0ciAi5YiG5pSv6KKr6YeN5ZG95ZCN77yM5L2G5pu05pawIGNvbmZpZyDmlofku7blpLHotKUiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NjcwCisjOiBidWlsdGluL2JyYW5jaC5jOjczNwogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IG5hbWUgJXMiCiBtc2dzdHIgIumdnuazleeahOWvueixoeWQjSAlcyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo2OTQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBicmFuY2ggZGVzY3JpcHRpb24gdGVtcGxhdGU6ICVzIgogbXNnc3RyICLkuI3og73lhpnliIbmlK/mj4/ov7DmqKHniYjvvJolcyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3MjQKLSMsIGZ1enp5CisjOiBidWlsdGluL2JyYW5jaC5jOjc5MQogbXNnaWQgIkdlbmVyaWMgb3B0aW9ucyIKLW1zZ3N0ciAi5peg5pWI6YCJ6aG577yaJXMiCittc2dzdHIgIumAmueUqOmAiemhuSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3MjYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6NzkzCiBtc2dpZCAic2hvdyBoYXNoIGFuZCBzdWJqZWN0LCBnaXZlIHR3aWNlIGZvciB1cHN0cmVhbSBicmFuY2giCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65ZOI5biM5YC85ZKM5Li76aKY77yM6Iul5Y+C5pWw5Ye6546w5Lik5qyh5YiZ5pi+56S65LiK5ri45YiG5pSvIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjcyNworIzogYnVpbHRpbi9icmFuY2guYzo3OTQKIG1zZ2lkICJzdXBwcmVzcyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIgotbXNnc3RyICIiCittc2dzdHIgIuS4jeaYvuekuuS/oeaBryIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3MjgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6Nzk1CiBtc2dpZCAic2V0IHVwIHRyYWNraW5nIG1vZGUgKHNlZSBnaXQtcHVsbCgxKSkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6K6+572u6Lef6Liq5qih5byP77yI5Y+C6KeBIGdpdC1wdWxsKDEp77yJIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjczMAorIzogYnVpbHRpbi9icmFuY2guYzo3OTcKIG1zZ2lkICJjaGFuZ2UgdXBzdHJlYW0gaW5mbyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmlLnlj5jkuIrmuLjkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzM0Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9icmFuY2guYzo4MDEKIG1zZ2lkICJ1c2UgY29sb3JlZCBvdXRwdXQiCi1tc2dzdHIgIuS4jeiDvei+k+WHuumHjeWumuWQkSIKK21zZ3N0ciAi5L2/55So5b2p6Imy6L6T5Ye6IgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjczNQotIywgZnV6enkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODAyCiBtc2dpZCAiYWN0IG9uIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKLW1zZ3N0ciAiJXMg5rKh5pyJ5p2l6IeqICVzIOeahOi/nOeoi+i3n+i4quWIhuaUryIKK21zZ3N0ciAi5L2c55So5LqO6L+c56iL6Lef6Liq5YiG5pSvIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjczOCBidWlsdGluL2JyYW5jaC5jOjc0NCBidWlsdGluL2JyYW5jaC5jOjc2NQotIzogYnVpbHRpbi9icmFuY2guYzo3NzEgYnVpbHRpbi9jb21taXQuYzoxMzk1IGJ1aWx0aW4vY29tbWl0LmM6MTM5NgotIzogYnVpbHRpbi9jb21taXQuYzoxMzk3IGJ1aWx0aW4vY29tbWl0LmM6MTM5OCBidWlsdGluL3RhZy5jOjQ3MAotIywgZnV6enkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4CiBtc2dpZCAiY29tbWl0IgotbXNnc3RyICLvvIjlnY/mj5DkuqTvvIlcbiIKK21zZ3N0ciAi5o+Q5LqkIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjczOSBidWlsdGluL2JyYW5jaC5jOjc0NQorIzogYnVpbHRpbi9icmFuY2guYzo4MDYgYnVpbHRpbi9icmFuY2guYzo4MTIKIG1zZ2lkICJwcmludCBvbmx5IGJyYW5jaGVzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IgotbXNnc3RyICIiCittc2dzdHIgIuWPquaJk+WNsOWMheWQq+ivpeaPkOS6pOeahOWIhuaUryIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODE4CiBtc2dpZCAiU3BlY2lmaWMgZ2l0LWJyYW5jaCBhY3Rpb25zOiIKLW1zZ3N0ciAiIgorbXNnc3RyICLlhbfkvZPnmoQgZ2l0LWJyYW5jaCDliqjkvZzvvJoiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzUyCisjOiBidWlsdGluL2JyYW5jaC5jOjgxOQogbXNnaWQgImxpc3QgYm90aCByZW1vdGUtdHJhY2tpbmcgYW5kIGxvY2FsIGJyYW5jaGVzIgotbXNnc3RyICIiCittc2dzdHIgIuWIl+WHuui/nOeoi+i3n+i4quWPiuacrOWcsOWIhuaUryIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTQKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIxCiBtc2dpZCAiZGVsZXRlIGZ1bGx5IG1lcmdlZCBicmFuY2giCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Yig6Zmk5a6M5YWo5ZCI5bm255qE5YiG5pSvIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1NQorIzogYnVpbHRpbi9icmFuY2guYzo4MjIKIG1zZ2lkICJkZWxldGUgYnJhbmNoIChldmVuIGlmIG5vdCBtZXJnZWQpIgotbXNnc3RyICIiCittc2dzdHIgIuWIoOmZpOWIhuaUr++8iOWNs+S9v+ayoeacieWQiOW5tu+8iSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTYKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODIzCiBtc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2ggYW5kIGl0cyByZWZsb2ciCi1tc2dzdHIgIiIKK21zZ3N0ciAi56e75YqoL+mHjeWRveWQjeS4gOS4quWIhuaUr++8jOS7peWPiuWug+eahOW8leeUqOaXpeW/lyIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTcKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI0CiBtc2dpZCAibW92ZS9yZW5hbWUgYSBicmFuY2gsIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLnp7vliqgv6YeN5ZG95ZCN5LiA5Liq5YiG5pSv77yM5Y2z5L2/55uu5qCH5bey5a2Y5ZyoIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc1OAotIywgZnV6enkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI1CiBtc2dpZCAibGlzdCBicmFuY2ggbmFtZXMiCi1tc2dzdHIgIuaXoOaViOeahOWIhuaUr+WQje+8miclcyciCittc2dzdHIgIuWIl+WHuuWIhuaUr+WQjSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NTkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODI2CiBtc2dpZCAiY3JlYXRlIHRoZSBicmFuY2gncyByZWZsb2ciCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Yib5bu65YiG5pSv55qE5byV55So5pel5b+XIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjc2MQorIzogYnVpbHRpbi9icmFuY2guYzo4MjgKIG1zZ2lkICJlZGl0IHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJyYW5jaCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmoIforrDliIbmlK/nmoTmj4/ov7AiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzYyCi0jLCBmdXp6eQorIzogYnVpbHRpbi9icmFuY2guYzo4MjkKIG1zZ2lkICJmb3JjZSBjcmVhdGlvbiAod2hlbiBhbHJlYWR5IGV4aXN0cykiCi1tc2dzdHIgIui/nOeoiyAlcyDlt7Lnu4/lrZjlnKjjgIIiCittc2dzdHIgIuW8uuWItuWIm+W7uu+8iOW9k+W3sue7j+WtmOWcqO+8iSIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NjUKLSMsIGZ1enp5CisjOiBidWlsdGluL2JyYW5jaC5jOjgzMgogbXNnaWQgInByaW50IG9ubHkgbm90IG1lcmdlZCBicmFuY2hlcyIKLW1zZ3N0ciAi5peg5rOV56e76Zmk5YiG5pSvICVzIgorbXNnc3RyICLlj6rmiZPljbDmsqHmnInlkIjlubbnmoTliIbmlK8iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6NzcxCisjOiBidWlsdGluL2JyYW5jaC5jOjgzOAogbXNnaWQgInByaW50IG9ubHkgbWVyZ2VkIGJyYW5jaGVzIgotbXNnc3RyICIiCittc2dzdHIgIuWPquaJk+WNsOWQiOW5tueahOWIhuaUryIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3NzUKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODQyCiBtc2dpZCAibGlzdCBicmFuY2hlcyBpbiBjb2x1bW5zIgotbXNnc3RyICIiCittc2dzdHIgIuS7peWIl+eahOaWueW8j+aYvuekuuWIhuaUryIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3ODgKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODU1CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIuaXoOazleWwhiBIRUFEIOino+aekOS4uuacieaViOW8leeUqOOAgiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo3OTMgYnVpbHRpbi9jbG9uZS5jOjU2MQorIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYxOQogbXNnaWQgIkhFQUQgbm90IGZvdW5kIGJlbG93IHJlZnMvaGVhZHMhIgogbXNnc3RyICJIRUFEIOayoeacieS9jeS6jiAvcmVmcy9oZWFkcyDkuYvkuIvvvIEiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODEzCisjOiBidWlsdGluL2JyYW5jaC5jOjg4MwogbXNnaWQgIi0tY29sdW1uIGFuZCAtLXZlcmJvc2UgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1jb2x1bW4g5ZKMIC0tdmVyYm9zZSDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODY0Ci0jLCBmdXp6eSwgYy1mb3JtYXQKLW1zZ2lkICJicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKLW1zZ3N0ciAi54mI5pys5bqTICclcycg5LiN5a2Y5ZyoIgorIzogYnVpbHRpbi9icmFuY2guYzo4ODkgYnVpbHRpbi9icmFuY2guYzo5MjgKK21zZ2lkICJicmFuY2ggbmFtZSByZXF1aXJlZCIKK21zZ3N0ciAi5b+F6aG75o+Q5L6b5YiG5pSv5ZCNIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjg3NgorIzogYnVpbHRpbi9icmFuY2guYzo5MDQKK21zZ2lkICJDYW5ub3QgZ2l2ZSBkZXNjcmlwdGlvbiB0byBkZXRhY2hlZCBIRUFEIgorbXNnc3RyICLkuI3og73lkJHliIbnprvlpLTmjIfpkojmj5Dkvpvmj4/ov7AiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTA5Cittc2dpZCAiY2Fubm90IGVkaXQgZGVzY3JpcHRpb24gb2YgbW9yZSB0aGFuIG9uZSBicmFuY2giCittc2dzdHIgIuS4jeiDveS4uuS4gOS4quS7peS4iueahOWIhuaUr+e8lui+keaPj+i/sCIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gY29tbWl0IG9uIGJyYW5jaCAnJXMnIHlldC4iCittc2dzdHIgIuWIhuaUryAnJXMnIOWwmuaXoOaPkOS6pOOAgiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTm8gYnJhbmNoIG5hbWVkICclcycuIgorbXNnc3RyICLmsqHmnInliIbmlK8gJyVzJ+OAgiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5MzQKK21zZ2lkICJ0b28gbWFueSBicmFuY2hlcyBmb3IgYSByZW5hbWUgb3BlcmF0aW9uIgorbXNnc3RyICLkuLrph43lkb3lkI3mk43kvZzmj5DkvpvkuoblpKrlpJrnmoTliIbmlK/lkI0iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTM5Cittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgdG8gc2V0IG5ldyB1cHN0cmVhbSIKK21zZ3N0ciAi5Li66K6+572u5paw5LiK5ri45o+Q5L6b5LqG5aSq5aSa55qE5YiG5pSv5ZCNIgorCisjOiBidWlsdGluL2JyYW5jaC5jOjk0MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiY291bGQgbm90IHNldCB1cHN0cmVhbSBvZiBIRUFEIHRvICVzIHdoZW4gaXQgZG9lcyBub3QgcG9pbnQgdG8gYW55IGJyYW5jaC4iCittc2dzdHIgIuaXoOazleiuvue9riBIRUFEIOeahOS4iua4uOS4uiAlc++8jOWboOS4uiBIRUFEIOayoeacieaMh+WQkeS7u+S9leWIhuaUr+OAgiIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NDYgYnVpbHRpbi9icmFuY2guYzo5NjggYnVpbHRpbi9icmFuY2guYzo5OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAibm8gc3VjaCBicmFuY2ggJyVzJyIKK21zZ3N0ciAi5rKh5pyJ5q2k5YiG5pSvICclcyciCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTUwCisjLCBjLWZvcm1hdAorbXNnaWQgImJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICLliIbmlK8gJyVzJyDkuI3lrZjlnKgiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTYyCittc2dpZCAidG9vIG1hbnkgYnJhbmNoZXMgdG8gdW5zZXQgdXBzdHJlYW0iCittc2dzdHIgIuS4uuWPlua2iOS4iua4uOiuvue9ruaTjeS9nOaPkOS+m+S6huWkquWkmueahOWIhuaUr+WQjSIKKworIzogYnVpbHRpbi9icmFuY2guYzo5NjYKK21zZ2lkICJjb3VsZCBub3QgdW5zZXQgdXBzdHJlYW0gb2YgSEVBRCB3aGVuIGl0IGRvZXMgbm90IHBvaW50IHRvIGFueSBicmFuY2guIgorbXNnc3RyICLml6Dms5Xlj5bmtoggSEVBRCDnmoTkuIrmuLjorr7nva7lm6DkuLrlroPmsqHmnInmjIflkJHkuIDkuKrliIbmlK8iCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkJyYW5jaCAnJXMnIGhhcyBubyB1cHN0cmVhbSBpbmZvcm1hdGlvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLliIbmlK8gJyVzJyDmsqHmnInkuIrmuLjkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODkxCisjOiBidWlsdGluL2JyYW5jaC5jOjk4NworbXNnaWQgIml0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gY3JlYXRlICdIRUFEJyBtYW51YWxseSIKK21zZ3N0ciAi5omL5bel5Yib5bu6ICdIRUFEJyDmsqHmnInmhI/kuYkiCisKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6OTkzCiBtc2dpZCAiLWEgYW5kIC1yIG9wdGlvbnMgdG8gJ2dpdCBicmFuY2gnIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGggYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiJ2dpdCBicmFuY2gnIOeahCAtYSDlkowgLXIg6YCJ6aG55bim5LiA5Liq5YiG5pSv5ZCN5Y+C5pWw5rKh5pyJ5oSP5LmJIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjg5NAorIzogYnVpbHRpbi9icmFuY2guYzo5OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtLXNldC11cHN0cmVhbSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gQ29uc2lkZXIgdXNpbmcgLS0iCiAidHJhY2sgb3IgLS1zZXQtdXBzdHJlYW0tdG9cbiIKIG1zZ3N0ciAiIgorIumAiemhuSAtLXNldC11cHN0cmVhbSDlt7LlvIPnlKjlubblsIbooqvnp7vpmaTjgILogIPomZHkvb/nlKggLS10cmFjayDmiJYgLS1zZXQtdXBzdHJlYW0tdG9cbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MTEKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6MTAxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCiAiSWYgeW91IHdhbnRlZCB0byBtYWtlICclcycgdHJhY2sgJyVzJywgZG8gdGhpczpcbiIKICJcbiIKIG1zZ3N0ciAiIgorIlxuIgorIuWmguaenOS9oOaDs+eUqCAnJXMnIOi3n+i4qiAnJXMnLCDov5nkuYjlgZrvvJpcbiIKKyJcbiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo5MTIKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogYnVpbHRpbi9icmFuY2guYzoxMDE0CisjLCBjLWZvcm1hdAogbXNnaWQgIiAgICBnaXQgYnJhbmNoIC1kICVzXG4iCi1tc2dzdHIgIiAgSEVBROWIhuaUr++8miVzIgorbXNnc3RyICIgICAgZ2l0IGJyYW5jaCAtZCAlc1xuIgogCi0jOiBidWlsdGluL2JyYW5jaC5jOjkxMworIzogYnVpbHRpbi9icmFuY2guYzoxMDE1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvICVzXG4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiICAgIGdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0tdG8gJXNcbiIKIAogIzogYnVpbHRpbi9idW5kbGUuYzo0NwogIywgYy1mb3JtYXQKQEAgLTI1MjksMjM4ICsyODg5LDI0NyBAQAogbXNnaWQgIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIKIG1zZ3N0ciAi6ZyA6KaB5LiA5Liq54mI5pys5bqT5p2l6Kej5YyF44CCIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjQ3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTc2CiBtc2dpZCAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw8dHlwZT58LS10ZXh0Y29udikgPG9iamVjdD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGNhdC1maWxlICgtdHwtc3wtZXwtcHw857G75Z6LPnwtLXRleHRjb252KSA85a+56LGhPiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI0OAorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NwogbXNnaWQgImdpdCBjYXQtZmlsZSAoLS1iYXRjaHwtLWJhdGNoLWNoZWNrKSA8IDxsaXN0X29mX29iamVjdHM+IgotbXNnc3RyICIiCittc2dzdHIgImdpdCBjYXQtZmlsZSAoLS1iYXRjaHwtLWJhdGNoLWNoZWNrKSA8IDzlr7nosaHliJfooag+IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY2CisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk1CiBtc2dpZCAiPHR5cGU+IGNhbiBiZSBvbmUgb2Y6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgotbXNnc3RyICIiCittc2dzdHIgIjznsbvlnos+IOWPr+S7peaYr+WFtuS4reS5i+S4gO+8mmJsb2LjgIF0cmVl44CBY29tbWl044CBdGFnIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY3Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NgogbXNnaWQgInNob3cgb2JqZWN0IHR5cGUiCi1tc2dzdHIgIuWdj+eahOWvueixoeexu+Wei+OAgiIKK21zZ3N0ciAi5pi+56S65a+56LGh57G75Z6LIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjY4Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NwogbXNnaWQgInNob3cgb2JqZWN0IHNpemUiCi1tc2dzdHIgIuWdj+WvueixoSAlcyIKK21zZ3N0ciAi5pi+56S65a+56LGh5aSn5bCPIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjcwCisjOiBidWlsdGluL2NhdC1maWxlLmM6MTk5CiBtc2dpZCAiZXhpdCB3aXRoIHplcm8gd2hlbiB0aGVyZSdzIG5vIGVycm9yIgotbXNnc3RyICIiCittc2dzdHIgIuW9k+ayoeaciemUmeivr+aXtumAgOWHuuW5tui/lOWbnumbtiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3MQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAogbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgotbXNnc3RyICIiCittc2dzdHIgIue+juinguWcsOaJk+WNsOWvueixoeeahOWGheWuuSIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjI3MworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMgogbXNnaWQgImZvciBibG9iIG9iamVjdHMsIHJ1biB0ZXh0Y29udiBvbiBvYmplY3QncyBjb250ZW50IgotbXNnc3RyICIiCittc2dzdHIgIuWvueS6juaVsOaNru+8iGJsb2LvvInlr7nosaHvvIzlr7nlhbblhoXlrrnmiafooYwgdGV4dGNvbnYiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyNzUKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDQKIG1zZ2lkICJzaG93IGluZm8gYW5kIGNvbnRlbnQgb2Ygb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65LuO5qCH5YeG6L6T5YWl5o+Q5L6b55qE5a+56LGh55qE5L+h5oGv5ZKM5YaF5a65IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6Mjc4Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwNwogbXNnaWQgInNob3cgaW5mbyBhYm91dCBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKLW1zZ3N0ciAi5LiN6IO95LuO5qCH5YeG6L6T5YWl5Lit6K+75Y+W5pel5b+X5L+h5oGvIgorbXNnc3RyICLmmL7npLrku47moIflh4bovpPlhaXmj5DkvpvnmoTlr7nosaHnmoTkv6Hmga8iCiAKICM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjExCiBtc2dpZCAiZ2l0IGNoZWNrLWF0dHIgWy1hIHwgLS1hbGwgfCBhdHRyLi4uXSBbLS1dIHBhdGhuYW1lLi4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBjaGVjay1hdHRyIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gWy0tXSDot6/lvoTlkI0uLi4iCiAKICM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjEyCi1tc2dpZCAiZ2l0IGNoZWNrLWF0dHIgLS1zdGRpbiBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIDwgPGxpc3Qtb2YtcGF0aHM+IgotbXNnc3RyICIiCittc2dpZCAiZ2l0IGNoZWNrLWF0dHIgLS1zdGRpbiBbLXpdIFstYSB8IC0tYWxsIHwgYXR0ci4uLl0gPCA8bGlzdC1vZi1wYXRocz4iCittc2dzdHIgImdpdCBjaGVjay1hdHRyIC0tc3RkaW4gWy16XSBbLWEgfCAtLWFsbCB8IGF0dHIuLi5dIDwgPOi3r+W+hOWIl+ihqD4iCiAKICM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjE5CiBtc2dpZCAicmVwb3J0IGFsbCBhdHRyaWJ1dGVzIHNldCBvbiBmaWxlIgotbXNnc3RyICIiCittc2dzdHIgIuaKpeWRiuiuvue9ruWcqOaWh+S7tuS4iueahOaJgOacieWxnuaApyIKIAogIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjAKIG1zZ2lkICJ1c2UgLmdpdGF0dHJpYnV0ZXMgb25seSBmcm9tIHRoZSBpbmRleCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlj6rkvb/nlKjntKLlvJXkuK3nmoQgLmdpdGF0dHJpYnV0ZXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NQotIywgZnV6enkKKyM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIxIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjIgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc1CiBtc2dpZCAicmVhZCBmaWxlIG5hbWVzIGZyb20gc3RkaW4iCi1tc2dzdHIgIu+8iOato+S7juagh+WHhui+k+WFpeS4reivu+WPluaXpeW/l+S/oeaBr++8iVxuIgorbXNnc3RyICLku47moIflh4bovpPlhaXor7vlh7rmlofku7blkI0iCiAKLSM6IGJ1aWx0aW4vY2hlY2stYXR0ci5jOjIzCi0jLCBmdXp6eQorIzogYnVpbHRpbi9jaGVjay1hdHRyLmM6MjMgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoyNAogbXNnaWQgImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiCi1tc2dzdHIgIui3r+W+hOS7pSBOVUwg5a2X56ym5YiG6ZqUIgorbXNnc3RyICLovpPlhaXot6/lvoTku6VudWxs5a2X56ym57uI5q2iIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE4IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ0IGJ1aWx0aW4vZ2MuYzoxNzcKK21zZ2lkICJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciCittc2dzdHIgIuS4jeaYvuekuui/m+W6puaKpeWRiiIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDYKK21zZ2lkICJjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIgorbXNnc3RyICLkuI3og73lkIzml7bmj5Dkvpvot6/lvoTlj4ogLS1zdGRpbiDlj4LmlbAiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ5Cittc2dpZCAiLXogb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tc3RkaW4iCittc2dzdHIgIi16IOmcgOimgeWSjCAtLXN0ZGluIOWPguaVsOWFseeUqOaJjeacieaEj+S5iSIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTEKK21zZ2lkICJubyBwYXRoIHNwZWNpZmllZCIKK21zZ3N0ciAi5pyq5oyH5a6a6Lev5b6EIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NQorbXNnaWQgIi0tcXVpZXQgaXMgb25seSB2YWxpZCB3aXRoIGEgc2luZ2xlIHBhdGhuYW1lIgorbXNnc3RyICLlj4LmlbAgLS1xdWlldCDlj6rlnKjmj5DkvpvkuIDkuKrot6/lvoTlkI3ml7bmnInmlYgiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU3Cittc2dpZCAiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiCittc2dzdHIgIuS4jeiDveWQjOaXtuaPkOS+myAtLXF1aWV0IOWSjCAtLXZlcmJvc2Ug5Y+C5pWwIgogCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2CiBtc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBjaGVja291dC1pbmRleCBb6YCJ6aG5XSBbLS1dIFs85paH5Lu2Pi4uLl0iCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxODcKIG1zZ2lkICJjaGVjayBvdXQgYWxsIGZpbGVzIGluIHRoZSBpbmRleCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmo4Dlh7rntKLlvJXljLrnmoTmiYDmnInmlofku7YiCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxODgKIG1zZ2lkICJmb3JjZSBvdmVyd3JpdGUgb2YgZXhpc3RpbmcgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5by65Yi26KaG55uW546w5pyJ55qE5paH5Lu2IgogCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTkwCiBtc2dpZCAibm8gd2FybmluZyBmb3IgZXhpc3RpbmcgZmlsZXMgYW5kIGZpbGVzIG5vdCBpbiBpbmRleCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlrZjlnKjmiJbkuI3lnKjntKLlvJXkuK3nmoTmlofku7bpg73msqHmnInorablkYoiCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTIKLSMsIGZ1enp5CiBtc2dpZCAiZG9uJ3QgY2hlY2tvdXQgbmV3IGZpbGVzIgotbXNnc3RyICLkuI3og73mo4Dlh7ogJXMiCittc2dzdHIgIuS4jeajgOWHuuaWsOaWh+S7tiIKIAogIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NAotIywgZnV6enkKIG1zZ2lkICJ1cGRhdGUgc3RhdCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXggZmlsZSIKLW1zZ3N0ciAi5peg5rOV5YaZ5paw55qE57Si5byV5paH5Lu2IgorbXNnc3RyICLmm7TmlrDntKLlvJXkuK3mlofku7bnmoTnirbmgIHkv6Hmga8iCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDAKLSMsIGZ1enp5CiBtc2dpZCAicmVhZCBsaXN0IG9mIHBhdGhzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgotbXNnc3RyICLvvIjmraPku47moIflh4bovpPlhaXkuK3or7vlj5bml6Xlv5fkv6Hmga/vvIlcbiIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Y+W6Lev5b6E5YiX6KGoIgogCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MjAyCiBtc2dpZCAid3JpdGUgdGhlIGNvbnRlbnQgdG8gdGVtcG9yYXJ5IGZpbGVzIgotbXNnc3RyICIiCittc2dzdHIgIuWwhuWGheWuueWGmeWFpeS4tOaXtuaWh+S7tiIKIAogIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwMyBidWlsdGluL2NvbHVtbi5jOjMwCiBtc2dpZCAic3RyaW5nIgotbXNnc3RyICIiCittc2dzdHIgIuWtl+espuS4siIKIAogIzogYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjIwNAogbXNnaWQgIndoZW4gY3JlYXRpbmcgZmlsZXMsIHByZXBlbmQgPHN0cmluZz4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Zyo5Yib5bu65paH5Lu25pe277yM5Zyo5YmN6Z2i5Yqg5LiKPOWtl+espuS4sj4iCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoyMDcKIG1zZ2lkICJjb3B5IG91dCB0aGUgZmlsZXMgZnJvbSBuYW1lZCBzdGFnZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLku47mjIflrprmmoLlrZjljLrkuK3mi7flh7rmlofku7YiCiAKICM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNQotIywgZnV6enkKIG1zZ2lkICJnaXQgY2hlY2tvdXQgW29wdGlvbnNdIDxicmFuY2g+IgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V0IFvpgInpobldIDzliIbmlK8+IgogCiAjOiBidWlsdGluL2NoZWNrb3V0LmM6MjYKLSMsIGZ1enp5CiBtc2dpZCAiZ2l0IGNoZWNrb3V0IFtvcHRpb25zXSBbPGJyYW5jaD5dIC0tIDxmaWxlPi4uLiIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBjaGVja291dCBb6YCJ6aG5XSBbPOWIhuaUrz5dIC0tIDzmlofku7Y+Li4uIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNDkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTcgYnVpbHRpbi9jaGVja291dC5jOjE1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSBvdXIgdmVyc2lvbiIKIG1zZ3N0ciAi6Lev5b6EICclcycg5rKh5pyJ5oiR5Lus55qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTE4IGJ1aWx0aW4vY2hlY2tvdXQuYzoxNTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTkgYnVpbHRpbi9jaGVja291dC5jOjE1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICclcycgZG9lcyBub3QgaGF2ZSB0aGVpciB2ZXJzaW9uIgogbXNnc3RyICLot6/lvoQgJyVzJyDmsqHmnInku5bku6znmoTniYjmnKwiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgYWxsIG5lY2Vzc2FyeSB2ZXJzaW9ucyIKIG1zZ3N0ciAi6Lev5b6EICclcycg5rKh5pyJ5YWo6YOo5b+F6aG755qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTc4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTc5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBkb2VzIG5vdCBoYXZlIG5lY2Vzc2FyeSB2ZXJzaW9ucyIKIG1zZ3N0ciAi6Lev5b6EICclcycg5rKh5pyJ5b+F6aG755qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTk1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTk2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJzogY2Fubm90IG1lcmdlIgogbXNnc3RyICJwYXRoICclcyfvvJrml6Dms5XlkIjlubYiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGFkZCBtZXJnZSByZXN1bHQgZm9yICclcyciCiBtc2dzdHIgIuaXoOazleS4uiAnJXMnIOa3u+WKoOWQiOW5tue7k+aenCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjIzNiBidWlsdGluL2NoZWNrb3V0LmM6MjM5IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDIKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDUKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogYnVpbHRpbi9jaGVja291dC5jOjIzNyBidWlsdGluL2NoZWNrb3V0LmM6MjQwIGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNDYKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHVwZGF0aW5nIHBhdGhzIgotbXNnc3RyICIlc++8miVzIOS4jeiDveWSjCAlcyDlkIzml7bkvb/nlKgiCittc2dzdHIgIiclcycg5LiN6IO95Zyo5pu05paw6Lev5b6E5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MjQ4IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTEKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogYnVpbHRpbi9jaGVja291dC5jOjI0OSBidWlsdGluL2NoZWNrb3V0LmM6MjUyCisjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIKLW1zZ3N0ciAiJXPvvJolcyDkuI3og73lkowgJXMg5ZCM5pe25L2/55SoIgorbXNnc3RyICInJXMnIOS4jeiDveWSjCAlcyDlkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuIgotbXNnc3RyICIiCittc2dzdHIgIuS4jeiDveWQjOaXtuabtOaWsOi3r+W+hOW5tuWIh+aNouWIsOWIhuaUryclcyfjgIIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyNjUgYnVpbHRpbi9jaGVja291dC5jOjQyNgorIzogYnVpbHRpbi9jaGVja291dC5jOjI2NiBidWlsdGluL2NoZWNrb3V0LmM6NDU4CiBtc2dpZCAiY29ycnVwdCBpbmRleCBmaWxlIgogbXNnc3RyICLmjZ/lnY/nmoTntKLlvJXmlofku7YiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoyOTUgYnVpbHRpbi9jaGVja291dC5jOjMwMgorIzogYnVpbHRpbi9jaGVja291dC5jOjMyOSBidWlsdGluL2NoZWNrb3V0LmM6MzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhdGggJyVzJyBpcyB1bm1lcmdlZCIKIG1zZ3N0ciAi6Lev5b6EICclcycg5pyq5ZCI5bm2IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MzMzIGJ1aWx0aW4vY2hlY2tvdXQuYzo1MzQgYnVpbHRpbi9jbG9uZS5jOjU4NgotIzogYnVpbHRpbi9tZXJnZS5jOjgxMQotbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKLW1zZ3N0ciAi5peg5rOV5YaZ5paw55qE57Si5byV5paH5Lu2IgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NDQ4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NDgwCiBtc2dpZCAieW91IG5lZWQgdG8gcmVzb2x2ZSB5b3VyIGN1cnJlbnQgaW5kZXggZmlyc3QiCiBtc2dzdHIgIuaCqOmcgOimgeWFiOino+WGs+W9k+WJjee0ouW8leeahOWGsueqgSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjU2OQorIzogYnVpbHRpbi9jaGVja291dC5jOjYwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW4gbm90IGRvIHJlZmxvZyBmb3IgJyVzJ1xuIgogbXNnc3RyICLkuI3og73lr7kgJyVzJyDmiafooYwgcmVmbG9nIOaTjeS9nFxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjAyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjM0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQiCiBtc2dzdHIgIkhFQUQg55uu5YmN5L2N5LqOIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjA5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIumHjee9ruWIhuaUryAnJXMnXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWxyZWFkeSBvbiAnJXMnXG4iCiBtc2dzdHIgIuW3sue7j+S9jeS6jiAnJXMnXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYW5kIHJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIuWIh+aNouW5tumHjee9ruWIhuaUryAnJXMnXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTAgYnVpbHRpbi9jaGVja291dC5jOjk4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLliIfmjaLliLDkuIDkuKrmlrDliIbmlK8gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjIwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIuWIh+aNouWIsOWIhuaUryAnJXMnXG4iCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9jaGVja291dC5jOjY3NgorIzogYnVpbHRpbi9jaGVja291dC5jOjcwOAogIywgYy1mb3JtYXQKIG1zZ2lkICIgLi4uIGFuZCAlZCBtb3JlLlxuIgogbXNnc3RyICIgLi4uIOWPiuWFtuWugyAlZCDkuKrjgIJcbiIKIAogIy4gVGhlIHNpbmd1bGFyIHZlcnNpb24KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2ODIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldhcm5pbmc6IHlvdSBhcmUgbGVhdmluZyAlZCBjb21taXQgYmVoaW5kLCBub3QgY29ubmVjdGVkIHRvXG4iCkBAIC0yNzgxLDcgKzMxNTAsNyBAQAogIlxuIgogIiVzXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MDAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIklmIHlvdSB3YW50IHRvIGtlZXAgdGhlbSBieSBjcmVhdGluZyBhIG5ldyBicmFuY2gsIHRoaXMgbWF5IGJlIGEgZ29vZCB0aW1lXG4iCkBAIC0yNzk2LDQ5NyArMzE2NSw1MDIgQEAKICIgZ2l0IGJyYW5jaCBuZXdfYnJhbmNoX25hbWUgJXNcbiIKICJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjczMAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgIuWcqOeJiOacrOmBjeWOhuaXtumBh+WIsOWGhemDqOmUmeivryIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjczNAorIzogYnVpbHRpbi9jaGVja291dC5jOjc2NgogbXNnaWQgIlByZXZpb3VzIEhFQUQgcG9zaXRpb24gd2FzIgogbXNnc3RyICLkuYvliY3nmoQgSEVBRCDkvY3nva7mmK8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjEgYnVpbHRpbi9jaGVja291dC5jOjk1MAorIzogYnVpbHRpbi9jaGVja291dC5jOjc5MyBidWlsdGluL2NoZWNrb3V0LmM6OTgyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAi5oKo5L2N5LqO5LiA5Liq5bCa5pyq5Yid5aeL5YyW55qE5YiG5pSvIgogCiAjLiBjYXNlICgxKQotIzogYnVpbHRpbi9jaGVja291dC5jOjg4NgorIzogYnVpbHRpbi9jaGVja291dC5jOjkxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHJlZmVyZW5jZTogJXMiCiBtc2dzdHIgIuaXoOaViOW8leeUqO+8miVzIgogCiAjLiBjYXNlICgxKTogd2FudCBhIHRyZWUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5MjUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVmZXJlbmNlIGlzIG5vdCBhIHRyZWU6ICVzIgogbXNnc3RyICLlvJXnlKjkuI3mmK/kuIDkuKrmoJHvvJolcyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk2MQotIywgZnV6enkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTYKIG1zZ2lkICJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKLW1zZ3N0ciAiLS1vdXJzLy0tdGhlaXJzIOWSjOWIh+aNouWIhuaUr+S4jeWFvOWuueOAgiIKK21zZ3N0ciAi6Lev5b6E5LiN6IO95ZKM5YiH5o2i5YiG5pSv5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTY0IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NjgKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogYnVpbHRpbi9jaGVja291dC5jOjk5OSBidWlsdGluL2NoZWNrb3V0LmM6MTAwMworIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgotbXNnc3RyICIlc++8miVzIOS4jeiDveWSjCAlcyDlkIzml7bkvb/nlKgiCittc2dzdHIgIiclcycg5LiN6IO95ZKM5YiH5o2i5YiG5pSv5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTcyIGJ1aWx0aW4vY2hlY2tvdXQuYzo5NzUgYnVpbHRpbi9jaGVja291dC5jOjk4MAotIzogYnVpbHRpbi9jaGVja291dC5jOjk4MwotIywgZnV6enksIGMtZm9ybWF0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNyBidWlsdGluL2NoZWNrb3V0LmM6MTAxMCBidWlsdGluL2NoZWNrb3V0LmM6MTAxNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKKyMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciCi1tc2dzdHIgIiVz77yaJXMg5LiN6IO95ZKMICVzIOWQjOaXtuS9v+eUqCIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjk4OAotIywgZnV6enksIGMtZm9ybWF0Ci1tc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0ICclcyciCi1tc2dzdHIgIuaXoOazleWIh+aNouWIhuaUr+WIsOS4gOS4qumdnuaPkOS6pOOAgiIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDkgYnVpbHRpbi9nYy5jOjE3NwotbXNnaWQgInN1cHByZXNzIHByb2dyZXNzIHJlcG9ydGluZyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxMCBidWlsdGluL2NoZWNrb3V0LmM6MTAxMiBidWlsdGluL2Nsb25lLmM6ODkKLSM6IGJ1aWx0aW4vcmVtb3RlLmM6MTY5IGJ1aWx0aW4vcmVtb3RlLmM6MTcxCi0jLCBmdXp6eQotbXNnaWQgImJyYW5jaCIKLW1zZ3N0ciAi5L2N5LqO5YiG5pSvICIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTEKLW1zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxMwotbXNnaWQgImNyZWF0ZS9yZXNldCBhbmQgY2hlY2tvdXQgYSBicmFuY2giCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTQKLSMsIGZ1enp5Ci1tc2dpZCAiY3JlYXRlIHJlZmxvZyBmb3IgbmV3IGJyYW5jaCIKLW1zZ3N0ciAi5YiX5Ye644CB5Yib5bu65oiW5Yig6Zmk5YiG5pSvIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNQotbXNnaWQgImRldGFjaCB0aGUgSEVBRCBhdCBuYW1lZCBjb21taXQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTYKLSMsIGZ1enp5Ci1tc2dpZCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giCi1tc2dzdHIgIuWwmuacque7meWIhuaUryAnJXMnIOiuvue9ruS4iua4uCIKLQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKLSMsIGZ1enp5Ci1tc2dpZCAibmV3IGJyYW5jaCIKLW1zZ3N0ciAiW+aWsOWIhuaUr10iCi0KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4Ci0jLCBmdXp6eQotbXNnaWQgIm5ldyB1bnBhcmVudGVkIGJyYW5jaCIKLW1zZ3N0ciAi5rKh5pyJ5b2T5YmN5YiG5pSv44CCIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxOQotbXNnaWQgImNoZWNrb3V0IG91ciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMQotbXNnaWQgImNoZWNrb3V0IHRoZWlyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgotbXNnc3RyICIiCittc2dzdHIgIiclcycg5LiN6IO95ZKMICclcycg5ZCM5pe25L2/55SoIgogCiAjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMwotbXNnaWQgImZvcmNlIGNoZWNrb3V0ICh0aHJvdyBhd2F5IGxvY2FsIG1vZGlmaWNhdGlvbnMpIgotbXNnc3RyICIiCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdCAnJXMnIgorbXNnc3RyICLkuI3og73liIfmjaLliIbmlK/liLDkuIDkuKrpnZ7mj5DkuqQgJyVzJyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjQKLW1zZ2lkICJwZXJmb3JtIGEgMy13YXkgbWVyZ2Ugd2l0aCB0aGUgbmV3IGJyYW5jaCIKLW1zZ3N0ciAiIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDUgYnVpbHRpbi9jaGVja291dC5jOjEwNDcgYnVpbHRpbi9jbG9uZS5jOjkwCisjOiBidWlsdGluL3JlbW90ZS5jOjE2OSBidWlsdGluL3JlbW90ZS5jOjE3MQorbXNnaWQgImJyYW5jaCIKK21zZ3N0ciAi5YiG5pSvIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyNSBidWlsdGluL21lcmdlLmM6MjE1Ci0jLCBmdXp6eQotbXNnaWQgInVwZGF0ZSBpZ25vcmVkIGZpbGVzIChkZWZhdWx0KSIKLW1zZ3N0ciAi5pu05paw5paH5Lu25aSx6LSlIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDYKK21zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKK21zZ3N0ciAi5Yib5bu65bm25qOA5Ye65LiA5Liq5paw55qE5YiG5pSvIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyNiBidWlsdGluL2xvZy5jOjExMTEgcGFyc2Utb3B0aW9ucy5oOjI0MQotbXNnaWQgInN0eWxlIgotbXNnc3RyICIiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OAorbXNnaWQgImNyZWF0ZS9yZXNldCBhbmQgY2hlY2tvdXQgYSBicmFuY2giCittc2dzdHIgIuWIm+W7ui/ph43nva7lubbmo4Dlh7rkuIDkuKrliIbmlK8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI3Ci1tc2dpZCAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIKLW1zZ3N0ciAiIgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKK21zZ2lkICJjcmVhdGUgcmVmbG9nIGZvciBuZXcgYnJhbmNoIgorbXNnc3RyICLkuLrmlrDnmoTliIbmlK/liJvlu7rlvJXnlKjml6Xlv5ciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDMwCi1tc2dpZCAic2Vjb25kIGd1ZXNzICdnaXQgY2hlY2tvdXQgbm8tc3VjaC1icmFuY2gnIgotbXNnc3RyICIiCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MAorbXNnaWQgImRldGFjaCB0aGUgSEVBRCBhdCBuYW1lZCBjb21taXQiCittc2dzdHIgIuaIkOS4uuaMh+WQkeivpeaPkOS6pOeahOWIhuemu+WktOaMh+mSiCIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTEKK21zZ2lkICJzZXQgdXBzdHJlYW0gaW5mbyBmb3IgbmV3IGJyYW5jaCIKK21zZ3N0ciAi5Li65paw55qE5YiG5pSv6K6+572u5LiK5ri45L+h5oGvIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MworbXNnaWQgIm5ldyBicmFuY2giCittc2dzdHIgIuaWsOWIhuaUryIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKK21zZ2lkICJuZXcgdW5wYXJlbnRlZCBicmFuY2giCittc2dzdHIgIuaWsOeahOayoeacieeItuaPkOS6pOeahOWIhuaUryIKIAogIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTQKLSMsIGZ1enp5Ci1tc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgotbXNnc3RyICItbiDlkowgLWsg5LqS5pal44CCIgorbXNnaWQgImNoZWNrb3V0IG91ciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKK21zZ3N0ciAi5a+55bCa5pyq5ZCI5bm255qE5paH5Lu25qOA5Ye65oiR5Lus55qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTYKK21zZ2lkICJjaGVja291dCB0aGVpciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKK21zZ3N0ciAi5a+55bCa5pyq5ZCI5bm255qE5paH5Lu25qOA5Ye65LuW5Lus55qE54mI5pysIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OAorbXNnaWQgImZvcmNlIGNoZWNrb3V0ICh0aHJvdyBhd2F5IGxvY2FsIG1vZGlmaWNhdGlvbnMpIgorbXNnc3RyICLlvLrliLbmo4Dlh7rvvIjkuKLlvIPmnKzlnLDkv67mlLnvvIkiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU5Cittc2dpZCAicGVyZm9ybSBhIDMtd2F5IG1lcmdlIHdpdGggdGhlIG5ldyBicmFuY2giCittc2dzdHIgIuWSjOaWsOeahOWIhuaUr+aJp+ihjOS4iei3r+WQiOW5tiIKKworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjAgYnVpbHRpbi9tZXJnZS5jOjIxNworbXNnaWQgInVwZGF0ZSBpZ25vcmVkIGZpbGVzIChkZWZhdWx0KSIKK21zZ3N0ciAi5pu05paw5b+955Wl55qE5paH5Lu277yI6buY6K6k77yJIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MSBidWlsdGluL2xvZy5jOjExNTggcGFyc2Utb3B0aW9ucy5oOjI0NQorbXNnaWQgInN0eWxlIgorbXNnc3RyICLpo47moLwiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCittc2dpZCAiY29uZmxpY3Qgc3R5bGUgKG1lcmdlIG9yIGRpZmYzKSIKK21zZ3N0ciAi5Yay56qB6L6T5Ye66aOO5qC877yIbWVyZ2Ug5oiWIGRpZmYz77yJIgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NQorbXNnaWQgImRvIG5vdCBsaW1pdCBwYXRoc3BlY3MgdG8gc3BhcnNlIGVudHJpZXMgb25seSIKK21zZ3N0ciAi5a+56Lev5b6E5LiN5YGa56iA55aP5qOA5Ye655qE6ZmQ5Yi2IgorCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NworbXNnaWQgInNlY29uZCBndWVzcyAnZ2l0IGNoZWNrb3V0IG5vLXN1Y2gtYnJhbmNoJyIKK21zZ3N0ciAi5YaN6ICF54yc5rWLJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkxCittc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgorbXNnc3RyICItYuOAgS1CIOWSjCAtLW9ycGhhbiDmmK/kupLmlqXnmoQiCisKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTA4CiBtc2dpZCAiLS10cmFjayBuZWVkcyBhIGJyYW5jaCBuYW1lIgogbXNnc3RyICItLXRyYWNrIOmcgOimgeS4gOS4quWIhuaUr+WQjSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTE1CiBtc2dpZCAiTWlzc2luZyBicmFuY2ggbmFtZTsgdHJ5IC1iIgogbXNnc3RyICLnvLrlsJHliIbmlK/lkI3vvJvlsJ3or5UgLWIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTEzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE1MAogbXNnaWQgImludmFsaWQgcGF0aCBzcGVjaWZpY2F0aW9uIgogbXNnc3RyICLml6DmlYjnmoTot6/lvoTop4TmoLwiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTIwCi0jLCBmdXp6eSwgYy1mb3JtYXQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTU3CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS5cbiIKICJEaWQgeW91IGludGVuZCB0byBjaGVja291dCAnJXMnIHdoaWNoIGNhbiBub3QgYmUgcmVzb2x2ZWQgYXMgY29tbWl0PyIKIG1zZ3N0ciAiIgotImdpdCBjaGVja291dO+8muabtOaWsOi3r+W+hOWSjOWIh+aNouWIhuaUr+S4jeWFvOWuueOAglxuIgotIuaCqOaYr+aDs+imgeajgOWHuiAnJXMnIOS9huacquiDveWwhuWFtuino+aekOS4uuaPkOS6pOS5iO+8nyIKKyLkuI3og73lkIzml7bmm7TmlrDot6/lvoTlubbliIfmjaLliLDliIbmlK8nJXMn44CCXG4iCisi5oKo5piv5oOz6KaB5qOA5Ye6ICclcycg5L2G5YW25pyq6IO96Kej5p6Q5Li65o+Q5Lqk5LmI77yfIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTEyNQotIywgZnV6enksIGMtZm9ybWF0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2MgorIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGRvZXMgbm90IHRha2UgYSBwYXRoIGFyZ3VtZW50ICclcyciCi1tc2dzdHIgImdpdCBjaGVja291dO+8mi0tZGV0YWNoIOS4jei3n+i3r+W+hOWPguaVsCIKK21zZ3N0ciAiZ2l0IGNoZWNrb3V077yaLS1kZXRhY2gg5LiN6IO95o6l5pS26Lev5b6E5Y+C5pWwICclcyciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTI5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKIG1zZ3N0ciAiIgogImdpdCBjaGVja291dO+8muWcqOS7jue0ouW8leajgOWHuuaXtu+8jC0tb3Vycy8tLXRoZWlyc+OAgS0tZm9yY2Ug5ZKMIC0tbWVyZ2Ug5LiN5YW85a6544CCIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTkKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyMAogbXNnaWQgImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDzmqKHlvI8+XSBbLXggfCAtWF0gWy0tXSA86Lev5b6EPi4uLiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjUxCisjOiBidWlsdGluL2NsZWFuLmM6MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVtb3ZpbmcgJXNcbiIKK21zZ3N0ciAi5q2j5Yig6ZmkICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNQorIywgYy1mb3JtYXQKK21zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKK21zZ3N0ciAi5bCG5Yig6ZmkICVzXG4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIywgYy1mb3JtYXQKK21zZ2lkICJTa2lwcGluZyByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIuW/veeVpeeJiOacrOW6kyAlc1xuIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiV291bGQgc2tpcCByZXBvc2l0b3J5ICVzXG4iCittc2dzdHIgIuWwhuW/veeVpeeJiOacrOW6kyAlc1xuIgorCisjOiBidWlsdGluL2NsZWFuLmM6MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmFpbGVkIHRvIHJlbW92ZSAlcyIKK21zZ3N0ciAi5peg5rOV5Yig6ZmkICVzIgorCisjOiBidWlsdGluL2NsZWFuLmM6MTYwCiBtc2dpZCAiZG8gbm90IHByaW50IG5hbWVzIG9mIGZpbGVzIHJlbW92ZWQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5omT5Y2w5Yig6Zmk5paH5Lu255qE5ZCN56ewIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTMKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKIG1zZ2lkICJmb3JjZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvLrliLYiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo1NQotIywgZnV6enkKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjQKIG1zZ2lkICJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiCi1tc2dzdHIgIuS4pOS4qui+k+WHuuebruW9le+8nyIKK21zZ3N0ciAi5Yig6Zmk5pW05Liq55uu5b2VIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTYgYnVpbHRpbi9kZXNjcmliZS5jOjQxMyBidWlsdGluL2dyZXAuYzo4MDIKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTEgYnVpbHRpbi9uYW1lLXJldi5jOjIzMSBidWlsdGluL3Nob3ctcmVmLmM6MTk5CisjOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgogbXNnaWQgInBhdHRlcm4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5qih5byPIgogCi0jOiBidWlsdGluL2NsZWFuLmM6NTcKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKIG1zZ2lkICJhZGQgPHBhdHRlcm4+IHRvIGlnbm9yZSBydWxlcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmt7vliqA85qih5byPPuWIsOW/veeVpeinhOWImSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjU4CisjOiBidWlsdGluL2NsZWFuLmM6MTY3CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKLW1zZ3N0ciAiIgorbXNnc3RyICLkuZ/liKDpmaTlv73nlaXnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo2MAorIzogYnVpbHRpbi9jbGVhbi5jOjE2OQogbXNnaWQgInJlbW92ZSBvbmx5IGlnbm9yZWQgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5Yig6Zmk5b+955Wl55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2NsZWFuLmM6NzgKKyM6IGJ1aWx0aW4vY2xlYW4uYzoxODcKIG1zZ2lkICIteCBhbmQgLVggY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgIi14IOWSjCAtWCDkuI3og73lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzo4MgorIzogYnVpbHRpbi9jbGVhbi5jOjE5MQogbXNnaWQgIiIKICJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKIG1zZ3N0ciAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSDorr7nva7kuLogdHJ1ZSDkuJTmnKrmj5DkvpsgLW4g5oiWIC1mIOmAiemhue+8jOaLkue7neaJp+ihjOa4heeQhuWKqOS9nCIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjg1CisjOiBidWlsdGluL2NsZWFuLmM6MTk0CiBtc2dpZCAiIgogImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgogImNsZWFuIgogbXNnc3RyICIiCiAiY2xlYW4ucmVxdWlyZUZvcmNlIOm7mOiupOS4uiB0cnVlIOS4lOacquaPkOS+myAtbiDmiJYgLWYg6YCJ6aG577yM5ouS57ud5omn6KGM5riF55CG5Yqo5L2cIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTU1IGJ1aWx0aW4vY2xlYW4uYzoxNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiV291bGQgcmVtb3ZlICVzXG4iCi1tc2dzdHIgIuWwhuWIoOmZpCAlc1xuIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTU5IGJ1aWx0aW4vY2xlYW4uYzoxNzkKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiUmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAi5q2j5Yig6ZmkICVzXG4iCi0KLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIgYnVpbHRpbi9jbGVhbi5jOjE4MgotIywgYy1mb3JtYXQKLW1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgotbXNnc3RyICLml6Dms5XliKDpmaQgJXMiCi0KLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiV291bGQgbm90IHJlbW92ZSAlc1xuIgotbXNnc3RyICLkuI3kvJrliKDpmaQgJXNcbiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE2OAotIywgYy1mb3JtYXQKLW1zZ2lkICJOb3QgcmVtb3ZpbmcgJXNcbiIKLW1zZ3N0ciAi5pyq5Yig6ZmkICVzXG4iCi0KLSM6IGJ1aWx0aW4vY2xvbmUuYzozNgorIzogYnVpbHRpbi9jbG9uZS5jOjM3CiBtc2dpZCAiZ2l0IGNsb25lIFtvcHRpb25zXSBbLS1dIDxyZXBvPiBbPGRpcj5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBjbG9uZSBb6YCJ6aG5XSBbLS1dIDzniYjmnKzlupM+IFs86Lev5b6EPl0iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NCBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxMgotIzogYnVpbHRpbi9wdXNoLmM6Mzk5CisjOiBidWlsdGluL2Nsb25lLmM6NjUgYnVpbHRpbi9mZXRjaC5jOjgyIGJ1aWx0aW4vbWVyZ2UuYzoyMTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQzNgogbXNnaWQgImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvLrliLbmmL7npLrov5vluqbmiqXlkYoiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NgorIzogYnVpbHRpbi9jbG9uZS5jOjY3CiBtc2dpZCAiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5Yib5bu65LiA5Liq5qOA5Ye6IgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjcgYnVpbHRpbi9jbG9uZS5jOjY5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAotIywgZnV6enkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2OCBidWlsdGluL2Nsb25lLmM6NzAgYnVpbHRpbi9pbml0LWRiLmM6NDg4CiBtc2dpZCAiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IgotbXNnc3RyICLkuI3mmK/kuIDkuKogZ2l0IOeJiOacrOW6kyIKK21zZ3N0ciAi5Yib5bu65LiA5Liq6KO454mI5pys5bqTIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3MwogbXNnaWQgImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIgotbXNnc3RyICIiCittc2dzdHIgIuWIm+W7uuS4gOS4qumVnOWDj+eJiOacrOW6k++8iOS5n+aYr+ijuOeJiOacrOW6k++8iSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc0CisjOiBidWlsdGluL2Nsb25lLmM6NzUKIG1zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKLW1zZ3N0ciAiIgorbXNnc3RyICLku47mnKzlnLDniYjmnKzlupPlhYvpmoYiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NgorIzogYnVpbHRpbi9jbG9uZS5jOjc3CiBtc2dpZCAiZG9uJ3QgdXNlIGxvY2FsIGhhcmRsaW5rcywgYWx3YXlzIGNvcHkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5L2/55So5pys5Zyw56Gs6ZO+5o6l77yM5aeL57uI5aSN5Yi2IgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzgKLSMsIGZ1enp5CisjOiBidWlsdGluL2Nsb25lLmM6NzkKIG1zZ2lkICJzZXR1cCBhcyBzaGFyZWQgcmVwb3NpdG9yeSIKLW1zZ3N0ciAi5LiN5piv5LiA5LiqIGdpdCDniYjmnKzlupMiCittc2dzdHIgIuiuvue9ruS4uuWFseS6q+eJiOacrOW6kyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgwIGJ1aWx0aW4vY2xvbmUuYzo4MgorIzogYnVpbHRpbi9jbG9uZS5jOjgxIGJ1aWx0aW4vY2xvbmUuYzo4MwogbXNnaWQgImluaXRpYWxpemUgc3VibW9kdWxlcyBpbiB0aGUgY2xvbmUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Zyo5YWL6ZqG5pe25Yid5aeL5YyW5a2Q5qih57uEIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODMgYnVpbHRpbi9pbml0LWRiLmM6NDg1Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NQogbXNnaWQgInRlbXBsYXRlLWRpcmVjdG9yeSIKLW1zZ3N0ciAi5paH5Lu2L+ebruW9lSIKK21zZ3N0ciAi5qih5p2/55uu5b2VIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQgYnVpbHRpbi9pbml0LWRiLmM6NDg2CisjOiBidWlsdGluL2Nsb25lLmM6ODUgYnVpbHRpbi9pbml0LWRiLmM6NDg2CiBtc2dpZCAiZGlyZWN0b3J5IGZyb20gd2hpY2ggdGVtcGxhdGVzIHdpbGwgYmUgdXNlZCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmqKHmnb/nm67lvZXlsIbooqvkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg3CiBtc2dpZCAicmVmZXJlbmNlIHJlcG9zaXRvcnkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5byV55So54mI5pys5bqTIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODcgYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAotIywgZnV6enkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4OCBidWlsdGluL2NvbHVtbi5jOjI2IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ0CiBtc2dpZCAibmFtZSIKLW1zZ3N0ciAi6YeN5ZG95ZCNIgorbXNnc3RyICLlkI3np7AiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4OAorIzogYnVpbHRpbi9jbG9uZS5jOjg5CiBtc2dpZCAidXNlIDxuYW1lPiBpbnN0ZWFkIG9mICdvcmlnaW4nIHRvIHRyYWNrIHVwc3RyZWFtIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqDzlkI3np7A+6ICM5LiN5pivICdvcmlnaW4nIOWOu+i3n+i4quS4iua4uCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkwCisjOiBidWlsdGluL2Nsb25lLmM6OTEKIG1zZ2lkICJjaGVja291dCA8YnJhbmNoPiBpbnN0ZWFkIG9mIHRoZSByZW1vdGUncyBIRUFEIgotbXNnc3RyICIiCittc2dzdHIgIuajgOWHujzliIbmlK8+6ICM5LiN5piv6L+c56iLSEVBRCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkyCisjOiBidWlsdGluL2Nsb25lLmM6OTMKIG1zZ2lkICJwYXRoIHRvIGdpdC11cGxvYWQtcGFjayBvbiB0aGUgcmVtb3RlIgotbXNnc3RyICIiCittc2dzdHIgIui/nOeoiyBnaXQtdXBsb2FkLXBhY2sg6Lev5b6EIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTMgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjc0NworIzogYnVpbHRpbi9jbG9uZS5jOjk0IGJ1aWx0aW4vZmV0Y2guYzo4MyBidWlsdGluL2dyZXAuYzo2NjIKIG1zZ2lkICJkZXB0aCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmt7HluqYiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5NAorIzogYnVpbHRpbi9jbG9uZS5jOjk1CiBtc2dpZCAiY3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGF0IGRlcHRoIgotbXNnc3RyICIiCittc2dzdHIgIuWIm+W7uuS4gOS4quaMh+Wumua3seW6pueahOa1heWFi+mahiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk2CisjOiBidWlsdGluL2Nsb25lLmM6OTcKIG1zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5YWL6ZqG5LiA5Liq5YiG5pSv44CBSEVBRCDmiJYgLS1icmFuY2giCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5NyBidWlsdGluL2luaXQtZGIuYzo0OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTQKIG1zZ2lkICJnaXRkaXIiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l055uu5b2VIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTggYnVpbHRpbi9pbml0LWRiLmM6NDk1CisjOiBidWlsdGluL2Nsb25lLmM6OTkgYnVpbHRpbi9pbml0LWRiLmM6NDk1CiBtc2dpZCAic2VwYXJhdGUgZ2l0IGRpciBmcm9tIHdvcmtpbmcgdHJlZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2Nsb25lLmM6OTkKLW1zZ2lkICJrZXk9dmFsdWUiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l055uu5b2V5ZKM5bel5L2c5Yy65YiG56a7IgogCiAjOiBidWlsdGluL2Nsb25lLmM6MTAwCi0jLCBmdXp6eQorbXNnaWQgImtleT12YWx1ZSIKK21zZ3N0ciAia2V5PXZhbHVlIgorCisjOiBidWlsdGluL2Nsb25lLmM6MTAxCiBtc2dpZCAic2V0IGNvbmZpZyBpbnNpZGUgdGhlIG5ldyByZXBvc2l0b3J5IgotbXNnc3RyICLorrDlvZXlj5jmm7TliLDniYjmnKzlupMiCittc2dzdHIgIuWcqOaWsOeJiOacrOW6k+S4reiuvue9rumFjee9ruS/oeaBryIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjI0MworIzogYnVpbHRpbi9jbG9uZS5jOjI1NAogIywgYy1mb3JtYXQKLW1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIGRpcmVjdG9yeS4iCi1tc2dzdHIgIuW8leeUqOeJiOacrOW6kyAnJXMnIOS4jeaYr+S4gOS4quacrOWcsOebruW9leOAgiIKK21zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIHJlcG9zaXRvcnkuIgorbXNnc3RyICLlvJXnlKjniYjmnKzlupMgJyVzJyDkuI3mmK/kuIDkuKrmnKzlnLDniYjmnKzlupPjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDYKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5Yib5bu655uu5b2VICclcyciCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMDggYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTkgYnVpbHRpbi9kaWZmLmM6NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5p6a5Li+ICclcycg54q25oCBIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzEwCisjOiBidWlsdGluL2Nsb25lLmM6MzIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIlcyDlrZjlnKjkuJTkuI3mmK/kuIDkuKrnm67lvZUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMjQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAi5peg5rOV5p6a5Li+ICVzIOeKtuaAgVxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzQ2CisjOiBidWlsdGluL2Nsb25lLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICLml6Dms5XliJvlu7rpk77mjqUgJyVzJyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM1MAorIzogYnVpbHRpbi9jbG9uZS5jOjM2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY29weSBmaWxlIHRvICclcyciCiBtc2dzdHIgIuaXoOazleaLt+i0neaWh+S7tuiHsyAnJXMnIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzczCisjOiBidWlsdGluL2Nsb25lLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgIuWujOaIkOOAglxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDQzCisjOiBidWlsdGluL2Nsb25lLmM6Mzk3Cittc2dpZCAiIgorIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKKyJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKKyJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgorbXNnc3RyICIiCisi5YWL6ZqG5oiQ5Yqf77yM5L2G5piv5qOA5Ye65aSx6LSl44CCXG4iCisi5oKo5Y+v5Lul6YCa6L+HICdnaXQgc3RhdHVzJyDmo4Dmn6Xlk6rkupvlt7Looqvmo4Dlh7rvvIznhLblkI7kvb/nlKjlkb3ku6RcbiIKKyInZ2l0IGNoZWNrb3V0IC1mIEhFQUQnIOmHjeivlVxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICLkuI3og73lj5HnjrDopoHlhYvpmobnmoTov5znqIvliIbmlK8gJXPjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NTIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKK21zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKK21zZ3N0ciAi6L+c56iL5rKh5pyJ5Y+R6YCB5omA5pyJ5b+F6aG755qE5a+56LGhIgorCisjOiBidWlsdGluL2Nsb25lLmM6NjEwCiBtc2dpZCAicmVtb3RlIEhFQUQgcmVmZXJzIHRvIG5vbmV4aXN0ZW50IHJlZiwgdW5hYmxlIHRvIGNoZWNrb3V0LlxuIgogbXNnc3RyICLov5znqIsgSEVBRCDmjIflkJHkuIDkuKrkuI3lrZjlnKjnmoTlvJXnlKjvvIzml6Dms5Xmo4Dlh7rjgIJcbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0MgorIzogYnVpbHRpbi9jbG9uZS5jOjY0MQorbXNnaWQgInVuYWJsZSB0byBjaGVja291dCB3b3JraW5nIHRyZWUiCittc2dzdHIgIuS4jeiDveajgOWHuuW3peS9nOWMuiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjc0OQogbXNnaWQgIlRvbyBtYW55IGFyZ3VtZW50cy4iCiBtc2dzdHIgIuWkquWkmuWPguaVsOOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY0NgorIzogYnVpbHRpbi9jbG9uZS5jOjc1MwogbXNnaWQgIllvdSBtdXN0IHNwZWNpZnkgYSByZXBvc2l0b3J5IHRvIGNsb25lLiIKIG1zZ3N0ciAi5oKo5b+F6aG75oyH5a6a5LiA5Liq54mI5pys5bqT5p2l5YWL6ZqG44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjU3CisjOiBidWlsdGluL2Nsb25lLmM6NzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIi0tYmFyZSBhbmQgLS1vcmlnaW4gJXMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKIG1zZ3N0ciAiLS1iYXJlIOWSjCAtLW9yaWdpbiAlcyDpgInpobnkuI3lhbzlrrnjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NzEKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjcKK21zZ2lkICItLWJhcmUgYW5kIC0tc2VwYXJhdGUtZ2l0LWRpciBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiLS1iYXJlIOWSjCAtLXNlcGFyYXRlLWdpdC1kaXIg6YCJ6aG55LiN5YW85a6544CCIgorCisjOiBidWlsdGluL2Nsb25lLmM6NzgwCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlcG9zaXRvcnkgJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAi54mI5pys5bqTICclcycg5LiN5a2Y5ZyoIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Njc2CisjOiBidWlsdGluL2Nsb25lLmM6Nzg1CiBtc2dpZCAiLS1kZXB0aCBpcyBpZ25vcmVkIGluIGxvY2FsIGNsb25lczsgdXNlIGZpbGU6Ly8gaW5zdGVhZC4iCiBtc2dzdHIgIi0tZGVwdGgg5Zyo5pys5Zyw5YWL6ZqG6KKr5b+955Wl77yM5pS55Li6IGZpbGU6Ly8g5Y2P6K6u6K+V6K+V44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Njg2CisjOiBidWlsdGluL2Nsb25lLmM6Nzk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGFuIGVtcHR5IGRpcmVjdG9yeS4iCiBtc2dzdHIgIuebruagh+i3r+W+hCAnJXMnIOW3sue7j+WtmOWcqO+8jOW5tuS4lOS4jeaYr+S4gOS4quepuuebruW9leOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY5NgorIzogYnVpbHRpbi9jbG9uZS5jOjgwNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ3b3JraW5nIHRyZWUgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgIuW3peS9nOWMuiAnJXMnIOW3sue7j+WtmOWcqOOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcwOSBidWlsdGluL2Nsb25lLmM6NzIzCisjOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBsZWFkaW5nIGRpcmVjdG9yaWVzIG9mICclcyciCiBtc2dzdHIgIuS4jeiDveS4uiAnJXMnIOWIm+W7uuWFiOWvvOebruW9lSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjcxMgorIzogYnVpbHRpbi9jbG9uZS5jOjgyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iCiBtc2dzdHIgIuS4jeiDveS4uiAnJXMnIOWIm+W7uuW3peS9nOWMuuebruW9leOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjczMQorIzogYnVpbHRpbi9jbG9uZS5jOjg0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICclcycuLi5cbiIKIG1zZ3N0ciAi5YWL6ZqG5Yiw6KO454mI5pys5bqTICclcycuLi5cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjczMworIzogYnVpbHRpbi9jbG9uZS5jOjg0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gJyVzJy4uLlxuIgogbXNnc3RyICLmraPlhYvpmobliLAgJyVzJy4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Nzg5CisjOiBidWlsdGluL2Nsb25lLmM6ODc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICLkuI3nn6XpgZPlpoLkvZXlhYvpmoYgJXMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MzgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3RlIGJyYW5jaCAlcyBub3QgZm91bmQgaW4gdXBzdHJlYW0gJXMiCiBtc2dzdHIgIui/nOeoi+WIhuaUryAlcyDlnKjkuIrmuLggJXMg5pyq5Y+R546wIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQ1CisjOiBidWlsdGluL2Nsb25lLmM6OTMzCiBtc2dpZCAiWW91IGFwcGVhciB0byBoYXZlIGNsb25lZCBhbiBlbXB0eSByZXBvc2l0b3J5LiIKIG1zZ3N0ciAi5oKo5Ly85LmO5YWL6ZqG5LqG5LiA5Liq56m654mI5pys5bqT44CCIgogCiAjOiBidWlsdGluL2NvbHVtbi5jOjkKIG1zZ2lkICJnaXQgY29sdW1uIFtvcHRpb25zXSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgY29sdW1uIFvpgInpobldIgogCiAjOiBidWlsdGluL2NvbHVtbi5jOjI2CiBtc2dpZCAibG9va3VwIGNvbmZpZyB2YXJzIgotbXNnc3RyICIiCittc2dzdHIgIuafpeaJvumFjee9ruWPmOmHjyIKIAogIzogYnVpbHRpbi9jb2x1bW4uYzoyNyBidWlsdGluL2NvbHVtbi5jOjI4Ci0jLCBmdXp6eQogbXNnaWQgImxheW91dCB0byB1c2UiCi1tc2dzdHIgIuacrOWcsOW3sui/h+aXtiIKK21zZ3N0ciAi6KaB5L2/55So55qE5biD5bGAIgogCiAjOiBidWlsdGluL2NvbHVtbi5jOjI5CiBtc2dpZCAiTWF4aW11bSB3aWR0aCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmnIDlpKflrr3luqYiCiAKICM6IGJ1aWx0aW4vY29sdW1uLmM6MzAKIG1zZ2lkICJQYWRkaW5nIHNwYWNlIG9uIGxlZnQgYm9yZGVyIgotbXNnc3RyICIiCittc2dzdHIgIuW3pui+ueahhueahOWhq+WFheepuumXtCIKIAogIzogYnVpbHRpbi9jb2x1bW4uYzozMQogbXNnaWQgIlBhZGRpbmcgc3BhY2Ugb24gcmlnaHQgYm9yZGVyIgotbXNnc3RyICIiCittc2dzdHIgIuWPs+i+ueahhueahOWhq+WFheepuumXtCIKIAogIzogYnVpbHRpbi9jb2x1bW4uYzozMgogbXNnaWQgIlBhZGRpbmcgc3BhY2UgYmV0d2VlbiBjb2x1bW5zIgotbXNnc3RyICIiCittc2dzdHIgIuS4pOWIl+S5i+mXtOeahOWhq+WFheepuumXtCIKIAogIzogYnVpbHRpbi9jb2x1bW4uYzo1MQogbXNnaWQgIi0tY29tbWFuZCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudCIKIG1zZ3N0ciAiLS1jb21tYW5kIOW/hemhu+aYr+esrOS4gOS4quWPguaVsCIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMwotIywgZnV6enkKLW1zZ2lkICJnaXQgY29tbWl0IFtvcHRpb25zXSBbLS1dIDxmaWxlcGF0dGVybj4uLi4iCi1tc2dzdHIgImdpdCBhcHBseSBb6YCJ6aG5XSBbPOihpeS4gT4uLi5dIgorIzogYnVpbHRpbi9jb21taXQuYzozNAorbXNnaWQgImdpdCBjb21taXQgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKK21zZ3N0ciAiZ2l0IGNvbW1pdCBb6YCJ6aG5XSBbLS1dIDzot6/lvoTljLnphY0+Li4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM4Ci0jLCBmdXp6eQotbXNnaWQgImdpdCBzdGF0dXMgW29wdGlvbnNdIFstLV0gPGZpbGVwYXR0ZXJuPi4uLiIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCisjOiBidWlsdGluL2NvbW1pdC5jOjM5Cittc2dpZCAiZ2l0IHN0YXR1cyBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgorbXNnc3RyICJnaXQgc3RhdHVzIFvpgInpobldIFstLV0gPOi3r+W+hOWMuemFjT4uLi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDQKIG1zZ2lkICIiCiAiWW91ciBuYW1lIGFuZCBlbWFpbCBhZGRyZXNzIHdlcmUgY29uZmlndXJlZCBhdXRvbWF0aWNhbGx5IGJhc2VkXG4iCiAib24geW91ciB1c2VybmFtZSBhbmQgaG9zdG5hbWUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZXkgYXJlIGFjY3VyYXRlLlxuIgpAQCAtMzMwOSw3ICszNjgzLDcgQEAKICJcbiIKICIgICAgZ2l0IGNvbW1pdCAtLWFtZW5kIC0tcmVzZXQtYXV0aG9yXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYKIG1zZ2lkICIiCiAiWW91IGFza2VkIHRvIGFtZW5kIHRoZSBtb3N0IHJlY2VudCBjb21taXQsIGJ1dCBkb2luZyBzbyB3b3VsZCBtYWtlXG4iCiAiaXQgZW1wdHkuIFlvdSBjYW4gcmVwZWF0IHlvdXIgY29tbWFuZCB3aXRoIC0tYWxsb3ctZW1wdHksIG9yIHlvdSBjYW5cbiIKQEAgLTMzMTgsNyArMzY5Miw3IEBACiAi5oKo6KaB5L+u6KGl5pyA6L+R55qE5o+Q5Lqk77yM5L2G6L+Z5LmI5YGa5Lya6K6p5a6D5oiQ5Li656m65o+Q5Lqk44CC5oKo5Y+v5Lul6YeN5aSN5oKo55qE5ZG95Luk5bm25bim5LiKXG4iCiAiLS1hbGxvdy1lbXB0eSDpgInpobnvvIzmiJbogIXmgqjlj6/nlKjlkb3ku6QgXCJnaXQgcmVzZXQgSEVBRF5cIiDmlbTkuKrliKDpmaTor6Xmj5DkuqTjgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MAorIzogYnVpbHRpbi9jb21taXQuYzo2MQogbXNnaWQgIiIKICJUaGUgcHJldmlvdXMgY2hlcnJ5LXBpY2sgaXMgbm93IGVtcHR5LCBwb3NzaWJseSBkdWUgdG8gY29uZmxpY3QgcmVzb2x1dGlvbi5cbiIKICJJZiB5b3Ugd2lzaCB0byBjb21taXQgaXQgYW55d2F5LCB1c2U6XG4iCkBAIC0zMzM0LDkzICszNzA4LDkzIEBACiAiXG4iCiAi5ZCm5YiZ77yM6K+35L2/55So5ZG95LukICdnaXQgcmVzZXQnXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MjU2CisjOiBidWlsdGluL2NvbW1pdC5jOjI2MAogbXNnaWQgImZhaWxlZCB0byB1bnBhY2sgSEVBRCB0cmVlIG9iamVjdCIKIG1zZ3N0ciAi5peg5rOV6Kej5YyFIEhFQUQg5qCR5a+56LGhIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjI5OAorIzogYnVpbHRpbi9jb21taXQuYzozMDIKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBpbmRleCIKIG1zZ3N0ciAi5LiN6IO95Yib5bu65Li05pe257Si5byVIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjMwNAorIzogYnVpbHRpbi9jb21taXQuYzozMDgKIG1zZ2lkICJpbnRlcmFjdGl2ZSBhZGQgZmFpbGVkIgogbXNnc3RyICLkuqTkupLlvI/mt7vliqDlpLHotKUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzM3IGJ1aWx0aW4vY29tbWl0LmM6MzU4IGJ1aWx0aW4vY29tbWl0LmM6NDA4CisjOiBidWlsdGluL2NvbW1pdC5jOjM0MSBidWlsdGluL2NvbW1pdC5jOjM2MiBidWlsdGluL2NvbW1pdC5jOjQxMgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXdfaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5YaZIG5ld19pbmRleCDmlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6Mzg5CisjOiBidWlsdGluL2NvbW1pdC5jOjM5MwogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIG1lcmdlLiIKIG1zZ3N0ciAi5Zyo5ZCI5bm26L+H56iL5Lit5LiN6IO95YGa6YOo5YiG5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5MQorIzogYnVpbHRpbi9jb21taXQuYzozOTUKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIuWcqOaLo+mAiei/h+eoi+S4reS4jeiDveWBmumDqOWIhuaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MDEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDA1CiBtc2dpZCAiY2Fubm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICLml6Dms5Xor7vlj5bntKLlvJUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDIxCisjOiBidWlsdGluL2NvbW1pdC5jOjQyNQogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5YaZ5Li05pe257Si5byV5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjUxMCBidWlsdGluL2NvbW1pdC5jOjUxNgorIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICLml6DmlYjnmoTmj5DkuqTvvJolcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCiBtc2dpZCAibWFsZm9ybWVkIC0tYXV0aG9yIHBhcmFtZXRlciIKIG1zZ3N0ciAi6Z2e5rOV55qEIC0tYXV0aG9yIOWPguaVsCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpZGVudCBzdHJpbmc6ICclcyciCiBtc2dzdHIgIumdnuazleeahOi6q+S7veWtl+espuS4su+8miclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjM4IGJ1aWx0aW4vY29tbWl0LmM6NjcxIGJ1aWx0aW4vY29tbWl0LmM6OTg1CisjOiBidWlsdGluL2NvbW1pdC5jOjYwMCBidWlsdGluL2NvbW1pdC5jOjYzMyBidWlsdGluL2NvbW1pdC5jOjk1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgbG9va3VwIGNvbW1pdCAlcyIKIG1zZ3N0ciAi5LiN6IO95p+l6K+i5o+Q5LqkICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY1MCBidWlsdGluL3Nob3J0bG9nLmM6Mjk2CisjOiBidWlsdGluL2NvbW1pdC5jOjYxMiBidWlsdGluL3Nob3J0bG9nLmM6MjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIihyZWFkaW5nIGxvZyBtZXNzYWdlIGZyb20gc3RhbmRhcmQgaW5wdXQpXG4iCiBtc2dzdHIgIu+8iOato+S7juagh+WHhui+k+WFpeS4reivu+WPluaXpeW/l+S/oeaBr++8iVxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY1MgorIzogYnVpbHRpbi9jb21taXQuYzo2MTQKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAi5LiN6IO95LuO5qCH5YeG6L6T5YWl5Lit6K+75Y+W5pel5b+X5L+h5oGvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY1NgorIzogYnVpbHRpbi9jb21taXQuYzo2MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5LiN6IO96K+75Y+W5pel5b+X5paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjYyCisjOiBidWlsdGluL2NvbW1pdC5jOjYyNAogbXNnaWQgImNvbW1pdCBoYXMgZW1wdHkgbWVzc2FnZSIKIG1zZ3N0ciAi5o+Q5Lqk6K+05piO5Li656m6IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY3OAorIzogYnVpbHRpbi9jb21taXQuYzo2NDAKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NU0ciCiBtc2dzdHIgIuS4jeiDveivu+WPliBNRVJHRV9NU0ciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjgyCisjOiBidWlsdGluL2NvbW1pdC5jOjY0NAogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgIuS4jeiDveivu+WPliBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY4NgorIzogYnVpbHRpbi9jb21taXQuYzo2NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAi5LiN6IO96K+75Y+WICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzM4CisjOiBidWlsdGluL2NvbW1pdC5jOjcwOQogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBjb21taXQgdGVtcGxhdGUiCiBtc2dzdHIgIuS4jeiDveWGmeaPkOS6pOaooeeJiCIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTM0MzQsNyArMzgwOCw3IEBACiAiXHQlc1xuIgogIueEtuWQjumHjeivleOAglxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc1NAorIzogYnVpbHRpbi9jb21taXQuYzo3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMzQ0OCwzNzUgKzM4MjIsMzc1IEBACiAiXHQlc1xuIgogIueEtuWQjumHjeivleOAglxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc2NgorIzogYnVpbHRpbi9jb21taXQuYzo3MzcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKLSJ3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgorIndpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0cyB0aGUgY29tbWl0LlxuIgogbXNnc3RyICIiCi0i6K+35Li65oKo55qE5Y+Y5pu06L6T5YWl5o+Q5Lqk6K+05piO44CC5LulICcjJyDlvIDlp4vnmoTooYzlsIbooqvlv73nlaXvvIzogIzkuIDkuKrnqbrnmoTmj5DkuqRcbiIKKyLor7fkuLrmgqjnmoTlj5jmm7TovpPlhaXmj5DkuqTor7TmmI7jgILku6UgJyVjJyDlvIDlp4vnmoTooYzlsIbooqvlv73nlaXvvIzogIzkuIDkuKrnqbrnmoTmj5DkuqRcbiIKICLor7TmmI7lsIbkvJrnu4jmraLmj5DkuqTjgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzQyCisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIExpbmVzIHN0YXJ0aW5nXG4iCi0id2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3YW50IHRvLlxuIgorIndpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91IHdhbnQgdG8uXG4iCiAiQW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgotIuivt+S4uuaCqOeahOWPmOabtOi+k+WFpeaPkOS6pOivtOaYjuOAguS7pSAnIycg5byA5aeL55qE6KGM5bCG6KKr5L+d55WZ77yM5oKo5Y+v5Lul5Yig6Zmk5a6D5LusXG4iCi0i5aaC5p6c5oKo5oOz6L+Z5qC35YGa55qE6K+d44CC6ICM5LiA5Liq56m655qE5o+Q5Lqk6K+05piO5bCG5Lya57uI5q2i5o+Q5Lqk44CCXG4iCisi6K+35Li65oKo55qE5Y+Y5pu06L6T5YWl5o+Q5Lqk6K+05piO44CC5LulICclYycg5byA5aeL55qE6KGM5bCG6KKr5L+d55WZ77yM5aaC5p6c5oKo5Y6f5oSPXG4iCisi5Lmf5Y+v5Lul5Yig6Zmk5a6D5Lus44CC5LiA5Liq56m655qE5o+Q5Lqk6K+05piO5bCG5Lya57uI5q2i5o+Q5Lqk44CCXG4iCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogYnVpbHRpbi9jb21taXQuYzo3ODQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiJXPkvZzogIXvvJogICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzkxCisjOiBidWlsdGluL2NvbW1pdC5jOjc2MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0NvbW1pdHRlcjogJXMiCiBtc2dzdHIgIiVz5o+Q5Lqk6ICF77yaICAgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODExCisjOiBidWlsdGluL2NvbW1pdC5jOjc4MgogbXNnaWQgIkNhbm5vdCByZWFkIGluZGV4IgogbXNnc3RyICLml6Dms5Xor7vlj5bntKLlvJUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODQ4CisjOiBidWlsdGluL2NvbW1pdC5jOjgxOQogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICLml6Dms5XliJvlu7rmoJHlr7nosaEiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODYzIGJ1aWx0aW4vdGFnLmM6MzYxCisjOiBidWlsdGluL2NvbW1pdC5jOjgzNCBidWlsdGluL3RhZy5jOjM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBtZXNzYWdlIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24uXG4iCi1tc2dzdHIgIuivt+S9v+eUqCAtbSDmiJbogIUgLUYg6YCJ6aG55o+Q5L6b5o+Q5Lqk6K+05piO44CCXG4iCittc2dzdHIgIuivt+S9v+eUqCAtbSDmiJYgLUYg6YCJ6aG55o+Q5L6b5o+Q5Lqk6K+05piO44CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTYwCisjOiBidWlsdGluL2NvbW1pdC5jOjkzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgogbXNnc3RyICLmsqHmnInmib7liLDljLnphY0gJyVzJyDnmoTkvZzogIUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTc1IGJ1aWx0aW4vY29tbWl0LmM6MTE3NQorIzogYnVpbHRpbi9jb21taXQuYzo5NDYgYnVpbHRpbi9jb21taXQuYzoxMTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdW50cmFja2VkIGZpbGVzIG1vZGUgJyVzJyIKIG1zZ3N0ciAi5peg5pWI55qE5pyq6L+96Liq5paH5Lu25Y+C5pWwICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxNQorIzogYnVpbHRpbi9jb21taXQuYzo5NzYKIG1zZ2lkICJVc2luZyBib3RoIC0tcmVzZXQtYXV0aG9yIGFuZCAtLWF1dGhvciBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICLlkIzml7bkvb/nlKggLS1yZXNldC1hdXRob3Ig5ZKMIC0tYXV0aG9yIOayoeacieaEj+S5iSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDI2CisjOiBidWlsdGluL2NvbW1pdC5jOjk4NwogbXNnaWQgIllvdSBoYXZlIG5vdGhpbmcgdG8gYW1lbmQuIgogbXNnc3RyICLmgqjmsqHmnInlj6/kv67ooaXnmoTmj5DkuqTjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAyOQorIzogYnVpbHRpbi9jb21taXQuYzo5OTAKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICLmgqjmraPlpITkuo7kuIDkuKrlkIjlubbov4fnqIvkuK0gLS0g5peg5rOV5L+u6KGl5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTkyCiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY2hlcnJ5LXBpY2sgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAi5oKo5q2j5aSE5LqO5LiA5Liq5ouj6YCJ6L+H56iL5LitIC0tIOaXoOazleS/ruihpeaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CisjOiBidWlsdGluL2NvbW1pdC5jOjk5NQogbXNnaWQgIk9wdGlvbnMgLS1zcXVhc2ggYW5kIC0tZml4dXAgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgIumAiemhuSAtLXNxdWFzaCDlkowgLS1maXh1cCDkuI3og73lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0NAorIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CiBtc2dpZCAiT25seSBvbmUgb2YgLWMvLUMvLUYvLS1maXh1cCBjYW4gYmUgdXNlZC4iCiBtc2dzdHIgIuWPquiDveeUqOS4gOS4qiAtYy8tQy8tRi8tLWZpeHVwIOmAiemhueOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDQ2CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKIG1zZ2lkICJPcHRpb24gLW0gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggLWMvLUMvLUYvLS1maXh1cC4iCiBtc2dzdHIgIumAiemhuSAtbSDkuI3og73lkowgLWMvLUMvLUYvLS1maXh1cCDlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1NAorIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKIG1zZ3N0ciAiLS1yZXNldC1hdXRob3Ig5Y+q6IO95ZKMIC1D44CBLWMg5oiWIC0tYW1lbmQg5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzMgogbXNnaWQgIk9ubHkgb25lIG9mIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAi5Y+q6IO955So5LiA5LiqIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIOmAiemhueOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDczCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzQKIG1zZ2lkICJObyBwYXRocyB3aXRoIC0taW5jbHVkZS8tLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIuWPguaVsCAtLWluY2x1ZGUvLS1vbmx5IOS4jei3n+i3r+W+hOayoeacieaEj+S5ieOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKIG1zZ2lkICJDbGV2ZXIuLi4gYW1lbmRpbmcgdGhlIGxhc3Qgb25lIHdpdGggZGlydHkgaW5kZXguIgogbXNnc3RyICLogarmmI4uLi4g5Zyo57Si5byV5LiN5bmy5YeA5LiL5L+u6KGl5pyA5ZCO55qE5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAogbXNnaWQgIkV4cGxpY2l0IHBhdGhzIHNwZWNpZmllZCB3aXRob3V0IC1pIG5vciAtbzsgYXNzdW1pbmcgLS1vbmx5IHBhdGhzLi4uIgogbXNnc3RyICLmjIflrprkuobmmI7noa7nmoTot6/lvoTogIzmsqHmnInkvb/nlKggLWkg5oiWIC1vIOmAiemhue+8m+iupOS4uuaYryAtLW9ubHkgcGF0aHMuLi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA4NyBidWlsdGluL3RhZy5jOjU3NworIzogYnVpbHRpbi9jb21taXQuYzoxMDQ4IGJ1aWx0aW4vdGFnLmM6NTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgY2xlYW51cCBtb2RlICVzIgogbXNnc3RyICLml6DmlYjnmoTmuIXnkIbmqKHlvI8gJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTA5MgorIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCiBtc2dpZCAiUGF0aHMgd2l0aCAtYSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAi6Lev5b6E5ZKMIC1hIOmAiemhueWQjOaXtuS9v+eUqOayoeacieaEj+S5ieOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTg5IGJ1aWx0aW4vY29tbWl0LmM6MTQxNworIzogYnVpbHRpbi9jb21taXQuYzoxMDU5IGJ1aWx0aW4vY29tbWl0LmM6MTE5NAorbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiLS1sb25nIOWSjCAteiDpgInpobnkuI3lhbzlrrkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NCBidWlsdGluL2NvbW1pdC5jOjEzOTAKIG1zZ2lkICJzaG93IHN0YXR1cyBjb25jaXNlbHkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Lul566A5rSB55qE5qC85byP5pi+56S654q25oCBIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExOTEgYnVpbHRpbi9jb21taXQuYzoxNDE5CisjOiBidWlsdGluL2NvbW1pdC5jOjExNTYgYnVpbHRpbi9jb21taXQuYzoxMzkyCiBtc2dpZCAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65YiG5pSv5L+h5oGvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExOTMgYnVpbHRpbi9jb21taXQuYzoxNDIxIGJ1aWx0aW4vcHVzaC5jOjM4OQorIzogYnVpbHRpbi9jb21taXQuYzoxMTU4IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL3B1c2guYzo0MjYKIG1zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmnLrlmajlj6/or7vnmoTovpPlh7oiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE5NiBidWlsdGluL2NvbW1pdC5jOjE0MjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKK21zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCittc2dzdHIgIuS7pemVv+agvOW8j+aYvuekuueKtuaAge+8iOm7mOiupO+8iSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQogbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgotbXNnc3RyICIiCittc2dzdHIgIuadoeebruS7pU5VTOWtl+espue7k+WwviIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTk4IGJ1aWx0aW4vY29tbWl0LmM6MTQyNiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM2Ci0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM5IGJ1aWx0aW4vdGFnLmM6NDYxCisjOiBidWlsdGluL2NvbW1pdC5jOjExNjYgYnVpbHRpbi9jb21taXQuYzoxNDAyIGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjIgYnVpbHRpbi90YWcuYzo0NTkKIG1zZ2lkICJtb2RlIgotbXNnc3RyICIiCittc2dzdHIgIuaooeW8jyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTk5IGJ1aWx0aW4vY29tbWl0LmM6MTQyNgorIzogYnVpbHRpbi9jb21taXQuYzoxMTY3IGJ1aWx0aW4vY29tbWl0LmM6MTQwMgogbXNnaWQgInNob3cgdW50cmFja2VkIGZpbGVzLCBvcHRpb25hbCBtb2RlczogYWxsLCBub3JtYWwsIG5vLiAoRGVmYXVsdDogYWxsKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrmnKrot5/ouKrnmoTmlofku7bvvIzigJzmqKHlvI/igJ3nmoTlj6/pgInlj4LmlbDvvJphbGzjgIFub3JtYWzjgIFub+OAgu+8iOm7mOiupO+8mmFsbO+8iSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjAyCisjOiBidWlsdGluL2NvbW1pdC5jOjExNzAKIG1zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65b+955Wl55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyMDMgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMTcxIHBhcnNlLW9wdGlvbnMuaDoxNTEKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICLkvZXml7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwNAorIzogYnVpbHRpbi9jb21taXQuYzoxMTcyCiBtc2dpZCAiIgogImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgogIihEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCisi5b+955Wl5a2Q5qih57uE55qE5pu05pS577yM4oCc5L2V5pe24oCd55qE5Y+v6YCJ5Y+C5pWw77yaYWxs44CBZGlydHnjgIF1bnRyYWNrZWTjgILvvIjpu5jorqTvvJphbGzvvIkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwNgotIywgZnV6enkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAogbXNnaWQgImxpc3QgdW50cmFja2VkIGZpbGVzIGluIGNvbHVtbnMiCi1tc2dzdHIgIuaXoOaViOeahOacqui/vei4quaWh+S7tuWPguaVsCAnJXMnIgorbXNnc3RyICLku6XliJfnmoTmlrnlvI/mmL7npLrmnKrot5/ouKrnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI3NQorIzogYnVpbHRpbi9jb21taXQuYzoxMjQ4CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAi5peg5rOV5om+5Yiw5paw5Yib5bu655qE5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI1MAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q5paw5Yib5bu655qE5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzMTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MQogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgIuWIhuemu+WktOaMh+mSiCIKIAogIyAg6K+R6ICF77ya5Lit5paH5a2X56ym5Liy5ou85o6l77yM5Y+v5Yig6Zmk5YmN5a+856m65qC8Ci0jOiBidWlsdGluL2NvbW1pdC5jOjEzMjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MwogbXNnaWQgIiAocm9vdC1jb21taXQpIgogbXNnc3RyICLvvIjmoLnmj5DkuqTvvIkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NworIzogYnVpbHRpbi9jb21taXQuYzoxMzYwCiBtc2dpZCAic3VwcHJlc3Mgc3VtbWFyeSBhZnRlciBzdWNjZXNzZnVsIGNvbW1pdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmj5DkuqTmiJDlip/lkI7kuI3mmL7npLrmpoLov7Dkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OAorIzogYnVpbHRpbi9jb21taXQuYzoxMzYxCiBtc2dpZCAic2hvdyBkaWZmIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgotbXNnc3RyICIiCittc2dzdHIgIuWcqOaPkOS6pOivtOaYjuaooeadv+mHjOaYvuekuuW3ruW8giIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzkwCi0jLCBmdXp6eQorIzogYnVpbHRpbi9jb21taXQuYzoxMzYzCiBtc2dpZCAiQ29tbWl0IG1lc3NhZ2Ugb3B0aW9ucyIKLW1zZ3N0ciAi5LiN6IO95b6X5YiwICVzIOeahOaPkOS6pOivtOaYjiIKK21zZ3N0ciAi5o+Q5Lqk6K+05piO6YCJ6aG5IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTEgYnVpbHRpbi90YWcuYzo0NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NCBidWlsdGluL3RhZy5jOjQ1NwogbXNnaWQgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LuO5paH5Lu25Lit6K+75Y+W5o+Q5Lqk6K+05piOIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQogbXNnaWQgImF1dGhvciIKLW1zZ3N0ciAiIgorbXNnc3RyICLkvZzogIUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5MgotIywgZnV6enkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQogbXNnaWQgIm92ZXJyaWRlIGF1dGhvciBmb3IgY29tbWl0IgotbXNnc3RyICLlkIjlubbmnKrov5Tlm57mj5DkuqQiCittc2dzdHIgIuaPkOS6pOaXtuimhuebluS9nOiAhSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzkzIGJ1aWx0aW4vZ2MuYzoxNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NiBidWlsdGluL2djLmM6MTc4CiBtc2dpZCAiZGF0ZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLml6XmnJ8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5MwotIywgZnV6enkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NgogbXNnaWQgIm92ZXJyaWRlIGRhdGUgZm9yIGNvbW1pdCIKLW1zZ3N0ciAi5ZCI5bm25pyq6L+U5Zue5o+Q5LqkIgorbXNnc3RyICLmj5DkuqTml7bopobnm5bml6XmnJ8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL21lcmdlLmM6MjA2IGJ1aWx0aW4vbm90ZXMuYzo1MzQKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTEgYnVpbHRpbi90YWcuYzo0NTcKLSMsIGZ1enp5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjcgYnVpbHRpbi9tZXJnZS5jOjIwOCBidWlsdGluL25vdGVzLmM6NTMzCisjOiBidWlsdGluL25vdGVzLmM6NjkwIGJ1aWx0aW4vdGFnLmM6NDU1CiBtc2dpZCAibWVzc2FnZSIKLW1zZ3N0ciAi5pegIHRhZyDor7TmmI7vvJ8iCittc2dzdHIgIuivtOaYjiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk0Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9jb21taXQuYzoxMzY3CiBtc2dpZCAiY29tbWl0IG1lc3NhZ2UiCi1tc2dzdHIgIuepuuaPkOS6pOS/oeaBr+OAgiIKK21zZ3N0ciAi5o+Q5Lqk6K+05piOIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OAogbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgotbXNnc3RyICIiCittc2dzdHIgIumHjeeUqOW5tue8lui+keaMh+WumuaPkOS6pOeahOaPkOS6pOivtOaYjiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzk2CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKIG1zZ2lkICJyZXVzZSBtZXNzYWdlIGZyb20gc3BlY2lmaWVkIGNvbW1pdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLph43nlKjmjIflrprmj5DkuqTnmoTmj5DkuqTor7TmmI4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5NworIzogYnVpbHRpbi9jb21taXQuYzoxMzcwCiBtc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gZml4dXAgc3BlY2lmaWVkIGNvbW1pdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLkvb/nlKggYXV0b3NxdWFzaCDmoLzlvI/nmoTmj5DkuqTor7TmmI7nlKjku6Xkv67mraPmjIflrprnmoTmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM5OAorIzogYnVpbHRpbi9jb21taXQuYzoxMzcxCiBtc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5L2/55SoIGF1dG9zcXVhc2gg5qC85byP55qE5o+Q5Lqk6K+05piO55So5Lul5Y6L57yp6Iez5oyH5a6a55qE5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzOTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MgogbXNnaWQgInRoZSBjb21taXQgaXMgYXV0aG9yZWQgYnkgbWUgbm93ICh1c2VkIHdpdGggLUMvLWMvLS1hbWVuZCkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi546w5Zyo5bCG6K+l5o+Q5Lqk55qE5L2c6ICF5pS55Li65oiR77yI5ZKMIC1DLy1jLy0tYW1lbmQg5Y+C5pWw5YWx55So77yJIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDAgYnVpbHRpbi9sb2cuYzoxMDY4IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CiBtc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgotbXNnc3RyICIiCittc2dzdHIgIua3u+WKoCBTaWduZWQtb2ZmLWJ5OiDnrb7lkI0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQorIzogYnVpbHRpbi9jb21taXQuYzoxMzc0CiBtc2dpZCAidXNlIHNwZWNpZmllZCB0ZW1wbGF0ZSBmaWxlIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOaMh+WumueahOaooeadv+aWh+S7tiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDAyCi0jLCBmdXp6eQorIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CiBtc2dpZCAiZm9yY2UgZWRpdCBvZiBjb21taXQiCi1tc2dzdHIgIuWQiOW5tuacqui/lOWbnuaPkOS6pCIKK21zZ3N0ciAi5by65Yi257yW6L6R5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDMKKyMgIOivkeiAhe+8muWPr+mAieWAvO+8jOS4jeiDvee/u+ivke+8iOaIluaYr+WOn+aWh+S4reeslOivr++8jOW6lOS4uiBtb2Rl77yJCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzYKIG1zZ2lkICJkZWZhdWx0IgotbXNnc3RyICIiCittc2dzdHIgImRlZmF1bHQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMyBidWlsdGluL3RhZy5jOjQ2MgorIzogYnVpbHRpbi9jb21taXQuYzoxMzc2IGJ1aWx0aW4vdGFnLmM6NDYwCiBtc2dpZCAiaG93IHRvIHN0cmlwIHNwYWNlcyBhbmQgI2NvbW1lbnRzIGZyb20gbWVzc2FnZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLorr7nva7lpoLkvZXliKDpmaTmj5DkuqTor7TmmI7ph4znmoTnqbrmoLzlkowj5rOo6YeKIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDQKLSMsIGZ1enp5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzcKIG1zZ2lkICJpbmNsdWRlIHN0YXR1cyBpbiBjb21taXQgbWVzc2FnZSB0ZW1wbGF0ZSIKLW1zZ3N0ciAi5LiN6IO95YaZ5o+Q5Lqk5qih54mIIgorbXNnc3RyICLlnKjmj5DkuqTor7TmmI7mqKHmnb/ph4zljIXlkKvnirbmgIHkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNSBidWlsdGluL21lcmdlLmM6MjEzIGJ1aWx0aW4vdGFnLmM6NDYzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzggYnVpbHRpbi9tZXJnZS5jOjIxNSBidWlsdGluL3RhZy5jOjQ2MQogbXNnaWQgImtleSBpZCIKLW1zZ3N0ciAiIgorbXNnc3RyICJrZXkgaWQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNiBidWlsdGluL21lcmdlLmM6MjE0CisjOiBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi9tZXJnZS5jOjIxNgogbXNnaWQgIkdQRyBzaWduIGNvbW1pdCIKLW1zZ3N0ciAiIgorbXNnc3RyICJHUEcg5o+Q5Lqk562+5ZCNIgogCiAjLiBlbmQgY29tbWl0IG1lc3NhZ2Ugb3B0aW9ucwotIzogYnVpbHRpbi9jb21taXQuYzoxNDA5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODIKIG1zZ2lkICJDb21taXQgY29udGVudHMgb3B0aW9ucyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmj5DkuqTlhoXlrrnpgInpobkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMAorIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCiBtc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgotbXNnc3RyICIiCittc2dzdHIgIuaPkOS6pOaJgOacieaUueWKqOeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDExCisjOiBidWlsdGluL2NvbW1pdC5jOjEzODQKIG1zZ2lkICJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5re75Yqg5oyH5a6a55qE5paH5Lu25Yiw57Si5byV5Yy6562J5b6F5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTIKLSMsIGZ1enp5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODUKIG1zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBmaWxlcyIKLW1zZ3N0ciAi5Lqk5LqS5byP5re75Yqg5aSx6LSlIgorbXNnc3RyICLkuqTkupLlvI/mt7vliqDmlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMwotIywgZnV6enkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NgogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiCi1tc2dzdHIgIuS6pOS6kuW8j+a3u+WKoOWksei0pSIKK21zZ3N0ciAi5Lqk5LqS5byP5re75Yqg5Y+Y5pu0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTQKLSMsIGZ1enp5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODcKIG1zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCi1tc2dzdHIgIuaXoOazlei/mOWOn+S/ruaUueeahOaWh+S7tiIKK21zZ3N0ciAi5Y+q5o+Q5Lqk5oyH5a6a55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OAogbXNnaWQgImJ5cGFzcyBwcmUtY29tbWl0IGhvb2siCi1tc2dzdHIgIiIKK21zZ3N0ciAi57uV6L+HIHByZS1jb21taXQg6ZKp5a2QIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MTYKLSMsIGZ1enp5CisjOiBidWlsdGluL2NvbW1pdC5jOjEzODkKIG1zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgotbXNnc3RyICLopoHmj5DkuqTnmoTlj5jmm7TvvJoiCittc2dzdHIgIuaYvuekuuWwhuimgeaPkOS6pOeahOWGheWuuSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDI0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKIG1zZ2lkICJhbWVuZCBwcmV2aW91cyBjb21taXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5L+u5pS55YWI5YmN55qE5o+Q5LqkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MjUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwMQogbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKLW1zZ3N0ciAiIgorbXNnc3RyICLnu5Xov4cgcG9zdC1yZXdyaXRlIOmSqeWtkCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDMwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDYKIG1zZ2lkICJvayB0byByZWNvcmQgYW4gZW1wdHkgY2hhbmdlIgotbXNnc3RyICIiCittc2dzdHIgIuWFgeiuuOS4gOS4quepuuaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDMzCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKIG1zZ2lkICJvayB0byByZWNvcmQgYSBjaGFuZ2Ugd2l0aCBhbiBlbXB0eSBtZXNzYWdlIgotbXNnc3RyICIiCittc2dzdHIgIuWFgeiuuOepuueahOaPkOS6pOivtOaYjiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDY0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDEKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgSEVBRCBjb21taXQiCiBtc2dzdHIgIuS4jeiDveino+aekCBIRUFEIOaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTAyIGJ1aWx0aW4vbWVyZ2UuYzo1MDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ3OSBidWlsdGluL21lcmdlLmM6NTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcycgZm9yIHJlYWRpbmciCiBtc2dzdHIgIuS4jeiDveS4uuivu+WFpeaJk+W8gCAnJXMnIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3JydXB0IE1FUkdFX0hFQUQgZmlsZSAoJXMpIgogbXNnc3RyICLmjZ/lnY/nmoQgTUVSR0VfSEVBRCDmlofku7bvvIglc++8iSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTE2CisjOiBidWlsdGluL2NvbW1pdC5jOjE0OTMKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFIgogbXNnc3RyICLkuI3og73or7vlj5YgTUVSR0VfTU9ERSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTM1CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgY29tbWl0IG1lc3NhZ2U6ICVzIgogbXNnc3RyICLkuI3og73or7vlj5bmj5DkuqTor7TmmI7vvJolcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTQ5CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0OyB5b3UgZGlkIG5vdCBlZGl0IHRoZSBtZXNzYWdlLlxuIgogbXNnc3RyICLnu4jmraLmj5DkuqTvvJvmgqjmnKrmm7TmlLnmnaXoh6rmqKHniYjnmoTmj5DkuqTor7TmmI7jgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTU0CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIKIG1zZ3N0ciAi57uI5q2i5o+Q5Lqk5Zug5Li65o+Q5Lqk6K+05piO5Li656m644CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU2OSBidWlsdGluL21lcmdlLmM6OTM1IGJ1aWx0aW4vbWVyZ2UuYzo5NjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU0NiBidWlsdGluL21lcmdlLmM6ODQ3IGJ1aWx0aW4vbWVyZ2UuYzo4NzIKIG1zZ2lkICJmYWlsZWQgdG8gd3JpdGUgY29tbWl0IG9iamVjdCIKIG1zZ3N0ciAi5peg5rOV5YaZ5o+Q5Lqk5a+56LGhIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1OTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU2NwogbXNnaWQgImNhbm5vdCBsb2NrIEhFQUQgcmVmIgogbXNnc3RyICLml6Dms5XplIHlrpogSEVBRCDlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU5NAorIzogYnVpbHRpbi9jb21taXQuYzoxNTcxCiBtc2dpZCAiY2Fubm90IHVwZGF0ZSBIRUFEIHJlZiIKIG1zZ3N0ciAi5peg5rOV5pu05pawIEhFQUQg5byV55SoIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE2MDUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU4MgogbXNnaWQgIiIKICJSZXBvc2l0b3J5IGhhcyBiZWVuIHVwZGF0ZWQsIGJ1dCB1bmFibGUgdG8gd3JpdGVcbiIKICJuZXdfaW5kZXggZmlsZS4gQ2hlY2sgdGhhdCBkaXNrIGlzIG5vdCBmdWxsIG9yIHF1b3RhIGlzXG4iCkBAIC0zODI3LDE3NyArNDIwMSwxNzcgQEAKIAogIzogYnVpbHRpbi9jb25maWcuYzo3CiBtc2dpZCAiZ2l0IGNvbmZpZyBbb3B0aW9uc10iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGNvbmZpZyBb6YCJ6aG5XSIKKworIzogYnVpbHRpbi9jb25maWcuYzo1MQorbXNnaWQgIkNvbmZpZyBmaWxlIGxvY2F0aW9uIgorbXNnc3RyICLphY3nva7mlofku7bkvY3nva4iCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NTIKLW1zZ2lkICJDb25maWcgZmlsZSBsb2NhdGlvbiIKLW1zZ3N0ciAiIgorbXNnaWQgInVzZSBnbG9iYWwgY29uZmlnIGZpbGUiCittc2dzdHIgIuS9v+eUqOWFqOWxgOmFjee9ruaWh+S7tiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo1MwotIywgZnV6enkKLW1zZ2lkICJ1c2UgZ2xvYmFsIGNvbmZpZyBmaWxlIgotbXNnc3RyICLml6Dms5Xmm7TmlrAgY29uZmlnIOaWh+S7tiIKK21zZ2lkICJ1c2Ugc3lzdGVtIGNvbmZpZyBmaWxlIgorbXNnc3RyICLkvb/nlKjns7vnu5/nuqfphY3nva7mlofku7YiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NTQKLW1zZ2lkICJ1c2Ugc3lzdGVtIGNvbmZpZyBmaWxlIgotbXNnc3RyICIiCittc2dpZCAidXNlIHJlcG9zaXRvcnkgY29uZmlnIGZpbGUiCittc2dzdHIgIuS9v+eUqOeJiOacrOW6k+e6p+mFjee9ruaWh+S7tiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo1NQotIywgZnV6enkKLW1zZ2lkICJ1c2UgcmVwb3NpdG9yeSBjb25maWcgZmlsZSIKLW1zZ3N0ciAi6ZyA6KaB5LiA5Liq54mI5pys5bqT5p2l6Kej5YyF44CCIgorbXNnaWQgInVzZSBnaXZlbiBjb25maWcgZmlsZSIKK21zZ3N0ciAi5L2/55So5oyH5a6a55qE6YWN572u5paH5Lu2IgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjU2Ci0jLCBmdXp6eQotbXNnaWQgInVzZSBnaXZlbiBjb25maWcgZmlsZSIKLW1zZ3N0ciAi5pyq6aKE5pyf55qE5paH5Lu257uT5p2fIgorbXNnaWQgIkFjdGlvbiIKK21zZ3N0ciAi5pON5L2cIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjU3Ci0jLCBmdXp6eQotbXNnaWQgIkFjdGlvbiIKLW1zZ3N0ciAi5Yqo5L2cIgorbXNnaWQgImdldCB2YWx1ZTogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICLojrflj5blgLzvvJpuYW1lIFt2YWx1ZS1yZWdleF0iCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NTgKLW1zZ2lkICJnZXQgdmFsdWU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKLW1zZ3N0ciAiIgorbXNnaWQgImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAi6I635b6X5omA5pyJ55qE5YC877yaa2V5IFt2YWx1ZS1yZWdleF0iCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NTkKLW1zZ2lkICJnZXQgYWxsIHZhbHVlczoga2V5IFt2YWx1ZS1yZWdleF0iCi1tc2dzdHIgIiIKK21zZ2lkICJnZXQgdmFsdWVzIGZvciByZWdleHA6IG5hbWUtcmVnZXggW3ZhbHVlLXJlZ2V4XSIKK21zZ3N0ciAi5qC55o2u5q2j5YiZ6KGo6L6+5byP6I635b6X5YC877yabmFtZS1yZWdleCBbdmFsdWUtcmVnZXhdIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjYwCi1tc2dpZCAiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCi1tc2dzdHIgIiIKK21zZ2lkICJyZXBsYWNlIGFsbCBtYXRjaGluZyB2YXJpYWJsZXM6IG5hbWUgdmFsdWUgW3ZhbHVlX3JlZ2V4XSIKK21zZ3N0ciAi5pu/5o2i5omA5pyJ5Yy56YWN55qE5Y+Y6YeP77yabmFtZSB2YWx1ZSBbdmFsdWVfcmVnZXhdIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjYxCi1tc2dpZCAicmVwbGFjZSBhbGwgbWF0Y2hpbmcgdmFyaWFibGVzOiBuYW1lIHZhbHVlIFt2YWx1ZV9yZWdleF0iCi1tc2dzdHIgIiIKK21zZ2lkICJhZGQgYSBuZXcgdmFyaWFibGU6IG5hbWUgdmFsdWUiCittc2dzdHIgIua3u+WKoOS4gOS4quaWsOeahOWPmOmHj++8mm5hbWUgdmFsdWUiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjIKLW1zZ2lkICJhZGQgYSBuZXcgdmFyaWFibGU6IG5hbWUgdmFsdWUiCi1tc2dzdHIgIiIKK21zZ2lkICJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnc3RyICLliKDpmaTkuIDkuKrlj5jph4/vvJpuYW1lIFt2YWx1ZS1yZWdleF0iCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKLW1zZ2lkICJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIgotbXNnc3RyICIiCittc2dpZCAicmVtb3ZlIGFsbCBtYXRjaGVzOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dzdHIgIuWIoOmZpOaJgOacieWMuemFjemhue+8mm5hbWUgW3ZhbHVlLXJlZ2V4XSIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2NAotbXNnaWQgInJlbW92ZSBhbGwgbWF0Y2hlczogbmFtZSBbdmFsdWUtcmVnZXhdIgotbXNnc3RyICIiCittc2dpZCAicmVuYW1lIHNlY3Rpb246IG9sZC1uYW1lIG5ldy1uYW1lIgorbXNnc3RyICLph43lkb3lkI3lsI/oioLvvJpvbGQtbmFtZSBuZXctbmFtZSIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2NQotbXNnaWQgInJlbmFtZSBzZWN0aW9uOiBvbGQtbmFtZSBuZXctbmFtZSIKLW1zZ3N0ciAiIgorbXNnaWQgInJlbW92ZSBhIHNlY3Rpb246IG5hbWUiCittc2dzdHIgIuWIoOmZpOS4gOS4quWwj+iKgu+8mm5hbWUiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjYKLW1zZ2lkICJyZW1vdmUgYSBzZWN0aW9uOiBuYW1lIgotbXNnc3RyICIiCittc2dpZCAibGlzdCBhbGwiCittc2dzdHIgIuWIl+WHuuaJgOaciSIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2NwotbXNnaWQgImxpc3QgYWxsIgotbXNnc3RyICIiCittc2dpZCAib3BlbiBhbiBlZGl0b3IiCittc2dzdHIgIuaJk+W8gOS4gOS4que8lui+keWZqCIKKworIzogYnVpbHRpbi9jb25maWcuYzo2OCBidWlsdGluL2NvbmZpZy5jOjY5Cittc2dpZCAic2xvdCIKK21zZ3N0ciAic2xvdCIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2OAotbXNnaWQgIm9wZW4gYW4gZWRpdG9yIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjkgYnVpbHRpbi9jb25maWcuYzo3MAotbXNnaWQgInNsb3QiCi1tc2dzdHIgIiIKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iCittc2dzdHIgIuaJvuWIsOmFjee9rueahOminOiJsu+8mlvpu5jorqRdIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjY5Ci1tc2dpZCAiZmluZCB0aGUgY29sb3IgY29uZmlndXJlZDogW2RlZmF1bHRdIgotbXNnc3RyICIiCittc2dpZCAiZmluZCB0aGUgY29sb3Igc2V0dGluZzogW3N0ZG91dC1pcy10dHldIgorbXNnc3RyICLmib7liLDpopzoibLorr7nva7vvJpbc3Rkb3V0LWlzLXR0eV0iCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NzAKLW1zZ2lkICJmaW5kIHRoZSBjb2xvciBzZXR0aW5nOiBbc3Rkb3V0LWlzLXR0eV0iCi1tc2dzdHIgIiIKK21zZ2lkICJUeXBlIgorbXNnc3RyICLnsbvlnosiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NzEKLW1zZ2lkICJUeXBlIgotbXNnc3RyICIiCittc2dpZCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIgorbXNnc3RyICLlgLzmmK8gXCJ0cnVlXCIg5oiWIFwiZmFsc2VcIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3MgotbXNnaWQgInZhbHVlIGlzIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiIKLW1zZ3N0ciAiIgorbXNnaWQgInZhbHVlIGlzIGRlY2ltYWwgbnVtYmVyIgorbXNnc3RyICLlgLzmmK/ljYHov5vliLbmlbAiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NzMKLW1zZ2lkICJ2YWx1ZSBpcyBkZWNpbWFsIG51bWJlciIKLW1zZ3N0ciAiIgorbXNnaWQgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIKK21zZ3N0ciAi5YC85pivIC0tYm9vbCBvciAtLWludCIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3NAotbXNnaWQgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIKLW1zZ3N0ciAiIgorbXNnaWQgInZhbHVlIGlzIGEgcGF0aCAoZmlsZSBvciBkaXJlY3RvcnkgbmFtZSkiCittc2dzdHIgIuWAvOaYr+S4gOS4qui3r+W+hO+8iOaWh+S7tuaIluebruW9leWQje+8iSIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3NQotbXNnaWQgInZhbHVlIGlzIGEgcGF0aCAoZmlsZSBvciBkaXJlY3RvcnkgbmFtZSkiCi1tc2dzdHIgIiIKK21zZ2lkICJPdGhlciIKK21zZ3N0ciAi5YW25a6DIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjc2Ci1tc2dpZCAiT3RoZXIiCi1tc2dzdHIgIiIKK21zZ2lkICJ0ZXJtaW5hdGUgdmFsdWVzIHdpdGggTlVMIGJ5dGUiCittc2dzdHIgIue7iOatouWAvOaYr05VTOWtl+iKgiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3NwotbXNnaWQgInRlcm1pbmF0ZSB2YWx1ZXMgd2l0aCBOVUwgYnl0ZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NvbmZpZy5jOjc4CiBtc2dpZCAicmVzcGVjdCBpbmNsdWRlIGRpcmVjdGl2ZXMgb24gbG9va3VwIgotbXNnc3RyICIiCittc2dzdHIgIuafpeivouaXtuWPgueFpyBpbmNsdWRlIOaMh+S7pOmAkuW9kuafpeaJviIKIAotIzogYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6NjkKLW1zZ2lkICJnaXQgY291bnQtb2JqZWN0cyBbLXZdIgotbXNnc3RyICIiCisjOiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo4MgorbXNnaWQgImdpdCBjb3VudC1vYmplY3RzIFstdl0gWy1IIHwgLS1odW1hbi1yZWFkYWJsZV0iCittc2dzdHIgImdpdCBjb3VudC1vYmplY3RzIFstdl0gWy1IIHwgLS1odW1hbi1yZWFkYWJsZV0iCisKKyM6IGJ1aWx0aW4vY291bnQtb2JqZWN0cy5jOjk3Cittc2dpZCAicHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IgorbXNnc3RyICLku6XnlKjmiLflj6/or7vnmoTmoLzlvI/mmL7npLrlpKflsI8iCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoxNQogbXNnaWQgImdpdCBkZXNjcmliZSBbb3B0aW9uc10gPGNvbW1pdHRpc2g+KiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgZGVzY3JpYmUgW+mAiemhuV0gPOaPkOS6pOWPtz4qIgogCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTYKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGRlc2NyaWJlIFvpgInpobldIC0tZGlydHkiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBub3QgYXZhaWxhYmxlIgogbXNnc3RyICLms6jph4ogdGFnICVzIOaXoOaViCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIGhhcyBubyBlbWJlZGRlZCBuYW1lIgogbXNnc3RyICLms6jph4ogdGFnICVzIOayoeacieW1jOWFpeWQjeensCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI0MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBpcyByZWFsbHkgJyVzJyBoZXJlIgogbXNnc3RyICJ0YWcgJyVzJyDnmoTnoa7mmK/lnKggJyVzJyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZSAlcyIKIG1zZ3N0ciAi5LiN5piv5LiA5Liq5pyJ5pWI55qE5a+56LGh5ZCNICVzIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIG5vdCBhIHZhbGlkICclcycgb2JqZWN0IgogbXNnc3RyICIlcyDkuI3mmK/kuIDkuKrmnInmlYjnmoQgJyVzJyDlr7nosaEiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnJXMnIgogbXNnc3RyICLmsqHmnIkgdGFnIOWHhuehruWMuemFjSAnJXMnIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgInNlYXJjaGluZyB0byBkZXNjcmliZSAlc1xuIgogbXNnc3RyICLmkJzntKLmj4/ov7AgJXNcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjMyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzZWFyY2ggYXQgJXNcbiIKIG1zZ3N0ciAi5a6M5oiQ5pCc57SiICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGFubm90YXRlZCB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgpAQCAtNDAwNiw3ICs0MzgwLDcgQEAKICLmsqHmnInms6jph4ogdGFnIOiDveaPj+i/sCAnJXMn44CCXG4iCiAi54S26ICM77yM5pyJ6Z2e5rOo6YeKIHRhZ++8muWwneivlSAtLXRhZ3PjgIIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCkBAIC00MDE1LDEyICs0Mzg5LDEyIEBACiAi5rKh5pyJ5rOo6YeKIHRhZyDog73mj4/ov7AgJyVzJ+OAglxuIgogIuWwneivlSAtLWFsd2F5c++8jOaIluiAheWIm+W7uuS4gOS6myB0YWfjgIIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJhdmVyc2VkICVsdSBjb21taXRzXG4iCiBtc2dzdHIgIuW3sumBjeWOhiAlbHUg5Liq5o+Q5LqkXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIm1vcmUgdGhhbiAlaSB0YWdzIGZvdW5kOyBsaXN0ZWQgJWkgbW9zdCByZWNlbnRcbiIKQEAgLTQwMjksNjEgKzQ0MDMsNTkgQEAKICLlj5HnjrDlpJrkuo4gJWkg5LiqIHRhZ++8jOWIl+WHuuacgOi/keeahCAlaSDkuKpcbiIKICLlnKggJXMg5pS+5byD5pCc57SiXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDIKIG1zZ2lkICJmaW5kIHRoZSB0YWcgdGhhdCBjb21lcyBhZnRlciB0aGUgY29tbWl0IgotbXNnc3RyICIiCittc2dzdHIgIuWvu+aJvuaPkOS6pOS5i+WQjueahCB0YWfvvIjnlKjkuo7mj4/ov7Dmj5DkuqTvvIkiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDMKK21zZ2lkICJkZWJ1ZyBzZWFyY2ggc3RyYXRlZ3kgb24gc3RkZXJyIgorbXNnc3RyICLlnKjmoIflh4bplJnor6/kuIrosIPor5XmkJzntKLnrZbnlaUiCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKLW1zZ2lkICJkZWJ1ZyBzZWFyY2ggc3RyYXRlZ3kgb24gc3RkZXJyIgotbXNnc3RyICIiCittc2dpZCAidXNlIGFueSByZWYiCittc2dzdHIgIuS9v+eUqOS7u+aEj+W8leeUqCIKIAogIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNQotbXNnaWQgInVzZSBhbnkgcmVmIGluIC5naXQvcmVmcyIKLW1zZ3N0ciAiIgorbXNnaWQgInVzZSBhbnkgdGFnLCBldmVuIHVuYW5ub3RhdGVkIgorbXNnc3RyICLkvb/nlKjku7vmhI8gdGFn77yM5Y2z5L2/5pyq5bim5rOo6KejIgogCiAjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA2Ci1tc2dpZCAidXNlIGFueSB0YWcgaW4gLmdpdC9yZWZzL3RhZ3MiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNwogbXNnaWQgImFsd2F5cyB1c2UgbG9uZyBmb3JtYXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5aeL57uI5L2/55So6ZW/5o+Q5Lqk5Y+35qC85byPIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEwCi0jLCBmdXp6eQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwOQogbXNnaWQgIm9ubHkgb3V0cHV0IGV4YWN0IG1hdGNoZXMiCi1tc2dzdHIgIuayoeaciSB0YWcg5YeG56Gu5Yy56YWNICclcyciCittc2dzdHIgIuWPqui+k+WHuueyvuehruWMuemFjSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMQogbXNnaWQgImNvbnNpZGVyIDxuPiBtb3N0IHJlY2VudCB0YWdzIChkZWZhdWx0OiAxMCkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6ICD6JmR5pyA6L+RIDxuPiDkuKogdGFnc++8iOm7mOiupO+8mjEw77yJIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE0Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMwogbXNnaWQgIm9ubHkgY29uc2lkZXIgdGFncyBtYXRjaGluZyA8cGF0dGVybj4iCi1tc2dzdHIgIui+k+WHuuWSjOaooeW8j+WMuemFjeeahOihjCIKK21zZ3N0ciAi5Y+q6ICD6JmR5Yy56YWNIDzmqKHlvI8+IOeahCB0YWdzIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTUgYnVpbHRpbi9uYW1lLXJldi5jOjIzOAogbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrnroDlhpnnmoTmj5DkuqTlj7fkvZzkuLrlkI7lpIciCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTYKK21zZ2lkICJtYXJrIgorbXNnc3RyICLmoIforrAiCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTcKLW1zZ2lkICJtYXJrIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTgKIG1zZ2lkICJhcHBlbmQgPG1hcms+IG9uIGRpcnR5IHdvcmtpbmcgdHJlZSAoZGVmYXVsdDogXCItZGlydHlcIikiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6Iul5bel5L2c5Yy66ISP77yI5pyJ5Y+Y5pu077yJ5Zyo57uT5bC+5re75YqgIDzmoIforrA+77yI6buY6K6k77yaXCItZGlydHlcIu+8iSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQzNQogbXNnaWQgIi0tbG9uZyBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLWFiYnJldj0wIgogbXNnc3RyICItLWxvbmcg5LiOIC0tYWJicmV2PTAg5LiN5YW85a65IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYxCiBtc2dpZCAiTm8gbmFtZXMgZm91bmQsIGNhbm5vdCBkZXNjcmliZSBhbnl0aGluZy4iCiBtc2dzdHIgIuayoeacieWPkeeOsOWQjeensO+8jOaXoOazleaPj+i/sOS7u+S9leS4nOilv+OAgiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MQogbXNnaWQgIi0tZGlydHkgaXMgaW5jb21wYXRpYmxlIHdpdGggY29tbWl0dGlzaGVzIgogbXNnc3RyICItLWRpcnR5IOS4jeiDveS4juaPkOS6pOWQjOaXtuS9v+eUqCIKIApAQCAtNDA5MiwyMzIgKzQ0NjQsMjMxIEBACiBtc2dpZCAiJyVzJzogbm90IGEgcmVndWxhciBmaWxlIG9yIHN5bWxpbmsiCiBtc2dzdHIgIiclcyfvvJrkuI3mmK/kuIDkuKrmraPop4Tmlofku7bmiJbnrKblj7fpk77mjqUiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjIyNAorIzogYnVpbHRpbi9kaWZmLmM6MjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3B0aW9uOiAlcyIKIG1zZ3N0ciAi5peg5pWI6YCJ6aG577yaJXMiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjMwMQorIzogYnVpbHRpbi9kaWZmLmM6MzA1CiBtc2dpZCAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiCiBtc2dzdHIgIuS4jeaYr+S4gOS4qiBnaXQg54mI5pys5bqTIgogCi0jOiBidWlsdGluL2RpZmYuYzozNDQKKyM6IGJ1aWx0aW4vZGlmZi5jOjM0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5L6b5LqG5peg5pWI5a+56LGhICclcyfjgIIiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM0OQorIzogYnVpbHRpbi9kaWZmLmM6MzUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiAlZCB0cmVlcyBnaXZlbjogJyVzJyIKIG1zZ3N0ciAi5o+Q5L6b5LqG6LaF6L+HICVkIOS4quagkeWvueixoe+8miclcyciCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM1OQorIzogYnVpbHRpbi9kaWZmLmM6MzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiB0d28gYmxvYnMgZ2l2ZW46ICclcyciCi1tc2dzdHIgIuaPkOS+m+S6hui2hei/h+S4pOS4quS6jOi/m+WItuWvueixoe+8iGJsb2LvvInvvJonJXMnIgorbXNnc3RyICLmj5DkvpvkuobotoXov4fkuKTkuKrmlbDmja7vvIhibG9i77yJ5a+56LGh77yaJyVzJyIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzY3CisjOiBidWlsdGluL2RpZmYuYzozNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5L6b5LqG5peg5rOV5aSE55CG55qE5a+56LGhICclcyfjgIIiCiAKICM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzoyMgogbXNnaWQgImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjYzNQotIywgZnV6enkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTgKIG1zZ2lkICJzaG93IHByb2dyZXNzIGFmdGVyIDxuPiBvYmplY3RzIgotbXNnc3RyICLmmL7npLrlkITnp43nsbvlnovnmoTlr7nosaEiCittc2dzdHIgIuWcqCA8bj4g5Liq5a+56LGh5LmL5ZCO5pi+56S66L+b5bqmIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjM3CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgotbXNnc3RyICIiCittc2dzdHIgIumAieaLqeWmguS9leWkhOeQhuetvuWQjSB0YWdzIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjQwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYzCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHRhZ3MgdGhhdCB0YWcgZmlsdGVyZWQgb2JqZWN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLpgInmi6nlvZMgdGFnIOaMh+WQkeiiq+i/h+a7pOaXtiB0YWdzIOeahOWkhOeQhuaWueW8jyIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0MworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgogbXNnaWQgIkR1bXAgbWFya3MgdG8gdGhpcyBmaWxlIgotbXNnc3RyICIiCittc2dzdHIgIuaKiuagh+iusOWtmOWCqOWIsOi/meS4quaWh+S7tiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY0NQorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2OAogbXNnaWQgIkltcG9ydCBtYXJrcyBmcm9tIHRoaXMgZmlsZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLku47ov5nkuKrmlofku7blr7zlhaXmoIforrAiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDcKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzAKIG1zZ2lkICJGYWtlIGEgdGFnZ2VyIHdoZW4gdGFncyBsYWNrIG9uZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvZMgdGFncyDnvLrlsJHmoIforrDogIXlrZfmrrXml7bvvIzlgYfoo4Xmj5DkvpvkuIDkuKoiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NDkKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKIG1zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmr4/mrKHmj5DkuqTpg73ovpPlh7rmlbTkuKrmoJEiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTEKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzQKIG1zZ2lkICJVc2UgdGhlIGRvbmUgZmVhdHVyZSB0byB0ZXJtaW5hdGUgdGhlIHN0cmVhbSIKLW1zZ3N0ciAiIgorbXNnc3RyICLkvb/nlKggZG9uZSDlip/og73mnaXnu4jmraLmtYEiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTIKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzUKIG1zZ2lkICJTa2lwIG91dHB1dCBvZiBibG9iIGRhdGEiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6Lez6L+H5pWw5o2u5a+56LGh55qE6L6T5Ye6IgogCiAjOiBidWlsdGluL2ZldGNoLmM6MjAKLSMsIGZ1enp5CiBtc2dpZCAiZ2l0IGZldGNoIFs8b3B0aW9ucz5dIFs8cmVwb3NpdG9yeT4gWzxyZWZzcGVjPi4uLl1dIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IGZldGNoIFs86YCJ6aG5Pl0gWzzniYjmnKzlupM+IFs85byV55So6KGo6L6+5byPPi4uLl1dIgogCiAjOiBidWlsdGluL2ZldGNoLmM6MjEKIG1zZ2lkICJnaXQgZmV0Y2ggWzxvcHRpb25zPl0gPGdyb3VwPiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgZmV0Y2ggWzzpgInpobk+XSA857uEPiIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjIyCiBtc2dpZCAiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzxvcHRpb25zPl0gWyg8cmVwb3NpdG9yeT4gfCA8Z3JvdXA+KS4uLl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGZldGNoIC0tbXVsdGlwbGUgWzzpgInpobk+XSBbKDzniYjmnKzlupM+IHwgPOe7hD4pLi4uXSIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjIzCiBtc2dpZCAiZ2l0IGZldGNoIC0tYWxsIFs8b3B0aW9ucz5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBmZXRjaCAtLWFsbCBbPOmAiemhuT5dIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NjAKIG1zZ2lkICJmZXRjaCBmcm9tIGFsbCByZW1vdGVzIgotbXNnc3RyICIiCittc2dzdHIgIuS7juaJgOacieeahOi/nOeoi+aKk+WPliIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjYyCiBtc2dpZCAiYXBwZW5kIHRvIC5naXQvRkVUQ0hfSEVBRCBpbnN0ZWFkIG9mIG92ZXJ3cml0aW5nIgotbXNnc3RyICIiCittc2dzdHIgIui/veWKoOWIsCAuZ2l0L0ZFVENIX0hFQUQg6ICM5LiN5piv6KaG55uW5a6DIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NjQKIG1zZ2lkICJwYXRoIHRvIHVwbG9hZCBwYWNrIG9uIHJlbW90ZSBlbmQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiK5Lyg5YyF5Yiw6L+c56iL55qE6Lev5b6EIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NjUKIG1zZ2lkICJmb3JjZSBvdmVyd3JpdGUgb2YgbG9jYWwgYnJhbmNoIgotbXNnc3RyICIiCittc2dzdHIgIuW8uuWItuimhuebluacrOWcsOWIhuaUryIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjY3CiBtc2dpZCAiZmV0Y2ggZnJvbSBtdWx0aXBsZSByZW1vdGVzIgotbXNnc3RyICIiCittc2dzdHIgIuS7juWkmuS4qui/nOeoi+aKk+WPliIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjY5Ci0jLCBmdXp6eQogbXNnaWQgImZldGNoIGFsbCB0YWdzIGFuZCBhc3NvY2lhdGVkIG9iamVjdHMiCi1tc2dzdHIgIuabtOaWsOi/nOeoi+W8leeUqOWSjOebuOWFs+eahOWvueixoSIKK21zZ3N0ciAi5oqT5Y+W5omA5pyJ55qEIHRhZ3Mg5ZKM5YWz6IGU5a+56LGhIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NzEKIG1zZ2lkICJkbyBub3QgZmV0Y2ggYWxsIHRhZ3MgKC0tbm8tdGFncykiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5oqT5Y+W5Lu75L2VIHRhZ3MgKC0tbm8tdGFncykiCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo3MwotIywgZnV6enkKIG1zZ2lkICJwcnVuZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgbm8gbG9uZ2VyIG9uIHJlbW90ZSIKLW1zZ3N0ciAiJXMg5rKh5pyJ5p2l6IeqICVzIOeahOi/nOeoi+i3n+i4quWIhuaUryIKK21zZ3N0ciAi5riF6Zmk6L+c56iL5bey57uP5LiN5a2Y5Zyo55qE5YiG5pSv55qE6Lef6Liq5YiG5pSvIgogCisjICDor5HogIXvvJrlj6/pgInlgLzvvIzkuI3og73nv7vor5EKICM6IGJ1aWx0aW4vZmV0Y2guYzo3NAogbXNnaWQgIm9uLWRlbWFuZCIKLW1zZ3N0ciAiIgorbXNnc3RyICJvbi1kZW1hbmQiCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo3NQogbXNnaWQgImNvbnRyb2wgcmVjdXJzaXZlIGZldGNoaW5nIG9mIHN1Ym1vZHVsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5o6n5Yi25a2Q5qih57uE55qE6YCS5b2S5oqT5Y+WIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NzkKIG1zZ2lkICJrZWVwIGRvd25sb2FkZWQgcGFjayIKLW1zZ3N0ciAiIgorbXNnc3RyICLkv53mjIHkuIvovb3ljIUiCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo4MQotIywgZnV6enkKIG1zZ2lkICJhbGxvdyB1cGRhdGluZyBvZiBIRUFEIHJlZiIKLW1zZ3N0ciAi5peg5rOV5pu05pawIEhFQUQg5byV55SoIgorbXNnc3RyICLlhYHorrjmm7TmlrAgSEVBRCDlvJXnlKgiCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo4NAogbXNnaWQgImRlZXBlbiBoaXN0b3J5IG9mIHNoYWxsb3cgY2xvbmUiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9mZXRjaC5jOjg1IGJ1aWx0aW4vbG9nLmM6MTA4MwotbXNnaWQgImRpciIKLW1zZ3N0ciAiIgorbXNnc3RyICLmt7HljJbmtYXlhYvpmobnmoTljoblj7IiCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo4NgotIywgZnV6enkKLW1zZ2lkICJwcmVwZW5kIHRoaXMgdG8gc3VibW9kdWxlIHBhdGggb3V0cHV0IgotbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyIKK21zZ2lkICJjb252ZXJ0IHRvIGEgY29tcGxldGUgcmVwb3NpdG9yeSIKK21zZ3N0ciAi6L2s5o2i5Li65LiA5Liq5a6M5pW055qE54mI5pys5bqTIgorCisjOiBidWlsdGluL2ZldGNoLmM6ODggYnVpbHRpbi9sb2cuYzoxMTMwCittc2dpZCAiZGlyIgorbXNnc3RyICLnm67lvZUiCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo4OQotbXNnaWQgImRlZmF1bHQgbW9kZSBmb3IgcmVjdXJzaW9uIgotbXNnc3RyICIiCittc2dpZCAicHJlcGVuZCB0aGlzIHRvIHN1Ym1vZHVsZSBwYXRoIG91dHB1dCIKK21zZ3N0ciAi5Zyo5a2Q5qih57uE6Lev5b6E6L6T5Ye655qE5YmN6Z2i5Yqg5LiK5q2k55uu5b2VIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjAxCisjOiBidWlsdGluL2ZldGNoLmM6OTIKK21zZ2lkICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIKK21zZ3N0ciAi6YCS5b2S55qE6buY6K6k5qih5byPIgorCisjOiBidWlsdGluL2ZldGNoLmM6MjA0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCByZW1vdGUgcmVmIEhFQUQiCiBtc2dzdHIgIuaXoOazleWPkeeOsOi/nOeoiyBIRUFEIOW8leeUqCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1NAorIzogYnVpbHRpbi9mZXRjaC5jOjI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgJXMgbm90IGZvdW5kIgogbXNnc3RyICLlr7nosaEgJXMg5pyq5Y+R546wIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjYwCisjOiBidWlsdGluL2ZldGNoLmM6MjYyCiBtc2dpZCAiW3VwIHRvIGRhdGVdIgogbXNnc3RyICJb5pyA5pawXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3NAorIzogYnVpbHRpbi9mZXRjaC5jOjI3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIhICUtKnMgJS0qcyAtPiAlcyAgKGNhbid0IGZldGNoIGluIGN1cnJlbnQgYnJhbmNoKSIKIG1zZ3N0ciAiISAlLSpzICUtKnMgLT4gJXMgIO+8iOWcqOW9k+WJjeWIhuaUr+S4i+S4jeiDveiOt+WPlu+8iSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3NSBidWlsdGluL2ZldGNoLmM6MzYxCisjOiBidWlsdGluL2ZldGNoLmM6Mjc3IGJ1aWx0aW4vZmV0Y2guYzozNjMKIG1zZ2lkICJbcmVqZWN0ZWRdIgogbXNnc3RyICJb5bey5ouS57udXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4NgorIzogYnVpbHRpbi9mZXRjaC5jOjI4OAogbXNnaWQgIlt0YWcgdXBkYXRlXSIKIG1zZ3N0ciAiW3RhZ+abtOaWsF0iCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9mZXRjaC5jOjI4OCBidWlsdGluL2ZldGNoLmM6MzIzIGJ1aWx0aW4vZmV0Y2guYzozNDEKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCiBtc2dpZCAiICAodW5hYmxlIHRvIHVwZGF0ZSBsb2NhbCByZWYpIgogbXNnc3RyICIgIO+8iOS4jeiDveabtOaWsOacrOWcsOW8leeUqO+8iSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwNgorIzogYnVpbHRpbi9mZXRjaC5jOjMwOAogbXNnaWQgIltuZXcgdGFnXSIKIG1zZ3N0ciAiW+aWsHRhZ10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDkKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKIG1zZ2lkICJbbmV3IGJyYW5jaF0iCiBtc2dzdHIgIlvmlrDliIbmlK9dIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzEyCisjOiBidWlsdGluL2ZldGNoLmM6MzE0CiBtc2dpZCAiW25ldyByZWZdIgogbXNnc3RyICJb5paw5byV55SoXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1NworIzogYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICLkuI3og73mm7TmlrDmnKzlnLDlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICJmb3JjZWQgdXBkYXRlIgogbXNnc3RyICLlvLrliLbmm7TmlrAiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNjMKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNjUKIG1zZ2lkICIobm9uLWZhc3QtZm9yd2FyZCkiCiBtc2dzdHIgIu+8iOmdnuW/q+i/m+W8j++8iSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM5NCBidWlsdGluL2ZldGNoLmM6Njg2CisjOiBidWlsdGluL2ZldGNoLmM6Mzk2IGJ1aWx0aW4vZmV0Y2guYzo2ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzXG4iCiBtc2dzdHIgIuaXoOazleaJk+W8gCAlc++8miVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0MDMKKyM6IGJ1aWx0aW4vZmV0Y2guYzo0MDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0c1xuIgogbXNnc3RyICIlcyDmnKrlj5HpgIHmiYDmnInlv4XpobvnmoTlr7nosaFcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQ4OQorIzogYnVpbHRpbi9mZXRjaC5jOjQ5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJGcm9tICUuKnNcbiIKIG1zZ3N0ciAi5p2l6IeqICUuKnNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjUwMAorIzogYnVpbHRpbi9mZXRjaC5jOjUwMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAic29tZSBsb2NhbCByZWZzIGNvdWxkIG5vdCBiZSB1cGRhdGVkOyB0cnkgcnVubmluZ1xuIgpAQCAtNDMyNywyMDMgKzQ2OTgsMjA4IEBACiAiICdnaXQgcmVtb3RlIHBydW5lICVzJyDmnaXliKDpmaTml6fnmoTjgIHmnInlhrLnqoHnmoTliIbmlK8iCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9mZXRjaC5jOjU1MAorIzogYnVpbHRpbi9mZXRjaC5jOjU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmcpIgotbXNnc3RyICIgICDvvIglcyDlsIbmiJDkuLrmgqznqbrnirbmgIHvvIkiCittc2dzdHIgIiAgIO+8iCVzIOWwhuaIkOS4uuaRh+aRhueKtuaAge+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiBidWlsdGluL2ZldGNoLmM6NTUxCisjOiBidWlsdGluL2ZldGNoLmM6NTUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKLW1zZ3N0ciAiICAg77yIJXMg5bey5oiQ5Li65oKs56m654q25oCB77yJIgorbXNnc3RyICIgICDvvIglcyDlt7LmiJDkuLrmkYfmkYbnirbmgIHvvIkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1NjAKIG1zZ2lkICJbZGVsZXRlZF0iCiBtc2dzdHIgIlvlt7LliKDpmaRdIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTU5IGJ1aWx0aW4vcmVtb3RlLmM6MTA1NQorIzogYnVpbHRpbi9mZXRjaC5jOjU2MSBidWlsdGluL3JlbW90ZS5jOjEwNTUKIG1zZ2lkICIobm9uZSkiCiBtc2dzdHIgIu+8iOaXoO+8iSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjY3NgorIzogYnVpbHRpbi9mZXRjaC5jOjY3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byBmZXRjaCBpbnRvIGN1cnJlbnQgYnJhbmNoICVzIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIuaLkue7neiOt+WPluWIsOmdnuijuOeJiOacrOW6k+eahOW9k+WJjeWIhuaUryAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjcxMAorIzogYnVpbHRpbi9mZXRjaC5jOjcxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCBrbm93IGhvdyB0byBmZXRjaCBmcm9tICVzIgogbXNnc3RyICLkuI3nn6XpgZPlpoLkvZXku44gJXMg6I635Y+WIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg3CisjOiBidWlsdGluL2ZldGNoLmM6Nzg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIumAiemhuSBcIiVzXCIg55qE5YC8IFwiJXNcIiDlr7nkuo4gJXMg5piv5peg5pWI55qEIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NzkwCisjOiBidWlsdGluL2ZldGNoLmM6NzkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgaXMgaWdub3JlZCBmb3IgJXNcbiIKIG1zZ3N0ciAi6YCJ6aG5IFwiJXNcIiDkuLogJXMg5omA5b+955WlXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXNcbiIKIG1zZ3N0ciAi5q2j5Zyo6I635Y+WICVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTQgYnVpbHRpbi9yZW1vdGUuYzoxMDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo4OTYgYnVpbHRpbi9yZW1vdGUuYzoxMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZldGNoICVzIgogbXNnc3RyICLkuI3og73ojrflj5YgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MTMKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MTUKIG1zZ2lkICIiCiAiTm8gcmVtb3RlIHJlcG9zaXRvcnkgc3BlY2lmaWVkLiAgUGxlYXNlLCBzcGVjaWZ5IGVpdGhlciBhIFVSTCBvciBhXG4iCiAicmVtb3RlIG5hbWUgZnJvbSB3aGljaCBuZXcgcmV2aXNpb25zIHNob3VsZCBiZSBmZXRjaGVkLiIKIG1zZ3N0ciAi5pyq5oyH5a6a6L+c56iL54mI5pys5bqT44CC6K+36YCa6L+H5LiA5LiqVVJM5oiW6L+c56iL54mI5pys5bqT5ZCN5oyH5a6a77yM55So5Lul6I635Y+W5paw5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTMzCisjOiBidWlsdGluL2ZldGNoLmM6OTM1CiBtc2dpZCAiWW91IG5lZWQgdG8gc3BlY2lmeSBhIHRhZyBuYW1lLiIKIG1zZ3N0ciAi5oKo6ZyA6KaB5oyH5a6a5LiA5LiqIHRhZyDlkI3np7DjgIIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKK21zZ2lkICItLWRlcHRoIGFuZCAtLXVuc2hhbGxvdyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKK21zZ3N0ciAiLS1kZXB0aCDlkowgLS11bnNoYWxsb3cg5LiN6IO95ZCM5pe25L2/55SoIgorCisjOiBidWlsdGluL2ZldGNoLmM6OTgzCittc2dpZCAiLS11bnNoYWxsb3cgb24gYSBjb21wbGV0ZSByZXBvc2l0b3J5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCittc2dzdHIgIuWvueS6juS4gOS4quWujOaVtOeahOeJiOacrOW6k++8jOWPguaVsCAtLXVuc2hhbGxvdyDmsqHmnInmhI/kuYkiCisKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDAyCiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCiBtc2dzdHIgImZldGNoIC0tYWxsIOS4jeiDveW4puS4gOS4queJiOacrOW6k+WPguaVsCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk4NworIzogYnVpbHRpbi9mZXRjaC5jOjEwMDQKIG1zZ2lkICJmZXRjaCAtLWFsbCBkb2VzIG5vdCBtYWtlIHNlbnNlIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgImZldGNoIC0tYWxsIOW4puW8leeUqOihqOi+vuW8j+ayoeacieS7u+S9leaEj+S5iSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjk5OAorIzogYnVpbHRpbi9mZXRjaC5jOjEwMTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgb3IgcmVtb3RlIGdyb3VwOiAlcyIKIG1zZ3N0ciAi5rKh5pyJ6L+Z5qC355qE6L+c56iL5oiW6L+c56iL57uE77yaJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA2CisjOiBidWlsdGluL2ZldGNoLmM6MTAyMwogbXNnaWQgIkZldGNoaW5nIGEgZ3JvdXAgYW5kIHNwZWNpZnlpbmcgcmVmc3BlY3MgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAi6I635Y+W57uE5bm25oyH5a6a5byV55So6KGo6L6+5byP5rKh5pyJ5oSP5LmJIgogCiAjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzoxMwogbXNnaWQgImdpdCBmbXQtbWVyZ2UtbXNnIFstbSA8bWVzc2FnZT5dIFstLWxvZ1s9PG4+XXwtLW5vLWxvZ10gWy0tZmlsZSA8ZmlsZT5dIgogbXNnc3RyICIiCisiZ2l0IGZtdC1tZXJnZS1tc2cgWy1tIDxtZXNzYWdlPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxmaWxlPl0iCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY1MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NTYgYnVpbHRpbi9ncmVwLmM6Nzg2Ci0jOiBidWlsdGluL21lcmdlLmM6MTg4IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTYgYnVpbHRpbi9zaG93LXJlZi5jOjE5MgotIzogYnVpbHRpbi90YWcuYzo0NDggcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM1CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMQorIzogYnVpbHRpbi9tZXJnZS5jOjE4OCBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzUKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjIzOQogbXNnaWQgIm4iCi1tc2dzdHIgIuaVsOWtlyIKK21zZ3N0ciAibiIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjU0CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjQKIG1zZ2lkICJwb3B1bGF0ZSBsb2cgd2l0aCBhdCBtb3N0IDxuPiBlbnRyaWVzIGZyb20gc2hvcnRsb2ciCi1tc2dzdHIgIiIKK21zZ3N0ciAi5ZCR5o+Q5Lqk6K+05piO5Lit5pyA5aSa5aSN5Yi25oyH5a6a5p2h55uu77yI5ZCI5bm26ICM5p2l55qE5o+Q5Lqk77yJ55qE566A55+t6K+05piOIgogCi0jOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NTcKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NwogbXNnaWQgImFsaWFzIGZvciAtLWxvZyAoZGVwcmVjYXRlZCkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+C5pWwIC0tbG9nIOeahOWIq+WQje+8iOW3suW8g+eUqO+8iSIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYwCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzAKIG1zZ2lkICJ0ZXh0IgotbXNnc3RyICIiCittc2dzdHIgIuaWh+acrCIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYxCisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NzEKIG1zZ2lkICJ1c2UgPHRleHQ+IGFzIHN0YXJ0IG9mIG1lc3NhZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5L2/55SoIDzmlofmnKw+IOS9nOS4uuaPkOS6pOivtOaYjueahOW8gOWniyIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYyCi0jLCBmdXp6eQorIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjcyCiBtc2dpZCAiZmlsZSB0byByZWFkIGZyb20iCi1tc2dzdHIgIuS4jeiDveivuyAlcyIKK21zZ3N0ciAi5LuO5paH5Lu25Lit6K+75Y+WIgogCiAjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk3OQotIywgZnV6enkKIG1zZ2lkICJnaXQgZm9yLWVhY2gtcmVmIFtvcHRpb25zXSBbPHBhdHRlcm4+XSIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBmb3ItZWFjaC1yZWYgW+mAiemhuV0gWzzmqKHlvI8+XSIKIAogIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5OTQKIG1zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHNoZWxscyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvJXnlKjljaDkvY3nrKbpgILnlKjkuo4gc2hlbGxzIgogCiAjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjk5NgogbXNnaWQgInF1b3RlIHBsYWNlaG9sZGVycyBzdWl0YWJseSBmb3IgcGVybCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvJXnlKjljaDkvY3nrKbpgILnlKjkuo4gcGVybCIKIAogIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzo5OTgKIG1zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHB5dGhvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvJXnlKjljaDkvY3nrKbpgILnlKjkuo4gcHl0aG9uIgogCiAjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDAKIG1zZ2lkICJxdW90ZSBwbGFjZWhvbGRlcnMgc3VpdGFibHkgZm9yIHRjbCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvJXnlKjljaDkvY3nrKbpgILnlKjkuo4gdGNsIgogCiAjOiBidWlsdGluL2Zvci1lYWNoLXJlZi5jOjEwMDMKIG1zZ2lkICJzaG93IG9ubHkgPG4+IG1hdGNoZWQgcmVmcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlj6rmmL7npLogPG4+IOS4quWMuemFjeeahOW8leeUqCIKIAogIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA0CiBtc2dpZCAiZm9ybWF0IgotbXNnc3RyICIiCittc2dzdHIgIuagvOW8jyIKIAogIzogYnVpbHRpbi9mb3ItZWFjaC1yZWYuYzoxMDA0CiBtc2dpZCAiZm9ybWF0IHRvIHVzZSBmb3IgdGhlIG91dHB1dCIKLW1zZ3N0ciAiIgorbXNnc3RyICLovpPlh7rmoLzlvI8iCiAKICM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNQogbXNnaWQgImtleSIKLW1zZ3N0ciAiIgorbXNnc3RyICJrZXkiCiAKICM6IGJ1aWx0aW4vZm9yLWVhY2gtcmVmLmM6MTAwNgogbXNnaWQgImZpZWxkIG5hbWUgdG8gc29ydCBvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLmjpLluo/nmoTlrZfmrrXlkI0iCiAKICM6IGJ1aWx0aW4vZnNjay5jOjYwOAotIywgZnV6enkKIG1zZ2lkICJnaXQgZnNjayBbb3B0aW9uc10gWzxvYmplY3Q+Li4uXSIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBmc2NrIFvpgInpobldIFs85a+56LGhPi4uLl0iCiAKICM6IGJ1aWx0aW4vZnNjay5jOjYxNAogbXNnaWQgInNob3cgdW5yZWFjaGFibGUgb2JqZWN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrkuI3lj6/ovr7nmoTlr7nosaEiCiAKICM6IGJ1aWx0aW4vZnNjay5jOjYxNQotIywgZnV6enkKIG1zZ2lkICJzaG93IGRhbmdsaW5nIG9iamVjdHMiCi1tc2dzdHIgIue0ouW8leWvueixoeS4rSIKK21zZ3N0ciAi5pi+56S65pGH5pGG55qE5a+56LGhIgogCiAjOiBidWlsdGluL2ZzY2suYzo2MTYKIG1zZ2lkICJyZXBvcnQgdGFncyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmiqXlkYogdGFncyIKIAogIzogYnVpbHRpbi9mc2NrLmM6NjE3CiBtc2dpZCAicmVwb3J0IHJvb3Qgbm9kZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5oql5ZGK5qC56IqC54K5IgogCiAjOiBidWlsdGluL2ZzY2suYzo2MTgKIG1zZ2lkICJtYWtlIGluZGV4IG9iamVjdHMgaGVhZCBub2RlcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlsIbntKLlvJXkuqbkvZzkuLrmo4Dmn6XnmoTlpLToioLngrkiCiAKICM6IGJ1aWx0aW4vZnNjay5jOjYxOQogbXNnaWQgIm1ha2UgcmVmbG9ncyBoZWFkIG5vZGVzIChkZWZhdWx0KSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlsIblvJXnlKjml6Xlv5fkvZzkuLrmo4Dmn6XnmoTlpLToioLngrnvvIjpu5jorqTvvIkiCiAKICM6IGJ1aWx0aW4vZnNjay5jOjYyMAogbXNnaWQgImFsc28gY29uc2lkZXIgcGFja3MgYW5kIGFsdGVybmF0ZSBvYmplY3RzIgotbXNnc3RyICIiCittc2dzdHIgIuS5n+iAg+iZkeWMheWSjOWkh+eUqOWvueixoSIKIAogIzogYnVpbHRpbi9mc2NrLmM6NjIxCiBtc2dpZCAiZW5hYmxlIG1vcmUgc3RyaWN0IGNoZWNraW5nIgotbXNnc3RyICIiCittc2dzdHIgIuWQr+eUqOabtOS4peagvOeahOajgOafpSIKIAogIzogYnVpbHRpbi9mc2NrLmM6NjIzCiBtc2dpZCAid3JpdGUgZGFuZ2xpbmcgb2JqZWN0cyBpbiAuZ2l0L2xvc3QtZm91bmQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5bCG5pGH5pGG5a+56LGh5YaZ5YWlIC5naXQvbG9zdC1mb3VuZCDkuK0iCiAKICM6IGJ1aWx0aW4vZnNjay5jOjYyNCBidWlsdGluL3BydW5lLmM6MTM0CiBtc2dpZCAic2hvdyBwcm9ncmVzcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrov5vluqYiCiAKICM6IGJ1aWx0aW4vZ2MuYzoyMgogbXNnaWQgImdpdCBnYyBbb3B0aW9uc10iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGdjIFvpgInpobldIgogCiAjOiBidWlsdGluL2djLmM6NjMKICMsIGMtZm9ybWF0CkBAIC00NTM3LDIyICs0OTEzLDE3IEBACiAKICM6IGJ1aWx0aW4vZ2MuYzoxNzkKIG1zZ2lkICJwcnVuZSB1bnJlZmVyZW5jZWQgb2JqZWN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmuIXpmaTmnKrlvJXnlKjnmoTlr7nosaEiCiAKICM6IGJ1aWx0aW4vZ2MuYzoxODEKIG1zZ2lkICJiZSBtb3JlIHRob3JvdWdoIChpbmNyZWFzZWQgcnVudGltZSkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pu05b275bqV77yI5aKe5Yqg6L+Q6KGM5pe26Ze077yJIgogCiAjOiBidWlsdGluL2djLmM6MTgyCiBtc2dpZCAiZW5hYmxlIGF1dG8tZ2MgbW9kZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlkK/nlKjoh6rliqjlnoPlnL7lm57mlLbmqKHlvI8iCiAKLSM6IGJ1aWx0aW4vZ2MuYzoyMjEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQXV0byBwYWNraW5nIHRoZSByZXBvc2l0b3J5IGZvciBvcHRpbXVtIHBlcmZvcm1hbmNlLlxuIgotbXNnc3RyICLoh6rliqjmiZPljIXniYjmnKzlupPku6XmsYLmnIDkvbPmgKfog73jgIJcbiIKLQotIzogYnVpbHRpbi9nYy5jOjIyNAorIzogYnVpbHRpbi9nYy5jOjIyMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQXV0byBwYWNraW5nIHRoZSByZXBvc2l0b3J5IGZvciBvcHRpbXVtIHBlcmZvcm1hbmNlLiBZb3UgbWF5IGFsc29cbiIKQEAgLTQ1NjEsMjM5ICs0OTMyLDIzNSBAQAogIuiHquWKqOaJk+WMheeJiOacrOW6k+S7peaxguacgOS9s+aAp+iDveOAguaCqOi/mOWPr+S7peaJi+WKqOi/kOihjCBcImdpdCBnY1wi44CCXG4iCiAi5Y+C6KeBIFwiZ2l0IGhlbHAgZ2NcIiDku6Xojrflj5bmm7TlpJrkv6Hmga/jgIJcbiIKIAotIzogYnVpbHRpbi9nYy5jOjI1MQorIzogYnVpbHRpbi9nYy5jOjI0OQogbXNnaWQgIiIKICJUaGVyZSBhcmUgdG9vIG1hbnkgdW5yZWFjaGFibGUgbG9vc2Ugb2JqZWN0czsgcnVuICdnaXQgcHJ1bmUnIHRvIHJlbW92ZSB0aGVtLiIKIG1zZ3N0ciAi5pyJ5aSq5aSa5LiN5Y+v6L6+55qE5p2+5pWj5a+56LGh77yM6L+Q6KGMICdnaXQgcHJ1bmUnIOWIoOmZpOWug+S7rOOAgiIKIAogIzogYnVpbHRpbi9ncmVwLmM6MjIKIG1zZ2lkICJnaXQgZ3JlcCBbb3B0aW9uc10gWy1lXSA8cGF0dGVybj4gWzxyZXY+Li4uXSBbWy0tXSA8cGF0aD4uLi5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBncmVwIFvpgInpobldIFstZV0gPOaooeW8jz4gWzzkv67orqI+Li4uXSBbWy0tXSA86Lev5b6EPi4uLl0iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjIxNgorIzogYnVpbHRpbi9ncmVwLmM6MjE3CiAjLCBjLWZvcm1hdAogbXNnaWQgImdyZXA6IGZhaWxlZCB0byBjcmVhdGUgdGhyZWFkOiAlcyIKIG1zZ3N0ciAiZ3JlcO+8muaXoOazleWIm+W7uue6v+eoi++8miVzIgogCi0jOiBidWlsdGluL2dyZXAuYzo0NTQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjM2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY2hkaXI6ICVzIgogbXNnc3RyICLml6Dms5XliIfmjaLnm67lvZXvvJolcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NTMwIGJ1aWx0aW4vZ3JlcC5jOjU2NAorIzogYnVpbHRpbi9ncmVwLmM6NDQzIGJ1aWx0aW4vZ3JlcC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiCiBtc2dzdHIgIuaXoOazleivu+WPluagke+8iCVz77yJIgogCi0jOiBidWlsdGluL2dyZXAuYzo1NzgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjQ5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gZ3JlcCBmcm9tIG9iamVjdCBvZiB0eXBlICVzIgogbXNnc3RyICLml6Dms5XmipPlj5bmnaXoh6rkuo4gJXMg57G75Z6L55qE5a+56LGhIgogCi0jOiBidWlsdGluL2dyZXAuYzo2MzYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJzd2l0Y2ggYCVjJyBleHBlY3RzIGEgbnVtZXJpY2FsIHZhbHVlIgogbXNnc3RyICLlvIDlhbMgYCVjJyDmnJ/mnJvkuIDkuKrmlbDlrZflgLwiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY1MworIzogYnVpbHRpbi9ncmVwLmM6NTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gCAnJXMnIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MjgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0MwogbXNnaWQgInNlYXJjaCBpbiBpbmRleCBpbnN0ZWFkIG9mIGluIHRoZSB3b3JrIHRyZWUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Zyo57Si5byV5Yy65pCc57Si6ICM5LiN5piv5Zyo5bel5L2c5Yy6IgogCi0jOiBidWlsdGluL2dyZXAuYzo3MzAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0NQogbXNnaWQgImZpbmQgaW4gY29udGVudHMgbm90IG1hbmFnZWQgYnkgZ2l0IgotbXNnc3RyICIiCittc2dzdHIgIuWcqOacquiiqyBnaXQg566h55CG55qE5YaF5a655Lit5p+l5om+IgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IGJ1aWx0aW4vZ3JlcC5jOjczMgotIywgZnV6enkKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0NwogbXNnaWQgInNlYXJjaCBpbiBib3RoIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKLW1zZ3N0ciAi77yI5L2/55SoIC11IOWPguaVsOaYvuekuuacqui3n+i4queahOaWh+S7tu+8iSIKK21zZ3N0ciAi5Zyo6Lef6Liq5ZKM5pyq6Lef6Liq55qE5paH5Lu25Lit5pCc57SiIgorCisjOiBidWlsdGluL2dyZXAuYzo2NDkKK21zZ2lkICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIgorbXNnc3RyICLkuZ/lnKjlv73nlaXnmoTmlofku7bkuK3mkJzntKIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1MgorbXNnaWQgInNob3cgbm9uLW1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICLmmL7npLrmnKrljLnphY3nmoTooYwiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1NAorbXNnaWQgImNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmciCittc2dzdHIgIuS4jeWMuuWIhuWkp+Wwj+WGmeWMuemFjSIKKworIzogYnVpbHRpbi9ncmVwLmM6NjU2Cittc2dpZCAibWF0Y2ggcGF0dGVybnMgb25seSBhdCB3b3JkIGJvdW5kYXJpZXMiCittc2dzdHIgIuWPquWcqOWNleivjei+ueeVjOWMuemFjeaooeW8jyIKKworIzogYnVpbHRpbi9ncmVwLmM6NjU4Cittc2dpZCAicHJvY2VzcyBiaW5hcnkgZmlsZXMgYXMgdGV4dCIKK21zZ3N0ciAi5oqK5LqM6L+b5Yi25paH5Lu25b2T5YGa5paH5pys5aSE55CGIgorCisjOiBidWlsdGluL2dyZXAuYzo2NjAKK21zZ2lkICJkb24ndCBtYXRjaCBwYXR0ZXJucyBpbiBiaW5hcnkgZmlsZXMiCittc2dzdHIgIuS4jeWcqOS6jOi/m+WItuaWh+S7tuS4reWMuemFjeaooeW8jyIKKworIzogYnVpbHRpbi9ncmVwLmM6NjYzCittc2dpZCAiZGVzY2VuZCBhdCBtb3N0IDxkZXB0aD4gbGV2ZWxzIgorbXNnc3RyICLmnIDlpJrku6XmjIflrprnmoTmt7HluqblkJHkuIvlr7vmib4iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworbXNnaWQgInVzZSBleHRlbmRlZCBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb25zIgorbXNnc3RyICLkvb/nlKjmianlsZXnmoQgUE9TSVgg5q2j5YiZ6KGo6L6+5byPIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzAKK21zZ2lkICJ1c2UgYmFzaWMgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyAoZGVmYXVsdCkiCittc2dzdHIgIuS9v+eUqOWfuuacrOeahCBQT1NJWCDmraPliJnooajovr7lvI/vvIjpu5jorqTvvIkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3MworbXNnaWQgImludGVycHJldCBwYXR0ZXJucyBhcyBmaXhlZCBzdHJpbmdzIgorbXNnc3RyICLmiormqKHlvI/op6PmnpDkuLrlm7rlrprnmoTlrZfnrKbkuLIiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3NgorbXNnaWQgInVzZSBQZXJsLWNvbXBhdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKK21zZ3N0ciAi5L2/55SoIFBlcmwg5YW85a6555qE5q2j5YiZ6KGo6L6+5byPIgorCisjOiBidWlsdGluL2dyZXAuYzo2NzkKK21zZ2lkICJzaG93IGxpbmUgbnVtYmVycyIKK21zZ3N0ciAi5pi+56S66KGM5Y+3IgorCisjOiBidWlsdGluL2dyZXAuYzo2ODAKK21zZ2lkICJkb24ndCBzaG93IGZpbGVuYW1lcyIKK21zZ3N0ciAi5LiN5pi+56S65paH5Lu25ZCNIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODEKK21zZ2lkICJzaG93IGZpbGVuYW1lcyIKK21zZ3N0ciAi5pi+56S65paH5Lu25ZCNIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODMKK21zZ2lkICJzaG93IGZpbGVuYW1lcyByZWxhdGl2ZSB0byB0b3AgZGlyZWN0b3J5IgorbXNnc3RyICLmmL7npLrnm7jlr7nkuo7pobbnuqfnm67lvZXnmoTmlofku7blkI0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NQorbXNnaWQgInNob3cgb25seSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKK21zZ3N0ciAi5Y+q5pi+56S65paH5Lu25ZCN6ICM5LiN5pi+56S65Yy56YWN55qE6KGMIgorCisjOiBidWlsdGluL2dyZXAuYzo2ODcKK21zZ2lkICJzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKK21zZ3N0ciAi5ZKMIC0tZmlsZXMtd2l0aC1tYXRjaGVzIOWQjOS5iSIKKworIzogYnVpbHRpbi9ncmVwLmM6NjkwCittc2dpZCAic2hvdyBvbmx5IHRoZSBuYW1lcyBvZiBmaWxlcyB3aXRob3V0IG1hdGNoIgorbXNnc3RyICLlj6rmmL7npLrmnKrljLnphY3nmoTmlofku7blkI0iCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MgorbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCittc2dzdHIgIuWcqOaWh+S7tuWQjeWQjui+k+WHuiBOVUwg5a2X56ymIgorCisjOiBidWlsdGluL2dyZXAuYzo2OTQKK21zZ2lkICJzaG93IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIgorbXNnc3RyICLmmL7npLrmgLvljLnphY3ooYzmlbDvvIzogIzkuI3mmL7npLrljLnphY3nmoTooYwiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5NQorbXNnaWQgImhpZ2hsaWdodCBtYXRjaGVzIgorbXNnc3RyICLpq5jkuq7mmL7npLrljLnphY3pobkiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5NworbXNnaWQgInByaW50IGVtcHR5IGxpbmUgYmV0d2VlbiBtYXRjaGVzIGZyb20gZGlmZmVyZW50IGZpbGVzIgorbXNnc3RyICLlnKjkuI3lkIzmlofku7bnmoTljLnphY3pobnkuYvpl7TmiZPljbDnqbrooYwiCisKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5OQorbXNnaWQgInNob3cgZmlsZW5hbWUgb25seSBvbmNlIGFib3ZlIG1hdGNoZXMgZnJvbSBzYW1lIGZpbGUiCittc2dzdHIgIuWPquWcqOWQjOS4gOaWh+S7tueahOWMuemFjemhueeahOS4iumdouaYvuekuuS4gOasoeaWh+S7tuWQjSIKKworIzogYnVpbHRpbi9ncmVwLmM6NzAyCittc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBiZWZvcmUgYW5kIGFmdGVyIG1hdGNoZXMiCittc2dzdHIgIuaYvuekuuWMuemFjemhueWJjeWQjueahCA8bj4g6KGM5LiK5LiL5paHIgorCisjOiBidWlsdGluL2dyZXAuYzo3MDUKK21zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBtYXRjaGVzIgorbXNnc3RyICLmmL7npLrljLnphY3pobnliY0gPG4+IOihjOS4iuS4i+aWhyIKKworIzogYnVpbHRpbi9ncmVwLmM6NzA3Cittc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBhZnRlciBtYXRjaGVzIgorbXNnc3RyICLmmL7npLrljLnphY3pobnlkI4gPG4+IOihjOS4iuS4i+aWhyIKKworIzogYnVpbHRpbi9ncmVwLmM6NzA4Cittc2dpZCAic2hvcnRjdXQgZm9yIC1DIE5VTSIKK21zZ3N0ciAi5b+r5o236ZSuIC1DIOaVsOWtlyIKKworIzogYnVpbHRpbi9ncmVwLmM6NzExCittc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKK21zZ3N0ciAi5Zyo5Yy56YWN55qE5YmN6Z2i5pi+56S65LiA6KGM5Ye95pWw5ZCNIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTMKK21zZ2lkICJzaG93IHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiIKK21zZ3N0ciAi5pi+56S65omA5Zyo5Ye95pWw55qE5YmN5ZCO5YaF5a65IgorCisjOiBidWlsdGluL2dyZXAuYzo3MTYKK21zZ2lkICJyZWFkIHBhdHRlcm5zIGZyb20gZmlsZSIKK21zZ3N0ciAi5LuO5paH5Lu26K+75Y+W5qih5byPIgorCisjOiBidWlsdGluL2dyZXAuYzo3MTgKK21zZ2lkICJtYXRjaCA8cGF0dGVybj4iCittc2dzdHIgIuWMuemFjSA85qih5byPPiIKKworIzogYnVpbHRpbi9ncmVwLmM6NzIwCittc2dpZCAiY29tYmluZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCAtZSIKK21zZ3N0ciAi57uE5ZCI55SoIC1lIOWPguaVsOiuvuWumueahOaooeW8jyIKKworIzogYnVpbHRpbi9ncmVwLmM6NzMyCittc2dpZCAiaW5kaWNhdGUgaGl0IHdpdGggZXhpdCBzdGF0dXMgd2l0aG91dCBvdXRwdXQiCittc2dzdHIgIuS4jei+k+WHuu+8jOiAjOeUqOmAgOWHuueggeagh+ivhuWRveS4reeKtuaAgSIKIAogIzogYnVpbHRpbi9ncmVwLmM6NzM0Ci1tc2dpZCAic2VhcmNoIGFsc28gaW4gaWdub3JlZCBmaWxlcyIKLW1zZ3N0ciAiIgorbXNnaWQgInNob3cgb25seSBtYXRjaGVzIGZyb20gZmlsZXMgdGhhdCBtYXRjaCBhbGwgcGF0dGVybnMiCittc2dzdHIgIuWPquaYvuekuuWMuemFjeaJgOacieaooeW8j+eahOaWh+S7tuS4reeahOWMuemFjSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzM3Ci1tc2dpZCAic2hvdyBub24tbWF0Y2hpbmcgbGluZXMiCi1tc2dzdHIgIiIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczNgorbXNnaWQgInNob3cgcGFyc2UgdHJlZSBmb3IgZ3JlcCBleHByZXNzaW9uIgorbXNnc3RyICLmmL7npLogZ3JlcCDooajovr7lvI/nmoTop6PmnpDmoJEiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjczOQotbXNnaWQgImNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmciCi1tc2dzdHIgIiIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorbXNnaWQgInBhZ2VyIgorbXNnc3RyICLliIbpobUiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjc0MQotbXNnaWQgIm1hdGNoIHBhdHRlcm5zIG9ubHkgYXQgd29yZCBib3VuZGFyaWVzIgotbXNnc3RyICIiCisjOiBidWlsdGluL2dyZXAuYzo3NDAKK21zZ2lkICJzaG93IG1hdGNoaW5nIGZpbGVzIGluIHRoZSBwYWdlciIKK21zZ3N0ciAi5YiG6aG15pi+56S65Yy56YWN55qE5paH5Lu2IgogCiAjOiBidWlsdGluL2dyZXAuYzo3NDMKLW1zZ2lkICJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc0NQotbXNnaWQgImRvbid0IG1hdGNoIHBhdHRlcm5zIGluIGJpbmFyeSBmaWxlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NDgKLW1zZ2lkICJkZXNjZW5kIGF0IG1vc3QgPGRlcHRoPiBsZXZlbHMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6NzUyCi1tc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6NzU1Ci1tc2dpZCAidXNlIGJhc2ljIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGRlZmF1bHQpIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc1OAotbXNnaWQgImludGVycHJldCBwYXR0ZXJucyBhcyBmaXhlZCBzdHJpbmdzIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc2MQotbXNnaWQgInVzZSBQZXJsLWNvbXBhdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NjQKLW1zZ2lkICJzaG93IGxpbmUgbnVtYmVycyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NjUKLW1zZ2lkICJkb24ndCBzaG93IGZpbGVuYW1lcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NjYKLSMsIGZ1enp5Ci1tc2dpZCAic2hvdyBmaWxlbmFtZXMiCi1tc2dzdHIgIiVz5paH5Lu277yaIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NjgKLW1zZ2lkICJzaG93IGZpbGVuYW1lcyByZWxhdGl2ZSB0byB0b3AgZGlyZWN0b3J5IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc3MAotbXNnaWQgInNob3cgb25seSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NzIKLW1zZ2lkICJzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3NzUKLW1zZ2lkICJzaG93IG9ubHkgdGhlIG5hbWVzIG9mIGZpbGVzIHdpdGhvdXQgbWF0Y2giCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6Nzc3Ci0jLCBmdXp6eQotbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCi1tc2dzdHIgIuS4uuaJgOacieaWh+S7tuWQjeWJjea3u+WKoCA85qC555uu5b2VPiIKLQotIzogYnVpbHRpbi9ncmVwLmM6Nzc5Ci1tc2dpZCAic2hvdyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3ODAKLW1zZ2lkICJoaWdobGlnaHQgbWF0Y2hlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3ODIKLW1zZ2lkICJwcmludCBlbXB0eSBsaW5lIGJldHdlZW4gbWF0Y2hlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3ODQKLW1zZ2lkICJzaG93IGZpbGVuYW1lIG9ubHkgb25jZSBhYm92ZSBtYXRjaGVzIGZyb20gc2FtZSBmaWxlIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc4NwotbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIGFuZCBhZnRlciBtYXRjaGVzIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc5MAotbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIG1hdGNoZXMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6NzkyCi1tc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBhZnRlciBtYXRjaGVzIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjc5MwotbXNnaWQgInNob3J0Y3V0IGZvciAtQyBOVU0iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6Nzk2Ci1tc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo3OTgKLW1zZ2lkICJzaG93IHRoZSBzdXJyb3VuZGluZyBmdW5jdGlvbiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo4MDEKLW1zZ2lkICJyZWFkIHBhdHRlcm5zIGZyb20gZmlsZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo4MDMKLW1zZ2lkICJtYXRjaCA8cGF0dGVybj4iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ncmVwLmM6ODA1Ci1tc2dpZCAiY29tYmluZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCAtZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo4MTcKLW1zZ2lkICJpbmRpY2F0ZSBoaXQgd2l0aCBleGl0IHN0YXR1cyB3aXRob3V0IG91dHB1dCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2dyZXAuYzo4MTkKLW1zZ2lkICJzaG93IG9ubHkgbWF0Y2hlcyBmcm9tIGZpbGVzIHRoYXQgbWF0Y2ggYWxsIHBhdHRlcm5zIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjgyMgotbXNnaWQgInBhZ2VyIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjgyMgotbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZ3JlcC5jOjgyNQogbXNnaWQgImFsbG93IGNhbGxpbmcgb2YgZ3JlcCgxKSAoaWdub3JlZCBieSB0aGlzIGJ1aWxkKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlhYHorrjosIPnlKggZ3JlcCgxKe+8iOacrOasoeaehOW7uuW/veeVpe+8iSIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODI2IGJ1aWx0aW4vc2hvdy1yZWYuYzoyMDEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0NCBidWlsdGluL3Nob3ctcmVmLmM6MTg0CiBtc2dpZCAic2hvdyB1c2FnZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrnlKjms5UiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjkxNworIzogYnVpbHRpbi9ncmVwLmM6ODExCiBtc2dpZCAibm8gcGF0dGVybiBnaXZlbi4iCiBtc2dzdHIgIuacquaPkOS+m+aooeW8j+WMuemFjeOAgiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTMxCi0jLCBjLWZvcm1hdAotbXNnaWQgImJhZCBvYmplY3QgJXMiCi1tc2dzdHIgIuWdj+WvueixoSAlcyIKLQotIzogYnVpbHRpbi9ncmVwLmM6OTcyCisjOiBidWlsdGluL2dyZXAuYzo4NjYKIG1zZ2lkICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgb25seSB3b3JrcyBvbiB0aGUgd29ya3RyZWUiCiBtc2dzdHIgIi0tb3Blbi1maWxlcy1pbi1wYWdlciDku4XnlKjkuo7lt6XkvZzljLoiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjk5NQorIzogYnVpbHRpbi9ncmVwLmM6ODg5CiBtc2dpZCAiLS1jYWNoZWQgb3IgLS11bnRyYWNrZWQgY2Fubm90IGJlIHVzZWQgd2l0aCAtLW5vLWluZGV4LiIKIG1zZ3N0ciAiLS1jYWNoZWQg5oiWIC0tdW50cmFja2VkIOS4jeiDveS4jiAtLW5vLWluZGV4IOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi9ncmVwLmM6MTAwMAorIzogYnVpbHRpbi9ncmVwLmM6ODk0CiBtc2dpZCAiLS1uby1pbmRleCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIHJldnMuIgogbXNnc3RyICItLW5vLWluZGV4IOaIliAtLXVudHJhY2tlZCDkuI3og73lkozniYjmnKzlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjEwMDMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg5NwogbXNnaWQgIi0tW25vLV1leGNsdWRlLXN0YW5kYXJkIGNhbm5vdCBiZSB1c2VkIGZvciB0cmFja2VkIGNvbnRlbnRzLiIKIG1zZ3N0ciAiLS1bbm8tXWV4Y2x1ZGUtc3RhbmRhcmQg5LiN6IO955So5LqO5bey6Lef6Liq5YaF5a6544CCIgogCi0jOiBidWlsdGluL2dyZXAuYzoxMDExCisjOiBidWlsdGluL2dyZXAuYzo5MDUKIG1zZ2lkICJib3RoIC0tY2FjaGVkIGFuZCB0cmVlcyBhcmUgZ2l2ZW4uIgogbXNnc3RyICLlkIzml7bnu5nlh7rkuoYgLS1jYWNoZWQg5ZKM5qCR5a+56LGh44CCIgogCkBAIC00ODAyLDgxICs1MTY5LDg1IEBACiAiZ2l0IGhhc2gtb2JqZWN0IFstdCA8dHlwZT5dIFstd10gWy0tcGF0aD08ZmlsZT58LS1uby1maWx0ZXJzXSBbLS1zdGRpbl0gWy0tXSAiCiAiPGZpbGU+Li4uIgogbXNnc3RyICIiCisiZ2l0IGhhc2gtb2JqZWN0IFstdCA857G75Z6LPl0gWy13XSBbLS1wYXRoPTzmlofku7Y+fC0tbm8tZmlsdGVyc10gWy0tc3RkaW5dIFstLV0gIgorIjzmlofku7Y+Li4uIgogCiAjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NjEKIG1zZ2lkICJnaXQgaGFzaC1vYmplY3QgIC0tc3RkaW4tcGF0aHMgPCA8bGlzdC1vZi1wYXRocz4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGhhc2gtb2JqZWN0ICAtLXN0ZGluLXBhdGhzIDwgPOi3r+W+hOWIl+ihqD4iCiAKICM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3MgogbXNnaWQgInR5cGUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi57G75Z6LIgogCiAjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzIKLSMsIGZ1enp5CiBtc2dpZCAib2JqZWN0IHR5cGUiCi1tc2dzdHIgIuWdj+eahOWvueixoeexu+Wei+OAgiIKK21zZ3N0ciAi5a+56LGh57G75Z6LIgogCiAjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzMKIG1zZ2lkICJ3cml0ZSB0aGUgb2JqZWN0IGludG8gdGhlIG9iamVjdCBkYXRhYmFzZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlsIblr7nosaHlhpnlhaXlr7nosaHmlbDmja7lupMiCiAKICM6IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NAogbXNnaWQgInJlYWQgdGhlIG9iamVjdCBmcm9tIHN0ZGluIgotbXNnc3RyICIiCittc2dzdHIgIuS7juagh+WHhui+k+WFpeivu+WPluWvueixoSIKIAogIzogYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc2CiBtc2dpZCAic3RvcmUgZmlsZSBhcyBpcyB3aXRob3V0IGZpbHRlcnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y6f5qC35a2Y5YKo5paH5Lu25LiN5L2/55So6L+H5ruk5ZmoIgogCiAjOiBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKIG1zZ2lkICJwcm9jZXNzIGZpbGUgYXMgaXQgd2VyZSBmcm9tIHRoaXMgcGF0aCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlpITnkIbmlofku7blubblgYforr7lhbbmnaXoh6rkuo7mraTot6/lvoQiCiAKICM6IGJ1aWx0aW4vaGVscC5jOjQzCi0jLCBmdXp6eQogbXNnaWQgInByaW50IGFsbCBhdmFpbGFibGUgY29tbWFuZHMiCi1tc2dzdHIgIuWcqCAnJXMnIOS4i+WPr+eUqOeahCBnaXQg5ZG95LukIgorbXNnc3RyICLmiZPljbDmiYDmnInlj6/nlKjnmoTlkb3ku6QiCiAKICM6IGJ1aWx0aW4vaGVscC5jOjQ0Ci1tc2dpZCAic2hvdyBtYW4gcGFnZSIKLW1zZ3N0ciAiIgorbXNnaWQgInByaW50IGxpc3Qgb2YgdXNlZnVsIGd1aWRlcyIKK21zZ3N0ciAi5pi+56S65pyJ55So55qE5oyH5Y2X5YiX6KGoIgogCiAjOiBidWlsdGluL2hlbHAuYzo0NQorbXNnaWQgInNob3cgbWFuIHBhZ2UiCittc2dzdHIgIuaYvuekuiBtYW4g5omL5YaMIgorCisjOiBidWlsdGluL2hlbHAuYzo0NgogbXNnaWQgInNob3cgbWFudWFsIGluIHdlYiBicm93c2VyIgotbXNnc3RyICIiCittc2dzdHIgIuWcqCB3ZWIg5rWP6KeI5Zmo5Lit5pi+56S65omL5YaMIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NworIzogYnVpbHRpbi9oZWxwLmM6NDgKIG1zZ2lkICJzaG93IGluZm8gcGFnZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLogaW5mbyDmiYvlhowiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjUzCi1tc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1tYW58LS13ZWJ8LS1pbmZvXSBbY29tbWFuZF0iCi1tc2dzdHIgIiIKKyM6IGJ1aWx0aW4vaGVscC5jOjU0Cittc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKK21zZ3N0ciAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFvlkb3ku6RdIgogCi0jOiBidWlsdGluL2hlbHAuYzo2NQorIzogYnVpbHRpbi9oZWxwLmM6NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgIuacquiDveivhuWIq+eahOW4ruWKqeagvOW8jyAnJXMnIgogCi0jOiBidWlsdGluL2hlbHAuYzo5MworIzogYnVpbHRpbi9oZWxwLmM6OTQKIG1zZ2lkICJGYWlsZWQgdG8gc3RhcnQgZW1hY3NjbGllbnQuIgogbXNnc3RyICLml6Dms5XlkK/liqggZW1hY3NjbGllbnTjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEwNgorIzogYnVpbHRpbi9oZWxwLmM6MTA3CiBtc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGVtYWNzY2xpZW50IHZlcnNpb24uIgogbXNnc3RyICLml6Dms5Xop6PmnpAgZW1hY3NjbGllbnQg54mI5pys44CCIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMTQKKyM6IGJ1aWx0aW4vaGVscC5jOjExNQogIywgYy1mb3JtYXQKIG1zZ2lkICJlbWFjc2NsaWVudCB2ZXJzaW9uICclZCcgdG9vIG9sZCAoPCAyMikuIgotbXNnc3RyICJlbWFjc2NsaWVudCDniYjmnKwgJyVkJyDlpKrogIEgKDwgMjIp44CCIgorbXNnc3RyICJlbWFjc2NsaWVudCDniYjmnKwgJyVkJyDlpKrogIHvvIg8IDIy77yJ44CCIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMzIgYnVpbHRpbi9oZWxwLmM6MTYwIGJ1aWx0aW4vaGVscC5jOjE2OSBidWlsdGluL2hlbHAuYzoxNzcKKyM6IGJ1aWx0aW4vaGVscC5jOjEzMyBidWlsdGluL2hlbHAuYzoxNjEgYnVpbHRpbi9oZWxwLmM6MTcwIGJ1aWx0aW4vaGVscC5jOjE3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gZXhlYyAnJXMnOiAlcyIKIG1zZ3N0ciAi5peg5rOV5omn6KGMICclcyfvvJolcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6MjE3CisjOiBidWlsdGluL2hlbHAuYzoyMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcyc6IHBhdGggZm9yIHVuc3VwcG9ydGVkIG1hbiB2aWV3ZXIuXG4iCkBAIC00ODg1LDcgKzUyNTYsNyBAQAogIiclcyfvvJrkuI3mlK/mjIHnmoQgbWFuIOaJi+WGjOafpeeci+WZqOeahOi3r+W+hOOAglxuIgogIuivt+S9v+eUqCAnbWFuLjx0b29sPi5jbWQn44CCIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMjkKKyM6IGJ1aWx0aW4vaGVscC5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogY21kIGZvciBzdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKQEAgLTQ4OTQsMzA3ICs1MjY1LDMzNSBAQAogIiclcyc6IOaUr+aMgeeahCBtYW4g5omL5YaM5p+l55yL5Zmo5ZG95Luk44CCXG4iCiAi6K+35L2/55SoICdtYW4uPHRvb2w+LnBhdGgn44CCIgogCi0jOiBidWlsdGluL2hlbHAuYzoyOTkKLW1zZ2lkICJUaGUgbW9zdCBjb21tb25seSB1c2VkIGdpdCBjb21tYW5kcyBhcmU6IgotbXNnc3RyICLmnIDluLjnlKjnmoQgZ2l0IOWRveS7pOacie+8miIKLQotIzogYnVpbHRpbi9oZWxwLmM6MzY3CisjOiBidWlsdGluL2hlbHAuYzozNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJzogdW5rbm93biBtYW4gdmlld2VyLiIKIG1zZ3N0ciAiJyVzJ++8muacquefpeeahCBtYW4g5p+l55yL5Zmo44CCIgogCi0jOiBidWlsdGluL2hlbHAuYzozODQKKyM6IGJ1aWx0aW4vaGVscC5jOjM2OAogbXNnaWQgIm5vIG1hbiB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKIG1zZ3N0ciAi5rKh5pyJIG1hbiDmn6XnnIvlmajlpITnkIbmraTor7fmsYIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM5MgorIzogYnVpbHRpbi9oZWxwLmM6Mzc2CiBtc2dpZCAibm8gaW5mbyB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKIG1zZ3N0ciAi5rKh5pyJIGluZm8g5p+l55yL5Zmo5aSE55CG5q2k6K+35rGCIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NDcgYnVpbHRpbi9oZWxwLmM6NDU0CisjOiBidWlsdGluL2hlbHAuYzo0MjIKK21zZ2lkICJEZWZpbmluZyBhdHRyaWJ1dGVzIHBlciBwYXRoIgorbXNnc3RyICLlrprkuYnot6/lvoTnmoTlsZ7mgKciCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMworbXNnaWQgIkEgR2l0IGdsb3NzYXJ5IgorbXNnc3RyICJHaXQg6K+N5rGH6KGoIgorCisjOiBidWlsdGluL2hlbHAuYzo0MjQKK21zZ2lkICJTcGVjaWZpZXMgaW50ZW50aW9uYWxseSB1bnRyYWNrZWQgZmlsZXMgdG8gaWdub3JlIgorbXNnc3RyICLlv73nlaXmjIflrprnmoTmnKrot5/ouKrmlofku7YiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNQorbXNnaWQgIkRlZmluaW5nIHN1Ym1vZHVsZSBwcm9wZXJ0aWVzIgorbXNnc3RyICLlrprkuYnlrZDmqKHnu4TlsZ7mgKciCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNgorbXNnaWQgIlNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIEdpdCIKK21zZ3N0ciAi5oyH5a6aIEdpdCDnmoTniYjmnKzlkozniYjmnKzojIPlm7QiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNworbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgorbXNnc3RyICLkuIDkuKogR2l0IOaVmeeoi++8iOmSiOWvuSAxLjUuMSDmiJbmm7TmlrDniYjmnKzvvIkiCisKKyM6IGJ1aWx0aW4vaGVscC5jOjQyOAorbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKK21zZ3N0ciAiR2l0IOaOqOiNkOeahOW3peS9nOa1geamguiniCIKKworIzogYnVpbHRpbi9oZWxwLmM6NDQwCittc2dpZCAiVGhlIGNvbW1vbiBHaXQgZ3VpZGVzIGFyZTpcbiIKK21zZ3N0ciAi5pyA5bi455So55qEIEdpdCDlkJHlr7zmnInvvJpcbiIKKworIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAi55So5rOV77yaJXMlcyIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDcwCisjOiBidWlsdGluL2hlbHAuYzo0OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiYGdpdCAlcycgaXMgYWxpYXNlZCB0byBgJXMnIgogbXNnc3RyICJgZ2l0ICVzJyDmmK8gYCVzJyDnmoTliKvlkI0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE3MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCB0eXBlIG1pc21hdGNoIGF0ICVzIgogbXNnc3RyICIlcyDnmoTlr7nosaHnsbvlnovkuI3ljLnphY0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE5MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCiBtc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKIG1zZ3N0ciAi5oSP5aSW55qE57G75Z6L55qE5a+56LGhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMjcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgZmlsbCAlZCBieXRlIgogbXNnaWRfcGx1cmFsICJjYW5ub3QgZmlsbCAlZCBieXRlcyIKIG1zZ3N0clswXSAi5peg5rOV5aGr5YWFICVkIOWtl+iKgiIKIG1zZ3N0clsxXSAi5peg5rOV5aGr5YWFICVkIOWtl+iKgiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKIG1zZ2lkICJlYXJseSBFT0YiCiBtc2dzdHIgIui/h+aXqeeahOaWh+S7tue7k+adn+espu+8iEVPRu+8iSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKIG1zZ2lkICJyZWFkIGVycm9yIG9uIGlucHV0IgogbXNnc3RyICLovpPlhaXkuIrnmoTor7vplJnor68iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCiBtc2dpZCAidXNlZCBtb3JlIGJ5dGVzIHRoYW4gd2VyZSBhdmFpbGFibGUiCiBtc2dzdHIgIueUqOaOieS6hui2hei/h+WPr+eUqOeahOWtl+iKgiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjU3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKIG1zZ2lkICJwYWNrIHRvbyBsYXJnZSBmb3IgY3VycmVudCBkZWZpbml0aW9uIG9mIG9mZl90IgogbXNnc3RyICLljIXlpKrlpKfotoXov4fkuoblvZPliY0gb2ZmX3Qg55qE5a6a5LmJIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCiBtc2dzdHIgIuS4jeiDveWIm+W7uiAnJXMnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNzgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiBwYWNrZmlsZSAnJXMnIgogbXNnc3RyICLml6Dms5XmiZPlvIDljIXmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjkyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMDQKIG1zZ2lkICJwYWNrIHNpZ25hdHVyZSBtaXNtYXRjaCIKIG1zZ3N0ciAi5YyF562+5ZCN5LiN5Yy56YWNIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIHZlcnNpb24gJTxQUkl1MzI+IHVuc3VwcG9ydGVkIgotbXNnc3RyICIiCittc2dzdHIgIuS4jeaUr+aMgeWMheeJiOacrCAlPFBSSXUzMj4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMxMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzIGJhZCBvYmplY3QgYXQgb2Zmc2V0ICVsdTogJXMiCiBtc2dzdHIgIuWMheS4reaciemUmeivr+eahOWvueixoeS9jeS6jiAlbHXvvJolcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDM0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo0NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5mbGF0ZSByZXR1cm5lZCAlZCIKIG1zZ3N0ciAi6Kej5Y6L57yp6L+U5ZueICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0ODMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5NQogbXNnaWQgIm9mZnNldCB2YWx1ZSBvdmVyZmxvdyBmb3IgZGVsdGEgYmFzZSBvYmplY3QiCiBtc2dzdHIgIuWBj+enu+WAvOimhuebluS6hiBkZWx0YSDln7rlh4blr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5MQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTAzCiBtc2dpZCAiZGVsdGEgYmFzZSBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kIgogbXNnc3RyICJkZWx0YSDln7rlh4blgY/np7votornlYwiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ5OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTExCiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgIuacquefpeWvueixoeexu+WeiyAlZCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTMwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDIKIG1zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgogbXNnc3RyICLml6Dms5Xor7vlj5bljIXmlofku7YiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUzMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZSBtaXNzaW5nIgogbXNnaWRfcGx1cmFsICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGVzIG1pc3NpbmciCiBtc2dzdHJbMF0gIuWMheaWh+S7tui/h+aXqee7k+adn++8jOe8uuWwkSAlbHUg5a2X6IqCIgogbXNnc3RyWzFdICLljIXmlofku7bov4fml6nnu5PmnZ/vvIznvLrlsJEgJWx1IOWtl+iKgiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTU4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NzAKIG1zZ2lkICJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIKIG1zZ3N0ciAi6Kej5Y6L57yp5Lil6YeN55qE5LiN5LiA6Ie0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2NDkgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjU1IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY3OAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzEyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjYxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NyBidWlsdGluL2luZGV4LXBhY2suYzo2OTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyNCBidWlsdGluL2luZGV4LXBhY2suYzo3MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIgogbXNnc3RyICLlj5HnjrAgJXMg5Ye6546wIFNIQTEg5Yay56qB77yBIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2NTIgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NCBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAogIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgJXMiCiBtc2dzdHIgIuS4jeiDveivuyAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzE4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgZXhpc3Rpbmcgb2JqZWN0ICVzIgogbXNnc3RyICLkuI3og73or7vlj5bnjrDlrZjlr7nosaEgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgYmxvYiBvYmplY3QgJXMiCi1tc2dzdHIgIuaXoOaViOeahOS6jOi/m+WItuWvueixoe+8iGJsb2LvvIklcyIKK21zZ3N0ciAi5peg5pWI55qE5pWw5o2u77yIYmxvYu+8ieWvueixoSAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCAlcyIKIG1zZ3N0ciAi5peg5pWI55qEICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MQogbXNnaWQgIkVycm9yIGluIG9iamVjdCIKIG1zZ3N0ciAi5a+56LGh5Lit5Ye66ZSZIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NTEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYWxsIGNoaWxkIG9iamVjdHMgb2YgJXMgYXJlIHJlYWNoYWJsZSIKIG1zZ3N0ciAiJXMg55qE5omA5pyJ5a2Q5a+56LGh5bm26Z2e6YO95Y+v6L6+IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo4MjEgYnVpbHRpbi9pbmRleC1wYWNrLmM6ODQ3CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo4MzMgYnVpbHRpbi9pbmRleC1wYWNrLmM6ODYzCiBtc2dpZCAiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIgogbXNnc3RyICLml6Dms5XlupTnlKggZGVsdGEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk4NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAogbXNnaWQgIlJlY2VpdmluZyBvYmplY3RzIgogbXNnc3RyICLmjqXmlLblr7nosaHkuK0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjk4NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAogbXNnaWQgIkluZGV4aW5nIG9iamVjdHMiCiBtc2dzdHIgIue0ouW8leWvueixoeS4rSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAxMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzMAogbXNnaWQgInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIKIG1zZ3N0ciAi5YyF5Yay56qB77yIU0hBMSDkuI3ljLnphY3vvIkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMTcKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzUKIG1zZ2lkICJjYW5ub3QgZnN0YXQgcGFja2ZpbGUiCiBtc2dzdHIgIuS4jeiDveaemuS4vuWMheaWh+S7tueKtuaAgSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAyMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzOAogbXNnaWQgInBhY2sgaGFzIGp1bmsgYXQgdGhlIGVuZCIKIG1zZ3N0ciAi5YyF55qE57uT5bC+5pyJ5Z6D5Zy+5pWw5o2uIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDMxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDQ5CiBtc2dpZCAiY29uZnVzaW9uIGJleW9uZCBpbnNhbml0eSBpbiBwYXJzZV9wYWNrX29iamVjdHMoKSIKIG1zZ3N0ciAicGFyc2VfcGFja19vYmplY3RzKCkg5Lit6YGH5Yiw5LiN5Y+v55CG5Za755qE6Zeu6aKYIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDU0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDcyCiBtc2dpZCAiUmVzb2x2aW5nIGRlbHRhcyIKIG1zZ3N0ciAi5aSE55CGIGRlbHRhIOS4rSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA2NAotIywgZnV6enksIGMtZm9ybWF0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDgyCisjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGhyZWFkOiAlcyIKLW1zZ3N0ciAiZ3JlcO+8muaXoOazleWIm+W7uue6v+eoi++8miVzIgorbXNnc3RyICLkuI3og73liJvlu7rnur/nqIvvvJolcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEwNgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNAogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkiCiBtc2dzdHIgIuS4jeWPr+eQhuWWuyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTExMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJjb21wbGV0ZWQgd2l0aCAlZCBsb2NhbCBvYmplY3RzIgotbXNnc3RyICIiCittc2dzdHIgIuWujOaIkCAlZCDkuKrmnKzlnLDlr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExMjEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5leHBlY3RlZCB0YWlsIGNoZWNrc3VtIGZvciAlcyAoZGlzayBjb3JydXB0aW9uPykiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5a+5ICVzIOeahOWwvumDqOagoemqjOWHuueOsOaEj+Wklu+8iOejgeebmOaNn+Wdj++8n++8iSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhIgogbXNnaWRfcGx1cmFsICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhcyIKIG1zZ3N0clswXSAi5YyF5pyJICVkIOS4quacquino+WGs+eahCBkZWx0YSIKIG1zZ3N0clsxXSAi5YyF5pyJICVkIOS4quacquino+WGs+eahCBkZWx0YSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gZGVmbGF0ZSBhcHBlbmRlZCBvYmplY3QgKCVkKSIKLW1zZ3N0ciAi5LiN6IO957yp5bCP6ZmE5Yqg5a+56LGh77yIJWTvvIkiCittc2dzdHIgIuS4jeiDveWOi+e8qemZhOWKoOWvueixoe+8iCVk77yJIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjI5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIG9iamVjdCAlcyBpcyBjb3JydXB0IgogbXNnc3RyICLmnKzlnLDlr7nosaEgJXMg5bey5o2f5Z2PIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CiBtc2dpZCAiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGUiCiBtc2dzdHIgIuWFs+mXreWMheaWh+S7tuaXtuWHuumUmSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI2NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIuaXoOazleWGmeS/neeVmeaWh+S7tiAnJXMnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjbG9zZSB3cml0dGVuIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICLml6Dms5XlhbPpl63kv53nlZnmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwOAogbXNnaWQgImNhbm5vdCBzdG9yZSBwYWNrIGZpbGUiCiBtc2dzdHIgIuaXoOazleWtmOWCqOWMheaWh+S7tiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICLml6Dms5XlrZjlgqjntKLlvJXmlofku7YiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzMzEKLSMsIGZ1enp5LCBjLWZvcm1hdAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1MgorIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+IgotbXNnc3RyICLlnY/nmoTntKLlvJXniYjmnKwgJyVzJyIKK21zZ3N0ciAi5Z2P55qEIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMzNworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG51bWJlciBvZiB0aHJlYWRzIHNwZWNpZmllZCAoJWQpIgotbXNnc3RyICIiCittc2dzdHIgIuaMh+WumueahOe6v+eoi+aVsOaXoOaViO+8iCVk77yJIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzQxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJubyB0aHJlYWRzIHN1cHBvcnQsIGlnbm9yaW5nICVzIgotbXNnc3RyICIiCittc2dzdHIgIuayoeaciee6v+eoi+aUr+aMge+8jOW/veeVpSAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM5OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5omT5byA546w5a2Y5YyF5paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MDEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBpZHggZmlsZSBmb3IgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5Li6ICVzIOaJk+W8gOWMhee0ouW8leaWh+S7tiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ0OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJub24gZGVsdGE6ICVkIG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAibm9uIGRlbHRhOiAlZCBvYmplY3RzIgogbXNnc3RyWzBdICLpnZ4gZGVsdGHvvJolZCDkuKrlr7nosaEiCiBtc2dzdHJbMV0gIumdniBkZWx0Ye+8miVkIOS4quWvueixoSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ1NQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3RzIgogbXNnc3RyWzBdICLpk77plb8gPSAlZDogJWx1IOWvueixoSIKIG1zZ3N0clsxXSAi6ZO+6ZW/ID0gJWQ6ICVsdSDlr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0ODIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MDMKIG1zZ2lkICJDYW5ub3QgY29tZSBiYWNrIHRvIGN3ZCIKIG1zZ3N0ciAi5peg5rOV6L+U5Zue5b2T5YmN5bel5L2c55uu5b2VIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTI2IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MjkKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDEgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU0NQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU0NyBidWlsdGluL2luZGV4LXBhY2suYzoxNTUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTYyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkICVzIgogbXNnc3RyICLplJnor6/pgInpobkgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODAKIG1zZ2lkICItLWZpeC10aGluIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgLS1zdGRpbiIKIG1zZ3N0ciAiLS1maXgtdGhpbiDkuI3og73lkowgLS1zdGRpbiDlkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjMgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU3MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4NCBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2tmaWxlIG5hbWUgJyVzJyBkb2VzIG5vdCBlbmQgd2l0aCAnLnBhY2snIgogbXNnc3RyICLljIXlkI0gJyVzJyDmsqHmnInku6UgJy5wYWNrJyDnu5PlsL4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2MDMKIG1zZ2lkICItLXZlcmlmeSB3aXRoIG5vIHBhY2tmaWxlIG5hbWUgZ2l2ZW4iCiBtc2dzdHIgIi0tdmVyaWZ5IOayoeacieaPkOS+m+WMheWQjeWPguaVsCIKIApAQCAtNTMxNywyMiArNTcxNiwyMyBAQAogCiAjOiBidWlsdGluL2luaXQtZGIuYzo0NjcKIG1zZ2lkICIiCi0iZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9PHRlbXBsYXRlLWRpcmVjdG9yeT5dIFstLXNoYXJlZCIKLSJbPTxwZXJtaXNzaW9ucz5dXSBbZGlyZWN0b3J5XSIKKyJnaXQgaW5pdCBbLXEgfCAtLXF1aWV0XSBbLS1iYXJlXSBbLS10ZW1wbGF0ZT08dGVtcGxhdGUtZGlyZWN0b3J5Pl0gWy0tIgorInNoYXJlZFs9PHBlcm1pc3Npb25zPl1dIFtkaXJlY3RvcnldIgogbXNnc3RyICIiCisiZ2l0IGluaXQgWy1xIHwgLS1xdWlldF0gWy0tYmFyZV0gWy0tdGVtcGxhdGU9POaooeadv+ebruW9lT5dIFstLXNoYXJlZFs9POadg+mZkD5dXSAiCisiW+ebruW9lV0iCiAKICM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MAogbXNnaWQgInBlcm1pc3Npb25zIgotbXNnc3RyICIiCittc2dzdHIgIuadg+mZkCIKIAogIzogYnVpbHRpbi9pbml0LWRiLmM6NDkxCiBtc2dpZCAic3BlY2lmeSB0aGF0IHRoZSBnaXQgcmVwb3NpdG9yeSBpcyB0byBiZSBzaGFyZWQgYW1vbmdzdCBzZXZlcmFsIHVzZXJzIgotbXNnc3RyICIiCittc2dzdHIgIuaMh+WumiBnaXQg54mI5pys5bqT5piv5aSa5Liq55So5oi35LmL6Ze05YWx5Lqr55qEIgogCiAjOiBidWlsdGluL2luaXQtZGIuYzo0OTMgYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NwotIywgZnV6enkKIG1zZ2lkICJiZSBxdWlldCIKLW1zZ3N0ciAi5pu05Yqg5a6J6Z2ZIgorbXNnc3RyICLkv53mjIHlronpnZkiCiAKICM6IGJ1aWx0aW4vaW5pdC1kYi5jOjUyMiBidWlsdGluL2luaXQtZGIuYzo1MjkKICMsIGMtZm9ybWF0CkBAIC01MzYyLDQwMyArNTc2MiwzOTAgQEAKIG1zZ2lkICJDYW5ub3QgYWNjZXNzIHdvcmsgdHJlZSAnJXMnIgogbXNnc3RyICLkuI3og73orr/pl67lt6XkvZzljLogJyVzJyIKIAotIzogYnVpbHRpbi9sb2cuYzozNwotIywgZnV6enkKLW1zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8c2luY2U+Li48dW50aWw+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCi1tc2dzdHIgImdpdCBhcHBseSBb6YCJ6aG5XSBbPOihpeS4gT4uLi5dIgorIzogYnVpbHRpbi9sb2cuYzo0MAorbXNnaWQgImdpdCBsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIDxwYXRoPi4uLl1cbiIKK21zZ3N0ciAiZ2l0IGxvZyBbPOmAiemhuT5dIFs854mI5pys6IyD5Zu0Pl0gW1stLV0gPOi3r+W+hD4uLi5dXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MzgKLSMsIGZ1enp5CisjOiBidWlsdGluL2xvZy5jOjQxCiBtc2dpZCAiICAgb3I6IGdpdCBzaG93IFtvcHRpb25zXSA8b2JqZWN0Pi4uLiIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgIiAgIOaIluiAhe+8mmdpdCBzaG93IFvpgInpobldIDzlr7nosaE+Li4uIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMAorIzogYnVpbHRpbi9sb2cuYzoxMDMKIG1zZ2lkICJzdXBwcmVzcyBkaWZmIG91dHB1dCIKLW1zZ3N0ciAiIgorbXNnc3RyICLkuI3mmL7npLrlt67lvILovpPlh7oiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTAxCi0jLCBmdXp6eQorIzogYnVpbHRpbi9sb2cuYzoxMDQKIG1zZ2lkICJzaG93IHNvdXJjZSIKLW1zZ3N0ciAi5Z2P55qE5rqQIgorbXNnc3RyICLmmL7npLrmupAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTAyCisjOiBidWlsdGluL2xvZy5jOjEwNQorbXNnaWQgIlVzZSBtYWlsIG1hcCBmaWxlIgorbXNnc3RyICLkvb/nlKjpgq7ku7bmmKDlsITmlofku7YiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTA2CiBtc2dpZCAiZGVjb3JhdGUgb3B0aW9ucyIKLW1zZ3N0ciAiIgorbXNnc3RyICLkv67ppbDpgInpobkiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTg5CisjOiBidWlsdGluL2xvZy5jOjE5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIuacgOe7iOi+k+WHuu+8miVkICVzXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NDAzIGJ1aWx0aW4vbG9nLmM6NDk0CisjOiBidWlsdGluL2xvZy5jOjQyMiBidWlsdGluL2xvZy5jOjUxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIuS4jeiDveivu+WPluWvueixoSAlcyIKIAotIzogYnVpbHRpbi9sb2cuYzo1MTgKKyM6IGJ1aWx0aW4vbG9nLmM6NTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gdHlwZTogJWQiCiBtc2dzdHIgIuacquefpeexu+Wei++8miVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYwOAorIzogYnVpbHRpbi9sb2cuYzo2MzgKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyDmsqHmnInlgLwiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NjgyCisjOiBidWlsdGluL2xvZy5jOjcyMAogbXNnaWQgIm5hbWUgb2Ygb3V0cHV0IGRpcmVjdG9yeSBpcyB0b28gbG9uZyIKIG1zZ3N0ciAi6L6T5Ye655uu5b2V5ZCN5aSq6ZW/IgogCi0jOiBidWlsdGluL2xvZy5jOjY5MworIzogYnVpbHRpbi9sb2cuYzo3MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gcGF0Y2ggZmlsZSAlcyIKIG1zZ3N0ciAi5peg5rOV5omT5byA6KGl5LiB5paH5Lu2ICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjcwNworIzogYnVpbHRpbi9sb2cuYzo3NTAKIG1zZ2lkICJOZWVkIGV4YWN0bHkgb25lIHJhbmdlLiIKIG1zZ3N0ciAi5Y+q6ZyA6KaB5LiA5Liq6IyD5Zu044CCIgogCi0jOiBidWlsdGluL2xvZy5jOjcxNQorIzogYnVpbHRpbi9sb2cuYzo3NTgKIG1zZ2lkICJOb3QgYSByYW5nZS4iCiBtc2dzdHIgIuS4jeaYr+S4gOS4quiMg+WbtOOAgiIKIAotIzogYnVpbHRpbi9sb2cuYzo3ODkKKyM6IGJ1aWx0aW4vbG9nLmM6ODYwCiBtc2dpZCAiQ292ZXIgbGV0dGVyIG5lZWRzIGVtYWlsIGZvcm1hdCIKIG1zZ3N0ciAi5L+h5bCB6ZyA6KaB6YKu5Lu25Zyw5Z2A5qC85byPIgogCi0jOiBidWlsdGluL2xvZy5jOjg2MgorIzogYnVpbHRpbi9sb2cuYzo5MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zYW5lIGluLXJlcGx5LXRvOiAlcyIKIG1zZ3N0ciAi5LiN5q2j5bi455qEIGluLXJlcGx5LXRv77yaJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6ODkwCisjOiBidWlsdGluL2xvZy5jOjk2NAogbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IGZvcm1hdC1wYXRjaCBb6YCJ6aG5XSBbPOS7jj4gfCA85L+u6K6i6ZuG6IyD5Zu0Pl0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6OTM1CisjOiBidWlsdGluL2xvZy5jOjEwMDkKIG1zZ2lkICJUd28gb3V0cHV0IGRpcmVjdG9yaWVzPyIKIG1zZ3N0ciAi5Lik5Liq6L6T5Ye655uu5b2V77yfIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNjMKLW1zZ2lkICJ1c2UgW1BBVENIIG4vbV0gZXZlbiB3aXRoIGEgc2luZ2xlIHBhdGNoIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA2NgotbXNnaWQgInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA3MAotbXNnaWQgInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA3MgotbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA3NAotbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xvZy5jOjEwNzUKLW1zZ2lkICJzZngiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMDc2Ci1tc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMDc4Ci1tc2dpZCAic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xvZy5jOjEwODAKLW1zZ2lkICJVc2UgWzxwcmVmaXg+XSBpbnN0ZWFkIG9mIFtQQVRDSF0iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMDgzCi1tc2dpZCAic3RvcmUgcmVzdWx0aW5nIGZpbGVzIGluIDxkaXI+IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA4NgotbXNnaWQgImRvbid0IHN0cmlwL2FkZCBbUEFUQ0hdIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA4OQotbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMDkxCi1tc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTA5MwotbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xvZy5jOjEwOTUKLSMsIGZ1enp5Ci1tc2dpZCAiTWVzc2FnaW5nIgotbXNnc3RyICLlkIjlubbvvJoiCi0KLSMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogYnVpbHRpbi9sb2cuYzoxMDk2Ci0jLCBmdXp6eQotbXNnaWQgImhlYWRlciIKLW1zZ3N0ciAi6aKG5YWIICIKLQotIzogYnVpbHRpbi9sb2cuYzoxMDk3Ci1tc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xvZy5jOjEwOTggYnVpbHRpbi9sb2cuYzoxMTAwCi1tc2dpZCAiZW1haWwiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMDk4Ci1tc2dpZCAiYWRkIFRvOiBoZWFkZXIiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMTAwCi1tc2dpZCAiYWRkIENjOiBoZWFkZXIiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMTAyCi1tc2dpZCAibWVzc2FnZS1pZCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xvZy5jOjExMDMKLW1zZ2lkICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9sb2cuYzoxMTA0IGJ1aWx0aW4vbG9nLmM6MTEwNwotbXNnaWQgImJvdW5kYXJ5IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTEwNQotbXNnaWQgImF0dGFjaCB0aGUgcGF0Y2giCi1tc2dzdHIgIiIKLQogIzogYnVpbHRpbi9sb2cuYzoxMTA4Ci0jLCBmdXp6eQotbXNnaWQgImlubGluZSB0aGUgcGF0Y2giCi1tc2dzdHIgIuW/veeVpeihpeS4geS4reeahOa3u+WKoOeahOaWh+S7tiIKK21zZ2lkICJ1c2UgW1BBVENIIG4vbV0gZXZlbiB3aXRoIGEgc2luZ2xlIHBhdGNoIgorbXNnc3RyICLkvb/nlKggW1BBVENIIG4vbV3vvIzljbPkvb/lj6rmnInkuIDkuKrooaXkuIEiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExMgotbXNnaWQgImVuYWJsZSBtZXNzYWdlIHRocmVhZGluZywgc3R5bGVzOiBzaGFsbG93LCBkZWVwIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbG9nLmM6MTExNAotbXNnaWQgInNpZ25hdHVyZSIKLW1zZ3N0ciAiIgorIzogYnVpbHRpbi9sb2cuYzoxMTExCittc2dpZCAidXNlIFtQQVRDSF0gZXZlbiB3aXRoIG11bHRpcGxlIHBhdGNoZXMiCittc2dzdHIgIuS9v+eUqCBbUEFUQ0hd77yM5Y2z5L2/5pyJ5aSa5Liq6KGl5LiBIgogCiAjOiBidWlsdGluL2xvZy5jOjExMTUKLW1zZ2lkICJhZGQgYSBzaWduYXR1cmUiCi1tc2dzdHIgIiIKK21zZ2lkICJwcmludCBwYXRjaGVzIHRvIHN0YW5kYXJkIG91dCIKK21zZ3N0ciAi5omT5Y2w6KGl5LiB5Yiw5qCH5YeG6L6T5Ye6IgogCiAjOiBidWlsdGluL2xvZy5jOjExMTcKLSMsIGZ1enp5Cittc2dpZCAiZ2VuZXJhdGUgYSBjb3ZlciBsZXR0ZXIiCittc2dzdHIgIueUn+aIkOS4gOWwgemZhOS/oSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTE5Cittc2dpZCAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIgorbXNnc3RyICLkvb/nlKjnroDljZXnmoTmlbDlrZfluo/liJfkvZzkuLrovpPlh7rmlofku7blkI0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEyMAorbXNnaWQgInNmeCIKK21zZ3N0ciAi5ZCO57yAIgorCisjOiBidWlsdGluL2xvZy5jOjExMjEKK21zZ2lkICJ1c2UgPHNmeD4gaW5zdGVhZCBvZiAnLnBhdGNoJyIKK21zZ3N0ciAi5L2/55SoIDzlkI7nvIA+IOS7o+abvyAnLnBhdGNoJyIKKworIzogYnVpbHRpbi9sb2cuYzoxMTIzCittc2dpZCAic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIKK21zZ3N0ciAi6KGl5LiB5LulIDxuPiDlvIDlp4vnvJblj7fvvIzogIzkuI3mmK8xIgorCisjOiBidWlsdGluL2xvZy5jOjExMjUKK21zZ2lkICJtYXJrIHRoZSBzZXJpZXMgYXMgTnRoIHJlLXJvbGwiCittc2dzdHIgIuagh+iusOihpeS4geezu+WIl+aYr+esrOWHoOasoemHjeWItiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTI3Cittc2dpZCAiVXNlIFs8cHJlZml4Pl0gaW5zdGVhZCBvZiBbUEFUQ0hdIgorbXNnc3RyICLkvb/nlKggWzzliY3nvIA+XSDku6Pmm78gW1BBVENIXSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTMwCittc2dpZCAic3RvcmUgcmVzdWx0aW5nIGZpbGVzIGluIDxkaXI+IgorbXNnc3RyICLmiornu5Pmnpzmlofku7blrZjlgqjlnKggPGRpcj4iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzMworbXNnaWQgImRvbid0IHN0cmlwL2FkZCBbUEFUQ0hdIgorbXNnc3RyICLkuI3liKDpmaQv5re75YqgIFtQQVRDSF0iCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTEzNgorbXNnaWQgImRvbid0IG91dHB1dCBiaW5hcnkgZGlmZnMiCittc2dzdHIgIuS4jei+k+WHuuS6jOi/m+WItuW3ruW8giIKKworIzogYnVpbHRpbi9sb2cuYzoxMTM4Cittc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgorbXNnc3RyICLkuI3ljIXlkKvlt7LlnKjkuIrmuLjmj5DkuqTkuK3nmoTooaXkuIEiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MAorbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKK21zZ3N0ciAi5pi+56S657qv6KGl5LiB5qC85byP6ICM6Z2e6buY6K6k55qE77yI6KGl5LiBK+eKtuaAge+8iSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTQyCittc2dpZCAiTWVzc2FnaW5nIgorbXNnc3RyICLpgq7ku7blj5HpgIEiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0MworbXNnaWQgImhlYWRlciIKK21zZ3N0ciAiaGVhZGVyIgorCisjOiBidWlsdGluL2xvZy5jOjExNDQKK21zZ2lkICJhZGQgZW1haWwgaGVhZGVyIgorbXNnc3RyICLmt7vliqDpgq7ku7blpLQiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKK21zZ2lkICJlbWFpbCIKK21zZ3N0ciAi6YKu5Lu25Zyw5Z2AIgorCisjOiBidWlsdGluL2xvZy5jOjExNDUKK21zZ2lkICJhZGQgVG86IGhlYWRlciIKK21zZ3N0ciAi5re75Yqg5pS25Lu25Lq6IgorCisjOiBidWlsdGluL2xvZy5jOjExNDcKK21zZ2lkICJhZGQgQ2M6IGhlYWRlciIKK21zZ3N0ciAi5re75Yqg5oqE6YCBIgorCisjOiBidWlsdGluL2xvZy5jOjExNDkKK21zZ2lkICJtZXNzYWdlLWlkIgorbXNnc3RyICJtZXNzYWdlLWlkIgorCisjOiBidWlsdGluL2xvZy5jOjExNTAKK21zZ2lkICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iCittc2dzdHIgIuS9v+esrOS4gOWwgemCruS7tuS9nOS4uuWvuSA8bWVzc2FnZS1pZD4g55qE5Zue5aSNIgorCisjOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0Cittc2dpZCAiYm91bmRhcnkiCittc2dzdHIgIui+ueeVjCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTUyCittc2dpZCAiYXR0YWNoIHRoZSBwYXRjaCIKK21zZ3N0ciAi6ZmE5Lu25pa55byP5re75Yqg6KGl5LiBIgorCisjOiBidWlsdGluL2xvZy5jOjExNTUKK21zZ2lkICJpbmxpbmUgdGhlIHBhdGNoIgorbXNnc3RyICLlhoXogZTmmL7npLrooaXkuIEiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1OQorbXNnaWQgImVuYWJsZSBtZXNzYWdlIHRocmVhZGluZywgc3R5bGVzOiBzaGFsbG93LCBkZWVwIgorbXNnc3RyICLlkK/nlKjpgq7ku7bnur/ntKLvvIzpo47moLzvvJrmtYXvvIzmt7EiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2MQorbXNnaWQgInNpZ25hdHVyZSIKK21zZ3N0ciAi562+5ZCNIgorCisjOiBidWlsdGluL2xvZy5jOjExNjIKK21zZ2lkICJhZGQgYSBzaWduYXR1cmUiCittc2dzdHIgIua3u+WKoOS4gOS4quetvuWQjSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTY0CiBtc2dpZCAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIKLW1zZ3N0ciAi5peg5rOV5omT5byA6KGl5LiB5paH5Lu2ICVzIgorbXNnc3RyICLkuI3opoHmiZPljbDooaXkuIHmlofku7blkI0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE1NwotIywgYy1mb3JtYXQKLW1zZ2lkICJib2d1cyBjb21taXR0ZXIgaW5mbyAlcyIKLW1zZ3N0ciAi6Jma5YGH55qE5o+Q5Lqk6ICF5L+h5oGvICVzIgotCi0jOiBidWlsdGluL2xvZy5jOjEyMDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTI0OAogbXNnaWQgIi1uIGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLW4g5ZKMIC1rIOS6kuaWpeOAgiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjA0CisjOiBidWlsdGluL2xvZy5jOjEyNTAKIG1zZ2lkICItLXN1YmplY3QtcHJlZml4IGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLS1zdWJqZWN0LXByZWZpeCDlkowgLWsg5LqS5pal44CCIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMTIKKyM6IGJ1aWx0aW4vbG9nLmM6MTI1OAogbXNnaWQgIi0tbmFtZS1vbmx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tbmFtZS1vbmx5IOaXoOaEj+S5iSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjE0CisjOiBidWlsdGluL2xvZy5jOjEyNjAKIG1zZ2lkICItLW5hbWUtc3RhdHVzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tbmFtZS1zdGF0dXMg5peg5oSP5LmJIgogCi0jOiBidWlsdGluL2xvZy5jOjEyMTYKKyM6IGJ1aWx0aW4vbG9nLmM6MTI2MgogbXNnaWQgIi0tY2hlY2sgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1jaGVjayDml6DmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTIzOQorIzogYnVpbHRpbi9sb2cuYzoxMjg1CiBtc2dpZCAic3RhbmRhcmQgb3V0cHV0LCBvciBkaXJlY3RvcnksIHdoaWNoIG9uZT8iCiBtc2dzdHIgIuagh+WHhui+k+WHuuaIluebruW9le+8jOWTquS4gOS4qu+8nyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjQxCisjOiBidWlsdGluL2xvZy5jOjEyODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Yib5bu655uu5b2VICclcyciCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTM5NAorIzogYnVpbHRpbi9sb2cuYzoxNDM1CiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgZmlsZXMiCiBtc2dzdHIgIuaXoOazleWIm+W7uui+k+WHuuaWh+S7tiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDQzCisjOiBidWlsdGluL2xvZy5jOjE0ODQKIG1zZ2lkICJnaXQgY2hlcnJ5IFstdl0gWzx1cHN0cmVhbT4gWzxoZWFkPiBbPGxpbWl0Pl1dXSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgY2hlcnJ5IFstdl0gWzzkuIrmuLg+IFs85aS0PiBbPOmZkOWItj5dXV0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQ5OAorIzogYnVpbHRpbi9sb2cuYzoxNTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDb3VsZCBub3QgZmluZCBhIHRyYWNrZWQgcmVtb3RlIGJyYW5jaCwgcGxlYXNlIHNwZWNpZnkgPHVwc3RyZWFtPiBtYW51YWxseS5cbiIKIG1zZ3N0ciAi5LiN6IO95om+5Yiw6Lef6Liq55qE6L+c56iL5YiG5pSv77yM6K+35omL5bel5oyH5a6aIDx1cHN0cmVhbT7jgIJcbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTExIGJ1aWx0aW4vbG9nLmM6MTUxMyBidWlsdGluL2xvZy5jOjE1MjUKKyM6IGJ1aWx0aW4vbG9nLmM6MTU1MiBidWlsdGluL2xvZy5jOjE1NTQgYnVpbHRpbi9sb2cuYzoxNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gY29tbWl0ICVzIgogbXNnc3RyICLmnKrnn6Xmj5DkuqQgJXMiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0MDgKLSMsIGZ1enp5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDAyCiBtc2dpZCAiZ2l0IGxzLWZpbGVzIFtvcHRpb25zXSBbPGZpbGU+Li4uXSIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBscy1maWxlcyBb6YCJ6aG5XSBbPOaWh+S7tj4uLi5dIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDU5Cittc2dpZCAiaWRlbnRpZnkgdGhlIGZpbGUgc3RhdHVzIHdpdGggdGFncyIKK21zZ3N0ciAi55So5qCH562+5qCH6K+G5paH5Lu255qE54q25oCBIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCittc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCittc2dzdHIgIuS9v+eUqOWwj+WGmeWtl+avjeihqOekuiAn5YGH6K6+5pyq5pS55Y+Y55qEJyDmlofku7YiCiAKICM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKLW1zZ2lkICJpZGVudGlmeSB0aGUgZmlsZSBzdGF0dXMgd2l0aCB0YWdzIgotbXNnc3RyICIiCittc2dpZCAic2hvdyBjYWNoZWQgZmlsZXMgaW4gdGhlIG91dHB1dCAoZGVmYXVsdCkiCittc2dzdHIgIuaYvuekuue8k+WtmOeahOaWh+S7tu+8iOm7mOiupO+8iSIKIAogIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQotbXNnaWQgInVzZSBsb3dlcmNhc2UgbGV0dGVycyBmb3IgJ2Fzc3VtZSB1bmNoYW5nZWQnIGZpbGVzIgotbXNnc3RyICIiCittc2dpZCAic2hvdyBkZWxldGVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgIuaYvuekuuW3suWIoOmZpOeahOaWh+S7tiIKIAogIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NwotbXNnaWQgInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIgotbXNnc3RyICIiCittc2dpZCAic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICLmmL7npLrlt7Lkv67mlLnnmoTmlofku7YiCiAKICM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKLSMsIGZ1enp5Ci1tc2dpZCAic2hvdyBkZWxldGVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCi1tc2dzdHIgIuWIoOmZpOeahOaWh+S7tiAlcyDku43mnInlhoXlrrkiCittc2dpZCAic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IgorbXNnc3RyICLmmL7npLrlhbblroPmlofku7YiCiAKICM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzEKLW1zZ2lkICJzaG93IG1vZGlmaWVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MwotbXNnaWQgInNob3cgb3RoZXIgZmlsZXMgaW4gdGhlIG91dHB1dCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc1CiBtc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65b+955Wl55qE5paH5Lu2IgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc0Cittc2dpZCAic2hvdyBzdGFnZWQgY29udGVudHMnIG9iamVjdCBuYW1lIGluIHRoZSBvdXRwdXQiCittc2dzdHIgIuaYvuekuuaaguWtmOWMuuWGheWuueeahOWvueixoeWQjeensCIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NgorbXNnaWQgInNob3cgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQiCittc2dzdHIgIuaYvuekuuaWh+S7tuezu+e7n+mcgOimgeWIoOmZpOeahOaWh+S7tiIKIAogIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3OAotbXNnaWQgInNob3cgc3RhZ2VkIGNvbnRlbnRzJyBvYmplY3QgbmFtZSBpbiB0aGUgb3V0cHV0IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODAKLW1zZ2lkICJzaG93IGZpbGVzIG9uIHRoZSBmaWxlc3lzdGVtIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODIKIG1zZ2lkICJzaG93ICdvdGhlcicgZGlyZWN0b3JpZXMnIG5hbWUgb25seSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlj6rmmL7npLrigJzlhbbku5bigJ3nm67lvZXnmoTlkI3np7AiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODUKLSMsIGZ1enp5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDgxCiBtc2dpZCAiZG9uJ3Qgc2hvdyBlbXB0eSBkaXJlY3RvcmllcyIKLW1zZ3N0ciAi5Lik5Liq6L6T5Ye655uu5b2V77yfIgorbXNnc3RyICLkuI3mmL7npLrnqbrnm67lvZUiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODQKK21zZ2lkICJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiCittc2dzdHIgIuaYvuekuuacquWQiOW5tueahOaWh+S7tiIKKworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NgorbXNnaWQgInNob3cgcmVzb2x2ZS11bmRvIGluZm9ybWF0aW9uIgorbXNnc3RyICLmmL7npLogcmVzb2x2ZS11bmRvIOS/oeaBryIKIAogIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4OAotbXNnaWQgInNob3cgdW5tZXJnZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwCi1tc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MgotIywgZnV6enkKIG1zZ2lkICJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iCi1tc2dzdHIgIui+k+WHuuWSjOaooeW8j+WMuemFjeeahOihjCIKK21zZ3N0ciAi5Yy56YWN5o6S6Zmk5paH5Lu255qE5qih5byPIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk1CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkxCiBtc2dpZCAiZXhjbHVkZSBwYXR0ZXJucyBhcmUgcmVhZCBmcm9tIDxmaWxlPiIKLW1zZ3N0ciAiIgorbXNnc3RyICLku44gPOaWh+S7tj4g5Lit6K+75Y+W5o6S6Zmk5qih5byPIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0CiBtc2dpZCAicmVhZCBhZGRpdGlvbmFsIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBwYXR0ZXJucyBpbiA8ZmlsZT4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LuOIDzmlofku7Y+IOivu+WPlumineWklueahOavj+S4quebruW9leeahOaOkumZpOaooeW8jyIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgogbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5re75Yqg5qCH5YeG55qEIGdpdCDmjpLpmaQiCisKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTkKK21zZ2lkICJtYWtlIHRoZSBvdXRwdXQgcmVsYXRpdmUgdG8gdGhlIHByb2plY3QgdG9wIGRpcmVjdG9yeSIKK21zZ3N0ciAi5pi+56S655u45a+55LqO6aG257qn55uu5b2V55qE5paH5Lu25ZCNIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCittc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgorbXNnc3RyICLlpoLmnpzku7vkvZUgPOaWh+S7tj4g6YO95LiN5Zyo57Si5byV5Yy677yM6KeG5Li66ZSZ6K+vIgogCiAjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAzCi1tc2dpZCAibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiCi1tc2dzdHIgIiIKK21zZ2lkICJ0cmVlLWlzaCIKK21zZ3N0ciAi5qCR5oiW5o+Q5LqkIgorCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA0Cittc2dpZCAicHJldGVuZCB0aGF0IHBhdGhzIHJlbW92ZWQgc2luY2UgPHRyZWUtaXNoPiBhcmUgc3RpbGwgcHJlc2VudCIKK21zZ3N0ciAi5YGH6KOF6Ieq5LuOIDzmoJHmiJbmj5DkuqQ+IOS5i+WQjuWIoOmZpOeahOi3r+W+hOS7jeeEtuWtmOWcqCIKIAogIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNgotbXNnaWQgImlmIGFueSA8ZmlsZT4gaXMgbm90IGluIHRoZSBpbmRleCwgdHJlYXQgdGhpcyBhcyBhbiBlcnJvciIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA3Ci1tc2dpZCAidHJlZS1pc2giCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOAotbXNnaWQgInByZXRlbmQgdGhhdCBwYXRocyByZW1vdmVkIHNpbmNlIDx0cmVlLWlzaD4gYXJlIHN0aWxsIHByZXNlbnQiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9scy1maWxlcy5jOjUxMAogbXNnaWQgInNob3cgZGVidWdnaW5nIGRhdGEiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S66LCD6K+V5pWw5o2uIgogCiAjOiBidWlsdGluL2xzLXRyZWUuYzoyNwotIywgZnV6enkKIG1zZ2lkICJnaXQgbHMtdHJlZSBbPG9wdGlvbnM+XSA8dHJlZS1pc2g+IFs8cGF0aD4uLi5dIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IGxzLXRyZWUgWzzpgInpobk+XSA85qCR5oiW5o+Q5LqkPiBbPOi3r+W+hD4uLi5dIgogCiAjOiBidWlsdGluL2xzLXRyZWUuYzoxMjUKIG1zZ2lkICJvbmx5IHNob3cgdHJlZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5pi+56S65qCRIgogCiAjOiBidWlsdGluL2xzLXRyZWUuYzoxMjcKLSMsIGZ1enp5CiBtc2dpZCAicmVjdXJzZSBpbnRvIHN1YnRyZWVzIgotbXNnc3RyICLlj5jln7rliLDov5znqIsgJXMiCittc2dzdHIgIumAkuW9kuWIsOWtkOagkSIKIAogIzogYnVpbHRpbi9scy10cmVlLmM6MTI5CiBtc2dpZCAic2hvdyB0cmVlcyB3aGVuIHJlY3Vyc2luZyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvZPpgJLlvZLml7bmmL7npLrmoJEiCiAKICM6IGJ1aWx0aW4vbHMtdHJlZS5jOjEzMgogbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIGJ5dGUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5p2h55uu5LulTlVM5a2X56ym57uI5q2iIgogCiAjOiBidWlsdGluL2xzLXRyZWUuYzoxMzMKLSMsIGZ1enp5CiBtc2dpZCAiaW5jbHVkZSBvYmplY3Qgc2l6ZSIKLW1zZ3N0ciAi5o+Q5L6b5LqG5peg5pWI5a+56LGhICclcyfjgIIiCittc2dzdHIgIuWMheaLrOWvueixoeWkp+WwjyIKIAogIzogYnVpbHRpbi9scy10cmVlLmM6MTM1IGJ1aWx0aW4vbHMtdHJlZS5jOjEzNwogbXNnaWQgImxpc3Qgb25seSBmaWxlbmFtZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5YiX5Ye65paH5Lu25ZCNIgogCiAjOiBidWlsdGluL2xzLXRyZWUuYzoxNDAKIG1zZ2lkICJ1c2UgZnVsbCBwYXRoIG5hbWVzIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOaWh+S7tueahOWFqOi3r+W+hCIKIAogIzogYnVpbHRpbi9scy10cmVlLmM6MTQyCiBtc2dpZCAibGlzdCBlbnRpcmUgdHJlZTsgbm90IGp1c3QgY3VycmVudCBkaXJlY3RvcnkgKGltcGxpZXMgLS1mdWxsLW5hbWUpIgotbXNnc3RyICIiCittc2dzdHIgIuWIl+WHuuaVtOS4quagke+8m+S4jeS7heS7heW9k+WJjeebruW9le+8iOmakOWQqyAtLWZ1bGwtbmFtZe+8iSIKIAogIzogYnVpbHRpbi9tZXJnZS5jOjQzCi0jLCBmdXp6eQogbXNnaWQgImdpdCBtZXJnZSBbb3B0aW9uc10gWzxjb21taXQ+Li4uXSIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBtZXJnZSBb6YCJ6aG5XSBbPOaPkOS6pD4uLi5dIgogCiAjOiBidWlsdGluL21lcmdlLmM6NDQKIG1zZ2lkICJnaXQgbWVyZ2UgW29wdGlvbnNdIDxtc2c+IEhFQUQgPGNvbW1pdD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG1lcmdlIFvpgInpobldIDzor7TmmI4+IEhFQUQgPOaPkOS6pD4iCiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzo0NQogbXNnaWQgImdpdCBtZXJnZSAtLWFib3J0IgotbXNnc3RyICIiCittc2dzdHIgImdpdCBtZXJnZSAtLWFib3J0IgogCiAjOiBidWlsdGluL21lcmdlLmM6OTAKIG1zZ2lkICJzd2l0Y2ggYG0nIHJlcXVpcmVzIGEgdmFsdWUiCkBAIC01NzgxLDIxMCArNjE2OCwyMDYgQEAKIAogIzogYnVpbHRpbi9tZXJnZS5jOjE4MwogbXNnaWQgImRvIG5vdCBzaG93IGEgZGlmZnN0YXQgYXQgdGhlIGVuZCBvZiB0aGUgbWVyZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Zyo5ZCI5bm255qE5pyA5ZCO5LiN5pi+56S65beu5byC57uf6K6hIgogCiAjOiBidWlsdGluL21lcmdlLmM6MTg2CiBtc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgotbXNnc3RyICIiCittc2dzdHIgIuWcqOWQiOW5tueahOacgOWQjuaYvuekuuW3ruW8gue7n+iuoSIKIAogIzogYnVpbHRpbi9tZXJnZS5jOjE4NwogbXNnaWQgIihzeW5vbnltIHRvIC0tc3RhdCkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi77yI5ZKMIC0tc3RhdCDlkIzkuYnvvIkiCiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzoxODkKIG1zZ2lkICJhZGQgKGF0IG1vc3QgPG4+KSBlbnRyaWVzIGZyb20gc2hvcnRsb2cgdG8gbWVyZ2UgY29tbWl0IG1lc3NhZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Zyo5ZCI5bm25o+Q5Lqk5L+h5oGv5Lit5re75Yqg77yI5pyA5aSaIDxuPiDmnaHvvInnsr7nroDmj5DkuqTorrDlvZUiCiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTIKLSMsIGZ1enp5CiBtc2dpZCAiY3JlYXRlIGEgc2luZ2xlIGNvbW1pdCBpbnN0ZWFkIG9mIGRvaW5nIGEgbWVyZ2UiCi1tc2dzdHIgIuWcqOWQiOW5tui/h+eoi+S4reS4jeiDveWBmumDqOWIhuaPkOS6pOOAgiIKK21zZ3N0ciAi5Yib5bu65LiA5Liq5Y2V54us55qE5o+Q5Lqk6ICM5LiN5piv5YGa5LiA5qyh5ZCI5bm2IgogCiAjOiBidWlsdGluL21lcmdlLmM6MTk0CiBtc2dpZCAicGVyZm9ybSBhIGNvbW1pdCBpZiB0aGUgbWVyZ2Ugc3VjY2VlZHMgKGRlZmF1bHQpIgotbXNnc3RyICIiCittc2dzdHIgIuWmguaenOWQiOW5tuaIkOWKn++8jOaJp+ihjOS4gOasoeaPkOS6pO+8iOm7mOiupO+8iSIKIAogIzogYnVpbHRpbi9tZXJnZS5jOjE5NgotIywgZnV6enkKIG1zZ2lkICJlZGl0IG1lc3NhZ2UgYmVmb3JlIGNvbW1pdHRpbmciCi1tc2dzdHIgIuWwmuacquaaguWtmOS7peWkh+aPkOS6pOeahOWPmOabtO+8miIKK21zZ3N0ciAi5Zyo5o+Q5Lqk5YmN57yW6L6R5o+Q5Lqk6K+05piOIgogCiAjOiBidWlsdGluL21lcmdlLmM6MTk4Ci0jLCBmdXp6eQogbXNnaWQgImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiCi1tc2dzdHIgIuWPr+W/q+i/myIKK21zZ3N0ciAi5YWB6K645b+r6L+b77yI6buY6K6k77yJIgogCiAjOiBidWlsdGluL21lcmdlLmM6MjAwCiBtc2dpZCAiYWJvcnQgaWYgZmFzdC1mb3J3YXJkIGlzIG5vdCBwb3NzaWJsZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL21lcmdlLmM6MjAyIGJ1aWx0aW4vbm90ZXMuYzo4NjcgYnVpbHRpbi9yZXZlcnQuYzoxMTIKLW1zZ2lkICJzdHJhdGVneSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlpoLmnpzkuI3og73lv6vov5vlsLHmlL7lvIPlkIjlubYiCiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDMKLSMsIGZ1enp5Ci1tc2dpZCAibWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIgotbXNnc3RyICLlsJ3or5XlkIjlubbnrZbnlaUgJXMuLi5cbiIKK21zZ2lkICJWZXJpZnkgdGhhdCB0aGUgbmFtZWQgY29tbWl0IGhhcyBhIHZhbGlkIEdQRyBzaWduYXR1cmUiCittc2dzdHIgIumqjOivgeaMh+WumueahOaPkOS6pOaYr+WQpuWMheWQq+S4gOS4quacieaViOeahCBHUEcg562+5ZCNIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA0Ci1tc2dpZCAib3B0aW9uPXZhbHVlIgotbXNnc3RyICIiCisjOiBidWlsdGluL21lcmdlLmM6MjA0IGJ1aWx0aW4vbm90ZXMuYzo4NjYgYnVpbHRpbi9yZXZlcnQuYzoxMTIKK21zZ2lkICJzdHJhdGVneSIKK21zZ3N0ciAi562W55WlIgogCiAjOiBidWlsdGluL21lcmdlLmM6MjA1Ci1tc2dpZCAib3B0aW9uIGZvciBzZWxlY3RlZCBtZXJnZSBzdHJhdGVneSIKLW1zZ3N0ciAiIgorbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKK21zZ3N0ciAi6KaB5L2/55So55qE5ZCI5bm2562W55WlIgorCisjOiBidWlsdGluL21lcmdlLmM6MjA2Cittc2dpZCAib3B0aW9uPXZhbHVlIgorbXNnc3RyICJvcHRpb249dmFsdWUiCiAKICM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKK21zZ2lkICJvcHRpb24gZm9yIHNlbGVjdGVkIG1lcmdlIHN0cmF0ZWd5IgorbXNnc3RyICLmiYDpgInnmoTlkIjlubbnrZbnlaXnmoTpgInpobkiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKIG1zZ2lkICJtZXJnZSBjb21taXQgbWVzc2FnZSAoZm9yIGEgbm9uLWZhc3QtZm9yd2FyZCBtZXJnZSkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5ZCI5bm255qE5o+Q5Lqk6K+05piO77yI6ZKI5a+56Z2e5b+r6L+b5byP5ZCI5bm277yJIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjExCi0jLCBmdXp6eQorIzogYnVpbHRpbi9tZXJnZS5jOjIxMwogbXNnaWQgImFib3J0IHRoZSBjdXJyZW50IGluLXByb2dyZXNzIG1lcmdlIgotbXNnc3RyICLml6Dms5Xkv53lrZjlvZPliY3ntKLlvJXnirbmgIEiCittc2dzdHIgIuaUvuW8g+W9k+WJjeato+WcqOi/m+ihjOeahOWQiOW5tiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI0MAorIzogYnVpbHRpbi9tZXJnZS5jOjI0MgogbXNnaWQgImNvdWxkIG5vdCBydW4gc3Rhc2guIgogbXNnc3RyICLkuI3og73ov5vooYzov5vluqbkv53lrZjjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDcKIG1zZ2lkICJzdGFzaCBmYWlsZWQiCiBtc2dzdHIgIui/m+W6puS/neWtmOWksei0pSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MAorIzogYnVpbHRpbi9tZXJnZS5jOjI1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICLkuI3mmK/kuIDkuKrmnInmlYjlr7nosaHvvJolcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI2OSBidWlsdGluL21lcmdlLmM6Mjg2CisjOiBidWlsdGluL21lcmdlLmM6MjcxIGJ1aWx0aW4vbWVyZ2UuYzoyODgKIG1zZ2lkICJyZWFkLXRyZWUgZmFpbGVkIgogbXNnc3RyICLor7vlj5bmoJHlpLHotKUiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9tZXJnZS5jOjMxNgorIzogYnVpbHRpbi9tZXJnZS5jOjMxOAogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIg77yI5peg5Y+v5Y6L57yp77yJIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzI5CisjOiBidWlsdGluL21lcmdlLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNxdWFzaCBjb21taXQgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAi5Y6L57yp5o+Q5LqkIC0tIOacquabtOaWsCBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKIG1zZ2lkICJXcml0aW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIuWGmeWFpSBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYzCisjOiBidWlsdGluL21lcmdlLmM6MzY1CiBtc2dpZCAiRmluaXNoaW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIuWujOaIkCBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6Mzg2CisjOiBidWlsdGluL21lcmdlLmM6Mzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIG1lc3NhZ2UgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAi5peg5ZCI5bm25L+h5oGvIC0tIOacquabtOaWsCBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKIG1zZ3N0ciAiJyVzJyDmsqHmnInmjIflkJHkuIDkuKrmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo1MzUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo1NTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMgc3RyaW5nOiAlcyIKIG1zZ3N0ciAi5Z2P55qEIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMg5a2X56ym5Liy77yaJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2MjgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBmYWlsZWQgdG8gd3JpdGUgYSB0cmVlIgogbXNnc3RyICJnaXQgd3JpdGUtdHJlZSDml6Dms5XlhpnlhaXkuIDmoJHlr7nosaEiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2NzgKLW1zZ2lkICJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiCi1tc2dzdHIgIuaXoOazleivu+WPlue8k+WtmCIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjcwOQorIzogYnVpbHRpbi9tZXJnZS5jOjY3MQogbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIuS4jeiDveWkhOeQhuS4pOS4quWktOWQiOW5tuS5i+WklueahOS7u+S9leaTjeS9nOOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjcyMworIzogYnVpbHRpbi9tZXJnZS5jOjY4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogbXNnc3RyICJtZXJnZS1yZWN1cnNpdmUg55qE5pyq55+l6YCJ6aG577yaLVglcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjczNworIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgJXMiCiBtc2dzdHIgIuS4jeiDveWGmSAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg3NgorIzogYnVpbHRpbi9tZXJnZS5jOjc4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBmcm9tICclcyciCiBtc2dzdHIgIuS4jeiDveS7jiAnJXMnIOivu+WPliIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjg4NQorIzogYnVpbHRpbi9tZXJnZS5jOjc5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgY29tbWl0dGluZyBtZXJnZTsgdXNlICdnaXQgY29tbWl0JyB0byBjb21wbGV0ZSB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIuacquaPkOS6pOWQiOW5tu+8jOS9v+eUqCAnZ2l0IGNvbW1pdCcg5a6M5oiQ5q2k5qyh5ZCI5bm244CCXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4OTEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgogImVzcGVjaWFsbHkgaWYgaXQgbWVyZ2VzIGFuIHVwZGF0ZWQgdXBzdHJlYW0gaW50byBhIHRvcGljIGJyYW5jaC5cbiIKICJcbiIKLSJMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGlnbm9yZWQsIGFuZCBhbiBlbXB0eSBtZXNzYWdlIGFib3J0c1xuIgogInRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKICLor7fovpPlhaXkuIDkuKrmj5DkuqTkv6Hmga/ku6Xop6Pph4rmraTlkIjlubbnmoTlv4XopoHmgKfvvIzlsKTlhbbmmK/lsIbkuIDkuKrmm7TmlrDlkI7nmoTkuIrmuLjliIbmlK9cbiIKICLlkIjlubbliLDkuLvpopjliIbmlK/jgIJcbiIKICJcbiIKLSLku6UgJyMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpe+8jOiAjOS4lOepuuaPkOS6pOivtOaYjuWwhuS8mue7iOatouaPkOS6pOOAglxuIgorIuS7pSAnJWMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpe+8jOiAjOS4lOepuuaPkOS6pOivtOaYjuWwhuS8mue7iOatouaPkOS6pOOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTE1CisjOiBidWlsdGluL21lcmdlLmM6ODI3CiBtc2dpZCAiRW1wdHkgY29tbWl0IG1lc3NhZ2UuIgogbXNnc3RyICLnqbrmj5DkuqTkv6Hmga/jgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICLlpKrmo5LkuobjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk5MgorIzogYnVpbHRpbi9tZXJnZS5jOjkwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvbWF0aWMgbWVyZ2UgZmFpbGVkOyBmaXggY29uZmxpY3RzIGFuZCB0aGVuIGNvbW1pdCB0aGUgcmVzdWx0LlxuIgogbXNnc3RyICLoh6rliqjlkIjlubblpLHotKXvvIzkv67mraPlhrLnqoHnhLblkI7mj5DkuqTkv67mraPnmoTnu5PmnpzjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwMDgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBpcyBub3QgYSBjb21taXQiCiBtc2dzdHIgIiclcycg5LiN5piv5LiA5Liq5o+Q5LqkIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA0OQorIzogYnVpbHRpbi9tZXJnZS5jOjk2MQogbXNnaWQgIk5vIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5rKh5pyJ5b2T5YmN5YiG5pSv44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1MQorIzogYnVpbHRpbi9tZXJnZS5jOjk2MwogbXNnaWQgIk5vIHJlbW90ZSBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5b2T5YmN5YiG5pSv5rKh5pyJ5a+55bqU55qE6L+c56iL54mI5pys5bqT44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1MworIzogYnVpbHRpbi9tZXJnZS5jOjk2NQogbXNnaWQgIk5vIGRlZmF1bHQgdXBzdHJlYW0gZGVmaW5lZCBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5b2T5YmN5YiG5pSv5rKh5pyJ5a6a5LmJ6buY6K6k55qE5LiK5ri45YiG5pSv44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1OAorIzogYnVpbHRpbi9tZXJnZS5jOjk3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyByZW1vdGUgdHJhY2tpbmcgYnJhbmNoIGZvciAlcyBmcm9tICVzIgogbXNnc3RyICIlcyDmsqHmnInmnaXoh6ogJXMg55qE6L+c56iL6Lef6Liq5YiG5pSvIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0NSBidWlsdGluL21lcmdlLmM6MTMwMgorIzogYnVpbHRpbi9tZXJnZS5jOjEwNTcgYnVpbHRpbi9tZXJnZS5jOjEyMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKIG1zZ3N0ciAiJXMgLSDkuI3og73ooqvlkIjlubYiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjEzCisjOiBidWlsdGluL21lcmdlLmM6MTEyNQogbXNnaWQgIlRoZXJlIGlzIG5vIG1lcmdlIHRvIGFib3J0IChNRVJHRV9IRUFEIG1pc3NpbmcpLiIKIG1zZ3N0ciAi5rKh5pyJ6KaB57uI5q2i55qE5ZCI5bm277yITUVSR0VfSEVBRCDkuKLlpLHvvInjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjI5IGdpdC1wdWxsLnNoOjMxCisjOiBidWlsdGluL21lcmdlLmM6MTE0MSBnaXQtcHVsbC5zaDozMQogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtNTk5MiwxMSArNjM3NSwxMSBAQAogIuaCqOWwmuacque7k+adn+aCqOeahOWQiOW5tu+8iOWtmOWcqCBNRVJHRV9IRUFE77yJ44CCXG4iCiAi6K+35Zyo5ZCI5bm25YmN5YWI5o+Q5Lqk5oKo55qE5L+u5pS544CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzMiBnaXQtcHVsbC5zaDozNAorIzogYnVpbHRpbi9tZXJnZS5jOjExNDQgZ2l0LXB1bGwuc2g6MzQKIG1zZ2lkICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS4iCiBtc2dzdHIgIuaCqOWwmuacque7k+adn+aCqOeahOWQiOW5tu+8iOWtmOWcqCBNRVJHRV9IRUFE77yJ44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzNgorIzogYnVpbHRpbi9tZXJnZS5jOjExNDgKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKQEAgLTYwMDQsMTgzICs2Mzg3LDIwMiBAQAogIuaCqOWwmuacque7k+adn+aCqOeahOaLo+mAie+8iOWtmOWcqCBDSEVSUllfUElDS19IRUFE77yJ44CCXG4iCiAi6K+35Zyo5ZCI5bm25YmN5YWI5o+Q5Lqk5oKo55qE5L+u5pS544CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIzOQorIzogYnVpbHRpbi9tZXJnZS5jOjExNTEKIG1zZ2lkICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS4iCiBtc2dzdHIgIuaCqOWwmuacque7k+adn+aCqOeahOaLo+mAie+8iOWtmOWcqCBDSEVSUllfUElDS19IRUFE77yJ44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI0OAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKIG1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1zcXVhc2ggd2l0aCAtLW5vLWZmLiIKIG1zZ3N0ciAi5oKo5LiN6IO95bCGIC0tc3F1YXNoIOS4jiAtLW5vLWZmIOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTY1CiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tbm8tZmYgd2l0aCAtLWZmLW9ubHkuIgogbXNnc3RyICLmgqjkuI3og73lsIYgLS1uby1mZiDkuI4gLS1mZi1vbmx5IOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNjAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCiBtc2dpZCAiTm8gY29tbWl0IHNwZWNpZmllZCBhbmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gbm90IHNldC4iCiBtc2dzdHIgIuacquaMh+WumuaPkOS6pOW5tuS4lCBtZXJnZS5kZWZhdWx0VG9VcHN0cmVhbSDmnKrorr7nva7jgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjkyCisjOiBidWlsdGluL21lcmdlLmM6MTIwNAogbXNnaWQgIkNhbiBtZXJnZSBvbmx5IGV4YWN0bHkgb25lIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuWPquiDveWwhuS4gOS4quaPkOS6pOWQiOW5tuWIsOepuuWIhuaUr+S4iiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA3CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQgbm90IHN1cHBvcnRlZCB5ZXQiCiBtc2dzdHIgIuWwmuS4jeaUr+aMgeWIsOepuuWIhuaUr+eahOWOi+e8qeaPkOS6pCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyOTcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CiBtc2dpZCAiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvIGFuIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuWIsOepuuWIhuaUr+eahOmdnuW/q+i/m+W8j+aPkOS6pOayoeacieaEj+S5iSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYW4gdW50cnVzdGVkIEdQRyBzaWduYXR1cmUsIGFsbGVnZWRseSBieSAlcy4iCittc2dzdHIgIuaPkOS6pCAlcyDmnInkuIDkuKrpnZ7lj6/kv6HnmoTlo7Dnp7DmnaXoh6ogJXMg55qEIEdQRyDnrb7lkI3jgIIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBiYWQgR1BHIHNpZ25hdHVyZSBhbGxlZ2VkbHkgYnkgJXMuIgorbXNnc3RyICLmj5DkuqQgJXMg5pyJ5LiA5Liq6ZSZ6K+v55qE5aOw56ew5p2l6IeqICVzIOeahCBHUEcg562+5ZCN44CCIgorCisjLiAnTicKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIGEgR1BHIHNpZ25hdHVyZS4iCittc2dzdHIgIuaPkOS6pCAlcyDmsqHmnInkuIDkuKogR1BHIOetvuWQjeOAgiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGdvb2QgR1BHIHNpZ25hdHVyZSBieSAlc1xuIgorbXNnc3RyICLmj5DkuqQgJXMg5pyJ5LiA5Liq5p2l6IeqICVzIOeahOWlveeahCBHUEcg562+5ZCN44CCXG4iCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzLi4lc1xuIgogbXNnc3RyICLmm7TmlrAgJXMuLiVzXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDUwCisjOiBidWlsdGluL21lcmdlLmM6MTM5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAi5bCd6K+V6Z2e5bi45bCP55qE57Si5byV5YaF5ZCI5bm2Li4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU3CisjOiBidWlsdGluL21lcmdlLmM6MTQwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICLml6DjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0ODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDM2CiBtc2dpZCAiTm90IHBvc3NpYmxlIHRvIGZhc3QtZm9yd2FyZCwgYWJvcnRpbmcuIgogbXNnc3RyICLml6Dms5Xlv6vov5vvvIznu4jmraLjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTEyIGJ1aWx0aW4vbWVyZ2UuYzoxNTkxCisjOiBidWlsdGluL21lcmdlLmM6MTQ1OSBidWlsdGluL21lcmdlLmM6MTUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXdpbmRpbmcgdGhlIHRyZWUgdG8gcHJpc3RpbmUuLi5cbiIKIG1zZ3N0ciAi5bCG5qCR5Zue5rua6Iez5Y6f5aeL54q25oCBLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTE2CisjOiBidWlsdGluL21lcmdlLmM6MTQ2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAi5bCd6K+V5ZCI5bm2562W55WlICVzLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTgyCisjOiBidWlsdGluL21lcmdlLmM6MTUyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBzdHJhdGVneSBoYW5kbGVkIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAi5rKh5pyJ5ZCI5bm2562W55Wl5aSE55CG5q2k5ZCI5bm244CCXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTg0CisjOiBidWlsdGluL21lcmdlLmM6MTUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAi5L2/55So562W55WlICVzIOWQiOW5tuWksei0peOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU5MworIzogYnVpbHRpbi9tZXJnZS5jOjE1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIuS9v+eUqCAlcyDku6Xlh4blpIfmiYvlt6Xop6PlhrPjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE2MDUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSB3ZW50IHdlbGw7IHN0b3BwZWQgYmVmb3JlIGNvbW1pdHRpbmcgYXMgcmVxdWVzdGVkXG4iCiBtc2dzdHIgIuiHquWKqOWQiOW5tui/m+WxlemhuuWIqe+8jOaMieimgeaxguWcqOaPkOS6pOWJjeWBnOatolxuIgogCiAjOiBidWlsdGluL21lcmdlLWJhc2UuYzoyNgogbXNnaWQgImdpdCBtZXJnZS1iYXNlIFstYXwtLWFsbF0gPGNvbW1pdD4gPGNvbW1pdD4uLi4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG1lcmdlLWJhc2UgWy1hfC0tYWxsXSA85o+Q5LqkPiA85o+Q5LqkPi4uLiIKIAogIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjcKIG1zZ2lkICJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIC0tb2N0b3B1cyA8Y29tbWl0Pi4uLiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgbWVyZ2UtYmFzZSBbLWF8LS1hbGxdIC0tb2N0b3B1cyA85o+Q5LqkPi4uLiIKIAogIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6MjgKIG1zZ2lkICJnaXQgbWVyZ2UtYmFzZSAtLWluZGVwZW5kZW50IDxjb21taXQ+Li4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBtZXJnZS1iYXNlIC0taW5kZXBlbmRlbnQgPOaPkOS6pD4uLi4iCiAKICM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjI5CiBtc2dpZCAiZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciA8Y29tbWl0PiA8Y29tbWl0PiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIDzmj5DkuqQ+IDzmj5DkuqQ+IgogCiAjOiBidWlsdGluL21lcmdlLWJhc2UuYzo5OAotIywgZnV6enkKIG1zZ2lkICJvdXRwdXQgYWxsIGNvbW1vbiBhbmNlc3RvcnMiCi1tc2dzdHIgIuWPkeeOsCAldSDkuKrlhbHlkIznpZblhYjvvJoiCittc2dzdHIgIui+k+WHuuaJgOacieWFseWQjOeahOelluWFiCIKIAogIzogYnVpbHRpbi9tZXJnZS1iYXNlLmM6OTkKIG1zZ2lkICJmaW5kIGFuY2VzdG9ycyBmb3IgYSBzaW5nbGUgbi13YXkgbWVyZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5p+l5om+5LiA5Liq5aSa6Lev5ZCI5bm255qE56WW5YWI5o+Q5LqkIgogCiAjOiBidWlsdGluL21lcmdlLWJhc2UuYzoxMDAKIG1zZ2lkICJsaXN0IHJldnMgbm90IHJlYWNoYWJsZSBmcm9tIG90aGVycyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrkuI3og73ooqvlhbbku5borr/pl67liLDnmoTniYjmnKwiCiAKICM6IGJ1aWx0aW4vbWVyZ2UtYmFzZS5jOjEwMgogbXNnaWQgImlzIHRoZSBmaXJzdCBvbmUgYW5jZXN0b3Igb2YgdGhlIG90aGVyPyIKLW1zZ3N0ciAiIgorbXNnc3RyICLnrKzkuIDkuKrmmK/lhbbku5bnmoTnpZblhYjmj5DkuqTkuYjvvJ8iCiAKICM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjgKIG1zZ2lkICIiCiAiZ2l0IG1lcmdlLWZpbGUgW29wdGlvbnNdIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlICIKICJmaWxlMiIKIG1zZ3N0ciAiIgorImdpdCBtZXJnZS1maWxlIFvpgInpobldIFstTCBuYW1lMSBbLUwgb3JpZyBbLUwgbmFtZTJdXV0gZmlsZTEgb3JpZ19maWxlIGZpbGUyIgogCiAjOiBidWlsdGluL21lcmdlLWZpbGUuYzozMwogbXNnaWQgInNlbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRwdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5bCG57uT5p6c5Y+R6YCB5Yiw5qCH5YeG6L6T5Ye6IgogCiAjOiBidWlsdGluL21lcmdlLWZpbGUuYzozNAogbXNnaWQgInVzZSBhIGRpZmYzIGJhc2VkIG1lcmdlIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOWfuuS6jiBkaWZmMyDnmoTlkIjlubYiCiAKICM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM1CiBtc2dpZCAiZm9yIGNvbmZsaWN0cywgdXNlIG91ciB2ZXJzaW9uIgotbXNnc3RyICIiCittc2dzdHIgIuWmguaenOWGsueqge+8jOS9v+eUqOaIkeS7rOeahOeJiOacrCIKIAogIzogYnVpbHRpbi9tZXJnZS1maWxlLmM6MzcKIG1zZ2lkICJmb3IgY29uZmxpY3RzLCB1c2UgdGhlaXIgdmVyc2lvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLlpoLmnpzlhrLnqoHvvIzkvb/nlKjku5bku6znmoTniYjmnKwiCiAKICM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjM5CiBtc2dpZCAiZm9yIGNvbmZsaWN0cywgdXNlIGEgdW5pb24gdmVyc2lvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLlpoLmnpzlhrLnqoHvvIzkvb/nlKjogZTlkIjniYjmnKwiCiAKICM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQyCiBtc2dpZCAiZm9yIGNvbmZsaWN0cywgdXNlIHRoaXMgbWFya2VyIHNpemUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5aaC5p6c5Yay56qB77yM5L2/55So5oyH5a6a6ZW/5bqm55qE5qCH6K6wIgogCiAjOiBidWlsdGluL21lcmdlLWZpbGUuYzo0MwogbXNnaWQgImRvIG5vdCB3YXJuIGFib3V0IGNvbmZsaWN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLkuI3opoHorablkYrlhrLnqoEiCiAKICM6IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ1CiBtc2dpZCAic2V0IGxhYmVscyBmb3IgZmlsZTEvb3JpZ19maWxlL2ZpbGUyIgotbXNnc3RyICIiCittc2dzdHIgIuS4uiBmaWxlMS9vcmlnX2ZpbGUvZmlsZTIg6K6+572u5qCH562+IgogCiAjOiBidWlsdGluL21rdHJlZS5jOjY3CiBtc2dpZCAiZ2l0IG1rdHJlZSBbLXpdIFstLW1pc3NpbmddIFstLWJhdGNoXSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgbWt0cmVlIFstel0gWy0tbWlzc2luZ10gWy0tYmF0Y2hdIgogCiAjOiBidWlsdGluL21rdHJlZS5jOjE1MwogbXNnaWQgImlucHV0IGlzIE5VTCB0ZXJtaW5hdGVkIgotbXNnc3RyICIiCittc2dzdHIgIui+k+WFpeS7pSBOVUwg5a2X56ym57uI5q2iIgogCiAjOiBidWlsdGluL21rdHJlZS5jOjE1NCBidWlsdGluL3dyaXRlLXRyZWUuYzoyNAotIywgZnV6enkKIG1zZ2lkICJhbGxvdyBtaXNzaW5nIG9iamVjdHMiCi1tc2dzdHIgIuaOpeaUtuWvueixoeS4rSIKK21zZ3N0ciAi5YWB6K645Lii5aSx55qE5a+56LGhIgogCiAjOiBidWlsdGluL21rdHJlZS5jOjE1NQogbXNnaWQgImFsbG93IGNyZWF0aW9uIG9mIG1vcmUgdGhhbiBvbmUgdHJlZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlhYHorrjliJvlu7rkuIDkuKrku6XkuIrnmoTmoJEiCiAKICM6IGJ1aWx0aW4vbXYuYzoxNAogbXNnaWQgImdpdCBtdiBbb3B0aW9uc10gPHNvdXJjZT4uLi4gPGRlc3RpbmF0aW9uPiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgbXYgW+mAiemhuV0gPOa6kD4uLi4gPOebruaghz4iCiAKICM6IGJ1aWx0aW4vbXYuYzo2NAogbXNnaWQgImZvcmNlIG1vdmUvcmVuYW1lIGV2ZW4gaWYgdGFyZ2V0IGV4aXN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlvLrliLbnp7vliqgv6YeN5ZG95Luk77yM5Y2z5L2/55uu5qCH5a2Y5ZyoIgogCiAjOiBidWlsdGluL212LmM6NjUKLSMsIGZ1enp5CiBtc2dpZCAic2tpcCBtb3ZlL3JlbmFtZSBlcnJvcnMiCi1tc2dzdHIgIueoi+W6j+mUmeivryIKK21zZ3N0ciAi6Lez6L+H56e75YqoL+mHjeWRveWQjemUmeivryIKIAogIzogYnVpbHRpbi9tdi5jOjEwOAogIywgYy1mb3JtYXQKQEAgLTYyNDUsMzI2ICs2NjQ3LDMxNCBAQAogbXNnc3RyICLph43lkb3lkI0gJyVzJyDlpLHotKUiCiAKICM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzUKLSMsIGZ1enp5CiBtc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSA8Y29tbWl0Pi4uLiIKLW1zZ3N0ciAiZ2l0IGFwcGx5IFvpgInpobldIFs86KGl5LiBPi4uLl0iCittc2dzdHIgImdpdCBuYW1lLXJldiBb6YCJ6aG5XSA85o+Q5LqkPi4uLiIKIAogIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NgogbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1hbGwiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5hbWUtcmV2IFvpgInpobldIC0tYWxsIgogCiAjOiBidWlsdGluL25hbWUtcmV2LmM6MTc3CiBtc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLXN0ZGluIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBuYW1lLXJldiBb6YCJ6aG5XSAtLXN0ZGluIgogCiAjOiBidWlsdGluL25hbWUtcmV2LmM6MjI5CiBtc2dpZCAicHJpbnQgb25seSBuYW1lcyAobm8gU0hBLTEpIgotbXNnc3RyICIiCittc2dzdHIgIuWPquaJk+WNsOWQjeensO+8iOaXoCBTSEEtMe+8iSIKIAogIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzMAogbXNnaWQgIm9ubHkgdXNlIHRhZ3MgdG8gbmFtZSB0aGUgY29tbWl0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlj6rkvb/nlKggdGFncyDmnaXlkb3lkI3mj5DkuqQiCiAKICM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzIKLSMsIGZ1enp5CiBtc2dpZCAib25seSB1c2UgcmVmcyBtYXRjaGluZyA8cGF0dGVybj4iCi1tc2dzdHIgIui+k+WHuuWSjOaooeW8j+WMuemFjeeahOihjCIKK21zZ3N0ciAi5Y+q5L2/55So5ZKMIDzmqKHlvI8+IOebuOWMuemFjeeahOW8leeUqCIKIAogIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNAogbXNnaWQgImxpc3QgYWxsIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gYWxsIHJlZnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5YiX5Ye65Y+v5Lul5LuO5omA5pyJ5byV55So6K6/6Zeu55qE5o+Q5LqkIgogCiAjOiBidWlsdGluL25hbWUtcmV2LmM6MjM1CiBtc2dpZCAicmVhZCBmcm9tIHN0ZGluIgotbXNnc3RyICIiCittc2dzdHIgIuS7juagh+WHhui+k+WFpeivu+WPliIKIAogIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNgogbXNnaWQgImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIgotbXNnc3RyICIiCittc2dzdHIgIuWFgeiuuOaJk+WNsCBg5pyq5a6a5LmJYCDnmoTlkI3np7AiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMworIzogYnVpbHRpbi9ub3Rlcy5jOjI2CiBtc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzxvYmplY3Q+XV0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gW2xpc3QgWzzlr7nosaE+XV0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3CiBtc2dpZCAiIgogImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCiAiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCiBtc2dzdHIgIiIKKyJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBhZGQgWy1mXSBbLW0gPOivtOaYjj4gfCAtRiA85paH5Lu2PiB8ICgtYyB8IC1DKSA85a+5IgorIuixoT5dIFs85a+56LGhPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNQorIzogYnVpbHRpbi9ub3Rlcy5jOjI4CiBtc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gY29weSBbLWZdIDxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gY29weSBbLWZdIDzmupDlr7nosaE+IDznm67moIflr7nosaE+IgogCi0jOiBidWlsdGluL25vdGVzLmM6MjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOQogbXNnaWQgIiIKICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhcHBlbmQgWy1tIDxtc2c+IHwgLUYgPGZpbGU+IHwgKC1jIHwgLUMpICIKICI8b2JqZWN0Pl0gWzxvYmplY3Q+XSIKIG1zZ3N0ciAiIgotCi0jOiBidWlsdGluL25vdGVzLmM6MjcKLW1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ub3Rlcy5jOjI4Ci1tc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gc2hvdyBbPG9iamVjdD5dIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzoyOQotbXNnaWQgIiIKLSJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxzdHJhdGVneT4gXSA8bm90ZXNfcmVmPiIKLW1zZ3N0ciAiIgorImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIGFwcGVuZCBbLW0gPOivtOaYjj4gfCAtRiA85paH5Lu2PiB8ICgtYyB8IC1DKSA85a+56LGhIgorIj5dIFs85a+56LGhPl0iCiAKICM6IGJ1aWx0aW4vbm90ZXMuYzozMAotbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iCi1tc2dzdHIgIiIKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIGVkaXQgWzzlr7nosaE+XSIKIAogIzogYnVpbHRpbi9ub3Rlcy5jOjMxCi1tc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWy12IHwgLXFdIgotbXNnc3RyICIiCittc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gc2hvdyBbPG9iamVjdD5dIgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBzaG93IFs85a+56LGhPl0iCiAKICM6IGJ1aWx0aW4vbm90ZXMuYzozMgotbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHJlbW92ZSBbPG9iamVjdD4uLi5dIgotbXNnc3RyICIiCittc2dpZCAiIgorImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIG1lcmdlIFstdiB8IC1xXSBbLXMgPHN0cmF0ZWd5PiBdIDxub3Rlc19yZWY+IgorbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDznrZbnlaU+IF0gPOazqOino+W8leeUqD4iCiAKICM6IGJ1aWx0aW4vbm90ZXMuYzozMwotbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIKLW1zZ3N0ciAiIgorbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iCiAKICM6IGJ1aWx0aW4vbm90ZXMuYzozNAorbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFstdiB8IC1xXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWy12IHwgLXFdIgorCisjOiBidWlsdGluL25vdGVzLmM6MzUKK21zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSByZW1vdmUgWzxvYmplY3Q+Li4uXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gcmVtb3ZlIFs85a+56LGhPi4uLl0iCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNgorbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIKK21zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gcHJ1bmUgWy1uIHwgLXZdIgorCisjOiBidWlsdGluL25vdGVzLmM6MzcKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBnZXQtcmVmIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIGdldC1yZWYiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozOQorIzogYnVpbHRpbi9ub3Rlcy5jOjQyCiBtc2dpZCAiZ2l0IG5vdGVzIFtsaXN0IFs8b2JqZWN0Pl1dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBub3RlcyBbbGlzdCBbPOWvueixoT5dXSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ3CiBtc2dpZCAiZ2l0IG5vdGVzIGFkZCBbPG9wdGlvbnM+XSBbPG9iamVjdD5dIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGFkZCBbPOmAiemhuT5dIFs85a+56LGhPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0OQorIzogYnVpbHRpbi9ub3Rlcy5jOjUyCiBtc2dpZCAiZ2l0IG5vdGVzIGNvcHkgWzxvcHRpb25zPl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgbm90ZXMgY29weSBbPOmAiemhuT5dIDzmupDlr7nosaE+IDznm67moIflr7nosaE+IgogCi0jOiBidWlsdGluL25vdGVzLmM6NTAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MwogbXNnaWQgImdpdCBub3RlcyBjb3B5IC0tc3RkaW4gWzxmcm9tLW9iamVjdD4gPHRvLW9iamVjdD5dLi4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBub3RlcyBjb3B5IC0tc3RkaW4gWzzmupDlr7nosaE+IDznm67moIflr7nosaE+XS4uLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU1Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9ub3Rlcy5jOjU4CiBtc2dpZCAiZ2l0IG5vdGVzIGFwcGVuZCBbPG9wdGlvbnM+XSBbPG9iamVjdD5dIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IG5vdGVzIGFwcGVuZCBbPOmAiemhuT5dIFs85a+56LGhPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MAorIzogYnVpbHRpbi9ub3Rlcy5jOjYzCiBtc2dpZCAiZ2l0IG5vdGVzIGVkaXQgWzxvYmplY3Q+XSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgbm90ZXMgZWRpdCBbPOWvueixoT5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2OAogbXNnaWQgImdpdCBub3RlcyBzaG93IFs8b2JqZWN0Pl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5vdGVzIHNob3cgWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjcwCisjOiBidWlsdGluL25vdGVzLmM6NzMKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgWzxvcHRpb25zPl0gPG5vdGVzX3JlZj4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIFs86YCJ6aG5Pl0gPOazqOino+W8leeUqD4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjc0CiBtc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFs8b3B0aW9ucz5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbPOmAiemhuT5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NQogbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8b3B0aW9ucz5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs86YCJ6aG5Pl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3NworIzogYnVpbHRpbi9ub3Rlcy5jOjgwCiBtc2dpZCAiZ2l0IG5vdGVzIHJlbW92ZSBbPG9iamVjdD5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBub3RlcyByZW1vdmUgWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjgyCisjOiBidWlsdGluL25vdGVzLmM6ODUKIG1zZ2lkICJnaXQgbm90ZXMgcHJ1bmUgWzxvcHRpb25zPl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5vdGVzIHBydW5lIFs86YCJ6aG5Pl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NworIzogYnVpbHRpbi9ub3Rlcy5jOjkwCiBtc2dpZCAiZ2l0IG5vdGVzIGdldC1yZWYiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IG5vdGVzIGdldC1yZWYiCiAKICM6IGJ1aWx0aW4vbm90ZXMuYzoxMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXJ0ICdzaG93JyBmb3Igb2JqZWN0ICclcyciCiBtc2dzdHIgIuS4jeiDveS4uuWvueixoSAnJXMnIOW8gOWniyAnc2hvdyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNDUKLW1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKLW1zZ3N0ciAi5LiN6IO95omT5byAICdzaG93JyDovpPlh7rmlofku7blj6Xmn4QiCisjOiBidWlsdGluL25vdGVzLmM6MTQzCittc2dpZCAiY291bGQgbm90IHJlYWQgJ3Nob3cnIG91dHB1dCIKK21zZ3N0ciAi5LiN6IO96K+75Y+WICdzaG93JyDnmoTovpPlh7oiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNTUKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiZmFpbGVkIHRvIGNsb3NlIHBpcGUgdG8gJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKLW1zZ3N0ciAi5peg5rOV5Li65a+56LGhICclcycg55qEICdzaG93JyDlhbPpl63nrqHpgZMiCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGZpbmlzaCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICLml6Dms5XkuLrlr7nosaEgJyVzJyDlrozmiJAgJ3Nob3cnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTc1IGJ1aWx0aW4vdGFnLmM6MzQ3CisjOiBidWlsdGluL25vdGVzLmM6MTY5IGJ1aWx0aW4vdGFnLmM6MzQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgZmlsZSAnJXMnIgogbXNnc3RyICLkuI3og73liJvlu7rmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE4OQorIzogYnVpbHRpbi9ub3Rlcy5jOjE4OAogbXNnaWQgIlBsZWFzZSBzdXBwbHkgdGhlIG5vdGUgY29udGVudHMgdXNpbmcgZWl0aGVyIC1tIG9yIC1GIG9wdGlvbiIKIG1zZ3N0ciAi6K+36YCa6L+HIC1tIOaIliAtRiDpgInpobnkuLrms6jop6Pmj5DkvpvlhoXlrrkiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTAgYnVpbHRpbi9ub3Rlcy5jOjk3MworIzogYnVpbHRpbi9ub3Rlcy5jOjIwOSBidWlsdGluL25vdGVzLmM6OTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nIG5vdGUgZm9yIG9iamVjdCAlc1xuIgogbXNnc3RyICLliKDpmaTlr7nosaEgJXMg55qE5rOo6KejXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbm90ZSBvYmplY3QiCiBtc2dzdHIgIuS4jeiDveWGmeazqOino+WvueixoSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxNworIzogYnVpbHRpbi9ub3Rlcy5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgbm90ZSBjb250ZW50cyBoYXMgYmVlbiBsZWZ0IGluICVzIgogbXNnc3RyICLms6jop6PlhoXlrrnooqvnlZnlnKjmlofku7YgJXMg5LitIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjUxIGJ1aWx0aW4vdGFnLmM6NTQyCisjOiBidWlsdGluL25vdGVzLmM6MjUwIGJ1aWx0aW4vdGFnLmM6NTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkICclcyciCiBtc2dzdHIgIuS4jeiDveivu+WPliAnJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjUzIGJ1aWx0aW4vdGFnLmM6NTQ1CisjOiBidWlsdGluL25vdGVzLmM6MjUyIGJ1aWx0aW4vdGFnLmM6NTQzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuIG9yIHJlYWQgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95omT5byA5oiW6K+75Y+WICclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzIgYnVpbHRpbi9ub3Rlcy5jOjQ0NSBidWlsdGluL25vdGVzLmM6NDQ3Ci0jOiBidWlsdGluL25vdGVzLmM6NTA3IGJ1aWx0aW4vbm90ZXMuYzo1NjEgYnVpbHRpbi9ub3Rlcy5jOjY0NAotIzogYnVpbHRpbi9ub3Rlcy5jOjY0OSBidWlsdGluL25vdGVzLmM6NzI0IGJ1aWx0aW4vbm90ZXMuYzo3NjYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NjggYnVpbHRpbi9yZXNldC5jOjI5MyBidWlsdGluL3RhZy5jOjU1OAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3MSBidWlsdGluL25vdGVzLmM6NDQ0IGJ1aWx0aW4vbm90ZXMuYzo0NDYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MDYgYnVpbHRpbi9ub3Rlcy5jOjU2MCBidWlsdGluL25vdGVzLmM6NjQzCisjOiBidWlsdGluL25vdGVzLmM6NjQ4IGJ1aWx0aW4vbm90ZXMuYzo3MjMgYnVpbHRpbi9ub3Rlcy5jOjc2NQorIzogYnVpbHRpbi9ub3Rlcy5jOjk2NyBidWlsdGluL3RhZy5jOjU1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmVmLiIKIG1zZ3N0ciAi5peg5rOV6Kej5p6QICclcycg5Li65LiA5Liq5pyJ5pWI5byV55So44CCIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc1CisjOiBidWlsdGluL25vdGVzLmM6Mjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWFkIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W5a+56LGhICclcyfjgIIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyOTkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOTgKIG1zZ2lkICJDYW5ub3QgY29tbWl0IHVuaW5pdGlhbGl6ZWQvdW5yZWZlcmVuY2VkIG5vdGVzIHRyZWUiCiBtc2dzdHIgIuS4jeiDveaPkOS6pOacquWIneWni+WMli/mnKrlvJXnlKjnmoTms6jop6PmoJEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIgogbXNnc3RyICLlnY/nmoQgbm90ZXMucmV3cml0ZU1vZGUg5YC877yaJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM1MAorIzogYnVpbHRpbi9ub3Rlcy5jOjM0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byByZXdyaXRlIG5vdGVzIGluICVzIChvdXRzaWRlIG9mIHJlZnMvbm90ZXMvKSIKIG1zZ3N0ciAi5ouS57ud5ZCRICVz77yI5ZyoIHJlZnMvbm90ZXMvIOS5i+Wklu+8ieWGmeWFpeazqOinoyIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiB0aGUKICMuIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgc2Vjb25kICVzIGlzIGl0cyB2YWx1ZQotIzogYnVpbHRpbi9ub3Rlcy5jOjM3NworIzogYnVpbHRpbi9ub3Rlcy5jOjM3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCiBtc2dzdHIgIuWdj+eahCAlcyDlgLzvvJonJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDQxCisjOiBidWlsdGluL25vdGVzLmM6NDQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpbnB1dCBsaW5lOiAnJXMnLiIKIG1zZ3N0ciAi6Z2e5rOV55qE6L6T5YWl6KGM77yaJyVzJ+OAgiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NgorIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY29weSBub3RlcyBmcm9tICclcycgdG8gJyVzJyIKIG1zZ3N0ciAi5peg5rOV5LuOICclcycg5YiwICclcycg5ou36LSd5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTAwIGJ1aWx0aW4vbm90ZXMuYzo1NTQgYnVpbHRpbi9ub3Rlcy5jOjYyNwotIzogYnVpbHRpbi9ub3Rlcy5jOjYzOSBidWlsdGluL25vdGVzLmM6NzEyIGJ1aWx0aW4vbm90ZXMuYzo3NTkKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDMzCisjOiBidWlsdGluL25vdGVzLmM6NDk5IGJ1aWx0aW4vbm90ZXMuYzo1NTMgYnVpbHRpbi9ub3Rlcy5jOjYyNgorIzogYnVpbHRpbi9ub3Rlcy5jOjYzOCBidWlsdGluL25vdGVzLmM6NzExIGJ1aWx0aW4vbm90ZXMuYzo3NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMDMyCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1ldGVycyIKIG1zZ3N0ciAi5Y+C5pWw5aSq5aSaIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTEzIGJ1aWx0aW4vbm90ZXMuYzo3NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MTIgYnVpbHRpbi9ub3Rlcy5jOjc3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBub3RlIGZvdW5kIGZvciBvYmplY3QgJXMuIgogbXNnc3RyICLmnKrlj5HnjrDlr7nosaEgJXMg55qE5rOo6Kej44CCIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM1IGJ1aWx0aW4vbm90ZXMuYzo2OTIKLSMsIGZ1enp5CisjOiBidWlsdGluL25vdGVzLmM6NTM0IGJ1aWx0aW4vbm90ZXMuYzo2OTEKIG1zZ2lkICJub3RlIGNvbnRlbnRzIGFzIGEgc3RyaW5nIgotbXNnc3RyICLms6jop6PlhoXlrrnooqvnlZnlnKjmlofku7YgJXMg5LitIgorbXNnc3RyICLms6jop6PlhoXlrrnkvZzkuLrkuIDkuKrlrZfnrKbkuLIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MzggYnVpbHRpbi9ub3Rlcy5jOjY5NQotIywgZnV6enkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzcgYnVpbHRpbi9ub3Rlcy5jOjY5NAogbXNnaWQgIm5vdGUgY29udGVudHMgaW4gYSBmaWxlIgotbXNnc3RyICLml6Dms5XlrZjlgqjntKLlvJXmlofku7YiCittc2dzdHIgIuazqOino+WGheWuueWIsOS4gOS4quaWh+S7tuS4rSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0MCBidWlsdGluL25vdGVzLmM6NTQzIGJ1aWx0aW4vbm90ZXMuYzo2OTcKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MDAgYnVpbHRpbi90YWcuYzo0NzYKLSMsIGZ1enp5CisjOiBidWlsdGluL25vdGVzLmM6NTM5IGJ1aWx0aW4vbm90ZXMuYzo1NDIgYnVpbHRpbi9ub3Rlcy5jOjY5NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY5OSBidWlsdGluL3RhZy5jOjQ3NAogbXNnaWQgIm9iamVjdCIKLW1zZ3N0ciAi5Z2P5a+56LGhICVzIgorbXNnc3RyICLlr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDEgYnVpbHRpbi9ub3Rlcy5jOjY5OAotIywgZnV6enkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDAgYnVpbHRpbi9ub3Rlcy5jOjY5NwogbXNnaWQgInJldXNlIGFuZCBlZGl0IHNwZWNpZmllZCBub3RlIG9iamVjdCIKLW1zZ3N0ciAi5LiN6IO95YaZ5rOo6Kej5a+56LGhIgorbXNnc3RyICLph43nlKjlkoznvJbovpHmjIflrprnmoTms6jop6Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDQgYnVpbHRpbi9ub3Rlcy5jOjcwMQotIywgZnV6enkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjcwMAogbXNnaWQgInJldXNlIHNwZWNpZmllZCBub3RlIG9iamVjdCIKLW1zZ3N0ciAi5LiN6IO95YaZ5rOo6Kej5a+56LGhIgorbXNnc3RyICLph43nlKjmjIflrprnmoTms6jop6Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDYgYnVpbHRpbi9ub3Rlcy5jOjYxNAotIywgZnV6enkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NDUgYnVpbHRpbi9ub3Rlcy5jOjYxMwogbXNnaWQgInJlcGxhY2UgZXhpc3Rpbmcgbm90ZXMiCi1tc2dzdHIgIuS4jeiDveivu+WPlueOsOWtmOWvueixoSAlcyIKK21zZ3N0ciAi5pu/5o2i5bey5a2Y5Zyo55qE5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTgwCisjOiBidWlsdGluL25vdGVzLmM6NTc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgYWRkIG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgogImV4aXN0aW5nIG5vdGVzIgogbXNnc3RyICLkuI3og73mt7vliqDms6jop6PjgILlj5HnjrDlr7nosaEgJXMg5bey5a2Y5Zyo5rOo6Kej44CC5L2/55SoICctZicg6KaG55uW546w5a2Y5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTg1IGJ1aWx0aW4vbm90ZXMuYzo2NjIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1ODQgYnVpbHRpbi9ub3Rlcy5jOjY2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJPdmVyd3JpdGluZyBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIuimhuebluWvueixoSAlcyDnjrDlrZjms6jop6NcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYxNQotIywgZnV6enkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTQKIG1zZ2lkICJyZWFkIG9iamVjdHMgZnJvbSBzdGRpbiIKLW1zZ3N0ciAi5Z2P5a+56LGhICVzIgorbXNnc3RyICLku47moIflh4bovpPlhaXor7vlj5blr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MTYKIG1zZ2lkICJsb2FkIHJld3JpdGluZyBjb25maWcgZm9yIDxjb21tYW5kPiAoaW1wbGllcyAtLXN0ZGluKSIKLW1zZ3N0ciAiIgorbXNnc3RyICLph43mlrDliqDovb0gPOWRveS7pD4g55qE6YWN572u77yI6ZqQ5ZCrIC0tc3RkaW7vvIkiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MzQKIG1zZ2lkICJ0b28gZmV3IHBhcmFtZXRlcnMiCiBtc2dzdHIgIuWPguaVsOWkquWwkSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY1NgorIzogYnVpbHRpbi9ub3Rlcy5jOjY1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCiAiZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgIuS4jeiDveaLt+i0neazqOino+OAguWPkeeOsOWvueixoSAlcyDlt7LlrZjlnKjms6jop6PjgILkvb/nlKggJy1mJyDopobnm5bnjrDlrZjms6jop6MiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NjgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBub3RlcyBvbiBzb3VyY2Ugb2JqZWN0ICVzLiBDYW5ub3QgY29weS4iCiBtc2dzdHIgIua6kOWvueixoSAlcyDnvLrlsJHms6jop6PjgILkuI3og73mi7fotJ3jgIIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3MTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSAtbS8tRi8tYy8tQyBvcHRpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciB0aGUgJ2VkaXQnIHN1YmNvbW1hbmQuXG4iCkBAIC02NTczLDI2MiArNjk2MywyNTAgQEAKICLlrZDlkb3ku6QgJ2VkaXQnIOeahOmAiemhuSAtbS8tRi8tYy8tQyDlt7LlvIPnlKjjgIJcbiIKICLor7fmjaLnlKggJ2dpdCBub3RlcyBhZGQgLWYgLW0vLUYvLWMvLUMn44CCXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjQKLSMsIGZ1enp5CisjOiBidWlsdGluL25vdGVzLmM6ODYzCiBtc2dpZCAiR2VuZXJhbCBvcHRpb25zIgotbXNnc3RyICLml6DmlYjpgInpobnvvJolcyIKK21zZ3N0ciAi6YCa55So6YCJ6aG5IgogCi0jOiBidWlsdGluL25vdGVzLmM6ODY2CisjOiBidWlsdGluL25vdGVzLmM6ODY1CiBtc2dpZCAiTWVyZ2Ugb3B0aW9ucyIKLW1zZ3N0ciAiIgorbXNnc3RyICLlkIjlubbpgInpobkiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NjcKIG1zZ2lkICIiCiAicmVzb2x2ZSBub3RlcyBjb25mbGljdHMgdXNpbmcgdGhlIGdpdmVuIHN0cmF0ZWd5IChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgogImNhdF9zb3J0X3VuaXEpIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOaMh+WumueahOetlueVpeino+WGs+azqOino+WGsueqgSAobWFudWFsL291cnMvdGhlaXJzL3VuaW9uL2NhdF9zb3J0X3VuaXEpIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODcwCisjOiBidWlsdGluL25vdGVzLmM6ODY5CiBtc2dpZCAiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmj5DkuqTmnKrlkIjlubbnmoTms6jop6MiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKIG1zZ2lkICJmaW5hbGl6ZSBub3RlcyBtZXJnZSBieSBjb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgotbXNnc3RyICIiCittc2dzdHIgIumAmui/h+aPkOS6pOacquWQiOW5tueahOazqOino+adpeWujOaIkOazqOino+WQiOW5tiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3NAorIzogYnVpbHRpbi9ub3Rlcy5jOjg3MwogbXNnaWQgIkFib3J0aW5nIG5vdGVzIG1lcmdlIHJlc29sdXRpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Lit5q2i5rOo6Kej5ZCI5bm255qE5pa55qGIIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODc2Ci0jLCBmdXp6eQorIzogYnVpbHRpbi9ub3Rlcy5jOjg3NQogbXNnaWQgImFib3J0IG5vdGVzIG1lcmdlIgotbXNnc3RyICJwYXRoICclcyfvvJrml6Dms5XlkIjlubYiCittc2dzdHIgIuS4reatouazqOino+WQiOW5tiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjk3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJPYmplY3QgJXMgaGFzIG5vIG5vdGVcbiIKIG1zZ3N0ciAi5a+56LGhICVzIOayoeacieazqOino1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTgzCisjOiBidWlsdGluL25vdGVzLmM6OTgyCiBtc2dpZCAiYXR0ZW1wdCB0byByZW1vdmUgbm9uLWV4aXN0ZW50IG5vdGUgaXMgbm90IGFuIGVycm9yIgotbXNnc3RyICIiCittc2dzdHIgIuWwneivleWIoOmZpOS4jeWtmOWcqOeahOazqOino+S4jeaYr+S4gOS4qumUmeivryIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk4NgotIywgZnV6enkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5ODUKIG1zZ2lkICJyZWFkIG9iamVjdCBuYW1lcyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKLW1zZ3N0ciAi77yI5q2j5LuO5qCH5YeG6L6T5YWl5Lit6K+75Y+W5pel5b+X5L+h5oGv77yJXG4iCittc2dzdHIgIuS7juagh+WHhui+k+WFpeivu+WPluWvueixoeWQjeensCIKKworIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKK21zZ2lkICJub3Rlc19yZWYiCittc2dzdHIgIuazqOino+W8leeUqCIKIAogIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjcKLW1zZ2lkICJub3Rlc19yZWYiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjgKIG1zZ2lkICJ1c2Ugbm90ZXMgZnJvbSA8bm90ZXNfcmVmPiIKLW1zZ3N0ciAiIgorbXNnc3RyICLku44gPOazqOino+W8leeUqD4g5L2/55So5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwMyBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAyIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIHN1YmNvbW1hbmQ6ICVzIgogbXNnc3RyICLmnKrnn6XlrZDlkb3ku6TvvJolcyIKIAogIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMwogbXNnaWQgImdpdCBwYWNrLW9iamVjdHMgLS1zdGRvdXQgW29wdGlvbnMuLi5dIFs8IHJlZi1saXN0IHwgPCBvYmplY3QtbGlzdF0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHBhY2stb2JqZWN0cyAtLXN0ZG91dCBb6YCJ6aG5Li4uXSBbPCDlvJXnlKjliJfooaggfCA8IOWvueixoeWIl+ihqF0iCiAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQKIG1zZ2lkICJnaXQgcGFjay1vYmplY3RzIFtvcHRpb25zLi4uXSBiYXNlLW5hbWUgWzwgcmVmLWxpc3QgfCA8IG9iamVjdC1saXN0XSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcGFjay1vYmplY3RzIFvpgInpobkuLi5dIGJhc2UtbmFtZSBbPCDlvJXnlKjliJfooaggfCA8IOWvueixoeWIl+ihqF0iCiAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTgzIGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTg2CiAjLCBjLWZvcm1hdAogbXNnaWQgImRlZmxhdGUgZXJyb3IgKCVkKSIKIG1zZ3N0ciAi5Y6L57yp6ZSZ6K+vICglZCkiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjM5OAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyMzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuc3VwcG9ydGVkIGluZGV4IHZlcnNpb24gJXMiCiBtc2dzdHIgIuS4jeaUr+aMgeeahOe0ouW8leeJiOacrCAlcyIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDAyCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIGluZGV4IHZlcnNpb24gJyVzJyIKIG1zZ3N0ciAi5Z2P55qE57Si5byV54mI5pysICclcyciCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQyNQorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9wdGlvbiAlcyBkb2VzIG5vdCBhY2NlcHQgbmVnYXRpdmUgZm9ybSIKIG1zZ3N0ciAi6YCJ6aG5ICVzIOS4jeaOpeWPl+WQpuWumuagvOW8jyIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDI5CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHBhcnNlIHZhbHVlICclcycgZm9yIG9wdGlvbiAlcyIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q6YCJ6aG5ICUxJHMg55qE5YC8ICclMiRzJyIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDQ4CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NDcKIG1zZ2lkICJkbyBub3Qgc2hvdyBwcm9ncmVzcyBtZXRlciIKLW1zZ3N0ciAiIgorbXNnc3RyICLkuI3mmL7npLrov5vluqbooagiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDQ5CiBtc2dpZCAic2hvdyBwcm9ncmVzcyBtZXRlciIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrov5vluqbooagiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1MgorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDUxCiBtc2dpZCAic2hvdyBwcm9ncmVzcyBtZXRlciBkdXJpbmcgb2JqZWN0IHdyaXRpbmcgcGhhc2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Zyo5a+56LGh5YaZ5YWl6Zi25q615pi+56S66L+b5bqm6KGoIgorCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTQKK21zZ2lkICJzaW1pbGFyIHRvIC0tYWxsLXByb2dyZXNzIHdoZW4gcHJvZ3Jlc3MgbWV0ZXIgaXMgc2hvd24iCittc2dzdHIgIuW9k+i/m+W6puihqOaYvuekuuaXtuexu+S8vOS6jiAtLWFsbC1wcm9ncmVzcyIKIAogIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDU1Ci1tc2dpZCAic2ltaWxhciB0byAtLWFsbC1wcm9ncmVzcyB3aGVuIHByb2dyZXNzIG1ldGVyIGlzIHNob3duIgotbXNnc3RyICIiCittc2dpZCAidmVyc2lvblssb2Zmc2V0XSIKK21zZ3N0ciAi54mI5pysWyzlgY/np7tdIgogCiAjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NTYKLW1zZ2lkICJ2ZXJzaW9uWyxvZmZzZXRdIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1NwogbXNnaWQgIndyaXRlIHRoZSBwYWNrIGluZGV4IGZpbGUgaW4gdGhlIHNwZWNpZmllZCBpZHggZm9ybWF0IHZlcnNpb24iCi1tc2dzdHIgIiIKK21zZ3N0ciAi55So5oyH5a6a55qEIGlkeCDmoLzlvI/niYjmnKzmnaXlhpnljIXntKLlvJXmlofku7YiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2MAotIywgZnV6enkKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ1OQogbXNnaWQgIm1heGltdW0gc2l6ZSBvZiBlYWNoIG91dHB1dCBwYWNrIGZpbGUiCi1tc2dzdHIgIuaXoOazleWIm+W7uui+k+WHuuaWh+S7tiIKK21zZ3N0ciAi5q+P5Liq6L6T5Ye65YyF55qE5pyA5aSn5bC65a+4IgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NjIKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2MQogbXNnaWQgImlnbm9yZSBib3Jyb3dlZCBvYmplY3RzIGZyb20gYWx0ZXJuYXRlIG9iamVjdCBzdG9yZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlv73nlaXku47mm7/ku6Plr7nosaHlrZjlgqjph4zlgJ/nlKjlr7nosaEiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NAotIywgZnV6enkKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2MwogbXNnaWQgImlnbm9yZSBwYWNrZWQgb2JqZWN0cyIKLW1zZ3N0ciAi5LiN6IO96K+75Y+W5a+56LGhICVzIgorbXNnc3RyICLlv73nlaXljIXlr7nosaEiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2NgorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY1CiBtc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgb2JqZWN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLpmZDliLbmiZPljIXnqpflj6PnmoTlr7nosaHmlbAiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ2OAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY3CiBtc2dpZCAibGltaXQgcGFjayB3aW5kb3cgYnkgbWVtb3J5IGluIGFkZGl0aW9uIHRvIG9iamVjdCBsaW1pdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLpmaTlr7nosaHmlbDph4/pmZDliLblpJborr7nva7miZPljIXnqpflj6PnmoTlhoXlrZjpmZDliLYiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDY5CiBtc2dpZCAibWF4aW11bSBsZW5ndGggb2YgZGVsdGEgY2hhaW4gYWxsb3dlZCBpbiB0aGUgcmVzdWx0aW5nIHBhY2siCi1tc2dzdHIgIiIKK21zZ3N0ciAi5omT5YyF5YWB6K6455qEIGRlbHRhIOmTvueahOacgOWkp+mVv+W6piIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDcyCi0jLCBmdXp6eQorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDcxCiBtc2dpZCAicmV1c2UgZXhpc3RpbmcgZGVsdGFzIgotbXNnc3RyICLlpITnkIYgZGVsdGEg5LitIgorbXNnc3RyICLph43nlKjlt7LlrZjlnKjnmoQgZGVsdGFzIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzQKLSMsIGZ1enp5CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzMKIG1zZ2lkICJyZXVzZSBleGlzdGluZyBvYmplY3RzIgotbXNnc3RyICLkuI3og73or7vlj5bnjrDlrZjlr7nosaEgJXMiCittc2dzdHIgIumHjeeUqOW3suWtmOWcqOeahOWvueixoSIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDc2CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0NzUKIG1zZ2lkICJ1c2UgT0ZTX0RFTFRBIG9iamVjdHMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5L2/55SoIE9GU19ERUxUQSDlr7nosaEiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3OAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDc3CiBtc2dpZCAidXNlIHRocmVhZHMgd2hlbiBzZWFyY2hpbmcgZm9yIGJlc3QgZGVsdGEgbWF0Y2hlcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLkvb/nlKjnur/nqIvmn6Xor6LmnIDkvbMgZGVsdGEg5Yy56YWNIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODAKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ3OQogbXNnaWQgImRvIG5vdCBjcmVhdGUgYW4gZW1wdHkgcGFjayBvdXRwdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5Yib5bu656m655qE5YyF6L6T5Ye6IgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODIKLSMsIGZ1enp5CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODEKIG1zZ2lkICJyZWFkIHJldmlzaW9uIGFyZ3VtZW50cyBmcm9tIHN0YW5kYXJkIGlucHV0IgotbXNnc3RyICLvvIjmraPku47moIflh4bovpPlhaXkuK3or7vlj5bml6Xlv5fkv6Hmga/vvIlcbiIKK21zZ3N0ciAi5LuO5qCH5YeG6L6T5YWl6K+75Y+W5L+u6K6i5Y+35Y+C5pWwIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODQKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ4MwogbXNnaWQgImxpbWl0IHRoZSBvYmplY3RzIHRvIHRob3NlIHRoYXQgYXJlIG5vdCB5ZXQgcGFja2VkIgotbXNnc3RyICIiCittc2dzdHIgIumZkOWItumCo+S6m+WwmuacquaJk+WMheeahOWvueixoSIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDg3CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0ODYKIG1zZ2lkICJpbmNsdWRlIG9iamVjdHMgcmVhY2hhYmxlIGZyb20gYW55IHJlZmVyZW5jZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLljIXmi6zlj6/ku6Xku47ku7vkvZXlvJXnlKjorr/pl67liLDnmoTlr7nosaEiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5MAorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDg5CiBtc2dpZCAiaW5jbHVkZSBvYmplY3RzIHJlZmVycmVkIGJ5IHJlZmxvZyBlbnRyaWVzIgotbXNnc3RyICIiCittc2dzdHIgIuWMheaLrOiiq+W8leeUqOaXpeW/l+W8leeUqOWIsOeahOWvueixoSIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDkzCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTIKIG1zZ2lkICJvdXRwdXQgcGFjayB0byBzdGRvdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6L6T5Ye65YyF5Yiw5qCH5YeG6L6T5Ye6IgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTUKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NAogbXNnaWQgImluY2x1ZGUgdGFnIG9iamVjdHMgdGhhdCByZWZlciB0byBvYmplY3RzIHRvIGJlIHBhY2tlZCIKLW1zZ3N0ciAiIgorbXNnc3RyICLljIXmi6zlvJXnlKjkuobmiZPljIXlr7nosaHnmoQgdGFnIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTcKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5NgogbXNnaWQgImtlZXAgdW5yZWFjaGFibGUgb2JqZWN0cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLnu7TmjIHkuI3lj6/ovr7nmoTlr7nosaEiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjQ5OCBwYXJzZS1vcHRpb25zLmg6MTQxCisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTcgcGFyc2Utb3B0aW9ucy5oOjE0MQogbXNnaWQgInRpbWUiCiBtc2dzdHIgIuaXtumXtCIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNDk5CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI0OTgKIG1zZ2lkICJ1bnBhY2sgdW5yZWFjaGFibGUgb2JqZWN0cyBuZXdlciB0aGFuIDx0aW1lPiIKLW1zZ3N0ciAiIgorbXNnc3RyICLlsIbmr5Tnu5nlrpogPOaXtumXtD4g5paw55qE5peg5rOV6K6/6Zeu55qE5a+56LGh6Kej5YyFIgogCi0jOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDIKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwMQogbXNnaWQgImNyZWF0ZSB0aGluIHBhY2tzIgotbXNnc3RyICIiCittc2dzdHIgIuWIm+W7uueyvueugOWMhSIKIAotIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTA0CisjOiBidWlsdGluL3BhY2stb2JqZWN0cy5jOjI1MDMKIG1zZ2lkICJpZ25vcmUgcGFja3MgdGhhdCBoYXZlIGNvbXBhbmlvbiAua2VlcCBmaWxlIgotbXNnc3RyICIiCittc2dzdHIgIuW/veeVpemFjeaciSAua2VlcCDmlofku7bnmoTljIUiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNgorIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNTA1CiBtc2dpZCAicGFjayBjb21wcmVzc2lvbiBsZXZlbCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmiZPljIXljovnvKnnuqfliKsiCiAKLSM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwOAotIywgZnV6enkKKyM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjUwNwogbXNnaWQgImRvIG5vdCBoaWRlIGNvbW1pdHMgYnkgZ3JhZnRzIgotbXNnc3RyICLkuI3og73lhpnmj5DkuqTmqKHniYgiCittc2dzdHIgIuS4jemakOiXj+enu+akjeimhueblueahOaPkOS6pCIKIAogIzogYnVpbHRpbi9wYWNrLXJlZnMuYzo2CiBtc2dpZCAiZ2l0IHBhY2stcmVmcyBbb3B0aW9uc10iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHBhY2stcmVmcyBb6YCJ6aG5XSIKIAogIzogYnVpbHRpbi9wYWNrLXJlZnMuYzoxNAogbXNnaWQgInBhY2sgZXZlcnl0aGluZyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmiZPljIXkuIDliIciCiAKICM6IGJ1aWx0aW4vcGFjay1yZWZzLmM6MTUKIG1zZ2lkICJwcnVuZSBsb29zZSByZWZzIChkZWZhdWx0KSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmuIXpmaTmnb7mlaPnmoTlvJXnlKjvvIjpu5jorqTvvIkiCiAKICM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NwogbXNnaWQgImdpdCBwcnVuZS1wYWNrZWQgWy1ufC0tZHJ5LXJ1bl0gWy1xfC0tcXVpZXRdIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBwcnVuZS1wYWNrZWQgWy1ufC0tZHJ5LXJ1bl0gWy1xfC0tcXVpZXRdIgogCiAjOiBidWlsdGluL3BydW5lLmM6MTIKIG1zZ2lkICJnaXQgcHJ1bmUgWy1uXSBbLXZdIFstLWV4cGlyZSA8dGltZT5dIFstLV0gWzxoZWFkPi4uLl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHBydW5lIFstbl0gWy12XSBbLS1leHBpcmUgPOaXtumXtD5dIFstLV0gWzzlpLQ+Li4uXSIKIAogIzogYnVpbHRpbi9wcnVuZS5jOjEzMgotIywgZnV6enkKIG1zZ2lkICJkbyBub3QgcmVtb3ZlLCBzaG93IG9ubHkiCi1tc2dzdHIgIuS4jeS8muWIoOmZpCAlc1xuIgorbXNnc3RyICLkuI3liKDpmaTvvIzlj6rmmL7npLoiCiAKICM6IGJ1aWx0aW4vcHJ1bmUuYzoxMzMKLSMsIGZ1enp5CiBtc2dpZCAicmVwb3J0IHBydW5lZCBvYmplY3RzIgotbXNnc3RyICLkuI3og73or7vlj5blr7nosaEgJXMiCittc2dzdHIgIuaKpeWRiua4hemZpOeahOWvueixoSIKIAogIzogYnVpbHRpbi9wcnVuZS5jOjEzNgogbXNnaWQgImV4cGlyZSBvYmplY3RzIG9sZGVyIHRoYW4gPHRpbWU+IgotbXNnc3RyICIiCittc2dzdHIgIuS9v+aXqeS6jue7meWumuaXtumXtOeahOWvueixoei/h+acnyIKIAogIzogYnVpbHRpbi9wdXNoLmM6MTQKLSMsIGZ1enp5CiBtc2dpZCAiZ2l0IHB1c2ggWzxvcHRpb25zPl0gWzxyZXBvc2l0b3J5PiBbPHJlZnNwZWM+Li4uXV0iCi1tc2dzdHIgImdpdCBhcHBseSBb6YCJ6aG5XSBbPOihpeS4gT4uLi5dIgorbXNnc3RyICJnaXQgcHVzaCBbPOmAiemhuT5dIFs854mI5pys5bqTPiBbPOW8leeUqOihqOi+vuW8jz4uLi5dXSIKIAogIzogYnVpbHRpbi9wdXNoLmM6NDUKIG1zZ2lkICJ0YWcgc2hvcnRoYW5kIHdpdGhvdXQgPHRhZz4iCkBAIC02OTgzLDIyICs3MzYxLDQ4IEBACiAi5qOA5Ye66K+l5YiG5pSv5bm25LiO6L+c56iL5Y+Y5pu05ZCI5bm277yI5aaCICdnaXQgcHVsbCfvvInvvIznhLblkI7lho3mjqjpgIHjgILor6bop4FcbiIKICInZ2l0IHB1c2ggLS1oZWxwJyDkuK3nmoQgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycg5bCP6IqC44CCIgogCi0jOiBidWlsdGluL3B1c2guYzoyNTgKKyM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorbXNnaWQgIiIKKyJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgcmVtb3RlIGNvbnRhaW5zIHdvcmsgdGhhdCB5b3UgZG9cbiIKKyJub3QgaGF2ZSBsb2NhbGx5LiBUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGFub3RoZXIgcmVwb3NpdG9yeSBwdXNoaW5nXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgbWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuLFxuIgorIidnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgorIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgorbXNnc3RyICIiCisi5pu05paw6KKr5ouS57ud77yM5Zug5Li66L+c56iL54mI5pys5bqT5YyF5ZCr5oKo5pys5Zyw5bCa5LiN5a2Y5Zyo55qE5o+Q5Lqk44CC6L+Z6YCa5bi45piv5Zug5Li65Y+m5aSWXG4iCisi5LiA5Liq54mI5pys5bqT5bey5o6o6YCB5LqG55u45ZCM55qE5byV55So44CC5YaN5qyh5o6o6YCB5YmN77yM5oKo5Y+v6IO96ZyA6KaB5YWI5ZCI5bm26L+c56iL5Y+Y5pu0XG4iCisi77yI5aaCICdnaXQgcHVsbCfvvInjgIJcbiIKKyLor6bop4EgJ2dpdCBwdXNoIC0taGVscCcg5Lit55qEICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIOWwj+iKguOAgiIKKworIzogYnVpbHRpbi9wdXNoLmM6MjMxCittc2dpZCAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRhZyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVtb3RlLiIKK21zZ3N0ciAi5pu05paw6KKr5ouS57ud5Zug5Li6IHRhZyDlnKjov5znqIvlt7Lnu4/lrZjlnKjjgIIiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzNAorbXNnaWQgIiIKKyJZb3UgY2Fubm90IHVwZGF0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKKyJ3aXRob3V0IHVzaW5nIHRoZSAnLS1mb3JjZScgb3B0aW9uLlxuIgorbXNnc3RyICIiCisi5aaC5p6c5LiN5L2/55SoICctLWZvcmNlJyDlj4LmlbDvvIzmgqjkuI3og73mm7TmlrDkuIDkuKrmjIflkJHpnZ7mj5DkuqTlr7nosaHnmoTov5znqIvlvJXnlKjvvIxcbiIKKyLkuZ/kuI3og73mm7TmlrDov5znqIvlvJXnlKjorqnlhbbmjIflkJHkuIDkuKrpnZ7mj5DkuqTlr7nosaHjgIJcbiIKKworIzogYnVpbHRpbi9wdXNoLmM6Mjk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlB1c2hpbmcgdG8gJXNcbiIKIG1zZ3N0ciAi5o6o6YCB5YiwICVzXG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI2MgorIzogYnVpbHRpbi9wdXNoLmM6Mjk4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBwdXNoIHNvbWUgcmVmcyB0byAnJXMnIgogbXNnc3RyICLml6Dms5XmjqjpgIHkuIDkupvlvJXnlKjliLAgJyVzJyIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk0CisjOiBidWlsdGluL3B1c2guYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHJlcG9zaXRvcnkgJyVzJyIKIG1zZ3N0ciAi5Z2P55qE54mI5pys5bqTICclcyciCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI5NQorIzogYnVpbHRpbi9wdXNoLmM6MzMyCiBtc2dpZCAiIgogIk5vIGNvbmZpZ3VyZWQgcHVzaCBkZXN0aW5hdGlvbi5cbiIKICJFaXRoZXIgc3BlY2lmeSB0aGUgVVJMIGZyb20gdGhlIGNvbW1hbmQtbGluZSBvciBjb25maWd1cmUgYSByZW1vdGUgIgpAQCAtNzAxMSw3ICs3NDE1LDcgQEAKICIgICAgZ2l0IHB1c2ggPG5hbWU+XG4iCiBtc2dzdHIgIiIKICLmsqHmnInphY3nva7mjqjpgIHnm67moIfjgIJcbiIKLSLmiJbogIXpgJrov4flkb3ku6TooYzmjIflrppVUkzvvIzmiJbogIXnlKjkuIvpnaLlkb3ku6TphY3nva7kuIDkuKrov5znqIvniYjmnKzlupNcbiIKKyLmiJbpgJrov4flkb3ku6TooYzmjIflrppVUkzvvIzmiJbnlKjkuIvpnaLlkb3ku6TphY3nva7kuIDkuKrov5znqIvniYjmnKzlupNcbiIKICJcbiIKICIgICAgZ2l0IHJlbW90ZSBhZGQgPG5hbWU+IDx1cmw+XG4iCiAiXG4iCkBAIC03MDE5LDgyICs3NDIzLDg3IEBACiAiXG4iCiAiICAgIGdpdCBwdXNoIDxuYW1lPlxuIgogCi0jOiBidWlsdGluL3B1c2guYzozMTAKKyM6IGJ1aWx0aW4vcHVzaC5jOjM0NwogbXNnaWQgIi0tYWxsIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1hbGwg5ZKMIC0tdGFncyDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxMQorIzogYnVpbHRpbi9wdXNoLmM6MzQ4CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1hbGwg5LiN6IO95ZKM5byV55So6KGo6L6+5byP5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL3B1c2guYzozMTYKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1MwogbXNnaWQgIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLS1taXJyb3Ig5ZKMIC0tdGFncyDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMxNworIzogYnVpbHRpbi9wdXNoLmM6MzU0CiBtc2dpZCAiLS1taXJyb3IgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1taXJyb3Ig5LiN6IO95ZKM5byV55So6KGo6L6+5byP5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL3B1c2guYzozMjIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1OQogbXNnaWQgIi0tYWxsIGFuZCAtLW1pcnJvciBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWFsbCDlkowgLS1taXJyb3Ig5LiN5YW85a65IgogCi0jOiBidWlsdGluL3B1c2guYzozODIKLSMsIGZ1enp5CisjOiBidWlsdGluL3B1c2guYzo0MTkKIG1zZ2lkICJyZXBvc2l0b3J5IgotbXNnc3RyICLlnY/nmoTniYjmnKzlupMgJyVzJyIKK21zZ3N0ciAi54mI5pys5bqTIgogCi0jOiBidWlsdGluL3B1c2guYzozODMKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMAogbXNnaWQgInB1c2ggYWxsIHJlZnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5o6o6YCB5omA5pyJ5byV55SoIgogCi0jOiBidWlsdGluL3B1c2guYzozODQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMQogbXNnaWQgIm1pcnJvciBhbGwgcmVmcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLplZzlg4/miYDmnInlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM4NgotIywgZnV6enkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyMwogbXNnaWQgImRlbGV0ZSByZWZzIgotbXNnc3RyICLliKDpmaQiCittc2dzdHIgIuWIoOmZpOW8leeUqCIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzg3CisjOiBidWlsdGluL3B1c2guYzo0MjQKIG1zZ2lkICJwdXNoIHRhZ3MgKGNhbid0IGJlIHVzZWQgd2l0aCAtLWFsbCBvciAtLW1pcnJvcikiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5o6o6YCBIHRhZ3PvvIjkuI3og73kvb/nlKggLS1hbGwgb3IgLS1taXJyb3LvvIkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MAotIywgZnV6enkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQyNwogbXNnaWQgImZvcmNlIHVwZGF0ZXMiCiBtc2dzdHIgIuW8uuWItuabtOaWsCIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzkxCisjOiBidWlsdGluL3B1c2guYzo0MjgKIG1zZ2lkICJjaGVjayIKLW1zZ3N0ciAiIgorbXNnc3RyICLmo4Dmn6UiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM5MgorIzogYnVpbHRpbi9wdXNoLmM6NDI5CiBtc2dpZCAiY29udHJvbCByZWN1cnNpdmUgcHVzaGluZyBvZiBzdWJtb2R1bGVzIgotbXNnc3RyICIiCittc2dzdHIgIuaOp+WItuWtkOaooee7hOeahOmAkuW9kuaOqOmAgSIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzk0CisjOiBidWlsdGluL3B1c2guYzo0MzEKIG1zZ2lkICJ1c2UgdGhpbiBwYWNrIgotbXNnc3RyICIiCittc2dzdHIgIuS9v+eUqOeyvueugOaJk+WMhSIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzk1IGJ1aWx0aW4vcHVzaC5jOjM5NgorIzogYnVpbHRpbi9wdXNoLmM6NDMyIGJ1aWx0aW4vcHVzaC5jOjQzMwogbXNnaWQgInJlY2VpdmUgcGFjayBwcm9ncmFtIgotbXNnc3RyICIiCittc2dzdHIgIuaOpeaUtuWMheeoi+W6jyIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mzk3CisjOiBidWlsdGluL3B1c2guYzo0MzQKIG1zZ2lkICJzZXQgdXBzdHJlYW0gZm9yIGdpdCBwdWxsL3N0YXR1cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLorr7nva4gZ2l0IHB1bGwvc3RhdHVzIOeahOS4iua4uCIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDAwCisjOiBidWlsdGluL3B1c2guYzo0MzcKIG1zZ2lkICJwcnVuZSBsb2NhbGx5IHJlbW92ZWQgcmVmcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmuIXpmaTmnKzlnLDliKDpmaTnmoTlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQxMAorIzogYnVpbHRpbi9wdXNoLmM6NDM5Cittc2dpZCAiYnlwYXNzIHByZS1wdXNoIGhvb2siCittc2dzdHIgIue7lei/hyBwcmUtcHVzaCDpkqnlrZAiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0MAorbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKK21zZ3N0ciAi5o6o6YCB57y65aSx55qE5pyJ5YWz55qEIHRhZ3MiCisKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAogbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgogbXNnc3RyICItLWRlbGV0ZSDkuI4gLS1hbGzjgIEtLW1pcnJvciDlj4ogLS10YWdzIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDEyCisjOiBidWlsdGluL3B1c2guYzo0NTIKIG1zZ2lkICItLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCBhbnkgcmVmcyIKIG1zZ3N0ciAiLS1kZWxldGUg5pyq5o6l5Lu75L2V5byV55So5rKh5pyJ5oSP5LmJIgogCkBAIC03MTA0LDE1NSArNzUxMywxNTAgQEAKICJbLXUgWy0tZXhjbHVkZS1wZXItZGlyZWN0b3J5PTxnaXRpZ25vcmU+XSB8IC1pXV0gWy0tbm8tc3BhcnNlLWNoZWNrb3V0XSBbLS0iCiAiaW5kZXgtb3V0cHV0PTxmaWxlPl0gKC0tZW1wdHkgfCA8dHJlZS1pc2gxPiBbPHRyZWUtaXNoMj4gWzx0cmVlLWlzaDM+XV0pIgogbXNnc3RyICIiCisiZ2l0IHJlYWQtdHJlZSBbWy1tIFstLXRyaXZpYWxdIFstLWFnZ3Jlc3NpdmVdIHwgLS1yZXNldCB8IC0tcHJlZml4PTzliY3nvIA+XSBbLSIKKyJ1IFstLWV4Y2x1ZGUtcGVyLWRpcmVjdG9yeT08Z2l0aWdub3JlPl0gfCAtaV1dIFstLW5vLXNwYXJzZS1jaGVja291dF0gWy0tIgorImluZGV4LW91dHB1dD085paH5Lu2Pl0gKC0tZW1wdHkgfCA85qCR5oiW5o+Q5LqkMT4gWzzmoJHmiJbmj5DkuqQyPiBbPOagkeaIluaPkOS6pDM+XV0pIgogCiAjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEwOAotIywgZnV6enkKIG1zZ2lkICJ3cml0ZSByZXN1bHRpbmcgaW5kZXggdG8gPGZpbGU+IgotbXNnc3RyICLmjZ/lnY/nmoTntKLlvJXmlofku7YiCittc2dzdHIgIuWwhue0ouW8lee7k+aenOWGmeWFpSA8ZmlsZT4iCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTExCi0jLCBmdXp6eQogbXNnaWQgIm9ubHkgZW1wdHkgdGhlIGluZGV4IgotbXNnc3RyICLkuI3og73or7vlj5bntKLlvJUiCittc2dzdHIgIuWPquaYr+a4heepuue0ouW8lSIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTMKLSMsIGZ1enp5CiBtc2dpZCAiTWVyZ2luZyIKLW1zZ3N0ciAi5ZCI5bm277yaIgorbXNnc3RyICLlkIjlubYiCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE1CiBtc2dpZCAicGVyZm9ybSBhIG1lcmdlIGluIGFkZGl0aW9uIHRvIGEgcmVhZCIKLW1zZ3N0ciAiIgorbXNnc3RyICLor7vlj5bkuYvkvZnlho3miafooYzkuIDkuKrlkIjlubYiCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE3CiBtc2dpZCAiMy13YXkgbWVyZ2UgaWYgbm8gZmlsZSBsZXZlbCBtZXJnaW5nIHJlcXVpcmVkIgotbXNnc3RyICIiCittc2dzdHIgIuWmguaenOayoeacieaWh+S7tue6p+WQiOW5tumcgOimge+8jOaJp+ihjOS4iei3r+WQiOW5tiIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTkKIG1zZ2lkICIzLXdheSBtZXJnZSBpbiBwcmVzZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIgotbXNnc3RyICIiCittc2dzdHIgIuWtmOWcqOa3u+WKoOWSjOWIoOmZpOaXtu+8jOS5n+aJp+ihjOS4iei3r+WQiOW5tiIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjEKIG1zZ2lkICJzYW1lIGFzIC1tLCBidXQgZGlzY2FyZCB1bm1lcmdlZCBlbnRyaWVzIgotbXNnc3RyICIiCittc2dzdHIgIuexu+S8vOS6jiAtbe+8jOS9huS4ouW8g+acquWQiOW5tueahOadoeebriIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjIKLSMsIGZ1enp5CiBtc2dpZCAiPHN1YmRpcmVjdG9yeT4vIgotbXNnc3RyICLnm67lvZUv5paH5Lu2IgorbXNnc3RyICI85a2Q55uu5b2VPi8iCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIzCiBtc2dpZCAicmVhZCB0aGUgdHJlZSBpbnRvIHRoZSBpbmRleCB1bmRlciA8c3ViZGlyZWN0b3J5Pi8iCi1tc2dzdHIgIiIKK21zZ3N0ciAi6K+75Y+W5qCR5a+56LGh5Yiw57Si5byV55qEIDzlrZDnm67lvZU+LyDkuIsiCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI2CiBtc2dpZCAidXBkYXRlIHdvcmtpbmcgdHJlZSB3aXRoIG1lcmdlIHJlc3VsdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLnlKjlkIjlubbnmoTnu5Pmnpzmm7TmlrDlt6XkvZzljLoiCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI4Ci0jLCBmdXp6eQogbXNnaWQgImdpdGlnbm9yZSIKLW1zZ3N0ciAi5b+955Wl55qEIgorbXNnc3RyICJnaXRpZ25vcmUiCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI5CiBtc2dpZCAiYWxsb3cgZXhwbGljaXRseSBpZ25vcmVkIGZpbGVzIHRvIGJlIG92ZXJ3cml0dGVuIgotbXNnc3RyICIiCittc2dzdHIgIuWFgeiuuOW/veeVpeaWh+S7tuS4reiuvuWumueahOaWh+S7tuWPr+S7peiiq+imhuebliIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzIKLSMsIGZ1enp5CiBtc2dpZCAiZG9uJ3QgY2hlY2sgdGhlIHdvcmtpbmcgdHJlZSBhZnRlciBtZXJnaW5nIgotbXNnc3RyICLmmL7npLrlt6XkvZzljLrnirbmgIEiCittc2dzdHIgIuWQiOW5tuWQjuS4jeajgOafpeW3peS9nOWMuiIKIAogIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzMKIG1zZ2lkICJkb24ndCB1cGRhdGUgdGhlIGluZGV4IG9yIHRoZSB3b3JrIHRyZWUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5pu05paw57Si5byV5Yy65ZKM5bel5L2c5Yy6IgogCiAjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNQogbXNnaWQgInNraXAgYXBwbHlpbmcgc3BhcnNlIGNoZWNrb3V0IGZpbHRlciIKLW1zZ3N0ciAiIgorbXNnc3RyICLot7Pov4flupTnlKjnqIDnlo/mo4Dlh7rov4fmu6TlmagiCiAKICM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTM3CiBtc2dpZCAiZGVidWcgdW5wYWNrLXRyZWVzIgotbXNnc3RyICIiCittc2dzdHIgIuiwg+ivlSB1bnBhY2stdHJlZXMiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEKIG1zZ2lkICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjEyCiBtc2dpZCAiIgogImdpdCByZW1vdGUgYWRkIFstdCA8YnJhbmNoPl0gWy1tIDxtYXN0ZXI+XSBbLWZdIFstLXRhZ3N8LS1uby10YWdzXSBbLS0iCiAibWlycm9yPTxmZXRjaHxwdXNoPl0gPG5hbWU+IDx1cmw+IgogbXNnc3RyICIiCisiZ2l0IHJlbW90ZSBhZGQgWy10IDzliIbmlK8+XSBbLW0gPG1hc3Rlcj5dIFstZl0gWy0tdGFnc3wtLW5vLXRhZ3NdIFstLSIKKyJtaXJyb3I9PGZldGNofHB1c2g+XSA85ZCN56ewPiA8dXJsPiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMyBidWlsdGluL3JlbW90ZS5jOjMyCiBtc2dpZCAiZ2l0IHJlbW90ZSByZW5hbWUgPG9sZD4gPG5ldz4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSByZW5hbWUgPOaXp+WQjeensD4gPOaWsOWQjeensD4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQgYnVpbHRpbi9yZW1vdGUuYzozNwogbXNnaWQgImdpdCByZW1vdGUgcmVtb3ZlIDxuYW1lPiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHJlbW92ZSA85ZCN56ewPiIKIAotIzogYnVpbHRpbi9yZW1vdGUuYzoxNQorIzogYnVpbHRpbi9yZW1vdGUuYzoxNSBidWlsdGluL3JlbW90ZS5jOjQyCiBtc2dpZCAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA8bmFtZT4gKC1hIHwgLWQgfCA8YnJhbmNoPikiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA85ZCN56ewPiAoLWEgfCAtZCB8IDzliIbmlK8+KSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNgogbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSBzaG93IFstbl0gPG5hbWU+IgotbXNnc3RyICIiCittc2dzdHIgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSBzaG93IFstbl0gPOWQjeensD4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTcKIG1zZ2lkICJnaXQgcmVtb3RlIHBydW5lIFstbiB8IC0tZHJ5LXJ1bl0gPG5hbWU+IgotbXNnc3RyICIiCittc2dzdHIgImdpdCByZW1vdGUgcHJ1bmUgWy1uIHwgLS1kcnktcnVuXSA85ZCN56ewPiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxOAogbXNnaWQgIiIKICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0gdXBkYXRlIFstcCB8IC0tcHJ1bmVdIFsoPGdyb3VwPiB8IDxyZW1vdGU+KS4uLl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIHVwZGF0ZSBbLXAgfCAtLXBydW5lXSBbKDznu4Q+IHwgPOi/nOeoiz4pLi4uXSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxOQogbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPG5hbWU+IDxicmFuY2g+Li4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIFstLWFkZF0gPOWQjeensD4gPOWIhuaUrz4uLi4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MjAgYnVpbHRpbi9yZW1vdGUuYzo2OAogbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCBbLS1wdXNoXSA8bmFtZT4gPG5ld3VybD4gWzxvbGR1cmw+XSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC11cmwgWy0tcHVzaF0gPOWQjeensD4gPOaWsOeahOWcsOWdgD4gWzzml6fnmoTlnLDlnYA+XSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoyMSBidWlsdGluL3JlbW90ZS5jOjY5CiBtc2dpZCAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tYWRkIDxuYW1lPiA8bmV3dXJsPiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC11cmwgLS1hZGQgPOWQjeensD4gPOaWsOeahOWcsOWdgD4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MjIgYnVpbHRpbi9yZW1vdGUuYzo3MAogbXNnaWQgImdpdCByZW1vdGUgc2V0LXVybCAtLWRlbGV0ZSA8bmFtZT4gPHVybD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtdXJsIC0tZGVsZXRlIDzlkI3np7A+IDzlnLDlnYA+IgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjI3CiBtc2dpZCAiZ2l0IHJlbW90ZSBhZGQgWzxvcHRpb25zPl0gPG5hbWU+IDx1cmw+IgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vcmVtb3RlLmM6NDIKLW1zZ2lkICJnaXQgcmVtb3RlIHNldC1oZWFkIDxuYW1lPiAoLWEgfCAtZCB8IDxicmFuY2g+XSkiCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBhZGQgWzzpgInpobk+XSA85ZCN56ewPiA85Zyw5Z2APiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo0NwogbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIDxuYW1lPiA8YnJhbmNoPi4uLiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyA85ZCN56ewPiA85YiG5pSvPi4uLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo0OAogbXNnaWQgImdpdCByZW1vdGUgc2V0LWJyYW5jaGVzIC0tYWRkIDxuYW1lPiA8YnJhbmNoPi4uLiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHNldC1icmFuY2hlcyAtLWFkZCA85ZCN56ewPiA85YiG5pSvPi4uLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo1MwogbXNnaWQgImdpdCByZW1vdGUgc2hvdyBbPG9wdGlvbnM+XSA8bmFtZT4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlbW90ZSBzaG93IFs86YCJ6aG5Pl0gPOWQjeensD4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NTgKIG1zZ2lkICJnaXQgcmVtb3RlIHBydW5lIFs8b3B0aW9ucz5dIDxuYW1lPiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHBydW5lIFs86YCJ6aG5Pl0gPOWQjeensD4iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6NjMKIG1zZ2lkICJnaXQgcmVtb3RlIHVwZGF0ZSBbPG9wdGlvbnM+XSBbPGdyb3VwPiB8IDxyZW1vdGU+XS4uLiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVtb3RlIHVwZGF0ZSBbPOmAiemhuT5dIFs857uEPiB8IDzov5znqIs+XS4uLiIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzo5OAogIywgYy1mb3JtYXQKQEAgLTcyNzMsMzQgKzc2NzcsMzIgQEAKIG1zZ3N0ciAi5pyq55+l55qE6ZWc5YOP5Y+C5pWw77yaJXMiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTYzCi0jLCBmdXp6eQogbXNnaWQgImZldGNoIHRoZSByZW1vdGUgYnJhbmNoZXMiCi1tc2dzdHIgIiAg6L+c56iL5YiG5pSv77yaJXMiCittc2dzdHIgIuaKk+WPlui/nOeoi+eahOWIhuaUryIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNjUKIG1zZ2lkICJpbXBvcnQgYWxsIHRhZ3MgYW5kIGFzc29jaWF0ZWQgb2JqZWN0cyB3aGVuIGZldGNoaW5nIgotbXNnc3RyICIiCittc2dzdHIgIuaKk+WPluaXtuWvvOWFpeaJgOacieeahCB0YWdzIOWSjOWFs+iBlOWvueixoSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNjgKIG1zZ2lkICJvciBkbyBub3QgZmV0Y2ggYW55IHRhZyBhdCBhbGwgKC0tbm8tdGFncykiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5oiW5LiN5oqT5Y+W5Lu75L2VIHRhZ++8iC0tbm8tdGFnc++8iSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNzAKIG1zZ2lkICJicmFuY2goZXMpIHRvIHRyYWNrIgotbXNnc3RyICIiCittc2dzdHIgIui3n+i4queahOWIhuaUryIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNzEKLSMsIGZ1enp5CiBtc2dpZCAibWFzdGVyIGJyYW5jaCIKLW1zZ3N0ciAiICDov5znqIvliIbmlK/vvJolcyIKK21zZ3N0ciAi5Li757q/5YiG5pSvIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE3MgogbXNnaWQgInB1c2h8ZmV0Y2giCi1tc2dzdHIgIiIKK21zZ3N0ciAicHVzaHxmZXRjaCIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNzMKIG1zZ2lkICJzZXQgdXAgcmVtb3RlIGFzIGEgbWlycm9yIHRvIHB1c2ggdG8gb3IgZmV0Y2ggZnJvbSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmiorov5znqIvorr7nva7kuLrnlKjku6XmjqjpgIHmiJbmipPlj5bnmoTplZzlg48iCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTg1CiBtc2dpZCAic3BlY2lmeWluZyBhIG1hc3RlciBicmFuY2ggbWFrZXMgbm8gc2Vuc2Ugd2l0aCAtLW1pcnJvciIKQEAgLTc0OTUsOSArNzg5Nyw4IEBACiBtc2dzdHIgIiAgICAlLSpzIOaOqOmAgeiHsyAlcyIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMDkxCi0jLCBmdXp6eQogbXNnaWQgImRvIG5vdCBxdWVyeSByZW1vdGVzIgotbXNnc3RyICLkuI3kvJrliKDpmaQgJXNcbiIKK21zZ3N0ciAi5LiN5p+l6K+i6L+c56iLIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjExMTgKICMsIGMtZm9ybWF0CkBAIC03NTYwLDExICs3OTYxLDExIEBACiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTE5OQogbXNnaWQgInNldCByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQgYWNjb3JkaW5nIHRvIHJlbW90ZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmoLnmja7ov5znqIvorr7nva4gcmVmcy9yZW1vdGVzLzzlkI3np7A+L0hFQUQiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTIwMQogbXNnaWQgImRlbGV0ZSByZWZzL3JlbW90ZXMvPG5hbWU+L0hFQUQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Yig6ZmkIHJlZnMvcmVtb3Rlcy885ZCN56ewPi9IRUFEIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjEyMTYKIG1zZ2lkICJDYW5ub3QgZGV0ZXJtaW5lIHJlbW90ZSBIRUFEIgpAQCAtNzU5MywxMyArNzk5NCwxMyBAQAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAlcyB3aWxsIGJlY29tZSBkYW5nbGluZyEiCi1tc2dzdHIgIiAlcyDlsIbmiJDkuLrmgqznqbrnirbmgIHvvIEiCittc2dzdHIgIiAlcyDlsIbmiJDkuLrmkYfmkYbnirbmgIHvvIEiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAlcyBoYXMgYmVjb21lIGRhbmdsaW5nISIKLW1zZ3N0ciAiICVzIOW3suaIkOS4uuaCrOepuueKtuaAge+8gSIKK21zZ3N0ciAiICVzIOW3suaIkOS4uuaRh+aRhueKtuaAge+8gSIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMjgxCiAjLCBjLWZvcm1hdApAQCAtNzYyMyw3ICs4MDI0LDcgQEAKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxMzIxCiBtc2dpZCAicHJ1bmUgcmVtb3RlcyBhZnRlciBmZXRjaGluZyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmipPlj5blkI7muIXpmaTov5znqIsiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTM4NyBidWlsdGluL3JlbW90ZS5jOjE0NjEKICMsIGMtZm9ybWF0CkBAIC03NjMxLDkgKzgwMzIsOCBAQAogbXNnc3RyICLmsqHmnInmraTov5znqIsgJyVzJyIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDA3Ci0jLCBmdXp6eQogbXNnaWQgImFkZCBicmFuY2giCi1tc2dzdHIgIuS9jeS6juWIhuaUryAiCittc2dzdHIgIua3u+WKoOWIhuaUryIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDE0CiBtc2dpZCAibm8gcmVtb3RlIHNwZWNpZmllZCIKQEAgLTc2NDEsMTYgKzgwNDEsMTUgQEAKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDM2CiBtc2dpZCAibWFuaXB1bGF0ZSBwdXNoIFVSTHMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pON5L2c5o6o6YCBIFVSTFMiCiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTQzOAogbXNnaWQgImFkZCBVUkwiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5re75YqgIFVSTCIKIAogIzogYnVpbHRpbi9yZW1vdGUuYzoxNDQwCi0jLCBmdXp6eQogbXNnaWQgImRlbGV0ZSBVUkxzIgotbXNnc3RyICLliKDpmaQiCittc2dzdHIgIuWIoOmZpCBVUkxTIgogCiAjOiBidWlsdGluL3JlbW90ZS5jOjE0NDcKIG1zZ2lkICItLWFkZCAtLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2UiCkBAIC03NjcyLDUzICs4MDcxLDUyIEBACiAKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTU2OQogbXNnaWQgImJlIHZlcmJvc2U7IG11c3QgYmUgcGxhY2VkIGJlZm9yZSBhIHN1YmNvbW1hbmQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5YaX6ZW/6L6T5Ye677yb5b+F6aG7572u5LqO5a2Q5ZG95Luk5LmL5YmNIgogCiAjOiBidWlsdGluL3JlcGxhY2UuYzoxNwogbXNnaWQgImdpdCByZXBsYWNlIFstZl0gPG9iamVjdD4gPHJlcGxhY2VtZW50PiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmVwbGFjZSBbLWZdIDzlr7nosaE+IDzmm7/mjaLniak+IgogCiAjOiBidWlsdGluL3JlcGxhY2UuYzoxOAogbXNnaWQgImdpdCByZXBsYWNlIC1kIDxvYmplY3Q+Li4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCByZXBsYWNlIC1kIDzlr7nosaE+Li4uIgogCiAjOiBidWlsdGluL3JlcGxhY2UuYzoxOQogbXNnaWQgImdpdCByZXBsYWNlIC1sIFs8cGF0dGVybj5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCByZXBsYWNlIC1sIFs85qih5byPPl0iCiAKLSM6IGJ1aWx0aW4vcmVwbGFjZS5jOjExOAorIzogYnVpbHRpbi9yZXBsYWNlLmM6MTIxCiBtc2dpZCAibGlzdCByZXBsYWNlIHJlZnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5YiX5Ye65pu/5o2i55qE5byV55SoIgogCi0jOiBidWlsdGluL3JlcGxhY2UuYzoxMTkKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjEyMgogbXNnaWQgImRlbGV0ZSByZXBsYWNlIHJlZnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Yig6Zmk5pu/5o2i55qE5byV55SoIgogCi0jOiBidWlsdGluL3JlcGxhY2UuYzoxMjAKKyM6IGJ1aWx0aW4vcmVwbGFjZS5jOjEyMwogbXNnaWQgInJlcGxhY2UgdGhlIHJlZiBpZiBpdCBleGlzdHMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5aaC5p6c5a2Y5Zyo5YiZ5pu/5o2i5byV55SoIgogCiAjOiBidWlsdGluL3JlcmVyZS5jOjExCiBtc2dpZCAiZ2l0IHJlcmVyZSBbY2xlYXIgfCBmb3JnZXQgcGF0aC4uLiB8IHN0YXR1cyB8IHJlbWFpbmluZyB8IGRpZmYgfCBnY10iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlcmVyZSBbY2xlYXIgfCBmb3JnZXQgcGF0aC4uLiB8IHN0YXR1cyB8IHJlbWFpbmluZyB8IGRpZmYgfCBnY10iCiAKICM6IGJ1aWx0aW4vcmVyZXJlLmM6NTYKLSMsIGZ1enp5CiBtc2dpZCAicmVnaXN0ZXIgY2xlYW4gcmVzb2x1dGlvbnMgaW4gaW5kZXgiCi1tc2dzdHIgIiVz77ya5bey57uP5a2Y5Zyo5LqO57Si5byV5LitIgorbXNnc3RyICLlnKjntKLlvJXkuK3ms6jlhozlubLlh4DnmoTop6PlhrPmlrnmoYgiCiAKICM6IGJ1aWx0aW4vcmVzZXQuYzoyNQogbXNnaWQgIiIKICJnaXQgcmVzZXQgWy0tbWl4ZWQgfCAtLXNvZnQgfCAtLWhhcmQgfCAtLW1lcmdlIHwgLS1rZWVwXSBbLXFdIFs8Y29tbWl0Pl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstLW1peGVkIHwgLS1zb2Z0IHwgLS1oYXJkIHwgLS1tZXJnZSB8IC0ta2VlcF0gWy1xXSBbPOaPkOS6pD5dIgogCiAjOiBidWlsdGluL3Jlc2V0LmM6MjYKLW1zZ2lkICJnaXQgcmVzZXQgWy1xXSA8Y29tbWl0PiBbLS1dIDxwYXRocz4uLi4iCi1tc2dzdHIgIiIKK21zZ2lkICJnaXQgcmVzZXQgWy1xXSA8dHJlZS1pc2g+IFstLV0gPHBhdGhzPi4uLiIKK21zZ3N0ciAiZ2l0IHJlc2V0IFstcV0gPOagkeaIluaPkOS6pD4gWy0tXSA86Lev5b6EPi4uLiIKIAogIzogYnVpbHRpbi9yZXNldC5jOjI3Ci1tc2dpZCAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzxjb21taXQ+XSBbLS1dIFs8cGF0aHM+Li4uXSIKLW1zZ3N0ciAiIgorbXNnaWQgImdpdCByZXNldCAtLXBhdGNoIFs8dHJlZS1pc2g+XSBbLS1dIFs8cGF0aHM+Li4uXSIKK21zZ3N0ciAiZ2l0IHJlc2V0IC0tcGF0Y2ggWzzmoJHmiJbmj5DkuqQ+XSBbLS1dIFs86Lev5b6EPi4uLl0iCiAKICM6IGJ1aWx0aW4vcmVzZXQuYzozMwogbXNnaWQgIm1peGVkIgpAQCAtNzc0MCwxMDQgKzgxMzgsMTA5IEBACiBtc2dpZCAia2VlcCIKIG1zZ3N0ciAi5L+d5oyBIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6NzcKKyM6IGJ1aWx0aW4vcmVzZXQuYzo3MwogbXNnaWQgIllvdSBkbyBub3QgaGF2ZSBhIHZhbGlkIEhFQUQuIgogbXNnc3RyICLmgqjmsqHmnInkuIDkuKrmnInmlYjnmoQgSEVBROOAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjc5CisjOiBidWlsdGluL3Jlc2V0LmM6NzUKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mIEhFQUQuIgogbXNnc3RyICLml6Dms5Xmib7liLAgSEVBRCDmjIflkJHnmoTmoJHjgIIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo4NQorIzogYnVpbHRpbi9yZXNldC5jOjgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgJXMuIgogbXNnc3RyICLml6Dms5Xmib7liLAgJXMg5oyH5ZCR55qE5qCR44CCIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6OTYKLW1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgbmV3IGluZGV4IGZpbGUuIgotbXNnc3RyICLkuI3og73lhpnlhaXmlrDnmoTntKLlvJXmlofku7bjgIIiCi0KLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMDYKKyM6IGJ1aWx0aW4vcmVzZXQuYzo5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCAlcyIKIG1zZ3N0ciAiSEVBRCDnjrDlnKjkvY3kuo4gJXMiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoxMzAKLW1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKLW1zZ3N0ciAi5LiN6IO96K+75Y+W57Si5byVIgotCi0jOiBidWlsdGluL3Jlc2V0LmM6MTMzCi1tc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCi1tc2dzdHIgIumHjee9ruWQjuaSpOWHuuaaguWtmOWMuueahOWPmOabtO+8miIKLQogIyAg6K+R6ICF77ya5rGJ5a2X5LmL6Ze05peg56m65qC877yM5pWF5Yig6ZmkJXPliY3lkI7nqbrmoLwKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyMjMKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAi5Zyo5ZCI5bm26L+H56iL5Lit5LiN6IO95YGaJXPph43nva7mk43kvZzjgIIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyMzgKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNDgKIG1zZ2lkICJiZSBxdWlldCwgb25seSByZXBvcnQgZXJyb3JzIgotbXNnc3RyICIiCittc2dzdHIgIuWuiemdmeaooeW8j++8jOWPquaKpeWRiumUmeivryIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MAorIzogYnVpbHRpbi9yZXNldC5jOjI1MAogbXNnaWQgInJlc2V0IEhFQUQgYW5kIGluZGV4IgotbXNnc3RyICIiCittc2dzdHIgIumHjee9riBIRUFEIOWSjOe0ouW8lSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MQorIzogYnVpbHRpbi9yZXNldC5jOjI1MQogbXNnaWQgInJlc2V0IG9ubHkgSEVBRCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlj6rph43nva4gSEVBRCIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0MyBidWlsdGluL3Jlc2V0LmM6MjQ1CisjOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKIG1zZ2lkICJyZXNldCBIRUFELCBpbmRleCBhbmQgd29ya2luZyB0cmVlIgotbXNnc3RyICIiCittc2dzdHIgIumHjee9riBIRUFE44CB57Si5byV5ZKM5bel5L2c5Yy6IgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjQ3CisjOiBidWlsdGluL3Jlc2V0LmM6MjU3CiBtc2dpZCAicmVzZXQgSEVBRCBidXQga2VlcCBsb2NhbCBjaGFuZ2VzIgotbXNnc3RyICIiCittc2dzdHIgIumHjee9riBIRUFEIOS9huS/neWtmOacrOWcsOWPmOabtCIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMworIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgorbXNnc3RyICLml6Dms5XlsIYgJyVzJyDop6PmnpDkuLrkuIDkuKrmnInmlYjnmoTniYjmnKzjgIIiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzggYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICLkuI3og73op6PmnpDlr7nosaEgJyVzJ+OAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwOAotbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggLS17aGFyZCxtaXhlZCxzb2Z0fSIKLW1zZ3N0ciAiLS1wYXRjaCDkuI4gLS17aGFyZCxtaXhlZCxzb2Z0fSDkuI3lhbzlrrkiCisjOiBidWlsdGluL3Jlc2V0LmM6MjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCB0cmVlLiIKK21zZ3N0ciAi5peg5rOV5bCGICclcycg6Kej5p6Q5Li65LiA5Liq5pyJ5pWI55qE5qCR5a+56LGh44CCIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzE3CisjOiBidWlsdGluL3Jlc2V0LmM6MjkyCittc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IgorbXNnc3RyICItLXBhdGNoIOS4jiAtLXtoYXJk44CBbWl4ZWTjgIFzb2Z0fSDpgInpobnkuI3lhbzlrrkiCisKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMDEKIG1zZ2lkICItLW1peGVkIHdpdGggcGF0aHMgaXMgZGVwcmVjYXRlZDsgdXNlICdnaXQgcmVzZXQgLS0gPHBhdGhzPicgaW5zdGVhZC4iCiBtc2dzdHIgIi0tbWl4ZWQg5bim6Lev5b6E5bey5byD55So77yM6ICM5piv55SoICdnaXQgcmVzZXQgLS0gPHBhdGhzPifjgIIiCiAKICMgIOivkeiAhe+8muaxieWtl+S5i+mXtOaXoOepuuagvO+8jOaVheWIoOmZpCVz5YmN5ZCO56m65qC8Ci0jOiBidWlsdGluL3Jlc2V0LmM6MzE5CisjOiBidWlsdGluL3Jlc2V0LmM6MzAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAi5LiN6IO95bim6Lev5b6E6L+b6KGMJXPph43nva7jgIIiCiAKICMgIOivkeiAhe+8muaxieWtl+S5i+mXtOaXoOepuuagvO+8jOaVheWIoOmZpCVz5YmN5ZCO56m65qC8Ci0jOiBidWlsdGluL3Jlc2V0LmM6MzMxCisjOiBidWlsdGluL3Jlc2V0LmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHJlc2V0IGlzIG5vdCBhbGxvd2VkIGluIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICLkuI3og73lr7noo7jniYjmnKzlupPov5vooYwlc+mHjee9riIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0NworIzogYnVpbHRpbi9yZXNldC5jOjMzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVzZXQgaW5kZXggZmlsZSB0byByZXZpc2lvbiAnJXMnLiIKIG1zZ3N0ciAi5LiN6IO96YeN572u57Si5byV5paH5Lu26Iez54mI5pysICclcyfjgIIiCiAKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzkKK21zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKK21zZ3N0ciAi6YeN572u5ZCO5pKk5Ye65pqC5a2Y5Yy655qE5Y+Y5pu077yaIgorCisjOiBidWlsdGluL3Jlc2V0LmM6MzQ0Cittc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKK21zZ3N0ciAi5LiN6IO95YaZ5YWl5paw55qE57Si5byV5paH5Lu244CCIgorCiAjOiBidWlsdGluL3Jldi1wYXJzZS5jOjMzOQotIywgZnV6enkKIG1zZ2lkICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFvpgInpobldIC0tIFs85Y+C5pWwPi4uLl0iCiAKICM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ0CiBtc2dpZCAia2VlcCB0aGUgYC0tYCBwYXNzZWQgYXMgYW4gYXJnIgotbXNnc3RyICIiCittc2dzdHIgIuS/neaMgSBgLS1gIOS9nOS4uuS4gOS4quWPguaVsOS8oOmAkiIKIAogIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozNDYKIG1zZ2lkICJzdG9wIHBhcnNpbmcgYWZ0ZXIgdGhlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6YGH5Yiw56ys5LiA5Liq6Z2e6YCJ6aG55Y+C5pWw5ZCO5YGc5q2i6Kej5p6QIgogCiAjOiBidWlsdGluL3Jldi1wYXJzZS5jOjQ2NAogbXNnaWQgIiIKQEAgLTc4NDcsMjMgKzgyNTAsMjcgQEAKICJcbiIKICJSdW4gXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZmlyc3QgdXNhZ2UuIgogbXNnc3RyICIiCisiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFvpgInpobldIC0tIFs85Y+C5pWwPi4uLl1cbiIKKyIgICDmiJbogIXvvJpnaXQgcmV2LXBhcnNlIC0tc3EtcXVvdGUgWzzpgInpobk+Li4uXVxuIgorIiAgIOaIluiAhe+8mmdpdCByZXYtcGFyc2UgW29wdGlvbnNdIFs86YCJ6aG5Pi4uLl1cbiIKKyJcbiIKKyLliJ3mrKHkvb/nlKjml7bmiafooYwgXCJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgLWhcIiDmnaXojrflvpfmm7TlpJrkv6Hmga/jgIIiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIKLW1zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4iCi1tc2dzdHIgIiIKK21zZ2lkICJnaXQgcmV2ZXJ0IFtvcHRpb25zXSA8Y29tbWl0LWlzaD4uLi4iCittc2dzdHIgImdpdCByZXZlcnQgW+mAiemhuV0gPOaPkOS6pOWPtz4uLi4iCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjMKIG1zZ2lkICJnaXQgcmV2ZXJ0IDxzdWJjb21tYW5kPiIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgcmV2ZXJ0IDzlrZDlkb3ku6Q+IgogCiAjOiBidWlsdGluL3JldmVydC5jOjI4Ci1tc2dpZCAiZ2l0IGNoZXJyeS1waWNrIFtvcHRpb25zXSA8Y29tbWl0LWlzaD4iCi1tc2dzdHIgIiIKK21zZ2lkICJnaXQgY2hlcnJ5LXBpY2sgW29wdGlvbnNdIDxjb21taXQtaXNoPi4uLiIKK21zZ3N0ciAiZ2l0IGNoZXJyeS1waWNrIFvpgInpobldIDzmj5DkuqTlj7c+Li4uIgogCiAjOiBidWlsdGluL3JldmVydC5jOjI5Ci0jLCBmdXp6eQogbXNnaWQgImdpdCBjaGVycnktcGljayA8c3ViY29tbWFuZD4iCi1tc2dzdHIgIuaLo+mAieWksei0pSIKK21zZ3N0ciAiZ2l0IGNoZXJyeS1waWNrIDzlrZDlkb3ku6Q+IgogCiAjOiBidWlsdGluL3JldmVydC5jOjcwIGJ1aWx0aW4vcmV2ZXJ0LmM6OTIKICMsIGMtZm9ybWF0CkBAIC03ODcyLDY4ICs4Mjc5LDU5IEBACiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTAzCiBtc2dpZCAiZW5kIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLnu4jmraLlj43ovazmiJbmi6PpgInmk43kvZwiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA0CiBtc2dpZCAicmVzdW1lIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLnu6fnu63lj43ovazmiJbmi6PpgInmk43kvZwiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1CiBtc2dpZCAiY2FuY2VsIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLlj5bmtojlj43ovazmiJbmi6PpgInmk43kvZwiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA2Ci0jLCBmdXp6eQogbXNnaWQgImRvbid0IGF1dG9tYXRpY2FsbHkgY29tbWl0IgotbXNnc3RyICLkuI3og73kvZzkuLrliJ3lp4vmj5DkuqTov5jljp8iCittc2dzdHIgIuS4jeimgeiHquWKqOaPkOS6pCIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoxMDcKLSMsIGZ1enp5CiBtc2dpZCAiZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UiCi1tc2dzdHIgIuepuuaPkOS6pOS/oeaBr+OAgiIKK21zZ3N0ciAi57yW6L6R5o+Q5Lqk6K+05piOIgogCiAjOiBidWlsdGluL3JldmVydC5jOjExMAogbXNnaWQgInBhcmVudCBudW1iZXIiCi1tc2dzdHIgIiIKK21zZ3N0ciAi54i257yW5Y+3IgogCiAjOiBidWlsdGluL3JldmVydC5jOjExMgotIywgZnV6enkKIG1zZ2lkICJtZXJnZSBzdHJhdGVneSIKLW1zZ3N0ciAi5bCd6K+V5ZCI5bm2562W55WlICVzLi4uXG4iCittc2dzdHIgIuWQiOW5tuetlueVpSIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoxMTMKLSMsIGZ1enp5CiBtc2dpZCAib3B0aW9uIgotbXNnc3RyICLliqjkvZwiCittc2dzdHIgIumAiemhuSIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKLSMsIGZ1enp5CiBtc2dpZCAib3B0aW9uIGZvciBtZXJnZSBzdHJhdGVneSIKLW1zZ3N0ciAi5bCd6K+V5ZCI5bm2562W55WlICVzLi4uXG4iCittc2dzdHIgIuWQiOW5tuetlueVpeeahOmAiemhuSIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoxMjUKIG1zZ2lkICJhcHBlbmQgY29tbWl0IG5hbWUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6L+95Yqg5o+Q5Lqk5ZCN56ewIgogCiAjOiBidWlsdGluL3JldmVydC5jOjEyNgotIywgZnV6enkKIG1zZ2lkICJhbGxvdyBmYXN0LWZvcndhcmQiCi1tc2dzdHIgIu+8iOmdnuW/q+i/m+W8j++8iSIKK21zZ3N0ciAi5YWB6K645b+r6L+b5byPIgogCiAjOiBidWlsdGluL3JldmVydC5jOjEyNwotIywgZnV6enkKIG1zZ2lkICJwcmVzZXJ2ZSBpbml0aWFsbHkgZW1wdHkgY29tbWl0cyIKLW1zZ3N0ciAi5LiN6IO95L2c5Li65Yid5aeL5o+Q5Lqk6L+Y5Y6fIgorbXNnc3RyICLkv53nlZnliJ3lp4vljJbnmoTnqbrmj5DkuqQiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4Ci0jLCBmdXp6eQogbXNnaWQgImFsbG93IGNvbW1pdHMgd2l0aCBlbXB0eSBtZXNzYWdlcyIKLW1zZ3N0ciAi5o+Q5Lqk6K+05piO5Li656m6IgorbXNnc3RyICLlhYHorrjmj5DkuqTor7TmmI7kuLrnqboiCiAKICM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI5Ci0jLCBmdXp6eQogbXNnaWQgImtlZXAgcmVkdW5kYW50LCBlbXB0eSBjb21taXRzIgotbXNnc3RyICLlkIjlubbmnKrov5Tlm57mj5DkuqQiCittc2dzdHIgIuS/neaMgeWkmuS9meeahOOAgeepuueahOaPkOS6pCIKIAogIzogYnVpbHRpbi9yZXZlcnQuYzoxMzMKIG1zZ2lkICJwcm9ncmFtIGVycm9yIgpAQCAtNzk0NywxMiArODM0NSwyMCBAQAogbXNnaWQgImNoZXJyeS1waWNrIGZhaWxlZCIKIG1zZ3N0ciAi5ouj6YCJ5aSx6LSlIgogCi0jOiBidWlsdGluL3JtLmM6MTQKLSMsIGZ1enp5CisjOiBidWlsdGluL3JtLmM6MTUKIG1zZ2lkICJnaXQgcm0gW29wdGlvbnNdIFstLV0gPGZpbGU+Li4uIgotbXNnc3RyICJnaXQgYXBwbHkgW+mAiemhuV0gWzzooaXkuIE+Li4uXSIKK21zZ3N0ciAiZ2l0IHJtIFvpgInpobldIFstLV0gPOaWh+S7tj4uLi4iCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMDkKKyM6IGJ1aWx0aW4vcm0uYzo2NCBidWlsdGluL3JtLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICIiCisi5a2Q5qih57uEICclcyfvvIjmiJbogIXlroPnmoTkuIDkuKrltYzlpZflrZDmqKHnu4TvvInkvb/nlKjkuIDkuKogLmdpdCDnm67lvZVcbiIKKyLvvIjkvb/nlKggJ3JtIC1yZicg5ZG95Luk5aaC5p6c5oKo55yf55qE5oOz5Yig6Zmk5a6D5Y+K5YW25YWo6YOo5Y6G5Y+y77yJIgorCisjOiBidWlsdGluL3JtLmM6MTc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZSBmaWxlIGFuZCB0aGUgSEVBRFxuIgpAQCAtNzk2MSw3ICs4MzY3LDcgQEAKICInJXMnIOaaguWtmOeahOWGheWuueWSjOW3peS9nOWMuuWPiiBIRUFEIOS4reeahOmDveS4jeS4gOagt1xuIgogIu+8iOS9v+eUqCAtZiDlvLrliLbliKDpmaTvvIkiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMTUKKyM6IGJ1aWx0aW4vcm0uYzoxODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgpAQCAtNzk3MCw3ICs4Mzc2LDcgQEAKICInJXMnIOacieWPmOabtOW3suaaguWtmOiHs+e0ouW8leS4rVxuIgogIu+8iOS9v+eUqCAtLWNhY2hlZCDkv53lrZjmlofku7bvvIzmiJbnlKggLWYg5by65Yi25Yig6Zmk77yJIgogCi0jOiBidWlsdGluL3JtLmM6MTE5CisjOiBidWlsdGluL3JtLmM6MTkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zXG4iCkBAIC03OTc5LDY2ICs4Mzg1LDY0IEBACiAiJyVzJyDmnInmnKzlnLDkv67mlLlcbiIKICLvvIjkvb/nlKggLS1jYWNoZWQg5L+d5a2Y5paH5Lu277yM5oiW55SoIC1mIOW8uuWItuWIoOmZpO+8iSIKIAotIzogYnVpbHRpbi9ybS5jOjEzNAotIywgZnV6enkKKyM6IGJ1aWx0aW4vcm0uYzoyMDcKIG1zZ2lkICJkbyBub3QgbGlzdCByZW1vdmVkIGZpbGVzIgotbXNnc3RyICLml6Dms5Xov5jljp/kv67mlLnnmoTmlofku7YiCittc2dzdHIgIuS4jeWIl+WHuuWIoOmZpOeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9ybS5jOjEzNQotIywgZnV6enkKKyM6IGJ1aWx0aW4vcm0uYzoyMDgKIG1zZ2lkICJvbmx5IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIKLW1zZ3N0ciAi5LiN6IO95LuO57Si5byV5Lit56e76ZmkICVzIgorbXNnc3RyICLlj6rku47ntKLlvJXljLrliKDpmaQiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMzYKKyM6IGJ1aWx0aW4vcm0uYzoyMDkKIG1zZ2lkICJvdmVycmlkZSB0aGUgdXAtdG8tZGF0ZSBjaGVjayIKLW1zZ3N0ciAiIgorbXNnc3RyICLlv73nlaXmlofku7bmm7TmlrDnirbmgIHmo4Dmn6UiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMzcKKyM6IGJ1aWx0aW4vcm0uYzoyMTAKIG1zZ2lkICJhbGxvdyByZWN1cnNpdmUgcmVtb3ZhbCIKLW1zZ3N0ciAiIgorbXNnc3RyICLlhYHorrjpgJLlvZLliKDpmaQiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxMzkKKyM6IGJ1aWx0aW4vcm0uYzoyMTIKIG1zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKLW1zZ3N0ciAiIgorbXNnc3RyICLljbPkvb/msqHmnInljLnphY3vvIzkuZ/ku6Xpm7bnirbmgIHpgIDlh7oiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxOTQKKyM6IGJ1aWx0aW4vcm0uYzoyODMKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IHJlbW92aW5nICclcycgcmVjdXJzaXZlbHkgd2l0aG91dCAtciIKIG1zZ3N0ciAi5pyq5o+Q5L6bIC1yIOmAiemhueS4jeS8mumAkuW9kuWIoOmZpCAnJXMnIgogCi0jOiBidWlsdGluL3JtLmM6MjMwCisjOiBidWlsdGluL3JtLmM6MzIyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBybTogdW5hYmxlIHRvIHJlbW92ZSAlcyIKIG1zZ3N0ciAiZ2l0IHJt77ya5LiN6IO95Yig6ZmkICVzIgogCiAjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMKLW1zZ2lkICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iCi1tc2dzdHIgIiIKK21zZ2lkICJnaXQgc2hvcnRsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIFs8cGF0aD4uLi5dXSIKK21zZ3N0ciAiZ2l0IHNob3J0bG9nIFs86YCJ6aG5Pl0gWzzniYjmnKzojIPlm7Q+XSBbWy0tXSBbPOi3r+W+hD4uLi5dXSIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjE1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIGF1dGhvcjogJXMiCiBtc2dzdHIgIue8uuWwkeS9nOiAhe+8miVzIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjUzCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI3CiBtc2dpZCAic29ydCBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgY29tbWl0cyBwZXIgYXV0aG9yIgotbXNnc3RyICIiCittc2dzdHIgIuagueaNruavj+S4quS9nOiAheeahOaPkOS6pOaVsOmHj+aOkuW6jyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1NQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOQogbXNnaWQgIlN1cHByZXNzIGNvbW1pdCBkZXNjcmlwdGlvbnMsIG9ubHkgcHJvdmlkZXMgY29tbWl0IGNvdW50IgotbXNnc3RyICIiCittc2dzdHIgIumakOiXj+aPkOS6pOivtOaYju+8jOWPquaPkOS+m+aPkOS6pOaVsOmHjyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjI1NworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMQogbXNnaWQgIlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgZWFjaCBhdXRob3IiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65q+P5Liq5L2c6ICF55qE55S15a2Q6YKu5Lu25Zyw5Z2AIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjU4CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMyCiBtc2dpZCAid1ssaTFbLGkyXV0iCi1tc2dzdHIgIiIKK21zZ3N0ciAid1ssaTFbLGkyXV0iCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTkKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzMKIG1zZ2lkICJMaW5ld3JhcCBvdXRwdXQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5oqY6KGM6L6T5Ye6IgogCiAjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6OQogbXNnaWQgIiIKQEAgLTgwNDcsMTYyICs4NDUxLDE3MSBAQAogImluZGVwZW5kZW50IHwgLS1tZXJnZS1iYXNlXSBbLS1uby1uYW1lIHwgLS1zaGExLW5hbWVdIFstLXRvcGljc10gWyg8cmV2PiB8ICIKICI8Z2xvYj4pLi4uXSIKIG1zZ3N0ciAiIgorImdpdCBzaG93LWJyYW5jaCBbLWF8LS1hbGxdIFstcnwtLXJlbW90ZXNdIFstLXRvcG8tb3JkZXIgfCAtLWRhdGUtb3JkZXJdIFstLSIKKyJjdXJyZW50XSBbLS1jb2xvcls9PHdoZW4+XSB8IC0tbm8tY29sb3JdIFstLXNwYXJzZV0gWy0tbW9yZT08bj4gfCAtLWxpc3QgfCAtLSIKKyJpbmRlcGVuZGVudCB8IC0tbWVyZ2UtYmFzZV0gWy0tbm8tbmFtZSB8IC0tc2hhMS1uYW1lXSBbLS10b3BpY3NdIFsoPHJldj4gfCAiCisiPGdsb2I+KS4uLl0iCiAKICM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzoxMAogbXNnaWQgImdpdCBzaG93LWJyYW5jaCAoLWd8LS1yZWZsb2cpWz08bj5bLDxiYXNlPl1dIFstLWxpc3RdIFs8cmVmPl0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHNob3ctYnJhbmNoICgtZ3wtLXJlZmxvZylbPTxuPlssPGJhc2U+XV0gWy0tbGlzdF0gWzxyZWY+XSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MQotIywgZnV6enkKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTAKIG1zZ2lkICJzaG93IHJlbW90ZS10cmFja2luZyBhbmQgbG9jYWwgYnJhbmNoZXMiCi1tc2dzdHIgIiVzIOayoeacieadpeiHqiAlcyDnmoTov5znqIvot5/ouKrliIbmlK8iCittc2dzdHIgIuaYvuekuui/nOeoi+i3n+i4queahOWSjOacrOWcsOeahOWIhuaUryIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1MwotIywgZnV6enkKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTIKIG1zZ2lkICJzaG93IHJlbW90ZS10cmFja2luZyBicmFuY2hlcyIKLW1zZ3N0ciAiJXMg5rKh5pyJ5p2l6IeqICVzIOeahOi/nOeoi+i3n+i4quWIhuaUryIKK21zZ3N0ciAi5pi+56S66L+c56iL6Lef6Liq55qE5YiG5pSvIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU0CiBtc2dpZCAiY29sb3IgJyohKy0nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJyYW5jaCIKLW1zZ3N0ciAiIgorbXNnc3RyICLnnYDoibIgJyohKy0nIOWIsOebuOW6lOeahOWIhuaUryIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NgogbXNnaWQgInNob3cgPG4+IG1vcmUgY29tbWl0cyBhZnRlciB0aGUgY29tbW9uIGFuY2VzdG9yIgotbXNnc3RyICIiCittc2dzdHIgIuaYvuekuuWFseWQjOelluWFiOWQjueahCA8bj4g5Liq5o+Q5LqkIgorCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU4Cittc2dpZCAic3lub255bSB0byBtb3JlPS0xIgorbXNnc3RyICLlkowgbW9yZT0tMSDlkIzkuYkiCiAKICM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTkKLW1zZ2lkICJzeW5vbnltIHRvIG1vcmU9LTEiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MAogbXNnaWQgInN1cHByZXNzIG5hbWluZyBzdHJpbmdzIgotbXNnc3RyICIiCittc2dzdHIgIuS4jeaYvuekuuWtl+espuS4suWRveWQjSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2MgotIywgZnV6enkKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjEKIG1zZ2lkICJpbmNsdWRlIHRoZSBjdXJyZW50IGJyYW5jaCIKLW1zZ3N0ciAi5rKh5pyJ5b2T5YmN5YiG5pSv44CCIgorbXNnc3RyICLljIXmi6zlvZPliY3liIbmlK8iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjQKLSMsIGZ1enp5CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjYzCiBtc2dpZCAibmFtZSBjb21taXRzIHdpdGggdGhlaXIgb2JqZWN0IG5hbWVzIgotbXNnc3RyICLkuI3og73lhpnms6jop6Plr7nosaEiCittc2dzdHIgIuS7peWvueixoeWQjeWtl+WRveWQjeaPkOS6pCIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY2NQogbXNnaWQgInNob3cgcG9zc2libGUgbWVyZ2UgYmFzZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65Y+v6IO95ZCI5bm255qE5Z+657q/IgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY4CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjY3CiBtc2dpZCAic2hvdyByZWZzIHVucmVhY2hhYmxlIGZyb20gYW55IG90aGVyIHJlZiIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrmsqHmnInku7vkvZXlvJXnlKjnmoTnmoTlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzAKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NjkKIG1zZ2lkICJzaG93IGNvbW1pdHMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Lul5ouT5omR6aG65bqP5pi+56S65o+Q5LqkIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcyCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcxCiBtc2dpZCAic2hvdyBvbmx5IGNvbW1pdHMgbm90IG9uIHRoZSBmaXJzdCBicmFuY2giCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5pi+56S65LiN5Zyo56ys5LiA5Liq5YiG5pSv5LiK55qE5o+Q5LqkIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc0CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjczCiBtc2dpZCAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIgotbXNnc3RyICIiCittc2dzdHIgIuaYvuekuuS7heS4gOS4quWIhuaUr+WPr+iuv+mXrueahOWQiOW5tuaPkOS6pCIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NQogbXNnaWQgInNob3cgY29tbWl0cyB3aGVyZSBubyBwYXJlbnQgY29tZXMgYmVmb3JlIGl0cyBjaGlsZHJlbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLmmL7npLrmj5DkuqTml7bku6Xml7bpl7TkuLrluo/kuJTniLbmj5DkuqTkuI3og73pooblhYjlrZDmj5DkuqQiCisKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzcKK21zZ2lkICI8bj5bLDxiYXNlPl0iCittc2dzdHIgIjxuPlssPGJhc2U+XSIKIAogIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAotbXNnaWQgIjxuPlssPGJhc2U+XSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc5CiBtc2dpZCAic2hvdyA8bj4gbW9zdCByZWNlbnQgcmVmLWxvZyBlbnRyaWVzIHN0YXJ0aW5nIGF0IGJhc2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65LuOIGJhc2Ug5byA5aeL55qEIDxuPiDmnaHmnIDov5HnmoTlvJXnlKjml6Xlv5forrDlvZUiCiAKICM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxMAogbXNnaWQgIiIKLSJnaXQgc2hvdy1yZWYgWy1xfC0tcXVpZXRdIFstLXZlcmlmeV0gWy0taGVhZF0gWy1kfC0tZGVyZWZlcmVuY2VdIFstc3wtLWhhc2giCi0iWz08bj5dXSBbLS1hYmJyZXZbPTxuPl1dIFstLXRhZ3NdIFstLWhlYWRzXSBbLS1dIFtwYXR0ZXJuKl0gIgorImdpdCBzaG93LXJlZiBbLXF8LS1xdWlldF0gWy0tdmVyaWZ5XSBbLS1oZWFkXSBbLWR8LS1kZXJlZmVyZW5jZV0gWy1zfC0tIgorImhhc2hbPTxuPl1dIFstLWFiYnJldls9PG4+XV0gWy0tdGFnc10gWy0taGVhZHNdIFstLV0gW3BhdHRlcm4qXSAiCiBtc2dzdHIgIiIKKyJnaXQgc2hvdy1yZWYgWy1xfC0tcXVpZXRdIFstLXZlcmlmeV0gWy0taGVhZF0gWy1kfC0tZGVyZWZlcmVuY2VdIFstc3wtLSIKKyJoYXNoWz08bj5dXSBbLS1hYmJyZXZbPTxuPl1dIFstLXRhZ3NdIFstLWhlYWRzXSBbLS1dIFtwYXR0ZXJuKl0gIgogCiAjOiBidWlsdGluL3Nob3ctcmVmLmM6MTEKIG1zZ2lkICJnaXQgc2hvdy1yZWYgLS1leGNsdWRlLWV4aXN0aW5nWz1wYXR0ZXJuXSA8IHJlZi1saXN0IgotbXNnc3RyICIiCittc2dzdHIgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPeaooeW8j10gPCDlvJXnlKjliJfooagiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNjUKK21zZ2lkICJvbmx5IHNob3cgdGFncyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggaGVhZHMpIgorbXNnc3RyICLlj6rmmL7npLogdGFnc++8iOWPr+S7peWSjOWktOWFseeUqO+8iSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NgorbXNnaWQgIm9ubHkgc2hvdyBoZWFkcyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggdGFncykiCittc2dzdHIgIuWPquaYvuekuuWktO+8iOWPr+S7peWSjCB0YWdzIOWFseeUqO+8iSIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NworbXNnaWQgInN0cmljdGVyIHJlZmVyZW5jZSBjaGVja2luZywgcmVxdWlyZXMgZXhhY3QgcmVmIHBhdGgiCittc2dzdHIgIuabtOS4peagvOeahOW8leeUqOajgOa1i++8jOmcgOimgeeyvuehrueahOW8leeUqOi3r+W+hCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3MCBidWlsdGluL3Nob3ctcmVmLmM6MTcyCittc2dpZCAic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UiCittc2dzdHIgIuaYvuekuiBIRUFEIOW8leeUqCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NAorbXNnaWQgImRlcmVmZXJlbmNlIHRhZ3MgaW50byBvYmplY3QgSURzIgorbXNnc3RyICLovazmjaIgdGFncyDliLDlr7nosaFJRCIKKworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NgorbXNnaWQgIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIKK21zZ3N0ciAi5Y+q5pi+56S65L2/55SoIDxuPiDkuKrmlbDlrZfnmoQgU0hBMSDlk4jluIwiCisKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODAKK21zZ2lkICJkbyBub3QgcHJpbnQgcmVzdWx0cyB0byBzdGRvdXQgKHVzZWZ1bCB3aXRoIC0tdmVyaWZ5KSIKK21zZ3N0ciAi5LiN5omT5Y2w57uT5p6c5Yiw5qCH5YeG6L6T5Ye677yI5L6L5aaC5LiOIC0tdmVyaWZ5IOWPguaVsOWFseeUqO+8iSIKIAogIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MgotIywgZnV6enkKLW1zZ2lkICJvbmx5IHNob3cgdGFncyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggaGVhZHMpIgotbXNnc3RyICItLWFsbCDkuI3og73lkozlvJXnlKjooajovr7lvI/lkIzml7bkvb/nlKgiCi0KLSM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODMKLSMsIGZ1enp5Ci1tc2dpZCAib25seSBzaG93IGhlYWRzIChjYW4gYmUgY29tYmluZWQgd2l0aCB0YWdzKSIKLW1zZ3N0ciAiLS1hbGwg5LiN6IO95ZKM5byV55So6KGo6L6+5byP5ZCM5pe25L2/55SoIgotCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTg0Ci1tc2dpZCAic3RyaWN0ZXIgcmVmZXJlbmNlIGNoZWNraW5nLCByZXF1aXJlcyBleGFjdCByZWYgcGF0aCIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTg3IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODkKLW1zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTkxCi0jLCBmdXp6eQotbXNnaWQgImRlcmVmZXJlbmNlIHRhZ3MgaW50byBvYmplY3QgSURzIgotbXNnc3RyICLlvJXnlKjkuI3mmK/kuIDkuKrmoJHvvJolcyIKLQotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE5MwotbXNnaWQgIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTk3Ci1tc2dpZCAiZG8gbm90IHByaW50IHJlc3VsdHMgdG8gc3Rkb3V0ICh1c2VmdWwgd2l0aCAtLXZlcmlmeSkiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE5OQogbXNnaWQgInNob3cgcmVmcyBmcm9tIHN0ZGluIHRoYXQgYXJlbid0IGluIGxvY2FsIHJlcG9zaXRvcnkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pi+56S65LuO5qCH5YeG6L6T5YWl5Lit6K+75YWl55qE5LiN5Zyo5pys5Zyw54mI5pys5bqT5Lit55qE5byV55SoIgogCiAjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjcKIG1zZ2lkICJnaXQgc3ltYm9saWMtcmVmIFtvcHRpb25zXSBuYW1lIFtyZWZdIgotbXNnc3RyICIiCittc2dzdHIgImdpdCBzeW1ib2xpYy1yZWYgW+mAiemhuV0g5ZCN56ewIFvlvJXnlKhdIgogCi0jOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjM4CisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjgKK21zZ2lkICJnaXQgc3ltYm9saWMtcmVmIC1kIFstcV0gbmFtZSIKK21zZ3N0ciAiZ2l0IHN5bWJvbGljLXJlZiAtZCBbLXFdIOWQjeensCIKKworIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MAogbXNnaWQgInN1cHByZXNzIGVycm9yIG1lc3NhZ2UgZm9yIG5vbi1zeW1ib2xpYyAoZGV0YWNoZWQpIHJlZnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5LiN5pi+56S66Z2e56ym5Y+377yI5YiG56a755qE77yJ5byV55So55qE6ZSZ6K+v5L+h5oGvIgogCi0jOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjM5CisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQxCittc2dpZCAiZGVsZXRlIHN5bWJvbGljIHJlZiIKK21zZ3N0ciAi5Yig6Zmk56ym5Y+35byV55SoIgorCisjOiBidWlsdGluL3N5bWJvbGljLXJlZi5jOjQyCiBtc2dpZCAic2hvcnRlbiByZWYgb3V0cHV0IgotbXNnc3RyICIiCittc2dzdHIgIueugOefreeahOW8leeUqOi+k+WHuiIKIAotIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MCBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOAorIzogYnVpbHRpbi9zeW1ib2xpYy1yZWYuYzo0MyBidWlsdGluL3VwZGF0ZS1yZWYuYzoxOAogbXNnaWQgInJlYXNvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLljp/lm6AiCiAKLSM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDAgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKKyM6IGJ1aWx0aW4vc3ltYm9saWMtcmVmLmM6NDMgYnVpbHRpbi91cGRhdGUtcmVmLmM6MTgKIG1zZ2lkICJyZWFzb24gb2YgdGhlIHVwZGF0ZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLmm7TmlrDnmoTljp/lm6AiCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjIKIG1zZ2lkICIiCiAiZ2l0IHRhZyBbLWF8LXN8LXUgPGtleS1pZD5dIFstZl0gWy1tIDxtc2c+fC1GIDxmaWxlPl0gPHRhZ25hbWU+IFs8aGVhZD5dIgotbXNnc3RyICIiCittc2dzdHIgImdpdCB0YWcgWy1hfC1zfC11IDxrZXktaWQ+XSBbLWZdIFstbSA86K+05piOPnwtRiA85paH5Lu2Pl0gPOagh+etvuWQjT4gWzzlpLQ+XSIKIAogIzogYnVpbHRpbi90YWcuYzoyMwogbXNnaWQgImdpdCB0YWcgLWQgPHRhZ25hbWU+Li4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCB0YWcgLWQgPOagh+etvuWQjT4uLi4iCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQKIG1zZ2lkICIiCiAiZ2l0IHRhZyAtbCBbLW5bPG51bT5dXSBbLS1jb250YWlucyA8Y29tbWl0Pl0gWy0tcG9pbnRzLWF0IDxvYmplY3Q+XSBcbiIKICJcdFx0WzxwYXR0ZXJuPi4uLl0iCiBtc2dzdHIgIiIKKyJnaXQgdGFnIC1sIFstbls8bnVtPl1dIFstLWNvbnRhaW5zIDzmj5DkuqQ+XSBbLS1wb2ludHMtYXQgPOWvueixoT5dIFxuIgorIlx0XHRbPOaooeW8jz4uLi5dIgogCiAjOiBidWlsdGluL3RhZy5jOjI2CiBtc2dpZCAiZ2l0IHRhZyAtdiA8dGFnbmFtZT4uLi4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHRhZyAtdiA85qCH562+5ZCNPi4uLiIKIAogIzogYnVpbHRpbi90YWcuYzo2MAogIywgYy1mb3JtYXQKQEAgLTgyMzAsMzcyICs4NjQzLDM2MSBAQAogbXNnc3RyICLkuI3og73moKHpqowgdGFnICclcyciCiAKICM6IGJ1aWx0aW4vdGFnLmM6MjQ5CisjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKLSIjXG4iCi0iIyBXcml0ZSBhIHRhZyBtZXNzYWdlXG4iCi0iIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyB3aWxsIGJlIGlnbm9yZWQuXG4iCi0iI1xuIgorIldyaXRlIGEgdGFnIG1lc3NhZ2VcbiIKKyJMaW5lcyBzdGFydGluZyB3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLlxuIgogbXNnc3RyICIiCiAiXG4iCi0iI1xuIgotIiMg6L6T5YWl5LiA5LiqIHRhZyDor7TmmI5cbiIKLSIjIOS7pSAnIycg5byA5aS055qE6KGM5bCG6KKr5b+955Wl44CCXG4iCi0iI1xuIgorIui+k+WFpeS4gOS4qiB0YWcg6K+05piOXG4iCisi5LulICclYycg5byA5aS055qE6KGM5bCG6KKr5b+955Wl44CCXG4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MjU2CisjOiBidWlsdGluL3RhZy5jOjI1MworIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCi0iI1xuIgotIiMgV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgotIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAnIycgd2lsbCBiZSBrZXB0OyB5b3UgbWF5IHJlbW92ZSB0aGVtIHlvdXJzZWxmIGlmIHlvdSAiCisiV3JpdGUgYSB0YWcgbWVzc2FnZVxuIgorIkxpbmVzIHN0YXJ0aW5nIHdpdGggJyVjJyB3aWxsIGJlIGtlcHQ7IHlvdSBtYXkgcmVtb3ZlIHRoZW0geW91cnNlbGYgaWYgeW91ICIKICJ3YW50IHRvLlxuIgotIiNcbiIKIG1zZ3N0ciAiIgogIlxuIgotIiNcbiIKLSIjIOi+k+WFpeS4gOS4qiB0YWcg6K+05piOXG4iCi0iIyDku6UgJyMnIOW8gOWktOeahOihjOWwhuiiq+W/veeVpe+8jOaCqOWPr+S7peWIoOmZpOWug+S7rOWmguaenOaCqOaDs+i/meagt+WBmuOAglxuIgotIiNcbiIKKyLovpPlhaXkuIDkuKogdGFnIOivtOaYjlxuIgorIuS7pSAnJWMnIOW8gOWktOeahOihjOWwhuiiq+S/neeVme+8jOWmguaenOaCqOaEv+aEj+S5n+WPr+S7peWIoOmZpOWug+S7rOOAglxuIgogCi0jOiBidWlsdGluL3RhZy5jOjI5OAorIzogYnVpbHRpbi90YWcuYzoyOTIKIG1zZ2lkICJ1bmFibGUgdG8gc2lnbiB0aGUgdGFnIgogbXNnc3RyICLml6Dms5Xnrb7nvbIgdGFnIgogCi0jOiBidWlsdGluL3RhZy5jOjMwMAorIzogYnVpbHRpbi90YWcuYzoyOTQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgdGFnIGZpbGUiCiBtc2dzdHIgIuaXoOazleWGmSB0YWcg5paH5Lu2IgogCi0jOiBidWlsdGluL3RhZy5jOjMyNQorIzogYnVpbHRpbi90YWcuYzozMTkKIG1zZ2lkICJiYWQgb2JqZWN0IHR5cGUuIgogbXNnc3RyICLlnY/nmoTlr7nosaHnsbvlnovjgIIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzM4CisjOiBidWlsdGluL3RhZy5jOjMzMgogbXNnaWQgInRhZyBoZWFkZXIgdG9vIGJpZy4iCiBtc2dzdHIgInRhZyDlpLTkv6Hmga/lpKrlpKfjgIIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6MzcwCisjOiBidWlsdGluL3RhZy5jOjM2OAogbXNnaWQgIm5vIHRhZyBtZXNzYWdlPyIKIG1zZ3N0ciAi5pegIHRhZyDor7TmmI7vvJ8iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6Mzc2CisjOiBidWlsdGluL3RhZy5jOjM3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgdGFnIG1lc3NhZ2UgaGFzIGJlZW4gbGVmdCBpbiAlc1xuIgogbXNnc3RyICJ0YWcg6K+05piO6KKr5L+d55WZ5ZyoICVzXG4iCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDI1CisjOiBidWlsdGluL3RhZy5jOjQyMwogbXNnaWQgInN3aXRjaCAncG9pbnRzLWF0JyByZXF1aXJlcyBhbiBvYmplY3QiCiBtc2dzdHIgIuW8gOWFsyAncG9pbnRzLWF0JyDpnIDopoHkuIDkuKrlr7nosaEiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDI3CisjOiBidWlsdGluL3RhZy5jOjQyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWxmb3JtZWQgb2JqZWN0IG5hbWUgJyVzJyIKIG1zZ3N0ciAi6Z2e5rOV55qE5a+56LGh5ZCNICclcyciCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDQ3CisjOiBidWlsdGluL3RhZy5jOjQ0NQogbXNnaWQgImxpc3QgdGFnIG5hbWVzIgotbXNnc3RyICIiCittc2dzdHIgIuWIl+WHunRhZ+WQjeensCIKKworIzogYnVpbHRpbi90YWcuYzo0NDcKK21zZ2lkICJwcmludCA8bj4gbGluZXMgb2YgZWFjaCB0YWcgbWVzc2FnZSIKK21zZ3N0ciAi5q+P5LiqIHRhZyDkv6Hmga/miZPljbAgPG4+IOihjCIKIAogIzogYnVpbHRpbi90YWcuYzo0NDkKLW1zZ2lkICJwcmludCA8bj4gbGluZXMgb2YgZWFjaCB0YWcgbWVzc2FnZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3RhZy5jOjQ1MQotIywgZnV6enkKIG1zZ2lkICJkZWxldGUgdGFncyIKLW1zZ3N0ciAi5Yig6ZmkIgorbXNnc3RyICLliKDpmaQgdGFncyIKKworIzogYnVpbHRpbi90YWcuYzo0NTAKK21zZ2lkICJ2ZXJpZnkgdGFncyIKK21zZ3N0ciAi6aqM6K+BIHRhZ3MiCiAKICM6IGJ1aWx0aW4vdGFnLmM6NDUyCi1tc2dpZCAidmVyaWZ5IHRhZ3MiCi1tc2dzdHIgIiIKK21zZ2lkICJUYWcgY3JlYXRpb24gb3B0aW9ucyIKK21zZ3N0ciAiVGFnIOWIm+W7uumAiemhuSIKIAogIzogYnVpbHRpbi90YWcuYzo0NTQKLW1zZ2lkICJUYWcgY3JlYXRpb24gb3B0aW9ucyIKLW1zZ3N0ciAiIgorbXNnaWQgImFubm90YXRlZCB0YWcsIG5lZWRzIGEgbWVzc2FnZSIKK21zZ3N0ciAi5rOo6KejIHRhZ++8jOmcgOimgeS4gOS4quivtOaYjiIKIAogIzogYnVpbHRpbi90YWcuYzo0NTYKLSMsIGZ1enp5Ci1tc2dpZCAiYW5ub3RhdGVkIHRhZywgbmVlZHMgYSBtZXNzYWdlIgotbXNnc3RyICLms6jph4ogdGFnICVzIOayoeacieW1jOWFpeWQjeensCIKK21zZ2lkICJ0YWcgbWVzc2FnZSIKK21zZ3N0ciAidGFnIOivtOaYjiIKIAogIzogYnVpbHRpbi90YWcuYzo0NTgKLSMsIGZ1enp5Ci1tc2dpZCAidGFnIG1lc3NhZ2UiCi1tc2dzdHIgIuaXoCB0YWcg6K+05piO77yfIgotCi0jOiBidWlsdGluL3RhZy5jOjQ2MAogbXNnaWQgImFubm90YXRlZCBhbmQgR1BHLXNpZ25lZCB0YWciCi1tc2dzdHIgIiIKK21zZ3N0ciAi5rOo6Kej5bm2IEdQRyDnrb7lkI3nmoQgdGFnIgorCisjOiBidWlsdGluL3RhZy5jOjQ2MgorbXNnaWQgInVzZSBhbm90aGVyIGtleSB0byBzaWduIHRoZSB0YWciCittc2dzdHIgIuS9v+eUqOWPpuWklueahOengemSpeetvuWQjSB0YWciCisKKyM6IGJ1aWx0aW4vdGFnLmM6NDYzCittc2dpZCAicmVwbGFjZSB0aGUgdGFnIGlmIGV4aXN0cyIKK21zZ3N0ciAi5aaC5p6c5a2Y5Zyo77yM5pu/5o2i546w5pyJ55qEIHRhZyIKIAogIzogYnVpbHRpbi90YWcuYzo0NjQKLSMsIGZ1enp5Ci1tc2dpZCAidXNlIGFub3RoZXIga2V5IHRvIHNpZ24gdGhlIHRhZyIKLW1zZ3N0ciAi5peg5rOV562+572yIHRhZyIKLQotIzogYnVpbHRpbi90YWcuYzo0NjUKLW1zZ2lkICJyZXBsYWNlIHRoZSB0YWcgaWYgZXhpc3RzIgotbXNnc3RyICIiCittc2dpZCAic2hvdyB0YWcgbGlzdCBpbiBjb2x1bW5zIgorbXNnc3RyICLku6XliJfnmoTmlrnlvI/mmL7npLogdGFnIgogCiAjOiBidWlsdGluL3RhZy5jOjQ2NgotbXNnaWQgInNob3cgdGFnIGxpc3QgaW4gY29sdW1ucyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3RhZy5jOjQ2OAogbXNnaWQgIlRhZyBsaXN0aW5nIG9wdGlvbnMiCi1tc2dzdHIgIiIKK21zZ3N0ciAiVGFnIOWIl+ihqOmAiemhuSIKIAotIzogYnVpbHRpbi90YWcuYzo0NzEKKyM6IGJ1aWx0aW4vdGFnLmM6NDY5CiBtc2dpZCAicHJpbnQgb25seSB0YWdzIHRoYXQgY29udGFpbiB0aGUgY29tbWl0IgotbXNnc3RyICIiCittc2dzdHIgIuWPquaJk+WNsOWMheWQq+aPkOS6pOeahHRhZ3MiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NDc3CisjOiBidWlsdGluL3RhZy5jOjQ3NQogbXNnaWQgInByaW50IG9ubHkgdGFncyBvZiB0aGUgb2JqZWN0IgotbXNnc3RyICIiCittc2dzdHIgIuWPquaJk+WNsHRhZ3Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTA2CisjOiBidWlsdGluL3RhZy5jOjUwNAogbXNnaWQgIi0tY29sdW1uIGFuZCAtbiBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWNvbHVtbiDlkowgLW4g5LiN5YW85a65IgogCi0jOiBidWlsdGluL3RhZy5jOjUyMworIzogYnVpbHRpbi90YWcuYzo1MjEKIG1zZ2lkICItbiBvcHRpb24gaXMgb25seSBhbGxvd2VkIHdpdGggLWwuIgogbXNnc3RyICItbiDpgInpobnlj6rlhYHorrjlkowgLWwg5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL3RhZy5jOjUyNQorIzogYnVpbHRpbi90YWcuYzo1MjMKIG1zZ2lkICItLWNvbnRhaW5zIG9wdGlvbiBpcyBvbmx5IGFsbG93ZWQgd2l0aCAtbC4iCiBtc2dzdHIgIi0tY29udGFpbnMg6YCJ6aG55Y+q5YWB6K645ZKMIC1sIOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi90YWcuYzo1MjcKKyM6IGJ1aWx0aW4vdGFnLmM6NTI1CiBtc2dpZCAiLS1wb2ludHMtYXQgb3B0aW9uIGlzIG9ubHkgYWxsb3dlZCB3aXRoIC1sLiIKIG1zZ3N0ciAiLS1wb2ludHMtYXQg6YCJ6aG55Y+q5YWB6K645ZKMIC1sIOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi90YWcuYzo1MzUKKyM6IGJ1aWx0aW4vdGFnLmM6NTMzCiBtc2dpZCAib25seSBvbmUgLUYgb3IgLW0gb3B0aW9uIGlzIGFsbG93ZWQuIgogbXNnc3RyICLlj6rlhYHorrjkuIDkuKogLUYg5oiWIC1tIOmAiemhueOAgiIKIAotIzogYnVpbHRpbi90YWcuYzo1NTUKKyM6IGJ1aWx0aW4vdGFnLmM6NTUzCiBtc2dpZCAidG9vIG1hbnkgcGFyYW1zIgogbXNnc3RyICLlpKrlpJrlj4LmlbAiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTYxCisjOiBidWlsdGluL3RhZy5jOjU1OQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIHRhZyBuYW1lLiIKIG1zZ3N0ciAiJyVzJyDkuI3mmK/kuIDkuKrmnInmlYjnmoR0YWflkI3np7DjgIIiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTY2CisjOiBidWlsdGluL3RhZy5jOjU2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ0YWcgJyVzJyBhbHJlYWR5IGV4aXN0cyIKIG1zZ3N0ciAidGFnICclcycg5bey5a2Y5ZyoIgogCi0jOiBidWlsdGluL3RhZy5jOjU4NAorIzogYnVpbHRpbi90YWcuYzo1ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBsb2NrIHRoZSByZWYiCiBtc2dzdHIgIiVz77ya5LiN6IO96ZSB5a6a5byV55SoIgogCi0jOiBidWlsdGluL3RhZy5jOjU4NgorIzogYnVpbHRpbi90YWcuYzo1ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCB1cGRhdGUgdGhlIHJlZiIKIG1zZ3N0ciAiJXPvvJrkuI3og73mm7TmlrDlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vdGFnLmM6NTg4CisjOiBidWlsdGluL3RhZy5jOjU4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGVkIHRhZyAnJXMnICh3YXMgJXMpXG4iCiBtc2dzdHIgIuW3suabtOaWsHRhZyAnJXMn77yI5pu+5Li6ICVz77yJXG4iCiAKICM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NDAxCi0jLCBmdXp6eQogbXNnaWQgImdpdCB1cGRhdGUtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCi1tc2dzdHIgImdpdCBhcHBseSBb6YCJ6aG5XSBbPOihpeS4gT4uLi5dIgorbXNnc3RyICJnaXQgdXBkYXRlLWluZGV4IFvpgInpobldIFstLV0gWzzmlofku7Y+Li4uXSIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MTcKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzE4CiBtc2dpZCAiY29udGludWUgcmVmcmVzaCBldmVuIHdoZW4gaW5kZXggbmVlZHMgdXBkYXRlIgotbXNnc3RyICIiCittc2dzdHIgIuW9k+e0ouW8lemcgOimgeabtOaWsOaXtue7p+e7reWIt+aWsCIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjAKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzIxCiBtc2dpZCAicmVmcmVzaDogaWdub3JlIHN1Ym1vZHVsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Yi35paw77ya5b+955Wl5a2Q5qih57uEIgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyMwotIywgZnV6enkKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzI0CiBtc2dpZCAiZG8gbm90IGlnbm9yZSBuZXcgZmlsZXMiCi1tc2dzdHIgIuaXoOazleWtmOWCqOe0ouW8leaWh+S7tiIKK21zZ3N0ciAi5LiN5b+955Wl5paw55qE5paH5Lu2IgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyNQorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MjYKIG1zZ2lkICJsZXQgZmlsZXMgcmVwbGFjZSBkaXJlY3RvcmllcyBhbmQgdmljZS12ZXJzYSIKLW1zZ3N0ciAiIgorbXNnc3RyICLorqnmlofku7bmm7/mjaLnm67lvZXvvIjlj43kuYvkuqbnhLbvvIkiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzI3CisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyOAogbXNnaWQgIm5vdGljZSBmaWxlcyBtaXNzaW5nIGZyb20gd29ya3RyZWUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6YCa55+l5paH5Lu25LuO5bel5L2c5Yy65Lii5aSxIgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjcyOQorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3MzAKIG1zZ2lkICJyZWZyZXNoIGV2ZW4gaWYgaW5kZXggY29udGFpbnMgdW5tZXJnZWQgZW50cmllcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLljbPkvb/ntKLlvJXljLrljIXlkKvmnKrlkIjlubbnmoTmnaHnm67kuZ/miafooYzliLfmlrAiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzMyCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczMwogbXNnaWQgInJlZnJlc2ggc3RhdCBpbmZvcm1hdGlvbiIKLW1zZ3N0ciAiIgorbXNnc3RyICLliLfmlrDnu5/orqHkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzM2CisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjczNwogbXNnaWQgImxpa2UgLS1yZWZyZXNoLCBidXQgaWdub3JlIGFzc3VtZS11bmNoYW5nZWQgc2V0dGluZyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc0MAotbXNnaWQgIjxtb2RlPiA8b2JqZWN0PiA8cGF0aD4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi57G75Ly85LqOIC0tcmVmcmVzaO+8jOS9huaYr+W/veeVpSBhc3N1bWUtdW5jaGFuZ2VkIOiuvue9riIKIAogIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDEKLSMsIGZ1enp5Ci1tc2dpZCAiYWRkIHRoZSBzcGVjaWZpZWQgZW50cnkgdG8gdGhlIGluZGV4IgotbXNnc3RyICLmt7vliqDmlofku7blhoXlrrnoh7PntKLlvJUiCittc2dpZCAiPG1vZGU+IDxvYmplY3Q+IDxwYXRoPiIKK21zZ3N0ciAiPG1vZGU+IDxvYmplY3Q+IDxwYXRoPiIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NDUKLW1zZ2lkICIoKy8tKXgiCi1tc2dzdHIgIiIKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQyCittc2dpZCAiYWRkIHRoZSBzcGVjaWZpZWQgZW50cnkgdG8gdGhlIGluZGV4IgorbXNnc3RyICLmt7vliqDmjIflrprnmoTmnaHnm67liLDntKLlvJXljLoiCiAKICM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQ2Cittc2dpZCAiKCsvLSl4IgorbXNnc3RyICIoKy8tKXgiCisKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzQ3CiBtc2dpZCAib3ZlcnJpZGUgdGhlIGV4ZWN1dGFibGUgYml0IG9mIHRoZSBsaXN0ZWQgZmlsZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi6KaG55uW5YiX6KGo6YeM5paH5Lu255qE5Y+v5omn6KGM5L2NIgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1MAorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTEKIG1zZ2lkICJtYXJrIGZpbGVzIGFzIFwibm90IGNoYW5naW5nXCIiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5oqK5paH5Lu25qCH6K6w5Li6IFwi5rKh5pyJ5Y+Y5pu0XCIiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzUzCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1NAogbXNnaWQgImNsZWFyIGFzc3VtZWQtdW5jaGFuZ2VkIGJpdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmuIXpmaQgYXNzdW1lZC11bmNoYW5nZWQg5L2NIgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1NgorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NTcKIG1zZ2lkICJtYXJrIGZpbGVzIGFzIFwiaW5kZXgtb25seVwiIgotbXNnc3RyICIiCittc2dzdHIgIuaKiuaWh+S7tuagh+iusOS4uiBcIuS7hee0ouW8lVwiIgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc1OQorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjAKIG1zZ2lkICJjbGVhciBza2lwLXdvcmt0cmVlIGJpdCIKLW1zZ3N0ciAiIgorbXNnc3RyICLmuIXpmaQgc2tpcC13b3JrdHJlZSDkvY0iCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzYyCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2MwogbXNnaWQgImFkZCB0byBpbmRleCBvbmx5OyBkbyBub3QgYWRkIGNvbnRlbnQgdG8gb2JqZWN0IGRhdGFiYXNlIgotbXNnc3RyICIiCittc2dzdHIgIuWPqua3u+WKoOWIsOe0ouW8leWMuu+8m+S4jea3u+WKoOWvueixoeWIsOWvueixoeW6kyIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjQKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY1CiBtc2dpZCAicmVtb3ZlIG5hbWVkIHBhdGhzIGV2ZW4gaWYgcHJlc2VudCBpbiB3b3JrdHJlZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLljbPkvb/lrZjlnKjlt6XkvZzljLrph4zvvIzkuZ/liKDpmaTot6/lvoQiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzY2CisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2NwogbXNnaWQgIndpdGggLS1zdGRpbjogaW5wdXQgbGluZXMgYXJlIHRlcm1pbmF0ZWQgYnkgbnVsbCBieXRlcyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmkLrluKYgLS1zdGRpbu+8mui+k+WFpeeahOihjOS7pSBudWxsIOWtl+espue7iOatoiIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NjgKLSMsIGZ1enp5CisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc2OQogbXNnaWQgInJlYWQgbGlzdCBvZiBwYXRocyB0byBiZSB1cGRhdGVkIGZyb20gc3RhbmRhcmQgaW5wdXQiCi1tc2dzdHIgIu+8iOato+S7juagh+WHhui+k+WFpeS4reivu+WPluaXpeW/l+S/oeaBr++8iVxuIgorbXNnc3RyICLku47moIflh4bovpPlhaXkuK3or7vlj5bpnIDopoHmm7TmlrDnmoTot6/lvoTliJfooagiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzcyCi0jLCBmdXp6eQorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3NzMKIG1zZ2lkICJhZGQgZW50cmllcyBmcm9tIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbmRleCIKLW1zZ3N0ciAi5LiN6IO95LuO5qCH5YeG6L6T5YWl5Lit6K+75Y+W5pel5b+X5L+h5oGvIgorbXNnc3RyICLku47moIflh4bovpPlhaXmt7vliqDmnaHnm67liLDntKLlvJXljLoiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzc2CisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc3NwogbXNnaWQgInJlcG9wdWxhdGUgc3RhZ2VzICMyIGFuZCAjMyBmb3IgdGhlIGxpc3RlZCBwYXRocyIKLW1zZ3N0ciAiIgorbXNnc3RyICLkuLrmjIflrprmlofku7bph43mlrDnlJ/miJDnrKwy5ZKM56ysM+aaguWtmOWMuiIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3ODAKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzgxCiBtc2dpZCAib25seSB1cGRhdGUgZW50cmllcyB0aGF0IGRpZmZlciBmcm9tIEhFQUQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5pu05paw5LiOIEhFQUQg5LiN5ZCM55qE5p2h55uuIgogCi0jOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc4NAorIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3ODUKIG1zZ2lkICJpZ25vcmUgZmlsZXMgbWlzc2luZyBmcm9tIHdvcmt0cmVlIgotbXNnc3RyICIiCittc2dzdHIgIuW/veeVpeW3peS9nOWMuuS4ouWkseeahOaWh+S7tiIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3ODcKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6Nzg4CiBtc2dpZCAicmVwb3J0IGFjdGlvbnMgdG8gc3RhbmRhcmQgb3V0cHV0IgotbXNnc3RyICIiCittc2dzdHIgIuWcqOagh+WHhui+k+WHuuaYvuekuuaTjeS9nCIKIAotIzogYnVpbHRpbi91cGRhdGUtaW5kZXguYzo3ODkKKyM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzkwCiBtc2dpZCAiKGZvciBwb3JjZWxhaW5zKSBmb3JnZXQgc2F2ZWQgdW5yZXNvbHZlZCBjb25mbGljdHMiCi1tc2dzdHIgIiIKK21zZ3N0ciAiKGZvciBwb3JjZWxhaW5zKSDlv5jorrDkv53lrZjnmoTmnKrop6PlhrPnmoTlhrLnqoEiCiAKLSM6IGJ1aWx0aW4vdXBkYXRlLWluZGV4LmM6NzkzCisjOiBidWlsdGluL3VwZGF0ZS1pbmRleC5jOjc5NAogbXNnaWQgIndyaXRlIGluZGV4IGluIHRoaXMgZm9ybWF0IgotbXNnc3RyICIiCittc2dzdHIgIuS7pei/meenjeagvOW8j+WGmeWFpee0ouW8leWMuiIKIAogIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6NwogbXNnaWQgImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAtZCA8cmVmbmFtZT4gWzxvbGR2YWw+XSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgdXBkYXRlLXJlZiBbb3B0aW9uc10gLWQgPOW8leeUqOWQjT4gWzzml6flgLw+XSIKIAogIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6OAogbXNnaWQgImdpdCB1cGRhdGUtcmVmIFtvcHRpb25zXSAgICA8cmVmbmFtZT4gPG5ld3ZhbD4gWzxvbGR2YWw+XSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgdXBkYXRlLXJlZiBbb3B0aW9uc10gICAgPOW8leeUqOWQjT4gPOaWsOWAvD4gWzzml6flgLw+XSIKIAogIzogYnVpbHRpbi91cGRhdGUtcmVmLmM6MTkKIG1zZ2lkICJkZWxldGUgdGhlIHJlZmVyZW5jZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLliKDpmaTlvJXnlKgiCiAKICM6IGJ1aWx0aW4vdXBkYXRlLXJlZi5jOjIxCiBtc2dpZCAidXBkYXRlIDxyZWZuYW1lPiBub3QgdGhlIG9uZSBpdCBwb2ludHMgdG8iCi1tc2dzdHIgIiIKK21zZ3N0ciAi5pu05pawIDzlvJXnlKjlkI0+IOacrOi6q+iAjOS4jeaYr+Wug+aMh+WQkeeahOW8leeUqCIKIAogIzogYnVpbHRpbi91cGRhdGUtc2VydmVyLWluZm8uYzo2CiBtc2dpZCAiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iCi1tc2dzdHIgIiIKK21zZ3N0ciAiZ2l0IHVwZGF0ZS1zZXJ2ZXItaW5mbyBbLS1mb3JjZV0iCiAKICM6IGJ1aWx0aW4vdXBkYXRlLXNlcnZlci1pbmZvLmM6MTQKIG1zZ2lkICJ1cGRhdGUgdGhlIGluZm8gZmlsZXMgZnJvbSBzY3JhdGNoIgotbXNnc3RyICIiCittc2dzdHIgIuS7juWktOW8gOWni+abtOaWsOaWh+S7tuS/oeaBryIKIAogIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjU2CiBtc2dpZCAiZ2l0IHZlcmlmeS1wYWNrIFstdnwtLXZlcmJvc2VdIFstc3wtLXN0YXQtb25seV0gPHBhY2s+Li4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCB2ZXJpZnktcGFjayBbLXZ8LS12ZXJib3NlXSBbLXN8LS1zdGF0LW9ubHldIDxwYWNrPi4uLiIKIAogIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjY2Ci0jLCBmdXp6eQogbXNnaWQgInZlcmJvc2UiCiBtc2dzdHIgIuWGl+mVv+i+k+WHuiIKIAogIzogYnVpbHRpbi92ZXJpZnktcGFjay5jOjY4CiBtc2dpZCAic2hvdyBzdGF0aXN0aWNzIG9ubHkiCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5pi+56S657uf6K6hIgogCiAjOiBidWlsdGluL3ZlcmlmeS10YWcuYzoxNwogbXNnaWQgImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWc+Li4uIgotbXNnc3RyICIiCittc2dzdHIgImdpdCB2ZXJpZnktdGFnIFstdnwtLXZlcmJvc2VdIDx0YWc+Li4uIgogCiAjOiBidWlsdGluL3ZlcmlmeS10YWcuYzo3MwogbXNnaWQgInByaW50IHRhZyBjb250ZW50cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLmiZPljbAgdGFnIOWGheWuuSIKIAogIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MTMKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBbLS1taXNzaW5nLW9rXSBbLS1wcmVmaXg9PHByZWZpeD4vXSIKLW1zZ3N0ciAiIgorbXNnc3RyICJnaXQgd3JpdGUtdHJlZSBbLS1taXNzaW5nLW9rXSBbLS1wcmVmaXg9POWJjee8gD4vXSIKIAogIzogYnVpbHRpbi93cml0ZS10cmVlLmM6MjYKIG1zZ2lkICI8cHJlZml4Pi8iCi1tc2dzdHIgIiIKK21zZ3N0ciAiPOWJjee8gD4vIgogCiAjOiBidWlsdGluL3dyaXRlLXRyZWUuYzoyNwogbXNnaWQgIndyaXRlIHRyZWUgb2JqZWN0IGZvciBhIHN1YmRpcmVjdG9yeSA8cHJlZml4PiIKLW1zZ3N0ciAiIgorbXNnc3RyICLlsIYgPOWJjee8gD4g5a2Q55uu5b2V5YaF5a655YaZ5Yiw5LiA5Liq5qCR5a+56LGhIgogCiAjOiBidWlsdGluL3dyaXRlLXRyZWUuYzozMAogbXNnaWQgIm9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmciCi1tc2dzdHIgIiIKK21zZ3N0ciAi5Y+q5a+56LCD6K+V5pyJ55SoIgogCiAjOiBnaXQuYzoxNgotbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgotbXNnc3RyICLlj4Lop4EgJ2dpdCBoZWxwIDxjb21tYW5kPicg5Lul6I635b6X6K+l54m55a6a5ZG95Luk55qE6K+m57uG5L+h5oGv44CCIgorbXNnaWQgIiIKKyInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgorImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKKyJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKK21zZ3N0ciAiIgorIuWRveS7pCAnZ2l0IGhlbHAgLWEnIOWSjCAnZ2l0IGhlbHAgLWcnIOaYvuekuuWPr+eUqOeahOWtkOWRveS7pOWSjOS4gOS6m+aMh+WNl+OAguWPguingVxuIgorIidnaXQgaGVscCA85ZG95LukPicg5oiWICdnaXQgaGVscCA85oyH5Y2XPicg5p2l5p+l55yL57uZ5a6a55qE5a2Q5ZG95Luk5biu5Yqp5oiW5oyH5Y2X44CCIgogCiAjOiBwYXJzZS1vcHRpb25zLmg6MTU2CiBtc2dpZCAibm8tb3AgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIgogbXNnc3RyICLnqbrmk43kvZzvvIjlkJHlkI7lhbzlrrnvvIkiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMjgKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzIKIG1zZ2lkICJiZSBtb3JlIHZlcmJvc2UiCiBtc2dzdHIgIuabtOWKoOivpue7hiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzMAorIzogcGFyc2Utb3B0aW9ucy5oOjIzNAogbXNnaWQgImJlIG1vcmUgcXVpZXQiCiBtc2dzdHIgIuabtOWKoOWuiemdmSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzNgorIzogcGFyc2Utb3B0aW9ucy5oOjI0MAogbXNnaWQgInVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzIgogbXNnc3RyICLnlKggPG4+IOS9jeaVsOWtl+aYvuekuiBTSEEtMSDlk4jluIzlgLwiCiAKQEAgLTg2MzYsOCArOTAzOCw4IEBACiBtc2dzdHIgIui+k+WHuuWSjOaooeW8j+WMuemFjeeahOihjCIKIAogIzogY29tbW9uLWNtZHMuaDoxNwotbXNnaWQgIkNyZWF0ZSBhbiBlbXB0eSBnaXQgcmVwb3NpdG9yeSBvciByZWluaXRpYWxpemUgYW4gZXhpc3Rpbmcgb25lIgotbXNnc3RyICLliJvlu7rkuIDkuKrnqbrnmoQgZ2l0IOeJiOacrOW6k+aIluiAhemHjeaWsOWIneWni+WMluS4gOS4qiIKK21zZ2lkICJDcmVhdGUgYW4gZW1wdHkgR2l0IHJlcG9zaXRvcnkgb3IgcmVpbml0aWFsaXplIGFuIGV4aXN0aW5nIG9uZSIKK21zZ3N0ciAi5Yib5bu65LiA5Liq56m655qEIEdpdCDniYjmnKzlupPmiJbph43mlrDliJ3lp4vljJbkuIDkuKrlt7LlrZjlnKjnmoTniYjmnKzlupMiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTgKIG1zZ2lkICJTaG93IGNvbW1pdCBsb2dzIgpAQCAtODcxMCwxMSArOTExMiwxMSBAQAogCiAjOiBnaXQtYW0uc2g6MTM3CiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyBuZWNlc3NhcnkgYmxvYnMgdG8gZmFsbCBiYWNrIG9uIDMtd2F5IG1lcmdlLiIKLW1zZ3N0ciAi54mI5pys5bqT57y65LmP5b+F6KaB55qE5LqM6L+b5Yi25a+56LGh77yIYmxvYu+8ieS7pei/m+ihjOS4iei3r+WQiOW5tuOAgiIKK21zZ3N0ciAi54mI5pys5bqT57y65LmP5b+F6KaB55qE5pWw5o2u77yIYmxvYu+8ieWvueixoeS7pei/m+ihjOS4iei3r+WQiOW5tuOAgiIKIAogIzogZ2l0LWFtLnNoOjEzOQogbXNnaWQgIlVzaW5nIGluZGV4IGluZm8gdG8gcmVjb25zdHJ1Y3QgYSBiYXNlIHRyZWUuLi4iCi1tc2dzdHIgIuabtOaWsOe0ouW8leS/oeaBr+S7pemHjeW7uuWfuuagkS4uLiIKK21zZ3N0ciAi5L2/55So57Si5byV5p2l6YeN5bu65LiA5Liq77yI5LiJ6Lev5ZCI5bm255qE77yJ5Z+656GA55uu5b2V5qCRLi4uIgogCiAjOiBnaXQtYW0uc2g6MTU0CiBtc2dpZCAiIgpAQCAtODcyMiw3ICs5MTI0LDcgQEAKICJJdCBkb2VzIG5vdCBhcHBseSB0byBibG9icyByZWNvcmRlZCBpbiBpdHMgaW5kZXguIgogbXNnc3RyICIiCiAi5oKo5piv5ZCm5pu+5omL5Yqo57yW6L6R6L+H5oKo55qE6KGl5LiB77yfXG4iCi0i5peg5rOV5bqU55So6KGl5LiB5Yiw57Si5byV5Lit55qE5LqM6L+b5Yi25a+56LGh77yIYmxvYu+8ieS4iuOAgiIKKyLml6Dms5XlupTnlKjooaXkuIHliLDntKLlvJXkuK3nmoTmlbDmja7vvIhibG9i77yJ5a+56LGh5LiK44CCIgogCiAjOiBnaXQtYW0uc2g6MTYzCiBtc2dpZCAiRmFsbGluZyBiYWNrIHRvIHBhdGNoaW5nIGJhc2UgYW5kIDMtd2F5IG1lcmdlLi4uIgpAQCAtODgyNSw3ICs5MjI3LDcgQEAKIAogIzogZ2l0LWFtLnNoOjg0NQogbXNnaWQgIk5vIGNoYW5nZXMgLS0gUGF0Y2ggYWxyZWFkeSBhcHBsaWVkLiIKLW1zZ3N0ciAi5rKh5pyJ5Y+Y5pu0IC0tIOihpeS4geW3sue7j+W6lOeUqOi/h+OAgiIKK21zZ3N0ciAi5rKh5pyJ5Y+Y5pu0IOKAlOKAlCDooaXkuIHlt7Lnu4/lupTnlKjov4fjgIIiCiAKICM6IGdpdC1hbS5zaDo4NTUKICMsIHNoLWZvcm1hdApAQCAtODgzOCw2ICs5MjQwLDggQEAKICJUaGUgY29weSBvZiB0aGUgcGF0Y2ggdGhhdCBmYWlsZWQgaXMgZm91bmQgaW46XG4iCiAiICAgJGRvdGVzdC9wYXRjaCIKIG1zZ3N0ciAiIgorIuWksei0peeahOihpeS4geaWh+S7tuWJr+acrOS9jeS6ju+8mlxuIgorIiAgICRkb3Rlc3QvcGF0Y2giCiAKICM6IGdpdC1hbS5zaDo4NzYKIG1zZ2lkICJhcHBseWluZyB0byBhbiBlbXB0eSBoaXN0b3J5IgpAQCAtODkzOCw1NiArOTM0Miw1NiBAQAogIueEtuWQjumcgOimgeaPkOS+m+aIkeiHs+WwkeS4gOS4quWlveeJiOacrOWSjOS4gOS4quWdj+eJiOacrOOAglxuIgogIu+8iOaCqOWPr+S7peeUqCBcImdpdCBiaXNlY3QgYmFkXCIg5ZKMIFwiZ2l0IGJpc2VjdCBnb29kXCIg5ZG95Luk5p2l5qCH6K+G44CC77yJIgogCi0jOiBnaXQtYmlzZWN0LnNoOjM0NyBnaXQtYmlzZWN0LnNoOjQ3NAorIzogZ2l0LWJpc2VjdC5zaDozNjMgZ2l0LWJpc2VjdC5zaDo0OTAKIG1zZ2lkICJXZSBhcmUgbm90IGJpc2VjdGluZy4iCiBtc2dzdHIgIuaIkeS7rOayoeacieWcqOS6jOWIhuafpeaJvuOAgiIKIAotIzogZ2l0LWJpc2VjdC5zaDozNTQKKyM6IGdpdC1iaXNlY3Quc2g6MzcwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGludmFsaWQnIGlzIG5vdCBhIHZhbGlkIGNvbW1pdCIKIG1zZ3N0ciAiJyRpbnZhbGlkJyDkuI3mmK/kuIDkuKrmnInmlYjnmoTmj5DkuqQiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzYzCisjOiBnaXQtYmlzZWN0LnNoOjM3OQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBjaGVjayBvdXQgb3JpZ2luYWwgSEVBRCAnJGJyYW5jaCcuXG4iCiAiVHJ5ICdnaXQgYmlzZWN0IHJlc2V0IDxjb21taXQ+Jy4iCiBtc2dzdHIgIiIKICLkuI3og73mo4Dlh7rljp/lp4sgSEVBRCAnJGJyYW5jaCfjgIJcbiIKLSLlsJ3or5UgJ2dpdCBiaXNlY3QgcmVzZXQgPGNvbW1pdD4n44CCIgorIuWwneivlSAnZ2l0IGJpc2VjdCByZXNldCA85o+Q5LqkPifjgIIiCiAKLSM6IGdpdC1iaXNlY3Quc2g6MzkwCisjOiBnaXQtYmlzZWN0LnNoOjQwNgogbXNnaWQgIk5vIGxvZ2ZpbGUgZ2l2ZW4iCiBtc2dzdHIgIuacquaPkOS+m+aXpeW/l+aWh+S7tiIKIAotIzogZ2l0LWJpc2VjdC5zaDozOTEKKyM6IGdpdC1iaXNlY3Quc2g6NDA3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAkZmlsZSBmb3IgcmVwbGF5aW5nIgogbXNnc3RyICLkuI3og73or7vlj5YgJGZpbGUg5p2l6YeN5pS+IgogCi0jOiBnaXQtYmlzZWN0LnNoOjQwOAorIzogZ2l0LWJpc2VjdC5zaDo0MjQKIG1zZ2lkICI/PyB3aGF0IGFyZSB5b3UgdGFsa2luZyBhYm91dD8iCiBtc2dzdHIgIj8/IOaCqOWcqOivtOS7gOS5iD8iCiAKLSM6IGdpdC1iaXNlY3Quc2g6NDIwCisjOiBnaXQtYmlzZWN0LnNoOjQzNgogIywgc2gtZm9ybWF0CiBtc2dpZCAicnVubmluZyAkY29tbWFuZCIKIG1zZ3N0ciAi6L+Q6KGMICRjb21tYW5kIgogCi0jOiBnaXQtYmlzZWN0LnNoOjQyNworIzogZ2l0LWJpc2VjdC5zaDo0NDMKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJiaXNlY3QgcnVuIGZhaWxlZDpcbiIKICJleGl0IGNvZGUgJHJlcyBmcm9tICckY29tbWFuZCcgaXMgPCAwIG9yID49IDEyOCIKIG1zZ3N0ciAiIgogIuS6jOWIhuafpeaJvui/kOihjOWksei0pe+8mlxuIgotIuWRveS7pCAnJGNvbW1hbmQnIOeahOmAgOWHuueggSAkcmVzIOaIluiAheWwj+S6jiAwIOaIluiAheWkp+S6juetieS6jiAxMjgiCisi5ZG95LukICckY29tbWFuZCcg55qE6YCA5Ye656CBICRyZXMg5bCP5LqOIDAg5oiW5aSn5LqO562J5LqOIDEyOCIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTMKKyM6IGdpdC1iaXNlY3Quc2g6NDY5CiBtc2dpZCAiYmlzZWN0IHJ1biBjYW5ub3QgY29udGludWUgYW55IG1vcmUiCiBtc2dzdHIgIuS6jOWIhuafpeaJvuS4jeiDvee7p+e7rei/kOihjCIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NTkKKyM6IGdpdC1iaXNlY3Quc2g6NDc1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiYmlzZWN0IHJ1biBmYWlsZWQ6XG4iCkBAIC04OTk2LDcgKzk0MDAsNyBAQAogIuS6jOWIhuafpeaJvui/kOihjOWksei0pe+8mlxuIgogIidiaXNlY3Rfc3RhdGUgJHN0YXRlJyDpgIDlh7rnoIHkuLogJHJlcyIKIAotIzogZ2l0LWJpc2VjdC5zaDo0NjYKKyM6IGdpdC1iaXNlY3Quc2g6NDgyCiBtc2dpZCAiYmlzZWN0IHJ1biBzdWNjZXNzIgogbXNnc3RyICLkuozliIbmn6Xmib7ov5DooYzmiJDlip8iCiAKQEAgLTkwMTQsNyArOTQxOCw3IEBACiBtc2dpZCAiUHVsbCBpcyBub3QgcG9zc2libGUgYmVjYXVzZSB5b3UgaGF2ZSB1bm1lcmdlZCBmaWxlcy4iCiBtc2dzdHIgIlB1bGwg5LiN5Y+v55So77yM5Zug5Li65oKo5bCa5pyJ5pyq5ZCI5bm255qE5paH5Lu244CCIgogCi0jOiBnaXQtcHVsbC5zaDoxOTcKKyM6IGdpdC1wdWxsLnNoOjIwMwogbXNnaWQgInVwZGF0aW5nIGFuIHVuYm9ybiBicmFuY2ggd2l0aCBjaGFuZ2VzIGFkZGVkIHRvIHRoZSBpbmRleCIKIG1zZ3N0ciAi5pu05paw5bCa5pyq6K+e55Sf55qE5YiG5pSv77yM5Y+Y5pu05re75Yqg6Iez57Si5byVIgogCkBAIC05MDIyLDcgKzk0MjYsNyBAQAogIy4gVGhlIHdvcmtpbmcgdHJlZSBhbmQgdGhlIGluZGV4IGZpbGUgaXMgc3RpbGwgYmFzZWQgb24gdGhlCiAjLiAkb3JpZ19oZWFkIGNvbW1pdCwgYnV0IHdlIGFyZSBtZXJnaW5nIGludG8gJGN1cnJfaGVhZC4KICMuIEZpcnN0IHVwZGF0ZSB0aGUgd29ya2luZyB0cmVlIHRvIG1hdGNoICRjdXJyX2hlYWQuCi0jOiBnaXQtcHVsbC5zaDoyMjgKKyM6IGdpdC1wdWxsLnNoOjIzNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIldhcm5pbmc6IGZldGNoIHVwZGF0ZWQgdGhlIGN1cnJlbnQgYnJhbmNoIGhlYWQuXG4iCkBAIC05MDMyLDE1ICs5NDM2LDE1IEBACiAi6K2m5ZGK77yaZmV0Y2gg5pu05paw5LqG5b2T5YmN55qE5YiG5pSv44CC5oKo55qE5bel5L2c5Yy6XG4iCiAi6K2m5ZGK77ya5LuO5Y6f5o+Q5LqkICRvcmlnX2hlYWQg5b+r6L+b44CCIgogCi0jOiBnaXQtcHVsbC5zaDoyNTMKKyM6IGdpdC1wdWxsLnNoOjI2MAogbXNnaWQgIkNhbm5vdCBtZXJnZSBtdWx0aXBsZSBicmFuY2hlcyBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuaXoOazleWwhuWkmuS4quWIhuaUr+WQiOW5tuWIsOepuuWIhuaUryIKIAotIzogZ2l0LXB1bGwuc2g6MjU3CisjOiBnaXQtcHVsbC5zaDoyNjQKIG1zZ2lkICJDYW5ub3QgcmViYXNlIG9udG8gbXVsdGlwbGUgYnJhbmNoZXMiCiBtc2dzdHIgIuaXoOazleWPmOWfuuWIsOWkmuS4quWIhuaUryIKIAotIzogZ2l0LXJlYmFzZS5zaDo1MgorIzogZ2l0LXJlYmFzZS5zaDo1MwogbXNnaWQgIiIKICJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIuXG4iCiAiSWYgeW91IHByZWZlciB0byBza2lwIHRoaXMgcGF0Y2gsIHJ1biBcImdpdCByZWJhc2UgLS1za2lwXCIgaW5zdGVhZC5cbiIKQEAgLTkwNTEsMjcgKzk0NTUsMzEgQEAKICLlpoLmnpzmgqjmg7Pot7Pov4fmraTooaXkuIHvvIzliJnmiafooYwgXCJnaXQgcmViYXNlIC0tc2tpcFwi44CCXG4iCiAi6KaB5oGi5aSN5Y6f5YiG5pSv5bm25YGc5q2i5Y+Y5Z+677yM5omn6KGMIFwiZ2l0IHJlYmFzZSAtLWFib3J0XCLjgIIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MTU5CisjOiBnaXQtcmViYXNlLnNoOjE2MAogbXNnaWQgIlRoZSBwcmUtcmViYXNlIGhvb2sgcmVmdXNlZCB0byByZWJhc2UuIgogbXNnc3RyICLpkqnlrZAgcHJlLXJlYmFzZSDmi5Lnu53lj5jln7rjgIIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MTY0CisjOiBnaXQtcmViYXNlLnNoOjE2NQogbXNnaWQgIkl0IGxvb2tzIGxpa2UgZ2l0LWFtIGlzIGluIHByb2dyZXNzLiBDYW5ub3QgcmViYXNlLiIKIG1zZ3N0ciAi5Ly85LmO5q2j5aSE5LqO5ZyoIGdpdC1hbSDnmoTmiafooYzov4fnqIvkuK3jgILml6Dms5Xlj5jln7rjgIIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6Mjk1CisjOiBnaXQtcmViYXNlLnNoOjI5NgogbXNnaWQgIlRoZSAtLWV4ZWMgb3B0aW9uIG11c3QgYmUgdXNlZCB3aXRoIHRoZSAtLWludGVyYWN0aXZlIG9wdGlvbiIKIG1zZ3N0ciAi6YCJ6aG5IC0tZXhlYyDlv4XpobvlkozpgInpobkgLS1pbnRlcmFjdGl2ZSDlkIzml7bkvb/nlKgiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MzAwCisjOiBnaXQtcmViYXNlLnNoOjMwMQogbXNnaWQgIk5vIHJlYmFzZSBpbiBwcm9ncmVzcz8iCiBtc2dzdHIgIuayoeacieato+WcqOi/m+ihjOeahOWPmOWfuu+8nyIKIAotIzogZ2l0LXJlYmFzZS5zaDozMTMKKyM6IGdpdC1yZWJhc2Uuc2g6MzEyCittc2dpZCAiVGhlIC0tZWRpdC10b2RvIGFjdGlvbiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnRlcmFjdGl2ZSByZWJhc2UuIgorbXNnc3RyICLliqjkvZwgLS1lZGl0LXRvZG8g5Y+q6IO955So5Zyo5Lqk5LqS5byP5Y+Y5Z+66L+H56iL5Lit44CCIgorCisjOiBnaXQtcmViYXNlLnNoOjMxOQogbXNnaWQgIkNhbm5vdCByZWFkIEhFQUQiCiBtc2dzdHIgIuS4jeiDveivu+WPliBIRUFEIgogCi0jOiBnaXQtcmViYXNlLnNoOjMxNgorIzogZ2l0LXJlYmFzZS5zaDozMjIKIG1zZ2lkICIiCiAiWW91IG11c3QgZWRpdCBhbGwgbWVyZ2UgY29uZmxpY3RzIGFuZCB0aGVuXG4iCiAibWFyayB0aGVtIGFzIHJlc29sdmVkIHVzaW5nIGdpdCBhZGQiCkBAIC05MDc5LDEyICs5NDg3LDEyIEBACiAi5oKo5b+F6aG757yW6L6R5omA5pyJ55qE5ZCI5bm25Yay56qB77yM54S25ZCO6YCa6L+HIGdpdCBhZGRcbiIKICLlkb3ku6TlsIblroPku6zmoIforrDkuLrlt7Lop6PlhrMiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MzM0CisjOiBnaXQtcmViYXNlLnNoOjM0MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG1vdmUgYmFjayB0byAkaGVhZF9uYW1lIgogbXNnc3RyICLml6Dms5Xnp7vlm54gJGhlYWRfbmFtZSIKIAotIzogZ2l0LXJlYmFzZS5zaDozNTAKKyM6IGdpdC1yZWJhc2Uuc2g6MzU5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCkBAIC05MTAzLDU2ICs5NTExLDU2IEBACiAiXHQkY21kX2NsZWFyX3N0YWxlX3JlYmFzZVxuIgogIueEtuWQjuWGjemHjeaWsOaJp+ihjOWPmOWfuuOAguS4uumBv+WFjeaCqOS4ouWksemHjeimgeaVsOaNru+8jOaIkeW3sue7j+WBnOatouW9k+WJjeaTjeS9nOOAgiIKIAotIzogZ2l0LXJlYmFzZS5zaDozOTUKKyM6IGdpdC1yZWJhc2Uuc2g6NDA0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHVwc3RyZWFtICR1cHN0cmVhbV9uYW1lIgogbXNnc3RyICLml6DmlYjnmoTkuIrmuLggJHVwc3RyZWFtX25hbWUiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDE5CisjOiBnaXQtcmViYXNlLnNoOjQyOAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJG9udG9fbmFtZTogdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgbWVyZ2UgYmFzZXMiCiBtc2dzdHIgIiRvbnRvX25hbWU6IOacieS4gOS4quS7peS4iueahOWQiOW5tuWfuuWHhiIKIAotIzogZ2l0LXJlYmFzZS5zaDo0MjIgZ2l0LXJlYmFzZS5zaDo0MjYKKyM6IGdpdC1yZWJhc2Uuc2g6NDMxIGdpdC1yZWJhc2Uuc2g6NDM1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIgogbXNnc3RyICIkb250b19uYW1lOiDmsqHmnInlkIjlubbln7rlh4YiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDMxCisjOiBnaXQtcmViYXNlLnNoOjQ0MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiRG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBjb21taXQ6ICRvbnRvX25hbWUiCiBtc2dzdHIgIuayoeacieaMh+WQkeS4gOS4quacieaViOeahOaPkOS6pO+8miRvbnRvX25hbWUiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDU0CisjOiBnaXQtcmViYXNlLnNoOjQ2MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiZmF0YWw6IG5vIHN1Y2ggYnJhbmNoOiAkYnJhbmNoX25hbWUiCiBtc2dzdHIgIuS4pemHjemUmeivr++8muaXoOatpOWIhuaUr++8miRicmFuY2hfbmFtZSIKIAotIzogZ2l0LXJlYmFzZS5zaDo0NzQKKyM6IGdpdC1yZWJhc2Uuc2g6NDgzCiBtc2dpZCAiUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB0aGVtLiIKIG1zZ3N0ciAi6K+35o+Q5Lqk5oiW5Li65a6D5Lus5L+d5a2Y6L+b5bqm44CCIgogCi0jOiBnaXQtcmViYXNlLnNoOjQ5MgorIzogZ2l0LXJlYmFzZS5zaDo1MDEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIKIG1zZ3N0ciAi5b2T5YmN5YiG5pSvICRicmFuY2hfbmFtZSDmmK/mnIDmlrDnmoTjgIIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDk1CisjOiBnaXQtcmViYXNlLnNoOjUwNAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgogbXNnc3RyICLlvZPliY3liIbmlK8gJGJyYW5jaF9uYW1lIOaYr+acgOaWsOeahO+8jOW8uuWItuWPmOWfuuOAgiIKIAotIzogZ2l0LXJlYmFzZS5zaDo1MDYKKyM6IGdpdC1yZWJhc2Uuc2g6NTE1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDaGFuZ2VzIGZyb20gJG1iIHRvICRvbnRvOiIKIG1zZ3N0ciAi5Y+Y5pu05LuOICRtYiDliLAgJG9udG/vvJoiCiAKICMuIERldGFjaCBIRUFEIGFuZCByZXNldCB0aGUgdHJlZQotIzogZ2l0LXJlYmFzZS5zaDo1MTUKKyM6IGdpdC1yZWJhc2Uuc2g6NTI0CiBtc2dpZCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIgogbXNnc3RyICLpppblhYjvvIzph43nva7lpLTmjIfpkojku6Xkvr/lnKjkuIrpnaLph43mlL7mgqjnmoTlt6XkvZwuLi4iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTIzCisjOiBnaXQtcmViYXNlLnNoOjUzMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFzdC1mb3J3YXJkZWQgJGJyYW5jaF9uYW1lIHRvICRvbnRvX25hbWUuIgogbXNnc3RyICLlv6vov5sgJGJyYW5jaF9uYW1lIOiHsyAkb250b19uYW1l44CCIgpAQCAtOTI4NiwzNyArOTY5NCwzNyBAQAogbXNnaWQgIihUbyByZXN0b3JlIHRoZW0gdHlwZSBcImdpdCBzdGFzaCBhcHBseVwiKSIKIG1zZ3N0ciAi77yI5Li65oGi5aSN5pWw5o2u6L6T5YWlIFwiZ2l0IHN0YXNoIGFwcGx5XCLvvIkiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTEKICMsIHNoLWZvcm1hdAogbXNnaWQgImNhbm5vdCBzdHJpcCBvbmUgY29tcG9uZW50IG9mZiB1cmwgJyRyZW1vdGV1cmwnIgogbXNnc3RyICLml6Dms5Xku44gdXJsICckcmVtb3RldXJsJyDliaXnprvkuIDkuKrnu4Tku7YiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTY3CisjOiBnaXQtc3VibW9kdWxlLnNoOjE5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5pyq5ZyoIC5naXRtb2R1bGVzIOS4reWPkeeOsOi3r+W+hCAnJHNtX3BhdGgnIOeahOWtkOaooee7hOaYoOWwhCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAi5peg5rOV5YWL6ZqGICckdXJsJyDliLDlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMjMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJHaXRkaXIgJyRhJyBpcyBwYXJ0IG9mIHRoZSBzdWJtb2R1bGUgcGF0aCAnJGInIG9yIHZpY2UgdmVyc2EiCi1tc2dzdHIgIkdpdGRpciAnJGEnIOWcqOWtkOaooee7hOi3r+W+hCAnJGInIOS5i+S4i+aIluiAheebuOWPjSIKK21zZ3N0ciAiR2l0ZGlyICckYScg5Zyo5a2Q5qih57uE6Lev5b6EICckYicg5LmL5LiL5oiW55u45Y+NIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMxMgorIzogZ2l0LXN1Ym1vZHVsZS5zaDozNDkKICMsIHNoLWZvcm1hdAogbXNnaWQgInJlcG8gVVJMOiAnJHJlcG8nIG11c3QgYmUgYWJzb2x1dGUgb3IgYmVnaW4gd2l0aCAuL3wuLi8iCiBtc2dzdHIgIueJiOacrOW6k1VSTO+8mickcmVwbycg5b+F6aG75piv57ud5a+56Lev5b6E5oiW5LulIC4vfC4uLyDotbflp4siCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzI5CisjOiBnaXQtc3VibW9kdWxlLnNoOjM2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgiCiBtc2dzdHIgIickc21fcGF0aCcg5bey57uP5a2Y5Zyo5LqO57Si5byV5LitIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjMzMworIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgZm9sbG93aW5nIHBhdGggaXMgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgpAQCAtOTMyNywxNTkgKzk3MzUsMzIyIEBACiAiJHNtX3BhdGhcbiIKICLlpoLmnpzmgqjnoa7lrp7mg7Pmt7vliqDlroPvvIzkvb/nlKggLWYg5Y+C5pWw44CCIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM0NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDozODgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFkZGluZyBleGlzdGluZyByZXBvIGF0ICckc21fcGF0aCcgdG8gdGhlIGluZGV4IgogbXNnc3RyICLmt7vliqDkvY3kuo4gJyRzbV9wYXRoJyDnmoTnjrDlrZjniYjmnKzlupPliLDntKLlvJUiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ2CisjOiBnaXQtc3VibW9kdWxlLnNoOjM5MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRzbV9wYXRoJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90IGEgdmFsaWQgZ2l0IHJlcG8iCiBtc2dzdHIgIickc21fcGF0aCcg5bey5a2Y5Zyo5LiU5LiN5piv5LiA5Liq5pyJ5pWI55qEIGdpdCDniYjmnKzlupMiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzYwCisjOiBnaXQtc3VibW9kdWxlLnNoOjM5OAorIywgc2gtZm9ybWF0Cittc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgorbXNnc3RyICLmnKzlnLDlj5HnjrAgJyRzbV9uYW1lJyDnmoTkuIDkuKogZ2l0IOebruW9le+8jOS4juWFtuWvueW6lOeahOi/nOeoi+eJiOacrOW6k++8miIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJJZiB5b3Ugd2FudCB0byByZXVzZSB0aGlzIGxvY2FsIGdpdCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjbG9uaW5nIGFnYWluIGZyb20iCittc2dzdHIgIuWmguaenOaCqOaDs+mHjeeUqOatpOacrOWcsCBnaXQg55uu5b2V6ICM5LiN5piv6YeN5paw5YWL6ZqG6IeqIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMgorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorInVzZSB0aGUgJy0tZm9yY2UnIG9wdGlvbi4gSWYgdGhlIGxvY2FsIGdpdCBkaXJlY3RvcnkgaXMgbm90IHRoZSBjb3JyZWN0IHJlcG8iCittc2dzdHIgIuS9v+eUqCAnLS1mb3JjZScg5Y+C5pWw44CC5aaC5p6c5pys5ZywIGdpdCDnm67lvZXkuI3mmK/mraPnoa7nmoTniYjmnKzlupMiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAzCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisib3IgeW91IGFyZSB1bnN1cmUgd2hhdCB0aGlzIG1lYW5zIGNob29zZSBhbm90aGVyIG5hbWUgd2l0aCB0aGUgJy0tbmFtZScgIgorIm9wdGlvbi4iCittc2dzdHIgIuaIluiAheaCqOS4jeehruWumuWFtuS4reWQq+S5ieS9v+eUqCAnLS1uYW1lJyDlj4LmlbDpgInmi6nlj6blpJbkuIDkuKrlkI3np7DjgIIiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDA1CisjLCBzaC1mb3JtYXQKK21zZ2lkICJSZWFjdGl2YXRpbmcgbG9jYWwgZ2l0IGRpcmVjdG9yeSBmb3Igc3VibW9kdWxlICckc21fbmFtZScuIgorbXNnc3RyICLmv4DmtLvmnKzlnLAgZ2l0IOebruW9leWIsOWtkOaooee7hCAnJHNtX25hbWUn44CCIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQxNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0IHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICLkuI3og73mo4Dlh7rlrZDmqKHnu4QgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjUKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDIyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gYWRkIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICLml6Dms5Xmt7vliqDlrZDmqKHnu4QgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDMxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgc3VibW9kdWxlICckc21fcGF0aCciCiBtc2dzdHIgIuaXoOazleazqOWGjOWtkOaooee7hCAnJHNtX3BhdGgnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQxMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkVudGVyaW5nICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICLmraPlnKjov5vlhaUgJyRwcmVmaXgkc21fcGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDI3CisjOiBnaXQtc3VibW9kdWxlLnNoOjQ4OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiU3RvcHBpbmcgYXQgJyRzbV9wYXRoJzsgc2NyaXB0IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cy4iCiBtc2dzdHIgIuWBnOatouS6jiAnJHNtX3BhdGgn77yM6ISa5pys6L+U5Zue6Z2e6Zu25YC844CCIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQ3MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MzIKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBpbiAuZ2l0bW9kdWxlcyIKIG1zZ3N0ciAi5ZyoIC5naXRtb2R1bGVzIOS4reacquaJvuWIsOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOeahCB1cmwiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDgwCisjOiBnaXQtc3VibW9kdWxlLnNoOjU0MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHVybCBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5peg5rOV5Li65a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5rOo5YaMIHVybCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICLlrZDmqKHnu4QgJyRuYW1lJyAoJHVybCkg5bey5Li66Lev5b6EICckc21fcGF0aCcg5rOo5YaMIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQ5MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cGRhdGUgbW9kZSBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5peg5rOV5Li65a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5rOo5YaM5pu05paw5qih5byPIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU5MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo1ODgKICMsIHNoLWZvcm1hdAotbXNnaWQgIiIKLSJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIG5vdCBpbml0aWFsaXplZFxuIgotIk1heWJlIHlvdSB3YW50IHRvIHVzZSAndXBkYXRlIC0taW5pdCc/IgotbXNnc3RyICIiCi0i5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCcg5rKh5pyJ5Yid5aeL5YyWXG4iCi0i5Lmf6K645oKo5oOz55SoICd1cGRhdGUgLS1pbml0J++8nyIKK21zZ2lkICJVc2UgJy4nIGlmIHlvdSByZWFsbHkgd2FudCB0byBkZWluaXRpYWxpemUgYWxsIHN1Ym1vZHVsZXMiCittc2dzdHIgIuS9v+eUqCAnLicg5aaC5p6c5oKo55yf55qE5oOz6KaB5a+55omA5pyJ5a2Q5qih57uE5Y+W5raI5Yid5aeL5YyWIgogCiAjOiBnaXQtc3VibW9kdWxlLnNoOjYwMwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5XlnKjlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyDkuK3mib7liLDlvZPliY3niYjmnKwiCittc2dpZCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiCittc2dzdHIgIuWtkOaooee7hOW3peS9nOWMuiAnJHNtX3BhdGgnIOWMheWQq+S4gOS4qiAuZ2l0IOebruW9lSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjA0CisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgorbXNnc3RyICLvvIjkvb/nlKggJ3JtIC1yZicg5ZG95Luk5aaC5p6c5oKo55yf55qE5oOz5Yig6Zmk5a6D5Y+K5YW25YWo6YOo5Y6G5Y+y77yJIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMAorIywgc2gtZm9ybWF0Cittc2dpZCAiIgorIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBsb2NhbCBtb2RpZmljYXRpb25zOyB1c2UgJy1mJyB0byAiCisiZGlzY2FyZCB0aGVtIgorbXNnc3RyICLlrZDmqKHnu4Tlt6XkvZzljLogJyRzbV9wYXRoJyDljIXlkKvmnKzlnLDkv67mlLnvvJvkvb/nlKggJy1mJyDkuKLlvIPlroPku6wiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjEzCisjLCBzaC1mb3JtYXQKK21zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICLlt7LmuIXpmaTnm67lvZUgJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTQKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgc3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIgorbXNnc3RyICLml6Dms5Xnp7vpmaTlrZDmqKHnu4Tlt6XkvZzljLogJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBjcmVhdGUgZW1wdHkgc3VibW9kdWxlIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgorbXNnc3RyICLkuI3og73liJvlu7rnqbrnmoTlrZDmqKHnu4Tnm67lvZUgJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjYKKyMsIHNoLWZvcm1hdAorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKK21zZ3N0ciAi5a2Q5qih57uEICckbmFtZScgKCR1cmwpIOacquWvuei3r+W+hCAnJHNtX3BhdGgnIOazqOWGjCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3MzEKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKK21zZ3N0ciAiIgorIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDmsqHmnInliJ3lp4vljJZcbiIKKyLkuZ/orrjmgqjmg7PnlKggJ3VwZGF0ZSAtLWluaXQn77yfIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjc0NAorIywgc2gtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4reaJvuWIsOW9k+WJjeeJiOacrCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICLml6Dms5XlnKjlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyDkuK3ojrflj5YiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjM2CisjOiBnaXQtc3VibW9kdWxlLnNoOjc3NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIHJlYmFzZSAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOS4reWPmOWfuiAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4reiOt+WPliIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MzcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkxCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKLW1zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCfvvJrlj5jln7roh7MgJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDkuK3lj5jln7ogJyRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NDIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NzkyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5XlkIjlubYgJyRzaGExJyDliLDlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyDkuK0iCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgorbXNnc3RyICLlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCfvvJrlj5jln7roh7MgJyRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NDMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKLW1zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCfvvJrlt7LlkIjlubblhaUgJyRzaGExJyIKK21zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAi5peg5rOV5ZCI5bm2ICckc2hhMScg5Yiw5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4rSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NDgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gY2hlY2tvdXQgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5XlnKjlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyDkuK3mo4Dlh7ogJyRzaGExJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dzdHIgIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJ++8muW3suWQiOW5tuWFpSAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjY0OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDMKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCc6IGNoZWNrZWQgb3V0ICckc2hhMSciCi1tc2dzdHIgIuWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgn77ya5qOA5Ye6ICckc2hhMSciCittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDkuK3mo4Dlh7ogJyRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NzEgZ2l0LXN1Ym1vZHVsZS5zaDo5OTUKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODA0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIuaXoOazlemAkuW9kui/m+WtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgorbXNnc3RyICLlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCfvvJrmo4Dlh7ogJyRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODMxCisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCciCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTM5CiBtc2dpZCAiVGhlIC0tY2FjaGVkIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSAtLWZpbGVzIG9wdGlvbiIKIG1zZ3N0ciAi6YCJ6aG5IC0tY2FjaGVkIOS4jeiDveWSjOmAiemhuSAtLWZpbGVzIOWQjOaXtuS9v+eUqCIKIAogIy4gdW5leHBlY3RlZCB0eXBlCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgxOQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo5NzkKICMsIHNoLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgbW9kZSAkbW9kX2RzdCIKIG1zZ3N0ciAi5oSP5aSW55qE5qih5byPICRtb2RfZHN0IgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODM3CisjOiBnaXQtc3VibW9kdWxlLnNoOjk5NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKIG1zZ3N0ciAiICDorablkYrvvJokbmFtZSDmnKrljIXlkKvmj5DkuqQgJHNoYTFfc3JjIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODQwCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMDAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCiBtc2dzdHIgIiAg6K2m5ZGK77yaJG5hbWUg5pyq5YyF5ZCr5o+Q5LqkICRzaGExX2RzdCIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiBnaXQtc3VibW9kdWxlLnNoOjg0MworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDAzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXRzICRzaGExX3NyYyBhbmQgJHNoYTFfZHN0IgogbXNnc3RyICIgIOitpuWRiu+8miRuYW1lIOacquWMheWQq+aPkOS6pCAkc2hhMV9zcmMg5ZKMICRzaGExX2RzdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NjgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAyOAogbXNnaWQgImJsb2IiCi1tc2dzdHIgIuS6jOi/m+WItuWvueixoSIKK21zZ3N0ciAi5pWw5o2u5a+56LGhIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkwNgotbXNnaWQgIiMgU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCi1tc2dzdHIgIiMg5a2Q5qih57uE5bey5L+u5pS55L2G5bCa5pyq5pu05paw77yaIgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY2Cittc2dpZCAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCittc2dzdHIgIuWtkOaooee7hOW3suS/ruaUueS9huWwmuacquabtOaWsO+8miIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MDgKLW1zZ2lkICIjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjgKK21zZ2lkICJTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgogbXNnc3RyICLopoHmj5DkuqTnmoTlrZDmqKHnu4Tlj5jmm7TvvJoiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA1NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTUzCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckbmFtZSciCi1tc2dzdHIgIuS4uiAnJG5hbWUnIOWQjOatpeWtkOaooee7hCB1cmwiCittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CisjLCBzaC1mb3JtYXQKK21zZ2lkICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICckcHJlZml4JHNtX3BhdGgnIgorbXNnc3RyICLkuLogJyRwcmVmaXgkc21fcGF0aCcg5ZCM5q2l5a2Q5qih57uEIHVybCIKKworI34gbXNnaWQgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFtyZXYtb3B0c10gWy0tXSBbPGNvbW1pdC1pZD4uLi4gXSIKKyN+IG1zZ3N0ciAiZ2l0IHNob3J0bG9nIFstbl0gWy1zXSBbLWVdIFstd10gW+eJiOacrOmAiemhuV0gWy0tXSBbPOaPkOS6pOWPtz4uLi4gXSIKKworI34gbXNnaWQgIlNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBhIHNwZWNpZmljIGNvbW1hbmQuIgorI34gbXNnc3RyICLlj4Lop4EgJ2dpdCBoZWxwIDxjb21tYW5kPicg5Lul6I635b6X6K+l54m55a6a5ZG95Luk55qE6K+m57uG5L+h5oGv44CCIgorCisjfiBtc2dpZCAiQlVHOiBpbXBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mICVkIGFuZCAlcCIKKyN+IG1zZ3N0ciAiQlVHOiDml6Dms5Xnu4TlkIggJWQg5ZKMICVwIgorCisjICDor5HogIXvvJrku6XkuIvkuInmnaHlrp7pmYXkuLrkuIDkuKrmrrXokL0KKyN+IG1zZ2lkICJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAgJ3N0YXR1cyAtdW5vJyIKKyN+IG1zZ3N0ciAi6ICX6LS55LqGICUuMmYg56eS5Lul5p6a5Li+5pyq6Lef6Liq55qE5paH5Lu244CCJ3N0YXR1cyAtdW5vJyIKKworIyAg6K+R6ICF77ya5Li65a+56b2Q77yM5LiL6Z2i5Lik5Y+l5YaF5a655pyJ6LCD5pW0CisjfiBtc2dpZCAibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZCIKKyN+IG1zZ3N0ciAi5Lmf6K646IO95o+Q6auY6YCf5bqm77yM5L2G5oKo6ZyA6KaB5bCP5b+D5LiN6KaB5b+Y5LqG5re75Yqg5paw5paH5Lu2IgorCisjfiBtc2dpZCAibmV3IGZpbGVzIHlvdXJzZWxmIChzZWUgJ2dpdCBoZWxwIHN0YXR1cycpLiIKKyN+IG1zZ3N0ciAi77yI5Y+C6KeBICdnaXQgaGVscCBzdGF0dXMn77yJ44CCIgorCisjLCBmdXp6eQorI34gbXNnaWQgImFhYVN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCisjfiBtc2dzdHIgIuS4uiAnJHByZWZpeCRzbV9wYXRoJyDlkIzmraXlrZDmqKHnu4QgdXJsIgorCisjfiBtc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgorI34gbXNnc3RyICLkvb/nlKggLmdpdC9yZWZzIOmHjOeahOS7u+aEj+W8leeUqCIKKworI34gbXNnaWQgInVzZSBhbnkgdGFnIGluIC5naXQvcmVmcy90YWdzIgorI34gbXNnc3RyICLkvb/nlKggLmdpdC9yZWZzL3RhZ3Mg6YeM55qE5Lu75oSPIHRhZyIKKworI34gbXNnaWQgImJhZCBvYmplY3QgJXMiCisjfiBtc2dzdHIgIuWdj+WvueixoSAlcyIKKworI34gbXNnaWQgImJvZ3VzIGNvbW1pdHRlciBpbmZvICVzIgorI34gbXNnc3RyICLomZrlgYfnmoTmj5DkuqTogIXkv6Hmga8gJXMiCisKKyN+IG1zZ2lkICJjYW4ndCBmZG9wZW4gJ3Nob3cnIG91dHB1dCBmZCIKKyN+IG1zZ3N0ciAi5LiN6IO95omT5byAICdzaG93JyDovpPlh7rmlofku7blj6Xmn4QiCisKKyN+IG1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcGlwZSB0byAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgorI34gbXNnc3RyICLml6Dms5XkuLrlr7nosaEgJyVzJyDnmoQgJ3Nob3cnIOWFs+mXreeuoemBkyIKKworI34gbXNnaWQgIiAwIGZpbGVzIGNoYW5nZWQiCisjfiBtc2dzdHIgIiAwIOS4quaWh+S7tuiiq+S/ruaUuSIKKworI34gbXNnaWQgIiAlZCBmaWxlIGNoYW5nZWQiCisjfiBtc2dpZF9wbHVyYWwgIiAlZCBmaWxlcyBjaGFuZ2VkIgorI34gbXNnc3RyWzBdICIgJWQg5Liq5paH5Lu26KKr5L+u5pS5IgorI34gbXNnc3RyWzFdICIgJWQg5Liq5paH5Lu26KKr5L+u5pS5IgorCisjfiBtc2dpZCAiLCAlZCBpbnNlcnRpb24oKykiCisjfiBtc2dpZF9wbHVyYWwgIiwgJWQgaW5zZXJ0aW9ucygrKSIKKyN+IG1zZ3N0clswXSAi77yM5o+S5YWlICVkIOihjCgrKSIKKyN+IG1zZ3N0clsxXSAi77yM5o+S5YWlICVkIOihjCgrKSIKKworI34gbXNnaWQgIiwgJWQgZGVsZXRpb24oLSkiCisjfiBtc2dpZF9wbHVyYWwgIiwgJWQgZGVsZXRpb25zKC0pIgorI34gbXNnc3RyWzBdICLvvIzliKDpmaQgJWQg6KGMKC0pIgorI34gbXNnc3RyWzFdICLvvIzliKDpmaQgJWQg6KGMKC0pIgorCisjfiBtc2dpZCAiWW91IGRvIG5vdCBoYXZlIGEgdmFsaWQgSEVBRCIKKyN+IG1zZ3N0ciAi5oKo5rKh5pyJ5LiA5Liq5pyJ5pWI55qEIEhFQUQiCisKKyN+IG1zZ2lkICJvb3BzIgorI34gbXNnc3RyICLlk47lk58iCisKKyN+IG1zZ2lkICJXb3VsZCBub3QgcmVtb3ZlICVzXG4iCisjfiBtc2dzdHIgIuS4jeS8muWIoOmZpCAlc1xuIgorCisjfiBtc2dpZCAiTm90IHJlbW92aW5nICVzXG4iCisjfiBtc2dzdHIgIuacquWIoOmZpCAlc1xuIgorCisjfiBtc2dpZCAiQXV0byBwYWNraW5nIHRoZSByZXBvc2l0b3J5IGZvciBvcHRpbXVtIHBlcmZvcm1hbmNlLlxuIgorI34gbXNnc3RyICLoh6rliqjmiZPljIXniYjmnKzlupPku6XmsYLmnIDkvbPmgKfog73jgIJcbiIKKworI34gbXNnaWQgImdpdCByZW1vdGUgc2V0LWhlYWQgPG5hbWU+ICgtYSB8IC1kIHwgPGJyYW5jaD5dKSIKKyN+IG1zZ3N0ciAiZ2l0IHJlbW90ZSBzZXQtaGVhZCA85ZCN56ewPiAoLWEgfCAtZCB8IDzliIbmlK8+XSkiCisKKyN+IG1zZ2lkICJDb3VsZCBub3QgcmVhZCBpbmRleCIKKyN+IG1zZ3N0ciAi5LiN6IO96K+75Y+W57Si5byVIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKICN+IG1zZ2lkICIgKHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaykiCmRpZmYgLS1naXQgYS9wcmV0dHkuYyBiL3ByZXR0eS5jCmluZGV4IDkxYmIyZDMuLjllNDMxNTQgMTAwNjQ0Ci0tLSBhL3ByZXR0eS5jCisrKyBiL3ByZXR0eS5jCkBAIC0zNDUsNyArMzQ1LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgYWRkX3JmYzIwNDcoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKmxpbmUsIGludCBsZW4sCitzdGF0aWMgdm9pZCBhZGRfcmZjMjA0NyhzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqbGluZSwgc2l6ZV90IGxlbiwKIAkJICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBlbnVtIHJmYzIwNDdfdHlwZSB0eXBlKQogewogCXN0YXRpYyBjb25zdCBpbnQgbWF4X2VuY29kZWRfbGVuZ3RoID0gNzY7IC8qIHBlciByZmMyMDQ3ICovCkBAIC0zNTUsOSArMzU1LDIyIEBACiAJc3RyYnVmX2dyb3coc2IsIGxlbiAqIDMgKyBzdHJsZW4oZW5jb2RpbmcpICsgMTAwKTsKIAlzdHJidWZfYWRkZihzYiwgIj0/JXM/cT8iLCBlbmNvZGluZyk7CiAJbGluZV9sZW4gKz0gc3RybGVuKGVuY29kaW5nKSArIDU7IC8qIDUgZm9yID0/P3E/ICovCi0JZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0JCXVuc2lnbmVkIGNoID0gbGluZVtpXSAmIDB4RkY7Ci0JCWludCBpc19zcGVjaWFsID0gaXNfcmZjMjA0N19zcGVjaWFsKGNoLCB0eXBlKTsKKworCXdoaWxlIChsZW4pIHsKKwkJLyoKKwkJICogUkZDIDIwNDcsIHNlY3Rpb24gNSAoMyk6CisJCSAqCisJCSAqIEVhY2ggJ2VuY29kZWQtd29yZCcgTVVTVCByZXByZXNlbnQgYW4gaW50ZWdyYWwgbnVtYmVyIG9mCisJCSAqIGNoYXJhY3RlcnMuICBBIG11bHRpLW9jdGV0IGNoYXJhY3RlciBtYXkgbm90IGJlIHNwbGl0IGFjcm9zcworCQkgKiBhZGphY2VudCAnZW5jb2RlZC0gd29yZCdzLgorCQkgKi8KKwkJY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopbGluZTsKKwkJaW50IGNocmxlbiA9IG1ic19jaHJsZW4oJmxpbmUsICZsZW4sIGVuY29kaW5nKTsKKwkJaW50IGlzX3NwZWNpYWwgPSAoY2hybGVuID4gMSkgfHwgaXNfcmZjMjA0N19zcGVjaWFsKCpwLCB0eXBlKTsKKworCQkvKiAiPSUwMlgiICogY2hybGVuLCBvciB0aGUgYnl0ZSBpdHNlbGYgKi8KKwkJY29uc3QgY2hhciAqZW5jb2RlZF9mbXQgPSBpc19zcGVjaWFsID8gIj0lMDJYIiAgICA6ICIlYyI7CisJCWludAkgICAgZW5jb2RlZF9sZW4gPSBpc19zcGVjaWFsID8gMyAqIGNocmxlbiA6IDE7CiAKIAkJLyoKIAkJICogQWNjb3JkaW5nIHRvIFJGQyAyMDQ3LCB3ZSBjb3VsZCBlbmNvZGUgdGhlIHNwZWNpYWwgY2hhcmFjdGVyCkBAIC0zNjcsODUgKzM4MCw5NiBAQAogCQkgKiBjYXVzZXMgJyAnIHRvIGJlIGVuY29kZWQgYXMgJz0yMCcsIGF2b2lkaW5nIHRoaXMgcHJvYmxlbS4KIAkJICovCiAKLQkJaWYgKGxpbmVfbGVuICsgMiArIChpc19zcGVjaWFsID8gMyA6IDEpID4gbWF4X2VuY29kZWRfbGVuZ3RoKSB7CisJCWlmIChsaW5lX2xlbiArIGVuY29kZWRfbGVuICsgMiA+IG1heF9lbmNvZGVkX2xlbmd0aCkgeworCQkJLyogSXQgd29uJ3QgZml0IHdpdGggdHJhaWxpbmcgIj89IiAtLS0gYnJlYWsgdGhlIGxpbmUgKi8KIAkJCXN0cmJ1Zl9hZGRmKHNiLCAiPz1cbiA9PyVzP3E/IiwgZW5jb2RpbmcpOwogCQkJbGluZV9sZW4gPSBzdHJsZW4oZW5jb2RpbmcpICsgNSArIDE7IC8qID0/P3E/IHBsdXMgU1AgKi8KIAkJfQogCi0JCWlmIChpc19zcGVjaWFsKSB7Ci0JCQlzdHJidWZfYWRkZihzYiwgIj0lMDJYIiwgY2gpOwotCQkJbGluZV9sZW4gKz0gMzsKLQkJfSBlbHNlIHsKLQkJCXN0cmJ1Zl9hZGRjaChzYiwgY2gpOwotCQkJbGluZV9sZW4rKzsKLQkJfQorCQlmb3IgKGkgPSAwOyBpIDwgY2hybGVuOyBpKyspCisJCQlzdHJidWZfYWRkZihzYiwgZW5jb2RlZF9mbXQsIHBbaV0pOworCQlsaW5lX2xlbiArPSBlbmNvZGVkX2xlbjsKIAl9CiAJc3RyYnVmX2FkZHN0cihzYiwgIj89Iik7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICpzaG93X2lkZW50X2RhdGUoY29uc3Qgc3RydWN0IGlkZW50X3NwbGl0ICppZGVudCwKKwkJCQkgICBlbnVtIGRhdGVfbW9kZSBtb2RlKQoreworCXVuc2lnbmVkIGxvbmcgZGF0ZSA9IDA7CisJaW50IHR6ID0gMDsKKworCWlmIChpZGVudC0+ZGF0ZV9iZWdpbiAmJiBpZGVudC0+ZGF0ZV9lbmQpCisJCWRhdGUgPSBzdHJ0b3VsKGlkZW50LT5kYXRlX2JlZ2luLCBOVUxMLCAxMCk7CisJaWYgKGlkZW50LT50el9iZWdpbiAmJiBpZGVudC0+dHpfZW5kKQorCQl0eiA9IHN0cnRvbChpZGVudC0+dHpfYmVnaW4sIE5VTEwsIDEwKTsKKwlyZXR1cm4gc2hvd19kYXRlKGRhdGUsIHR6LCBtb2RlKTsKK30KKwogdm9pZCBwcF91c2VyX2luZm8oY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKIAkJICBjb25zdCBjaGFyICp3aGF0LCBzdHJ1Y3Qgc3RyYnVmICpzYiwKIAkJICBjb25zdCBjaGFyICpsaW5lLCBjb25zdCBjaGFyICplbmNvZGluZykKIHsKKwlzdHJ1Y3QgaWRlbnRfc3BsaXQgaWRlbnQ7CisJY2hhciAqbGluZV9lbmQ7CisJY29uc3QgY2hhciAqbWFpbGJ1ZiwgKm5hbWVidWY7CisJc2l6ZV90IG5hbWVsZW4sIG1haWxsZW47CiAJaW50IG1heF9sZW5ndGggPSA3ODsgLyogcGVyIHJmYzI4MjIgKi8KLQljaGFyICpkYXRlOwotCWludCBuYW1lbGVuOwotCXVuc2lnbmVkIGxvbmcgdGltZTsKLQlpbnQgdHo7CiAKIAlpZiAocHAtPmZtdCA9PSBDTUlUX0ZNVF9PTkVMSU5FKQogCQlyZXR1cm47Ci0JZGF0ZSA9IHN0cmNocihsaW5lLCAnPicpOwotCWlmICghZGF0ZSkKKworCWxpbmVfZW5kID0gc3RyY2hybnVsKGxpbmUsICdcbicpOworCWlmIChzcGxpdF9pZGVudF9saW5lKCZpZGVudCwgbGluZSwgbGluZV9lbmQgLSBsaW5lKSkKIAkJcmV0dXJuOwotCW5hbWVsZW4gPSArK2RhdGUgLSBsaW5lOwotCXRpbWUgPSBzdHJ0b3VsKGRhdGUsICZkYXRlLCAxMCk7Ci0JdHogPSBzdHJ0b2woZGF0ZSwgTlVMTCwgMTApOworCisJbWFpbGJ1ZiA9IGlkZW50Lm1haWxfYmVnaW47CisJbWFpbGxlbiA9IGlkZW50Lm1haWxfZW5kIC0gaWRlbnQubWFpbF9iZWdpbjsKKwluYW1lYnVmID0gaWRlbnQubmFtZV9iZWdpbjsKKwluYW1lbGVuID0gaWRlbnQubmFtZV9lbmQgLSBpZGVudC5uYW1lX2JlZ2luOworCisJaWYgKHBwLT5tYWlsbWFwKQorCQltYXBfdXNlcihwcC0+bWFpbG1hcCwgJm1haWxidWYsICZtYWlsbGVuLCAmbmFtZWJ1ZiwgJm5hbWVsZW4pOwogCiAJaWYgKHBwLT5mbXQgPT0gQ01JVF9GTVRfRU1BSUwpIHsKLQkJY2hhciAqbmFtZV90YWlsID0gc3RyY2hyKGxpbmUsICc8Jyk7Ci0JCWludCBkaXNwbGF5X25hbWVfbGVuZ3RoOwotCQlpZiAoIW5hbWVfdGFpbCkKLQkJCXJldHVybjsKLQkJd2hpbGUgKGxpbmUgPCBuYW1lX3RhaWwgJiYgaXNzcGFjZShuYW1lX3RhaWxbLTFdKSkKLQkJCW5hbWVfdGFpbC0tOwotCQlkaXNwbGF5X25hbWVfbGVuZ3RoID0gbmFtZV90YWlsIC0gbGluZTsKIAkJc3RyYnVmX2FkZHN0cihzYiwgIkZyb206ICIpOwotCQlpZiAobmVlZHNfcmZjMjA0N19lbmNvZGluZyhsaW5lLCBkaXNwbGF5X25hbWVfbGVuZ3RoLCBSRkMyMDQ3X0FERFJFU1MpKSB7Ci0JCQlhZGRfcmZjMjA0NyhzYiwgbGluZSwgZGlzcGxheV9uYW1lX2xlbmd0aCwKLQkJCQkJCWVuY29kaW5nLCBSRkMyMDQ3X0FERFJFU1MpOworCQlpZiAobmVlZHNfcmZjMjA0N19lbmNvZGluZyhuYW1lYnVmLCBuYW1lbGVuLCBSRkMyMDQ3X0FERFJFU1MpKSB7CisJCQlhZGRfcmZjMjA0NyhzYiwgbmFtZWJ1ZiwgbmFtZWxlbiwKKwkJCQkgICAgZW5jb2RpbmcsIFJGQzIwNDdfQUREUkVTUyk7CiAJCQltYXhfbGVuZ3RoID0gNzY7IC8qIHBlciByZmMyMDQ3ICovCi0JCX0gZWxzZSBpZiAobmVlZHNfcmZjODIyX3F1b3RpbmcobGluZSwgZGlzcGxheV9uYW1lX2xlbmd0aCkpIHsKKwkJfSBlbHNlIGlmIChuZWVkc19yZmM4MjJfcXVvdGluZyhuYW1lYnVmLCBuYW1lbGVuKSkgewogCQkJc3RydWN0IHN0cmJ1ZiBxdW90ZWQgPSBTVFJCVUZfSU5JVDsKLQkJCWFkZF9yZmM4MjJfcXVvdGVkKCZxdW90ZWQsIGxpbmUsIGRpc3BsYXlfbmFtZV9sZW5ndGgpOworCQkJYWRkX3JmYzgyMl9xdW90ZWQoJnF1b3RlZCwgbmFtZWJ1ZiwgbmFtZWxlbik7CiAJCQlzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc2IsIHF1b3RlZC5idWYsIHF1b3RlZC5sZW4sCiAJCQkJCQkJLTYsIDEsIG1heF9sZW5ndGgpOwogCQkJc3RyYnVmX3JlbGVhc2UoJnF1b3RlZCk7CiAJCX0gZWxzZSB7Ci0JCQlzdHJidWZfYWRkX3dyYXBwZWRfYnl0ZXMoc2IsIGxpbmUsIGRpc3BsYXlfbmFtZV9sZW5ndGgsCi0JCQkJCQkJLTYsIDEsIG1heF9sZW5ndGgpOworCQkJc3RyYnVmX2FkZF93cmFwcGVkX2J5dGVzKHNiLCBuYW1lYnVmLCBuYW1lbGVuLAorCQkJCQkJIC02LCAxLCBtYXhfbGVuZ3RoKTsKIAkJfQotCQlpZiAobmFtZWxlbiAtIGRpc3BsYXlfbmFtZV9sZW5ndGggKyBsYXN0X2xpbmVfbGVuZ3RoKHNiKSA+IG1heF9sZW5ndGgpIHsKKworCQlpZiAobWF4X2xlbmd0aCA8CisJCSAgICBsYXN0X2xpbmVfbGVuZ3RoKHNiKSArIHN0cmxlbigiIDwiKSArIG1haWxsZW4gKyBzdHJsZW4oIj4iKSkKIAkJCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7Ci0JCQlpZiAoIWlzc3BhY2UobmFtZV90YWlsWzBdKSkKLQkJCQlzdHJidWZfYWRkY2goc2IsICcgJyk7Ci0JCX0KLQkJc3RyYnVmX2FkZChzYiwgbmFtZV90YWlsLCBuYW1lbGVuIC0gZGlzcGxheV9uYW1lX2xlbmd0aCk7Ci0JCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CisJCXN0cmJ1Zl9hZGRmKHNiLCAiIDwlLipzPlxuIiwgKGludCltYWlsbGVuLCBtYWlsYnVmKTsKIAl9IGVsc2UgewotCQlzdHJidWZfYWRkZihzYiwgIiVzOiAlLipzJS4qc1xuIiwgd2hhdCwKLQkJCSAgICAgIChwcC0+Zm10ID09IENNSVRfRk1UX0ZVTExFUikgPyA0IDogMCwKLQkJCSAgICAgICIgICAgIiwgbmFtZWxlbiwgbGluZSk7CisJCXN0cmJ1Zl9hZGRmKHNiLCAiJXM6ICUuKnMlLipzIDwlLipzPlxuIiwgd2hhdCwKKwkJCSAgICAocHAtPmZtdCA9PSBDTUlUX0ZNVF9GVUxMRVIpID8gNCA6IDAsICIgICAgIiwKKwkJCSAgICAoaW50KW5hbWVsZW4sIG5hbWVidWYsIChpbnQpbWFpbGxlbiwgbWFpbGJ1Zik7CiAJfQorCiAJc3dpdGNoIChwcC0+Zm10KSB7CiAJY2FzZSBDTUlUX0ZNVF9NRURJVU06Ci0JCXN0cmJ1Zl9hZGRmKHNiLCAiRGF0ZTogICAlc1xuIiwgc2hvd19kYXRlKHRpbWUsIHR6LCBwcC0+ZGF0ZV9tb2RlKSk7CisJCXN0cmJ1Zl9hZGRmKHNiLCAiRGF0ZTogICAlc1xuIiwKKwkJCSAgICBzaG93X2lkZW50X2RhdGUoJmlkZW50LCBwcC0+ZGF0ZV9tb2RlKSk7CiAJCWJyZWFrOwogCWNhc2UgQ01JVF9GTVRfRU1BSUw6Ci0JCXN0cmJ1Zl9hZGRmKHNiLCAiRGF0ZTogJXNcbiIsIHNob3dfZGF0ZSh0aW1lLCB0eiwgREFURV9SRkMyODIyKSk7CisJCXN0cmJ1Zl9hZGRmKHNiLCAiRGF0ZTogJXNcbiIsCisJCQkgICAgc2hvd19pZGVudF9kYXRlKCZpZGVudCwgREFURV9SRkMyODIyKSk7CiAJCWJyZWFrOwogCWNhc2UgQ01JVF9GTVRfRlVMTEVSOgotCQlzdHJidWZfYWRkZihzYiwgIiVzRGF0ZTogJXNcbiIsIHdoYXQsIHNob3dfZGF0ZSh0aW1lLCB0eiwgcHAtPmRhdGVfbW9kZSkpOworCQlzdHJidWZfYWRkZihzYiwgIiVzRGF0ZTogJXNcbiIsIHdoYXQsCisJCQkgICAgc2hvd19pZGVudF9kYXRlKCZpZGVudCwgcHAtPmRhdGVfbW9kZSkpOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQkvKiBub3RpbicgKi8KQEAgLTUwMSwxMCArNTI1LDExIEBACiAJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKIH0KIAotc3RhdGljIGNoYXIgKmdldF9oZWFkZXIoY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0LCBjb25zdCBjaGFyICprZXkpCitzdGF0aWMgY2hhciAqZ2V0X2hlYWRlcihjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKm1zZywKKwkJCWNvbnN0IGNoYXIgKmtleSkKIHsKIAlpbnQga2V5X2xlbiA9IHN0cmxlbihrZXkpOwotCWNvbnN0IGNoYXIgKmxpbmUgPSBjb21taXQtPmJ1ZmZlcjsKKwljb25zdCBjaGFyICpsaW5lID0gbXNnOwogCiAJd2hpbGUgKGxpbmUpIHsKIAkJY29uc3QgY2hhciAqZW9sID0gc3RyY2hyKGxpbmUsICdcbicpLCAqbmV4dDsKQEAgLTU2MCwzMyArNTg1LDk0IEBACiB9CiAKIGNoYXIgKmxvZ21zZ19yZWVuY29kZShjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCisJCSAgICAgIGNoYXIgKipjb21taXRfZW5jb2RpbmcsCiAJCSAgICAgIGNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZykKIHsKIAlzdGF0aWMgY29uc3QgY2hhciAqdXRmOCA9ICJVVEYtOCI7CiAJY29uc3QgY2hhciAqdXNlX2VuY29kaW5nOwogCWNoYXIgKmVuY29kaW5nOworCWNoYXIgKm1zZyA9IGNvbW1pdC0+YnVmZmVyOwogCWNoYXIgKm91dDsKIAotCWlmICghb3V0cHV0X2VuY29kaW5nIHx8ICEqb3V0cHV0X2VuY29kaW5nKQotCQlyZXR1cm4gTlVMTDsKLQllbmNvZGluZyA9IGdldF9oZWFkZXIoY29tbWl0LCAiZW5jb2RpbmciKTsKKwlpZiAoIW1zZykgeworCQllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKworCQltc2cgPSByZWFkX3NoYTFfZmlsZShjb21taXQtPm9iamVjdC5zaGExLCAmdHlwZSwgJnNpemUpOworCQlpZiAoIW1zZykKKwkJCWRpZSgiQ2Fubm90IHJlYWQgY29tbWl0IG9iamVjdCAlcyIsCisJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOworCQlpZiAodHlwZSAhPSBPQkpfQ09NTUlUKQorCQkJZGllKCJFeHBlY3RlZCBjb21taXQgZm9yICclcycsIGdvdCAlcyIsCisJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSksIHR5cGVuYW1lKHR5cGUpKTsKKwl9CisKKwlpZiAoIW91dHB1dF9lbmNvZGluZyB8fCAhKm91dHB1dF9lbmNvZGluZykgeworCQlpZiAoY29tbWl0X2VuY29kaW5nKQorCQkJKmNvbW1pdF9lbmNvZGluZyA9CisJCQkJZ2V0X2hlYWRlcihjb21taXQsIG1zZywgImVuY29kaW5nIik7CisJCXJldHVybiBtc2c7CisJfQorCWVuY29kaW5nID0gZ2V0X2hlYWRlcihjb21taXQsIG1zZywgImVuY29kaW5nIik7CisJaWYgKGNvbW1pdF9lbmNvZGluZykKKwkJKmNvbW1pdF9lbmNvZGluZyA9IGVuY29kaW5nOwogCXVzZV9lbmNvZGluZyA9IGVuY29kaW5nID8gZW5jb2RpbmcgOiB1dGY4OwotCWlmIChzYW1lX2VuY29kaW5nKHVzZV9lbmNvZGluZywgb3V0cHV0X2VuY29kaW5nKSkKLQkJaWYgKGVuY29kaW5nKSAvKiB3ZSdsbCBzdHJpcCBlbmNvZGluZyBoZWFkZXIgbGF0ZXIgKi8KLQkJCW91dCA9IHhzdHJkdXAoY29tbWl0LT5idWZmZXIpOwotCQllbHNlCi0JCQlyZXR1cm4gTlVMTDsgLyogbm90aGluZyB0byBkbyAqLwotCWVsc2UKLQkJb3V0ID0gcmVlbmNvZGVfc3RyaW5nKGNvbW1pdC0+YnVmZmVyLAotCQkJCSAgICAgIG91dHB1dF9lbmNvZGluZywgdXNlX2VuY29kaW5nKTsKKwlpZiAoc2FtZV9lbmNvZGluZyh1c2VfZW5jb2RpbmcsIG91dHB1dF9lbmNvZGluZykpIHsKKwkJLyoKKwkJICogTm8gZW5jb2Rpbmcgd29yayB0byBiZSBkb25lLiBJZiB3ZSBoYXZlIG5vIGVuY29kaW5nIGhlYWRlcgorCQkgKiBhdCBhbGwsIHRoZW4gdGhlcmUncyBub3RoaW5nIHRvIGRvLCBhbmQgd2UgY2FuIHJldHVybiB0aGUKKwkJICogbWVzc2FnZSB2ZXJiYXRpbSAod2hldGhlciBuZXdseSBhbGxvY2F0ZWQgb3Igbm90KS4KKwkJICovCisJCWlmICghZW5jb2RpbmcpCisJCQlyZXR1cm4gbXNnOworCisJCS8qCisJCSAqIE90aGVyd2lzZSwgd2Ugc3RpbGwgd2FudCB0byBtdW5nZSB0aGUgZW5jb2RpbmcgaGVhZGVyIGluIHRoZQorCQkgKiByZXN1bHQsIHdoaWNoIHdpbGwgYmUgZG9uZSBieSBtb2RpZnlpbmcgdGhlIGJ1ZmZlci4gSWYgd2UKKwkJICogYXJlIHVzaW5nIGEgZnJlc2ggY29weSwgd2UgY2FuIHJldXNlIGl0LiBCdXQgaWYgd2UgYXJlIHVzaW5nCisJCSAqIHRoZSBjYWNoZWQgY29weSBmcm9tIGNvbW1pdC0+YnVmZmVyLCB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBpdAorCQkgKiB0byBhdm9pZCBtdW5naW5nIGNvbW1pdC0+YnVmZmVyLgorCQkgKi8KKwkJb3V0ID0gbXNnOworCQlpZiAob3V0ID09IGNvbW1pdC0+YnVmZmVyKQorCQkJb3V0ID0geHN0cmR1cChvdXQpOworCX0KKwllbHNlIHsKKwkJLyoKKwkJICogVGhlcmUncyBhY3R1YWwgZW5jb2Rpbmcgd29yayB0byBkby4gRG8gdGhlIHJlZW5jb2RpbmcsIHdoaWNoCisJCSAqIHN0aWxsIGxlYXZlcyB0aGUgaGVhZGVyIHRvIGJlIHJlcGxhY2VkIGluIHRoZSBuZXh0IHN0ZXAuIEF0CisJCSAqIHRoaXMgcG9pbnQsIHdlIGFyZSBkb25lIHdpdGggbXNnLiBJZiB3ZSBhbGxvY2F0ZWQgYSBmcmVzaAorCQkgKiBjb3B5LCB3ZSBjYW4gZnJlZSBpdC4KKwkJICovCisJCW91dCA9IHJlZW5jb2RlX3N0cmluZyhtc2csIG91dHB1dF9lbmNvZGluZywgdXNlX2VuY29kaW5nKTsKKwkJaWYgKG91dCAmJiBtc2cgIT0gY29tbWl0LT5idWZmZXIpCisJCQlmcmVlKG1zZyk7CisJfQorCisJLyoKKwkgKiBUaGlzIHJlcGxhY2VtZW50IGFjdHVhbGx5IGNvbnN1bWVzIHRoZSBidWZmZXIgd2UgaGFuZCBpdCwgc28gd2UgZG8KKwkgKiBub3QgaGF2ZSB0byB3b3JyeSBhYm91dCBmcmVlaW5nIHRoZSBvbGQgIm91dCIgaGVyZS4KKwkgKi8KIAlpZiAob3V0KQogCQlvdXQgPSByZXBsYWNlX2VuY29kaW5nX2hlYWRlcihvdXQsIG91dHB1dF9lbmNvZGluZyk7CiAKLQlmcmVlKGVuY29kaW5nKTsKLQlyZXR1cm4gb3V0OworCWlmICghY29tbWl0X2VuY29kaW5nKQorCQlmcmVlKGVuY29kaW5nKTsKKwkvKgorCSAqIElmIHRoZSByZS1lbmNvZGluZyBmYWlsZWQsIG91dCBtaWdodCBiZSBOVUxMIGhlcmU7IGluIHRoYXQKKwkgKiBjYXNlIHdlIGp1c3QgcmV0dXJuIHRoZSBjb21taXQgbWVzc2FnZSB2ZXJiYXRpbS4KKwkgKi8KKwlyZXR1cm4gb3V0ID8gb3V0IDogbXNnOwogfQogCi1zdGF0aWMgaW50IG1haWxtYXBfbmFtZShjaGFyICplbWFpbCwgaW50IGVtYWlsX2xlbiwgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuKQordm9pZCBsb2dtc2dfZnJlZShjaGFyICptc2csIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlpZiAobXNnICE9IGNvbW1pdC0+YnVmZmVyKQorCQlmcmVlKG1zZyk7Cit9CisKK3N0YXRpYyBpbnQgbWFpbG1hcF9uYW1lKGNvbnN0IGNoYXIgKiplbWFpbCwgc2l6ZV90ICplbWFpbF9sZW4sCisJCQljb25zdCBjaGFyICoqbmFtZSwgc2l6ZV90ICpuYW1lX2xlbikKIHsKIAlzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0ICptYWlsX21hcDsKIAlpZiAoIW1haWxfbWFwKSB7CkBAIC02MDEsNjggKzY4Nyw0OSBAQAogewogCS8qIGN1cnJlbnRseSBhbGwgcGxhY2Vob2xkZXJzIGhhdmUgc2FtZSBsZW5ndGggKi8KIAljb25zdCBpbnQgcGxhY2Vob2xkZXJfbGVuID0gMjsKLQlpbnQgdHo7Ci0JdW5zaWduZWQgbG9uZyBkYXRlID0gMDsKLQljaGFyIHBlcnNvbl9uYW1lWzEwMjRdOwotCWNoYXIgcGVyc29uX21haWxbMTAyNF07CiAJc3RydWN0IGlkZW50X3NwbGl0IHM7Ci0JY29uc3QgY2hhciAqbmFtZV9zdGFydCwgKm5hbWVfZW5kLCAqbWFpbF9zdGFydCwgKm1haWxfZW5kOworCWNvbnN0IGNoYXIgKm5hbWUsICptYWlsOworCXNpemVfdCBtYWlsbGVuLCBuYW1lbGVuOwogCiAJaWYgKHNwbGl0X2lkZW50X2xpbmUoJnMsIG1zZywgbGVuKSA8IDApCiAJCWdvdG8gc2tpcDsKIAotCW5hbWVfc3RhcnQgPSBzLm5hbWVfYmVnaW47Ci0JbmFtZV9lbmQgPSBzLm5hbWVfZW5kOwotCW1haWxfc3RhcnQgPSBzLm1haWxfYmVnaW47Ci0JbWFpbF9lbmQgPSBzLm1haWxfZW5kOworCW5hbWUgPSBzLm5hbWVfYmVnaW47CisJbmFtZWxlbiA9IHMubmFtZV9lbmQgLSBzLm5hbWVfYmVnaW47CisJbWFpbCA9IHMubWFpbF9iZWdpbjsKKwltYWlsbGVuID0gcy5tYWlsX2VuZCAtIHMubWFpbF9iZWdpbjsKIAotCWlmIChwYXJ0ID09ICdOJyB8fCBwYXJ0ID09ICdFJykgeyAvKiBtYWlsbWFwIGxvb2t1cCAqLwotCQlzbnByaW50ZihwZXJzb25fbmFtZSwgc2l6ZW9mKHBlcnNvbl9uYW1lKSwgIiUuKnMiLAotCQkJIChpbnQpKG5hbWVfZW5kIC0gbmFtZV9zdGFydCksIG5hbWVfc3RhcnQpOwotCQlzbnByaW50ZihwZXJzb25fbWFpbCwgc2l6ZW9mKHBlcnNvbl9tYWlsKSwgIiUuKnMiLAotCQkJIChpbnQpKG1haWxfZW5kIC0gbWFpbF9zdGFydCksIG1haWxfc3RhcnQpOwotCQltYWlsbWFwX25hbWUocGVyc29uX21haWwsIHNpemVvZihwZXJzb25fbWFpbCksIHBlcnNvbl9uYW1lLCBzaXplb2YocGVyc29uX25hbWUpKTsKLQkJbmFtZV9zdGFydCA9IHBlcnNvbl9uYW1lOwotCQluYW1lX2VuZCA9IG5hbWVfc3RhcnQgKyBzdHJsZW4ocGVyc29uX25hbWUpOwotCQltYWlsX3N0YXJ0ID0gcGVyc29uX21haWw7Ci0JCW1haWxfZW5kID0gbWFpbF9zdGFydCArICBzdHJsZW4ocGVyc29uX21haWwpOwotCX0KKwlpZiAocGFydCA9PSAnTicgfHwgcGFydCA9PSAnRScpIC8qIG1haWxtYXAgbG9va3VwICovCisJCW1haWxtYXBfbmFtZSgmbWFpbCwgJm1haWxsZW4sICZuYW1lLCAmbmFtZWxlbik7CiAJaWYgKHBhcnQgPT0gJ24nIHx8IHBhcnQgPT0gJ04nKSB7CS8qIG5hbWUgKi8KLQkJc3RyYnVmX2FkZChzYiwgbmFtZV9zdGFydCwgbmFtZV9lbmQtbmFtZV9zdGFydCk7CisJCXN0cmJ1Zl9hZGQoc2IsIG5hbWUsIG5hbWVsZW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KIAlpZiAocGFydCA9PSAnZScgfHwgcGFydCA9PSAnRScpIHsJLyogZW1haWwgKi8KLQkJc3RyYnVmX2FkZChzYiwgbWFpbF9zdGFydCwgbWFpbF9lbmQtbWFpbF9zdGFydCk7CisJCXN0cmJ1Zl9hZGQoc2IsIG1haWwsIG1haWxsZW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KIAogCWlmICghcy5kYXRlX2JlZ2luKQogCQlnb3RvIHNraXA7CiAKLQlkYXRlID0gc3RydG91bChzLmRhdGVfYmVnaW4sIE5VTEwsIDEwKTsKLQogCWlmIChwYXJ0ID09ICd0JykgewkvKiBkYXRlLCBVTklYIHRpbWVzdGFtcCAqLwogCQlzdHJidWZfYWRkKHNiLCBzLmRhdGVfYmVnaW4sIHMuZGF0ZV9lbmQgLSBzLmRhdGVfYmVnaW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KIAotCS8qIHBhcnNlIHR6ICovCi0JdHogPSBzdHJ0b3VsKHMudHpfYmVnaW4gKyAxLCBOVUxMLCAxMCk7Ci0JaWYgKCpzLnR6X2JlZ2luID09ICctJykKLQkJdHogPSAtdHo7Ci0KIAlzd2l0Y2ggKHBhcnQpIHsKIAljYXNlICdkJzoJLyogZGF0ZSAqLwotCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2RhdGUoZGF0ZSwgdHosIGRtb2RlKSk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIHNob3dfaWRlbnRfZGF0ZSgmcywgZG1vZGUpKTsKIAkJcmV0dXJuIHBsYWNlaG9sZGVyX2xlbjsKIAljYXNlICdEJzoJLyogZGF0ZSwgUkZDMjgyMiBzdHlsZSAqLwotCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2RhdGUoZGF0ZSwgdHosIERBVEVfUkZDMjgyMikpOworCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2lkZW50X2RhdGUoJnMsIERBVEVfUkZDMjgyMikpOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCWNhc2UgJ3InOgkvKiBkYXRlLCByZWxhdGl2ZSAqLwotCQlzdHJidWZfYWRkc3RyKHNiLCBzaG93X2RhdGUoZGF0ZSwgdHosIERBVEVfUkVMQVRJVkUpKTsKKwkJc3RyYnVmX2FkZHN0cihzYiwgc2hvd19pZGVudF9kYXRlKCZzLCBEQVRFX1JFTEFUSVZFKSk7CiAJCXJldHVybiBwbGFjZWhvbGRlcl9sZW47CiAJY2FzZSAnaSc6CS8qIGRhdGUsIElTTyA4NjAxICovCi0JCXN0cmJ1Zl9hZGRzdHIoc2IsIHNob3dfZGF0ZShkYXRlLCB0eiwgREFURV9JU084NjAxKSk7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIHNob3dfaWRlbnRfZGF0ZSgmcywgREFURV9JU084NjAxKSk7CiAJCXJldHVybiBwbGFjZWhvbGRlcl9sZW47CiAJfQogCkBAIC02ODQsMjQgKzc1MSwzOCBAQAogCXNpemVfdCBsZW47CiB9OwogCitlbnVtIGZsdXNoX3R5cGUgeworCW5vX2ZsdXNoLAorCWZsdXNoX3JpZ2h0LAorCWZsdXNoX2xlZnQsCisJZmx1c2hfbGVmdF9hbmRfc3RlYWwsCisJZmx1c2hfYm90aAorfTsKKworZW51bSB0cnVuY190eXBlIHsKKwl0cnVuY19ub25lLAorCXRydW5jX2xlZnQsCisJdHJ1bmNfbWlkZGxlLAorCXRydW5jX3JpZ2h0Cit9OworCiBzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0IHsKIAljb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAJY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcmV0dHlfY3R4OwogCXVuc2lnbmVkIGNvbW1pdF9oZWFkZXJfcGFyc2VkOjE7CiAJdW5zaWduZWQgY29tbWl0X21lc3NhZ2VfcGFyc2VkOjE7Ci0JdW5zaWduZWQgY29tbWl0X3NpZ25hdHVyZV9wYXJzZWQ6MTsKLQlzdHJ1Y3QgewotCQljaGFyICpncGdfb3V0cHV0OwotCQljaGFyIGdvb2RfYmFkOwotCQljaGFyICpzaWduZXI7Ci0JfSBzaWduYXR1cmU7CisJc3RydWN0IHNpZ25hdHVyZV9jaGVjayBzaWduYXR1cmVfY2hlY2s7CisJZW51bSBmbHVzaF90eXBlIGZsdXNoX3R5cGU7CisJZW51bSB0cnVuY190eXBlIHRydW5jYXRlOwogCWNoYXIgKm1lc3NhZ2U7CisJY2hhciAqY29tbWl0X2VuY29kaW5nOwogCXNpemVfdCB3aWR0aCwgaW5kZW50MSwgaW5kZW50MjsKKwlpbnQgYXV0b19jb2xvcjsKKwlpbnQgcGFkZGluZzsKIAogCS8qIFRoZXNlIG9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29tbWl0IG1lc3NhZ2UuICovCiAJc3RydWN0IGNodW5rIGF1dGhvcjsKIAlzdHJ1Y3QgY2h1bmsgY29tbWl0dGVyOwotCXN0cnVjdCBjaHVuayBlbmNvZGluZzsKIAlzaXplX3QgbWVzc2FnZV9vZmY7CiAJc2l6ZV90IHN1YmplY3Rfb2ZmOwogCXNpemVfdCBib2R5X29mZjsKQEAgLTc0OCw5ICs4MjksNiBAQAogCQl9IGVsc2UgaWYgKCFwcmVmaXhjbXAobXNnICsgaSwgImNvbW1pdHRlciAiKSkgewogCQkJY29udGV4dC0+Y29tbWl0dGVyLm9mZiA9IGkgKyAxMDsKIAkJCWNvbnRleHQtPmNvbW1pdHRlci5sZW4gPSBlb2wgLSBpIC0gMTA7Ci0JCX0gZWxzZSBpZiAoIXByZWZpeGNtcChtc2cgKyBpLCAiZW5jb2RpbmcgIikpIHsKLQkJCWNvbnRleHQtPmVuY29kaW5nLm9mZiA9IGkgKyA5OwotCQkJY29udGV4dC0+ZW5jb2RpbmcubGVuID0gZW9sIC0gaSAtIDk7CiAJCX0KIAkJaSA9IGVvbDsKIAl9CkBAIC04MzEsMjMgKzkwOSw2IEBACiAJYy0+Y29tbWl0X21lc3NhZ2VfcGFyc2VkID0gMTsKIH0KIAotc3RhdGljIHZvaWQgZm9ybWF0X2RlY29yYXRpb24oc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCkKLXsKLQlzdHJ1Y3QgbmFtZV9kZWNvcmF0aW9uICpkOwotCWNvbnN0IGNoYXIgKnByZWZpeCA9ICIgKCI7Ci0KLQlsb2FkX3JlZl9kZWNvcmF0aW9ucyhERUNPUkFURV9TSE9SVF9SRUZTKTsKLQlkID0gbG9va3VwX2RlY29yYXRpb24oJm5hbWVfZGVjb3JhdGlvbiwgJmNvbW1pdC0+b2JqZWN0KTsKLQl3aGlsZSAoZCkgewotCQlzdHJidWZfYWRkc3RyKHNiLCBwcmVmaXgpOwotCQlwcmVmaXggPSAiLCAiOwotCQlzdHJidWZfYWRkc3RyKHNiLCBkLT5uYW1lKTsKLQkJZCA9IGQtPm5leHQ7Ci0JfQotCWlmIChwcmVmaXhbMF0gPT0gJywnKQotCQlzdHJidWZfYWRkY2goc2IsICcpJyk7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0cmJ1Zl93cmFwKHN0cnVjdCBzdHJidWYgKnNiLCBzaXplX3QgcG9zLAogCQkJc2l6ZV90IHdpZHRoLCBzaXplX3QgaW5kZW50MSwgc2l6ZV90IGluZGVudDIpCiB7CkBAIC04NzcsNTkgKzkzOCw2IEBACiAJYy0+aW5kZW50MiA9IG5ld19pbmRlbnQyOwogfQogCi1zdGF0aWMgc3RydWN0IHsKLQljaGFyIHJlc3VsdDsKLQljb25zdCBjaGFyICpjaGVjazsKLX0gc2lnbmF0dXJlX2NoZWNrW10gPSB7Ci0JeyAnRycsICI6IEdvb2Qgc2lnbmF0dXJlIGZyb20gIiB9LAotCXsgJ0InLCAiOiBCQUQgc2lnbmF0dXJlIGZyb20gIiB9LAotfTsKLQotc3RhdGljIHZvaWQgcGFyc2Vfc2lnbmF0dXJlX2xpbmVzKHN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKmN0eCkKLXsKLQljb25zdCBjaGFyICpidWYgPSBjdHgtPnNpZ25hdHVyZS5ncGdfb3V0cHV0OwotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2lnbmF0dXJlX2NoZWNrKTsgaSsrKSB7Ci0JCWNvbnN0IGNoYXIgKmZvdW5kID0gc3Ryc3RyKGJ1Ziwgc2lnbmF0dXJlX2NoZWNrW2ldLmNoZWNrKTsKLQkJY29uc3QgY2hhciAqbmV4dDsKLQkJaWYgKCFmb3VuZCkKLQkJCWNvbnRpbnVlOwotCQljdHgtPnNpZ25hdHVyZS5nb29kX2JhZCA9IHNpZ25hdHVyZV9jaGVja1tpXS5yZXN1bHQ7Ci0JCWZvdW5kICs9IHN0cmxlbihzaWduYXR1cmVfY2hlY2tbaV0uY2hlY2spOwotCQluZXh0ID0gc3RyY2hybnVsKGZvdW5kLCAnXG4nKTsKLQkJY3R4LT5zaWduYXR1cmUuc2lnbmVyID0geG1lbWR1cHooZm91bmQsIG5leHQgLSBmb3VuZCk7Ci0JCWJyZWFrOwotCX0KLX0KLQotc3RhdGljIHZvaWQgcGFyc2VfY29tbWl0X3NpZ25hdHVyZShzdHJ1Y3QgZm9ybWF0X2NvbW1pdF9jb250ZXh0ICpjdHgpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBwYXlsb2FkID0gU1RSQlVGX0lOSVQ7Ci0Jc3RydWN0IHN0cmJ1ZiBzaWduYXR1cmUgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmIGdwZ19vdXRwdXQgPSBTVFJCVUZfSU5JVDsKLQlpbnQgc3RhdHVzOwotCi0JY3R4LT5jb21taXRfc2lnbmF0dXJlX3BhcnNlZCA9IDE7Ci0KLQlpZiAocGFyc2Vfc2lnbmVkX2NvbW1pdChjdHgtPmNvbW1pdC0+b2JqZWN0LnNoYTEsCi0JCQkJJnBheWxvYWQsICZzaWduYXR1cmUpIDw9IDApCi0JCWdvdG8gb3V0OwotCXN0YXR1cyA9IHZlcmlmeV9zaWduZWRfYnVmZmVyKHBheWxvYWQuYnVmLCBwYXlsb2FkLmxlbiwKLQkJCQkgICAgICBzaWduYXR1cmUuYnVmLCBzaWduYXR1cmUubGVuLAotCQkJCSAgICAgICZncGdfb3V0cHV0KTsKLQlpZiAoc3RhdHVzICYmICFncGdfb3V0cHV0LmxlbikKLQkJZ290byBvdXQ7Ci0JY3R4LT5zaWduYXR1cmUuZ3BnX291dHB1dCA9IHN0cmJ1Zl9kZXRhY2goJmdwZ19vdXRwdXQsIE5VTEwpOwotCXBhcnNlX3NpZ25hdHVyZV9saW5lcyhjdHgpOwotCi0gb3V0OgotCXN0cmJ1Zl9yZWxlYXNlKCZncGdfb3V0cHV0KTsKLQlzdHJidWZfcmVsZWFzZSgmcGF5bG9hZCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJnNpZ25hdHVyZSk7Ci19Ci0KLQogc3RhdGljIGludCBmb3JtYXRfcmVmbG9nX3BlcnNvbihzdHJ1Y3Qgc3RyYnVmICpzYiwKIAkJCQljaGFyIHBhcnQsCiAJCQkJc3RydWN0IHJlZmxvZ193YWxrX2luZm8gKmxvZywKQEAgLTk0Nyw3ICs5NTUsMTEyIEBACiAJcmV0dXJuIGZvcm1hdF9wZXJzb25fcGFydChzYiwgcGFydCwgaWRlbnQsIHN0cmxlbihpZGVudCksIGRtb2RlKTsKIH0KIAotc3RhdGljIHNpemVfdCBmb3JtYXRfY29tbWl0X29uZShzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCitzdGF0aWMgc2l6ZV90IHBhcnNlX2NvbG9yKHN0cnVjdCBzdHJidWYgKnNiLCAvKiBpbiBVVEYtOCAqLworCQkJICBjb25zdCBjaGFyICpwbGFjZWhvbGRlciwKKwkJCSAgc3RydWN0IGZvcm1hdF9jb21taXRfY29udGV4dCAqYykKK3sKKwlpZiAocGxhY2Vob2xkZXJbMV0gPT0gJygnKSB7CisJCWNvbnN0IGNoYXIgKmJlZ2luID0gcGxhY2Vob2xkZXIgKyAyOworCQljb25zdCBjaGFyICplbmQgPSBzdHJjaHIoYmVnaW4sICcpJyk7CisJCWNoYXIgY29sb3JbQ09MT1JfTUFYTEVOXTsKKworCQlpZiAoIWVuZCkKKwkJCXJldHVybiAwOworCQlpZiAoIXByZWZpeGNtcChiZWdpbiwgImF1dG8sIikpIHsKKwkJCWlmICghd2FudF9jb2xvcihjLT5wcmV0dHlfY3R4LT5jb2xvcikpCisJCQkJcmV0dXJuIGVuZCAtIHBsYWNlaG9sZGVyICsgMTsKKwkJCWJlZ2luICs9IDU7CisJCX0KKwkJY29sb3JfcGFyc2VfbWVtKGJlZ2luLAorCQkJCWVuZCAtIGJlZ2luLAorCQkJCSItLXByZXR0eSBmb3JtYXQiLCBjb2xvcik7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGNvbG9yKTsKKwkJcmV0dXJuIGVuZCAtIHBsYWNlaG9sZGVyICsgMTsKKwl9CisJaWYgKCFwcmVmaXhjbXAocGxhY2Vob2xkZXIgKyAxLCAicmVkIikpIHsKKwkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX1JFRCk7CisJCXJldHVybiA0OworCX0gZWxzZSBpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJncmVlbiIpKSB7CisJCXN0cmJ1Zl9hZGRzdHIoc2IsIEdJVF9DT0xPUl9HUkVFTik7CisJCXJldHVybiA2OworCX0gZWxzZSBpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJibHVlIikpIHsKKwkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX0JMVUUpOworCQlyZXR1cm4gNTsKKwl9IGVsc2UgaWYgKCFwcmVmaXhjbXAocGxhY2Vob2xkZXIgKyAxLCAicmVzZXQiKSkgeworCQlzdHJidWZfYWRkc3RyKHNiLCBHSVRfQ09MT1JfUkVTRVQpOworCQlyZXR1cm4gNjsKKwl9IGVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzaXplX3QgcGFyc2VfcGFkZGluZ19wbGFjZWhvbGRlcihzdHJ1Y3Qgc3RyYnVmICpzYiwKKwkJCQkJY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCisJCQkJCXN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKmMpCit7CisJY29uc3QgY2hhciAqY2ggPSBwbGFjZWhvbGRlcjsKKwllbnVtIGZsdXNoX3R5cGUgZmx1c2hfdHlwZTsKKwlpbnQgdG9fY29sdW1uID0gMDsKKworCXN3aXRjaCAoKmNoKyspIHsKKwljYXNlICc8JzoKKwkJZmx1c2hfdHlwZSA9IGZsdXNoX3JpZ2h0OworCQlicmVhazsKKwljYXNlICc+JzoKKwkJaWYgKCpjaCA9PSAnPCcpIHsKKwkJCWZsdXNoX3R5cGUgPSBmbHVzaF9ib3RoOworCQkJY2grKzsKKwkJfSBlbHNlIGlmICgqY2ggPT0gJz4nKSB7CisJCQlmbHVzaF90eXBlID0gZmx1c2hfbGVmdF9hbmRfc3RlYWw7CisJCQljaCsrOworCQl9IGVsc2UKKwkJCWZsdXNoX3R5cGUgPSBmbHVzaF9sZWZ0OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKKwl9CisKKwkvKiB0aGUgbmV4dCB2YWx1ZSBtZWFucyAid2lkZSBlbm91Z2ggdG8gdGhhdCBjb2x1bW4iICovCisJaWYgKCpjaCA9PSAnfCcpIHsKKwkJdG9fY29sdW1uID0gMTsKKwkJY2grKzsKKwl9CisKKwlpZiAoKmNoID09ICcoJykgeworCQljb25zdCBjaGFyICpzdGFydCA9IGNoICsgMTsKKwkJY29uc3QgY2hhciAqZW5kID0gc3RhcnQgKyBzdHJjc3BuKHN0YXJ0LCAiLCkiKTsKKwkJY2hhciAqbmV4dDsKKwkJaW50IHdpZHRoOworCQlpZiAoIWVuZCB8fCBlbmQgPT0gc3RhcnQpCisJCQlyZXR1cm4gMDsKKwkJd2lkdGggPSBzdHJ0b3VsKHN0YXJ0LCAmbmV4dCwgMTApOworCQlpZiAobmV4dCA9PSBzdGFydCB8fCB3aWR0aCA9PSAwKQorCQkJcmV0dXJuIDA7CisJCWMtPnBhZGRpbmcgPSB0b19jb2x1bW4gPyAtd2lkdGggOiB3aWR0aDsKKwkJYy0+Zmx1c2hfdHlwZSA9IGZsdXNoX3R5cGU7CisKKwkJaWYgKCplbmQgPT0gJywnKSB7CisJCQlzdGFydCA9IGVuZCArIDE7CisJCQllbmQgPSBzdHJjaHIoc3RhcnQsICcpJyk7CisJCQlpZiAoIWVuZCB8fCBlbmQgPT0gc3RhcnQpCisJCQkJcmV0dXJuIDA7CisJCQlpZiAoIXByZWZpeGNtcChzdGFydCwgInRydW5jKSIpKQorCQkJCWMtPnRydW5jYXRlID0gdHJ1bmNfcmlnaHQ7CisJCQllbHNlIGlmICghcHJlZml4Y21wKHN0YXJ0LCAibHRydW5jKSIpKQorCQkJCWMtPnRydW5jYXRlID0gdHJ1bmNfbGVmdDsKKwkJCWVsc2UgaWYgKCFwcmVmaXhjbXAoc3RhcnQsICJtdHJ1bmMpIikpCisJCQkJYy0+dHJ1bmNhdGUgPSB0cnVuY19taWRkbGU7CisJCQllbHNlCisJCQkJcmV0dXJuIDA7CisJCX0gZWxzZQorCQkJYy0+dHJ1bmNhdGUgPSB0cnVuY19ub25lOworCisJCXJldHVybiBlbmQgLSBwbGFjZWhvbGRlciArIDE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc2l6ZV90IGZvcm1hdF9jb21taXRfb25lKHN0cnVjdCBzdHJidWYgKnNiLCAvKiBpbiBVVEYtOCAqLworCQkJCWNvbnN0IGNoYXIgKnBsYWNlaG9sZGVyLAogCQkJCXZvaWQgKmNvbnRleHQpCiB7CiAJc3RydWN0IGZvcm1hdF9jb21taXRfY29udGV4dCAqYyA9IGNvbnRleHQ7CkBAIC05NTksMzEgKzEwNzIsMjAgQEAKIAkvKiB0aGVzZSBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGNvbW1pdCAqLwogCXN3aXRjaCAocGxhY2Vob2xkZXJbMF0pIHsKIAljYXNlICdDJzoKLQkJaWYgKHBsYWNlaG9sZGVyWzFdID09ICcoJykgewotCQkJY29uc3QgY2hhciAqZW5kID0gc3RyY2hyKHBsYWNlaG9sZGVyICsgMiwgJyknKTsKLQkJCWNoYXIgY29sb3JbQ09MT1JfTUFYTEVOXTsKLQkJCWlmICghZW5kKQotCQkJCXJldHVybiAwOwotCQkJY29sb3JfcGFyc2VfbWVtKHBsYWNlaG9sZGVyICsgMiwKLQkJCQkJZW5kIC0gKHBsYWNlaG9sZGVyICsgMiksCi0JCQkJCSItLXByZXR0eSBmb3JtYXQiLCBjb2xvcik7Ci0JCQlzdHJidWZfYWRkc3RyKHNiLCBjb2xvcik7Ci0JCQlyZXR1cm4gZW5kIC0gcGxhY2Vob2xkZXIgKyAxOworCQlpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICIoYXV0bykiKSkgeworCQkJYy0+YXV0b19jb2xvciA9IDE7CisJCQlyZXR1cm4gNzsgLyogY29uc3VtZWQgNyBieXRlcywgIkMoYXV0bykiICovCisJCX0gZWxzZSB7CisJCQlpbnQgcmV0ID0gcGFyc2VfY29sb3Ioc2IsIHBsYWNlaG9sZGVyLCBjKTsKKwkJCWlmIChyZXQpCisJCQkJYy0+YXV0b19jb2xvciA9IDA7CisJCQkvKgorCQkJICogT3RoZXJ3aXNlLCB3ZSBkZWNpZGVkIHRvIHRyZWF0ICVDPHVua25vd24+CisJCQkgKiBhcyBhIGxpdGVyYWwgc3RyaW5nLCBhbmQgdGhlIHByZXZpb3VzCisJCQkgKiAlQyhhdXRvKSBpcyBzdGlsbCB2YWxpZC4KKwkJCSAqLworCQkJcmV0dXJuIHJldDsKIAkJfQotCQlpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJyZWQiKSkgewotCQkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX1JFRCk7Ci0JCQlyZXR1cm4gNDsKLQkJfSBlbHNlIGlmICghcHJlZml4Y21wKHBsYWNlaG9sZGVyICsgMSwgImdyZWVuIikpIHsKLQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIEdJVF9DT0xPUl9HUkVFTik7Ci0JCQlyZXR1cm4gNjsKLQkJfSBlbHNlIGlmICghcHJlZml4Y21wKHBsYWNlaG9sZGVyICsgMSwgImJsdWUiKSkgewotCQkJc3RyYnVmX2FkZHN0cihzYiwgR0lUX0NPTE9SX0JMVUUpOwotCQkJcmV0dXJuIDU7Ci0JCX0gZWxzZSBpZiAoIXByZWZpeGNtcChwbGFjZWhvbGRlciArIDEsICJyZXNldCIpKSB7Ci0JCQlzdHJidWZfYWRkc3RyKHNiLCBHSVRfQ09MT1JfUkVTRVQpOwotCQkJcmV0dXJuIDY7Ci0JCX0gZWxzZQotCQkJcmV0dXJuIDA7CiAJY2FzZSAnbic6CQkvKiBuZXdsaW5lICovCiAJCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CiAJCXJldHVybiAxOwpAQCAtMTAyMSw2ICsxMTIzLDEwIEBACiAJCQlyZXR1cm4gZW5kIC0gcGxhY2Vob2xkZXIgKyAxOwogCQl9IGVsc2UKIAkJCXJldHVybiAwOworCisJY2FzZSAnPCc6CisJY2FzZSAnPic6CisJCXJldHVybiBwYXJzZV9wYWRkaW5nX3BsYWNlaG9sZGVyKHNiLCBwbGFjZWhvbGRlciwgYyk7CiAJfQogCiAJLyogdGhlc2UgZGVwZW5kIG9uIHRoZSBjb21taXQgKi8KQEAgLTEwMjksMTMgKzExMzUsMTkgQEAKIAogCXN3aXRjaCAocGxhY2Vob2xkZXJbMF0pIHsKIAljYXNlICdIJzoJCS8qIGNvbW1pdCBoYXNoICovCisJCXN0cmJ1Zl9hZGRzdHIoc2IsIGRpZmZfZ2V0X2NvbG9yKGMtPmF1dG9fY29sb3IsIERJRkZfQ09NTUlUKSk7CiAJCXN0cmJ1Zl9hZGRzdHIoc2IsIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpKTsKKwkJc3RyYnVmX2FkZHN0cihzYiwgZGlmZl9nZXRfY29sb3IoYy0+YXV0b19jb2xvciwgRElGRl9SRVNFVCkpOwogCQlyZXR1cm4gMTsKIAljYXNlICdoJzoJCS8qIGFiYnJldmlhdGVkIGNvbW1pdCBoYXNoICovCi0JCWlmIChhZGRfYWdhaW4oc2IsICZjLT5hYmJyZXZfY29tbWl0X2hhc2gpKQorCQlzdHJidWZfYWRkc3RyKHNiLCBkaWZmX2dldF9jb2xvcihjLT5hdXRvX2NvbG9yLCBESUZGX0NPTU1JVCkpOworCQlpZiAoYWRkX2FnYWluKHNiLCAmYy0+YWJicmV2X2NvbW1pdF9oYXNoKSkgeworCQkJc3RyYnVmX2FkZHN0cihzYiwgZGlmZl9nZXRfY29sb3IoYy0+YXV0b19jb2xvciwgRElGRl9SRVNFVCkpOwogCQkJcmV0dXJuIDE7CisJCX0KIAkJc3RyYnVmX2FkZHN0cihzYiwgZmluZF91bmlxdWVfYWJicmV2KGNvbW1pdC0+b2JqZWN0LnNoYTEsCiAJCQkJCQkgICAgIGMtPnByZXR0eV9jdHgtPmFiYnJldikpOworCQlzdHJidWZfYWRkc3RyKHNiLCBkaWZmX2dldF9jb2xvcihjLT5hdXRvX2NvbG9yLCBESUZGX1JFU0VUKSk7CiAJCWMtPmFiYnJldl9jb21taXRfaGFzaC5sZW4gPSBzYi0+bGVuIC0gYy0+YWJicmV2X2NvbW1pdF9oYXNoLm9mZjsKIAkJcmV0dXJuIDE7CiAJY2FzZSAnVCc6CQkvKiB0cmVlIGhhc2ggKi8KQEAgLTEwNzIsNyArMTE4NCw4IEBACiAJCXN0cmJ1Zl9hZGRzdHIoc2IsIGdldF9yZXZpc2lvbl9tYXJrKE5VTEwsIGNvbW1pdCkpOwogCQlyZXR1cm4gMTsKIAljYXNlICdkJzoKLQkJZm9ybWF0X2RlY29yYXRpb24oc2IsIGNvbW1pdCk7CisJCWxvYWRfcmVmX2RlY29yYXRpb25zKERFQ09SQVRFX1NIT1JUX1JFRlMpOworCQlmb3JtYXRfZGVjb3JhdGlvbnMoc2IsIGNvbW1pdCwgYy0+YXV0b19jb2xvcik7CiAJCXJldHVybiAxOwogCWNhc2UgJ2cnOgkJLyogcmVmbG9nIGluZm8gKi8KIAkJc3dpdGNoKHBsYWNlaG9sZGVyWzFdKSB7CkBAIC0xMTA4LDIzICsxMjIxLDI5IEBACiAJfQogCiAJaWYgKHBsYWNlaG9sZGVyWzBdID09ICdHJykgewotCQlpZiAoIWMtPmNvbW1pdF9zaWduYXR1cmVfcGFyc2VkKQotCQkJcGFyc2VfY29tbWl0X3NpZ25hdHVyZShjKTsKKwkJaWYgKCFjLT5zaWduYXR1cmVfY2hlY2sucmVzdWx0KQorCQkJY2hlY2tfY29tbWl0X3NpZ25hdHVyZShjLT5jb21taXQsICYoYy0+c2lnbmF0dXJlX2NoZWNrKSk7CiAJCXN3aXRjaCAocGxhY2Vob2xkZXJbMV0pIHsKIAkJY2FzZSAnRyc6Ci0JCQlpZiAoYy0+c2lnbmF0dXJlLmdwZ19vdXRwdXQpCi0JCQkJc3RyYnVmX2FkZHN0cihzYiwgYy0+c2lnbmF0dXJlLmdwZ19vdXRwdXQpOworCQkJaWYgKGMtPnNpZ25hdHVyZV9jaGVjay5ncGdfb3V0cHV0KQorCQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGMtPnNpZ25hdHVyZV9jaGVjay5ncGdfb3V0cHV0KTsKIAkJCWJyZWFrOwogCQljYXNlICc/JzoKLQkJCXN3aXRjaCAoYy0+c2lnbmF0dXJlLmdvb2RfYmFkKSB7CisJCQlzd2l0Y2ggKGMtPnNpZ25hdHVyZV9jaGVjay5yZXN1bHQpIHsKIAkJCWNhc2UgJ0cnOgogCQkJY2FzZSAnQic6Ci0JCQkJc3RyYnVmX2FkZGNoKHNiLCBjLT5zaWduYXR1cmUuZ29vZF9iYWQpOworCQkJY2FzZSAnVSc6CisJCQljYXNlICdOJzoKKwkJCQlzdHJidWZfYWRkY2goc2IsIGMtPnNpZ25hdHVyZV9jaGVjay5yZXN1bHQpOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgJ1MnOgotCQkJaWYgKGMtPnNpZ25hdHVyZS5zaWduZXIpCi0JCQkJc3RyYnVmX2FkZHN0cihzYiwgYy0+c2lnbmF0dXJlLnNpZ25lcik7CisJCQlpZiAoYy0+c2lnbmF0dXJlX2NoZWNrLnNpZ25lcikKKwkJCQlzdHJidWZfYWRkc3RyKHNiLCBjLT5zaWduYXR1cmVfY2hlY2suc2lnbmVyKTsKKwkJCWJyZWFrOworCQljYXNlICdLJzoKKwkJCWlmIChjLT5zaWduYXR1cmVfY2hlY2sua2V5KQorCQkJCXN0cmJ1Zl9hZGRzdHIoc2IsIGMtPnNpZ25hdHVyZV9jaGVjay5rZXkpOwogCQkJYnJlYWs7CiAJCX0KIAkJcmV0dXJuIDI7CkBAIC0xMTQ1LDcgKzEyNjQsOCBAQAogCQkJCSAgIG1zZyArIGMtPmNvbW1pdHRlci5vZmYsIGMtPmNvbW1pdHRlci5sZW4sCiAJCQkJICAgYy0+cHJldHR5X2N0eC0+ZGF0ZV9tb2RlKTsKIAljYXNlICdlJzoJLyogZW5jb2RpbmcgKi8KLQkJc3RyYnVmX2FkZChzYiwgbXNnICsgYy0+ZW5jb2Rpbmcub2ZmLCBjLT5lbmNvZGluZy5sZW4pOworCQlpZiAoYy0+Y29tbWl0X2VuY29kaW5nKQorCQkJc3RyYnVmX2FkZHN0cihzYiwgYy0+Y29tbWl0X2VuY29kaW5nKTsKIAkJcmV0dXJuIDE7CiAJY2FzZSAnQic6CS8qIHJhdyBib2R5ICovCiAJCS8qIG1lc3NhZ2Vfb2ZmIGlzIGFsd2F5cyBsZWZ0IGF0IHRoZSBpbml0aWFsIG5ld2xpbmUgKi8KQEAgLTExNzEsNyArMTI5MSwxMTEgQEAKIAlyZXR1cm4gMDsJLyogdW5rbm93biBwbGFjZWhvbGRlciAqLwogfQogCi1zdGF0aWMgc2l6ZV90IGZvcm1hdF9jb21taXRfaXRlbShzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCitzdGF0aWMgc2l6ZV90IGZvcm1hdF9hbmRfcGFkX2NvbW1pdChzdHJ1Y3Qgc3RyYnVmICpzYiwgLyogaW4gVVRGLTggKi8KKwkJCQkgICAgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCisJCQkJICAgIHN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKmMpCit7CisJc3RydWN0IHN0cmJ1ZiBsb2NhbF9zYiA9IFNUUkJVRl9JTklUOworCWludCB0b3RhbF9jb25zdW1lZCA9IDAsIGxlbiwgcGFkZGluZyA9IGMtPnBhZGRpbmc7CisJaWYgKHBhZGRpbmcgPCAwKSB7CisJCWNvbnN0IGNoYXIgKnN0YXJ0ID0gc3RycmNocihzYi0+YnVmLCAnXG4nKTsKKwkJaW50IG9jY3VwaWVkOworCQlpZiAoIXN0YXJ0KQorCQkJc3RhcnQgPSBzYi0+YnVmOworCQlvY2N1cGllZCA9IHV0Zjhfc3RybndpZHRoKHN0YXJ0LCAtMSwgMSk7CisJCXBhZGRpbmcgPSAoLXBhZGRpbmcpIC0gb2NjdXBpZWQ7CisJfQorCXdoaWxlICgxKSB7CisJCWludCBtb2RpZmllciA9ICpwbGFjZWhvbGRlciA9PSAnQyc7CisJCWludCBjb25zdW1lZCA9IGZvcm1hdF9jb21taXRfb25lKCZsb2NhbF9zYiwgcGxhY2Vob2xkZXIsIGMpOworCQl0b3RhbF9jb25zdW1lZCArPSBjb25zdW1lZDsKKworCQlpZiAoIW1vZGlmaWVyKQorCQkJYnJlYWs7CisKKwkJcGxhY2Vob2xkZXIgKz0gY29uc3VtZWQ7CisJCWlmICgqcGxhY2Vob2xkZXIgIT0gJyUnKQorCQkJYnJlYWs7CisJCXBsYWNlaG9sZGVyKys7CisJCXRvdGFsX2NvbnN1bWVkKys7CisJfQorCWxlbiA9IHV0Zjhfc3RybndpZHRoKGxvY2FsX3NiLmJ1ZiwgLTEsIDEpOworCisJaWYgKGMtPmZsdXNoX3R5cGUgPT0gZmx1c2hfbGVmdF9hbmRfc3RlYWwpIHsKKwkJY29uc3QgY2hhciAqY2ggPSBzYi0+YnVmICsgc2ItPmxlbiAtIDE7CisJCXdoaWxlIChsZW4gPiBwYWRkaW5nICYmIGNoID4gc2ItPmJ1ZikgeworCQkJY29uc3QgY2hhciAqcDsKKwkJCWlmICgqY2ggPT0gJyAnKSB7CisJCQkJY2gtLTsKKwkJCQlwYWRkaW5nKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQkvKiBjaGVjayBmb3IgdHJhaWxpbmcgYW5zaSBzZXF1ZW5jZXMgKi8KKwkJCWlmICgqY2ggIT0gJ20nKQorCQkJCWJyZWFrOworCQkJcCA9IGNoIC0gMTsKKwkJCXdoaWxlIChjaCAtIHAgPCAxMCAmJiAqcCAhPSAnXDAzMycpCisJCQkJcC0tOworCQkJaWYgKCpwICE9ICdcMDMzJyB8fAorCQkJICAgIGNoICsgMSAtIHAgIT0gZGlzcGxheV9tb2RlX2VzY19zZXF1ZW5jZV9sZW4ocCkpCisJCQkJYnJlYWs7CisJCQkvKgorCQkJICogZ290IGEgZ29vZCBhbnNpIHNlcXVlbmNlLCBwdXQgaXQgYmFjayB0bworCQkJICogbG9jYWxfc2IgYXMgd2UncmUgY3V0dGluZyBzYgorCQkJICovCisJCQlzdHJidWZfaW5zZXJ0KCZsb2NhbF9zYiwgMCwgcCwgY2ggKyAxIC0gcCk7CisJCQljaCA9IHAgLSAxOworCQl9CisJCXN0cmJ1Zl9zZXRsZW4oc2IsIGNoICsgMSAtIHNiLT5idWYpOworCQljLT5mbHVzaF90eXBlID0gZmx1c2hfbGVmdDsKKwl9CisKKwlpZiAobGVuID4gcGFkZGluZykgeworCQlzd2l0Y2ggKGMtPnRydW5jYXRlKSB7CisJCWNhc2UgdHJ1bmNfbGVmdDoKKwkJCXN0cmJ1Zl91dGY4X3JlcGxhY2UoJmxvY2FsX3NiLAorCQkJCQkgICAgMCwgbGVuIC0gKHBhZGRpbmcgLSAyKSwKKwkJCQkJICAgICIuLiIpOworCQkJYnJlYWs7CisJCWNhc2UgdHJ1bmNfbWlkZGxlOgorCQkJc3RyYnVmX3V0ZjhfcmVwbGFjZSgmbG9jYWxfc2IsCisJCQkJCSAgICBwYWRkaW5nIC8gMiAtIDEsCisJCQkJCSAgICBsZW4gLSAocGFkZGluZyAtIDIpLAorCQkJCQkgICAgIi4uIik7CisJCQlicmVhazsKKwkJY2FzZSB0cnVuY19yaWdodDoKKwkJCXN0cmJ1Zl91dGY4X3JlcGxhY2UoJmxvY2FsX3NiLAorCQkJCQkgICAgcGFkZGluZyAtIDIsIGxlbiAtIChwYWRkaW5nIC0gMiksCisJCQkJCSAgICAiLi4iKTsKKwkJCWJyZWFrOworCQljYXNlIHRydW5jX25vbmU6CisJCQlicmVhazsKKwkJfQorCQlzdHJidWZfYWRkc3RyKHNiLCBsb2NhbF9zYi5idWYpOworCX0gZWxzZSB7CisJCWludCBzYl9sZW4gPSBzYi0+bGVuLCBvZmZzZXQgPSAwOworCQlpZiAoYy0+Zmx1c2hfdHlwZSA9PSBmbHVzaF9sZWZ0KQorCQkJb2Zmc2V0ID0gcGFkZGluZyAtIGxlbjsKKwkJZWxzZSBpZiAoYy0+Zmx1c2hfdHlwZSA9PSBmbHVzaF9ib3RoKQorCQkJb2Zmc2V0ID0gKHBhZGRpbmcgLSBsZW4pIC8gMjsKKwkJLyoKKwkJICogd2UgY2FsY3VsYXRlIHBhZGRpbmcgaW4gY29sdW1ucywgbm93CisJCSAqIGNvbnZlcnQgaXQgYmFjayB0byBjaGFycworCQkgKi8KKwkJcGFkZGluZyA9IHBhZGRpbmcgLSBsZW4gKyBsb2NhbF9zYi5sZW47CisJCXN0cmJ1Zl9ncm93KHNiLCBwYWRkaW5nKTsKKwkJc3RyYnVmX3NldGxlbihzYiwgc2JfbGVuICsgcGFkZGluZyk7CisJCW1lbXNldChzYi0+YnVmICsgc2JfbGVuLCAnICcsIHNiLT5sZW4gLSBzYl9sZW4pOworCQltZW1jcHkoc2ItPmJ1ZiArIHNiX2xlbiArIG9mZnNldCwgbG9jYWxfc2IuYnVmLAorCQkgICAgICAgbG9jYWxfc2IubGVuKTsKKwl9CisJc3RyYnVmX3JlbGVhc2UoJmxvY2FsX3NiKTsKKwljLT5mbHVzaF90eXBlID0gbm9fZmx1c2g7CisJcmV0dXJuIHRvdGFsX2NvbnN1bWVkOworfQorCitzdGF0aWMgc2l6ZV90IGZvcm1hdF9jb21taXRfaXRlbShzdHJ1Y3Qgc3RyYnVmICpzYiwgLyogaW4gVVRGLTggKi8KKwkJCQkgY29uc3QgY2hhciAqcGxhY2Vob2xkZXIsCiAJCQkJIHZvaWQgKmNvbnRleHQpCiB7CiAJaW50IGNvbnN1bWVkOwpAQCAtMTIwMCw3ICsxNDI0LDEwIEBACiAJCXBsYWNlaG9sZGVyKys7CiAKIAlvcmlnX2xlbiA9IHNiLT5sZW47Ci0JY29uc3VtZWQgPSBmb3JtYXRfY29tbWl0X29uZShzYiwgcGxhY2Vob2xkZXIsIGNvbnRleHQpOworCWlmICgoKHN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgKiljb250ZXh0KS0+Zmx1c2hfdHlwZSAhPSBub19mbHVzaCkKKwkJY29uc3VtZWQgPSBmb3JtYXRfYW5kX3BhZF9jb21taXQoc2IsIHBsYWNlaG9sZGVyLCBjb250ZXh0KTsKKwllbHNlCisJCWNvbnN1bWVkID0gZm9ybWF0X2NvbW1pdF9vbmUoc2IsIHBsYWNlaG9sZGVyLCBjb250ZXh0KTsKIAlpZiAobWFnaWMgPT0gTk9fTUFHSUMpCiAJCXJldHVybiBjb25zdW1lZDsKIApAQCAtMTI1MSwyMiArMTQ3OCw0MCBAQAogewogCXN0cnVjdCBmb3JtYXRfY29tbWl0X2NvbnRleHQgY29udGV4dDsKIAljb25zdCBjaGFyICpvdXRwdXRfZW5jID0gcHJldHR5X2N0eC0+b3V0cHV0X2VuY29kaW5nOworCWNvbnN0IGNoYXIgKnV0ZjggPSAiVVRGLTgiOwogCiAJbWVtc2V0KCZjb250ZXh0LCAwLCBzaXplb2YoY29udGV4dCkpOwogCWNvbnRleHQuY29tbWl0ID0gY29tbWl0OwogCWNvbnRleHQucHJldHR5X2N0eCA9IHByZXR0eV9jdHg7CiAJY29udGV4dC53cmFwX3N0YXJ0ID0gc2ItPmxlbjsKLQljb250ZXh0Lm1lc3NhZ2UgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBvdXRwdXRfZW5jKTsKLQlpZiAoIWNvbnRleHQubWVzc2FnZSkKLQkJY29udGV4dC5tZXNzYWdlID0gY29tbWl0LT5idWZmZXI7CisJY29udGV4dC5tZXNzYWdlID0gbG9nbXNnX3JlZW5jb2RlKGNvbW1pdCwKKwkJCQkJICAmY29udGV4dC5jb21taXRfZW5jb2RpbmcsCisJCQkJCSAgb3V0cHV0X2VuYyk7CiAKIAlzdHJidWZfZXhwYW5kKHNiLCBmb3JtYXQsIGZvcm1hdF9jb21taXRfaXRlbSwgJmNvbnRleHQpOwogCXJld3JhcF9tZXNzYWdlX3RhaWwoc2IsICZjb250ZXh0LCAwLCAwLCAwKTsKIAotCWlmIChjb250ZXh0Lm1lc3NhZ2UgIT0gY29tbWl0LT5idWZmZXIpCi0JCWZyZWUoY29udGV4dC5tZXNzYWdlKTsKLQlmcmVlKGNvbnRleHQuc2lnbmF0dXJlLmdwZ19vdXRwdXQpOwotCWZyZWUoY29udGV4dC5zaWduYXR1cmUuc2lnbmVyKTsKKwlpZiAob3V0cHV0X2VuYykgeworCQlpZiAoc2FtZV9lbmNvZGluZyh1dGY4LCBvdXRwdXRfZW5jKSkKKwkJCW91dHB1dF9lbmMgPSBOVUxMOworCX0gZWxzZSB7CisJCWlmIChjb250ZXh0LmNvbW1pdF9lbmNvZGluZyAmJgorCQkgICAgIXNhbWVfZW5jb2RpbmcoY29udGV4dC5jb21taXRfZW5jb2RpbmcsIHV0ZjgpKQorCQkJb3V0cHV0X2VuYyA9IGNvbnRleHQuY29tbWl0X2VuY29kaW5nOworCX0KKworCWlmIChvdXRwdXRfZW5jKSB7CisJCWludCBvdXRzejsKKwkJY2hhciAqb3V0ID0gcmVlbmNvZGVfc3RyaW5nX2xlbihzYi0+YnVmLCBzYi0+bGVuLAorCQkJCQkJb3V0cHV0X2VuYywgdXRmOCwgJm91dHN6KTsKKwkJaWYgKG91dCkKKwkJCXN0cmJ1Zl9hdHRhY2goc2IsIG91dCwgb3V0c3osIG91dHN6ICsgMSk7CisJfQorCisJZnJlZShjb250ZXh0LmNvbW1pdF9lbmNvZGluZyk7CisJbG9nbXNnX2ZyZWUoY29udGV4dC5tZXNzYWdlLCBjb21taXQpOworCWZyZWUoY29udGV4dC5zaWduYXR1cmVfY2hlY2suZ3BnX291dHB1dCk7CisJZnJlZShjb250ZXh0LnNpZ25hdHVyZV9jaGVjay5zaWduZXIpOwogfQogCiBzdGF0aWMgdm9pZCBwcF9oZWFkZXIoY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKQEAgLTEyOTQsNyArMTUzOSw3IEBACiAJCQljb250aW51ZTsKIAkJfQogCi0JCWlmICghbWVtY21wKGxpbmUsICJwYXJlbnQgIiwgNykpIHsKKwkJaWYgKCFwcmVmaXhjbXAobGluZSwgInBhcmVudCAiKSkgewogCQkJaWYgKGxpbmVsZW4gIT0gNDgpCiAJCQkJZGllKCJiYWQgcGFyZW50IGxpbmUgaW4gY29tbWl0Iik7CiAJCQljb250aW51ZTsKQEAgLTEzMTgsMTEgKzE1NjMsMTEgQEAKIAkJICogRlVMTCBzaG93cyBib3RoIGF1dGhvcnMgYnV0IG5vdCBkYXRlcy4KIAkJICogRlVMTEVSIHNob3dzIGJvdGggYXV0aG9ycyBhbmQgZGF0ZXMuCiAJCSAqLwotCQlpZiAoIW1lbWNtcChsaW5lLCAiYXV0aG9yICIsIDcpKSB7CisJCWlmICghcHJlZml4Y21wKGxpbmUsICJhdXRob3IgIikpIHsKIAkJCXN0cmJ1Zl9ncm93KHNiLCBsaW5lbGVuICsgODApOwogCQkJcHBfdXNlcl9pbmZvKHBwLCAiQXV0aG9yIiwgc2IsIGxpbmUgKyA3LCBlbmNvZGluZyk7CiAJCX0KLQkJaWYgKCFtZW1jbXAobGluZSwgImNvbW1pdHRlciAiLCAxMCkgJiYKKwkJaWYgKCFwcmVmaXhjbXAobGluZSwgImNvbW1pdHRlciAiKSAmJgogCQkgICAgKHBwLT5mbXQgPT0gQ01JVF9GTVRfRlVMTCB8fCBwcC0+Zm10ID09IENNSVRfRk1UX0ZVTExFUikpIHsKIAkJCXN0cmJ1Zl9ncm93KHNiLCBsaW5lbGVuICsgODApOwogCQkJcHBfdXNlcl9pbmZvKHBwLCAiQ29tbWl0Iiwgc2IsIGxpbmUgKyAxMCwgZW5jb2RpbmcpOwpAQCAtMTQxMSw3ICsxNjU2LDcgQEAKIHsKIAl1bnNpZ25lZCBsb25nIGJlZ2lubmluZ19vZl9ib2R5OwogCWludCBpbmRlbnQgPSA0OwotCWNvbnN0IGNoYXIgKm1zZyA9IGNvbW1pdC0+YnVmZmVyOworCWNvbnN0IGNoYXIgKm1zZzsKIAljaGFyICpyZWVuY29kZWQ7CiAJY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAJaW50IG5lZWRfOGJpdF9jdGUgPSBwcC0+bmVlZF84Yml0X2N0ZTsKQEAgLTE0MjIsMTAgKzE2NjcsNyBAQAogCX0KIAogCWVuY29kaW5nID0gZ2V0X2xvZ19vdXRwdXRfZW5jb2RpbmcoKTsKLQlyZWVuY29kZWQgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBlbmNvZGluZyk7Ci0JaWYgKHJlZW5jb2RlZCkgewotCQltc2cgPSByZWVuY29kZWQ7Ci0JfQorCW1zZyA9IHJlZW5jb2RlZCA9IGxvZ21zZ19yZWVuY29kZShjb21taXQsIE5VTEwsIGVuY29kaW5nKTsKIAogCWlmIChwcC0+Zm10ID09IENNSVRfRk1UX09ORUxJTkUgfHwgcHAtPmZtdCA9PSBDTUlUX0ZNVF9FTUFJTCkKIAkJaW5kZW50ID0gMDsKQEAgLTE0ODIsNyArMTcyNCw3IEBACiAJaWYgKHBwLT5mbXQgPT0gQ01JVF9GTVRfRU1BSUwgJiYgc2ItPmxlbiA8PSBiZWdpbm5pbmdfb2ZfYm9keSkKIAkJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKIAotCWZyZWUocmVlbmNvZGVkKTsKKwlsb2dtc2dfZnJlZShyZWVuY29kZWQsIGNvbW1pdCk7CiB9CiAKIHZvaWQgcHBfY29tbWl0X2Vhc3koZW51bSBjbWl0X2ZtdCBmbXQsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKZGlmZiAtLWdpdCBhL3Byb2dyZXNzLmMgYi9wcm9ncmVzcy5jCmluZGV4IDM5NzFmNDkuLjEwNjUyYjEgMTAwNjQ0Ci0tLSBhL3Byb2dyZXNzLmMKKysrIGIvcHJvZ3Jlc3MuYwpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAiZ2l0LWNvbXBhdC11dGlsLmgiCiAjaW5jbHVkZSAicHJvZ3Jlc3MuaCIKKyNpbmNsdWRlICJzdHJidWYuaCIKIAogI2RlZmluZSBUUF9JRFhfTUFYICAgICAgOAogCkBAIC0xMTIsMzQgKzExMywxNCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB0aHJvdWdocHV0X3N0cmluZyhzdHJ1Y3QgdGhyb3VnaHB1dCAqdHAsIG9mZl90IHRvdGFsLAorc3RhdGljIHZvaWQgdGhyb3VnaHB1dF9zdHJpbmcoc3RydWN0IHN0cmJ1ZiAqYnVmLCBvZmZfdCB0b3RhbCwKIAkJCSAgICAgIHVuc2lnbmVkIGludCByYXRlKQogewotCWludCBsID0gc2l6ZW9mKHRwLT5kaXNwbGF5KTsKLQlpZiAodG90YWwgPiAxIDw8IDMwKSB7Ci0JCWwgLT0gc25wcmludGYodHAtPmRpc3BsYXksIGwsICIsICV1LiUyLjJ1IEdpQiIsCi0JCQkgICAgICAoaW50KSh0b3RhbCA+PiAzMCksCi0JCQkgICAgICAoaW50KSh0b3RhbCAmICgoMSA8PCAzMCkgLSAxKSkgLyAxMDczNzQxOSk7Ci0JfSBlbHNlIGlmICh0b3RhbCA+IDEgPDwgMjApIHsKLQkJaW50IHggPSB0b3RhbCArIDUyNDM7ICAvKiBmb3Igcm91bmRpbmcgKi8KLQkJbCAtPSBzbnByaW50Zih0cC0+ZGlzcGxheSwgbCwgIiwgJXUuJTIuMnUgTWlCIiwKLQkJCSAgICAgIHggPj4gMjAsICgoeCAmICgoMSA8PCAyMCkgLSAxKSkgKiAxMDApID4+IDIwKTsKLQl9IGVsc2UgaWYgKHRvdGFsID4gMSA8PCAxMCkgewotCQlpbnQgeCA9IHRvdGFsICsgNTsgIC8qIGZvciByb3VuZGluZyAqLwotCQlsIC09IHNucHJpbnRmKHRwLT5kaXNwbGF5LCBsLCAiLCAldS4lMi4ydSBLaUIiLAotCQkJICAgICAgeCA+PiAxMCwgKCh4ICYgKCgxIDw8IDEwKSAtIDEpKSAqIDEwMCkgPj4gMTApOwotCX0gZWxzZSB7Ci0JCWwgLT0gc25wcmludGYodHAtPmRpc3BsYXksIGwsICIsICV1IGJ5dGVzIiwgKGludCl0b3RhbCk7Ci0JfQotCi0JaWYgKHJhdGUgPiAxIDw8IDEwKSB7Ci0JCWludCB4ID0gcmF0ZSArIDU7ICAvKiBmb3Igcm91bmRpbmcgKi8KLQkJc25wcmludGYodHAtPmRpc3BsYXkgKyBzaXplb2YodHAtPmRpc3BsYXkpIC0gbCwgbCwKLQkJCSAiIHwgJXUuJTIuMnUgTWlCL3MiLAotCQkJIHggPj4gMTAsICgoeCAmICgoMSA8PCAxMCkgLSAxKSkgKiAxMDApID4+IDEwKTsKLQl9IGVsc2UgaWYgKHJhdGUpCi0JCXNucHJpbnRmKHRwLT5kaXNwbGF5ICsgc2l6ZW9mKHRwLT5kaXNwbGF5KSAtIGwsIGwsCi0JCQkgIiB8ICV1IEtpQi9zIiwgcmF0ZSk7CisJc3RyYnVmX2FkZHN0cihidWYsICIsICIpOworCXN0cmJ1Zl9odW1hbmlzZV9ieXRlcyhidWYsIHRvdGFsKTsKKwlzdHJidWZfYWRkc3RyKGJ1ZiwgIiB8ICIpOworCXN0cmJ1Zl9odW1hbmlzZV9ieXRlcyhidWYsIHJhdGUgKiAxMDI0KTsKKwlzdHJidWZfYWRkc3RyKGJ1ZiwgIi9zIik7CiB9CiAKIHZvaWQgZGlzcGxheV90aHJvdWdocHV0KHN0cnVjdCBwcm9ncmVzcyAqcHJvZ3Jlc3MsIG9mZl90IHRvdGFsKQpAQCAtMTgzLDYgKzE2NCw3IEBACiAJbWlzZWNzICs9IChpbnQpKHR2LnR2X3VzZWMgLSB0cC0+cHJldl90di50dl91c2VjKSAvIDk3NzsKIAogCWlmIChtaXNlY3MgPiA1MTIpIHsKKwkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAkJdW5zaWduZWQgaW50IGNvdW50LCByYXRlOwogCiAJCWNvdW50ID0gdG90YWwgLSB0cC0+cHJldl90b3RhbDsKQEAgLTE5Nyw3ICsxNzksOSBAQAogCQl0cC0+bGFzdF9taXNlY3NbdHAtPmlkeF0gPSBtaXNlY3M7CiAJCXRwLT5pZHggPSAodHAtPmlkeCArIDEpICUgVFBfSURYX01BWDsKIAotCQl0aHJvdWdocHV0X3N0cmluZyh0cCwgdG90YWwsIHJhdGUpOworCQl0aHJvdWdocHV0X3N0cmluZygmYnVmLCB0b3RhbCwgcmF0ZSk7CisJCXN0cm5jcHkodHAtPmRpc3BsYXksIGJ1Zi5idWYsIHNpemVvZih0cC0+ZGlzcGxheSkpOworCQlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIAkJaWYgKHByb2dyZXNzLT5sYXN0X3ZhbHVlICE9IC0xICYmIHByb2dyZXNzX3VwZGF0ZSkKIAkJCWRpc3BsYXkocHJvZ3Jlc3MsIHByb2dyZXNzLT5sYXN0X3ZhbHVlLCBOVUxMKTsKIAl9CkBAIC0yNTMsOSArMjM3LDEyIEBACiAKIAkJYnVmcCA9IChsZW4gPCBzaXplb2YoYnVmKSkgPyBidWYgOiB4bWFsbG9jKGxlbiArIDEpOwogCQlpZiAodHApIHsKKwkJCXN0cnVjdCBzdHJidWYgc3RyYnVmID0gU1RSQlVGX0lOSVQ7CiAJCQl1bnNpZ25lZCBpbnQgcmF0ZSA9ICF0cC0+YXZnX21pc2VjcyA/IDAgOgogCQkJCQl0cC0+YXZnX2J5dGVzIC8gdHAtPmF2Z19taXNlY3M7Ci0JCQl0aHJvdWdocHV0X3N0cmluZyh0cCwgdHAtPmN1cnJfdG90YWwsIHJhdGUpOworCQkJdGhyb3VnaHB1dF9zdHJpbmcoJnN0cmJ1ZiwgdHAtPmN1cnJfdG90YWwsIHJhdGUpOworCQkJc3RybmNweSh0cC0+ZGlzcGxheSwgc3RyYnVmLmJ1Ziwgc2l6ZW9mKHRwLT5kaXNwbGF5KSk7CisJCQlzdHJidWZfcmVsZWFzZSgmc3RyYnVmKTsKIAkJfQogCQlwcm9ncmVzc191cGRhdGUgPSAxOwogCQlzcHJpbnRmKGJ1ZnAsICIsICVzLlxuIiwgbXNnKTsKZGlmZiAtLWdpdCBhL3JlYWQtY2FjaGUuYyBiL3JlYWQtY2FjaGUuYwppbmRleCBiNGQwODI1Li5iMjk3YWRkIDEwMDY0NAotLS0gYS9yZWFkLWNhY2hlLmMKKysrIGIvcmVhZC1jYWNoZS5jCkBAIC05MSw3ICs5MSw3IEBACiAJCWNlX21hcmtfdXB0b2RhdGUoY2UpOwogfQogCi1zdGF0aWMgaW50IGNlX2NvbXBhcmVfZGF0YShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QpCitzdGF0aWMgaW50IGNlX2NvbXBhcmVfZGF0YShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJaW50IG1hdGNoID0gLTE7CiAJaW50IGZkID0gb3BlbihjZS0+bmFtZSwgT19SRE9OTFkpOwpAQCAtMTA1LDcgKzEwNSw3IEBACiAJcmV0dXJuIG1hdGNoOwogfQogCi1zdGF0aWMgaW50IGNlX2NvbXBhcmVfbGluayhzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzaXplX3QgZXhwZWN0ZWRfc2l6ZSkKK3N0YXRpYyBpbnQgY2VfY29tcGFyZV9saW5rKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHNpemVfdCBleHBlY3RlZF9zaXplKQogewogCWludCBtYXRjaCA9IC0xOwogCXZvaWQgKmJ1ZmZlcjsKQEAgLTEyNiw3ICsxMjYsNyBAQAogCXJldHVybiBtYXRjaDsKIH0KIAotc3RhdGljIGludCBjZV9jb21wYXJlX2dpdGxpbmsoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgY2VfY29tcGFyZV9naXRsaW5rKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCiB7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIApAQCAtMTQzLDcgKzE0Myw3IEBACiAJcmV0dXJuIGhhc2hjbXAoc2hhMSwgY2UtPnNoYTEpOwogfQogCi1zdGF0aWMgaW50IGNlX21vZGlmaWVkX2NoZWNrX2ZzKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCkKK3N0YXRpYyBpbnQgY2VfbW9kaWZpZWRfY2hlY2tfZnMoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0KQogewogCXN3aXRjaCAoc3QtPnN0X21vZGUgJiBTX0lGTVQpIHsKIAljYXNlIFNfSUZSRUc6CkBAIC0xNjMsNyArMTYzLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjZV9tYXRjaF9zdGF0X2Jhc2ljKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCkKK3N0YXRpYyBpbnQgY2VfbWF0Y2hfc3RhdF9iYXNpYyhjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QpCiB7CiAJdW5zaWduZWQgaW50IGNoYW5nZWQgPSAwOwogCkBAIC0xOTcsMjEgKzE5NywyNSBAQAogCX0KIAlpZiAoY2UtPmNlX210aW1lLnNlYyAhPSAodW5zaWduZWQgaW50KXN0LT5zdF9tdGltZSkKIAkJY2hhbmdlZCB8PSBNVElNRV9DSEFOR0VEOwotCWlmICh0cnVzdF9jdGltZSAmJiBjZS0+Y2VfY3RpbWUuc2VjICE9ICh1bnNpZ25lZCBpbnQpc3QtPnN0X2N0aW1lKQorCWlmICh0cnVzdF9jdGltZSAmJiBjaGVja19zdGF0ICYmCisJICAgIGNlLT5jZV9jdGltZS5zZWMgIT0gKHVuc2lnbmVkIGludClzdC0+c3RfY3RpbWUpCiAJCWNoYW5nZWQgfD0gQ1RJTUVfQ0hBTkdFRDsKIAogI2lmZGVmIFVTRV9OU0VDCi0JaWYgKGNlLT5jZV9tdGltZS5uc2VjICE9IFNUX01USU1FX05TRUMoKnN0KSkKKwlpZiAoY2hlY2tfc3RhdCAmJiBjZS0+Y2VfbXRpbWUubnNlYyAhPSBTVF9NVElNRV9OU0VDKCpzdCkpCiAJCWNoYW5nZWQgfD0gTVRJTUVfQ0hBTkdFRDsKLQlpZiAodHJ1c3RfY3RpbWUgJiYgY2UtPmNlX2N0aW1lLm5zZWMgIT0gU1RfQ1RJTUVfTlNFQygqc3QpKQorCWlmICh0cnVzdF9jdGltZSAmJiBjaGVja19zdGF0ICYmCisJICAgIGNlLT5jZV9jdGltZS5uc2VjICE9IFNUX0NUSU1FX05TRUMoKnN0KSkKIAkJY2hhbmdlZCB8PSBDVElNRV9DSEFOR0VEOwogI2VuZGlmCiAKLQlpZiAoY2UtPmNlX3VpZCAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfdWlkIHx8Ci0JICAgIGNlLT5jZV9naWQgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X2dpZCkKLQkJY2hhbmdlZCB8PSBPV05FUl9DSEFOR0VEOwotCWlmIChjZS0+Y2VfaW5vICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9pbm8pCi0JCWNoYW5nZWQgfD0gSU5PREVfQ0hBTkdFRDsKKwlpZiAoY2hlY2tfc3RhdCkgeworCQlpZiAoY2UtPmNlX3VpZCAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfdWlkIHx8CisJCQljZS0+Y2VfZ2lkICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9naWQpCisJCQljaGFuZ2VkIHw9IE9XTkVSX0NIQU5HRUQ7CisJCWlmIChjZS0+Y2VfaW5vICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9pbm8pCisJCQljaGFuZ2VkIHw9IElOT0RFX0NIQU5HRUQ7CisJfQogCiAjaWZkZWYgVVNFX1NUREVWCiAJLyoKQEAgLTIxOSw4ICsyMjMsOCBAQAogCSAqIGNsaWVudHMgd2lsbCBoYXZlIGRpZmZlcmVudCB2aWV3cyBvZiB3aGF0ICJkZXZpY2UiCiAJICogdGhlIGZpbGVzeXN0ZW0gaXMgb24KIAkgKi8KLQlpZiAoY2UtPmNlX2RldiAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfZGV2KQotCQljaGFuZ2VkIHw9IElOT0RFX0NIQU5HRUQ7CisJaWYgKGNoZWNrX3N0YXQgJiYgY2UtPmNlX2RldiAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfZGV2KQorCQkJY2hhbmdlZCB8PSBJTk9ERV9DSEFOR0VEOwogI2VuZGlmCiAKIAlpZiAoY2UtPmNlX3NpemUgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X3NpemUpCkBAIC0yMzUsNyArMjM5LDggQEAKIAlyZXR1cm4gY2hhbmdlZDsKIH0KIAotc3RhdGljIGludCBpc19yYWN5X3RpbWVzdGFtcChjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgaXNfcmFjeV90aW1lc3RhbXAoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCiB7CiAJcmV0dXJuICghU19JU0dJVExJTksoY2UtPmNlX21vZGUpICYmCiAJCWlzdGF0ZS0+dGltZXN0YW1wLnNlYyAmJgpAQCAtMjUxLDcgKzI1Niw3IEBACiB9CiAKIGludCBpZV9tYXRjaF9zdGF0KGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLAotCQkgIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCwKKwkJICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QsCiAJCSAgdW5zaWduZWQgaW50IG9wdGlvbnMpCiB7CiAJdW5zaWduZWQgaW50IGNoYW5nZWQ7CkBAIC0zMDcsNyArMzEyLDggQEAKIH0KIAogaW50IGllX21vZGlmaWVkKGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLAotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QsIHVuc2lnbmVkIGludCBvcHRpb25zKQorCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQlzdHJ1Y3Qgc3RhdCAqc3QsIHVuc2lnbmVkIGludCBvcHRpb25zKQogewogCWludCBjaGFuZ2VkLCBjaGFuZ2VkX2ZzOwogCkBAIC02MjIsNyArNjI4LDcgQEAKIAkJCWlmICgqcHRyID09ICcvJykgewogCQkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqZm91bmRjZTsKIAkJCQkrK3B0cjsKLQkJCQlmb3VuZGNlID0gaW5kZXhfbmFtZV9leGlzdHMoJnRoZV9pbmRleCwgY2UtPm5hbWUsIHB0ciAtIGNlLT5uYW1lLCBpZ25vcmVfY2FzZSk7CisJCQkJZm91bmRjZSA9IGluZGV4X25hbWVfZXhpc3RzKGlzdGF0ZSwgY2UtPm5hbWUsIHB0ciAtIGNlLT5uYW1lLCBpZ25vcmVfY2FzZSk7CiAJCQkJaWYgKGZvdW5kY2UpIHsKIAkJCQkJbWVtY3B5KCh2b2lkICopc3RhcnRQdHIsIGZvdW5kY2UtPm5hbWUgKyAoc3RhcnRQdHIgLSBjZS0+bmFtZSksIHB0ciAtIHN0YXJ0UHRyKTsKIAkJCQkJc3RhcnRQdHIgPSBwdHI7CkBAIC05NzUsNyArOTgxLDcgQEAKIAlpZiAoaXN0YXRlLT5jYWNoZV9uciA9PSBpc3RhdGUtPmNhY2hlX2FsbG9jKSB7CiAJCWlzdGF0ZS0+Y2FjaGVfYWxsb2MgPSBhbGxvY19ucihpc3RhdGUtPmNhY2hlX2FsbG9jKTsKIAkJaXN0YXRlLT5jYWNoZSA9IHhyZWFsbG9jKGlzdGF0ZS0+Y2FjaGUsCi0JCQkJCWlzdGF0ZS0+Y2FjaGVfYWxsb2MgKiBzaXplb2Yoc3RydWN0IGNhY2hlX2VudHJ5ICopKTsKKwkJCQkJaXN0YXRlLT5jYWNoZV9hbGxvYyAqIHNpemVvZigqaXN0YXRlLT5jYWNoZSkpOwogCX0KIAogCS8qIEFkZCBpdCBpbi4uICovCkBAIC0xNDQ1LDcgKzE0NTEsNyBAQAogCWlzdGF0ZS0+dmVyc2lvbiA9IG50b2hsKGhkci0+aGRyX3ZlcnNpb24pOwogCWlzdGF0ZS0+Y2FjaGVfbnIgPSBudG9obChoZHItPmhkcl9lbnRyaWVzKTsKIAlpc3RhdGUtPmNhY2hlX2FsbG9jID0gYWxsb2NfbnIoaXN0YXRlLT5jYWNoZV9ucik7Ci0JaXN0YXRlLT5jYWNoZSA9IHhjYWxsb2MoaXN0YXRlLT5jYWNoZV9hbGxvYywgc2l6ZW9mKHN0cnVjdCBjYWNoZV9lbnRyeSAqKSk7CisJaXN0YXRlLT5jYWNoZSA9IHhjYWxsb2MoaXN0YXRlLT5jYWNoZV9hbGxvYywgc2l6ZW9mKCppc3RhdGUtPmNhY2hlKSk7CiAJaXN0YXRlLT5pbml0aWFsaXplZCA9IDE7CiAKIAlpZiAoaXN0YXRlLT52ZXJzaW9uID09IDQpCkBAIC0xNTE0LDggKzE1MjAsOSBAQAogCWZyZWVfbmFtZV9oYXNoKGlzdGF0ZSk7CiAJY2FjaGVfdHJlZV9mcmVlKCYoaXN0YXRlLT5jYWNoZV90cmVlKSk7CiAJaXN0YXRlLT5pbml0aWFsaXplZCA9IDA7Ci0KLQkvKiBubyBuZWVkIHRvIHRocm93IGF3YXkgYWxsb2NhdGVkIGFjdGl2ZV9jYWNoZSAqLworCWZyZWUoaXN0YXRlLT5jYWNoZSk7CisJaXN0YXRlLT5jYWNoZSA9IE5VTEw7CisJaXN0YXRlLT5jYWNoZV9hbGxvYyA9IDA7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE4OTUsMyArMTkwMiwzNyBAQAogCX0KIAlyZXR1cm4gMTsKIH0KKwordm9pZCAqcmVhZF9ibG9iX2RhdGFfZnJvbV9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwlpbnQgcG9zLCBsZW47CisJdW5zaWduZWQgbG9uZyBzejsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJdm9pZCAqZGF0YTsKKworCWxlbiA9IHN0cmxlbihwYXRoKTsKKwlwb3MgPSBpbmRleF9uYW1lX3Bvcyhpc3RhdGUsIHBhdGgsIGxlbik7CisJaWYgKHBvcyA8IDApIHsKKwkJLyoKKwkJICogV2UgbWlnaHQgYmUgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLCBpbiB3aGljaAorCQkgKiBjYXNlIHdlIHdvdWxkIHJlYWQgc3RhZ2UgIzIgKG91cnMpLgorCQkgKi8KKwkJaW50IGk7CisJCWZvciAoaSA9IC1wb3MgLSAxOworCQkgICAgIChwb3MgPCAwICYmIGkgPCBpc3RhdGUtPmNhY2hlX25yICYmCisJCSAgICAgICFzdHJjbXAoaXN0YXRlLT5jYWNoZVtpXS0+bmFtZSwgcGF0aCkpOworCQkgICAgIGkrKykKKwkJCWlmIChjZV9zdGFnZShpc3RhdGUtPmNhY2hlW2ldKSA9PSAyKQorCQkJCXBvcyA9IGk7CisJfQorCWlmIChwb3MgPCAwKQorCQlyZXR1cm4gTlVMTDsKKwlkYXRhID0gcmVhZF9zaGExX2ZpbGUoaXN0YXRlLT5jYWNoZVtwb3NdLT5zaGExLCAmdHlwZSwgJnN6KTsKKwlpZiAoIWRhdGEgfHwgdHlwZSAhPSBPQkpfQkxPQikgeworCQlmcmVlKGRhdGEpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaWYgKHNpemUpCisJCSpzaXplID0gc3o7CisJcmV0dXJuIGRhdGE7Cit9CmRpZmYgLS1naXQgYS9yZWZzLmMgYi9yZWZzLmMKaW5kZXggNjc3MGU5Ni4uNDJhN2UxNyAxMDA2NDQKLS0tIGEvcmVmcy5jCisrKyBiL3JlZnMuYwpAQCAtMyw2ICszLDcgQEAKICNpbmNsdWRlICJvYmplY3QuaCIKICNpbmNsdWRlICJ0YWcuaCIKICNpbmNsdWRlICJkaXIuaCIKKyNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogCiAvKgogICogTWFrZSBzdXJlICJyZWYiIGlzIHNvbWV0aGluZyByZWFzb25hYmxlIHRvIGhhdmUgdW5kZXIgIi5naXQvcmVmcy8iOwpAQCAtNzEsNiArNzIsMTAgQEAKIHsKIAlpbnQgY29tcG9uZW50X2xlbiwgY29tcG9uZW50X2NvdW50ID0gMDsKIAorCWlmICghc3RyY21wKHJlZm5hbWUsICJAIikpCisJCS8qIFJlZm5hbWUgaXMgYSBzaW5nbGUgY2hhcmFjdGVyICdAJy4gKi8KKwkJcmV0dXJuIC0xOworCiAJd2hpbGUgKDEpIHsKIAkJLyogV2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIHBhdGggY29tcG9uZW50LiAqLwogCQljb21wb25lbnRfbGVuID0gY2hlY2tfcmVmbmFtZV9jb21wb25lbnQocmVmbmFtZSwgZmxhZ3MpOwpAQCAtMTA4LDcgKzExMywyMCBAQAogICogKHJlZl9lbnRyeS0+ZmxhZyAmIFJFRl9ESVIpIGlzIHplcm8uCiAgKi8KIHN0cnVjdCByZWZfdmFsdWUgeworCS8qCisJICogVGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0byB3aGljaCB0aGlzIHJlZmVyZW5jZSByZXNvbHZlcworCSAqICh3aGljaCBtYXkgYmUgYSB0YWcgb2JqZWN0KS4gIElmIFJFRl9JU0JST0tFTiwgdGhpcyBpcworCSAqIG51bGwuICBJZiBSRUZfSVNTWU1SRUYsIHRoZW4gdGhpcyBpcyB0aGUgbmFtZSBvZiB0aGUgb2JqZWN0CisJICogcmVmZXJyZWQgdG8gYnkgdGhlIGxhc3QgcmVmZXJlbmNlIGluIHRoZSBzeW1saW5rIGNoYWluLgorCSAqLwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisKKwkvKgorCSAqIElmIFJFRl9LTk9XU19QRUVMRUQsIHRoZW4gdGhpcyBmaWVsZCBob2xkcyB0aGUgcGVlbGVkIHZhbHVlCisJICogb2YgdGhpcyByZWZlcmVuY2UsIG9yIG51bGwgaWYgdGhlIHJlZmVyZW5jZSBpcyBrbm93biBub3QgdG8KKwkgKiBiZSBwZWVsYWJsZS4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgcGVlbF9yZWYoKSBmb3IgYW4KKwkgKiBleGFjdCBkZWZpbml0aW9uIG9mICJwZWVsYWJsZSIuCisJICovCiAJdW5zaWduZWQgY2hhciBwZWVsZWRbMjBdOwogfTsKIApAQCAtMTU3LDcgKzE3NSwxNyBAQAogCXN0cnVjdCByZWZfZW50cnkgKiplbnRyaWVzOwogfTsKIAotLyogSVNTWU1SRUY9MHgwMSwgSVNQQUNLRUQ9MHgwMiwgYW5kIElTQlJPS0VOPTB4MDQgYXJlIHB1YmxpYyBpbnRlcmZhY2VzICovCisvKgorICogQml0IHZhbHVlcyBmb3IgcmVmX2VudHJ5OjpmbGFnLiAgUkVGX0lTU1lNUkVGPTB4MDEsCisgKiBSRUZfSVNQQUNLRUQ9MHgwMiwgYW5kIFJFRl9JU0JST0tFTj0weDA0IGFyZSBwdWJsaWMgdmFsdWVzOyBzZWUKKyAqIHJlZnMuaC4KKyAqLworCisvKgorICogVGhlIGZpZWxkIHJlZl9lbnRyeS0+dS52YWx1ZS5wZWVsZWQgb2YgdGhpcyB2YWx1ZSBlbnRyeSBjb250YWlucworICogdGhlIGNvcnJlY3QgcGVlbGVkIHZhbHVlIGZvciB0aGUgcmVmZXJlbmNlLCB3aGljaCBtaWdodCBiZQorICogbnVsbF9zaGExIGlmIHRoZSByZWZlcmVuY2UgaXMgbm90IGEgdGFnIG9yIGlmIGl0IGlzIGJyb2tlbi4KKyAqLwogI2RlZmluZSBSRUZfS05PV1NfUEVFTEVEIDB4MDgKIAogLyogcmVmX2VudHJ5IHJlcHJlc2VudHMgYSBkaXJlY3Rvcnkgb2YgcmVmZXJlbmNlcyAqLwpAQCAtMzMzLDI5ICszNjEsMjYgQEAKIAogc3RhdGljIGludCByZWZfZW50cnlfY21wX3NzbGljZShjb25zdCB2b2lkICprZXlfLCBjb25zdCB2b2lkICplbnRfKQogewotCXN0cnVjdCBzdHJpbmdfc2xpY2UgKmtleSA9IChzdHJ1Y3Qgc3RyaW5nX3NsaWNlICopa2V5XzsKLQlzdHJ1Y3QgcmVmX2VudHJ5ICplbnQgPSAqKHN0cnVjdCByZWZfZW50cnkgKiopZW50XzsKLQlpbnQgZW50bGVuID0gc3RybGVuKGVudC0+bmFtZSk7Ci0JaW50IGNtcGxlbiA9IGtleS0+bGVuIDwgZW50bGVuID8ga2V5LT5sZW4gOiBlbnRsZW47Ci0JaW50IGNtcCA9IG1lbWNtcChrZXktPnN0ciwgZW50LT5uYW1lLCBjbXBsZW4pOworCWNvbnN0IHN0cnVjdCBzdHJpbmdfc2xpY2UgKmtleSA9IGtleV87CisJY29uc3Qgc3RydWN0IHJlZl9lbnRyeSAqZW50ID0gKihjb25zdCBzdHJ1Y3QgcmVmX2VudHJ5ICogY29uc3QgKillbnRfOworCWludCBjbXAgPSBzdHJuY21wKGtleS0+c3RyLCBlbnQtPm5hbWUsIGtleS0+bGVuKTsKIAlpZiAoY21wKQogCQlyZXR1cm4gY21wOwotCXJldHVybiBrZXktPmxlbiAtIGVudGxlbjsKKwlyZXR1cm4gJ1wwJyAtICh1bnNpZ25lZCBjaGFyKWVudC0+bmFtZVtrZXktPmxlbl07CiB9CiAKIC8qCi0gKiBSZXR1cm4gdGhlIGVudHJ5IHdpdGggdGhlIGdpdmVuIHJlZm5hbWUgZnJvbSB0aGUgcmVmX2RpcgotICogKG5vbi1yZWN1cnNpdmVseSksIHNvcnRpbmcgZGlyIGlmIG5lY2Vzc2FyeS4gIFJldHVybiBOVUxMIGlmIG5vCi0gKiBzdWNoIGVudHJ5IGlzIGZvdW5kLiAgZGlyIG11c3QgYWxyZWFkeSBiZSBjb21wbGV0ZS4KKyAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGVudHJ5IHdpdGggdGhlIGdpdmVuIHJlZm5hbWUgZnJvbSB0aGUKKyAqIHJlZl9kaXIgKG5vbi1yZWN1cnNpdmVseSksIHNvcnRpbmcgZGlyIGlmIG5lY2Vzc2FyeS4gIFJldHVybiAtMSBpZgorICogbm8gc3VjaCBlbnRyeSBpcyBmb3VuZC4gIGRpciBtdXN0IGFscmVhZHkgYmUgY29tcGxldGUuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgcmVmX2VudHJ5ICpzZWFyY2hfcmVmX2RpcihzdHJ1Y3QgcmVmX2RpciAqZGlyLAotCQkJCQljb25zdCBjaGFyICpyZWZuYW1lLCBzaXplX3QgbGVuKQorc3RhdGljIGludCBzZWFyY2hfcmVmX2RpcihzdHJ1Y3QgcmVmX2RpciAqZGlyLCBjb25zdCBjaGFyICpyZWZuYW1lLCBzaXplX3QgbGVuKQogewogCXN0cnVjdCByZWZfZW50cnkgKipyOwogCXN0cnVjdCBzdHJpbmdfc2xpY2Uga2V5OwogCiAJaWYgKHJlZm5hbWUgPT0gTlVMTCB8fCAhZGlyLT5ucikKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiAtMTsKIAogCXNvcnRfcmVmX2RpcihkaXIpOwogCWtleS5sZW4gPSBsZW47CkBAIC0zNjQsOSArMzg5LDkgQEAKIAkJICAgIHJlZl9lbnRyeV9jbXBfc3NsaWNlKTsKIAogCWlmIChyID09IE5VTEwpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKLQlyZXR1cm4gKnI7CisJcmV0dXJuIHIgLSBkaXItPmVudHJpZXM7CiB9CiAKIC8qCkBAIC0zODAsOCArNDA1LDkgQEAKIAkJCQkJIGNvbnN0IGNoYXIgKnN1YmRpcm5hbWUsIHNpemVfdCBsZW4sCiAJCQkJCSBpbnQgbWtkaXIpCiB7Ci0Jc3RydWN0IHJlZl9lbnRyeSAqZW50cnkgPSBzZWFyY2hfcmVmX2RpcihkaXIsIHN1YmRpcm5hbWUsIGxlbik7Ci0JaWYgKCFlbnRyeSkgeworCWludCBlbnRyeV9pbmRleCA9IHNlYXJjaF9yZWZfZGlyKGRpciwgc3ViZGlybmFtZSwgbGVuKTsKKwlzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeTsKKwlpZiAoZW50cnlfaW5kZXggPT0gLTEpIHsKIAkJaWYgKCFta2RpcikKIAkJCXJldHVybiBOVUxMOwogCQkvKgpAQCAtMzkyLDYgKzQxOCw4IEBACiAJCSAqLwogCQllbnRyeSA9IGNyZWF0ZV9kaXJfZW50cnkoZGlyLT5yZWZfY2FjaGUsIHN1YmRpcm5hbWUsIGxlbiwgMCk7CiAJCWFkZF9lbnRyeV90b19kaXIoZGlyLCBlbnRyeSk7CisJfSBlbHNlIHsKKwkJZW50cnkgPSBkaXItPmVudHJpZXNbZW50cnlfaW5kZXhdOwogCX0KIAlyZXR1cm4gZ2V0X3JlZl9kaXIoZW50cnkpOwogfQpAQCAtNDMwLDEyICs0NTgsNjcgQEAKICAqLwogc3RhdGljIHN0cnVjdCByZWZfZW50cnkgKmZpbmRfcmVmKHN0cnVjdCByZWZfZGlyICpkaXIsIGNvbnN0IGNoYXIgKnJlZm5hbWUpCiB7CisJaW50IGVudHJ5X2luZGV4OwogCXN0cnVjdCByZWZfZW50cnkgKmVudHJ5OwogCWRpciA9IGZpbmRfY29udGFpbmluZ19kaXIoZGlyLCByZWZuYW1lLCAwKTsKIAlpZiAoIWRpcikKIAkJcmV0dXJuIE5VTEw7Ci0JZW50cnkgPSBzZWFyY2hfcmVmX2RpcihkaXIsIHJlZm5hbWUsIHN0cmxlbihyZWZuYW1lKSk7Ci0JcmV0dXJuIChlbnRyeSAmJiAhKGVudHJ5LT5mbGFnICYgUkVGX0RJUikpID8gZW50cnkgOiBOVUxMOworCWVudHJ5X2luZGV4ID0gc2VhcmNoX3JlZl9kaXIoZGlyLCByZWZuYW1lLCBzdHJsZW4ocmVmbmFtZSkpOworCWlmIChlbnRyeV9pbmRleCA9PSAtMSkKKwkJcmV0dXJuIE5VTEw7CisJZW50cnkgPSBkaXItPmVudHJpZXNbZW50cnlfaW5kZXhdOworCXJldHVybiAoZW50cnktPmZsYWcgJiBSRUZfRElSKSA/IE5VTEwgOiBlbnRyeTsKK30KKworLyoKKyAqIFJlbW92ZSB0aGUgZW50cnkgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBmcm9tIGRpciwgcmVjdXJzaW5nIGludG8KKyAqIHN1YmRpcmVjdG9yaWVzIGFzIG5lY2Vzc2FyeS4gIElmIHJlZm5hbWUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkKKyAqIChpLmUuLCBlbmRzIHdpdGggJy8nKSwgdGhlbiByZW1vdmUgdGhlIGRpcmVjdG9yeSBhbmQgaXRzIGNvbnRlbnRzLgorICogSWYgdGhlIHJlbW92YWwgd2FzIHN1Y2Nlc3NmdWwsIHJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMKKyAqIHJlbWFpbmluZyBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5IHRoYXQgY29udGFpbmVkIHRoZSBkZWxldGVkIGVudHJ5LgorICogSWYgdGhlIG5hbWUgd2FzIG5vdCBmb3VuZCwgcmV0dXJuIC0xLiAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzCisgKiBmdW5jdGlvbiBvbmx5IGRlbGV0ZXMgdGhlIGVudHJ5IGZyb20gdGhlIGNhY2hlOyBpdCBkb2VzIG5vdCBkZWxldGUKKyAqIGl0IGZyb20gdGhlIGZpbGVzeXN0ZW0gb3IgZW5zdXJlIHRoYXQgb3RoZXIgY2FjaGUgZW50cmllcyAod2hpY2gKKyAqIG1pZ2h0IGJlIHN5bWJvbGljIHJlZmVyZW5jZXMgdG8gdGhlIHJlbW92ZWQgZW50cnkpIGFyZSB1cGRhdGVkLgorICogTm9yIGRvZXMgaXQgcmVtb3ZlIGFueSBjb250YWluaW5nIGRpciBlbnRyaWVzIHRoYXQgbWlnaHQgYmUgbWFkZQorICogZW1wdHkgYnkgdGhlIHJlbW92YWwuICBkaXIgbXVzdCByZXByZXNlbnQgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkKKyAqIGFuZCBtdXN0IGFscmVhZHkgYmUgY29tcGxldGUuCisgKi8KK3N0YXRpYyBpbnQgcmVtb3ZlX2VudHJ5KHN0cnVjdCByZWZfZGlyICpkaXIsIGNvbnN0IGNoYXIgKnJlZm5hbWUpCit7CisJaW50IHJlZm5hbWVfbGVuID0gc3RybGVuKHJlZm5hbWUpOworCWludCBlbnRyeV9pbmRleDsKKwlzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeTsKKwlpbnQgaXNfZGlyID0gcmVmbmFtZVtyZWZuYW1lX2xlbiAtIDFdID09ICcvJzsKKwlpZiAoaXNfZGlyKSB7CisJCS8qCisJCSAqIHJlZm5hbWUgcmVwcmVzZW50cyBhIHJlZmVyZW5jZSBkaXJlY3RvcnkuICBSZW1vdmUKKwkJICogdGhlIHRyYWlsaW5nIHNsYXNoOyBvdGhlcndpc2Ugd2Ugd2lsbCBnZXQgdGhlCisJCSAqIGRpcmVjdG9yeSAqcmVwcmVzZW50aW5nKiByZWZuYW1lIHJhdGhlciB0aGFuIHRoZQorCQkgKiBvbmUgKmNvbnRhaW5pbmcqIGl0LgorCQkgKi8KKwkJY2hhciAqZGlybmFtZSA9IHhtZW1kdXB6KHJlZm5hbWUsIHJlZm5hbWVfbGVuIC0gMSk7CisJCWRpciA9IGZpbmRfY29udGFpbmluZ19kaXIoZGlyLCBkaXJuYW1lLCAwKTsKKwkJZnJlZShkaXJuYW1lKTsKKwl9IGVsc2UgeworCQlkaXIgPSBmaW5kX2NvbnRhaW5pbmdfZGlyKGRpciwgcmVmbmFtZSwgMCk7CisJfQorCWlmICghZGlyKQorCQlyZXR1cm4gLTE7CisJZW50cnlfaW5kZXggPSBzZWFyY2hfcmVmX2RpcihkaXIsIHJlZm5hbWUsIHJlZm5hbWVfbGVuKTsKKwlpZiAoZW50cnlfaW5kZXggPT0gLTEpCisJCXJldHVybiAtMTsKKwllbnRyeSA9IGRpci0+ZW50cmllc1tlbnRyeV9pbmRleF07CisKKwltZW1tb3ZlKCZkaXItPmVudHJpZXNbZW50cnlfaW5kZXhdLAorCQkmZGlyLT5lbnRyaWVzW2VudHJ5X2luZGV4ICsgMV0sCisJCShkaXItPm5yIC0gZW50cnlfaW5kZXggLSAxKSAqIHNpemVvZigqZGlyLT5lbnRyaWVzKQorCQkpOworCWRpci0+bnItLTsKKwlpZiAoZGlyLT5zb3J0ZWQgPiBlbnRyeV9pbmRleCkKKwkJZGlyLT5zb3J0ZWQtLTsKKwlmcmVlX3JlZl9lbnRyeShlbnRyeSk7CisJcmV0dXJuIGRpci0+bnI7CiB9CiAKIC8qCkBAIC01MDQsMjcgKzU4Nyw2NCBAQAogCWRpci0+c29ydGVkID0gZGlyLT5uciA9IGk7CiB9CiAKLSNkZWZpbmUgRE9fRk9SX0VBQ0hfSU5DTFVERV9CUk9LRU4gMDEKKy8qIEluY2x1ZGUgYnJva2VuIHJlZmVyZW5jZXMgaW4gYSBkb19mb3JfZWFjaF9yZWYqKCkgaXRlcmF0aW9uOiAqLworI2RlZmluZSBET19GT1JfRUFDSF9JTkNMVURFX0JST0tFTiAweDAxCiAKKy8qCisgKiBSZXR1cm4gdHJ1ZSBpZmYgdGhlIHJlZmVyZW5jZSBkZXNjcmliZWQgYnkgZW50cnkgY2FuIGJlIHJlc29sdmVkIHRvCisgKiBhbiBvYmplY3QgaW4gdGhlIGRhdGFiYXNlLiAgRW1pdCBhIHdhcm5pbmcgaWYgdGhlIHJlZmVycmVkLXRvCisgKiBvYmplY3QgZG9lcyBub3QgZXhpc3QuCisgKi8KK3N0YXRpYyBpbnQgcmVmX3Jlc29sdmVzX3RvX29iamVjdChzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSkKK3sKKwlpZiAoZW50cnktPmZsYWcgJiBSRUZfSVNCUk9LRU4pCisJCXJldHVybiAwOworCWlmICghaGFzX3NoYTFfZmlsZShlbnRyeS0+dS52YWx1ZS5zaGExKSkgeworCQllcnJvcigiJXMgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBvYmplY3QhIiwgZW50cnktPm5hbWUpOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBjdXJyZW50X3JlZiBpcyBhIHBlcmZvcm1hbmNlIGhhY2s6IHdoZW4gaXRlcmF0aW5nIG92ZXIgcmVmZXJlbmNlcworICogdXNpbmcgdGhlIGZvcl9lYWNoX3JlZiooKSBmdW5jdGlvbnMsIGN1cnJlbnRfcmVmIGlzIHNldCB0byB0aGUKKyAqIGN1cnJlbnQgcmVmZXJlbmNlJ3MgZW50cnkgYmVmb3JlIGNhbGxpbmcgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiAgSWYKKyAqIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBjYWxscyBwZWVsX3JlZigpLCB0aGVuIHBlZWxfcmVmKCkgZmlyc3QKKyAqIGNoZWNrcyB3aGV0aGVyIHRoZSByZWZlcmVuY2UgdG8gYmUgcGVlbGVkIGlzIHRoZSBjdXJyZW50IHJlZmVyZW5jZQorICogKGl0IHVzdWFsbHkgaXMpIGFuZCBpZiBzbywgcmV0dXJucyB0aGF0IHJlZmVyZW5jZSdzIHBlZWxlZCB2ZXJzaW9uCisgKiBpZiBpdCBpcyBhdmFpbGFibGUuICBUaGlzIGF2b2lkcyBhIHJlZm5hbWUgbG9va3VwIGluIGEgY29tbW9uIGNhc2UuCisgKi8KIHN0YXRpYyBzdHJ1Y3QgcmVmX2VudHJ5ICpjdXJyZW50X3JlZjsKIAotc3RhdGljIGludCBkb19vbmVfcmVmKGNvbnN0IGNoYXIgKmJhc2UsIGVhY2hfcmVmX2ZuIGZuLCBpbnQgdHJpbSwKLQkJICAgICAgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhLCBzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSkKK3R5cGVkZWYgaW50IGVhY2hfcmVmX2VudHJ5X2ZuKHN0cnVjdCByZWZfZW50cnkgKmVudHJ5LCB2b2lkICpjYl9kYXRhKTsKKworc3RydWN0IHJlZl9lbnRyeV9jYiB7CisJY29uc3QgY2hhciAqYmFzZTsKKwlpbnQgdHJpbTsKKwlpbnQgZmxhZ3M7CisJZWFjaF9yZWZfZm4gKmZuOworCXZvaWQgKmNiX2RhdGE7Cit9OworCisvKgorICogSGFuZGxlIG9uZSByZWZlcmVuY2UgaW4gYSBkb19mb3JfZWFjaF9yZWYqKCktc3R5bGUgaXRlcmF0aW9uLAorICogY2FsbGluZyBhbiBlYWNoX3JlZl9mbiBmb3IgZWFjaCBlbnRyeS4KKyAqLworc3RhdGljIGludCBkb19vbmVfcmVmKHN0cnVjdCByZWZfZW50cnkgKmVudHJ5LCB2b2lkICpjYl9kYXRhKQogeworCXN0cnVjdCByZWZfZW50cnlfY2IgKmRhdGEgPSBjYl9kYXRhOwogCWludCByZXR2YWw7Ci0JaWYgKHByZWZpeGNtcChlbnRyeS0+bmFtZSwgYmFzZSkpCisJaWYgKHByZWZpeGNtcChlbnRyeS0+bmFtZSwgZGF0YS0+YmFzZSkpCiAJCXJldHVybiAwOwogCi0JaWYgKCEoZmxhZ3MgJiBET19GT1JfRUFDSF9JTkNMVURFX0JST0tFTikpIHsKLQkJaWYgKGVudHJ5LT5mbGFnICYgUkVGX0lTQlJPS0VOKQotCQkJcmV0dXJuIDA7IC8qIGlnbm9yZSBicm9rZW4gcmVmcyBlLmcuIGRhbmdsaW5nIHN5bXJlZiAqLwotCQlpZiAoIWhhc19zaGExX2ZpbGUoZW50cnktPnUudmFsdWUuc2hhMSkpIHsKLQkJCWVycm9yKCIlcyBkb2VzIG5vdCBwb2ludCB0byBhIHZhbGlkIG9iamVjdCEiLCBlbnRyeS0+bmFtZSk7Ci0JCQlyZXR1cm4gMDsKLQkJfQotCX0KKwlpZiAoIShkYXRhLT5mbGFncyAmIERPX0ZPUl9FQUNIX0lOQ0xVREVfQlJPS0VOKSAmJgorCSAgICAgICFyZWZfcmVzb2x2ZXNfdG9fb2JqZWN0KGVudHJ5KSkKKwkJcmV0dXJuIDA7CisKIAljdXJyZW50X3JlZiA9IGVudHJ5OwotCXJldHZhbCA9IGZuKGVudHJ5LT5uYW1lICsgdHJpbSwgZW50cnktPnUudmFsdWUuc2hhMSwgZW50cnktPmZsYWcsIGNiX2RhdGEpOworCXJldHZhbCA9IGRhdGEtPmZuKGVudHJ5LT5uYW1lICsgZGF0YS0+dHJpbSwgZW50cnktPnUudmFsdWUuc2hhMSwKKwkJCSAgZW50cnktPmZsYWcsIGRhdGEtPmNiX2RhdGEpOwogCWN1cnJlbnRfcmVmID0gTlVMTDsKIAlyZXR1cm4gcmV0dmFsOwogfQpAQCAtNTMzLDExICs2NTMsMTEgQEAKICAqIENhbGwgZm4gZm9yIGVhY2ggcmVmZXJlbmNlIGluIGRpciB0aGF0IGhhcyBpbmRleCBpbiB0aGUgcmFuZ2UKICAqIG9mZnNldCA8PSBpbmRleCA8IGRpci0+bnIuICBSZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMgdGhhdCBhcmUgaW4KICAqIHRoYXQgaW5kZXggcmFuZ2UsIHNvcnRpbmcgdGhlbSBiZWZvcmUgaXRlcmF0aW5nLiAgVGhpcyBmdW5jdGlvbgotICogZG9lcyBub3Qgc29ydCBkaXIgaXRzZWxmOyBpdCBzaG91bGQgYmUgc29ydGVkIGJlZm9yZWhhbmQuCisgKiBkb2VzIG5vdCBzb3J0IGRpciBpdHNlbGY7IGl0IHNob3VsZCBiZSBzb3J0ZWQgYmVmb3JlaGFuZC4gIGZuIGlzCisgKiBjYWxsZWQgZm9yIGFsbCByZWZlcmVuY2VzLCBpbmNsdWRpbmcgYnJva2VuIG9uZXMuCiAgKi8KLXN0YXRpYyBpbnQgZG9fZm9yX2VhY2hfcmVmX2luX2RpcihzdHJ1Y3QgcmVmX2RpciAqZGlyLCBpbnQgb2Zmc2V0LAotCQkJCSAgY29uc3QgY2hhciAqYmFzZSwKLQkJCQkgIGVhY2hfcmVmX2ZuIGZuLCBpbnQgdHJpbSwgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQorc3RhdGljIGludCBkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIoc3RydWN0IHJlZl9kaXIgKmRpciwgaW50IG9mZnNldCwKKwkJCQkgICAgZWFjaF9yZWZfZW50cnlfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7CiAJaW50IGk7CiAJYXNzZXJ0KGRpci0+c29ydGVkID09IGRpci0+bnIpOwpAQCAtNTQ3LDEwICs2NjcsOSBAQAogCQlpZiAoZW50cnktPmZsYWcgJiBSRUZfRElSKSB7CiAJCQlzdHJ1Y3QgcmVmX2RpciAqc3ViZGlyID0gZ2V0X3JlZl9kaXIoZW50cnkpOwogCQkJc29ydF9yZWZfZGlyKHN1YmRpcik7Ci0JCQlyZXR2YWwgPSBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKHN1YmRpciwgMCwKLQkJCQkJCQliYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEpOworCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKHN1YmRpciwgMCwgZm4sIGNiX2RhdGEpOwogCQl9IGVsc2UgewotCQkJcmV0dmFsID0gZG9fb25lX3JlZihiYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEsIGVudHJ5KTsKKwkJCXJldHZhbCA9IGZuKGVudHJ5LCBjYl9kYXRhKTsKIAkJfQogCQlpZiAocmV0dmFsKQogCQkJcmV0dXJuIHJldHZhbDsKQEAgLTU2MywxMiArNjgyLDEyIEBACiAgKiBieSByZWZuYW1lLiAgUmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzLiAgSWYgYSB2YWx1ZSBlbnRyeSBhcHBlYXJzCiAgKiBpbiBib3RoIGRpcjEgYW5kIGRpcjIsIHRoZW4gb25seSBwcm9jZXNzIHRoZSB2ZXJzaW9uIHRoYXQgaXMgaW4KICAqIGRpcjIuICBUaGUgaW5wdXQgZGlycyBtdXN0IGFscmVhZHkgYmUgc29ydGVkLCBidXQgc3ViZGlycyB3aWxsIGJlCi0gKiBzb3J0ZWQgYXMgbmVlZGVkLgorICogc29ydGVkIGFzIG5lZWRlZC4gIGZuIGlzIGNhbGxlZCBmb3IgYWxsIHJlZmVyZW5jZXMsIGluY2x1ZGluZworICogYnJva2VuIG9uZXMuCiAgKi8KLXN0YXRpYyBpbnQgZG9fZm9yX2VhY2hfcmVmX2luX2RpcnMoc3RydWN0IHJlZl9kaXIgKmRpcjEsCi0JCQkJICAgc3RydWN0IHJlZl9kaXIgKmRpcjIsCi0JCQkJICAgY29uc3QgY2hhciAqYmFzZSwgZWFjaF9yZWZfZm4gZm4sIGludCB0cmltLAotCQkJCSAgIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKK3N0YXRpYyBpbnQgZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlycyhzdHJ1Y3QgcmVmX2RpciAqZGlyMSwKKwkJCQkgICAgIHN0cnVjdCByZWZfZGlyICpkaXIyLAorCQkJCSAgICAgZWFjaF9yZWZfZW50cnlfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7CiAJaW50IHJldHZhbDsKIAlpbnQgaTEgPSAwLCBpMiA9IDA7CkBAIC01NzksMTIgKzY5OCwxMCBAQAogCQlzdHJ1Y3QgcmVmX2VudHJ5ICplMSwgKmUyOwogCQlpbnQgY21wOwogCQlpZiAoaTEgPT0gZGlyMS0+bnIpIHsKLQkJCXJldHVybiBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpcjIsIGkyLAotCQkJCQkJICAgICAgYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJCXJldHVybiBkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIoZGlyMiwgaTIsIGZuLCBjYl9kYXRhKTsKIAkJfQogCQlpZiAoaTIgPT0gZGlyMi0+bnIpIHsKLQkJCXJldHVybiBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpcjEsIGkxLAotCQkJCQkJICAgICAgYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJCXJldHVybiBkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIoZGlyMSwgaTEsIGZuLCBjYl9kYXRhKTsKIAkJfQogCQllMSA9IGRpcjEtPmVudHJpZXNbaTFdOwogCQllMiA9IGRpcjItPmVudHJpZXNbaTJdOwpAQCAtNTk2LDE0ICs3MTMsMTMgQEAKIAkJCQlzdHJ1Y3QgcmVmX2RpciAqc3ViZGlyMiA9IGdldF9yZWZfZGlyKGUyKTsKIAkJCQlzb3J0X3JlZl9kaXIoc3ViZGlyMSk7CiAJCQkJc29ydF9yZWZfZGlyKHN1YmRpcjIpOwotCQkJCXJldHZhbCA9IGRvX2Zvcl9lYWNoX3JlZl9pbl9kaXJzKAotCQkJCQkJc3ViZGlyMSwgc3ViZGlyMiwKLQkJCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlycygKKwkJCQkJCXN1YmRpcjEsIHN1YmRpcjIsIGZuLCBjYl9kYXRhKTsKIAkJCQlpMSsrOwogCQkJCWkyKys7CiAJCQl9IGVsc2UgaWYgKCEoZTEtPmZsYWcgJiBSRUZfRElSKSAmJiAhKGUyLT5mbGFnICYgUkVGX0RJUikpIHsKIAkJCQkvKiBCb3RoIGFyZSByZWZlcmVuY2VzOyBpZ25vcmUgdGhlIG9uZSBmcm9tIGRpcjEuICovCi0JCQkJcmV0dmFsID0gZG9fb25lX3JlZihiYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEsIGUyKTsKKwkJCQlyZXR2YWwgPSBmbihlMiwgY2JfZGF0YSk7CiAJCQkJaTErKzsKIAkJCQlpMisrOwogCQkJfSBlbHNlIHsKQEAgLTYyMiwyMyArNzM4LDE1IEBACiAJCQlpZiAoZS0+ZmxhZyAmIFJFRl9ESVIpIHsKIAkJCQlzdHJ1Y3QgcmVmX2RpciAqc3ViZGlyID0gZ2V0X3JlZl9kaXIoZSk7CiAJCQkJc29ydF9yZWZfZGlyKHN1YmRpcik7Ci0JCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfcmVmX2luX2RpcigKLQkJCQkJCXN1YmRpciwgMCwKLQkJCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKAorCQkJCQkJc3ViZGlyLCAwLCBmbiwgY2JfZGF0YSk7CiAJCQl9IGVsc2UgewotCQkJCXJldHZhbCA9IGRvX29uZV9yZWYoYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhLCBlKTsKKwkJCQlyZXR2YWwgPSBmbihlLCBjYl9kYXRhKTsKIAkJCX0KIAkJfQogCQlpZiAocmV0dmFsKQogCQkJcmV0dXJuIHJldHZhbDsKIAl9Ci0JaWYgKGkxIDwgZGlyMS0+bnIpCi0JCXJldHVybiBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpcjEsIGkxLAotCQkJCQkgICAgICBiYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEpOwotCWlmIChpMiA8IGRpcjItPm5yKQotCQlyZXR1cm4gZG9fZm9yX2VhY2hfcmVmX2luX2RpcihkaXIyLCBpMiwKLQkJCQkJICAgICAgYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKLQlyZXR1cm4gMDsKIH0KIAogLyoKQEAgLTY2MiwxNCArNzcwLDEzIEBACiAJY29uc3QgY2hhciAqY29uZmxpY3RpbmdfcmVmbmFtZTsKIH07CiAKLXN0YXRpYyBpbnQgbmFtZV9jb25mbGljdF9mbihjb25zdCBjaGFyICpleGlzdGluZ3JlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCi0JCQkgICAgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQorc3RhdGljIGludCBuYW1lX2NvbmZsaWN0X2ZuKHN0cnVjdCByZWZfZW50cnkgKmVudHJ5LCB2b2lkICpjYl9kYXRhKQogewogCXN0cnVjdCBuYW1lX2NvbmZsaWN0X2NiICpkYXRhID0gKHN0cnVjdCBuYW1lX2NvbmZsaWN0X2NiICopY2JfZGF0YTsKLQlpZiAoZGF0YS0+b2xkcmVmbmFtZSAmJiAhc3RyY21wKGRhdGEtPm9sZHJlZm5hbWUsIGV4aXN0aW5ncmVmbmFtZSkpCisJaWYgKGRhdGEtPm9sZHJlZm5hbWUgJiYgIXN0cmNtcChkYXRhLT5vbGRyZWZuYW1lLCBlbnRyeS0+bmFtZSkpCiAJCXJldHVybiAwOwotCWlmIChuYW1lc19jb25mbGljdChkYXRhLT5yZWZuYW1lLCBleGlzdGluZ3JlZm5hbWUpKSB7Ci0JCWRhdGEtPmNvbmZsaWN0aW5nX3JlZm5hbWUgPSBleGlzdGluZ3JlZm5hbWU7CisJaWYgKG5hbWVzX2NvbmZsaWN0KGRhdGEtPnJlZm5hbWUsIGVudHJ5LT5uYW1lKSkgeworCQlkYXRhLT5jb25mbGljdGluZ19yZWZuYW1lID0gZW50cnktPm5hbWU7CiAJCXJldHVybiAxOwogCX0KIAlyZXR1cm4gMDsKQEAgLTY3Nyw3ICs3ODQsNyBAQAogCiAvKgogICogUmV0dXJuIHRydWUgaWZmIGEgcmVmZXJlbmNlIG5hbWVkIHJlZm5hbWUgY291bGQgYmUgY3JlYXRlZCB3aXRob3V0Ci0gKiBjb25mbGljdGluZyB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIHJlZmVyZW5jZSBpbiBhcnJheS4gIElmCisgKiBjb25mbGljdGluZyB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIHJlZmVyZW5jZSBpbiBkaXIuICBJZgogICogb2xkcmVmbmFtZSBpcyBub24tTlVMTCwgaWdub3JlIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvbGRyZWZuYW1lCiAgKiAoZS5nLiwgYmVjYXVzZSBvbGRyZWZuYW1lIGlzIHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gaW4gdGhlIHNhbWUKICAqIG9wZXJhdGlvbikuCkBAIC02OTEsOSArNzk4LDcgQEAKIAlkYXRhLmNvbmZsaWN0aW5nX3JlZm5hbWUgPSBOVUxMOwogCiAJc29ydF9yZWZfZGlyKGRpcik7Ci0JaWYgKGRvX2Zvcl9lYWNoX3JlZl9pbl9kaXIoZGlyLCAwLCAiIiwgbmFtZV9jb25mbGljdF9mbiwKLQkJCQkgICAwLCBET19GT1JfRUFDSF9JTkNMVURFX0JST0tFTiwKLQkJCQkgICAmZGF0YSkpIHsKKwlpZiAoZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKGRpciwgMCwgbmFtZV9jb25mbGljdF9mbiwgJmRhdGEpKSB7CiAJCWVycm9yKCInJXMnIGV4aXN0czsgY2Fubm90IGNyZWF0ZSAnJXMnIiwKIAkJICAgICAgZGF0YS5jb25mbGljdGluZ19yZWZuYW1lLCByZWZuYW1lKTsKIAkJcmV0dXJuIDA7CkBAIC03MDksOSArODE0LDEzIEBACiAJc3RydWN0IHJlZl9jYWNoZSAqbmV4dDsKIAlzdHJ1Y3QgcmVmX2VudHJ5ICpsb29zZTsKIAlzdHJ1Y3QgcmVmX2VudHJ5ICpwYWNrZWQ7Ci0JLyogVGhlIHN1Ym1vZHVsZSBuYW1lLCBvciAiIiBmb3IgdGhlIG1haW4gcmVwby4gKi8KLQljaGFyIG5hbWVbRkxFWF9BUlJBWV07Ci19ICpyZWZfY2FjaGU7CisJLyoKKwkgKiBUaGUgc3VibW9kdWxlIG5hbWUsIG9yICIiIGZvciB0aGUgbWFpbiByZXBvLiAgV2UgYWxsb2NhdGUKKwkgKiBsZW5ndGggMSByYXRoZXIgdGhhbiBGTEVYX0FSUkFZIHNvIHRoYXQgdGhlIG1haW4gcmVmX2NhY2hlCisJICogaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5LgorCSAqLworCWNoYXIgbmFtZVsxXTsKK30gcmVmX2NhY2hlLCAqc3VibW9kdWxlX3JlZl9jYWNoZXM7CiAKIHN0YXRpYyB2b2lkIGNsZWFyX3BhY2tlZF9yZWZfY2FjaGUoc3RydWN0IHJlZl9jYWNoZSAqcmVmcykKIHsKQEAgLTc0OSwxOCArODU4LDE4IEBACiAgKi8KIHN0YXRpYyBzdHJ1Y3QgcmVmX2NhY2hlICpnZXRfcmVmX2NhY2hlKGNvbnN0IGNoYXIgKnN1Ym1vZHVsZSkKIHsKLQlzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzID0gcmVmX2NhY2hlOwotCWlmICghc3VibW9kdWxlKQotCQlzdWJtb2R1bGUgPSAiIjsKLQl3aGlsZSAocmVmcykgeworCXN0cnVjdCByZWZfY2FjaGUgKnJlZnM7CisKKwlpZiAoIXN1Ym1vZHVsZSB8fCAhKnN1Ym1vZHVsZSkKKwkJcmV0dXJuICZyZWZfY2FjaGU7CisKKwlmb3IgKHJlZnMgPSBzdWJtb2R1bGVfcmVmX2NhY2hlczsgcmVmczsgcmVmcyA9IHJlZnMtPm5leHQpCiAJCWlmICghc3RyY21wKHN1Ym1vZHVsZSwgcmVmcy0+bmFtZSkpCiAJCQlyZXR1cm4gcmVmczsKLQkJcmVmcyA9IHJlZnMtPm5leHQ7Ci0JfQogCiAJcmVmcyA9IGNyZWF0ZV9yZWZfY2FjaGUoc3VibW9kdWxlKTsKLQlyZWZzLT5uZXh0ID0gcmVmX2NhY2hlOwotCXJlZl9jYWNoZSA9IHJlZnM7CisJcmVmcy0+bmV4dCA9IHN1Ym1vZHVsZV9yZWZfY2FjaGVzOworCXN1Ym1vZHVsZV9yZWZfY2FjaGVzID0gcmVmczsKIAlyZXR1cm4gcmVmczsKIH0KIApAQCAtNzcxLDYgKzg4MCwxNiBAQAogCWNsZWFyX2xvb3NlX3JlZl9jYWNoZShyZWZzKTsKIH0KIAorLyogVGhlIGxlbmd0aCBvZiBhIHBlZWxlZCByZWZlcmVuY2UgbGluZSBpbiBwYWNrZWQtcmVmcywgaW5jbHVkaW5nIEVPTDogKi8KKyNkZWZpbmUgUEVFTEVEX0xJTkVfTEVOR1RIIDQyCisKKy8qCisgKiBUaGUgcGFja2VkLXJlZnMgaGVhZGVyIGxpbmUgdGhhdCB3ZSB3cml0ZSBvdXQuICBQZXJoYXBzIG90aGVyCisgKiB0cmFpdHMgd2lsbCBiZSBhZGRlZCBsYXRlci4gIFRoZSB0cmFpbGluZyBzcGFjZSBpcyByZXF1aXJlZC4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgUEFDS0VEX1JFRlNfSEVBREVSW10gPQorCSIjIHBhY2stcmVmcyB3aXRoOiBwZWVsZWQgZnVsbHktcGVlbGVkIFxuIjsKKwogLyoKICAqIFBhcnNlIG9uZSBsaW5lIGZyb20gYSBwYWNrZWQtcmVmcyBmaWxlLiAgV3JpdGUgdGhlIFNIQTEgdG8gc2hhMS4KICAqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlZm5hbWUgd2l0aGluIHRoZSBsaW5lIChudWxsLXRlcm1pbmF0ZWQpLApAQCAtODYzLDggKzk4Miw4IEBACiAJCX0KIAkJaWYgKGxhc3QgJiYKIAkJICAgIHJlZmxpbmVbMF0gPT0gJ14nICYmCi0JCSAgICBzdHJsZW4ocmVmbGluZSkgPT0gNDIgJiYKLQkJICAgIHJlZmxpbmVbNDFdID09ICdcbicgJiYKKwkJICAgIHN0cmxlbihyZWZsaW5lKSA9PSBQRUVMRURfTElORV9MRU5HVEggJiYKKwkJICAgIHJlZmxpbmVbUEVFTEVEX0xJTkVfTEVOR1RIIC0gMV0gPT0gJ1xuJyAmJgogCQkgICAgIWdldF9zaGExX2hleChyZWZsaW5lICsgMSwgc2hhMSkpIHsKIAkJCWhhc2hjcHkobGFzdC0+dS52YWx1ZS5wZWVsZWQsIHNoYTEpOwogCQkJLyoKQEAgLTg5OSw4ICsxMDE4LDggQEAKIAogdm9pZCBhZGRfcGFja2VkX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQogewotCWFkZF9yZWYoZ2V0X3BhY2tlZF9yZWZzKGdldF9yZWZfY2FjaGUoTlVMTCkpLAotCQkJY3JlYXRlX3JlZl9lbnRyeShyZWZuYW1lLCBzaGExLCBSRUZfSVNQQUNLRUQsIDEpKTsKKwlhZGRfcmVmKGdldF9wYWNrZWRfcmVmcygmcmVmX2NhY2hlKSwKKwkJY3JlYXRlX3JlZl9lbnRyeShyZWZuYW1lLCBzaGExLCBSRUZfSVNQQUNLRUQsIDEpKTsKIH0KIAogLyoKQEAgLTEwNzAsMTggKzExODksMTIgQEAKIH0KIAogLyoKLSAqIFRyeSB0byByZWFkIHJlZiBmcm9tIHRoZSBwYWNrZWQgcmVmZXJlbmNlcy4gIE9uIHN1Y2Nlc3MsIHNldCBzaGExCi0gKiBhbmQgcmV0dXJuIDA7IG90aGVyd2lzZSwgcmV0dXJuIC0xLgorICogUmV0dXJuIHRoZSByZWZfZW50cnkgZm9yIHRoZSBnaXZlbiByZWZuYW1lIGZyb20gdGhlIHBhY2tlZAorICogcmVmZXJlbmNlcy4gIElmIGl0IGRvZXMgbm90IGV4aXN0LCByZXR1cm4gTlVMTC4KICAqLwotc3RhdGljIGludCBnZXRfcGFja2VkX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIHN0cnVjdCByZWZfZW50cnkgKmdldF9wYWNrZWRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUpCiB7Ci0Jc3RydWN0IHJlZl9kaXIgKnBhY2tlZCA9IGdldF9wYWNrZWRfcmVmcyhnZXRfcmVmX2NhY2hlKE5VTEwpKTsKLQlzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSA9IGZpbmRfcmVmKHBhY2tlZCwgcmVmbmFtZSk7Ci0JaWYgKGVudHJ5KSB7Ci0JCWhhc2hjcHkoc2hhMSwgZW50cnktPnUudmFsdWUuc2hhMSk7Ci0JCXJldHVybiAwOwotCX0KLQlyZXR1cm4gLTE7CisJcmV0dXJuIGZpbmRfcmVmKGdldF9wYWNrZWRfcmVmcygmcmVmX2NhY2hlKSwgcmVmbmFtZSk7CiB9CiAKIGNvbnN0IGNoYXIgKnJlc29sdmVfcmVmX3Vuc2FmZShjb25zdCBjaGFyICpyZWZuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgcmVhZGluZywgaW50ICpmbGFnKQpAQCAtMTEwOSwxMyArMTIyMiwxNyBAQAogCQlnaXRfc25wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzIiwgcmVmbmFtZSk7CiAKIAkJaWYgKGxzdGF0KHBhdGgsICZzdCkgPCAwKSB7CisJCQlzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeTsKKwogCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCS8qCiAJCQkgKiBUaGUgbG9vc2UgcmVmZXJlbmNlIGZpbGUgZG9lcyBub3QgZXhpc3Q7CiAJCQkgKiBjaGVjayBmb3IgYSBwYWNrZWQgcmVmZXJlbmNlLgogCQkJICovCi0JCQlpZiAoIWdldF9wYWNrZWRfcmVmKHJlZm5hbWUsIHNoYTEpKSB7CisJCQllbnRyeSA9IGdldF9wYWNrZWRfcmVmKHJlZm5hbWUpOworCQkJaWYgKGVudHJ5KSB7CisJCQkJaGFzaGNweShzaGExLCBlbnRyeS0+dS52YWx1ZS5zaGExKTsKIAkJCQlpZiAoZmxhZykKIAkJCQkJKmZsYWcgfD0gUkVGX0lTUEFDS0VEOwogCQkJCXJldHVybiByZWZuYW1lOwpAQCAtMTIzMiw1NCArMTM0OSwxMzAgQEAKIAlyZXR1cm4gZmlsdGVyLT5mbihyZWZuYW1lLCBzaGExLCBmbGFncywgZmlsdGVyLT5jYl9kYXRhKTsKIH0KIAorZW51bSBwZWVsX3N0YXR1cyB7CisJLyogb2JqZWN0IHdhcyBwZWVsZWQgc3VjY2Vzc2Z1bGx5OiAqLworCVBFRUxfUEVFTEVEID0gMCwKKworCS8qCisJICogb2JqZWN0IGNhbm5vdCBiZSBwZWVsZWQgYmVjYXVzZSB0aGUgbmFtZWQgb2JqZWN0IChvciBhbgorCSAqIG9iamVjdCByZWZlcnJlZCB0byBieSBhIHRhZyBpbiB0aGUgcGVlbCBjaGFpbiksIGRvZXMgbm90CisJICogZXhpc3QuCisJICovCisJUEVFTF9JTlZBTElEID0gLTEsCisKKwkvKiBvYmplY3QgY2Fubm90IGJlIHBlZWxlZCBiZWNhdXNlIGl0IGlzIG5vdCBhIHRhZzogKi8KKwlQRUVMX05PTl9UQUcgPSAtMiwKKworCS8qIHJlZl9lbnRyeSBjb250YWlucyBubyBwZWVsZWQgdmFsdWUgYmVjYXVzZSBpdCBpcyBhIHN5bXJlZjogKi8KKwlQRUVMX0lTX1NZTVJFRiA9IC0zLAorCisJLyoKKwkgKiByZWZfZW50cnkgY2Fubm90IGJlIHBlZWxlZCBiZWNhdXNlIGl0IGlzIGJyb2tlbiAoaS5lLiwgdGhlCisJICogc3ltYm9saWMgcmVmZXJlbmNlIGNhbm5vdCBldmVuIGJlIHJlc29sdmVkIHRvIGFuIG9iamVjdAorCSAqIG5hbWUpOgorCSAqLworCVBFRUxfQlJPS0VOID0gLTQKK307CisKKy8qCisgKiBQZWVsIHRoZSBuYW1lZCBvYmplY3Q7IGkuZS4sIGlmIHRoZSBvYmplY3QgaXMgYSB0YWcsIHJlc29sdmUgdGhlCisgKiB0YWcgcmVjdXJzaXZlbHkgdW50aWwgYSBub24tdGFnIGlzIGZvdW5kLiAgSWYgc3VjY2Vzc2Z1bCwgc3RvcmUgdGhlCisgKiByZXN1bHQgdG8gc2hhMSBhbmQgcmV0dXJuIFBFRUxfUEVFTEVELiAgSWYgdGhlIG9iamVjdCBpcyBub3QgYSB0YWcKKyAqIG9yIGlzIG5vdCB2YWxpZCwgcmV0dXJuIFBFRUxfTk9OX1RBRyBvciBQRUVMX0lOVkFMSUQsIHJlc3BlY3RpdmVseSwKKyAqIGFuZCBsZWF2ZSBzaGExIHVuY2hhbmdlZC4KKyAqLworc3RhdGljIGVudW0gcGVlbF9zdGF0dXMgcGVlbF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0ICpvID0gbG9va3VwX3Vua25vd25fb2JqZWN0KG5hbWUpOworCisJaWYgKG8tPnR5cGUgPT0gT0JKX05PTkUpIHsKKwkJaW50IHR5cGUgPSBzaGExX29iamVjdF9pbmZvKG5hbWUsIE5VTEwpOworCQlpZiAodHlwZSA8IDApCisJCQlyZXR1cm4gUEVFTF9JTlZBTElEOworCQlvLT50eXBlID0gdHlwZTsKKwl9CisKKwlpZiAoby0+dHlwZSAhPSBPQkpfVEFHKQorCQlyZXR1cm4gUEVFTF9OT05fVEFHOworCisJbyA9IGRlcmVmX3RhZ19ub3ZlcmlmeShvKTsKKwlpZiAoIW8pCisJCXJldHVybiBQRUVMX0lOVkFMSUQ7CisKKwloYXNoY3B5KHNoYTEsIG8tPnNoYTEpOworCXJldHVybiBQRUVMX1BFRUxFRDsKK30KKworLyoKKyAqIFBlZWwgdGhlIGVudHJ5IChpZiBwb3NzaWJsZSkgYW5kIHJldHVybiBpdHMgbmV3IHBlZWxfc3RhdHVzLiAgSWYKKyAqIHJlcGVlbCBpcyB0cnVlLCByZS1wZWVsIHRoZSBlbnRyeSBldmVuIGlmIHRoZXJlIGlzIGFuIG9sZCBwZWVsZWQKKyAqIHZhbHVlIHRoYXQgaXMgYWxyZWFkeSBzdG9yZWQgaW4gaXQuCisgKgorICogSXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggYSBwYWNrZWQgcmVmZXJlbmNlIGVudHJ5IHRoYXQKKyAqIG1pZ2h0IGJlIHN0YWxlIGFuZCBtaWdodCBldmVuIHJlZmVyIHRvIGFuIG9iamVjdCB0aGF0IGhhcyBzaW5jZQorICogYmVlbiBnYXJiYWdlLWNvbGxlY3RlZC4gIEluIHN1Y2ggYSBjYXNlLCBpZiB0aGUgZW50cnkgaGFzCisgKiBSRUZfS05PV1NfUEVFTEVEIHRoZW4gbGVhdmUgdGhlIHN0YXR1cyB1bmNoYW5nZWQgYW5kIHJldHVybgorICogUEVFTF9QRUVMRUQgb3IgUEVFTF9OT05fVEFHOyBvdGhlcndpc2UsIHJldHVybiBQRUVMX0lOVkFMSUQuCisgKi8KK3N0YXRpYyBlbnVtIHBlZWxfc3RhdHVzIHBlZWxfZW50cnkoc3RydWN0IHJlZl9lbnRyeSAqZW50cnksIGludCByZXBlZWwpCit7CisJZW51bSBwZWVsX3N0YXR1cyBzdGF0dXM7CisKKwlpZiAoZW50cnktPmZsYWcgJiBSRUZfS05PV1NfUEVFTEVEKSB7CisJCWlmIChyZXBlZWwpIHsKKwkJCWVudHJ5LT5mbGFnICY9IH5SRUZfS05PV1NfUEVFTEVEOworCQkJaGFzaGNscihlbnRyeS0+dS52YWx1ZS5wZWVsZWQpOworCQl9IGVsc2UgeworCQkJcmV0dXJuIGlzX251bGxfc2hhMShlbnRyeS0+dS52YWx1ZS5wZWVsZWQpID8KKwkJCQlQRUVMX05PTl9UQUcgOiBQRUVMX1BFRUxFRDsKKwkJfQorCX0KKwlpZiAoZW50cnktPmZsYWcgJiBSRUZfSVNCUk9LRU4pCisJCXJldHVybiBQRUVMX0JST0tFTjsKKwlpZiAoZW50cnktPmZsYWcgJiBSRUZfSVNTWU1SRUYpCisJCXJldHVybiBQRUVMX0lTX1NZTVJFRjsKKworCXN0YXR1cyA9IHBlZWxfb2JqZWN0KGVudHJ5LT51LnZhbHVlLnNoYTEsIGVudHJ5LT51LnZhbHVlLnBlZWxlZCk7CisJaWYgKHN0YXR1cyA9PSBQRUVMX1BFRUxFRCB8fCBzdGF0dXMgPT0gUEVFTF9OT05fVEFHKQorCQllbnRyeS0+ZmxhZyB8PSBSRUZfS05PV1NfUEVFTEVEOworCXJldHVybiBzdGF0dXM7Cit9CisKIGludCBwZWVsX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQogewogCWludCBmbGFnOwogCXVuc2lnbmVkIGNoYXIgYmFzZVsyMF07Ci0Jc3RydWN0IG9iamVjdCAqbzsKIAogCWlmIChjdXJyZW50X3JlZiAmJiAoY3VycmVudF9yZWYtPm5hbWUgPT0gcmVmbmFtZQotCQl8fCAhc3RyY21wKGN1cnJlbnRfcmVmLT5uYW1lLCByZWZuYW1lKSkpIHsKLQkJaWYgKGN1cnJlbnRfcmVmLT5mbGFnICYgUkVGX0tOT1dTX1BFRUxFRCkgewotCQkJaWYgKGlzX251bGxfc2hhMShjdXJyZW50X3JlZi0+dS52YWx1ZS5wZWVsZWQpKQotCQkJICAgIHJldHVybiAtMTsKLQkJCWhhc2hjcHkoc2hhMSwgY3VycmVudF9yZWYtPnUudmFsdWUucGVlbGVkKTsKLQkJCXJldHVybiAwOwotCQl9Ci0JCWhhc2hjcHkoYmFzZSwgY3VycmVudF9yZWYtPnUudmFsdWUuc2hhMSk7Ci0JCWdvdG8gZmFsbGJhY2s7CisJCQkgICAgfHwgIXN0cmNtcChjdXJyZW50X3JlZi0+bmFtZSwgcmVmbmFtZSkpKSB7CisJCWlmIChwZWVsX2VudHJ5KGN1cnJlbnRfcmVmLCAwKSkKKwkJCXJldHVybiAtMTsKKwkJaGFzaGNweShzaGExLCBjdXJyZW50X3JlZi0+dS52YWx1ZS5wZWVsZWQpOworCQlyZXR1cm4gMDsKIAl9CiAKIAlpZiAocmVhZF9yZWZfZnVsbChyZWZuYW1lLCBiYXNlLCAxLCAmZmxhZykpCiAJCXJldHVybiAtMTsKIAotCWlmICgoZmxhZyAmIFJFRl9JU1BBQ0tFRCkpIHsKLQkJc3RydWN0IHJlZl9kaXIgKmRpciA9IGdldF9wYWNrZWRfcmVmcyhnZXRfcmVmX2NhY2hlKE5VTEwpKTsKLQkJc3RydWN0IHJlZl9lbnRyeSAqciA9IGZpbmRfcmVmKGRpciwgcmVmbmFtZSk7Ci0KLQkJaWYgKHIgIT0gTlVMTCAmJiByLT5mbGFnICYgUkVGX0tOT1dTX1BFRUxFRCkgeworCS8qCisJICogSWYgdGhlIHJlZmVyZW5jZSBpcyBwYWNrZWQsIHJlYWQgaXRzIHJlZl9lbnRyeSBmcm9tIHRoZQorCSAqIGNhY2hlIGluIHRoZSBob3BlIHRoYXQgd2UgYWxyZWFkeSBrbm93IGl0cyBwZWVsZWQgdmFsdWUuCisJICogV2Ugb25seSB0cnkgdGhpcyBvcHRpbWl6YXRpb24gb24gcGFja2VkIHJlZmVyZW5jZXMgYmVjYXVzZQorCSAqIChhKSBmb3JjaW5nIHRoZSBmaWxsaW5nIG9mIHRoZSBsb29zZSByZWZlcmVuY2UgY2FjaGUgY291bGQKKwkgKiBiZSBleHBlbnNpdmUgYW5kIChiKSBsb29zZSByZWZlcmVuY2VzIGFueXdheSB1c3VhbGx5IGRvIG5vdAorCSAqIGhhdmUgUkVGX0tOT1dTX1BFRUxFRC4KKwkgKi8KKwlpZiAoZmxhZyAmIFJFRl9JU1BBQ0tFRCkgeworCQlzdHJ1Y3QgcmVmX2VudHJ5ICpyID0gZ2V0X3BhY2tlZF9yZWYocmVmbmFtZSk7CisJCWlmIChyKSB7CisJCQlpZiAocGVlbF9lbnRyeShyLCAwKSkKKwkJCQlyZXR1cm4gLTE7CiAJCQloYXNoY3B5KHNoYTEsIHItPnUudmFsdWUucGVlbGVkKTsKIAkJCXJldHVybiAwOwogCQl9CiAJfQogCi1mYWxsYmFjazoKLQlvID0gbG9va3VwX3Vua25vd25fb2JqZWN0KGJhc2UpOwotCWlmIChvLT50eXBlID09IE9CSl9OT05FKSB7Ci0JCWludCB0eXBlID0gc2hhMV9vYmplY3RfaW5mbyhiYXNlLCBOVUxMKTsKLQkJaWYgKHR5cGUgPCAwKQotCQkJcmV0dXJuIC0xOwotCQlvLT50eXBlID0gdHlwZTsKLQl9Ci0KLQlpZiAoby0+dHlwZSA9PSBPQkpfVEFHKSB7Ci0JCW8gPSBkZXJlZl90YWdfbm92ZXJpZnkobyk7Ci0JCWlmIChvKSB7Ci0JCQloYXNoY3B5KHNoYTEsIG8tPnNoYTEpOwotCQkJcmV0dXJuIDA7Ci0JCX0KLQl9Ci0JcmV0dXJuIC0xOworCXJldHVybiBwZWVsX29iamVjdChiYXNlLCBzaGExKTsKIH0KIAogc3RydWN0IHdhcm5faWZfZGFuZ2xpbmdfZGF0YSB7CkBAIC0xMzE3LDEwICsxNTEwLDE2IEBACiAJZm9yX2VhY2hfcmF3cmVmKHdhcm5faWZfZGFuZ2xpbmdfc3ltcmVmLCAmZGF0YSk7CiB9CiAKLXN0YXRpYyBpbnQgZG9fZm9yX2VhY2hfcmVmKGNvbnN0IGNoYXIgKnN1Ym1vZHVsZSwgY29uc3QgY2hhciAqYmFzZSwgZWFjaF9yZWZfZm4gZm4sCi0JCQkgICBpbnQgdHJpbSwgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQorLyoKKyAqIENhbGwgZm4gZm9yIGVhY2ggcmVmZXJlbmNlIGluIHRoZSBzcGVjaWZpZWQgcmVmX2NhY2hlLCBvbWl0dGluZworICogcmVmZXJlbmNlcyBub3QgaW4gdGhlIGNvbnRhaW5pbmdfZGlyIG9mIGJhc2UuICBmbiBpcyBjYWxsZWQgZm9yIGFsbAorICogcmVmZXJlbmNlcywgaW5jbHVkaW5nIGJyb2tlbiBvbmVzLiAgSWYgZm4gZXZlciByZXR1cm5zIGEgbm9uLXplcm8KKyAqIHZhbHVlLCBzdG9wIHRoZSBpdGVyYXRpb24gYW5kIHJldHVybiB0aGF0IHZhbHVlOyBvdGhlcndpc2UsIHJldHVybgorICogMC4KKyAqLworc3RhdGljIGludCBkb19mb3JfZWFjaF9lbnRyeShzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzLCBjb25zdCBjaGFyICpiYXNlLAorCQkJICAgICBlYWNoX3JlZl9lbnRyeV9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKIHsKLQlzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzID0gZ2V0X3JlZl9jYWNoZShzdWJtb2R1bGUpOwogCXN0cnVjdCByZWZfZGlyICpwYWNrZWRfZGlyID0gZ2V0X3BhY2tlZF9yZWZzKHJlZnMpOwogCXN0cnVjdCByZWZfZGlyICpsb29zZV9kaXIgPSBnZXRfbG9vc2VfcmVmcyhyZWZzKTsKIAlpbnQgcmV0dmFsID0gMDsKQEAgLTEzMzMsMjQgKzE1MzIsNDMgQEAKIAlpZiAocGFja2VkX2RpciAmJiBsb29zZV9kaXIpIHsKIAkJc29ydF9yZWZfZGlyKHBhY2tlZF9kaXIpOwogCQlzb3J0X3JlZl9kaXIobG9vc2VfZGlyKTsKLQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfcmVmX2luX2RpcnMoCi0JCQkJcGFja2VkX2RpciwgbG9vc2VfZGlyLAotCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCXJldHZhbCA9IGRvX2Zvcl9lYWNoX2VudHJ5X2luX2RpcnMoCisJCQkJcGFja2VkX2RpciwgbG9vc2VfZGlyLCBmbiwgY2JfZGF0YSk7CiAJfSBlbHNlIGlmIChwYWNrZWRfZGlyKSB7CiAJCXNvcnRfcmVmX2RpcihwYWNrZWRfZGlyKTsKLQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfcmVmX2luX2RpcigKLQkJCQlwYWNrZWRfZGlyLCAwLAotCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCXJldHZhbCA9IGRvX2Zvcl9lYWNoX2VudHJ5X2luX2RpcigKKwkJCQlwYWNrZWRfZGlyLCAwLCBmbiwgY2JfZGF0YSk7CiAJfSBlbHNlIGlmIChsb29zZV9kaXIpIHsKIAkJc29ydF9yZWZfZGlyKGxvb3NlX2Rpcik7Ci0JCXJldHZhbCA9IGRvX2Zvcl9lYWNoX3JlZl9pbl9kaXIoCi0JCQkJbG9vc2VfZGlyLCAwLAotCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCXJldHZhbCA9IGRvX2Zvcl9lYWNoX2VudHJ5X2luX2RpcigKKwkJCQlsb29zZV9kaXIsIDAsIGZuLCBjYl9kYXRhKTsKIAl9CiAKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKgorICogQ2FsbCBmbiBmb3IgZWFjaCByZWZlcmVuY2UgaW4gdGhlIHNwZWNpZmllZCByZWZfY2FjaGUgZm9yIHdoaWNoIHRoZQorICogcmVmbmFtZSBiZWdpbnMgd2l0aCBiYXNlLiAgSWYgdHJpbSBpcyBub24temVybywgdGhlbiB0cmltIHRoYXQgbWFueQorICogY2hhcmFjdGVycyBvZmYgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJlZm5hbWUgYmVmb3JlIHBhc3NpbmcgdGhlCisgKiByZWZuYW1lIHRvIGZuLiAgZmxhZ3MgY2FuIGJlIERPX0ZPUl9FQUNIX0lOQ0xVREVfQlJPS0VOIHRvIGluY2x1ZGUKKyAqIGJyb2tlbiByZWZlcmVuY2VzIGluIHRoZSBpdGVyYXRpb24uICBJZiBmbiBldmVyIHJldHVybnMgYSBub24temVybworICogdmFsdWUsIHN0b3AgdGhlIGl0ZXJhdGlvbiBhbmQgcmV0dXJuIHRoYXQgdmFsdWU7IG90aGVyd2lzZSwgcmV0dXJuCisgKiAwLgorICovCitzdGF0aWMgaW50IGRvX2Zvcl9lYWNoX3JlZihzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzLCBjb25zdCBjaGFyICpiYXNlLAorCQkJICAgZWFjaF9yZWZfZm4gZm4sIGludCB0cmltLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IHJlZl9lbnRyeV9jYiBkYXRhOworCWRhdGEuYmFzZSA9IGJhc2U7CisJZGF0YS50cmltID0gdHJpbTsKKwlkYXRhLmZsYWdzID0gZmxhZ3M7CisJZGF0YS5mbiA9IGZuOworCWRhdGEuY2JfZGF0YSA9IGNiX2RhdGE7CisKKwlyZXR1cm4gZG9fZm9yX2VhY2hfZW50cnkocmVmcywgYmFzZSwgZG9fb25lX3JlZiwgJmRhdGEpOworfQorCiBzdGF0aWMgaW50IGRvX2hlYWRfcmVmKGNvbnN0IGNoYXIgKnN1Ym1vZHVsZSwgZWFjaF9yZWZfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKQEAgLTEzODEsMjMgKzE1OTksMjMgQEAKIAogaW50IGZvcl9lYWNoX3JlZihlYWNoX3JlZl9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKIHsKLQlyZXR1cm4gZG9fZm9yX2VhY2hfcmVmKE5VTEwsICIiLCBmbiwgMCwgMCwgY2JfZGF0YSk7CisJcmV0dXJuIGRvX2Zvcl9lYWNoX3JlZigmcmVmX2NhY2hlLCAiIiwgZm4sIDAsIDAsIGNiX2RhdGEpOwogfQogCiBpbnQgZm9yX2VhY2hfcmVmX3N1Ym1vZHVsZShjb25zdCBjaGFyICpzdWJtb2R1bGUsIGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXJldHVybiBkb19mb3JfZWFjaF9yZWYoc3VibW9kdWxlLCAiIiwgZm4sIDAsIDAsIGNiX2RhdGEpOworCXJldHVybiBkb19mb3JfZWFjaF9yZWYoZ2V0X3JlZl9jYWNoZShzdWJtb2R1bGUpLCAiIiwgZm4sIDAsIDAsIGNiX2RhdGEpOwogfQogCiBpbnQgZm9yX2VhY2hfcmVmX2luKGNvbnN0IGNoYXIgKnByZWZpeCwgZWFjaF9yZWZfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7Ci0JcmV0dXJuIGRvX2Zvcl9lYWNoX3JlZihOVUxMLCBwcmVmaXgsIGZuLCBzdHJsZW4ocHJlZml4KSwgMCwgY2JfZGF0YSk7CisJcmV0dXJuIGRvX2Zvcl9lYWNoX3JlZigmcmVmX2NhY2hlLCBwcmVmaXgsIGZuLCBzdHJsZW4ocHJlZml4KSwgMCwgY2JfZGF0YSk7CiB9CiAKIGludCBmb3JfZWFjaF9yZWZfaW5fc3VibW9kdWxlKGNvbnN0IGNoYXIgKnN1Ym1vZHVsZSwgY29uc3QgY2hhciAqcHJlZml4LAogCQllYWNoX3JlZl9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKIHsKLQlyZXR1cm4gZG9fZm9yX2VhY2hfcmVmKHN1Ym1vZHVsZSwgcHJlZml4LCBmbiwgc3RybGVuKHByZWZpeCksIDAsIGNiX2RhdGEpOworCXJldHVybiBkb19mb3JfZWFjaF9yZWYoZ2V0X3JlZl9jYWNoZShzdWJtb2R1bGUpLCBwcmVmaXgsIGZuLCBzdHJsZW4ocHJlZml4KSwgMCwgY2JfZGF0YSk7CiB9CiAKIGludCBmb3JfZWFjaF90YWdfcmVmKGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQpAQCAtMTQzMiw3ICsxNjUwLDcgQEAKIAogaW50IGZvcl9lYWNoX3JlcGxhY2VfcmVmKGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXJldHVybiBkb19mb3JfZWFjaF9yZWYoTlVMTCwgInJlZnMvcmVwbGFjZS8iLCBmbiwgMTMsIDAsIGNiX2RhdGEpOworCXJldHVybiBkb19mb3JfZWFjaF9yZWYoJnJlZl9jYWNoZSwgInJlZnMvcmVwbGFjZS8iLCBmbiwgMTMsIDAsIGNiX2RhdGEpOwogfQogCiBpbnQgaGVhZF9yZWZfbmFtZXNwYWNlZChlYWNoX3JlZl9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKQEAgLTE0NTUsNyArMTY3Myw3IEBACiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlpbnQgcmV0OwogCXN0cmJ1Zl9hZGRmKCZidWYsICIlc3JlZnMvIiwgZ2V0X2dpdF9uYW1lc3BhY2UoKSk7Ci0JcmV0ID0gZG9fZm9yX2VhY2hfcmVmKE5VTEwsIGJ1Zi5idWYsIGZuLCAwLCAwLCBjYl9kYXRhKTsKKwlyZXQgPSBkb19mb3JfZWFjaF9yZWYoJnJlZl9jYWNoZSwgYnVmLmJ1ZiwgZm4sIDAsIDAsIGNiX2RhdGEpOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xNDk3LDcgKzE3MTUsNyBAQAogCiBpbnQgZm9yX2VhY2hfcmF3cmVmKGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXJldHVybiBkb19mb3JfZWFjaF9yZWYoTlVMTCwgIiIsIGZuLCAwLAorCXJldHVybiBkb19mb3JfZWFjaF9yZWYoJnJlZl9jYWNoZSwgIiIsIGZuLCAwLAogCQkJICAgICAgIERPX0ZPUl9FQUNIX0lOQ0xVREVfQlJPS0VOLCBjYl9kYXRhKTsKIH0KIApAQCAtMTcwMyw3ICsxOTIxLDcgQEAKIAkgKiBuYW1lIGlzIGEgcHJvcGVyIHByZWZpeCBvZiBvdXIgcmVmbmFtZS4KIAkgKi8KIAlpZiAobWlzc2luZyAmJgotCSAgICAgIWlzX3JlZm5hbWVfYXZhaWxhYmxlKHJlZm5hbWUsIE5VTEwsIGdldF9wYWNrZWRfcmVmcyhnZXRfcmVmX2NhY2hlKE5VTEwpKSkpIHsKKwkgICAgICFpc19yZWZuYW1lX2F2YWlsYWJsZShyZWZuYW1lLCBOVUxMLCBnZXRfcGFja2VkX3JlZnMoJnJlZl9jYWNoZSkpKSB7CiAJCWxhc3RfZXJybm8gPSBFTk9URElSOwogCQlnb3RvIGVycm9yX3JldHVybjsKIAl9CkBAIC0xNzU1LDQ3ICsxOTczLDIyNCBAQAogCXJldHVybiBsb2NrX3JlZl9zaGExX2Jhc2ljKHJlZm5hbWUsIG9sZF9zaGExLCBmbGFncywgTlVMTCk7CiB9CiAKLXN0cnVjdCByZXBhY2tfd2l0aG91dF9yZWZfc2IgewotCWNvbnN0IGNoYXIgKnJlZm5hbWU7Ci0JaW50IGZkOwotfTsKLQotc3RhdGljIGludCByZXBhY2tfd2l0aG91dF9yZWZfZm4oY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJCQkgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQorLyoKKyAqIFdyaXRlIGFuIGVudHJ5IHRvIHRoZSBwYWNrZWQtcmVmcyBmaWxlIGZvciB0aGUgc3BlY2lmaWVkIHJlZm5hbWUuCisgKiBJZiBwZWVsZWQgaXMgbm9uLU5VTEwsIHdyaXRlIGl0IGFzIHRoZSBlbnRyeSdzIHBlZWxlZCB2YWx1ZS4KKyAqLworc3RhdGljIHZvaWQgd3JpdGVfcGFja2VkX2VudHJ5KGludCBmZCwgY2hhciAqcmVmbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpwZWVsZWQpCiB7Ci0Jc3RydWN0IHJlcGFja193aXRob3V0X3JlZl9zYiAqZGF0YSA9IGNiX2RhdGE7CiAJY2hhciBsaW5lW1BBVEhfTUFYICsgMTAwXTsKIAlpbnQgbGVuOwogCi0JaWYgKCFzdHJjbXAoZGF0YS0+cmVmbmFtZSwgcmVmbmFtZSkpCi0JCXJldHVybiAwOwogCWxlbiA9IHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiVzICVzXG4iLAogCQkgICAgICAgc2hhMV90b19oZXgoc2hhMSksIHJlZm5hbWUpOwogCS8qIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gYnV0IGp1c3QgYmVpbmcgZGVmZW5zaXZlICovCiAJaWYgKGxlbiA+IHNpemVvZihsaW5lKSkKIAkJZGllKCJ0b28gbG9uZyBhIHJlZm5hbWUgJyVzJyIsIHJlZm5hbWUpOwotCXdyaXRlX29yX2RpZShkYXRhLT5mZCwgbGluZSwgbGVuKTsKKwl3cml0ZV9vcl9kaWUoZmQsIGxpbmUsIGxlbik7CisKKwlpZiAocGVlbGVkKSB7CisJCWlmIChzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICJeJXNcbiIsCisJCQkgICAgIHNoYTFfdG9faGV4KHBlZWxlZCkpICE9IFBFRUxFRF9MSU5FX0xFTkdUSCkKKwkJCWRpZSgiaW50ZXJuYWwgZXJyb3IiKTsKKwkJd3JpdGVfb3JfZGllKGZkLCBsaW5lLCBQRUVMRURfTElORV9MRU5HVEgpOworCX0KK30KKworc3RydWN0IHJlZl90b19wcnVuZSB7CisJc3RydWN0IHJlZl90b19wcnVuZSAqbmV4dDsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsKK307CisKK3N0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSB7CisJdW5zaWduZWQgaW50IGZsYWdzOworCXN0cnVjdCByZWZfdG9fcHJ1bmUgKnJlZl90b19wcnVuZTsKKwlpbnQgZmQ7Cit9OworCitzdGF0aWMgaW50IHBhY2tfb25lX3JlZihzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSwgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3QgcGFja19yZWZzX2NiX2RhdGEgKmNiID0gY2JfZGF0YTsKKwllbnVtIHBlZWxfc3RhdHVzIHBlZWxfc3RhdHVzOworCWludCBpc190YWdfcmVmID0gIXByZWZpeGNtcChlbnRyeS0+bmFtZSwgInJlZnMvdGFncy8iKTsKKworCS8qIEFMV0FZUyBwYWNrIHJlZnMgdGhhdCB3ZXJlIGFscmVhZHkgcGFja2VkIG9yIGFyZSB0YWdzICovCisJaWYgKCEoY2ItPmZsYWdzICYgUEFDS19SRUZTX0FMTCkgJiYgIWlzX3RhZ19yZWYgJiYKKwkgICAgIShlbnRyeS0+ZmxhZyAmIFJFRl9JU1BBQ0tFRCkpCisJCXJldHVybiAwOworCisJLyogRG8gbm90IHBhY2sgc3ltYm9saWMgb3IgYnJva2VuIHJlZnM6ICovCisJaWYgKChlbnRyeS0+ZmxhZyAmIFJFRl9JU1NZTVJFRikgfHwgIXJlZl9yZXNvbHZlc190b19vYmplY3QoZW50cnkpKQorCQlyZXR1cm4gMDsKKworCXBlZWxfc3RhdHVzID0gcGVlbF9lbnRyeShlbnRyeSwgMSk7CisJaWYgKHBlZWxfc3RhdHVzICE9IFBFRUxfUEVFTEVEICYmIHBlZWxfc3RhdHVzICE9IFBFRUxfTk9OX1RBRykKKwkJZGllKCJpbnRlcm5hbCBlcnJvciBwZWVsaW5nIHJlZmVyZW5jZSAlcyAoJXMpIiwKKwkJICAgIGVudHJ5LT5uYW1lLCBzaGExX3RvX2hleChlbnRyeS0+dS52YWx1ZS5zaGExKSk7CisJd3JpdGVfcGFja2VkX2VudHJ5KGNiLT5mZCwgZW50cnktPm5hbWUsIGVudHJ5LT51LnZhbHVlLnNoYTEsCisJCQkgICBwZWVsX3N0YXR1cyA9PSBQRUVMX1BFRUxFRCA/CisJCQkgICBlbnRyeS0+dS52YWx1ZS5wZWVsZWQgOiBOVUxMKTsKKworCS8qIElmIHRoZSByZWYgd2FzIGFscmVhZHkgcGFja2VkLCB0aGVyZSBpcyBubyBuZWVkIHRvIHBydW5lIGl0LiAqLworCWlmICgoY2ItPmZsYWdzICYgUEFDS19SRUZTX1BSVU5FKSAmJiAhKGVudHJ5LT5mbGFnICYgUkVGX0lTUEFDS0VEKSkgeworCQlpbnQgbmFtZWxlbiA9IHN0cmxlbihlbnRyeS0+bmFtZSkgKyAxOworCQlzdHJ1Y3QgcmVmX3RvX3BydW5lICpuID0geGNhbGxvYygxLCBzaXplb2YoKm4pICsgbmFtZWxlbik7CisJCWhhc2hjcHkobi0+c2hhMSwgZW50cnktPnUudmFsdWUuc2hhMSk7CisJCXN0cmNweShuLT5uYW1lLCBlbnRyeS0+bmFtZSk7CisJCW4tPm5leHQgPSBjYi0+cmVmX3RvX3BydW5lOworCQljYi0+cmVmX3RvX3BydW5lID0gbjsKKwl9CiAJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBSZW1vdmUgZW1wdHkgcGFyZW50cywgYnV0IHNwYXJlIHJlZnMvIGFuZCBpbW1lZGlhdGUgc3ViZGlycy4KKyAqIE5vdGU6IG11bmdlcyAqbmFtZS4KKyAqLworc3RhdGljIHZvaWQgdHJ5X3JlbW92ZV9lbXB0eV9wYXJlbnRzKGNoYXIgKm5hbWUpCit7CisJY2hhciAqcCwgKnE7CisJaW50IGk7CisJcCA9IG5hbWU7CisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykgeyAvKiByZWZzL3toZWFkcyx0YWdzLC4uLn0vICovCisJCXdoaWxlICgqcCAmJiAqcCAhPSAnLycpCisJCQlwKys7CisJCS8qIHRvbGVyYXRlIGR1cGxpY2F0ZSBzbGFzaGVzOyBzZWUgY2hlY2tfcmVmbmFtZV9mb3JtYXQoKSAqLworCQl3aGlsZSAoKnAgPT0gJy8nKQorCQkJcCsrOworCX0KKwlmb3IgKHEgPSBwOyAqcTsgcSsrKQorCQk7CisJd2hpbGUgKDEpIHsKKwkJd2hpbGUgKHEgPiBwICYmICpxICE9ICcvJykKKwkJCXEtLTsKKwkJd2hpbGUgKHEgPiBwICYmICoocS0xKSA9PSAnLycpCisJCQlxLS07CisJCWlmIChxID09IHApCisJCQlicmVhazsKKwkJKnEgPSAnXDAnOworCQlpZiAocm1kaXIoZ2l0X3BhdGgoIiVzIiwgbmFtZSkpKQorCQkJYnJlYWs7CisJfQorfQorCisvKiBtYWtlIHN1cmUgbm9ib2R5IHRvdWNoZWQgdGhlIHJlZiwgYW5kIHVubGluayAqLworc3RhdGljIHZvaWQgcHJ1bmVfcmVmKHN0cnVjdCByZWZfdG9fcHJ1bmUgKnIpCit7CisJc3RydWN0IHJlZl9sb2NrICpsb2NrID0gbG9ja19yZWZfc2hhMShyLT5uYW1lICsgNSwgci0+c2hhMSk7CisKKwlpZiAobG9jaykgeworCQl1bmxpbmtfb3Jfd2FybihnaXRfcGF0aCgiJXMiLCByLT5uYW1lKSk7CisJCXVubG9ja19yZWYobG9jayk7CisJCXRyeV9yZW1vdmVfZW1wdHlfcGFyZW50cyhyLT5uYW1lKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBydW5lX3JlZnMoc3RydWN0IHJlZl90b19wcnVuZSAqcikKK3sKKwl3aGlsZSAocikgeworCQlwcnVuZV9yZWYocik7CisJCXIgPSByLT5uZXh0OworCX0KK30KKwogc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgcGFja2xvY2s7CiAKK2ludCBwYWNrX3JlZnModW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSBjYmRhdGE7CisKKwltZW1zZXQoJmNiZGF0YSwgMCwgc2l6ZW9mKGNiZGF0YSkpOworCWNiZGF0YS5mbGFncyA9IGZsYWdzOworCisJY2JkYXRhLmZkID0gaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmcGFja2xvY2ssIGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLAorCQkJCQkgICAgICBMT0NLX0RJRV9PTl9FUlJPUik7CisKKwl3cml0ZV9vcl9kaWUoY2JkYXRhLmZkLCBQQUNLRURfUkVGU19IRUFERVIsIHN0cmxlbihQQUNLRURfUkVGU19IRUFERVIpKTsKKworCWRvX2Zvcl9lYWNoX2VudHJ5KCZyZWZfY2FjaGUsICIiLCBwYWNrX29uZV9yZWYsICZjYmRhdGEpOworCWlmIChjb21taXRfbG9ja19maWxlKCZwYWNrbG9jaykgPCAwKQorCQlkaWVfZXJybm8oInVuYWJsZSB0byBvdmVyd3JpdGUgb2xkIHJlZi1wYWNrIGZpbGUiKTsKKwlwcnVuZV9yZWZzKGNiZGF0YS5yZWZfdG9fcHJ1bmUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJlcGFja19yZWZfZm4oc3RydWN0IHJlZl9lbnRyeSAqZW50cnksIHZvaWQgKmNiX2RhdGEpCit7CisJaW50ICpmZCA9IGNiX2RhdGE7CisJZW51bSBwZWVsX3N0YXR1cyBwZWVsX3N0YXR1czsKKworCWlmIChlbnRyeS0+ZmxhZyAmIFJFRl9JU0JST0tFTikgeworCQkvKiBUaGlzIHNob3VsZG4ndCBoYXBwZW4gdG8gcGFja2VkIHJlZnMuICovCisJCWVycm9yKCIlcyBpcyBicm9rZW4hIiwgZW50cnktPm5hbWUpOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKCFoYXNfc2hhMV9maWxlKGVudHJ5LT51LnZhbHVlLnNoYTEpKSB7CisJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJCWludCBmbGFnczsKKworCQlpZiAocmVhZF9yZWZfZnVsbChlbnRyeS0+bmFtZSwgc2hhMSwgMCwgJmZsYWdzKSkKKwkJCS8qIFdlIHNob3VsZCBhdCBsZWFzdCBoYXZlIGZvdW5kIHRoZSBwYWNrZWQgcmVmLiAqLworCQkJZGllKCJJbnRlcm5hbCBlcnJvciIpOworCQlpZiAoKGZsYWdzICYgUkVGX0lTU1lNUkVGKSB8fCAhKGZsYWdzICYgUkVGX0lTUEFDS0VEKSkKKwkJCS8qCisJCQkgKiBUaGlzIHBhY2tlZCByZWZlcmVuY2UgaXMgb3ZlcnJpZGRlbiBieSBhCisJCQkgKiBsb29zZSByZWZlcmVuY2UsIHNvIGl0IGlzIE9LIHRoYXQgaXRzIHZhbHVlCisJCQkgKiBpcyBubyBsb25nZXIgdmFsaWQ7IGZvciBleGFtcGxlLCBpdCBtaWdodAorCQkJICogcmVmZXIgdG8gYW4gb2JqZWN0IHRoYXQgaGFzIGJlZW4gZ2FyYmFnZQorCQkJICogY29sbGVjdGVkLiAgRm9yIHRoaXMgcHVycG9zZSB3ZSBkb24ndCBldmVuCisJCQkgKiBjYXJlIHdoZXRoZXIgdGhlIGxvb3NlIHJlZmVyZW5jZSBpdHNlbGYgaXMKKwkJCSAqIGludmFsaWQsIGJyb2tlbiwgc3ltYm9saWMsIGV0Yy4gIFNpbGVudGx5CisJCQkgKiBvbWl0IHRoZSBwYWNrZWQgcmVmZXJlbmNlIGZyb20gdGhlIG91dHB1dC4KKwkJCSAqLworCQkJcmV0dXJuIDA7CisJCS8qCisJCSAqIFRoZXJlIGlzIG5vIG92ZXJyaWRpbmcgbG9vc2UgcmVmZXJlbmNlLCBzbyB0aGUgZmFjdAorCQkgKiB0aGF0IHRoaXMgcmVmZXJlbmNlIGRvZXNuJ3QgcmVmZXIgdG8gYSB2YWxpZCBvYmplY3QKKwkJICogaW5kaWNhdGVzIHNvbWUga2luZCBvZiByZXBvc2l0b3J5IGNvcnJ1cHRpb24uCisJCSAqIFJlcG9ydCB0aGUgcHJvYmxlbSwgdGhlbiBvbWl0IHRoZSByZWZlcmVuY2UgZnJvbQorCQkgKiB0aGUgb3V0cHV0LgorCQkgKi8KKwkJZXJyb3IoIiVzIGRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgb2JqZWN0ISIsIGVudHJ5LT5uYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcGVlbF9zdGF0dXMgPSBwZWVsX2VudHJ5KGVudHJ5LCAwKTsKKwl3cml0ZV9wYWNrZWRfZW50cnkoKmZkLCBlbnRyeS0+bmFtZSwgZW50cnktPnUudmFsdWUuc2hhMSwKKwkJCSAgIHBlZWxfc3RhdHVzID09IFBFRUxfUEVFTEVEID8KKwkJCSAgIGVudHJ5LT51LnZhbHVlLnBlZWxlZCA6IE5VTEwpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgcmVwYWNrX3dpdGhvdXRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUpCiB7Ci0Jc3RydWN0IHJlcGFja193aXRob3V0X3JlZl9zYiBkYXRhOwotCXN0cnVjdCByZWZfY2FjaGUgKnJlZnMgPSBnZXRfcmVmX2NhY2hlKE5VTEwpOwotCXN0cnVjdCByZWZfZGlyICpwYWNrZWQgPSBnZXRfcGFja2VkX3JlZnMocmVmcyk7Ci0JaWYgKGZpbmRfcmVmKHBhY2tlZCwgcmVmbmFtZSkgPT0gTlVMTCkKLQkJcmV0dXJuIDA7Ci0JZGF0YS5yZWZuYW1lID0gcmVmbmFtZTsKLQlkYXRhLmZkID0gaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmcGFja2xvY2ssIGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLCAwKTsKLQlpZiAoZGF0YS5mZCA8IDApIHsKKwlpbnQgZmQ7CisJc3RydWN0IHJlZl9kaXIgKnBhY2tlZDsKKworCWlmICghZ2V0X3BhY2tlZF9yZWYocmVmbmFtZSkpCisJCXJldHVybiAwOyAvKiByZWZuYW1lIGRvZXMgbm90IGV4aXN0IGluIHBhY2tlZCByZWZzICovCisKKwlmZCA9IGhvbGRfbG9ja19maWxlX2Zvcl91cGRhdGUoJnBhY2tsb2NrLCBnaXRfcGF0aCgicGFja2VkLXJlZnMiKSwgMCk7CisJaWYgKGZkIDwgMCkgewogCQl1bmFibGVfdG9fbG9ja19lcnJvcihnaXRfcGF0aCgicGFja2VkLXJlZnMiKSwgZXJybm8pOwogCQlyZXR1cm4gZXJyb3IoImNhbm5vdCBkZWxldGUgJyVzJyBmcm9tIHBhY2tlZCByZWZzIiwgcmVmbmFtZSk7CiAJfQotCWNsZWFyX3BhY2tlZF9yZWZfY2FjaGUocmVmcyk7Ci0JcGFja2VkID0gZ2V0X3BhY2tlZF9yZWZzKHJlZnMpOwotCWRvX2Zvcl9lYWNoX3JlZl9pbl9kaXIocGFja2VkLCAwLCAiIiwgcmVwYWNrX3dpdGhvdXRfcmVmX2ZuLCAwLCAwLCAmZGF0YSk7CisJY2xlYXJfcGFja2VkX3JlZl9jYWNoZSgmcmVmX2NhY2hlKTsKKwlwYWNrZWQgPSBnZXRfcGFja2VkX3JlZnMoJnJlZl9jYWNoZSk7CisJLyogUmVtb3ZlIHJlZm5hbWUgZnJvbSB0aGUgY2FjaGUuICovCisJaWYgKHJlbW92ZV9lbnRyeShwYWNrZWQsIHJlZm5hbWUpID09IC0xKSB7CisJCS8qCisJCSAqIFRoZSBwYWNrZWQgZW50cnkgZGlzYXBwZWFyZWQgd2hpbGUgd2Ugd2VyZQorCQkgKiBhY3F1aXJpbmcgdGhlIGxvY2suCisJCSAqLworCQlyb2xsYmFja19sb2NrX2ZpbGUoJnBhY2tsb2NrKTsKKwkJcmV0dXJuIDA7CisJfQorCXdyaXRlX29yX2RpZShmZCwgUEFDS0VEX1JFRlNfSEVBREVSLCBzdHJsZW4oUEFDS0VEX1JFRlNfSEVBREVSKSk7CisJZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKHBhY2tlZCwgMCwgcmVwYWNrX3JlZl9mbiwgJmZkKTsKIAlyZXR1cm4gY29tbWl0X2xvY2tfZmlsZSgmcGFja2xvY2spOwogfQogCkBAIC0xODI0LDcgKzIyMTksNyBAQAogCXJldCB8PSByZXBhY2tfd2l0aG91dF9yZWYobG9jay0+cmVmX25hbWUpOwogCiAJdW5saW5rX29yX3dhcm4oZ2l0X3BhdGgoImxvZ3MvJXMiLCBsb2NrLT5yZWZfbmFtZSkpOwotCWludmFsaWRhdGVfcmVmX2NhY2hlKE5VTEwpOworCWNsZWFyX2xvb3NlX3JlZl9jYWNoZSgmcmVmX2NhY2hlKTsKIAl1bmxvY2tfcmVmKGxvY2spOwogCXJldHVybiByZXQ7CiB9CkBAIC0xODQ2LDcgKzIyNDEsNiBAQAogCXN0cnVjdCBzdGF0IGxvZ2luZm87CiAJaW50IGxvZyA9ICFsc3RhdChnaXRfcGF0aCgibG9ncy8lcyIsIG9sZHJlZm5hbWUpLCAmbG9naW5mbyk7CiAJY29uc3QgY2hhciAqc3ltcmVmID0gTlVMTDsKLQlzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzID0gZ2V0X3JlZl9jYWNoZShOVUxMKTsKIAogCWlmIChsb2cgJiYgU19JU0xOSyhsb2dpbmZvLnN0X21vZGUpKQogCQlyZXR1cm4gZXJyb3IoInJlZmxvZyBmb3IgJXMgaXMgYSBzeW1saW5rIiwgb2xkcmVmbmFtZSk7CkBAIC0xODU4LDEwICsyMjUyLDEwIEBACiAJaWYgKCFzeW1yZWYpCiAJCXJldHVybiBlcnJvcigicmVmbmFtZSAlcyBub3QgZm91bmQiLCBvbGRyZWZuYW1lKTsKIAotCWlmICghaXNfcmVmbmFtZV9hdmFpbGFibGUobmV3cmVmbmFtZSwgb2xkcmVmbmFtZSwgZ2V0X3BhY2tlZF9yZWZzKHJlZnMpKSkKKwlpZiAoIWlzX3JlZm5hbWVfYXZhaWxhYmxlKG5ld3JlZm5hbWUsIG9sZHJlZm5hbWUsIGdldF9wYWNrZWRfcmVmcygmcmVmX2NhY2hlKSkpCiAJCXJldHVybiAxOwogCi0JaWYgKCFpc19yZWZuYW1lX2F2YWlsYWJsZShuZXdyZWZuYW1lLCBvbGRyZWZuYW1lLCBnZXRfbG9vc2VfcmVmcyhyZWZzKSkpCisJaWYgKCFpc19yZWZuYW1lX2F2YWlsYWJsZShuZXdyZWZuYW1lLCBvbGRyZWZuYW1lLCBnZXRfbG9vc2VfcmVmcygmcmVmX2NhY2hlKSkpCiAJCXJldHVybiAxOwogCiAJaWYgKGxvZyAmJiByZW5hbWUoZ2l0X3BhdGgoImxvZ3MvJXMiLCBvbGRyZWZuYW1lKSwgZ2l0X3BhdGgoVE1QX1JFTkFNRURfTE9HKSkpCkBAIC0yMTE3LDcgKzI1MTEsNyBAQAogCQl1bmxvY2tfcmVmKGxvY2spOwogCQlyZXR1cm4gLTE7CiAJfQotCWNsZWFyX2xvb3NlX3JlZl9jYWNoZShnZXRfcmVmX2NhY2hlKE5VTEwpKTsKKwljbGVhcl9sb29zZV9yZWZfY2FjaGUoJnJlZl9jYWNoZSk7CiAJaWYgKGxvZ19yZWZfd3JpdGUobG9jay0+cmVmX25hbWUsIGxvY2stPm9sZF9zaGExLCBzaGExLCBsb2dtc2cpIDwgMCB8fAogCSAgICAoc3RyY21wKGxvY2stPnJlZl9uYW1lLCBsb2NrLT5vcmlnX3JlZl9uYW1lKSAmJgogCSAgICAgbG9nX3JlZl93cml0ZShsb2NrLT5vcmlnX3JlZl9uYW1lLCBsb2NrLT5vbGRfc2hhMSwgc2hhMSwgbG9nbXNnKSA8IDApKSB7CkBAIC0yMzMzLDU5ICsyNzI3LDExNyBAQAogCXJldHVybiAxOwogfQogCi1pbnQgZm9yX2VhY2hfcmVjZW50X3JlZmxvZ19lbnQoY29uc3QgY2hhciAqcmVmbmFtZSwgZWFjaF9yZWZsb2dfZW50X2ZuIGZuLCBsb25nIG9mcywgdm9pZCAqY2JfZGF0YSkKK3N0YXRpYyBpbnQgc2hvd19vbmVfcmVmbG9nX2VudChzdHJ1Y3Qgc3RyYnVmICpzYiwgZWFjaF9yZWZsb2dfZW50X2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCWNvbnN0IGNoYXIgKmxvZ2ZpbGU7Ci0JRklMRSAqbG9nZnA7Ci0Jc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwotCWludCByZXQgPSAwOworCXVuc2lnbmVkIGNoYXIgb3NoYTFbMjBdLCBuc2hhMVsyMF07CisJY2hhciAqZW1haWxfZW5kLCAqbWVzc2FnZTsKKwl1bnNpZ25lZCBsb25nIHRpbWVzdGFtcDsKKwlpbnQgdHo7CiAKLQlsb2dmaWxlID0gZ2l0X3BhdGgoImxvZ3MvJXMiLCByZWZuYW1lKTsKLQlsb2dmcCA9IGZvcGVuKGxvZ2ZpbGUsICJyIik7CisJLyogb2xkIFNQIG5ldyBTUCBuYW1lIDxlbWFpbD4gU1AgdGltZSBUQUIgbXNnIExGICovCisJaWYgKHNiLT5sZW4gPCA4MyB8fCBzYi0+YnVmW3NiLT5sZW4gLSAxXSAhPSAnXG4nIHx8CisJICAgIGdldF9zaGExX2hleChzYi0+YnVmLCBvc2hhMSkgfHwgc2ItPmJ1Zls0MF0gIT0gJyAnIHx8CisJICAgIGdldF9zaGExX2hleChzYi0+YnVmICsgNDEsIG5zaGExKSB8fCBzYi0+YnVmWzgxXSAhPSAnICcgfHwKKwkgICAgIShlbWFpbF9lbmQgPSBzdHJjaHIoc2ItPmJ1ZiArIDgyLCAnPicpKSB8fAorCSAgICBlbWFpbF9lbmRbMV0gIT0gJyAnIHx8CisJICAgICEodGltZXN0YW1wID0gc3RydG91bChlbWFpbF9lbmQgKyAyLCAmbWVzc2FnZSwgMTApKSB8fAorCSAgICAhbWVzc2FnZSB8fCBtZXNzYWdlWzBdICE9ICcgJyB8fAorCSAgICAobWVzc2FnZVsxXSAhPSAnKycgJiYgbWVzc2FnZVsxXSAhPSAnLScpIHx8CisJICAgICFpc2RpZ2l0KG1lc3NhZ2VbMl0pIHx8ICFpc2RpZ2l0KG1lc3NhZ2VbM10pIHx8CisJICAgICFpc2RpZ2l0KG1lc3NhZ2VbNF0pIHx8ICFpc2RpZ2l0KG1lc3NhZ2VbNV0pKQorCQlyZXR1cm4gMDsgLyogY29ycnVwdD8gKi8KKwllbWFpbF9lbmRbMV0gPSAnXDAnOworCXR6ID0gc3RydG9sKG1lc3NhZ2UgKyAxLCBOVUxMLCAxMCk7CisJaWYgKG1lc3NhZ2VbNl0gIT0gJ1x0JykKKwkJbWVzc2FnZSArPSA2OworCWVsc2UKKwkJbWVzc2FnZSArPSA3OworCXJldHVybiBmbihvc2hhMSwgbnNoYTEsIHNiLT5idWYgKyA4MiwgdGltZXN0YW1wLCB0eiwgbWVzc2FnZSwgY2JfZGF0YSk7Cit9CisKK3N0YXRpYyBjaGFyICpmaW5kX2JlZ2lubmluZ19vZl9saW5lKGNoYXIgKmJvYiwgY2hhciAqc2NhbikKK3sKKwl3aGlsZSAoYm9iIDwgc2NhbiAmJiAqKC0tc2NhbikgIT0gJ1xuJykKKwkJOyAvKiBrZWVwIHNjYW5uaW5nIGJhY2t3YXJkcyAqLworCS8qCisJICogUmV0dXJuIGVpdGhlciBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlciwgb3IgTEYgYXQgdGhlIGVuZCBvZgorCSAqIHRoZSBwcmV2aW91cyBsaW5lLgorCSAqLworCXJldHVybiBzY2FuOworfQorCitpbnQgZm9yX2VhY2hfcmVmbG9nX2VudF9yZXZlcnNlKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGVhY2hfcmVmbG9nX2VudF9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CisJRklMRSAqbG9nZnA7CisJbG9uZyBwb3M7CisJaW50IHJldCA9IDAsIGF0X3RhaWwgPSAxOworCisJbG9nZnAgPSBmb3BlbihnaXRfcGF0aCgibG9ncy8lcyIsIHJlZm5hbWUpLCAiciIpOwogCWlmICghbG9nZnApCiAJCXJldHVybiAtMTsKIAotCWlmIChvZnMpIHsKLQkJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQkJaWYgKGZzdGF0KGZpbGVubyhsb2dmcCksICZzdGF0YnVmKSB8fAotCQkgICAgc3RhdGJ1Zi5zdF9zaXplIDwgb2ZzIHx8Ci0JCSAgICBmc2Vlayhsb2dmcCwgLW9mcywgU0VFS19FTkQpIHx8Ci0JCSAgICBzdHJidWZfZ2V0d2hvbGVsaW5lKCZzYiwgbG9nZnAsICdcbicpKSB7Ci0JCQlmY2xvc2UobG9nZnApOwotCQkJc3RyYnVmX3JlbGVhc2UoJnNiKTsKLQkJCXJldHVybiAtMTsKKwkvKiBKdW1wIHRvIHRoZSBlbmQgKi8KKwlpZiAoZnNlZWsobG9nZnAsIDAsIFNFRUtfRU5EKSA8IDApCisJCXJldHVybiBlcnJvcigiY2Fubm90IHNlZWsgYmFjayByZWZsb2cgZm9yICVzOiAlcyIsCisJCQkgICAgIHJlZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJcG9zID0gZnRlbGwobG9nZnApOworCXdoaWxlICghcmV0ICYmIDAgPCBwb3MpIHsKKwkJaW50IGNudDsKKwkJc2l6ZV90IG5yZWFkOworCQljaGFyIGJ1ZltCVUZTSVpdOworCQljaGFyICplbmRwLCAqc2NhbnA7CisKKwkJLyogRmlsbCBuZXh0IGJsb2NrIGZyb20gdGhlIGVuZCAqLworCQljbnQgPSAoc2l6ZW9mKGJ1ZikgPCBwb3MpID8gc2l6ZW9mKGJ1ZikgOiBwb3M7CisJCWlmIChmc2Vlayhsb2dmcCwgcG9zIC0gY250LCBTRUVLX1NFVCkpCisJCQlyZXR1cm4gZXJyb3IoImNhbm5vdCBzZWVrIGJhY2sgcmVmbG9nIGZvciAlczogJXMiLAorCQkJCSAgICAgcmVmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJbnJlYWQgPSBmcmVhZChidWYsIGNudCwgMSwgbG9nZnApOworCQlpZiAobnJlYWQgIT0gMSkKKwkJCXJldHVybiBlcnJvcigiY2Fubm90IHJlYWQgJWQgYnl0ZXMgZnJvbSByZWZsb2cgZm9yICVzOiAlcyIsCisJCQkJICAgICBjbnQsIHJlZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBvcyAtPSBjbnQ7CisKKwkJc2NhbnAgPSBlbmRwID0gYnVmICsgY250OworCQlpZiAoYXRfdGFpbCAmJiBzY2FucFstMV0gPT0gJ1xuJykKKwkJCS8qIExvb2tpbmcgYXQgdGhlIGZpbmFsIExGIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgKi8KKwkJCXNjYW5wLS07CisJCWF0X3RhaWwgPSAwOworCisJCXdoaWxlIChidWYgPCBzY2FucCkgeworCQkJLyoKKwkJCSAqIHRlcm1pbmF0aW5nIExGIG9mIHRoZSBwcmV2aW91cyBsaW5lLCBvciB0aGUgYmVnaW5uaW5nCisJCQkgKiBvZiB0aGUgYnVmZmVyLgorCQkJICovCisJCQljaGFyICpicDsKKworCQkJYnAgPSBmaW5kX2JlZ2lubmluZ19vZl9saW5lKGJ1Ziwgc2NhbnApOworCisJCQlpZiAoKmJwICE9ICdcbicpIHsKKwkJCQlzdHJidWZfc3BsaWNlKCZzYiwgMCwgMCwgYnVmLCBlbmRwIC0gYnVmKTsKKwkJCQlpZiAocG9zKQorCQkJCQlicmVhazsgLyogbmVlZCB0byBmaWxsIGFub3RoZXIgYmxvY2sgKi8KKwkJCQlzY2FucCA9IGJ1ZiAtIDE7IC8qIGxlYXZlIGxvb3AgKi8KKwkJCX0gZWxzZSB7CisJCQkJLyoKKwkJCQkgKiAoYnAgKyAxKSB0aHJ1IGVuZHAgaXMgdGhlIGJlZ2lubmluZyBvZiB0aGUKKwkJCQkgKiBjdXJyZW50IGxpbmUgd2UgaGF2ZSBpbiBzYgorCQkJCSAqLworCQkJCXN0cmJ1Zl9zcGxpY2UoJnNiLCAwLCAwLCBicCArIDEsIGVuZHAgLSAoYnAgKyAxKSk7CisJCQkJc2NhbnAgPSBicDsKKwkJCQllbmRwID0gYnAgKyAxOworCQkJfQorCQkJcmV0ID0gc2hvd19vbmVfcmVmbG9nX2VudCgmc2IsIGZuLCBjYl9kYXRhKTsKKwkJCXN0cmJ1Zl9yZXNldCgmc2IpOworCQkJaWYgKHJldCkKKwkJCQlicmVhazsKIAkJfQotCX0KIAotCXdoaWxlICghc3RyYnVmX2dldHdob2xlbGluZSgmc2IsIGxvZ2ZwLCAnXG4nKSkgewotCQl1bnNpZ25lZCBjaGFyIG9zaGExWzIwXSwgbnNoYTFbMjBdOwotCQljaGFyICplbWFpbF9lbmQsICptZXNzYWdlOwotCQl1bnNpZ25lZCBsb25nIHRpbWVzdGFtcDsKLQkJaW50IHR6OwotCi0JCS8qIG9sZCBTUCBuZXcgU1AgbmFtZSA8ZW1haWw+IFNQIHRpbWUgVEFCIG1zZyBMRiAqLwotCQlpZiAoc2IubGVuIDwgODMgfHwgc2IuYnVmW3NiLmxlbiAtIDFdICE9ICdcbicgfHwKLQkJICAgIGdldF9zaGExX2hleChzYi5idWYsIG9zaGExKSB8fCBzYi5idWZbNDBdICE9ICcgJyB8fAotCQkgICAgZ2V0X3NoYTFfaGV4KHNiLmJ1ZiArIDQxLCBuc2hhMSkgfHwgc2IuYnVmWzgxXSAhPSAnICcgfHwKLQkJICAgICEoZW1haWxfZW5kID0gc3RyY2hyKHNiLmJ1ZiArIDgyLCAnPicpKSB8fAotCQkgICAgZW1haWxfZW5kWzFdICE9ICcgJyB8fAotCQkgICAgISh0aW1lc3RhbXAgPSBzdHJ0b3VsKGVtYWlsX2VuZCArIDIsICZtZXNzYWdlLCAxMCkpIHx8Ci0JCSAgICAhbWVzc2FnZSB8fCBtZXNzYWdlWzBdICE9ICcgJyB8fAotCQkgICAgKG1lc3NhZ2VbMV0gIT0gJysnICYmIG1lc3NhZ2VbMV0gIT0gJy0nKSB8fAotCQkgICAgIWlzZGlnaXQobWVzc2FnZVsyXSkgfHwgIWlzZGlnaXQobWVzc2FnZVszXSkgfHwKLQkJICAgICFpc2RpZ2l0KG1lc3NhZ2VbNF0pIHx8ICFpc2RpZ2l0KG1lc3NhZ2VbNV0pKQotCQkJY29udGludWU7IC8qIGNvcnJ1cHQ/ICovCi0JCWVtYWlsX2VuZFsxXSA9ICdcMCc7Ci0JCXR6ID0gc3RydG9sKG1lc3NhZ2UgKyAxLCBOVUxMLCAxMCk7Ci0JCWlmIChtZXNzYWdlWzZdICE9ICdcdCcpCi0JCQltZXNzYWdlICs9IDY7Ci0JCWVsc2UKLQkJCW1lc3NhZ2UgKz0gNzsKLQkJcmV0ID0gZm4ob3NoYTEsIG5zaGExLCBzYi5idWYgKyA4MiwgdGltZXN0YW1wLCB0eiwgbWVzc2FnZSwKLQkJCSBjYl9kYXRhKTsKLQkJaWYgKHJldCkKLQkJCWJyZWFrOwogCX0KKwlpZiAoIXJldCAmJiBzYi5sZW4pCisJCXJldCA9IHNob3dfb25lX3JlZmxvZ19lbnQoJnNiLCBmbiwgY2JfZGF0YSk7CisKIAlmY2xvc2UobG9nZnApOwogCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiAJcmV0dXJuIHJldDsKQEAgLTIzOTMsOSArMjg0NSwyMCBAQAogCiBpbnQgZm9yX2VhY2hfcmVmbG9nX2VudChjb25zdCBjaGFyICpyZWZuYW1lLCBlYWNoX3JlZmxvZ19lbnRfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7Ci0JcmV0dXJuIGZvcl9lYWNoX3JlY2VudF9yZWZsb2dfZW50KHJlZm5hbWUsIGZuLCAwLCBjYl9kYXRhKTsKLX0KKwlGSUxFICpsb2dmcDsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CisJaW50IHJldCA9IDA7CiAKKwlsb2dmcCA9IGZvcGVuKGdpdF9wYXRoKCJsb2dzLyVzIiwgcmVmbmFtZSksICJyIik7CisJaWYgKCFsb2dmcCkKKwkJcmV0dXJuIC0xOworCisJd2hpbGUgKCFyZXQgJiYgIXN0cmJ1Zl9nZXR3aG9sZWxpbmUoJnNiLCBsb2dmcCwgJ1xuJykpCisJCXJldCA9IHNob3dfb25lX3JlZmxvZ19lbnQoJnNiLCBmbiwgY2JfZGF0YSk7CisJZmNsb3NlKGxvZ2ZwKTsKKwlzdHJidWZfcmVsZWFzZSgmc2IpOworCXJldHVybiByZXQ7Cit9CiAvKgogICogQ2FsbCBmbiBmb3IgZWFjaCByZWZsb2cgaW4gdGhlIG5hbWVzcGFjZSBpbmRpY2F0ZWQgYnkgbmFtZS4gIG5hbWUKICAqIG11c3QgYmUgZW1wdHkgb3IgZW5kIHdpdGggJy8nLiAgTmFtZSB3aWxsIGJlIHVzZWQgYXMgYSBzY3JhdGNoCkBAIC0yNTk1LDMgKzMwNTgsNDYgQEAKIAlmcmVlKHNob3J0X25hbWUpOwogCXJldHVybiB4c3RyZHVwKHJlZm5hbWUpOwogfQorCitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0ICpoaWRlX3JlZnM7CisKK2ludCBwYXJzZV9oaWRlX3JlZnNfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKnNlY3Rpb24pCit7CisJaWYgKCFzdHJjbXAoInRyYW5zZmVyLmhpZGVyZWZzIiwgdmFyKSB8fAorCSAgICAvKiBORUVEU1dPUks6IHVzZSBwYXJzZV9jb25maWdfa2V5KCkgb25jZSBib3RoIGFyZSBtZXJnZWQgKi8KKwkgICAgKCFwcmVmaXhjbXAodmFyLCBzZWN0aW9uKSAmJiB2YXJbc3RybGVuKHNlY3Rpb24pXSA9PSAnLicgJiYKKwkgICAgICFzdHJjbXAodmFyICsgc3RybGVuKHNlY3Rpb24pLCAiLmhpZGVyZWZzIikpKSB7CisJCWNoYXIgKnJlZjsKKwkJaW50IGxlbjsKKworCQlpZiAoIXZhbHVlKQorCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CisJCXJlZiA9IHhzdHJkdXAodmFsdWUpOworCQlsZW4gPSBzdHJsZW4ocmVmKTsKKwkJd2hpbGUgKGxlbiAmJiByZWZbbGVuIC0gMV0gPT0gJy8nKQorCQkJcmVmWy0tbGVuXSA9ICdcMCc7CisJCWlmICghaGlkZV9yZWZzKSB7CisJCQloaWRlX3JlZnMgPSB4Y2FsbG9jKDEsIHNpemVvZigqaGlkZV9yZWZzKSk7CisJCQloaWRlX3JlZnMtPnN0cmR1cF9zdHJpbmdzID0gMTsKKwkJfQorCQlzdHJpbmdfbGlzdF9hcHBlbmQoaGlkZV9yZWZzLCByZWYpOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IHJlZl9pc19oaWRkZW4oY29uc3QgY2hhciAqcmVmbmFtZSkKK3sKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKworCWlmICghaGlkZV9yZWZzKQorCQlyZXR1cm4gMDsKKwlmb3JfZWFjaF9zdHJpbmdfbGlzdF9pdGVtKGl0ZW0sIGhpZGVfcmVmcykgeworCQlpbnQgbGVuOworCQlpZiAocHJlZml4Y21wKHJlZm5hbWUsIGl0ZW0tPnN0cmluZykpCisJCQljb250aW51ZTsKKwkJbGVuID0gc3RybGVuKGl0ZW0tPnN0cmluZyk7CisJCWlmICghcmVmbmFtZVtsZW5dIHx8IHJlZm5hbWVbbGVuXSA9PSAnLycpCisJCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9yZWZzLmggYi9yZWZzLmgKaW5kZXggZDZjMmZlMi4uMjQ2YmY2MCAxMDA2NDQKLS0tIGEvcmVmcy5oCisrKyBiL3JlZnMuaApAQCAtMTAsMTggKzEwLDQxIEBACiAJaW50IGZvcmNlX3dyaXRlOwogfTsKIAorLyoKKyAqIEJpdCB2YWx1ZXMgc2V0IGluIHRoZSBmbGFncyBhcmd1bWVudCBwYXNzZWQgdG8gZWFjaF9yZWZfZm4oKToKKyAqLworCisvKiBSZWZlcmVuY2UgaXMgYSBzeW1ib2xpYyByZWZlcmVuY2UuICovCiAjZGVmaW5lIFJFRl9JU1NZTVJFRiAweDAxCisKKy8qIFJlZmVyZW5jZSBpcyBhIHBhY2tlZCByZWZlcmVuY2UuICovCiAjZGVmaW5lIFJFRl9JU1BBQ0tFRCAweDAyCisKKy8qCisgKiBSZWZlcmVuY2UgY2Fubm90IGJlIHJlc29sdmVkIHRvIGFuIG9iamVjdCBuYW1lOiBkYW5nbGluZyBzeW1ib2xpYworICogcmVmZXJlbmNlIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSwgY29ycnVwdCByZWZlcmVuY2UgZmlsZSwgb3IKKyAqIHN5bWJvbGljIHJlZmVyZW5jZSByZWZlcnMgdG8gaWxsLWZvcm1hdHRlZCByZWZlcmVuY2UgbmFtZS4KKyAqLwogI2RlZmluZSBSRUZfSVNCUk9LRU4gMHgwNAogCiAvKgotICogQ2FsbHMgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBmb3IgZWFjaCByZWYgZmlsZSB1bnRpbCBpdCByZXR1cm5zCi0gKiBub256ZXJvLCBhbmQgcmV0dXJucyB0aGUgdmFsdWUuICBQbGVhc2Ugbm90ZSB0aGF0IGl0IGlzIG5vdCBzYWZlIHRvCi0gKiBtb2RpZnkgcmVmZXJlbmNlcyB3aGlsZSBhbiBpdGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MsIHVubGVzcyB0aGUKLSAqIHNhbWUgY2FsbGJhY2sgZnVuY3Rpb24gaW52b2NhdGlvbiB0aGF0IG1vZGlmaWVzIHRoZSByZWZlcmVuY2UgYWxzbwotICogcmV0dXJucyBhIG5vbnplcm8gdmFsdWUgdG8gaW1tZWRpYXRlbHkgc3RvcCB0aGUgaXRlcmF0aW9uLgorICogVGhlIHNpZ25hdHVyZSBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgZm9yX2VhY2hfKigpCisgKiBmdW5jdGlvbnMgYmVsb3cuICBUaGUgbWVtb3J5IHBvaW50ZWQgdG8gYnkgdGhlIHJlZm5hbWUgYW5kIHNoYTEKKyAqIGFyZ3VtZW50cyBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgZm9yIHRoZSBkdXJhdGlvbiBvZiBhCisgKiBzaW5nbGUgY2FsbGJhY2sgaW52b2NhdGlvbi4KICAqLwotdHlwZWRlZiBpbnQgZWFjaF9yZWZfZm4oY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKTsKK3R5cGVkZWYgaW50IGVhY2hfcmVmX2ZuKGNvbnN0IGNoYXIgKnJlZm5hbWUsCisJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpOworCisvKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW52b2tlIHRoZSBzcGVjaWZpZWQgY2FsbGJhY2sgZnVuY3Rpb24gZm9yCisgKiBlYWNoIHJlZmVyZW5jZSBpbmRpY2F0ZWQuICBJZiB0aGUgZnVuY3Rpb24gZXZlciByZXR1cm5zIGEgbm9uemVybworICogdmFsdWUsIHN0b3AgdGhlIGl0ZXJhdGlvbiBhbmQgcmV0dXJuIHRoYXQgdmFsdWUuICBQbGVhc2Ugbm90ZSB0aGF0CisgKiBpdCBpcyBub3Qgc2FmZSB0byBtb2RpZnkgcmVmZXJlbmNlcyB3aGlsZSBhbiBpdGVyYXRpb24gaXMgaW4KKyAqIHByb2dyZXNzLCB1bmxlc3MgdGhlIHNhbWUgY2FsbGJhY2sgZnVuY3Rpb24gaW52b2NhdGlvbiB0aGF0CisgKiBtb2RpZmllcyB0aGUgcmVmZXJlbmNlIGFsc28gcmV0dXJucyBhIG5vbnplcm8gdmFsdWUgdG8gaW1tZWRpYXRlbHkKKyAqIHN0b3AgdGhlIGl0ZXJhdGlvbi4KKyAqLwogZXh0ZXJuIGludCBoZWFkX3JlZihlYWNoX3JlZl9mbiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZm9yX2VhY2hfcmVmKGVhY2hfcmVmX2ZuLCB2b2lkICopOwogZXh0ZXJuIGludCBmb3JfZWFjaF9yZWZfaW4oY29uc3QgY2hhciAqLCBlYWNoX3JlZl9mbiwgdm9pZCAqKTsKQEAgLTU5LDggKzgyLDMwIEBACiAgKi8KIGV4dGVybiB2b2lkIGFkZF9wYWNrZWRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwogCisvKgorICogRmxhZ3MgZm9yIGNvbnRyb2xsaW5nIGJlaGF2aW91ciBvZiBwYWNrX3JlZnMoKQorICogUEFDS19SRUZTX1BSVU5FOiBQcnVuZSBsb29zZSByZWZzIGFmdGVyIHBhY2tpbmcKKyAqIFBBQ0tfUkVGU19BTEw6ICAgUGFjayBfYWxsXyByZWZzLCBub3QganVzdCB0YWdzIGFuZCBhbHJlYWR5IHBhY2tlZCByZWZzCisgKi8KKyNkZWZpbmUgUEFDS19SRUZTX1BSVU5FIDB4MDAwMQorI2RlZmluZSBQQUNLX1JFRlNfQUxMICAgMHgwMDAyCisKKy8qCisgKiBXcml0ZSBhIHBhY2tlZC1yZWZzIGZpbGUgZm9yIHRoZSBjdXJyZW50IHJlcG9zaXRvcnkuCisgKiBmbGFnczogQ29tYmluYXRpb24gb2YgdGhlIGFib3ZlIFBBQ0tfUkVGU18qIGZsYWdzLgorICovCitpbnQgcGFja19yZWZzKHVuc2lnbmVkIGludCBmbGFncyk7CisKIGV4dGVybiBpbnQgcmVmX2V4aXN0cyhjb25zdCBjaGFyICopOwogCisvKgorICogSWYgcmVmbmFtZSBpcyBhIG5vbi1zeW1ib2xpYyByZWZlcmVuY2UgdGhhdCByZWZlcnMgdG8gYSB0YWcgb2JqZWN0LAorICogYW5kIHRoZSB0YWcgY2FuIGJlIChyZWN1cnNpdmVseSkgZGVyZWZlcmVuY2VkIHRvIGEgbm9uLXRhZyBvYmplY3QsCisgKiBzdG9yZSB0aGUgU0hBMSBvZiB0aGUgcmVmZXJyZWQtdG8gb2JqZWN0IHRvIHNoYTEgYW5kIHJldHVybiAwLiAgSWYKKyAqIGFueSBvZiB0aGVzZSBjb25kaXRpb25zIGFyZSBub3QgbWV0LCByZXR1cm4gYSBub24temVybyB2YWx1ZS4KKyAqIFN5bWJvbGljIHJlZmVyZW5jZXMgYXJlIGNvbnNpZGVyZWQgdW5wZWVsYWJsZSwgZXZlbiBpZiB0aGV5CisgKiB1bHRpbWF0ZWx5IHJlc29sdmUgdG8gYSBwZWVsYWJsZSB0YWcuCisgKi8KIGV4dGVybiBpbnQgcGVlbF9yZWYoY29uc3QgY2hhciAqcmVmbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSk7CiAKIC8qKiBMb2NrcyBhICJyZWZzLyIgcmVmIHJldHVybmluZyB0aGUgbG9jayBvbiBzdWNjZXNzIGFuZCBOVUxMIG9uIGZhaWx1cmUuICoqLwpAQCAtMTAzLDcgKzE0OCw3IEBACiAvKiBpdGVyYXRlIG92ZXIgcmVmbG9nIGVudHJpZXMgKi8KIHR5cGVkZWYgaW50IGVhY2hfcmVmbG9nX2VudF9mbih1bnNpZ25lZCBjaGFyICpvc2hhMSwgdW5zaWduZWQgY2hhciAqbnNoYTEsIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZywgaW50LCBjb25zdCBjaGFyICosIHZvaWQgKik7CiBpbnQgZm9yX2VhY2hfcmVmbG9nX2VudChjb25zdCBjaGFyICpyZWZuYW1lLCBlYWNoX3JlZmxvZ19lbnRfZm4gZm4sIHZvaWQgKmNiX2RhdGEpOwotaW50IGZvcl9lYWNoX3JlY2VudF9yZWZsb2dfZW50KGNvbnN0IGNoYXIgKnJlZm5hbWUsIGVhY2hfcmVmbG9nX2VudF9mbiBmbiwgbG9uZywgdm9pZCAqY2JfZGF0YSk7CitpbnQgZm9yX2VhY2hfcmVmbG9nX2VudF9yZXZlcnNlKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGVhY2hfcmVmbG9nX2VudF9mbiBmbiwgdm9pZCAqY2JfZGF0YSk7CiAKIC8qCiAgKiBDYWxscyB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGZvciBlYWNoIHJlZmxvZyBmaWxlIHVudGlsIGl0IHJldHVybnMgbm9uemVybywKQEAgLTE0Nyw0ICsxOTIsNyBAQAogCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBjb25zdCB1bnNpZ25lZCBjaGFyICpvbGR2YWwsCiAJCWludCBmbGFncywgZW51bSBhY3Rpb25fb25fZXJyIG9uZXJyKTsKIAorZXh0ZXJuIGludCBwYXJzZV9oaWRlX3JlZnNfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGNoYXIgKik7CitleHRlcm4gaW50IHJlZl9pc19oaWRkZW4oY29uc3QgY2hhciAqKTsKKwogI2VuZGlmIC8qIFJFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvcmVtb3RlLWN1cmwuYyBiL3JlbW90ZS1jdXJsLmMKaW5kZXggOTMzYzY5YS4uNjBlZGE2MyAxMDA2NDQKLS0tIGEvcmVtb3RlLWN1cmwuYworKysgYi9yZW1vdGUtY3VybC5jCkBAIC03NiwxMjkgKzc2LDE2IEBACiAJY2hhciAqYnVmX2FsbG9jOwogCWNoYXIgKmJ1ZjsKIAlzaXplX3QgbGVuOworCXN0cnVjdCByZWYgKnJlZnM7CiAJdW5zaWduZWQgcHJvdG9fZ2l0IDogMTsKIH07CiBzdGF0aWMgc3RydWN0IGRpc2NvdmVyeSAqbGFzdF9kaXNjb3Zlcnk7CiAKLXN0YXRpYyB2b2lkIGZyZWVfZGlzY292ZXJ5KHN0cnVjdCBkaXNjb3ZlcnkgKmQpCi17Ci0JaWYgKGQpIHsKLQkJaWYgKGQgPT0gbGFzdF9kaXNjb3ZlcnkpCi0JCQlsYXN0X2Rpc2NvdmVyeSA9IE5VTEw7Ci0JCWZyZWUoZC0+YnVmX2FsbG9jKTsKLQkJZnJlZShkKTsKLQl9Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGlzY292ZXJ5KiBkaXNjb3Zlcl9yZWZzKGNvbnN0IGNoYXIgKnNlcnZpY2UpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBleHAgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmIHR5cGUgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3Qgc3RyYnVmIGJ1ZmZlciA9IFNUUkJVRl9JTklUOwotCXN0cnVjdCBkaXNjb3ZlcnkgKmxhc3QgPSBsYXN0X2Rpc2NvdmVyeTsKLQljaGFyICpyZWZzX3VybDsKLQlpbnQgaHR0cF9yZXQsIG1heWJlX3NtYXJ0ID0gMDsKLQotCWlmIChsYXN0ICYmICFzdHJjbXAoc2VydmljZSwgbGFzdC0+c2VydmljZSkpCi0JCXJldHVybiBsYXN0OwotCWZyZWVfZGlzY292ZXJ5KGxhc3QpOwotCi0Jc3RyYnVmX2FkZGYoJmJ1ZmZlciwgIiVzaW5mby9yZWZzIiwgdXJsKTsKLQlpZiAoKCFwcmVmaXhjbXAodXJsLCAiaHR0cDovLyIpIHx8ICFwcmVmaXhjbXAodXJsLCAiaHR0cHM6Ly8iKSkgJiYKLQkgICAgIGdpdF9lbnZfYm9vbCgiR0lUX1NNQVJUX0hUVFAiLCAxKSkgewotCQltYXliZV9zbWFydCA9IDE7Ci0JCWlmICghc3RyY2hyKHVybCwgJz8nKSkKLQkJCXN0cmJ1Zl9hZGRjaCgmYnVmZmVyLCAnPycpOwotCQllbHNlCi0JCQlzdHJidWZfYWRkY2goJmJ1ZmZlciwgJyYnKTsKLQkJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgInNlcnZpY2U9JXMiLCBzZXJ2aWNlKTsKLQl9Ci0JcmVmc191cmwgPSBzdHJidWZfZGV0YWNoKCZidWZmZXIsIE5VTEwpOwotCi0JaHR0cF9yZXQgPSBodHRwX2dldF9zdHJidWYocmVmc191cmwsICZ0eXBlLCAmYnVmZmVyLCBIVFRQX05PX0NBQ0hFKTsKLQlzd2l0Y2ggKGh0dHBfcmV0KSB7Ci0JY2FzZSBIVFRQX09LOgotCQlicmVhazsKLQljYXNlIEhUVFBfTUlTU0lOR19UQVJHRVQ6Ci0JCWRpZSgiJXMgbm90IGZvdW5kOiBkaWQgeW91IHJ1biBnaXQgdXBkYXRlLXNlcnZlci1pbmZvIG9uIHRoZSIKLQkJICAgICIgc2VydmVyPyIsIHJlZnNfdXJsKTsKLQljYXNlIEhUVFBfTk9BVVRIOgotCQlkaWUoIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCIpOwotCWRlZmF1bHQ6Ci0JCWh0dHBfZXJyb3IocmVmc191cmwsIGh0dHBfcmV0KTsKLQkJZGllKCJIVFRQIHJlcXVlc3QgZmFpbGVkIik7Ci0JfQotCi0JbGFzdD0geGNhbGxvYygxLCBzaXplb2YoKmxhc3RfZGlzY292ZXJ5KSk7Ci0JbGFzdC0+c2VydmljZSA9IHNlcnZpY2U7Ci0JbGFzdC0+YnVmX2FsbG9jID0gc3RyYnVmX2RldGFjaCgmYnVmZmVyLCAmbGFzdC0+bGVuKTsKLQlsYXN0LT5idWYgPSBsYXN0LT5idWZfYWxsb2M7Ci0KLQlzdHJidWZfYWRkZigmZXhwLCAiYXBwbGljYXRpb24veC0lcy1hZHZlcnRpc2VtZW50Iiwgc2VydmljZSk7Ci0JaWYgKG1heWJlX3NtYXJ0ICYmCi0JICAgICg1IDw9IGxhc3QtPmxlbiAmJiBsYXN0LT5idWZbNF0gPT0gJyMnKSAmJgotCSAgICAhc3RyYnVmX2NtcCgmZXhwLCAmdHlwZSkpIHsKLQkJLyoKLQkJICogc21hcnQgSFRUUCByZXNwb25zZTsgdmFsaWRhdGUgdGhhdCB0aGUgc2VydmljZQotCQkgKiBwa3QtbGluZSBtYXRjaGVzIG91ciByZXF1ZXN0LgotCQkgKi8KLQkJaWYgKHBhY2tldF9nZXRfbGluZSgmYnVmZmVyLCAmbGFzdC0+YnVmLCAmbGFzdC0+bGVuKSA8PSAwKQotCQkJZGllKCIlcyBoYXMgaW52YWxpZCBwYWNrZXQgaGVhZGVyIiwgcmVmc191cmwpOwotCQlpZiAoYnVmZmVyLmxlbiAmJiBidWZmZXIuYnVmW2J1ZmZlci5sZW4gLSAxXSA9PSAnXG4nKQotCQkJc3RyYnVmX3NldGxlbigmYnVmZmVyLCBidWZmZXIubGVuIC0gMSk7Ci0KLQkJc3RyYnVmX3Jlc2V0KCZleHApOwotCQlzdHJidWZfYWRkZigmZXhwLCAiIyBzZXJ2aWNlPSVzIiwgc2VydmljZSk7Ci0JCWlmIChzdHJidWZfY21wKCZleHAsICZidWZmZXIpKQotCQkJZGllKCJpbnZhbGlkIHNlcnZlciByZXNwb25zZTsgZ290ICclcyciLCBidWZmZXIuYnVmKTsKLQkJc3RyYnVmX3JlbGVhc2UoJmV4cCk7Ci0KLQkJLyogVGhlIGhlYWRlciBjYW4gaW5jbHVkZSBhZGRpdGlvbmFsIG1ldGFkYXRhIGxpbmVzLCB1cAotCQkgKiB1bnRpbCBhIHBhY2tldCBmbHVzaCBtYXJrZXIuICBJZ25vcmUgdGhlc2Ugbm93LCBidXQKLQkJICogaW4gdGhlIGZ1dHVyZSB3ZSBtaWdodCBzdGFydCB0byBzY2FuIHRoZW0uCi0JCSAqLwotCQlzdHJidWZfcmVzZXQoJmJ1ZmZlcik7Ci0JCXdoaWxlIChwYWNrZXRfZ2V0X2xpbmUoJmJ1ZmZlciwgJmxhc3QtPmJ1ZiwgJmxhc3QtPmxlbikgPiAwKQotCQkJc3RyYnVmX3Jlc2V0KCZidWZmZXIpOwotCi0JCWxhc3QtPnByb3RvX2dpdCA9IDE7Ci0JfQotCi0JZnJlZShyZWZzX3VybCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJmV4cCk7Ci0Jc3RyYnVmX3JlbGVhc2UoJnR5cGUpOwotCXN0cmJ1Zl9yZWxlYXNlKCZidWZmZXIpOwotCWxhc3RfZGlzY292ZXJ5ID0gbGFzdDsKLQlyZXR1cm4gbGFzdDsKLX0KLQotc3RhdGljIGludCB3cml0ZV9kaXNjb3ZlcnkoaW50IGluLCBpbnQgb3V0LCB2b2lkICpkYXRhKQotewotCXN0cnVjdCBkaXNjb3ZlcnkgKmhlYWRzID0gZGF0YTsKLQlpbnQgZXJyID0gMDsKLQlpZiAod3JpdGVfaW5fZnVsbChvdXQsIGhlYWRzLT5idWYsIGhlYWRzLT5sZW4pICE9IGhlYWRzLT5sZW4pCi0JCWVyciA9IDE7Ci0JY2xvc2Uob3V0KTsKLQlyZXR1cm4gZXJyOwotfQotCiBzdGF0aWMgc3RydWN0IHJlZiAqcGFyc2VfZ2l0X3JlZnMoc3RydWN0IGRpc2NvdmVyeSAqaGVhZHMsIGludCBmb3JfcHVzaCkKIHsKIAlzdHJ1Y3QgcmVmICpsaXN0ID0gTlVMTDsKLQlzdHJ1Y3QgYXN5bmMgYXN5bmM7Ci0KLQltZW1zZXQoJmFzeW5jLCAwLCBzaXplb2YoYXN5bmMpKTsKLQlhc3luYy5wcm9jID0gd3JpdGVfZGlzY292ZXJ5OwotCWFzeW5jLmRhdGEgPSBoZWFkczsKLQlhc3luYy5vdXQgPSAtMTsKLQotCWlmIChzdGFydF9hc3luYygmYXN5bmMpKQotCQlkaWUoImNhbm5vdCBzdGFydCB0aHJlYWQgdG8gcGFyc2UgYWR2ZXJ0aXNlZCByZWZzIik7Ci0JZ2V0X3JlbW90ZV9oZWFkcyhhc3luYy5vdXQsICZsaXN0LAotCQkJZm9yX3B1c2ggPyBSRUZfTk9STUFMIDogMCwgTlVMTCk7Ci0JY2xvc2UoYXN5bmMub3V0KTsKLQlpZiAoZmluaXNoX2FzeW5jKCZhc3luYykpCi0JCWRpZSgicmVmIHBhcnNpbmcgdGhyZWFkIGZhaWxlZCIpOworCWdldF9yZW1vdGVfaGVhZHMoLTEsIGhlYWRzLT5idWYsIGhlYWRzLT5sZW4sICZsaXN0LAorCQkJIGZvcl9wdXNoID8gUkVGX05PUk1BTCA6IDAsIE5VTEwpOwogCXJldHVybiBsaXN0OwogfQogCkBAIC0yNTMsMTggKzE0MCwxNDEgQEAKIAlyZXR1cm4gcmVmczsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9kaXNjb3Zlcnkoc3RydWN0IGRpc2NvdmVyeSAqZCkKK3sKKwlpZiAoZCkgeworCQlpZiAoZCA9PSBsYXN0X2Rpc2NvdmVyeSkKKwkJCWxhc3RfZGlzY292ZXJ5ID0gTlVMTDsKKwkJZnJlZShkLT5idWZfYWxsb2MpOworCQlmcmVlX3JlZnMoZC0+cmVmcyk7CisJCWZyZWUoZCk7CisJfQorfQorCitzdGF0aWMgaW50IHNob3dfaHR0cF9tZXNzYWdlKHN0cnVjdCBzdHJidWYgKnR5cGUsIHN0cnVjdCBzdHJidWYgKm1zZykKK3sKKwljb25zdCBjaGFyICpwLCAqZW9sOworCisJLyoKKwkgKiBXZSBvbmx5IHNob3cgdGV4dC9wbGFpbiBwYXJ0cywgYXMgb3RoZXIgdHlwZXMgYXJlIGxpa2VseQorCSAqIHRvIGJlIHVnbHkgdG8gbG9vayBhdCBvbiB0aGUgdXNlcidzIHRlcm1pbmFsLgorCSAqCisJICogVE9ETyBzaG91bGQgaGFuZGxlICI7IGNoYXJzZXQ9WFhYIiwgYW5kIHJlLWVuY29kZSBpbnRvCisJICogbG9nb3V0cHV0ZW5jb2RpbmcKKwkgKi8KKwlpZiAoc3RyY2FzZWNtcCh0eXBlLT5idWYsICJ0ZXh0L3BsYWluIikpCisJCXJldHVybiAtMTsKKworCXN0cmJ1Zl90cmltKG1zZyk7CisJaWYgKCFtc2ctPmxlbikKKwkJcmV0dXJuIC0xOworCisJcCA9IG1zZy0+YnVmOworCWRvIHsKKwkJZW9sID0gc3RyY2hybnVsKHAsICdcbicpOworCQlmcHJpbnRmKHN0ZGVyciwgInJlbW90ZTogJS4qc1xuIiwgKGludCkoZW9sIC0gcCksIHApOworCQlwID0gZW9sICsgMTsKKwl9IHdoaWxlKCplb2wpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRpc2NvdmVyeSogZGlzY292ZXJfcmVmcyhjb25zdCBjaGFyICpzZXJ2aWNlLCBpbnQgZm9yX3B1c2gpCit7CisJc3RydWN0IHN0cmJ1ZiBleHAgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIHR5cGUgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZmZlciA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBkaXNjb3ZlcnkgKmxhc3QgPSBsYXN0X2Rpc2NvdmVyeTsKKwljaGFyICpyZWZzX3VybDsKKwlpbnQgaHR0cF9yZXQsIG1heWJlX3NtYXJ0ID0gMDsKKworCWlmIChsYXN0ICYmICFzdHJjbXAoc2VydmljZSwgbGFzdC0+c2VydmljZSkpCisJCXJldHVybiBsYXN0OworCWZyZWVfZGlzY292ZXJ5KGxhc3QpOworCisJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgIiVzaW5mby9yZWZzIiwgdXJsKTsKKwlpZiAoKCFwcmVmaXhjbXAodXJsLCAiaHR0cDovLyIpIHx8ICFwcmVmaXhjbXAodXJsLCAiaHR0cHM6Ly8iKSkgJiYKKwkgICAgIGdpdF9lbnZfYm9vbCgiR0lUX1NNQVJUX0hUVFAiLCAxKSkgeworCQltYXliZV9zbWFydCA9IDE7CisJCWlmICghc3RyY2hyKHVybCwgJz8nKSkKKwkJCXN0cmJ1Zl9hZGRjaCgmYnVmZmVyLCAnPycpOworCQllbHNlCisJCQlzdHJidWZfYWRkY2goJmJ1ZmZlciwgJyYnKTsKKwkJc3RyYnVmX2FkZGYoJmJ1ZmZlciwgInNlcnZpY2U9JXMiLCBzZXJ2aWNlKTsKKwl9CisJcmVmc191cmwgPSBzdHJidWZfZGV0YWNoKCZidWZmZXIsIE5VTEwpOworCisJaHR0cF9yZXQgPSBodHRwX2dldF9zdHJidWYocmVmc191cmwsICZ0eXBlLCAmYnVmZmVyLAorCQkJCSAgIEhUVFBfTk9fQ0FDSEUgfCBIVFRQX0tFRVBfRVJST1IpOworCXN3aXRjaCAoaHR0cF9yZXQpIHsKKwljYXNlIEhUVFBfT0s6CisJCWJyZWFrOworCWNhc2UgSFRUUF9NSVNTSU5HX1RBUkdFVDoKKwkJc2hvd19odHRwX21lc3NhZ2UoJnR5cGUsICZidWZmZXIpOworCQlkaWUoInJlcG9zaXRvcnkgJyVzJyBub3QgZm91bmQiLCB1cmwpOworCWNhc2UgSFRUUF9OT0FVVEg6CisJCXNob3dfaHR0cF9tZXNzYWdlKCZ0eXBlLCAmYnVmZmVyKTsKKwkJZGllKCJBdXRoZW50aWNhdGlvbiBmYWlsZWQgZm9yICclcyciLCB1cmwpOworCWRlZmF1bHQ6CisJCXNob3dfaHR0cF9tZXNzYWdlKCZ0eXBlLCAmYnVmZmVyKTsKKwkJZGllKCJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIiwgdXJsLCBjdXJsX2Vycm9yc3RyKTsKKwl9CisKKwlsYXN0PSB4Y2FsbG9jKDEsIHNpemVvZigqbGFzdF9kaXNjb3ZlcnkpKTsKKwlsYXN0LT5zZXJ2aWNlID0gc2VydmljZTsKKwlsYXN0LT5idWZfYWxsb2MgPSBzdHJidWZfZGV0YWNoKCZidWZmZXIsICZsYXN0LT5sZW4pOworCWxhc3QtPmJ1ZiA9IGxhc3QtPmJ1Zl9hbGxvYzsKKworCXN0cmJ1Zl9hZGRmKCZleHAsICJhcHBsaWNhdGlvbi94LSVzLWFkdmVydGlzZW1lbnQiLCBzZXJ2aWNlKTsKKwlpZiAobWF5YmVfc21hcnQgJiYKKwkgICAgKDUgPD0gbGFzdC0+bGVuICYmIGxhc3QtPmJ1Zls0XSA9PSAnIycpICYmCisJICAgICFzdHJidWZfY21wKCZleHAsICZ0eXBlKSkgeworCQljaGFyICpsaW5lOworCisJCS8qCisJCSAqIHNtYXJ0IEhUVFAgcmVzcG9uc2U7IHZhbGlkYXRlIHRoYXQgdGhlIHNlcnZpY2UKKwkJICogcGt0LWxpbmUgbWF0Y2hlcyBvdXIgcmVxdWVzdC4KKwkJICovCisJCWxpbmUgPSBwYWNrZXRfcmVhZF9saW5lX2J1ZigmbGFzdC0+YnVmLCAmbGFzdC0+bGVuLCBOVUxMKTsKKworCQlzdHJidWZfcmVzZXQoJmV4cCk7CisJCXN0cmJ1Zl9hZGRmKCZleHAsICIjIHNlcnZpY2U9JXMiLCBzZXJ2aWNlKTsKKwkJaWYgKHN0cmNtcChsaW5lLCBleHAuYnVmKSkKKwkJCWRpZSgiaW52YWxpZCBzZXJ2ZXIgcmVzcG9uc2U7IGdvdCAnJXMnIiwgbGluZSk7CisJCXN0cmJ1Zl9yZWxlYXNlKCZleHApOworCisJCS8qIFRoZSBoZWFkZXIgY2FuIGluY2x1ZGUgYWRkaXRpb25hbCBtZXRhZGF0YSBsaW5lcywgdXAKKwkJICogdW50aWwgYSBwYWNrZXQgZmx1c2ggbWFya2VyLiAgSWdub3JlIHRoZXNlIG5vdywgYnV0CisJCSAqIGluIHRoZSBmdXR1cmUgd2UgbWlnaHQgc3RhcnQgdG8gc2NhbiB0aGVtLgorCQkgKi8KKwkJd2hpbGUgKHBhY2tldF9yZWFkX2xpbmVfYnVmKCZsYXN0LT5idWYsICZsYXN0LT5sZW4sIE5VTEwpKQorCQkJOworCisJCWxhc3QtPnByb3RvX2dpdCA9IDE7CisJfQorCisJaWYgKGxhc3QtPnByb3RvX2dpdCkKKwkJbGFzdC0+cmVmcyA9IHBhcnNlX2dpdF9yZWZzKGxhc3QsIGZvcl9wdXNoKTsKKwllbHNlCisJCWxhc3QtPnJlZnMgPSBwYXJzZV9pbmZvX3JlZnMobGFzdCk7CisKKwlmcmVlKHJlZnNfdXJsKTsKKwlzdHJidWZfcmVsZWFzZSgmZXhwKTsKKwlzdHJidWZfcmVsZWFzZSgmdHlwZSk7CisJc3RyYnVmX3JlbGVhc2UoJmJ1ZmZlcik7CisJbGFzdF9kaXNjb3ZlcnkgPSBsYXN0OworCXJldHVybiBsYXN0OworfQorCiBzdGF0aWMgc3RydWN0IHJlZiAqZ2V0X3JlZnMoaW50IGZvcl9wdXNoKQogewogCXN0cnVjdCBkaXNjb3ZlcnkgKmhlYWRzOwogCiAJaWYgKGZvcl9wdXNoKQotCQloZWFkcyA9IGRpc2NvdmVyX3JlZnMoImdpdC1yZWNlaXZlLXBhY2siKTsKKwkJaGVhZHMgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtcmVjZWl2ZS1wYWNrIiwgZm9yX3B1c2gpOwogCWVsc2UKLQkJaGVhZHMgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtdXBsb2FkLXBhY2siKTsKKwkJaGVhZHMgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtdXBsb2FkLXBhY2siLCBmb3JfcHVzaCk7CiAKLQlpZiAoaGVhZHMtPnByb3RvX2dpdCkKLQkJcmV0dXJuIHBhcnNlX2dpdF9yZWZzKGhlYWRzLCBmb3JfcHVzaCk7Ci0JcmV0dXJuIHBhcnNlX2luZm9fcmVmcyhoZWFkcyk7CisJcmV0dXJuIGhlYWRzLT5yZWZzOwogfQogCiBzdGF0aWMgdm9pZCBvdXRwdXRfcmVmcyhzdHJ1Y3QgcmVmICpyZWZzKQpAQCAtMjc4LDcgKzI4OCw2IEBACiAJfQogCXByaW50ZigiXG4iKTsKIAlmZmx1c2goc3Rkb3V0KTsKLQlmcmVlX3JlZnMocmVmcyk7CiB9CiAKIHN0cnVjdCBycGNfc3RhdGUgewpAQCAtMzA4LDcgKzMxNyw3IEBACiAKIAlpZiAoIWF2YWlsKSB7CiAJCXJwYy0+aW5pdGlhbF9idWZmZXIgPSAwOwotCQlhdmFpbCA9IHBhY2tldF9yZWFkX2xpbmUocnBjLT5vdXQsIHJwYy0+YnVmLCBycGMtPmFsbG9jKTsKKwkJYXZhaWwgPSBwYWNrZXRfcmVhZChycGMtPm91dCwgTlVMTCwgTlVMTCwgcnBjLT5idWYsIHJwYy0+YWxsb2MsIDApOwogCQlpZiAoIWF2YWlsKQogCQkJcmV0dXJuIDA7CiAJCXJwYy0+cG9zID0gMDsKQEAgLTQyNSw3ICs0MzQsNyBAQAogCQkJYnJlYWs7CiAJCX0KIAotCQluID0gcGFja2V0X3JlYWRfbGluZShycGMtPm91dCwgYnVmLCBsZWZ0KTsKKwkJbiA9IHBhY2tldF9yZWFkKHJwYy0+b3V0LCBOVUxMLCBOVUxMLCBidWYsIGxlZnQsIDApOwogCQlpZiAoIW4pCiAJCQlicmVhazsKIAkJcnBjLT5sZW4gKz0gbjsKQEAgLTU3OSw3ICs1ODgsNyBAQAogCXJwYy0+aGRyX2FjY2VwdCA9IHN0cmJ1Zl9kZXRhY2goJmJ1ZiwgTlVMTCk7CiAKIAl3aGlsZSAoIWVycikgewotCQlpbnQgbiA9IHBhY2tldF9yZWFkX2xpbmUocnBjLT5vdXQsIHJwYy0+YnVmLCBycGMtPmFsbG9jKTsKKwkJaW50IG4gPSBwYWNrZXRfcmVhZChycGMtPm91dCwgTlVMTCwgTlVMTCwgcnBjLT5idWYsIHJwYy0+YWxsb2MsIDApOwogCQlpZiAoIW4pCiAJCQlicmVhazsKIAkJcnBjLT5wb3MgPSAwOwpAQCAtNjg1LDcgKzY5NCw3IEBACiAKIAllcnIgPSBycGNfc2VydmljZSgmcnBjLCBoZWFkcyk7CiAJaWYgKHJwYy5yZXN1bHQubGVuKQotCQlzYWZlX3dyaXRlKDEsIHJwYy5yZXN1bHQuYnVmLCBycGMucmVzdWx0Lmxlbik7CisJCXdyaXRlX29yX2RpZSgxLCBycGMucmVzdWx0LmJ1ZiwgcnBjLnJlc3VsdC5sZW4pOwogCXN0cmJ1Zl9yZWxlYXNlKCZycGMucmVzdWx0KTsKIAlzdHJidWZfcmVsZWFzZSgmcHJlYW1ibGUpOwogCWZyZWUoZGVwdGhfYXJnKTsKQEAgLTY5NCw3ICs3MDMsNyBAQAogCiBzdGF0aWMgaW50IGZldGNoKGludCBucl9oZWFkcywgc3RydWN0IHJlZiAqKnRvX2ZldGNoKQogewotCXN0cnVjdCBkaXNjb3ZlcnkgKmQgPSBkaXNjb3Zlcl9yZWZzKCJnaXQtdXBsb2FkLXBhY2siKTsKKwlzdHJ1Y3QgZGlzY292ZXJ5ICpkID0gZGlzY292ZXJfcmVmcygiZ2l0LXVwbG9hZC1wYWNrIiwgMCk7CiAJaWYgKGQtPnByb3RvX2dpdCkKIAkJcmV0dXJuIGZldGNoX2dpdChkLCBucl9oZWFkcywgdG9fZmV0Y2gpOwogCWVsc2UKQEAgLTgwNSw3ICs4MTQsNyBAQAogCiAJZXJyID0gcnBjX3NlcnZpY2UoJnJwYywgaGVhZHMpOwogCWlmIChycGMucmVzdWx0LmxlbikKLQkJc2FmZV93cml0ZSgxLCBycGMucmVzdWx0LmJ1ZiwgcnBjLnJlc3VsdC5sZW4pOworCQl3cml0ZV9vcl9kaWUoMSwgcnBjLnJlc3VsdC5idWYsIHJwYy5yZXN1bHQubGVuKTsKIAlzdHJidWZfcmVsZWFzZSgmcnBjLnJlc3VsdCk7CiAJZnJlZShhcmd2KTsKIAlyZXR1cm4gZXJyOwpAQCAtODEzLDcgKzgyMiw3IEBACiAKIHN0YXRpYyBpbnQgcHVzaChpbnQgbnJfc3BlYywgY2hhciAqKnNwZWNzKQogewotCXN0cnVjdCBkaXNjb3ZlcnkgKmhlYWRzID0gZGlzY292ZXJfcmVmcygiZ2l0LXJlY2VpdmUtcGFjayIpOworCXN0cnVjdCBkaXNjb3ZlcnkgKmhlYWRzID0gZGlzY292ZXJfcmVmcygiZ2l0LXJlY2VpdmUtcGFjayIsIDEpOwogCWludCByZXQ7CiAKIAlpZiAoaGVhZHMtPnByb3RvX2dpdCkKZGlmZiAtLWdpdCBhL3JlbW90ZS10ZXN0c3ZuLmMgYi9yZW1vdGUtdGVzdHN2bi5jCmluZGV4IDVkZGYxMWMuLmQ3Y2Q1ZDIgMTAwNjQ0Ci0tLSBhL3JlbW90ZS10ZXN0c3ZuLmMKKysrIGIvcmVtb3RlLXRlc3Rzdm4uYwpAQCAtMjg2LDcgKzI4Niw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklULCB1cmxfc2IgPSBTVFJCVUZfSU5JVCwKIAkJCXByaXZhdGVfcmVmX3NiID0gU1RSQlVGX0lOSVQsIG1hcmtzZmlsZW5hbWVfc2IgPSBTVFJCVUZfSU5JVCwKZGlmZiAtLWdpdCBhL3JlbW90ZS5jIGIvcmVtb3RlLmMKaW5kZXggY2ExZjhmMi4uZTcxZjY2ZCAxMDA2NDQKLS0tIGEvcmVtb3RlLmMKKysrIGIvcmVtb3RlLmMKQEAgLTE1LDYgKzE1LDcgQEAKIAkwLAogCTEsCiAJMCwKKwkwLAogCSJyZWZzL3RhZ3MvKiIsCiAJInJlZnMvdGFncy8qIgogfTsKQEAgLTQ4LDYgKzQ5LDcgQEAKIAogc3RhdGljIHN0cnVjdCBicmFuY2ggKmN1cnJlbnRfYnJhbmNoOwogc3RhdGljIGNvbnN0IGNoYXIgKmRlZmF1bHRfcmVtb3RlX25hbWU7CitzdGF0aWMgY29uc3QgY2hhciAqcHVzaHJlbW90ZV9uYW1lOwogc3RhdGljIGludCBleHBsaWNpdF9kZWZhdWx0X3JlbW90ZV9uYW1lOwogCiBzdGF0aWMgc3RydWN0IHJld3JpdGVzIHJld3JpdGVzOwpAQCAtMzU2LDEzICszNTgsMTYgQEAKIAkJCXJldHVybiAwOwogCQlicmFuY2ggPSBtYWtlX2JyYW5jaChuYW1lLCBzdWJrZXkgLSBuYW1lKTsKIAkJaWYgKCFzdHJjbXAoc3Via2V5LCAiLnJlbW90ZSIpKSB7Ci0JCQlpZiAoIXZhbHVlKQotCQkJCXJldHVybiBjb25maWdfZXJyb3Jfbm9uYm9vbChrZXkpOwotCQkJYnJhbmNoLT5yZW1vdGVfbmFtZSA9IHhzdHJkdXAodmFsdWUpOworCQkJaWYgKGdpdF9jb25maWdfc3RyaW5nKCZicmFuY2gtPnJlbW90ZV9uYW1lLCBrZXksIHZhbHVlKSkKKwkJCQlyZXR1cm4gLTE7CiAJCQlpZiAoYnJhbmNoID09IGN1cnJlbnRfYnJhbmNoKSB7CiAJCQkJZGVmYXVsdF9yZW1vdGVfbmFtZSA9IGJyYW5jaC0+cmVtb3RlX25hbWU7CiAJCQkJZXhwbGljaXRfZGVmYXVsdF9yZW1vdGVfbmFtZSA9IDE7CiAJCQl9CisJCX0gZWxzZSBpZiAoIXN0cmNtcChzdWJrZXksICIucHVzaHJlbW90ZSIpKSB7CisJCQlpZiAoYnJhbmNoID09IGN1cnJlbnRfYnJhbmNoKQorCQkJCWlmIChnaXRfY29uZmlnX3N0cmluZygmcHVzaHJlbW90ZV9uYW1lLCBrZXksIHZhbHVlKSkKKwkJCQkJcmV0dXJuIC0xOwogCQl9IGVsc2UgaWYgKCFzdHJjbXAoc3Via2V5LCAiLm1lcmdlIikpIHsKIAkJCWlmICghdmFsdWUpCiAJCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKGtleSk7CkBAIC0zODgsOSArMzkzLDE2IEBACiAJCQlhZGRfaW5zdGVhZF9vZihyZXdyaXRlLCB4c3RyZHVwKHZhbHVlKSk7CiAJCX0KIAl9CisKIAlpZiAocHJlZml4Y21wKGtleSwgICJyZW1vdGUuIikpCiAJCXJldHVybiAwOwogCW5hbWUgPSBrZXkgKyA3OworCisJLyogSGFuZGxlIHJlbW90ZS4qIHZhcmlhYmxlcyAqLworCWlmICghc3RyY21wKG5hbWUsICJwdXNoZGVmYXVsdCIpKQorCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJnB1c2hyZW1vdGVfbmFtZSwga2V5LCB2YWx1ZSk7CisKKwkvKiBIYW5kbGUgcmVtb3RlLjxuYW1lPi4qIHZhcmlhYmxlcyAqLwogCWlmICgqbmFtZSA9PSAnLycpIHsKIAkJd2FybmluZygiQ29uZmlnIHJlbW90ZSBzaG9ydGhhbmQgY2Fubm90IGJlZ2luIHdpdGggJy8nOiAlcyIsCiAJCQluYW1lKTsKQEAgLTUzOCw3ICs1NTAsNyBAQAogCiAJCS8qCiAJCSAqIEJlZm9yZSBnb2luZyBvbiwgc3BlY2lhbCBjYXNlICI6IiAob3IgIis6IikgYXMgYSByZWZzcGVjCi0JCSAqIGZvciBtYXRjaGluZyByZWZzLgorCQkgKiBmb3IgcHVzaGluZyBtYXRjaGluZyByZWZzLgogCQkgKi8KIAkJaWYgKCFmZXRjaCAmJiByaHMgPT0gbGhzICYmIHJoc1sxXSA9PSAnXDAnKSB7CiAJCQlyc1tpXS5tYXRjaGluZyA9IDE7CkBAIC01NjUsMjYgKzU3NywyNSBAQAogCQlmbGFncyA9IFJFRk5BTUVfQUxMT1dfT05FTEVWRUwgfCAoaXNfZ2xvYiA/IFJFRk5BTUVfUkVGU1BFQ19QQVRURVJOIDogMCk7CiAKIAkJaWYgKGZldGNoKSB7Ci0JCQkvKgotCQkJICogTEhTCi0JCQkgKiAtIGVtcHR5IGlzIGFsbG93ZWQ7IGl0IG1lYW5zIEhFQUQuCi0JCQkgKiAtIG90aGVyd2lzZSBpdCBtdXN0IGJlIGEgdmFsaWQgbG9va2luZyByZWYuCi0JCQkgKi8KKwkJCXVuc2lnbmVkIGNoYXIgdW51c2VkWzQwXTsKKworCQkJLyogTEhTICovCiAJCQlpZiAoISpyc1tpXS5zcmMpCi0JCQkJOyAvKiBlbXB0eSBpcyBvayAqLwotCQkJZWxzZSBpZiAoY2hlY2tfcmVmbmFtZV9mb3JtYXQocnNbaV0uc3JjLCBmbGFncykpCisJCQkJOyAvKiBlbXB0eSBpcyBvazsgaXQgbWVhbnMgIkhFQUQiICovCisJCQllbHNlIGlmIChsbGVuID09IDQwICYmICFnZXRfc2hhMV9oZXgocnNbaV0uc3JjLCB1bnVzZWQpKQorCQkJCXJzW2ldLmV4YWN0X3NoYTEgPSAxOyAvKiBvayAqLworCQkJZWxzZSBpZiAoIWNoZWNrX3JlZm5hbWVfZm9ybWF0KHJzW2ldLnNyYywgZmxhZ3MpKQorCQkJCTsgLyogdmFsaWQgbG9va2luZyByZWYgaXMgb2sgKi8KKwkJCWVsc2UKIAkJCQlnb3RvIGludmFsaWQ7Ci0JCQkvKgotCQkJICogUkhTCi0JCQkgKiAtIG1pc3NpbmcgaXMgb2ssIGFuZCBpcyBzYW1lIGFzIGVtcHR5LgotCQkJICogLSBlbXB0eSBpcyBvazsgaXQgbWVhbnMgbm90IHRvIHN0b3JlLgotCQkJICogLSBvdGhlcndpc2UgaXQgbXVzdCBiZSBhIHZhbGlkIGxvb2tpbmcgcmVmLgotCQkJICovCisJCQkvKiBSSFMgKi8KIAkJCWlmICghcnNbaV0uZHN0KQotCQkJCTsgLyogb2sgKi8KKwkJCQk7IC8qIG1pc3NpbmcgaXMgb2s7IGl0IGlzIHRoZSBzYW1lIGFzIGVtcHR5ICovCiAJCQllbHNlIGlmICghKnJzW2ldLmRzdCkKLQkJCQk7IC8qIG9rICovCi0JCQllbHNlIGlmIChjaGVja19yZWZuYW1lX2Zvcm1hdChyc1tpXS5kc3QsIGZsYWdzKSkKKwkJCQk7IC8qIGVtcHR5IGlzIG9rOyBpdCBtZWFucyAiZG8gbm90IHN0b3JlIiAqLworCQkJZWxzZSBpZiAoIWNoZWNrX3JlZm5hbWVfZm9ybWF0KHJzW2ldLmRzdCwgZmxhZ3MpKQorCQkJCTsgLyogdmFsaWQgbG9va2luZyByZWYgaXMgb2sgKi8KKwkJCWVsc2UKIAkJCQlnb3RvIGludmFsaWQ7CiAJCX0gZWxzZSB7CiAJCQkvKgpAQCAtNjcxLDE3ICs2ODIsMjEgQEAKIAlyZXR1cm4gIXN0cmNocihuYW1lLCAnLycpOyAvKiBubyBzbGFzaCAqLwogfQogCi1zdHJ1Y3QgcmVtb3RlICpyZW1vdGVfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgc3RydWN0IHJlbW90ZSAqcmVtb3RlX2dldF8xKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnB1c2hyZW1vdGVfbmFtZSkKIHsKIAlzdHJ1Y3QgcmVtb3RlICpyZXQ7CiAJaW50IG5hbWVfZ2l2ZW4gPSAwOwogCi0JcmVhZF9jb25maWcoKTsKIAlpZiAobmFtZSkKIAkJbmFtZV9naXZlbiA9IDE7CiAJZWxzZSB7Ci0JCW5hbWUgPSBkZWZhdWx0X3JlbW90ZV9uYW1lOwotCQluYW1lX2dpdmVuID0gZXhwbGljaXRfZGVmYXVsdF9yZW1vdGVfbmFtZTsKKwkJaWYgKHB1c2hyZW1vdGVfbmFtZSkgeworCQkJbmFtZSA9IHB1c2hyZW1vdGVfbmFtZTsKKwkJCW5hbWVfZ2l2ZW4gPSAxOworCQl9IGVsc2UgeworCQkJbmFtZSA9IGRlZmF1bHRfcmVtb3RlX25hbWU7CisJCQluYW1lX2dpdmVuID0gZXhwbGljaXRfZGVmYXVsdF9yZW1vdGVfbmFtZTsKKwkJfQogCX0KIAogCXJldCA9IG1ha2VfcmVtb3RlKG5hbWUsIDApOwpAQCAtNzAwLDYgKzcxNSwxOCBAQAogCXJldHVybiByZXQ7CiB9CiAKK3N0cnVjdCByZW1vdGUgKnJlbW90ZV9nZXQoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlyZWFkX2NvbmZpZygpOworCXJldHVybiByZW1vdGVfZ2V0XzEobmFtZSwgTlVMTCk7Cit9CisKK3N0cnVjdCByZW1vdGUgKnB1c2hyZW1vdGVfZ2V0KGNvbnN0IGNoYXIgKm5hbWUpCit7CisJcmVhZF9jb25maWcoKTsKKwlyZXR1cm4gcmVtb3RlX2dldF8xKG5hbWUsIHB1c2hyZW1vdGVfbmFtZSk7Cit9CisKIGludCByZW1vdGVfaXNfY29uZmlndXJlZChjb25zdCBjaGFyICpuYW1lKQogewogCWludCBpOwpAQCAtMTE5NSw2ICsxMjIyLDEwMSBAQAogCXJldHVybiB0YWlsOwogfQogCitzdHJ1Y3QgdGlwcyB7CisJc3RydWN0IGNvbW1pdCAqKnRpcDsKKwlpbnQgbnIsIGFsbG9jOworfTsKKworc3RhdGljIHZvaWQgYWRkX3RvX3RpcHMoc3RydWN0IHRpcHMgKnRpcHMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJc3RydWN0IGNvbW1pdCAqY29tbWl0OworCisJaWYgKGlzX251bGxfc2hhMShzaGExKSkKKwkJcmV0dXJuOworCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShzaGExLCAxKTsKKwlpZiAoIWNvbW1pdCB8fCAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBUTVBfTUFSSykpCisJCXJldHVybjsKKwljb21taXQtPm9iamVjdC5mbGFncyB8PSBUTVBfTUFSSzsKKwlBTExPQ19HUk9XKHRpcHMtPnRpcCwgdGlwcy0+bnIgKyAxLCB0aXBzLT5hbGxvYyk7CisJdGlwcy0+dGlwW3RpcHMtPm5yKytdID0gY29tbWl0OworfQorCitzdGF0aWMgdm9pZCBhZGRfbWlzc2luZ190YWdzKHN0cnVjdCByZWYgKnNyYywgc3RydWN0IHJlZiAqKmRzdCwgc3RydWN0IHJlZiAqKipkc3RfdGFpbCkKK3sKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZHN0X3RhZyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CisJc3RydWN0IHN0cmluZ19saXN0IHNyY190YWcgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCXN0cnVjdCByZWYgKnJlZjsKKwlzdHJ1Y3QgdGlwcyBzZW50X3RpcHM7CisKKwkvKgorCSAqIENvbGxlY3QgZXZlcnl0aGluZyB3ZSBrbm93IHRoZXkgd291bGQgaGF2ZSBhdCB0aGUgZW5kIG9mCisJICogdGhpcyBwdXNoLCBhbmQgY29sbGVjdCBhbGwgdGFncyB0aGV5IGhhdmUuCisJICovCisJbWVtc2V0KCZzZW50X3RpcHMsIDAsIHNpemVvZihzZW50X3RpcHMpKTsKKwlmb3IgKHJlZiA9ICpkc3Q7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7CisJCWlmIChyZWYtPnBlZXJfcmVmICYmCisJCSAgICAhaXNfbnVsbF9zaGExKHJlZi0+cGVlcl9yZWYtPm5ld19zaGExKSkKKwkJCWFkZF90b190aXBzKCZzZW50X3RpcHMsIHJlZi0+cGVlcl9yZWYtPm5ld19zaGExKTsKKwkJZWxzZQorCQkJYWRkX3RvX3RpcHMoJnNlbnRfdGlwcywgcmVmLT5vbGRfc2hhMSk7CisJCWlmICghcHJlZml4Y21wKHJlZi0+bmFtZSwgInJlZnMvdGFncy8iKSkKKwkJCXN0cmluZ19saXN0X2FwcGVuZCgmZHN0X3RhZywgcmVmLT5uYW1lKTsKKwl9CisJY2xlYXJfY29tbWl0X21hcmtzX21hbnkoc2VudF90aXBzLm5yLCBzZW50X3RpcHMudGlwLCBUTVBfTUFSSyk7CisKKwlzb3J0X3N0cmluZ19saXN0KCZkc3RfdGFnKTsKKworCS8qIENvbGxlY3QgdGFncyB0aGV5IGRvIG5vdCBoYXZlLiAqLworCWZvciAocmVmID0gc3JjOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgeworCQlpZiAocHJlZml4Y21wKHJlZi0+bmFtZSwgInJlZnMvdGFncy8iKSkKKwkJCWNvbnRpbnVlOyAvKiBub3QgYSB0YWcgKi8KKwkJaWYgKHN0cmluZ19saXN0X2hhc19zdHJpbmcoJmRzdF90YWcsIHJlZi0+bmFtZSkpCisJCQljb250aW51ZTsgLyogdGhleSBhbHJlYWR5IGhhdmUgaXQgKi8KKwkJaWYgKHNoYTFfb2JqZWN0X2luZm8ocmVmLT5uZXdfc2hhMSwgTlVMTCkgIT0gT0JKX1RBRykKKwkJCWNvbnRpbnVlOyAvKiBiZSBjb25zZXJ2YXRpdmUgKi8KKwkJaXRlbSA9IHN0cmluZ19saXN0X2FwcGVuZCgmc3JjX3RhZywgcmVmLT5uYW1lKTsKKwkJaXRlbS0+dXRpbCA9IHJlZjsKKwl9CisJc3RyaW5nX2xpc3RfY2xlYXIoJmRzdF90YWcsIDApOworCisJLyoKKwkgKiBBdCB0aGlzIHBvaW50LCBzcmNfdGFnIGxpc3RzIHRhZ3MgdGhhdCBhcmUgbWlzc2luZyBmcm9tCisJICogZHN0LCBhbmQgc2VudF90aXBzIGxpc3RzIHRoZSB0aXBzIHdlIGFyZSBwdXNoaW5nIG9yIHRob3NlCisJICogdGhhdCB3ZSBrbm93IHRoZXkgYWxyZWFkeSBoYXZlLiBBbiBlbGVtZW50IGluIHRoZSBzcmNfdGFnCisJICogdGhhdCBpcyBhbiBhbmNlc3RvciBvZiBhbnkgb2YgdGhlIHNlbnRfdGlwcyBuZWVkcyB0byBiZQorCSAqIHNlbnQgdG8gdGhlIG90aGVyIHNpZGUuCisJICovCisJaWYgKHNlbnRfdGlwcy5ucikgeworCQlmb3JfZWFjaF9zdHJpbmdfbGlzdF9pdGVtKGl0ZW0sICZzcmNfdGFnKSB7CisJCQlzdHJ1Y3QgcmVmICpyZWYgPSBpdGVtLT51dGlsOworCQkJc3RydWN0IHJlZiAqZHN0X3JlZjsKKwkJCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKKworCQkJaWYgKGlzX251bGxfc2hhMShyZWYtPm5ld19zaGExKSkKKwkJCQljb250aW51ZTsKKwkJCWNvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShyZWYtPm5ld19zaGExLCAxKTsKKwkJCWlmICghY29tbWl0KQorCQkJCS8qIG5vdCBwdXNoaW5nIGEgY29tbWl0LCB3aGljaCBpcyBub3QgYW4gZXJyb3IgKi8KKwkJCQljb250aW51ZTsKKworCQkJLyoKKwkJCSAqIElzIHRoaXMgdGFnLCB3aGljaCB0aGV5IGRvIG5vdCBoYXZlLCByZWFjaGFibGUgZnJvbQorCQkJICogYW55IG9mIHRoZSBjb21taXRzIHdlIGFyZSBzZW5kaW5nPworCQkJICovCisJCQlpZiAoIWluX21lcmdlX2Jhc2VzX21hbnkoY29tbWl0LCBzZW50X3RpcHMubnIsIHNlbnRfdGlwcy50aXApKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBBZGQgaXQgaW4gKi8KKwkJCWRzdF9yZWYgPSBtYWtlX2xpbmtlZF9yZWYocmVmLT5uYW1lLCBkc3RfdGFpbCk7CisJCQloYXNoY3B5KGRzdF9yZWYtPm5ld19zaGExLCByZWYtPm5ld19zaGExKTsKKwkJCWRzdF9yZWYtPnBlZXJfcmVmID0gY29weV9yZWYocmVmKTsKKwkJfQorCX0KKwlzdHJpbmdfbGlzdF9jbGVhcigmc3JjX3RhZywgMCk7CisJZnJlZShzZW50X3RpcHMudGlwKTsKK30KKwogLyoKICAqIEdpdmVuIHRoZSBzZXQgb2YgcmVmcyB0aGUgbG9jYWwgcmVwb3NpdG9yeSBoYXMsIHRoZSBzZXQgb2YgcmVmcyB0aGUKICAqIHJlbW90ZSByZXBvc2l0b3J5IGhhcywgYW5kIHRoZSByZWZzcGVjIHVzZWQgZm9yIHB1c2gsIGRldGVybWluZQpAQCAtMTIyNyw5ICsxMzQ5LDYgQEAKIAkJY29uc3Qgc3RydWN0IHJlZnNwZWMgKnBhdCA9IE5VTEw7CiAJCWNoYXIgKmRzdF9uYW1lOwogCi0JCWlmIChyZWYtPnBlZXJfcmVmKQotCQkJY29udGludWU7Ci0KIAkJZHN0X25hbWUgPSBnZXRfcmVmX21hdGNoKHJzLCBucl9yZWZzcGVjLCByZWYsIHNlbmRfbWlycm9yLCBGUk9NX1NSQywgJnBhdCk7CiAJCWlmICghZHN0X25hbWUpCiAJCQljb250aW51ZTsKQEAgLTEyNTcsNiArMTM3NiwxMCBAQAogCWZyZWVfbmFtZToKIAkJZnJlZShkc3RfbmFtZSk7CiAJfQorCisJaWYgKGZsYWdzICYgTUFUQ0hfUkVGU19GT0xMT1dfVEFHUykKKwkJYWRkX21pc3NpbmdfdGFncyhzcmMsIGRzdCwgJmRzdF90YWlsKTsKKwogCWlmIChzZW5kX3BydW5lKSB7CiAJCS8qIGNoZWNrIGZvciBtaXNzaW5nIHJlZnMgb24gdGhlIHJlbW90ZSAqLwogCQlmb3IgKHJlZiA9ICpkc3Q7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7CkBAIC0xMjg1LDYgKzE0MDgsOCBAQAogCXN0cnVjdCByZWYgKnJlZjsKIAogCWZvciAocmVmID0gcmVtb3RlX3JlZnM7IHJlZjsgcmVmID0gcmVmLT5uZXh0KSB7CisJCWludCBmb3JjZV9yZWZfdXBkYXRlID0gcmVmLT5mb3JjZSB8fCBmb3JjZV91cGRhdGU7CisKIAkJaWYgKHJlZi0+cGVlcl9yZWYpCiAJCQloYXNoY3B5KHJlZi0+bmV3X3NoYTEsIHJlZi0+cGVlcl9yZWYtPm5ld19zaGExKTsKIAkJZWxzZSBpZiAoIXNlbmRfbWlycm9yKQpAQCAtMTI5NywzNCArMTQyMiw0MSBAQAogCQkJY29udGludWU7CiAJCX0KIAotCQkvKiBUaGlzIHBhcnQgZGV0ZXJtaW5lcyB3aGF0IGNhbiBvdmVyd3JpdGUgd2hhdC4KLQkJICogVGhlIHJ1bGVzIGFyZToKKwkJLyoKKwkJICogRGVjaWRlIHdoZXRoZXIgYW4gaW5kaXZpZHVhbCByZWZzcGVjIEE6QiBjYW4gYmUKKwkJICogcHVzaGVkLiAgVGhlIHB1c2ggd2lsbCBzdWNjZWVkIGlmIGFueSBvZiB0aGUKKwkJICogZm9sbG93aW5nIGFyZSB0cnVlOgogCQkgKgotCQkgKiAoMCkgeW91IGNhbiBhbHdheXMgdXNlIC0tZm9yY2Ugb3IgK0E6QiBub3RhdGlvbiB0bwotCQkgKiAgICAgc2VsZWN0aXZlbHkgZm9yY2UgaW5kaXZpZHVhbCByZWYgcGFpcnMuCisJCSAqICgxKSB0aGUgcmVtb3RlIHJlZmVyZW5jZSBCIGRvZXMgbm90IGV4aXN0CiAJCSAqCi0JCSAqICgxKSBpZiB0aGUgb2xkIHRoaW5nIGRvZXMgbm90IGV4aXN0LCBpdCBpcyBPSy4KKwkJICogKDIpIHRoZSByZW1vdGUgcmVmZXJlbmNlIEIgaXMgYmVpbmcgcmVtb3ZlZCAoaS5lLiwKKwkJICogICAgIHB1c2hpbmcgOkIgd2hlcmUgbm8gc291cmNlIGlzIHNwZWNpZmllZCkKIAkJICoKLQkJICogKDIpIGlmIHlvdSBkbyBub3QgaGF2ZSB0aGUgb2xkIHRoaW5nLCB5b3UgYXJlIG5vdCBhbGxvd2VkCi0JCSAqICAgICB0byBvdmVyd3JpdGUgaXQ7IHlvdSB3b3VsZCBub3Qga25vdyB3aGF0IHlvdSBhcmUgbG9zaW5nCi0JCSAqICAgICBvdGhlcndpc2UuCisJCSAqICgzKSB0aGUgZGVzdGluYXRpb24gaXMgbm90IHVuZGVyIHJlZnMvdGFncy8sIGFuZAorCQkgKiAgICAgaWYgdGhlIG9sZCBhbmQgbmV3IHZhbHVlIGlzIGEgY29tbWl0LCB0aGUgbmV3CisJCSAqICAgICBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIG9sZC4KIAkJICoKLQkJICogKDMpIGlmIGJvdGggbmV3IGFuZCBvbGQgYXJlIGNvbW1pdC1pc2gsIGFuZCBuZXcgaXMgYQotCQkgKiAgICAgZGVzY2VuZGFudCBvZiBvbGQsIGl0IGlzIE9LLgotCQkgKgotCQkgKiAoNCkgcmVnYXJkbGVzcyBvZiBhbGwgb2YgdGhlIGFib3ZlLCByZW1vdmluZyA6QiBpcwotCQkgKiAgICAgYWx3YXlzIGFsbG93ZWQuCisJCSAqICg0KSBpdCBpcyBmb3JjZWQgdXNpbmcgdGhlICtBOkIgbm90YXRpb24sIG9yIGJ5CisJCSAqICAgICBwYXNzaW5nIHRoZSAtLWZvcmNlIGFyZ3VtZW50CiAJCSAqLwogCi0JCXJlZi0+bm9uZmFzdGZvcndhcmQgPQotCQkJIXJlZi0+ZGVsZXRpb24gJiYKLQkJCSFpc19udWxsX3NoYTEocmVmLT5vbGRfc2hhMSkgJiYKLQkJCSghaGFzX3NoYTFfZmlsZShyZWYtPm9sZF9zaGExKQotCQkJICB8fCAhcmVmX25ld2VyKHJlZi0+bmV3X3NoYTEsIHJlZi0+b2xkX3NoYTEpKTsKKwkJaWYgKCFyZWYtPmRlbGV0aW9uICYmICFpc19udWxsX3NoYTEocmVmLT5vbGRfc2hhMSkpIHsKKwkJCWludCB3aHkgPSAwOyAvKiB3aHkgd291bGQgdGhpcyBwdXNoIHJlcXVpcmUgLS1mb3JjZT8gKi8KIAotCQlpZiAocmVmLT5ub25mYXN0Zm9yd2FyZCAmJiAhcmVmLT5mb3JjZSAmJiAhZm9yY2VfdXBkYXRlKSB7Ci0JCQlyZWYtPnN0YXR1cyA9IFJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJEOwotCQkJY29udGludWU7CisJCQlpZiAoIXByZWZpeGNtcChyZWYtPm5hbWUsICJyZWZzL3RhZ3MvIikpCisJCQkJd2h5ID0gUkVGX1NUQVRVU19SRUpFQ1RfQUxSRUFEWV9FWElTVFM7CisJCQllbHNlIGlmICghaGFzX3NoYTFfZmlsZShyZWYtPm9sZF9zaGExKSkKKwkJCQl3aHkgPSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVDsKKwkJCWVsc2UgaWYgKCFsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkocmVmLT5vbGRfc2hhMSwgMSkgfHwKKwkJCQkgIWxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShyZWYtPm5ld19zaGExLCAxKSkKKwkJCQl3aHkgPSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRTsKKwkJCWVsc2UgaWYgKCFyZWZfbmV3ZXIocmVmLT5uZXdfc2hhMSwgcmVmLT5vbGRfc2hhMSkpCisJCQkJd2h5ID0gUkVGX1NUQVRVU19SRUpFQ1RfTk9ORkFTVEZPUldBUkQ7CisKKwkJCWlmICghZm9yY2VfcmVmX3VwZGF0ZSkKKwkJCQlyZWYtPnN0YXR1cyA9IHdoeTsKKwkJCWVsc2UgaWYgKHdoeSkKKwkJCQlyZWYtPmZvcmNlZF91cGRhdGUgPSAxOwogCQl9CiAJfQogfQpAQCAtMTM0Miw4ICsxNDc0LDcgQEAKIAkJcmV0LT5yZW1vdGUgPSByZW1vdGVfZ2V0KHJldC0+cmVtb3RlX25hbWUpOwogCQlpZiAocmV0LT5tZXJnZV9ucikgewogCQkJaW50IGk7Ci0JCQlyZXQtPm1lcmdlID0geGNhbGxvYyhzaXplb2YoKnJldC0+bWVyZ2UpLAotCQkJCQkgICAgIHJldC0+bWVyZ2VfbnIpOworCQkJcmV0LT5tZXJnZSA9IHhjYWxsb2MocmV0LT5tZXJnZV9uciwgc2l6ZW9mKCpyZXQtPm1lcmdlKSk7CiAJCQlmb3IgKGkgPSAwOyBpIDwgcmV0LT5tZXJnZV9ucjsgaSsrKSB7CiAJCQkJcmV0LT5tZXJnZVtpXSA9IHhjYWxsb2MoMSwgc2l6ZW9mKCoqcmV0LT5tZXJnZSkpOwogCQkJCXJldC0+bWVyZ2VbaV0tPnNyYyA9IHhzdHJkdXAocmV0LT5tZXJnZV9uYW1lW2ldKTsKQEAgLTE0NTcsNyArMTU4OCwxMiBAQAogCX0gZWxzZSB7CiAJCWNvbnN0IGNoYXIgKm5hbWUgPSByZWZzcGVjLT5zcmNbMF0gPyByZWZzcGVjLT5zcmMgOiAiSEVBRCI7CiAKLQkJcmVmX21hcCA9IGdldF9yZW1vdGVfcmVmKHJlbW90ZV9yZWZzLCBuYW1lKTsKKwkJaWYgKHJlZnNwZWMtPmV4YWN0X3NoYTEpIHsKKwkJCXJlZl9tYXAgPSBhbGxvY19yZWYobmFtZSk7CisJCQlnZXRfc2hhMV9oZXgobmFtZSwgcmVmX21hcC0+b2xkX3NoYTEpOworCQl9IGVsc2UgeworCQkJcmVmX21hcCA9IGdldF9yZW1vdGVfcmVmKHJlbW90ZV9yZWZzLCBuYW1lKTsKKwkJfQogCQlpZiAoIW1pc3Npbmdfb2sgJiYgIXJlZl9tYXApCiAJCQlkaWUoIkNvdWxkbid0IGZpbmQgcmVtb3RlIHJlZiAlcyIsIG5hbWUpOwogCQlpZiAocmVmX21hcCkgewpAQCAtMTUxOCw3ICsxNjU0LDggQEAKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QsICp1c2VkOwogCWludCBmb3VuZCA9IDA7CiAKLQkvKiBCb3RoIG5ldyBhbmQgb2xkIG11c3QgYmUgY29tbWl0LWlzaCBhbmQgbmV3IGlzIGRlc2NlbmRhbnQgb2YKKwkvKgorCSAqIEJvdGggbmV3IGFuZCBvbGQgbXVzdCBiZSBjb21taXQtaXNoIGFuZCBuZXcgaXMgZGVzY2VuZGFudCBvZgogCSAqIG9sZC4gIE90aGVyd2lzZSB3ZSByZXF1aXJlIC0tZm9yY2UuCiAJICovCiAJbyA9IGRlcmVmX3RhZyhwYXJzZV9vYmplY3Qob2xkX3NoYTEpLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3JlbW90ZS5oIGIvcmVtb3RlLmgKaW5kZXggMjUxZDhmZC4uY2Y1NjcyNCAxMDA2NDQKLS0tIGEvcmVtb3RlLmgKKysrIGIvcmVtb3RlLmgKQEAgLTUxLDYgKzUxLDcgQEAKIH07CiAKIHN0cnVjdCByZW1vdGUgKnJlbW90ZV9nZXQoY29uc3QgY2hhciAqbmFtZSk7CitzdHJ1Y3QgcmVtb3RlICpwdXNocmVtb3RlX2dldChjb25zdCBjaGFyICpuYW1lKTsKIGludCByZW1vdGVfaXNfY29uZmlndXJlZChjb25zdCBjaGFyICpuYW1lKTsKIAogdHlwZWRlZiBpbnQgZWFjaF9yZW1vdGVfZm4oc3RydWN0IHJlbW90ZSAqcmVtb3RlLCB2b2lkICpwcml2KTsKQEAgLTYyLDYgKzYzLDcgQEAKIAl1bnNpZ25lZCBmb3JjZSA6IDE7CiAJdW5zaWduZWQgcGF0dGVybiA6IDE7CiAJdW5zaWduZWQgbWF0Y2hpbmcgOiAxOworCXVuc2lnbmVkIGV4YWN0X3NoYTEgOiAxOwogCiAJY2hhciAqc3JjOwogCWNoYXIgKmRzdDsKQEAgLTE0OCw3ICsxNTAsOCBAQAogCU1BVENIX1JFRlNfTk9ORQkJPSAwLAogCU1BVENIX1JFRlNfQUxMIAkJPSAoMSA8PCAwKSwKIAlNQVRDSF9SRUZTX01JUlJPUgk9ICgxIDw8IDEpLAotCU1BVENIX1JFRlNfUFJVTkUJPSAoMSA8PCAyKQorCU1BVENIX1JFRlNfUFJVTkUJPSAoMSA8PCAyKSwKKwlNQVRDSF9SRUZTX0ZPTExPV19UQUdTCT0gKDEgPDwgMykKIH07CiAKIC8qIFJlcG9ydGluZyBvZiB0cmFja2luZyBpbmZvICovCmRpZmYgLS1naXQgYS9yZXJlcmUuYyBiL3JlcmVyZS5jCmluZGV4IGE2YTVjZDUuLjk4ZTNlMjkgMTAwNjQ0Ci0tLSBhL3JlcmVyZS5jCisrKyBiL3JlcmVyZS5jCkBAIC0yODQsOCArMjg0LDEwIEBACiAJc3RyYnVmX3JlbGVhc2Uoc2IpOwogCWlmICghaW8tPmlucHV0LmxlbikKIAkJcmV0dXJuIC0xOwotCWVwID0gc3RyY2hybnVsKGlvLT5pbnB1dC5idWYsICdcbicpOwotCWlmICgqZXAgPT0gJ1xuJykKKwllcCA9IG1lbWNocihpby0+aW5wdXQuYnVmLCAnXG4nLCBpby0+aW5wdXQubGVuKTsKKwlpZiAoIWVwKQorCQllcCA9IGlvLT5pbnB1dC5idWYgKyBpby0+aW5wdXQubGVuOworCWVsc2UgaWYgKCplcCA9PSAnXG4nKQogCQllcCsrOwogCWxlbiA9IGVwIC0gaW8tPmlucHV0LmJ1ZjsKIAlzdHJidWZfYWRkKHNiLCBpby0+aW5wdXQuYnVmLCBsZW4pOwpAQCAtMjk1LDcgKzI5Nyw3IEBACiAKIHN0YXRpYyBpbnQgaGFuZGxlX2NhY2hlKGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIGNvbnN0IGNoYXIgKm91dHB1dCkKIHsKLQltbWZpbGVfdCBtbWZpbGVbM107CisJbW1maWxlX3QgbW1maWxlWzNdID0ge3tOVUxMfX07CiAJbW1idWZmZXJfdCByZXN1bHQgPSB7TlVMTCwgMH07CiAJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAlpbnQgcG9zLCBsZW4sIGksIGh1bmtfbm87CkBAIC0zMTQsMTcgKzMxNiwxNiBAQAogCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKIAkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCQl1bnNpZ25lZCBsb25nIHNpemU7CisJCWludCBqOwogCi0JCW1tZmlsZVtpXS5zaXplID0gMDsKLQkJbW1maWxlW2ldLnB0ciA9IE5VTEw7CiAJCWlmIChhY3RpdmVfbnIgPD0gcG9zKQogCQkJYnJlYWs7CiAJCWNlID0gYWN0aXZlX2NhY2hlW3BvcysrXTsKLQkJaWYgKGNlX25hbWVsZW4oY2UpICE9IGxlbiB8fCBtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIGxlbikKLQkJICAgIHx8IGNlX3N0YWdlKGNlKSAhPSBpICsgMSkKLQkJCWJyZWFrOwotCQltbWZpbGVbaV0ucHRyID0gcmVhZF9zaGExX2ZpbGUoY2UtPnNoYTEsICZ0eXBlLCAmc2l6ZSk7Ci0JCW1tZmlsZVtpXS5zaXplID0gc2l6ZTsKKwkJaWYgKGNlX25hbWVsZW4oY2UpICE9IGxlbiB8fCBtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIGxlbikpCisJCQljb250aW51ZTsKKwkJaiA9IGNlX3N0YWdlKGNlKSAtIDE7CisJCW1tZmlsZVtqXS5wdHIgPSByZWFkX3NoYTFfZmlsZShjZS0+c2hhMSwgJnR5cGUsICZzaXplKTsKKwkJbW1maWxlW2pdLnNpemUgPSBzaXplOwogCX0KIAlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAJCWlmICghbW1maWxlW2ldLnB0ciAmJiAhbW1maWxlW2ldLnNpemUpCmRpZmYgLS1naXQgYS9yZXNvbHZlLXVuZG8uYyBiL3Jlc29sdmUtdW5kby5jCmluZGV4IDcyYjQ2MTIuLjYzOWViOWMgMTAwNjQ0Ci0tLSBhL3Jlc29sdmUtdW5kby5jCisrKyBiL3Jlc29sdmUtdW5kby5jCkBAIC0xMTgsNyArMTE4LDcgQEAKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCXN0cnVjdCByZXNvbHZlX3VuZG9faW5mbyAqcnU7Ci0JaW50IGksIGVyciA9IDA7CisJaW50IGksIGVyciA9IDAsIG1hdGNoZWQ7CiAKIAlpZiAoIWlzdGF0ZS0+cmVzb2x2ZV91bmRvKQogCQlyZXR1cm4gcG9zOwpAQCAtMTM3LDYgKzEzNyw3IEBACiAJcnUgPSBpdGVtLT51dGlsOwogCWlmICghcnUpCiAJCXJldHVybiBwb3M7CisJbWF0Y2hlZCA9IGNlLT5jZV9mbGFncyAmIENFX01BVENIRUQ7CiAJcmVtb3ZlX2luZGV4X2VudHJ5X2F0KGlzdGF0ZSwgcG9zKTsKIAlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAJCXN0cnVjdCBjYWNoZV9lbnRyeSAqbmNlOwpAQCAtMTQ0LDYgKzE0NSw4IEBACiAJCQljb250aW51ZTsKIAkJbmNlID0gbWFrZV9jYWNoZV9lbnRyeShydS0+bW9kZVtpXSwgcnUtPnNoYTFbaV0sCiAJCQkJICAgICAgIGNlLT5uYW1lLCBpICsgMSwgMCk7CisJCWlmIChtYXRjaGVkKQorCQkJbmNlLT5jZV9mbGFncyB8PSBDRV9NQVRDSEVEOwogCQlpZiAoYWRkX2luZGV4X2VudHJ5KGlzdGF0ZSwgbmNlLCBBRERfQ0FDSEVfT0tfVE9fQUREKSkgewogCQkJZXJyID0gMTsKIAkJCWVycm9yKCJjYW5ub3QgdW5tZXJnZSAnJXMnIiwgY2UtPm5hbWUpOwpAQCAtMTU2LDYgKzE1OSwyMCBAQAogCXJldHVybiB1bm1lcmdlX2luZGV4X2VudHJ5X2F0KGlzdGF0ZSwgcG9zKTsKIH0KIAordm9pZCB1bm1lcmdlX21hcmtlZF9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSkKK3sKKwlpbnQgaTsKKworCWlmICghaXN0YXRlLT5yZXNvbHZlX3VuZG8pCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBpc3RhdGUtPmNhY2hlX25yOyBpKyspIHsKKwkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGlzdGF0ZS0+Y2FjaGVbaV07CisJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9NQVRDSEVEKQorCQkJaSA9IHVubWVyZ2VfaW5kZXhfZW50cnlfYXQoaXN0YXRlLCBpKTsKKwl9Cit9CisKIHZvaWQgdW5tZXJnZV9pbmRleChzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgY29uc3QgY2hhciAqKnBhdGhzcGVjKQogewogCWludCBpOwpkaWZmIC0tZ2l0IGEvcmVzb2x2ZS11bmRvLmggYi9yZXNvbHZlLXVuZG8uaAppbmRleCA4NDU4NzY5Li43YTMwMjA2IDEwMDY0NAotLS0gYS9yZXNvbHZlLXVuZG8uaAorKysgYi9yZXNvbHZlLXVuZG8uaApAQCAtMTIsNSArMTIsNiBAQAogZXh0ZXJuIHZvaWQgcmVzb2x2ZV91bmRvX2NsZWFyX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqKTsKIGV4dGVybiBpbnQgdW5tZXJnZV9pbmRleF9lbnRyeV9hdChzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgaW50KTsKIGV4dGVybiB2b2lkIHVubWVyZ2VfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKiopOworZXh0ZXJuIHZvaWQgdW5tZXJnZV9tYXJrZWRfaW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICopOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3JldmlzaW9uLmMgYi9yZXZpc2lvbi5jCmluZGV4IDU5YjI2YzcuLmYxYmI3MzEgMTAwNjQ0Ci0tLSBhL3JldmlzaW9uLmMKKysrIGIvcmV2aXNpb24uYwpAQCAtMTMsNiArMTMsOCBAQAogI2luY2x1ZGUgImRlY29yYXRlLmgiCiAjaW5jbHVkZSAibG9nLXRyZWUuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgorI2luY2x1ZGUgImxpbmUtbG9nLmgiCisjaW5jbHVkZSAibWFpbG1hcC5oIgogCiB2b2xhdGlsZSBzaG93X2Vhcmx5X291dHB1dF9mbl90IHNob3dfZWFybHlfb3V0cHV0OwogCkBAIC02OSw3ICs3MSw4IEBACiAJcmV0dXJuIG91cnMgfHwgZW1pdHRlZDsKIH0KIAotdm9pZCBzaG93X29iamVjdF93aXRoX25hbWUoRklMRSAqb3V0LCBzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IHN0cnVjdCBuYW1lX3BhdGggKnBhdGgsIGNvbnN0IGNoYXIgKmNvbXBvbmVudCkKK3ZvaWQgc2hvd19vYmplY3Rfd2l0aF9uYW1lKEZJTEUgKm91dCwgc3RydWN0IG9iamVjdCAqb2JqLAorCQkJICAgY29uc3Qgc3RydWN0IG5hbWVfcGF0aCAqcGF0aCwgY29uc3QgY2hhciAqY29tcG9uZW50KQogewogCXN0cnVjdCBuYW1lX3BhdGggbGVhZjsKIAlsZWFmLnVwID0gKHN0cnVjdCBuYW1lX3BhdGggKilwYXRoOwpAQCAtODYsNyArODksOSBAQAogCQlzdHJ1Y3QgbmFtZV9wYXRoICpwYXRoLAogCQljb25zdCBjaGFyICpuYW1lKQogewotCWFkZF9vYmplY3RfYXJyYXkob2JqLCBwYXRoX25hbWUocGF0aCwgbmFtZSksIHApOworCWNoYXIgKnBuID0gcGF0aF9uYW1lKHBhdGgsIG5hbWUpOworCWFkZF9vYmplY3RfYXJyYXkob2JqLCBwbiwgcCk7CisJZnJlZShwbik7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcmtfYmxvYl91bmludGVyZXN0aW5nKHN0cnVjdCBibG9iICpibG9iKQpAQCAtMTg1LDcgKzE5MCw5IEBACiAJfQogfQogCi1zdGF0aWMgdm9pZCBhZGRfcGVuZGluZ19vYmplY3Rfd2l0aF9tb2RlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBtb2RlKQorc3RhdGljIHZvaWQgYWRkX3BlbmRpbmdfb2JqZWN0X3dpdGhfbW9kZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkJCSBzdHJ1Y3Qgb2JqZWN0ICpvYmosCisJCQkJCSBjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBtb2RlKQogewogCWlmICghb2JqKQogCQlyZXR1cm47CkBAIC0yMDgsNyArMjE1LDggQEAKIAlhZGRfb2JqZWN0X2FycmF5X3dpdGhfbW9kZShvYmosIG5hbWUsICZyZXZzLT5wZW5kaW5nLCBtb2RlKTsKIH0KIAotdm9pZCBhZGRfcGVuZGluZ19vYmplY3Qoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUpCit2b2lkIGFkZF9wZW5kaW5nX29iamVjdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQlzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJYWRkX3BlbmRpbmdfb2JqZWN0X3dpdGhfbW9kZShyZXZzLCBvYmosIG5hbWUsIFNfSUZJTlZBTElEKTsKIH0KQEAgLTIyNSw3ICsyMzMsOSBAQAogCWFkZF9wZW5kaW5nX29iamVjdChyZXZzLCBvYmosICJIRUFEIik7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qgb2JqZWN0ICpnZXRfcmVmZXJlbmNlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdW5zaWduZWQgaW50IGZsYWdzKQorc3RhdGljIHN0cnVjdCBvYmplY3QgKmdldF9yZWZlcmVuY2Uoc3RydWN0IHJldl9pbmZvICpyZXZzLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJc3RydWN0IG9iamVjdCAqb2JqZWN0OwogCkBAIC0yNDYsNyArMjU2LDggQEAKIAlhZGRfcGVuZGluZ19vYmplY3QocmV2cywgb2JqZWN0LCBuYW1lKTsKIH0KIAotc3RhdGljIHN0cnVjdCBjb21taXQgKmhhbmRsZV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QsIGNvbnN0IGNoYXIgKm5hbWUpCitzdGF0aWMgc3RydWN0IGNvbW1pdCAqaGFuZGxlX2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkJICAgIHN0cnVjdCBvYmplY3QgKm9iamVjdCwgY29uc3QgY2hhciAqbmFtZSkKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzID0gb2JqZWN0LT5mbGFnczsKIApAQCAtMzMyLDYgKzM0Myw4MCBAQAogfQogCiAvKgorICogQSBkZWZpbml0aW9uIG9mICJyZWxldmFudCIgY29tbWl0IHRoYXQgd2UgY2FuIHVzZSB0byBzaW1wbGlmeSBsaW1pdGVkIGdyYXBocworICogYnkgZWxpbWluYXRpbmcgc2lkZSBicmFuY2hlcy4KKyAqCisgKiBBICJyZWxldmFudCIgY29tbWl0IGlzIG9uZSB0aGF0IGlzICFVTklOVEVSRVNUSU5HIChpZSB3ZSBhcmUgaW5jbHVkaW5nIGl0CisgKiBpbiBvdXIgbGlzdCksIG9yIHRoYXQgaXMgYSBzcGVjaWZpZWQgQk9UVE9NIGNvbW1pdC4gVGhlbiBhZnRlciBjb21wdXRpbmcKKyAqIGEgbGltaXRlZCBsaXN0LCBkdXJpbmcgcHJvY2Vzc2luZyB3ZSBjYW4gZ2VuZXJhbGx5IGlnbm9yZSBib3VuZGFyeSBtZXJnZXMKKyAqIGNvbWluZyBmcm9tIG91dHNpZGUgdGhlIGdyYXBoLCAoaWUgZnJvbSBpcnJlbGV2YW50IHBhcmVudHMpLCBhbmQgdHJlYXQKKyAqIHRob3NlIG1lcmdlcyBhcyBpZiB0aGV5IHdlcmUgc2luZ2xlLXBhcmVudC4gVFJFRVNBTUUgaXMgZGVmaW5lZCB0byBjb25zaWRlcgorICogb25seSByZWxldmFudCBwYXJlbnRzLCBpZiBhbnkuIElmIHdlIGFyZSBUUkVFU0FNRSB0byBvdXIgb24tZ3JhcGggcGFyZW50cywKKyAqIHdlIGRvbid0IGNhcmUgaWYgd2Ugd2VyZSAhVFJFRVNBTUUgdG8gbm9uLWdyYXBoIHBhcmVudHMuCisgKgorICogVHJlYXRpbmcgYm90dG9tIGNvbW1pdHMgYXMgcmVsZXZhbnQgZW5zdXJlcyB0aGF0IGEgbGltaXRlZCBncmFwaCdzCisgKiBjb25uZWN0aW9uIHRvIHRoZSBhY3R1YWwgYm90dG9tIGNvbW1pdCBpcyBub3Qgdmlld2VkIGFzIGEgc2lkZSBicmFuY2gsIGJ1dAorICogdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBncmFwaC4gRm9yIGV4YW1wbGU6CisgKgorICogICAuLi4uWi4uLkEtLS1YLS0tby0tLW8tLS1CCisgKiAgICAgICAgLiAgICAgLworICogICAgICAgICBXLS0tWQorICoKKyAqIFdoZW4gY29tcHV0aW5nICJBLi5CIiwgdGhlIEEtWCBjb25uZWN0aW9uIGlzIGF0IGxlYXN0IGFzIGltcG9ydGFudCBhcworICogWS1YLCBkZXNwaXRlIEEgYmVpbmcgZmxhZ2dlZCBVTklOVEVSRVNUSU5HLgorICoKKyAqIEFuZCB3aGVuIGNvbXB1dGluZyAtLWFuY2VzdHJ5LXBhdGggIkEuLkIiLCB0aGUgQS1YIGNvbm5lY3Rpb24gaXMgbW9yZQorICogaW1wb3J0YW50IHRoYW4gWS1YLCBkZXNwaXRlIGJvdGggQSBhbmQgWSBiZWluZyBmbGFnZ2VkIFVOSU5URVJFU1RJTkcuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHJlbGV2YW50X2NvbW1pdChzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJcmV0dXJuIChjb21taXQtPm9iamVjdC5mbGFncyAmIChVTklOVEVSRVNUSU5HIHwgQk9UVE9NKSkgIT0gVU5JTlRFUkVTVElORzsKK30KKworLyoKKyAqIFJldHVybiBhIHNpbmdsZSByZWxldmFudCBjb21taXQgZnJvbSBhIHBhcmVudCBsaXN0LiBJZiB3ZSBhcmUgYSBUUkVFU0FNRQorICogY29tbWl0LCBhbmQgdGhpcyBzZWxlY3RzIG9uZSBvZiBvdXIgcGFyZW50cywgdGhlbiB3ZSBjYW4gc2FmZWx5IHNpbXBsaWZ5IHRvCisgKiB0aGF0IHBhcmVudC4KKyAqLworc3RhdGljIHN0cnVjdCBjb21taXQgKm9uZV9yZWxldmFudF9wYXJlbnQoY29uc3Qgc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCQkgIHN0cnVjdCBjb21taXRfbGlzdCAqb3JpZykKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QgPSBvcmlnOworCXN0cnVjdCBjb21taXQgKnJlbGV2YW50ID0gTlVMTDsKKworCWlmICghb3JpZykKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIEZvciAxLXBhcmVudCBjb21taXRzLCBvciBpZiBmaXJzdC1wYXJlbnQtb25seSwgdGhlbiByZXR1cm4gdGhhdAorCSAqIGZpcnN0IHBhcmVudCAoZXZlbiBpZiBub3QgInJlbGV2YW50IiBieSB0aGUgYWJvdmUgZGVmaW5pdGlvbikuCisJICogVFJFRVNBTUUgd2lsbCBoYXZlIGJlZW4gc2V0IHB1cmVseSBvbiB0aGF0IHBhcmVudC4KKwkgKi8KKwlpZiAocmV2cy0+Zmlyc3RfcGFyZW50X29ubHkgfHwgIW9yaWctPm5leHQpCisJCXJldHVybiBvcmlnLT5pdGVtOworCisJLyoKKwkgKiBGb3IgbXVsdGktcGFyZW50IGNvbW1pdHMsIGlkZW50aWZ5IGEgc29sZSByZWxldmFudCBwYXJlbnQsIGlmIGFueS4KKwkgKiBJZiB3ZSBoYXZlIG9ubHkgb25lIHJlbGV2YW50IHBhcmVudCwgdGhlbiBUUkVFU0FNRSB3aWxsIGJlIHNldCBwdXJlbHkKKwkgKiB3aXRoIHJlZ2FyZCB0byB0aGF0IHBhcmVudCwgYW5kIHdlIGNhbiBzaW1wbGlmeSBhY2NvcmRpbmdseS4KKwkgKgorCSAqIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSByZWxldmFudCBwYXJlbnQsIG9yIG5vIHJlbGV2YW50IHBhcmVudHMKKwkgKiAoYW5kIG11bHRpcGxlIGlycmVsZXZhbnQgb25lcyksIHRoZW4gd2UgY2FuJ3Qgc2VsZWN0IGEgcGFyZW50IGhlcmUKKwkgKiBhbmQgcmV0dXJuIE5VTEwuCisJICovCisJd2hpbGUgKGxpc3QpIHsKKwkJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gbGlzdC0+aXRlbTsKKwkJbGlzdCA9IGxpc3QtPm5leHQ7CisJCWlmIChyZWxldmFudF9jb21taXQoY29tbWl0KSkgeworCQkJaWYgKHJlbGV2YW50KQorCQkJCXJldHVybiBOVUxMOworCQkJcmVsZXZhbnQgPSBjb21taXQ7CisJCX0KKwl9CisJcmV0dXJuIHJlbGV2YW50OworfQorCisvKgogICogVGhlIGdvYWwgaXMgdG8gZ2V0IFJFVl9UUkVFX05FVyBhcyB0aGUgcmVzdWx0IG9ubHkgaWYgdGhlCiAgKiBkaWZmIGNvbnNpc3RzIG9mIGFsbCAnKycgKGFuZCBubyBvdGhlciBjaGFuZ2VzKSwgUkVWX1RSRUVfT0xECiAgKiBpZiB0aGUgd2hvbGUgZGlmZiBpcyByZW1vdmFsIG9mIG9sZCBkYXRhLCBhbmQgb3RoZXJ3aXNlCkBAIC0zNjcsNyArNDUyLDggQEAKIAlESUZGX09QVF9TRVQob3B0aW9ucywgSEFTX0NIQU5HRVMpOwogfQogCi1zdGF0aWMgaW50IHJldl9jb21wYXJlX3RyZWUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpwYXJlbnQsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3N0YXRpYyBpbnQgcmV2X2NvbXBhcmVfdHJlZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkgICAgc3RydWN0IGNvbW1pdCAqcGFyZW50LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7CiAJc3RydWN0IHRyZWUgKnQxID0gcGFyZW50LT50cmVlOwogCXN0cnVjdCB0cmVlICp0MiA9IGNvbW1pdC0+dHJlZTsKQEAgLTQyOCwxMCArNTE0LDEyNSBAQAogCXJldHVybiByZXR2YWwgPj0gMCAmJiAodHJlZV9kaWZmZXJlbmNlID09IFJFVl9UUkVFX1NBTUUpOwogfQogCitzdHJ1Y3QgdHJlZXNhbWVfc3RhdGUgeworCXVuc2lnbmVkIGludCBucGFyZW50czsKKwl1bnNpZ25lZCBjaGFyIHRyZWVzYW1lW0ZMRVhfQVJSQVldOworfTsKKworc3RhdGljIHN0cnVjdCB0cmVlc2FtZV9zdGF0ZSAqaW5pdGlhbGlzZV90cmVlc2FtZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwl1bnNpZ25lZCBuID0gY29tbWl0X2xpc3RfY291bnQoY29tbWl0LT5wYXJlbnRzKTsKKwlzdHJ1Y3QgdHJlZXNhbWVfc3RhdGUgKnN0ID0geGNhbGxvYygxLCBzaXplb2YoKnN0KSArIG4pOworCXN0LT5ucGFyZW50cyA9IG47CisJYWRkX2RlY29yYXRpb24oJnJldnMtPnRyZWVzYW1lLCAmY29tbWl0LT5vYmplY3QsIHN0KTsKKwlyZXR1cm4gc3Q7Cit9CisKKy8qCisgKiBNdXN0IGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciByZW1vdmluZyB0aGUgbnRoX3BhcmVudCBmcm9tIGEgY29tbWl0J3MKKyAqIHBhcmVudCBsaXN0LCBpZiB3ZSBhcmUgbWFpbnRhaW5pbmcgdGhlIHBlci1wYXJlbnQgdHJlZXNhbWVbXSBkZWNvcmF0aW9uLgorICogVGhpcyBkb2VzIG5vdCByZWNhbGN1bGF0ZSB0aGUgbWFzdGVyIFRSRUVTQU1FIGZsYWcgLSB1cGRhdGVfdHJlZXNhbWUoKQorICogc2hvdWxkIGJlIGNhbGxlZCB0byB1cGRhdGUgaXQgYWZ0ZXIgYSBzZXF1ZW5jZSBvZiB0cmVlc2FtZVtdIG1vZGlmaWNhdGlvbnMKKyAqIHRoYXQgbWF5IGhhdmUgYWZmZWN0ZWQgaXQuCisgKi8KK3N0YXRpYyBpbnQgY29tcGFjdF90cmVlc2FtZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCwgdW5zaWduZWQgbnRoX3BhcmVudCkKK3sKKwlzdHJ1Y3QgdHJlZXNhbWVfc3RhdGUgKnN0OworCWludCBvbGRfc2FtZTsKKworCWlmICghY29tbWl0LT5wYXJlbnRzKSB7CisJCS8qCisJCSAqIEhhdmUganVzdCByZW1vdmVkIHRoZSBvbmx5IHBhcmVudCBmcm9tIGEgbm9uLW1lcmdlLgorCQkgKiBEaWZmZXJlbnQgaGFuZGxpbmcsIGFzIHdlIGxhY2sgZGVjb3JhdGlvbi4KKwkJICovCisJCWlmIChudGhfcGFyZW50ICE9IDApCisJCQlkaWUoImNvbXBhY3RfdHJlZXNhbWUgJXUiLCBudGhfcGFyZW50KTsKKwkJb2xkX3NhbWUgPSAhIShjb21taXQtPm9iamVjdC5mbGFncyAmIFRSRUVTQU1FKTsKKwkJaWYgKHJldl9zYW1lX3RyZWVfYXNfZW1wdHkocmV2cywgY29tbWl0KSkKKwkJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IFRSRUVTQU1FOworCQllbHNlCisJCQljb21taXQtPm9iamVjdC5mbGFncyAmPSB+VFJFRVNBTUU7CisJCXJldHVybiBvbGRfc2FtZTsKKwl9CisKKwlzdCA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT50cmVlc2FtZSwgJmNvbW1pdC0+b2JqZWN0KTsKKwlpZiAoIXN0IHx8IG50aF9wYXJlbnQgPj0gc3QtPm5wYXJlbnRzKQorCQlkaWUoImNvbXBhY3RfdHJlZXNhbWUgJXUiLCBudGhfcGFyZW50KTsKKworCW9sZF9zYW1lID0gc3QtPnRyZWVzYW1lW250aF9wYXJlbnRdOworCW1lbW1vdmUoc3QtPnRyZWVzYW1lICsgbnRoX3BhcmVudCwKKwkJc3QtPnRyZWVzYW1lICsgbnRoX3BhcmVudCArIDEsCisJCXN0LT5ucGFyZW50cyAtIG50aF9wYXJlbnQgLSAxKTsKKworCS8qCisJICogSWYgd2UndmUganVzdCBiZWNvbWUgYSBub24tbWVyZ2UgY29tbWl0LCB1cGRhdGUgVFJFRVNBTUUKKwkgKiBpbW1lZGlhdGVseSwgYW5kIHJlbW92ZSB0aGUgbm8tbG9uZ2VyLW5lZWRlZCBkZWNvcmF0aW9uLgorCSAqIElmIHN0aWxsIGEgbWVyZ2UsIGRlZmVyIHVwZGF0ZSB1bnRpbCB1cGRhdGVfdHJlZXNhbWUoKS4KKwkgKi8KKwlpZiAoLS1zdC0+bnBhcmVudHMgPT0gMSkgeworCQlpZiAoY29tbWl0LT5wYXJlbnRzLT5uZXh0KQorCQkJZGllKCJjb21wYWN0X3RyZWVzYW1lIHBhcmVudHMgbWlzbWF0Y2giKTsKKwkJaWYgKHN0LT50cmVlc2FtZVswXSAmJiByZXZzLT5kZW5zZSkKKwkJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IFRSRUVTQU1FOworCQllbHNlCisJCQljb21taXQtPm9iamVjdC5mbGFncyAmPSB+VFJFRVNBTUU7CisJCWZyZWUoYWRkX2RlY29yYXRpb24oJnJldnMtPnRyZWVzYW1lLCAmY29tbWl0LT5vYmplY3QsIE5VTEwpKTsKKwl9CisKKwlyZXR1cm4gb2xkX3NhbWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCB1cGRhdGVfdHJlZXNhbWUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJaWYgKGNvbW1pdC0+cGFyZW50cyAmJiBjb21taXQtPnBhcmVudHMtPm5leHQpIHsKKwkJdW5zaWduZWQgbjsKKwkJc3RydWN0IHRyZWVzYW1lX3N0YXRlICpzdDsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpwOworCQl1bnNpZ25lZCByZWxldmFudF9wYXJlbnRzOworCQl1bnNpZ25lZCByZWxldmFudF9jaGFuZ2UsIGlycmVsZXZhbnRfY2hhbmdlOworCisJCXN0ID0gbG9va3VwX2RlY29yYXRpb24oJnJldnMtPnRyZWVzYW1lLCAmY29tbWl0LT5vYmplY3QpOworCQlpZiAoIXN0KQorCQkJZGllKCJ1cGRhdGVfdHJlZXNhbWUgJXMiLCBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CisJCXJlbGV2YW50X3BhcmVudHMgPSAwOworCQlyZWxldmFudF9jaGFuZ2UgPSBpcnJlbGV2YW50X2NoYW5nZSA9IDA7CisJCWZvciAocCA9IGNvbW1pdC0+cGFyZW50cywgbiA9IDA7IHA7IG4rKywgcCA9IHAtPm5leHQpIHsKKwkJCWlmIChyZWxldmFudF9jb21taXQocC0+aXRlbSkpIHsKKwkJCQlyZWxldmFudF9jaGFuZ2UgfD0gIXN0LT50cmVlc2FtZVtuXTsKKwkJCQlyZWxldmFudF9wYXJlbnRzKys7CisJCQl9IGVsc2UKKwkJCQlpcnJlbGV2YW50X2NoYW5nZSB8PSAhc3QtPnRyZWVzYW1lW25dOworCQl9CisJCWlmIChyZWxldmFudF9wYXJlbnRzID8gcmVsZXZhbnRfY2hhbmdlIDogaXJyZWxldmFudF9jaGFuZ2UpCisJCQljb21taXQtPm9iamVjdC5mbGFncyAmPSB+VFJFRVNBTUU7CisJCWVsc2UKKwkJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IFRSRUVTQU1FOworCX0KKworCXJldHVybiBjb21taXQtPm9iamVjdC5mbGFncyAmIFRSRUVTQU1FOworfQorCitzdGF0aWMgaW5saW5lIGludCBsaW1pdGluZ19jYW5faW5jcmVhc2VfdHJlZXNhbWUoY29uc3Qgc3RydWN0IHJldl9pbmZvICpyZXZzKQoreworCS8qCisJICogVFJFRVNBTUUgaXMgaXJyZWxldmFudCB1bmxlc3MgcHJ1bmUgJiYgZGVuc2U7CisJICogaWYgc2ltcGxpZnlfaGlzdG9yeSBpcyBzZXQsIHdlIGNhbid0IGhhdmUgYSBtaXh0dXJlIG9mIFRSRUVTQU1FIGFuZAorCSAqICAgICFUUkVFU0FNRSBJTlRFUkVTVElORyBwYXJlbnRzIChhbmQgd2UgZG9uJ3QgaGF2ZSB0cmVlc2FtZVtdCisJICogICAgZGVjb3JhdGlvbiBhbnl3YXkpOworCSAqIGlmIGZpcnN0X3BhcmVudF9vbmx5IGlzIHNldCwgdGhlbiB0aGUgVFJFRVNBTUUgZmxhZyBpcyBsb2NrZWQKKwkgKiAgICBhZ2FpbnN0IHRoZSBmaXJzdCBwYXJlbnQgKGFuZCBhZ2FpbiB3ZSBsYWNrIHRyZWVzYW1lW10gZGVjb3JhdGlvbikuCisJICovCisJcmV0dXJuIHJldnMtPnBydW5lICYmIHJldnMtPmRlbnNlICYmCisJICAgICAgICFyZXZzLT5zaW1wbGlmeV9oaXN0b3J5ICYmCisJICAgICAgICFyZXZzLT5maXJzdF9wYXJlbnRfb25seTsKK30KKwogc3RhdGljIHZvaWQgdHJ5X3RvX3NpbXBsaWZ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwcCwgKnBhcmVudDsKLQlpbnQgdHJlZV9jaGFuZ2VkID0gMCwgdHJlZV9zYW1lID0gMCwgbnRoX3BhcmVudCA9IDA7CisJc3RydWN0IHRyZWVzYW1lX3N0YXRlICp0cyA9IE5VTEw7CisJaW50IHJlbGV2YW50X2NoYW5nZSA9IDAsIGlycmVsZXZhbnRfY2hhbmdlID0gMDsKKwlpbnQgcmVsZXZhbnRfcGFyZW50cywgbnRoX3BhcmVudDsKIAogCS8qCiAJICogSWYgd2UgZG9uJ3QgZG8gcHJ1bmluZywgZXZlcnl0aGluZyBpcyBpbnRlcmVzdGluZwpAQCAtNDU1LDMzICs2NTYsNTQgQEAKIAlpZiAoIXJldnMtPmRlbnNlICYmICFjb21taXQtPnBhcmVudHMtPm5leHQpCiAJCXJldHVybjsKIAotCXBwID0gJmNvbW1pdC0+cGFyZW50czsKLQl3aGlsZSAoKHBhcmVudCA9ICpwcCkgIT0gTlVMTCkgeworCWZvciAocHAgPSAmY29tbWl0LT5wYXJlbnRzLCBudGhfcGFyZW50ID0gMCwgcmVsZXZhbnRfcGFyZW50cyA9IDA7CisJICAgICAocGFyZW50ID0gKnBwKSAhPSBOVUxMOworCSAgICAgcHAgPSAmcGFyZW50LT5uZXh0LCBudGhfcGFyZW50KyspIHsKIAkJc3RydWN0IGNvbW1pdCAqcCA9IHBhcmVudC0+aXRlbTsKKwkJaWYgKHJlbGV2YW50X2NvbW1pdChwKSkKKwkJCXJlbGV2YW50X3BhcmVudHMrKzsKIAotCQkvKgotCQkgKiBEbyBub3QgY29tcGFyZSB3aXRoIGxhdGVyIHBhcmVudHMgd2hlbiB3ZSBjYXJlIG9ubHkgYWJvdXQKLQkJICogdGhlIGZpcnN0IHBhcmVudCBjaGFpbiwgaW4gb3JkZXIgdG8gYXZvaWQgZGVyYWlsaW5nIHRoZQotCQkgKiB0cmF2ZXJzYWwgdG8gZm9sbG93IGEgc2lkZSBicmFuY2ggdGhhdCBicm91Z2h0IGV2ZXJ5dGhpbmcKLQkJICogaW4gdGhlIHBhdGggd2UgYXJlIGxpbWl0ZWQgdG8gYnkgdGhlIHBhdGhzcGVjLgotCQkgKi8KLQkJaWYgKHJldnMtPmZpcnN0X3BhcmVudF9vbmx5ICYmIG50aF9wYXJlbnQrKykKLQkJCWJyZWFrOworCQlpZiAobnRoX3BhcmVudCA9PSAxKSB7CisJCQkvKgorCQkJICogVGhpcyBvdXIgc2Vjb25kIGxvb3AgaXRlcmF0aW9uIC0gc28gd2Ugbm93IGtub3cKKwkJCSAqIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIG1lcmdlLgorCQkJICoKKwkJCSAqIERvIG5vdCBjb21wYXJlIHdpdGggbGF0ZXIgcGFyZW50cyB3aGVuIHdlIGNhcmUgb25seSBhYm91dAorCQkJICogdGhlIGZpcnN0IHBhcmVudCBjaGFpbiwgaW4gb3JkZXIgdG8gYXZvaWQgZGVyYWlsaW5nIHRoZQorCQkJICogdHJhdmVyc2FsIHRvIGZvbGxvdyBhIHNpZGUgYnJhbmNoIHRoYXQgYnJvdWdodCBldmVyeXRoaW5nCisJCQkgKiBpbiB0aGUgcGF0aCB3ZSBhcmUgbGltaXRlZCB0byBieSB0aGUgcGF0aHNwZWMuCisJCQkgKi8KKwkJCWlmIChyZXZzLT5maXJzdF9wYXJlbnRfb25seSkKKwkJCQlicmVhazsKKwkJCS8qCisJCQkgKiBJZiB0aGlzIHdpbGwgcmVtYWluIGEgcG90ZW50aWFsbHktc2ltcGxpZmlhYmxlCisJCQkgKiBtZXJnZSwgcmVtZW1iZXIgcGVyLXBhcmVudCB0cmVlc2FtZSBpZiBuZWVkZWQuCisJCQkgKiBJbml0aWFsaXNlIHRoZSBhcnJheSB3aXRoIHRoZSBjb21wYXJpc29uIGZyb20gb3VyCisJCQkgKiBmaXJzdCBpdGVyYXRpb24uCisJCQkgKi8KKwkJCWlmIChyZXZzLT50cmVlc2FtZS5uYW1lICYmCisJCQkgICAgIXJldnMtPnNpbXBsaWZ5X2hpc3RvcnkgJiYKKwkJCSAgICAhKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgVU5JTlRFUkVTVElORykpIHsKKwkJCQl0cyA9IGluaXRpYWxpc2VfdHJlZXNhbWUocmV2cywgY29tbWl0KTsKKwkJCQlpZiAoIShpcnJlbGV2YW50X2NoYW5nZSB8fCByZWxldmFudF9jaGFuZ2UpKQorCQkJCQl0cy0+dHJlZXNhbWVbMF0gPSAxOworCQkJfQorCQl9CiAJCWlmIChwYXJzZV9jb21taXQocCkgPCAwKQogCQkJZGllKCJjYW5ub3Qgc2ltcGxpZnkgY29tbWl0ICVzIChiZWNhdXNlIG9mICVzKSIsCiAJCQkgICAgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSksCiAJCQkgICAgc2hhMV90b19oZXgocC0+b2JqZWN0LnNoYTEpKTsKIAkJc3dpdGNoIChyZXZfY29tcGFyZV90cmVlKHJldnMsIHAsIGNvbW1pdCkpIHsKIAkJY2FzZSBSRVZfVFJFRV9TQU1FOgotCQkJdHJlZV9zYW1lID0gMTsKLQkJCWlmICghcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSB8fCAocC0+b2JqZWN0LmZsYWdzICYgVU5JTlRFUkVTVElORykpIHsKKwkJCWlmICghcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSB8fCAhcmVsZXZhbnRfY29tbWl0KHApKSB7CiAJCQkJLyogRXZlbiBpZiBhIG1lcmdlIHdpdGggYW4gdW5pbnRlcmVzdGluZwogCQkJCSAqIHNpZGUgYnJhbmNoIGJyb3VnaHQgdGhlIGVudGlyZSBjaGFuZ2UKIAkJCQkgKiB3ZSBhcmUgaW50ZXJlc3RlZCBpbiwgd2UgZG8gbm90IHdhbnQKIAkJCQkgKiB0byBsb3NlIHRoZSBvdGhlciBicmFuY2hlcyBvZiB0aGlzCiAJCQkJICogbWVyZ2UsIHNvIHdlIGp1c3Qga2VlcCBnb2luZy4KIAkJCQkgKi8KLQkJCQlwcCA9ICZwYXJlbnQtPm5leHQ7CisJCQkJaWYgKHRzKQorCQkJCQl0cy0+dHJlZXNhbWVbbnRoX3BhcmVudF0gPSAxOwogCQkJCWNvbnRpbnVlOwogCQkJfQogCQkJcGFyZW50LT5uZXh0ID0gTlVMTDsKQEAgLTUwOSwxNSArNzMxLDI3IEBACiAJCS8qIGZhbGx0aHJvdWdoICovCiAJCWNhc2UgUkVWX1RSRUVfT0xEOgogCQljYXNlIFJFVl9UUkVFX0RJRkZFUkVOVDoKLQkJCXRyZWVfY2hhbmdlZCA9IDE7Ci0JCQlwcCA9ICZwYXJlbnQtPm5leHQ7CisJCQlpZiAocmVsZXZhbnRfY29tbWl0KHApKQorCQkJCXJlbGV2YW50X2NoYW5nZSA9IDE7CisJCQllbHNlCisJCQkJaXJyZWxldmFudF9jaGFuZ2UgPSAxOwogCQkJY29udGludWU7CiAJCX0KIAkJZGllKCJiYWQgdHJlZSBjb21wYXJlIGZvciBjb21taXQgJXMiLCBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CiAJfQotCWlmICh0cmVlX2NoYW5nZWQgJiYgIXRyZWVfc2FtZSkKLQkJcmV0dXJuOwotCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IFRSRUVTQU1FOworCisJLyoKKwkgKiBUUkVFU0FNRSBpcyBzdHJhaWdodGZvcndhcmQgZm9yIHNpbmdsZS1wYXJlbnQgY29tbWl0cy4gRm9yIG1lcmdlCisJICogY29tbWl0cywgaXQgaXMgbW9zdCB1c2VmdWwgdG8gZGVmaW5lIGl0IHNvIHRoYXQgImlycmVsZXZhbnQiCisJICogcGFyZW50cyBjYW5ub3QgbWFrZSB1cyAhVFJFRVNBTUUgLSBpZiB3ZSBoYXZlIGFueSByZWxldmFudAorCSAqIHBhcmVudHMsIHRoZW4gd2Ugb25seSBjb25zaWRlciBUUkVFU0FNRW5lc3Mgd2l0aCByZXNwZWN0IHRvIHRoZW0sCisJICogYWxsb3dpbmcgaXJyZWxldmFudCBtZXJnZXMgZnJvbSB1bmludGVyZXN0aW5nIGJyYW5jaGVzIHRvIGJlCisJICogc2ltcGxpZmllZCBhd2F5LiBPbmx5IGlmIHdlIGhhdmUgb25seSBpcnJlbGV2YW50IHBhcmVudHMgZG8gd2UKKwkgKiBiYXNlIFRSRUVTQU1FIG9uIHRoZW0uIE5vdGUgdGhhdCB0aGlzIGxvZ2ljIGlzIHJlcGxpY2F0ZWQgaW4KKwkgKiB1cGRhdGVfdHJlZXNhbWUsIHdoaWNoIHNob3VsZCBiZSBrZXB0IGluIHN5bmMuCisJICovCisJaWYgKHJlbGV2YW50X3BhcmVudHMgPyAhcmVsZXZhbnRfY2hhbmdlIDogIWlycmVsZXZhbnRfY2hhbmdlKQorCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBUUkVFU0FNRTsKIH0KIAogc3RhdGljIHZvaWQgY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGVfY2FjaGVkKHN0cnVjdCBjb21taXQgKnAsIHN0cnVjdCBjb21taXRfbGlzdCAqKmhlYWQsCkBAIC04MDAsMTYgKzEwMzQsMTIgQEAKICAqIHRvIGZpbHRlciB0aGUgcmVzdWx0IG9mICJBLi5CIiBmdXJ0aGVyIHRvIHRoZSBvbmVzIHRoYXQgY2FuIGFjdHVhbGx5CiAgKiByZWFjaCBBLgogICovCi1zdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpjb2xsZWN0X2JvdHRvbV9jb21taXRzKHN0cnVjdCByZXZfaW5mbyAqcmV2cykKK3N0YXRpYyBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbGxlY3RfYm90dG9tX2NvbW1pdHMoc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0KQogewotCXN0cnVjdCBjb21taXRfbGlzdCAqYm90dG9tID0gTlVMTDsKLQlpbnQgaTsKLQlmb3IgKGkgPSAwOyBpIDwgcmV2cy0+Y21kbGluZS5ucjsgaSsrKSB7Ci0JCXN0cnVjdCByZXZfY21kbGluZV9lbnRyeSAqZWxlbSA9ICZyZXZzLT5jbWRsaW5lLnJldltpXTsKLQkJaWYgKChlbGVtLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpICYmCi0JCSAgICBlbGVtLT5pdGVtLT50eXBlID09IE9CSl9DT01NSVQpCi0JCQljb21taXRfbGlzdF9pbnNlcnQoKHN0cnVjdCBjb21taXQgKillbGVtLT5pdGVtLCAmYm90dG9tKTsKLQl9CisJc3RydWN0IGNvbW1pdF9saXN0ICplbGVtLCAqYm90dG9tID0gTlVMTDsKKwlmb3IgKGVsZW0gPSBsaXN0OyBlbGVtOyBlbGVtID0gZWxlbS0+bmV4dCkKKwkJaWYgKGVsZW0tPml0ZW0tPm9iamVjdC5mbGFncyAmIEJPVFRPTSkKKwkJCWNvbW1pdF9saXN0X2luc2VydChlbGVtLT5pdGVtLCAmYm90dG9tKTsKIAlyZXR1cm4gYm90dG9tOwogfQogCkBAIC04NDAsNyArMTA3MCw3IEBACiAJc3RydWN0IGNvbW1pdF9saXN0ICpib3R0b20gPSBOVUxMOwogCiAJaWYgKHJldnMtPmFuY2VzdHJ5X3BhdGgpIHsKLQkJYm90dG9tID0gY29sbGVjdF9ib3R0b21fY29tbWl0cyhyZXZzKTsKKwkJYm90dG9tID0gY29sbGVjdF9ib3R0b21fY29tbWl0cyhsaXN0KTsKIAkJaWYgKCFib3R0b20pCiAJCQlkaWUoIi0tYW5jZXN0cnktcGF0aCBnaXZlbiBidXQgdGhlcmUgYXJlIG5vIGJvdHRvbSBjb21taXRzIik7CiAJfQpAQCAtODkzLDEwICsxMTIzLDI2IEBACiAJCWZyZWVfY29tbWl0X2xpc3QoYm90dG9tKTsKIAl9CiAKKwkvKgorCSAqIENoZWNrIGlmIGFueSBjb21taXRzIGhhdmUgYmVjb21lIFRSRUVTQU1FIGJ5IHNvbWUgb2YgdGhlaXIgcGFyZW50cworCSAqIGJlY29taW5nIFVOSU5URVJFU1RJTkcuCisJICovCisJaWYgKGxpbWl0aW5nX2Nhbl9pbmNyZWFzZV90cmVlc2FtZShyZXZzKSkKKwkJZm9yIChsaXN0ID0gbmV3bGlzdDsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKwkJCXN0cnVjdCBjb21taXQgKmMgPSBsaXN0LT5pdGVtOworCQkJaWYgKGMtPm9iamVjdC5mbGFncyAmIChVTklOVEVSRVNUSU5HIHwgVFJFRVNBTUUpKQorCQkJCWNvbnRpbnVlOworCQkJdXBkYXRlX3RyZWVzYW1lKHJldnMsIGMpOworCQl9CisKIAlyZXZzLT5jb21taXRzID0gbmV3bGlzdDsKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIEFkZCBhbiBlbnRyeSB0byByZWZzLT5jbWRsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBpbmZvcm1hdGlvbi4KKyAqICpuYW1lIGlzIGNvcGllZC4KKyAqLwogc3RhdGljIHZvaWQgYWRkX3Jldl9jbWRsaW5lKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKIAkJCSAgICBzdHJ1Y3Qgb2JqZWN0ICppdGVtLAogCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCkBAIC05MDgsMTIgKzExNTQsMjUgQEAKIAogCUFMTE9DX0dST1coaW5mby0+cmV2LCBuciArIDEsIGluZm8tPmFsbG9jKTsKIAlpbmZvLT5yZXZbbnJdLml0ZW0gPSBpdGVtOwotCWluZm8tPnJldltucl0ubmFtZSA9IG5hbWU7CisJaW5mby0+cmV2W25yXS5uYW1lID0geHN0cmR1cChuYW1lKTsKIAlpbmZvLT5yZXZbbnJdLndoZW5jZSA9IHdoZW5jZTsKIAlpbmZvLT5yZXZbbnJdLmZsYWdzID0gZmxhZ3M7CiAJaW5mby0+bnIrKzsKIH0KIAorc3RhdGljIHZvaWQgYWRkX3Jldl9jbWRsaW5lX2xpc3Qoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCSBzdHJ1Y3QgY29tbWl0X2xpc3QgKmNvbW1pdF9saXN0LAorCQkJCSBpbnQgd2hlbmNlLAorCQkJCSB1bnNpZ25lZCBmbGFncykKK3sKKwl3aGlsZSAoY29tbWl0X2xpc3QpIHsKKwkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gJmNvbW1pdF9saXN0LT5pdGVtLT5vYmplY3Q7CisJCWFkZF9yZXZfY21kbGluZShyZXZzLCBvYmplY3QsIHNoYTFfdG9faGV4KG9iamVjdC0+c2hhMSksCisJCQkJd2hlbmNlLCBmbGFncyk7CisJCWNvbW1pdF9saXN0ID0gY29tbWl0X2xpc3QtPm5leHQ7CisJfQorfQorCiBzdHJ1Y3QgYWxsX3JlZnNfY2IgewogCWludCBhbGxfZmxhZ3M7CiAJaW50IHdhcm5lZF9iYWRfcmVmbG9nOwpAQCAtOTk5LDcgKzEyNTgsNyBAQAogCWNvbnN0IGNoYXIgKmFyZyA9IGFyZ187CiAKIAlpZiAoKmFyZyA9PSAnXicpIHsKLQkJZmxhZ3MgXj0gVU5JTlRFUkVTVElORzsKKwkJZmxhZ3MgXj0gVU5JTlRFUkVTVElORyB8IEJPVFRPTTsKIAkJYXJnKys7CiAJfQogCWlmIChnZXRfc2hhMV9jb21taXR0aXNoKGFyZywgc2hhMSkpCkBAIC0xMDkxLDcgKzEzNTAsOCBAQAogCWFkZF9wZW5kaW5nX29iamVjdChyZXZzLCAmaGVhZC0+b2JqZWN0LCAiSEVBRCIpOwogCWFkZF9wZW5kaW5nX29iamVjdChyZXZzLCAmb3RoZXItPm9iamVjdCwgIk1FUkdFX0hFQUQiKTsKIAliYXNlcyA9IGdldF9tZXJnZV9iYXNlcyhoZWFkLCBvdGhlciwgMSk7Ci0JYWRkX3BlbmRpbmdfY29tbWl0X2xpc3QocmV2cywgYmFzZXMsIFVOSU5URVJFU1RJTkcpOworCWFkZF9yZXZfY21kbGluZV9saXN0KHJldnMsIGJhc2VzLCBSRVZfQ01EX01FUkdFX0JBU0UsIFVOSU5URVJFU1RJTkcgfCBCT1RUT00pOworCWFkZF9wZW5kaW5nX2NvbW1pdF9saXN0KHJldnMsIGJhc2VzLCBVTklOVEVSRVNUSU5HIHwgQk9UVE9NKTsKIAlmcmVlX2NvbW1pdF9saXN0KGJhc2VzKTsKIAloZWFkLT5vYmplY3QuZmxhZ3MgfD0gU1lNTUVUUklDX0xFRlQ7CiAKQEAgLTExMjcsMTMgKzEzODcsMTUgQEAKIAlpbnQgY2FudF9iZV9maWxlbmFtZSA9IHJldmFyZ19vcHQgJiBSRVZBUkdfQ0FOTk9UX0JFX0ZJTEVOQU1FOwogCXVuc2lnbmVkIGdldF9zaGExX2ZsYWdzID0gMDsKIAorCWZsYWdzID0gZmxhZ3MgJiBVTklOVEVSRVNUSU5HID8gZmxhZ3MgfCBCT1RUT00gOiBmbGFncyAmIH5CT1RUT007CisKIAlkb3Rkb3QgPSBzdHJzdHIoYXJnLCAiLi4iKTsKIAlpZiAoZG90ZG90KSB7CiAJCXVuc2lnbmVkIGNoYXIgZnJvbV9zaGExWzIwXTsKIAkJY29uc3QgY2hhciAqbmV4dCA9IGRvdGRvdCArIDI7CiAJCWNvbnN0IGNoYXIgKnRoaXMgPSBhcmc7CiAJCWludCBzeW1tZXRyaWMgPSAqbmV4dCA9PSAnLic7Ci0JCXVuc2lnbmVkIGludCBmbGFnc19leGNsdWRlID0gZmxhZ3MgXiBVTklOVEVSRVNUSU5HOworCQl1bnNpZ25lZCBpbnQgZmxhZ3NfZXhjbHVkZSA9IGZsYWdzIF4gKFVOSU5URVJFU1RJTkcgfCBCT1RUT00pOwogCQlzdGF0aWMgY29uc3QgY2hhciBoZWFkX2J5X2RlZmF1bHRbXSA9ICJIRUFEIjsKIAkJdW5zaWduZWQgaW50IGFfZmxhZ3M7CiAKQEAgLTExNzgsNiArMTQ0MCw5IEBACiAKIAkJCWlmIChzeW1tZXRyaWMpIHsKIAkJCQlleGNsdWRlID0gZ2V0X21lcmdlX2Jhc2VzKGEsIGIsIDEpOworCQkJCWFkZF9yZXZfY21kbGluZV9saXN0KHJldnMsIGV4Y2x1ZGUsCisJCQkJCQkgICAgIFJFVl9DTURfTUVSR0VfQkFTRSwKKwkJCQkJCSAgICAgZmxhZ3NfZXhjbHVkZSk7CiAJCQkJYWRkX3BlbmRpbmdfY29tbWl0X2xpc3QocmV2cywgZXhjbHVkZSwKIAkJCQkJCQlmbGFnc19leGNsdWRlKTsKIAkJCQlmcmVlX2NvbW1pdF9saXN0KGV4Y2x1ZGUpOwpAQCAtMTIwNiwxMyArMTQ3MSwxMyBAQAogCWRvdGRvdCA9IHN0cnN0cihhcmcsICJeISIpOwogCWlmIChkb3Rkb3QgJiYgIWRvdGRvdFsyXSkgewogCQkqZG90ZG90ID0gMDsKLQkJaWYgKCFhZGRfcGFyZW50c19vbmx5KHJldnMsIGFyZywgZmxhZ3MgXiBVTklOVEVSRVNUSU5HKSkKKwkJaWYgKCFhZGRfcGFyZW50c19vbmx5KHJldnMsIGFyZywgZmxhZ3MgXiAoVU5JTlRFUkVTVElORyB8IEJPVFRPTSkpKQogCQkJKmRvdGRvdCA9ICdeJzsKIAl9CiAKIAlsb2NhbF9mbGFncyA9IDA7CiAJaWYgKCphcmcgPT0gJ14nKSB7Ci0JCWxvY2FsX2ZsYWdzID0gVU5JTlRFUkVTVElORzsKKwkJbG9jYWxfZmxhZ3MgPSBVTklOVEVSRVNUSU5HIHwgQk9UVE9NOwogCQlhcmcrKzsKIAl9CiAKQEAgLTEyNzUsNyArMTU0MCw4IEBACiAJCQl9CiAJCQlkaWUoIm9wdGlvbnMgbm90IHN1cHBvcnRlZCBpbiAtLXN0ZGluIG1vZGUiKTsKIAkJfQotCQlpZiAoaGFuZGxlX3JldmlzaW9uX2FyZyhzYi5idWYsIHJldnMsIDAsIFJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUUpKQorCQlpZiAoaGFuZGxlX3JldmlzaW9uX2FyZyhzYi5idWYsIHJldnMsIDAsCisJCQkJCVJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUUpKQogCQkJZGllKCJiYWQgcmV2aXNpb24gJyVzJyIsIHNiLmJ1Zik7CiAJfQogCWlmIChzZWVuX2Rhc2hkYXNoKQpAQCAtMTY4OCw3ICsxOTU0LDcgQEAKIAkJaGFuZGxlX3JlZnMoc3VibW9kdWxlLCByZXZzLCAqZmxhZ3MsIGZvcl9lYWNoX2JyYW5jaF9yZWZfc3VibW9kdWxlKTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1iaXNlY3QiKSkgewogCQloYW5kbGVfcmVmcyhzdWJtb2R1bGUsIHJldnMsICpmbGFncywgZm9yX2VhY2hfYmFkX2Jpc2VjdF9yZWYpOwotCQloYW5kbGVfcmVmcyhzdWJtb2R1bGUsIHJldnMsICpmbGFncyBeIFVOSU5URVJFU1RJTkcsIGZvcl9lYWNoX2dvb2RfYmlzZWN0X3JlZik7CisJCWhhbmRsZV9yZWZzKHN1Ym1vZHVsZSwgcmV2cywgKmZsYWdzIF4gKFVOSU5URVJFU1RJTkcgfCBCT1RUT00pLCBmb3JfZWFjaF9nb29kX2Jpc2VjdF9yZWYpOwogCQlyZXZzLT5iaXNlY3QgPSAxOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXRhZ3MiKSkgewogCQloYW5kbGVfcmVmcyhzdWJtb2R1bGUsIHJldnMsICpmbGFncywgZm9yX2VhY2hfdGFnX3JlZl9zdWJtb2R1bGUpOwpAQCAtMTcxNCw3ICsxOTgwLDcgQEAKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1yZWZsb2ciKSkgewogCQloYW5kbGVfcmVmbG9nKHJldnMsICpmbGFncyk7CiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tbm90IikpIHsKLQkJKmZsYWdzIF49IFVOSU5URVJFU1RJTkc7CisJCSpmbGFncyBePSBVTklOVEVSRVNUSU5HIHwgQk9UVE9NOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5vLXdhbGsiKSkgewogCQlyZXZzLT5ub193YWxrID0gUkVWSVNJT05fV0FMS19OT19XQUxLX1NPUlRFRDsKIAl9IGVsc2UgaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1uby13YWxrPSIpKSB7CkBAIC0xODk1LDYgKzIxNjEsMTIgQEAKIAlpZiAocmV2cy0+Y29tYmluZV9tZXJnZXMpCiAJCXJldnMtPmlnbm9yZV9tZXJnZXMgPSAwOwogCXJldnMtPmRpZmZvcHQuYWJicmV2ID0gcmV2cy0+YWJicmV2OworCisJaWYgKHJldnMtPmxpbmVfbGV2ZWxfdHJhdmVyc2UpIHsKKwkJcmV2cy0+bGltaXRlZCA9IDE7CisJCXJldnMtPnRvcG9fb3JkZXIgPSAxOworCX0KKwogCWRpZmZfc2V0dXBfZG9uZSgmcmV2cy0+ZGlmZm9wdCk7CiAKIAlncmVwX2NvbW1pdF9wYXR0ZXJuX3R5cGUoR1JFUF9QQVRURVJOX1RZUEVfVU5TUEVDSUZJRUQsCkBAIC0xOTI4LDI4ICsyMjAwLDMyIEBACiAJbC0+bmV4dCA9IGFkZF9kZWNvcmF0aW9uKCZyZXZzLT5jaGlsZHJlbiwgJnBhcmVudC0+b2JqZWN0LCBsKTsKIH0KIAotc3RhdGljIGludCByZW1vdmVfZHVwbGljYXRlX3BhcmVudHMoc3RydWN0IGNvbW1pdCAqY29tbWl0KQorc3RhdGljIGludCByZW1vdmVfZHVwbGljYXRlX3BhcmVudHMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7CisJc3RydWN0IHRyZWVzYW1lX3N0YXRlICp0cyA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT50cmVlc2FtZSwgJmNvbW1pdC0+b2JqZWN0KTsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwcCwgKnA7CiAJaW50IHN1cnZpdmluZ19wYXJlbnRzOwogCiAJLyogRXhhbWluZSBleGlzdGluZyBwYXJlbnRzIHdoaWxlIG1hcmtpbmcgb25lcyB3ZSBoYXZlIHNlZW4uLi4gKi8KIAlwcCA9ICZjb21taXQtPnBhcmVudHM7CisJc3Vydml2aW5nX3BhcmVudHMgPSAwOwogCXdoaWxlICgocCA9ICpwcCkgIT0gTlVMTCkgewogCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBwLT5pdGVtOwogCQlpZiAocGFyZW50LT5vYmplY3QuZmxhZ3MgJiBUTVBfTUFSSykgewogCQkJKnBwID0gcC0+bmV4dDsKKwkJCWlmICh0cykKKwkJCQljb21wYWN0X3RyZWVzYW1lKHJldnMsIGNvbW1pdCwgc3Vydml2aW5nX3BhcmVudHMpOwogCQkJY29udGludWU7CiAJCX0KIAkJcGFyZW50LT5vYmplY3QuZmxhZ3MgfD0gVE1QX01BUks7CisJCXN1cnZpdmluZ19wYXJlbnRzKys7CiAJCXBwID0gJnAtPm5leHQ7CiAJfQotCS8qIGNvdW50IHRoZW0gd2hpbGUgY2xlYXJpbmcgdGhlIHRlbXBvcmFyeSBtYXJrICovCi0Jc3Vydml2aW5nX3BhcmVudHMgPSAwOworCS8qIGNsZWFyIHRoZSB0ZW1wb3JhcnkgbWFyayAqLwogCWZvciAocCA9IGNvbW1pdC0+cGFyZW50czsgcDsgcCA9IHAtPm5leHQpIHsKIAkJcC0+aXRlbS0+b2JqZWN0LmZsYWdzICY9IH5UTVBfTUFSSzsKLQkJc3Vydml2aW5nX3BhcmVudHMrKzsKIAl9CisJLyogbm8gdXBkYXRlX3RyZWVzYW1lKCkgLSByZW1vdmluZyBkdXBsaWNhdGVzIGNhbid0IGFmZmVjdCBUUkVFU0FNRSAqLwogCXJldHVybiBzdXJ2aXZpbmdfcGFyZW50czsKIH0KIApAQCAtMTk2OSw5ICsyMjQ1LDE1NyBAQAogCXJldHVybiBzdDsKIH0KIAorc3RhdGljIGludCBtYXJrX3JlZHVuZGFudF9wYXJlbnRzKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqaCA9IHJlZHVjZV9oZWFkcyhjb21taXQtPnBhcmVudHMpOworCWludCBpID0gMCwgbWFya2VkID0gMDsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBvLCAqcG47CisKKwkvKiBXYW50IHRoZXNlIGZvciBzYW5pdHktY2hlY2tpbmcgb25seSAqLworCWludCBvcmlnX2NudCA9IGNvbW1pdF9saXN0X2NvdW50KGNvbW1pdC0+cGFyZW50cyk7CisJaW50IGNudCA9IGNvbW1pdF9saXN0X2NvdW50KGgpOworCisJLyoKKwkgKiBOb3QgcmVhZHkgdG8gcmVtb3ZlIGl0ZW1zIHlldCwganVzdCBtYXJrIHRoZW0gZm9yIG5vdywgYmFzZWQKKwkgKiBvbiB0aGUgb3V0cHV0IG9mIHJlZHVjZV9oZWFkcygpLiByZWR1Y2VfaGVhZHMgb3V0cHV0cyB0aGUgcmVkdWNlZAorCSAqIHNldCBpbiBpdHMgb3JpZ2luYWwgb3JkZXIsIHNvIHRoaXMgaXNuJ3QgdG9vIGhhcmQuCisJICovCisJcG8gPSBjb21taXQtPnBhcmVudHM7CisJcG4gPSBoOworCXdoaWxlIChwbykgeworCQlpZiAocG4gJiYgcG8tPml0ZW0gPT0gcG4tPml0ZW0pIHsKKwkJCXBuID0gcG4tPm5leHQ7CisJCQlpKys7CisJCX0gZWxzZSB7CisJCQlwby0+aXRlbS0+b2JqZWN0LmZsYWdzIHw9IFRNUF9NQVJLOworCQkJbWFya2VkKys7CisJCX0KKwkJcG89cG8tPm5leHQ7CisJfQorCisJaWYgKGkgIT0gY250IHx8IGNudCttYXJrZWQgIT0gb3JpZ19jbnQpCisJCWRpZSgibWFya19yZWR1bmRhbnRfcGFyZW50cyAlZCAlZCAlZCAlZCIsIG9yaWdfY250LCBjbnQsIGksIG1hcmtlZCk7CisKKwlmcmVlX2NvbW1pdF9saXN0KGgpOworCisJcmV0dXJuIG1hcmtlZDsKK30KKworc3RhdGljIGludCBtYXJrX3RyZWVzYW1lX3Jvb3RfcGFyZW50cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CisJaW50IG1hcmtlZCA9IDA7CisKKwlmb3IgKHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KSB7CisJCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IHAtPml0ZW07CisJCWlmICghcGFyZW50LT5wYXJlbnRzICYmIChwYXJlbnQtPm9iamVjdC5mbGFncyAmIFRSRUVTQU1FKSkgeworCQkJcGFyZW50LT5vYmplY3QuZmxhZ3MgfD0gVE1QX01BUks7CisJCQltYXJrZWQrKzsKKwkJfQorCX0KKworCXJldHVybiBtYXJrZWQ7Cit9CisKKy8qCisgKiBBd2t3YXJkIG5hbWluZyAtIHRoaXMgbWVhbnMgb25lIHBhcmVudCB3ZSBhcmUgVFJFRVNBTUUgdG8uCisgKiBjZiBtYXJrX3RyZWVzYW1lX3Jvb3RfcGFyZW50czogcm9vdCBwYXJlbnRzIHRoYXQgYXJlIFRSRUVTQU1FICh0byBhbgorICogZW1wdHkgdHJlZSkuIEJldHRlciBuYW1lIHN1Z2dlc3Rpb25zPworICovCitzdGF0aWMgaW50IGxlYXZlX29uZV90cmVlc2FtZV90b19wYXJlbnQoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJc3RydWN0IHRyZWVzYW1lX3N0YXRlICp0cyA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT50cmVlc2FtZSwgJmNvbW1pdC0+b2JqZWN0KTsKKwlzdHJ1Y3QgY29tbWl0ICp1bm1hcmtlZCA9IE5VTEwsICptYXJrZWQgPSBOVUxMOworCXN0cnVjdCBjb21taXRfbGlzdCAqcDsKKwl1bnNpZ25lZCBuOworCisJZm9yIChwID0gY29tbWl0LT5wYXJlbnRzLCBuID0gMDsgcDsgcCA9IHAtPm5leHQsIG4rKykgeworCQlpZiAodHMtPnRyZWVzYW1lW25dKSB7CisJCQlpZiAocC0+aXRlbS0+b2JqZWN0LmZsYWdzICYgVE1QX01BUkspIHsKKwkJCQlpZiAoIW1hcmtlZCkKKwkJCQkJbWFya2VkID0gcC0+aXRlbTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCF1bm1hcmtlZCkgeworCQkJCQl1bm1hcmtlZCA9IHAtPml0ZW07CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogSWYgd2UgYXJlIFRSRUVTQU1FIHRvIGEgbWFya2VkLWZvci1kZWxldGlvbiBwYXJlbnQsIGJ1dCBub3QgdG8gYW55CisJICogdW5tYXJrZWQgcGFyZW50cywgdW5tYXJrIHRoZSBmaXJzdCBUUkVFU0FNRSBwYXJlbnQuIFRoaXMgaXMgdGhlCisJICogcGFyZW50IHRoYXQgdGhlIGRlZmF1bHQgc2ltcGxpZnlfaGlzdG9yeT09MSBzY2FuIHdvdWxkIGhhdmUgZm9sbG93ZWQsCisJICogYW5kIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBvbWl0IHRoYXQgcGF0aCB3aGVuIGFza2luZyBmb3IgYQorCSAqIHNpbXBsaWZpZWQgZnVsbCBoaXN0b3J5LiBSZXRhaW5pbmcgaXQgaW1wcm92ZXMgdGhlIGNoYW5jZXMgb2YKKwkgKiB1bmRlcnN0YW5kaW5nIG9kZCBtaXNzZWQgbWVyZ2VzIHRoYXQgdG9vayBhbiBvbGQgdmVyc2lvbiBvZiBhIGZpbGUuCisJICoKKwkgKiBFeGFtcGxlOgorCSAqCisJICogICBJLS0tLS0tLS0qWCAgICAgICBBIG1vZGlmaWVkIHRoZSBmaWxlLCBidXQgbWFpbmxpbmUgbWVyZ2UgWCB1c2VkCisJICogICAgXCAgICAgICAvICAgICAgICAiLXMgb3VycyIsIHNvIHRvb2sgdGhlIHZlcnNpb24gZnJvbSBJLiBYIGlzCisJICogICAgIGAtKkEtLScgICAgICAgICBUUkVFU0FNRSB0byBJIGFuZCAhVFJFRVNBTUUgdG8gQS4KKwkgKgorCSAqIERlZmF1bHQgbG9nIGZyb20gWCB3b3VsZCBwcm9kdWNlICJJIi4gV2l0aG91dCB0aGlzIGNoZWNrLAorCSAqIC0tZnVsbC1oaXN0b3J5IC0tc2ltcGxpZnktbWVyZ2VzIHdvdWxkIHByb2R1Y2UgIkktQS1YIiwgc2hvd2luZworCSAqIHRoZSBtZXJnZSBjb21taXQgWCBhbmQgdGhhdCBpdCBjaGFuZ2VkIEEsIGJ1dCBub3QgbWFraW5nIGNsZWFyIHRoYXQKKwkgKiBpdCBoYWQganVzdCB0YWtlbiB0aGUgSSB2ZXJzaW9uLiBXaXRoIHRoaXMgY2hlY2ssIHRoZSB0b3BvbG9neSBhYm92ZQorCSAqIGlzIHJldGFpbmVkLgorCSAqCisJICogTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHNpbXBsaWZpY2F0aW9uIGNob29zZXMgYSBkaWZmZXJlbnQKKwkgKiBUUkVFU0FNRSBwYXJlbnQgZnJvbSB0aGUgZGVmYXVsdCwgaW4gd2hpY2ggY2FzZSB0aGlzIHRlc3QgZG9lc24ndAorCSAqIGFjdGl2YXRlLCBhbmQgd2UgX2RvXyBkcm9wIHRoZSBkZWZhdWx0IHBhcmVudC4gRXhhbXBsZToKKwkgKgorCSAqICAgSS0tLS0tLVggICAgICAgICBBIG1vZGlmaWVkIHRoZSBmaWxlLCBidXQgaXQgd2FzIHJldmVydGVkIGluIEIsCisJICogICAgXCAgICAvICAgICAgICAgIG1lYW5pbmcgbWFpbmxpbmUgbWVyZ2UgWCBpcyBUUkVFU0FNRSB0byBib3RoCisJICogICAgKkEtKkIgICAgICAgICAgIHBhcmVudHMuCisJICoKKwkgKiBEZWZhdWx0IGxvZyB3b3VsZCBwcm9kdWNlICJJIiBieSBmb2xsb3dpbmcgdGhlIGZpcnN0IHBhcmVudDsKKwkgKiAtLWZ1bGwtaGlzdG9yeSAtLXNpbXBsaWZ5LW1lcmdlcyB3aWxsIHByb2R1Y2UgIkktQS1CIi4gQnV0IHRoaXMgaXMgYQorCSAqIHJlYXNvbmFibGUgcmVzdWx0IC0gaXQgcHJlc2VudHMgYSBsb2dpY2FsIGZ1bGwgaGlzdG9yeSBsZWFkaW5nIGZyb20KKwkgKiBJIHRvIFgsIGFuZCBYIGlzIG5vdCBhbiBpbXBvcnRhbnQgbWVyZ2UuCisJICovCisJaWYgKCF1bm1hcmtlZCAmJiBtYXJrZWQpIHsKKwkJbWFya2VkLT5vYmplY3QuZmxhZ3MgJj0gflRNUF9NQVJLOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByZW1vdmVfbWFya2VkX3BhcmVudHMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICoqcHAsICpwOworCWludCBudGhfcGFyZW50LCByZW1vdmVkID0gMDsKKworCXBwID0gJmNvbW1pdC0+cGFyZW50czsKKwludGhfcGFyZW50ID0gMDsKKwl3aGlsZSAoKHAgPSAqcHApICE9IE5VTEwpIHsKKwkJc3RydWN0IGNvbW1pdCAqcGFyZW50ID0gcC0+aXRlbTsKKwkJaWYgKHBhcmVudC0+b2JqZWN0LmZsYWdzICYgVE1QX01BUkspIHsKKwkJCXBhcmVudC0+b2JqZWN0LmZsYWdzICY9IH5UTVBfTUFSSzsKKwkJCSpwcCA9IHAtPm5leHQ7CisJCQlmcmVlKHApOworCQkJcmVtb3ZlZCsrOworCQkJY29tcGFjdF90cmVlc2FtZShyZXZzLCBjb21taXQsIG50aF9wYXJlbnQpOworCQkJY29udGludWU7CisJCX0KKwkJcHAgPSAmcC0+bmV4dDsKKwkJbnRoX3BhcmVudCsrOworCX0KKworCS8qIFJlbW92aW5nIHBhcmVudHMgY2FuIG9ubHkgaW5jcmVhc2UgVFJFRVNBTUVuZXNzICovCisJaWYgKHJlbW92ZWQgJiYgIShjb21taXQtPm9iamVjdC5mbGFncyAmIFRSRUVTQU1FKSkKKwkJdXBkYXRlX3RyZWVzYW1lKHJldnMsIGNvbW1pdCk7CisKKwlyZXR1cm4gbnRoX3BhcmVudDsKK30KKwogc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqKnNpbXBsaWZ5X29uZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCwgc3RydWN0IGNvbW1pdF9saXN0ICoqdGFpbCkKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CisJc3RydWN0IGNvbW1pdCAqcGFyZW50OwogCXN0cnVjdCBtZXJnZV9zaW1wbGlmeV9zdGF0ZSAqc3QsICpwc3Q7CiAJaW50IGNudDsKIApAQCAtMjAxMyw3ICsyNDM3LDkgQEAKIAl9CiAKIAkvKgotCSAqIFJld3JpdGUgb3VyIGxpc3Qgb2YgcGFyZW50cy4KKwkgKiBSZXdyaXRlIG91ciBsaXN0IG9mIHBhcmVudHMuIE5vdGUgdGhhdCB0aGlzIGNhbm5vdAorCSAqIGFmZmVjdCBvdXIgVFJFRVNBTUUgZmxhZ3MgaW4gYW55IHdheSAtIGEgY29tbWl0IGlzCisJICogYWx3YXlzIFRSRUVTQU1FIHRvIGl0cyBzaW1wbGlmaWNhdGlvbi4KIAkgKi8KIAlmb3IgKHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KSB7CiAJCXBzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBwLT5pdGVtKTsKQEAgLTIwMjEsNDYgKzI0NDcsNTcgQEAKIAkJaWYgKHJldnMtPmZpcnN0X3BhcmVudF9vbmx5KQogCQkJYnJlYWs7CiAJfQotCWlmICghcmV2cy0+Zmlyc3RfcGFyZW50X29ubHkpCi0JCWNudCA9IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhjb21taXQpOwotCWVsc2UKKworCWlmIChyZXZzLT5maXJzdF9wYXJlbnRfb25seSkKIAkJY250ID0gMTsKKwllbHNlCisJCWNudCA9IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhyZXZzLCBjb21taXQpOwogCiAJLyoKIAkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIGFyZSBhIG1lcmdlIGFuZCBvbmUgc2lkZSBicmFuY2gKIAkgKiBkb2VzIG5vdCBoYXZlIGFueSBjb21taXQgdGhhdCB0b3VjaGVzIHRoZSBnaXZlbiBwYXRoczsKLQkgKiBpbiBzdWNoIGEgY2FzZSwgdGhlIGltbWVkaWF0ZSBwYXJlbnRzIHdpbGwgYmUgcmV3cml0dGVuCi0JICogdG8gZGlmZmVyZW50IGNvbW1pdHMuCisJICogaW4gc3VjaCBhIGNhc2UsIHRoZSBpbW1lZGlhdGUgcGFyZW50IGZyb20gdGhhdCBicmFuY2gKKwkgKiB3aWxsIGJlIHJld3JpdHRlbiB0byBiZSB0aGUgbWVyZ2UgYmFzZS4KIAkgKgogCSAqICAgICAgby0tLS1YCQlYOiB0aGUgY29tbWl0IHdlIGFyZSBsb29raW5nIGF0OwogCSAqICAgICAvICAgIC8JCW86IGEgY29tbWl0IHRoYXQgdG91Y2hlcyB0aGUgcGF0aHM7CiAJICogLS0tby0tLS0nCiAJICoKLQkgKiBGdXJ0aGVyIHJlZHVjZSB0aGUgcGFyZW50cyBieSByZW1vdmluZyByZWR1bmRhbnQgcGFyZW50cy4KKwkgKiBGdXJ0aGVyLCBhIG1lcmdlIG9mIGFuIGluZGVwZW5kZW50IGJyYW5jaCB0aGF0IGRvZXNuJ3QKKwkgKiB0b3VjaCB0aGUgcGF0aCB3aWxsIHJlZHVjZSB0byBhIHRyZWVzYW1lIHJvb3QgcGFyZW50OgorCSAqCisJICogIC0tLS1vLS0tLVgJCVg6IHRoZSBjb21taXQgd2UgYXJlIGxvb2tpbmcgYXQ7CisJICogICAgICAgICAgLwkJbzogYSBjb21taXQgdGhhdCB0b3VjaGVzIHRoZSBwYXRoczsKKwkgKiAgICAgICAgIHIJCXI6IGEgcm9vdCBjb21taXQgbm90IHRvdWNoaW5nIHRoZSBwYXRocworCSAqCisJICogRGV0ZWN0IGFuZCBzaW1wbGlmeSBib3RoIGNhc2VzLgogCSAqLwogCWlmICgxIDwgY250KSB7Ci0JCXN0cnVjdCBjb21taXRfbGlzdCAqaCA9IHJlZHVjZV9oZWFkcyhjb21taXQtPnBhcmVudHMpOwotCQljbnQgPSBjb21taXRfbGlzdF9jb3VudChoKTsKLQkJZnJlZV9jb21taXRfbGlzdChjb21taXQtPnBhcmVudHMpOwotCQljb21taXQtPnBhcmVudHMgPSBoOworCQlpbnQgbWFya2VkID0gbWFya19yZWR1bmRhbnRfcGFyZW50cyhyZXZzLCBjb21taXQpOworCQltYXJrZWQgKz0gbWFya190cmVlc2FtZV9yb290X3BhcmVudHMocmV2cywgY29tbWl0KTsKKwkJaWYgKG1hcmtlZCkKKwkJCW1hcmtlZCAtPSBsZWF2ZV9vbmVfdHJlZXNhbWVfdG9fcGFyZW50KHJldnMsIGNvbW1pdCk7CisJCWlmIChtYXJrZWQpCisJCQljbnQgPSByZW1vdmVfbWFya2VkX3BhcmVudHMocmV2cywgY29tbWl0KTsKIAl9CiAKIAkvKgogCSAqIEEgY29tbWl0IHNpbXBsaWZpZXMgdG8gaXRzZWxmIGlmIGl0IGlzIGEgcm9vdCwgaWYgaXQgaXMKIAkgKiBVTklOVEVSRVNUSU5HLCBpZiBpdCB0b3VjaGVzIHRoZSBnaXZlbiBwYXRocywgb3IgaWYgaXQgaXMgYQotCSAqIG1lcmdlIGFuZCBpdHMgcGFyZW50cyBzaW1wbGlmaWVzIHRvIG1vcmUgdGhhbiBvbmUgY29tbWl0cworCSAqIG1lcmdlIGFuZCBpdHMgcGFyZW50cyBkb24ndCBzaW1wbGlmeSB0byBvbmUgcmVsZXZhbnQgY29tbWl0CiAJICogKHRoZSBmaXJzdCB0d28gY2FzZXMgYXJlIGFscmVhZHkgaGFuZGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mCiAJICogdGhpcyBmdW5jdGlvbikuCiAJICoKLQkgKiBPdGhlcndpc2UsIGl0IHNpbXBsaWZpZXMgdG8gd2hhdCBpdHMgc29sZSBwYXJlbnQgc2ltcGxpZmllcyB0by4KKwkgKiBPdGhlcndpc2UsIGl0IHNpbXBsaWZpZXMgdG8gd2hhdCBpdHMgc29sZSByZWxldmFudCBwYXJlbnQKKwkgKiBzaW1wbGlmaWVzIHRvLgogCSAqLwogCWlmICghY250IHx8CiAJICAgIChjb21taXQtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpIHx8CiAJICAgICEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSkgfHwKLQkgICAgKDEgPCBjbnQpKQorCSAgICAocGFyZW50ID0gb25lX3JlbGV2YW50X3BhcmVudChyZXZzLCBjb21taXQtPnBhcmVudHMpKSA9PSBOVUxMKQogCQlzdC0+c2ltcGxpZmllZCA9IGNvbW1pdDsKIAllbHNlIHsKLQkJcHN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIGNvbW1pdC0+cGFyZW50cy0+aXRlbSk7CisJCXBzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBwYXJlbnQpOwogCQlzdC0+c2ltcGxpZmllZCA9IHBzdC0+c2ltcGxpZmllZDsKIAl9CiAJcmV0dXJuIHRhaWw7CkBAIC0yMTU2LDYgKzI1OTMsMTEgQEAKIAlpZiAoIXJldnMtPmxlYWtfcGVuZGluZykKIAkJZnJlZShsaXN0KTsKIAorCS8qIFNpZ25hbCB3aGV0aGVyIHdlIG5lZWQgcGVyLXBhcmVudCB0cmVlc2FtZSBkZWNvcmF0aW9uICovCisJaWYgKHJldnMtPnNpbXBsaWZ5X21lcmdlcyB8fAorCSAgICAocmV2cy0+bGltaXRlZCAmJiBsaW1pdGluZ19jYW5faW5jcmVhc2VfdHJlZXNhbWUocmV2cykpKQorCQlyZXZzLT50cmVlc2FtZS5uYW1lID0gInRyZWVzYW1lIjsKKwogCWlmIChyZXZzLT5ub193YWxrICE9IFJFVklTSU9OX1dBTEtfTk9fV0FMS19VTlNPUlRFRCkKIAkJY29tbWl0X2xpc3Rfc29ydF9ieV9kYXRlKCZyZXZzLT5jb21taXRzKTsKIAlpZiAocmV2cy0+bm9fd2FsaykKQEAgLTIxNjUsNiArMjYwNyw4IEBACiAJCQlyZXR1cm4gLTE7CiAJaWYgKHJldnMtPnRvcG9fb3JkZXIpCiAJCXNvcnRfaW5fdG9wb2xvZ2ljYWxfb3JkZXIoJnJldnMtPmNvbW1pdHMsIHJldnMtPmxpZm8pOworCWlmIChyZXZzLT5saW5lX2xldmVsX3RyYXZlcnNlKQorCQlsaW5lX2xvZ19maWx0ZXIocmV2cyk7CiAJaWYgKHJldnMtPnNpbXBsaWZ5X21lcmdlcykKIAkJc2ltcGxpZnlfbWVyZ2VzKHJldnMpOwogCWlmIChyZXZzLT5jaGlsZHJlbi5uYW1lKQpAQCAtMjE3MiwxMiArMjYxNiw2IEBACiAJcmV0dXJuIDA7CiB9CiAKLWVudW0gcmV3cml0ZV9yZXN1bHQgewotCXJld3JpdGVfb25lX29rLAotCXJld3JpdGVfb25lX25vcGFyZW50cywKLQlyZXdyaXRlX29uZV9lcnJvcgotfTsKLQogc3RhdGljIGVudW0gcmV3cml0ZV9yZXN1bHQgcmV3cml0ZV9vbmUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICoqcHApCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpjYWNoZSA9IE5VTEw7CkBAIC0yMTg3LDI0ICsyNjI1LDI1IEBACiAJCWlmICghcmV2cy0+bGltaXRlZCkKIAkJCWlmIChhZGRfcGFyZW50c190b19saXN0KHJldnMsIHAsICZyZXZzLT5jb21taXRzLCAmY2FjaGUpIDwgMCkKIAkJCQlyZXR1cm4gcmV3cml0ZV9vbmVfZXJyb3I7Ci0JCWlmIChwLT5wYXJlbnRzICYmIHAtPnBhcmVudHMtPm5leHQpCi0JCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CiAJCWlmIChwLT5vYmplY3QuZmxhZ3MgJiBVTklOVEVSRVNUSU5HKQogCQkJcmV0dXJuIHJld3JpdGVfb25lX29rOwogCQlpZiAoIShwLT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSkpCiAJCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CiAJCWlmICghcC0+cGFyZW50cykKIAkJCXJldHVybiByZXdyaXRlX29uZV9ub3BhcmVudHM7Ci0JCSpwcCA9IHAtPnBhcmVudHMtPml0ZW07CisJCWlmICgocCA9IG9uZV9yZWxldmFudF9wYXJlbnQocmV2cywgcC0+cGFyZW50cykpID09IE5VTEwpCisJCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CisJCSpwcCA9IHA7CiAJfQogfQogCi1zdGF0aWMgaW50IHJld3JpdGVfcGFyZW50cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK2ludCByZXdyaXRlX3BhcmVudHMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCisJcmV3cml0ZV9wYXJlbnRfZm5fdCByZXdyaXRlX3BhcmVudCkKIHsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwcCA9ICZjb21taXQtPnBhcmVudHM7CiAJd2hpbGUgKCpwcCkgewogCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudCA9ICpwcDsKLQkJc3dpdGNoIChyZXdyaXRlX29uZShyZXZzLCAmcGFyZW50LT5pdGVtKSkgeworCQlzd2l0Y2ggKHJld3JpdGVfcGFyZW50KHJldnMsICZwYXJlbnQtPml0ZW0pKSB7CiAJCWNhc2UgcmV3cml0ZV9vbmVfb2s6CiAJCQlicmVhazsKIAkJY2FzZSByZXdyaXRlX29uZV9ub3BhcmVudHM6CkBAIC0yMjE1LDE0ICsyNjU0LDYyIEBACiAJCX0KIAkJcHAgPSAmcGFyZW50LT5uZXh0OwogCX0KLQlyZW1vdmVfZHVwbGljYXRlX3BhcmVudHMoY29tbWl0KTsKKwlyZW1vdmVfZHVwbGljYXRlX3BhcmVudHMocmV2cywgY29tbWl0KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb21taXRfcmV3cml0ZV9wZXJzb24oc3RydWN0IHN0cmJ1ZiAqYnVmLCBjb25zdCBjaGFyICp3aGF0LCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1haWxtYXApCit7CisJY2hhciAqcGVyc29uLCAqZW5kcDsKKwlzaXplX3QgbGVuLCBuYW1lbGVuLCBtYWlsbGVuOworCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgY2hhciAqbWFpbDsKKwlzdHJ1Y3QgaWRlbnRfc3BsaXQgaWRlbnQ7CisKKwlwZXJzb24gPSBzdHJzdHIoYnVmLT5idWYsIHdoYXQpOworCWlmICghcGVyc29uKQorCQlyZXR1cm4gMDsKKworCXBlcnNvbiArPSBzdHJsZW4od2hhdCk7CisJZW5kcCA9IHN0cmNocihwZXJzb24sICdcbicpOworCWlmICghZW5kcCkKKwkJcmV0dXJuIDA7CisKKwlsZW4gPSBlbmRwIC0gcGVyc29uOworCisJaWYgKHNwbGl0X2lkZW50X2xpbmUoJmlkZW50LCBwZXJzb24sIGxlbikpCisJCXJldHVybiAwOworCisJbWFpbCA9IGlkZW50Lm1haWxfYmVnaW47CisJbWFpbGxlbiA9IGlkZW50Lm1haWxfZW5kIC0gaWRlbnQubWFpbF9iZWdpbjsKKwluYW1lID0gaWRlbnQubmFtZV9iZWdpbjsKKwluYW1lbGVuID0gaWRlbnQubmFtZV9lbmQgLSBpZGVudC5uYW1lX2JlZ2luOworCisJaWYgKG1hcF91c2VyKG1haWxtYXAsICZtYWlsLCAmbWFpbGxlbiwgJm5hbWUsICZuYW1lbGVuKSkgeworCQlzdHJ1Y3Qgc3RyYnVmIG5hbWVtYWlsID0gU1RSQlVGX0lOSVQ7CisKKwkJc3RyYnVmX2FkZGYoJm5hbWVtYWlsLCAiJS4qcyA8JS4qcz4iLAorCQkJICAgIChpbnQpbmFtZWxlbiwgbmFtZSwgKGludCltYWlsbGVuLCBtYWlsKTsKKworCQlzdHJidWZfc3BsaWNlKGJ1ZiwgaWRlbnQubmFtZV9iZWdpbiAtIGJ1Zi0+YnVmLAorCQkJICAgICAgaWRlbnQubWFpbF9lbmQgLSBpZGVudC5uYW1lX2JlZ2luICsgMSwKKwkJCSAgICAgIG5hbWVtYWlsLmJ1ZiwgbmFtZW1haWwubGVuKTsKKworCQlzdHJidWZfcmVsZWFzZSgmbmFtZW1haWwpOworCisJCXJldHVybiAxOworCX0KKwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGNvbW1pdF9tYXRjaChzdHJ1Y3QgY29tbWl0ICpjb21taXQsIHN0cnVjdCByZXZfaW5mbyAqb3B0KQogewogCWludCByZXR2YWw7CisJY29uc3QgY2hhciAqZW5jb2Rpbmc7CisJY2hhciAqbWVzc2FnZTsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCiAJaWYgKCFvcHQtPmdyZXBfZmlsdGVyLnBhdHRlcm5fbGlzdCAmJiAhb3B0LT5ncmVwX2ZpbHRlci5oZWFkZXJfbGlzdCkKIAkJcmV0dXJuIDE7CiAKQEAgLTIyMzMsMjUgKzI3MjAsNDMgQEAKIAkJc3RyYnVmX2FkZGNoKCZidWYsICdcbicpOwogCX0KIAorCS8qCisJICogV2UgZ3JlcCBpbiB0aGUgdXNlcidzIG91dHB1dCBlbmNvZGluZywgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBpdAorCSAqIGlzIHRoZSBlbmNvZGluZyB0aGV5IGFyZSBtb3N0IGxpa2VseSB0byB3cml0ZSB0aGVpciBncmVwIHBhdHRlcm4KKwkgKiBmb3IuIEluIGFkZGl0aW9uLCBpdCBtZWFucyB3ZSB3aWxsIG1hdGNoIHRoZSAibm90ZXMiIGVuY29kaW5nIGJlbG93LAorCSAqIHNvIHdlIHdpbGwgbm90IGVuZCB1cCB3aXRoIGEgYnVmZmVyIHRoYXQgaGFzIHR3byBkaWZmZXJlbnQgZW5jb2RpbmdzCisJICogaW4gaXQuCisJICovCisJZW5jb2RpbmcgPSBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpOworCW1lc3NhZ2UgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBlbmNvZGluZyk7CisKIAkvKiBDb3B5IHRoZSBjb21taXQgdG8gdGVtcG9yYXJ5IGlmIHdlIGFyZSB1c2luZyAiZmFrZSIgaGVhZGVycyAqLwogCWlmIChidWYubGVuKQotCQlzdHJidWZfYWRkc3RyKCZidWYsIGNvbW1pdC0+YnVmZmVyKTsKKwkJc3RyYnVmX2FkZHN0cigmYnVmLCBtZXNzYWdlKTsKKworCWlmIChvcHQtPmdyZXBfZmlsdGVyLmhlYWRlcl9saXN0ICYmIG9wdC0+bWFpbG1hcCkgeworCQlpZiAoIWJ1Zi5sZW4pCisJCQlzdHJidWZfYWRkc3RyKCZidWYsIG1lc3NhZ2UpOworCisJCWNvbW1pdF9yZXdyaXRlX3BlcnNvbigmYnVmLCAiXG5hdXRob3IgIiwgb3B0LT5tYWlsbWFwKTsKKwkJY29tbWl0X3Jld3JpdGVfcGVyc29uKCZidWYsICJcbmNvbW1pdHRlciAiLCBvcHQtPm1haWxtYXApOworCX0KIAogCS8qIEFwcGVuZCAiZmFrZSIgbWVzc2FnZSBwYXJ0cyBhcyBuZWVkZWQgKi8KIAlpZiAob3B0LT5zaG93X25vdGVzKSB7CiAJCWlmICghYnVmLmxlbikKLQkJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgY29tbWl0LT5idWZmZXIpOwotCQlmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb21taXQtPm9iamVjdC5zaGExLCAmYnVmLAotCQkJCSAgICAgZ2V0X2xvZ19vdXRwdXRfZW5jb2RpbmcoKSwgMSk7CisJCQlzdHJidWZfYWRkc3RyKCZidWYsIG1lc3NhZ2UpOworCQlmb3JtYXRfZGlzcGxheV9ub3Rlcyhjb21taXQtPm9iamVjdC5zaGExLCAmYnVmLCBlbmNvZGluZywgMSk7CiAJfQogCi0JLyogRmluZCBlaXRoZXIgaW4gdGhlIGNvbW1pdCBvYmplY3QsIG9yIGluIHRoZSB0ZW1wb3JhcnkgKi8KKwkvKiBGaW5kIGVpdGhlciBpbiB0aGUgb3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UsIG9yIGluIHRoZSB0ZW1wb3JhcnkgKi8KIAlpZiAoYnVmLmxlbikKIAkJcmV0dmFsID0gZ3JlcF9idWZmZXIoJm9wdC0+Z3JlcF9maWx0ZXIsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwogCWVsc2UKIAkJcmV0dmFsID0gZ3JlcF9idWZmZXIoJm9wdC0+Z3JlcF9maWx0ZXIsCi0JCQkJICAgICBjb21taXQtPmJ1ZmZlciwgc3RybGVuKGNvbW1pdC0+YnVmZmVyKSk7CisJCQkJICAgICBtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSkpOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCWxvZ21zZ19mcmVlKG1lc3NhZ2UsIGNvbW1pdCk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjI3MywxMCArMjc3OCw3IEBACiAJaWYgKHJldnMtPm1pbl9hZ2UgIT0gLTEgJiYgKGNvbW1pdC0+ZGF0ZSA+IHJldnMtPm1pbl9hZ2UpKQogCQlyZXR1cm4gY29tbWl0X2lnbm9yZTsKIAlpZiAocmV2cy0+bWluX3BhcmVudHMgfHwgKHJldnMtPm1heF9wYXJlbnRzID49IDApKSB7Ci0JCWludCBuID0gMDsKLQkJc3RydWN0IGNvbW1pdF9saXN0ICpwOwotCQlmb3IgKHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KQotCQkJbisrOworCQlpbnQgbiA9IGNvbW1pdF9saXN0X2NvdW50KGNvbW1pdC0+cGFyZW50cyk7CiAJCWlmICgobiA8IHJldnMtPm1pbl9wYXJlbnRzKSB8fAogCQkgICAgKChyZXZzLT5tYXhfcGFyZW50cyA+PSAwKSAmJiAobiA+IHJldnMtPm1heF9wYXJlbnRzKSkpCiAJCQlyZXR1cm4gY29tbWl0X2lnbm9yZTsKQEAgLTIyODYsMTIgKzI3ODgsMjMgQEAKIAlpZiAocmV2cy0+cHJ1bmUgJiYgcmV2cy0+ZGVuc2UpIHsKIAkJLyogQ29tbWl0IHdpdGhvdXQgY2hhbmdlcz8gKi8KIAkJaWYgKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgVFJFRVNBTUUpIHsKKwkJCWludCBuOworCQkJc3RydWN0IGNvbW1pdF9saXN0ICpwOwogCQkJLyogZHJvcCBtZXJnZXMgdW5sZXNzIHdlIHdhbnQgcGFyZW50aG9vZCAqLwogCQkJaWYgKCF3YW50X2FuY2VzdHJ5KHJldnMpKQogCQkJCXJldHVybiBjb21taXRfaWdub3JlOwotCQkJLyogbm9uLW1lcmdlIC0gYWx3YXlzIGlnbm9yZSBpdCAqLwotCQkJaWYgKCFjb21taXQtPnBhcmVudHMgfHwgIWNvbW1pdC0+cGFyZW50cy0+bmV4dCkKLQkJCQlyZXR1cm4gY29tbWl0X2lnbm9yZTsKKwkJCS8qCisJCQkgKiBJZiB3ZSB3YW50IGFuY2VzdHJ5LCB0aGVuIG5lZWQgdG8ga2VlcCBhbnkgbWVyZ2VzCisJCQkgKiBiZXR3ZWVuIHJlbGV2YW50IGNvbW1pdHMgdG8gdGllIHRvZ2V0aGVyIHRvcG9sb2d5LgorCQkJICogRm9yIGNvbnNpc3RlbmN5IHdpdGggVFJFRVNBTUUgYW5kIHNpbXBsaWZpY2F0aW9uCisJCQkgKiB1c2UgInJlbGV2YW50IiBoZXJlIHJhdGhlciB0aGFuIGp1c3QgSU5URVJFU1RJTkcsCisJCQkgKiB0byB0cmVhdCBib3R0b20gY29tbWl0KHMpIGFzIHBhcnQgb2YgdGhlIHRvcG9sb2d5LgorCQkJICovCisJCQlmb3IgKG4gPSAwLCBwID0gY29tbWl0LT5wYXJlbnRzOyBwOyBwID0gcC0+bmV4dCkKKwkJCQlpZiAocmVsZXZhbnRfY29tbWl0KHAtPml0ZW0pKQorCQkJCQlpZiAoKytuID49IDIpCisJCQkJCQlyZXR1cm4gY29tbWl0X3Nob3c7CisJCQlyZXR1cm4gY29tbWl0X2lnbm9yZTsKIAkJfQogCX0KIAlyZXR1cm4gY29tbWl0X3Nob3c7CkBAIC0yMzA0LDcgKzI4MTcsNyBAQAogCWlmIChhY3Rpb24gPT0gY29tbWl0X3Nob3cgJiYKIAkgICAgIXJldnMtPnNob3dfYWxsICYmCiAJICAgIHJldnMtPnBydW5lICYmIHJldnMtPmRlbnNlICYmIHdhbnRfYW5jZXN0cnkocmV2cykpIHsKLQkJaWYgKHJld3JpdGVfcGFyZW50cyhyZXZzLCBjb21taXQpIDwgMCkKKwkJaWYgKHJld3JpdGVfcGFyZW50cyhyZXZzLCBjb21taXQsIHJld3JpdGVfb25lKSA8IDApCiAJCQlyZXR1cm4gY29tbWl0X2Vycm9yOwogCX0KIAlyZXR1cm4gYWN0aW9uOwpAQCAtMjM1NCwyNSArMjg2NywyMyBAQAogCXJldHVybiBOVUxMOwogfQogCisvKgorICogUmV0dXJuIHRydWUgZm9yIGVudHJpZXMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBzaG93bi4gIChUaGlzIGlzIGFuCisgKiBvYmplY3RfYXJyYXlfZWFjaF9mdW5jX3QuKQorICovCitzdGF0aWMgaW50IGVudHJ5X3Vuc2hvd24oc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqZW50cnksIHZvaWQgKmNiX2RhdGFfdW51c2VkKQoreworCXJldHVybiAhKGVudHJ5LT5pdGVtLT5mbGFncyAmIFNIT1dOKTsKK30KKworLyoKKyAqIElmIGFycmF5IGlzIG9uIHRoZSB2ZXJnZSBvZiBhIHJlYWxsb2MsIGdhcmJhZ2UtY29sbGVjdCBhbnkgZW50cmllcworICogdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBzaG93biB0byB0cnkgdG8gZnJlZSB1cCBzb21lIHNwYWNlLgorICovCiBzdGF0aWMgdm9pZCBnY19ib3VuZGFyeShzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphcnJheSkKIHsKLQl1bnNpZ25lZCBuciA9IGFycmF5LT5ucjsKLQl1bnNpZ25lZCBhbGxvYyA9IGFycmF5LT5hbGxvYzsKLQlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICpvYmplY3RzID0gYXJyYXktPm9iamVjdHM7Ci0KLQlpZiAoYWxsb2MgPD0gbnIpIHsKLQkJdW5zaWduZWQgaSwgajsKLQkJZm9yIChpID0gaiA9IDA7IGkgPCBucjsgaSsrKSB7Ci0JCQlpZiAob2JqZWN0c1tpXS5pdGVtLT5mbGFncyAmIFNIT1dOKQotCQkJCWNvbnRpbnVlOwotCQkJaWYgKGkgIT0gaikKLQkJCQlvYmplY3RzW2pdID0gb2JqZWN0c1tpXTsKLQkJCWorKzsKLQkJfQotCQlmb3IgKGkgPSBqOyBpIDwgbnI7IGkrKykKLQkJCW9iamVjdHNbaV0uaXRlbSA9IE5VTEw7Ci0JCWFycmF5LT5uciA9IGo7Ci0JfQorCWlmIChhcnJheS0+bnIgPT0gYXJyYXktPmFsbG9jKQorCQlvYmplY3RfYXJyYXlfZmlsdGVyKGFycmF5LCBlbnRyeV91bnNob3duLCBOVUxMKTsKIH0KIAogc3RhdGljIHZvaWQgY3JlYXRlX2JvdW5kYXJ5X2NvbW1pdF9saXN0KHN0cnVjdCByZXZfaW5mbyAqcmV2cykKZGlmZiAtLWdpdCBhL3JldmlzaW9uLmggYi9yZXZpc2lvbi5oCmluZGV4IDA1OWJmZmYuLmVlZWE2ZmIgMTAwNjQ0Ci0tLSBhL3JldmlzaW9uLmgKKysrIGIvcmV2aXNpb24uaApAQCAtMTUsNyArMTUsOCBAQAogI2RlZmluZSBBRERFRAkJKDF1PDw3KQkvKiBQYXJlbnRzIGFscmVhZHkgcGFyc2VkIGFuZCBhZGRlZD8gKi8KICNkZWZpbmUgU1lNTUVUUklDX0xFRlQJKDF1PDw4KQogI2RlZmluZSBQQVRDSFNBTUUJKDF1PDw5KQotI2RlZmluZSBBTExfUkVWX0ZMQUdTCSgoMXU8PDEwKS0xKQorI2RlZmluZSBCT1RUT00JCSgxdTw8MTApCisjZGVmaW5lIEFMTF9SRVZfRkxBR1MJKCgxdTw8MTEpLTEpCiAKICNkZWZpbmUgREVDT1JBVEVfU0hPUlRfUkVGUwkxCiAjZGVmaW5lIERFQ09SQVRFX0ZVTExfUkVGUwkyCkBAIC0zNSw2ICszNiw3IEBACiAJCQlSRVZfQ01EX1BBUkVOVFNfT05MWSwKIAkJCVJFVl9DTURfTEVGVCwKIAkJCVJFVl9DTURfUklHSFQsCisJCQlSRVZfQ01EX01FUkdFX0JBU0UsCiAJCQlSRVZfQ01EX1JFVgogCQl9IHdoZW5jZTsKIAkJdW5zaWduZWQgZmxhZ3M7CkBAIC05Niw3ICs5OCw4IEBACiAJCQljaGVycnlfbWFyazoxLAogCQkJYmlzZWN0OjEsCiAJCQlhbmNlc3RyeV9wYXRoOjEsCi0JCQlmaXJzdF9wYXJlbnRfb25seToxOworCQkJZmlyc3RfcGFyZW50X29ubHk6MSwKKwkJCWxpbmVfbGV2ZWxfdHJhdmVyc2U6MTsKIAogCS8qIERpZmYgZmxhZ3MgKi8KIAl1bnNpZ25lZCBpbnQJZGlmZjoxLApAQCAtMTM1LDE0ICsxMzgsMTYgQEAKIAljb25zdCBjaGFyCSptaW1lX2JvdW5kYXJ5OwogCWNvbnN0IGNoYXIJKnBhdGNoX3N1ZmZpeDsKIAlpbnQJCW51bWJlcmVkX2ZpbGVzOworCWludAkJcmVyb2xsX2NvdW50OwogCWNoYXIJCSptZXNzYWdlX2lkOwogCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVmX21lc3NhZ2VfaWRzOwotCWNvbnN0IGNoYXIJKmFkZF9zaWdub2ZmOworCWludAkJYWRkX3NpZ25vZmY7CiAJY29uc3QgY2hhcgkqZXh0cmFfaGVhZGVyczsKIAljb25zdCBjaGFyCSpsb2dfcmVlbmNvZGU7CiAJY29uc3QgY2hhcgkqc3ViamVjdF9wcmVmaXg7CiAJaW50CQlub19pbmxpbmU7CiAJaW50CQlzaG93X2xvZ19zaXplOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqbWFpbG1hcDsKIAogCS8qIEZpbHRlciBieSBjb21taXQgbG9nIG1lc3NhZ2UgKi8KIAlzdHJ1Y3QgZ3JlcF9vcHQJZ3JlcF9maWx0ZXI7CkBAIC0xNjUsNiArMTcwLDcgQEAKIAlzdHJ1Y3QgcmVmbG9nX3dhbGtfaW5mbyAqcmVmbG9nX2luZm87CiAJc3RydWN0IGRlY29yYXRpb24gY2hpbGRyZW47CiAJc3RydWN0IGRlY29yYXRpb24gbWVyZ2Vfc2ltcGxpZmljYXRpb247CisJc3RydWN0IGRlY29yYXRpb24gdHJlZXNhbWU7CiAKIAkvKiBub3Rlcy1zcGVjaWZpYyBvcHRpb25zOiB3aGljaCByZWZzIHRvIHNob3cgKi8KIAlzdHJ1Y3QgZGlzcGxheV9ub3Rlc19vcHQgbm90ZXNfb3B0OwpAQCAtMTczLDYgKzE3OSw5IEBACiAJaW50IGNvdW50X2xlZnQ7CiAJaW50IGNvdW50X3JpZ2h0OwogCWludCBjb3VudF9zYW1lOworCisJLyogbGluZSBsZXZlbCByYW5nZSB0aGF0IHdlIGFyZSBjaGFzaW5nICovCisJc3RydWN0IGRlY29yYXRpb24gbGluZV9sb2dfZGF0YTsKIH07CiAKICNkZWZpbmUgUkVWX1RSRUVfU0FNRQkJMApAQCAtMTkzLDE5ICsyMDIsMjMgQEAKIH07CiAKIGV4dGVybiB2b2lkIGluaXRfcmV2aXNpb25zKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgY29uc3QgY2hhciAqcHJlZml4KTsKLWV4dGVybiBpbnQgc2V0dXBfcmV2aXNpb25zKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0ICopOworZXh0ZXJuIGludCBzZXR1cF9yZXZpc2lvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkgICBzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0ICopOwogZXh0ZXJuIHZvaWQgcGFyc2VfcmV2aXNpb25fb3B0KHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IHBhcnNlX29wdF9jdHhfdCAqY3R4LAotCQkJCSBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHRpb25zLAotCQkJCSBjb25zdCBjaGFyICogY29uc3QgdXNhZ2VzdHJbXSk7CisJCQkgICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0aW9ucywKKwkJCSAgICAgICBjb25zdCBjaGFyICogY29uc3QgdXNhZ2VzdHJbXSk7CiAjZGVmaW5lIFJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUUgMDEKICNkZWZpbmUgUkVWQVJHX0NPTU1JVFRJU0ggMDIKLWV4dGVybiBpbnQgaGFuZGxlX3JldmlzaW9uX2FyZyhjb25zdCBjaGFyICphcmcsIHN0cnVjdCByZXZfaW5mbyAqcmV2cywgaW50IGZsYWdzLCB1bnNpZ25lZCByZXZhcmdfb3B0KTsKK2V4dGVybiBpbnQgaGFuZGxlX3JldmlzaW9uX2FyZyhjb25zdCBjaGFyICphcmcsIHN0cnVjdCByZXZfaW5mbyAqcmV2cywKKwkJCSAgICAgICBpbnQgZmxhZ3MsIHVuc2lnbmVkIHJldmFyZ19vcHQpOwogCiBleHRlcm4gdm9pZCByZXNldF9yZXZpc2lvbl93YWxrKHZvaWQpOwogZXh0ZXJuIGludCBwcmVwYXJlX3JldmlzaW9uX3dhbGsoc3RydWN0IHJldl9pbmZvICpyZXZzKTsKIGV4dGVybiBzdHJ1Y3QgY29tbWl0ICpnZXRfcmV2aXNpb24oc3RydWN0IHJldl9pbmZvICpyZXZzKTsKLWV4dGVybiBjaGFyICpnZXRfcmV2aXNpb25fbWFyayhjb25zdCBzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCk7Ci1leHRlcm4gdm9pZCBwdXRfcmV2aXNpb25fbWFyayhjb25zdCBzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CitleHRlcm4gY2hhciAqZ2V0X3JldmlzaW9uX21hcmsoY29uc3Qgc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CitleHRlcm4gdm9pZCBwdXRfcmV2aXNpb25fbWFyayhjb25zdCBzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwogCiBleHRlcm4gdm9pZCBtYXJrX3BhcmVudHNfdW5pbnRlcmVzdGluZyhzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwogZXh0ZXJuIHZvaWQgbWFya190cmVlX3VuaW50ZXJlc3Rpbmcoc3RydWN0IHRyZWUgKnRyZWUpOwpAQCAtMjE4LDE1ICsyMzEsMTkgQEAKIAogY2hhciAqcGF0aF9uYW1lKGNvbnN0IHN0cnVjdCBuYW1lX3BhdGggKnBhdGgsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi1leHRlcm4gdm9pZCBzaG93X29iamVjdF93aXRoX25hbWUoRklMRSAqLCBzdHJ1Y3Qgb2JqZWN0ICosIGNvbnN0IHN0cnVjdCBuYW1lX3BhdGggKiwgY29uc3QgY2hhciAqKTsKK2V4dGVybiB2b2lkIHNob3dfb2JqZWN0X3dpdGhfbmFtZShGSUxFICosIHN0cnVjdCBvYmplY3QgKiwKKwkJCQkgIGNvbnN0IHN0cnVjdCBuYW1lX3BhdGggKiwgY29uc3QgY2hhciAqKTsKIAogZXh0ZXJuIHZvaWQgYWRkX29iamVjdChzdHJ1Y3Qgb2JqZWN0ICpvYmosCiAJCSAgICAgICBzdHJ1Y3Qgb2JqZWN0X2FycmF5ICpwLAogCQkgICAgICAgc3RydWN0IG5hbWVfcGF0aCAqcGF0aCwKIAkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwogCi1leHRlcm4gdm9pZCBhZGRfcGVuZGluZ19vYmplY3Qoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUpOwotZXh0ZXJuIHZvaWQgYWRkX3BlbmRpbmdfc2hhMShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkIGludCBmbGFncyk7CitleHRlcm4gdm9pZCBhZGRfcGVuZGluZ19vYmplY3Qoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJICAgICAgIHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSk7CitleHRlcm4gdm9pZCBhZGRfcGVuZGluZ19zaGExKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKIAogZXh0ZXJuIHZvaWQgYWRkX2hlYWRfdG9fcGVuZGluZyhzdHJ1Y3QgcmV2X2luZm8gKik7CiAKQEAgLTIzNiw3ICsyNTMsMTkgQEAKIAljb21taXRfZXJyb3IKIH07CiAKLWV4dGVybiBlbnVtIGNvbW1pdF9hY3Rpb24gZ2V0X2NvbW1pdF9hY3Rpb24oc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOwotZXh0ZXJuIGVudW0gY29tbWl0X2FjdGlvbiBzaW1wbGlmeV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOworZXh0ZXJuIGVudW0gY29tbWl0X2FjdGlvbiBnZXRfY29tbWl0X2FjdGlvbihzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkJCSAgICBzdHJ1Y3QgY29tbWl0ICpjb21taXQpOworZXh0ZXJuIGVudW0gY29tbWl0X2FjdGlvbiBzaW1wbGlmeV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCQkgIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiAKK2VudW0gcmV3cml0ZV9yZXN1bHQgeworCXJld3JpdGVfb25lX29rLAorCXJld3JpdGVfb25lX25vcGFyZW50cywKKwlyZXdyaXRlX29uZV9lcnJvcgorfTsKKwordHlwZWRlZiBlbnVtIHJld3JpdGVfcmVzdWx0ICgqcmV3cml0ZV9wYXJlbnRfZm5fdCkoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICoqcHApOworCitleHRlcm4gaW50IHJld3JpdGVfcGFyZW50cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwlyZXdyaXRlX3BhcmVudF9mbl90IHJld3JpdGVfcGFyZW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvcnVuLWNvbW1hbmQuYyBiL3J1bi1jb21tYW5kLmMKaW5kZXggMDQ3MTIxOS4uYWVjZTg3MiAxMDA2NDQKLS0tIGEvcnVuLWNvbW1hbmQuYworKysgYi9ydW4tY29tbWFuZC5jCkBAIC03Miw3ICs3Miw3IEBACiAJY2xvc2UoZmRbMV0pOwogfQogCi0jaWZuZGVmIFdJTjMyCisjaWZuZGVmIEdJVF9XSU5ET1dTX05BVElWRQogc3RhdGljIGlubGluZSB2b2lkIGR1cF9kZXZudWxsKGludCB0bykKIHsKIAlpbnQgZmQgPSBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpOwpAQCAtMTU5LDcgKzE1OSw3IEBACiAJCWRpZSgiQlVHOiBzaGVsbCBjb21tYW5kIGlzIGVtcHR5Iik7CiAKIAlpZiAoc3RyY3Nwbihhcmd2WzBdLCAifCY7PD4oKSRgXFxcIicgXHRcbio/WyN+PSUiKSAhPSBzdHJsZW4oYXJndlswXSkpIHsKLSNpZm5kZWYgV0lOMzIKKyNpZm5kZWYgR0lUX1dJTkRPV1NfTkFUSVZFCiAJCW5hcmd2W25hcmdjKytdID0gU0hFTExfUEFUSDsKICNlbHNlCiAJCW5hcmd2W25hcmdjKytdID0gInNoIjsKQEAgLTE4Miw3ICsxODIsNyBAQAogCXJldHVybiBuYXJndjsKIH0KIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHN0YXRpYyBpbnQgZXhlY3Zfc2hlbGxfY21kKGNvbnN0IGNoYXIgKiphcmd2KQogewogCWNvbnN0IGNoYXIgKipuYXJndiA9IHByZXBhcmVfc2hlbGxfY21kKGFyZ3YpOwpAQCAtMTkzLDcgKzE5Myw3IEBACiB9CiAjZW5kaWYKIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHN0YXRpYyBpbnQgY2hpbGRfZXJyID0gMjsKIHN0YXRpYyBpbnQgY2hpbGRfbm90aWZpZXIgPSAtMTsKIApAQCAtMjczLDcgKzI3Myw4IEBACiB7CiAJaW50IG5lZWRfaW4sIG5lZWRfb3V0LCBuZWVkX2VycjsKIAlpbnQgZmRpblsyXSwgZmRvdXRbMl0sIGZkZXJyWzJdOwotCWludCBmYWlsZWRfZXJybm8gPSBmYWlsZWRfZXJybm87CisJaW50IGZhaWxlZF9lcnJubzsKKwljaGFyICpzdHI7CiAKIAkvKgogCSAqIEluIGNhc2Ugb2YgZXJyb3JzIHdlIG11c3Qga2VlcCB0aGUgcHJvbWlzZSB0byBjbG9zZSBGRHMKQEAgLTI4Niw2ICsyODcsNyBAQAogCQkJZmFpbGVkX2Vycm5vID0gZXJybm87CiAJCQlpZiAoY21kLT5vdXQgPiAwKQogCQkJCWNsb3NlKGNtZC0+b3V0KTsKKwkJCXN0ciA9ICJzdGFuZGFyZCBpbnB1dCI7CiAJCQlnb3RvIGZhaWxfcGlwZTsKIAkJfQogCQljbWQtPmluID0gZmRpblsxXTsKQEAgLTMwMSw2ICszMDMsNyBAQAogCQkJCWNsb3NlX3BhaXIoZmRpbik7CiAJCQllbHNlIGlmIChjbWQtPmluKQogCQkJCWNsb3NlKGNtZC0+aW4pOworCQkJc3RyID0gInN0YW5kYXJkIG91dHB1dCI7CiAJCQlnb3RvIGZhaWxfcGlwZTsKIAkJfQogCQljbWQtPm91dCA9IGZkb3V0WzBdOwpAQCAtMzE4LDkgKzMyMSwxMCBAQAogCQkJCWNsb3NlX3BhaXIoZmRvdXQpOwogCQkJZWxzZSBpZiAoY21kLT5vdXQpCiAJCQkJY2xvc2UoY21kLT5vdXQpOworCQkJc3RyID0gInN0YW5kYXJkIGVycm9yIjsKIGZhaWxfcGlwZToKLQkJCWVycm9yKCJjYW5ub3QgY3JlYXRlIHBpcGUgZm9yICVzOiAlcyIsCi0JCQkJY21kLT5hcmd2WzBdLCBzdHJlcnJvcihmYWlsZWRfZXJybm8pKTsKKwkJCWVycm9yKCJjYW5ub3QgY3JlYXRlICVzIHBpcGUgZm9yICVzOiAlcyIsCisJCQkJc3RyLCBjbWQtPmFyZ3ZbMF0sIHN0cmVycm9yKGZhaWxlZF9lcnJubykpOwogCQkJZXJybm8gPSBmYWlsZWRfZXJybm87CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTMzMCwxMyArMzM0LDE0IEBACiAJdHJhY2VfYXJndl9wcmludGYoY21kLT5hcmd2LCAidHJhY2U6IHJ1bl9jb21tYW5kOiIpOwogCWZmbHVzaChOVUxMKTsKIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHsKIAlpbnQgbm90aWZ5X3BpcGVbMl07CiAJaWYgKHBpcGUobm90aWZ5X3BpcGUpKQogCQlub3RpZnlfcGlwZVswXSA9IG5vdGlmeV9waXBlWzFdID0gLTE7CiAKIAljbWQtPnBpZCA9IGZvcmsoKTsKKwlmYWlsZWRfZXJybm8gPSBlcnJubzsKIAlpZiAoIWNtZC0+cGlkKSB7CiAJCS8qCiAJCSAqIFJlZGlyZWN0IHRoZSBjaGFubmVsIHRvIHdyaXRlIHN5c2NhbGwgZXJyb3IgbWVzc2FnZXMgdG8KQEAgLTQxNiw3ICs0MjEsNyBAQAogCX0KIAlpZiAoY21kLT5waWQgPCAwKQogCQllcnJvcigiY2Fubm90IGZvcmsoKSBmb3IgJXM6ICVzIiwgY21kLT5hcmd2WzBdLAotCQkJc3RyZXJyb3IoZmFpbGVkX2Vycm5vID0gZXJybm8pKTsKKwkJCXN0cmVycm9yKGVycm5vKSk7CiAJZWxzZSBpZiAoY21kLT5jbGVhbl9vbl9leGl0KQogCQltYXJrX2NoaWxkX2Zvcl9jbGVhbnVwKGNtZC0+cGlkKTsKIApAQCAtNTgzLDYgKzU4OCw3IEBACiBzdGF0aWMgcHRocmVhZF90IG1haW5fdGhyZWFkOwogc3RhdGljIGludCBtYWluX3RocmVhZF9zZXQ7CiBzdGF0aWMgcHRocmVhZF9rZXlfdCBhc3luY19rZXk7CitzdGF0aWMgcHRocmVhZF9rZXlfdCBhc3luY19kaWVfY291bnRlcjsKIAogc3RhdGljIHZvaWQgKnJ1bl90aHJlYWQodm9pZCAqZGF0YSkKIHsKQEAgLTYwOSw2ICs2MTUsMTQgQEAKIAogCWV4aXQoMTI4KTsKIH0KKworc3RhdGljIGludCBhc3luY19kaWVfaXNfcmVjdXJzaW5nKHZvaWQpCit7CisJdm9pZCAqcmV0ID0gcHRocmVhZF9nZXRzcGVjaWZpYyhhc3luY19kaWVfY291bnRlcik7CisJcHRocmVhZF9zZXRzcGVjaWZpYyhhc3luY19kaWVfY291bnRlciwgKHZvaWQgKikxKTsKKwlyZXR1cm4gcmV0ICE9IE5VTEw7Cit9CisKICNlbmRpZgogCiBpbnQgc3RhcnRfYXN5bmMoc3RydWN0IGFzeW5jICphc3luYykKQEAgLTY5MCw3ICs3MDQsOSBAQAogCQltYWluX3RocmVhZF9zZXQgPSAxOwogCQltYWluX3RocmVhZCA9IHB0aHJlYWRfc2VsZigpOwogCQlwdGhyZWFkX2tleV9jcmVhdGUoJmFzeW5jX2tleSwgTlVMTCk7CisJCXB0aHJlYWRfa2V5X2NyZWF0ZSgmYXN5bmNfZGllX2NvdW50ZXIsIE5VTEwpOwogCQlzZXRfZGllX3JvdXRpbmUoZGllX2FzeW5jKTsKKwkJc2V0X2RpZV9pc19yZWN1cnNpbmdfcm91dGluZShhc3luY19kaWVfaXNfcmVjdXJzaW5nKTsKIAl9CiAKIAlpZiAocHJvY19pbiA+PSAwKQpAQCAtNzM1LDYgKzc1MSwxNSBAQAogI2VuZGlmCiB9CiAKK2NoYXIgKmZpbmRfaG9vayhjb25zdCBjaGFyICpuYW1lKQoreworCWNoYXIgKnBhdGggPSBnaXRfcGF0aCgiaG9va3MvJXMiLCBuYW1lKTsKKwlpZiAoYWNjZXNzKHBhdGgsIFhfT0spIDwgMCkKKwkJcGF0aCA9IE5VTEw7CisKKwlyZXR1cm4gcGF0aDsKK30KKwogaW50IHJ1bl9ob29rKGNvbnN0IGNoYXIgKmluZGV4X2ZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIC4uLikKIHsKIAlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBob29rOwpAQCAtNzQ0LDExICs3NjksMTMgQEAKIAl2YV9saXN0IGFyZ3M7CiAJaW50IHJldDsKIAotCWlmIChhY2Nlc3MoZ2l0X3BhdGgoImhvb2tzLyVzIiwgbmFtZSksIFhfT0spIDwgMCkKKwlwID0gZmluZF9ob29rKG5hbWUpOworCWlmICghcCkKIAkJcmV0dXJuIDA7CiAKKwlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIHApOworCiAJdmFfc3RhcnQoYXJncywgbmFtZSk7Ci0JYXJndl9hcnJheV9wdXNoKCZhcmd2LCBnaXRfcGF0aCgiaG9va3MvJXMiLCBuYW1lKSk7CiAJd2hpbGUgKChwID0gdmFfYXJnKGFyZ3MsIGNvbnN0IGNoYXIgKikpKQogCQlhcmd2X2FycmF5X3B1c2goJmFyZ3YsIHApOwogCXZhX2VuZChhcmdzKTsKZGlmZiAtLWdpdCBhL3J1bi1jb21tYW5kLmggYi9ydW4tY29tbWFuZC5oCmluZGV4IDg1MGM2MzguLjIyMWNlMzMgMTAwNjQ0Ci0tLSBhL3J1bi1jb21tYW5kLmgKKysrIGIvcnVuLWNvbW1hbmQuaApAQCAtNDUsNiArNDUsNyBAQAogaW50IGZpbmlzaF9jb21tYW5kKHN0cnVjdCBjaGlsZF9wcm9jZXNzICopOwogaW50IHJ1bl9jb21tYW5kKHN0cnVjdCBjaGlsZF9wcm9jZXNzICopOwogCitleHRlcm4gY2hhciAqZmluZF9ob29rKGNvbnN0IGNoYXIgKm5hbWUpOwogZXh0ZXJuIGludCBydW5faG9vayhjb25zdCBjaGFyICppbmRleF9maWxlLCBjb25zdCBjaGFyICpuYW1lLCAuLi4pOwogCiAjZGVmaW5lIFJVTl9DT01NQU5EX05PX1NURElOIDEKZGlmZiAtLWdpdCBhL3NlbmQtcGFjay5jIGIvc2VuZC1wYWNrLmMKaW5kZXggZjUwZGZkOS4uN2QxNzJlZiAxMDA2NDQKLS0tIGEvc2VuZC1wYWNrLmMKKysrIGIvc2VuZC1wYWNrLmMKQEAgLTEwNiwxNSArMTA2LDExIEBACiBzdGF0aWMgaW50IHJlY2VpdmVfc3RhdHVzKGludCBpbiwgc3RydWN0IHJlZiAqcmVmcykKIHsKIAlzdHJ1Y3QgcmVmICpoaW50OwotCWNoYXIgbGluZVsxMDAwXTsKIAlpbnQgcmV0ID0gMDsKLQlpbnQgbGVuID0gcGFja2V0X3JlYWRfbGluZShpbiwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKLQlpZiAobGVuIDwgMTAgfHwgbWVtY21wKGxpbmUsICJ1bnBhY2sgIiwgNykpCisJY2hhciAqbGluZSA9IHBhY2tldF9yZWFkX2xpbmUoaW4sIE5VTEwpOworCWlmIChwcmVmaXhjbXAobGluZSwgInVucGFjayAiKSkKIAkJcmV0dXJuIGVycm9yKCJkaWQgbm90IHJlY2VpdmUgcmVtb3RlIHN0YXR1cyIpOwotCWlmIChtZW1jbXAobGluZSwgInVucGFjayBva1xuIiwgMTApKSB7Ci0JCWNoYXIgKnAgPSBsaW5lICsgc3RybGVuKGxpbmUpIC0gMTsKLQkJaWYgKCpwID09ICdcbicpCi0JCQkqcCA9ICdcMCc7CisJaWYgKHN0cmNtcChsaW5lLCAidW5wYWNrIG9rIikpIHsKIAkJZXJyb3IoInVucGFjayBmYWlsZWQ6ICVzIiwgbGluZSArIDcpOwogCQlyZXQgPSAtMTsKIAl9CkBAIC0xMjIsMTcgKzExOCwxNSBAQAogCXdoaWxlICgxKSB7CiAJCWNoYXIgKnJlZm5hbWU7CiAJCWNoYXIgKm1zZzsKLQkJbGVuID0gcGFja2V0X3JlYWRfbGluZShpbiwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKLQkJaWYgKCFsZW4pCisJCWxpbmUgPSBwYWNrZXRfcmVhZF9saW5lKGluLCBOVUxMKTsKKwkJaWYgKCFsaW5lKQogCQkJYnJlYWs7Ci0JCWlmIChsZW4gPCAzIHx8Ci0JCSAgICAobWVtY21wKGxpbmUsICJvayAiLCAzKSAmJiBtZW1jbXAobGluZSwgIm5nICIsIDMpKSkgewotCQkJZnByaW50ZihzdGRlcnIsICJwcm90b2NvbCBlcnJvcjogJXNcbiIsIGxpbmUpOworCQlpZiAocHJlZml4Y21wKGxpbmUsICJvayAiKSAmJiBwcmVmaXhjbXAobGluZSwgIm5nICIpKSB7CisJCQllcnJvcigiaW52YWxpZCByZWYgc3RhdHVzIGZyb20gcmVtb3RlOiAlcyIsIGxpbmUpOwogCQkJcmV0ID0gLTE7CiAJCQlicmVhazsKIAkJfQogCi0JCWxpbmVbc3RybGVuKGxpbmUpLTFdID0gJ1wwJzsKIAkJcmVmbmFtZSA9IGxpbmUgKyAzOwogCQltc2cgPSBzdHJjaHIocmVmbmFtZSwgJyAnKTsKIAkJaWYgKG1zZykKQEAgLTIyOSw2ICsyMjMsOSBAQAogCQkvKiBDaGVjayBmb3Igc3RhdHVzZXMgc2V0IGJ5IHNldF9yZWZfc3RhdHVzX2Zvcl9wdXNoKCkgKi8KIAkJc3dpdGNoIChyZWYtPnN0YXR1cykgewogCQljYXNlIFJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJEOgorCQljYXNlIFJFRl9TVEFUVVNfUkVKRUNUX0FMUkVBRFlfRVhJU1RTOgorCQljYXNlIFJFRl9TVEFUVVNfUkVKRUNUX0ZFVENIX0ZJUlNUOgorCQljYXNlIFJFRl9TVEFUVVNfUkVKRUNUX05FRURTX0ZPUkNFOgogCQljYXNlIFJFRl9TVEFUVVNfVVBUT0RBVEU6CiAJCQljb250aW51ZTsKIAkJZGVmYXVsdDoKQEAgLTI3OCw3ICsyNzUsNyBAQAogCQkJc2VuZF9zaWRlYmFuZChvdXQsIC0xLCByZXFfYnVmLmJ1ZiwgcmVxX2J1Zi5sZW4sIExBUkdFX1BBQ0tFVF9NQVgpOwogCQl9CiAJfSBlbHNlIHsKLQkJc2FmZV93cml0ZShvdXQsIHJlcV9idWYuYnVmLCByZXFfYnVmLmxlbik7CisJCXdyaXRlX29yX2RpZShvdXQsIHJlcV9idWYuYnVmLCByZXFfYnVmLmxlbik7CiAJCXBhY2tldF9mbHVzaChvdXQpOwogCX0KIAlzdHJidWZfcmVsZWFzZSgmcmVxX2J1Zik7CmRpZmYgLS1naXQgYS9zZXF1ZW5jZXIuYyBiL3NlcXVlbmNlci5jCmluZGV4IGFlZjVlOGEuLmY3YmU3ZDggMTAwNjQ0Ci0tLSBhL3NlcXVlbmNlci5jCisrKyBiL3NlcXVlbmNlci5jCkBAIC0xOCw2ICsxOCw4OSBAQAogI2RlZmluZSBHSVRfUkVGTE9HX0FDVElPTiAiR0lUX1JFRkxPR19BQ1RJT04iCiAKIGNvbnN0IGNoYXIgc2lnbl9vZmZfaGVhZGVyW10gPSAiU2lnbmVkLW9mZi1ieTogIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNoZXJyeV9waWNrZWRfcHJlZml4W10gPSAiKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgIjsKKworc3RhdGljIGludCBpc19yZmMyODIyX2xpbmUoY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJCWludCBjaCA9IGJ1ZltpXTsKKwkJaWYgKGNoID09ICc6JykKKwkJCXJldHVybiAxOworCQlpZiAoIWlzYWxudW0oY2gpICYmIGNoICE9ICctJykKKwkJCWJyZWFrOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlzX2NoZXJyeV9waWNrZWRfZnJvbV9saW5lKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGxlbikKK3sKKwkvKgorCSAqIFdlIG9ubHkgY2FyZSB0aGF0IGl0IGxvb2tzIHJvdWdobHkgbGlrZSAoY2hlcnJ5IHBpY2tlZCBmcm9tIC4uLikKKwkgKi8KKwlyZXR1cm4gbGVuID4gc3RybGVuKGNoZXJyeV9waWNrZWRfcHJlZml4KSArIDEgJiYKKwkJIXByZWZpeGNtcChidWYsIGNoZXJyeV9waWNrZWRfcHJlZml4KSAmJiBidWZbbGVuIC0gMV0gPT0gJyknOworfQorCisvKgorICogUmV0dXJucyAwIGZvciBub24tY29uZm9ybWluZyBmb290ZXIKKyAqIFJldHVybnMgMSBmb3IgY29uZm9ybWluZyBmb290ZXIKKyAqIFJldHVybnMgMiB3aGVuIHNvYiBleGlzdHMgd2l0aGluIGNvbmZvcm1pbmcgZm9vdGVyCisgKiBSZXR1cm5zIDMgd2hlbiBzb2IgZXhpc3RzIHdpdGhpbiBjb25mb3JtaW5nIGZvb3RlciBhcyBsYXN0IGVudHJ5CisgKi8KK3N0YXRpYyBpbnQgaGFzX2NvbmZvcm1pbmdfZm9vdGVyKHN0cnVjdCBzdHJidWYgKnNiLCBzdHJ1Y3Qgc3RyYnVmICpzb2IsCisJaW50IGlnbm9yZV9mb290ZXIpCit7CisJY2hhciBwcmV2OworCWludCBpLCBrOworCWludCBsZW4gPSBzYi0+bGVuIC0gaWdub3JlX2Zvb3RlcjsKKwljb25zdCBjaGFyICpidWYgPSBzYi0+YnVmOworCWludCBmb3VuZF9zb2IgPSAwOworCisJLyogZm9vdGVyIG11c3QgZW5kIHdpdGggbmV3bGluZSAqLworCWlmICghbGVuIHx8IGJ1ZltsZW4gLSAxXSAhPSAnXG4nKQorCQlyZXR1cm4gMDsKKworCXByZXYgPSAnXDAnOworCWZvciAoaSA9IGxlbiAtIDE7IGkgPiAwOyBpLS0pIHsKKwkJY2hhciBjaCA9IGJ1ZltpXTsKKwkJaWYgKHByZXYgPT0gJ1xuJyAmJiBjaCA9PSAnXG4nKSAvKiBwYXJhZ3JhcGggYnJlYWsgKi8KKwkJCWJyZWFrOworCQlwcmV2ID0gY2g7CisJfQorCisJLyogcmVxdWlyZSBhdCBsZWFzdCBvbmUgYmxhbmsgbGluZSAqLworCWlmIChwcmV2ICE9ICdcbicgfHwgYnVmW2ldICE9ICdcbicpCisJCXJldHVybiAwOworCisJLyogYWR2YW5jZSB0byBzdGFydCBvZiBsYXN0IHBhcmFncmFwaCAqLworCXdoaWxlIChpIDwgbGVuIC0gMSAmJiBidWZbaV0gPT0gJ1xuJykKKwkJaSsrOworCisJZm9yICg7IGkgPCBsZW47IGkgPSBrKSB7CisJCWludCBmb3VuZF9yZmMyODIyOworCisJCWZvciAoayA9IGk7IGsgPCBsZW4gJiYgYnVmW2tdICE9ICdcbic7IGsrKykKKwkJCTsgLyogZG8gbm90aGluZyAqLworCQlrKys7CisKKwkJZm91bmRfcmZjMjgyMiA9IGlzX3JmYzI4MjJfbGluZShidWYgKyBpLCBrIC0gaSAtIDEpOworCQlpZiAoZm91bmRfcmZjMjgyMiAmJiBzb2IgJiYKKwkJICAgICFzdHJuY21wKGJ1ZiArIGksIHNvYi0+YnVmLCBzb2ItPmxlbikpCisJCQlmb3VuZF9zb2IgPSBrOworCisJCWlmICghKGZvdW5kX3JmYzI4MjIgfHwKKwkJICAgICAgaXNfY2hlcnJ5X3BpY2tlZF9mcm9tX2xpbmUoYnVmICsgaSwgayAtIGkgLSAxKSkpCisJCQlyZXR1cm4gMDsKKwl9CisJaWYgKGZvdW5kX3NvYiA9PSBpKQorCQlyZXR1cm4gMzsKKwlpZiAoZm91bmRfc29iKQorCQlyZXR1cm4gMjsKKwlyZXR1cm4gMTsKK30KIAogc3RhdGljIHZvaWQgcmVtb3ZlX3NlcXVlbmNlcl9zdGF0ZSh2b2lkKQogewpAQCAtMTMzLDcgKzIxNiw3IEBACiAJaWYgKG1zZykgewogCQlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBtc2cpOwogCQkvKgotCQkgKiBBIGNvbmZsaWN0IGhhcyBvY2N1cmVkIGJ1dCB0aGUgcG9yY2VsYWluCisJCSAqIEEgY29uZmxpY3QgaGFzIG9jY3VycmVkIGJ1dCB0aGUgcG9yY2VsYWluCiAJCSAqICh0eXBpY2FsbHkgcmViYXNlIC0taW50ZXJhY3RpdmUpIHdhbnRzIHRvIHRha2UgY2FyZQogCQkgKiBvZiB0aGUgY29tbWl0IGl0c2VsZiBzbyByZW1vdmUgQ0hFUlJZX1BJQ0tfSEVBRAogCQkgKi8KQEAgLTIzNyw3ICszMjAsNyBAQAogCXJvbGxiYWNrX2xvY2tfZmlsZSgmaW5kZXhfbG9jayk7CiAKIAlpZiAob3B0cy0+c2lnbm9mZikKLQkJYXBwZW5kX3NpZ25vZmYobXNnYnVmLCAwKTsKKwkJYXBwZW5kX3NpZ25vZmYobXNnYnVmLCAwLCAwKTsKIAogCWlmICghY2xlYW4pIHsKIAkJaW50IGk7CkBAIC0zOTEsNyArNDc0LDcgQEAKIAlzdHJ1Y3QgY29tbWl0X21lc3NhZ2UgbXNnID0geyBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH07CiAJY2hhciAqZGVmbXNnID0gTlVMTDsKIAlzdHJ1Y3Qgc3RyYnVmIG1zZ2J1ZiA9IFNUUkJVRl9JTklUOwotCWludCByZXMsIHVuYm9ybiA9IDA7CisJaW50IHJlcywgdW5ib3JuID0gMCwgYWxsb3c7CiAKIAlpZiAob3B0cy0+bm9fY29tbWl0KSB7CiAJCS8qCkBAIC00OTYsNyArNTc5LDkgQEAKIAkJfQogCiAJCWlmIChvcHRzLT5yZWNvcmRfb3JpZ2luKSB7Ci0JCQlzdHJidWZfYWRkc3RyKCZtc2didWYsICIoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAiKTsKKwkJCWlmICghaGFzX2NvbmZvcm1pbmdfZm9vdGVyKCZtc2didWYsIE5VTEwsIDApKQorCQkJCXN0cmJ1Zl9hZGRjaCgmbXNnYnVmLCAnXG4nKTsKKwkJCXN0cmJ1Zl9hZGRzdHIoJm1zZ2J1ZiwgY2hlcnJ5X3BpY2tlZF9wcmVmaXgpOwogCQkJc3RyYnVmX2FkZHN0cigmbXNnYnVmLCBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CiAJCQlzdHJidWZfYWRkc3RyKCZtc2didWYsICIpXG4iKTsKIAkJfQpAQCAtNTM5LDE0ICs2MjQsMTggQEAKIAkJICAgICAgbXNnLnN1YmplY3QpOwogCQlwcmludF9hZHZpY2UocmVzID09IDEsIG9wdHMpOwogCQlyZXJlcmUob3B0cy0+YWxsb3dfcmVyZXJlX2F1dG8pOwotCX0gZWxzZSB7Ci0JCWludCBhbGxvdyA9IGFsbG93X2VtcHR5KG9wdHMsIGNvbW1pdCk7Ci0JCWlmIChhbGxvdyA8IDApCi0JCQlyZXR1cm4gYWxsb3c7Ci0JCWlmICghb3B0cy0+bm9fY29tbWl0KQotCQkJcmVzID0gcnVuX2dpdF9jb21taXQoZGVmbXNnLCBvcHRzLCBhbGxvdyk7CisJCWdvdG8gbGVhdmU7CiAJfQogCisJYWxsb3cgPSBhbGxvd19lbXB0eShvcHRzLCBjb21taXQpOworCWlmIChhbGxvdyA8IDApIHsKKwkJcmVzID0gYWxsb3c7CisJCWdvdG8gbGVhdmU7CisJfQorCWlmICghb3B0cy0+bm9fY29tbWl0KQorCQlyZXMgPSBydW5fZ2l0X2NvbW1pdChkZWZtc2csIG9wdHMsIGFsbG93KTsKKworbGVhdmU6CiAJZnJlZV9tZXNzYWdlKCZtc2cpOwogCWZyZWUoZGVmbXNnKTsKIApAQCAtOTYyLDYgKzEwNTEsNyBAQAogewogCXN0cnVjdCBjb21taXRfbGlzdCAqdG9kb19saXN0ID0gTlVMTDsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCWludCBpOwogCiAJaWYgKG9wdHMtPnN1YmNvbW1hbmQgPT0gUkVQTEFZX05PTkUpCiAJCWFzc2VydChvcHRzLT5yZXZzKTsKQEAgLTk4Miw2ICsxMDcyLDIzIEBACiAJaWYgKG9wdHMtPnN1YmNvbW1hbmQgPT0gUkVQTEFZX0NPTlRJTlVFKQogCQlyZXR1cm4gc2VxdWVuY2VyX2NvbnRpbnVlKG9wdHMpOwogCisJZm9yIChpID0gMDsgaSA8IG9wdHMtPnJldnMtPnBlbmRpbmcubnI7IGkrKykgeworCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCQljb25zdCBjaGFyICpuYW1lID0gb3B0cy0+cmV2cy0+cGVuZGluZy5vYmplY3RzW2ldLm5hbWU7CisKKwkJLyogVGhpcyBoYXBwZW5zIHdoZW4gdXNpbmcgLS1zdGRpbi4gKi8KKwkJaWYgKCFzdHJsZW4obmFtZSkpCisJCQljb250aW51ZTsKKworCQlpZiAoIWdldF9zaGExKG5hbWUsIHNoYTEpKSB7CisJCQlpZiAoIWxvb2t1cF9jb21taXRfcmVmZXJlbmNlX2dlbnRseShzaGExLCAxKSkgeworCQkJCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgTlVMTCk7CisJCQkJZGllKF8oIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIiksIG5hbWUsIHR5cGVuYW1lKHR5cGUpKTsKKwkJCX0KKwkJfSBlbHNlCisJCQlkaWUoXygiJXM6IGJhZCByZXZpc2lvbiIpLCBuYW1lKTsKKwl9CisKIAkvKgogCSAqIElmIHdlIHdlcmUgY2FsbGVkIGFzICJnaXQgY2hlcnJ5LXBpY2sgPGNvbW1pdD4iLCBqdXN0CiAJICogY2hlcnJ5LXBpY2svcmV2ZXJ0IGl0LCBzZXQgQ0hFUlJZX1BJQ0tfSEVBRCAvCkBAIC0xMDIxLDYyICsxMTI4LDY3IEBACiAJcmV0dXJuIHBpY2tfY29tbWl0cyh0b2RvX2xpc3QsIG9wdHMpOwogfQogCi1zdGF0aWMgaW50IGVuZHNfcmZjMjgyMl9mb290ZXIoc3RydWN0IHN0cmJ1ZiAqc2IsIGludCBpZ25vcmVfZm9vdGVyKQordm9pZCBhcHBlbmRfc2lnbm9mZihzdHJ1Y3Qgc3RyYnVmICptc2didWYsIGludCBpZ25vcmVfZm9vdGVyLCB1bnNpZ25lZCBmbGFnKQogewotCWludCBjaDsKLQlpbnQgaGl0ID0gMDsKLQlpbnQgaSwgaiwgazsKLQlpbnQgbGVuID0gc2ItPmxlbiAtIGlnbm9yZV9mb290ZXI7Ci0JaW50IGZpcnN0ID0gMTsKLQljb25zdCBjaGFyICpidWYgPSBzYi0+YnVmOwotCi0JZm9yIChpID0gbGVuIC0gMTsgaSA+IDA7IGktLSkgewotCQlpZiAoaGl0ICYmIGJ1ZltpXSA9PSAnXG4nKQotCQkJYnJlYWs7Ci0JCWhpdCA9IChidWZbaV0gPT0gJ1xuJyk7Ci0JfQotCi0Jd2hpbGUgKGkgPCBsZW4gLSAxICYmIGJ1ZltpXSA9PSAnXG4nKQotCQlpKys7Ci0KLQlmb3IgKDsgaSA8IGxlbjsgaSA9IGspIHsKLQkJZm9yIChrID0gaTsgayA8IGxlbiAmJiBidWZba10gIT0gJ1xuJzsgaysrKQotCQkJOyAvKiBkbyBub3RoaW5nICovCi0JCWsrKzsKLQotCQlpZiAoKGJ1ZltrXSA9PSAnICcgfHwgYnVmW2tdID09ICdcdCcpICYmICFmaXJzdCkKLQkJCWNvbnRpbnVlOwotCi0JCWZpcnN0ID0gMDsKLQotCQlmb3IgKGogPSAwOyBpICsgaiA8IGxlbjsgaisrKSB7Ci0JCQljaCA9IGJ1ZltpICsgal07Ci0JCQlpZiAoY2ggPT0gJzonKQotCQkJCWJyZWFrOwotCQkJaWYgKGlzYWxudW0oY2gpIHx8Ci0JCQkgICAgKGNoID09ICctJykpCi0JCQkJY29udGludWU7Ci0JCQlyZXR1cm4gMDsKLQkJfQotCX0KLQlyZXR1cm4gMTsKLX0KLQotdm9pZCBhcHBlbmRfc2lnbm9mZihzdHJ1Y3Qgc3RyYnVmICptc2didWYsIGludCBpZ25vcmVfZm9vdGVyKQoteworCXVuc2lnbmVkIG5vX2R1cF9zb2IgPSBmbGFnICYgQVBQRU5EX1NJR05PRkZfREVEVVA7CiAJc3RydWN0IHN0cmJ1ZiBzb2IgPSBTVFJCVUZfSU5JVDsKLQlpbnQgaTsKKwlpbnQgaGFzX2Zvb3RlcjsKIAogCXN0cmJ1Zl9hZGRzdHIoJnNvYiwgc2lnbl9vZmZfaGVhZGVyKTsKIAlzdHJidWZfYWRkc3RyKCZzb2IsIGZtdF9uYW1lKGdldGVudigiR0lUX0NPTU1JVFRFUl9OQU1FIiksCiAJCQkJZ2V0ZW52KCJHSVRfQ09NTUlUVEVSX0VNQUlMIikpKTsKIAlzdHJidWZfYWRkY2goJnNvYiwgJ1xuJyk7Ci0JZm9yIChpID0gbXNnYnVmLT5sZW4gLSAxIC0gaWdub3JlX2Zvb3RlcjsgaSA+IDAgJiYgbXNnYnVmLT5idWZbaSAtIDFdICE9ICdcbic7IGktLSkKLQkJOyAvKiBkbyBub3RoaW5nICovCi0JaWYgKHByZWZpeGNtcChtc2didWYtPmJ1ZiArIGksIHNvYi5idWYpKSB7Ci0JCWlmICghaSB8fCAhZW5kc19yZmMyODIyX2Zvb3Rlcihtc2didWYsIGlnbm9yZV9mb290ZXIpKQotCQkJc3RyYnVmX3NwbGljZShtc2didWYsIG1zZ2J1Zi0+bGVuIC0gaWdub3JlX2Zvb3RlciwgMCwgIlxuIiwgMSk7Ci0JCXN0cmJ1Zl9zcGxpY2UobXNnYnVmLCBtc2didWYtPmxlbiAtIGlnbm9yZV9mb290ZXIsIDAsIHNvYi5idWYsIHNvYi5sZW4pOworCisJLyoKKwkgKiBJZiB0aGUgd2hvbGUgbWVzc2FnZSBidWZmZXIgaXMgZXF1YWwgdG8gdGhlIHNvYiwgcHJldGVuZCB0aGF0IHdlCisJICogZm91bmQgYSBjb25mb3JtaW5nIGZvb3RlciB3aXRoIGEgbWF0Y2hpbmcgc29iCisJICovCisJaWYgKG1zZ2J1Zi0+bGVuIC0gaWdub3JlX2Zvb3RlciA9PSBzb2IubGVuICYmCisJICAgICFzdHJuY21wKG1zZ2J1Zi0+YnVmLCBzb2IuYnVmLCBzb2IubGVuKSkKKwkJaGFzX2Zvb3RlciA9IDM7CisJZWxzZQorCQloYXNfZm9vdGVyID0gaGFzX2NvbmZvcm1pbmdfZm9vdGVyKG1zZ2J1ZiwgJnNvYiwgaWdub3JlX2Zvb3Rlcik7CisKKwlpZiAoIWhhc19mb290ZXIpIHsKKwkJY29uc3QgY2hhciAqYXBwZW5kX25ld2xpbmVzID0gTlVMTDsKKwkJc2l6ZV90IGxlbiA9IG1zZ2J1Zi0+bGVuIC0gaWdub3JlX2Zvb3RlcjsKKworCQlpZiAoIWxlbikgeworCQkJLyoKKwkJCSAqIFRoZSBidWZmZXIgaXMgY29tcGxldGVseSBlbXB0eS4gIExlYXZlIGZvb20gZm9yCisJCQkgKiB0aGUgdGl0bGUgYW5kIGJvZHkgdG8gYmUgZmlsbGVkIGluIGJ5IHRoZSB1c2VyLgorCQkJICovCisJCQlhcHBlbmRfbmV3bGluZXMgPSAiXG5cbiI7CisJCX0gZWxzZSBpZiAobXNnYnVmLT5idWZbbGVuIC0gMV0gIT0gJ1xuJykgeworCQkJLyoKKwkJCSAqIEluY29tcGxldGUgbGluZS4gIENvbXBsZXRlIHRoZSBsaW5lIGFuZCBhZGQgYQorCQkJICogYmxhbmsgb25lIHNvIHRoYXQgdGhlcmUgaXMgYW4gZW1wdHkgbGluZSBiZXR3ZWVuCisJCQkgKiB0aGUgbWVzc2FnZSBib2R5IGFuZCB0aGUgc29iLgorCQkJICovCisJCQlhcHBlbmRfbmV3bGluZXMgPSAiXG5cbiI7CisJCX0gZWxzZSBpZiAobGVuID09IDEpIHsKKwkJCS8qCisJCQkgKiBCdWZmZXIgY29udGFpbnMgYSBzaW5nbGUgbmV3bGluZS4gIEFkZCBhbm90aGVyCisJCQkgKiBzbyB0aGF0IHdlIGxlYXZlIHJvb20gZm9yIHRoZSB0aXRsZSBhbmQgYm9keS4KKwkJCSAqLworCQkJYXBwZW5kX25ld2xpbmVzID0gIlxuIjsKKwkJfSBlbHNlIGlmIChtc2didWYtPmJ1ZltsZW4gLSAyXSAhPSAnXG4nKSB7CisJCQkvKgorCQkJICogQnVmZmVyIGVuZHMgd2l0aCBhIHNpbmdsZSBuZXdsaW5lLiAgQWRkIGFub3RoZXIKKwkJCSAqIHNvIHRoYXQgdGhlcmUgaXMgYW4gZW1wdHkgbGluZSBiZXR3ZWVuIHRoZSBtZXNzYWdlCisJCQkgKiBib2R5IGFuZCB0aGUgc29iLgorCQkJICovCisJCQlhcHBlbmRfbmV3bGluZXMgPSAiXG4iOworCQl9IC8qIGVsc2UsIHRoZSBidWZmZXIgYWxyZWFkeSBlbmRzIHdpdGggdHdvIG5ld2xpbmVzLiAqLworCisJCWlmIChhcHBlbmRfbmV3bGluZXMpCisJCQlzdHJidWZfc3BsaWNlKG1zZ2J1ZiwgbXNnYnVmLT5sZW4gLSBpZ25vcmVfZm9vdGVyLCAwLAorCQkJCWFwcGVuZF9uZXdsaW5lcywgc3RybGVuKGFwcGVuZF9uZXdsaW5lcykpOwogCX0KKworCWlmIChoYXNfZm9vdGVyICE9IDMgJiYgKCFub19kdXBfc29iIHx8IGhhc19mb290ZXIgIT0gMikpCisJCXN0cmJ1Zl9zcGxpY2UobXNnYnVmLCBtc2didWYtPmxlbiAtIGlnbm9yZV9mb290ZXIsIDAsCisJCQkJc29iLmJ1Ziwgc29iLmxlbik7CisKIAlzdHJidWZfcmVsZWFzZSgmc29iKTsKIH0KZGlmZiAtLWdpdCBhL3NlcXVlbmNlci5oIGIvc2VxdWVuY2VyLmgKaW5kZXggOWQ1N2Q1Ny4uMWZjMjJkYyAxMDA2NDQKLS0tIGEvc2VxdWVuY2VyLmgKKysrIGIvc2VxdWVuY2VyLmgKQEAgLTYsNiArNiw4IEBACiAjZGVmaW5lIFNFUV9UT0RPX0ZJTEUJInNlcXVlbmNlci90b2RvIgogI2RlZmluZSBTRVFfT1BUU19GSUxFCSJzZXF1ZW5jZXIvb3B0cyIKIAorI2RlZmluZSBBUFBFTkRfU0lHTk9GRl9ERURVUCAoMXUgPDwgMCkKKwogZW51bSByZXBsYXlfYWN0aW9uIHsKIAlSRVBMQVlfUkVWRVJULAogCVJFUExBWV9QSUNLCkBAIC00OCw2ICs1MCw2IEBACiAKIGV4dGVybiBjb25zdCBjaGFyIHNpZ25fb2ZmX2hlYWRlcltdOwogCi12b2lkIGFwcGVuZF9zaWdub2ZmKHN0cnVjdCBzdHJidWYgKm1zZ2J1ZiwgaW50IGlnbm9yZV9mb290ZXIpOwordm9pZCBhcHBlbmRfc2lnbm9mZihzdHJ1Y3Qgc3RyYnVmICptc2didWYsIGludCBpZ25vcmVfZm9vdGVyLCB1bnNpZ25lZCBmbGFnKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zZXR1cC5jIGIvc2V0dXAuYwppbmRleCAxYjEyMDE3Li45NGMxZTYxIDEwMDY0NAotLS0gYS9zZXR1cC5jCisrKyBiL3NldHVwLmMKQEAgLTY2LDcgKzY2LDE0IEBACiAJY29uc3QgY2hhciAqbmFtZTsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAotCW5hbWUgPSBwcmVmaXggPyBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBzdHJsZW4ocHJlZml4KSwgYXJnKSA6IGFyZzsKKwlpZiAoIXByZWZpeGNtcChhcmcsICI6LyIpKSB7CisJCWlmIChhcmdbMl0gPT0gJ1wwJykgLyogIjovIiBpcyByb290IGRpciwgYWx3YXlzIGV4aXN0cyAqLworCQkJcmV0dXJuIDE7CisJCW5hbWUgPSBhcmcgKyAyOworCX0gZWxzZSBpZiAocHJlZml4KQorCQluYW1lID0gcHJlZml4X2ZpbGVuYW1lKHByZWZpeCwgc3RybGVuKHByZWZpeCksIGFyZyk7CisJZWxzZQorCQluYW1lID0gYXJnOwogCWlmICghbHN0YXQobmFtZSwgJnN0KSkKIAkJcmV0dXJuIDE7IC8qIGZpbGUgZXhpc3RzICovCiAJaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTk9URElSKQpAQCAtMjAwLDEwICsyMDcsMTEgQEAKIAkJICAgICAqY29weWZyb20gJiYgKmNvcHlmcm9tICE9ICcpJzsKIAkJICAgICBjb3B5ZnJvbSA9IG5leHRhdCkgewogCQkJc2l6ZV90IGxlbiA9IHN0cmNzcG4oY29weWZyb20sICIsKSIpOwotCQkJaWYgKGNvcHlmcm9tW2xlbl0gPT0gJyknKQotCQkJCW5leHRhdCA9IGNvcHlmcm9tICsgbGVuOwotCQkJZWxzZQorCQkJaWYgKGNvcHlmcm9tW2xlbl0gPT0gJywnKQogCQkJCW5leHRhdCA9IGNvcHlmcm9tICsgbGVuICsgMTsKKwkJCWVsc2UKKwkJCQkvKiBoYW5kbGUgJyknIGFuZCAnXDAnICovCisJCQkJbmV4dGF0ID0gY29weWZyb20gKyBsZW47CiAJCQlpZiAoIWxlbikKIAkJCQljb250aW51ZTsKIAkJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBhdGhzcGVjX21hZ2ljKTsgaSsrKQpAQCAtMjE2LDggKzIyNCw5IEBACiAJCQkJZGllKCJJbnZhbGlkIHBhdGhzcGVjIG1hZ2ljICclLipzJyBpbiAnJXMnIiwKIAkJCQkgICAgKGludCkgbGVuLCBjb3B5ZnJvbSwgZWx0KTsKIAkJfQotCQlpZiAoKmNvcHlmcm9tID09ICcpJykKLQkJCWNvcHlmcm9tKys7CisJCWlmICgqY29weWZyb20gIT0gJyknKQorCQkJZGllKCJNaXNzaW5nICcpJyBhdCB0aGUgZW5kIG9mIHBhdGhzcGVjIG1hZ2ljIGluICclcyciLCBlbHQpOworCQljb3B5ZnJvbSsrOwogCX0gZWxzZSB7CiAJCS8qIHNob3J0aGFuZCAqLwogCQlmb3IgKGNvcHlmcm9tID0gZWx0ICsgMTsKQEAgLTI0Niw2ICsyNTUsMjUgQEAKIAkJcmV0dXJuIHByZWZpeF9wYXRoKHByZWZpeCwgcHJlZml4bGVuLCBjb3B5ZnJvbSk7CiB9CiAKKy8qCisgKiBOLkIuIGdldF9wYXRoc3BlYygpIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlICJzdHJ1Y3QgcGF0aHNwZWMiCisgKiBiYXNlZCBpbnRlcmZhY2UgLSBzZWUgcGF0aHNwZWNfbWFnaWMgYWJvdmUuCisgKgorICogQXJndW1lbnRzOgorICogIC0gcHJlZml4IC0gYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZSB3b3JraW5nIHRyZWUKKyAqICAtIHBhdGhzcGVjIC0gYSBsaXN0IG9mIHBhdGhzIHVuZGVybmVhdGggdGhlIHByZWZpeCBwYXRoCisgKgorICogSXRlcmF0ZXMgb3ZlciBwYXRoc3BlYywgcHJlcGVuZGluZyBlYWNoIHBhdGggd2l0aCBwcmVmaXgsCisgKiBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgbGlzdC4KKyAqCisgKiBJZiBwYXRoc3BlYyBpcyBlbXB0eSwgcmV0dXJuIGEgc2luZ2xldG9uIGxpc3QgY29udGFpbmluZyBwcmVmaXguCisgKgorICogSWYgcGF0aHNwZWMgYW5kIHByZWZpeCBhcmUgYm90aCBlbXB0eSwgcmV0dXJuIGFuIGVtcHR5IGxpc3QuCisgKgorICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBieSBidWlsdC1pbiBjb21tYW5kcyBzdWNoIGFzIGFkZC5jLCBpbiBvcmRlcgorICogdG8gbm9ybWFsaXplIGFyZ3YgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBidWlsdC1pbiBpbnRvIGEgbGlzdCBvZgorICogcGF0aHMgdG8gcHJvY2VzcywgYWxsIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZSB3b3JraW5nIHRyZWUuCisgKi8KIGNvbnN0IGNoYXIgKipnZXRfcGF0aHNwZWMoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICoqcGF0aHNwZWMpCiB7CiAJY29uc3QgY2hhciAqZW50cnkgPSAqcGF0aHNwZWM7CkBAIC00OTcsNiArNTI1LDEyIEBACiAJCQlzZXRfZ2l0X3dvcmtfdHJlZShjb3JlX3dvcmt0cmVlKTsKIAkJfQogCX0KKwllbHNlIGlmICghZ2l0X2Vudl9ib29sKEdJVF9JTVBMSUNJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQsIDEpKSB7CisJCS8qICMxNmQgKi8KKwkJc2V0X2dpdF9kaXIoZ2l0ZGlyZW52KTsKKwkJZnJlZShnaXRmaWxlKTsKKwkJcmV0dXJuIE5VTEw7CisJfQogCWVsc2UgLyogIzIsICMxMCAqLwogCQlzZXRfZ2l0X3dvcmtfdHJlZSgiLiIpOwogCkBAIC01NzUsNiArNjA5LDggQEAKIAlpZiAoY2hlY2tfcmVwb3NpdG9yeV9mb3JtYXRfZ2VudGx5KCIuIiwgbm9uZ2l0X29rKSkKIAkJcmV0dXJuIE5VTEw7CiAKKwlzZXRlbnYoR0lUX0lNUExJQ0lUX1dPUktfVFJFRV9FTlZJUk9OTUVOVCwgIjAiLCAxKTsKKwogCS8qIC0td29yay10cmVlIGlzIHNldCB3aXRob3V0IC0tZ2l0LWRpcjsgdXNlIGRpc2NvdmVyZWQgb25lICovCiAJaWYgKGdldGVudihHSVRfV09SS19UUkVFX0VOVklST05NRU5UKSB8fCBnaXRfd29ya190cmVlX2NmZykgewogCQljb25zdCBjaGFyICpnaXRkaXI7CkBAIC03NjgsOSArODA0LDkgQEAKIAogCXByZWZpeCA9IHNldHVwX2dpdF9kaXJlY3RvcnlfZ2VudGx5XzEobm9uZ2l0X29rKTsKIAlpZiAocHJlZml4KQotCQlzZXRlbnYoIkdJVF9QUkVGSVgiLCBwcmVmaXgsIDEpOworCQlzZXRlbnYoR0lUX1BSRUZJWF9FTlZJUk9OTUVOVCwgcHJlZml4LCAxKTsKIAllbHNlCi0JCXNldGVudigiR0lUX1BSRUZJWCIsICIiLCAxKTsKKwkJc2V0ZW52KEdJVF9QUkVGSVhfRU5WSVJPTk1FTlQsICIiLCAxKTsKIAogCWlmIChzdGFydHVwX2luZm8pIHsKIAkJc3RhcnR1cF9pbmZvLT5oYXZlX3JlcG9zaXRvcnkgPSAhbm9uZ2l0X29rIHx8ICEqbm9uZ2l0X29rOwpkaWZmIC0tZ2l0IGEvc2hhMV9maWxlLmMgYi9zaGExX2ZpbGUuYwppbmRleCA0MGIyMzI5Li4wYWYxOWMwIDEwMDY0NAotLS0gYS9zaGExX2ZpbGUuYworKysgYi9zaGExX2ZpbGUuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgInNoYTEtbG9va3VwLmgiCiAjaW5jbHVkZSAiYnVsay1jaGVja2luLmgiCiAjaW5jbHVkZSAic3RyZWFtaW5nLmgiCisjaW5jbHVkZSAiZGlyLmgiCiAKICNpZm5kZWYgT19OT0FUSU1FCiAjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fUFBDX18pKQpAQCAtMzUsNiArMzYsOSBAQAogCiBjb25zdCB1bnNpZ25lZCBjaGFyIG51bGxfc2hhMVsyMF07CiAKK3N0YXRpYyBjb25zdCBjaGFyICpub19sb2dfcGFja19hY2Nlc3MgPSAibm9fbG9nX3BhY2tfYWNjZXNzIjsKK3N0YXRpYyBjb25zdCBjaGFyICpsb2dfcGFja19hY2Nlc3M7CisKIC8qCiAgKiBUaGlzIGlzIG1lYW50IHRvIGhvbGQgYSAqc21hbGwqIG51bWJlciBvZiBvYmplY3RzIHRoYXQgeW91IHdvdWxkCiAgKiB3YW50IHJlYWRfc2hhMV9maWxlKCkgdG8gYmUgYWJsZSB0byByZXR1cm4sIGJ1dCB5ZXQgeW91IGRvIG5vdCB3YW50CkBAIC0xMjMsOCArMTI3LDEzIEBACiAJCQl9CiAJCX0KIAkJZWxzZSBpZiAobWtkaXIocGF0aCwgMDc3NykpIHsKLQkJCSpwb3MgPSAnLyc7Ci0JCQlyZXR1cm4gLTE7CisJCQlpZiAoZXJybm8gPT0gRUVYSVNUICYmCisJCQkgICAgIXN0YXQocGF0aCwgJnN0KSAmJiBTX0lTRElSKHN0LnN0X21vZGUpKSB7CisJCQkJOyAvKiBzb21lYm9keSBjcmVhdGVkIGl0IHNpbmNlIHdlIGNoZWNrZWQgKi8KKwkJCX0gZWxzZSB7CisJCQkJKnBvcyA9ICcvJzsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CiAJCX0KIAkJZWxzZSBpZiAoYWRqdXN0X3NoYXJlZF9wZXJtKHBhdGgpKSB7CiAJCQkqcG9zID0gJy8nOwpAQCAtMTAwMCw2ICsxMDA5LDYzIEBACiAJcGFja2VkX2dpdCA9IHBhY2s7CiB9CiAKK3ZvaWQgKCpyZXBvcnRfZ2FyYmFnZSkoY29uc3QgY2hhciAqZGVzYywgY29uc3QgY2hhciAqcGF0aCk7CisKK3N0YXRpYyB2b2lkIHJlcG9ydF9oZWxwZXIoY29uc3Qgc3RydWN0IHN0cmluZ19saXN0ICpsaXN0LAorCQkJICBpbnQgc2Vlbl9iaXRzLCBpbnQgZmlyc3QsIGludCBsYXN0KQoreworCWNvbnN0IGNoYXIgKm1zZzsKKwlzd2l0Y2ggKHNlZW5fYml0cykgeworCWNhc2UgMDoKKwkJbXNnID0gIm5vIGNvcnJlc3BvbmRpbmcgLmlkeCBub3IgLnBhY2siOworCQlicmVhazsKKwljYXNlIDE6CisJCW1zZyA9ICJubyBjb3JyZXNwb25kaW5nIC5pZHgiOworCQlicmVhazsKKwljYXNlIDI6CisJCW1zZyA9ICJubyBjb3JyZXNwb25kaW5nIC5wYWNrIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuOworCX0KKwlmb3IgKDsgZmlyc3QgPCBsYXN0OyBmaXJzdCsrKQorCQlyZXBvcnRfZ2FyYmFnZShtc2csIGxpc3QtPml0ZW1zW2ZpcnN0XS5zdHJpbmcpOworfQorCitzdGF0aWMgdm9pZCByZXBvcnRfcGFja19nYXJiYWdlKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCkKK3sKKwlpbnQgaSwgYmFzZWxlbiA9IC0xLCBmaXJzdCA9IDAsIHNlZW5fYml0cyA9IDA7CisKKwlpZiAoIXJlcG9ydF9nYXJiYWdlKQorCQlyZXR1cm47CisKKwlzb3J0X3N0cmluZ19saXN0KGxpc3QpOworCisJZm9yIChpID0gMDsgaSA8IGxpc3QtPm5yOyBpKyspIHsKKwkJY29uc3QgY2hhciAqcGF0aCA9IGxpc3QtPml0ZW1zW2ldLnN0cmluZzsKKwkJaWYgKGJhc2VsZW4gIT0gLTEgJiYKKwkJICAgIHN0cm5jbXAocGF0aCwgbGlzdC0+aXRlbXNbZmlyc3RdLnN0cmluZywgYmFzZWxlbikpIHsKKwkJCXJlcG9ydF9oZWxwZXIobGlzdCwgc2Vlbl9iaXRzLCBmaXJzdCwgaSk7CisJCQliYXNlbGVuID0gLTE7CisJCQlzZWVuX2JpdHMgPSAwOworCQl9CisJCWlmIChiYXNlbGVuID09IC0xKSB7CisJCQljb25zdCBjaGFyICpkb3QgPSBzdHJyY2hyKHBhdGgsICcuJyk7CisJCQlpZiAoIWRvdCkgeworCQkJCXJlcG9ydF9nYXJiYWdlKCJnYXJiYWdlIGZvdW5kIiwgcGF0aCk7CisJCQkJY29udGludWU7CisJCQl9CisJCQliYXNlbGVuID0gZG90IC0gcGF0aCArIDE7CisJCQlmaXJzdCA9IGk7CisJCX0KKwkJaWYgKCFzdHJjbXAocGF0aCArIGJhc2VsZW4sICJwYWNrIikpCisJCQlzZWVuX2JpdHMgfD0gMTsKKwkJZWxzZSBpZiAoIXN0cmNtcChwYXRoICsgYmFzZWxlbiwgImlkeCIpKQorCQkJc2Vlbl9iaXRzIHw9IDI7CisJfQorCXJlcG9ydF9oZWxwZXIobGlzdCwgc2Vlbl9iaXRzLCBmaXJzdCwgbGlzdC0+bnIpOworfQorCiBzdGF0aWMgdm9pZCBwcmVwYXJlX3BhY2tlZF9naXRfb25lKGNoYXIgKm9iamRpciwgaW50IGxvY2FsKQogewogCS8qIEVuc3VyZSB0aGF0IHRoaXMgYnVmZmVyIGlzIGxhcmdlIGVub3VnaCBzbyB0aGF0IHdlIGNhbgpAQCAtMTAwOSw2ICsxMDc1LDcgQEAKIAlpbnQgbGVuOwogCURJUiAqZGlyOwogCXN0cnVjdCBkaXJlbnQgKmRlOworCXN0cnVjdCBzdHJpbmdfbGlzdCBnYXJiYWdlID0gU1RSSU5HX0xJU1RfSU5JVF9EVVA7CiAKIAlzcHJpbnRmKHBhdGgsICIlcy9wYWNrIiwgb2JqZGlyKTsKIAlsZW4gPSBzdHJsZW4ocGF0aCk7CkBAIC0xMDI0LDI5ICsxMDkxLDQ5IEBACiAJCWludCBuYW1lbGVuID0gc3RybGVuKGRlLT5kX25hbWUpOwogCQlzdHJ1Y3QgcGFja2VkX2dpdCAqcDsKIAotCQlpZiAoIWhhc19leHRlbnNpb24oZGUtPmRfbmFtZSwgIi5pZHgiKSkKKwkJaWYgKGxlbiArIG5hbWVsZW4gKyAxID4gc2l6ZW9mKHBhdGgpKSB7CisJCQlpZiAocmVwb3J0X2dhcmJhZ2UpIHsKKwkJCQlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CisJCQkJc3RyYnVmX2FkZGYoJnNiLCAiJS4qcy8lcyIsIGxlbiAtIDEsIHBhdGgsIGRlLT5kX25hbWUpOworCQkJCXJlcG9ydF9nYXJiYWdlKCJwYXRoIHRvbyBsb25nIiwgc2IuYnVmKTsKKwkJCQlzdHJidWZfcmVsZWFzZSgmc2IpOworCQkJfQogCQkJY29udGludWU7Ci0KLQkJaWYgKGxlbiArIG5hbWVsZW4gKyAxID4gc2l6ZW9mKHBhdGgpKQotCQkJY29udGludWU7Ci0KLQkJLyogRG9uJ3QgcmVvcGVuIGEgcGFjayB3ZSBhbHJlYWR5IGhhdmUuICovCi0JCXN0cmNweShwYXRoICsgbGVuLCBkZS0+ZF9uYW1lKTsKLQkJZm9yIChwID0gcGFja2VkX2dpdDsgcDsgcCA9IHAtPm5leHQpIHsKLQkJCWlmICghbWVtY21wKHBhdGgsIHAtPnBhY2tfbmFtZSwgbGVuICsgbmFtZWxlbiAtIDQpKQotCQkJCWJyZWFrOwogCQl9Ci0JCWlmIChwKQorCisJCWlmIChpc19kb3Rfb3JfZG90ZG90KGRlLT5kX25hbWUpKQogCQkJY29udGludWU7Ci0JCS8qIFNlZSBpZiBpdCByZWFsbHkgaXMgYSB2YWxpZCAuaWR4IGZpbGUgd2l0aCBjb3JyZXNwb25kaW5nCi0JCSAqIC5wYWNrIGZpbGUgdGhhdCB3ZSBjYW4gbWFwLgotCQkgKi8KLQkJcCA9IGFkZF9wYWNrZWRfZ2l0KHBhdGgsIGxlbiArIG5hbWVsZW4sIGxvY2FsKTsKLQkJaWYgKCFwKQorCisJCXN0cmNweShwYXRoICsgbGVuLCBkZS0+ZF9uYW1lKTsKKworCQlpZiAoaGFzX2V4dGVuc2lvbihkZS0+ZF9uYW1lLCAiLmlkeCIpKSB7CisJCQkvKiBEb24ndCByZW9wZW4gYSBwYWNrIHdlIGFscmVhZHkgaGF2ZS4gKi8KKwkJCWZvciAocCA9IHBhY2tlZF9naXQ7IHA7IHAgPSBwLT5uZXh0KSB7CisJCQkJaWYgKCFtZW1jbXAocGF0aCwgcC0+cGFja19uYW1lLCBsZW4gKyBuYW1lbGVuIC0gNCkpCisJCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKHAgPT0gTlVMTCAmJgorCQkJICAgIC8qCisJCQkgICAgICogU2VlIGlmIGl0IHJlYWxseSBpcyBhIHZhbGlkIC5pZHggZmlsZSB3aXRoCisJCQkgICAgICogY29ycmVzcG9uZGluZyAucGFjayBmaWxlIHRoYXQgd2UgY2FuIG1hcC4KKwkJCSAgICAgKi8KKwkJCSAgICAocCA9IGFkZF9wYWNrZWRfZ2l0KHBhdGgsIGxlbiArIG5hbWVsZW4sIGxvY2FsKSkgIT0gTlVMTCkKKwkJCQlpbnN0YWxsX3BhY2tlZF9naXQocCk7CisJCX0KKworCQlpZiAoIXJlcG9ydF9nYXJiYWdlKQogCQkJY29udGludWU7Ci0JCWluc3RhbGxfcGFja2VkX2dpdChwKTsKKworCQlpZiAoaGFzX2V4dGVuc2lvbihkZS0+ZF9uYW1lLCAiLmlkeCIpIHx8CisJCSAgICBoYXNfZXh0ZW5zaW9uKGRlLT5kX25hbWUsICIucGFjayIpIHx8CisJCSAgICBoYXNfZXh0ZW5zaW9uKGRlLT5kX25hbWUsICIua2VlcCIpKQorCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZnYXJiYWdlLCBwYXRoKTsKKwkJZWxzZQorCQkJcmVwb3J0X2dhcmJhZ2UoImdhcmJhZ2UgZm91bmQiLCBwYXRoKTsKIAl9CiAJY2xvc2VkaXIoZGlyKTsKKwlyZXBvcnRfcGFja19nYXJiYWdlKCZnYXJiYWdlKTsKKwlzdHJpbmdfbGlzdF9jbGVhcigmZ2FyYmFnZSwgMCk7CiB9CiAKIHN0YXRpYyBpbnQgc29ydF9wYWNrKGNvbnN0IHZvaWQgKmFfLCBjb25zdCB2b2lkICpiXykKQEAgLTExODcsNiArMTI3NCwxMCBAQAogCQljaGFyIGJ1ZlsxMDI0ICogMTZdOwogCQlzc2l6ZV90IHJlYWRsZW4gPSByZWFkX2lzdHJlYW0oc3QsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogCisJCWlmIChyZWFkbGVuIDwgMCkgeworCQkJY2xvc2VfaXN0cmVhbShzdCk7CisJCQlyZXR1cm4gLTE7CisJCX0KIAkJaWYgKCFyZWFkbGVuKQogCQkJYnJlYWs7CiAJCWdpdF9TSEExX1VwZGF0ZSgmYywgYnVmLCByZWFkbGVuKTsKQEAgLTE1NjAsNTAgKzE2NTEsNiBAQAogCXJldHVybiBiYXNlX29mZnNldDsKIH0KIAotLyogZm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgYSBtdXR1YWxseSByZWN1cnNpdmUgZnVuY3Rpb24gKi8KLXN0YXRpYyBpbnQgcGFja2VkX29iamVjdF9pbmZvKHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBvZmZzZXQsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nICpzaXplcCwgaW50ICpydHlwZSk7Ci0KLXN0YXRpYyBpbnQgcGFja2VkX2RlbHRhX2luZm8oc3RydWN0IHBhY2tlZF9naXQgKnAsCi0JCQkgICAgIHN0cnVjdCBwYWNrX3dpbmRvdyAqKndfY3VycywKLQkJCSAgICAgb2ZmX3QgY3VycG9zLAotCQkJICAgICBlbnVtIG9iamVjdF90eXBlIHR5cGUsCi0JCQkgICAgIG9mZl90IG9ial9vZmZzZXQsCi0JCQkgICAgIHVuc2lnbmVkIGxvbmcgKnNpemVwKQotewotCW9mZl90IGJhc2Vfb2Zmc2V0OwotCi0JYmFzZV9vZmZzZXQgPSBnZXRfZGVsdGFfYmFzZShwLCB3X2N1cnMsICZjdXJwb3MsIHR5cGUsIG9ial9vZmZzZXQpOwotCWlmICghYmFzZV9vZmZzZXQpCi0JCXJldHVybiBPQkpfQkFEOwotCXR5cGUgPSBwYWNrZWRfb2JqZWN0X2luZm8ocCwgYmFzZV9vZmZzZXQsIE5VTEwsIE5VTEwpOwotCWlmICh0eXBlIDw9IE9CSl9OT05FKSB7Ci0JCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4OwotCQljb25zdCB1bnNpZ25lZCBjaGFyICpiYXNlX3NoYTE7Ci0JCXJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBiYXNlX29mZnNldCk7Ci0JCWlmICghcmV2aWR4KQotCQkJcmV0dXJuIE9CSl9CQUQ7Ci0JCWJhc2Vfc2hhMSA9IG50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7Ci0JCW1hcmtfYmFkX3BhY2tlZF9vYmplY3QocCwgYmFzZV9zaGExKTsKLQkJdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oYmFzZV9zaGExLCBOVUxMKTsKLQkJaWYgKHR5cGUgPD0gT0JKX05PTkUpCi0JCQlyZXR1cm4gT0JKX0JBRDsKLQl9Ci0KLQkvKiBXZSBjaG9vc2UgdG8gb25seSBnZXQgdGhlIHR5cGUgb2YgdGhlIGJhc2Ugb2JqZWN0IGFuZAotCSAqIGlnbm9yZSBwb3RlbnRpYWxseSBjb3JydXB0IHBhY2sgZmlsZSB0aGF0IGV4cGVjdHMgdGhlIGRlbHRhCi0JICogYmFzZWQgb24gYSBiYXNlIHdpdGggYSB3cm9uZyBzaXplLiAgVGhpcyBzYXZlcyB0b25zIG9mCi0JICogaW5mbGF0ZSgpIGNhbGxzLgotCSAqLwotCWlmIChzaXplcCkgewotCQkqc2l6ZXAgPSBnZXRfc2l6ZV9mcm9tX2RlbHRhKHAsIHdfY3VycywgY3VycG9zKTsKLQkJaWYgKCpzaXplcCA9PSAwKQotCQkJdHlwZSA9IE9CSl9CQUQ7Ci0JfQotCi0JcmV0dXJuIHR5cGU7Ci19Ci0KIGludCB1bnBhY2tfb2JqZWN0X2hlYWRlcihzdHJ1Y3QgcGFja2VkX2dpdCAqcCwKIAkJCSBzdHJ1Y3QgcGFja193aW5kb3cgKip3X2N1cnMsCiAJCQkgb2ZmX3QgKmN1cnBvcywKQEAgLTE2MzAsNiArMTY3NywyNSBAQAogCXJldHVybiB0eXBlOwogfQogCitzdGF0aWMgaW50IHJldHJ5X2JhZF9wYWNrZWRfb2Zmc2V0KHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBvYmpfb2Zmc2V0KQoreworCWludCB0eXBlOworCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aWR4OworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTE7CisJcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIG9ial9vZmZzZXQpOworCWlmICghcmV2aWR4KQorCQlyZXR1cm4gT0JKX0JBRDsKKwlzaGExID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIHNoYTEpOworCXR5cGUgPSBzaGExX29iamVjdF9pbmZvKHNoYTEsIE5VTEwpOworCWlmICh0eXBlIDw9IE9CSl9OT05FKQorCQlyZXR1cm4gT0JKX0JBRDsKKwlyZXR1cm4gdHlwZTsKK30KKworCisjZGVmaW5lIFBPSV9TVEFDS19QUkVBTExPQyA2NAorCiBzdGF0aWMgaW50IHBhY2tlZF9vYmplY3RfaW5mbyhzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2JqX29mZnNldCwKIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemVwLCBpbnQgKnJ0eXBlKQogewpAQCAtMTYzNywzMSArMTcwMyw4OSBAQAogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAlvZmZfdCBjdXJwb3MgPSBvYmpfb2Zmc2V0OwogCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKwlvZmZfdCBzbWFsbF9wb2lfc3RhY2tbUE9JX1NUQUNLX1BSRUFMTE9DXTsKKwlvZmZfdCAqcG9pX3N0YWNrID0gc21hbGxfcG9pX3N0YWNrOworCWludCBwb2lfc3RhY2tfbnIgPSAwLCBwb2lfc3RhY2tfYWxsb2MgPSBQT0lfU1RBQ0tfUFJFQUxMT0M7CiAKIAl0eXBlID0gdW5wYWNrX29iamVjdF9oZWFkZXIocCwgJndfY3VycywgJmN1cnBvcywgJnNpemUpOworCiAJaWYgKHJ0eXBlKQogCQkqcnR5cGUgPSB0eXBlOyAvKiByZXByZXNlbnRhdGlvbiB0eXBlICovCiAKKwlpZiAoc2l6ZXApIHsKKwkJaWYgKHR5cGUgPT0gT0JKX09GU19ERUxUQSB8fCB0eXBlID09IE9CSl9SRUZfREVMVEEpIHsKKwkJCW9mZl90IHRtcF9wb3MgPSBjdXJwb3M7CisJCQlvZmZfdCBiYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsICZ3X2N1cnMsICZ0bXBfcG9zLAorCQkJCQkJCSAgIHR5cGUsIG9ial9vZmZzZXQpOworCQkJaWYgKCFiYXNlX29mZnNldCkgeworCQkJCXR5cGUgPSBPQkpfQkFEOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJKnNpemVwID0gZ2V0X3NpemVfZnJvbV9kZWx0YShwLCAmd19jdXJzLCB0bXBfcG9zKTsKKwkJCWlmICgqc2l6ZXAgPT0gMCkgeworCQkJCXR5cGUgPSBPQkpfQkFEOworCQkJCWdvdG8gb3V0OworCQkJfQorCQl9IGVsc2UgeworCQkJKnNpemVwID0gc2l6ZTsKKwkJfQorCX0KKworCXdoaWxlICh0eXBlID09IE9CSl9PRlNfREVMVEEgfHwgdHlwZSA9PSBPQkpfUkVGX0RFTFRBKSB7CisJCW9mZl90IGJhc2Vfb2Zmc2V0OworCQkvKiBQdXNoIHRoZSBvYmplY3Qgd2UncmUgZ29pbmcgdG8gbGVhdmUgYmVoaW5kICovCisJCWlmIChwb2lfc3RhY2tfbnIgPj0gcG9pX3N0YWNrX2FsbG9jICYmIHBvaV9zdGFjayA9PSBzbWFsbF9wb2lfc3RhY2spIHsKKwkJCXBvaV9zdGFja19hbGxvYyA9IGFsbG9jX25yKHBvaV9zdGFja19ucik7CisJCQlwb2lfc3RhY2sgPSB4bWFsbG9jKHNpemVvZihvZmZfdCkqcG9pX3N0YWNrX2FsbG9jKTsKKwkJCW1lbWNweShwb2lfc3RhY2ssIHNtYWxsX3BvaV9zdGFjaywgc2l6ZW9mKG9mZl90KSpwb2lfc3RhY2tfbnIpOworCQl9IGVsc2UgeworCQkJQUxMT0NfR1JPVyhwb2lfc3RhY2ssIHBvaV9zdGFja19ucisxLCBwb2lfc3RhY2tfYWxsb2MpOworCQl9CisJCXBvaV9zdGFja1twb2lfc3RhY2tfbnIrK10gPSBvYmpfb2Zmc2V0OworCQkvKiBJZiBwYXJzaW5nIHRoZSBiYXNlIG9mZnNldCBmYWlscywganVzdCB1bndpbmQgKi8KKwkJYmFzZV9vZmZzZXQgPSBnZXRfZGVsdGFfYmFzZShwLCAmd19jdXJzLCAmY3VycG9zLCB0eXBlLCBvYmpfb2Zmc2V0KTsKKwkJaWYgKCFiYXNlX29mZnNldCkKKwkJCWdvdG8gdW53aW5kOworCQljdXJwb3MgPSBvYmpfb2Zmc2V0ID0gYmFzZV9vZmZzZXQ7CisJCXR5cGUgPSB1bnBhY2tfb2JqZWN0X2hlYWRlcihwLCAmd19jdXJzLCAmY3VycG9zLCAmc2l6ZSk7CisJCWlmICh0eXBlIDw9IE9CSl9OT05FKSB7CisJCQkvKiBJZiBnZXR0aW5nIHRoZSBiYXNlIGl0c2VsZiBmYWlscywgd2UgZmlyc3QKKwkJCSAqIHJldHJ5IHRoZSBiYXNlLCBvdGhlcndpc2UgdW53aW5kICovCisJCQl0eXBlID0gcmV0cnlfYmFkX3BhY2tlZF9vZmZzZXQocCwgYmFzZV9vZmZzZXQpOworCQkJaWYgKHR5cGUgPiBPQkpfTk9ORSkKKwkJCQlnb3RvIG91dDsKKwkJCWdvdG8gdW53aW5kOworCQl9CisJfQorCiAJc3dpdGNoICh0eXBlKSB7Ci0JY2FzZSBPQkpfT0ZTX0RFTFRBOgotCWNhc2UgT0JKX1JFRl9ERUxUQToKLQkJdHlwZSA9IHBhY2tlZF9kZWx0YV9pbmZvKHAsICZ3X2N1cnMsIGN1cnBvcywKLQkJCQkJIHR5cGUsIG9ial9vZmZzZXQsIHNpemVwKTsKLQkJYnJlYWs7CisJY2FzZSBPQkpfQkFEOgogCWNhc2UgT0JKX0NPTU1JVDoKIAljYXNlIE9CSl9UUkVFOgogCWNhc2UgT0JKX0JMT0I6CiAJY2FzZSBPQkpfVEFHOgotCQlpZiAoc2l6ZXApCi0JCQkqc2l6ZXAgPSBzaXplOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnJvcigidW5rbm93biBvYmplY3QgdHlwZSAlaSBhdCBvZmZzZXQgJSJQUkl1TUFYIiBpbiAlcyIsCiAJCSAgICAgIHR5cGUsICh1aW50bWF4X3Qpb2JqX29mZnNldCwgcC0+cGFja19uYW1lKTsKIAkJdHlwZSA9IE9CSl9CQUQ7CiAJfQorCitvdXQ6CisJaWYgKHBvaV9zdGFjayAhPSBzbWFsbF9wb2lfc3RhY2spCisJCWZyZWUocG9pX3N0YWNrKTsKIAl1bnVzZV9wYWNrKCZ3X2N1cnMpOwogCXJldHVybiB0eXBlOworCit1bndpbmQ6CisJd2hpbGUgKHBvaV9zdGFja19ucikgeworCQlvYmpfb2Zmc2V0ID0gcG9pX3N0YWNrWy0tcG9pX3N0YWNrX25yXTsKKwkJdHlwZSA9IHJldHJ5X2JhZF9wYWNrZWRfb2Zmc2V0KHAsIG9ial9vZmZzZXQpOworCQlpZiAodHlwZSA+IE9CSl9OT05FKQorCQkJZ290byBvdXQ7CisJfQorCXR5cGUgPSBPQkpfQkFEOworCWdvdG8gb3V0OwogfQogCiBzdGF0aWMgdm9pZCAqdW5wYWNrX2NvbXByZXNzZWRfZW50cnkoc3RydWN0IHBhY2tlZF9naXQgKnAsCkBAIC0xNzIzLDMyICsxODQ3LDUxIEBACiAJcmV0dXJuIGhhc2ggJSBNQVhfREVMVEFfQ0FDSEU7CiB9CiAKLXN0YXRpYyBpbnQgaW5fZGVsdGFfYmFzZV9jYWNoZShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3QgYmFzZV9vZmZzZXQpCitzdGF0aWMgc3RydWN0IGRlbHRhX2Jhc2VfY2FjaGVfZW50cnkgKgorZ2V0X2RlbHRhX2Jhc2VfY2FjaGVfZW50cnkoc3RydWN0IHBhY2tlZF9naXQgKnAsIG9mZl90IGJhc2Vfb2Zmc2V0KQogewogCXVuc2lnbmVkIGxvbmcgaGFzaCA9IHBhY2tfZW50cnlfaGFzaChwLCBiYXNlX29mZnNldCk7Ci0Jc3RydWN0IGRlbHRhX2Jhc2VfY2FjaGVfZW50cnkgKmVudCA9IGRlbHRhX2Jhc2VfY2FjaGUgKyBoYXNoOworCXJldHVybiBkZWx0YV9iYXNlX2NhY2hlICsgaGFzaDsKK30KKworc3RhdGljIGludCBlcV9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KHN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICplbnQsCisJCQkJICAgICBzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3QgYmFzZV9vZmZzZXQpCit7CiAJcmV0dXJuIChlbnQtPmRhdGEgJiYgZW50LT5wID09IHAgJiYgZW50LT5iYXNlX29mZnNldCA9PSBiYXNlX29mZnNldCk7CiB9CiAKK3N0YXRpYyBpbnQgaW5fZGVsdGFfYmFzZV9jYWNoZShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3QgYmFzZV9vZmZzZXQpCit7CisJc3RydWN0IGRlbHRhX2Jhc2VfY2FjaGVfZW50cnkgKmVudDsKKwllbnQgPSBnZXRfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShwLCBiYXNlX29mZnNldCk7CisJcmV0dXJuIGVxX2RlbHRhX2Jhc2VfY2FjaGVfZW50cnkoZW50LCBwLCBiYXNlX29mZnNldCk7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyX2RlbHRhX2Jhc2VfY2FjaGVfZW50cnkoc3RydWN0IGRlbHRhX2Jhc2VfY2FjaGVfZW50cnkgKmVudCkKK3sKKwllbnQtPmRhdGEgPSBOVUxMOworCWVudC0+bHJ1Lm5leHQtPnByZXYgPSBlbnQtPmxydS5wcmV2OworCWVudC0+bHJ1LnByZXYtPm5leHQgPSBlbnQtPmxydS5uZXh0OworCWRlbHRhX2Jhc2VfY2FjaGVkIC09IGVudC0+c2l6ZTsKK30KKwogc3RhdGljIHZvaWQgKmNhY2hlX29yX3VucGFja19lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3QgYmFzZV9vZmZzZXQsCiAJdW5zaWduZWQgbG9uZyAqYmFzZV9zaXplLCBlbnVtIG9iamVjdF90eXBlICp0eXBlLCBpbnQga2VlcF9jYWNoZSkKIHsKKwlzdHJ1Y3QgZGVsdGFfYmFzZV9jYWNoZV9lbnRyeSAqZW50OwogCXZvaWQgKnJldDsKLQl1bnNpZ25lZCBsb25nIGhhc2ggPSBwYWNrX2VudHJ5X2hhc2gocCwgYmFzZV9vZmZzZXQpOwotCXN0cnVjdCBkZWx0YV9iYXNlX2NhY2hlX2VudHJ5ICplbnQgPSBkZWx0YV9iYXNlX2NhY2hlICsgaGFzaDsKIAotCXJldCA9IGVudC0+ZGF0YTsKLQlpZiAoIXJldCB8fCBlbnQtPnAgIT0gcCB8fCBlbnQtPmJhc2Vfb2Zmc2V0ICE9IGJhc2Vfb2Zmc2V0KQorCWVudCA9IGdldF9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KHAsIGJhc2Vfb2Zmc2V0KTsKKworCWlmICghZXFfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShlbnQsIHAsIGJhc2Vfb2Zmc2V0KSkKIAkJcmV0dXJuIHVucGFja19lbnRyeShwLCBiYXNlX29mZnNldCwgdHlwZSwgYmFzZV9zaXplKTsKIAotCWlmICgha2VlcF9jYWNoZSkgewotCQllbnQtPmRhdGEgPSBOVUxMOwotCQllbnQtPmxydS5uZXh0LT5wcmV2ID0gZW50LT5scnUucHJldjsKLQkJZW50LT5scnUucHJldi0+bmV4dCA9IGVudC0+bHJ1Lm5leHQ7Ci0JCWRlbHRhX2Jhc2VfY2FjaGVkIC09IGVudC0+c2l6ZTsKLQl9IGVsc2UgeworCXJldCA9IGVudC0+ZGF0YTsKKworCWlmICgha2VlcF9jYWNoZSkKKwkJY2xlYXJfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShlbnQpOworCWVsc2UKIAkJcmV0ID0geG1lbWR1cHooZW50LT5kYXRhLCBlbnQtPnNpemUpOwotCX0KIAkqdHlwZSA9IGVudC0+dHlwZTsKIAkqYmFzZV9zaXplID0gZW50LT5zaXplOwogCXJldHVybiByZXQ7CkBAIC0xODEyLDc4ICsxOTU1LDIzIEBACiBzdGF0aWMgdm9pZCAqcmVhZF9vYmplY3QoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgZW51bSBvYmplY3RfdHlwZSAqdHlwZSwKIAkJCSB1bnNpZ25lZCBsb25nICpzaXplKTsKIAotc3RhdGljIHZvaWQgKnVucGFja19kZWx0YV9lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwKLQkJCQlzdHJ1Y3QgcGFja193aW5kb3cgKip3X2N1cnMsCi0JCQkJb2ZmX3QgY3VycG9zLAotCQkJCXVuc2lnbmVkIGxvbmcgZGVsdGFfc2l6ZSwKLQkJCQlvZmZfdCBvYmpfb2Zmc2V0LAotCQkJCWVudW0gb2JqZWN0X3R5cGUgKnR5cGUsCi0JCQkJdW5zaWduZWQgbG9uZyAqc2l6ZXApCi17Ci0Jdm9pZCAqZGVsdGFfZGF0YSwgKnJlc3VsdCwgKmJhc2U7Ci0JdW5zaWduZWQgbG9uZyBiYXNlX3NpemU7Ci0Jb2ZmX3QgYmFzZV9vZmZzZXQ7Ci0KLQliYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsIHdfY3VycywgJmN1cnBvcywgKnR5cGUsIG9ial9vZmZzZXQpOwotCWlmICghYmFzZV9vZmZzZXQpIHsKLQkJZXJyb3IoImZhaWxlZCB0byB2YWxpZGF0ZSBkZWx0YSBiYXNlIHJlZmVyZW5jZSAiCi0JCSAgICAgICJhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKLQkJICAgICAgKHVpbnRtYXhfdCljdXJwb3MsIHAtPnBhY2tfbmFtZSk7Ci0JCXJldHVybiBOVUxMOwotCX0KLQl1bnVzZV9wYWNrKHdfY3Vycyk7Ci0JYmFzZSA9IGNhY2hlX29yX3VucGFja19lbnRyeShwLCBiYXNlX29mZnNldCwgJmJhc2Vfc2l6ZSwgdHlwZSwgMCk7Ci0JaWYgKCFiYXNlKSB7Ci0JCS8qCi0JCSAqIFdlJ3JlIHByb2JhYmx5IGluIGRlZXAgc2hpdCwgYnV0IGxldCdzIHRyeSB0byBmZXRjaAotCQkgKiB0aGUgcmVxdWlyZWQgYmFzZSBhbnl3YXkgZnJvbSBhbm90aGVyIHBhY2sgb3IgbG9vc2UuCi0JCSAqIFRoaXMgaXMgY29zdGx5IGJ1dCBzaG91bGQgaGFwcGVuIG9ubHkgaW4gdGhlIHByZXNlbmNlCi0JCSAqIG9mIGEgY29ycnVwdGVkIHBhY2ssIGFuZCBpcyBiZXR0ZXIgdGhhbiBmYWlsaW5nIG91dHJpZ2h0LgotCQkgKi8KLQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7Ci0JCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJhc2Vfc2hhMTsKLQkJcmV2aWR4ID0gZmluZF9wYWNrX3JldmluZGV4KHAsIGJhc2Vfb2Zmc2V0KTsKLQkJaWYgKCFyZXZpZHgpCi0JCQlyZXR1cm4gTlVMTDsKLQkJYmFzZV9zaGExID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKLQkJZXJyb3IoImZhaWxlZCB0byByZWFkIGRlbHRhIGJhc2Ugb2JqZWN0ICVzIgotCQkgICAgICAiIGF0IG9mZnNldCAlIlBSSXVNQVgiIGZyb20gJXMiLAotCQkgICAgICBzaGExX3RvX2hleChiYXNlX3NoYTEpLCAodWludG1heF90KWJhc2Vfb2Zmc2V0LAotCQkgICAgICBwLT5wYWNrX25hbWUpOwotCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIGJhc2Vfc2hhMSk7Ci0JCWJhc2UgPSByZWFkX29iamVjdChiYXNlX3NoYTEsIHR5cGUsICZiYXNlX3NpemUpOwotCQlpZiAoIWJhc2UpCi0JCQlyZXR1cm4gTlVMTDsKLQl9Ci0KLQlkZWx0YV9kYXRhID0gdW5wYWNrX2NvbXByZXNzZWRfZW50cnkocCwgd19jdXJzLCBjdXJwb3MsIGRlbHRhX3NpemUpOwotCWlmICghZGVsdGFfZGF0YSkgewotCQllcnJvcigiZmFpbGVkIHRvIHVucGFjayBjb21wcmVzc2VkIGRlbHRhICIKLQkJICAgICAgImF0IG9mZnNldCAlIlBSSXVNQVgiIGZyb20gJXMiLAotCQkgICAgICAodWludG1heF90KWN1cnBvcywgcC0+cGFja19uYW1lKTsKLQkJZnJlZShiYXNlKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJlc3VsdCA9IHBhdGNoX2RlbHRhKGJhc2UsIGJhc2Vfc2l6ZSwKLQkJCSAgICAgZGVsdGFfZGF0YSwgZGVsdGFfc2l6ZSwKLQkJCSAgICAgc2l6ZXApOwotCWlmICghcmVzdWx0KQotCQlkaWUoImZhaWxlZCB0byBhcHBseSBkZWx0YSIpOwotCWZyZWUoZGVsdGFfZGF0YSk7Ci0JYWRkX2RlbHRhX2Jhc2VfY2FjaGUocCwgYmFzZV9vZmZzZXQsIGJhc2UsIGJhc2Vfc2l6ZSwgKnR5cGUpOwotCXJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyB2b2lkIHdyaXRlX3BhY2tfYWNjZXNzX2xvZyhzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2JqX29mZnNldCkKIHsKIAlzdGF0aWMgRklMRSAqbG9nX2ZpbGU7CiAKKwlpZiAoIWxvZ19wYWNrX2FjY2VzcykKKwkJbG9nX3BhY2tfYWNjZXNzID0gZ2V0ZW52KCJHSVRfVFJBQ0VfUEFDS19BQ0NFU1MiKTsKKwlpZiAoIWxvZ19wYWNrX2FjY2VzcykKKwkJbG9nX3BhY2tfYWNjZXNzID0gbm9fbG9nX3BhY2tfYWNjZXNzOworCWlmIChsb2dfcGFja19hY2Nlc3MgPT0gbm9fbG9nX3BhY2tfYWNjZXNzKQorCQlyZXR1cm47CisKIAlpZiAoIWxvZ19maWxlKSB7CiAJCWxvZ19maWxlID0gZm9wZW4obG9nX3BhY2tfYWNjZXNzLCAidyIpOwogCQlpZiAoIWxvZ19maWxlKSB7CiAJCQllcnJvcigiY2Fubm90IG9wZW4gcGFjayBhY2Nlc3MgbG9nICclcycgZm9yIHdyaXRpbmc6ICVzIiwKIAkJCSAgICAgIGxvZ19wYWNrX2FjY2Vzcywgc3RyZXJyb3IoZXJybm8pKTsKLQkJCWxvZ19wYWNrX2FjY2VzcyA9IE5VTEw7CisJCQlsb2dfcGFja19hY2Nlc3MgPSBub19sb2dfcGFja19hY2Nlc3M7CiAJCQlyZXR1cm47CiAJCX0KIAl9CkBAIC0xODk0LDQ4ICsxOTgyLDE4NyBAQAogCiBpbnQgZG9fY2hlY2tfcGFja2VkX29iamVjdF9jcmM7CiAKKyNkZWZpbmUgVU5QQUNLX0VOVFJZX1NUQUNLX1BSRUFMTE9DIDY0CitzdHJ1Y3QgdW5wYWNrX2VudHJ5X3N0YWNrX2VudCB7CisJb2ZmX3Qgb2JqX29mZnNldDsKKwlvZmZfdCBjdXJwb3M7CisJdW5zaWduZWQgbG9uZyBzaXplOworfTsKKwogdm9pZCAqdW5wYWNrX2VudHJ5KHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBvYmpfb2Zmc2V0LAotCQkgICBlbnVtIG9iamVjdF90eXBlICp0eXBlLCB1bnNpZ25lZCBsb25nICpzaXplcCkKKwkJICAgZW51bSBvYmplY3RfdHlwZSAqZmluYWxfdHlwZSwgdW5zaWduZWQgbG9uZyAqZmluYWxfc2l6ZSkKIHsKIAlzdHJ1Y3QgcGFja193aW5kb3cgKndfY3VycyA9IE5VTEw7CiAJb2ZmX3QgY3VycG9zID0gb2JqX29mZnNldDsKLQl2b2lkICpkYXRhOworCXZvaWQgKmRhdGEgPSBOVUxMOworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJc3RydWN0IHVucGFja19lbnRyeV9zdGFja19lbnQgc21hbGxfZGVsdGFfc3RhY2tbVU5QQUNLX0VOVFJZX1NUQUNLX1BSRUFMTE9DXTsKKwlzdHJ1Y3QgdW5wYWNrX2VudHJ5X3N0YWNrX2VudCAqZGVsdGFfc3RhY2sgPSBzbWFsbF9kZWx0YV9zdGFjazsKKwlpbnQgZGVsdGFfc3RhY2tfbnIgPSAwLCBkZWx0YV9zdGFja19hbGxvYyA9IFVOUEFDS19FTlRSWV9TVEFDS19QUkVBTExPQzsKKwlpbnQgYmFzZV9mcm9tX2NhY2hlID0gMDsKIAotCWlmIChsb2dfcGFja19hY2Nlc3MpCisJaWYgKGxvZ19wYWNrX2FjY2VzcyAhPSBub19sb2dfcGFja19hY2Nlc3MpCiAJCXdyaXRlX3BhY2tfYWNjZXNzX2xvZyhwLCBvYmpfb2Zmc2V0KTsKIAotCWlmIChkb19jaGVja19wYWNrZWRfb2JqZWN0X2NyYyAmJiBwLT5pbmRleF92ZXJzaW9uID4gMSkgewotCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBvYmpfb2Zmc2V0KTsKLQkJdW5zaWduZWQgbG9uZyBsZW4gPSByZXZpZHhbMV0ub2Zmc2V0IC0gb2JqX29mZnNldDsKLQkJaWYgKGNoZWNrX3BhY2tfY3JjKHAsICZ3X2N1cnMsIG9ial9vZmZzZXQsIGxlbiwgcmV2aWR4LT5ucikpIHsKLQkJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEgPQotCQkJCW50aF9wYWNrZWRfb2JqZWN0X3NoYTEocCwgcmV2aWR4LT5ucik7Ci0JCQllcnJvcigiYmFkIHBhY2tlZCBvYmplY3QgQ1JDIGZvciAlcyIsCi0JCQkgICAgICBzaGExX3RvX2hleChzaGExKSk7Ci0JCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIHNoYTEpOwotCQkJdW51c2VfcGFjaygmd19jdXJzKTsKLQkJCXJldHVybiBOVUxMOworCS8qIFBIQVNFIDE6IGRyaWxsIGRvd24gdG8gdGhlIGlubmVybW9zdCBiYXNlIG9iamVjdCAqLworCWZvciAoOzspIHsKKwkJb2ZmX3QgYmFzZV9vZmZzZXQ7CisJCWludCBpOworCQlzdHJ1Y3QgZGVsdGFfYmFzZV9jYWNoZV9lbnRyeSAqZW50OworCisJCWlmIChkb19jaGVja19wYWNrZWRfb2JqZWN0X2NyYyAmJiBwLT5pbmRleF92ZXJzaW9uID4gMSkgeworCQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgb2JqX29mZnNldCk7CisJCQl1bnNpZ25lZCBsb25nIGxlbiA9IHJldmlkeFsxXS5vZmZzZXQgLSBvYmpfb2Zmc2V0OworCQkJaWYgKGNoZWNrX3BhY2tfY3JjKHAsICZ3X2N1cnMsIG9ial9vZmZzZXQsIGxlbiwgcmV2aWR4LT5ucikpIHsKKwkJCQljb25zdCB1bnNpZ25lZCBjaGFyICpzaGExID0KKwkJCQkJbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwkJCQllcnJvcigiYmFkIHBhY2tlZCBvYmplY3QgQ1JDIGZvciAlcyIsCisJCQkJICAgICAgc2hhMV90b19oZXgoc2hhMSkpOworCQkJCW1hcmtfYmFkX3BhY2tlZF9vYmplY3QocCwgc2hhMSk7CisJCQkJdW51c2VfcGFjaygmd19jdXJzKTsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KIAkJfQorCisJCWVudCA9IGdldF9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KHAsIGN1cnBvcyk7CisJCWlmIChlcV9kZWx0YV9iYXNlX2NhY2hlX2VudHJ5KGVudCwgcCwgY3VycG9zKSkgeworCQkJdHlwZSA9IGVudC0+dHlwZTsKKwkJCWRhdGEgPSBlbnQtPmRhdGE7CisJCQlzaXplID0gZW50LT5zaXplOworCQkJY2xlYXJfZGVsdGFfYmFzZV9jYWNoZV9lbnRyeShlbnQpOworCQkJYmFzZV9mcm9tX2NhY2hlID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsICZzaXplKTsKKwkJaWYgKHR5cGUgIT0gT0JKX09GU19ERUxUQSAmJiB0eXBlICE9IE9CSl9SRUZfREVMVEEpCisJCQlicmVhazsKKworCQliYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsICZ3X2N1cnMsICZjdXJwb3MsIHR5cGUsIG9ial9vZmZzZXQpOworCQlpZiAoIWJhc2Vfb2Zmc2V0KSB7CisJCQllcnJvcigiZmFpbGVkIHRvIHZhbGlkYXRlIGRlbHRhIGJhc2UgcmVmZXJlbmNlICIKKwkJCSAgICAgICJhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKKwkJCSAgICAgICh1aW50bWF4X3QpY3VycG9zLCBwLT5wYWNrX25hbWUpOworCQkJLyogYmFpbCB0byBwaGFzZSAyLCBpbiBob3BlcyBvZiByZWNvdmVyeSAqLworCQkJZGF0YSA9IE5VTEw7CisJCQlicmVhazsKKwkJfQorCisJCS8qIHB1c2ggb2JqZWN0LCBwcm9jZWVkIHRvIGJhc2UgKi8KKwkJaWYgKGRlbHRhX3N0YWNrX25yID49IGRlbHRhX3N0YWNrX2FsbG9jCisJCSAgICAmJiBkZWx0YV9zdGFjayA9PSBzbWFsbF9kZWx0YV9zdGFjaykgeworCQkJZGVsdGFfc3RhY2tfYWxsb2MgPSBhbGxvY19ucihkZWx0YV9zdGFja19ucik7CisJCQlkZWx0YV9zdGFjayA9IHhtYWxsb2Moc2l6ZW9mKCpkZWx0YV9zdGFjaykqZGVsdGFfc3RhY2tfYWxsb2MpOworCQkJbWVtY3B5KGRlbHRhX3N0YWNrLCBzbWFsbF9kZWx0YV9zdGFjaywKKwkJCSAgICAgICBzaXplb2YoKmRlbHRhX3N0YWNrKSpkZWx0YV9zdGFja19ucik7CisJCX0gZWxzZSB7CisJCQlBTExPQ19HUk9XKGRlbHRhX3N0YWNrLCBkZWx0YV9zdGFja19ucisxLCBkZWx0YV9zdGFja19hbGxvYyk7CisJCX0KKwkJaSA9IGRlbHRhX3N0YWNrX25yKys7CisJCWRlbHRhX3N0YWNrW2ldLm9ial9vZmZzZXQgPSBvYmpfb2Zmc2V0OworCQlkZWx0YV9zdGFja1tpXS5jdXJwb3MgPSBjdXJwb3M7CisJCWRlbHRhX3N0YWNrW2ldLnNpemUgPSBzaXplOworCisJCWN1cnBvcyA9IG9ial9vZmZzZXQgPSBiYXNlX29mZnNldDsKIAl9CiAKLQkqdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsIHNpemVwKTsKLQlzd2l0Y2ggKCp0eXBlKSB7CisJLyogUEhBU0UgMjogaGFuZGxlIHRoZSBiYXNlICovCisJc3dpdGNoICh0eXBlKSB7CiAJY2FzZSBPQkpfT0ZTX0RFTFRBOgogCWNhc2UgT0JKX1JFRl9ERUxUQToKLQkJZGF0YSA9IHVucGFja19kZWx0YV9lbnRyeShwLCAmd19jdXJzLCBjdXJwb3MsICpzaXplcCwKLQkJCQkJICBvYmpfb2Zmc2V0LCB0eXBlLCBzaXplcCk7CisJCWlmIChkYXRhKQorCQkJZGllKCJCVUcgaW4gdW5wYWNrX2VudHJ5OiBsZWZ0IGxvb3AgYXQgYSB2YWxpZCBkZWx0YSIpOwogCQlicmVhazsKIAljYXNlIE9CSl9DT01NSVQ6CiAJY2FzZSBPQkpfVFJFRToKIAljYXNlIE9CSl9CTE9COgogCWNhc2UgT0JKX1RBRzoKLQkJZGF0YSA9IHVucGFja19jb21wcmVzc2VkX2VudHJ5KHAsICZ3X2N1cnMsIGN1cnBvcywgKnNpemVwKTsKKwkJaWYgKCFiYXNlX2Zyb21fY2FjaGUpCisJCQlkYXRhID0gdW5wYWNrX2NvbXByZXNzZWRfZW50cnkocCwgJndfY3VycywgY3VycG9zLCBzaXplKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZGF0YSA9IE5VTEw7CiAJCWVycm9yKCJ1bmtub3duIG9iamVjdCB0eXBlICVpIGF0IG9mZnNldCAlIlBSSXVNQVgiIGluICVzIiwKLQkJICAgICAgKnR5cGUsICh1aW50bWF4X3Qpb2JqX29mZnNldCwgcC0+cGFja19uYW1lKTsKKwkJICAgICAgdHlwZSwgKHVpbnRtYXhfdClvYmpfb2Zmc2V0LCBwLT5wYWNrX25hbWUpOwogCX0KKworCS8qIFBIQVNFIDM6IGFwcGx5IGRlbHRhcyBpbiBvcmRlciAqLworCisJLyogaW52YXJpYW50czoKKwkgKiAgICdkYXRhJyBob2xkcyB0aGUgYmFzZSBkYXRhLCBvciBOVUxMIGlmIHRoZXJlIHdhcyBjb3JydXB0aW9uCisJICovCisJd2hpbGUgKGRlbHRhX3N0YWNrX25yKSB7CisJCXZvaWQgKmRlbHRhX2RhdGE7CisJCXZvaWQgKmJhc2UgPSBkYXRhOworCQl1bnNpZ25lZCBsb25nIGRlbHRhX3NpemUsIGJhc2Vfc2l6ZSA9IHNpemU7CisJCWludCBpOworCisJCWRhdGEgPSBOVUxMOworCisJCWlmIChiYXNlKQorCQkJYWRkX2RlbHRhX2Jhc2VfY2FjaGUocCwgb2JqX29mZnNldCwgYmFzZSwgYmFzZV9zaXplLCB0eXBlKTsKKworCQlpZiAoIWJhc2UpIHsKKwkJCS8qCisJCQkgKiBXZSdyZSBwcm9iYWJseSBpbiBkZWVwIHNoaXQsIGJ1dCBsZXQncyB0cnkgdG8gZmV0Y2gKKwkJCSAqIHRoZSByZXF1aXJlZCBiYXNlIGFueXdheSBmcm9tIGFub3RoZXIgcGFjayBvciBsb29zZS4KKwkJCSAqIFRoaXMgaXMgY29zdGx5IGJ1dCBzaG91bGQgaGFwcGVuIG9ubHkgaW4gdGhlIHByZXNlbmNlCisJCQkgKiBvZiBhIGNvcnJ1cHRlZCBwYWNrLCBhbmQgaXMgYmV0dGVyIHRoYW4gZmFpbGluZyBvdXRyaWdodC4KKwkJCSAqLworCQkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpyZXZpZHg7CisJCQljb25zdCB1bnNpZ25lZCBjaGFyICpiYXNlX3NoYTE7CisJCQlyZXZpZHggPSBmaW5kX3BhY2tfcmV2aW5kZXgocCwgb2JqX29mZnNldCk7CisJCQlpZiAocmV2aWR4KSB7CisJCQkJYmFzZV9zaGExID0gbnRoX3BhY2tlZF9vYmplY3Rfc2hhMShwLCByZXZpZHgtPm5yKTsKKwkJCQllcnJvcigiZmFpbGVkIHRvIHJlYWQgZGVsdGEgYmFzZSBvYmplY3QgJXMiCisJCQkJICAgICAgIiBhdCBvZmZzZXQgJSJQUkl1TUFYIiBmcm9tICVzIiwKKwkJCQkgICAgICBzaGExX3RvX2hleChiYXNlX3NoYTEpLCAodWludG1heF90KW9ial9vZmZzZXQsCisJCQkJICAgICAgcC0+cGFja19uYW1lKTsKKwkJCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KHAsIGJhc2Vfc2hhMSk7CisJCQkJYmFzZSA9IHJlYWRfb2JqZWN0KGJhc2Vfc2hhMSwgJnR5cGUsICZiYXNlX3NpemUpOworCQkJfQorCQl9CisKKwkJaSA9IC0tZGVsdGFfc3RhY2tfbnI7CisJCW9ial9vZmZzZXQgPSBkZWx0YV9zdGFja1tpXS5vYmpfb2Zmc2V0OworCQljdXJwb3MgPSBkZWx0YV9zdGFja1tpXS5jdXJwb3M7CisJCWRlbHRhX3NpemUgPSBkZWx0YV9zdGFja1tpXS5zaXplOworCisJCWlmICghYmFzZSkKKwkJCWNvbnRpbnVlOworCisJCWRlbHRhX2RhdGEgPSB1bnBhY2tfY29tcHJlc3NlZF9lbnRyeShwLCAmd19jdXJzLCBjdXJwb3MsIGRlbHRhX3NpemUpOworCisJCWlmICghZGVsdGFfZGF0YSkgeworCQkJZXJyb3IoImZhaWxlZCB0byB1bnBhY2sgY29tcHJlc3NlZCBkZWx0YSAiCisJCQkgICAgICAiYXQgb2Zmc2V0ICUiUFJJdU1BWCIgZnJvbSAlcyIsCisJCQkgICAgICAodWludG1heF90KWN1cnBvcywgcC0+cGFja19uYW1lKTsKKwkJCWRhdGEgPSBOVUxMOworCQkJY29udGludWU7CisJCX0KKworCQlkYXRhID0gcGF0Y2hfZGVsdGEoYmFzZSwgYmFzZV9zaXplLAorCQkJCSAgIGRlbHRhX2RhdGEsIGRlbHRhX3NpemUsCisJCQkJICAgJnNpemUpOworCisJCS8qCisJCSAqIFdlIGNvdWxkIG5vdCBhcHBseSB0aGUgZGVsdGE7IHdhcm4gdGhlIHVzZXIsIGJ1dCBrZWVwIGdvaW5nLgorCQkgKiBPdXIgZmFpbHVyZSB3aWxsIGJlIG5vdGljZWQgZWl0aGVyIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZgorCQkgKiB0aGUgbG9vcCwgb3IgaWYgdGhpcyBpcyB0aGUgZmluYWwgZGVsdGEsIGluIHRoZSBjYWxsZXIgd2hlbgorCQkgKiB3ZSByZXR1cm4gTlVMTC4gVGhvc2UgY29kZSBwYXRocyB3aWxsIHRha2UgY2FyZSBvZiBtYWtpbmcKKwkJICogYSBtb3JlIGV4cGxpY2l0IHdhcm5pbmcgYW5kIHJldHJ5aW5nIHdpdGggYW5vdGhlciBjb3B5IG9mCisJCSAqIHRoZSBvYmplY3QuCisJCSAqLworCQlpZiAoIWRhdGEpCisJCQllcnJvcigiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIik7CisKKwkJZnJlZShkZWx0YV9kYXRhKTsKKwl9CisKKwkqZmluYWxfdHlwZSA9IHR5cGU7CisJKmZpbmFsX3NpemUgPSBzaXplOworCiAJdW51c2VfcGFjaygmd19jdXJzKTsKIAlyZXR1cm4gZGF0YTsKIH0KQEAgLTIxNDAsNyArMjM2Nyw3IEBACiAKIAltYXAgPSBtYXBfc2hhMV9maWxlKHNoYTEsICZtYXBzaXplKTsKIAlpZiAoIW1hcCkKLQkJcmV0dXJuIGVycm9yKCJ1bmFibGUgdG8gZmluZCAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJcmV0dXJuIC0xOwogCWlmICh1bnBhY2tfc2hhMV9oZWFkZXIoJnN0cmVhbSwgbWFwLCBtYXBzaXplLCBoZHIsIHNpemVvZihoZHIpKSA8IDApCiAJCXN0YXR1cyA9IGVycm9yKCJ1bmFibGUgdG8gdW5wYWNrICVzIGhlYWRlciIsCiAJCQkgICAgICAgc2hhMV90b19oZXgoc2hhMSkpOwpkaWZmIC0tZ2l0IGEvc2hhMV9uYW1lLmMgYi9zaGExX25hbWUuYwppbmRleCBjNTA2MzBhLi45MDQxOWVmIDEwMDY0NAotLS0gYS9zaGExX25hbWUuYworKysgYi9zaGExX25hbWUuYwpAQCAtNDMxLDIyICs0MzEsNDkgQEAKIH0KIAogc3RhdGljIGludCBnZXRfc2hhMV8xKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkIGxvb2t1cF9mbGFncyk7CitzdGF0aWMgaW50IGludGVycHJldF9udGhfcHJpb3JfY2hlY2tvdXQoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0cmJ1ZiAqYnVmKTsKIAogc3RhdGljIGludCBnZXRfc2hhMV9iYXNpYyhjb25zdCBjaGFyICpzdHIsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJc3RhdGljIGNvbnN0IGNoYXIgKndhcm5fbXNnID0gInJlZm5hbWUgJyUuKnMnIGlzIGFtYmlndW91cy4iOworCXN0YXRpYyBjb25zdCBjaGFyICpvYmplY3RfbmFtZV9tc2cgPSBOXygKKwkiR2l0IG5vcm1hbGx5IG5ldmVyIGNyZWF0ZXMgYSByZWYgdGhhdCBlbmRzIHdpdGggNDAgaGV4IGNoYXJhY3RlcnNcbiIKKwkiYmVjYXVzZSBpdCB3aWxsIGJlIGlnbm9yZWQgd2hlbiB5b3UganVzdCBzcGVjaWZ5IDQwLWhleC4gVGhlc2UgcmVmc1xuIgorCSJtYXkgYmUgY3JlYXRlZCBieSBtaXN0YWtlLiBGb3IgZXhhbXBsZSxcbiIKKwkiXG4iCisJIiAgZ2l0IGNoZWNrb3V0IC1iICRiciAkKGdpdCByZXYtcGFyc2UgLi4uKVxuIgorCSJcbiIKKwkid2hlcmUgXCIkYnJcIiBpcyBzb21laG93IGVtcHR5IGFuZCBhIDQwLWhleCByZWYgaXMgY3JlYXRlZC4gUGxlYXNlXG4iCisJImV4YW1pbmUgdGhlc2UgcmVmcyBhbmQgbWF5YmUgZGVsZXRlIHRoZW0uIFR1cm4gdGhpcyBtZXNzYWdlIG9mZiBieVxuIgorCSJydW5uaW5nIFwiZ2l0IGNvbmZpZyBhZHZpY2Uub2JqZWN0X25hbWVfd2FybmluZyBmYWxzZVwiIik7CisJdW5zaWduZWQgY2hhciB0bXBfc2hhMVsyMF07CiAJY2hhciAqcmVhbF9yZWYgPSBOVUxMOwogCWludCByZWZzX2ZvdW5kID0gMDsKLQlpbnQgYXQsIHJlZmxvZ19sZW47CisJaW50IGF0LCByZWZsb2dfbGVuLCBudGhfcHJpb3IgPSAwOwogCi0JaWYgKGxlbiA9PSA0MCAmJiAhZ2V0X3NoYTFfaGV4KHN0ciwgc2hhMSkpCisJaWYgKGxlbiA9PSA0MCAmJiAhZ2V0X3NoYTFfaGV4KHN0ciwgc2hhMSkpIHsKKwkJcmVmc19mb3VuZCA9IGR3aW1fcmVmKHN0ciwgbGVuLCB0bXBfc2hhMSwgJnJlYWxfcmVmKTsKKwkJaWYgKHJlZnNfZm91bmQgPiAwICYmIHdhcm5fYW1iaWd1b3VzX3JlZnMpIHsKKwkJCXdhcm5pbmcod2Fybl9tc2csIGxlbiwgc3RyKTsKKwkJCWlmIChhZHZpY2Vfb2JqZWN0X25hbWVfd2FybmluZykKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBfKG9iamVjdF9uYW1lX21zZykpOworCQl9CisJCWZyZWUocmVhbF9yZWYpOwogCQlyZXR1cm4gMDsKKwl9CiAKIAkvKiBiYXNpY0B7dGltZSBvciBudW1iZXIgb3IgLW51bWJlcn0gZm9ybWF0IHRvIHF1ZXJ5IHJlZi1sb2cgKi8KIAlyZWZsb2dfbGVuID0gYXQgPSAwOwogCWlmIChsZW4gJiYgc3RyW2xlbi0xXSA9PSAnfScpIHsKLQkJZm9yIChhdCA9IGxlbi0yOyBhdCA+PSAwOyBhdC0tKSB7CisJCWZvciAoYXQgPSBsZW4tNDsgYXQgPj0gMDsgYXQtLSkgewogCQkJaWYgKHN0clthdF0gPT0gJ0AnICYmIHN0clthdCsxXSA9PSAneycpIHsKKwkJCQlpZiAoc3RyW2F0KzJdID09ICctJykgeworCQkJCQlpZiAoYXQgIT0gMCkKKwkJCQkJCS8qIEB7LU59IG5vdCBhdCBzdGFydCAqLworCQkJCQkJcmV0dXJuIC0xOworCQkJCQludGhfcHJpb3IgPSAxOworCQkJCQljb250aW51ZTsKKwkJCQl9CiAJCQkJaWYgKCF1cHN0cmVhbV9tYXJrKHN0ciArIGF0LCBsZW4gLSBhdCkpIHsKIAkJCQkJcmVmbG9nX2xlbiA9IChsZW4tMSkgLSAoYXQrMik7CiAJCQkJCWxlbiA9IGF0OwpAQCAtNDYwLDIwICs0ODcsMjIgQEAKIAlpZiAobGVuICYmIGFtYmlndW91c19wYXRoKHN0ciwgbGVuKSkKIAkJcmV0dXJuIC0xOwogCi0JaWYgKCFsZW4gJiYgcmVmbG9nX2xlbikgeworCWlmIChudGhfcHJpb3IpIHsKIAkJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQkJaW50IHJldDsKLQkJLyogdHJ5IHRoZSBAey1OfSBzeW50YXggZm9yIG4tdGggY2hlY2tvdXQgKi8KLQkJcmV0ID0gaW50ZXJwcmV0X2JyYW5jaF9uYW1lKHN0cithdCwgJmJ1Zik7Ci0JCWlmIChyZXQgPiAwKSB7Ci0JCQkvKiBzdWJzdGl0dXRlIHRoaXMgYnJhbmNoIG5hbWUgYW5kIHJlc3RhcnQgKi8KLQkJCXJldHVybiBnZXRfc2hhMV8xKGJ1Zi5idWYsIGJ1Zi5sZW4sIHNoYTEsIDApOwotCQl9IGVsc2UgaWYgKHJldCA9PSAwKSB7Ci0JCQlyZXR1cm4gLTE7CisJCWludCBkZXRhY2hlZDsKKworCQlpZiAoaW50ZXJwcmV0X250aF9wcmlvcl9jaGVja291dChzdHIsICZidWYpID4gMCkgeworCQkJZGV0YWNoZWQgPSAoYnVmLmxlbiA9PSA0MCAmJiAhZ2V0X3NoYTFfaGV4KGJ1Zi5idWYsIHNoYTEpKTsKKwkJCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCQkJaWYgKGRldGFjaGVkKQorCQkJCXJldHVybiAwOwogCQl9CisJfQorCisJaWYgKCFsZW4gJiYgcmVmbG9nX2xlbikKIAkJLyogYWxsb3cgIkB7Li4ufSIgdG8gbWVhbiB0aGUgY3VycmVudCBicmFuY2ggcmVmbG9nICovCiAJCXJlZnNfZm91bmQgPSBkd2ltX3JlZigiSEVBRCIsIDQsIHNoYTEsICZyZWFsX3JlZik7Ci0JfSBlbHNlIGlmIChyZWZsb2dfbGVuKQorCWVsc2UgaWYgKHJlZmxvZ19sZW4pCiAJCXJlZnNfZm91bmQgPSBkd2ltX2xvZyhzdHIsIGxlbiwgc2hhMSwgJnJlYWxfcmVmKTsKIAllbHNlCiAJCXJlZnNfZm91bmQgPSBkd2ltX3JlZihzdHIsIGxlbiwgc2hhMSwgJnJlYWxfcmVmKTsKQEAgLTQ4MSw3ICs1MTAsOSBAQAogCWlmICghcmVmc19mb3VuZCkKIAkJcmV0dXJuIC0xOwogCi0JaWYgKHdhcm5fYW1iaWd1b3VzX3JlZnMgJiYgcmVmc19mb3VuZCA+IDEpCisJaWYgKHdhcm5fYW1iaWd1b3VzX3JlZnMgJiYKKwkgICAgKHJlZnNfZm91bmQgPiAxIHx8CisJICAgICAhZ2V0X3Nob3J0X3NoYTEoc3RyLCBsZW4sIHRtcF9zaGExLCBHRVRfU0hBMV9RVUlFVExZKSkpCiAJCXdhcm5pbmcod2Fybl9tc2csIGxlbiwgc3RyKTsKIAogCWlmIChyZWZsb2dfbGVuKSB7CkBAIC00OTAsMTAgKzUyMSw2IEBACiAJCXVuc2lnbmVkIGxvbmcgY29fdGltZTsKIAkJaW50IGNvX3R6LCBjb19jbnQ7CiAKLQkJLyogYSBAey1OfSBwbGFjZWQgYW55d2hlcmUgZXhjZXB0IHRoZSBzdGFydCBpcyBhbiBlcnJvciAqLwotCQlpZiAoc3RyW2F0KzJdID09ICctJykKLQkJCXJldHVybiAtMTsKLQogCQkvKiBJcyBpdCBhc2tpbmcgZm9yIE4tdGggZW50cnksIG9yIGFwcHJveGlkYXRlPyAqLwogCQlmb3IgKGkgPSBudGggPSAwOyAwIDw9IG50aCAmJiBpIDwgcmVmbG9nX2xlbjsgaSsrKSB7CiAJCQljaGFyIGNoID0gc3RyW2F0KzIraV07CkBAIC01MTcsMTIgKzU0NCwyMSBAQAogCQl9CiAJCWlmIChyZWFkX3JlZl9hdChyZWFsX3JlZiwgYXRfdGltZSwgbnRoLCBzaGExLCBOVUxMLAogCQkJCSZjb190aW1lLCAmY29fdHosICZjb19jbnQpKSB7CisJCQlpZiAoIWxlbikgeworCQkJCWlmICghcHJlZml4Y21wKHJlYWxfcmVmLCAicmVmcy9oZWFkcy8iKSkgeworCQkJCQlzdHIgPSByZWFsX3JlZiArIDExOworCQkJCQlsZW4gPSBzdHJsZW4ocmVhbF9yZWYgKyAxMSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJLyogZGV0YWNoZWQgSEVBRCAqLworCQkJCQlzdHIgPSAiSEVBRCI7CisJCQkJCWxlbiA9IDQ7CisJCQkJfQorCQkJfQogCQkJaWYgKGF0X3RpbWUpCiAJCQkJd2FybmluZygiTG9nIGZvciAnJS4qcycgb25seSBnb2VzICIKIAkJCQkJImJhY2sgdG8gJXMuIiwgbGVuLCBzdHIsCiAJCQkJCXNob3dfZGF0ZShjb190aW1lLCBjb190eiwgREFURV9SRkMyODIyKSk7CiAJCQllbHNlIHsKLQkJCQlmcmVlKHJlYWxfcmVmKTsKIAkJCQlkaWUoIkxvZyBmb3IgJyUuKnMnIG9ubHkgaGFzICVkIGVudHJpZXMuIiwKIAkJCQkgICAgbGVuLCBzdHIsIGNvX2NudCk7CiAJCQl9CkBAIC01OTQsNyArNjMwLDcgQEAKIAl3aGlsZSAoMSkgewogCQlpZiAoIW8gfHwgKCFvLT5wYXJzZWQgJiYgIXBhcnNlX29iamVjdChvLT5zaGExKSkpCiAJCQlyZXR1cm4gTlVMTDsKLQkJaWYgKG8tPnR5cGUgPT0gZXhwZWN0ZWRfdHlwZSkKKwkJaWYgKGV4cGVjdGVkX3R5cGUgPT0gT0JKX0FOWSB8fCBvLT50eXBlID09IGV4cGVjdGVkX3R5cGUpCiAJCQlyZXR1cm4gbzsKIAkJaWYgKG8tPnR5cGUgPT0gT0JKX1RBRykKIAkJCW8gPSAoKHN0cnVjdCB0YWcqKSBvKS0+dGFnZ2VkOwpAQCAtNjQ1LDYgKzY4MSw4IEBACiAJCWV4cGVjdGVkX3R5cGUgPSBPQkpfVFJFRTsKIAllbHNlIGlmICghc3RybmNtcChibG9iX3R5cGUsIHNwLCA0KSAmJiBzcFs0XSA9PSAnfScpCiAJCWV4cGVjdGVkX3R5cGUgPSBPQkpfQkxPQjsKKwllbHNlIGlmICghcHJlZml4Y21wKHNwLCAib2JqZWN0fSIpKQorCQlleHBlY3RlZF90eXBlID0gT0JKX0FOWTsKIAllbHNlIGlmIChzcFswXSA9PSAnfScpCiAJCWV4cGVjdGVkX3R5cGUgPSBPQkpfTk9ORTsKIAllbHNlIGlmIChzcFswXSA9PSAnLycpCkBAIC02NTQsNiArNjkyLDggQEAKIAogCWlmIChleHBlY3RlZF90eXBlID09IE9CSl9DT01NSVQpCiAJCWxvb2t1cF9mbGFncyA9IEdFVF9TSEExX0NPTU1JVFRJU0g7CisJZWxzZSBpZiAoZXhwZWN0ZWRfdHlwZSA9PSBPQkpfVFJFRSkKKwkJbG9va3VwX2ZsYWdzID0gR0VUX1NIQTFfVFJFRUlTSDsKIAogCWlmIChnZXRfc2hhMV8xKG5hbWUsIHNwIC0gbmFtZSAtIDIsIG91dGVyLCBsb29rdXBfZmxhZ3MpKQogCQlyZXR1cm4gLTE7CkBAIC04NTYsOCArODk2LDggQEAKIH0KIAogc3RydWN0IGdyYWJfbnRoX2JyYW5jaF9zd2l0Y2hfY2JkYXRhIHsKLQlsb25nIGNudCwgYWxsb2M7Ci0Jc3RydWN0IHN0cmJ1ZiAqYnVmOworCWludCByZW1haW5pbmc7CisJc3RydWN0IHN0cmJ1ZiBidWY7CiB9OwogCiBzdGF0aWMgaW50IGdyYWJfbnRoX2JyYW5jaF9zd2l0Y2godW5zaWduZWQgY2hhciAqb3NoYTEsIHVuc2lnbmVkIGNoYXIgKm5zaGExLApAQCAtODY3LDcgKzkwNyw2IEBACiAJc3RydWN0IGdyYWJfbnRoX2JyYW5jaF9zd2l0Y2hfY2JkYXRhICpjYiA9IGNiX2RhdGE7CiAJY29uc3QgY2hhciAqbWF0Y2ggPSBOVUxMLCAqdGFyZ2V0ID0gTlVMTDsKIAlzaXplX3QgbGVuOwotCWludCBudGg7CiAKIAlpZiAoIXByZWZpeGNtcChtZXNzYWdlLCAiY2hlY2tvdXQ6IG1vdmluZyBmcm9tICIpKSB7CiAJCW1hdGNoID0gbWVzc2FnZSArIHN0cmxlbigiY2hlY2tvdXQ6IG1vdmluZyBmcm9tICIpOwpAQCAtODc2LDExICs5MTUsMTIgQEAKIAogCWlmICghbWF0Y2ggfHwgIXRhcmdldCkKIAkJcmV0dXJuIDA7Ci0KLQlsZW4gPSB0YXJnZXQgLSBtYXRjaDsKLQludGggPSBjYi0+Y250KysgJSBjYi0+YWxsb2M7Ci0Jc3RyYnVmX3Jlc2V0KCZjYi0+YnVmW250aF0pOwotCXN0cmJ1Zl9hZGQoJmNiLT5idWZbbnRoXSwgbWF0Y2gsIGxlbik7CisJaWYgKC0tKGNiLT5yZW1haW5pbmcpID09IDApIHsKKwkJbGVuID0gdGFyZ2V0IC0gbWF0Y2g7CisJCXN0cmJ1Zl9yZXNldCgmY2ItPmJ1Zik7CisJCXN0cmJ1Zl9hZGQoJmNiLT5idWYsIG1hdGNoLCBsZW4pOworCQlyZXR1cm4gMTsgLyogd2UgYXJlIGRvbmUgKi8KKwl9CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTg5MSw3ICs5MzEsNyBAQAogc3RhdGljIGludCBpbnRlcnByZXRfbnRoX3ByaW9yX2NoZWNrb3V0KGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzdHJidWYgKmJ1ZikKIHsKIAlsb25nIG50aDsKLQlpbnQgaSwgcmV0dmFsOworCWludCByZXR2YWw7CiAJc3RydWN0IGdyYWJfbnRoX2JyYW5jaF9zd2l0Y2hfY2JkYXRhIGNiOwogCWNvbnN0IGNoYXIgKmJyYWNlOwogCWNoYXIgKm51bV9lbmQ7CkBAIC05MDEsMzQgKzk0MSwyMiBAQAogCWJyYWNlID0gc3RyY2hyKG5hbWUsICd9Jyk7CiAJaWYgKCFicmFjZSkKIAkJcmV0dXJuIC0xOwotCW50aCA9IHN0cnRvbChuYW1lKzMsICZudW1fZW5kLCAxMCk7CisJbnRoID0gc3RydG9sKG5hbWUgKyAzLCAmbnVtX2VuZCwgMTApOwogCWlmIChudW1fZW5kICE9IGJyYWNlKQogCQlyZXR1cm4gLTE7CiAJaWYgKG50aCA8PSAwKQogCQlyZXR1cm4gLTE7Ci0JY2IuYWxsb2MgPSBudGg7Ci0JY2IuYnVmID0geG1hbGxvYyhudGggKiBzaXplb2Yoc3RydWN0IHN0cmJ1ZikpOwotCWZvciAoaSA9IDA7IGkgPCBudGg7IGkrKykKLQkJc3RyYnVmX2luaXQoJmNiLmJ1ZltpXSwgMjApOwotCWNiLmNudCA9IDA7CisJY2IucmVtYWluaW5nID0gbnRoOworCXN0cmJ1Zl9pbml0KCZjYi5idWYsIDIwKTsKKwogCXJldHZhbCA9IDA7Ci0JZm9yX2VhY2hfcmVjZW50X3JlZmxvZ19lbnQoIkhFQUQiLCBncmFiX250aF9icmFuY2hfc3dpdGNoLCA0MDk2MCwgJmNiKTsKLQlpZiAoY2IuY250IDwgbnRoKSB7Ci0JCWNiLmNudCA9IDA7Ci0JCWZvcl9lYWNoX3JlZmxvZ19lbnQoIkhFQUQiLCBncmFiX250aF9icmFuY2hfc3dpdGNoLCAmY2IpOworCWlmICgwIDwgZm9yX2VhY2hfcmVmbG9nX2VudF9yZXZlcnNlKCJIRUFEIiwgZ3JhYl9udGhfYnJhbmNoX3N3aXRjaCwgJmNiKSkgeworCQlzdHJidWZfcmVzZXQoYnVmKTsKKwkJc3RyYnVmX2FkZChidWYsIGNiLmJ1Zi5idWYsIGNiLmJ1Zi5sZW4pOworCQlyZXR2YWwgPSBicmFjZSAtIG5hbWUgKyAxOwogCX0KLQlpZiAoY2IuY250IDwgbnRoKQotCQlnb3RvIHJlbGVhc2VfcmV0dXJuOwotCWkgPSBjYi5jbnQgJSBudGg7Ci0Jc3RyYnVmX3Jlc2V0KGJ1Zik7Ci0Jc3RyYnVmX2FkZChidWYsIGNiLmJ1ZltpXS5idWYsIGNiLmJ1ZltpXS5sZW4pOwotCXJldHZhbCA9IGJyYWNlLW5hbWUrMTsKIAotcmVsZWFzZV9yZXR1cm46Ci0JZm9yIChpID0gMDsgaSA8IG50aDsgaSsrKQotCQlzdHJidWZfcmVsZWFzZSgmY2IuYnVmW2ldKTsKLQlmcmVlKGNiLmJ1Zik7Ci0KKwlzdHJidWZfcmVsZWFzZSgmY2IuYnVmKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCkBAIC05NzQsNiArMTAwMiwzOCBAQAogCXJldHVybiBzdDsKIH0KIAorLyogcGFyc2UgQHNvbWV0aGluZyBzeW50YXgsIHdoZW4gJ3NvbWV0aGluZycgaXMgbm90IHsuKn0gKi8KK3N0YXRpYyBpbnQgaW50ZXJwcmV0X2VtcHR5X2F0KGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLCBpbnQgbGVuLCBzdHJ1Y3Qgc3RyYnVmICpidWYpCit7CisJaWYgKGxlbiB8fCBuYW1lWzFdID09ICd7JykKKwkJcmV0dXJuIC0xOworCisJc3RyYnVmX3Jlc2V0KGJ1Zik7CisJc3RyYnVmX2FkZChidWYsICJIRUFEIiwgNCk7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgcmVpbnRlcnByZXQoY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sIGludCBsZW4sIHN0cnVjdCBzdHJidWYgKmJ1ZikKK3sKKwkvKiB3ZSBoYXZlIGV4dHJhIGRhdGEsIHdoaWNoIG1pZ2h0IG5lZWQgZnVydGhlciBwcm9jZXNzaW5nICovCisJc3RydWN0IHN0cmJ1ZiB0bXAgPSBTVFJCVUZfSU5JVDsKKwlpbnQgdXNlZCA9IGJ1Zi0+bGVuOworCWludCByZXQ7CisKKwlzdHJidWZfYWRkKGJ1ZiwgbmFtZSArIGxlbiwgbmFtZWxlbiAtIGxlbik7CisJcmV0ID0gaW50ZXJwcmV0X2JyYW5jaF9uYW1lKGJ1Zi0+YnVmLCAmdG1wKTsKKwkvKiB0aGF0IGRhdGEgd2FzIG5vdCBpbnRlcnByZXRlZCwgcmVtb3ZlIG91ciBjcnVmdCAqLworCWlmIChyZXQgPCAwKSB7CisJCXN0cmJ1Zl9zZXRsZW4oYnVmLCB1c2VkKTsKKwkJcmV0dXJuIGxlbjsKKwl9CisJc3RyYnVmX3Jlc2V0KGJ1Zik7CisJc3RyYnVmX2FkZGJ1ZihidWYsICZ0bXApOworCXN0cmJ1Zl9yZWxlYXNlKCZ0bXApOworCS8qIHR3ZWFrIGZvciBzaXplIG9mIHstTn0gdmVyc3VzIGV4cGFuZGVkIHJlZiBuYW1lICovCisJcmV0dXJuIHJldCAtIHVzZWQgKyBsZW47Cit9CisKIC8qCiAgKiBUaGlzIHJlYWRzIHNob3J0LWhhbmQgc3ludGF4IHRoYXQgbm90IG9ubHkgZXZhbHVhdGVzIHRvIGEgY29tbWl0CiAgKiBvYmplY3QgbmFtZSwgYnV0IGFsc28gY2FuIGFjdCBhcyBpZiB0aGUgZW5kIHVzZXIgc3BlbGxlZCB0aGUgbmFtZQpAQCAtMTAwMywzNiArMTA2MywyNyBAQAogCWludCBsZW4gPSBpbnRlcnByZXRfbnRoX3ByaW9yX2NoZWNrb3V0KG5hbWUsIGJ1Zik7CiAJaW50IHRtcF9sZW47CiAKLQlpZiAoIWxlbikKKwlpZiAoIWxlbikgewogCQlyZXR1cm4gbGVuOyAvKiBzeW50YXggT2ssIG5vdCBlbm91Z2ggc3dpdGNoZXMgKi8KLQlpZiAoMCA8IGxlbiAmJiBsZW4gPT0gbmFtZWxlbikKLQkJcmV0dXJuIGxlbjsgLyogY29uc3VtZWQgYWxsICovCi0JZWxzZSBpZiAoMCA8IGxlbikgewotCQkvKiB3ZSBoYXZlIGV4dHJhIGRhdGEsIHdoaWNoIG1pZ2h0IG5lZWQgZnVydGhlciBwcm9jZXNzaW5nICovCi0JCXN0cnVjdCBzdHJidWYgdG1wID0gU1RSQlVGX0lOSVQ7Ci0JCWludCB1c2VkID0gYnVmLT5sZW47Ci0JCWludCByZXQ7Ci0KLQkJc3RyYnVmX2FkZChidWYsIG5hbWUgKyBsZW4sIG5hbWVsZW4gLSBsZW4pOwotCQlyZXQgPSBpbnRlcnByZXRfYnJhbmNoX25hbWUoYnVmLT5idWYsICZ0bXApOwotCQkvKiB0aGF0IGRhdGEgd2FzIG5vdCBpbnRlcnByZXRlZCwgcmVtb3ZlIG91ciBjcnVmdCAqLwotCQlpZiAocmV0IDwgMCkgewotCQkJc3RyYnVmX3NldGxlbihidWYsIHVzZWQpOwotCQkJcmV0dXJuIGxlbjsKLQkJfQotCQlzdHJidWZfcmVzZXQoYnVmKTsKLQkJc3RyYnVmX2FkZGJ1ZihidWYsICZ0bXApOwotCQlzdHJidWZfcmVsZWFzZSgmdG1wKTsKLQkJLyogdHdlYWsgZm9yIHNpemUgb2Ygey1OfSB2ZXJzdXMgZXhwYW5kZWQgcmVmIG5hbWUgKi8KLQkJcmV0dXJuIHJldCAtIHVzZWQgKyBsZW47CisJfSBlbHNlIGlmIChsZW4gPiAwKSB7CisJCWlmIChsZW4gPT0gbmFtZWxlbikKKwkJCXJldHVybiBsZW47IC8qIGNvbnN1bWVkIGFsbCAqLworCQllbHNlCisJCQlyZXR1cm4gcmVpbnRlcnByZXQobmFtZSwgbmFtZWxlbiwgbGVuLCBidWYpOwogCX0KIAogCWNwID0gc3RyY2hyKG5hbWUsICdAJyk7CiAJaWYgKCFjcCkKIAkJcmV0dXJuIC0xOworCisJbGVuID0gaW50ZXJwcmV0X2VtcHR5X2F0KG5hbWUsIG5hbWVsZW4sIGNwIC0gbmFtZSwgYnVmKTsKKwlpZiAobGVuID4gMCkKKwkJcmV0dXJuIHJlaW50ZXJwcmV0KG5hbWUsIG5hbWVsZW4sIGxlbiwgYnVmKTsKKwogCXRtcF9sZW4gPSB1cHN0cmVhbV9tYXJrKGNwLCBuYW1lbGVuIC0gKGNwIC0gbmFtZSkpOwogCWlmICghdG1wX2xlbikKIAkJcmV0dXJuIC0xOworCiAJbGVuID0gY3AgKyB0bXBfbGVuIC0gbmFtZTsKIAljcCA9IHhzdHJuZHVwKG5hbWUsIGNwIC0gbmFtZSk7CiAJdXBzdHJlYW0gPSBicmFuY2hfZ2V0KCpjcCA/IGNwIDogTlVMTCk7CkBAIC0xMDQxLDE0ICsxMDkyLDE1IEBACiAJICogcG9pbnRzIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiBhIGJyYW5jaC4KIAkgKi8KIAlpZiAoIXVwc3RyZWFtKQotCQlyZXR1cm4gZXJyb3IoXygiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIpKTsKKwkJZGllKF8oIkhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2giKSk7CiAJaWYgKCF1cHN0cmVhbS0+bWVyZ2UgfHwgIXVwc3RyZWFtLT5tZXJnZVswXS0+ZHN0KSB7CiAJCWlmICghcmVmX2V4aXN0cyh1cHN0cmVhbS0+cmVmbmFtZSkpCi0JCQlyZXR1cm4gZXJyb3IoXygiTm8gc3VjaCBicmFuY2g6ICclcyciKSwgY3ApOwotCQlpZiAoIXVwc3RyZWFtLT5tZXJnZSkKLQkJCXJldHVybiBlcnJvcihfKCJObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJyVzJyIpLAotCQkJCSAgICAgdXBzdHJlYW0tPm5hbWUpOwotCQlyZXR1cm4gZXJyb3IoCisJCQlkaWUoXygiTm8gc3VjaCBicmFuY2g6ICclcyciKSwgY3ApOworCQlpZiAoIXVwc3RyZWFtLT5tZXJnZSkgeworCQkJZGllKF8oIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIiksCisJCQkJdXBzdHJlYW0tPm5hbWUpOworCQl9CisJCWRpZSgKIAkJCV8oIlVwc3RyZWFtIGJyYW5jaCAnJXMnIG5vdCBzdG9yZWQgYXMgYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIiksCiAJCQl1cHN0cmVhbS0+bWVyZ2VbMF0tPnNyYyk7CiAJfQpAQCAtMTA2Myw5ICsxMTE1LDEzIEBACiBpbnQgc3RyYnVmX2JyYW5jaG5hbWUoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJaW50IGxlbiA9IHN0cmxlbihuYW1lKTsKLQlpZiAoaW50ZXJwcmV0X2JyYW5jaF9uYW1lKG5hbWUsIHNiKSA9PSBsZW4pCisJaW50IHVzZWQgPSBpbnRlcnByZXRfYnJhbmNoX25hbWUobmFtZSwgc2IpOworCisJaWYgKHVzZWQgPT0gbGVuKQogCQlyZXR1cm4gMDsKLQlzdHJidWZfYWRkKHNiLCBuYW1lLCBsZW4pOworCWlmICh1c2VkIDwgMCkKKwkJdXNlZCA9IDA7CisJc3RyYnVmX2FkZChzYiwgbmFtZSArIHVzZWQsIGxlbiAtIHVzZWQpOwogCXJldHVybiBsZW47CiB9CiAKZGlmZiAtLWdpdCBhL3NoYWxsb3cuYyBiL3NoYWxsb3cuYwppbmRleCBhMDM2M2RlLi5jYmUyNTI2IDEwMDY0NAotLS0gYS9zaGFsbG93LmMKKysrIGIvc2hhbGxvdy5jCkBAIC0zLDYgKzMsMTYgQEAKICNpbmNsdWRlICJ0YWcuaCIKIAogc3RhdGljIGludCBpc19zaGFsbG93ID0gLTE7CitzdGF0aWMgc3RydWN0IHN0YXQgc2hhbGxvd19zdGF0Oworc3RhdGljIGNoYXIgKmFsdGVybmF0ZV9zaGFsbG93X2ZpbGU7CisKK3ZvaWQgc2V0X2FsdGVybmF0ZV9zaGFsbG93X2ZpbGUoY29uc3QgY2hhciAqcGF0aCkKK3sKKwlpZiAoaXNfc2hhbGxvdyAhPSAtMSkKKwkJZGllKCJCVUc6IGlzX3JlcG9zaXRvcnlfc2hhbGxvdyBtdXN0IG5vdCBiZSBjYWxsZWQgYmVmb3JlIHNldF9hbHRlcm5hdGVfc2hhbGxvd19maWxlIik7CisJZnJlZShhbHRlcm5hdGVfc2hhbGxvd19maWxlKTsKKwlhbHRlcm5hdGVfc2hhbGxvd19maWxlID0gcGF0aCA/IHhzdHJkdXAocGF0aCkgOiBOVUxMOworfQogCiBpbnQgcmVnaXN0ZXJfc2hhbGxvdyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQogewpAQCAtMjEsMTIgKzMxLDIxIEBACiB7CiAJRklMRSAqZnA7CiAJY2hhciBidWZbMTAyNF07CisJY29uc3QgY2hhciAqcGF0aCA9IGFsdGVybmF0ZV9zaGFsbG93X2ZpbGU7CiAKIAlpZiAoaXNfc2hhbGxvdyA+PSAwKQogCQlyZXR1cm4gaXNfc2hhbGxvdzsKIAotCWZwID0gZm9wZW4oZ2l0X3BhdGgoInNoYWxsb3ciKSwgInIiKTsKLQlpZiAoIWZwKSB7CisJaWYgKCFwYXRoKQorCQlwYXRoID0gZ2l0X3BhdGgoInNoYWxsb3ciKTsKKwkvKgorCSAqIGZldGNoLXBhY2sgc2V0cyAnLS1zaGFsbG93LWZpbGUgIiInIGFzIGFuIGluZGljYXRvciB0aGF0IG5vCisJICogc2hhbGxvdyBmaWxlIHNob3VsZCBiZSB1c2VkLiBXZSBjb3VsZCBqdXN0IG9wZW4gaXQgYW5kIGl0CisJICogd2lsbCBsaWtlbHkgZmFpbC4gQnV0IGxldCdzIGRvIGFuIGV4cGxpY2l0IGNoZWNrIGluc3RlYWQuCisJICovCisJaWYgKCEqcGF0aCB8fAorCSAgICBzdGF0KHBhdGgsICZzaGFsbG93X3N0YXQpIHx8CisJICAgIChmcCA9IGZvcGVuKHBhdGgsICJyIikpID09IE5VTEwpIHsKIAkJaXNfc2hhbGxvdyA9IDA7CiAJCXJldHVybiBpc19zaGFsbG93OwogCX0KQEAgLTcyLDggKzkxLDE0IEBACiAJCX0KIAkJaWYgKHBhcnNlX2NvbW1pdChjb21taXQpKQogCQkJZGllKCJpbnZhbGlkIGNvbW1pdCIpOwotCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBub3Rfc2hhbGxvd19mbGFnOwogCQljdXJfZGVwdGgrKzsKKwkJaWYgKGN1cl9kZXB0aCA+PSBkZXB0aCkgeworCQkJY29tbWl0X2xpc3RfaW5zZXJ0KGNvbW1pdCwgJnJlc3VsdCk7CisJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBzaGFsbG93X2ZsYWc7CisJCQljb21taXQgPSBOVUxMOworCQkJY29udGludWU7CisJCX0KKwkJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gbm90X3NoYWxsb3dfZmxhZzsKIAkJZm9yIChwID0gY29tbWl0LT5wYXJlbnRzLCBjb21taXQgPSBOVUxMOyBwOyBwID0gcC0+bmV4dCkgewogCQkJaWYgKCFwLT5pdGVtLT51dGlsKSB7CiAJCQkJaW50ICpwb2ludGVyID0geG1hbGxvYyhzaXplb2YoaW50KSk7CkBAIC0xMDIsMyArMTI3LDIyIEBACiAKIAlyZXR1cm4gcmVzdWx0OwogfQorCit2b2lkIGNoZWNrX3NoYWxsb3dfZmlsZV9mb3JfdXBkYXRlKHZvaWQpCit7CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoIWlzX3NoYWxsb3cpCisJCXJldHVybjsKKwllbHNlIGlmIChpc19zaGFsbG93ID09IC0xKQorCQlkaWUoIkJVRzogc2hhbGxvdyBtdXN0IGJlIGluaXRpYWxpemVkIGJ5IG5vdyIpOworCisJaWYgKHN0YXQoZ2l0X3BhdGgoInNoYWxsb3ciKSwgJnN0KSkKKwkJZGllKCJzaGFsbG93IGZpbGUgd2FzIHJlbW92ZWQgZHVyaW5nIGZldGNoIik7CisJZWxzZSBpZiAoc3Quc3RfbXRpbWUgIT0gc2hhbGxvd19zdGF0LnN0X210aW1lCisjaWZkZWYgVVNFX05TRUMKKwkJIHx8IFNUX01USU1FX05TRUMoc3QpICE9IFNUX01USU1FX05TRUMoc2hhbGxvd19zdGF0KQorI2VuZGlmCisJCSAgICkKKwkJZGllKCJzaGFsbG93IGZpbGUgd2FzIGNoYW5nZWQgZHVyaW5nIGZldGNoIik7Cit9CmRpZmYgLS1naXQgYS9zaGVsbC5jIGIvc2hlbGwuYwppbmRleCA4NGIyMzdmLi4xNDI5ODcwIDEwMDY0NAotLS0gYS9zaGVsbC5jCisrKyBiL3NoZWxsLmMKQEAgLTYsNiArNiw3IEBACiAKICNkZWZpbmUgQ09NTUFORF9ESVIgImdpdC1zaGVsbC1jb21tYW5kcyIKICNkZWZpbmUgSEVMUF9DT01NQU5EIENPTU1BTkRfRElSICIvaGVscCIKKyNkZWZpbmUgTk9MT0dJTl9DT01NQU5EIENPTU1BTkRfRElSICIvbm8taW50ZXJhY3RpdmUtbG9naW4iCiAKIHN0YXRpYyBpbnQgZG9fZ2VuZXJpY19jbWQoY29uc3QgY2hhciAqbWUsIGNoYXIgKmFyZykKIHsKQEAgLTY1LDYgKzY2LDE4IEBACiB7CiAJaW50IGRvbmUgPSAwOwogCXN0YXRpYyBjb25zdCBjaGFyICpoZWxwX2FyZ3ZbXSA9IHsgSEVMUF9DT01NQU5ELCBOVUxMIH07CisKKwlpZiAoIWFjY2VzcyhOT0xPR0lOX0NPTU1BTkQsIEZfT0spKSB7CisJCS8qIEludGVyYWN0aXZlIGxvZ2luIGRpc2FibGVkLiAqLworCQljb25zdCBjaGFyICphcmd2W10gPSB7IE5PTE9HSU5fQ09NTUFORCwgTlVMTCB9OworCQlpbnQgc3RhdHVzOworCisJCXN0YXR1cyA9IHJ1bl9jb21tYW5kX3Zfb3B0KGFyZ3YsIDApOworCQlpZiAoc3RhdHVzIDwgMCkKKwkJCWV4aXQoMTI3KTsKKwkJZXhpdChzdGF0dXMpOworCX0KKwogCS8qIFByaW50IGhlbHAgaWYgZW5hYmxlZCAqLwogCXJ1bl9jb21tYW5kX3Zfb3B0KGhlbHBfYXJndiwgUlVOX1NJTEVOVF9FWEVDX0ZBSUxVUkUpOwogCmRpZmYgLS1naXQgYS9zaWRlYmFuZC5jIGIvc2lkZWJhbmQuYwppbmRleCBkNWZmYTFjLi5kMTEyNWY1IDEwMDY0NAotLS0gYS9zaWRlYmFuZC5jCisrKyBiL3NpZGViYW5kLmMKQEAgLTEsMyArMSw0IEBACisjaW5jbHVkZSAiY2FjaGUuaCIKICNpbmNsdWRlICJwa3QtbGluZS5oIgogI2luY2x1ZGUgInNpZGViYW5kLmgiCiAKQEAgLTM3LDcgKzM4LDcgQEAKIAogCXdoaWxlICgxKSB7CiAJCWludCBiYW5kLCBsZW47Ci0JCWxlbiA9IHBhY2tldF9yZWFkX2xpbmUoaW5fc3RyZWFtLCBidWYgKyBwZiwgTEFSR0VfUEFDS0VUX01BWCk7CisJCWxlbiA9IHBhY2tldF9yZWFkKGluX3N0cmVhbSwgTlVMTCwgTlVMTCwgYnVmICsgcGYsIExBUkdFX1BBQ0tFVF9NQVgsIDApOwogCQlpZiAobGVuID09IDApCiAJCQlicmVhazsKIAkJaWYgKGxlbiA8IDEpIHsKQEAgLTEwOCw3ICsxMDksNyBAQAogCQkJfSB3aGlsZSAobGVuKTsKIAkJCWNvbnRpbnVlOwogCQljYXNlIDE6Ci0JCQlzYWZlX3dyaXRlKG91dCwgYnVmICsgcGYrMSwgbGVuKTsKKwkJCXdyaXRlX29yX2RpZShvdXQsIGJ1ZiArIHBmKzEsIGxlbik7CiAJCQljb250aW51ZTsKIAkJZGVmYXVsdDoKIAkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHByb3RvY29sIGVycm9yOiBiYWQgYmFuZCAjJWRcbiIsCkBAIC0xMzgsMTIgKzEzOSwxMiBAQAogCQlpZiAoMCA8PSBiYW5kKSB7CiAJCQlzcHJpbnRmKGhkciwgIiUwNHgiLCBuICsgNSk7CiAJCQloZHJbNF0gPSBiYW5kOwotCQkJc2FmZV93cml0ZShmZCwgaGRyLCA1KTsKKwkJCXdyaXRlX29yX2RpZShmZCwgaGRyLCA1KTsKIAkJfSBlbHNlIHsKIAkJCXNwcmludGYoaGRyLCAiJTA0eCIsIG4gKyA0KTsKLQkJCXNhZmVfd3JpdGUoZmQsIGhkciwgNCk7CisJCQl3cml0ZV9vcl9kaWUoZmQsIGhkciwgNCk7CiAJCX0KLQkJc2FmZV93cml0ZShmZCwgcCwgbik7CisJCXdyaXRlX29yX2RpZShmZCwgcCwgbik7CiAJCXAgKz0gbjsKIAkJc3ogLT0gbjsKIAl9CmRpZmYgLS1naXQgYS9zaWRlYmFuZC5oIGIvc2lkZWJhbmQuaAppbmRleCBkNzJkYjM1Li5lNDZiZWQwIDEwMDY0NAotLS0gYS9zaWRlYmFuZC5oCisrKyBiL3NpZGViYW5kLmgKQEAgLTQsOSArNCw2IEBACiAjZGVmaW5lIFNJREVCQU5EX1BST1RPQ09MX0VSUk9SIC0yCiAjZGVmaW5lIFNJREVCQU5EX1JFTU9URV9FUlJPUiAtMQogCi0jZGVmaW5lIERFRkFVTFRfUEFDS0VUX01BWCAxMDAwCi0jZGVmaW5lIExBUkdFX1BBQ0tFVF9NQVggNjU1MjAKLQogaW50IHJlY3Zfc2lkZWJhbmQoY29uc3QgY2hhciAqbWUsIGludCBpbl9zdHJlYW0sIGludCBvdXQpOwogc3NpemVfdCBzZW5kX3NpZGViYW5kKGludCBmZCwgaW50IGJhbmQsIGNvbnN0IGNoYXIgKmRhdGEsIHNzaXplX3Qgc3osIGludCBwYWNrZXRfbWF4KTsKIApkaWZmIC0tZ2l0IGEvc3RyYnVmLmMgYi9zdHJidWYuYwppbmRleCAwNWQwNjkzLi4xMTcwZDAxIDEwMDY0NAotLS0gYS9zdHJidWYuYworKysgYi9zdHJidWYuYwpAQCAtMjA0LDYgKzIwNCw1NCBAQAogCXZhX2VuZChhcCk7CiB9CiAKK3N0YXRpYyB2b2lkIGFkZF9saW5lcyhzdHJ1Y3Qgc3RyYnVmICpvdXQsCisJCQljb25zdCBjaGFyICpwcmVmaXgxLAorCQkJY29uc3QgY2hhciAqcHJlZml4MiwKKwkJCWNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJd2hpbGUgKHNpemUpIHsKKwkJY29uc3QgY2hhciAqcHJlZml4OworCQljb25zdCBjaGFyICpuZXh0ID0gbWVtY2hyKGJ1ZiwgJ1xuJywgc2l6ZSk7CisJCW5leHQgPSBuZXh0ID8gKG5leHQgKyAxKSA6IChidWYgKyBzaXplKTsKKworCQlwcmVmaXggPSAocHJlZml4MiAmJiBidWZbMF0gPT0gJ1xuJykgPyBwcmVmaXgyIDogcHJlZml4MTsKKwkJc3RyYnVmX2FkZHN0cihvdXQsIHByZWZpeCk7CisJCXN0cmJ1Zl9hZGQob3V0LCBidWYsIG5leHQgLSBidWYpOworCQlzaXplIC09IG5leHQgLSBidWY7CisJCWJ1ZiA9IG5leHQ7CisJfQorCXN0cmJ1Zl9jb21wbGV0ZV9saW5lKG91dCk7Cit9CisKK3ZvaWQgc3RyYnVmX2FkZF9jb21tZW50ZWRfbGluZXMoc3RydWN0IHN0cmJ1ZiAqb3V0LCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKQoreworCXN0YXRpYyBjaGFyIHByZWZpeDFbM107CisJc3RhdGljIGNoYXIgcHJlZml4MlsyXTsKKworCWlmIChwcmVmaXgxWzBdICE9IGNvbW1lbnRfbGluZV9jaGFyKSB7CisJCXNwcmludGYocHJlZml4MSwgIiVjICIsIGNvbW1lbnRfbGluZV9jaGFyKTsKKwkJc3ByaW50ZihwcmVmaXgyLCAiJWMiLCBjb21tZW50X2xpbmVfY2hhcik7CisJfQorCWFkZF9saW5lcyhvdXQsIHByZWZpeDEsIHByZWZpeDIsIGJ1Ziwgc2l6ZSk7Cit9CisKK3ZvaWQgc3RyYnVmX2NvbW1lbnRlZF9hZGRmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IHBhcmFtczsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCWludCBpbmNvbXBsZXRlX2xpbmUgPSBzYi0+bGVuICYmIHNiLT5idWZbc2ItPmxlbiAtIDFdICE9ICdcbic7CisKKwl2YV9zdGFydChwYXJhbXMsIGZtdCk7CisJc3RyYnVmX3ZhZGRmKCZidWYsIGZtdCwgcGFyYW1zKTsKKwl2YV9lbmQocGFyYW1zKTsKKworCXN0cmJ1Zl9hZGRfY29tbWVudGVkX2xpbmVzKHNiLCBidWYuYnVmLCBidWYubGVuKTsKKwlpZiAoaW5jb21wbGV0ZV9saW5lKQorCQlzYi0+YnVmWy0tc2ItPmxlbl0gPSAnXDAnOworCisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Cit9CisKIHZvaWQgc3RyYnVmX3ZhZGRmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCiB7CiAJaW50IGxlbjsKQEAgLTQxNCwxNSArNDYyLDMzIEBACiB2b2lkIHN0cmJ1Zl9hZGRfbGluZXMoc3RydWN0IHN0cmJ1ZiAqb3V0LCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCSAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7Ci0Jd2hpbGUgKHNpemUpIHsKLQkJY29uc3QgY2hhciAqbmV4dCA9IG1lbWNocihidWYsICdcbicsIHNpemUpOwotCQluZXh0ID0gbmV4dCA/IChuZXh0ICsgMSkgOiAoYnVmICsgc2l6ZSk7Ci0JCXN0cmJ1Zl9hZGRzdHIob3V0LCBwcmVmaXgpOwotCQlzdHJidWZfYWRkKG91dCwgYnVmLCBuZXh0IC0gYnVmKTsKLQkJc2l6ZSAtPSBuZXh0IC0gYnVmOwotCQlidWYgPSBuZXh0OworCWFkZF9saW5lcyhvdXQsIHByZWZpeCwgTlVMTCwgYnVmLCBzaXplKTsKK30KKwordm9pZCBzdHJidWZfYWRkc3RyX3htbF9xdW90ZWQoc3RydWN0IHN0cmJ1ZiAqYnVmLCBjb25zdCBjaGFyICpzKQoreworCXdoaWxlICgqcykgeworCQlzaXplX3QgbGVuID0gc3RyY3NwbihzLCAiXCI8PiYiKTsKKwkJc3RyYnVmX2FkZChidWYsIHMsIGxlbik7CisJCXMgKz0gbGVuOworCQlzd2l0Y2ggKCpzKSB7CisJCWNhc2UgJyInOgorCQkJc3RyYnVmX2FkZHN0cihidWYsICImcXVvdDsiKTsKKwkJCWJyZWFrOworCQljYXNlICc8JzoKKwkJCXN0cmJ1Zl9hZGRzdHIoYnVmLCAiJmx0OyIpOworCQkJYnJlYWs7CisJCWNhc2UgJz4nOgorCQkJc3RyYnVmX2FkZHN0cihidWYsICImZ3Q7Iik7CisJCQlicmVhazsKKwkJY2FzZSAnJic6CisJCQlzdHJidWZfYWRkc3RyKGJ1ZiwgIiZhbXA7Iik7CisJCQlicmVhazsKKwkJY2FzZSAwOgorCQkJcmV0dXJuOworCQl9CisJCXMrKzsKIAl9Ci0Jc3RyYnVmX2NvbXBsZXRlX2xpbmUob3V0KTsKIH0KIAogc3RhdGljIGludCBpc19yZmMzOTg2X3Jlc2VydmVkKGNoYXIgY2gpCkBAIC00NjIsNiArNTI4LDI1IEBACiAJc3RyYnVmX2FkZF91cmxlbmNvZGUoc2IsIHMsIHN0cmxlbihzKSwgcmVzZXJ2ZWQpOwogfQogCit2b2lkIHN0cmJ1Zl9odW1hbmlzZV9ieXRlcyhzdHJ1Y3Qgc3RyYnVmICpidWYsIG9mZl90IGJ5dGVzKQoreworCWlmIChieXRlcyA+IDEgPDwgMzApIHsKKwkJc3RyYnVmX2FkZGYoYnVmLCAiJXUuJTIuMnUgR2lCIiwKKwkJCSAgICAoaW50KShieXRlcyA+PiAzMCksCisJCQkgICAgKGludCkoYnl0ZXMgJiAoKDEgPDwgMzApIC0gMSkpIC8gMTA3Mzc0MTkpOworCX0gZWxzZSBpZiAoYnl0ZXMgPiAxIDw8IDIwKSB7CisJCWludCB4ID0gYnl0ZXMgKyA1MjQzOyAgLyogZm9yIHJvdW5kaW5nICovCisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiV1LiUyLjJ1IE1pQiIsCisJCQkgICAgeCA+PiAyMCwgKCh4ICYgKCgxIDw8IDIwKSAtIDEpKSAqIDEwMCkgPj4gMjApOworCX0gZWxzZSBpZiAoYnl0ZXMgPiAxIDw8IDEwKSB7CisJCWludCB4ID0gYnl0ZXMgKyA1OyAgLyogZm9yIHJvdW5kaW5nICovCisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiV1LiUyLjJ1IEtpQiIsCisJCQkgICAgeCA+PiAxMCwgKCh4ICYgKCgxIDw8IDEwKSAtIDEpKSAqIDEwMCkgPj4gMTApOworCX0gZWxzZSB7CisJCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiV1IGJ5dGVzIiwgKGludClieXRlcyk7CisJfQorfQorCiBpbnQgcHJpbnRmX2xuKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCWludCByZXQ7CmRpZmYgLS1naXQgYS9zdHJidWYuaCBiL3N0cmJ1Zi5oCmluZGV4IGFhMzg2YzYuLjczZTgwY2UgMTAwNjQ0Ci0tLSBhL3N0cmJ1Zi5oCisrKyBiL3N0cmJ1Zi5oCkBAIC0xMTAsNiArMTEwLDggQEAKIGV4dGVybiB2b2lkIHN0cmJ1Zl9zcGxpY2Uoc3RydWN0IHN0cmJ1ZiAqLCBzaXplX3QgcG9zLCBzaXplX3QgbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICosIHNpemVfdCk7CiAKK2V4dGVybiB2b2lkIHN0cmJ1Zl9hZGRfY29tbWVudGVkX2xpbmVzKHN0cnVjdCBzdHJidWYgKm91dCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSk7CisKIGV4dGVybiB2b2lkIHN0cmJ1Zl9hZGQoc3RydWN0IHN0cmJ1ZiAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc3RyYnVmX2FkZHN0cihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcykgewogCXN0cmJ1Zl9hZGQoc2IsIHMsIHN0cmxlbihzKSk7CkBAIC0xMzEsMTEgKzEzMywxOSBAQAogCiBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwyLDMpKSkKIGV4dGVybiB2b2lkIHN0cmJ1Zl9hZGRmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CitfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKQorZXh0ZXJuIHZvaWQgc3RyYnVmX2NvbW1lbnRlZF9hZGRmKHN0cnVjdCBzdHJidWYgKnNiLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiBfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwyLDApKSkKIGV4dGVybiB2b2lkIHN0cmJ1Zl92YWRkZihzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKTsKIAogZXh0ZXJuIHZvaWQgc3RyYnVmX2FkZF9saW5lcyhzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBzaXplKTsKIAorLyoKKyAqIEFwcGVuZCBzIHRvIHNiLCB3aXRoIHRoZSBjaGFyYWN0ZXJzICc8JywgJz4nLCAnJicgYW5kICciJyBjb252ZXJ0ZWQKKyAqIGludG8gWE1MIGVudGl0aWVzLgorICovCitleHRlcm4gdm9pZCBzdHJidWZfYWRkc3RyX3htbF9xdW90ZWQoc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnMpOworCiBzdGF0aWMgaW5saW5lIHZvaWQgc3RyYnVmX2NvbXBsZXRlX2xpbmUoc3RydWN0IHN0cmJ1ZiAqc2IpCiB7CiAJaWYgKHNiLT5sZW4gJiYgc2ItPmJ1ZltzYi0+bGVuIC0gMV0gIT0gJ1xuJykKQEAgLTE2MCw2ICsxNzAsNyBAQAogCiBleHRlcm4gdm9pZCBzdHJidWZfYWRkc3RyX3VybGVuY29kZShzdHJ1Y3Qgc3RyYnVmICosIGNvbnN0IGNoYXIgKiwKIAkJCQkgICAgaW50IHJlc2VydmVkKTsKK2V4dGVybiB2b2lkIHN0cmJ1Zl9odW1hbmlzZV9ieXRlcyhzdHJ1Y3Qgc3RyYnVmICpidWYsIG9mZl90IGJ5dGVzKTsKIAogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsMSwyKSkpCiBleHRlcm4gaW50IHByaW50Zl9sbihjb25zdCBjaGFyICpmbXQsIC4uLik7CmRpZmYgLS1naXQgYS9zdHJlYW1pbmcuYyBiL3N0cmVhbWluZy5jCmluZGV4IDRkOTc4ZTUuLmNhYmNkOWQgMTAwNjQ0Ci0tLSBhL3N0cmVhbWluZy5jCisrKyBiL3N0cmVhbWluZy5jCkBAIC0yMzcsNyArMjM3LDcgQEAKIAkJaWYgKCFmcy0+aW5wdXRfZmluaXNoZWQpIHsKIAkJCWZzLT5pX2VuZCA9IHJlYWRfaXN0cmVhbShmcy0+dXBzdHJlYW0sIGZzLT5pYnVmLCBGSUxURVJfQlVGRkVSKTsKIAkJCWlmIChmcy0+aV9lbmQgPCAwKQotCQkJCWJyZWFrOworCQkJCXJldHVybiAtMTsKIAkJCWlmIChmcy0+aV9lbmQpCiAJCQkJY29udGludWU7CiAJCX0KQEAgLTMwOSw3ICszMDksNyBAQAogCQkJc3QtPnpfc3RhdGUgPSB6X2RvbmU7CiAJCQlicmVhazsKIAkJfQotCQlpZiAoc3RhdHVzICE9IFpfT0sgJiYgc3RhdHVzICE9IFpfQlVGX0VSUk9SKSB7CisJCWlmIChzdGF0dXMgIT0gWl9PSyAmJiAoc3RhdHVzICE9IFpfQlVGX0VSUk9SIHx8IHRvdGFsX3JlYWQgPCBzeikpIHsKIAkJCWdpdF9pbmZsYXRlX2VuZCgmc3QtPnopOwogCQkJc3QtPnpfc3RhdGUgPSB6X2Vycm9yOwogCQkJcmV0dXJuIC0xOwpAQCAtNTE0LDYgKzUxNCw4IEBACiAJCXNzaXplX3Qgd3JvdGUsIGhvbGV0bzsKIAkJc3NpemVfdCByZWFkbGVuID0gcmVhZF9pc3RyZWFtKHN0LCBidWYsIHNpemVvZihidWYpKTsKIAorCQlpZiAocmVhZGxlbiA8IDApCisJCQlnb3RvIGNsb3NlX2FuZF9leGl0OwogCQlpZiAoIXJlYWRsZW4pCiAJCQlicmVhazsKIAkJaWYgKGNhbl9zZWVrICYmIHNpemVvZihidWYpID09IHJlYWRsZW4pIHsKZGlmZiAtLWdpdCBhL3N0cmluZy1saXN0LmMgYi9zdHJpbmctbGlzdC5jCmluZGV4IDQ4MDE3M2YuLmFhYmIyNWUgMTAwNjQ0Ci0tLSBhL3N0cmluZy1saXN0LmMKKysrIGIvc3RyaW5nLWxpc3QuYwpAQCAtNywxMCArNywxMSBAQAogCQlpbnQgKmV4YWN0X21hdGNoKQogewogCWludCBsZWZ0ID0gLTEsIHJpZ2h0ID0gbGlzdC0+bnI7CisJY29tcGFyZV9zdHJpbmdzX2ZuIGNtcCA9IGxpc3QtPmNtcCA/IGxpc3QtPmNtcCA6IHN0cmNtcDsKIAogCXdoaWxlIChsZWZ0ICsgMSA8IHJpZ2h0KSB7CiAJCWludCBtaWRkbGUgPSAobGVmdCArIHJpZ2h0KSAvIDI7Ci0JCWludCBjb21wYXJlID0gc3RyY21wKHN0cmluZywgbGlzdC0+aXRlbXNbbWlkZGxlXS5zdHJpbmcpOworCQlpbnQgY29tcGFyZSA9IGNtcChzdHJpbmcsIGxpc3QtPml0ZW1zW21pZGRsZV0uc3RyaW5nKTsKIAkJaWYgKGNvbXBhcmUgPCAwKQogCQkJcmlnaHQgPSBtaWRkbGU7CiAJCWVsc2UgaWYgKGNvbXBhcmUgPiAwKQpAQCAtOTYsOCArOTcsOSBAQAogewogCWlmIChsaXN0LT5uciA+IDEpIHsKIAkJaW50IHNyYywgZHN0OworCQljb21wYXJlX3N0cmluZ3NfZm4gY21wID0gbGlzdC0+Y21wID8gbGlzdC0+Y21wIDogc3RyY21wOwogCQlmb3IgKHNyYyA9IGRzdCA9IDE7IHNyYyA8IGxpc3QtPm5yOyBzcmMrKykgewotCQkJaWYgKCFzdHJjbXAobGlzdC0+aXRlbXNbZHN0IC0gMV0uc3RyaW5nLCBsaXN0LT5pdGVtc1tzcmNdLnN0cmluZykpIHsKKwkJCWlmICghY21wKGxpc3QtPml0ZW1zW2RzdCAtIDFdLnN0cmluZywgbGlzdC0+aXRlbXNbc3JjXS5zdHJpbmcpKSB7CiAJCQkJaWYgKGxpc3QtPnN0cmR1cF9zdHJpbmdzKQogCQkJCQlmcmVlKGxpc3QtPml0ZW1zW3NyY10uc3RyaW5nKTsKIAkJCQlpZiAoZnJlZV91dGlsKQpAQCAtMjEwLDE1ICsyMTIsMjAgQEAKIAkJCWxpc3QtPnN0cmR1cF9zdHJpbmdzID8geHN0cmR1cChzdHJpbmcpIDogKGNoYXIgKilzdHJpbmcpOwogfQogCisvKiBZdWNrICovCitzdGF0aWMgY29tcGFyZV9zdHJpbmdzX2ZuIGNvbXBhcmVfZm9yX3Fzb3J0OworCisvKiBPbmx5IGNhbGwgdGhpcyBmcm9tIGluc2lkZSBzb3J0X3N0cmluZ19saXN0ISAqLwogc3RhdGljIGludCBjbXBfaXRlbXMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIHsKIAljb25zdCBzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqb25lID0gYTsKIAljb25zdCBzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqdHdvID0gYjsKLQlyZXR1cm4gc3RyY21wKG9uZS0+c3RyaW5nLCB0d28tPnN0cmluZyk7CisJcmV0dXJuIGNvbXBhcmVfZm9yX3Fzb3J0KG9uZS0+c3RyaW5nLCB0d28tPnN0cmluZyk7CiB9CiAKIHZvaWQgc29ydF9zdHJpbmdfbGlzdChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QpCiB7CisJY29tcGFyZV9mb3JfcXNvcnQgPSBsaXN0LT5jbXAgPyBsaXN0LT5jbXAgOiBzdHJjbXA7CiAJcXNvcnQobGlzdC0+aXRlbXMsIGxpc3QtPm5yLCBzaXplb2YoKmxpc3QtPml0ZW1zKSwgY21wX2l0ZW1zKTsKIH0KIApAQCAtMjI2LDggKzIzMywxMCBAQAogCQkJCQkJICAgICBjb25zdCBjaGFyICpzdHJpbmcpCiB7CiAJaW50IGk7CisJY29tcGFyZV9zdHJpbmdzX2ZuIGNtcCA9IGxpc3QtPmNtcCA/IGxpc3QtPmNtcCA6IHN0cmNtcDsKKwogCWZvciAoaSA9IDA7IGkgPCBsaXN0LT5ucjsgaSsrKQotCQlpZiAoIXN0cmNtcChzdHJpbmcsIGxpc3QtPml0ZW1zW2ldLnN0cmluZykpCisJCWlmICghY21wKHN0cmluZywgbGlzdC0+aXRlbXNbaV0uc3RyaW5nKSkKIAkJCXJldHVybiBsaXN0LT5pdGVtcyArIGk7CiAJcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9zdHJpbmctbGlzdC5oIGIvc3RyaW5nLWxpc3QuaAppbmRleCBkYjEyODQ4Li5kZTY3NjljIDEwMDY0NAotLS0gYS9zdHJpbmctbGlzdC5oCisrKyBiL3N0cmluZy1saXN0LmgKQEAgLTUsMTAgKzUsMTQgQEAKIAljaGFyICpzdHJpbmc7CiAJdm9pZCAqdXRpbDsKIH07CisKK3R5cGVkZWYgaW50ICgqY29tcGFyZV9zdHJpbmdzX2ZuKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisKIHN0cnVjdCBzdHJpbmdfbGlzdCB7CiAJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW1zOwogCXVuc2lnbmVkIGludCBuciwgYWxsb2M7CiAJdW5zaWduZWQgaW50IHN0cmR1cF9zdHJpbmdzOjE7CisJY29tcGFyZV9zdHJpbmdzX2ZuIGNtcDsgLyogTlVMTCB1c2VzIHN0cmNtcCgpICovCiB9OwogCiAjZGVmaW5lIFNUUklOR19MSVNUX0lOSVRfTk9EVVAgeyBOVUxMLCAwLCAwLCAwIH0KZGlmZiAtLWdpdCBhL3N1Ym1vZHVsZS5jIGIvc3VibW9kdWxlLmMKaW5kZXggMmY1NTQzNi4uODY4NTQyNCAxMDA2NDQKLS0tIGEvc3VibW9kdWxlLmMKKysrIGIvc3VibW9kdWxlLmMKQEAgLTEyNiw0NSArMTI2LDQ0IEBACiAKIGludCBwYXJzZV9zdWJtb2R1bGVfY29uZmlnX29wdGlvbihjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotCWludCBsZW47CiAJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKmNvbmZpZzsKLQlzdHJ1Y3Qgc3RyYnVmIHN1Ym1vZG5hbWUgPSBTVFJCVUZfSU5JVDsKKwljb25zdCBjaGFyICpuYW1lLCAqa2V5OworCWludCBuYW1lbGVuOwogCi0JdmFyICs9IDEwOwkJLyogU2tpcCAic3VibW9kdWxlLiIgKi8KKwlpZiAocGFyc2VfY29uZmlnX2tleSh2YXIsICJzdWJtb2R1bGUiLCAmbmFtZSwgJm5hbWVsZW4sICZrZXkpIDwgMCB8fCAhbmFtZSkKKwkJcmV0dXJuIDA7CiAKLQlsZW4gPSBzdHJsZW4odmFyKTsKLQlpZiAoKGxlbiA+IDUpICYmICFzdHJjbXAodmFyICsgbGVuIC0gNSwgIi5wYXRoIikpIHsKLQkJc3RyYnVmX2FkZCgmc3VibW9kbmFtZSwgdmFyLCBsZW4gLSA1KTsKKwlpZiAoIXN0cmNtcChrZXksICJwYXRoIikpIHsKIAkJY29uZmlnID0gdW5zb3J0ZWRfc3RyaW5nX2xpc3RfbG9va3VwKCZjb25maWdfbmFtZV9mb3JfcGF0aCwgdmFsdWUpOwogCQlpZiAoY29uZmlnKQogCQkJZnJlZShjb25maWctPnV0aWwpOwogCQllbHNlCiAJCQljb25maWcgPSBzdHJpbmdfbGlzdF9hcHBlbmQoJmNvbmZpZ19uYW1lX2Zvcl9wYXRoLCB4c3RyZHVwKHZhbHVlKSk7Ci0JCWNvbmZpZy0+dXRpbCA9IHN0cmJ1Zl9kZXRhY2goJnN1Ym1vZG5hbWUsIE5VTEwpOwotCQlzdHJidWZfcmVsZWFzZSgmc3VibW9kbmFtZSk7Ci0JfSBlbHNlIGlmICgobGVuID4gMjMpICYmICFzdHJjbXAodmFyICsgbGVuIC0gMjMsICIuZmV0Y2hyZWN1cnNlc3VibW9kdWxlcyIpKSB7Ci0JCXN0cmJ1Zl9hZGQoJnN1Ym1vZG5hbWUsIHZhciwgbGVuIC0gMjMpOwotCQljb25maWcgPSB1bnNvcnRlZF9zdHJpbmdfbGlzdF9sb29rdXAoJmNvbmZpZ19mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXNfZm9yX25hbWUsIHN1Ym1vZG5hbWUuYnVmKTsKKwkJY29uZmlnLT51dGlsID0geG1lbWR1cHoobmFtZSwgbmFtZWxlbik7CisJfSBlbHNlIGlmICghc3RyY21wKGtleSwgImZldGNocmVjdXJzZXN1Ym1vZHVsZXMiKSkgeworCQljaGFyICpuYW1lX2NzdHIgPSB4bWVtZHVweihuYW1lLCBuYW1lbGVuKTsKKwkJY29uZmlnID0gdW5zb3J0ZWRfc3RyaW5nX2xpc3RfbG9va3VwKCZjb25maWdfZmV0Y2hfcmVjdXJzZV9zdWJtb2R1bGVzX2Zvcl9uYW1lLCBuYW1lX2NzdHIpOwogCQlpZiAoIWNvbmZpZykKLQkJCWNvbmZpZyA9IHN0cmluZ19saXN0X2FwcGVuZCgmY29uZmlnX2ZldGNoX3JlY3Vyc2Vfc3VibW9kdWxlc19mb3JfbmFtZSwKLQkJCQkJCSAgICBzdHJidWZfZGV0YWNoKCZzdWJtb2RuYW1lLCBOVUxMKSk7CisJCQljb25maWcgPSBzdHJpbmdfbGlzdF9hcHBlbmQoJmNvbmZpZ19mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXNfZm9yX25hbWUsIG5hbWVfY3N0cik7CisJCWVsc2UKKwkJCWZyZWUobmFtZV9jc3RyKTsKIAkJY29uZmlnLT51dGlsID0gKHZvaWQgKikoaW50cHRyX3QpcGFyc2VfZmV0Y2hfcmVjdXJzZV9zdWJtb2R1bGVzX2FyZyh2YXIsIHZhbHVlKTsKLQkJc3RyYnVmX3JlbGVhc2UoJnN1Ym1vZG5hbWUpOwotCX0gZWxzZSBpZiAoKGxlbiA+IDcpICYmICFzdHJjbXAodmFyICsgbGVuIC0gNywgIi5pZ25vcmUiKSkgeworCX0gZWxzZSBpZiAoIXN0cmNtcChrZXksICJpZ25vcmUiKSkgeworCQljaGFyICpuYW1lX2NzdHI7CisKIAkJaWYgKHN0cmNtcCh2YWx1ZSwgInVudHJhY2tlZCIpICYmIHN0cmNtcCh2YWx1ZSwgImRpcnR5IikgJiYKIAkJICAgIHN0cmNtcCh2YWx1ZSwgImFsbCIpICYmIHN0cmNtcCh2YWx1ZSwgIm5vbmUiKSkgewogCQkJd2FybmluZygiSW52YWxpZCBwYXJhbWV0ZXIgXCIlc1wiIGZvciBjb25maWcgb3B0aW9uIFwic3VibW9kdWxlLiVzLmlnbm9yZVwiIiwgdmFsdWUsIHZhcik7CiAJCQlyZXR1cm4gMDsKIAkJfQogCi0JCXN0cmJ1Zl9hZGQoJnN1Ym1vZG5hbWUsIHZhciwgbGVuIC0gNyk7Ci0JCWNvbmZpZyA9IHVuc29ydGVkX3N0cmluZ19saXN0X2xvb2t1cCgmY29uZmlnX2lnbm9yZV9mb3JfbmFtZSwgc3VibW9kbmFtZS5idWYpOwotCQlpZiAoY29uZmlnKQorCQluYW1lX2NzdHIgPSB4bWVtZHVweihuYW1lLCBuYW1lbGVuKTsKKwkJY29uZmlnID0gdW5zb3J0ZWRfc3RyaW5nX2xpc3RfbG9va3VwKCZjb25maWdfaWdub3JlX2Zvcl9uYW1lLCBuYW1lX2NzdHIpOworCQlpZiAoY29uZmlnKSB7CiAJCQlmcmVlKGNvbmZpZy0+dXRpbCk7Ci0JCWVsc2UKLQkJCWNvbmZpZyA9IHN0cmluZ19saXN0X2FwcGVuZCgmY29uZmlnX2lnbm9yZV9mb3JfbmFtZSwKLQkJCQkJCSAgICBzdHJidWZfZGV0YWNoKCZzdWJtb2RuYW1lLCBOVUxMKSk7Ci0JCXN0cmJ1Zl9yZWxlYXNlKCZzdWJtb2RuYW1lKTsKKwkJCWZyZWUobmFtZV9jc3RyKTsKKwkJfSBlbHNlCisJCQljb25maWcgPSBzdHJpbmdfbGlzdF9hcHBlbmQoJmNvbmZpZ19pZ25vcmVfZm9yX25hbWUsIG5hbWVfY3N0cik7CiAJCWNvbmZpZy0+dXRpbCA9IHhzdHJkdXAodmFsdWUpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC0yMTcsNiArMjE2LDcgQEAKIH0KIAogc3RhdGljIHZvaWQgcHJpbnRfc3VibW9kdWxlX3N1bW1hcnkoc3RydWN0IHJldl9pbmZvICpyZXYsIEZJTEUgKmYsCisJCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4LAogCQljb25zdCBjaGFyICpkZWwsIGNvbnN0IGNoYXIgKmFkZCwgY29uc3QgY2hhciAqcmVzZXQpCiB7CiAJc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W10gPSAiICAlbSAlcyI7CkBAIC0yMjcsNiArMjI3LDcgQEAKIAkJc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0IGN0eCA9IHswfTsKIAkJY3R4LmRhdGVfbW9kZSA9IHJldi0+ZGF0ZV9tb2RlOwogCQlzdHJidWZfc2V0bGVuKCZzYiwgMCk7CisJCXN0cmJ1Zl9hZGRzdHIoJnNiLCBsaW5lX3ByZWZpeCk7CiAJCWlmIChjb21taXQtPm9iamVjdC5mbGFncyAmIFNZTU1FVFJJQ19MRUZUKSB7CiAJCQlpZiAoZGVsKQogCQkJCXN0cmJ1Zl9hZGRzdHIoJnNiLCBkZWwpOwpAQCAtMjU3LDEyICsyNTgsMTMgQEAKIH0KIAogdm9pZCBzaG93X3N1Ym1vZHVsZV9zdW1tYXJ5KEZJTEUgKmYsIGNvbnN0IGNoYXIgKnBhdGgsCisJCWNvbnN0IGNoYXIgKmxpbmVfcHJlZml4LAogCQl1bnNpZ25lZCBjaGFyIG9uZVsyMF0sIHVuc2lnbmVkIGNoYXIgdHdvWzIwXSwKIAkJdW5zaWduZWQgZGlydHlfc3VibW9kdWxlLCBjb25zdCBjaGFyICptZXRhLAogCQljb25zdCBjaGFyICpkZWwsIGNvbnN0IGNoYXIgKmFkZCwgY29uc3QgY2hhciAqcmVzZXQpCiB7CiAJc3RydWN0IHJldl9pbmZvIHJldjsKLQlzdHJ1Y3QgY29tbWl0ICpsZWZ0ID0gbGVmdCwgKnJpZ2h0ID0gcmlnaHQ7CisJc3RydWN0IGNvbW1pdCAqbGVmdCA9IE5VTEwsICpyaWdodCA9IE5VTEw7CiAJY29uc3QgY2hhciAqbWVzc2FnZSA9IE5VTEw7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWludCBmYXN0X2ZvcndhcmQgPSAwLCBmYXN0X2JhY2t3YXJkID0gMDsKQEAgLTI3NiwyMyArMjc4LDIzIEBACiAJZWxzZSBpZiAoIShsZWZ0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2Uob25lKSkgfHwKIAkJICEocmlnaHQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZSh0d28pKSkKIAkJbWVzc2FnZSA9ICIoY29tbWl0cyBub3QgcHJlc2VudCkiOwotCi0JaWYgKCFtZXNzYWdlICYmCi0JICAgIHByZXBhcmVfc3VibW9kdWxlX3N1bW1hcnkoJnJldiwgcGF0aCwgbGVmdCwgcmlnaHQsCi0JCQkJCSZmYXN0X2ZvcndhcmQsICZmYXN0X2JhY2t3YXJkKSkKKwllbHNlIGlmIChwcmVwYXJlX3N1Ym1vZHVsZV9zdW1tYXJ5KCZyZXYsIHBhdGgsIGxlZnQsIHJpZ2h0LAorCQkJCQkgICAmZmFzdF9mb3J3YXJkLCAmZmFzdF9iYWNrd2FyZCkpCiAJCW1lc3NhZ2UgPSAiKHJldmlzaW9uIHdhbGtlciBmYWlsZWQpIjsKIAogCWlmIChkaXJ0eV9zdWJtb2R1bGUgJiBESVJUWV9TVUJNT0RVTEVfVU5UUkFDS0VEKQotCQlmcHJpbnRmKGYsICJTdWJtb2R1bGUgJXMgY29udGFpbnMgdW50cmFja2VkIGNvbnRlbnRcbiIsIHBhdGgpOworCQlmcHJpbnRmKGYsICIlc1N1Ym1vZHVsZSAlcyBjb250YWlucyB1bnRyYWNrZWQgY29udGVudFxuIiwKKwkJCWxpbmVfcHJlZml4LCBwYXRoKTsKIAlpZiAoZGlydHlfc3VibW9kdWxlICYgRElSVFlfU1VCTU9EVUxFX01PRElGSUVEKQotCQlmcHJpbnRmKGYsICJTdWJtb2R1bGUgJXMgY29udGFpbnMgbW9kaWZpZWQgY29udGVudFxuIiwgcGF0aCk7CisJCWZwcmludGYoZiwgIiVzU3VibW9kdWxlICVzIGNvbnRhaW5zIG1vZGlmaWVkIGNvbnRlbnRcbiIsCisJCQlsaW5lX3ByZWZpeCwgcGF0aCk7CiAKIAlpZiAoIWhhc2hjbXAob25lLCB0d28pKSB7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiAJCXJldHVybjsKIAl9CiAKLQlzdHJidWZfYWRkZigmc2IsICIlc1N1Ym1vZHVsZSAlcyAlcy4uIiwgbWV0YSwgcGF0aCwKKwlzdHJidWZfYWRkZigmc2IsICIlcyVzU3VibW9kdWxlICVzICVzLi4iLCBsaW5lX3ByZWZpeCwgbWV0YSwgcGF0aCwKIAkJCWZpbmRfdW5pcXVlX2FiYnJldihvbmUsIERFRkFVTFRfQUJCUkVWKSk7CiAJaWYgKCFmYXN0X2JhY2t3YXJkICYmICFmYXN0X2ZvcndhcmQpCiAJCXN0cmJ1Zl9hZGRjaCgmc2IsICcuJyk7CkBAIC0zMDMsMTEgKzMwNSwxMiBAQAogCQlzdHJidWZfYWRkZigmc2IsICIlczolc1xuIiwgZmFzdF9iYWNrd2FyZCA/ICIgKHJld2luZCkiIDogIiIsIHJlc2V0KTsKIAlmd3JpdGUoc2IuYnVmLCBzYi5sZW4sIDEsIGYpOwogCi0JaWYgKCFtZXNzYWdlKSB7Ci0JCXByaW50X3N1Ym1vZHVsZV9zdW1tYXJ5KCZyZXYsIGYsIGRlbCwgYWRkLCByZXNldCk7CisJaWYgKCFtZXNzYWdlKSAvKiBvbmx5IE5VTEwgaWYgd2Ugc3VjY2VlZGVkIGluIHNldHRpbmcgdXAgdGhlIHdhbGsgKi8KKwkJcHJpbnRfc3VibW9kdWxlX3N1bW1hcnkoJnJldiwgZiwgbGluZV9wcmVmaXgsIGRlbCwgYWRkLCByZXNldCk7CisJaWYgKGxlZnQpCiAJCWNsZWFyX2NvbW1pdF9tYXJrcyhsZWZ0LCB+MCk7CisJaWYgKHJpZ2h0KQogCQljbGVhcl9jb21taXRfbWFya3MocmlnaHQsIH4wKTsKLQl9CiAKIAlzdHJidWZfcmVsZWFzZSgmc2IpOwogfQpAQCAtNjAwLDkgKzYwMyw4IEBACiAJaWYgKCF3b3JrX3RyZWUpCiAJCWdvdG8gb3V0OwogCi0JaWYgKCF0aGVfaW5kZXguaW5pdGlhbGl6ZWQpCi0JCWlmIChyZWFkX2NhY2hlKCkgPCAwKQotCQkJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsKKwlpZiAocmVhZF9jYWNoZSgpIDwgMCkKKwkJZGllKCJpbmRleCBmaWxlIGNvcnJ1cHQiKTsKIAogCWFyZ3ZfYXJyYXlfcHVzaCgmYXJndiwgImZldGNoIik7CiAJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMtPmFyZ2M7IGkrKykKQEAgLTg0Myw3ICs4NDUsNyBAQAogCQlzdHJ1Y3QgY29tbWl0ICphLCBzdHJ1Y3QgY29tbWl0ICpiKQogewogCWludCBpLCBqOwotCXN0cnVjdCBvYmplY3RfYXJyYXkgbWVyZ2VzOworCXN0cnVjdCBvYmplY3RfYXJyYXkgbWVyZ2VzID0gT0JKRUNUX0FSUkFZX0lOSVQ7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCWludCBjb250YWluc19hbm90aGVyOwogCkBAIC04NTMsNyArODU1LDYgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2czsKIAlzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0IHJldl9vcHRzOwogCi0JbWVtc2V0KCZtZXJnZXMsIDAsIHNpemVvZihtZXJnZXMpKTsKIAltZW1zZXQocmVzdWx0LCAwLCBzaXplb2Yoc3RydWN0IG9iamVjdF9hcnJheSkpOwogCW1lbXNldCgmcmV2X29wdHMsIDAsIHNpemVvZihyZXZfb3B0cykpOwogCkBAIC04OTEsOCArODkyLDcgQEAKIAkJfQogCiAJCWlmICghY29udGFpbnNfYW5vdGhlcikKLQkJCWFkZF9vYmplY3RfYXJyYXkobWVyZ2VzLm9iamVjdHNbaV0uaXRlbSwKLQkJCQkJIG1lcmdlcy5vYmplY3RzW2ldLm5hbWUsIHJlc3VsdCk7CisJCQlhZGRfb2JqZWN0X2FycmF5KG1lcmdlcy5vYmplY3RzW2ldLml0ZW0sIE5VTEwsIHJlc3VsdCk7CiAJfQogCiAJZnJlZShtZXJnZXMub2JqZWN0cyk7CmRpZmYgLS1naXQgYS9zdWJtb2R1bGUuaCBiL3N1Ym1vZHVsZS5oCmluZGV4IDNkYzFiM2YuLmM3ZmZjN2MgMTAwNjQ0Ci0tLSBhL3N1Ym1vZHVsZS5oCisrKyBiL3N1Ym1vZHVsZS5oCkBAIC0xOSw2ICsxOSw3IEBACiB2b2lkIGhhbmRsZV9pZ25vcmVfc3VibW9kdWxlc19hcmcoc3RydWN0IGRpZmZfb3B0aW9ucyAqZGlmZm9wdCwgY29uc3QgY2hhciAqKTsKIGludCBwYXJzZV9mZXRjaF9yZWN1cnNlX3N1Ym1vZHVsZXNfYXJnKGNvbnN0IGNoYXIgKm9wdCwgY29uc3QgY2hhciAqYXJnKTsKIHZvaWQgc2hvd19zdWJtb2R1bGVfc3VtbWFyeShGSUxFICpmLCBjb25zdCBjaGFyICpwYXRoLAorCQljb25zdCBjaGFyICpsaW5lX3ByZWZpeCwKIAkJdW5zaWduZWQgY2hhciBvbmVbMjBdLCB1bnNpZ25lZCBjaGFyIHR3b1syMF0sCiAJCXVuc2lnbmVkIGRpcnR5X3N1Ym1vZHVsZSwgY29uc3QgY2hhciAqbWV0YSwKIAkJY29uc3QgY2hhciAqZGVsLCBjb25zdCBjaGFyICphZGQsIGNvbnN0IGNoYXIgKnJlc2V0KTsKZGlmZiAtLWdpdCBhL3QvTWFrZWZpbGUgYi90L01ha2VmaWxlCmluZGV4IDVjNmRlODEuLjIzNzNhMDQgMTAwNjQ0Ci0tLSBhL3QvTWFrZWZpbGUKKysrIGIvdC9NYWtlZmlsZQpAQCAtMTUsOCArMTUsMTYgQEAKIERFRkFVTFRfVEVTVF9UQVJHRVQgPz0gdGVzdAogVEVTVF9MSU5UID89IHRlc3QtbGludC1kdXBsaWNhdGVzIHRlc3QtbGludC1leGVjdXRhYmxlCiAKK2lmZGVmIFRFU1RfT1VUUFVUX0RJUkVDVE9SWQorVEVTVF9SRVNVTFRTX0RJUkVDVE9SWSA9ICQoVEVTVF9PVVRQVVRfRElSRUNUT1JZKS90ZXN0LXJlc3VsdHMKK2Vsc2UKK1RFU1RfUkVTVUxUU19ESVJFQ1RPUlkgPSB0ZXN0LXJlc3VsdHMKK2VuZGlmCisKICMgU2hlbGwgcXVvdGU7CiBTSEVMTF9QQVRIX1NRID0gJChzdWJzdCAnLCdcJycsJChTSEVMTF9QQVRIKSkKK1BFUkxfUEFUSF9TUSA9ICQoc3Vic3QgJywnXCcnLCQoUEVSTF9QQVRIKSkKK1RFU1RfUkVTVUxUU19ESVJFQ1RPUllfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKFRFU1RfUkVTVUxUU19ESVJFQ1RPUlkpKQogCiBUID0gJChzb3J0ICQod2lsZGNhcmQgdFswLTldWzAtOV1bMC05XVswLTldLSouc2gpKQogVFNWTiA9ICQoc29ydCAkKHdpbGRjYXJkIHQ5MVswLTldWzAtOV0tKi5zaCkpCkBAIC0zNSwxNiArNDMsMTYgQEAKIAlAZWNobyAiKioqICRAICoqKiI7IEdJVF9DT05GSUc9LmdpdC9jb25maWcgJyQoU0hFTExfUEFUSF9TUSknICRAICQoR0lUX1RFU1RfT1BUUykKIAogcHJlLWNsZWFuOgotCSQoUk0pIC1yIHRlc3QtcmVzdWx0cworCSQoUk0pIC1yICckKFRFU1RfUkVTVUxUU19ESVJFQ1RPUllfU1EpJwogCiBjbGVhbi1leGNlcHQtcHJvdmUtY2FjaGU6Ci0JJChSTSkgLXIgJ3RyYXNoIGRpcmVjdG9yeScuKiB0ZXN0LXJlc3VsdHMKKwkkKFJNKSAtciAndHJhc2ggZGlyZWN0b3J5Jy4qICckKFRFU1RfUkVTVUxUU19ESVJFQ1RPUllfU1EpJwogCSQoUk0pIC1yIHZhbGdyaW5kL2JpbgogCiBjbGVhbjogY2xlYW4tZXhjZXB0LXByb3ZlLWNhY2hlCiAJJChSTSkgLnByb3ZlCiAKLXRlc3QtbGludDogdGVzdC1saW50LWR1cGxpY2F0ZXMgdGVzdC1saW50LWV4ZWN1dGFibGUKK3Rlc3QtbGludDogdGVzdC1saW50LWR1cGxpY2F0ZXMgdGVzdC1saW50LWV4ZWN1dGFibGUgdGVzdC1saW50LXNoZWxsLXN5bnRheAogCiB0ZXN0LWxpbnQtZHVwbGljYXRlczoKIAlAZHVwcz1gZWNobyAkKFQpIHwgdHIgJyAnICdcbicgfCBzZWQgJ3MvLS4qLy8nIHwgc29ydCB8IHVuaXEgLWRgICYmIFwKQEAgLTU2LDEyICs2NCwxNSBAQAogCQl0ZXN0IC16ICIkJGJhZCIgfHwgeyBcCiAJCWVjaG8gPiYyICJub24tZXhlY3V0YWJsZSB0ZXN0czoiICQkYmFkOyBleGl0IDE7IH0KIAordGVzdC1saW50LXNoZWxsLXN5bnRheDoKKwlAJyQoUEVSTF9QQVRIX1NRKScgY2hlY2stbm9uLXBvcnRhYmxlLXNoZWxsLnBsICQoVCkKKwogYWdncmVnYXRlLXJlc3VsdHMtYW5kLWNsZWFudXA6ICQoVCkKIAkkKE1BS0UpIGFnZ3JlZ2F0ZS1yZXN1bHRzCiAJJChNQUtFKSBjbGVhbgogCiBhZ2dyZWdhdGUtcmVzdWx0czoKLQlmb3IgZiBpbiB0ZXN0LXJlc3VsdHMvdCotKi5jb3VudHM7IGRvIFwKKwlmb3IgZiBpbiAnJChURVNUX1JFU1VMVFNfRElSRUNUT1JZX1NRKScvdCotKi5jb3VudHM7IGRvIFwKIAkJZWNobyAiJCRmIjsgXAogCWRvbmUgfCAnJChTSEVMTF9QQVRIX1NRKScgLi9hZ2dyZWdhdGUtcmVzdWx0cy5zaAogCkBAIC03OSw0MiArOTAsNCBAQAogcGVyZjoKIAkkKE1BS0UpIC1DIHBlcmYvIGFsbAogCi0jIFNtb2tlIHRlc3RpbmcgdGFyZ2V0cwotLWluY2x1ZGUgLi4vR0lULVZFUlNJT04tRklMRQotdW5hbWVfUyA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtcyAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd24nKQotdW5hbWVfTSA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd24nKQotCi10ZXN0LXJlc3VsdHM6Ci0JbWtkaXIgLXAgdGVzdC1yZXN1bHRzCi0KLXRlc3QtcmVzdWx0cy9naXQtc21va2UudGFyLmd6OiB0ZXN0LXJlc3VsdHMKLQkkKFBFUkxfUEFUSCkgLi9oYXJuZXNzIFwKLQkJLS1hcmNoaXZlPSJ0ZXN0LXJlc3VsdHMvZ2l0LXNtb2tlLnRhci5neiIgXAotCQkkKFQpCi0KLXNtb2tlOiB0ZXN0LXJlc3VsdHMvZ2l0LXNtb2tlLnRhci5negotCi1TTU9LRV9VUExPQURfRkxBR1MgPQotaWZkZWYgU01PS0VfVVNFUk5BTUUKLQlTTU9LRV9VUExPQURfRkxBR1MgKz0gLUYgdXNlcm5hbWU9IiQoU01PS0VfVVNFUk5BTUUpIiAtRiBwYXNzd29yZD0iJChTTU9LRV9QQVNTV09SRCkiCi1lbmRpZgotaWZkZWYgU01PS0VfQ09NTUVOVAotCVNNT0tFX1VQTE9BRF9GTEFHUyArPSAtRiBjb21tZW50cz0iJChTTU9LRV9DT01NRU5UKSIKLWVuZGlmCi1pZmRlZiBTTU9LRV9UQUdTCi0JU01PS0VfVVBMT0FEX0ZMQUdTICs9IC1GIHRhZ3M9IiQoU01PS0VfVEFHUykiCi1lbmRpZgotCi1zbW9rZV9yZXBvcnQ6IHNtb2tlCi0JY3VybCBcCi0JCS1IICJFeHBlY3Q6ICIgXAotCQktRiBwcm9qZWN0PUdpdCBcCi0JCS1GIGFyY2hpdGVjdHVyZT0iJCh1bmFtZV9NKSIgXAotCQktRiBwbGF0Zm9ybT0iJCh1bmFtZV9TKSIgXAotCQktRiByZXZpc2lvbj0iJChHSVRfVkVSU0lPTikiIFwKLQkJLUYgcmVwb3J0X2ZpbGU9QHRlc3QtcmVzdWx0cy9naXQtc21va2UudGFyLmd6IFwKLQkJJChTTU9LRV9VUExPQURfRkxBR1MpIFwKLQkJaHR0cDovL3Ntb2tlLmdpdC5uaXguaXMvYXBwL3Byb2plY3RzL3Byb2Nlc3NfYWRkX3JlcG9ydC8xIFwKLQl8IGdyZXAgLXYgXlJlZGlyZWN0aW5nCi0KIC5QSE9OWTogcHJlLWNsZWFuICQoVCkgYWdncmVnYXRlLXJlc3VsdHMgY2xlYW4gdmFsZ3JpbmQgcGVyZgpkaWZmIC0tZ2l0IGEvdC9SRUFETUUgYi90L1JFQURNRQppbmRleCBlNDEyOGU1Li5lYzUyNDY4IDEwMDY0NAotLS0gYS90L1JFQURNRQorKysgYi90L1JFQURNRQpAQCAtODYsMjMgKzg2LDM1IEBACiAKIC0taW1tZWRpYXRlOjoKIAlUaGlzIGNhdXNlcyB0aGUgdGVzdCB0byBpbW1lZGlhdGVseSBleGl0IHVwb24gdGhlIGZpcnN0Ci0JZmFpbGVkIHRlc3QuCisJZmFpbGVkIHRlc3QuIENsZWFudXAgY29tbWFuZHMgcmVxdWVzdGVkIHdpdGgKKwl0ZXN0X3doZW5fZmluaXNoZWQgYXJlIG5vdCBleGVjdXRlZCBpZiB0aGUgdGVzdCBmYWlsZWQsCisJaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3RhdGUgZm9yIGluc3BlY3Rpb24gYnkgdGhlIHRlc3RlcgorCXRvIGRpYWdub3NlIHRoZSBidWcuCiAKIC0tbG9uZy10ZXN0czo6CiAJVGhpcyBjYXVzZXMgYWRkaXRpb25hbCBsb25nLXJ1bm5pbmcgdGVzdHMgdG8gYmUgcnVuICh3aGVyZQogCWF2YWlsYWJsZSksIGZvciBtb3JlIGV4aGF1c3RpdmUgdGVzdGluZy4KIAotLS12YWxncmluZDo6Ci0JRXhlY3V0ZSBhbGwgR2l0IGJpbmFyaWVzIHdpdGggdmFsZ3JpbmQgYW5kIGV4aXQgd2l0aCBzdGF0dXMKLQkxMjYgb24gZXJyb3JzIChqdXN0IGxpa2UgcmVndWxhciB0ZXN0cywgdGhpcyB3aWxsIG9ubHkgc3RvcAotCXRoZSB0ZXN0IHNjcmlwdCB3aGVuIHJ1bm5pbmcgdW5kZXIgLWkpLiAgVmFsZ3JpbmQgZXJyb3JzCi0JZ28gdG8gc3RkZXJyLCBzbyB5b3UgbWlnaHQgd2FudCB0byBwYXNzIHRoZSAtdiBvcHRpb24sIHRvby4KKy0tdmFsZ3JpbmQ9PHRvb2w+OjoKKwlFeGVjdXRlIGFsbCBHaXQgYmluYXJpZXMgdW5kZXIgdmFsZ3JpbmQgdG9vbCA8dG9vbD4gYW5kIGV4aXQKKwl3aXRoIHN0YXR1cyAxMjYgb24gZXJyb3JzIChqdXN0IGxpa2UgcmVndWxhciB0ZXN0cywgdGhpcyB3aWxsCisJb25seSBzdG9wIHRoZSB0ZXN0IHNjcmlwdCB3aGVuIHJ1bm5pbmcgdW5kZXIgLWkpLgogCiAJU2luY2UgaXQgbWFrZXMgbm8gc2Vuc2UgdG8gcnVuIHRoZSB0ZXN0cyB3aXRoIC0tdmFsZ3JpbmQgYW5kCiAJbm90IHNlZSBhbnkgb3V0cHV0LCB0aGlzIG9wdGlvbiBpbXBsaWVzIC0tdmVyYm9zZS4gIEZvcgogCWNvbnZlbmllbmNlLCBpdCBhbHNvIGltcGxpZXMgLS10ZWUuCiAKLQlOb3RlIHRoYXQgdmFsZ3JpbmQgaXMgcnVuIHdpdGggdGhlIG9wdGlvbiAtLWxlYWstY2hlY2s9bm8sCisJPHRvb2w+IGRlZmF1bHRzIHRvICdtZW1jaGVjaycsIGp1c3QgbGlrZSB2YWxncmluZCBpdHNlbGYuCisJT3RoZXIgcGFydGljdWxhcmx5IHVzZWZ1bCBjaG9pY2VzIGluY2x1ZGUgJ2hlbGdyaW5kJyBhbmQKKwknZHJkJywgYnV0IHlvdSBtYXkgdXNlIGFueSB0b29sIHJlY29nbml6ZWQgYnkgeW91ciB2YWxncmluZAorCWluc3RhbGxhdGlvbi4KKworCUFzIGEgc3BlY2lhbCBjYXNlLCA8dG9vbD4gY2FuIGJlICdtZW1jaGVjay1mYXN0Jywgd2hpY2ggdXNlcworCW1lbWNoZWNrIGJ1dCBkaXNhYmxlcyAtLXRyYWNrLW9yaWdpbnMuICBVc2UgdGhpcyBpZiB5b3UgYXJlCisJcnVubmluZyB0ZXN0cyBpbiBidWxrLCB0byBzZWUgaWYgdGhlcmUgYXJlIF9hbnlfIG1lbW9yeQorCWlzc3Vlcy4KKworCU5vdGUgdGhhdCBtZW1jaGVjayBpcyBydW4gd2l0aCB0aGUgb3B0aW9uIC0tbGVhay1jaGVjaz1ubywKIAlhcyB0aGUgZ2l0IHByb2Nlc3MgaXMgc2hvcnQtbGl2ZWQgYW5kIHNvbWUgZXJyb3JzIGFyZSBub3QKIAlpbnRlcmVzdGluZy4gSW4gb3JkZXIgdG8gcnVuIGEgc2luZ2xlIGNvbW1hbmQgdW5kZXIgdGhlIHNhbWUKIAljb25kaXRpb25zIG1hbnVhbGx5LCB5b3Ugc2hvdWxkIHNldCBHSVRfVkFMR1JJTkQgdG8gcG9pbnQgdG8KQEAgLTMxMiw2ICszMjQsOSBAQAogICAgdXNlICd0ZXN0X211c3RfZmFpbCBnaXQgY21kJy4gIFRoaXMgd2lsbCBzaWduYWwgYSBmYWlsdXJlIGlmIGdpdAogICAgZGllcyBpbiBhbiB1bmV4cGVjdGVkIHdheSAoZS5nLiBzZWdmYXVsdCkuCiAKKyAgIE9uIHRoZSBvdGhlciBoYW5kLCBkb24ndCB1c2UgdGVzdF9tdXN0X2ZhaWwgZm9yIHJ1bm5pbmcgcmVndWxhcgorICAgcGxhdGZvcm0gY29tbWFuZHM7IGp1c3QgdXNlICchIGNtZCcuCisKICAtIHVzZSBwZXJsIHdpdGhvdXQgc3BlbGxpbmcgaXQgYXMgIiRQRVJMX1BBVEgiLiBUaGlzIGlzIHRvIGhlbHAgb3VyCiAgICBmcmllbmRzIG9uIFdpbmRvd3Mgd2hlcmUgdGhlIHBsYXRmb3JtIFBlcmwgb2Z0ZW4gYWRkcyBDUiBiZWZvcmUKICAgIHRoZSBlbmQgb2YgbGluZSwgYW5kIHRoZXkgYnVuZGxlIEdpdCB3aXRoIGEgdmVyc2lvbiBvZiBQZXJsIHRoYXQKQEAgLTU4MCw2ICs1OTUsMjAgQEAKIAkJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAJJwogCisgLSB0ZXN0X2xuX3NfYWRkIDxwYXRoMT4gPHBhdGgyPgorCisgICBUaGlzIGZ1bmN0aW9uIGhlbHBzIHN5c3RlbXMgd2hvc2UgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHN5bWJvbGljCisgICBsaW5rcy4gVXNlIGl0IHRvIGFkZCBhIHN5bWJvbGljIGxpbmsgZW50cnkgdG8gdGhlIGluZGV4IHdoZW4gaXQgaXMgbm90CisgICBpbXBvcnRhbnQgdGhhdCB0aGUgZmlsZSBzeXN0ZW0gZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rLCBpLmUuLCBpbnN0ZWFkCisgICBvZiB0aGUgc2VxdWVuY2UKKworCWxuIC1zIGZvbyBiYXIgJiYKKwlnaXQgYWRkIGJhcgorCisgICBTb21ldGltZXMgaXQgaXMgcG9zc2libGUgdG8gc3BsaXQgYSB0ZXN0IGluIGEgcGFydCB0aGF0IGRvZXMgbm90IG5lZWQKKyAgIHRoZSBzeW1ib2xpYyBsaW5rIGluIHRoZSBmaWxlIHN5c3RlbSBhbmQgYSBwYXJ0IHRoYXQgZG9lczsgdGhlbiBvbmx5CisgICB0aGUgbGF0dGVyIHBhcnQgbmVlZCBiZSBwcm90ZWN0ZWQgYnkgYSBTWU1MSU5LUyBwcmVyZXF1aXNpdGUgKHNlZSBiZWxvdykuCisKIFByZXJlcXVpc2l0ZXMKIC0tLS0tLS0tLS0tLS0KIApAQCAtNjEwLDYgKzYzOSwxMSBAQAogICAgVGhlIHByb2Nlc3MgcmV0YWlucyB0aGUgc2FtZSBwaWQgYWNyb3NzIGV4ZWMoMikuIFNlZSBmYjlhMmJlYSBmb3IKICAgIGRldGFpbHMuCiAKKyAtIFBJUEUKKworICAgVGhlIGZpbGVzeXN0ZW0gd2UncmUgb24gc3VwcG9ydHMgY3JlYXRpb24gb2YgRklGT3MgKG5hbWVkIHBpcGVzKQorICAgdmlhIG1rZmlmbygxKS4KKwogIC0gU1lNTElOS1MKIAogICAgVGhlIGZpbGVzeXN0ZW0gd2UncmUgb24gc3VwcG9ydHMgc3ltYm9saWMgbGlua3MuIEUuZy4gYSBGQVQKZGlmZiAtLWdpdCBhL3QvY2hlY2stbm9uLXBvcnRhYmxlLXNoZWxsLnBsIGIvdC9jaGVjay1ub24tcG9ydGFibGUtc2hlbGwucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGI1YTcxZAotLS0gL2Rldi9udWxsCisrKyBiL3QvY2hlY2stbm9uLXBvcnRhYmxlLXNoZWxsLnBsCkBAIC0wLDAgKzEsMjcgQEAKKyMhL3Vzci9iaW4vcGVybAorCisjIFRlc3QgdDAwMDAuLnQ5OTk5LnNoIGZvciBub24gcG9ydGFibGUgc2hlbGwgc2NyaXB0cworIyBUaGlzIHNjcmlwdCBjYW4gYmUgY2FsbGVkIHdpdGggb25lIG9yIG1vcmUgZmlsZW5hbWVzIGFzIHBhcmFtZXRlcnMKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKworbXkgJGV4aXRfY29kZT0wOworCitzdWIgZXJyIHsKKwlteSAkbXNnID0gc2hpZnQ7CisJcHJpbnQgIiRBUkdWOiQuOiBlcnJvcjogJG1zZzogJF9cbiI7CisJJGV4aXRfY29kZSA9IDE7Cit9CisKK3doaWxlICg8PikgeworCWNob21wOworCS9eXHMqc2VkXHMrLWkvIGFuZCBlcnIgJ3NlZCAtaSBpcyBub3QgcG9ydGFibGUnOworCS9eXHMqZWNob1xzKy1uLyBhbmQgZXJyICdlY2hvIC1uIGlzIG5vdCBwb3J0YWJsZSAocGxlYXNlIHVzZSBwcmludGYpJzsKKwkvXlxzKmRlY2xhcmVccysvIGFuZCBlcnIgJ2FycmF5cy9kZWNsYXJlIG5vdCBwb3J0YWJsZSc7CisJL15ccypbXiNdXHMqd2hpY2hccy8gYW5kIGVyciAnd2hpY2ggaXMgbm90IHBvcnRhYmxlIChwbGVhc2UgdXNlIHR5cGUpJzsKKwkvdGVzdFxzK1tePV0qPT0vIGFuZCBlcnIgJyJ0ZXN0IGEgPT0gYiIgaXMgbm90IHBvcnRhYmxlIChwbGVhc2UgdXNlID0pJzsKKwkjIHRoaXMgcmVzZXRzIG91ciAkLiBmb3IgZWFjaCBmaWxlCisJY2xvc2UgQVJHViBpZiBlb2Y7Cit9CitleGl0ICRleGl0X2NvZGU7CmRpZmYgLS1naXQgYS90L2xpYi1naXQtcDQuc2ggYi90L2xpYi1naXQtcDQuc2gKaW5kZXggNzA2MWRjZS4uMjA5OGI5YiAxMDA2NDQKLS0tIGEvdC9saWItZ2l0LXA0LnNoCisrKyBiL3QvbGliLWdpdC1wNC5zaApAQCAtOCw3ICs4LDggQEAKIAogLiAuL3Rlc3QtbGliLnNoCiAKLWlmICEgdGVzdF9oYXZlX3ByZXJlcSBQWVRIT047IHRoZW4KK2lmICEgdGVzdF9oYXZlX3ByZXJlcSBQWVRIT04KK3RoZW4KIAlza2lwX2FsbD0nc2tpcHBpbmcgZ2l0IHA0IHRlc3RzOyBweXRob24gbm90IGF2YWlsYWJsZScKIAl0ZXN0X2RvbmUKIGZpCkBAIC0xNyw2ICsxOCwyNCBAQAogCXRlc3RfZG9uZQogfQogCisjIE9uIGN5Z3dpbiwgdGhlIE5UIHZlcnNpb24gb2YgUGVyZm9yY2UgY2FuIGJlIHVzZWQuICBXaGVuIGdpdmluZworIyBpdCBwYXRocywgZWl0aGVyIG9uIHRoZSBjb21tYW5kLWxpbmUgb3IgaW4gY2xpZW50IHNwZWNpZmljYXRpb25zLAorIyBiZSBzdXJlIHRvIHVzZSB0aGUgbmF0aXZlIHdpbmRvd3MgZm9ybS4KKyMKKyMgT2xkZXIgdmVyc2lvbnMgb2YgcGVyZm9yY2Ugd2VyZSBhdmFpbGFibGUgY29tcGlsZWQgbmF0aXZlbHkgZm9yCisjIGN5Z3dpbi4gIFRob3NlIGRvIG5vdCBhY2NlcHQgbmF0aXZlIHdpbmRvd3MgcGF0aHMsIHNvIG1ha2Ugc3VyZQorIyBub3QgdG8gY29udmVydCBmb3IgdGhlbS4KK25hdGl2ZV9wYXRoKCkgeworCXBhdGg9IiQxIiAmJgorCWlmIHRlc3RfaGF2ZV9wcmVyZXEgQ1lHV0lOICYmICEgcDQgLVYgfCBncmVwIC1xIENZR1dJTgorCXRoZW4KKwkJcGF0aD0kKGN5Z3BhdGggLS13aW5kb3dzICIkcGF0aCIpCisJZWxzZQorCQlwYXRoPSQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiJHBhdGgiKQorCWZpICYmCisJZWNobyAiJHBhdGgiCit9CisKICMgVHJ5IHRvIHBpY2sgYSB1bmlxdWUgcG9ydDogZ3Vlc3MgYSBsYXJnZSBudW1iZXIsIHRoZW4gaG9wZQogIyBubyBtb3JlIHRoYW4gb25lIG9mIGVhY2ggdGVzdCBpcyBydW5uaW5nLgogIwpAQCAtMzIsNyArNTEsNyBAQAogZXhwb3J0IFA0UE9SVCBQNENMSUVOVCBQNEVESVRPUgogCiBkYj0iJFRSQVNIX0RJUkVDVE9SWS9kYiIKLWNsaT0kKHRlc3QtcGF0aC11dGlscyByZWFsX3BhdGggIiRUUkFTSF9ESVJFQ1RPUlkvY2xpIikKK2NsaT0iJFRSQVNIX0RJUkVDVE9SWS9jbGkiCiBnaXQ9IiRUUkFTSF9ESVJFQ1RPUlkvZ2l0IgogcGlkZmlsZT0iJFRSQVNIX0RJUkVDVE9SWS9wNGQucGlkIgogCkBAIC00MCw4ICs1OSwxMSBAQAogCW1rZGlyIC1wICIkZGIiICIkY2xpIiAiJGdpdCIgJiYKIAlybSAtZiAiJHBpZGZpbGUiICYmCiAJKAotCQlwNGQgLXEgLXIgIiRkYiIgLXAgJFA0RFBPUlQgJgotCQllY2hvICQhID4iJHBpZGZpbGUiCisJCWNkICIkZGIiICYmCisJCXsKKwkJCXA0ZCAtcSAtcCAkUDREUE9SVCAmCisJCQllY2hvICQhID4iJHBpZGZpbGUiCisJCX0KIAkpICYmCiAKIAkjIFRoaXMgZ2l2ZXMgcDRkIGEgbG9uZyB0aW1lIHRvIHN0YXJ0IHVwLCBhcyBpdCBjYW4gYmUKQEAgLTc0LDE1ICs5Niw4IEBACiAJZmkKIAogCSMgYnVpbGQgYSBjbGllbnQKLQkoCi0JCWNkICIkY2xpIiAmJgotCQlwNCBjbGllbnQgLWkgPDwtRU9GCi0JCUNsaWVudDogY2xpZW50Ci0JCURlc2NyaXB0aW9uOiBjbGllbnQKLQkJUm9vdDogJGNsaQotCQlWaWV3OiAvL2RlcG90Ly4uLiAvL2NsaWVudC8uLi4KLQkJRU9GCi0JKQorCWNsaWVudF92aWV3ICIvL2RlcG90Ly4uLiAvL2NsaWVudC8uLi4iICYmCisKIAlyZXR1cm4gMAogfQogCkBAIC0xMjMsMTMgKzEzOCwyNiBAQAogY2xpZW50X3ZpZXcoKSB7CiAJKAogCQljYXQgPDwtRU9GICYmCi0JCUNsaWVudDogY2xpZW50Ci0JCURlc2NyaXB0aW9uOiBjbGllbnQKKwkJQ2xpZW50OiAkUDRDTElFTlQKKwkJRGVzY3JpcHRpb246ICRQNENMSUVOVAogCQlSb290OiAkY2xpCisJCUFsdFJvb3RzOiAkKG5hdGl2ZV9wYXRoICIkY2xpIikKKwkJTGluZUVuZDogdW5peAogCQlWaWV3OgogCQlFT0YKLQkJZm9yIGFyZyA7IGRvCi0JCQlwcmludGYgIlx0JGFyZ1xuIgotCQlkb25lCisJCXByaW50ZiAiXHQlc1xuIiAiJEAiCiAJKSB8IHA0IGNsaWVudCAtaQogfQorCitpc19jbGlfZmlsZV93cml0ZWFibGUoKSB7CisJIyBjeWd3aW4gdmVyc2lvbiBvZiBwNCBkb2VzIG5vdCBzZXQgcmVhZC1vbmx5IGF0dHIsCisJIyB3aWxsIGJlIG1hcmtlZCA0NDQgYnV0IC13IGlzIHRydWUKKwlmaWxlPSIkMSIgJiYKKwlpZiB0ZXN0X2hhdmVfcHJlcmVxIENZR1dJTiAmJiBwNCAtViB8IGdyZXAgLXEgQ1lHV0lOCisJdGhlbgorCQlzdGF0PSQoc3RhdCAtLWZvcm1hdD0lYSAiJGZpbGUiKSAmJgorCQl0ZXN0ICRzdGF0ID0gNjQ0CisJZWxzZQorCQl0ZXN0IC13ICIkZmlsZSIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvdC9saWItZ2l0LXN2bi5zaCBiL3QvbGliLWdpdC1zdm4uc2gKaW5kZXggMTk5ZjIyYy4uYzVlNTViMSAxMDA2NDQKLS0tIGEvdC9saWItZ2l0LXN2bi5zaAorKysgYi90L2xpYi1naXQtc3ZuLnNoCkBAIC0xNDgsNyArMTQ4LDcgQEAKIGNvbnZlcnRfdG9fcmV2X2RiICgpIHsKIAkiJFBFUkxfUEFUSCIgLXcgLS0gLSAiJEAiIDw8XEVPRgogdXNlIHN0cmljdDsKLUBBUkdWID09IDIgb3IgZGllICJVc2FnZTogY29udmVydF90b19yZXZfZGIgPGlucHV0PiA8b3V0cHV0PiI7CitAQVJHViA9PSAyIG9yIGRpZSAidXNhZ2U6IGNvbnZlcnRfdG9fcmV2X2RiIDxpbnB1dD4gPG91dHB1dD4iOwogb3BlbiBteSAkd3IsICcrPicsICRBUkdWWzFdIG9yIGRpZSAiJCE6IGNvdWxkbid0IG9wZW46ICRBUkdWWzFdIjsKIG9wZW4gbXkgJHJkLCAnPCcsICRBUkdWWzBdIG9yIGRpZSAiJCE6IGNvdWxkbid0IG9wZW46ICRBUkdWWzBdIjsKIG15ICRzaXplID0gKHN0YXQoJHJkKSlbN107CmRpZmYgLS1naXQgYS90L2xpYi1ncGcvcHVicmluZy5ncGcgYi90L2xpYi1ncGcvcHVicmluZy5ncGcKaW5kZXggODM4NTVmYS4uMWEzYzJkNCAxMDA2NDQKLS0tIGEvdC9saWItZ3BnL3B1YnJpbmcuZ3BnCisrKyBiL3QvbGliLWdwZy9wdWJyaW5nLmdwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L2xpYi1ncGcvcmFuZG9tX3NlZWQgYi90L2xpYi1ncGcvcmFuZG9tX3NlZWQKaW5kZXggOGZlZDEzMy4uOTVkMjQ5ZiAxMDA2NDQKLS0tIGEvdC9saWItZ3BnL3JhbmRvbV9zZWVkCisrKyBiL3QvbGliLWdwZy9yYW5kb21fc2VlZApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L2xpYi1ncGcvc2VjcmluZy5ncGcgYi90L2xpYi1ncGcvc2VjcmluZy5ncGcKaW5kZXggZDgzMWNkOS4uODJkY2E4ZiAxMDA2NDQKLS0tIGEvdC9saWItZ3BnL3NlY3JpbmcuZ3BnCisrKyBiL3QvbGliLWdwZy9zZWNyaW5nLmdwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L2xpYi1ncGcvdHJ1c3RkYi5ncGcgYi90L2xpYi1ncGcvdHJ1c3RkYi5ncGcKaW5kZXggYWJhY2U5Ni4uNDg3OWFlOSAxMDA2NDQKLS0tIGEvdC9saWItZ3BnL3RydXN0ZGIuZ3BnCisrKyBiL3QvbGliLWdwZy90cnVzdGRiLmdwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L2xpYi1odHRwZC9hcGFjaGUuY29uZiBiL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCmluZGV4IDkzOGI0Y2YuLmRkMTdlM2EgMTAwNjQ0Ci0tLSBhL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCisrKyBiL3QvbGliLWh0dHBkL2FwYWNoZS5jb25mCkBAIC0xLDUgKzEsNCBAQAogU2VydmVyTmFtZSBkdW1teQotTG9ja0ZpbGUgYWNjZXB0LmxvY2sKIFBpZEZpbGUgaHR0cGQucGlkCiBEb2N1bWVudFJvb3Qgd3d3CiBMb2dGb3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIiIGNvbW1vbgpAQCAtMjQsNiArMjMsMTAgQEAKIAlMb2FkTW9kdWxlIHZlcnNpb25fbW9kdWxlIG1vZHVsZXMvbW9kX3ZlcnNpb24uc28KIDwvSWZNb2R1bGU+CiAKKzxJZlZlcnNpb24gPCAyLjQ+CitMb2NrRmlsZSBhY2NlcHQubG9jaworPC9JZlZlcnNpb24+CisKIDxJZlZlcnNpb24gPCAyLjE+CiA8SWZNb2R1bGUgIW1vZF9hdXRoLmM+CiAJTG9hZE1vZHVsZSBhdXRoX21vZHVsZSBtb2R1bGVzL21vZF9hdXRoLnNvCkBAIC00MCw2ICs0MywyNCBAQAogPElmTW9kdWxlICFtb2RfYXV0aHpfdXNlci5jPgogCUxvYWRNb2R1bGUgYXV0aHpfdXNlcl9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aHpfdXNlci5zbwogPC9JZk1vZHVsZT4KKzxJZk1vZHVsZSAhbW9kX2F1dGh6X2hvc3QuYz4KKwlMb2FkTW9kdWxlIGF1dGh6X2hvc3RfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGh6X2hvc3Quc28KKzwvSWZNb2R1bGU+Cis8L0lmVmVyc2lvbj4KKworPElmVmVyc2lvbiA+PSAyLjQ+Cis8SWZNb2R1bGUgIW1vZF9hdXRobl9jb3JlLmM+CisJTG9hZE1vZHVsZSBhdXRobl9jb3JlX21vZHVsZSBtb2R1bGVzL21vZF9hdXRobl9jb3JlLnNvCis8L0lmTW9kdWxlPgorPElmTW9kdWxlICFtb2RfYXV0aHpfY29yZS5jPgorCUxvYWRNb2R1bGUgYXV0aHpfY29yZV9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aHpfY29yZS5zbworPC9JZk1vZHVsZT4KKzxJZk1vZHVsZSAhbW9kX2FjY2Vzc19jb21wYXQuYz4KKwlMb2FkTW9kdWxlIGFjY2Vzc19jb21wYXRfbW9kdWxlIG1vZHVsZXMvbW9kX2FjY2Vzc19jb21wYXQuc28KKzwvSWZNb2R1bGU+Cis8SWZNb2R1bGUgIW1vZF9tcG1fcHJlZm9yay5jPgorCUxvYWRNb2R1bGUgbXBtX3ByZWZvcmtfbW9kdWxlIG1vZHVsZXMvbW9kX21wbV9wcmVmb3JrLnNvCis8L0lmTW9kdWxlPgogPC9JZlZlcnNpb24+CiAKIFBhc3NFbnYgR0lUX1ZBTEdSSU5ECkBAIC02MSw2ICs4MiwxMSBAQAogCVNldEVudiBHSVRfQ09NTUlUVEVSX05BTUUgIkN1c3RvbSBVc2VyIgogCVNldEVudiBHSVRfQ09NTUlUVEVSX0VNQUlMIGN1c3RvbUBleGFtcGxlLmNvbQogPC9Mb2NhdGlvbk1hdGNoPgorPExvY2F0aW9uTWF0Y2ggL3NtYXJ0X25hbWVzcGFjZS8+CisJU2V0RW52IEdJVF9FWEVDX1BBVEggJHtHSVRfRVhFQ19QQVRIfQorCVNldEVudiBHSVRfSFRUUF9FWFBPUlRfQUxMCisJU2V0RW52IEdJVF9OQU1FU1BBQ0UgbnMKKzwvTG9jYXRpb25NYXRjaD4KIFNjcmlwdEFsaWFzTWF0Y2ggL3NtYXJ0XypbXi9dKi8oLiopICR7R0lUX0VYRUNfUEFUSH0vZ2l0LWh0dHAtYmFja2VuZC8kMQogU2NyaXB0QWxpYXMgL2Jyb2tlbl9zbWFydC8gYnJva2VuLXNtYXJ0LWh0dHAuc2gvCiA8RGlyZWN0b3J5ICR7R0lUX0VYRUNfUEFUSH0+CkBAIC0xMTAsNiArMTM2LDIxIEBACiAJUmVxdWlyZSB2YWxpZC11c2VyCiA8L0xvY2F0aW9uTWF0Y2g+CiAKK1Jld3JpdGVDb25kICV7UVVFUllfU1RSSU5HfSBzZXJ2aWNlPWdpdC1yZWNlaXZlLXBhY2sgW09SXQorUmV3cml0ZUNvbmQgJXtSRVFVRVNUX1VSSX0gL2dpdC1yZWNlaXZlLXBhY2skCitSZXdyaXRlUnVsZSBeL2hhbGYtYXV0aC1jb21wbGV0ZS8gLSBbRT1BVVRIUkVRVUlSRUQ6eWVzXQorCis8TG9jYXRpb24gL2hhbGYtYXV0aC1jb21wbGV0ZS8+CisgIE9yZGVyIERlbnksQWxsb3cKKyAgRGVueSBmcm9tIGVudj1BVVRIUkVRVUlSRUQKKworICBBdXRoVHlwZSBCYXNpYworICBBdXRoTmFtZSAiR2l0IEFjY2VzcyIKKyAgQXV0aFVzZXJGaWxlIHBhc3N3ZAorICBSZXF1aXJlIHZhbGlkLXVzZXIKKyAgU2F0aXNmeSBBbnkKKzwvTG9jYXRpb24+CisKIDxJZkRlZmluZSBEQVY+CiAJTG9hZE1vZHVsZSBkYXZfbW9kdWxlIG1vZHVsZXMvbW9kX2Rhdi5zbwogCUxvYWRNb2R1bGUgZGF2X2ZzX21vZHVsZSBtb2R1bGVzL21vZF9kYXZfZnMuc28KZGlmZiAtLWdpdCBhL3QvbGliLXJlYmFzZS5zaCBiL3QvbGliLXJlYmFzZS5zaAppbmRleCA2Y2NmNzk3Li40Yjc0YWU0IDEwMDY0NAotLS0gYS90L2xpYi1yZWJhc2Uuc2gKKysrIGIvdC9saWItcmViYXNlLnNoCkBAIC02NSwzICs2NSwzNiBAQAogCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2Zha2UtZWRpdG9yLnNoIgogCWNobW9kIGEreCBmYWtlLWVkaXRvci5zaAogfQorCisjIGNoZWNrcyB0aGF0IHRoZSByZXZpc2lvbnMgaW4gIiQyIiByZXByZXNlbnQgYSBsaW5lYXIgcmFuZ2Ugd2l0aCB0aGUKKyMgc3ViamVjdHMgaW4gIiQxIgordGVzdF9saW5lYXJfcmFuZ2UgKCkgeworCXJldmxpc3RfbWVyZ2VzPSQoZ2l0IHJldi1saXN0IC0tbWVyZ2VzICIkMiIpICYmCisJdGVzdCAteiAiJHJldmxpc3RfbWVyZ2VzIiAmJgorCWV4cGVjdGVkPSQxCisJc2V0IC0tICQoZ2l0IGxvZyAtLXJldmVyc2UgLS1mb3JtYXQ9JXMgIiQyIikKKwl0ZXN0ICIkZXhwZWN0ZWQiID0gIiQqIgorfQorCityZXNldF9yZWJhc2UgKCkgeworCXRlc3RfbWlnaHRfZmFpbCBnaXQgcmViYXNlIC0tYWJvcnQgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNsZWFuIC1mCit9CisKK2NoZXJyeV9waWNrICgpIHsKKwlnaXQgY2hlcnJ5LXBpY2sgLW4gIiQyIiAmJgorCWdpdCBjb21taXQgLW0gIiQxIiAmJgorCWdpdCB0YWcgIiQxIgorfQorCityZXZlcnQgKCkgeworCWdpdCByZXZlcnQgLW4gIiQyIiAmJgorCWdpdCBjb21taXQgLW0gIiQxIiAmJgorCWdpdCB0YWcgIiQxIgorfQorCittYWtlX2VtcHR5ICgpIHsKKwlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gIiQxIiAmJgorCWdpdCB0YWcgIiQxIgorfQpkaWZmIC0tZ2l0IGEvdC9wZXJmL3AwMDAyLXJlYWQtY2FjaGUuc2ggYi90L3BlcmYvcDAwMDItcmVhZC1jYWNoZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MTgwYWU5Ci0tLSAvZGV2L251bGwKKysrIGIvdC9wZXJmL3AwMDAyLXJlYWQtY2FjaGUuc2gKQEAgLTAsMCArMSwxNCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249IlRlc3RzIHBlcmZvcm1hbmNlIG9mIHJlYWRpbmcgdGhlIGluZGV4IgorCisuIC4vcGVyZi1saWIuc2gKKwordGVzdF9wZXJmX2RlZmF1bHRfcmVwbworCitjb3VudD0xMDAwCit0ZXN0X3BlcmYgInJlYWRfY2FjaGUvZGlzY2FyZF9jYWNoZSAkY291bnQgdGltZXMiICIKKwl0ZXN0LXJlYWQtY2FjaGUgJGNvdW50CisiCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC9wZXJmL3A0MjExLWxpbmUtbG9nLnNoIGIvdC9wZXJmL3A0MjExLWxpbmUtbG9nLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNkMDc0YjAKLS0tIC9kZXYvbnVsbAorKysgYi90L3BlcmYvcDQyMTEtbGluZS1sb2cuc2gKQEAgLTAsMCArMSwzNCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3RzIGxvZyAtTCBwZXJmb3JtYW5jZScKKy4gLi9wZXJmLWxpYi5zaAorCit0ZXN0X3BlcmZfZGVmYXVsdF9yZXBvCisKKyMgUGljayBhIGZpbGUgdG8gbG9nIHBzZXVkby1yYW5kb21seS4gIFRoZSBzb3J0IGtleSBpcyB0aGUgYmxvYiBoYXNoLAorIyBzbyBpdCBpcyBzdGFibGUuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZWxlY3QgYSBmaWxlJyAnCisJZ2l0IGxzLXRyZWUgSEVBRCB8IGdyZXAgXjEwMDY0NCB8CisJc29ydCAtayAzIHwgaGVhZCAtMSB8IGN1dCAtZiAyID5maWxlbGlzdAorJworCitmaWxlPSQoY2F0IGZpbGVsaXN0KQorZXhwb3J0IGZpbGUKKwordGVzdF9wZXJmICdnaXQgcmV2LWxpc3QgLS10b3BvLW9yZGVyIChiYXNlbGluZSknICcKKwlnaXQgcmV2LWxpc3QgLS10b3BvLW9yZGVyIEhFQUQgPi9kZXYvbnVsbAorJworCit0ZXN0X3BlcmYgJ2dpdCBsb2cgLS1mb2xsb3cgKGJhc2VsaW5lIGZvciAtTSknICcKKwlnaXQgbG9nIC0tb25lbGluZSAtLWZvbGxvdyAtLSAiJGZpbGUiID4vZGV2L251bGwKKycKKwordGVzdF9wZXJmICdnaXQgbG9nIC1MJyAnCisJZ2l0IGxvZyAtTCAxOiIkZmlsZSIgPi9kZXYvbnVsbAorJworCit0ZXN0X3BlcmYgJ2dpdCBsb2cgLU0gLUwnICcKKwlnaXQgbG9nIC1NIC1MIDE6IiRmaWxlIiA+L2Rldi9udWxsCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MDAwMC1iYXNpYy5zaCBiL3QvdDAwMDAtYmFzaWMuc2gKaW5kZXggNTYyY2Y0MS4uMGYxMzE4MCAxMDA3NTUKLS0tIGEvdC90MDAwMC1iYXNpYy5zaAorKysgYi90L3QwMDAwLWJhc2ljLnNoCkBAIC00NSwzOSArNDUsMTc2IEBACiAJZmFsc2UKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UgKHJ1biBpbiBzdWIgdGVzdC1saWIpJyAiCi0JbWtkaXIgcGFzc2luZy10b2RvICYmCi0JKGNkIHBhc3NpbmctdG9kbyAmJgotCWNhdCA+cGFzc2luZy10b2RvLnNoIDw8LUVPRiAmJgotCSMhJFNIRUxMX1BBVEgKK3J1bl9zdWJfdGVzdF9saWJfdGVzdCAoKSB7CisJbmFtZT0iJDEiIGRlc2NyPSIkMiIgIyBzdGRpbiBpcyB0aGUgYm9keSBvZiB0aGUgdGVzdCBjb2RlCisJbWtkaXIgIiRuYW1lIiAmJgorCSgKKwkJY2QgIiRuYW1lIiAmJgorCQljYXQgPiIkbmFtZS5zaCIgPDwtRU9GICYmCisJCSMhJFNIRUxMX1BBVEgKIAotCXRlc3RfZGVzY3JpcHRpb249J0EgcGFzc2luZyBUT0RPIHRlc3QKKwkJdGVzdF9kZXNjcmlwdGlvbj0nJGRlc2NyIChydW4gaW4gc3ViIHRlc3QtbGliKQogCi0JVGhpcyBpcyBydW4gaW4gYSBzdWIgdGVzdC1saWIgc28gdGhhdCB3ZSBkbyBub3QgZ2V0IGluY29ycmVjdAotCXBhc3NpbmcgbWV0cmljcwotCScKKwkJVGhpcyBpcyBydW4gaW4gYSBzdWIgdGVzdC1saWIgc28gdGhhdCB3ZSBkbyBub3QgZ2V0IGluY29ycmVjdAorCQlwYXNzaW5nIG1ldHJpY3MKKwkJJwogCi0JIyBQb2ludCB0byB0aGUgdC90ZXN0LWxpYi5zaCwgd2hpY2ggaXNuJ3QgaW4gLi4vIGFzIHVzdWFsCi0JVEVTVF9ESVJFQ1RPUlk9XCIkVEVTVF9ESVJFQ1RPUllcIgotCS4gXCJcJFRFU1RfRElSRUNUT1JZXCIvdGVzdC1saWIuc2gKKwkJIyBQb2ludCB0byB0aGUgdC90ZXN0LWxpYi5zaCwgd2hpY2ggaXNuJ3QgaW4gLi4vIGFzIHVzdWFsCisJCS4gIlwkVEVTVF9ESVJFQ1RPUlkiL3Rlc3QtbGliLnNoCisJCUVPRgorCQljYXQgPj4iJG5hbWUuc2giICYmCisJCWNobW9kICt4ICIkbmFtZS5zaCIgJiYKKwkJZXhwb3J0IFRFU1RfRElSRUNUT1JZICYmCisJCS4vIiRuYW1lLnNoIiA+b3V0IDI+ZXJyCisJKQorfQogCi0JdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UnICcKLQkJOgotCScKK2NoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0ICgpIHsKKwluYW1lPSIkMSIgIyBzdGRpbiBpcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gdGhlIHRlc3QKKwkoCisJCWNkICIkbmFtZSIgJiYKKwkJISB0ZXN0IC1zIGVyciAmJgorCQlzZWQgLWUgJ3MvXj4gLy8nIC1lICdzL1okLy8nID5leHBlY3QgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dAorCSkKK30KIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgZnVsbHkgcGFzc2luZyB0ZXN0IHN1aXRlJyAiCisJcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IGZ1bGwtcGFzcyAnMyBwYXNzaW5nIHRlc3RzJyA8PC1cXEVPRiAmJgorCWZvciBpIGluIDEgMiAzCisJZG8KKwkJdGVzdF9leHBlY3Rfc3VjY2VzcyBcInBhc3NpbmcgdGVzdCAjXCRpXCIgJ3RydWUnCisJZG9uZQogCXRlc3RfZG9uZQogCUVPRgotCWNobW9kICt4IHBhc3NpbmctdG9kby5zaCAmJgotCS4vcGFzc2luZy10b2RvLnNoID5vdXQgMj5lcnIgJiYKLQkhIHRlc3QgLXMgZXJyICYmCi0Jc2VkIC1lICdzL14+IC8vJyA+ZXhwZWN0IDw8LVxcRU9GICYmCi0JPiBvayAxIC0gcHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UgIyBUT0RPIGtub3duIGJyZWFrYWdlCi0JPiAjIGZpeGVkIDEga25vd24gYnJlYWthZ2UocykKLQk+ICMgcGFzc2VkIGFsbCAxIHRlc3QocykKKwljaGVja19zdWJfdGVzdF9saWJfdGVzdCBmdWxsLXBhc3MgPDwtXFxFT0YKKwk+IG9rIDEgLSBwYXNzaW5nIHRlc3QgIzEKKwk+IG9rIDIgLSBwYXNzaW5nIHRlc3QgIzIKKwk+IG9rIDMgLSBwYXNzaW5nIHRlc3QgIzMKKwk+ICMgcGFzc2VkIGFsbCAzIHRlc3QocykKKwk+IDEuLjMKKwlFT0YKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgcGFydGlhbGx5IHBhc3NpbmcgdGVzdCBzdWl0ZScgIgorCXRlc3RfbXVzdF9mYWlsIHJ1bl9zdWJfdGVzdF9saWJfdGVzdCBcCisJCXBhcnRpYWwtcGFzcyAnMi8zIHRlc3RzIHBhc3NpbmcnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0ICMxJyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QgIzInICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXNzaW5nIHRlc3QgIzMnICd0cnVlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IHBhcnRpYWwtcGFzcyA8PC1cXEVPRgorCT4gb2sgMSAtIHBhc3NpbmcgdGVzdCAjMQorCT4gbm90IG9rIDIgLSBmYWlsaW5nIHRlc3QgIzIKKwkjCWZhbHNlCisJPiBvayAzIC0gcGFzc2luZyB0ZXN0ICMzCisJPiAjIGZhaWxlZCAxIGFtb25nIDMgdGVzdChzKQorCT4gMS4uMworCUVPRgorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgIgorCXJ1bl9zdWJfdGVzdF9saWJfdGVzdCBmYWlsaW5nLXRvZG8gJ0EgZmFpbGluZyBUT0RPIHRlc3QnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgJ2ZhbHNlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IGZhaWxpbmctdG9kbyA8PC1cXEVPRgorCT4gb2sgMSAtIHBhc3NpbmcgdGVzdAorCT4gbm90IG9rIDIgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+ICMgc3RpbGwgaGF2ZSAxIGtub3duIGJyZWFrYWdlKHMpCisJPiAjIHBhc3NlZCBhbGwgcmVtYWluaW5nIDEgdGVzdChzKQorCT4gMS4uMgorCUVPRgorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgZml4ZWQgYSBrbm93biBicmVha2FnZScgIgorCXJ1bl9zdWJfdGVzdF9saWJfdGVzdCBwYXNzaW5nLXRvZG8gJ0EgcGFzc2luZyBUT0RPIHRlc3QnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UnICd0cnVlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IHBhc3NpbmctdG9kbyA8PC1cXEVPRgorCT4gb2sgMSAtIHByZXRlbmQgd2UgaGF2ZSBmaXhlZCBhIGtub3duIGJyZWFrYWdlICMgVE9ETyBrbm93biBicmVha2FnZSB2YW5pc2hlZAorCT4gIyAxIGtub3duIGJyZWFrYWdlKHMpIHZhbmlzaGVkOyBwbGVhc2UgdXBkYXRlIHRlc3QocykKIAk+IDEuLjEKIAlFT0YKLQl0ZXN0X2NtcCBleHBlY3Qgb3V0KQogIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgZml4ZWQgb25lIG9mIHR3byBrbm93biBicmVha2FnZXMgKHJ1biBpbiBzdWIgdGVzdC1saWIpJyAiCisJcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IHBhcnRpYWxseS1wYXNzaW5nLXRvZG9zIFwKKwkJJzIgVE9ETyB0ZXN0cywgb25lIHBhc3NpbmcnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGEga25vd24gYnJlYWthZ2UnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmV0ZW5kIHdlIGhhdmUgYSBwYXNzaW5nIHRlc3QnICd0cnVlJworCXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3ByZXRlbmQgd2UgaGF2ZSBmaXhlZCBhbm90aGVyIGtub3duIGJyZWFrYWdlJyAndHJ1ZScKKwl0ZXN0X2RvbmUKKwlFT0YKKwljaGVja19zdWJfdGVzdF9saWJfdGVzdCBwYXJ0aWFsbHktcGFzc2luZy10b2RvcyA8PC1cXEVPRgorCT4gbm90IG9rIDEgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+IG9rIDIgLSBwcmV0ZW5kIHdlIGhhdmUgYSBwYXNzaW5nIHRlc3QKKwk+IG9rIDMgLSBwcmV0ZW5kIHdlIGhhdmUgZml4ZWQgYW5vdGhlciBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UgdmFuaXNoZWQKKwk+ICMgMSBrbm93biBicmVha2FnZShzKSB2YW5pc2hlZDsgcGxlYXNlIHVwZGF0ZSB0ZXN0KHMpCisJPiAjIHN0aWxsIGhhdmUgMSBrbm93biBicmVha2FnZShzKQorCT4gIyBwYXNzZWQgYWxsIHJlbWFpbmluZyAxIHRlc3QocykKKwk+IDEuLjMKKwlFT0YKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgcGFzcywgZmFpbCwgYW5kIGtub3duIGJyZWFrYWdlJyAiCisJdGVzdF9tdXN0X2ZhaWwgcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IFwKKwkJbWl4ZWQtcmVzdWx0czEgJ21peGVkIHJlc3VsdHMgIzEnIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgJ2ZhbHNlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IG1peGVkLXJlc3VsdHMxIDw8LVxcRU9GCisJPiBvayAxIC0gcGFzc2luZyB0ZXN0CisJPiBub3Qgb2sgMiAtIGZhaWxpbmcgdGVzdAorCT4gIwlmYWxzZQorCT4gbm90IG9rIDMgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+ICMgc3RpbGwgaGF2ZSAxIGtub3duIGJyZWFrYWdlKHMpCisJPiAjIGZhaWxlZCAxIGFtb25nIHJlbWFpbmluZyAyIHRlc3QocykKKwk+IDEuLjMKKwlFT0YKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldGVuZCB3ZSBoYXZlIGEgbWl4IG9mIGFsbCBwb3NzaWJsZSByZXN1bHRzJyAiCisJdGVzdF9tdXN0X2ZhaWwgcnVuX3N1Yl90ZXN0X2xpYl90ZXN0IFwKKwkJbWl4ZWQtcmVzdWx0czIgJ21peGVkIHJlc3VsdHMgIzInIDw8LVxcRU9GICYmCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXNzaW5nIHRlc3QnICd0cnVlJworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Bhc3NpbmcgdGVzdCcgJ3RydWUnCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncGFzc2luZyB0ZXN0JyAndHJ1ZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICdmYWlsaW5nIHRlc3QnICdmYWxzZScKKwl0ZXN0X2V4cGVjdF9mYWlsdXJlICdwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZScgJ2ZhbHNlJworCXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3ByZXRlbmQgd2UgaGF2ZSBhIGtub3duIGJyZWFrYWdlJyAnZmFsc2UnCisJdGVzdF9leHBlY3RfZmFpbHVyZSAncHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UnICd0cnVlJworCXRlc3RfZG9uZQorCUVPRgorCWNoZWNrX3N1Yl90ZXN0X2xpYl90ZXN0IG1peGVkLXJlc3VsdHMyIDw8LVxcRU9GCisJPiBvayAxIC0gcGFzc2luZyB0ZXN0CisJPiBvayAyIC0gcGFzc2luZyB0ZXN0CisJPiBvayAzIC0gcGFzc2luZyB0ZXN0CisJPiBvayA0IC0gcGFzc2luZyB0ZXN0CisJPiBub3Qgb2sgNSAtIGZhaWxpbmcgdGVzdAorCT4gIwlmYWxzZQorCT4gbm90IG9rIDYgLSBmYWlsaW5nIHRlc3QKKwk+ICMJZmFsc2UKKwk+IG5vdCBvayA3IC0gZmFpbGluZyB0ZXN0CisJPiAjCWZhbHNlCisJPiBub3Qgb2sgOCAtIHByZXRlbmQgd2UgaGF2ZSBhIGtub3duIGJyZWFrYWdlICMgVE9ETyBrbm93biBicmVha2FnZQorCT4gbm90IG9rIDkgLSBwcmV0ZW5kIHdlIGhhdmUgYSBrbm93biBicmVha2FnZSAjIFRPRE8ga25vd24gYnJlYWthZ2UKKwk+IG9rIDEwIC0gcHJldGVuZCB3ZSBoYXZlIGZpeGVkIGEga25vd24gYnJlYWthZ2UgIyBUT0RPIGtub3duIGJyZWFrYWdlIHZhbmlzaGVkCisJPiAjIDEga25vd24gYnJlYWthZ2UocykgdmFuaXNoZWQ7IHBsZWFzZSB1cGRhdGUgdGVzdChzKQorCT4gIyBzdGlsbCBoYXZlIDIga25vd24gYnJlYWthZ2UocykKKwk+ICMgZmFpbGVkIDMgYW1vbmcgcmVtYWluaW5nIDcgdGVzdChzKQorCT4gMS4uMTAKKwlFT0YKKyIKKwogdGVzdF9zZXRfcHJlcmVxIEhBVkVJVAogaGF2ZWl0PW5vCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIEhBVkVJVCAndGVzdCBydW5zIGlmIHByZXJlcXVpc2l0ZSBpcyBzYXRpc2ZpZWQnICcKQEAgLTE1OSwxOSArMjk2LDggQEAKIGZpCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3RzIGNsZWFuIHVwIGV2ZW4gb24gZmFpbHVyZXMnICIKLQlta2RpciBmYWlsaW5nLWNsZWFudXAgJiYKLQkoCi0JY2QgZmFpbGluZy1jbGVhbnVwICYmCi0KLQljYXQgPmZhaWxpbmctY2xlYW51cC5zaCA8PC1FT0YgJiYKLQkjISRTSEVMTF9QQVRICi0KLQl0ZXN0X2Rlc2NyaXB0aW9uPSdGYWlsaW5nIHRlc3RzIHdpdGggY2xlYW51cCBjb21tYW5kcycKLQotCSMgUG9pbnQgdG8gdGhlIHQvdGVzdC1saWIuc2gsIHdoaWNoIGlzbid0IGluIC4uLyBhcyB1c3VhbAotCVRFU1RfRElSRUNUT1JZPVwiJFRFU1RfRElSRUNUT1JZXCIKLQkuIFwiXCRURVNUX0RJUkVDVE9SWVwiL3Rlc3QtbGliLnNoCi0KKwl0ZXN0X211c3RfZmFpbCBydW5fc3ViX3Rlc3RfbGliX3Rlc3QgXAorCQlmYWlsaW5nLWNsZWFudXAgJ0ZhaWxpbmcgdGVzdHMgd2l0aCBjbGVhbnVwIGNvbW1hbmRzJyA8PC1cXEVPRiAmJgogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3RzIGNsZWFuIHVwIGV2ZW4gYWZ0ZXIgYSBmYWlsdXJlJyAnCiAJCXRvdWNoIGNsZWFuLWFmdGVyLWZhaWx1cmUgJiYKIAkJdGVzdF93aGVuX2ZpbmlzaGVkIHJtIGNsZWFuLWFmdGVyLWZhaWx1cmUgJiYKQEAgLTE4MSwyOSArMzA3LDIxIEBACiAJCXRlc3Rfd2hlbl9maW5pc2hlZCBcIihleGl0IDIpXCIKIAknCiAJdGVzdF9kb25lCi0KIAlFT0YKLQotCWNobW9kICt4IGZhaWxpbmctY2xlYW51cC5zaCAmJgotCXRlc3RfbXVzdF9mYWlsIC4vZmFpbGluZy1jbGVhbnVwLnNoID5vdXQgMj5lcnIgJiYKLQkhIHRlc3QgLXMgZXJyICYmCi0JISB0ZXN0IC1mIFwidHJhc2ggZGlyZWN0b3J5LmZhaWxpbmctY2xlYW51cC9jbGVhbi1hZnRlci1mYWlsdXJlXCIgJiYKLQlzZWQgLWUgJ3MvWiQvLycgLWUgJ3MvXj4gLy8nID5leHBlY3QgPDwtXFxFT0YgJiYKLQk+IG5vdCBvayAtIDEgdGVzdHMgY2xlYW4gdXAgZXZlbiBhZnRlciBhIGZhaWx1cmUKKwljaGVja19zdWJfdGVzdF9saWJfdGVzdCBmYWlsaW5nLWNsZWFudXAgPDwtXFxFT0YKKwk+IG5vdCBvayAxIC0gdGVzdHMgY2xlYW4gdXAgZXZlbiBhZnRlciBhIGZhaWx1cmUKIAk+ICMJWgogCT4gIwl0b3VjaCBjbGVhbi1hZnRlci1mYWlsdXJlICYmCiAJPiAjCXRlc3Rfd2hlbl9maW5pc2hlZCBybSBjbGVhbi1hZnRlci1mYWlsdXJlICYmCiAJPiAjCShleGl0IDEpCiAJPiAjCVoKLQk+IG5vdCBvayAtIDIgZmFpbHVyZSB0byBjbGVhbiB1cCBjYXVzZXMgdGhlIHRlc3QgdG8gZmFpbAorCT4gbm90IG9rIDIgLSBmYWlsdXJlIHRvIGNsZWFuIHVwIGNhdXNlcyB0aGUgdGVzdCB0byBmYWlsCiAJPiAjCVoKIAk+ICMJdGVzdF93aGVuX2ZpbmlzaGVkIFwiKGV4aXQgMilcIgogCT4gIwlaCiAJPiAjIGZhaWxlZCAyIGFtb25nIDIgdGVzdChzKQogCT4gMS4uMgogCUVPRgotCXRlc3RfY21wIGV4cGVjdCBvdXQKLQkpCiAiCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTI0OSwyMiArMzY3LDYgQEAKIAogIyBWYXJpb3VzIHR5cGVzIG9mIG9iamVjdHMKIAotIyBTb21lIGZpbGVzeXN0ZW1zIGRvIG5vdCBzdXBwb3J0IHN5bWJsaWMgbGlua3M7IG9uIHN1Y2ggc3lzdGVtcwotIyBzb21lIGV4cGVjdGVkIHZhbHVlcyBhcmUgZGlmZmVyZW50Ci1pZiB0ZXN0X2hhdmVfcHJlcmVxIFNZTUxJTktTCi10aGVuCi0JZXhwZWN0ZmlsdGVyPWNhdAotCWV4cGVjdGVkdHJlZT0wODc3MDRhOTZiYWYxYzJkMWM4NjlhOGIwODQ0ODFlMTIxYzg4YjViCi0JZXhwZWN0ZWRwdHJlZTE9MjFhZTgyNjljYWNiZTU3YWUwOTEzOGRjYzNhMjg4N2Y5MDRkMDJiMwotCWV4cGVjdGVkcHRyZWUyPTNjNWU1Mzk5ZjNhMzMzZWRkZWNjZTdhOWI5NDY1YjYzZjY1ZjUxZTIKLWVsc2UKLQlleHBlY3RmaWx0ZXI9J2dyZXAgLXYgc3ltJwotCWV4cGVjdGVkdHJlZT04ZTE4ZWRmN2Q3ZWRjZjQzNzFhM2FjNmFlNWYwN2MyNjQxZGI3YzQ2Ci0JZXhwZWN0ZWRwdHJlZTE9Y2ZiODU5MWIyZjY1ZGU4YjhjYzEwMjBjZDdkOWU2N2U3NzkzYjMyNQotCWV4cGVjdGVkcHRyZWUyPWNlNTgwNDQ4ZjAxNDhiOTg1YTUxM2I2OTNmZGY3ZDgwMmNhY2I0NGYKLWZpCi0KLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkaW5nIHZhcmlvdXMgdHlwZXMgb2Ygb2JqZWN0cyB3aXRoIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQnICcKIAlta2RpciBwYXRoMiBwYXRoMyBwYXRoMy9zdWJwMyAmJgogCXBhdGhzPSJwYXRoMCBwYXRoMi9maWxlMiBwYXRoMy9maWxlMyBwYXRoMy9zdWJwMy9maWxlMyIgJiYKQEAgLTI3MiwxMCArMzc0LDcgQEAKIAkJZm9yIHAgaW4gJHBhdGhzCiAJCWRvCiAJCQllY2hvICJoZWxsbyAkcCIgPiRwIHx8IGV4aXQgMQotCQkJaWYgdGVzdF9oYXZlX3ByZXJlcSBTWU1MSU5LUwotCQkJdGhlbgotCQkJCWxuIC1zICJoZWxsbyAkcCIgJHtwfXN5bSB8fCBleGl0IDEKLQkJCWZpCisJCQl0ZXN0X2xuX3NfYWRkICJoZWxsbyAkcCIgJHtwfXN5bSB8fCBleGl0IDEKIAkJZG9uZQogCSkgJiYKIAlmaW5kIHBhdGgqICEgLXR5cGUgZCAtcHJpbnQgfCB4YXJncyBnaXQgdXBkYXRlLWluZGV4IC0tYWRkCkBAIC0yODcsNyArMzg2LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWRhdGUgZ2l0IGxzLWZpbGVzIG91dHB1dCBmb3IgYSBrbm93biB0cmVlJyAnCi0JJGV4cGVjdGZpbHRlciA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgogCTEwMDY0NCBmODcyOTBmOGViMmNiYmVhNzg1NzIxNDQ1OWEwNzM5OTI3ZWFiMTU0IDAJcGF0aDAKIAkxMjAwMDAgMTVhOTg0MzNhZTMzMTE0YjA4NWYzZWIzYmIwM2I4MzJiMzE4MGEwMSAwCXBhdGgwc3ltCiAJMTAwNjQ0IDNmZWZmOTQ5ZWQwMGE2MmQ5ZjdhZjk3YzE1Y2Q4YTMwNTk1ZTdhYzcgMAlwYXRoMi9maWxlMgpAQCAtMzA1LDE0ICs0MDQsMTQgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWRhdGUgb2JqZWN0IElEIGZvciBhIGtub3duIHRyZWUnICcKLQl0ZXN0ICIkdHJlZSIgPSAiJGV4cGVjdGVkdHJlZSIKKwl0ZXN0ICIkdHJlZSIgPSAwODc3MDRhOTZiYWYxYzJkMWM4NjlhOGIwODQ0ODFlMTIxYzg4YjViCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3dpbmcgdHJlZSB3aXRoIGdpdCBscy10cmVlJyAnCiAgICAgZ2l0IGxzLXRyZWUgJHRyZWUgPmN1cnJlbnQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZ2l0IGxzLXRyZWUgb3V0cHV0IGZvciBhIGtub3duIHRyZWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBscy10cmVlIG91dHB1dCBmb3IgYSBrbm93biB0cmVlJyAnCiAJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCiAJMTAwNjQ0IGJsb2IgZjg3MjkwZjhlYjJjYmJlYTc4NTcyMTQ0NTlhMDczOTkyN2VhYjE1NAlwYXRoMAogCTEyMDAwMCBibG9iIDE1YTk4NDMzYWUzMzExNGIwODVmM2ViM2JiMDNiODMyYjMxODBhMDEJcGF0aDBzeW0KQEAgLTMyOSw3ICs0MjgsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgbHMtdHJlZSAtciBvdXRwdXQgZm9yIGEga25vd24gdHJlZScgJwotCSRleHBlY3RmaWx0ZXIgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKIAkxMDA2NDQgYmxvYiBmODcyOTBmOGViMmNiYmVhNzg1NzIxNDQ1OWEwNzM5OTI3ZWFiMTU0CXBhdGgwCiAJMTIwMDAwIGJsb2IgMTVhOTg0MzNhZTMzMTE0YjA4NWYzZWIzYmIwM2I4MzJiMzE4MGEwMQlwYXRoMHN5bQogCTEwMDY0NCBibG9iIDNmZWZmOTQ5ZWQwMGE2MmQ5ZjdhZjk3YzE1Y2Q4YTMwNTk1ZTdhYzcJcGF0aDIvZmlsZTIKQEAgLTM0Nyw3ICs0NDYsNyBAQAogCWdpdCBscy10cmVlIC1yIC10ICR0cmVlID5jdXJyZW50CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2dpdCBscy10cmVlIC1yIG91dHB1dCBmb3IgYSBrbm93biB0cmVlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgbHMtdHJlZSAtciBvdXRwdXQgZm9yIGEga25vd24gdHJlZScgJwogCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgogCTEwMDY0NCBibG9iIGY4NzI5MGY4ZWIyY2JiZWE3ODU3MjE0NDU5YTA3Mzk5MjdlYWIxNTQJcGF0aDAKIAkxMjAwMDAgYmxvYiAxNWE5ODQzM2FlMzMxMTRiMDg1ZjNlYjNiYjAzYjgzMmIzMTgwYTAxCXBhdGgwc3ltCkBAIC0zNjksNyArNDY4LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWRhdGUgb2JqZWN0IElEIGZvciBhIGtub3duIHRyZWUnICcKLQl0ZXN0ICIkcHRyZWUiID0gIiRleHBlY3RlZHB0cmVlMSIKKwl0ZXN0ICIkcHRyZWUiID0gMjFhZTgyNjljYWNiZTU3YWUwOTEzOGRjYzNhMjg4N2Y5MDRkMDJiMwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd3cml0aW5nIHBhcnRpYWwgdHJlZSBvdXQgd2l0aCBnaXQgd3JpdGUtdHJlZSAtLXByZWZpeCcgJwpAQCAtMzc3LDcgKzQ3Niw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkYXRlIG9iamVjdCBJRCBmb3IgYSBrbm93biB0cmVlJyAnCi0JdGVzdCAiJHB0cmVlIiA9ICIkZXhwZWN0ZWRwdHJlZTIiCisJdGVzdCAiJHB0cmVlIiA9IDNjNWU1Mzk5ZjNhMzMzZWRkZWNjZTdhOWI5NDY1YjYzZjY1ZjUxZTIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHV0IGludmFsaWQgb2JqZWN0cyBpbnRvIHRoZSBpbmRleCcgJwpAQCAtNDExLDcgKzUxMCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkYXRlIGdpdCBkaWZmLWZpbGVzIG91dHB1dCBmb3IgYSBrbm93IGNhY2hlL3dvcmsgdHJlZSBzdGF0ZScgJwotCSRleHBlY3RmaWx0ZXIgPmV4cGVjdGVkIDw8XEVPRiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCiA6MTAwNjQ0IDEwMDY0NCBmODcyOTBmOGViMmNiYmVhNzg1NzIxNDQ1OWEwNzM5OTI3ZWFiMTU0IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTQlwYXRoMAogOjEyMDAwMCAxMjAwMDAgMTVhOTg0MzNhZTMzMTE0YjA4NWYzZWIzYmIwM2I4MzJiMzE4MGEwMSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE0JcGF0aDBzeW0KIDoxMDA2NDQgMTAwNjQ0IDNmZWZmOTQ5ZWQwMGE2MmQ5ZjdhZjk3YzE1Y2Q4YTMwNTk1ZTdhYzcgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNCXBhdGgyL2ZpbGUyCkBAIC00MzUsNyArNTM0LDcgQEAKICcKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotUD0kZXhwZWN0ZWR0cmVlCitQPTA4NzcwNGE5NmJhZjFjMmQxYzg2OWE4YjA4NDQ4MWUxMjFjODhiNWIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNvbW1pdC10cmVlIHJlY29yZHMgdGhlIGNvcnJlY3QgdHJlZSBpbiBhIGNvbW1pdCcgJwogCWNvbW1pdDA9JChlY2hvIE5PIHwgZ2l0IGNvbW1pdC10cmVlICRQKSAmJgpkaWZmIC0tZ2l0IGEvdC90MDAwMy1hdHRyaWJ1dGVzLnNoIGIvdC90MDAwMy1hdHRyaWJ1dGVzLnNoCmluZGV4IDEwMzVhMTQuLjBiOThiNmYgMTAwNzU1Ci0tLSBhL3QvdDAwMDMtYXR0cmlidXRlcy5zaAorKysgYi90L3QwMDAzLWF0dHJpYnV0ZXMuc2gKQEAgLTIwNyw2ICsyMDcsNDMgQEAKIAlhdHRyX2NoZWNrICIhZiIgZm9vCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyIqKiIgdGVzdCcgJworCWVjaG8gIioqL2YgZm9vPWJhciIgPi5naXRhdHRyaWJ1dGVzICYmCisJY2F0IDw8XEVPRiA+ZXhwZWN0ICYmCitmOiBmb286IGJhcgorYS9mOiBmb286IGJhcgorYS9iL2Y6IGZvbzogYmFyCithL2IvYy9mOiBmb286IGJhcgorRU9GCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJmIiA+YWN0dWFsIDI+ZXJyICYmCisJZ2l0IGNoZWNrLWF0dHIgZm9vIC0tICJhL2YiID4+YWN0dWFsIDI+PmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYS9iL2YiID4+YWN0dWFsIDI+PmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYS9iL2MvZiIgPj5hY3R1YWwgMj4+ZXJyICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCXRlc3RfbGluZV9jb3VudCA9IDAgZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyIqKiIgd2l0aCBubyBzbGFzaGVzIHRlc3QnICcKKwllY2hvICJhKipmIGZvbz1iYXIiID4uZ2l0YXR0cmlidXRlcyAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiZiIgPmFjdHVhbCAmJgorCWNhdCA8PFxFT0YgPmV4cGVjdCAmJgorZjogZm9vOiB1bnNwZWNpZmllZAorYWY6IGZvbzogYmFyCitheGY6IGZvbzogYmFyCithL2Y6IGZvbzogdW5zcGVjaWZpZWQKK2EvYi9mOiBmb286IHVuc3BlY2lmaWVkCithL2IvYy9mOiBmb286IHVuc3BlY2lmaWVkCitFT0YKKwlnaXQgY2hlY2stYXR0ciBmb28gLS0gImYiID5hY3R1YWwgMj5lcnIgJiYKKwlnaXQgY2hlY2stYXR0ciBmb28gLS0gImFmIiA+PmFjdHVhbCAyPmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYXhmIiA+PmFjdHVhbCAyPmVyciAmJgorCWdpdCBjaGVjay1hdHRyIGZvbyAtLSAiYS9mIiA+PmFjdHVhbCAyPj5lcnIgJiYKKwlnaXQgY2hlY2stYXR0ciBmb28gLS0gImEvYi9mIiA+PmFjdHVhbCAyPj5lcnIgJiYKKwlnaXQgY2hlY2stYXR0ciBmb28gLS0gImEvYi9jL2YiID4+YWN0dWFsIDI+PmVyciAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAwIGVycgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBiYXJlJyAnCiAJZ2l0IGNsb25lIC0tYmFyZSAuIGJhcmUuZ2l0ICYmCiAJY2QgYmFyZS5naXQKZGlmZiAtLWdpdCBhL3QvdDAwMDUtc2lnbmFscy5zaCBiL3QvdDAwMDUtc2lnbmFscy5zaAppbmRleCA5M2U1OGMwLi45ODE0MzdiIDEwMDc1NQotLS0gYS90L3QwMDA1LXNpZ25hbHMuc2gKKysrIGIvdC90MDAwNS1zaWduYWxzLnNoCkBAIC0yMCw0ICsyMCwxMSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3NpZ25hbHMgYXJlIHByb3BhZ2F0ZWQgdXNpbmcgc2hlbGwgY29udmVudGlvbicgJworCSMgd2UgdXNlIGV4ZWMgaGVyZSB0byBhdm9pZCBhbnkgc3ViLXNoZWxsIGludGVycHJldGF0aW9uCisJIyBvZiB0aGUgZXhpdCBjb2RlCisJZ2l0IGNvbmZpZyBhbGlhcy5zaWd0ZXJtICIhZXhlYyB0ZXN0LXNpZ2NoYWluIiAmJgorCXRlc3RfZXhwZWN0X2NvZGUgMTQzIGdpdCBzaWd0ZXJtCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MDAwOC1pZ25vcmVzLnNoIGIvdC90MDAwOC1pZ25vcmVzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE1NmRiODAKLS0tIC9kZXYvbnVsbAorKysgYi90L3QwMDA4LWlnbm9yZXMuc2gKQEAgLTAsMCArMSw3MTAgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPWNoZWNrLWlnbm9yZQorCisuIC4vdGVzdC1saWIuc2gKKworaW5pdF92YXJzICgpIHsKKwlnbG9iYWxfZXhjbHVkZXM9IiQocHdkKS9nbG9iYWwtZXhjbHVkZXMiCit9CisKK2VuYWJsZV9nbG9iYWxfZXhjbHVkZXMgKCkgeworCWluaXRfdmFycyAmJgorCWdpdCBjb25maWcgY29yZS5leGNsdWRlc2ZpbGUgIiRnbG9iYWxfZXhjbHVkZXMiCit9CisKK2V4cGVjdF9pbiAoKSB7CisJZGVzdD0iJEhPTUUvZXhwZWN0ZWQtJDEiIHRleHQ9IiQyIgorCWlmIHRlc3QgLXogIiR0ZXh0IgorCXRoZW4KKwkJPiIkZGVzdCIgIyBhdm9pZCBuZXdsaW5lCisJZWxzZQorCQllY2hvICIkdGV4dCIgPiIkZGVzdCIKKwlmaQorfQorCitleHBlY3QgKCkgeworCWV4cGVjdF9pbiBzdGRvdXQgIiQxIgorfQorCitleHBlY3RfZnJvbV9zdGRpbiAoKSB7CisJY2F0ID4iJEhPTUUvZXhwZWN0ZWQtc3Rkb3V0IgorfQorCit0ZXN0X3N0ZGVyciAoKSB7CisJZXhwZWN0ZWQ9IiQxIgorCWV4cGVjdF9pbiBzdGRlcnIgIiQxIiAmJgorCXRlc3RfY21wICIkSE9NRS9leHBlY3RlZC1zdGRlcnIiICIkSE9NRS9zdGRlcnIiCit9CisKK3N0ZGVycl9jb250YWlucyAoKSB7CisJcmVnZXhwPSIkMSIKKwlpZiBncmVwICIkcmVnZXhwIiAiJEhPTUUvc3RkZXJyIgorCXRoZW4KKwkJcmV0dXJuIDAKKwllbHNlCisJCWVjaG8gImRpZG4ndCBmaW5kIC8kcmVnZXhwLyBpbiAkSE9NRS9zdGRlcnIiCisJCWNhdCAiJEhPTUUvc3RkZXJyIgorCQlyZXR1cm4gMQorCWZpCit9CisKK3N0ZGVycl9lbXB0eV9vbl9zdWNjZXNzICgpIHsKKwlleHBlY3RfY29kZT0iJDEiCisJaWYgdGVzdCAkZXhwZWN0X2NvZGUgPSAwCisJdGhlbgorCQl0ZXN0X3N0ZGVyciAiIgorCWVsc2UKKwkJIyBJZiB3ZSBleHBlY3QgZmFpbHVyZSB0aGVuIHN0ZGVyciBtaWdodCBvciBtaWdodCBub3QgYmUgZW1wdHkKKwkJIyBkdWUgdG8gLS1xdWlldCAtIHRoZSBjYWxsZXIgY2FuIGNoZWNrIGl0cyBjb250ZW50cworCQlyZXR1cm4gMAorCWZpCit9CisKK3Rlc3RfY2hlY2tfaWdub3JlICgpIHsKKwlhcmdzPSIkMSIgZXhwZWN0X2NvZGU9IiR7MjotMH0iIGdsb2JhbF9hcmdzPSIkMyIKKworCWluaXRfdmFycyAmJgorCXJtIC1mICIkSE9NRS9zdGRvdXQiICIkSE9NRS9zdGRlcnIiICIkSE9NRS9jbWQiICYmCisJZWNobyBnaXQgJGdsb2JhbF9hcmdzIGNoZWNrLWlnbm9yZSAkcXVpZXRfb3B0ICR2ZXJib3NlX29wdCAkbm9uX21hdGNoaW5nX29wdCAkYXJncyBcCisJCT4iJEhPTUUvY21kIiAmJgorCWVjaG8gIiRleHBlY3RfY29kZSIgPiIkSE9NRS9leHBlY3RlZC1leGl0LWNvZGUiICYmCisJdGVzdF9leHBlY3RfY29kZSAiJGV4cGVjdF9jb2RlIiBcCisJCWdpdCAkZ2xvYmFsX2FyZ3MgY2hlY2staWdub3JlICRxdWlldF9vcHQgJHZlcmJvc2Vfb3B0ICRub25fbWF0Y2hpbmdfb3B0ICRhcmdzIFwKKwkJPiIkSE9NRS9zdGRvdXQiIDI+IiRIT01FL3N0ZGVyciIgJiYKKwl0ZXN0X2NtcCAiJEhPTUUvZXhwZWN0ZWQtc3Rkb3V0IiAiJEhPTUUvc3Rkb3V0IiAmJgorCXN0ZGVycl9lbXB0eV9vbl9zdWNjZXNzICIkZXhwZWN0X2NvZGUiCit9CisKKyMgUnVucyB0aGUgc2FtZSBjb2RlIHdpdGggNCBkaWZmZXJlbnQgbGV2ZWxzIG9mIG91dHB1dCB2ZXJib3NpdHk6CisjCisjICAgMS4gd2l0aCAtcSAvIC0tcXVpZXQKKyMgICAyLiB3aXRoIGRlZmF1bHQgdmVyYm9zaXR5CisjICAgMy4gd2l0aCAtdiAvIC0tdmVyYm9zZQorIyAgIDQuIHdpdGggLXYgLyAtLXZlcmJvc2UsICphbmQqIC1uIC8gLS1ub24tbWF0Y2hpbmcKKyMKKyMgZXhwZWN0aW5nIHN1Y2Nlc3MgZWFjaCB0aW1lLiAgVGFrZXMgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQKKyMgY2hlY2staWdub3JlIC0tdmVyYm9zZSBvdXRwdXQgaXMgdGhlIHNhbWUgYXMgbm9ybWFsIG91dHB1dCBleGNlcHQKKyMgZm9yIHRoZSBleHRyYSBmaXJzdCBjb2x1bW4uCisjCisjIEFyZ3VtZW50czoKKyMgICAtIChvcHRpb25hbCkgcHJlcmVxcyBmb3IgdGhpcyB0ZXN0LCBlLmcuICdTWU1MSU5LUycKKyMgICAtIHRlc3QgbmFtZQorIyAgIC0gb3V0cHV0IHRvIGV4cGVjdCBmcm9tIHRoZSBmb3VydGggdmVyYm9zaXR5IG1vZGUgKHRoZSBvdXRwdXQKKyMgICAgIGZyb20gdGhlIG90aGVyIHZlcmJvc2l0eSBtb2RlcyBpcyBhdXRvbWF0aWNhbGx5IGluZmVycmVkCisjICAgICBmcm9tIHRoaXMgdmFsdWUpCisjICAgLSBjb2RlIHRvIHJ1biAoc2hvdWxkIGludm9rZSB0ZXN0X2NoZWNrX2lnbm9yZSkKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgKCkgeworCXByZXJlcT0KKwlpZiB0ZXN0ICQjIC1lcSA0CisJdGhlbgorCQlwcmVyZXE9JDEKKwkJc2hpZnQKKwlmaQorCXRlc3RuYW1lPSIkMSIgZXhwZWN0X2FsbD0iJDIiIGNvZGU9IiQzIgorCisJZXhwZWN0X3ZlcmJvc2U9JCggZWNobyAiJGV4cGVjdF9hbGwiIHwgZ3JlcCAtdiAnXjo6CScgKQorCWV4cGVjdD0kKCBlY2hvICIkZXhwZWN0X3ZlcmJvc2UiIHwgc2VkIC1lICdzLy4qCS8vJyApCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICRwcmVyZXEgIiR0ZXN0bmFtZSIgJworCQlleHBlY3QgIiRleHBlY3QiICYmCisJCWV2YWwgIiRjb2RlIgorCScKKworCSMgLS1xdWlldCBpcyBvbmx5IHZhbGlkIHdoZW4gYSBzaW5nbGUgcGF0dGVybiBpcyBwYXNzZWQKKwlpZiB0ZXN0ICQoIGVjaG8gIiRleHBlY3RfYWxsIiB8IHdjIC1sICkgPSAxCisJdGhlbgorCQlmb3IgcXVpZXRfb3B0IGluICctcScgJy0tcXVpZXQnCisJCWRvCisJCQl0ZXN0X2V4cGVjdF9zdWNjZXNzICRwcmVyZXEgIiR0ZXN0bmFtZSR7cXVpZXRfb3B0Oisgd2l0aCAkcXVpZXRfb3B0fSIgIgorCQkJZXhwZWN0ICcnICYmCisJCQkkY29kZQorCQkiCisJCWRvbmUKKwkJcXVpZXRfb3B0PQorCWZpCisKKwlmb3IgdmVyYm9zZV9vcHQgaW4gJy12JyAnLS12ZXJib3NlJworCWRvCisJCWZvciBub25fbWF0Y2hpbmdfb3B0IGluICcnICcgLW4nICcgLS1ub24tbWF0Y2hpbmcnCisJCWRvCisJCQlpZiB0ZXN0IC1uICIkbm9uX21hdGNoaW5nX29wdCIKKwkJCXRoZW4KKwkJCQlteV9leHBlY3Q9IiRleHBlY3RfYWxsIgorCQkJZWxzZQorCQkJCW15X2V4cGVjdD0iJGV4cGVjdF92ZXJib3NlIgorCQkJZmkKKworCQkJdGVzdF9jb2RlPSIKKwkJCQlleHBlY3QgJyRteV9leHBlY3QnICYmCisJCQkJJGNvZGUKKwkJCSIKKwkJCW9wdHM9IiR2ZXJib3NlX29wdCRub25fbWF0Y2hpbmdfb3B0IgorCQkJdGVzdF9leHBlY3Rfc3VjY2VzcyAkcHJlcmVxICIkdGVzdG5hbWUke29wdHM6KyB3aXRoICRvcHRzfSIgIiR0ZXN0X2NvZGUiCisJCWRvbmUKKwlkb25lCisJdmVyYm9zZV9vcHQ9CisJbm9uX21hdGNoaW5nX29wdD0KK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwlpbml0X3ZhcnMgJiYKKwlta2RpciAtcCBhL2IvaWdub3JlZC1kaXIgYS9zdWJtb2R1bGUgYiAmJgorCWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKKwl0aGVuCisJCWxuIC1zIGIgYS9zeW1saW5rCisJZmkgJiYKKwkoCisJCWNkIGEvc3VibW9kdWxlICYmCisJCWdpdCBpbml0ICYmCisJCWVjaG8gYSA+YSAmJgorCQlnaXQgYWRkIGEgJiYKKwkJZ2l0IGNvbW1pdCAtbSJjb21taXQgaW4gc3VibW9kdWxlIgorCSkgJiYKKwlnaXQgYWRkIGEvc3VibW9kdWxlICYmCisJY2F0IDw8LVxFT0YgPi5naXRpZ25vcmUgJiYKKwkJb25lCisJCWlnbm9yZWQtKgorCQl0b3AtbGV2ZWwtZGlyLworCUVPRgorCWZvciBkaXIgaW4gLiBhCisJZG8KKwkJOiA+JGRpci9ub3QtaWdub3JlZCAmJgorCQk6ID4kZGlyL2lnbm9yZWQtYW5kLXVudHJhY2tlZCAmJgorCQk6ID4kZGlyL2lnbm9yZWQtYnV0LWluLWluZGV4CisJZG9uZSAmJgorCWdpdCBhZGQgLWYgaWdub3JlZC1idXQtaW4taW5kZXggYS9pZ25vcmVkLWJ1dC1pbi1pbmRleCAmJgorCWNhdCA8PC1cRU9GID5hLy5naXRpZ25vcmUgJiYKKwkJdHdvKgorCQkqdGhyZWUKKwlFT0YKKwljYXQgPDwtXEVPRiA+YS9iLy5naXRpZ25vcmUgJiYKKwkJZm91cgorCQlmaXZlCisJCSMgdGhpcyBjb21tZW50IHNob3VsZCBhZmZlY3QgdGhlIGxpbmUgbnVtYmVycworCQlzaXgKKwkJaWdub3JlZC1kaXIvCisJCSMgYW5kIHNvIHNob3VsZCB0aGlzIGJsYW5rIGxpbmU6CisKKwkJIW9uKgorCQkhdHdvCisJRU9GCisJZWNobyAic2V2ZW4iID5hL2IvaWdub3JlZC1kaXIvLmdpdGlnbm9yZSAmJgorCXRlc3QgLW4gIiRIT01FIiAmJgorCWNhdCA8PC1cRU9GID4iJGdsb2JhbF9leGNsdWRlcyIgJiYKKwkJZ2xvYmFsb25lCisJCSFnbG9iYWx0d28KKwkJZ2xvYmFsdGhyZWUKKwlFT0YKKwljYXQgPDwtXEVPRiA+Pi5naXQvaW5mby9leGNsdWRlCisJCXBlci1yZXBvCisJRU9GCisnCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgdGVzdCBpbnZhbGlkIGlucHV0cworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICcuIGNvcm5lci1jYXNlJyAnOjoJLicgJworCXRlc3RfY2hlY2tfaWdub3JlIC4gMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICdlbXB0eSBjb21tYW5kIGxpbmUnICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiIiAxMjggJiYKKwlzdGRlcnJfY29udGFpbnMgImZhdGFsOiBubyBwYXRoIHNwZWNpZmllZCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAnLS1zdGRpbiB3aXRoIGVtcHR5IFNURElOJyAnJyAnCisJdGVzdF9jaGVja19pZ25vcmUgIi0tc3RkaW4iIDEgPC9kZXYvbnVsbCAmJgorCXRlc3Rfc3RkZXJyICIiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy1xIHdpdGggbXVsdGlwbGUgYXJncycgJworCWV4cGVjdCAiIiAmJgorCXRlc3RfY2hlY2tfaWdub3JlICItcSBvbmUgdHdvIiAxMjggJiYKKwlzdGRlcnJfY29udGFpbnMgImZhdGFsOiAtLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1xdWlldCB3aXRoIG11bHRpcGxlIGFyZ3MnICcKKwlleHBlY3QgIiIgJiYKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1xdWlldCBvbmUgdHdvIiAxMjggJiYKKwlzdGRlcnJfY29udGFpbnMgImZhdGFsOiAtLXF1aWV0IGlzIG9ubHkgdmFsaWQgd2l0aCBhIHNpbmdsZSBwYXRobmFtZSIKKycKKworZm9yIHZlcmJvc2Vfb3B0IGluICctdicgJy0tdmVyYm9zZScKK2RvCisJZm9yIHF1aWV0X29wdCBpbiAnLXEnICctLXF1aWV0JworCWRvCisJCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRxdWlldF9vcHQgJHZlcmJvc2Vfb3B0IiAiCisJCQlleHBlY3QgJycgJiYKKwkJCXRlc3RfY2hlY2tfaWdub3JlICckcXVpZXRfb3B0ICR2ZXJib3NlX29wdCBmb28nIDEyOCAmJgorCQkJc3RkZXJyX2NvbnRhaW5zICdmYXRhbDogY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UnCisJCSIKKwlkb25lCitkb25lCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tcXVpZXQgd2l0aCBtdWx0aXBsZSBhcmdzJyAnCisJZXhwZWN0ICIiICYmCisJdGVzdF9jaGVja19pZ25vcmUgIi0tcXVpZXQgb25lIHR3byIgMTI4ICYmCisJc3RkZXJyX2NvbnRhaW5zICJmYXRhbDogLS1xdWlldCBpcyBvbmx5IHZhbGlkIHdpdGggYSBzaW5nbGUgcGF0aG5hbWUiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ2Vycm9uZW91cyB1c2Ugb2YgLS0nICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS0iIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IG5vIHBhdGggc3BlY2lmaWVkIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICctLXN0ZGluIHdpdGggc3VwZXJmbHVvdXMgYXJnJyAnJyAnCisJdGVzdF9jaGVja19pZ25vcmUgIi0tc3RkaW4gZm9vIiAxMjggJiYKKwlzdGRlcnJfY29udGFpbnMgImZhdGFsOiBjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICctLXN0ZGluIC16IHdpdGggc3VwZXJmbHVvdXMgYXJnJyAnJyAnCisJdGVzdF9jaGVja19pZ25vcmUgIi0tc3RkaW4gLXogZm9vIiAxMjggJiYKKwlzdGRlcnJfY29udGFpbnMgImZhdGFsOiBjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICcteiB3aXRob3V0IC0tc3RkaW4nICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLXoiIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IC16IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXN0ZGluIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICcteiB3aXRob3V0IC0tc3RkaW4gYW5kIHN1cGVyZmx1b3VzIGFyZycgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICIteiBmb28iIDEyOCAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IC16IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXN0ZGluIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICduZWVkcyB3b3JrIHRyZWUnICcnICcKKwkoCisJCWNkIC5naXQgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgImZvbyIgMTI4CisJKSAmJgorCXN0ZGVycl9jb250YWlucyAiZmF0YWw6IFRoaXMgb3BlcmF0aW9uIG11c3QgYmUgcnVuIGluIGEgd29yayB0cmVlIgorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3Qgc3RhbmRhcmQgaWdub3JlcworCisjIEZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIGZpbGUgaW4gdGhlIHdvcmtpbmcgdHJlZQorIyBkb2VzIG5vdCBpbXBhY3QgcmVzdWx0cywgYnV0IHRoYXQgdGhlIHByZXNlbmNlIG9mIGEgZmlsZSBpbiB0aGUKKyMgaW5kZXggZG9lcy4KKworZm9yIHN1YmRpciBpbiAnJyAnYS8nCitkbworCWlmIHRlc3QgLXogIiRzdWJkaXIiCisJdGhlbgorCQl3aGVyZT0iYXQgdG9wLWxldmVsIgorCWVsc2UKKwkJd2hlcmU9ImluIHN1YmRpciAkc3ViZGlyIgorCWZpCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICJub24tZXhpc3RlbnQgZmlsZSAkd2hlcmUgbm90IGlnbm9yZWQiIFwKKwkJIjo6CSR7c3ViZGlyfW5vbi1leGlzdGVudCIgXAorCQkidGVzdF9jaGVja19pZ25vcmUgJyR7c3ViZGlyfW5vbi1leGlzdGVudCcgMSIKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgIm5vbi1leGlzdGVudCBmaWxlICR3aGVyZSBpZ25vcmVkIiBcCisJCSIuZ2l0aWdub3JlOjE6b25lCSR7c3ViZGlyfW9uZSIgXAorCQkidGVzdF9jaGVja19pZ25vcmUgJyR7c3ViZGlyfW9uZSciCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICJleGlzdGluZyB1bnRyYWNrZWQgZmlsZSAkd2hlcmUgbm90IGlnbm9yZWQiIFwKKwkJIjo6CSR7c3ViZGlyfW5vdC1pZ25vcmVkIiBcCisJCSJ0ZXN0X2NoZWNrX2lnbm9yZSAnJHtzdWJkaXJ9bm90LWlnbm9yZWQnIDEiCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICJleGlzdGluZyB0cmFja2VkIGZpbGUgJHdoZXJlIG5vdCBpZ25vcmVkIiBcCisJCSI6Ogkke3N1YmRpcn1pZ25vcmVkLWJ1dC1pbi1pbmRleCIgXAorCQkidGVzdF9jaGVja19pZ25vcmUgJyR7c3ViZGlyfWlnbm9yZWQtYnV0LWluLWluZGV4JyAxIgorCisJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAiZXhpc3RpbmcgdW50cmFja2VkIGZpbGUgJHdoZXJlIGlnbm9yZWQiIFwKKwkJIi5naXRpZ25vcmU6MjppZ25vcmVkLSoJJHtzdWJkaXJ9aWdub3JlZC1hbmQtdW50cmFja2VkIiBcCisJCSJ0ZXN0X2NoZWNrX2lnbm9yZSAnJHtzdWJkaXJ9aWdub3JlZC1hbmQtdW50cmFja2VkJyIKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgIm1peCBvZiBmaWxlIHR5cGVzICR3aGVyZSIgXAorIjo6CSR7c3ViZGlyfW5vbi1leGlzdGVudAorLmdpdGlnbm9yZToxOm9uZQkke3N1YmRpcn1vbmUKKzo6CSR7c3ViZGlyfW5vdC1pZ25vcmVkCis6Ogkke3N1YmRpcn1pZ25vcmVkLWJ1dC1pbi1pbmRleAorLmdpdGlnbm9yZToyOmlnbm9yZWQtKgkke3N1YmRpcn1pZ25vcmVkLWFuZC11bnRyYWNrZWQiIFwKKwkJInRlc3RfY2hlY2tfaWdub3JlICcKKwkJCSR7c3ViZGlyfW5vbi1leGlzdGVudAorCQkJJHtzdWJkaXJ9b25lCisJCQkke3N1YmRpcn1ub3QtaWdub3JlZAorCQkJJHtzdWJkaXJ9aWdub3JlZC1idXQtaW4taW5kZXgKKwkJCSR7c3ViZGlyfWlnbm9yZWQtYW5kLXVudHJhY2tlZCcKKwkJIgorZG9uZQorCisjIEhhdmluZyBlc3RhYmxpc2hlZCB0aGUgYWJvdmUsIGZyb20gbm93IG9uIHdlIG1vc3RseSB0ZXN0IGFnYWluc3QKKyMgZmlsZXMgd2hpY2ggZG8gbm90IGV4aXN0IGluIHRoZSB3b3JraW5nIHRyZWUgb3IgaW5kZXguCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Yi1kaXJlY3RvcnkgbG9jYWwgaWdub3JlJyAnCisJZXhwZWN0ICJhLzMtdGhyZWUiICYmCisJdGVzdF9jaGVja19pZ25vcmUgImEvMy10aHJlZSBhL3RocmVlLW5vdC10aGlzLW9uZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3ViLWRpcmVjdG9yeSBsb2NhbCBpZ25vcmUgd2l0aCAtLXZlcmJvc2UnICAnCisJZXhwZWN0ICJhLy5naXRpZ25vcmU6MjoqdGhyZWUJYS8zLXRocmVlIiAmJgorCXRlc3RfY2hlY2tfaWdub3JlICItLXZlcmJvc2UgYS8zLXRocmVlIGEvdGhyZWUtbm90LXRoaXMtb25lIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2NhbCBpZ25vcmUgaW5zaWRlIGEgc3ViLWRpcmVjdG9yeScgJworCWV4cGVjdCAiMy10aHJlZSIgJiYKKwkoCisJCWNkIGEgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgIjMtdGhyZWUgdGhyZWUtbm90LXRoaXMtb25lIgorCSkKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvY2FsIGlnbm9yZSBpbnNpZGUgYSBzdWItZGlyZWN0b3J5IHdpdGggLS12ZXJib3NlJyAnCisJZXhwZWN0ICJhLy5naXRpZ25vcmU6MjoqdGhyZWUJMy10aHJlZSIgJiYKKwkoCisJCWNkIGEgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgIi0tdmVyYm9zZSAzLXRocmVlIHRocmVlLW5vdC10aGlzLW9uZSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ25lc3RlZCBpbmNsdWRlJyBcCisJJ2EvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb25lJyAnCisJdGVzdF9jaGVja19pZ25vcmUgImEvYi9vbmUiCisnCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgdGVzdCBpZ25vcmVkIHN1Yi1kaXJlY3RvcmllcworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICdpZ25vcmVkIHN1Yi1kaXJlY3RvcnknIFwKKwknYS9iLy5naXRpZ25vcmU6NTppZ25vcmVkLWRpci8JYS9iL2lnbm9yZWQtZGlyJyAnCisJdGVzdF9jaGVja19pZ25vcmUgImEvYi9pZ25vcmVkLWRpciIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbXVsdGlwbGUgZmlsZXMgaW5zaWRlIGlnbm9yZWQgc3ViLWRpcmVjdG9yeScgJworCWV4cGVjdF9mcm9tX3N0ZGluIDw8LVxFT0YgJiYKKwkJYS9iL2lnbm9yZWQtZGlyL2ZvbworCQlhL2IvaWdub3JlZC1kaXIvdHdvb29vCisJCWEvYi9pZ25vcmVkLWRpci9zZXZlbgorCUVPRgorCXRlc3RfY2hlY2tfaWdub3JlICJhL2IvaWdub3JlZC1kaXIvZm9vIGEvYi9pZ25vcmVkLWRpci90d29vb28gYS9iL2lnbm9yZWQtZGlyL3NldmVuIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSBmaWxlcyBpbnNpZGUgaWdub3JlZCBzdWItZGlyZWN0b3J5IHdpdGggLXYnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8PC1cRU9GICYmCisJCWEvYi8uZ2l0aWdub3JlOjU6aWdub3JlZC1kaXIvCWEvYi9pZ25vcmVkLWRpci9mb28KKwkJYS9iLy5naXRpZ25vcmU6NTppZ25vcmVkLWRpci8JYS9iL2lnbm9yZWQtZGlyL3R3b29vbworCQlhL2IvLmdpdGlnbm9yZTo1Omlnbm9yZWQtZGlyLwlhL2IvaWdub3JlZC1kaXIvc2V2ZW4KKwlFT0YKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLXYgYS9iL2lnbm9yZWQtZGlyL2ZvbyBhL2IvaWdub3JlZC1kaXIvdHdvb29vIGEvYi9pZ25vcmVkLWRpci9zZXZlbiIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2QgdG8gaWdub3JlZCBzdWItZGlyZWN0b3J5JyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPDwtXEVPRiAmJgorCQlmb28KKwkJdHdvb29vCisJCS4uL29uZQorCQlzZXZlbgorCQkuLi8uLi9vbmUKKwlFT0YKKwkoCisJCWNkIGEvYi9pZ25vcmVkLWRpciAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAiZm9vIHR3b29vbyAuLi9vbmUgc2V2ZW4gLi4vLi4vb25lIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2QgdG8gaWdub3JlZCBzdWItZGlyZWN0b3J5IHdpdGggLXYnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8PC1cRU9GICYmCisJCWEvYi8uZ2l0aWdub3JlOjU6aWdub3JlZC1kaXIvCWZvbworCQlhL2IvLmdpdGlnbm9yZTo1Omlnbm9yZWQtZGlyLwl0d29vb28KKwkJYS9iLy5naXRpZ25vcmU6ODohb24qCS4uL29uZQorCQlhL2IvLmdpdGlnbm9yZTo1Omlnbm9yZWQtZGlyLwlzZXZlbgorCQkuZ2l0aWdub3JlOjE6b25lCS4uLy4uL29uZQorCUVPRgorCSgKKwkJY2QgYS9iL2lnbm9yZWQtZGlyICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICItdiBmb28gdHdvb29vIC4uL29uZSBzZXZlbiAuLi8uLi9vbmUiCisJKQorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3QgaGFuZGxpbmcgb2Ygc3ltbGlua3MKKwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSBTWU1MSU5LUyAnc3ltbGluaycgJzo6CWEvc3ltbGluaycgJworCXRlc3RfY2hlY2tfaWdub3JlICJhL3N5bWxpbmsiIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSBTWU1MSU5LUyAnYmV5b25kIGEgc3ltbGluaycgJycgJworCXRlc3RfY2hlY2tfaWdub3JlICJhL3N5bWxpbmsvZm9vIiAxMjggJiYKKwl0ZXN0X3N0ZGVyciAiZmF0YWw6ICdcJydhL3N5bWxpbmsvZm9vJ1wnJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpIFNZTUxJTktTICdiZXlvbmQgYSBzeW1saW5rIGZyb20gc3ViZGlyZWN0b3J5JyAnJyAnCisJKAorCQljZCBhICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICJzeW1saW5rL2ZvbyIgMTI4CisJKSAmJgorCXRlc3Rfc3RkZXJyICJmYXRhbDogJ1wnJ3N5bWxpbmsvZm9vJ1wnJyBpcyBiZXlvbmQgYSBzeW1ib2xpYyBsaW5rIgorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3QgaGFuZGxpbmcgb2Ygc3VibW9kdWxlcworCit0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICdzdWJtb2R1bGUnICcnICcKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiYS9zdWJtb2R1bGUvb25lIiAxMjggJiYKKwl0ZXN0X3N0ZGVyciAiZmF0YWw6IFBhdGggJ1wnJ2Evc3VibW9kdWxlL29uZSdcJycgaXMgaW4gc3VibW9kdWxlICdcJydhL3N1Ym1vZHVsZSdcJyciCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJ3N1Ym1vZHVsZSBmcm9tIHN1YmRpcmVjdG9yeScgJycgJworCSgKKwkJY2QgYSAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAic3VibW9kdWxlL29uZSIgMTI4CisJKSAmJgorCXRlc3Rfc3RkZXJyICJmYXRhbDogUGF0aCAnXCcnYS9zdWJtb2R1bGUvb25lJ1wnJyBpcyBpbiBzdWJtb2R1bGUgJ1wnJ2Evc3VibW9kdWxlJ1wnJyIKKycKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyB0ZXN0IGhhbmRsaW5nIG9mIGdsb2JhbCBpZ25vcmUgZmlsZXMKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2xvYmFsIGlnbm9yZSBub3QgeWV0IGVuYWJsZWQnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8PC1cRU9GICYmCisJCS5naXQvaW5mby9leGNsdWRlOjc6cGVyLXJlcG8JcGVyLXJlcG8KKwkJYS8uZ2l0aWdub3JlOjI6KnRocmVlCWEvZ2xvYmFsdGhyZWUKKwkJLmdpdC9pbmZvL2V4Y2x1ZGU6NzpwZXItcmVwbwlhL3Blci1yZXBvCisJRU9GCisJdGVzdF9jaGVja19pZ25vcmUgIi12IGdsb2JhbG9uZSBwZXItcmVwbyBhL2dsb2JhbHRocmVlIGEvcGVyLXJlcG8gbm90LWlnbm9yZWQgYS9nbG9iYWx0d28iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dsb2JhbCBpZ25vcmUnICcKKwllbmFibGVfZ2xvYmFsX2V4Y2x1ZGVzICYmCisJZXhwZWN0X2Zyb21fc3RkaW4gPDwtXEVPRiAmJgorCQlnbG9iYWxvbmUKKwkJcGVyLXJlcG8KKwkJZ2xvYmFsdGhyZWUKKwkJYS9nbG9iYWx0aHJlZQorCQlhL3Blci1yZXBvCisJCWdsb2JhbHR3bworCUVPRgorCXRlc3RfY2hlY2tfaWdub3JlICJnbG9iYWxvbmUgcGVyLXJlcG8gZ2xvYmFsdGhyZWUgYS9nbG9iYWx0aHJlZSBhL3Blci1yZXBvIG5vdC1pZ25vcmVkIGdsb2JhbHR3byIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2xvYmFsIGlnbm9yZSB3aXRoIC12JyAnCisJZW5hYmxlX2dsb2JhbF9leGNsdWRlcyAmJgorCWV4cGVjdF9mcm9tX3N0ZGluIDw8LUVPRiAmJgorCQkkZ2xvYmFsX2V4Y2x1ZGVzOjE6Z2xvYmFsb25lCWdsb2JhbG9uZQorCQkuZ2l0L2luZm8vZXhjbHVkZTo3OnBlci1yZXBvCXBlci1yZXBvCisJCSRnbG9iYWxfZXhjbHVkZXM6MzpnbG9iYWx0aHJlZQlnbG9iYWx0aHJlZQorCQlhLy5naXRpZ25vcmU6MjoqdGhyZWUJYS9nbG9iYWx0aHJlZQorCQkuZ2l0L2luZm8vZXhjbHVkZTo3OnBlci1yZXBvCWEvcGVyLXJlcG8KKwkJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JZ2xvYmFsdHdvCisJRU9GCisJdGVzdF9jaGVja19pZ25vcmUgIi12IGdsb2JhbG9uZSBwZXItcmVwbyBnbG9iYWx0aHJlZSBhL2dsb2JhbHRocmVlIGEvcGVyLXJlcG8gbm90LWlnbm9yZWQgZ2xvYmFsdHdvIgorJworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHRlc3QgLS1zdGRpbgorCitjYXQgPDwtXEVPRiA+c3RkaW4KKwlvbmUKKwlub3QtaWdub3JlZAorCWEvb25lCisJYS9ub3QtaWdub3JlZAorCWEvYi9vbgorCWEvYi9vbmUKKwlhL2Ivb25lIG9uZQorCSJhL2Ivb25lIHR3byIKKwkiYS9iL29uZVwidGhyZWUiCisJYS9iL25vdC1pZ25vcmVkCisJYS9iL3R3bworCWEvYi90d29vbworCWdsb2JhbHR3bworCWEvZ2xvYmFsdHdvCisJYS9iL2dsb2JhbHR3bworCWIvZ2xvYmFsdHdvCitFT0YKK2NhdCA8PC1cRU9GID5leHBlY3RlZC1kZWZhdWx0CisJb25lCisJYS9vbmUKKwlhL2Ivb24KKwlhL2Ivb25lCisJYS9iL29uZSBvbmUKKwlhL2Ivb25lIHR3bworCSJhL2Ivb25lXCJ0aHJlZSIKKwlhL2IvdHdvCisJYS9iL3R3b29vCisJZ2xvYmFsdHdvCisJYS9nbG9iYWx0d28KKwlhL2IvZ2xvYmFsdHdvCisJYi9nbG9iYWx0d28KK0VPRgorY2F0IDw8LUVPRiA+ZXhwZWN0ZWQtdmVyYm9zZQorCS5naXRpZ25vcmU6MTpvbmUJb25lCisJLmdpdGlnbm9yZToxOm9uZQlhL29uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb24KKwlhL2IvLmdpdGlnbm9yZTo4OiFvbioJYS9iL29uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb25lIG9uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKglhL2Ivb25lIHR3bworCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgkiYS9iL29uZVwidGhyZWUiCisJYS9iLy5naXRpZ25vcmU6OTohdHdvCWEvYi90d28KKwlhLy5naXRpZ25vcmU6MTp0d28qCWEvYi90d29vbworCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWdsb2JhbHR3bworCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWEvZ2xvYmFsdHdvCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JYS9iL2dsb2JhbHR3bworCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWIvZ2xvYmFsdHdvCitFT0YKKworc2VkIC1lICdzL14iLy8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIHN0ZGluIHwgXAorCXRyICJcbiIgIlwwIiA+c3RkaW4wCitzZWQgLWUgJ3MvXiIvLycgLWUgJ3MvXFwvLycgLWUgJ3MvIiQvLycgZXhwZWN0ZWQtZGVmYXVsdCB8IFwKKwl0ciAiXG4iICJcMCIgPmV4cGVjdGVkLWRlZmF1bHQwCitzZWQgLWUgJ3MvCSIvCS8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIGV4cGVjdGVkLXZlcmJvc2UgfCBcCisJdHIgIjpcdFxuIiAiXDAiID5leHBlY3RlZC12ZXJib3NlMAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN0ZGluJyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLWRlZmF1bHQgJiYKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiIgPHN0ZGluCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc3RkaW4gLXEnICcKKwlleHBlY3QgIiIgJiYKKwl0ZXN0X2NoZWNrX2lnbm9yZSAiLXEgLS1zdGRpbiIgPHN0ZGluCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc3RkaW4gLXYnICcKKwlleHBlY3RfZnJvbV9zdGRpbiA8ZXhwZWN0ZWQtdmVyYm9zZSAmJgorCXRlc3RfY2hlY2tfaWdub3JlICItdiAtLXN0ZGluIiA8c3RkaW4KKycKKworZm9yIG9wdHMgaW4gJy0tc3RkaW4gLXonICcteiAtLXN0ZGluJworZG8KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkb3B0cyIgIgorCQlleHBlY3RfZnJvbV9zdGRpbiA8ZXhwZWN0ZWQtZGVmYXVsdDAgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgJyRvcHRzJyA8c3RkaW4wCisJIgorCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJG9wdHMgLXEiICIKKwkJZXhwZWN0ICIiICYmCisJCXRlc3RfY2hlY2tfaWdub3JlICctcSAkb3B0cycgPHN0ZGluMAorCSIKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRvcHRzIC12IiAiCisJCWV4cGVjdF9mcm9tX3N0ZGluIDxleHBlY3RlZC12ZXJib3NlMCAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAnLXYgJG9wdHMnIDxzdGRpbjAKKwkiCitkb25lCisKK2NhdCA8PC1cRU9GID5zdGRpbgorCS4uL29uZQorCS4uL25vdC1pZ25vcmVkCisJb25lCisJbm90LWlnbm9yZWQKKwliL29uCisJYi9vbmUKKwliL29uZSBvbmUKKwkiYi9vbmUgdHdvIgorCSJiL29uZVwidGhyZWUiCisJYi90d28KKwliL25vdC1pZ25vcmVkCisJYi90d29vbworCS4uL2dsb2JhbHR3bworCWdsb2JhbHR3bworCWIvZ2xvYmFsdHdvCisJLi4vYi9nbG9iYWx0d28KKwljL25vdC1pZ25vcmVkCitFT0YKKyMgTi5CLiB3ZSBkZWxpYmVyYXRlbHkgZW5kIFNURElOIHdpdGggYSBub24tbWF0Y2hpbmcgcGF0dGVybiBpbiBvcmRlcgorIyB0byB0ZXN0IHRoYXQgdGhlIGV4aXQgY29kZSBpbmRpY2F0ZXMgdGhhdCBvbmUgb3IgbW9yZSBvZiB0aGUKKyMgcHJvdmlkZWQgcGF0aHMgaXMgaWdub3JlZCAtIGluIG90aGVyIHdvcmRzLCB0aGF0IGl0IHJlcHJlc2VudHMgYW4KKyMgYWdncmVnYXRpb24gb2YgYWxsIHRoZSByZXN1bHRzLCBub3QganVzdCB0aGUgZmluYWwgcmVzdWx0LgorCitjYXQgPDwtRU9GID5leHBlY3RlZC1hbGwKKwkuZ2l0aWdub3JlOjE6b25lCS4uL29uZQorCTo6CS4uL25vdC1pZ25vcmVkCisJLmdpdGlnbm9yZToxOm9uZQlvbmUKKwk6Oglub3QtaWdub3JlZAorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgliL29uCisJYS9iLy5naXRpZ25vcmU6ODohb24qCWIvb25lCisJYS9iLy5naXRpZ25vcmU6ODohb24qCWIvb25lIG9uZQorCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgliL29uZSB0d28KKwlhL2IvLmdpdGlnbm9yZTo4OiFvbioJImIvb25lXCJ0aHJlZSIKKwlhL2IvLmdpdGlnbm9yZTo5OiF0d28JYi90d28KKwk6OgliL25vdC1pZ25vcmVkCisJYS8uZ2l0aWdub3JlOjE6dHdvKgliL3R3b29vCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JLi4vZ2xvYmFsdHdvCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JZ2xvYmFsdHdvCisJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JYi9nbG9iYWx0d28KKwkkZ2xvYmFsX2V4Y2x1ZGVzOjI6IWdsb2JhbHR3bwkuLi9iL2dsb2JhbHR3bworCTo6CWMvbm90LWlnbm9yZWQKK0VPRgorZ3JlcCAtdiAnXjo6CScgZXhwZWN0ZWQtYWxsID5leHBlY3RlZC12ZXJib3NlCitzZWQgLWUgJ3MvLioJLy8nIGV4cGVjdGVkLXZlcmJvc2UgPmV4cGVjdGVkLWRlZmF1bHQKKworc2VkIC1lICdzL14iLy8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIHN0ZGluIHwgXAorCXRyICJcbiIgIlwwIiA+c3RkaW4wCitzZWQgLWUgJ3MvXiIvLycgLWUgJ3MvXFwvLycgLWUgJ3MvIiQvLycgZXhwZWN0ZWQtZGVmYXVsdCB8IFwKKwl0ciAiXG4iICJcMCIgPmV4cGVjdGVkLWRlZmF1bHQwCitzZWQgLWUgJ3MvCSIvCS8nIC1lICdzL1xcLy8nIC1lICdzLyIkLy8nIGV4cGVjdGVkLXZlcmJvc2UgfCBcCisJdHIgIjpcdFxuIiAiXDAiID5leHBlY3RlZC12ZXJib3NlMAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN0ZGluIGZyb20gc3ViZGlyZWN0b3J5JyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLWRlZmF1bHQgJiYKKwkoCisJCWNkIGEgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgIi0tc3RkaW4iIDwuLi9zdGRpbgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zdGRpbiBmcm9tIHN1YmRpcmVjdG9yeSB3aXRoIC12JyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLXZlcmJvc2UgJiYKKwkoCisJCWNkIGEgJiYKKwkJdGVzdF9jaGVja19pZ25vcmUgIi0tc3RkaW4gLXYiIDwuLi9zdGRpbgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zdGRpbiBmcm9tIHN1YmRpcmVjdG9yeSB3aXRoIC12IC1uJyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLWFsbCAmJgorCSgKKwkJY2QgYSAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiAtdiAtbiIgPC4uL3N0ZGluCisJKQorJworCitmb3Igb3B0cyBpbiAnLS1zdGRpbiAteicgJy16IC0tc3RkaW4nCitkbworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRvcHRzIGZyb20gc3ViZGlyZWN0b3J5IiAnCisJCWV4cGVjdF9mcm9tX3N0ZGluIDxleHBlY3RlZC1kZWZhdWx0MCAmJgorCQkoCisJCQljZCBhICYmCisJCQl0ZXN0X2NoZWNrX2lnbm9yZSAiJyIkb3B0cyInIiA8Li4vc3RkaW4wCisJCSkKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICIkb3B0cyBmcm9tIHN1YmRpcmVjdG9yeSB3aXRoIC12IiAnCisJCWV4cGVjdF9mcm9tX3N0ZGluIDxleHBlY3RlZC12ZXJib3NlMCAmJgorCQkoCisJCQljZCBhICYmCisJCQl0ZXN0X2NoZWNrX2lnbm9yZSAiJyIkb3B0cyInIC12IiA8Li4vc3RkaW4wCisJCSkKKwknCitkb25lCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUElQRSAnc3RyZWFtaW5nIHN1cHBvcnQgZm9yIC0tc3RkaW4nICcKKwlta2ZpZm8gaW4gb3V0ICYmCisJKGdpdCBjaGVjay1pZ25vcmUgLW4gLXYgLS1zdGRpbiA8aW4gPm91dCAmKSAmJgorCisJIyBXZSBjYW5ub3QganVzdCAiZWNobyA+aW4iIGJlY2F1c2UgY2hlY2staWdub3JlIHdvdWxkIGdldCBFT0YKKwkjIGFmdGVyIGVjaG8gZXhpdGVkOyBpbnN0ZWFkIHdlIG9wZW4gdGhlIGRlc2NyaXB0b3IgaW4gb3VyCisJIyBzaGVsbCwgYW5kIHRoZW4gZWNobyB0byB0aGUgZmQuIFdlIG1ha2Ugc3VyZSB0byBjbG9zZSBpdCBhdAorCSMgdGhlIGVuZCwgc28gdGhhdCB0aGUgc3VicHJvY2VzcyBkb2VzIGdldCBFT0YgYW5kIGRpZXMKKwkjIHByb3Blcmx5LgorCWV4ZWMgOT5pbiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZXhlYyA5PiYtIiAmJgorCWVjaG8gPiY5IG9uZSAmJgorCXJlYWQgcmVzcG9uc2UgPG91dCAmJgorCWVjaG8gIiRyZXNwb25zZSIgfCBncmVwICJeXC5naXRpZ25vcmU6MTpvbmUJb25lIiAmJgorCWVjaG8gPiY5IHR3byAmJgorCXJlYWQgcmVzcG9uc2UgPG91dCAmJgorCWVjaG8gIiRyZXNwb25zZSIgfCBncmVwICJeOjoJdHdvIgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDAwMjQtY3JsZi1hcmNoaXZlLnNoIGIvdC90MDAyNC1jcmxmLWFyY2hpdmUuc2gKaW5kZXggNTM3ODc4Ny4uNGU5ZmEzYyAxMDA3NTUKLS0tIGEvdC90MDAyNC1jcmxmLWFyY2hpdmUuc2gKKysrIGIvdC90MDAyNC1jcmxmLWFyY2hpdmUuc2gKQEAgLTMsMTIgKzMsNiBAQAogdGVzdF9kZXNjcmlwdGlvbj0ncmVzcGVjdCBjcmxmIGluIGdpdCBhcmNoaXZlJwogCiAuIC4vdGVzdC1saWIuc2gKLUdJVF9VTlpJUD0ke0dJVF9VTlpJUDotdW56aXB9Ci0KLXRlc3RfbGF6eV9wcmVyZXEgVU5aSVAgJwotCSIkR0lUX1VOWklQIiAtdgotCXRlc3QgJD8gLW5lIDEyNwotJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKIApkaWZmIC0tZ2l0IGEvdC90MDAzMC1zdHJpcHNwYWNlLnNoIGIvdC90MDAzMC1zdHJpcHNwYWNlLnNoCmluZGV4IGNjYjBhM2MuLmE4ZTg0ZDggMTAwNzU1Ci0tLSBhL3QvdDAwMzAtc3RyaXBzcGFjZS5zaAorKysgYi90L3QwMDMwLXN0cmlwc3BhY2Uuc2gKQEAgLTM5Nyw0ICszOTcsMzkgQEAKIAl0ZXN0IC16ICIkKGVjaG8gIiMgY29tbWVudCIgfCBnaXQgc3RyaXBzcGFjZSAtcykiCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0cmlwIGNvbW1lbnRzIHdpdGggY2hhbmdlZCBjb21tZW50IGNoYXInICcKKwl0ZXN0ICEgLXogIiQoZWNobyAiOyBjb21tZW50IiB8IGdpdCAtYyBjb3JlLmNvbW1lbnRjaGFyPSI7IiBzdHJpcHNwYWNlKSIgJiYKKwl0ZXN0IC16ICIkKGVjaG8gIjsgY29tbWVudCIgfCBnaXQgLWMgY29yZS5jb21tZW50Y2hhcj0iOyIgc3RyaXBzcGFjZSAtcykiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy1jIHdpdGggc2luZ2xlIGxpbmUnICcKKwlwcmludGYgIiMgZm9vXG4iID5leHBlY3QgJiYKKwlwcmludGYgImZvbyIgfCBnaXQgc3RyaXBzcGFjZSAtYyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctYyB3aXRoIHNpbmdsZSBsaW5lIGZvbGxvd2VkIGJ5IGVtcHR5IGxpbmUnICcKKwlwcmludGYgIiMgZm9vXG4jXG4iID5leHBlY3QgJiYKKwlwcmludGYgImZvb1xuXG4iIHwgZ2l0IHN0cmlwc3BhY2UgLWMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLWMgd2l0aCBuZXdsaW5lIG9ubHknICcKKwlwcmludGYgIiNcbiIgPmV4cGVjdCAmJgorCXByaW50ZiAiXG4iIHwgZ2l0IHN0cmlwc3BhY2UgLWMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb21tZW50LWxpbmVzIHdpdGggc2luZ2xlIGxpbmUnICcKKwlwcmludGYgIiMgZm9vXG4iID5leHBlY3QgJiYKKwlwcmludGYgImZvbyIgfCBnaXQgc3RyaXBzcGFjZSAtYyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctYyB3aXRoIGNoYW5nZWQgY29tbWVudCBjaGFyJyAnCisJcHJpbnRmICI7IGZvb1xuIiA+ZXhwZWN0ICYmCisJcHJpbnRmICJmb28iIHwgZ2l0IC1jIGNvcmUuY29tbWVudGNoYXI9IjsiIHN0cmlwc3BhY2UgLWMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QwMDQwLXBhcnNlLW9wdGlvbnMuc2ggYi90L3QwMDQwLXBhcnNlLW9wdGlvbnMuc2gKaW5kZXggMjQ0YTQzYy4uNjU2MDZkZiAxMDA3NTUKLS0tIGEvdC90MDA0MC1wYXJzZS1vcHRpb25zLnNoCisrKyBiL3QvdDAwNDAtcGFyc2Utb3B0aW9ucy5zaApAQCAtNTAsNyArNTAsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGhlbHAnICcKIAl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhcnNlLW9wdGlvbnMgLWggPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC03NSw3ICs3NSw3IEBACiAJc2hpZnQgJiYKIAlzZWQgInMvXiR3aGF0IC4qLyR3aGF0ICRleHBlY3QvIiA8ZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgJCogPm91dHB1dCAyPm91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogfQogCkBAIC04Niw3ICs4Niw3IEBACiAJc2hpZnQgJiYKIAlzZWQgInMvXiR3aGF0IC4qLyR3aGF0ICRleHBlY3QvIiA8ZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgJCogPm91dHB1dCAyPm91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKIH0KIApAQCAtOTksNyArOTksNyBAQAogCWVzYWMgJiYKIAljYXQgZXhwZWN0LmVyciA+PmV4cGVjdCAmJgogCXRlc3RfbXVzdF9mYWlsIHRlc3QtcGFyc2Utb3B0aW9ucyAkKiA+b3V0cHV0IDI+b3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dC5lcnIKIH0KIApAQCAtMTEyLDcgKzExMiw3IEBACiAJZXNhYyAmJgogCWNhdCBleHBlY3QuZXJyID4+ZXhwZWN0ICYmCiAJdGVzdF9tdXN0X2ZhaWwgdGVzdC1wYXJzZS1vcHRpb25zICQqID5vdXRwdXQgMj5vdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dC5lcnIKIH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBACiAJdGVzdC1wYXJzZS1vcHRpb25zIC1zMTIzIC1iIC1pIDE3MjkgLWIgLXZ2IC1uIC1GIG15LmZpbGUgXAogCT4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0ICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVycgogJwogCiBjYXQgPiBleHBlY3QgPDwgRU9GCkBAIC0xNjgsNyArMTY4LDcgQEAKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1ib29sZWFuIC0taW50ZWdlciAxNzI5IC0tYm9vbGVhbiAtLXN0cmluZzI9MzIxIFwKIAkJLS12ZXJib3NlIC0tdmVyYm9zZSAtLW5vLWRyeS1ydW4gLS1hYmJyZXY9MTAgLS1maWxlIGZpLmxlXAogCQktLW9ic29sZXRlID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0xOTksNyArMTk5LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVybWluZ2xlZCBhcmd1bWVudHMnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgYTEgLS1zdHJpbmcgMTIzIGIxIC0tYm9vbGVhbiAtaiAxMyAtLSAtLWJvb2xlYW4gXAogCQk+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIApAQCAtMjE3LDEzICsyMTcsMTMgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndW5hbWJpZ3VvdXNseSBhYmJyZXZpYXRlZCBvcHRpb24nICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1pbnQgMiAtLWJvb2xlYW4gLS1uby1ibyA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndW5hbWJpZ3VvdXNseSBhYmJyZXZpYXRlZCBvcHRpb24gd2l0aCAiPSInICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1pbnQ9MiA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIApAQCAtMjQ2LDcgKzI0Niw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbiBhbWJpZ3VvdXMgb3B0aW9uIChhZnRlciB0d28gb3B0aW9ucyBpdCBhYmJyZXZpYXRlcyknICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1zdCAxMjMgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTI1Niw3ICsyNTYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3QgcG9zc2libGUgdHlwb3MnICcKIAl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhcnNlLW9wdGlvbnMgLWJvb2xlYW4gPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0ICYmCiAJdGVzdF9jbXAgdHlwby5lcnIgb3V0cHV0LmVycgogJwogCkBAIC0yNjYsNyArMjY2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGV0ZWN0IHBvc3NpYmxlIHR5cG9zJyAnCiAJdGVzdF9tdXN0X2ZhaWwgdGVzdC1wYXJzZS1vcHRpb25zIC1hbWJpZ3VvdXMgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0ICYmCiAJdGVzdF9jbXAgdHlwby5lcnIgb3V0cHV0LmVycgogJwogCkBAIC0yODUsNyArMjg1LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAna2VlcCBzb21lIG9wdGlvbnMgYXMgYXJndW1lbnRzJyAnCiAJdGVzdC1wYXJzZS1vcHRpb25zIC0tcXV1eCA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0gICAgICAgIHRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKICAgICAgICAgdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0zMDUsNyArMzA1LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9EQVRFKCkgYW5kIE9QVF9TRVRfUFRSKCkgd29yaycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtdCAiMTk3MC0wMS0wMSAwMDowMDowMSArMDAwMCIgLS1kZWZhdWx0LXN0cmluZyBcCiAJCWZvbyAtcSA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIApAQCAtMzI0LDcgKzMyNCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9DQUxMQkFDSygpIGFuZCBPUFRfQklUKCkgd29yaycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLWxlbmd0aD1mb3VyIC1iIC00ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0zNTIsMTMgKzM1MiwxMyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfQklUKCkgYW5kIE9QVF9TRVRfSU5UKCkgd29yaycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLXNldDIzIC1iYmJiYiAtLW5vLW9yNCA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX05FR0JJVCgpIGFuZCBPUFRfU0VUX0lOVCgpIHdvcmsnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1zZXQyMyAtYmJiYmIgLS1uZWctb3I0ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0zNzYsMTkgKzM3NiwxOSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfQklUKCkgd29ya3MnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLWJiIC0tb3I0ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfTkVHQklUKCkgd29ya3MnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLWJiIC0tbm8tbmVnLW9yNCA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX0NPVU5UVVAoKSB3aXRoIFBBUlNFX09QVF9OT0RBU0ggd29ya3MnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgKyArICsgKyArICsgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTQwNiw3ICs0MDYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfTlVNQkVSX0NBTExCQUNLKCkgd29ya3MnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLTEyMzQ1ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC00MjQsNyArNDI0LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbmVnYXRpb24gb2YgT1BUX05PTkVHIGZsYWdzIGlzIG5vdCBhbWJpZ3VvdXMnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1uby1hbWJpZyA+b3V0cHV0IDI+b3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKZGlmZiAtLWdpdCBhL3QvdDAwNzAtZnVuZGFtZW50YWwuc2ggYi90L3QwMDcwLWZ1bmRhbWVudGFsLnNoCmluZGV4IGRhMmM1MDQuLjk4NmIyYTggMTAwNzU1Ci0tLSBhL3QvdDAwNzAtZnVuZGFtZW50YWwuc2gKKysrIGIvdC90MDA3MC1mdW5kYW1lbnRhbC5zaApAQCAtMTcsNyArMTcsNyBAQAogCWdyZXAgImRvZXNub3RleGlzdC90ZXN0IiBlcnIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBQT1NJWFBFUk0gJ21rdGVtcCB0byB1bndyaXRhYmxlIGRpcmVjdG9yeSBwcmludHMgZmlsZW5hbWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUE9TSVhQRVJNLFNBTklUWSAnbWt0ZW1wIHRvIHVud3JpdGFibGUgZGlyZWN0b3J5IHByaW50cyBmaWxlbmFtZScgJwogCW1rZGlyIGNhbm5vdHdyaXRlICYmCiAJY2htb2QgLXcgY2Fubm90d3JpdGUgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImNobW9kICt3IGNhbm5vdHdyaXRlIiAmJgpkaWZmIC0tZ2l0IGEvdC90MDEwMC1wcmV2aW91cy5zaCBiL3QvdDAxMDAtcHJldmlvdXMuc2gKaW5kZXggMzE1YjliMy4uZTBhNjk0MCAxMDA3NTUKLS0tIGEvdC90MDEwMC1wcmV2aW91cy5zaAorKysgYi90L3QwMTAwLXByZXZpb3VzLnNoCkBAIC0yNyw2ICsyNyw3IEBACiAJdGVzdF9jb21taXQgQiAmJgogCWdpdCBjaGVja291dCBBICYmCiAJdGVzdF9jb21taXQgQyAmJgorCXRlc3RfY29tbWl0IEQgJiYKIAlnaXQgYnJhbmNoIC1mIG1hc3RlciBCICYmCiAJZ2l0IGJyYW5jaCAtZiBvdGhlciAmJgogCWdpdCBjaGVja291dCBvdGhlciAmJgpAQCAtMzUsMTQgKzM2LDI0IEBACiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCAiTWVyZ2UgYnJhbmNoICdcJydvdGhlcidcJyciCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEB7LTF9IHdoZW4gdGhlcmUgaXMgbm90IGVub3VnaCBzd2l0Y2hlcyB5ZXQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEB7LTF9fjEnICcKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBCICYmCisJZ2l0IGNoZWNrb3V0IG90aGVyICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWdpdCBtZXJnZSBAey0xfX4xICYmCisJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEID5hY3R1YWwgJiYKKwlncmVwICJNZXJnZSBicmFuY2ggJ1wnJ290aGVyJ1wnJyIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIEB7LTEwMH0gYmVmb3JlIGNoZWNraW5nIG91dCB0aGF0IG1hbnkgYnJhbmNoZXMgeWV0JyAnCiAJZ2l0IHJlZmxvZyBleHBpcmUgLS1leHBpcmU9bm93ICYmCiAJZ2l0IGNoZWNrb3V0IC1mIG1hc3RlciAmJgogCWdpdCByZXNldCAtLWhhcmQgQiAmJgogCWdpdCBicmFuY2ggLWYgb3RoZXIgQyAmJgogCWdpdCBjaGVja291dCBvdGhlciAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgQHstMTJ9CisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIEB7LTEwMH0KICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMDA0LXJlYWQtdHJlZS1tLXUtd2Yuc2ggYi90L3QxMDA0LXJlYWQtdHJlZS1tLXUtd2Yuc2gKaW5kZXggYjNhZTdkNS4uM2U3MmFmZiAxMDA3NTUKLS0tIGEvdC90MTAwNC1yZWFkLXRyZWUtbS11LXdmLnNoCisrKyBiL3QvdDEwMDQtcmVhZC10cmVlLW0tdS13Zi5zaApAQCAtMTU4LDcgKzE1OCw3IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZnVubnkgc3ltbGluayBpbiB3b3JrIHRyZWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Z1bm55IHN5bWxpbmsgaW4gd29yayB0cmVlJyAnCiAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IC1iIHN5bS1iIHNpZGUtYiAmJgpAQCAtMTcwLDE1ICsxNzAsMTQgQEAKIAlybSAtZnIgYSAmJgogCWdpdCBjaGVja291dCAtYiBzeW0tYSBzaWRlLWEgJiYKIAlta2RpciAtcCBhICYmCi0JbG4gLXMgLi4vYiBhL2IgJiYKLQlnaXQgYWRkIGEvYiAmJgorCXRlc3RfbG5fc19hZGQgLi4vYiBhL2IgJiYKIAlnaXQgY29tbWl0IC1tICJ3ZSBhZGQgYS9iIiAmJgogCiAJcmVhZF90cmVlX3VfbXVzdF9zdWNjZWVkIC1tIC11IHN5bS1hIHN5bS1hIHN5bS1iCiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyxTQU5JVFkgJ2Z1bm55IHN5bWxpbmsgaW4gd29yayB0cmVlLCB1bi11bmxpbmstYWJsZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBTQU5JVFkgJ2Z1bm55IHN5bWxpbmsgaW4gd29yayB0cmVlLCB1bi11bmxpbmstYWJsZScgJwogCiAJcm0gLWZyIGEgYiAmJgogCWdpdCByZXNldCAtLWhhcmQgJiYKZGlmZiAtLWdpdCBhL3QvdDEwMDYtY2F0LWZpbGUuc2ggYi90L3QxMDA2LWNhdC1maWxlLnNoCmluZGV4IGQ4YjdmMmYuLjljYzVjNmIgMTAwNzU1Ci0tLSBhL3QvdDEwMDYtY2F0LWZpbGUuc2gKKysrIGIvdC90MTAwNi1jYXQtZmlsZS5zaApAQCAtMTE2LDkgKzExNiw5IEBACiAKIHJ1bl90ZXN0cyAndHJlZScgJHRyZWVfc2hhMSAkdHJlZV9zaXplICIiICIkdHJlZV9wcmV0dHlfY29udGVudCIKIAotY29tbWl0X21lc3NhZ2U9IkludGlhbCBjb21taXQiCitjb21taXRfbWVzc2FnZT0iSW5pdGlhbCBjb21taXQiCiBjb21taXRfc2hhMT0kKGVjaG9fd2l0aG91dF9uZXdsaW5lICIkY29tbWl0X21lc3NhZ2UiIHwgZ2l0IGNvbW1pdC10cmVlICR0cmVlX3NoYTEpCi1jb21taXRfc2l6ZT0xNzYKK2NvbW1pdF9zaXplPTE3NwogY29tbWl0X2NvbnRlbnQ9InRyZWUgJHRyZWVfc2hhMQogYXV0aG9yICRHSVRfQVVUSE9SX05BTUUgPCRHSVRfQVVUSE9SX0VNQUlMPiAwMDAwMDAwMDAwICswMDAwCiBjb21taXR0ZXIgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDAwMDAwMDAwMDAgKzAwMDAKQEAgLTEzNSwxNCArMTM1LDExIEBACiB0YWdfY29udGVudD0iJHRhZ19oZWFkZXJfd2l0aG91dF90aW1lc3RhbXAgMDAwMDAwMDAwMCArMDAwMAogCiAkdGFnX2Rlc2NyaXB0aW9uIgotdGFnX3ByZXR0eV9jb250ZW50PSIkdGFnX2hlYWRlcl93aXRob3V0X3RpbWVzdGFtcCBUaHUgSmFuIDEgMDA6MDA6MDAgMTk3MCArMDAwMAotCi0kdGFnX2Rlc2NyaXB0aW9uIgogCiB0YWdfc2hhMT0kKGVjaG9fd2l0aG91dF9uZXdsaW5lICIkdGFnX2NvbnRlbnQiIHwgZ2l0IG1rdGFnKQogdGFnX3NpemU9JChzdHJsZW4gIiR0YWdfY29udGVudCIpCiAKLXJ1bl90ZXN0cyAndGFnJyAkdGFnX3NoYTEgJHRhZ19zaXplICIkdGFnX2NvbnRlbnQiICIkdGFnX3ByZXR0eV9jb250ZW50IiAxCitydW5fdGVzdHMgJ3RhZycgJHRhZ19zaGExICR0YWdfc2l6ZSAiJHRhZ19jb250ZW50IiAiJHRhZ19jb250ZW50IiAxCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICJSZWFjaCBhIGJsb2IgZnJvbSBhIHRhZyBwb2ludGluZyB0byBpdCIgXApkaWZmIC0tZ2l0IGEvdC90MTAxMS1yZWFkLXRyZWUtc3BhcnNlLWNoZWNrb3V0LnNoIGIvdC90MTAxMS1yZWFkLXRyZWUtc3BhcnNlLWNoZWNrb3V0LnNoCmluZGV4IDVjMDA1M2EuLjBjNzRiZWUgMTAwNzU1Ci0tLSBhL3QvdDEwMTEtcmVhZC10cmVlLXNwYXJzZS1jaGVja291dC5zaAorKysgYi90L3QxMDExLXJlYWQtdHJlZS1zcGFyc2UtY2hlY2tvdXQuc2gKQEAgLTI1MCw0ICsyNTAsMjggQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgd2l0aG91dCAtLWlnbm9yZS1za2lwLXdvcmt0cmVlLWJpdHMnICcKKwllY2hvICIqIiA+LmdpdC9pbmZvL3NwYXJzZS1jaGVja291dCAmJgorCWdpdCBjaGVja291dCAtZiB0b3AgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBpbml0LnQgJiYKKwllY2hvIHN1YiA+LmdpdC9pbmZvL3NwYXJzZS1jaGVja291dCAmJgorCWdpdCBjaGVja291dCAmJgorCWVjaG8gbW9kaWZpZWQgPj4gc3ViL2FkZGVkICYmCisJZ2l0IGNoZWNrb3V0IC4gJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyBpbml0LnQgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZSBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IHdpdGggLS1pZ25vcmUtc2tpcC13b3JrdHJlZS1iaXRzJyAnCisJZWNobyAiKiIgPi5naXQvaW5mby9zcGFyc2UtY2hlY2tvdXQgJiYKKwlnaXQgY2hlY2tvdXQgLWYgdG9wICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgaW5pdC50ICYmCisJZWNobyBzdWIgPi5naXQvaW5mby9zcGFyc2UtY2hlY2tvdXQgJiYKKwlnaXQgY2hlY2tvdXQgJiYKKwllY2hvIG1vZGlmaWVkID4+IHN1Yi9hZGRlZCAmJgorCWdpdCBjaGVja291dCAtLWlnbm9yZS1za2lwLXdvcmt0cmVlLWJpdHMgLiAmJgorCXRlc3RfcGF0aF9pc19maWxlIGluaXQudCAmJgorCWdpdCBkaWZmIC0tZXhpdC1jb2RlIEhFQUQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMDYwLW9iamVjdC1jb3JydXB0aW9uLnNoIGIvdC90MTA2MC1vYmplY3QtY29ycnVwdGlvbi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjg3MDUxCi0tLSAvZGV2L251bGwKKysrIGIvdC90MTA2MC1vYmplY3QtY29ycnVwdGlvbi5zaApAQCAtMCwwICsxLDEwNCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3NlZSBob3cgd2UgaGFuZGxlIHZhcmlvdXMgZm9ybXMgb2YgY29ycnVwdGlvbicKKy4gLi90ZXN0LWxpYi5zaAorCisjIGNvbnZlcnQgIjEyMzRhYmNkIiB0byAiLmdpdC9vYmplY3RzLzEyLzM0YWJjZCIKK29ial90b19maWxlKCkgeworCWVjaG8gIiQoZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIpL29iamVjdHMvJChnaXQgcmV2LXBhcnNlICIkMSIgfCBzZWQgJ3MsLi4sJi8sJykiCit9CisKKyMgQ29udmVydCBieXRlIGF0IG9mZnNldCAiJDIiIG9mIG9iamVjdCAiJDEiIGludG8gJ1wwJworY29ycnVwdF9ieXRlKCkgeworCW9ial9maWxlPSQob2JqX3RvX2ZpbGUgIiQxIikgJiYKKwljaG1vZCArdyAiJG9ial9maWxlIiAmJgorCXByaW50ZiAnXDAnIHwgZGQgb2Y9IiRvYmpfZmlsZSIgYnM9MSBzZWVrPSIkMiIgY29udj1ub3RydW5jCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGNvcnJ1cHQgcmVwbycgJworCWdpdCBpbml0IGJpdC1lcnJvciAmJgorCSgKKwkJY2QgYml0LWVycm9yICYmCisJCXRlc3RfY29tbWl0IGNvbnRlbnQgJiYKKwkJY29ycnVwdF9ieXRlIEhFQUQ6Y29udGVudC50IDEwCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvIHdpdGggbWlzc2luZyBvYmplY3QnICcKKwlnaXQgaW5pdCBtaXNzaW5nICYmCisJKAorCQljZCBtaXNzaW5nICYmCisJCXRlc3RfY29tbWl0IGNvbnRlbnQgJiYKKwkJcm0gLWYgIiQob2JqX3RvX2ZpbGUgSEVBRDpjb250ZW50LnQpIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgcmVwbyB3aXRoIG1pc25hbWVkIG9iamVjdCcgJworCWdpdCBpbml0IG1pc25hbWVkICYmCisJKAorCQljZCBtaXNuYW1lZCAmJgorCQl0ZXN0X2NvbW1pdCBjb250ZW50ICYmCisJCWdvb2Q9JChvYmpfdG9fZmlsZSBIRUFEOmNvbnRlbnQudCkgJiYKKwkJYmxvYj0kKGVjaG8gY29ycnVwdCB8IGdpdCBoYXNoLW9iamVjdCAtdyAtLXN0ZGluKSAmJgorCQliYWQ9JChvYmpfdG9fZmlsZSAkYmxvYikgJiYKKwkJcm0gLWYgIiRnb29kIiAmJgorCQltdiAiJGJhZCIgIiRnb29kIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RyZWFtaW5nIGEgY29ycnVwdCBibG9iIGZhaWxzJyAnCisJKAorCQljZCBiaXQtZXJyb3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNhdC1maWxlIGJsb2IgSEVBRDpjb250ZW50LnQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWQtdHJlZSAtdSBkZXRlY3RzIGJpdC1lcnJvcnMgaW4gYmxvYnMnICcKKwkoCisJCWNkIGJpdC1lcnJvciAmJgorCQlybSAtZiBjb250ZW50LnQgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYWQtdHJlZSAtLXJlc2V0IC11IEhFQUQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWQtdHJlZSAtdSBkZXRlY3RzIG1pc3Npbmcgb2JqZWN0cycgJworCSgKKwkJY2QgbWlzc2luZyAmJgorCQlybSAtZiBjb250ZW50LnQgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYWQtdHJlZSAtLXJlc2V0IC11IEhFQUQKKwkpCisnCisKKyMgV2UgdXNlIC0tYmFyZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgdHJhbnNwb3J0IGRldGVjdHMgaXQsIG5vdCB0aGUgY2hlY2tvdXQKKyMgcGhhc2UuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLW5vLWxvY2FsIC0tYmFyZSBkZXRlY3RzIGNvcnJ1cHRpb24nICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2xvbmUgLS1uby1sb2NhbCAtLWJhcmUgYml0LWVycm9yIGNvcnJ1cHQtdHJhbnNwb3J0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tbm8tbG9jYWwgLS1iYXJlIGRldGVjdHMgbWlzc2luZyBvYmplY3QnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2xvbmUgLS1uby1sb2NhbCAtLWJhcmUgbWlzc2luZyBtaXNzaW5nLXRyYW5zcG9ydAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLW5vLWxvY2FsIC0tYmFyZSBkZXRlY3RzIG1pc25hbWVkIG9iamVjdCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAtLW5vLWxvY2FsIC0tYmFyZSBtaXNuYW1lZCBtaXNuYW1lZC10cmFuc3BvcnQKKycKKworIyBXZSBkbyBub3QgZXhwZWN0IC0tbG9jYWwgdG8gZGV0ZWN0IGNvcnJ1cHRpb24gYXQgdGhlIHRyYW5zcG9ydCBsYXllciwKKyMgc28gd2UgYXJlIHJlYWxseSBjaGVja2luZyB0aGUgY2hlY2tvdXQoKSBjb2RlIHBhdGguCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLWxvY2FsIGRldGVjdHMgY29ycnVwdGlvbicgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjbG9uZSAtLWxvY2FsIGJpdC1lcnJvciBjb3JydXB0LWNoZWNrb3V0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Vycm9yIGRldGVjdGVkIGR1cmluZyBjaGVja291dCBsZWF2ZXMgcmVwbyBpbnRhY3QnICcKKwl0ZXN0X3BhdGhfaXNfZGlyIGNvcnJ1cHQtY2hlY2tvdXQvLmdpdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLWxvY2FsIGRldGVjdHMgbWlzc2luZyBvYmplY3RzJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNsb25lIC0tbG9jYWwgbWlzc2luZyBtaXNzaW5nLWNoZWNrb3V0CisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2Nsb25lIC0tbG9jYWwgZGV0ZWN0cyBtaXNuYW1lZCBvYmplY3RzJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNsb25lIC0tbG9jYWwgbWlzbmFtZWQgbWlzbmFtZWQtY2hlY2tvdXQKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMzAwLXJlcG8tY29uZmlnLnNoIGIvdC90MTMwMC1yZXBvLWNvbmZpZy5zaAppbmRleCAzYzk2ZmRhLi5jNGE3ZDg0IDEwMDc1NQotLS0gYS90L3QxMzAwLXJlcG8tY29uZmlnLnNoCisrKyBiL3QvdDEzMDAtcmVwby1jb25maWcuc2gKQEAgLTEwODcsNCArMTA4NywzOSBAQAogCWdyZXAgIiBsaW5lIDMgIiBlcnJvcgogJwogCisjIGdvb2Qgc2VjdGlvbiBoeWdpZW5lCit0ZXN0X2V4cGVjdF9mYWlsdXJlICd1bnNldHRpbmcgdGhlIGxhc3Qga2V5IGluIGEgc2VjdGlvbiByZW1vdmVzIGhlYWRlcicgJworCWNhdCA+LmdpdC9jb25maWcgPDwtXEVPRiAmJgorCSMgc29tZSBnZW5lcmljIGNvbW1lbnQgb24gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpdHNlbGYKKwkjIGEgY29tbWVudCBzcGVjaWZpYyB0byB0aGlzICJzZWN0aW9uIiBzZWN0aW9uLgorCVtzZWN0aW9uXQorCSMgc29tZSBpbnRlcnZlbmluZyBsaW5lcworCSMgdGhhdCBzaG91bGQgYWxzbyBiZSBkcm9wcGVkCisKKwlrZXkgPSB2YWx1ZQorCSMgcGxlYXNlIGJlIGNhcmVmdWwgd2hlbiB5b3UgdXBkYXRlIHRoZSBhYm92ZSB2YXJpYWJsZQorCUVPRgorCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCSMgc29tZSBnZW5lcmljIGNvbW1lbnQgb24gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpdHNlbGYKKwlFT0YKKworCWdpdCBjb25maWcgLS11bnNldCBzZWN0aW9uLmtleSAmJgorCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdhZGRpbmcgYSBrZXkgaW50byBhbiBlbXB0eSBzZWN0aW9uIHJldXNlcyBoZWFkZXInICcKKwljYXQgPi5naXQvY29uZmlnIDw8LVxFT0YgJiYKKwlbc2VjdGlvbl0KKwlFT0YKKworCXFfdG9fdGFiID5leHBlY3QgPDwtXEVPRiAmJgorCVtzZWN0aW9uXQorCVFrZXkgPSB2YWx1ZQorCUVPRgorCisJZ2l0IGNvbmZpZyBzZWN0aW9uLmtleSB2YWx1ZQorCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2NvbmZpZworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDE0NTAtZnNjay5zaCBiL3QvdDE0NTAtZnNjay5zaAppbmRleCAwOGFhMjRjLi5kNzMwNzM0IDEwMDc1NQotLS0gYS90L3QxNDUwLWZzY2suc2gKKysrIGIvdC90MTQ1MC1mc2NrLnNoCkBAIC0yMzcsNCArMjM3LDM1IEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmc2NrIG5vdGljZXMgIi4iIGFuZCAiLi4iIGluIHRyZWVzJyAnCisJKAorCQlnaXQgaW5pdCBkb3RzICYmCisJCWNkIGRvdHMgJiYKKwkJYmxvYj0kKGVjaG8gZm9vIHwgZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4pICYmCisJCXRhYj0kKHByaW50ZiAiXFx0IikgJiYKKwkJZ2l0IG1rdHJlZSA8PC1FT0YgJiYKKwkJMTAwNjQ0IGJsb2IgJGJsb2IkdGFiLgorCQkxMDA2NDQgYmxvYiAkYmxvYiR0YWIuLgorCQlFT0YKKwkJZ2l0IGZzY2sgMj5vdXQgJiYKKwkJY2F0IG91dCAmJgorCQlncmVwICJ3YXJuaW5nLipcXC4iIG91dAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZnNjayBub3RpY2VzICIuZ2l0IiBpbiB0cmVlcycgJworCSgKKwkJZ2l0IGluaXQgZG90Z2l0ICYmCisJCWNkIGRvdGdpdCAmJgorCQlibG9iPSQoZWNobyBmb28gfCBnaXQgaGFzaC1vYmplY3QgLXcgLS1zdGRpbikgJiYKKwkJdGFiPSQocHJpbnRmICJcXHQiKSAmJgorCQlnaXQgbWt0cmVlIDw8LUVPRiAmJgorCQkxMDA2NDQgYmxvYiAkYmxvYiR0YWIuZ2l0CisJCUVPRgorCQlnaXQgZnNjayAyPm91dCAmJgorCQljYXQgb3V0ICYmCisJCWdyZXAgIndhcm5pbmcuKlxcLmdpdCIgb3V0CisJKQorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDE1MDctcmV2LXBhcnNlLXVwc3RyZWFtLnNoIGIvdC90MTUwNy1yZXYtcGFyc2UtdXBzdHJlYW0uc2gKaW5kZXggYjI3YTcyMC4uMmExOWU3OSAxMDA3NTUKLS0tIGEvdC90MTUwNy1yZXYtcGFyc2UtdXBzdHJlYW0uc2gKKysrIGIvdC90MTUwNy1yZXYtcGFyc2UtdXBzdHJlYW0uc2gKQEAgLTEyOSw4ICsxMjksNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2hAe3V9IGVycm9yIG1lc3NhZ2Ugd2hlbiBubyB1cHN0cmVhbScgJwogCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgotCWVycm9yOiBObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJHtzcX1ub24tdHJhY2tpbmcke3NxfQotCWZhdGFsOiBOZWVkZWQgYSBzaW5nbGUgcmV2aXNpb24KKwlmYXRhbDogTm8gdXBzdHJlYW0gY29uZmlndXJlZCBmb3IgYnJhbmNoICR7c3F9bm9uLXRyYWNraW5nJHtzcX0KIAlFT0YKIAllcnJvcl9tZXNzYWdlIG5vbi10cmFja2luZ0B7dX0gMj5hY3R1YWwgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbApAQCAtMTM4LDggKzEzNyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0B7dX0gZXJyb3IgbWVzc2FnZSB3aGVuIG5vIHVwc3RyZWFtJyAnCiAJY2F0ID5leHBlY3QgPDwtRU9GICYmCi0JZXJyb3I6IE5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAke3NxfW1hc3RlciR7c3F9Ci0JZmF0YWw6IE5lZWRlZCBhIHNpbmdsZSByZXZpc2lvbgorCWZhdGFsOiBObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJHtzcX1tYXN0ZXIke3NxfQogCUVPRgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgQHt1fSAyPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCkBAIC0xNDcsOCArMTQ1LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoQHt1fSBlcnJvciBtZXNzYWdlIHdpdGggbWlzc3BlbHQgYnJhbmNoJyAnCiAJY2F0ID5leHBlY3QgPDwtRU9GICYmCi0JZXJyb3I6IE5vIHN1Y2ggYnJhbmNoOiAke3NxfW5vLXN1Y2gtYnJhbmNoJHtzcX0KLQlmYXRhbDogTmVlZGVkIGEgc2luZ2xlIHJldmlzaW9uCisJZmF0YWw6IE5vIHN1Y2ggYnJhbmNoOiAke3NxfW5vLXN1Y2gtYnJhbmNoJHtzcX0KIAlFT0YKIAllcnJvcl9tZXNzYWdlIG5vLXN1Y2gtYnJhbmNoQHt1fSAyPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCkBAIC0xNTYsOCArMTUzLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnQHt1fSBlcnJvciBtZXNzYWdlIHdoZW4gbm90IG9uIGEgYnJhbmNoJyAnCiAJY2F0ID5leHBlY3QgPDwtRU9GICYmCi0JZXJyb3I6IEhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2gKLQlmYXRhbDogTmVlZGVkIGEgc2luZ2xlIHJldmlzaW9uCisJZmF0YWw6IEhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2gKIAlFT0YKIAlnaXQgY2hlY2tvdXQgSEVBRF4wICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBAe3V9IDI+YWN0dWFsICYmCkBAIC0xNjYsOCArMTYyLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoQHt1fSBlcnJvciBtZXNzYWdlIGlmIHVwc3RyZWFtIGJyYW5jaCBub3QgZmV0Y2hlZCcgJwogCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgotCWVycm9yOiBVcHN0cmVhbSBicmFuY2ggJHtzcX1yZWZzL2hlYWRzL3NpZGUke3NxfSBub3Qgc3RvcmVkIGFzIGEgcmVtb3RlLXRyYWNraW5nIGJyYW5jaAotCWZhdGFsOiBOZWVkZWQgYSBzaW5nbGUgcmV2aXNpb24KKwlmYXRhbDogVXBzdHJlYW0gYnJhbmNoICR7c3F9cmVmcy9oZWFkcy9zaWRlJHtzcX0gbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2gKIAlFT0YKIAllcnJvcl9tZXNzYWdlIGJhZC11cHN0cmVhbUB7dX0gMj5hY3R1YWwgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbApkaWZmIC0tZ2l0IGEvdC90MTUwOC1hdC1jb21iaW5hdGlvbnMuc2ggYi90L3QxNTA4LWF0LWNvbWJpbmF0aW9ucy5zaAppbmRleCBkNWQ2MjQ0Li40ZGIxNjEzIDEwMDc1NQotLS0gYS90L3QxNTA4LWF0LWNvbWJpbmF0aW9ucy5zaAorKysgYi90L3QxNTA4LWF0LWNvbWJpbmF0aW9ucy5zaApAQCAtNCwxNyArNCwyNCBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIGNoZWNrKCkgewotdGVzdF9leHBlY3RfJHszOi1zdWNjZXNzfSAiJDEgPSAkMiIgIgotCWVjaG8gJyQyJyA+ZXhwZWN0ICYmCi0JZ2l0IGxvZyAtMSAtLWZvcm1hdD0lcyAnJDEnID5hY3R1YWwgJiYKLQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCi0iCisJdGVzdF9leHBlY3RfJHs0Oi1zdWNjZXNzfSAiJDEgPSAkMyIgIgorCQllY2hvICckMycgPmV4cGVjdCAmJgorCQlpZiB0ZXN0ICckMicgPSAnY29tbWl0JworCQl0aGVuCisJCQlnaXQgbG9nIC0xIC0tZm9ybWF0PSVzICckMScgPmFjdHVhbAorCQllbHNlCisJCQlnaXQgcmV2LXBhcnNlIC0tc3ltYm9saWMtZnVsbC1uYW1lICckMScgPmFjdHVhbAorCQlmaSAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJIgogfQorCiBub25zZW5zZSgpIHsKLXRlc3RfZXhwZWN0XyR7Mjotc3VjY2Vzc30gIiQxIGlzIG5vbnNlbnNpY2FsIiAiCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyAtMSAnJDEnCi0iCisJdGVzdF9leHBlY3RfJHsyOi1zdWNjZXNzfSAiJDEgaXMgbm9uc2Vuc2ljYWwiICIKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAnJDEnCisJIgogfQorCiBmYWlsKCkgewogCSIkQCIgZmFpbHVyZQogfQpAQCAtMzEsMjEgKzM4LDQyIEBACiAJZ2l0IGNoZWNrb3V0IC1iIG5ldy1icmFuY2ggJiYKIAl0ZXN0X2NvbW1pdCBuZXctb25lICYmCiAJdGVzdF9jb21taXQgbmV3LXR3byAmJgotCWdpdCBjb25maWcgYnJhbmNoLm9sZC1icmFuY2gucmVtb3RlIC4gJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5vbGQtYnJhbmNoLm1lcmdlIHJlZnMvaGVhZHMvbWFzdGVyICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubmV3LWJyYW5jaC5yZW1vdGUgLiAmJgotCWdpdCBjb25maWcgYnJhbmNoLm5ldy1icmFuY2gubWVyZ2UgcmVmcy9oZWFkcy91cHN0cmVhbS1icmFuY2gKKwlnaXQgYnJhbmNoIC11IG1hc3RlciBvbGQtYnJhbmNoICYmCisJZ2l0IGJyYW5jaCAtdSB1cHN0cmVhbS1icmFuY2ggbmV3LWJyYW5jaAogJwogCi1jaGVjayBIRUFEIG5ldy10d28KLWNoZWNrICJAezF9IiBuZXctb25lCi1jaGVjayAiQHstMX0iIG9sZC10d28KLWNoZWNrICJAey0xfUB7MX0iIG9sZC1vbmUKLWNoZWNrICJAe3V9IiB1cHN0cmVhbS10d28KLWNoZWNrICJAe3V9QHsxfSIgdXBzdHJlYW0tb25lCi1jaGVjayAiQHstMX1Ae3V9IiBtYXN0ZXItdHdvCi1jaGVjayAiQHstMX1Ae3V9QHsxfSIgbWFzdGVyLW9uZQorY2hlY2sgSEVBRCByZWYgcmVmcy9oZWFkcy9uZXctYnJhbmNoCitjaGVjayAiQHsxfSIgY29tbWl0IG5ldy1vbmUKK2NoZWNrICJIRUFEQHsxfSIgY29tbWl0IG5ldy1vbmUKK2NoZWNrICJAe25vd30iIGNvbW1pdCBuZXctdHdvCitjaGVjayAiSEVBREB7bm93fSIgY29tbWl0IG5ldy10d28KK2NoZWNrICJAey0xfSIgcmVmIHJlZnMvaGVhZHMvb2xkLWJyYW5jaAorY2hlY2sgIkB7LTF9QHswfSIgY29tbWl0IG9sZC10d28KK2NoZWNrICJAey0xfUB7MX0iIGNvbW1pdCBvbGQtb25lCitjaGVjayAiQHt1fSIgcmVmIHJlZnMvaGVhZHMvdXBzdHJlYW0tYnJhbmNoCitjaGVjayAiSEVBREB7dX0iIHJlZiByZWZzL2hlYWRzL3Vwc3RyZWFtLWJyYW5jaAorY2hlY2sgIkB7dX1AezF9IiBjb21taXQgdXBzdHJlYW0tb25lCitjaGVjayAiQHstMX1Ae3V9IiByZWYgcmVmcy9oZWFkcy9tYXN0ZXIKK2NoZWNrICJAey0xfUB7dX1AezF9IiBjb21taXQgbWFzdGVyLW9uZQorY2hlY2sgIkAiIGNvbW1pdCBuZXctdHdvCitjaGVjayAiQEB7dX0iIHJlZiByZWZzL2hlYWRzL3Vwc3RyZWFtLWJyYW5jaAogbm9uc2Vuc2UgIkB7dX1Aey0xfSIKK25vbnNlbnNlICJAezB9QHswfSIKIG5vbnNlbnNlICJAezF9QHt1fSIKK25vbnNlbnNlICJIRUFEQHstMX0iCitub25zZW5zZSAiQHstMX1Aey0xfSIKKworIyBAe059IHZlcnN1cyBIRUFEQHtOfQorCitjaGVjayAiSEVBREB7M30iIGNvbW1pdCBvbGQtdHdvCitub25zZW5zZSAiQHszfSIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3dpdGNoIHRvIG9sZC1icmFuY2gnICcKKwlnaXQgY2hlY2tvdXQgb2xkLWJyYW5jaAorJworCitjaGVjayBIRUFEIHJlZiByZWZzL2hlYWRzL29sZC1icmFuY2gKK2NoZWNrICJIRUFEQHsxfSIgY29tbWl0IG5ldy10d28KK2NoZWNrICJAezF9IiBjb21taXQgb2xkLW9uZQogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDE1MDkvcHJlcGFyZS1jaHJvb3Quc2ggYi90L3QxNTA5L3ByZXBhcmUtY2hyb290LnNoCmluZGV4IGM1MzM0YTguLjYyNjkxMTcgMTAwNzU1Ci0tLSBhL3QvdDE1MDkvcHJlcGFyZS1jaHJvb3Quc2gKKysrIGIvdC90MTUwOS9wcmVwYXJlLWNocm9vdC5zaApAQCAtMTQsNyArMTQsNyBAQAogCiBSPSIkMSIKIAotWyAtbiAiJFIiIF0gfHwgZGllICJVc2FnZTogcHJlcGFyZS1jaHJvb3Quc2ggPHJvb3Q+IgorWyAtbiAiJFIiIF0gfHwgZGllICJ1c2FnZTogcHJlcGFyZS1jaHJvb3Quc2ggPHJvb3Q+IgogWyAteCBnaXQgXSB8fCBkaWUgIlRoaXMgc2NyaXB0IG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGF0IGdpdCBzb3VyY2UgY29kZSdzIHRvcCBkaXJlY3RvcnkiCiBbIC14IC9iaW4vYnVzeWJveCBdIHx8IGRpZSAiWW91IG5lZWQgYnVzeWJveCIKIApkaWZmIC0tZ2l0IGEvdC90MTUxMC1yZXBvLXNldHVwLnNoIGIvdC90MTUxMC1yZXBvLXNldHVwLnNoCmluZGV4IDgwYWVkZmMuLmNmMmVlNzggMTAwNzU1Ci0tLSBhL3QvdDE1MTAtcmVwby1zZXR1cC5zaAorKysgYi90L3QxNTEwLXJlcG8tc2V0dXAuc2gKQEAgLTUxNyw2ICs1MTcsMjUgQEAKIAkJIiRoZXJlLzE2Yy8uZ2l0IiAiKG51bGwpIiAiJGhlcmUvMTZjL3N1YiIgIihudWxsKSIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnIzE2ZDogYmFyZW5lc3MgcHJlc2VydmVkIGFjcm9zcyBhbGlhcycgJworCXNldHVwX3JlcG8gMTZkIHVuc2V0ICIiIHVuc2V0ICYmCisJKAorCQljZCAxNmQvLmdpdCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgc3RhdHVzICYmCisJCWdpdCBjb25maWcgYWxpYXMuc3Qgc3RhdHVzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBzdAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnIzE2ZTogYmFyZW5lc3MgcHJlc2VydmVkIGJ5IC0tYmFyZScgJworCXNldHVwX3JlcG8gMTZlIHVuc2V0ICIiIHVuc2V0ICYmCisJKAorCQljZCAxNmUvLmdpdCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgc3RhdHVzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCAtLWJhcmUgc3RhdHVzCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICcjMTc6IEdJVF9XT1JLX1RSRUUgd2l0aG91dCBleHBsaWNpdCBHSVRfRElSIGlzIGFjY2VwdGVkIChiYXJlIGNhc2UpJyAnCiAJIyBKdXN0IGxpa2UgIzE2LgogCXNldHVwX3JlcG8gMTdhIHVuc2V0ICIiIHRydWUgJiYKZGlmZiAtLWdpdCBhL3QvdDE1MTItcmV2LXBhcnNlLWRpc2FtYmlndWF0aW9uLnNoIGIvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKaW5kZXggNmIzZDc5Ny4uZGIyMjgwOCAxMDA3NTUKLS0tIGEvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKKysrIGIvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKQEAgLTI2MSw0ICsyNjEsMjIgQEAKIAl0ZXN0ICIkKHNlZCAtZSAicy9eXCguLi4uLi4uLi5cKS4qL1wxLyIgYWN0dWFsIHwgc29ydCAtdSkiID0gMDAwMDAwMDAwCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtYmlndW91cyA0MC1oZXggcmVmJyAnCisJVFJFRT0kKGdpdCBta3RyZWUgPC9kZXYvbnVsbCkgJiYKKwlSRUY9YGdpdCByZXYtcGFyc2UgSEVBRGAgJiYKKwlWQUw9JChnaXQgY29tbWl0LXRyZWUgJFRSRUUgPC9kZXYvbnVsbCkgJiYKKwlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzLyRSRUYgJFZBTCAmJgorCXRlc3QgYGdpdCByZXYtcGFyc2UgJFJFRiAyPmVycmAgPSAkUkVGICYmCisJZ3JlcCAicmVmbmFtZS4qJHtSRUZ9LiphbWJpZ3VvdXMiIGVycgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbWJpZ3VvdXMgc2hvcnQgc2hhMSByZWYnICcKKwlUUkVFPSQoZ2l0IG1rdHJlZSA8L2Rldi9udWxsKSAmJgorCVJFRj1gZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQURgICYmCisJVkFMPSQoZ2l0IGNvbW1pdC10cmVlICRUUkVFIDwvZGV2L251bGwpICYmCisJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9oZWFkcy8kUkVGICRWQUwgJiYKKwl0ZXN0IGBnaXQgcmV2LXBhcnNlICRSRUYgMj5lcnJgID0gJFZBTCAmJgorCWdyZXAgInJlZm5hbWUuKiR7UkVGfS4qYW1iaWd1b3VzIiBlcnIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMDAxLWNoZWNrb3V0LWNhY2hlLWNsYXNoLnNoIGIvdC90MjAwMS1jaGVja291dC1jYWNoZS1jbGFzaC5zaAppbmRleCA5OGFhNzNlLi4xZmM4ZTYzIDEwMDc1NQotLS0gYS90L3QyMDAxLWNoZWNrb3V0LWNhY2hlLWNsYXNoLnNoCisrKyBiL3QvdDIwMDEtY2hlY2tvdXQtY2FjaGUtY2xhc2guc2gKQEAgLTU5LDEwICs1OSw5IEBACiAgICAgJ2dpdCByZWFkLXRyZWUgLW0gJHRyZWUxICYmIGdpdCBjaGVja291dC1pbmRleCAtZiAtYScKIHRlc3RfZGVidWcgJ3Nob3dfZmlsZXMgJHRyZWUxJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKLSAgICAnZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBhIHN5bWxpbmsuJyBcCi0gICAgJ2xuIC1zIHBhdGgwIHBhdGgxICYmCi0gICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgcGF0aDEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnYWRkIGEgc3ltbGluaycgXAorICAgICd0ZXN0X2xuX3NfYWRkIHBhdGgwIHBhdGgxJwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3dyaXRpbmcgdHJlZSBvdXQgd2l0aCBnaXQgd3JpdGUtdHJlZScgXAogICAgICd0cmVlMz0kKGdpdCB3cml0ZS10cmVlKScKZGlmZiAtLWdpdCBhL3QvdDIwMDQtY2hlY2tvdXQtY2FjaGUtdGVtcC5zaCBiL3QvdDIwMDQtY2hlY2tvdXQtY2FjaGUtdGVtcC5zaAppbmRleCAwZjRiMjg5Li5mMTcxYTU1IDEwMDc1NQotLS0gYS90L3QyMDA0LWNoZWNrb3V0LWNhY2hlLXRlbXAuc2gKKysrIGIvdC90MjAwNC1jaGVja291dC1jYWNoZS10ZW1wLnNoCkBAIC0xOTQsMTEgKzE5NCwxMCBAQAogIHRlc3QgJChjYXQgLi4vJHMxKSA9IHRyZWUxYXN1YmRpci9wYXRoNSkKICknCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgXAordGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAnY2hlY2tvdXQgLS10ZW1wIHN5bWxpbmsnICcKIHJtIC1mIHBhdGgqIC5tZXJnZV8qIG91dCAuZ2l0L2luZGV4ICYmCi1sbiAtcyBiIGEgJiYKLWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgYSAmJgordGVzdF9sbl9zX2FkZCBiIGEgJiYKIHQ0PSQoZ2l0IHdyaXRlLXRyZWUpICYmCiBybSAtZiAuZ2l0L2luZGV4ICYmCiBnaXQgcmVhZC10cmVlICR0NCAmJgpkaWZmIC0tZ2l0IGEvdC90MjAwNy1jaGVja291dC1zeW1saW5rLnNoIGIvdC90MjAwNy1jaGVja291dC1zeW1saW5rLnNoCmluZGV4IGU2ZjU5ZjEuLmZjOWFhZDUgMTAwNzU1Ci0tLSBhL3QvdDIwMDctY2hlY2tvdXQtc3ltbGluay5zaAorKysgYi90L3QyMDA3LWNoZWNrb3V0LXN5bWxpbmsuc2gKQEAgLTYsNyArNiw3IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIHNldHVwICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCiAJbWtkaXIgZnJvdHogJiYKIAllY2hvIGhlbGxvID5mcm90ei9maWxmcmUgJiYKQEAgLTI1LDI1ICsyNSwyNSBAQAogCiAJZ2l0IHJtIC0tY2FjaGVkIGZyb3R6L2ZpbGZyZSAmJgogCW12IGZyb3R6IHh5enp5ICYmCi0JbG4gLXMgeHl6enkgZnJvdHogJiYKLQlnaXQgYWRkIHh5enp5L2ZpbGZyZSBmcm90eiAmJgorCXRlc3RfbG5fc19hZGQgeHl6enkgZnJvdHogJiYKKwlnaXQgYWRkIHh5enp5L2ZpbGZyZSAmJgogCXRlc3RfdGljayAmJgogCWdpdCBjb21taXQgLW0gInNpZGUgbW92ZXMgZnJvdHovIHRvIHh5enp5LyBhbmQgYWRkcyBmcm90ei0+eHl6enkvIgogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3N3aXRjaCBmcm9tIHN5bWxpbmsgdG8gZGlyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzd2l0Y2ggZnJvbSBzeW1saW5rIHRvIGRpcicgJwogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlcgogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ1JlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgJiBzd2l0Y2ggdG8gbWFzdGVyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdSZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzICYgc3dpdGNoIHRvIG1hc3RlcicgJwogCXJtIC1mciBmcm90eiB4eXp6eSBuaXRmb2wgJiYKIAlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3N3aXRjaCBmcm9tIGRpciB0byBzeW1saW5rJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzd2l0Y2ggZnJvbSBkaXIgdG8gc3ltbGluaycgJwogCiAJZ2l0IGNoZWNrb3V0IHNpZGUKIApkaWZmIC0tZ2l0IGEvdC90MjAxMy1jaGVja291dC1zdWJtb2R1bGUuc2ggYi90L3QyMDEzLWNoZWNrb3V0LXN1Ym1vZHVsZS5zaAppbmRleCA3MGVkYmIzLi4wNmIxOGY4IDEwMDc1NQotLS0gYS90L3QyMDEzLWNoZWNrb3V0LXN1Ym1vZHVsZS5zaAorKysgYi90L3QyMDEzLWNoZWNrb3V0LXN1Ym1vZHVsZS5zaApAQCAtMjMsNyArMjMsNyBAQAogCWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoICYmCiAJZ2l0IGRpZmYtZmlsZXMgLS1xdWlldCAmJgogCWdpdCBkaWZmLWluZGV4IC0tcXVpZXQgLS1jYWNoZWQgSEVBRCAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCBIRUFEXiBzdWJtb2R1bGUgJiYKKwlnaXQgcmVzZXQgSEVBRF4gc3VibW9kdWxlICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYtZmlsZXMgLS1xdWlldCAmJgogCWdpdCByZXNldCBzdWJtb2R1bGUgJiYKIAlnaXQgZGlmZi1maWxlcyAtLXF1aWV0CmRpZmYgLS1naXQgYS90L3QyMDIxLWNoZWNrb3V0LW92ZXJ3cml0ZS5zaCBiL3QvdDIwMjEtY2hlY2tvdXQtb3ZlcndyaXRlLnNoCmluZGV4IDVkYTYzZTkuLmMyYWRhN2QgMTAwNzU1Ci0tLSBhL3QvdDIwMjEtY2hlY2tvdXQtb3ZlcndyaXRlLnNoCisrKyBiL3QvdDIwMjEtY2hlY2tvdXQtb3ZlcndyaXRlLnNoCkBAIC0yOSwyMSArMjksMjUgQEAKIAl0ZXN0IC1mIGEvYgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdjcmVhdGUgYSBjb21taXQgd2hlcmUgZGlyIGEvYiBjaGFuZ2VkIHRvIHN5bWxpbmsnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBhIGNvbW1pdCB3aGVyZSBkaXIgYS9iIGNoYW5nZWQgdG8gc3ltbGluaycgJwogCiAJcm0gLXJmIGEvYiAmJgkjIGNsZWFudXAgaWYgcHJldmlvdXMgdGVzdCBmYWlsZWQKIAlnaXQgY2hlY2tvdXQgLWYgLWIgc3ltbGluayBzdGFydCAmJgogCXJtIC1yZiBhL2IgJiYKLQlsbiAtcyBmb28gYS9iICYmCiAJZ2l0IGFkZCAtQSAmJgorCXRlc3RfbG5fc19hZGQgZm9vIGEvYiAmJgogCWdpdCBjb21taXQgLW0gImRpciB0byBzeW1saW5rIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdjaGVja291dCBjb21taXQgd2l0aCBkaXIgbXVzdCBub3QgcmVtb3ZlIHVudHJhY2tlZCBhL2InICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IGNvbW1pdCB3aXRoIGRpciBtdXN0IG5vdCByZW1vdmUgdW50cmFja2VkIGEvYicgJwogCiAJZ2l0IHJtIC0tY2FjaGVkIGEvYiAmJgogCWdpdCBjb21taXQgLW0gInVuLXRyYWNrIHRoZSBzeW1saW5rIiAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCBzdGFydCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVja291dCBzdGFydAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICd0aGUgc3ltbGluayByZW1haW5lZCcgJworCiAJdGVzdCAtaCBhL2IKICcKIApkaWZmIC0tZ2l0IGEvdC90MjAyMi1jaGVja291dC1wYXRocy5zaCBiL3QvdDIwMjItY2hlY2tvdXQtcGF0aHMuc2gKaW5kZXggNTYwOTBkMi4uOGUzNTQ1ZCAxMDA3NTUKLS0tIGEvdC90MjAyMi1jaGVja291dC1wYXRocy5zaAorKysgYi90L3QyMDIyLWNoZWNrb3V0LXBhdGhzLnNoCkBAIC0zOSw0ICszOSwyNiBAQAogCXRlc3RfY21wIGV4cGVjdC5uZXh0MiBkaXIvbmV4dDIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZG8gbm90IHRvdWNoIHVubWVyZ2VkIGVudHJpZXMgbWF0Y2hpbmcgJHBhdGggYnV0IG5vdCBpbiAkdHJlZScgJworCWdpdCBjaGVja291dCBuZXh0ICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCisJY2F0IGRpci9jb21tb24gPmV4cGVjdC5jb21tb24gJiYKKwlFTVBUWV9TSEExPSQoZ2l0IGhhc2gtb2JqZWN0IC13IC0tc3RkaW4gPC9kZXYvbnVsbCkgJiYKKwlnaXQgcm0gZGlyL25leHQwICYmCisJY2F0ID5leHBlY3QubmV4dDAgPDwtRU9GICYmCisJMTAwNjQ0ICRFTVBUWV9TSEExIDEJZGlyL25leHQwCisJMTAwNjQ0ICRFTVBUWV9TSEExIDIJZGlyL25leHQwCisJRU9GCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWluZGV4LWluZm8gPGV4cGVjdC5uZXh0MCAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlciBkaXIgJiYKKworCXRlc3RfY21wIGV4cGVjdC5jb21tb24gZGlyL2NvbW1vbiAmJgorCXRlc3RfcGF0aF9pc19maWxlIGRpci9tYXN0ZXIgJiYKKwlnaXQgZGlmZiAtLWV4aXQtY29kZSBtYXN0ZXIgZGlyL21hc3RlciAmJgorCWdpdCBscy1maWxlcyAtcyBkaXIvbmV4dDAgPmFjdHVhbC5uZXh0MCAmJgorCXRlc3RfY21wIGV4cGVjdC5uZXh0MCBhY3R1YWwubmV4dDAKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMDI0LWNoZWNrb3V0LWR3aW0uc2ggYi90L3QyMDI0LWNoZWNrb3V0LWR3aW0uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGVlNTVlNAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDIwMjQtY2hlY2tvdXQtZHdpbS5zaApAQCAtMCwwICsxLDE2NyBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2NoZWNrb3V0IDxicmFuY2g+CisKK0Vuc3VyZXMgdGhhdCBjaGVja291dCBvbiBhbiB1bmJvcm4gYnJhbmNoIGRvZXMgd2hhdCB0aGUgdXNlciBleHBlY3RzJworCisuIC4vdGVzdC1saWIuc2gKKworIyBJcyB0aGUgY3VycmVudCBicmFuY2ggInJlZnMvaGVhZHMvJDEiPwordGVzdF9icmFuY2ggKCkgeworCXByaW50ZiAiJXNcbiIgInJlZnMvaGVhZHMvJDEiID5leHBlY3QuSEVBRCAmJgorCWdpdCBzeW1ib2xpYy1yZWYgSEVBRCA+YWN0dWFsLkhFQUQgJiYKKwl0ZXN0X2NtcCBleHBlY3QuSEVBRCBhY3R1YWwuSEVBRAorfQorCisjIElzIGJyYW5jaCAicmVmcy9oZWFkcy8kMSIgc2V0IHRvIHB1bGwgZnJvbSAiJDIvJDMiPwordGVzdF9icmFuY2hfdXBzdHJlYW0gKCkgeworCXByaW50ZiAiJXNcbiIgIiQyIiAicmVmcy9oZWFkcy8kMyIgPmV4cGVjdC51cHN0cmVhbSAmJgorCXsKKwkJZ2l0IGNvbmZpZyAiYnJhbmNoLiQxLnJlbW90ZSIgJiYKKwkJZ2l0IGNvbmZpZyAiYnJhbmNoLiQxLm1lcmdlIgorCX0gPmFjdHVhbC51cHN0cmVhbSAmJgorCXRlc3RfY21wIGV4cGVjdC51cHN0cmVhbSBhY3R1YWwudXBzdHJlYW0KK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwl0ZXN0X2NvbW1pdCBteV9tYXN0ZXIgJiYKKwlnaXQgaW5pdCByZXBvX2EgJiYKKwkoCisJCWNkIHJlcG9fYSAmJgorCQl0ZXN0X2NvbW1pdCBhX21hc3RlciAmJgorCQlnaXQgY2hlY2tvdXQgLWIgZm9vICYmCisJCXRlc3RfY29tbWl0IGFfZm9vICYmCisJCWdpdCBjaGVja291dCAtYiBiYXIgJiYKKwkJdGVzdF9jb21taXQgYV9iYXIKKwkpICYmCisJZ2l0IGluaXQgcmVwb19iICYmCisJKAorCQljZCByZXBvX2IgJiYKKwkJdGVzdF9jb21taXQgYl9tYXN0ZXIgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGZvbyAmJgorCQl0ZXN0X2NvbW1pdCBiX2ZvbyAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYmF6ICYmCisJCXRlc3RfY29tbWl0IGJfYmF6CisJKSAmJgorCWdpdCByZW1vdGUgYWRkIHJlcG9fYSByZXBvX2EgJiYKKwlnaXQgcmVtb3RlIGFkZCByZXBvX2IgcmVwb19iICYmCisJZ2l0IGNvbmZpZyByZW1vdGUucmVwb19iLmZldGNoIFwKKwkJIityZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL290aGVyX2IvKiIgJiYKKwlnaXQgZmV0Y2ggLS1hbGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgb2Ygbm9uLWV4aXN0aW5nIGJyYW5jaCBmYWlscycgJworCWdpdCBjaGVja291dCAtQiBtYXN0ZXIgJiYKKwl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGJyYW5jaCAtRCB4eXp6eSAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IHh5enp5ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL3h5enp5ICYmCisJdGVzdF9icmFuY2ggbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IG9mIGJyYW5jaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMgZmFpbHMgIzEnICcKKwlnaXQgY2hlY2tvdXQgLUIgbWFzdGVyICYmCisJdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLUQgZm9vICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2tvdXQgZm9vICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2ZvbyAmJgorCXRlc3RfYnJhbmNoIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBvZiBicmFuY2ggZnJvbSBhIHNpbmdsZSByZW1vdGUgc3VjY2VlZHMgIzEnICcKKwlnaXQgY2hlY2tvdXQgLUIgbWFzdGVyICYmCisJdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLUQgYmFyICYmCisKKwlnaXQgY2hlY2tvdXQgYmFyICYmCisJdGVzdF9icmFuY2ggYmFyICYmCisJdGVzdF9jbXBfcmV2IHJlbW90ZXMvcmVwb19hL2JhciBIRUFEICYmCisJdGVzdF9icmFuY2hfdXBzdHJlYW0gYmFyIHJlcG9fYSBiYXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgb2YgYnJhbmNoIGZyb20gYSBzaW5nbGUgcmVtb3RlIHN1Y2NlZWRzICMyJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGJheiAmJgorCisJZ2l0IGNoZWNrb3V0IGJheiAmJgorCXRlc3RfYnJhbmNoIGJheiAmJgorCXRlc3RfY21wX3JldiByZW1vdGVzL290aGVyX2IvYmF6IEhFQUQgJiYKKwl0ZXN0X2JyYW5jaF91cHN0cmVhbSBiYXogcmVwb19iIGJhegorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW5vLWd1ZXNzIHN1cHByZXNzZXMgYnJhbmNoIGF1dG8tdml2aWZpY2F0aW9uJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGJhciAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IC0tbm8tZ3Vlc3MgYmFyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2JhciAmJgorCXRlc3RfYnJhbmNoIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBtb3JlIHJlbW90ZXMgd2l0aCB1bmNvbnZlbnRpb25hbCByZWZzcGVjcycgJworCWdpdCBjaGVja291dCAtQiBtYXN0ZXIgJiYKKwlnaXQgaW5pdCByZXBvX2MgJiYKKwkoCisJCWNkIHJlcG9fYyAmJgorCQl0ZXN0X2NvbW1pdCBjX21hc3RlciAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYmFyICYmCisJCXRlc3RfY29tbWl0IGNfYmFyCisJCWdpdCBjaGVja291dCAtYiBzcGFtICYmCisJCXRlc3RfY29tbWl0IGNfc3BhbQorCSkgJiYKKwlnaXQgaW5pdCByZXBvX2QgJiYKKwkoCisJCWNkIHJlcG9fZCAmJgorCQl0ZXN0X2NvbW1pdCBkX21hc3RlciAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYmF6ICYmCisJCXRlc3RfY29tbWl0IGZfYmF6CisJCWdpdCBjaGVja291dCAtYiBlZ2dzICYmCisJCXRlc3RfY29tbWl0IGNfZWdncworCSkgJiYKKwlnaXQgcmVtb3RlIGFkZCByZXBvX2MgcmVwb19jICYmCisJZ2l0IGNvbmZpZyByZW1vdGUucmVwb19jLmZldGNoIFwKKwkJIityZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2V4dHJhX2Rpci9yZXBvX2MvZXh0cmFfZGlyLyoiICYmCisJZ2l0IHJlbW90ZSBhZGQgcmVwb19kIHJlcG9fZCAmJgorCWdpdCBjb25maWcgcmVtb3RlLnJlcG9fZC5mZXRjaCBcCisJCSIrcmVmcy9oZWFkcy8qOnJlZnMvcmVwb19kLyoiICYmCisJZ2l0IGZldGNoIC0tYWxsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IG9mIGJyYW5jaCBmcm9tIG11bHRpcGxlIHJlbW90ZXMgZmFpbHMgIzInICcKKwlnaXQgY2hlY2tvdXQgLUIgbWFzdGVyICYmCisJdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLUQgYmFyICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2tvdXQgYmFyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2JhciAmJgorCXRlc3RfYnJhbmNoIG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBvZiBicmFuY2ggZnJvbSBtdWx0aXBsZSByZW1vdGVzIGZhaWxzICMzJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIGJheiAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IGJheiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9iYXogJiYKKwl0ZXN0X2JyYW5jaCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgb2YgYnJhbmNoIGZyb20gYSBzaW5nbGUgcmVtb3RlIHN1Y2NlZWRzICMzJyAnCisJZ2l0IGNoZWNrb3V0IC1CIG1hc3RlciAmJgorCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC1EIHNwYW0gJiYKKworCWdpdCBjaGVja291dCBzcGFtICYmCisJdGVzdF9icmFuY2ggc3BhbSAmJgorCXRlc3RfY21wX3JldiByZWZzL3JlbW90ZXMvZXh0cmFfZGlyL3JlcG9fYy9leHRyYV9kaXIvc3BhbSBIRUFEICYmCisJdGVzdF9icmFuY2hfdXBzdHJlYW0gc3BhbSByZXBvX2Mgc3BhbQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCBvZiBicmFuY2ggZnJvbSBhIHNpbmdsZSByZW1vdGUgc3VjY2VlZHMgIzQnICcKKwlnaXQgY2hlY2tvdXQgLUIgbWFzdGVyICYmCisJdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLUQgZWdncyAmJgorCisJZ2l0IGNoZWNrb3V0IGVnZ3MgJiYKKwl0ZXN0X2JyYW5jaCBlZ2dzICYmCisJdGVzdF9jbXBfcmV2IHJlZnMvcmVwb19kL2VnZ3MgSEVBRCAmJgorCXRlc3RfYnJhbmNoX3Vwc3RyZWFtIGVnZ3MgcmVwb19kIGVnZ3MKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMDMwLXVucmVzb2x2ZS1pbmZvLnNoIGIvdC90MjAzMC11bnJlc29sdmUtaW5mby5zaAppbmRleCBmMjYyMDY1Li4zMDkxOTliIDEwMDc1NQotLS0gYS90L3QyMDMwLXVucmVzb2x2ZS1pbmZvLnNoCisrKyBiL3QvdDIwMzAtdW5yZXNvbHZlLWluZm8uc2gKQEAgLTQ0LDE0ICs0NCwyMSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKIAlta2RpciBmaSAmJgorCXByaW50ZiAiYVwwYSIgPmJpbmFyeSAmJgorCWdpdCBhZGQgYmluYXJ5ICYmCiAJdGVzdF9jb21taXQgaW5pdGlhbCBmaS9sZSBmaXJzdCAmJgogCWdpdCBicmFuY2ggc2lkZSAmJgogCWdpdCBicmFuY2ggYW5vdGhlciAmJgorCXByaW50ZiAiYVwwYiIgPmJpbmFyeSAmJgorCWdpdCBhZGQgYmluYXJ5ICYmCiAJdGVzdF9jb21taXQgc2Vjb25kIGZpL2xlIHNlY29uZCAmJgogCWdpdCBjaGVja291dCBzaWRlICYmCiAJdGVzdF9jb21taXQgdGhpcmQgZmkvbGUgdGhpcmQgJiYKKwlnaXQgYnJhbmNoIGFkZC1hZGQgJiYKIAlnaXQgY2hlY2tvdXQgYW5vdGhlciAmJgogCXRlc3RfY29tbWl0IGZvdXJ0aCBmaS9sZSBmb3VydGggJiYKKwlnaXQgY2hlY2tvdXQgYWRkLWFkZCAmJgorCXRlc3RfY29tbWl0IGZpZnRoIGFkZC1kaWZmZXJlbnRseSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKICcKIApAQCAtMTY3LDQgKzE3NCwyMiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVyZXJlIGZvcmdldCAoYmluYXJ5KScgJworCWdpdCBjaGVja291dCAtZiBzaWRlICYmCisJcHJpbnRmICJhXDBjIiA+YmluYXJ5ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBiaW5hcnkgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2Ugc2Vjb25kICYmCisJZ2l0IHJlcmVyZSBmb3JnZXQgYmluYXJ5CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlcmVyZSBmb3JnZXQgKGFkZC1hZGQgY29uZmxpY3QpJyAnCisJZ2l0IGNoZWNrb3V0IC1mIG1hc3RlciAmJgorCWVjaG8gbWFzdGVyID5hZGQtZGlmZmVyZW50bHkgJiYKKwlnaXQgYWRkIGFkZC1kaWZmZXJlbnRseSAmJgorCWdpdCBjb21taXQgLW0gImFkZCBkaWZmZXJlbnRseSIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgZmlmdGggJiYKKwlnaXQgcmVyZXJlIGZvcmdldCBhZGQtZGlmZmVyZW50bHkgMj5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJubyByZW1lbWJlcmVkIiBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QyMjAwLWFkZC11cGRhdGUuc2ggYi90L3QyMjAwLWFkZC11cGRhdGUuc2gKaW5kZXggNGNkZWJkYS4uOWJmMmJkZiAxMDA3NTUKLS0tIGEvdC90MjIwMC1hZGQtdXBkYXRlLnNoCisrKyBiL3QvdDIyMDAtYWRkLXVwZGF0ZS5zaApAQCAtODAsMTEgKzgwLDI2IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAncmVwbGFjZSBhIGZpbGUgd2l0aCBhIHN5bWxpbmsnICcKKyMgTm90ZSB0aGF0IHRoaXMgaXMgc2NoZWR1bGVkIHRvIGNoYW5nZSBpbiBHaXQgMi4wLCB3aGVuCisjICJnaXQgYWRkIC11IiB3aWxsIGJlY29tZSBmdWxsLXRyZWUgYnkgZGVmYXVsdC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vbi1saW1pdGVkIHVwZGF0ZSBpbiBzdWJkaXIgbGVhdmVzIHJvb3QgYWxvbmUnICcKKwkoCisJCWNkIGRpcjEgJiYKKwkJZWNobyBldmVuIG1vcmUgPj5zdWIyICYmCisJCWdpdCBhZGQgLXUKKwkpICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWNoZWNrCisJdG9wCisJRU9GCisJZ2l0IGRpZmYtZmlsZXMgLS1uYW1lLW9ubHkgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVwbGFjZSBhIGZpbGUgd2l0aCBhIHN5bWxpbmsnICcKIAogCXJtIGZvbyAmJgotCWxuIC1zIHRvcCBmb28gJiYKLQlnaXQgYWRkIC11IC0tIGZvbworCXRlc3RfbG5fc19hZGQgdG9wIGZvbwogCiAnCiAKQEAgLTE1MCw5ICsxNjUsOSBAQAogCWVjaG8gMiA+cGF0aDMgJiYKIAllY2hvIDIgPnBhdGg1ICYmCiAKLQkjIEV4cGxpY2l0IHJlc29sdmluZyBieSBhZGRpbmcgcmVtb3ZlZCBwYXRocyBzaG91bGQgZmFpbAotCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgcGF0aDQgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgYWRkIHBhdGg2ICYmCisJIyBGYWlsIHRvIGV4cGxpY2l0bHkgcmVzb2x2ZSByZW1vdmVkIHBhdGhzIHdpdGggImdpdCBhZGQiCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFkZCAtLW5vLWFsbCBwYXRoNCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBhZGQgLS1uby1hbGwgcGF0aDYgJiYKIAogCSMgImFkZCAtdSIgc2hvdWxkIG5vdGljZSByZW1vdmFscyBubyBtYXR0ZXIgd2hhdCBzdGFnZXMKIAkjIHRoZSBpbmRleCBlbnRyaWVzIGFyZSBpbi4KZGlmZiAtLWdpdCBhL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2ggYi90L3QzMDAxLWxzLWZpbGVzLW90aGVycy1leGNsdWRlLnNoCmluZGV4IGRjMmYwNDUuLmYwNDIxYzAgMTAwNzU1Ci0tLSBhL3QvdDMwMDEtbHMtZmlsZXMtb3RoZXJzLWV4Y2x1ZGUuc2gKKysrIGIvdC90MzAwMS1scy1maWxlcy1vdGhlcnMtZXhjbHVkZS5zaApAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgIHRlc3RfY21wIGV4cGVjdCBvdXRwdXQnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc3RvcmUgZ2l0aWdub3JlJyAnCi0JZ2l0IGNoZWNrb3V0ICRhbGxpZ25vcmVzICYmCisJZ2l0IGNoZWNrb3V0IC0taWdub3JlLXNraXAtd29ya3RyZWUtYml0cyAkYWxsaWdub3JlcyAmJgogCXJtIC5naXQvaW5kZXgKICcKIApAQCAtMTc1LDYgKzE3NSwyNCBAQAogCWdyZXAgIl5hLjEiIG91dHB1dAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleGNsdWRlZCBkaXJlY3Rvcnkgb3ZlcnJpZGVzIGNvbnRlbnQgcGF0dGVybnMnICcKKworCWdpdCBscy1maWxlcyAtLW90aGVycyAtLWV4Y2x1ZGU9Im9uZSIgLS1leGNsdWRlPSIhb25lL2EuMSIgPm91dHB1dCAmJgorCWlmIGdyZXAgIl5vbmUvYS4xIiBvdXRwdXQKKwl0aGVuCisJCWZhbHNlCisJZmkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbmVnYXRlZCBkaXJlY3RvcnkgZG9lc24nXCcndCBhZmZlY3QgY29udGVudCBwYXR0ZXJucycgJworCisJZ2l0IGxzLWZpbGVzIC0tb3RoZXJzIC0tZXhjbHVkZT0iIW9uZSIgLS1leGNsdWRlPSJvbmUvYS4xIiA+b3V0cHV0ICYmCisJaWYgZ3JlcCAiXm9uZS9hLjEiIG91dHB1dAorCXRoZW4KKwkJZmFsc2UKKwlmaQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJkaXJlY3RvcnkgaWdub3JlIChzZXR1cCknICcKIAlta2RpciAtcCB0b3AvbDEvbDIgJiYKIAkoCkBAIC0yMTQsMTAgKzIzMiw3NyBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdy9oaWRlIGVtcHR5IGlnbm9yZWQgZGlyZWN0b3J5IChzZXR1cCknICcKKwlybSB0b3AvbDEvbDIvbDEgJiYKKwlybSB0b3AvbDEvLmdpdGlnbm9yZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93IGVtcHR5IGlnbm9yZWQgZGlyZWN0b3J5IHdpdGggLS1kaXJlY3RvcnknICcKKwkoCisJCWNkIHRvcCAmJgorCQlnaXQgbHMtZmlsZXMgLW8gLWkgLS1leGNsdWRlIGwxIC0tZGlyZWN0b3J5CisJKSA+YWN0dWFsICYmCisJZWNobyBsMS8gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaGlkZSBlbXB0eSBpZ25vcmVkIGRpcmVjdG9yeSB3aXRoIC0tbm8tZW1wdHktZGlyZWN0b3J5JyAnCisJKAorCQljZCB0b3AgJiYKKwkJZ2l0IGxzLWZpbGVzIC1vIC1pIC0tZXhjbHVkZSBsMSAtLWRpcmVjdG9yeSAtLW5vLWVtcHR5LWRpcmVjdG9yeQorCSkgPmFjdHVhbCAmJgorCT5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cvaGlkZSBlbXB0eSBpZ25vcmVkIHN1Yi1kaXJlY3RvcnkgKHNldHVwKScgJworCT4gdG9wL2wxL3RyYWNrZWQgJiYKKwkoCisJCWNkIHRvcCAmJgorCQlnaXQgYWRkIC1mIGwxL3RyYWNrZWQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cgZW1wdHkgaWdub3JlZCBzdWItZGlyZWN0b3J5IHdpdGggLS1kaXJlY3RvcnknICcKKwkoCisJCWNkIHRvcCAmJgorCQlnaXQgbHMtZmlsZXMgLW8gLWkgLS1leGNsdWRlIGwxIC0tZGlyZWN0b3J5CisJKSA+YWN0dWFsICYmCisJZWNobyBsMS9sMi8gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaGlkZSBlbXB0eSBpZ25vcmVkIHN1Yi1kaXJlY3Rvcnkgd2l0aCAtLW5vLWVtcHR5LWRpcmVjdG9yeScgJworCSgKKwkJY2QgdG9wICYmCisJCWdpdCBscy1maWxlcyAtbyAtaSAtLWV4Y2x1ZGUgbDEgLS1kaXJlY3RvcnkgLS1uby1lbXB0eS1kaXJlY3RvcnkKKwkpID5hY3R1YWwgJiYKKwk+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXR0ZXJuIG1hdGNoZXMgcHJlZml4IGNvbXBsZXRlbHknICcKIAk6ID5leHBlY3QgJiYKIAlnaXQgbHMtZmlsZXMgLWkgLW8gLS1leGNsdWRlICIvdGhyZWUvYS4zW2FiY10iID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xzLWZpbGVzIHdpdGggIioqIiBwYXR0ZXJucycgJworCWNhdCA8PFxFT0YgPmV4cGVjdCAmJgorYS4xCitvbmUvYS4xCitvbmUvdHdvL2EuMQordGhyZWUvYS4xCitFT0YKKwlnaXQgbHMtZmlsZXMgLW8gLWkgLS1leGNsdWRlICIqKi9hLjEiID5hY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbHMtZmlsZXMgd2l0aCAiKioiIHBhdHRlcm5zIGFuZCBubyBzbGFzaGVzJyAnCisJOiA+ZXhwZWN0ICYmCisJZ2l0IGxzLWZpbGVzIC1vIC1pIC0tZXhjbHVkZSAib25lKiphLjEiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzAxMC1scy1maWxlcy1raWxsZWQtbW9kaWZpZWQuc2ggYi90L3QzMDEwLWxzLWZpbGVzLWtpbGxlZC1tb2RpZmllZC5zaAppbmRleCA5NTY3MWMyLi4yNjJlNjE3IDEwMDc1NQotLS0gYS90L3QzMDEwLWxzLWZpbGVzLWtpbGxlZC1tb2RpZmllZC5zaAorKysgYi90L3QzMDEwLWxzLWZpbGVzLWtpbGxlZC1tb2RpZmllZC5zaApAQCAtMzcsNzEgKzM3LDY1IEBACiAnCiAuIC4vdGVzdC1saWIuc2gKIAotZGF0ZSA+cGF0aDAKLWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKLXRoZW4KLQlsbiAtcyB4eXp6eSBwYXRoMQotZWxzZQotCWRhdGUgPiBwYXRoMQotZmkKLW1rZGlyIHBhdGgyIHBhdGgzCi1kYXRlID5wYXRoMi9maWxlMgotZGF0ZSA+cGF0aDMvZmlsZTMKLTogPnBhdGg3Ci1kYXRlID5wYXRoOAotOiA+cGF0aDkKLWRhdGUgPnBhdGgxMAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCB1cGRhdGUtaW5kZXggLS1hZGQgdG8gYWRkIHZhcmlvdXMgcGF0aHMuJyBcCi0gICAgImdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS0gcGF0aDAgcGF0aDEgcGF0aD8vZmlsZT8gcGF0aDcgcGF0aDggcGF0aDkgcGF0aDEwIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCB0byBhZGQgdmFyaW91cyBwYXRocy4nICcKKwlkYXRlID5wYXRoMCAmJgorCXRlc3RfbG5fc19hZGQgeHl6enkgcGF0aDEgJiYKKwlta2RpciBwYXRoMiBwYXRoMyAmJgorCWRhdGUgPnBhdGgyL2ZpbGUyICYmCisJZGF0ZSA+cGF0aDMvZmlsZTMgJiYKKwk6ID5wYXRoNyAmJgorCWRhdGUgPnBhdGg4ICYmCisJOiA+cGF0aDkgJiYKKwlkYXRlID5wYXRoMTAgJiYKKwlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tIHBhdGgwIHBhdGg/L2ZpbGU/IHBhdGg3IHBhdGg4IHBhdGg5IHBhdGgxMCAmJgorCXJtIC1mciBwYXRoPwkjIGxlYXZlIHBhdGgxMCBhbG9uZQorJwogCi1ybSAtZnIgcGF0aD8gOyMgbGVhdmUgcGF0aDEwIGFsb25lCi1kYXRlID5wYXRoMgotaWYgdGVzdF9oYXZlX3ByZXJlcSBTWU1MSU5LUwotdGhlbgotCWxuIC1zIGZyb3R6IHBhdGgzCi0JbG4gLXMgbml0Zm9sIHBhdGg1Ci1lbHNlCi0JZGF0ZSA+IHBhdGgzCi0JZGF0ZSA+IHBhdGg1Ci1maQotbWtkaXIgcGF0aDAgcGF0aDEgcGF0aDYKLWRhdGUgPnBhdGgwL2ZpbGUwCi1kYXRlID5wYXRoMS9maWxlMQotZGF0ZSA+cGF0aDYvZmlsZTYKLWRhdGUgPnBhdGg3Ci06ID5wYXRoOAotOiA+cGF0aDkKLXRvdWNoIHBhdGgxMAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGxzLWZpbGVzIC1rIHRvIHNob3cga2lsbGVkIGZpbGVzLicgJworCWRhdGUgPnBhdGgyICYmCisJaWYgdGVzdF9oYXZlX3ByZXJlcSBTWU1MSU5LUworCXRoZW4KKwkJbG4gLXMgZnJvdHogcGF0aDMgJiYKKwkJbG4gLXMgbml0Zm9sIHBhdGg1CisJZWxzZQorCQlkYXRlID5wYXRoMyAmJgorCQlkYXRlID5wYXRoNQorCWZpICYmCisJbWtkaXIgcGF0aDAgcGF0aDEgcGF0aDYgJiYKKwlkYXRlID5wYXRoMC9maWxlMCAmJgorCWRhdGUgPnBhdGgxL2ZpbGUxICYmCisJZGF0ZSA+cGF0aDYvZmlsZTYgJiYKKwlkYXRlID5wYXRoNyAmJgorCTogPnBhdGg4ICYmCisJOiA+cGF0aDkgJiYKKwl0b3VjaCBwYXRoMTAgJiYKKwlnaXQgbHMtZmlsZXMgLWsgPi5vdXRwdXQKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBscy1maWxlcyAtayB0byBzaG93IGtpbGxlZCBmaWxlcy4nIFwKLSAgICAnZ2l0IGxzLWZpbGVzIC1rID4ub3V0cHV0JwotY2F0ID4uZXhwZWN0ZWQgPDxFT0YKLXBhdGgwL2ZpbGUwCi1wYXRoMS9maWxlMQotcGF0aDIKLXBhdGgzCi1FT0YKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkYXRlIGdpdCBscy1maWxlcyAtayBvdXRwdXQuJyAnCisJY2F0ID4uZXhwZWN0ZWQgPDwtXEVPRiAmJgorCXBhdGgwL2ZpbGUwCisJcGF0aDEvZmlsZTEKKwlwYXRoMgorCXBhdGgzCisJRU9GCisJdGVzdF9jbXAgLmV4cGVjdGVkIC5vdXRwdXQKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3ZhbGlkYXRlIGdpdCBscy1maWxlcyAtayBvdXRwdXQuJyBcCi0gICAgJ3Rlc3RfY21wIC5leHBlY3RlZCAub3V0cHV0JwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGxzLWZpbGVzIC1tIHRvIHNob3cgbW9kaWZpZWQgZmlsZXMuJyAnCisJZ2l0IGxzLWZpbGVzIC1tID4ub3V0cHV0CisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgbHMtZmlsZXMgLW0gdG8gc2hvdyBtb2RpZmllZCBmaWxlcy4nIFwKLSAgICAnZ2l0IGxzLWZpbGVzIC1tID4ub3V0cHV0JwotY2F0ID4uZXhwZWN0ZWQgPDxFT0YKLXBhdGgwCi1wYXRoMQotcGF0aDIvZmlsZTIKLXBhdGgzL2ZpbGUzCi1wYXRoNwotcGF0aDgKLUVPRgotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAndmFsaWRhdGUgZ2l0IGxzLWZpbGVzIC1tIG91dHB1dC4nIFwKLSAgICAndGVzdF9jbXAgLmV4cGVjdGVkIC5vdXRwdXQnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZGF0ZSBnaXQgbHMtZmlsZXMgLW0gb3V0cHV0LicgJworCWNhdCA+LmV4cGVjdGVkIDw8LVxFT0YgJiYKKwlwYXRoMAorCXBhdGgxCisJcGF0aDIvZmlsZTIKKwlwYXRoMy9maWxlMworCXBhdGg3CisJcGF0aDgKKwlFT0YKKwl0ZXN0X2NtcCAuZXhwZWN0ZWQgLm91dHB1dAorJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMwMzAtbWVyZ2UtcmVjdXJzaXZlLnNoIGIvdC90MzAzMC1tZXJnZS1yZWN1cnNpdmUuc2gKaW5kZXggYTVlM2RhNy4uMmY5NjEwMCAxMDA3NTUKLS0tIGEvdC90MzAzMC1tZXJnZS1yZWN1cnNpdmUuc2gKKysrIGIvdC90MzAzMC1tZXJnZS1yZWN1cnNpdmUuc2gKQEAgLTI1LDEwICsyNSw3IEBACiAJZ2l0IGJyYW5jaCBzdWJtb2QgJiYKIAlnaXQgYnJhbmNoIGNvcHkgJiYKIAlnaXQgYnJhbmNoIHJlbmFtZSAmJgotCWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKLQl0aGVuCi0JCWdpdCBicmFuY2ggcmVuYW1lLWxuCi0JZmkgJiYKKwlnaXQgYnJhbmNoIHJlbmFtZS1sbiAmJgogCiAJZWNobyBoZWxsbyA+PmEgJiYKIAljcCBhIGQvZSAmJgpAQCAtMjYwLDE2ICsyNTcsMTIgQEAKIAlnaXQgYWRkIGUgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgY29tbWl0IC1tICJyZW5hbWUgYS0+ZSIgJiYKLQlpZiB0ZXN0X2hhdmVfcHJlcmVxIFNZTUxJTktTCi0JdGhlbgotCQlnaXQgY2hlY2tvdXQgcmVuYW1lLWxuICYmCi0JCWdpdCBtdiBhIGUgJiYKLQkJbG4gLXMgZSBhICYmCi0JCWdpdCBhZGQgYSBlICYmCi0JCXRlc3RfdGljayAmJgotCQlnaXQgY29tbWl0IC1tICJyZW5hbWUgYS0+ZSwgc3ltbGluayBhLT5lIiAmJgotCQlvbG49YHByaW50ZiBlIHwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW5gCi0JZmkKKwlnaXQgY2hlY2tvdXQgcmVuYW1lLWxuICYmCisJZ2l0IG12IGEgZSAmJgorCXRlc3RfbG5fc19hZGQgZSBhICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAicmVuYW1lIGEtPmUsIHN5bWxpbmsgYS0+ZSIgJiYKKwlvbG49YHByaW50ZiBlIHwgZ2l0IGhhc2gtb2JqZWN0IC0tc3RkaW5gCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIDknICcKQEAgLTU2OSwyOCArNTYyLDI1IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKLXRoZW4KLQl0ZXN0X2V4cGVjdF9mYWlsdXJlICdtZXJnZS1yZWN1cnNpdmUgcmVuYW1lIHZzLiByZW5hbWUvc3ltbGluaycgJwordGVzdF9leHBlY3RfZmFpbHVyZSAnbWVyZ2UtcmVjdXJzaXZlIHJlbmFtZSB2cy4gcmVuYW1lL3N5bWxpbmsnICcKIAotCQlnaXQgY2hlY2tvdXQgLWYgcmVuYW1lICYmCi0JCWdpdCBtZXJnZSByZW5hbWUtbG4gJiYKLQkJKCBnaXQgbHMtdHJlZSAtciBIRUFEIDsgZ2l0IGxzLWZpbGVzIC1zICkgPmFjdHVhbCAmJgotCQkoCi0JCQllY2hvICIxMjAwMDAgYmxvYiAkb2xuCWEiCi0JCQllY2hvICIxMDA2NDQgYmxvYiAkbzAJYiIKLQkJCWVjaG8gIjEwMDY0NCBibG9iICRvMAljIgotCQkJZWNobyAiMTAwNjQ0IGJsb2IgJG8wCWQvZSIKLQkJCWVjaG8gIjEwMDY0NCBibG9iICRvMAllIgotCQkJZWNobyAiMTIwMDAwICRvbG4gMAlhIgotCQkJZWNobyAiMTAwNjQ0ICRvMCAwCWIiCi0JCQllY2hvICIxMDA2NDQgJG8wIDAJYyIKLQkJCWVjaG8gIjEwMDY0NCAkbzAgMAlkL2UiCi0JCQllY2hvICIxMDA2NDQgJG8wIDAJZSIKLQkJKSA+ZXhwZWN0ZWQgJiYKLQkJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCi0JJwotZmkKKwlnaXQgY2hlY2tvdXQgLWYgcmVuYW1lICYmCisJZ2l0IG1lcmdlIHJlbmFtZS1sbiAmJgorCSggZ2l0IGxzLXRyZWUgLXIgSEVBRCA7IGdpdCBscy1maWxlcyAtcyApID5hY3R1YWwgJiYKKwkoCisJCWVjaG8gIjEyMDAwMCBibG9iICRvbG4JYSIKKwkJZWNobyAiMTAwNjQ0IGJsb2IgJG8wCWIiCisJCWVjaG8gIjEwMDY0NCBibG9iICRvMAljIgorCQllY2hvICIxMDA2NDQgYmxvYiAkbzAJZC9lIgorCQllY2hvICIxMDA2NDQgYmxvYiAkbzAJZSIKKwkJZWNobyAiMTIwMDAwICRvbG4gMAlhIgorCQllY2hvICIxMDA2NDQgJG8wIDAJYiIKKwkJZWNobyAiMTAwNjQ0ICRvMCAwCWMiCisJCWVjaG8gIjEwMDY0NCAkbzAgMAlkL2UiCisJCWVjaG8gIjEwMDY0NCAkbzAgMAllIgorCSkgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCiAKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzMDcwLXdpbGRtYXRjaC5zaCBiL3QvdDMwNzAtd2lsZG1hdGNoLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM4NDQ2YTAKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzMDcwLXdpbGRtYXRjaC5zaApAQCAtMCwwICsxLDI4MSBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3dpbGRtYXRjaCB0ZXN0cycKKworLiAuL3Rlc3QtbGliLnNoCisKK21hdGNoKCkgeworICAgIGlmIFsgJDEgPSAxIF07IHRoZW4KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJ3aWxkbWF0Y2g6ICAgICBtYXRjaCAnJDMnICckNCciICIKKwkgICAgdGVzdC13aWxkbWF0Y2ggd2lsZG1hdGNoICckMycgJyQ0JworCSIKKyAgICBlbHNlCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAid2lsZG1hdGNoOiAgbm8gbWF0Y2ggJyQzJyAnJDQnIiAiCisJICAgICEgdGVzdC13aWxkbWF0Y2ggd2lsZG1hdGNoICckMycgJyQ0JworCSIKKyAgICBmaQorICAgIGlmIFsgJDIgPSAxIF07IHRoZW4KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJmbm1hdGNoOiAgICAgICBtYXRjaCAnJDMnICckNCciICIKKwkgICAgdGVzdC13aWxkbWF0Y2ggZm5tYXRjaCAnJDMnICckNCcKKwkiCisgICAgZWxpZiBbICQyID0gMCBdOyB0aGVuCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZm5tYXRjaDogICAgbm8gbWF0Y2ggJyQzJyAnJDQnIiAiCisJICAgICEgdGVzdC13aWxkbWF0Y2ggZm5tYXRjaCAnJDMnICckNCcKKwkiCisjICAgIGVsc2UKKyMJdGVzdF9leHBlY3Rfc3VjY2VzcyBCUk9LRU5fRk5NQVRDSCAiZm5tYXRjaDogICAgICAgJyQzJyAnJDQnIiAiCisjCSAgICAhIHRlc3Qtd2lsZG1hdGNoIGZubWF0Y2ggJyQzJyAnJDQnCisjCSIKKyAgICBmaQorfQorCitpbWF0Y2goKSB7CisgICAgaWYgWyAkMSA9IDEgXTsgdGhlbgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIml3aWxkbWF0Y2g6ICAgIG1hdGNoICckMicgJyQzJyIgIgorCSAgICB0ZXN0LXdpbGRtYXRjaCBpd2lsZG1hdGNoICckMicgJyQzJworCSIKKyAgICBlbHNlCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiaXdpbGRtYXRjaDogbm8gbWF0Y2ggJyQyJyAnJDMnIiAiCisJICAgICEgdGVzdC13aWxkbWF0Y2ggaXdpbGRtYXRjaCAnJDInICckMycKKwkiCisgICAgZmkKK30KKworcGF0aG1hdGNoKCkgeworICAgIGlmIFsgJDEgPSAxIF07IHRoZW4KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJwYXRobWF0Y2g6ICAgICBtYXRjaCAnJDInICckMyciICIKKwkgICAgdGVzdC13aWxkbWF0Y2ggcGF0aG1hdGNoICckMicgJyQzJworCSIKKyAgICBlbHNlCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicGF0aG1hdGNoOiAgbm8gbWF0Y2ggJyQyJyAnJDMnIiAiCisJICAgICEgdGVzdC13aWxkbWF0Y2ggcGF0aG1hdGNoICckMicgJyQzJworCSIKKyAgICBmaQorfQorCisjIEJhc2ljIHdpbGRtYXQgZmVhdHVyZXMKK21hdGNoIDEgMSBmb28gZm9vCittYXRjaCAwIDAgZm9vIGJhcgorbWF0Y2ggMSAxICcnICIiCittYXRjaCAxIDEgZm9vICc/Pz8nCittYXRjaCAwIDAgZm9vICc/PycKK21hdGNoIDEgMSBmb28gJyonCittYXRjaCAxIDEgZm9vICdmKicKK21hdGNoIDAgMCBmb28gJypmJworbWF0Y2ggMSAxIGZvbyAnKmZvbyonCittYXRjaCAxIDEgZm9vYmFyICcqb2IqYSpyKicKK21hdGNoIDEgMSBhYWFhYWFhYmFiYWJhYiAnKmFiJworbWF0Y2ggMSAxICdmb28qJyAnZm9vXConCittYXRjaCAwIDAgZm9vYmFyICdmb29cKmJhcicKK21hdGNoIDEgMSAnZlxvbycgJ2ZcXG9vJworbWF0Y2ggMSAxIGJhbGwgJypbYWxdPycKK21hdGNoIDAgMCB0ZW4gJ1t0ZW5dJworbWF0Y2ggMCAxIHRlbiAnKipbIXRlXScKK21hdGNoIDAgMCB0ZW4gJyoqWyF0ZW5dJworbWF0Y2ggMSAxIHRlbiAndFthLWddbicKK21hdGNoIDAgMCB0ZW4gJ3RbIWEtZ11uJworbWF0Y2ggMSAxIHRvbiAndFshYS1nXW4nCittYXRjaCAxIDEgdG9uICd0W15hLWddbicKK21hdGNoIDEgeCAnYV1iJyAnYVtdXWInCittYXRjaCAxIHggYS1iICdhW10tXWInCittYXRjaCAxIHggJ2FdYicgJ2FbXS1dYicKK21hdGNoIDAgeCBhYWIgJ2FbXS1dYicKK21hdGNoIDEgeCBhYWIgJ2FbXWEtXWInCittYXRjaCAxIDEgJ10nICddJworCisjIEV4dGVuZGVkIHNsYXNoLW1hdGNoaW5nIGZlYXR1cmVzCittYXRjaCAwIDAgJ2Zvby9iYXovYmFyJyAnZm9vKmJhcicKK21hdGNoIDAgMCAnZm9vL2Jhei9iYXInICdmb28qKmJhcicKK21hdGNoIDAgMSAnZm9vYmF6YmFyJyAnZm9vKipiYXInCittYXRjaCAxIDEgJ2Zvby9iYXovYmFyJyAnZm9vLyoqL2JhcicKK21hdGNoIDEgMCAnZm9vL2Jhei9iYXInICdmb28vKiovKiovYmFyJworbWF0Y2ggMSAwICdmb28vYi9hL3ovYmFyJyAnZm9vLyoqL2JhcicKK21hdGNoIDEgMCAnZm9vL2IvYS96L2JhcicgJ2Zvby8qKi8qKi9iYXInCittYXRjaCAxIDAgJ2Zvby9iYXInICdmb28vKiovYmFyJworbWF0Y2ggMSAwICdmb28vYmFyJyAnZm9vLyoqLyoqL2JhcicKK21hdGNoIDAgMCAnZm9vL2JhcicgJ2Zvbz9iYXInCittYXRjaCAwIDAgJ2Zvby9iYXInICdmb29bL11iYXInCittYXRjaCAwIDAgJ2Zvby9iYXInICdmW15laXVdW15laXVdW15laXVdW15laXVdW15laXVdcicKK21hdGNoIDEgMSAnZm9vLWJhcicgJ2ZbXmVpdV1bXmVpdV1bXmVpdV1bXmVpdV1bXmVpdV1yJworbWF0Y2ggMSAwICdmb28nICcqKi9mb28nCittYXRjaCAxIHggJ1hYWC9mb28nICcqKi9mb28nCittYXRjaCAxIDAgJ2Jhci9iYXovZm9vJyAnKiovZm9vJworbWF0Y2ggMCAwICdiYXIvYmF6L2ZvbycgJyovZm9vJworbWF0Y2ggMCAwICdmb28vYmFyL2JheicgJyoqL2JhcionCittYXRjaCAxIDAgJ2RlZXAvZm9vL2Jhci9iYXonICcqKi9iYXIvKicKK21hdGNoIDAgMCAnZGVlcC9mb28vYmFyL2Jhei8nICcqKi9iYXIvKicKK21hdGNoIDEgMCAnZGVlcC9mb28vYmFyL2Jhei8nICcqKi9iYXIvKionCittYXRjaCAwIDAgJ2RlZXAvZm9vL2JhcicgJyoqL2Jhci8qJworbWF0Y2ggMSAwICdkZWVwL2Zvby9iYXIvJyAnKiovYmFyLyoqJworbWF0Y2ggMCAwICdmb28vYmFyL2JheicgJyoqL2JhcioqJworbWF0Y2ggMSAwICdmb28vYmFyL2Jhei94JyAnKi9iYXIvKionCittYXRjaCAwIDAgJ2RlZXAvZm9vL2Jhci9iYXoveCcgJyovYmFyLyoqJworbWF0Y2ggMSAwICdkZWVwL2Zvby9iYXIvYmF6L3gnICcqKi9iYXIvKi8qJworCisjIFZhcmlvdXMgYWRkaXRpb25hbCB0ZXN0cworbWF0Y2ggMCAwICdhY3J0JyAnYVtjLWNdc3QnCittYXRjaCAxIDEgJ2FjcnQnICdhW2MtY11ydCcKK21hdGNoIDAgMCAnXScgJ1shXS1dJworbWF0Y2ggMSB4ICdhJyAnWyFdLV0nCittYXRjaCAwIDAgJycgJ1wnCittYXRjaCAwIHggJ1wnICdcJworbWF0Y2ggMCB4ICdYWFgvXCcgJyovXCcKK21hdGNoIDEgeCAnWFhYL1wnICcqL1xcJworbWF0Y2ggMSAxICdmb28nICdmb28nCittYXRjaCAxIDEgJ0Bmb28nICdAZm9vJworbWF0Y2ggMCAwICdmb28nICdAZm9vJworbWF0Y2ggMSAxICdbYWJdJyAnXFthYl0nCittYXRjaCAxIDEgJ1thYl0nICdbW11hYl0nCittYXRjaCAxIHggJ1thYl0nICdbWzpdYWJdJworbWF0Y2ggMCB4ICdbYWJdJyAnW1s6Ol1hYl0nCittYXRjaCAxIHggJ1thYl0nICdbWzpkaWdpdF1hYl0nCittYXRjaCAxIHggJ1thYl0nICdbXFs6XWFiXScKK21hdGNoIDEgMSAnP2E/YicgJ1w/P1w/YicKK21hdGNoIDEgMSAnYWJjJyAnXGFcYlxjJworbWF0Y2ggMCAwICdmb28nICcnCittYXRjaCAxIDAgJ2Zvby9iYXIvYmF6L3RvJyAnKiovdFtvXScKKworIyBDaGFyYWN0ZXIgY2xhc3MgdGVzdHMKK21hdGNoIDEgeCAnYTFCJyAnW1s6YWxwaGE6XV1bWzpkaWdpdDpdXVtbOnVwcGVyOl1dJworbWF0Y2ggMCB4ICdhJyAnW1s6ZGlnaXQ6XVs6dXBwZXI6XVs6c3BhY2U6XV0nCittYXRjaCAxIHggJ0EnICdbWzpkaWdpdDpdWzp1cHBlcjpdWzpzcGFjZTpdXScKK21hdGNoIDEgeCAnMScgJ1tbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNlOl1dJworbWF0Y2ggMCB4ICcxJyAnW1s6ZGlnaXQ6XVs6dXBwZXI6XVs6c3BhY2k6XV0nCittYXRjaCAxIHggJyAnICdbWzpkaWdpdDpdWzp1cHBlcjpdWzpzcGFjZTpdXScKK21hdGNoIDAgeCAnLicgJ1tbOmRpZ2l0Ol1bOnVwcGVyOl1bOnNwYWNlOl1dJworbWF0Y2ggMSB4ICcuJyAnW1s6ZGlnaXQ6XVs6cHVuY3Q6XVs6c3BhY2U6XV0nCittYXRjaCAxIHggJzUnICdbWzp4ZGlnaXQ6XV0nCittYXRjaCAxIHggJ2YnICdbWzp4ZGlnaXQ6XV0nCittYXRjaCAxIHggJ0QnICdbWzp4ZGlnaXQ6XV0nCittYXRjaCAxIHggJ18nICdbWzphbG51bTpdWzphbHBoYTpdWzpibGFuazpdWzpjbnRybDpdWzpkaWdpdDpdWzpncmFwaDpdWzpsb3dlcjpdWzpwcmludDpdWzpwdW5jdDpdWzpzcGFjZTpdWzp1cHBlcjpdWzp4ZGlnaXQ6XV0nCittYXRjaCAxIHggJ18nICdbWzphbG51bTpdWzphbHBoYTpdWzpibGFuazpdWzpjbnRybDpdWzpkaWdpdDpdWzpncmFwaDpdWzpsb3dlcjpdWzpwcmludDpdWzpwdW5jdDpdWzpzcGFjZTpdWzp1cHBlcjpdWzp4ZGlnaXQ6XV0nCittYXRjaCAxIHggJy4nICdbXls6YWxudW06XVs6YWxwaGE6XVs6Ymxhbms6XVs6Y250cmw6XVs6ZGlnaXQ6XVs6bG93ZXI6XVs6c3BhY2U6XVs6dXBwZXI6XVs6eGRpZ2l0Ol1dJworbWF0Y2ggMSB4ICc1JyAnW2EtY1s6ZGlnaXQ6XXgtel0nCittYXRjaCAxIHggJ2InICdbYS1jWzpkaWdpdDpdeC16XScKK21hdGNoIDEgeCAneScgJ1thLWNbOmRpZ2l0Ol14LXpdJworbWF0Y2ggMCB4ICdxJyAnW2EtY1s6ZGlnaXQ6XXgtel0nCisKKyMgQWRkaXRpb25hbCB0ZXN0cywgaW5jbHVkaW5nIHNvbWUgbWFsZm9ybWVkIHdpbGRtYXRzCittYXRjaCAxIHggJ10nICdbXFwtXl0nCittYXRjaCAwIDAgJ1snICdbXFwtXl0nCittYXRjaCAxIHggJy0nICdbXC1fXScKK21hdGNoIDEgeCAnXScgJ1tcXV0nCittYXRjaCAwIDAgJ1xdJyAnW1xdXScKK21hdGNoIDAgMCAnXCcgJ1tcXV0nCittYXRjaCAwIDAgJ2FiJyAnYVtdYicKK21hdGNoIDAgeCAnYVtdYicgJ2FbXWInCittYXRjaCAwIHggJ2FiWycgJ2FiWycKK21hdGNoIDAgMCAnYWInICdbIScKK21hdGNoIDAgMCAnYWInICdbLScKK21hdGNoIDEgMSAnLScgJ1stXScKK21hdGNoIDAgMCAnLScgJ1thLScKK21hdGNoIDAgMCAnLScgJ1shYS0nCittYXRjaCAxIHggJy0nICdbLS1BXScKK21hdGNoIDEgeCAnNScgJ1stLUFdJworbWF0Y2ggMSAxICcgJyAnWyAtLV0nCittYXRjaCAxIDEgJyQnICdbIC0tXScKK21hdGNoIDEgMSAnLScgJ1sgLS1dJworbWF0Y2ggMCAwICcwJyAnWyAtLV0nCittYXRjaCAxIHggJy0nICdbLS0tXScKK21hdGNoIDEgeCAnLScgJ1stLS0tLS1dJworbWF0Y2ggMCAwICdqJyAnW2EtZS1uXScKK21hdGNoIDEgeCAnLScgJ1thLWUtbl0nCittYXRjaCAxIHggJ2EnICdbIS0tLS0tLV0nCittYXRjaCAwIDAgJ1snICdbXS1hXScKK21hdGNoIDEgeCAnXicgJ1tdLWFdJworbWF0Y2ggMCAwICdeJyAnWyFdLWFdJworbWF0Y2ggMSB4ICdbJyAnWyFdLWFdJworbWF0Y2ggMSAxICdeJyAnW2FeYmNdJworbWF0Y2ggMSB4ICctYl0nICdbYS1dYl0nCittYXRjaCAwIDAgJ1wnICdbXF0nCittYXRjaCAxIDEgJ1wnICdbXFxdJworbWF0Y2ggMCAwICdcJyAnWyFcXF0nCittYXRjaCAxIDEgJ0cnICdbQS1cXF0nCittYXRjaCAwIDAgJ2FhYWJiYicgJ2IqYScKK21hdGNoIDAgMCAnYWFiY2FhJyAnKmJhKicKK21hdGNoIDEgMSAnLCcgJ1ssXScKK21hdGNoIDEgMSAnLCcgJ1tcXCxdJworbWF0Y2ggMSAxICdcJyAnW1xcLF0nCittYXRjaCAxIDEgJy0nICdbLC0uXScKK21hdGNoIDAgMCAnKycgJ1ssLS5dJworbWF0Y2ggMCAwICctLl0nICdbLC0uXScKK21hdGNoIDEgMSAnMicgJ1tcMS1cM10nCittYXRjaCAxIDEgJzMnICdbXDEtXDNdJworbWF0Y2ggMCAwICc0JyAnW1wxLVwzXScKK21hdGNoIDEgMSAnXCcgJ1tbLVxdXScKK21hdGNoIDEgMSAnWycgJ1tbLVxdXScKK21hdGNoIDEgMSAnXScgJ1tbLVxdXScKK21hdGNoIDAgMCAnLScgJ1tbLVxdXScKKworIyBUZXN0IHJlY3Vyc2lvbiBhbmQgdGhlIGFib3J0IGNvZGUgKHVzZSAid2lsZHRlc3QgLWkiIHRvIHNlZSBpdGVyYXRpb24gY291bnRzKQorbWF0Y2ggMSAxICctYWRvYmUtY291cmllci1ib2xkLW8tbm9ybWFsLS0xMi0xMjAtNzUtNzUtbS03MC1pc284ODU5LTEnICctKi0qLSotKi0qLSotMTItKi0qLSotbS0qLSotKicKK21hdGNoIDAgMCAnLWFkb2JlLWNvdXJpZXItYm9sZC1vLW5vcm1hbC0tMTItMTIwLTc1LTc1LVgtNzAtaXNvODg1OS0xJyAnLSotKi0qLSotKi0qLTEyLSotKi0qLW0tKi0qLSonCittYXRjaCAwIDAgJy1hZG9iZS1jb3VyaWVyLWJvbGQtby1ub3JtYWwtLTEyLTEyMC03NS03NS0vLTcwLWlzbzg4NTktMScgJy0qLSotKi0qLSotKi0xMi0qLSotKi1tLSotKi0qJworbWF0Y2ggMSAxICdYWFgvYWRvYmUvY291cmllci9ib2xkL28vbm9ybWFsLy8xMi8xMjAvNzUvNzUvbS83MC9pc284ODU5LzEnICdYWFgvKi8qLyovKi8qLyovMTIvKi8qLyovbS8qLyovKicKK21hdGNoIDAgMCAnWFhYL2Fkb2JlL2NvdXJpZXIvYm9sZC9vL25vcm1hbC8vMTIvMTIwLzc1Lzc1L1gvNzAvaXNvODg1OS8xJyAnWFhYLyovKi8qLyovKi8qLzEyLyovKi8qL20vKi8qLyonCittYXRjaCAxIDAgJ2FiY2QvYWJjZGVmZy9hYmNkZWZnaGlqay9hYmNkZWZnaGlqa2xtbm9wLnR4dCcgJyoqLyphKmIqZypuKnQnCittYXRjaCAwIDAgJ2FiY2QvYWJjZGVmZy9hYmNkZWZnaGlqay9hYmNkZWZnaGlqa2xtbm9wLnR4dHonICcqKi8qYSpiKmcqbip0JworbWF0Y2ggMCB4IGZvbyAnKi8qLyonCittYXRjaCAwIHggZm9vL2JhciAnKi8qLyonCittYXRjaCAxIHggZm9vL2JiYS9hcnIgJyovKi8qJworbWF0Y2ggMCB4IGZvby9iYi9hYS9yciAnKi8qLyonCittYXRjaCAxIHggZm9vL2JiL2FhL3JyICcqKi8qKi8qKicKK21hdGNoIDEgeCBhYmNYZGVmWGdoaSAnKlgqaScKK21hdGNoIDAgeCBhYi9jWGQvZWZYZy9oaSAnKlgqaScKK21hdGNoIDEgeCBhYi9jWGQvZWZYZy9oaSAnKi8qWCovKi8qaScKK21hdGNoIDEgeCBhYi9jWGQvZWZYZy9oaSAnKiovKlgqLyoqLyppJworCitwYXRobWF0Y2ggMSBmb28gZm9vCitwYXRobWF0Y2ggMCBmb28gZm8KK3BhdGhtYXRjaCAxIGZvby9iYXIgZm9vL2JhcgorcGF0aG1hdGNoIDEgZm9vL2JhciAnZm9vLyonCitwYXRobWF0Y2ggMSBmb28vYmJhL2FyciAnZm9vLyonCitwYXRobWF0Y2ggMSBmb28vYmJhL2FyciAnZm9vLyoqJworcGF0aG1hdGNoIDEgZm9vL2JiYS9hcnIgJ2ZvbyonCitwYXRobWF0Y2ggMSBmb28vYmJhL2FyciAnZm9vKionCitwYXRobWF0Y2ggMSBmb28vYmJhL2FyciAnZm9vLyphcnInCitwYXRobWF0Y2ggMSBmb28vYmJhL2FyciAnZm9vLyoqYXJyJworcGF0aG1hdGNoIDAgZm9vL2JiYS9hcnIgJ2Zvby8qeicKK3BhdGhtYXRjaCAwIGZvby9iYmEvYXJyICdmb28vKip6JworcGF0aG1hdGNoIDEgZm9vL2JhciAnZm9vP2JhcicKK3BhdGhtYXRjaCAxIGZvby9iYXIgJ2Zvb1svXWJhcicKK3BhdGhtYXRjaCAwIGZvbyAnKi8qLyonCitwYXRobWF0Y2ggMCBmb28vYmFyICcqLyovKicKK3BhdGhtYXRjaCAxIGZvby9iYmEvYXJyICcqLyovKicKK3BhdGhtYXRjaCAxIGZvby9iYi9hYS9yciAnKi8qLyonCitwYXRobWF0Y2ggMSBhYmNYZGVmWGdoaSAnKlgqaScKK3BhdGhtYXRjaCAxIGFiL2NYZC9lZlhnL2hpICcqLypYKi8qLyppJworcGF0aG1hdGNoIDEgYWIvY1hkL2VmWGcvaGkgJypYZyppJworCisjIENhc2Utc2Vuc2l0aXZ5IGZlYXR1cmVzCittYXRjaCAwIHggJ2EnICdbQS1aXScKK21hdGNoIDEgeCAnQScgJ1tBLVpdJworbWF0Y2ggMCB4ICdBJyAnW2Etel0nCittYXRjaCAxIHggJ2EnICdbYS16XScKK21hdGNoIDAgeCAnYScgJ1tbOnVwcGVyOl1dJworbWF0Y2ggMSB4ICdBJyAnW1s6dXBwZXI6XV0nCittYXRjaCAwIHggJ0EnICdbWzpsb3dlcjpdXScKK21hdGNoIDEgeCAnYScgJ1tbOmxvd2VyOl1dJworbWF0Y2ggMCB4ICdBJyAnW0ItWmFdJworbWF0Y2ggMSB4ICdhJyAnW0ItWmFdJworbWF0Y2ggMCB4ICdBJyAnW0ItYV0nCittYXRjaCAxIHggJ2EnICdbQi1hXScKK21hdGNoIDAgeCAneicgJ1taLXldJworbWF0Y2ggMSB4ICdaJyAnW1oteV0nCisKK2ltYXRjaCAxICdhJyAnW0EtWl0nCitpbWF0Y2ggMSAnQScgJ1tBLVpdJworaW1hdGNoIDEgJ0EnICdbYS16XScKK2ltYXRjaCAxICdhJyAnW2Etel0nCitpbWF0Y2ggMSAnYScgJ1tbOnVwcGVyOl1dJworaW1hdGNoIDEgJ0EnICdbWzp1cHBlcjpdXScKK2ltYXRjaCAxICdBJyAnW1s6bG93ZXI6XV0nCitpbWF0Y2ggMSAnYScgJ1tbOmxvd2VyOl1dJworaW1hdGNoIDEgJ0EnICdbQi1aYV0nCitpbWF0Y2ggMSAnYScgJ1tCLVphXScKK2ltYXRjaCAxICdBJyAnW0ItYV0nCitpbWF0Y2ggMSAnYScgJ1tCLWFdJworaW1hdGNoIDEgJ3onICdbWi15XScKK2ltYXRjaCAxICdaJyAnW1oteV0nCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzEwMC1scy10cmVlLXJlc3RyaWN0LnNoIGIvdC90MzEwMC1scy10cmVlLXJlc3RyaWN0LnNoCmluZGV4IDgxZDkwYjYuLmViNzNjMDYgMTAwNzU1Ci0tLSBhL3QvdDMxMDAtbHMtdHJlZS1yZXN0cmljdC5zaAorKysgYi90L3QzMTAwLWxzLXRyZWUtcmVzdHJpY3Quc2gKQEAgLTIyLDIwICsyMiw4IEBACiAgICAgJ3NldHVwJyBcCiAgICAgJ21rZGlyIHBhdGgyIHBhdGgyL2JheiAmJgogICAgICBlY2hvIEhpID5wYXRoMCAmJgotICAgICBpZiB0ZXN0X2hhdmVfcHJlcmVxIFNZTUxJTktTCi0gICAgIHRoZW4KLQlsbiAtcyBwYXRoMCBwYXRoMSAmJgotCWxuIC1zIC4uL3BhdGgxIHBhdGgyL2JhemJvCi0JbWFrZV9leHBlY3RlZCAoKSB7Ci0JCWNhdCA+ZXhwZWN0ZWQKLQl9Ci0gICAgIGVsc2UKLQlwcmludGYgcGF0aDAgPiBwYXRoMSAmJgotCXByaW50ZiAuLi9wYXRoMSA+IHBhdGgyL2JhemJvCi0JbWFrZV9leHBlY3RlZCAoKSB7Ci0JCXNlZCAtZSAicy8xMjAwMDAgLzEwMDY0NCAvIiA+ZXhwZWN0ZWQKLQl9Ci0gICAgIGZpICYmCisgICAgIHRlc3RfbG5fc19hZGQgcGF0aDAgcGF0aDEgJiYKKyAgICAgdGVzdF9sbl9zX2FkZCAuLi9wYXRoMSBwYXRoMi9iYXpibyAmJgogICAgICBlY2hvIExvID5wYXRoMi9mb28gJiYKICAgICAgZWNobyBNaSA+cGF0aDIvYmF6L2IgJiYKICAgICAgZmluZCBwYXRoPyBcKCAtdHlwZSBmIC1vIC10eXBlIGwgXCkgLXByaW50IHwKQEAgLTUxLDcgKzM5LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdscy10cmVlIHBsYWluJyBcCiAgICAgJ2dpdCBscy10cmVlICR0cmVlID5jdXJyZW50ICYmCi0gICAgIG1ha2VfZXhwZWN0ZWQgPDxcRU9GICYmCisgICAgIGNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCiAxMDA2NDQgYmxvYiBYCXBhdGgwCiAxMjAwMDAgYmxvYiBYCXBhdGgxCiAwNDAwMDAgdHJlZSBYCXBhdGgyCkBAIC02MSw3ICs0OSw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnbHMtdHJlZSByZWN1cnNpdmUnIFwKICAgICAnZ2l0IGxzLXRyZWUgLXIgJHRyZWUgPmN1cnJlbnQgJiYKLSAgICAgbWFrZV9leHBlY3RlZCA8PFxFT0YgJiYKKyAgICAgY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKIDEwMDY0NCBibG9iIFgJcGF0aDAKIDEyMDAwMCBibG9iIFgJcGF0aDEKIDEwMDY0NCBibG9iIFgJcGF0aDIvYmF6L2IKQEAgLTczLDcgKzYxLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdscy10cmVlIHJlY3Vyc2l2ZSB3aXRoIC10JyBcCiAgICAgJ2dpdCBscy10cmVlIC1yIC10ICR0cmVlID5jdXJyZW50ICYmCi0gICAgIG1ha2VfZXhwZWN0ZWQgPDxcRU9GICYmCisgICAgIGNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCiAxMDA2NDQgYmxvYiBYCXBhdGgwCiAxMjAwMDAgYmxvYiBYCXBhdGgxCiAwNDAwMDAgdHJlZSBYCXBhdGgyCkBAIC04Nyw3ICs3NSw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnbHMtdHJlZSByZWN1cnNpdmUgd2l0aCAtZCcgXAogICAgICdnaXQgbHMtdHJlZSAtciAtZCAkdHJlZSA+Y3VycmVudCAmJgotICAgICBtYWtlX2V4cGVjdGVkIDw8XEVPRiAmJgorICAgICBjYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgogMDQwMDAwIHRyZWUgWAlwYXRoMgogMDQwMDAwIHRyZWUgWAlwYXRoMi9iYXoKIEVPRgpAQCAtOTYsNyArODQsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2xzLXRyZWUgZmlsdGVyZWQgd2l0aCBwYXRoJyBcCiAgICAgJ2dpdCBscy10cmVlICR0cmVlIHBhdGggPmN1cnJlbnQgJiYKLSAgICAgbWFrZV9leHBlY3RlZCA8PFxFT0YgJiYKKyAgICAgY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKIEVPRgogICAgICB0ZXN0X291dHB1dCcKIApAQCAtMTA2LDcgKzk0LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdscy10cmVlIGZpbHRlcmVkIHdpdGggcGF0aDEgcGF0aDAnIFwKICAgICAnZ2l0IGxzLXRyZWUgJHRyZWUgcGF0aDEgcGF0aDAgPmN1cnJlbnQgJiYKLSAgICAgbWFrZV9leHBlY3RlZCA8PFxFT0YgJiYKKyAgICAgY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKIDEwMDY0NCBibG9iIFgJcGF0aDAKIDEyMDAwMCBibG9iIFgJcGF0aDEKIEVPRgpAQCAtMTE1LDcgKzEwMyw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnbHMtdHJlZSBmaWx0ZXJlZCB3aXRoIHBhdGgwLycgXAogICAgICdnaXQgbHMtdHJlZSAkdHJlZSBwYXRoMC8gPmN1cnJlbnQgJiYKLSAgICAgbWFrZV9leHBlY3RlZCA8PFxFT0YgJiYKKyAgICAgY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKIEVPRgogICAgICB0ZXN0X291dHB1dCcKIApAQCAtMTI0LDcgKzExMiw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnbHMtdHJlZSBmaWx0ZXJlZCB3aXRoIHBhdGgyJyBcCiAgICAgJ2dpdCBscy10cmVlICR0cmVlIHBhdGgyID5jdXJyZW50ICYmCi0gICAgIG1ha2VfZXhwZWN0ZWQgPDxcRU9GICYmCisgICAgIGNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCiAwNDAwMDAgdHJlZSBYCXBhdGgyCiBFT0YKICAgICAgdGVzdF9vdXRwdXQnCkBAIC0xMzMsNyArMTIxLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdscy10cmVlIGZpbHRlcmVkIHdpdGggcGF0aDIvJyBcCiAgICAgJ2dpdCBscy10cmVlICR0cmVlIHBhdGgyLyA+Y3VycmVudCAmJgotICAgICBtYWtlX2V4cGVjdGVkIDw8XEVPRiAmJgorICAgICBjYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgogMDQwMDAwIHRyZWUgWAlwYXRoMi9iYXoKIDEyMDAwMCBibG9iIFgJcGF0aDIvYmF6Ym8KIDEwMDY0NCBibG9iIFgJcGF0aDIvZm9vCkBAIC0xNDUsNyArMTMzLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdscy10cmVlIGZpbHRlcmVkIHdpdGggcGF0aDIvYmF6JyBcCiAgICAgJ2dpdCBscy10cmVlICR0cmVlIHBhdGgyL2JheiA+Y3VycmVudCAmJgotICAgICBtYWtlX2V4cGVjdGVkIDw8XEVPRiAmJgorICAgICBjYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgogMDQwMDAwIHRyZWUgWAlwYXRoMi9iYXoKIEVPRgogICAgICB0ZXN0X291dHB1dCcKQEAgLTE1MywxNCArMTQxLDE0IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnbHMtdHJlZSBmaWx0ZXJlZCB3aXRoIHBhdGgyL2JhaycgXAogICAgICdnaXQgbHMtdHJlZSAkdHJlZSBwYXRoMi9iYWsgPmN1cnJlbnQgJiYKLSAgICAgbWFrZV9leHBlY3RlZCA8PFxFT0YgJiYKKyAgICAgY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKIEVPRgogICAgICB0ZXN0X291dHB1dCcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2xzLXRyZWUgLXQgZmlsdGVyZWQgd2l0aCBwYXRoMi9iYWsnIFwKICAgICAnZ2l0IGxzLXRyZWUgLXQgJHRyZWUgcGF0aDIvYmFrID5jdXJyZW50ICYmCi0gICAgIG1ha2VfZXhwZWN0ZWQgPDxcRU9GICYmCisgICAgIGNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCiAwNDAwMDAgdHJlZSBYCXBhdGgyCiBFT0YKICAgICAgdGVzdF9vdXRwdXQnCkBAIC0xNjgsNyArMTU2LDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdscy10cmVlIHdpdGggb25lIHBhdGggYSBwcmVmaXggb2YgdGhlIG90aGVyJyBcCiAgICAgJ2dpdCBscy10cmVlICR0cmVlIHBhdGgyL2JheiBwYXRoMi9iYXpibyA+Y3VycmVudCAmJgotICAgICBtYWtlX2V4cGVjdGVkIDw8XEVPRiAmJgorICAgICBjYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgogMDQwMDAwIHRyZWUgWAlwYXRoMi9iYXoKIDEyMDAwMCBibG9iIFgJcGF0aDIvYmF6Ym8KIEVPRgpkaWZmIC0tZ2l0IGEvdC90MzIwMC1icmFuY2guc2ggYi90L3QzMjAwLWJyYW5jaC5zaAppbmRleCA4MGU2YmUzLi40NGVjNmE0IDEwMDc1NQotLS0gYS90L3QzMjAwLWJyYW5jaC5zaAorKysgYi90L3QzMjAwLWJyYW5jaC5zaApAQCAtNywyMCArNywxOCBAQAogCiAuIC4vdGVzdC1saWIuc2gKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3ByZXBhcmUgYSB0cml2aWFsIHJlcG9zaXRvcnknIFwKLSAgICAnZWNobyBIZWxsbyA+IEEgJiYKLSAgICAgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBBICYmCi0gICAgIGdpdCBjb21taXQgLW0gIkluaXRpYWwgY29tbWl0LiIgJiYKLSAgICAgZWNobyBXb3JsZCA+PiBBICYmCi0gICAgIGdpdCB1cGRhdGUtaW5kZXggLS1hZGQgQSAmJgotICAgICBnaXQgY29tbWl0IC1tICJTZWNvbmQgY29tbWl0LiIgJiYKLSAgICAgSEVBRD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCknCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmVwYXJlIGEgdHJpdmlhbCByZXBvc2l0b3J5JyAnCisJZWNobyBIZWxsbyA+QSAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgQSAmJgorCWdpdCBjb21taXQgLW0gIkluaXRpYWwgY29tbWl0LiIgJiYKKwllY2hvIFdvcmxkID4+QSAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgQSAmJgorCWdpdCBjb21taXQgLW0gIlNlY29uZCBjb21taXQuIiAmJgorCUhFQUQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGJyYW5jaCAtLWhlbHAgc2hvdWxkIG5vdCBoYXZlIGNyZWF0ZWQgYSBib2d1cyBicmFuY2gnICcKLSAgICAgdGVzdF9taWdodF9mYWlsIGdpdCBicmFuY2ggLS1oZWxwIDwvZGV2L251bGwgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCAmJgotICAgICB0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlZnMvaGVhZHMvLS1oZWxwCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYnJhbmNoIC0taGVscCBzaG91bGQgbm90IGhhdmUgY3JlYXRlZCBhIGJvZ3VzIGJyYW5jaCcgJworCXRlc3RfbWlnaHRfZmFpbCBnaXQgYnJhbmNoIC0taGVscCA8L2Rldi9udWxsID4vZGV2L251bGwgMj4vZGV2L251bGwgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlZnMvaGVhZHMvLS1oZWxwCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JyYW5jaCAtaCBpbiBicm9rZW4gcmVwb3NpdG9yeScgJwpAQCAtMzQsNjMgKzMyLDY3IEBACiAJdGVzdF9pMThuZ3JlcCAiW1V1XXNhZ2UiIGJyb2tlbi91c2FnZQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGJyYW5jaCBhYmMgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgXAotICAgICdnaXQgYnJhbmNoIGFiYyAmJiB0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L3JlZnMvaGVhZHMvYWJjJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCBhYmMgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgJworCWdpdCBicmFuY2ggYWJjICYmIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9hYmMKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBicmFuY2ggYS9iL2Mgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgXAotICAgICdnaXQgYnJhbmNoIGEvYi9jICYmIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9hL2IvYycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggYS9iL2Mgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCcgJworCWdpdCBicmFuY2ggYS9iL2MgJiYgdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL2hlYWRzL2EvYi9jCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggSEVBRCBzaG91bGQgZmFpbCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggSEVBRAorJwogCiBjYXQgPmV4cGVjdCA8PEVPRgogJF96NDAgJEhFQUQgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDExMTcxNTAyMDAgKzAwMDAJYnJhbmNoOiBDcmVhdGVkIGZyb20gbWFzdGVyCiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1sIGQvZS9mIHNob3VsZCBjcmVhdGUgYSBicmFuY2ggYW5kIGEgbG9nJyBcCi0JJ0dJVF9DT01NSVRURVJfREFURT0iMjAwNS0wNS0yNiAyMzozMCIgXAotICAgICBnaXQgYnJhbmNoIC1sIGQvZS9mICYmCi0JIHRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9kL2UvZiAmJgotCSB0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9kL2UvZiAmJgotCSB0ZXN0X2NtcCBleHBlY3QgLmdpdC9sb2dzL3JlZnMvaGVhZHMvZC9lL2YnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYnJhbmNoIC1sIGQvZS9mIHNob3VsZCBjcmVhdGUgYSBicmFuY2ggYW5kIGEgbG9nJyAnCisJR0lUX0NPTU1JVFRFUl9EQVRFPSIyMDA1LTA1LTI2IDIzOjMwIiBcCisJZ2l0IGJyYW5jaCAtbCBkL2UvZiAmJgorCXRlc3RfcGF0aF9pc19maWxlIC5naXQvcmVmcy9oZWFkcy9kL2UvZiAmJgorCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL2QvZS9mICYmCisJdGVzdF9jbXAgZXhwZWN0IC5naXQvbG9ncy9yZWZzL2hlYWRzL2QvZS9mCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1kIGQvZS9mIHNob3VsZCBkZWxldGUgYSBicmFuY2ggYW5kIGEgbG9nJyBcCi0JJ2dpdCBicmFuY2ggLWQgZC9lL2YgJiYKLQkgdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWZzL2hlYWRzL2QvZS9mICYmCi0JIHRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvbG9ncy9yZWZzL2hlYWRzL2QvZS9mJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtZCBkL2UvZiBzaG91bGQgZGVsZXRlIGEgYnJhbmNoIGFuZCBhIGxvZycgJworCWdpdCBicmFuY2ggLWQgZC9lL2YgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlZnMvaGVhZHMvZC9lL2YgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9kL2UvZgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGJyYW5jaCBqL2sgc2hvdWxkIHdvcmsgYWZ0ZXIgYnJhbmNoIGogaGFzIGJlZW4gZGVsZXRlZCcgXAotICAgICAgICdnaXQgYnJhbmNoIGogJiYKLSAgICAgICAgZ2l0IGJyYW5jaCAtZCBqICYmCi0gICAgICAgIGdpdCBicmFuY2ggai9rJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCBqL2sgc2hvdWxkIHdvcmsgYWZ0ZXIgYnJhbmNoIGogaGFzIGJlZW4gZGVsZXRlZCcgJworCWdpdCBicmFuY2ggaiAmJgorCWdpdCBicmFuY2ggLWQgaiAmJgorCWdpdCBicmFuY2ggai9rCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIGwgc2hvdWxkIHdvcmsgYWZ0ZXIgYnJhbmNoIGwvbSBoYXMgYmVlbiBkZWxldGVkJyBcCi0gICAgICAgJ2dpdCBicmFuY2ggbC9tICYmCi0gICAgICAgIGdpdCBicmFuY2ggLWQgbC9tICYmCi0gICAgICAgIGdpdCBicmFuY2ggbCcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggbCBzaG91bGQgd29yayBhZnRlciBicmFuY2ggbC9tIGhhcyBiZWVuIGRlbGV0ZWQnICcKKwlnaXQgYnJhbmNoIGwvbSAmJgorCWdpdCBicmFuY2ggLWQgbC9tICYmCisJZ2l0IGJyYW5jaCBsCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1tIGR1bXBzIHVzYWdlJyBcCi0gICAgICAgJ3Rlc3RfZXhwZWN0X2NvZGUgMTI5IGdpdCBicmFuY2ggLW0gMj5lcnIgJiYKLQl0ZXN0X2kxOG5ncmVwICJbVXVdc2FnZTogZ2l0IGJyYW5jaCIgZXJyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBkdW1wcyB1c2FnZScgJworCXRlc3RfZXhwZWN0X2NvZGUgMTI4IGdpdCBicmFuY2ggLW0gMj5lcnIgJiYKKwl0ZXN0X2kxOG5ncmVwICJicmFuY2ggbmFtZSByZXF1aXJlZCIgZXJyCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgYnJhbmNoIC1tIG0gbS9tIHNob3VsZCB3b3JrJyBcCi0gICAgICAgJ2dpdCBicmFuY2ggLWwgbSAmJgotICAgICAgICBnaXQgYnJhbmNoIC1tIG0gbS9tICYmCi0JdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvbS9tJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBtIG0vbSBzaG91bGQgd29yaycgJworCWdpdCBicmFuY2ggLWwgbSAmJgorCWdpdCBicmFuY2ggLW0gbSBtL20gJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9tL20KKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBicmFuY2ggLW0gbi9uIG4gc2hvdWxkIHdvcmsnIFwKLSAgICAgICAnZ2l0IGJyYW5jaCAtbCBuL24gJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggLW0gbi9uIG4gc2hvdWxkIHdvcmsnICcKKwlnaXQgYnJhbmNoIC1sIG4vbiAmJgogCWdpdCBicmFuY2ggLW0gbi9uIG4gJiYKLQl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9uJworCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL24KKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBvL28gbyBzaG91bGQgZmFpbCB3aGVuIG8vcCBleGlzdHMnICcKIAlnaXQgYnJhbmNoIG8vbyAmJgotICAgICAgICBnaXQgYnJhbmNoIG8vcCAmJgorCWdpdCBicmFuY2ggby9wICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtbSBvL28gbwogJwogCkBAIC0yNDgsMTkgKzI1MCwyMCBAQAogCiBnaXQgY29uZmlnIGJyYW5jaC5zL3MuZHVtbXkgSGVsbG8KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2dpdCBicmFuY2ggLW0gcy9zIHMgc2hvdWxkIHdvcmsgd2hlbiBzL3QgaXMgZGVsZXRlZCcgXAotICAgICAgICdnaXQgYnJhbmNoIC1sIHMvcyAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCAtbSBzL3MgcyBzaG91bGQgd29yayB3aGVuIHMvdCBpcyBkZWxldGVkJyAnCisJZ2l0IGJyYW5jaCAtbCBzL3MgJiYKIAl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9zL3MgJiYKLSAgICAgICAgZ2l0IGJyYW5jaCAtbCBzL3QgJiYKKwlnaXQgYnJhbmNoIC1sIHMvdCAmJgogCXRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL3MvdCAmJgotICAgICAgICBnaXQgYnJhbmNoIC1kIHMvdCAmJgotICAgICAgICBnaXQgYnJhbmNoIC1tIHMvcyBzICYmCi0JdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvcycKKwlnaXQgYnJhbmNoIC1kIHMvdCAmJgorCWdpdCBicmFuY2ggLW0gcy9zIHMgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9zCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZpZyBpbmZvcm1hdGlvbiB3YXMgcmVuYW1lZCwgdG9vJyBcCi0JInRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5zLmR1bW15KSA9IEhlbGxvICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLnMvcy9kdW1teSIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZpZyBpbmZvcm1hdGlvbiB3YXMgcmVuYW1lZCwgdG9vJyAnCisJdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLnMuZHVtbXkpID0gSGVsbG8gJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIGJyYW5jaC5zL3MvZHVtbXkKKycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVsZXRpbmcgYSBzeW1yZWYnICcKIAlnaXQgYnJhbmNoIHRhcmdldCAmJgpAQCAtMjgxLDggKzI4NCw3IEBACiAJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1pbmcgYSBzeW1yZWYgaXMgbm90IGFsbG93ZWQnIFwKLScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtaW5nIGEgc3ltcmVmIGlzIG5vdCBhbGxvd2VkJyAnCiAJZ2l0IHN5bWJvbGljLXJlZiByZWZzL2hlYWRzL21hc3RlcjIgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC1tIG1hc3RlcjIgbWFzdGVyMyAmJgogCWdpdCBzeW1ib2xpYy1yZWYgcmVmcy9oZWFkcy9tYXN0ZXIyICYmCkBAIC0yOTAsMTQ2ICsyOTIsMTkxIEBACiAJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWZzL2hlYWRzL21hc3RlcjMKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyBcCi0gICAgJ2dpdCBicmFuY2ggLW0gdSB2IHNob3VsZCBmYWlsIHdoZW4gdGhlIHJlZmxvZyBmb3IgdSBpcyBhIHN5bWxpbmsnICcKLSAgICAgZ2l0IGJyYW5jaCAtbCB1ICYmCi0gICAgIG12IC5naXQvbG9ncy9yZWZzL2hlYWRzL3UgcmVhbC11ICYmCi0gICAgIGxuIC1zIHJlYWwtdSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy91ICYmCi0gICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLW0gdSB2Cit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdnaXQgYnJhbmNoIC1tIHUgdiBzaG91bGQgZmFpbCB3aGVuIHRoZSByZWZsb2cgZm9yIHUgaXMgYSBzeW1saW5rJyAnCisJZ2l0IGJyYW5jaCAtbCB1ICYmCisJbXYgLmdpdC9sb2dzL3JlZnMvaGVhZHMvdSByZWFsLXUgJiYKKwlsbiAtcyByZWFsLXUgLmdpdC9sb2dzL3JlZnMvaGVhZHMvdSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLW0gdSB2CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgdmlhIC0tdHJhY2snIFwKLSAgICAnZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKLSAgICAgZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9sb2NhbC8qICYmCi0gICAgIChnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCi0gICAgIGdpdCBicmFuY2ggLS10cmFjayBteTEgbG9jYWwvbWFzdGVyICYmCi0gICAgIHRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTEucmVtb3RlKSA9IGxvY2FsICYmCi0gICAgIHRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTEubWVyZ2UpID0gcmVmcy9oZWFkcy9tYXN0ZXInCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgKG5vbi13aWxkY2FyZCwgbWF0Y2hpbmcpJyBcCi0gICAgJ2dpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCi0gICAgIGdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgJiYKLSAgICAgKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvbWFzdGVyIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKLSAgICAgZ2l0IGJyYW5jaCAtLXRyYWNrIG15NCBsb2NhbC9tYXN0ZXIgJiYKLSAgICAgdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15NC5yZW1vdGUpID0gbG9jYWwgJiYKLSAgICAgdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15NC5tZXJnZSkgPSByZWZzL2hlYWRzL21hc3RlcicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCB0cmFja2luZyBzZXR1cCAobm9uLXdpbGRjYXJkLCBub3QgbWF0Y2hpbmcpJyBcCi0gICAgJ2dpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCi0gICAgIGdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvczpyZWZzL3JlbW90ZXMvbG9jYWwvcyAmJgotICAgICAoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgotICAgICBnaXQgYnJhbmNoIC0tdHJhY2sgbXk1IGxvY2FsL21hc3RlciAmJgotICAgICAhIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk1LnJlbW90ZSkiID0gbG9jYWwgJiYKLSAgICAgISB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15NS5tZXJnZSkiID0gcmVmcy9oZWFkcy9tYXN0ZXInCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgdmlhIGNvbmZpZycgXAotICAgICdnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSB0cnVlICYmCi0gICAgIGdpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCi0gICAgIGdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvbG9jYWwvKiAmJgotICAgICAoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgotICAgICBnaXQgYnJhbmNoIG15MyBsb2NhbC9tYXN0ZXIgJiYKLSAgICAgdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15My5yZW1vdGUpID0gbG9jYWwgJiYKLSAgICAgdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15My5tZXJnZSkgPSByZWZzL2hlYWRzL21hc3RlcicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBvdmVycmlkaW5nIHRyYWNraW5nIHNldHVwIHZpYSAtLW5vLXRyYWNrJyBcCi0gICAgJ2dpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIHRydWUgJiYKLSAgICAgZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKLSAgICAgZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9sb2NhbC8qICYmCi0gICAgIChnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCi0gICAgIGdpdCBicmFuY2ggLS1uby10cmFjayBteTIgbG9jYWwvbWFzdGVyICYmCi0gICAgIGdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIGZhbHNlICYmCi0gICAgICEgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTIucmVtb3RlKSIgPSBsb2NhbCAmJgotICAgICAhIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXkyLm1lcmdlKSIgPSByZWZzL2hlYWRzL21hc3RlcicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gdHJhY2tpbmcgd2l0aG91dCAuZmV0Y2ggZW50cmllcycgXAotICAgICdnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSB0cnVlICYmCi0gICAgIGdpdCBicmFuY2ggbXk2IHMgJiYKLSAgICAgZ2l0IGNvbmZpZyBicmFuY2guYXV0b21zZXR1cG1lcmdlIGZhbHNlICYmCi0gICAgIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk2LnJlbW90ZSkiICYmCi0gICAgIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk2Lm1lcmdlKSInCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgdmlhIC0tdHJhY2sgYnV0IGRlZXBlcicgXAotICAgICdnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgotICAgICBnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2xvY2FsLyogJiYKLSAgICAgKGdpdCBzaG93LXJlZiAtcSByZWZzL3JlbW90ZXMvbG9jYWwvby9vIHx8IGdpdCBmZXRjaCBsb2NhbCkgJiYKLSAgICAgZ2l0IGJyYW5jaCAtLXRyYWNrIG15NyBsb2NhbC9vL28gJiYKLSAgICAgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTcucmVtb3RlKSIgPSBsb2NhbCAmJgotICAgICB0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5tZXJnZSkiID0gcmVmcy9oZWFkcy9vL28nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgZGVsZXRpbmcgYnJhbmNoIGRlbGV0ZXMgYnJhbmNoIGNvbmZpZycgXAotICAgICdnaXQgYnJhbmNoIC1kIG15NyAmJgotICAgICB0ZXN0IC16ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5yZW1vdGUpIiAmJgotICAgICB0ZXN0IC16ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5tZXJnZSkiJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGRlbGV0aW5nIGJyYW5jaCB3aXRob3V0IGNvbmZpZycgXAotICAgICdnaXQgYnJhbmNoIG15NyBzICYmCi0gICAgIHNoYTE9JChnaXQgcmV2LXBhcnNlIG15NyB8IGN1dCAtYyAxLTcpICYmCi0gICAgIGVjaG8gIkRlbGV0ZWQgYnJhbmNoIG15NyAod2FzICRzaGExKS4iID5leHBlY3QgJiYKLSAgICAgZ2l0IGJyYW5jaCAtZCBteTcgPmFjdHVhbCAyPiYxICYmCi0gICAgIHRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IC0tdHJhY2sgd2l0aG91dCAuZmV0Y2ggZW50cmllcycgXAotICAgICdnaXQgYnJhbmNoIC0tdHJhY2sgbXk4ICYmCi0gICAgIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk4LnJlbW90ZSkiICYmCi0gICAgIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk4Lm1lcmdlKSInCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdicmFuY2ggZnJvbSBub24tYnJhbmNoIEhFQUQgdy9hdXRvc2V0dXBtZXJnZT1hbHdheXMnIFwKLSAgICAnZ2l0IGNvbmZpZyBicmFuY2guYXV0b3NldHVwbWVyZ2UgYWx3YXlzICYmCi0gICAgIGdpdCBicmFuY2ggbXk5IEhFQUReICYmCi0gICAgIGdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIGZhbHNlJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnYnJhbmNoIGZyb20gbm9uLWJyYW5jaCBIRUFEIHcvLS10cmFjayBjYXVzZXMgZmFpbHVyZScgXAotICAgICd0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMCBIRUFEXicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2JyYW5jaCBmcm9tIHRhZyB3Ly0tdHJhY2sgY2F1c2VzIGZhaWx1cmUnIFwKLSAgICAnZ2l0IHRhZyBmb29iYXIgJiYKLSAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXRyYWNrIG15MTEgZm9vYmFyJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UgLS1zZXQtdXBzdHJlYW0tdG8gbW9kaWZ5IEhFQUQnIFwKLSAgICAndGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUgZm9vICYmCi0gICAgIHRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UgZm9vICYmCi0gICAgIGdpdCBicmFuY2ggbXkxMgotICAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG15MTIgJiYKLSAgICAgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlKSIgPSAiLiIgJiYKLSAgICAgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UpIiA9ICJyZWZzL2hlYWRzL215MTIiJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UgLS1zZXQtdXBzdHJlYW0tdG8gbW9kaWZ5IGEgcGFydGljdWxhciBicmFuY2gnIFwKLSAgICAnZ2l0IGJyYW5jaCBteTEzCi0gICAgIGdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0tdG8gbWFzdGVyIG15MTMgJiYKLSAgICAgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTEzLnJlbW90ZSkiID0gIi4iICYmCi0gICAgIHRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXkxMy5tZXJnZSkiID0gInJlZnMvaGVhZHMvbWFzdGVyIicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS11bnNldC11cHN0cmVhbSBzaG91bGQgZmFpbCBpZiBnaXZlbiBhIG5vbi1leGlzdGVudCBicmFuY2gnIFwKLSAgICAndGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtIGktZG9udC1leGlzdCcKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLXVuc2V0LXVwc3RyZWFtIG9uIEhFQUQnIFwKLSAgICAnZ2l0IGJyYW5jaCBteTE0Ci0gICAgIHRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIGZvbyAmJgotICAgICB0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlIGZvbyAmJgotICAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG15MTQgJiYKLSAgICAgZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtICYmCi0gICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUgJiYKLSAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlICYmCi0gICAgICMgZmFpbCBmb3IgYSBicmFuY2ggd2l0aG91dCB1cHN0cmVhbSBzZXQKLSAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIHZpYSAtLXRyYWNrJyAnCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwudXJsIC4gJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC5mZXRjaCByZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL2xvY2FsLyogJiYKKwkoZ2l0IHNob3ctcmVmIC1xIHJlZnMvcmVtb3Rlcy9sb2NhbC9tYXN0ZXIgfHwgZ2l0IGZldGNoIGxvY2FsKSAmJgorCWdpdCBicmFuY2ggLS10cmFjayBteTEgbG9jYWwvbWFzdGVyICYmCisJdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15MS5yZW1vdGUpID0gbG9jYWwgJiYKKwl0ZXN0ICQoZ2l0IGNvbmZpZyBicmFuY2gubXkxLm1lcmdlKSA9IHJlZnMvaGVhZHMvbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgLS11bnNldC11cHN0cmVhbSBvbiBhIHBhcnRpY3VsYXIgYnJhbmNoJyBcCi0gICAgJ2dpdCBicmFuY2ggbXkxNQotICAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciBteTE0ICYmCi0gICAgIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBteTE0ICYmCi0gICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLm15MTQucmVtb3RlICYmCi0gICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLm15MTQubWVyZ2UnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIChub24td2lsZGNhcmQsIG1hdGNoaW5nKScgJworCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLnVybCAuICYmCisJZ2l0IGNvbmZpZyByZW1vdGUubG9jYWwuZmV0Y2ggcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciAmJgorCShnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCisJZ2l0IGJyYW5jaCAtLXRyYWNrIG15NCBsb2NhbC9tYXN0ZXIgJiYKKwl0ZXN0ICQoZ2l0IGNvbmZpZyBicmFuY2gubXk0LnJlbW90ZSkgPSBsb2NhbCAmJgorCXRlc3QgJChnaXQgY29uZmlnIGJyYW5jaC5teTQubWVyZ2UpID0gcmVmcy9oZWFkcy9tYXN0ZXIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0gc2hvd3MgbWVzc2FnZSB3aGVuIGNyZWF0aW5nIGEgbmV3IGJyYW5jaCB0aGF0IGV4aXN0cyBhcyByZW1vdGUtdHJhY2tpbmcnIFwKLSAgICAnZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgSEVBRCAmJgotICAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtIG9yaWdpbi9tYXN0ZXIgMj5hY3R1YWwgJiYKLSAgICAgdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCB1cGRhdGUtcmVmIC1kIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCi0gICAgIHRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1kIG9yaWdpbi9tYXN0ZXIgJiYKLSAgICAgY2F0ID5leHBlY3RlZCA8PEVPRiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhY2tpbmcgc2V0dXAgZmFpbHMgb24gbm9uLW1hdGNoaW5nIHJlZnNwZWMnICcKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgorCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvczpyZWZzL3JlbW90ZXMvbG9jYWwvcyAmJgorCShnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXRyYWNrIG15NSBsb2NhbC9tYXN0ZXIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIGJyYW5jaC5teTUucmVtb3RlICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubXk1Lm1lcmdlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgdHJhY2tpbmcgc2V0dXAgdmlhIGNvbmZpZycgJworCWdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIHRydWUgJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgorCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvbG9jYWwvKiAmJgorCShnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCisJZ2l0IGJyYW5jaCBteTMgbG9jYWwvbWFzdGVyICYmCisJdGVzdCAkKGdpdCBjb25maWcgYnJhbmNoLm15My5yZW1vdGUpID0gbG9jYWwgJiYKKwl0ZXN0ICQoZ2l0IGNvbmZpZyBicmFuY2gubXkzLm1lcmdlKSA9IHJlZnMvaGVhZHMvbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3Qgb3ZlcnJpZGluZyB0cmFja2luZyBzZXR1cCB2aWEgLS1uby10cmFjaycgJworCWdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIHRydWUgJiYKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgorCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvbG9jYWwvKiAmJgorCShnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL21hc3RlciB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCisJZ2l0IGJyYW5jaCAtLW5vLXRyYWNrIG15MiBsb2NhbC9tYXN0ZXIgJiYKKwlnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSBmYWxzZSAmJgorCSEgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTIucmVtb3RlKSIgPSBsb2NhbCAmJgorCSEgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTIubWVyZ2UpIiA9IHJlZnMvaGVhZHMvbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIHRyYWNraW5nIHdpdGhvdXQgLmZldGNoIGVudHJpZXMnICcKKwlnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSB0cnVlICYmCisJZ2l0IGJyYW5jaCBteTYgcyAmJgorCWdpdCBjb25maWcgYnJhbmNoLmF1dG9tc2V0dXBtZXJnZSBmYWxzZSAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk2LnJlbW90ZSkiICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIGJyYW5jaC5teTYubWVyZ2UpIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHRyYWNraW5nIHNldHVwIHZpYSAtLXRyYWNrIGJ1dCBkZWVwZXInICcKKwlnaXQgY29uZmlnIHJlbW90ZS5sb2NhbC51cmwgLiAmJgorCWdpdCBjb25maWcgcmVtb3RlLmxvY2FsLmZldGNoIHJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvbG9jYWwvKiAmJgorCShnaXQgc2hvdy1yZWYgLXEgcmVmcy9yZW1vdGVzL2xvY2FsL28vbyB8fCBnaXQgZmV0Y2ggbG9jYWwpICYmCisJZ2l0IGJyYW5jaCAtLXRyYWNrIG15NyBsb2NhbC9vL28gJiYKKwl0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5yZW1vdGUpIiA9IGxvY2FsICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTcubWVyZ2UpIiA9IHJlZnMvaGVhZHMvby9vCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgZGVsZXRpbmcgYnJhbmNoIGRlbGV0ZXMgYnJhbmNoIGNvbmZpZycgJworCWdpdCBicmFuY2ggLWQgbXk3ICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIGJyYW5jaC5teTcucmVtb3RlKSIgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgYnJhbmNoLm15Ny5tZXJnZSkiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgZGVsZXRpbmcgYnJhbmNoIHdpdGhvdXQgY29uZmlnJyAnCisJZ2l0IGJyYW5jaCBteTcgcyAmJgorCXNoYTE9JChnaXQgcmV2LXBhcnNlIG15NyB8IGN1dCAtYyAxLTcpICYmCisJZWNobyAiRGVsZXRlZCBicmFuY2ggbXk3ICh3YXMgJHNoYTEpLiIgPmV4cGVjdCAmJgorCWdpdCBicmFuY2ggLWQgbXk3ID5hY3R1YWwgMj4mMSAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgLS10cmFjayB3aXRob3V0IC5mZXRjaCBlbnRyaWVzJyAnCisJZ2l0IGJyYW5jaCAtLXRyYWNrIG15OCAmJgorCXRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubXk4LnJlbW90ZSkiICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTgubWVyZ2UpIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2ggZnJvbSBub24tYnJhbmNoIEhFQUQgdy9hdXRvc2V0dXBtZXJnZT1hbHdheXMnICcKKwlnaXQgY29uZmlnIGJyYW5jaC5hdXRvc2V0dXBtZXJnZSBhbHdheXMgJiYKKwlnaXQgYnJhbmNoIG15OSBIRUFEXiAmJgorCWdpdCBjb25maWcgYnJhbmNoLmF1dG9zZXR1cG1lcmdlIGZhbHNlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JyYW5jaCBmcm9tIG5vbi1icmFuY2ggSEVBRCB3Ly0tdHJhY2sgY2F1c2VzIGZhaWx1cmUnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMCBIRUFEXgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2ggZnJvbSB0YWcgdy8tLXRyYWNrIGNhdXNlcyBmYWlsdXJlJyAnCisJZ2l0IHRhZyBmb29iYXIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdHJhY2sgbXkxMSBmb29iYXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0tdG8gZmFpbHMgb24gbXVsdGlwbGUgYnJhbmNoZXMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciBhIGIgYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNldC11cHN0cmVhbS10byBmYWlscyBvbiBkZXRhY2hlZCBIRUFEJyAnCisJZ2l0IGNoZWNrb3V0IEhFQURee30gJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciAmJgorCWdpdCBjaGVja291dCAtCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2V0LXVwc3RyZWFtLXRvIGZhaWxzIG9uIGEgbWlzc2luZyBkc3QgYnJhbmNoJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBtYXN0ZXIgZG9lcy1ub3QtZXhpc3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0tdG8gZmFpbHMgb24gYSBtaXNzaW5nIHNyYyBicmFuY2gnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIGRvZXMtbm90LWV4aXN0IG1hc3RlcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXNldC11cHN0cmVhbS10byBmYWlscyBvbiBhIG5vbi1yZWYnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIEhFQURee30KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXNlIC0tc2V0LXVwc3RyZWFtLXRvIG1vZGlmeSBIRUFEJyAnCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUgZm9vICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZSBmb28gJiYKKwlnaXQgYnJhbmNoIG15MTIKKwlnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG15MTIgJiYKKwl0ZXN0ICIkKGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5yZW1vdGUpIiA9ICIuIiAmJgorCXRlc3QgIiQoZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlKSIgPSAicmVmcy9oZWFkcy9teTEyIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1c2UgLS1zZXQtdXBzdHJlYW0tdG8gbW9kaWZ5IGEgcGFydGljdWxhciBicmFuY2gnICcKKwlnaXQgYnJhbmNoIG15MTMKKwlnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG1hc3RlciBteTEzICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTEzLnJlbW90ZSkiID0gIi4iICYmCisJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5teTEzLm1lcmdlKSIgPSAicmVmcy9oZWFkcy9tYXN0ZXIiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tdW5zZXQtdXBzdHJlYW0gc2hvdWxkIGZhaWwgaWYgZ2l2ZW4gYSBub24tZXhpc3RlbnQgYnJhbmNoJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtIGktZG9udC1leGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IC0tdW5zZXQtdXBzdHJlYW0gb24gSEVBRCcgJworCWdpdCBicmFuY2ggbXkxNAorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIGZvbyAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UgZm9vICYmCisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBteTE0ICYmCisJZ2l0IGJyYW5jaCAtLXVuc2V0LXVwc3RyZWFtICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZSAmJgorCSMgZmFpbCBmb3IgYSBicmFuY2ggd2l0aG91dCB1cHN0cmVhbSBzZXQKKwl0ZXN0X211c3RfZmFpbCBnaXQgYnJhbmNoIC0tdW5zZXQtdXBzdHJlYW0KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS11bnNldC11cHN0cmVhbSBzaG91bGQgZmFpbCBvbiBtdWx0aXBsZSBicmFuY2hlcycgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBhIGIgYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXVuc2V0LXVwc3RyZWFtIHNob3VsZCBmYWlsIG9uIGRldGFjaGVkIEhFQUQnICcKKwlnaXQgY2hlY2tvdXQgSEVBRF57fSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSAmJgorCWdpdCBjaGVja291dCAtCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgLS11bnNldC11cHN0cmVhbSBvbiBhIHBhcnRpY3VsYXIgYnJhbmNoJyAnCisJZ2l0IGJyYW5jaCBteTE1CisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbS10byBtYXN0ZXIgbXkxNCAmJgorCWdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBteTE0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyBicmFuY2gubXkxNC5yZW1vdGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIGJyYW5jaC5teTE0Lm1lcmdlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2V0LXVwc3RyZWFtIHNob3dzIG1lc3NhZ2Ugd2hlbiBjcmVhdGluZyBhIG5ldyBicmFuY2ggdGhhdCBleGlzdHMgYXMgcmVtb3RlLXRyYWNraW5nJyAnCisJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgSEVBRCAmJgorCWdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0gb3JpZ2luL21hc3RlciAyPmFjdHVhbCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgdXBkYXRlLXJlZiAtZCByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1kIG9yaWdpbi9tYXN0ZXIgJiYKKwljYXQgPmV4cGVjdGVkIDw8RU9GICYmCiBUaGUgLS1zZXQtdXBzdHJlYW0gZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIENvbnNpZGVyIHVzaW5nIC0tdHJhY2sgb3IgLS1zZXQtdXBzdHJlYW0tdG8KIAogSWYgeW91IHdhbnRlZCB0byBtYWtlICciJ21hc3RlciciJyB0cmFjayAnIidvcmlnaW4vbWFzdGVyJyInLCBkbyB0aGlzOgpAQCAtNDM3LDM4ICs0ODQsMzggQEAKICAgICBnaXQgYnJhbmNoIC1kIG9yaWdpbi9tYXN0ZXIKICAgICBnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtLXRvIG9yaWdpbi9tYXN0ZXIKIEVPRgotICAgICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0gd2l0aCB0d28gYXJncyBvbmx5IHNob3dzIHRoZSBkZXByZWNhdGlvbiBtZXNzYWdlJyBcCi0gICAgJ2dpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0gbWFzdGVyIG15MTMgMj5hY3R1YWwgJiYKLSAgICAgdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBtYXN0ZXIgJiYKLSAgICAgY2F0ID5leHBlY3RlZCA8PEVPRiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zZXQtdXBzdHJlYW0gd2l0aCB0d28gYXJncyBvbmx5IHNob3dzIHRoZSBkZXByZWNhdGlvbiBtZXNzYWdlJyAnCisJZ2l0IGJyYW5jaCAtLXNldC11cHN0cmVhbSBtYXN0ZXIgbXkxMyAyPmFjdHVhbCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC0tdW5zZXQtdXBzdHJlYW0gbWFzdGVyICYmCisJY2F0ID5leHBlY3RlZCA8PEVPRiAmJgogVGhlIC0tc2V0LXVwc3RyZWFtIGZsYWcgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkLiBDb25zaWRlciB1c2luZyAtLXRyYWNrIG9yIC0tc2V0LXVwc3RyZWFtLXRvCiBFT0YKLSAgICAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2V0LXVwc3RyZWFtIHdpdGggb25lIGFyZyBvbmx5IHNob3dzIHRoZSBkZXByZWNhdGlvbiBtZXNzYWdlIGlmIHRoZSBicmFuY2ggZXhpc3RlZCcgXAotICAgICdnaXQgYnJhbmNoIC0tc2V0LXVwc3RyZWFtIG15MTMgMj5hY3R1YWwgJiYKLSAgICAgdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLS11bnNldC11cHN0cmVhbSBteTEzICYmCi0gICAgIGNhdCA+ZXhwZWN0ZWQgPDxFT0YgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tc2V0LXVwc3RyZWFtIHdpdGggb25lIGFyZyBvbmx5IHNob3dzIHRoZSBkZXByZWNhdGlvbiBtZXNzYWdlIGlmIHRoZSBicmFuY2ggZXhpc3RlZCcgJworCWdpdCBicmFuY2ggLS1zZXQtdXBzdHJlYW0gbXkxMyAyPmFjdHVhbCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC0tdW5zZXQtdXBzdHJlYW0gbXkxMyAmJgorCWNhdCA+ZXhwZWN0ZWQgPDxFT0YgJiYKIFRoZSAtLXNldC11cHN0cmVhbSBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4gQ29uc2lkZXIgdXNpbmcgLS10cmFjayBvciAtLXNldC11cHN0cmVhbS10bwogRU9GCi0gICAgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiAjIEtlZXAgdGhpcyB0ZXN0IGxhc3QsIGFzIGl0IGNoYW5nZXMgdGhlIGN1cnJlbnQgYnJhbmNoCiBjYXQgPmV4cGVjdCA8PEVPRgogJF96NDAgJEhFQUQgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDExMTcxNTAyMDAgKzAwMDAJYnJhbmNoOiBDcmVhdGVkIGZyb20gbWFzdGVyCiBFT0YKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgY2hlY2tvdXQgLWIgZy9oL2kgLWwgc2hvdWxkIGNyZWF0ZSBhIGJyYW5jaCBhbmQgYSBsb2cnIFwKLQknR0lUX0NPTU1JVFRFUl9EQVRFPSIyMDA1LTA1LTI2IDIzOjMwIiBcCi0gICAgIGdpdCBjaGVja291dCAtYiBnL2gvaSAtbCBtYXN0ZXIgJiYKLQkgdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL2hlYWRzL2cvaC9pICYmCi0JIHRlc3RfcGF0aF9pc19maWxlIC5naXQvbG9ncy9yZWZzL2hlYWRzL2cvaC9pICYmCi0JIHRlc3RfY21wIGV4cGVjdCAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9nL2gvaScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjaGVja291dCAtYiBnL2gvaSAtbCBzaG91bGQgY3JlYXRlIGEgYnJhbmNoIGFuZCBhIGxvZycgJworCUdJVF9DT01NSVRURVJfREFURT0iMjAwNS0wNS0yNiAyMzozMCIgXAorCWdpdCBjaGVja291dCAtYiBnL2gvaSAtbCBtYXN0ZXIgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L3JlZnMvaGVhZHMvZy9oL2kgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9nL2gvaSAmJgorCXRlc3RfY21wIGV4cGVjdCAuZ2l0L2xvZ3MvcmVmcy9oZWFkcy9nL2gvaQorJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVja291dCAtYiBtYWtlcyByZWZsb2cgYnkgZGVmYXVsdCcgJwogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKQEAgLTczOSw3ICs3ODYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3QgbWlzY29uZmlndXJlZCBhdXRvc2V0dXByZWJhc2UgKG5vIHZhbHVlKScgJwogCWdpdCBjb25maWcgLS11bnNldCBicmFuY2guYXV0b3NldHVwcmViYXNlICYmCi0JZWNobyAiW2JyYW5jaF0gYXV0b3NldHVwcmViYXNlIiA+PiAuZ2l0L2NvbmZpZyAmJgorCWVjaG8gIlticmFuY2hdIGF1dG9zZXR1cHJlYmFzZSIgPj4uZ2l0L2NvbmZpZyAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggJiYKIAlnaXQgY29uZmlnIC0tdW5zZXQgYnJhbmNoLmF1dG9zZXR1cHJlYmFzZQogJwpkaWZmIC0tZ2l0IGEvdC90MzIwMS1icmFuY2gtY29udGFpbnMuc2ggYi90L3QzMjAxLWJyYW5jaC1jb250YWlucy5zaAppbmRleCBmODZmNGJjLi4xNDFiMDYxIDEwMDc1NQotLS0gYS90L3QzMjAxLWJyYW5jaC1jb250YWlucy5zaAorKysgYi90L3QzMjAxLWJyYW5jaC1jb250YWlucy5zaApAQCAtNTUsNiArNTUsMTYgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2ggLS1jb250YWlucyB3aXRoIHBhdHRlcm4gaW1wbGllcyAtLWxpc3QnICcKKworCWdpdCBicmFuY2ggLS1jb250YWlucz1tYXN0ZXIgbWFzdGVyID5hY3R1YWwgJiYKKwl7CisJCWVjaG8gIiAgbWFzdGVyIgorCX0gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKworJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWRlOiBicmFuY2ggLS1tZXJnZWQnICcKIAogCWdpdCBicmFuY2ggLS1tZXJnZWQgPmFjdHVhbCAmJgpAQCAtNjYsNiArNzYsMTYgQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdicmFuY2ggLS1tZXJnZWQgd2l0aCBwYXR0ZXJuIGltcGxpZXMgLS1saXN0JyAnCisKKwlnaXQgYnJhbmNoIC0tbWVyZ2VkPXNpZGUgbWFzdGVyID5hY3R1YWwgJiYKKwl7CisJCWVjaG8gIiAgbWFzdGVyIgorCX0gPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKworJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWRlOiBicmFuY2ggLS1uby1tZXJnZWQnICcKIAogCWdpdCBicmFuY2ggLS1uby1tZXJnZWQgPmFjdHVhbCAmJgpAQCAtOTUsNCArMTE1LDE5IEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoIC0tbm8tbWVyZ2VkIHdpdGggcGF0dGVybiBpbXBsaWVzIC0tbGlzdCcgJworCisJZ2l0IGJyYW5jaCAtLW5vLW1lcmdlZD1tYXN0ZXIgbWFzdGVyID5hY3R1YWwgJiYKKwk+ZXhwZWN0ICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ltcGxpY2l0IC0tbGlzdCBjb25mbGljdHMgd2l0aCBtb2RpZmljYXRpb24gb3B0aW9ucycgJworCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtLWNvbnRhaW5zPW1hc3RlciAtZCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBicmFuY2ggLS1jb250YWlucz1tYXN0ZXIgLW0gZm9vCisKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzMjAzLWJyYW5jaC1vdXRwdXQuc2ggYi90L3QzMjAzLWJyYW5jaC1vdXRwdXQuc2gKaW5kZXggNzZmZTdlMC4uYmE0Zjk4ZSAxMDA3NTUKLS0tIGEvdC90MzIwMy1icmFuY2gtb3V0cHV0LnNoCisrKyBiL3QvdDMyMDMtYnJhbmNoLW91dHB1dC5zaApAQCAtOTQsMTMgKzk0LDEzIEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCAtdiBicmFuY2gqCiAnCiAKLWNhdCA+ZXhwZWN0IDw8J0VPRicKLSogKG5vIGJyYW5jaCkKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBicmFuY2ggc2hvd3MgZGV0YWNoZWQgSEVBRCBwcm9wZXJseScgJworCWNhdCA+ZXhwZWN0IDw8RU9GICYmCisqIChkZXRhY2hlZCBmcm9tICQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUReMCkpCiAgIGJyYW5jaC1vbmUKICAgYnJhbmNoLXR3bwogICBtYXN0ZXIKIEVPRgotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGJyYW5jaCBzaG93cyBkZXRhY2hlZCBIRUFEIHByb3Blcmx5JyAnCiAJZ2l0IGNoZWNrb3V0IEhFQUReMCAmJgogCWdpdCBicmFuY2ggPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCmRpZmYgLS1naXQgYS90L3QzMjEwLXBhY2stcmVmcy5zaCBiL3QvdDMyMTAtcGFjay1yZWZzLnNoCmluZGV4IGNkMDQzNjEuLjFhMjA4MGUgMTAwNzU1Ci0tLSBhL3QvdDMyMTAtcGFjay1yZWZzLnNoCisrKyBiL3QvdDMyMTAtcGFjay1yZWZzLnNoCkBAIC0xMTgsNCArMTE4LDM3IEBACiAJdGVzdF9jbXAgYWxsLW9mLXRoZW0gYWdhaW4KICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhwbGljaXQgcGFjay1yZWZzIHdpdGggZGFuZ2xpbmcgcGFja2VkIHJlZmVyZW5jZScgJworCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAic29vbiB0byBiZSBnYXJiYWdlLWNvbGxlY3RlZCIgJiYKKwlnaXQgcGFjay1yZWZzIC0tYWxsICYmCisJZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgorCWdpdCByZWZsb2cgZXhwaXJlIC0tZXhwaXJlPWFsbCAtLWFsbCAmJgorCWdpdCBwcnVuZSAtLWV4cGlyZT1hbGwgJiYKKwlnaXQgcGFjay1yZWZzIC0tYWxsIDI+cmVzdWx0ICYmCisJdGVzdF9jbXAgL2Rldi9udWxsIHJlc3VsdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGUgcmVmIHdpdGggZGFuZ2xpbmcgcGFja2VkIHZlcnNpb24nICcKKwlnaXQgY2hlY2tvdXQgLWIgbGFtYiAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAiZnV0dXJlIGdhcmJhZ2UiICYmCisJZ2l0IHBhY2stcmVmcyAtLWFsbCAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IHJlZmxvZyBleHBpcmUgLS1leHBpcmU9YWxsIC0tYWxsICYmCisJZ2l0IHBydW5lIC0tZXhwaXJlPWFsbCAmJgorCWdpdCBicmFuY2ggLWQgbGFtYiAyPnJlc3VsdCAmJgorCXRlc3RfY21wIC9kZXYvbnVsbCByZXN1bHQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVsZXRlIHJlZiB3aGlsZSBhbm90aGVyIGRhbmdsaW5nIHBhY2tlZCByZWYnICcKKwlnaXQgYnJhbmNoIGxhbWIgJiYKKwlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gImZ1dHVyZSBnYXJiYWdlIiAmJgorCWdpdCBwYWNrLXJlZnMgLS1hbGwgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCisJZ2l0IHJlZmxvZyBleHBpcmUgLS1leHBpcmU9YWxsIC0tYWxsICYmCisJZ2l0IHBydW5lIC0tZXhwaXJlPWFsbCAmJgorCWdpdCBicmFuY2ggLWQgbGFtYiAyPnJlc3VsdCAmJgorCXRlc3RfY21wIC9kZXYvbnVsbCByZXN1bHQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzMjExLXBlZWwtcmVmLnNoIGIvdC90MzIxMS1wZWVsLXJlZi5zaAppbmRleCBkNGQ3NzkyLi4zYjdjYWNhIDEwMDc1NQotLS0gYS90L3QzMjExLXBlZWwtcmVmLnNoCisrKyBiL3QvdDMyMTEtcGVlbC1yZWYuc2gKQEAgLTYxLDQgKzYxLDEzIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwZWVsZWQgcmVmcyBzdXJ2aXZlIGRlbGV0aW9uIG9mIHBhY2tlZCByZWYnICcKKwlnaXQgcGFjay1yZWZzIC0tYWxsICYmCisJY3AgLmdpdC9wYWNrZWQtcmVmcyBmdWxseS1wZWVsZWQgJiYKKwlnaXQgYnJhbmNoIHlhZGRhICYmCisJZ2l0IHBhY2stcmVmcyAtLWFsbCAmJgorCWdpdCBicmFuY2ggLWQgeWFkZGEgJiYKKwl0ZXN0X2NtcCBmdWxseS1wZWVsZWQgLmdpdC9wYWNrZWQtcmVmcworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MDAtcmViYXNlLnNoIGIvdC90MzQwMC1yZWJhc2Uuc2gKaW5kZXggMWRlMGViZC4uZWJmOTNiMCAxMDA3NTUKLS0tIGEvdC90MzQwMC1yZWJhc2Uuc2gKKysrIGIvdC90MzQwMC1yZWJhc2Uuc2gKQEAgLTQwLDEzICs0MCw2IEBACiAJZWNobyBTaWRlID4+QyAmJgogCWdpdCBhZGQgQyAmJgogCWdpdCBjb21taXQgLW0gIkFkZCBDIiAmJgotCWdpdCBjaGVja291dCAtYiBub25saW5lYXIgbXktdG9waWMtYnJhbmNoICYmCi0JZWNobyBFZGl0ID4+QiAmJgotCWdpdCBhZGQgQiAmJgotCWdpdCBjb21taXQgLW0gIk1vZGlmeSBCIiAmJgotCWdpdCBtZXJnZSBzaWRlICYmCi0JZ2l0IGNoZWNrb3V0IC1iIHVwc3RyZWFtLW1lcmdlZC1ub25saW5lYXIgJiYKLQlnaXQgbWVyZ2UgbWFzdGVyICYmCiAJZ2l0IGNoZWNrb3V0IC1mIG15LXRvcGljLWJyYW5jaCAmJgogCWdpdCB0YWcgdG9waWMKICcKQEAgLTY2LDI2ICs1OSwxNSBAQAogCWdpdCByZWJhc2UgbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZ2FpbnN0IG1hc3RlciB0d2ljZScgJwotCWdpdCByZWJhc2UgbWFzdGVyID5vdXQgJiYKLQl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCBteS10b3BpYy1icmFuY2ggaXMgdXAgdG8gZGF0ZSIgb3V0Ci0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZ2FpbnN0IG1hc3RlciB0d2ljZSB3aXRoIC0tZm9yY2UnICcKLQlnaXQgcmViYXNlIC0tZm9yY2UtcmViYXNlIG1hc3RlciA+b3V0ICYmCi0JdGVzdF9pMThuZ3JlcCAiQ3VycmVudCBicmFuY2ggbXktdG9waWMtYnJhbmNoIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQiIG91dAotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgYWdhaW5zdCBtYXN0ZXIgdHdpY2UgZnJvbSBhbm90aGVyIGJyYW5jaCcgJwotCWdpdCBjaGVja291dCBteS10b3BpYy1icmFuY2heICYmCi0JZ2l0IHJlYmFzZSBtYXN0ZXIgbXktdG9waWMtYnJhbmNoID5vdXQgJiYKLQl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCBteS10b3BpYy1icmFuY2ggaXMgdXAgdG8gZGF0ZSIgb3V0Ci0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBmYXN0LWZvcndhcmQgdG8gbWFzdGVyJyAnCi0JZ2l0IGNoZWNrb3V0IG15LXRvcGljLWJyYW5jaF4gJiYKLQlnaXQgcmViYXNlIG15LXRvcGljLWJyYW5jaCA+b3V0ICYmCi0JdGVzdF9pMThuZ3JlcCAiRmFzdC1mb3J3YXJkZWQgSEVBRCB0byBteS10b3BpYy1icmFuY2giIG91dAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlLCB3aXRoIDxvbnRvPiBhbmQgPHVwc3RyZWFtPiBzcGVjaWZpZWQgYXMgOi9xdXV4ZXJ5JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgYnJhbmNoIC1EIHRvcmViYXNlIiAmJgorCWdpdCBjaGVja291dCAtYiB0b3JlYmFzZSBteS10b3BpYy1icmFuY2heICYmCisJdXBzdHJlYW09JChnaXQgcmV2LXBhcnNlICI6L0FkZCBCIikgJiYKKwlvbnRvPSQoZ2l0IHJldi1wYXJzZSAiOi9BZGQgQSIpICYmCisJZ2l0IHJlYmFzZSAtLW9udG8gJG9udG8gJHVwc3RyZWFtICYmCisJZ2l0IHJlc2V0IC0taGFyZCBteS10b3BpYy1icmFuY2heICYmCisJZ2l0IHJlYmFzZSAtLW9udG8gIjovQWRkIEEiICI6L0FkZCBCIiAmJgorCWdpdCBjaGVja291dCBteS10b3BpYy1icmFuY2gKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGhlIHJlYmFzZSBvcGVyYXRpb24gc2hvdWxkIG5vdCBoYXZlIGRlc3Ryb3llZCBhdXRob3IgaW5mb3JtYXRpb24nICcKQEAgLTEwMSwyOSArODMsMTQgQEAKIAl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBIRUFEQHsxfSkgIT0gJChnaXQgcmV2LXBhcnNlIG15LXRvcGljLWJyYW5jaEB7MX0pCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZnRlciBtZXJnZSBtYXN0ZXInICcKLQlnaXQgcmVzZXQgLS1oYXJkIHRvcGljICYmCi0JZ2l0IG1lcmdlIG1hc3RlciAmJgotCWdpdCByZWJhc2UgbWFzdGVyICYmCi0JISAoZ2l0IHNob3cgfCBncmVwICJeTWVyZ2U6IikKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIG9mIGhpc3Rvcnkgd2l0aCBtZXJnZXMgaXMgbGluZWFyaXplZCcgJwotCWdpdCBjaGVja291dCBub25saW5lYXIgJiYKLQl0ZXN0IDQgPSAkKGdpdCByZXYtbGlzdCBtYXN0ZXIuLiB8IHdjIC1sKSAmJgotCWdpdCByZWJhc2UgbWFzdGVyICYmCi0JdGVzdCAzID0gJChnaXQgcmV2LWxpc3QgbWFzdGVyLi4gfCB3YyAtbCkKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIG9mIGhpc3Rvcnkgd2l0aCBtZXJnZXMgYWZ0ZXIgdXBzdHJlYW0gbWVyZ2UgaXMgbGluZWFyaXplZCcgJwotCWdpdCBjaGVja291dCB1cHN0cmVhbS1tZXJnZWQtbm9ubGluZWFyICYmCi0JdGVzdCA1ID0gJChnaXQgcmV2LWxpc3QgbWFzdGVyLi4gfCB3YyAtbCkgJiYKLQlnaXQgcmViYXNlIG1hc3RlciAmJgotCXRlc3QgMyA9ICQoZ2l0IHJldi1saXN0IG1hc3Rlci4uIHwgd2MgLWwpCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgZnJvbSBhbWJpZ3VvdXMgYnJhbmNoIG5hbWUnICcKKwlnaXQgY2hlY2tvdXQgLWIgdG9waWMgc2lkZSAmJgorCWdpdCByZWJhc2UgbWFzdGVyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhIHNpbmdsZSBtb2RlIGNoYW5nZScgJwogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgYnJhbmNoIC1EIHRvcGljICYmCiAJZWNobyAxID5YICYmCiAJZ2l0IGFkZCBYICYmCiAJdGVzdF90aWNrICYmCkBAIC0xMzgsOCArMTA1LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGlzIG5vdCBicm9rZW4gYnkgZGlmZi5yZW5hbWVzJyAnCi0JZ2l0IGNvbmZpZyBkaWZmLnJlbmFtZXMgY29waWVzICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgZGlmZi5yZW5hbWVzIiAmJgorCXRlc3RfY29uZmlnIGRpZmYucmVuYW1lcyBjb3BpZXMgJiYKIAlnaXQgY2hlY2tvdXQgZmlsZW1vdmUgJiYKIAlHSVRfVFJBQ0U9MSBnaXQgcmViYXNlIGZvcmNlLTN3YXkKICcKQEAgLTE3OSw3ICsxNDUsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1xIGlzIHF1aWV0JyAnCiAJZ2l0IGNoZWNrb3V0IC1iIHF1aWV0IHRvcGljICYmCiAJZ2l0IHJlYmFzZSAtcSBtYXN0ZXIgPm91dHB1dC5vdXQgMj4mMSAmJgotCXRlc3QgISAtcyBvdXRwdXQub3V0CisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5vdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnUmViYXNlIGEgY29tbWl0IHRoYXQgc3ByaW5rbGVzIENScyBpbicgJwpkaWZmIC0tZ2l0IGEvdC90MzQwMS1yZWJhc2UtcGFydGlhbC5zaCBiL3QvdDM0MDEtcmViYXNlLXBhcnRpYWwuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU4ZjQ4MjMuLjAwMDAwMDAKLS0tIGEvdC90MzQwMS1yZWJhc2UtcGFydGlhbC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMDYgWWFubiBEaXJzb24sIGJhc2VkIG9uIHQzNDAwIGJ5IEFtb3MgV2F0ZXJsYW5kCi0jCi0KLXRlc3RfZGVzY3JpcHRpb249J2dpdCByZWJhc2Ugc2hvdWxkIGRldGVjdCBwYXRjaGVzIGludGVncmF0ZWQgdXBzdHJlYW0KLQotVGhpcyB0ZXN0IGNoZXJyeS1waWNrcyBvbmUgbG9jYWwgY2hhbmdlIG9mIHR3byBpbnRvIG1hc3RlciBicmFuY2gsIGFuZAotY2hlY2tzIHRoYXQgZ2l0IHJlYmFzZSBzdWNjZWVkcyB3aXRoIG9ubHkgdGhlIHNlY29uZCBwYXRjaCBpbiB0aGUKLWxvY2FsIGJyYW5jaC4KLScKLS4gLi90ZXN0LWxpYi5zaAotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmVwYXJlIHJlcG9zaXRvcnkgd2l0aCB0b3BpYyBicmFuY2gnICcKLQl0ZXN0X2NvbW1pdCBBICYmCi0JZ2l0IGNoZWNrb3V0IC1iIG15LXRvcGljLWJyYW5jaCAmJgotCXRlc3RfY29tbWl0IEIgJiYKLQl0ZXN0X2NvbW1pdCBDICYmCi0JZ2l0IGNoZWNrb3V0IC1mIG1hc3RlciAmJgotCXRlc3RfY29tbWl0IEEyIEEudAotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdwaWNrIHRvcCBwYXRjaCBmcm9tIHRvcGljIGJyYW5jaCBpbnRvIG1hc3RlcicgJwotCWdpdCBjaGVycnktcGljayBDICYmCi0JZ2l0IGNoZWNrb3V0IC1mIG15LXRvcGljLWJyYW5jaAotJwotCi10ZXN0X2RlYnVnICcKLQlnaXQgY2hlcnJ5IG1hc3RlciAmJgotCWdpdCBmb3JtYXQtcGF0Y2ggLWsgLS1zdGRvdXQgLS1mdWxsLWluZGV4IG1hc3RlciA+L2Rldi9udWxsICYmCi0JZ2l0ayAtLWFsbCAmIHNsZWVwIDEKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIHRvcGljIGJyYW5jaCBhZ2FpbnN0IG5ldyBtYXN0ZXIgYW5kIGNoZWNrIGdpdCBhbSBkaWQgbm90IGdldCBoYWx0ZWQnICcKLQlnaXQgcmViYXNlIG1hc3RlciAmJgotCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5Ci0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLW1lcmdlIHRvcGljIGJyYW5jaCB0aGF0IHdhcyBwYXJ0aWFsbHkgbWVyZ2VkIHVwc3RyZWFtJyAnCi0JZ2l0IHJlc2V0IC0taGFyZCBDICYmCi0JZ2l0IHJlYmFzZSAtLW1lcmdlIG1hc3RlciAmJgotCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLW1lcmdlCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBpZ25vcmVzIGVtcHR5IGNvbW1pdCcgJwotCWdpdCByZXNldCAtLWhhcmQgQSAmJgotCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBlbXB0eSAmJgotCXRlc3RfY29tbWl0IEQgJiYKLQlnaXQgcmViYXNlIEMgJiYKLQl0ZXN0ICIkKGdpdCBsb2cgLS1mb3JtYXQ9JXMgQy4uKSIgPSAiRCIKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0ta2VlcC1lbXB0eScgJwotCWdpdCByZXNldCAtLWhhcmQgRCAmJgotCWdpdCByZWJhc2UgLS1rZWVwLWVtcHR5IEMgJiYKLQl0ZXN0ICIkKGdpdCBsb2cgLS1mb3JtYXQ9JXMgQy4uKSIgPSAiRAotZW1wdHkiCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLWtlZXAtZW1wdHkga2VlcHMgZW1wdHkgZXZlbiBpZiBhbHJlYWR5IGluIHVwc3RyZWFtJyAnCi0JZ2l0IHJlc2V0IC0taGFyZCBBICYmCi0JZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGFsc28tZW1wdHkgJiYKLQlnaXQgcmViYXNlIC0ta2VlcC1lbXB0eSBEICYmCi0JdGVzdCAiJChnaXQgbG9nIC0tZm9ybWF0PSVzIEEuLikiID0gImFsc28tZW1wdHkKLUQKLWVtcHR5IgotJwotCi10ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MDMtcmViYXNlLXNraXAuc2ggYi90L3QzNDAzLXJlYmFzZS1za2lwLnNoCmluZGV4IDgyNjUwMGIuLjM5NjgwMjAgMTAwNzU1Ci0tLSBhL3QvdDM0MDMtcmViYXNlLXNraXAuc2gKKysrIGIvdC90MzQwMy1yZWJhc2Utc2tpcC5zaApAQCAtNjQsMTAgKzY0LDExIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLXNraXAgd2l0aCAtLW1lcmdlJyAnCiAJZ2l0IHJlYmFzZSAtLXNraXAKLQknCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGFuZCByZWZlcmVuY2UgdHJlZXMgZXF1YWwnIFwKLQkndGVzdCAteiAiYGdpdCBkaWZmLXRyZWUgc2tpcC1tZXJnZSBza2lwLXJlZmVyZW5jZWAiJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYW5kIHJlZmVyZW5jZSB0cmVlcyBlcXVhbCcgJworCXRlc3QgLXogImBnaXQgZGlmZi10cmVlIHNraXAtbWVyZ2Ugc2tpcC1yZWZlcmVuY2VgIgorJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb3ZlZCBiYWNrIHRvIGJyYW5jaCBjb3JyZWN0bHknICcKIAl0ZXN0IHJlZnMvaGVhZHMvc2tpcC1tZXJnZSA9ICQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKQpkaWZmIC0tZ2l0IGEvdC90MzQwNC1yZWJhc2UtaW50ZXJhY3RpdmUuc2ggYi90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaAppbmRleCA4NDYyYmUxLi5kNmI0MTQzIDEwMDc1NQotLS0gYS90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaAorKysgYi90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaApAQCAtNDc3LDE5ICs0NzcsMTEgQEAKIAl0ZXN0ICRvbmUgPSAkKGdpdCByZXYtcGFyc2UgSEVBRH4yKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdpZ25vcmUgcGF0Y2ggaWYgaW4gdXBzdHJlYW0nICcKLQlIRUFEPSQoZ2l0IHJldi1wYXJzZSBIRUFEKSAmJgotCWdpdCBjaGVja291dCAtYiBoYXMtY2hlcnJ5LXBpY2tlZCBIRUFEXiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb250aW51ZSB0cmllcyB0byBjb21taXQsIGV2ZW4gZm9yICJlZGl0IicgJwogCWVjaG8gdW5yZWxhdGVkID4gZmlsZTcgJiYKIAlnaXQgYWRkIGZpbGU3ICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSAidW5yZWxhdGVkIGNoYW5nZSIgJiYKLQlnaXQgY2hlcnJ5LXBpY2sgJEhFQUQgJiYKLQlFWFBFQ1RfQ09VTlQ9MSBnaXQgcmViYXNlIC1pICRIRUFEICYmCi0JdGVzdCAkSEVBRCA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb250aW51ZSB0cmllcyB0byBjb21taXQsIGV2ZW4gZm9yICJlZGl0IicgJwogCXBhcmVudD0kKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCiAJdGVzdF90aWNrICYmCiAJRkFLRV9MSU5FUz0iZWRpdCAxIiBnaXQgcmViYXNlIC1pIEhFQUReICYmCkBAIC02OTIsNyArNjg0LDcgQEAKIAl0ZXN0X2NvbW1pdCBuMiAmJgogCXRlc3RfY29tbWl0IG4zICYmCiAJZ2l0IG5vdGVzIGFkZCAtbSJhIG5vdGUiIG4zICYmCi0JZ2l0IHJlYmFzZSAtLW9udG8gbjEgbjIgJiYKKwlnaXQgcmViYXNlIC1pIC0tb250byBuMSBuMiAmJgogCXRlc3QgImEgbm90ZSIgPSAiJChnaXQgbm90ZXMgc2hvdyBIRUFEKSIKICcKIApAQCAtOTM0LDQgKzkyNiwyOCBAQAogCXRlc3QgTCA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1uZSBcJHApCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSByZXNwZWN0cyBjb3JlLmNvbW1lbnRjaGFyJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCBFXjAgJiYKKwl0ZXN0X2NvbmZpZyBjb3JlLmNvbW1lbnRjaGFyICJcXCIgJiYKKwl3cml0ZV9zY3JpcHQgcmVtb3ZlLWFsbC1idXQtZmlyc3Quc2ggPDwtXEVPRiAmJgorCXNlZCAtZSAiMixcJHMvXi9cXFxcLyIgIiQxIiA+IiQxLnRtcCIgJiYKKwltdiAiJDEudG1wIiAiJDEiCisJRU9GCisJdGVzdF9zZXRfZWRpdG9yICIkKHB3ZCkvcmVtb3ZlLWFsbC1idXQtZmlyc3Quc2giICYmCisJZ2l0IHJlYmFzZSAtaSBCICYmCisJdGVzdCBCID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReIHwgc2VkIC1uZSBcJHApCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSwgd2l0aCA8b250bz4gYW5kIDx1cHN0cmVhbT4gc3BlY2lmaWVkIGFzIDovcXV1eGVyeScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGJyYW5jaCAtRCB0b3JlYmFzZSIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgdG9yZWJhc2UgYnJhbmNoMSAmJgorCXVwc3RyZWFtPSQoZ2l0IHJldi1wYXJzZSAiOi9KIikgJiYKKwlvbnRvPSQoZ2l0IHJldi1wYXJzZSAiOi9BIikgJiYKKwlnaXQgcmViYXNlIC0tb250byAkb250byAkdXBzdHJlYW0gJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGJyYW5jaDEgJiYKKwlnaXQgcmViYXNlIC0tb250byAiOi9BIiAiOi9KIiAmJgorCWdpdCBjaGVja291dCBicmFuY2gxCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQwNi1yZWJhc2UtbWVzc2FnZS5zaCBiL3QvdDM0MDYtcmViYXNlLW1lc3NhZ2Uuc2gKaW5kZXggZTZhOWEwZC4uMDM5MmUzNiAxMDA3NTUKLS0tIGEvdC90MzQwNi1yZWJhc2UtbWVzc2FnZS5zaAorKysgYi90L3QzNDA2LXJlYmFzZS1tZXNzYWdlLnNoCkBAIC00LDI3ICs0LDE3IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi1xdWlja19vbmUgKCkgewotCWVjaG8gIiQxIiA+ImZpbGUkMSIgJiYKLQlnaXQgYWRkICJmaWxlJDEiICYmCi0JdGVzdF90aWNrICYmCi0JZ2l0IGNvbW1pdCAtbSAiJDEiCi19Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCXRlc3RfY29tbWl0IE8gZmlsZU8gJiYKKwl0ZXN0X2NvbW1pdCBYIGZpbGVYICYmCisJdGVzdF9jb21taXQgQSBmaWxlQSAmJgorCXRlc3RfY29tbWl0IEIgZmlsZUIgJiYKKwl0ZXN0X2NvbW1pdCBZIGZpbGVZICYmCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwotCXF1aWNrX29uZSBPICYmCi0JZ2l0IGJyYW5jaCB0b3BpYyAmJgotCXF1aWNrX29uZSBYICYmCi0JcXVpY2tfb25lIEEgJiYKLQlxdWlja19vbmUgQiAmJgotCXF1aWNrX29uZSBZICYmCi0KLQlnaXQgY2hlY2tvdXQgdG9waWMgJiYKLQlxdWlja19vbmUgQSAmJgotCXF1aWNrX29uZSBCICYmCi0JcXVpY2tfb25lIFogJiYKKwlnaXQgY2hlY2tvdXQgLWIgdG9waWMgTyAmJgorCWdpdCBjaGVycnktcGljayBBIEIgJiYKKwl0ZXN0X2NvbW1pdCBaIGZpbGVaICYmCiAJZ2l0IHRhZyBzdGFydAotCiAnCiAKIGNhdCA+ZXhwZWN0IDw8XEVPRgpAQCAtMzQsMTIgKzI0LDMyIEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1tJyAnCi0KIAlnaXQgcmViYXNlIC1tIG1hc3RlciA+cmVwb3J0ICYmCiAJc2VkIC1uIC1lICIvXkFscmVhZHkgYXBwbGllZDogL3AiIFwKIAkJLWUgIi9eQ29tbWl0dGVkOiAvcCIgcmVwb3J0ID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZ2FpbnN0IG1hc3RlciB0d2ljZScgJworCWdpdCByZWJhc2UgbWFzdGVyID5vdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCB0b3BpYyBpcyB1cCB0byBkYXRlIiBvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlIHdpdGggLS1mb3JjZScgJworCWdpdCByZWJhc2UgLS1mb3JjZS1yZWJhc2UgbWFzdGVyID5vdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCB0b3BpYyBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkIiBvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlIGZyb20gYW5vdGhlciBicmFuY2gnICcKKwlnaXQgY2hlY2tvdXQgdG9waWNeICYmCisJZ2l0IHJlYmFzZSBtYXN0ZXIgdG9waWMgPm91dCAmJgorCXRlc3RfaTE4bmdyZXAgIkN1cnJlbnQgYnJhbmNoIHRvcGljIGlzIHVwIHRvIGRhdGUiIG91dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgZmFzdC1mb3J3YXJkIHRvIG1hc3RlcicgJworCWdpdCBjaGVja291dCB0b3BpY14gJiYKKwlnaXQgcmViYXNlIHRvcGljID5vdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJGYXN0LWZvcndhcmRlZCBIRUFEIHRvIHRvcGljIiBvdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0tc3RhdCcgJwpkaWZmIC0tZ2l0IGEvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoIGIvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoCmluZGV4IDZkZTRlMjIuLjJlMGMzNjQgMTAwNzU1Ci0tLSBhL3QvdDM0MDktcmViYXNlLXByZXNlcnZlLW1lcmdlcy5zaAorKysgYi90L3QzNDA5LXJlYmFzZS1wcmVzZXJ2ZS1tZXJnZXMuc2gKQEAgLTExLDE0ICsxMSw2IEBACiBHSVRfQVVUSE9SX0VNQUlMPWJvZ3VzX2VtYWlsX2FkZHJlc3MKIGV4cG9ydCBHSVRfQVVUSE9SX0VNQUlMCiAKLSMgQ2xvbmUgMSAodHJpdmlhbCBtZXJnZSk6Ci0jCi0jIEExLS1BMiAgPC0tIG9yaWdpbi9tYXN0ZXIKLSMgIFwgICBcCi0jICAgQjEtLU0gIDwtLSB0b3BpYwotIyAgICBcCi0jICAgICBCMiAgPC0tIG9yaWdpbi90b3BpYwotIwogIyBDbG9uZSAyIChjb25mbGljdGluZyBtZXJnZSk6CiAjCiAjIEExLS1BMi0tQjMgICA8LS0gb3JpZ2luL21hc3RlcgpAQCAtMzYsMTYgKzI4LDYgQEAKICMgICAgIFwtLUEzICAgIDwtLSB0b3BpYzIKICMgICAgICBcCiAjICAgICAgIEIyICAgICA8LS0gb3JpZ2luL3RvcGljCi0jCi0jIENsb25lIDQgKG1lcmdlIHVzaW5nIHNlY29uZCBwYXJlbnQgYXMgYmFzZSk6Ci0jCi0jIEExLS1BMi0tQjMgICA8LS0gb3JpZ2luL21hc3RlcgotIyAgXAotIyAgIEIxLS1BMy0tTSAgPC0tIHRvcGljCi0jICAgIFwgICAgIC8KLSMgICAgIFwtLUE0ICAgIDwtLSB0b3BpYzIKLSMgICAgICBcCi0jICAgICAgIEIyICAgICA8LS0gb3JpZ2luL3RvcGljCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGZvciBtZXJnZS1wcmVzZXJ2aW5nIHJlYmFzZScgXAogCSdlY2hvIEZpcnN0ID4gQSAmJgpAQCAtNTgsMjAgKzQwLDYgQEAKIAlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyICYmCiAJZWNobyBUaGlyZCA+PiBBICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAiTW9kaWZ5IEEyIiAmJgotCi0JZ2l0IGNsb25lIC4vLiBjbG9uZTEgJiYKLQkoY2QgY2xvbmUxICYmCi0JZ2l0IGNoZWNrb3V0IC1iIHRvcGljIG9yaWdpbi90b3BpYyAmJgotCWdpdCBtZXJnZSBvcmlnaW4vbWFzdGVyCi0JKSAmJgotCi0JZ2l0IGNsb25lIC4vLiBjbG9uZTQgJiYKLQkoCi0JCWNkIGNsb25lNCAmJgotCQlnaXQgY2hlY2tvdXQgLWIgdG9waWMgb3JpZ2luL3RvcGljICYmCi0JCWdpdCBtZXJnZSBvcmlnaW4vbWFzdGVyCi0JKSAmJgotCiAJZWNobyBGaWZ0aCA+IEIgJiYKIAlnaXQgYWRkIEIgJiYKIAlnaXQgY29tbWl0IC1tICJBZGQgZGlmZmVyZW50IEIiICYmCkBAIC0xMDEsMTYgKzY5LDYgQEAKIAlnaXQgY29tbWl0IC1hIC1tICJNb2RpZnkgQjIiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtcCBmYWtlcyBpbnRlcmFjdGl2ZSByZWJhc2UnICcKLQkoCi0JY2QgY2xvbmUxICYmCi0JZ2l0IGZldGNoICYmCi0JZ2l0IHJlYmFzZSAtcCBvcmlnaW4vdG9waWMgJiYKLQl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTW9kaWZ5IEEiIHwgd2MgLWwpICYmCi0JdGVzdCAxID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgLS1wcmV0dHk9b25lbGluZSB8IGdyZXAgIk1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggIiB8IHdjIC1sKQotCSkKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb250aW51ZSB3b3JrcyBhZnRlciBhIGNvbmZsaWN0JyAnCiAJKAogCWNkIGNsb25lMiAmJgpAQCAtMTM4LDE1ICs5Niw0IEBACiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLXAgd29ya3Mgd2hlbiBiYXNlIGluc2lkZSBzZWNvbmQgcGFyZW50JyAnCi0JKAotCWNkIGNsb25lNCAmJgotCWdpdCBmZXRjaCAmJgotCWdpdCByZWJhc2UgLXAgSEVBRF4yICYmCi0JdGVzdCAxID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgLS1wcmV0dHk9b25lbGluZSB8IGdyZXAgIk1vZGlmeSBBIiB8IHdjIC1sKSAmJgotCXRlc3QgMSA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIC0tcHJldHR5PW9uZWxpbmUgfCBncmVwICJNb2RpZnkgQiIgfCB3YyAtbCkgJiYKLQl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAiIHwgd2MgLWwpCi0JKQotJwotCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MjAtcmViYXNlLWF1dG9zdGFzaC5zaCBiL3QvdDM0MjAtcmViYXNlLWF1dG9zdGFzaC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MGViMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MzQyMC1yZWJhc2UtYXV0b3N0YXNoLnNoCkBAIC0wLDAgKzEsMTcwIEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDEzIFJhbWt1bWFyIFJhbWFjaGFuZHJhCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCByZWJhc2UgLS1hdXRvc3Rhc2ggdGVzdHMnCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJZWNobyBoZWxsby13b3JsZCA+ZmlsZTAgJiYKKwlnaXQgYWRkIC4gJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tICJpbml0aWFsIGNvbW1pdCIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgZmVhdHVyZS1icmFuY2ggJiYKKwllY2hvIGFub3RoZXItaGVsbG8gPmZpbGUxICYmCisJZWNobyBnb29kYnllID5maWxlMiAmJgorCWdpdCBhZGQgLiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gInNlY29uZCBjb21taXQiICYmCisJZWNobyBmaW5hbC1nb29kYnllID5maWxlMyAmJgorCWdpdCBhZGQgLiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gInRoaXJkIGNvbW1pdCIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgdW5yZWxhdGVkLW9udG8tYnJhbmNoIG1hc3RlciAmJgorCWVjaG8gdW5yZWxhdGVkID5maWxlNCAmJgorCWdpdCBhZGQgLiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gInVucmVsYXRlZCBjb21taXQiICYmCisJZ2l0IGNoZWNrb3V0IC1iIHJlbGF0ZWQtb250by1icmFuY2ggbWFzdGVyICYmCisJZWNobyBjb25mbGljdGluZy1jaGFuZ2UgPmZpbGUyICYmCisJZ2l0IGFkZCAuICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAicmVsYXRlZCBjb21taXQiCisnCisKK3Rlc3RyZWJhc2UoKSB7CisJdHlwZT0kMQorCWRvdGVzdD0kMgorCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlJHR5cGU6IGRpcnR5IHdvcmt0cmVlLCBub24tY29uZmxpY3RpbmcgcmViYXNlIiAnCisJCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdpdCBjaGVja291dCAtYiByZWJhc2VkLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNoICYmCisJCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1EIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggJiYKKwkJZWNobyBkaXJ0eSA+PmZpbGUzICYmCisJCWdpdCByZWJhc2UkdHlwZSB1bnJlbGF0ZWQtb250by1icmFuY2ggJiYKKwkJZ3JlcCB1bnJlbGF0ZWQgZmlsZTQgJiYKKwkJZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2gKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UkdHlwZTogZGlydHkgaW5kZXgsIG5vbi1jb25mbGljdGluZyByZWJhc2UiICcKKwkJdGVzdF9jb25maWcgcmViYXNlLmF1dG9zdGFzaCB0cnVlICYmCisJCWdpdCByZXNldCAtLWhhcmQgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggZmVhdHVyZS1icmFuY2ggJiYKKwkJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCAmJgorCQllY2hvIGRpcnR5ID4+ZmlsZTMgJiYKKwkJZ2l0IGFkZCBmaWxlMyAmJgorCQlnaXQgcmViYXNlJHR5cGUgdW5yZWxhdGVkLW9udG8tYnJhbmNoICYmCisJCWdyZXAgdW5yZWxhdGVkIGZpbGU0ICYmCisJCWdyZXAgZGlydHkgZmlsZTMgJiYKKwkJZ2l0IGNoZWNrb3V0IGZlYXR1cmUtYnJhbmNoCisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlJHR5cGU6IGNvbmZsaWN0aW5nIHJlYmFzZSIgJworCQl0ZXN0X2NvbmZpZyByZWJhc2UuYXV0b3N0YXNoIHRydWUgJiYKKwkJZ2l0IHJlc2V0IC0taGFyZCAmJgorCQlnaXQgY2hlY2tvdXQgLWIgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCBmZWF0dXJlLWJyYW5jaCAmJgorCQl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IGJyYW5jaCAtRCByZWJhc2VkLWZlYXR1cmUtYnJhbmNoICYmCisJCWVjaG8gZGlydHkgPj5maWxlMyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlJHR5cGUgcmVsYXRlZC1vbnRvLWJyYW5jaCAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSAkZG90ZXN0L2F1dG9zdGFzaCAmJgorCQkhIGdyZXAgZGlydHkgZmlsZTMgJiYKKwkJcm0gLXJmICRkb3Rlc3QgJiYKKwkJZ2l0IHJlc2V0IC0taGFyZCAmJgorCQlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2gKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UkdHlwZTogLS1jb250aW51ZSIgJworCQl0ZXN0X2NvbmZpZyByZWJhc2UuYXV0b3N0YXNoIHRydWUgJiYKKwkJZ2l0IHJlc2V0IC0taGFyZCAmJgorCQlnaXQgY2hlY2tvdXQgLWIgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCBmZWF0dXJlLWJyYW5jaCAmJgorCQl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IGJyYW5jaCAtRCByZWJhc2VkLWZlYXR1cmUtYnJhbmNoICYmCisJCWVjaG8gZGlydHkgPj5maWxlMyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlJHR5cGUgcmVsYXRlZC1vbnRvLWJyYW5jaCAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSAkZG90ZXN0L2F1dG9zdGFzaCAmJgorCQkhIGdyZXAgZGlydHkgZmlsZTMgJiYKKwkJZWNobyAiY29uZmxpY3RpbmctcGx1cy1nb29kYnllIiA+ZmlsZTIgJiYKKwkJZ2l0IGFkZCBmaWxlMiAmJgorCQlnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgJGRvdGVzdC9hdXRvc3Rhc2ggJiYKKwkJZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2gKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UkdHlwZTogLS1za2lwIiAnCisJCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdpdCBjaGVja291dCAtYiByZWJhc2VkLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNoICYmCisJCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1EIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggJiYKKwkJZWNobyBkaXJ0eSA+PmZpbGUzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UkdHlwZSByZWxhdGVkLW9udG8tYnJhbmNoICYmCisJCXRlc3RfcGF0aF9pc19maWxlICRkb3Rlc3QvYXV0b3N0YXNoICYmCisJCSEgZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlnaXQgcmViYXNlIC0tc2tpcCAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAkZG90ZXN0L2F1dG9zdGFzaCAmJgorCQlncmVwIGRpcnR5IGZpbGUzICYmCisJCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSR0eXBlOiAtLWFib3J0IiAnCisJCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdpdCBjaGVja291dCAtYiByZWJhc2VkLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNoICYmCisJCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1EIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggJiYKKwkJZWNobyBkaXJ0eSA+PmZpbGUzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UkdHlwZSByZWxhdGVkLW9udG8tYnJhbmNoICYmCisJCXRlc3RfcGF0aF9pc19maWxlICRkb3Rlc3QvYXV0b3N0YXNoICYmCisJCSEgZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlnaXQgcmViYXNlIC0tYWJvcnQgJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgJGRvdGVzdC9hdXRvc3Rhc2ggJiYKKwkJZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2gKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UkdHlwZTogbm9uLWNvbmZsaWN0aW5nIHJlYmFzZSwgY29uZmxpY3Rpbmcgc3Rhc2giICcKKwkJdGVzdF9jb25maWcgcmViYXNlLmF1dG9zdGFzaCB0cnVlICYmCisJCWdpdCByZXNldCAtLWhhcmQgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggZmVhdHVyZS1icmFuY2ggJiYKKwkJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCAmJgorCQllY2hvIGRpcnR5ID5maWxlNCAmJgorCQlnaXQgYWRkIGZpbGU0ICYmCisJCWdpdCByZWJhc2UkdHlwZSB1bnJlbGF0ZWQtb250by1icmFuY2ggJiYKKwkJdGVzdF9wYXRoX2lzX21pc3NpbmcgJGRvdGVzdCAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdyZXAgdW5yZWxhdGVkIGZpbGU0ICYmCisJCSEgZ3JlcCBkaXJ0eSBmaWxlNCAmJgorCQlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2ggJiYKKwkJZ2l0IHN0YXNoIHBvcCAmJgorCQlncmVwIGRpcnR5IGZpbGU0CisJJworfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2U6IGZhc3QtZm9yd2FyZCByZWJhc2UiICcKKwl0ZXN0X2NvbmZpZyByZWJhc2UuYXV0b3N0YXNoIHRydWUgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNoZWNrb3V0IC1iIGJlaGluZC1mZWF0dXJlLWJyYW5jaCBmZWF0dXJlLWJyYW5jaH4xICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgYmVoaW5kLWZlYXR1cmUtYnJhbmNoICYmCisJZWNobyBkaXJ0eSA+PmZpbGUxICYmCisJZ2l0IHJlYmFzZSBmZWF0dXJlLWJyYW5jaCAmJgorCWdyZXAgZGlydHkgZmlsZTEgJiYKKwlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2gKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlOiBub29wIHJlYmFzZSIgJworCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgLWIgc2FtZS1mZWF0dXJlLWJyYW5jaCBmZWF0dXJlLWJyYW5jaCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1EIHNhbWUtZmVhdHVyZS1icmFuY2ggJiYKKwllY2hvIGRpcnR5ID4+ZmlsZTEgJiYKKwlnaXQgcmViYXNlIGZlYXR1cmUtYnJhbmNoICYmCisJZ3JlcCBkaXJ0eSBmaWxlMSAmJgorCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorJworCit0ZXN0cmViYXNlICIiIC5naXQvcmViYXNlLWFwcGx5Cit0ZXN0cmViYXNlICIgLS1tZXJnZSIgLmdpdC9yZWJhc2UtbWVyZ2UKK3Rlc3RyZWJhc2UgIiAtLWludGVyYWN0aXZlIiAuZ2l0L3JlYmFzZS1tZXJnZQorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MjEtcmViYXNlLXRvcG9sb2d5LWxpbmVhci5zaCBiL3QvdDM0MjEtcmViYXNlLXRvcG9sb2d5LWxpbmVhci5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YzU1Y2JhCi0tLSAvZGV2L251bGwKKysrIGIvdC90MzQyMS1yZWJhc2UtdG9wb2xvZ3ktbGluZWFyLnNoCkBAIC0wLDAgKzEsMzUwIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nYmFzaWMgcmViYXNlIHRvcG9sb2d5IHRlc3RzJworLiAuL3Rlc3QtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1yZWJhc2Uuc2gKKworIyBhLS0tYi0tLWMKKyMgICAgICBcCisjICAgICAgIGQtLS1lCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCXRlc3RfY29tbWl0IGEgJiYKKwl0ZXN0X2NvbW1pdCBiICYmCisJdGVzdF9jb21taXQgYyAmJgorCWdpdCBjaGVja291dCBiICYmCisJdGVzdF9jb21taXQgZCAmJgorCXRlc3RfY29tbWl0IGUKKycKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInNpbXBsZSByZWJhc2UgJCoiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogYyBlICYmCisJCXRlc3RfY21wX3JldiBjIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBlJyBjLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIGlzIG5vLW9wIGlmIHVwc3RyZWFtIGlzIGFuIGFuY2VzdG9yIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGIgZSAmJgorCQl0ZXN0X2NtcF9yZXYgZSBIRUFECisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtZiByZXdyaXRlcyBldmVuIGlmIHVwc3RyZWFtIGlzIGFuIGFuY2VzdG9yIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIC1mIGIgZSAmJgorCQkhIHRlc3RfY21wX3JldiBlIEhFQUQgJiYKKwkJdGVzdF9jbXBfcmV2IGIgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdkIGUnIGIuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogZmFzdC1mb3J3YXJkcyBmcm9tIGFuY2VzdG9yIG9mIHVwc3RyZWFtIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGUgYiAmJgorCQl0ZXN0X2NtcF9yZXYgZSBIRUFECisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKworIyAgICAgICBmCisjICAgICAgLworIyBhLS0tYi0tLWMtLS1nLS0taAorIyAgICAgIFwKKyMgICAgICAgZC0tLWdwLS1pCisjCisjIGdwID0gY2hlcnJ5LXBpY2tlZCBnCisjIGggPSByZXZlcnRlZCBnCisjCisjIFJldmVydGVkIHBhdGNoZXMgYXJlIHRoZXJlIGZvciB0ZXN0cyB0byBiZSBhYmxlIHRvIGNoZWNrIGlmIGEgY29tbWl0CisjIHRoYXQgaW50cm9kdWNlZCB0aGUgc2FtZSBjaGFuZ2UgYXMgYW5vdGhlciBjb21taXQgaXMKKyMgZHJvcHBlZC4gV2l0aG91dCByZXZlcnRlZCBjb21taXRzLCB3ZSBjb3VsZCBnZXQgZmFsc2UgcG9zaXRpdmVzCisjIGJlY2F1c2UgYXBwbHlpbmcgdGhlIHBhdGNoIHN1Y2NlZWRzLCBidXQgc2ltcGx5IHJlc3VsdHMgaW4gbm8KKyMgY2hhbmdlcy4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIGxpbmVhciBoaXN0b3J5IGZvciByYW5nZSBzZWxlY3Rpb24gdGVzdHMnICcKKwlnaXQgY2hlY2tvdXQgYyAmJgorCXRlc3RfY29tbWl0IGcgJiYKKwlyZXZlcnQgaCBnICYmCisJZ2l0IGNoZWNrb3V0IGQgJiYKKwljaGVycnlfcGljayBncCBnICYmCisJdGVzdF9jb21taXQgaSAmJgorCWdpdCBjaGVja291dCBiICYmCisJdGVzdF9jb21taXQgZgorJworCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIGRyb3BzIHBhdGNoZXMgaW4gdXBzdHJlYW0iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogaCBpICYmCisJCXRlc3RfY21wX3JldiBoIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBpJyBoLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIGNhbiBkcm9wIGxhc3QgcGF0Y2ggaWYgaW4gdXBzdHJlYW0iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogaCBncCAmJgorCQl0ZXN0X2NtcF9yZXYgaCBIRUFEXiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCcgaC4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtLW9udG8gZHJvcHMgcGF0Y2hlcyBpbiB1cHN0cmVhbSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiAtLW9udG8gZiBoIGkgJiYKKwkJdGVzdF9jbXBfcmV2IGYgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdkIGknIGYuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogLS1vbnRvIGRvZXMgbm90IGRyb3AgcGF0Y2hlcyBpbiBvbnRvIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIC0tb250byBoIGYgaSAmJgorCQl0ZXN0X2NtcF9yZXYgaCBIRUFEfjMgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgZ3AgaScgaC4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKworIyBhLS0tYi0tLWMtLS1qIQorIyAgICAgIFwKKyMgICAgICAgZC0tLWshLS1sCisjCisjICEgPSBlbXB0eQordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgb2YgbGluZWFyIGhpc3RvcnkgZm9yIGVtcHR5IGNvbW1pdCB0ZXN0cycgJworCWdpdCBjaGVja291dCBjICYmCisJbWFrZV9lbXB0eSBqICYmCisJZ2l0IGNoZWNrb3V0IGQgJiYKKwltYWtlX2VtcHR5IGsgJiYKKwl0ZXN0X2NvbW1pdCBsCisnCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogZHJvcHMgZW1wdHkgY29tbWl0IiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGMgbCAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgbCcgYy4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtLWtlZXAtZW1wdHkiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1rZWVwLWVtcHR5IGMgbCAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFEfjMgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgayBsJyBjLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIC0ta2VlcC1lbXB0eSBrZWVwcyBlbXB0eSBldmVuIGlmIGFscmVhZHkgaW4gdXBzdHJlYW0iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1rZWVwLWVtcHR5IGogbCAmJgorCQl0ZXN0X2NtcF9yZXYgaiBIRUFEfjMgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgayBsJyBqLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLW0KK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1pCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtcAorCisjICAgICAgIG0KKyMgICAgICAvCisjIGEtLS1iLS0tYy0tLWcKKyMKKyMgeC0tLXktLS1icAorIworIyBicCA9IGNoZXJyeS1waWNrZWQgYgorIyBtID0gcmV2ZXJ0ZWQgYgorIworIyBSZXZlcnRlZCBwYXRjaGVzIGFyZSB0aGVyZSBmb3IgdGVzdHMgdG8gYmUgYWJsZSB0byBjaGVjayBpZiBhIGNvbW1pdAorIyB0aGF0IGludHJvZHVjZWQgdGhlIHNhbWUgY2hhbmdlIGFzIGFub3RoZXIgY29tbWl0IGlzCisjIGRyb3BwZWQuIFdpdGhvdXQgcmV2ZXJ0ZWQgY29tbWl0cywgd2UgY291bGQgZ2V0IGZhbHNlIHBvc2l0aXZlcworIyBiZWNhdXNlIGFwcGx5aW5nIHRoZSBwYXRjaCBzdWNjZWVkcywgYnV0IHNpbXBseSByZXN1bHRzIGluIG5vCisjIGNoYW5nZXMuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBvZiBsaW5lYXIgaGlzdG9yeSBmb3IgdGVzdCBpbnZvbHZpbmcgcm9vdCcgJworCWdpdCBjaGVja291dCBiICYmCisJcmV2ZXJ0IG0gYiAmJgorCWdpdCBjaGVja291dCAtLW9ycGhhbiBkaXNqb2ludCAmJgorCWdpdCBybSAtcmYgLiAmJgorCXRlc3RfY29tbWl0IHggJiYKKwl0ZXN0X2NvbW1pdCB5ICYmCisJY2hlcnJ5X3BpY2sgYnAgYgorJworCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIC0tb250byAtLXJvb3QiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1vbnRvIGMgLS1yb290IHkgJiYKKwkJdGVzdF9jbXBfcmV2IGMgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICd4IHknIGMuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogd2l0aG91dCAtLW9udG8gLS1yb290IHdpdGggZGlzam9pbnQgaGlzdG9yeSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiBjIHkgJiYKKwkJdGVzdF9jbXBfcmV2IGMgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICd4IHknIGMuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogLS1vbnRvIC0tcm9vdCBkcm9wcyBwYXRjaCBpbiBvbnRvIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIC0tb250byBtIC0tcm9vdCBicCAmJgorCQl0ZXN0X2NtcF9yZXYgbSBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ3ggeScgbS4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtLW9udG8gLS1yb290IHdpdGggbWVyZ2UtYmFzZSBkb2VzIG5vdCBnbyB0byByb290IiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIC0tb250byBtIC0tcm9vdCBnICYmCisJCXRlc3RfY21wX3JldiBtIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnYyBnJyBtLi4KKwkiCit9CisKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogd2l0aG91dCAtLW9udG8gLS1yb290IHdpdGggZGlzam9pbnQgaGlzdG9yeSBkcm9wcyBwYXRjaCBpbiBvbnRvIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIG0gYnAgJiYKKwkJdGVzdF9jbXBfcmV2IG0gSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICd4IHknIG0uLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogLS1yb290IG9uIGxpbmVhciBoaXN0b3J5IGlzIGEgbm8tb3AiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1yb290IGMgJiYKKwkJdGVzdF9jbXBfcmV2IGMgSEVBRAorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogLWYgLS1yb290IG9uIGxpbmVhciBoaXN0b3J5IGNhdXNlcyByZS13cml0ZSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiAtZiAtLXJvb3QgYyAmJgorCQkhIHRlc3RfY21wX3JldiBhIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnYSBiIGMnIEhFQUQKKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MjUtcmViYXNlLXRvcG9sb2d5LW1lcmdlcy5zaCBiL3QvdDM0MjUtcmViYXNlLXRvcG9sb2d5LW1lcmdlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDE5NWZiCi0tLSAvZGV2L251bGwKKysrIGIvdC90MzQyNS1yZWJhc2UtdG9wb2xvZ3ktbWVyZ2VzLnNoCkBAIC0wLDAgKzEsMjU4IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ncmViYXNlIHRvcG9sb2d5IHRlc3RzIHdpdGggbWVyZ2VzJworLiAuL3Rlc3QtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkiL2xpYi1yZWJhc2Uuc2gKKwordGVzdF9yZXZpc2lvbl9zdWJqZWN0cyAoKSB7CisJZXhwZWN0ZWQ9IiQxIgorCXNoaWZ0CisJc2V0IC0tICQoZ2l0IGxvZyAtLWZvcm1hdD0lcyAtLW5vLXdhbGs9dW5zb3J0ZWQgIiRAIikKKwl0ZXN0ICIkZXhwZWN0ZWQiID0gIiQqIgorfQorCisjIGEtLS1iLS0tLS0tLS0tLS1jCisjICAgICAgXCAgICAgICAgICAgXAorIyAgICAgICBkLS0tLS0tLWUgICBcCisjICAgICAgICBcICAgICAgIFwgICBcCisjICAgICAgICAgbi0tLW8tLS13LS0tdgorIyAgICAgICAgICAgICAgXAorIyAgICAgICAgICAgICAgIHoKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIG5vbi1saW5lYXItaGlzdG9yeScgJworCXRlc3RfY29tbWl0IGEgJiYKKwl0ZXN0X2NvbW1pdCBiICYmCisJdGVzdF9jb21taXQgYyAmJgorCWdpdCBjaGVja291dCBiICYmCisJdGVzdF9jb21taXQgZCAmJgorCXRlc3RfY29tbWl0IGUKKworCWdpdCBjaGVja291dCBjICYmCisJdGVzdF9jb21taXQgZyAmJgorCXJldmVydCBoIGcgJiYKKwlnaXQgY2hlY2tvdXQgZCAmJgorCWNoZXJyeV9waWNrIGdwIGcgJiYKKwl0ZXN0X2NvbW1pdCBpICYmCisJZ2l0IGNoZWNrb3V0IGIgJiYKKwl0ZXN0X2NvbW1pdCBmCisKKwlnaXQgY2hlY2tvdXQgZCAmJgorCXRlc3RfY29tbWl0IG4gJiYKKwl0ZXN0X2NvbW1pdCBvICYmCisJdGVzdF9tZXJnZSB3IGUgJiYKKwl0ZXN0X21lcmdlIHYgYyAmJgorCWdpdCBjaGVja291dCBvICYmCisJdGVzdF9jb21taXQgegorJworCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIGFmdGVyIG1lcmdlIGZyb20gdXBzdHJlYW0iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogZSB3ICYmCisJCXRlc3RfY21wX3JldiBlIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnbiBvJyBlLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwlleHBlY3RlZD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIG9mIG5vbi1saW5lYXIgaGlzdG9yeSBpcyBsaW5lYXJpemVkIGluIHBsYWNlIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGQgdyAmJgorCQl0ZXN0X2NtcF9yZXYgZCBIRUFEfjMgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgIlwnIiRleHBlY3RlZCJcJyIgZC4uCisJIgorfQorI1RPRE86IG1ha2Ugb3JkZXIgY29uc2lzdGVudCBhY3Jvc3MgYWxsIGZsYXZvcnMgb2YgcmViYXNlCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnZSBuIG8nICcnCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnZSBuIG8nIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnbiBvIGUnIC1pCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwlleHBlY3RlZD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIG9mIG5vbi1saW5lYXIgaGlzdG9yeSBpcyBsaW5lYXJpemVkIHVwc3RyZWFtIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGMgdyAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFEfjQgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgIlwnIiRleHBlY3RlZCJcJyIgYy4uCisJIgorfQorI1RPRE86IG1ha2Ugb3JkZXIgY29uc2lzdGVudCBhY3Jvc3MgYWxsIGZsYXZvcnMgb2YgcmViYXNlCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnZCBlIG4gbycgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICdkIGUgbiBvJyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJ2QgbiBvIGUnIC1pCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwlleHBlY3RlZD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIG9mIG5vbi1saW5lYXIgaGlzdG9yeSB3aXRoIG1lcmdlcyBhZnRlciB1cHN0cmVhbSBtZXJnZSBpcyBsaW5lYXJpemVkIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGMgdiAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFEfjQgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgIlwnIiRleHBlY3RlZCJcJyIgYy4uCisJIgorfQorI1RPRE86IG1ha2Ugb3JkZXIgY29uc2lzdGVudCBhY3Jvc3MgYWxsIGZsYXZvcnMgb2YgcmViYXNlCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnZCBlIG4gbycgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICdkIGUgbiBvJyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJ2QgbiBvIGUnIC1pCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSAtcCBpcyBuby1vcCBpbiBub24tbGluZWFyIGhpc3RvcnkiICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIGQgdyAmJgorCXRlc3RfY21wX3JldiB3IEhFQUQKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIGlzIG5vLW9wIHdoZW4gYmFzZSBpbnNpZGUgc2Vjb25kIHBhcmVudCIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgZSB3ICYmCisJdGVzdF9jbXBfcmV2IHcgSEVBRAorIgorCit0ZXN0X2V4cGVjdF9mYWlsdXJlICJyZWJhc2UgLXAgLS1yb290IG9uIG5vbi1saW5lYXIgaGlzdG9yeSBpcyBhIG5vLW9wIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCAtLXJvb3QgdyAmJgorCXRlc3RfY21wX3JldiB3IEhFQUQKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIHJlLWNyZWF0ZXMgbWVyZ2UgZnJvbSBzaWRlIGJyYW5jaCIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgeiB3ICYmCisJdGVzdF9jbXBfcmV2IHogSEVBRF4gJiYKKwl0ZXN0X2NtcF9yZXYgd14yIEhFQUReMgorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgcmUtY3JlYXRlcyBpbnRlcm5hbCBtZXJnZSIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgYyB3ICYmCisJdGVzdF9jbXBfcmV2IGMgSEVBRH40ICYmCisJdGVzdF9jbXBfcmV2IEhFQUReMl4gSEVBRH4zICYmCisJdGVzdF9yZXZpc2lvbl9zdWJqZWN0cyAnZCBuIGUgbyB3JyBIRUFEfjMgSEVBRH4yIEhFQUReMiBIRUFEXiBIRUFECisiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSAtcCBjYW4gcmUtY3JlYXRlIHR3byBicmFuY2hlcyBvbiBvbnRvIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCAtLW9udG8gYyBkIHcgJiYKKwl0ZXN0X2NtcF9yZXYgYyBIRUFEfjMgJiYKKwl0ZXN0X2NtcF9yZXYgYyBIRUFEXjJeICYmCisJdGVzdF9yZXZpc2lvbl9zdWJqZWN0cyAnbiBlIG8gdycgSEVBRH4yIEhFQUReMiBIRUFEXiBIRUFECisiCisKKyMgICAgICAgZgorIyAgICAgIC8KKyMgYS0tLWItLS1jLS0tZy0tLWgKKyMgICAgICBcCisjICAgICAgIGQtLS1ncC0taQorIyAgICAgICAgXCAgICAgICBcCisjICAgICAgICAgZS0tLS0tLS11CisjCisjIGdwID0gY2hlcnJ5LXBpY2tlZCBnCisjIGggPSByZXZlcnRlZCBnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBvZiBub24tbGluZWFyLWhpc3RvcnkgZm9yIHBhdGNoLWVxdWl2YWxlbmNlIHRlc3RzJyAnCisJZ2l0IGNoZWNrb3V0IGUgJiYKKwl0ZXN0X21lcmdlIHUgaQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgcmUtY3JlYXRlcyBoaXN0b3J5IGFyb3VuZCBkcm9wcGVkIGNvbW1pdCBtYXRjaGluZyB1cHN0cmVhbSIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgaCB1ICYmCisJdGVzdF9jbXBfcmV2IGggSEVBRH4zICYmCisJdGVzdF9jbXBfcmV2IEhFQUReMl4gSEVBRH4yICYmCisJdGVzdF9yZXZpc2lvbl9zdWJqZWN0cyAnZCBpIGUgdScgSEVBRH4yIEhFQUReMiBIRUFEXiBIRUFECisiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSAtcCAtLW9udG8gaW4gbWVyZ2VkIGhpc3RvcnkgZHJvcHMgcGF0Y2hlcyBpbiB1cHN0cmVhbSIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgLS1vbnRvIGYgaCB1ICYmCisJdGVzdF9jbXBfcmV2IGYgSEVBRH4zICYmCisJdGVzdF9jbXBfcmV2IEhFQUReMl4gSEVBRH4yICYmCisJdGVzdF9yZXZpc2lvbl9zdWJqZWN0cyAnZCBpIGUgdScgSEVBRH4yIEhFQUReMiBIRUFEXiBIRUFECisiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSAtcCAtLW9udG8gaW4gbWVyZ2VkIGhpc3RvcnkgZG9lcyBub3QgZHJvcCBwYXRjaGVzIGluIG9udG8iICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIC0tb250byBoIGYgdSAmJgorCXRlc3RfY21wX3JldiBoIEhFQUR+MyAmJgorCXRlc3RfY21wX3JldiBIRUFEXjJ+MiBIRUFEfjIgJiYKKwl0ZXN0X3JldmlzaW9uX3N1YmplY3RzICdkIGdwIGkgZSB1JyBIRUFEfjIgSEVBRF4yXiBIRUFEXjIgSEVBRF4gSEVBRAorIgorCisjIGEtLS1iLS0tYy0tLWctLS1oCisjICAgICAgXAorIyAgICAgICBkLS0tZ3AtLXMKKyMgICAgICAgIFwgICBcIC8KKyMgICAgICAgICBcICAgWAorIyAgICAgICAgICBcIC8gXAorIyAgICAgICAgICAgZS0tLXQKKyMKKyMgZ3AgPSBjaGVycnktcGlja2VkIGcKKyMgaCA9IHJldmVydGVkIGcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIG5vbi1saW5lYXItaGlzdG9yeSBmb3IgZHJvcHBpbmcgd2hvbGUgc2lkZScgJworCWdpdCBjaGVja291dCBncCAmJgorCXRlc3RfbWVyZ2UgcyBlICYmCisJZ2l0IGNoZWNrb3V0IGUgJiYKKwl0ZXN0X21lcmdlIHQgZ3AKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAicmViYXNlIC1wIGRyb3BzIG1lcmdlIGNvbW1pdCB3aGVuIGVudGlyZSBmaXJzdC1wYXJlbnQgc2lkZSBpcyBkcm9wcGVkIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBoIHMgJiYKKwl0ZXN0X2NtcF9yZXYgaCBIRUFEfjIgJiYKKwl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBlJyBoLi4KKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIGRyb3BzIG1lcmdlIGNvbW1pdCB3aGVuIGVudGlyZSBzZWNvbmQtcGFyZW50IHNpZGUgaXMgZHJvcHBlZCIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgaCB0ICYmCisJdGVzdF9jbXBfcmV2IGggSEVBRH4yICYmCisJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgZScgaC4uCisiCisKKyMgYS0tLWItLS1jCisjICAgICAgXAorIyAgICAgICBkLS0tZQorIyAgICAgICAgXCAgIFwKKyMgICAgICAgICBuLS0tcgorIyAgICAgICAgICBcCisjICAgICAgICAgICBvCisjCisjIHIgPSB0cmVlLXNhbWUgd2l0aCBuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBvZiBub24tbGluZWFyLWhpc3RvcnkgZm9yIGVtcHR5IGNvbW1pdHMnICcKKwlnaXQgY2hlY2tvdXQgbiAmJgorCWdpdCBtZXJnZSAtLW5vLWNvbW1pdCBlICYmCisJZ2l0IHJlc2V0IG4gLiAmJgorCWdpdCBjb21taXQgLW0gciAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2xlYW4gLWYgJiYKKwlnaXQgdGFnIHIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIHJlLWNyZWF0ZXMgZW1wdHkgaW50ZXJuYWwgbWVyZ2UgY29tbWl0IiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBjIHIgJiYKKwl0ZXN0X2NtcF9yZXYgYyBIRUFEfjMgJiYKKwl0ZXN0X2NtcF9yZXYgSEVBRF4yXiBIRUFEfjIgJiYKKwl0ZXN0X3JldmlzaW9uX3N1YmplY3RzICdkIGUgbiByJyBIRUFEfjIgSEVBRF4yIEhFQUReIEhFQUQKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIHJlLWNyZWF0ZXMgZW1wdHkgbWVyZ2UgY29tbWl0IiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBvIHIgJiYKKwl0ZXN0X2NtcF9yZXYgZSBIRUFEXjIgJiYKKwl0ZXN0X2NtcF9yZXYgbyBIRUFEXiAmJgorCXRlc3RfcmV2aXNpb25fc3ViamVjdHMgJ3InIEhFQUQKKyIKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzNTA1LWNoZXJyeS1waWNrLWVtcHR5LnNoIGIvdC90MzUwNS1jaGVycnktcGljay1lbXB0eS5zaAppbmRleCBhMGM2ZTMwLi5mYmRjNDdjIDEwMDc1NQotLS0gYS90L3QzNTA1LWNoZXJyeS1waWNrLWVtcHR5LnNoCisrKyBiL3QvdDM1MDUtY2hlcnJ5LXBpY2stZW1wdHkuc2gKQEAgLTI4LDI5ICsyOCwyMSBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayBhbiBlbXB0eSBjb21taXQnICcKLQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmIHsKLQkJZ2l0IGNoZXJyeS1waWNrIGVtcHR5LWJyYW5jaF4KLQkJdGVzdCAiJD8iID0gMQotCX0KKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBjaGVycnktcGljayBlbXB0eS1icmFuY2heCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZGV4IGxvY2tmaWxlIHdhcyByZW1vdmVkJyAnCi0KIAl0ZXN0ICEgLWYgLmdpdC9pbmRleC5sb2NrCi0KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgYSBjb21taXQgd2l0aCBhbiBlbXB0eSBtZXNzYWdlJyAnCi0JZ2l0IGNoZWNrb3V0IG1hc3RlciAmJiB7Ci0JCWdpdCBjaGVycnktcGljayBlbXB0eS1icmFuY2gKLQkJdGVzdCAiJD8iID0gMQotCX0KKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBjaGVycnktcGljayBlbXB0eS1icmFuY2gKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5kZXggbG9ja2ZpbGUgd2FzIHJlbW92ZWQnICcKLQogCXRlc3QgISAtZiAuZ2l0L2luZGV4LmxvY2sKLQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayBhIGNvbW1pdCB3aXRoIGFuIGVtcHR5IG1lc3NhZ2Ugd2l0aCAtLWFsbG93LWVtcHR5LW1lc3NhZ2UnICcKQEAgLTEwMSw3ICs5Myw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBmb3JrXjAgJiYKIAlnaXQgY2hlcnJ5LXBpY2sgLS1rZWVwLXJlZHVuZGFudC1jb21taXRzIG1hc3RlciAmJgotCWdpdCBzaG93IC1zIC0tZm9ybWF0PSclcycgPmFjdHVhbCAmJgorCWdpdCBzaG93IC1zIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKIAllY2hvICJhZGQgZmlsZTIgb24gbWFzdGVyIiA+ZXhwZWN0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwpkaWZmIC0tZ2l0IGEvdC90MzUwOC1jaGVycnktcGljay1tYW55LWNvbW1pdHMuc2ggYi90L3QzNTA4LWNoZXJyeS1waWNrLW1hbnktY29tbWl0cy5zaAppbmRleCA0ZTcxMzZiLi4xOWM5OWQ3IDEwMDc1NQotLS0gYS90L3QzNTA4LWNoZXJyeS1waWNrLW1hbnktY29tbWl0cy5zaAorKysgYi90L3QzNTA4LWNoZXJyeS1waWNrLW1hbnktY29tbWl0cy5zaApAQCAtNTUsNiArNTUsMTIgQEAKIHR3byIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgdGhyZWUgb25lIHR3bzogZmFpbHMnICcKKwlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBmaXJzdCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjaGVycnktcGljayB0aHJlZSBvbmUgdHdvOgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdXRwdXQgdG8ga2VlcCB1c2VyIGVudGVydGFpbmVkIGR1cmluZyBtdWx0aS1waWNrJyAnCiAJY2F0IDw8LVxFT0YgPmV4cGVjdGVkICYmCiAJW21hc3RlciBPQkpJRF0gc2Vjb25kCmRpZmYgLS1naXQgYS90L3QzNTA5LWNoZXJyeS1waWNrLW1lcmdlLWRmLnNoIGIvdC90MzUwOS1jaGVycnktcGljay1tZXJnZS1kZi5zaAppbmRleCBkZjkyMWQxLi5hNWI2YTVmIDEwMDc1NQotLS0gYS90L3QzNTA5LWNoZXJyeS1waWNrLW1lcmdlLWRmLnNoCisrKyBiL3QvdDM1MDktY2hlcnJ5LXBpY2stbWVyZ2UtZGYuc2gKQEAgLTEwLDE3ICsxMCwxNSBAQAogCWdpdCBjb21taXQgLW0gYQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdTZXR1cCByZW5hbWUgYWNyb3NzIHBhdGhzIGVhY2ggYmVsb3cgRC9GIGNvbmZsaWN0cycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnU2V0dXAgcmVuYW1lIGFjcm9zcyBwYXRocyBlYWNoIGJlbG93IEQvRiBjb25mbGljdHMnICcKIAlta2RpciBiICYmCi0JbG4gLXMgLi4vYSBiL2EgJiYKLQlnaXQgYWRkIGIgJiYKKwl0ZXN0X2xuX3NfYWRkIC4uL2EgYi9hICYmCiAJZ2l0IGNvbW1pdCAtbSBiICYmCiAKIAlnaXQgY2hlY2tvdXQgLWIgYnJhbmNoICYmCiAJcm0gYi9hICYmCi0JbXYgYSBiL2EgJiYKLQlsbiAtcyBiL2EgYSAmJgotCWdpdCBhZGQgLiAmJgorCWdpdCBtdiBhIGIvYSAmJgorCXRlc3RfbG5fc19hZGQgYi9hIGEgJiYKIAlnaXQgY29tbWl0IC1tIHN3YXAgJiYKIAogCT5mMSAmJgpAQCAtMjgsNyArMjYsNyBAQAogCWdpdCBjb21taXQgLW0gZjEKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnQ2hlcnJ5LXBpY2sgc3VjY2VlZHMgd2l0aCByZW5hbWUgYWNyb3NzIEQvRiBjb25mbGljdHMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZXJyeS1waWNrIHN1Y2NlZWRzIHdpdGggcmVuYW1lIGFjcm9zcyBEL0YgY29uZmxpY3RzJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBtYXN0ZXJeMCAmJgogCWdpdCBjaGVycnktcGljayBicmFuY2gKZGlmZiAtLWdpdCBhL3QvdDM1MTEtY2hlcnJ5LXBpY2steC5zaCBiL3QvdDM1MTEtY2hlcnJ5LXBpY2steC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mOTc3Mjc5Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MzUxMS1jaGVycnktcGljay14LnNoCkBAIC0wLDAgKzEsMjE5IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nVGVzdCBjaGVycnktcGljayAteCBhbmQgLXMnCisKKy4gLi90ZXN0LWxpYi5zaAorCitwcmlzdGluZV9kZXRhY2ggKCkgeworCWdpdCBjaGVycnktcGljayAtLXF1aXQgJiYKKwlnaXQgY2hlY2tvdXQgLWYgIiQxXjAiICYmCisJZ2l0IHJlYWQtdHJlZSAtdSAtLXJlc2V0IEhFQUQgJiYKKwlnaXQgY2xlYW4gLWQgLWYgLWYgLXEgLXgKK30KKworbWVzZ19vbmVfbGluZT0nYmFzZTogY29tbWl0IG1lc3NhZ2UnCisKK21lc2dfbm9fZm9vdGVyPSIkbWVzZ19vbmVfbGluZQorCitPbmVXb3JkQm9keVRoYXRzTm90QS1TLW8tQiIKKworbWVzZ193aXRoX2Zvb3Rlcj0iJG1lc2dfbm9fZm9vdGVyCisKK1NpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorU2lnbmVkLW9mZi1ieTogQS5VLiBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBCLlUuIFRob3IgPGJ1dGhvckBleGFtcGxlLmNvbT4iCisKK21lc2dfYnJva2VuX2Zvb3Rlcj0iJG1lc2dfbm9fZm9vdGVyCisKK1RoZSBzaWduZWQtb2ZmLWJ5IHN0cmluZyBzaG91bGQgYmVnaW4gd2l0aCB0aGUgd29yZHMgU2lnbmVkLW9mZi1ieSBmb2xsb3dlZAorYnkgYSBjb2xvbiBhbmQgc3BhY2UsIGFuZCB0aGVuIHRoZSBzaWduZXJzIG5hbWUgYW5kIGVtYWlsIGFkZHJlc3MuIGUuZy4KK1NpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiIKKworbWVzZ193aXRoX2Zvb3Rlcl9zb2I9IiRtZXNnX3dpdGhfZm9vdGVyCitTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4iCisKK21lc2dfd2l0aF9jaGVycnlfZm9vdGVyPSIkbWVzZ193aXRoX2Zvb3Rlcl9zb2IKKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGRhMzlhM2VlNWU2YjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDkpCitUZXN0ZWQtYnk6IEMuVS4gVGhvciA8Y3V0aG9yQGV4YW1wbGUuY29tPiIKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwlnaXQgY29uZmlnIGFkdmljZS5kZXRhY2hlZGhlYWQgZmFsc2UgJiYKKwllY2hvIHVucmVsYXRlZCA+dW5yZWxhdGVkICYmCisJZ2l0IGFkZCB1bnJlbGF0ZWQgJiYKKwl0ZXN0X2NvbW1pdCBpbml0aWFsIGZvbyBhICYmCisJdGVzdF9jb21taXQgIiRtZXNnX29uZV9saW5lIiBmb28gYiBtZXNnLW9uZS1saW5lICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9jb21taXQgIiRtZXNnX25vX2Zvb3RlciIgZm9vIGIgbWVzZy1uby1mb290ZXIgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAiJG1lc2dfYnJva2VuX2Zvb3RlciIgZm9vIGIgbWVzZy1icm9rZW4tZm9vdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9jb21taXQgIiRtZXNnX3dpdGhfZm9vdGVyIiBmb28gYiBtZXNnLXdpdGgtZm9vdGVyICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJdGVzdF9jb21taXQgIiRtZXNnX3dpdGhfZm9vdGVyX3NvYiIgZm9vIGIgbWVzZy13aXRoLWZvb3Rlci1zb2IgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAiJG1lc2dfd2l0aF9jaGVycnlfZm9vdGVyIiBmb28gYiBtZXNnLXdpdGgtY2hlcnJ5LWZvb3RlciAmJgorCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJdGVzdF9jb21taXQgY29uZmxpY3RpbmcgdW5yZWxhdGVkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC14IGluc2VydHMgYmxhbmsgbGluZSBhZnRlciBvbmUgbGluZSBzdWJqZWN0JyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlzaGExPWBnaXQgcmV2LXBhcnNlIG1lc2ctb25lLWxpbmVeMGAgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXggbWVzZy1vbmUtbGluZSAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ19vbmVfbGluZQorCisJCShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0ICRzaGExKQorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC1zIGluc2VydHMgYmxhbmsgbGluZSBhZnRlciBvbmUgbGluZSBzdWJqZWN0JyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXMgbWVzZy1vbmUtbGluZSAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ19vbmVfbGluZQorCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC1zIGluc2VydHMgYmxhbmsgbGluZSBhZnRlciBub24tY29uZm9ybWluZyBmb290ZXInICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCWdpdCBjaGVycnktcGljayAtcyBtZXNnLWJyb2tlbi1mb290ZXIgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfYnJva2VuX2Zvb3RlcgorCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC14IGluc2VydHMgYmxhbmsgbGluZSB3aGVuIGNvbmZvcm1pbmcgZm9vdGVyIG5vdCBmb3VuZCcgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJc2hhMT1gZ2l0IHJldi1wYXJzZSBtZXNnLW5vLWZvb3Rlcl4wYCAmJgorCWdpdCBjaGVycnktcGljayAteCBtZXNnLW5vLWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ19ub19mb290ZXIKKworCQkoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAkc2hhMSkKKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayAtcyBpbnNlcnRzIGJsYW5rIGxpbmUgd2hlbiBjb25mb3JtaW5nIGZvb3RlciBub3QgZm91bmQnICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCWdpdCBjaGVycnktcGljayAtcyBtZXNnLW5vLWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ19ub19mb290ZXIKKworCQlTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayAteCAtcyBpbnNlcnRzIGJsYW5rIGxpbmUgd2hlbiBjb25mb3JtaW5nIGZvb3RlciBub3QgZm91bmQnICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXNoYTE9YGdpdCByZXYtcGFyc2UgbWVzZy1uby1mb290ZXJeMGAgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXggLXMgbWVzZy1uby1mb290ZXIgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfbm9fZm9vdGVyCisKKwkJKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgJHNoYTEpCisJCVNpZ25lZC1vZmYtYnk6ICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC1zIGFkZHMgc29iIHdoZW4gbGFzdCBzb2IgZG9lc250IG1hdGNoIGNvbW1pdHRlcicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJZ2l0IGNoZXJyeS1waWNrIC1zIG1lc2ctd2l0aC1mb290ZXIgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfd2l0aF9mb290ZXIKKwkJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXggLXMgYWRkcyBzb2Igd2hlbiBsYXN0IHNvYiBkb2VzbnQgbWF0Y2ggY29tbWl0dGVyJyAnCisJcHJpc3RpbmVfZGV0YWNoIGluaXRpYWwgJiYKKwlzaGExPWBnaXQgcmV2LXBhcnNlIG1lc2ctd2l0aC1mb290ZXJeMGAgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXggLXMgbWVzZy13aXRoLWZvb3RlciAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCQkkbWVzZ193aXRoX2Zvb3RlcgorCQkoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAkc2hhMSkKKwkJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisJRU9GCisJZ2l0IGxvZyAtMSAtLXByZXR0eT1mb3JtYXQ6JUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlcnJ5LXBpY2sgLXMgcmVmcmFpbnMgZnJvbSBhZGRpbmcgZHVwbGljYXRlIHRyYWlsaW5nIHNvYicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJZ2l0IGNoZXJyeS1waWNrIC1zIG1lc2ctd2l0aC1mb290ZXItc29iICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX3dpdGhfZm9vdGVyX3NvYgorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC14IC1zIGFkZHMgc29iIGV2ZW4gd2hlbiB0cmFpbGluZyBzb2IgZXhpc3RzIGZvciBjb21taXR0ZXInICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXNoYTE9YGdpdCByZXYtcGFyc2UgbWVzZy13aXRoLWZvb3Rlci1zb2JeMGAgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXggLXMgbWVzZy13aXRoLWZvb3Rlci1zb2IgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfd2l0aF9mb290ZXJfc29iCisJCShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0ICRzaGExKQorCQlTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayAteCB0cmVhdHMgIihjaGVycnkgcGlja2VkIGZyb20uLi4iIGxpbmUgYXMgcGFydCBvZiBmb290ZXInICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXNoYTE9YGdpdCByZXYtcGFyc2UgbWVzZy13aXRoLWNoZXJyeS1mb290ZXJeMGAgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXggbWVzZy13aXRoLWNoZXJyeS1mb290ZXIgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfd2l0aF9jaGVycnlfZm9vdGVyCisJCShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0ICRzaGExKQorCUVPRgorCWdpdCBsb2cgLTEgLS1wcmV0dHk9Zm9ybWF0OiVCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIC1zIHRyZWF0cyAiKGNoZXJyeSBwaWNrZWQgZnJvbS4uLiIgbGluZSBhcyBwYXJ0IG9mIGZvb3RlcicgJworCXByaXN0aW5lX2RldGFjaCBpbml0aWFsICYmCisJZ2l0IGNoZXJyeS1waWNrIC1zIG1lc2ctd2l0aC1jaGVycnktZm9vdGVyICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJCSRtZXNnX3dpdGhfY2hlcnJ5X2Zvb3RlcgorCQlTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayAteCAtcyB0cmVhdHMgIihjaGVycnkgcGlja2VkIGZyb20uLi4iIGxpbmUgYXMgcGFydCBvZiBmb290ZXInICcKKwlwcmlzdGluZV9kZXRhY2ggaW5pdGlhbCAmJgorCXNoYTE9YGdpdCByZXYtcGFyc2UgbWVzZy13aXRoLWNoZXJyeS1mb290ZXJeMGAgJiYKKwlnaXQgY2hlcnJ5LXBpY2sgLXggLXMgbWVzZy13aXRoLWNoZXJyeS1mb290ZXIgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKwkJJG1lc2dfd2l0aF9jaGVycnlfZm9vdGVyCisJCShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0ICRzaGExKQorCQlTaWduZWQtb2ZmLWJ5OiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KKwlFT0YKKwlnaXQgbG9nIC0xIC0tcHJldHR5PWZvcm1hdDolQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM2MDAtcm0uc2ggYi90L3QzNjAwLXJtLnNoCmluZGV4IDM3YmY1ZjEuLjVjODdiNTUgMTAwNzU1Ci0tLSBhL3QvdDM2MDAtcm0uc2gKKysrIGIvdC90MzYwMC1ybS5zaApAQCAtNjIyLDQgKzYyMiwxNjUgQEAKIAlybSAtcmYgc3VibW9kCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIG9mIGQvZiB3aGVuIGQgaGFzIGJlY29tZSBhIG5vbi1kaXJlY3RvcnknICcKKwlybSAtcmYgZCAmJgorCW1rZGlyIGQgJiYKKwk+ZC9mICYmCisJZ2l0IGFkZCBkICYmCisJcm0gLXJmIGQgJiYKKwk+ZCAmJgorCWdpdCBybSBkL2YgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDpkL2YgJiYKKwl0ZXN0X3BhdGhfaXNfZmlsZSBkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3JtIG9mIGQvZiB3aGVuIGQgaGFzIGJlY29tZSBhIGRhbmdsaW5nIHN5bWxpbmsnICcKKwlybSAtcmYgZCAmJgorCW1rZGlyIGQgJiYKKwk+ZC9mICYmCisJZ2l0IGFkZCBkICYmCisJcm0gLXJmIGQgJiYKKwlsbiAtcyBub25leGlzdGVudCBkICYmCisJZ2l0IHJtIGQvZiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOmQvZiAmJgorCXRlc3QgLWggZCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIGQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gb2YgZmlsZSB3aGVuIGl0IGhhcyBiZWNvbWUgYSBkaXJlY3RvcnknICcKKwlybSAtcmYgZCAmJgorCT5kICYmCisJZ2l0IGFkZCBkICYmCisJcm0gLWYgZCAmJgorCW1rZGlyIGQgJiYKKwk+ZC9mICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIGQgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDpkICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgZC9mCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3JtIGFjcm9zcyBhIHN5bWxpbmtlZCBsZWFkaW5nIHBhdGggKG5vIGluZGV4KScgJworCXJtIC1yZiBkIGUgJiYKKwlta2RpciBlICYmCisJZWNobyBjb250ZW50ID5lL2YgJiYKKwlsbiAtcyBlIGQgJiYKKwlnaXQgYWRkIC1BIGUgZCAmJgorCWdpdCBjb21taXQgLW0gInN5bWxpbmsgZCB0byBlLCBlL2YgZXhpc3RzIiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBybSBkL2YgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDpkICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6ZS9mICYmCisJdGVzdCAtaCBkICYmCisJdGVzdF9wYXRoX2lzX2ZpbGUgZS9mCisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgU1lNTElOS1MgJ3JtIGFjcm9zcyBhIHN5bWxpbmtlZCBsZWFkaW5nIHBhdGggKHcvIGluZGV4KScgJworCXJtIC1yZiBkIGUgJiYKKwlta2RpciBkICYmCisJZWNobyBjb250ZW50ID5kL2YgJiYKKwlnaXQgYWRkIC1BIGUgZCAmJgorCWdpdCBjb21taXQgLW0gImQvZiBleGlzdHMiICYmCisJbXYgZCBlICYmCisJbG4gLXMgZSBkICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIGQvZiAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgOmQvZiAmJgorCXRlc3QgLWggZCAmJgorCXRlc3RfcGF0aF9pc19maWxlIGUvZgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBmb3IgdGVzdGluZyBybSBtZXNzYWdlcycgJworCT5iYXIudHh0ICYmCisJPmZvby50eHQgJiYKKwlnaXQgYWRkIGJhci50eHQgZm9vLnR4dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBmaWxlcyB3aXRoIGRpZmZlcmVudCBzdGFnZWQgY29udGVudCcgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwllcnJvcjogdGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlCisJZmlsZSBhbmQgdGhlIEhFQUQ6CisJICAgIGJhci50eHQKKwkgICAgZm9vLnR4dAorCSh1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkKKwlFT0YKKwllY2hvIGNvbnRlbnQxID5mb28udHh0ICYmCisJZWNobyBjb250ZW50MSA+YmFyLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBybSBmb28udHh0IGJhci50eHQgMj5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBmaWxlcyB3aXRoIGRpZmZlcmVudCBzdGFnZWQgY29udGVudCB3aXRob3V0IGhpbnRzJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgc3RhZ2VkIGNvbnRlbnQgZGlmZmVyZW50IGZyb20gYm90aCB0aGUKKwlmaWxlIGFuZCB0aGUgSEVBRDoKKwkgICAgYmFyLnR4dAorCSAgICBmb28udHh0CisJRU9GCisJZWNobyBjb250ZW50MiA+Zm9vLnR4dCAmJgorCWVjaG8gY29udGVudDIgPmJhci50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgLWMgYWR2aWNlLnJtaGludHM9ZmFsc2Ugcm0gZm9vLnR4dCBiYXIudHh0IDI+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gZmlsZSB3aXRoIGxvY2FsIG1vZGlmaWNhdGlvbicgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwllcnJvcjogdGhlIGZvbGxvd2luZyBmaWxlIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zOgorCSAgICBmb28udHh0CisJKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKQorCUVPRgorCWdpdCBjb21taXQgLW0gInRlc3Rpbmcgcm0gMyIgJiYKKwllY2hvIGNvbnRlbnQzID5mb28udHh0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIGZvby50eHQgMj5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBmaWxlIHdpdGggbG9jYWwgbW9kaWZpY2F0aW9uIHdpdGhvdXQgaGludHMnICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJZXJyb3I6IHRoZSBmb2xsb3dpbmcgZmlsZSBoYXMgbG9jYWwgbW9kaWZpY2F0aW9uczoKKwkgICAgYmFyLnR4dAorCUVPRgorCWVjaG8gY29udGVudDQgPmJhci50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgLWMgYWR2aWNlLnJtaGludHM9ZmFsc2Ugcm0gYmFyLnR4dCAyPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIGZpbGUgd2l0aCBjaGFuZ2VzIGluIHRoZSBpbmRleCcgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwllcnJvcjogdGhlIGZvbGxvd2luZyBmaWxlIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXg6CisJICAgIGZvby50eHQKKwkodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpCisJRU9GCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWVjaG8gY29udGVudDUgPmZvby50eHQgJiYKKwlnaXQgYWRkIGZvby50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gZm9vLnR4dCAyPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIGZpbGUgd2l0aCBjaGFuZ2VzIGluIHRoZSBpbmRleCB3aXRob3V0IGhpbnRzJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleDoKKwkgICAgZm9vLnR4dAorCUVPRgorCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBhZHZpY2Uucm1oaW50cz1mYWxzZSBybSBmb28udHh0IDI+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gZmlsZXMgd2l0aCB0d28gZGlmZmVyZW50IGVycm9ycycgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwllcnJvcjogdGhlIGZvbGxvd2luZyBmaWxlIGhhcyBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZQorCWZpbGUgYW5kIHRoZSBIRUFEOgorCSAgICBmb28xLnR4dAorCSh1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkKKwllcnJvcjogdGhlIGZvbGxvd2luZyBmaWxlIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXg6CisJICAgIGJhcjEudHh0CisJKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKQorCUVPRgorCWVjaG8gY29udGVudCA+Zm9vMS50eHQgJiYKKwlnaXQgYWRkIGZvbzEudHh0ICYmCisJZWNobyBjb250ZW50NiA+Zm9vMS50eHQgJiYKKwllY2hvIGNvbnRlbnQ2ID5iYXIxLnR4dCAmJgorCWdpdCBhZGQgYmFyMS50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gYmFyMS50eHQgZm9vMS50eHQgMj5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM3MDAtYWRkLnNoIGIvdC90MzcwMC1hZGQuc2gKaW5kZXggODc0YjNhNi4uYWFiODZlOCAxMDA3NTUKLS0tIGEvdC90MzcwMC1hZGQuc2gKKysrIGIvdC90MzcwMC1hZGQuc2gKQEAgLTMwLDEwICszMCw5IEBACiAJICopIGVjaG8gZmFpbDsgZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgeGZvbzE7IChleGl0IDEpOzsKIAkgZXNhYycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZ2l0IGFkZDogZmlsZW1vZGU9MCBzaG91bGQgbm90IGdldCBjb25mdXNlZCBieSBzeW1saW5rJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYWRkOiBmaWxlbW9kZT0wIHNob3VsZCBub3QgZ2V0IGNvbmZ1c2VkIGJ5IHN5bWxpbmsnICcKIAlybSAtZiB4Zm9vMSAmJgotCWxuIC1zIGZvbyB4Zm9vMSAmJgotCWdpdCBhZGQgeGZvbzEgJiYKKwl0ZXN0X2xuX3NfYWRkIGZvbyB4Zm9vMSAmJgogCWNhc2UgImBnaXQgbHMtZmlsZXMgLS1zdGFnZSB4Zm9vMWAiIGluCiAJMTIwMDAwIiAiKnhmb28xKSBlY2hvIHBhc3M7OwogCSopIGVjaG8gZmFpbDsgZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgeGZvbzE7IChleGl0IDEpOzsKQEAgLTUxLDIxICs1MCwxOSBAQAogCSAqKSBlY2hvIGZhaWw7IGdpdCBscy1maWxlcyAtLXN0YWdlIHhmb28yOyAoZXhpdCAxKTs7CiAJIGVzYWMnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2dpdCBhZGQ6IGZpbGVtb2RlPTAgc2hvdWxkIG5vdCBnZXQgY29uZnVzZWQgYnkgc3ltbGluaycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGFkZDogZmlsZW1vZGU9MCBzaG91bGQgbm90IGdldCBjb25mdXNlZCBieSBzeW1saW5rJyAnCiAJcm0gLWYgeGZvbzIgJiYKLQlsbiAtcyBmb28geGZvbzIgJiYKLQlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIHhmb28yICYmCisJdGVzdF9sbl9zX2FkZCBmb28geGZvbzIgJiYKIAljYXNlICJgZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgeGZvbzJgIiBpbgogCTEyMDAwMCIgIip4Zm9vMikgZWNobyBwYXNzOzsKIAkqKSBlY2hvIGZhaWw7IGdpdCBscy1maWxlcyAtLXN0YWdlIHhmb28yOyAoZXhpdCAxKTs7CiAJZXNhYwogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdnaXQgdXBkYXRlLWluZGV4IC0tYWRkOiBUZXN0IHRoYXQgZXhlY3V0YWJsZSBiaXQgaXMgbm90IHVzZWQuLi4nIFwKIAknZ2l0IGNvbmZpZyBjb3JlLmZpbGVtb2RlIDAgJiYKLQkgbG4gLXMgeGZvbzIgeGZvbzMgJiYKLQkgZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCB4Zm9vMyAmJgorCSB0ZXN0X2xuX3NfYWRkIHhmb28yIHhmb28zICYmCSMgcnVucyBnaXQgdXBkYXRlLWluZGV4IC0tYWRkCiAJIGNhc2UgImBnaXQgbHMtZmlsZXMgLS1zdGFnZSB4Zm9vM2AiIGluCiAJIDEyMDAwMCIgIip4Zm9vMykgZWNobyBwYXNzOzsKIAkgKikgZWNobyBmYWlsOyBnaXQgbHMtZmlsZXMgLS1zdGFnZSB4Zm9vMzsgKGV4aXQgMSk7OwpkaWZmIC0tZ2l0IGEvdC90MzcwMS1hZGQtaW50ZXJhY3RpdmUuc2ggYi90L3QzNzAxLWFkZC1pbnRlcmFjdGl2ZS5zaAppbmRleCAwOThhNmFlLi45ZmFiMjVjIDEwMDc1NQotLS0gYS90L3QzNzAxLWFkZC1pbnRlcmFjdGl2ZS5zaAorKysgYi90L3QzNzAxLWFkZC1pbnRlcmFjdGl2ZS5zaApAQCAtMzE5LDcgKzMxOSw3IEBACiAJIyB0aW1lcyB0byBnZXQgb3V0LgogCSMKIAkjIDIuIENvcnJlY3QgdmVyc2lvbiBhcHBsaWVzIHRoZSAobm90KWVkaXRlZCB2ZXJzaW9uLCBhbmQgYXNrcwotCSMgICAgYWJvdXQgdGhlIG5leHQgaHVuaywgYWdhaW5zdCB3aWNoIHdlIHNheSBxIGFuZCBwcm9ncmFtCisJIyAgICBhYm91dCB0aGUgbmV4dCBodW5rLCBhZ2FpbnN0IHdoaWNoIHdlIHNheSBxIGFuZCBwcm9ncmFtCiAJIyAgICBleGl0cy4KIAlmb3IgYSBpbiBzIGUgICAgIHEgbiBxIHEKIAlkbwpkaWZmIC0tZ2l0IGEvdC90MzkwMy1zdGFzaC5zaCBiL3QvdDM5MDMtc3Rhc2guc2gKaW5kZXggNWRmYmRhNy4uZGViZGE3YSAxMDA3NTUKLS0tIGEvdC90MzkwMy1zdGFzaC5zaAorKysgYi90L3QzOTAzLXN0YXNoLnNoCkBAIC0yMDAsMTcgKzIwMCwxNyBAQAogCWVjaG8gZm9vID4gZmlsZSAmJgogCWdpdCBzdGFzaCAmJgogCWdpdCBzdGFzaCBhcHBseSAtcSA+IG91dHB1dC5vdXQgMj4mMSAmJgotCXRlc3QgISAtcyBvdXRwdXQub3V0CisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5vdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2F2ZSAtcSBpcyBxdWlldCcgJwogCWdpdCBzdGFzaCBzYXZlIC0tcXVpZXQgPiBvdXRwdXQub3V0IDI+JjEgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0Lm91dAorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQub3V0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BvcCAtcSBpcyBxdWlldCcgJwogCWdpdCBzdGFzaCBwb3AgLXEgPiBvdXRwdXQub3V0IDI+JjEgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0Lm91dAorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQub3V0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BvcCAtcSAtLWluZGV4IHdvcmtzIGFuZCBpcyBxdWlldCcgJwpAQCAtMjE5LDEzICsyMTksMTMgQEAKIAlnaXQgc3Rhc2ggc2F2ZSAtLXF1aWV0ICYmCiAJZ2l0IHN0YXNoIHBvcCAtcSAtLWluZGV4ID4gb3V0cHV0Lm91dCAyPiYxICYmCiAJdGVzdCBmb28gPSAiJChnaXQgc2hvdyA6ZmlsZSkiICYmCi0JdGVzdCAhIC1zIG91dHB1dC5vdXQKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0Lm91dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkcm9wIC1xIGlzIHF1aWV0JyAnCiAJZ2l0IHN0YXNoICYmCiAJZ2l0IHN0YXNoIGRyb3AgLXEgPiBvdXRwdXQub3V0IDI+JjEgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0Lm91dAorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQub3V0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXNoIC1rJyAnCkBAIC0zMzYsNDEgKzMzNiw1OCBAQAogCiAjIFRoaXMgdGVzdCBjcmVhdGVzIGEgY29tbWl0IHdpdGggYSBzeW1saW5rIHVzZWQgZm9yIHRoZSBmb2xsb3dpbmcgdGVzdHMKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnc3Rhc2ggc3ltbGluayB0byBmaWxlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGFzaCBzeW1saW5rIHRvIGZpbGUnICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCi0JbG4gLXMgZmlsZSBmaWxlbGluayAmJgotCWdpdCBhZGQgZmlsZWxpbmsgJiYKKwl0ZXN0X2xuX3NfYWRkIGZpbGUgZmlsZWxpbmsgJiYKIAlnaXQgY29tbWl0IC1tICJBZGQgc3ltbGluayIgJiYKIAlybSBmaWxlbGluayAmJgogCWNwIGZpbGUgZmlsZWxpbmsgJiYKLQlnaXQgc3Rhc2ggc2F2ZSAic3ltbGluayB0byBmaWxlIiAmJgorCWdpdCBzdGFzaCBzYXZlICJzeW1saW5rIHRvIGZpbGUiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3RoaXMgbXVzdCBoYXZlIHJlLWNyZWF0ZWQgdGhlIHN5bWxpbmsnICcKIAl0ZXN0IC1oIGZpbGVsaW5rICYmCi0JY2FzZSAiJChscyAtbCBmaWxlbGluaykiIGluICoiIGZpbGVsaW5rIC0+IGZpbGUiKSA6OzsgKikgZmFsc2U7OyBlc2FjICYmCisJY2FzZSAiJChscyAtbCBmaWxlbGluaykiIGluICoiIGZpbGVsaW5rIC0+IGZpbGUiKSA6OzsgKikgZmFsc2U7OyBlc2FjCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Vuc3Rhc2ggbXVzdCByZS1jcmVhdGUgdGhlIGZpbGUnICcKIAlnaXQgc3Rhc2ggYXBwbHkgJiYKIAkhIHRlc3QgLWggZmlsZWxpbmsgJiYKIAl0ZXN0IGJhciA9ICIkKGNhdCBmaWxlKSIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnc3Rhc2ggc3ltbGluayB0byBmaWxlIChzdGFnZSBybSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXNoIHN5bWxpbmsgdG8gZmlsZSAoc3RhZ2Ugcm0pJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBybSBmaWxlbGluayAmJgogCWNwIGZpbGUgZmlsZWxpbmsgJiYKLQlnaXQgc3Rhc2ggc2F2ZSAic3ltbGluayB0byBmaWxlIChzdGFnZSBybSkiICYmCisJZ2l0IHN0YXNoIHNhdmUgInN5bWxpbmsgdG8gZmlsZSAoc3RhZ2Ugcm0pIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICd0aGlzIG11c3QgaGF2ZSByZS1jcmVhdGVkIHRoZSBzeW1saW5rJyAnCiAJdGVzdCAtaCBmaWxlbGluayAmJgotCWNhc2UgIiQobHMgLWwgZmlsZWxpbmspIiBpbiAqIiBmaWxlbGluayAtPiBmaWxlIikgOjs7ICopIGZhbHNlOzsgZXNhYyAmJgorCWNhc2UgIiQobHMgLWwgZmlsZWxpbmspIiBpbiAqIiBmaWxlbGluayAtPiBmaWxlIikgOjs7ICopIGZhbHNlOzsgZXNhYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1bnN0YXNoIG11c3QgcmUtY3JlYXRlIHRoZSBmaWxlJyAnCiAJZ2l0IHN0YXNoIGFwcGx5ICYmCiAJISB0ZXN0IC1oIGZpbGVsaW5rICYmCiAJdGVzdCBiYXIgPSAiJChjYXQgZmlsZSkiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3N0YXNoIHN5bWxpbmsgdG8gZmlsZSAoZnVsbCBzdGFnZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXNoIHN5bWxpbmsgdG8gZmlsZSAoZnVsbCBzdGFnZSknICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJcm0gZmlsZWxpbmsgJiYKIAljcCBmaWxlIGZpbGVsaW5rICYmCiAJZ2l0IGFkZCBmaWxlbGluayAmJgotCWdpdCBzdGFzaCBzYXZlICJzeW1saW5rIHRvIGZpbGUgKGZ1bGwgc3RhZ2UpIiAmJgorCWdpdCBzdGFzaCBzYXZlICJzeW1saW5rIHRvIGZpbGUgKGZ1bGwgc3RhZ2UpIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICd0aGlzIG11c3QgaGF2ZSByZS1jcmVhdGVkIHRoZSBzeW1saW5rJyAnCiAJdGVzdCAtaCBmaWxlbGluayAmJgotCWNhc2UgIiQobHMgLWwgZmlsZWxpbmspIiBpbiAqIiBmaWxlbGluayAtPiBmaWxlIikgOjs7ICopIGZhbHNlOzsgZXNhYyAmJgorCWNhc2UgIiQobHMgLWwgZmlsZWxpbmspIiBpbiAqIiBmaWxlbGluayAtPiBmaWxlIikgOjs7ICopIGZhbHNlOzsgZXNhYworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1bnN0YXNoIG11c3QgcmUtY3JlYXRlIHRoZSBmaWxlJyAnCiAJZ2l0IHN0YXNoIGFwcGx5ICYmCiAJISB0ZXN0IC1oIGZpbGVsaW5rICYmCiAJdGVzdCBiYXIgPSAiJChjYXQgZmlsZSkiCkBAIC02MzcsNCArNjU0LDIzIEBACiAJdGVzdF9jbXAgb3V0cHV0IGV4cGVjdAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdG9yZSBjYWxsZWQgd2l0aCBpbnZhbGlkIGNvbW1pdCcgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBzdGFzaCBzdG9yZSBmb28KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RvcmUgdXBkYXRlcyBzdGFzaCByZWYgYW5kIHJlZmxvZycgJworCWdpdCBzdGFzaCBjbGVhciAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwllY2hvIHF1dXggPmJhenp5ICYmCisJZ2l0IGFkZCBiYXp6eSAmJgorCVNUQVNIX0lEPSQoZ2l0IHN0YXNoIGNyZWF0ZSkgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJISBncmVwIHF1dXggYmF6enkgJiYKKwlnaXQgc3Rhc2ggc3RvcmUgLW0gcXV1eGVyeSAkU1RBU0hfSUQgJiYKKwl0ZXN0ICQoY2F0IC5naXQvcmVmcy9zdGFzaCkgPSAkU1RBU0hfSUQgJiYKKwlncmVwICRTVEFTSF9JRCAuZ2l0L2xvZ3MvcmVmcy9zdGFzaCAmJgorCWdpdCBzdGFzaCBwb3AgJiYKKwlncmVwIHF1dXggYmF6enkKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MDA4LWRpZmYtYnJlYWstcmV3cml0ZS5zaCBiL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoCmluZGV4IDczYjRhMjQuLjI3ZTk4YTggMTAwNzU1Ci0tLSBhL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoCisrKyBiL3QvdDQwMDgtZGlmZi1icmVhay1yZXdyaXRlLnNoCkBAIC05OSwxMSArOTksMTEgQEAKICAgICAndmFsaWRhdGUgcmVzdWx0IG9mIC1CIC1NICgjNCknIFwKICAgICAnY29tcGFyZV9kaWZmX3JhdyBleHBlY3RlZCBjdXJyZW50JwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdtYWtlIGZpbGUwIGludG8gc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JyBcCiAgICAgJ3JtIC1mIGZpbGUwICYmCi0gICAgIGxuIC1zIGZyb3R6IGZpbGUwICYmCi0gICAgIGdpdCB1cGRhdGUtaW5kZXggZmlsZTAgZmlsZTEnCisgICAgIHRlc3RfbG5fc19hZGQgZnJvdHogZmlsZTAgJiYKKyAgICAgZ2l0IHVwZGF0ZS1pbmRleCBmaWxlMScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3J1biBkaWZmIHdpdGggLUInIFwKQEAgLTExNCw3ICsxMTQsNyBAQAogOjEwMDY0NCAxMDA2NDQgNmZmODdjNDY2NDk4MWU0Mzk3NjI1NzkxYzhlYTNiYmI1ZjIyNzlhMyBmNWRlYWM3YmU1OWU3ZWVhYjg2NTdmZDlhZTcwNmZkNmE1N2RhZWQyIE0xMDAJZmlsZTEKIEVPRgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICd2YWxpZGF0ZSByZXN1bHQgb2YgLUIgKCM1KScgXAogICAgICdjb21wYXJlX2RpZmZfcmF3IGV4cGVjdGVkIGN1cnJlbnQnCiAKQEAgLTEyOSw3ICsxMjksNyBAQAogOjEwMDY0NCAxMDA2NDQgNmZmODdjNDY2NDk4MWU0Mzk3NjI1NzkxYzhlYTNiYmI1ZjIyNzlhMyBmNWRlYWM3YmU1OWU3ZWVhYjg2NTdmZDlhZTcwNmZkNmE1N2RhZWQyIFIJZmlsZTAJZmlsZTEKIEVPRgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICd2YWxpZGF0ZSByZXN1bHQgb2YgLUIgLU0gKCM2KScgXAogICAgICdjb21wYXJlX2RpZmZfcmF3IGV4cGVjdGVkIGN1cnJlbnQnCiAKQEAgLTE0NCw3ICsxNDQsNyBAQAogOjEwMDY0NCAxMDA2NDQgNmZmODdjNDY2NDk4MWU0Mzk3NjI1NzkxYzhlYTNiYmI1ZjIyNzlhMyBmNWRlYWM3YmU1OWU3ZWVhYjg2NTdmZDlhZTcwNmZkNmE1N2RhZWQyIE0JZmlsZTEKIEVPRgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICd2YWxpZGF0ZSByZXN1bHQgb2YgLU0gKCM3KScgXAogICAgICdjb21wYXJlX2RpZmZfcmF3IGV4cGVjdGVkIGN1cnJlbnQnCiAKZGlmZiAtLWdpdCBhL3QvdDQwMTEtZGlmZi1zeW1saW5rLnNoIGIvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKaW5kZXggZjBkNTA0MS4uMTNlN2Y2MiAxMDA3NTUKLS0tIGEvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKKysrIGIvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKQEAgLTksNyArOSw3IEBACiAuIC4vdGVzdC1saWIuc2gKIC4gIiRURVNUX0RJUkVDVE9SWSIvZGlmZi1saWIuc2gKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZGlmZiBuZXcgc3ltbGluayBhbmQgZmlsZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiBuZXcgc3ltbGluayBhbmQgZmlsZScgJwogCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgogCWRpZmYgLS1naXQgYS9mcm90eiBiL2Zyb3R6CiAJbmV3IGZpbGUgbW9kZSAxMjAwMDAKQEAgLTI3LDIyICsyNywyNSBAQAogCUBAIC0wLDAgKzEgQEAKIAkreHl6enkKIAlFT0YKLQlsbiAtcyB4eXp6eSBmcm90eiAmJgotCWVjaG8geHl6enkgPm5pdGZvbCAmJgorCisJIyB0aGUgZW1wdHkgdHJlZQogCWdpdCB1cGRhdGUtaW5kZXggJiYKIAl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCi0JZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBmcm90eiBuaXRmb2wgJiYKKworCXRlc3RfbG5fc19hZGQgeHl6enkgZnJvdHogJiYKKwllY2hvIHh5enp5ID5uaXRmb2wgJiYKKwlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIG5pdGZvbCAmJgogCUdJVF9ESUZGX09QVFM9LS11bmlmaWVkPTAgZ2l0IGRpZmYtaW5kZXggLU0gLXAgJHRyZWUgPmN1cnJlbnQgJiYKIAljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgY3VycmVudAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdkaWZmIHVuY2hhbmdlZCBzeW1saW5rIGFuZCBmaWxlJyAgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiB1bmNoYW5nZWQgc3ltbGluayBhbmQgZmlsZScgICcKIAl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCBmcm90eiBuaXRmb2wgJiYKIAl0ZXN0IC16ICIkKGdpdCBkaWZmLWluZGV4IC0tbmFtZS1vbmx5ICR0cmVlKSIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZGlmZiByZW1vdmVkIHN5bWxpbmsgYW5kIGZpbGUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgcmVtb3ZlZCBzeW1saW5rIGFuZCBmaWxlJyAnCiAJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCiAJZGlmZiAtLWdpdCBhL2Zyb3R6IGIvZnJvdHoKIAlkZWxldGVkIGZpbGUgbW9kZSAxMjAwMDAKQEAgLTY2LDEyICs2OSwxOCBAQAogCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBjdXJyZW50CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2RpZmYgaWRlbnRpY2FsLCBidXQgbmV3bHkgY3JlYXRlZCBzeW1saW5rIGFuZCBmaWxlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaWZmIGlkZW50aWNhbCwgYnV0IG5ld2x5IGNyZWF0ZWQgc3ltbGluayBhbmQgZmlsZScgJwogCT5leHBlY3RlZCAmJgogCXJtIC1mIGZyb3R6IG5pdGZvbCAmJgogCWVjaG8geHl6enkgPm5pdGZvbCAmJgogCXRlc3QtY2htdGltZSArMTAgbml0Zm9sICYmCi0JbG4gLXMgeHl6enkgZnJvdHogJiYKKwlpZiB0ZXN0X2hhdmVfcHJlcmVxIFNZTUxJTktTCisJdGhlbgorCQlsbiAtcyB4eXp6eSBmcm90egorCWVsc2UKKwkJcHJpbnRmIHh5enp5ID5mcm90egorCQkjIHRoZSBzeW1saW5rIHByb3BlcnR5IHByb3BhZ2F0ZXMgZnJvbSB0aGUgaW5kZXgKKwlmaSAmJgogCWdpdCBkaWZmLWluZGV4IC1NIC1wICR0cmVlID5jdXJyZW50ICYmCiAJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGN1cnJlbnQgJiYKIApAQCAtODAsNyArODksNyBAQAogCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBjdXJyZW50CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2RpZmYgZGlmZmVyZW50IHN5bWxpbmsgYW5kIGZpbGUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgZGlmZmVyZW50IHN5bWxpbmsgYW5kIGZpbGUnICcKIAljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKIAlkaWZmIC0tZ2l0IGEvZnJvdHogYi9mcm90egogCWluZGV4IDdjNDY1YWYuLmRmMWRiNTQgMTIwMDAwCkBAIC0xMDAsNyArMTA5LDEzIEBACiAJK3l4eXl6CiAJRU9GCiAJcm0gLWYgZnJvdHogJiYKLQlsbiAtcyB5eHl5eiBmcm90eiAmJgorCWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1MKKwl0aGVuCisJCWxuIC1zIHl4eXl6IGZyb3R6CisJZWxzZQorCQlwcmludGYgeXh5eXogPmZyb3R6CisJCSMgdGhlIHN5bWxpbmsgcHJvcGVydHkgcHJvcGFnYXRlcyBmcm9tIHRoZSBpbmRleAorCWZpICYmCiAJZWNobyB5eHl5eiA+bml0Zm9sICYmCiAJZ2l0IGRpZmYtaW5kZXggLU0gLXAgJHRyZWUgPmN1cnJlbnQgJiYKIAljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgY3VycmVudApkaWZmIC0tZ2l0IGEvdC90NDAxNC1mb3JtYXQtcGF0Y2guc2ggYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAppbmRleCA5MGZkNTk4Li41OGQ0MTgwIDEwMDc1NQotLS0gYS90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAorKysgYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaApAQCAtMjcxLDYgKzI3MSwyMiBAQAogCWxzIHBhdGNoZXMvMDAwMS1TaWRlLWNoYW5nZXMtMS5wYXRjaCBwYXRjaGVzLzAwMDItU2lkZS1jaGFuZ2VzLTIucGF0Y2ggcGF0Y2hlcy8wMDAzLVNpZGUtY2hhbmdlcy0zLXdpdGgtbi1iYWNrc2xhc2gtbi1pbi1pdC5wYXRjaAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXJvbGwgY291bnQnICcKKwlybSAtZnIgcGF0Y2hlcyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLW8gcGF0Y2hlcyAtLWNvdmVyLWxldHRlciAtLXJlcm9sbC1jb3VudCA0IG1hc3Rlci4uc2lkZSA+bGlzdCAmJgorCSEgZ3JlcCAtdiAiXnBhdGNoZXMvdjQtMDAwWzAtM10tIiBsaXN0ICYmCisJc2VkIC1uIC1lICIvXlN1YmplY3Q6IC9wIiAkKGNhdCBsaXN0KSA+c3ViamVjdHMgJiYKKwkhIGdyZXAgLXYgIl5TdWJqZWN0OiBcW1BBVENIIHY0IFswLTNdLzNcXSAiIHN1YmplY3RzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlcm9sbCBjb3VudCAoLXYpJyAnCisJcm0gLWZyIHBhdGNoZXMgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC1vIHBhdGNoZXMgLS1jb3Zlci1sZXR0ZXIgLXY0IG1hc3Rlci4uc2lkZSA+bGlzdCAmJgorCSEgZ3JlcCAtdiAiXnBhdGNoZXMvdjQtMDAwWzAtM10tIiBsaXN0ICYmCisJc2VkIC1uIC1lICIvXlN1YmplY3Q6IC9wIiAkKGNhdCBsaXN0KSA+c3ViamVjdHMgJiYKKwkhIGdyZXAgLXYgIl5TdWJqZWN0OiBcW1BBVENIIHY0IFswLTNdLzNcXSAiIHN1YmplY3RzCisnCisKIGNoZWNrX3RocmVhZGluZyAoKSB7CiAJZXhwZWN0PSIkMSIgJiYKIAlzaGlmdCAmJgpAQCAtNzI2LDIxICs3NDIsMjEgQEAKIAl0ZXN0IDIgPSAkKGdyZXAgIm15IHNpZyIgb3V0cHV0IHwgd2MgLWwpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC5zaWduYXR1cmU9IiIgc3VwcmVzc2VzIHNpZ25hdHVyZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC5zaWduYXR1cmU9IiIgc3VwcHJlc3NlcyBzaWduYXR1cmVzJyAnCiAJZ2l0IGNvbmZpZyBmb3JtYXQuc2lnbmF0dXJlICIiICYmCiAJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtMSA+b3V0cHV0ICYmCiAJY2hlY2tfcGF0Y2ggb3V0cHV0ICYmCiAJISBncmVwICJeLS0gXCQiIG91dHB1dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdmb3JtYXQtcGF0Y2ggLS1uby1zaWduYXR1cmUgc3VwcmVzc2VzIHNpZ25hdHVyZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCAtLW5vLXNpZ25hdHVyZSBzdXBwcmVzc2VzIHNpZ25hdHVyZXMnICcKIAlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGZvcm1hdC5zaWduYXR1cmUgJiYKIAlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tbm8tc2lnbmF0dXJlIC0xID5vdXRwdXQgJiYKIAljaGVja19wYXRjaCBvdXRwdXQgJiYKIAkhIGdyZXAgIl4tLSBcJCIgb3V0cHV0CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Zvcm1hdC1wYXRjaCAtLXNpZ25hdHVyZT0iIiBzdXByZXNzZXMgc2lnbmF0dXJlcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIC0tc2lnbmF0dXJlPSIiIHN1cHByZXNzZXMgc2lnbmF0dXJlcycgJwogCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1zaWduYXR1cmU9IiIgLTEgPm91dHB1dCAmJgogCWNoZWNrX3BhdGNoIG91dHB1dCAmJgogCSEgZ3JlcCAiXi0tIFwkIiBvdXRwdXQKQEAgLTgyMSwyNSArODM3LDI2IEBACiAgPT9VVEYtOD9xPz1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPz0KICA9P1VURi04P3E/PTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwPz0KICA9P1VURi04P3E/YmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2Pz0KLSA9P1VURi04P3E/PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPz0KLSA9P1VURi04P3E/PUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2Pz0KLSA9P1VURi04P3E/PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPz0KLSA9P1VURi04P3E/PUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPz0KKyA9P1VURi04P3E/PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2Pz0KKyA9P1VURi04P3E/PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPz0KICA9P1VURi04P3E/PUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI/PQogID0/VVRGLTg/cT89MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjA/PQogID0/VVRGLTg/cT9iYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY/PQotID0/VVRGLTg/cT89MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM/PQotID0/VVRGLTg/cT89QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY/PQotID0/VVRGLTg/cT89QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM/PQotID0/VVRGLTg/cT89QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY/PQorID0/VVRGLTg/cT89MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY/PQorID0/VVRGLTg/cT89QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY/PQogID0/VVRGLTg/cT89QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj89CiAgPT9VVEYtOD9xPz0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMD89CiAgPT9VVEYtOD9xP2Jhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj89Ci0gPT9VVEYtOD9xPz0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz89Ci0gPT9VVEYtOD9xPz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89Ci0gPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz89Ci0gPT9VVEYtOD9xPz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj89Ci0gPT9VVEYtOD9xPz1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI/PQorID0/VVRGLTg/cT89MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY/PQorID0/VVRGLTg/cT89QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY/PQorID0/VVRGLTg/cT89QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMGJhcj89CisgPT9VVEYtOD9xPz0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj0yMD89CisgPT9VVEYtOD9xP2Jhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj1DMz1CNj89CisgPT9VVEYtOD9xPz0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj1DMz1CNj89CisgPT9VVEYtOD9xPz1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPTIwZj89CisgPT9VVEYtOD9xPz1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwYmFyPz0KKyA9P1VURi04P3E/PTIwZj1DMz1CNj1DMz1CNj0yMGJhcj0yMGY9QzM9QjY9QzM9QjY9MjBiYXI9MjBmPUMzPUI2PUMzPUI2PTIwPz0KKyA9P1VURi04P3E/YmFyPz0KIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0LXBhdGNoIHdyYXBzIGV4dHJlbWVseSBsb25nIHN1YmplY3QgKHJmYzIwNDcpJyAnCiAJcm0gLXJmIHBhdGNoZXMvICYmCkBAIC05NTUsNiArOTcyLDI2OCBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAorYXBwZW5kX3NpZ25vZmYoKQoreworCUM9JChnaXQgY29tbWl0LXRyZWUgSEVBRF5ee3RyZWV9IC1wIEhFQUQpICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLXNpZ25vZmYgJENeLi4kQyA+YXBwZW5kX3NpZ25vZmYucGF0Y2ggJiYKKwlzZWQgLW4gLWUgIjEsL14tLS0kL3AiIGFwcGVuZF9zaWdub2ZmLnBhdGNoIHwKKwkJZWdyZXAgLW4gIl5TdWJqZWN0fFNpZ258XiQiCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IGNvbW1pdCB3aXRoIG5vIGJvZHknICcKKwlhcHBlbmRfc2lnbm9mZiA8L2Rldi9udWxsID5hY3R1YWwgJiYKKwljYXQgPDxcRU9GIHwgc2VkICJzL0VPTCQvLyIgPmV4cGVjdGVkICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gRU9MCis4OgorOTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogY29tbWl0IHdpdGggb25seSBzdWJqZWN0JyAnCisJZWNobyBzdWJqZWN0IHwgYXBwZW5kX3NpZ25vZmYgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gc3ViamVjdAorODoKKzk6U2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IGNvbW1pdCB3aXRoIG9ubHkgc3ViamVjdCB0aGF0IGRvZXMgbm90IGVuZCB3aXRoIE5MJyAnCisJcHJpbnRmIHN1YmplY3QgfCBhcHBlbmRfc2lnbm9mZiA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorOTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogbm8gZXhpc3Rpbmcgc2lnbm9mZnMnICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitib2R5CitFT0YKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6CisxMDoKKzExOlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBubyBleGlzdGluZyBzaWdub2ZmcyBhbmQgbm8gdHJhaWxpbmcgTkwnICcKKwlwcmludGYgInN1YmplY3RcblxuYm9keSIgfCBhcHBlbmRfc2lnbm9mZiA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogc29tZSByYW5kb20gc2lnbm9mZicgJworCWFwcGVuZF9zaWdub2ZmIDw8XEVPRiA+YWN0dWFsICYmCitzdWJqZWN0CisKK2JvZHkKKworU2lnbmVkLW9mZi1ieTogbXlAaG91c2UKK0VPRgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gc3ViamVjdAorODoKKzEwOgorMTE6U2lnbmVkLW9mZi1ieTogbXlAaG91c2UKKzEyOlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBtaXNjIGNvbmZvcm1pbmcgZm9vdGVyIGVsZW1lbnRzJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworYm9keQorCitTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOSkKK1Rlc3RlZC1ieTogU29tZSBPbmUgPHNvbWVvbmVAZXhhbXBsZS5jb20+CitCdWc6IDEyMzQKK0VPRgorCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCis0OlN1YmplY3Q6IFtQQVRDSF0gc3ViamVjdAorODoKKzEwOgorMTE6U2lnbmVkLW9mZi1ieTogbXlAaG91c2UKKzE1OlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBzb21lIHJhbmRvbSBzaWdub2ZmLWFsaWtlJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworYm9keQorRm9vbGVkLWJ5LW1lOiBteUBob3VzZQorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTE6CisxMjpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogbm90IHJlYWxseSBhIHNpZ25vZmYnICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitJIHdhbnQgdG8gbWVudGlvbiBhYm91dCBTaWduZWQtb2ZmLWJ5OiBoZXJlLgorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorOTpJIHdhbnQgdG8gbWVudGlvbiBhYm91dCBTaWduZWQtb2ZmLWJ5OiBoZXJlLgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogbm90IHJlYWxseSBhIHNpZ25vZmYgKDIpJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworTXkgdW5mb3J0dW5hdGUKK1NpZ25lZC1vZmYtYnk6IGV4YW1wbGUgaGFwcGVucyB0byBiZSB3cmFwcGVkIGhlcmUuCitFT0YKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6CisxMDpTaWduZWQtb2ZmLWJ5OiBleGFtcGxlIGhhcHBlbnMgdG8gYmUgd3JhcHBlZCBoZXJlLgorMTE6CisxMjpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogdmFsaWQgUy1vLWIgcGFyYWdyYXBoIGluIHRoZSBtaWRkbGUnICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorU2lnbmVkLW9mZi1ieTogeW91ckBob3VzZQorCitBIGxvdCBvZiBob3VzZXMuCitFT0YKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6Cis5OlNpZ25lZC1vZmYtYnk6IG15QGhvdXNlCisxMDpTaWduZWQtb2ZmLWJ5OiB5b3VyQGhvdXNlCisxMToKKzEzOgorMTQ6U2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IHRoZSBzYW1lIHNpZ25vZmYgYXQgdGhlIGVuZCcgJworCWFwcGVuZF9zaWdub2ZmIDw8XEVPRiA+YWN0dWFsICYmCitzdWJqZWN0CisKK2JvZHkKKworU2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2lnbm9mZjogdGhlIHNhbWUgc2lnbm9mZiBhdCB0aGUgZW5kLCBubyB0cmFpbGluZyBOTCcgJworCXByaW50ZiAic3ViamVjdFxuXG5TaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+IiB8CisJCWFwcGVuZF9zaWdub2ZmID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdGVkIDw8XEVPRiAmJgorNDpTdWJqZWN0OiBbUEFUQ0hdIHN1YmplY3QKKzg6Cis5OlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiB0aGUgc2FtZSBzaWdub2ZmIE5PVCBhdCB0aGUgZW5kJyAnCisJYXBwZW5kX3NpZ25vZmYgPDxcRU9GID5hY3R1YWwgJiYKK3N1YmplY3QKKworYm9keQorCitTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMTpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CisxMjpTaWduZWQtb2ZmLWJ5OiBteUBob3VzZQorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25vZmY6IGRldGVjdCBnYXJiYWdlIGluIG5vbi1jb25mb3JtaW5nIGZvb3RlcicgJworCWFwcGVuZF9zaWdub2ZmIDw8XEVPRiA+YWN0dWFsICYmCitzdWJqZWN0CisKK2JvZHkKKworVGVzdGVkLWJ5OiBteUBob3VzZQorU29tZSBUcmFzaAorU2lnbmVkLW9mZi1ieTogQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxMzpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CisxNDoKKzE1OlNpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaWdub2ZmOiBmb290ZXIgYmVnaW5zIHdpdGggbm9uLXNpZ25vZmYgd2l0aG91dCBAIHNpZ24nICcKKwlhcHBlbmRfc2lnbm9mZiA8PFxFT0YgPmFjdHVhbCAmJgorc3ViamVjdAorCitib2R5CisKK1Jldmlld2VkLWlkOiBOb29uZQorVGVzdGVkLWJ5OiBteUBob3VzZQorQ2hhbmdlLWlkOiBJZGVhZGJlZWYKK1NpZ25lZC1vZmYtYnk6IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0J1ZzogMTIzNAorRU9GCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKKzQ6U3ViamVjdDogW1BBVENIXSBzdWJqZWN0Cis4OgorMTA6CisxNDpTaWduZWQtb2ZmLWJ5OiBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZm9ybWF0IHBhdGNoIGlnbm9yZXMgY29sb3IudWknICcKIAl0ZXN0X3VuY29uZmlnIGNvbG9yLnVpICYmCiAJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtMSA+ZXhwZWN0ICYmCkBAIC05NjMsNCArMTI0Miw3OSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoMSknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgbWFzdGVyID5hY3R1YWwgJiYKKwlncmVwIGhlbGxvIGFjdHVhbCA+L2Rldi9udWxsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB1c2luZyBicmFuY2ggZGVzY3JpcHRpb24gKDIpJyAnCisJZ2l0IGNoZWNrb3V0IHJlYnVpbGQtMSAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gaGVsbG8gJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIHJlYnVpbGQtMX4yLi5yZWJ1aWxkLTEgPmFjdHVhbCAmJgorCWdyZXAgaGVsbG8gYWN0dWFsID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoMyknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgXm1hc3RlciByZWJ1aWxkLTEgPmFjdHVhbCAmJgorCWdyZXAgaGVsbG8gYWN0dWFsID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoNCknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgbWFzdGVyLi4gPmFjdHVhbCAmJgorCWdyZXAgaGVsbG8gYWN0dWFsID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHVzaW5nIGJyYW5jaCBkZXNjcmlwdGlvbiAoNSknICcKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiBoZWxsbyAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgLTIgSEVBRCA+YWN0dWFsICYmCisJZ3JlcCBoZWxsbyBhY3R1YWwgPi9kZXYvbnVsbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgdXNpbmcgYnJhbmNoIGRlc2NyaXB0aW9uICg2KScgJworCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gucmVidWlsZC0xLmRlc2NyaXB0aW9uIGhlbGxvICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciAtMiA+YWN0dWFsICYmCisJZ3JlcCBoZWxsbyBhY3R1YWwgPi9kZXYvbnVsbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgd2l0aCBub3RoaW5nJyAnCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciA+YWN0dWFsICYmCisJdGVzdF9saW5lX2NvdW50ID0gMCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIGF1dG8nICcKKwlta2RpciAtcCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiB0bXA7CisJCWdpdCBjb25maWcgLS11bnNldCBmb3JtYXQuY292ZXJsZXR0ZXIiICYmCisKKwlnaXQgY29uZmlnIGZvcm1hdC5jb3ZlcmxldHRlciBhdXRvICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtbyB0bXAgLTEgPmxpc3QgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAxIGxpc3QgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC1vIHRtcCAtMiA+bGlzdCAmJgorCXRlc3RfbGluZV9jb3VudCA9IDMgbGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgYXV0byB1c2VyIG92ZXJyaWRlJyAnCisJbWtkaXIgLXAgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgdG1wOworCQlnaXQgY29uZmlnIC0tdW5zZXQgZm9ybWF0LmNvdmVybGV0dGVyIiAmJgorCisJZ2l0IGNvbmZpZyBmb3JtYXQuY292ZXJsZXR0ZXIgYXV0byAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLW8gdG1wIC0tY292ZXItbGV0dGVyIC0xID5saXN0ICYmCisJdGVzdF9saW5lX2NvdW50ID0gMiBsaXN0ICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtbyB0bXAgLS1jb3Zlci1sZXR0ZXIgLTIgPmxpc3QgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAzIGxpc3QgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC1vIHRtcCAtLW5vLWNvdmVyLWxldHRlciAtMSA+bGlzdCAmJgorCXRlc3RfbGluZV9jb3VudCA9IDEgbGlzdCAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLW8gdG1wIC0tbm8tY292ZXItbGV0dGVyIC0yID5saXN0ICYmCisJdGVzdF9saW5lX2NvdW50ID0gMiBsaXN0CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoIGIvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoCmluZGV4IDA4MmQzZTguLjM4YTA5MmEgMTAwNzU1Ci0tLSBhL3QvdDQwMTgtZGlmZi1mdW5jbmFtZS5zaAorKysgYi90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2gKQEAgLTkzLDExICs5Myw2IEBACiAJcy9zb25nOy9zb25nKCk7LwogJyA8QmVlci5wZXJsID5CZWVyLWNvcnJlY3QucGVybAogCi10ZXN0X2NvbmZpZyAoKSB7Ci0JZ2l0IGNvbmZpZyAiJDEiICIkMiIgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCAkMSIKLX0KLQogdGVzdF9leHBlY3RfZnVuY25hbWUgKCkgewogCWxhbmc9JHsyLWphdmF9CiAJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBkaWZmIC0tbm8taW5kZXggLVUxIFwKZGlmZiAtLWdpdCBhL3QvdDQwMjMtZGlmZi1yZW5hbWUtdHlwZWNoYW5nZS5zaCBiL3QvdDQwMjMtZGlmZi1yZW5hbWUtdHlwZWNoYW5nZS5zaAppbmRleCA1ZDIwYWNmLi41NWQ1NDlmIDEwMDc1NQotLS0gYS90L3Q0MDIzLWRpZmYtcmVuYW1lLXR5cGVjaGFuZ2Uuc2gKKysrIGIvdC90NDAyMy1kaWZmLXJlbmFtZS10eXBlY2hhbmdlLnNoCkBAIC00LDQ0ICs0LDQ0IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIHNldHVwICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCiAJcm0gLWYgZm9vIGJhciAmJgogCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5mb28gJiYKLQlsbiAtcyBsaW5rbGluayBiYXIgJiYKLQlnaXQgYWRkIGZvbyBiYXIgJiYKKwl0ZXN0X2xuX3NfYWRkIGxpbmtsaW5rIGJhciAmJgorCWdpdCBhZGQgZm9vICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBJbml0aWFsICYmCiAJZ2l0IHRhZyBvbmUgJiYKIAotCXJtIC1mIGZvbyBiYXIgJiYKKwlnaXQgcm0gLWYgZm9vIGJhciAmJgogCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9DT1BZSU5HID5iYXIgJiYKLQlsbiAtcyBsaW5rbGluayBmb28gJiYKLQlnaXQgYWRkIGZvbyBiYXIgJiYKKwl0ZXN0X2xuX3NfYWRkIGxpbmtsaW5rIGZvbyAmJgorCWdpdCBhZGQgYmFyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBTZWNvbmQgJiYKIAlnaXQgdGFnIHR3byAmJgogCi0Jcm0gLWYgZm9vIGJhciAmJgorCWdpdCBybSAtZiBmb28gYmFyICYmCiAJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmZvbyAmJgogCWdpdCBhZGQgZm9vICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBUaGlyZCAmJgogCWdpdCB0YWcgdGhyZWUgJiYKIAogCW12IGZvbyBiYXIgJiYKLQlsbiAtcyBsaW5rbGluayBmb28gJiYKLQlnaXQgYWRkIGZvbyBiYXIgJiYKKwl0ZXN0X2xuX3NfYWRkIGxpbmtsaW5rIGZvbyAmJgorCWdpdCBhZGQgYmFyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBGb3VydGggJiYKIAlnaXQgdGFnIGZvdXIgJiYKIAogCSMgVGhpcyBpcyBwdXJlbHkgZm9yIHNhbml0eSBjaGVjawogCi0Jcm0gLWYgZm9vIGJhciAmJgorCWdpdCBybSAtZiBmb28gYmFyICYmCiAJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL0NPUFlJTkcgPmZvbyAmJgogCWNhdCAiJFRFU1RfRElSRUNUT1JZIi8uLi9NYWtlZmlsZSA+YmFyICYmCiAJZ2l0IGFkZCBmb28gYmFyICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSBGaWZ0aCAmJgogCWdpdCB0YWcgZml2ZSAmJgogCi0Jcm0gLWYgZm9vIGJhciAmJgorCWdpdCBybSAtZiBmb28gYmFyICYmCiAJY2F0ICIkVEVTVF9ESVJFQ1RPUlkiLy4uL01ha2VmaWxlID5mb28gJiYKIAljYXQgIiRURVNUX0RJUkVDVE9SWSIvLi4vQ09QWUlORyA+YmFyICYmCiAJZ2l0IGFkZCBmb28gYmFyICYmCkBAIC01MCw3ICs1MCw3IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnY3Jvc3MgcmVuYW1lcyB0byBiZSBkZXRlY3RlZCBmb3IgcmVndWxhciBmaWxlcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3Jvc3MgcmVuYW1lcyB0byBiZSBkZXRlY3RlZCBmb3IgcmVndWxhciBmaWxlcycgJwogCiAJZ2l0IGRpZmYtdHJlZSBmaXZlIHNpeCAtciAtLW5hbWUtc3RhdHVzIC1CIC1NIHwgc29ydCA+YWN0dWFsICYmCiAJewpAQCAtNjEsNyArNjEsNyBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2Nyb3NzIHJlbmFtZXMgdG8gYmUgZGV0ZWN0ZWQgZm9yIHR5cGVjaGFuZ2UnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nyb3NzIHJlbmFtZXMgdG8gYmUgZGV0ZWN0ZWQgZm9yIHR5cGVjaGFuZ2UnICcKIAogCWdpdCBkaWZmLXRyZWUgb25lIHR3byAtciAtLW5hbWUtc3RhdHVzIC1CIC1NIHwgc29ydCA+YWN0dWFsICYmCiAJewpAQCAtNzIsNyArNzIsNyBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ21vdmVzIGFuZCByZW5hbWVzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb3ZlcyBhbmQgcmVuYW1lcycgJwogCiAJZ2l0IGRpZmYtdHJlZSB0aHJlZSBmb3VyIC1yIC0tbmFtZS1zdGF0dXMgLUIgLU0gfCBzb3J0ID5hY3R1YWwgJiYKIAl7CmRpZmYgLS1naXQgYS90L3Q0MDMwLWRpZmYtdGV4dGNvbnYuc2ggYi90L3Q0MDMwLWRpZmYtdGV4dGNvbnYuc2gKaW5kZXggNTNlYzMzMC4uZjc1ZjQ2ZiAxMDA3NTUKLS0tIGEvdC90NDAzMC1kaWZmLXRleHRjb252LnNoCisrKyBiL3QvdDQwMzAtZGlmZi10ZXh0Y29udi5zaApAQCAtMTM5LDEyICsxMzksMTAgQEAKICtmcm90egogXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiBFT0YKLSMgbWFrZSBhIHN5bWxpbmsgdGhlIGhhcmQgd2F5IHRoYXQgd29ya3Mgb24gc3ltbGluay1jaGFsbGVuZ2VkIGZpbGUgc3lzdGVtcworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXh0Y29udiBkb2VzIG5vdCBhY3Qgb24gc3ltbGlua3MnICcKLQlwcmludGYgZnJvdHogPiBmaWxlICYmCi0JZ2l0IGFkZCBmaWxlICYmCi0JZ2l0IGxzLWZpbGVzIC1zIHwgc2VkIC1lIHMvMTAwNjQ0LzEyMDAwMC8gfAotCQlnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgorCXJtIC1mIGZpbGUgJiYKKwl0ZXN0X2xuX3NfYWRkIGZyb3R6IGZpbGUgJiYKIAlnaXQgY29tbWl0IC1tIHR5cGVjaGFuZ2UgJiYKIAlnaXQgc2hvdyA+ZGlmZiAmJgogCWZpbmRfZGlmZiA8ZGlmZiA+YWN0dWFsICYmCmRpZmYgLS1naXQgYS90L3Q0MDM0LWRpZmYtd29yZHMuc2ggYi90L3Q0MDM0LWRpZmYtd29yZHMuc2gKaW5kZXggNDBhYjMzMy4uZjJmNTVmYyAxMDA3NTUKLS0tIGEvdC90NDAzNC1kaWZmLXdvcmRzLnNoCisrKyBiL3QvdDQwMzQtZGlmZi13b3Jkcy5zaApAQCAtMjMwLDcgKzIzMCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwOiByZW1vdmUgZGlmZiBkcml2ZXIgcmVnZXgnICcKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYudGVzdGRyaXZlci53b3JkUmVnZXgKKwl0ZXN0X3VuY29uZmlnIGRpZmYudGVzdGRyaXZlci53b3JkUmVnZXgKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndXNlIGNvbmZpZ3VyZWQgcmVnZXgnICcKQEAgLTMzNSw4ICszMzUsNyBAQAogCiAJYwogCUVPRgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYuc3VwcHJlc3MtYmxhbmstZW1wdHkiICYmCi0JZ2l0IGNvbmZpZyBkaWZmLnN1cHByZXNzLWJsYW5rLWVtcHR5IHRydWUgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmLnN1cHByZXNzLWJsYW5rLWVtcHR5IHRydWUgJiYKIAl3b3JkX2RpZmYgLS13b3JkLWRpZmY9cGxhaW4KICcKIApAQCAtMzY4LDcgKzM2Nyw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dvcmRSZWdleCBmb3IgdGhlIGZpcnN0IGZpbGUgZG9lcyBub3QgYXBwbHkgdG8gdGhlIHNlY29uZCcgJwogCWVjaG8gIioudGV4IGRpZmY9dGV4IiA+LmdpdGF0dHJpYnV0ZXMgJiYKLQlnaXQgY29uZmlnIGRpZmYudGV4LndvcmRSZWdleCAiW2Etel0rfC4iICYmCisJdGVzdF9jb25maWcgZGlmZi50ZXgud29yZFJlZ2V4ICJbYS16XSt8LiIgJiYKIAljYXQgPmV4cGVjdCA8PC1cRU9GICYmCiAJCWRpZmYgLS1naXQgYS9hLnRleCBiL2EudGV4CiAJCS0tLSBhL2EudGV4CmRpZmYgLS1naXQgYS90L3Q0MDM4LWRpZmYtY29tYmluZWQuc2ggYi90L3Q0MDM4LWRpZmYtY29tYmluZWQuc2gKaW5kZXggNjE0NDI1YS4uMTAxOWQ3YiAxMDA3NTUKLS0tIGEvdC90NDAzOC1kaWZmLWNvbWJpbmVkLnNoCisrKyBiL3QvdDQwMzgtZGlmZi1jb21iaW5lZC5zaApAQCAtMyw2ICszLDcgQEAKIHRlc3RfZGVzY3JpcHRpb249J2NvbWJpbmVkIGRpZmYnCiAKIC4gLi90ZXN0LWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCiBzZXR1cF9oZWxwZXIgKCkgewogCW9uZT0kMSBicmFuY2g9JDIgc2lkZT0kMyAmJgpAQCAtMTEzLDQgKzExNCwyOTEgQEAKIAlncmVwICJeOjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OlteOl0iIG91dAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBjb21iaW5lZCBpZ25vcmUgc3BhY2VzJyAnCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCT50ZXN0ICYmCisJZ2l0IGFkZCB0ZXN0ICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisKKwl0ciAtZCBRIDw8LVxFT0YgPnRlc3QgJiYKKwlhbHdheXMgY29hbGVzY2UKKwllb2wgc3BhY2UgY29hbGVzY2UgUQorCXNwYWNlICBjaGFuZ2UgY29hbGVzY2UKKwlhbGwgc3BhIGNlcyBjb2FsZXNjZQorCWVvbCBzcGFjZXMgUQorCXNwYWNlICBjaGFuZ2UKKwlhbGwgc3BhIGNlcworCUVPRgorCWdpdCBjb21taXQgLW0gInRlc3Qgc3BhY2UgY2hhbmdlIiAtYSAmJgorCisJZ2l0IGNoZWNrb3V0IC1iIHNpZGUgSEVBRF4gJiYKKwl0ciAtZCBRIDw8LVxFT0YgPnRlc3QgJiYKKwlhbHdheXMgY29hbGVzY2UKKwllb2wgc3BhY2UgY29hbGVzY2UKKwlzcGFjZSBjaGFuZ2UgY29hbGVzY2UKKwlhbGwgc3BhY2VzIGNvYWxlc2NlCisJZW9sIHNwYWNlcworCXNwYWNlIGNoYW5nZQorCWFsbCBzcGFjZXMKKwlFT0YKKwlnaXQgY29tbWl0IC1tICJ0ZXN0IG90aGVyIHNwYWNlIGNoYW5nZXMiIC1hICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgbWFzdGVyICYmCisJdHIgLWQgUSA8PC1cRU9GID50ZXN0ICYmCisJZW9sIHNwYWNlcyBRCisJc3BhY2UgIGNoYW5nZQorCWFsbCBzcGEgY2VzCisJRU9GCisJZ2l0IGNvbW1pdCAtbSBtZXJnZWQgLWEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgY29tYmluZWQgb3V0cHV0IChubyBpZ25vcmUgc3BhY2UpJyAnCisJZ2l0IHNob3cgPmFjdHVhbC50bXAgJiYKKwlzZWQgLWUgIjEsL15AQEAvZCIgPCBhY3R1YWwudG1wID5hY3R1YWwgJiYKKwl0ciAtZCBRIDw8LVxFT0YgPmV4cGVjdGVkICYmCisJLS1hbHdheXMgY29hbGVzY2UKKwktIGVvbCBzcGFjZSBjb2FsZXNjZQorCS0gc3BhY2UgY2hhbmdlIGNvYWxlc2NlCisJLSBhbGwgc3BhY2VzIGNvYWxlc2NlCisJLSBlb2wgc3BhY2VzCisJLSBzcGFjZSBjaGFuZ2UKKwktIGFsbCBzcGFjZXMKKwkgLWVvbCBzcGFjZSBjb2FsZXNjZSBRCisJIC1zcGFjZSAgY2hhbmdlIGNvYWxlc2NlCisJIC1hbGwgc3BhIGNlcyBjb2FsZXNjZQorCSsgZW9sIHNwYWNlcyBRCisJKyBzcGFjZSAgY2hhbmdlCisJKyBhbGwgc3BhIGNlcworCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgY29tYmluZWQgb3V0cHV0IChpZ25vcmUgc3BhY2UgYXQgZW9sKScgJworCWdpdCBzaG93IC0taWdub3JlLXNwYWNlLWF0LWVvbCA+YWN0dWFsLnRtcCAmJgorCXNlZCAtZSAiMSwvXkBAQC9kIiA8IGFjdHVhbC50bXAgPmFjdHVhbCAmJgorCXRyIC1kIFEgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktLWFsd2F5cyBjb2FsZXNjZQorCS0tZW9sIHNwYWNlIGNvYWxlc2NlCisJLSBzcGFjZSBjaGFuZ2UgY29hbGVzY2UKKwktIGFsbCBzcGFjZXMgY29hbGVzY2UKKwkgLXNwYWNlICBjaGFuZ2UgY29hbGVzY2UKKwkgLWFsbCBzcGEgY2VzIGNvYWxlc2NlCisJICBlb2wgc3BhY2VzIFEKKwktIHNwYWNlIGNoYW5nZQorCS0gYWxsIHNwYWNlcworCSsgc3BhY2UgIGNoYW5nZQorCSsgYWxsIHNwYSBjZXMKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIGNvbWJpbmVkIG91dHB1dCAoaWdub3JlIHNwYWNlIGNoYW5nZSknICcKKwlnaXQgc2hvdyAtYiA+YWN0dWFsLnRtcCAmJgorCXNlZCAtZSAiMSwvXkBAQC9kIiA8IGFjdHVhbC50bXAgPmFjdHVhbCAmJgorCXRyIC1kIFEgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktLWFsd2F5cyBjb2FsZXNjZQorCS0tZW9sIHNwYWNlIGNvYWxlc2NlCisJLS1zcGFjZSBjaGFuZ2UgY29hbGVzY2UKKwktIGFsbCBzcGFjZXMgY29hbGVzY2UKKwkgLWFsbCBzcGEgY2VzIGNvYWxlc2NlCisJICBlb2wgc3BhY2VzIFEKKwkgIHNwYWNlICBjaGFuZ2UKKwktIGFsbCBzcGFjZXMKKwkrIGFsbCBzcGEgY2VzCisJRU9GCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBjb21iaW5lZCBvdXRwdXQgKGlnbm9yZSBhbGwgc3BhY2VzKScgJworCWdpdCBzaG93IC13ID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0tYWx3YXlzIGNvYWxlc2NlCisJLS1lb2wgc3BhY2UgY29hbGVzY2UKKwktLXNwYWNlIGNoYW5nZSBjb2FsZXNjZQorCS0tYWxsIHNwYWNlcyBjb2FsZXNjZQorCSAgZW9sIHNwYWNlcyBRCisJICBzcGFjZSAgY2hhbmdlCisJICBhbGwgc3BhIGNlcworCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tYmluZSBkaWZmIGNvYWxlc2NlIHNpbXBsZScgJworCT50ZXN0ICYmCisJZ2l0IGFkZCB0ZXN0ICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJdGVzdF9zZXEgNCA+dGVzdCAmJgorCWdpdCBjb21taXQgLWEgLW0gZW1wdHkxICYmCisJZ2l0IGJyYW5jaCBzaWRlMSAmJgorCWdpdCBjaGVja291dCBIRUFEXiAmJgorCXRlc3Rfc2VxIDUgPnRlc3QgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGVtcHR5MiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBzaWRlMSAmJgorCT50ZXN0ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBtZXJnZSAmJgorCWdpdCBzaG93ID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0tMQorCS0tMgorCS0tMworCS0tNAorCS0gNQorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tYmluZSBkaWZmIGNvYWxlc2NlIHRyaWNreScgJworCT50ZXN0ICYmCisJZ2l0IGFkZCB0ZXN0ICYmCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsIC0tYWxsb3ctZW1wdHkgJiYKKwljYXQgPDwtXEVPRiA+dGVzdCAmJgorCTMKKwkxCisJMgorCTMKKwk0CisJRU9GCisJZ2l0IGNvbW1pdCAtYSAtbSBlbXB0eTEgJiYKKwlnaXQgYnJhbmNoIC1mIHNpZGUxICYmCisJZ2l0IGNoZWNrb3V0IEhFQUReICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkxCisJMworCTUKKwk0CisJRU9GCisJZ2l0IGNvbW1pdCAtYSAtbSBlbXB0eTIgJiYKKwlnaXQgYnJhbmNoIC1mIHNpZGUyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIHNpZGUxICYmCisJPnRlc3QgJiYKKwlnaXQgY29tbWl0IC1hIC1tIG1lcmdlICYmCisJZ2l0IHNob3cgPmFjdHVhbC50bXAgJiYKKwlzZWQgLWUgIjEsL15AQEAvZCIgPCBhY3R1YWwudG1wID5hY3R1YWwgJiYKKwl0ciAtZCBRIDw8LVxFT0YgPmV4cGVjdGVkICYmCisJIC0zCisJLS0xCisJIC0yCisJLS0zCisJLSA1CisJLS00CisJRU9GCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbCAmJgorCWdpdCBjaGVja291dCAtZiBzaWRlMSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBzaWRlMiAmJgorCT50ZXN0ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBtZXJnZSAmJgorCWdpdCBzaG93ID5hY3R1YWwudG1wICYmCisJc2VkIC1lICIxLC9eQEBAL2QiIDwgYWN0dWFsLnRtcCA+YWN0dWFsICYmCisJdHIgLWQgUSA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0gMworCS0tMQorCS0gMgorCS0tMworCSAtNQorCS0tNAorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAnY29tYmluZSBkaWZmIGNvYWxlc2NlIHRocmVlIHBhcmVudHMnICcKKwk+dGVzdCAmJgorCWdpdCBhZGQgdGVzdCAmJgorCWdpdCBjb21taXQgLW0gaW5pdGlhbCAtLWFsbG93LWVtcHR5ICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkzCisJMQorCTIKKwkzCisJNAorCUVPRgorCWdpdCBjb21taXQgLWEgLW0gZW1wdHkxICYmCisJZ2l0IGNoZWNrb3V0IC1CIHNpZGUxICYmCisJZ2l0IGNoZWNrb3V0IEhFQUReICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkxCisJMworCTcKKwk1CisJNAorCUVPRgorCWdpdCBjb21taXQgLWEgLW0gZW1wdHkyICYmCisJZ2l0IGJyYW5jaCAtZiBzaWRlMiAmJgorCWdpdCBjaGVja291dCBIRUFEXiAmJgorCWNhdCA8PC1cRU9GID50ZXN0ICYmCisJMworCTEKKwk2CisJNQorCTQKKwlFT0YKKwlnaXQgY29tbWl0IC1hIC1tIGVtcHR5MyAmJgorCT50ZXN0ICYmCisJZ2l0IGFkZCB0ZXN0ICYmCisJVFJFRT0kKGdpdCB3cml0ZS10cmVlKSAmJgorCUNPTU1JVD0kKGdpdCBjb21taXQtdHJlZSAtcCBIRUFEIC1wIHNpZGUxIC1wIHNpZGUyIC1tIG1lcmdlICRUUkVFKSAmJgorCWdpdCBzaG93ICRDT01NSVQgPmFjdHVhbC50bXAgJiYKKwlzZWQgLWUgIjEsL15AQEAvZCIgPCBhY3R1YWwudG1wID5hY3R1YWwgJiYKKwl0ciAtZCBRIDw8LVxFT0YgPmV4cGVjdGVkICYmCisJLS0gMworCS0tLTEKKwktICA2CisJIC0gMgorCSAtLTMKKwkgIC03CisJLSAtNQorCS0tLTQKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKKyMgVGVzdCBmb3IgYSBidWcgcmVwb3J0ZWQgYXQKKyMgaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUuY29tcC52ZXJzaW9uLWNvbnRyb2wuZ2l0LzIyNDQxMAorIyB3aGVyZSBhIGRlbGV0ZSBsaW5lcyB3ZXJlIG1pc3NpbmcgZnJvbSBjb21iaW5lZCBkaWZmIG91dHB1dCB3aGVuIHRoZXkKKyMgb2NjdXJyZWQgZXhhY3RseSBiZWZvcmUgdGhlIGNvbnRleHQgbGluZXMgb2YgYSBsYXRlciBjaGFuZ2UuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21iaW5lIGRpZmYgbWlzc2luZyBkZWxldGUgYnVnJyAnCisJZ2l0IGNvbW1pdCAtbSBpbml0aWFsIC0tYWxsb3ctZW1wdHkgJiYKKwljYXQgPDwtXEVPRiA+dGVzdCAmJgorCTEKKwkyCisJMworCTQKKwlFT0YKKwlnaXQgYWRkIHRlc3QgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHNpZGUxICYmCisJZ2l0IGNoZWNrb3V0IC1CIHNpZGUxICYmCisJZ2l0IGNoZWNrb3V0IEhFQUReICYmCisJY2F0IDw8LVxFT0YgPnRlc3QgJiYKKwkwCisJMQorCTIKKwkzCisJNG1vZGlmaWVkCisJRU9GCisJZ2l0IGFkZCB0ZXN0ICYmCisJZ2l0IGNvbW1pdCAtbSBzaWRlMiAmJgorCWdpdCBicmFuY2ggLWYgc2lkZTIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLS1uby1jb21taXQgc2lkZTEgJiYKKwljYXQgPDwtXEVPRiA+dGVzdCAmJgorCTEKKwkyCisJMworCTRtb2RpZmllZAorCUVPRgorCWdpdCBhZGQgdGVzdCAmJgorCWdpdCBjb21taXQgLWEgLW0gbWVyZ2UgJiYKKwlnaXQgZGlmZi10cmVlIC1jIC1wIEhFQUQgPmFjdHVhbC50bXAgJiYKKwlzZWQgLWUgIjEsL15AQEAvZCIgPCBhY3R1YWwudG1wID5hY3R1YWwgJiYKKwl0ciAtZCBRIDw8LVxFT0YgPmV4cGVjdGVkICYmCisJLSAwCisJICAxCisJICAyCisJICAzCisJIC00CisJICs0bW9kaWZpZWQKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDA0Mi1kaWZmLXRleHRjb252LWNhY2hpbmcuc2ggYi90L3Q0MDQyLWRpZmYtdGV4dGNvbnYtY2FjaGluZy5zaAppbmRleCA5MWY4MTk4Li4wNGE0NGQ1IDEwMDc1NQotLS0gYS90L3Q0MDQyLWRpZmYtdGV4dGNvbnYtY2FjaGluZy5zaAorKysgYi90L3Q0MDQyLWRpZmYtdGV4dGNvbnYtY2FjaGluZy5zaApAQCAtMTA2LDQgKzEwNiwxMiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAorIyBUaGUgcG9pbnQgaGVyZSBpcyB0byB0ZXN0IHRoYXQgd2UgY2FuIGxvZyB0aGUgbm90ZXMgY2FjaGUgYW5kIHN0aWxsIHVzZSBpdCB0bworIyBwcm9kdWNlIGEgZGlmZiBsYXRlciAob2xkZXIgdmVyc2lvbnMgb2YgZ2l0IHdvdWxkIHNlZ2ZhdWx0IG9uIHRoaXMpLiBJdCdzCisjIG11Y2ggbW9yZSBsaWtlbHkgdG8gY29tZSB1cCBpbiB0aGUgcmVhbCB3b3JsZCB3aXRoICJsb2cgLS1hbGwgLXAiLCBidXQgdXNpbmcKKyMgLS1uby13YWxrIGxldHMgdXMgcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBvcmRlciBvZiB0cmF2ZXJzYWwuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgbm90ZXMgY2FjaGUgYW5kIHN0aWxsIHVzZSBjYWNoZSBmb3IgLXAnICcKKwlnaXQgbG9nIC0tbm8td2FsayAtcCByZWZzL25vdGVzL3RleHRjb252L21hZ2ljIEhFQUQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MTExLWFwcGx5LXN1YmRpci5zaCBiL3QvdDQxMTEtYXBwbHktc3ViZGlyLnNoCmluZGV4IDdjMzk4NDMuLjE2MThhNmQgMTAwNzU1Ci0tLSBhL3QvdDQxMTEtYXBwbHktc3ViZGlyLnNoCisrKyBiL3QvdDQxMTEtYXBwbHktc3ViZGlyLnNoCkBAIC04Niw2ICs4NiwyMCBAQAogCXRlc3RfY21wIGV4cGVjdGVkIHN1Yi9kaXIvZmlsZQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcHBseSBoYWxmLWJyb2tlbiBwYXRjaCBmcm9tIHN1YmRpciBvZiB0b3BsZXZlbCcgJworCSgKKwkJY2Qgc3ViL2RpciAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgYXBwbHkgPDwtRU9GCisJCS0tLSBzdWIvZGlyL2ZpbGUKKwkJKysrIHN1Yi9kaXIvZmlsZQorCQlAQCAtMSwwICsxLDAgQEAKKwkJLS0tIGZpbGVfaW5fcm9vdAorCQkrKysgZmlsZV9pbl9yb290CisJCUBAIC0xLDAgKzEsMCBAQAorCQlFT0YKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IGZyb20gLmdpdCBkaXInICcKIAljcCBwb3N0aW1hZ2UgZXhwZWN0ZWQgJiYKIAljcCBwcmVpbWFnZSAuZ2l0L2ZpbGUgJiYKZGlmZiAtLWdpdCBhL3QvdDQxMTQtYXBwbHktdHlwZWNoYW5nZS5zaCBiL3QvdDQxMTQtYXBwbHktdHlwZWNoYW5nZS5zaAppbmRleCBmMTI4MjZmLi5lYmFkYmMzIDEwMDc1NQotLS0gYS90L3Q0MTE0LWFwcGx5LXR5cGVjaGFuZ2Uuc2gKKysrIGIvdC90NDExNC1hcHBseS10eXBlY2hhbmdlLnNoCkBAIC05LDIwICs5LDE5IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdzZXR1cCByZXBvc2l0b3J5IGFuZCBjb21taXRzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvc2l0b3J5IGFuZCBjb21taXRzJyAnCiAJZWNobyAiaGVsbG8gd29ybGQiID4gZm9vICYmCiAJZWNobyAiaGkgcGxhbmV0IiA+IGJhciAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZm9vIGJhciAmJgogCWdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgogCWdpdCBicmFuY2ggaW5pdGlhbCAmJgogCXJtIC1mIGZvbyAmJgotCWxuIC1zIGJhciBmb28gJiYKLQlnaXQgdXBkYXRlLWluZGV4IGZvbyAmJgorCXRlc3RfbG5fc19hZGQgYmFyIGZvbyAmJgogCWdpdCBjb21taXQgLW0gImZvbyBzeW1saW5rZWQgdG8gYmFyIiAmJgogCWdpdCBicmFuY2ggZm9vLXN5bWxpbmtlZC10by1iYXIgJiYKLQlybSAtZiBmb28gJiYKKwlnaXQgcm0gLWYgZm9vICYmCiAJZWNobyAiaG93IGZhciBpcyB0aGUgc3VuPyIgPiBmb28gJiYKLQlnaXQgdXBkYXRlLWluZGV4IGZvbyAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZm9vICYmCiAJZ2l0IGNvbW1pdCAtbSAiZm9vIGJhY2sgdG8gZmlsZSIgJiYKIAlnaXQgYnJhbmNoIGZvby1iYWNrLXRvLWZpbGUgJiYKIAlwcmludGYgIlwwIiA+IGZvbyAmJgpAQCAtNDIsNyArNDEsNyBAQAogCWdpdCBicmFuY2ggZm9vLWJhei1yZW5hbWVkLWZyb20tZm9vCiAJJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdmaWxlIHJlbmFtZWQgZnJvbSBmb28gdG8gZm9vL2JheicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSByZW5hbWVkIGZyb20gZm9vIHRvIGZvby9iYXonICcKIAlnaXQgY2hlY2tvdXQgLWYgaW5pdGlhbCAmJgogCWdpdCBkaWZmLXRyZWUgLU0gLXAgSEVBRCBmb28tYmF6LXJlbmFtZWQtZnJvbS1mb28gPiBwYXRjaCAmJgogCWdpdCBhcHBseSAtLWluZGV4IDwgcGF0Y2gKQEAgLTUwLDcgKzQ5LDcgQEAKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdmaWxlIHJlbmFtZWQgZnJvbSBmb28vYmF6IHRvIGZvbycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSByZW5hbWVkIGZyb20gZm9vL2JheiB0byBmb28nICcKIAlnaXQgY2hlY2tvdXQgLWYgZm9vLWJhei1yZW5hbWVkLWZyb20tZm9vICYmCiAJZ2l0IGRpZmYtdHJlZSAtTSAtcCBIRUFEIGluaXRpYWwgPiBwYXRjaCAmJgogCWdpdCBhcHBseSAtLWluZGV4IDwgcGF0Y2gKQEAgLTU4LDcgKzU3LDcgQEAKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdkaXJlY3RvcnkgYmVjb21lcyBmaWxlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaXJlY3RvcnkgYmVjb21lcyBmaWxlJyAnCiAJZ2l0IGNoZWNrb3V0IC1mIGZvby1iZWNvbWVzLWEtZGlyZWN0b3J5ICYmCiAJZ2l0IGRpZmYtdHJlZSAtcCBIRUFEIGluaXRpYWwgPiBwYXRjaCAmJgogCWdpdCBhcHBseSAtLWluZGV4IDwgcGF0Y2gKQEAgLTY2LDcgKzY1LDcgQEAKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdmaWxlIGJlY29tZXMgZGlyZWN0b3J5JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIGJlY29tZXMgZGlyZWN0b3J5JyAnCiAJZ2l0IGNoZWNrb3V0IC1mIGluaXRpYWwgJiYKIAlnaXQgZGlmZi10cmVlIC1wIEhFQUQgZm9vLWJlY29tZXMtYS1kaXJlY3RvcnkgPiBwYXRjaCAmJgogCWdpdCBhcHBseSAtLWluZGV4IDwgcGF0Y2gKQEAgLTc0LDcgKzczLDcgQEAKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdmaWxlIGJlY29tZXMgc3ltbGluaycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSBiZWNvbWVzIHN5bWxpbmsnICcKIAlnaXQgY2hlY2tvdXQgLWYgaW5pdGlhbCAmJgogCWdpdCBkaWZmLXRyZWUgLXAgSEVBRCBmb28tc3ltbGlua2VkLXRvLWJhciA+IHBhdGNoICYmCiAJZ2l0IGFwcGx5IC0taW5kZXggPCBwYXRjaApAQCAtODIsMjEgKzgxLDIxIEBACiB0ZXN0X2RlYnVnICdjYXQgcGF0Y2gnCiAKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnc3ltbGluayBiZWNvbWVzIGZpbGUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bWxpbmsgYmVjb21lcyBmaWxlJyAnCiAJZ2l0IGNoZWNrb3V0IC1mIGZvby1zeW1saW5rZWQtdG8tYmFyICYmCiAJZ2l0IGRpZmYtdHJlZSAtcCBIRUFEIGZvby1iYWNrLXRvLWZpbGUgPiBwYXRjaCAmJgogCWdpdCBhcHBseSAtLWluZGV4IDwgcGF0Y2gKIAknCiB0ZXN0X2RlYnVnICdjYXQgcGF0Y2gnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2JpbmFyeSBmaWxlIGJlY29tZXMgc3ltbGluaycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmluYXJ5IGZpbGUgYmVjb21lcyBzeW1saW5rJyAnCiAJZ2l0IGNoZWNrb3V0IC1mIGZvby1iZWNvbWVzLWJpbmFyeSAmJgogCWdpdCBkaWZmLXRyZWUgLXAgLS1iaW5hcnkgSEVBRCBmb28tc3ltbGlua2VkLXRvLWJhciA+IHBhdGNoICYmCiAJZ2l0IGFwcGx5IC0taW5kZXggPCBwYXRjaAogCScKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnc3ltbGluayBiZWNvbWVzIGJpbmFyeSBmaWxlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW1saW5rIGJlY29tZXMgYmluYXJ5IGZpbGUnICcKIAlnaXQgY2hlY2tvdXQgLWYgZm9vLXN5bWxpbmtlZC10by1iYXIgJiYKIAlnaXQgZGlmZi10cmVlIC1wIC0tYmluYXJ5IEhFQUQgZm9vLWJlY29tZXMtYmluYXJ5ID4gcGF0Y2ggJiYKIAlnaXQgYXBwbHkgLS1pbmRleCA8IHBhdGNoCkBAIC0xMDQsNyArMTAzLDcgQEAKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdzeW1saW5rIGJlY29tZXMgZGlyZWN0b3J5JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW1saW5rIGJlY29tZXMgZGlyZWN0b3J5JyAnCiAJZ2l0IGNoZWNrb3V0IC1mIGZvby1zeW1saW5rZWQtdG8tYmFyICYmCiAJZ2l0IGRpZmYtdHJlZSAtcCBIRUFEIGZvby1iZWNvbWVzLWEtZGlyZWN0b3J5ID4gcGF0Y2ggJiYKIAlnaXQgYXBwbHkgLS1pbmRleCA8IHBhdGNoCkBAIC0xMTIsNyArMTExLDcgQEAKIHRlc3RfZGVidWcgJ2NhdCBwYXRjaCcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdkaXJlY3RvcnkgYmVjb21lcyBzeW1saW5rJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkaXJlY3RvcnkgYmVjb21lcyBzeW1saW5rJyAnCiAJZ2l0IGNoZWNrb3V0IC1mIGZvby1iZWNvbWVzLWEtZGlyZWN0b3J5ICYmCiAJZ2l0IGRpZmYtdHJlZSAtcCBIRUFEIGZvby1zeW1saW5rZWQtdG8tYmFyID4gcGF0Y2ggJiYKIAlnaXQgYXBwbHkgLS1pbmRleCA8IHBhdGNoCmRpZmYgLS1naXQgYS90L3Q0MTE1LWFwcGx5LXN5bWxpbmsuc2ggYi90L3Q0MTE1LWFwcGx5LXN5bWxpbmsuc2gKaW5kZXggNzY3NGRkMi4uODcyZmNkYSAxMDA3NTUKLS0tIGEvdC90NDExNS1hcHBseS1zeW1saW5rLnNoCisrKyBiL3QvdDQxMTUtYXBwbHktc3ltbGluay5zaApAQCAtOSwxOCArOSwxNiBAQAogCiAuIC4vdGVzdC1saWIuc2gKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyBzZXR1cCAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKIAotCWxuIC1zIHBhdGgxL3BhdGgyL3BhdGgzL3BhdGg0L3BhdGg1IGxpbmsxICYmCi0JZ2l0IGFkZCBsaW5rPyAmJgorCXRlc3RfbG5fc19hZGQgcGF0aDEvcGF0aDIvcGF0aDMvcGF0aDQvcGF0aDUgbGluazEgJiYKIAlnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKIAogCWdpdCBicmFuY2ggc2lkZSAmJgogCiAJcm0gLWYgbGluaz8gJiYKIAotCWxuIC1zIGh0YXA2IGxpbmsxICYmCi0JZ2l0IHVwZGF0ZS1pbmRleCBsaW5rPyAmJgorCXRlc3RfbG5fc19hZGQgaHRhcDYgbGluazEgJiYKIAlnaXQgY29tbWl0IC1tIHNlY29uZCAmJgogCiAJZ2l0IGRpZmYtdHJlZSAtcCBIRUFEXiBIRUFEID5wYXRjaCAgJiYKQEAgLTM3LDcgKzM1LDcgQEAKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdhcHBseSAtLWluZGV4IHN5bWxpbmsgcGF0Y2gnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IC0taW5kZXggc3ltbGluayBwYXRjaCcgJwogCiAJZ2l0IGNoZWNrb3V0IC1mIHNpZGUgJiYKIAlnaXQgYXBwbHkgLS1pbmRleCBwYXRjaCAmJgpkaWZmIC0tZ2l0IGEvdC90NDEyMi1hcHBseS1zeW1saW5rLWluc2lkZS5zaCBiL3QvdDQxMjItYXBwbHktc3ltbGluay1pbnNpZGUuc2gKaW5kZXggMzk0MDczNy4uNzBiM2EwNiAxMDA3NTUKLS0tIGEvdC90NDEyMi1hcHBseS1zeW1saW5rLWluc2lkZS5zaAorKysgYi90L3Q0MTIyLWFwcGx5LXN5bWxpbmstaW5zaWRlLnNoCkBAIC0xMCwxMSArMTAsMTEgQEAKIAlkb25lCiB9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1Mgc2V0dXAgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAKIAlta2RpciAtcCBhcmNoL2kzODYvYm9vdCBhcmNoL3g4Nl82NCAmJgogCWxlY2hvIDEgMiAzIDQgNSA+YXJjaC9pMzg2L2Jvb3QvTWFrZWZpbGUgJiYKLQlsbiAtcyAuLi9pMzg2L2Jvb3QgYXJjaC94ODZfNjQvYm9vdCAmJgorCXRlc3RfbG5fc19hZGQgLi4vaTM4Ni9ib290IGFyY2gveDg2XzY0L2Jvb3QgJiYKIAlnaXQgYWRkIC4gJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKQEAgLTMxLDcgKzMxLDcgQEAKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIGFwcGx5ICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgYXBwbHkgJwogCiAJZ2l0IGNoZWNrb3V0IHRlc3QgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSB0ZXN0ICYmCkBAIC00MCw3ICs0MCw3IEBACiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnY2hlY2sgcmVzdWx0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayByZXN1bHQnICcKIAogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIG1hc3RlciAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIC0tY2FjaGVkIG1hc3RlciAmJgpkaWZmIC0tZ2l0IGEvdC90NDEyNC1hcHBseS13cy1ydWxlLnNoIGIvdC90NDEyNC1hcHBseS13cy1ydWxlLnNoCmluZGV4IDZmNmVlODguLjVkMGM1OTggMTAwNzU1Ci0tLSBhL3QvdDQxMjQtYXBwbHktd3MtcnVsZS5zaAorKysgYi90L3Q0MTI0LWFwcGx5LXdzLXJ1bGUuc2gKQEAgLTQ3LDcgKzQ3LDcgQEAKIAkjIGZpbmQgdG91Y2hlZCBsaW5lcwogCSRESUZGIGZpbGUgdGFyZ2V0IHwgc2VkIC1uIC1lICJzL14+IC8vcCIgPmZpeGVkCiAKLQkjIHRoZSBjaGFuZ2VkIGxpbmVzIGFyZSBhbGwgZXhwZWNlZCB0byBjaGFuZ2UKKwkjIHRoZSBjaGFuZ2VkIGxpbmVzIGFyZSBhbGwgZXhwZWN0ZWQgdG8gY2hhbmdlCiAJZml4ZWRfY250PSQod2MgLWwgPGZpeGVkKQogCWNhc2UgIiQxIiBpbgogCScnKSBleHBlY3RfY250PSRmaXhlZF9jbnQgOzsKQEAgLTQ4Niw0ICs0ODYsMzAgQEAKIAl0ZXN0X2NtcCBvbmUgZXhwZWN0CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3doaXRlc3BhY2U9Zml4IHRvIGV4cGFuZCcgJworCXF6X3RvX3RhYl9zcGFjZSA+cHJlaW1hZ2UgPDwtXEVPRiAmJgorCVFRYQorCVFRYgorCVFRYworCVpaWlpaWlpaWlpaWlpaWlpkCisJUVFlCisJUVFmCisJUVFnCisJRU9GCisJcXpfdG9fdGFiX3NwYWNlID5wYXRjaCA8PC1cRU9GICYmCisJZGlmZiAtLWdpdCBhL3ByZWltYWdlIGIvcHJlaW1hZ2UKKwktLS0gYS9wcmVpbWFnZQorCSsrKyBiL3ByZWltYWdlCisJQEAgLTEsNyArMSw2IEBACisJIFFRYQorCSBRUWIKKwkgUVFjCisJLVFRZAorCSBRUWUKKwkgUVFmCisJIFFRZworCUVPRgorCWdpdCAtYyBjb3JlLndoaXRlc3BhY2U9dGFiLWluLWluZGVudCBhcHBseSAtLXdoaXRlc3BhY2U9Zml4IHBhdGNoCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDE1MC1hbS5zaCBiL3QvdDQxNTAtYW0uc2gKaW5kZXggY2RhZmQ3ZS4uNWVkYjc5YSAxMDA3NTUKLS0tIGEvdC90NDE1MC1hbS5zaAorKysgYi90L3Q0MTUwLWFtLnNoCkBAIC0xNyw3ICsxNyw3IEBACiAJdmVybyBlb3MgZXQgYWNjdXNhbSBldCBqdXN0byBkdW8gZG9sb3JlcyBldCBlYSByZWJ1bS4KIAogCUVPRgotCXFfdG9fdGFiIDw8LVxFT0YgPj5tc2cgJiYKKwlxel90b190YWJfc3BhY2UgPDwtXEVPRiA+Pm1zZyAmJgogCVFEdWlzIGF1dGVtIHZlbCBldW0gaXJpdXJlIGRvbG9yIGluIGhlbmRyZXJpdCBpbiB2dWxwdXRhdGUgdmVsaXQKIAlRZXNzZSBtb2xlc3RpZSBjb25zZXF1YXQsIHZlbCBpbGx1bSBkb2xvcmUgZXUgZmV1Z2lhdCBudWxsYSBmYWNpbGlzaXMKIAlRYXQgdmVybyBlcm9zIGV0IGFjY3Vtc2FuIGV0IGl1c3RvIG9kaW8gZGlnbmlzc2ltIHF1aSBibGFuZGl0CkBAIC0xNDcsNyArMTQ3LDcgQEAKIAlnaXQgY2hlY2tvdXQgZmlyc3QgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgYW0gPHBhdGNoMSAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgc2Vjb25kICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHNlY29uZCkiID0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2Ugc2Vjb25kXikiID0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEXikiCkBAIC0xNTgsNyArMTU4LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGZpcnN0ICYmCiAJZ2l0IGFtIHBhdGNoMS5lbWwgJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIHNlY29uZCAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBzZWNvbmQpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHNlY29uZF4pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4pIgpAQCAtMTY5LDcgKzE2OSw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBmaXJzdCAmJgogCWdpdCBhbSBwYXRjaDEtY3JsZi5lbWwgJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIHNlY29uZCAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBzZWNvbmQpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHNlY29uZF4pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4pIgpAQCAtMTgwLDcgKzE4MCw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBmaXJzdCAmJgogCWdpdCBhbSBwYXRjaDEtd3MuZW1sICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSBzZWNvbmQgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2Ugc2Vjb25kKSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQUQpIiAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBzZWNvbmReKSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQUReKSIKQEAgLTIwNiw3ICsyMDYsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgZmlyc3QgJiYKIAlnaXQgYW0gcGF0Y2gyICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgbWFzdGVyXl4pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF5eKSIgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSBtYXN0ZXIuLkhFQUQgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSBtYXN0ZXJeLi5IRUFEXiAmJgpAQCAtMjU4LDcgKzI1OCw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBIRUFEXiAmJgogCWdpdCBhbSAtLWtlZXAgcGF0Y2g0ICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgPmFjdHVhbCAmJgogCWdyZXAgIlJlOiBSZTogUmU6IFxbUEFUQ0ggMS81IHYyXF0gXFtmb29cXSB0aGlyZCIgYWN0dWFsCiAnCkBAIC0yNjgsNyArMjY4LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IEhFQUReICYmCiAJZ2l0IGFtIC0ta2VlcC1ub24tcGF0Y2ggcGF0Y2g0ICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgPmFjdHVhbCAmJgogCWdyZXAgIl5cW2Zvb1xdIHRoaXJkIiBhY3R1YWwKICcKQEAgLTI4Myw3ICsyODMsNyBAQAogCXRlc3RfdGljayAmJgogCWdpdCBjb21taXQgLW0gImNvcGllZCBzdHVmZiIgJiYKIAlnaXQgYW0gLTMgbG9yZW0tbW92ZS5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbG9yZW0KICcKIApAQCAtMjk3LDcgKzI5Nyw3IEBACiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSAiY29waWVkIHN0dWZmIiAmJgogCWdpdCBhbSAtMyAtcDAgbG9yZW0temVyby5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbG9yZW0KICcKIApAQCAtMzA3LDcgKzMwNyw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBsb3JlbV4wICYmCiAJZ2l0IGFtIHJlbmFtZS5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSByZW5hbWUKICcKQEAgLTMxOCw3ICszMTgsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgbG9yZW1eMCAmJgogCWdpdCBhbSAtMyByZW5hbWUucGF0Y2ggJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgcmVuYW1lCiAnCkBAIC0zMjksNyArMzI5LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGxvcmVtXjAgJiYKIAlnaXQgYW0gLTMgcmVuYW1lLWFkZC5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSByZW5hbWUKICcKQEAgLTM1OCwxMSArMzU4LDE3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbSAtLXNraXAgd29ya3MnICcKIAllY2hvIGdvb2RieWUgPmV4cGVjdGVkICYmCiAJZ2l0IGFtIC0tc2tpcCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbG9yZW0yXl4gLS0gZmlsZSAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFub3RoZXIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW0gLS1hYm9ydCByZW1vdmVzIGEgc3RyYXkgZGlyZWN0b3J5JyAnCisJbWtkaXIgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwlnaXQgYW0gLS1hYm9ydCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5CisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIC0tcmVzb2x2ZWQgd29ya3MnICcKIAllY2hvIGdvb2RieWUgPmV4cGVjdGVkICYmCiAJcm0gLWZyIC5naXQvcmViYXNlLWFwcGx5ICYmCkBAIC0zNzMsNyArMzc5LDcgQEAKIAllY2hvIHJlc29sdmVkID4+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBhbSAtLXJlc29sdmVkICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhbm90aGVyCiAnCiAKQEAgLTM4Miw3ICszODgsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgZmlyc3QgJiYKIAljYXQgcGluZSBwYXRjaDEgfCBnaXQgYW0gJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIG1hc3Rlcl4uLkhFQUQKICcKIApAQCAtMzkxLDcgKzM5Nyw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBhbSA8ZmFpbG1haWwgJiYKIAlnaXQgYW0gLS1hYm9ydCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseQorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIGZhaWxzIG9uIGVtcHR5IHBhdGNoJyAnCkBAIC00MDAsNyArNDA2LDcgQEAKIAllY2hvICItLS0iID4+ZmFpbG1haWwgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYW0gPGZhaWxtYWlsICYmCiAJZ2l0IGFtIC0tc2tpcCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseQorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIHdvcmtzIGZyb20gc3RkaW4gaW4gc3ViZGlyZWN0b3J5JyAnCmRpZmYgLS1naXQgYS90L3Q0MjAyLWxvZy5zaCBiL3QvdDQyMDItbG9nLnNoCmluZGV4IGZhNjg2YjguLmNiMDNkMjggMTAwNzU1Ci0tLSBhL3QvdDQyMDItbG9nLnNoCisrKyBiL3QvdDQyMDItbG9nLnNoCkBAIC00MTksOCArNDE5LDYgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nLmRlY29yYXRlIGNvbmZpZ3VyYXRpb24nICcKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBsb2cuZGVjb3JhdGUgJiYKLQogCWdpdCBsb2cgLS1vbmVsaW5lID5leHBlY3Qubm9uZSAmJgogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGUgPmV4cGVjdC5zaG9ydCAmJgogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGU9ZnVsbCA+ZXhwZWN0LmZ1bGwgJiYKQEAgLTQyOSw4ICs0MjcsNyBAQAogCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3Quc2hvcnQgYWN0dWFsICYmCiAKLQlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGxvZy5kZWNvcmF0ZSAmJgotCWdpdCBjb25maWcgbG9nLmRlY29yYXRlIHRydWUgJiYKKwl0ZXN0X2NvbmZpZyBsb2cuZGVjb3JhdGUgdHJ1ZSAmJgogCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3Quc2hvcnQgYWN0dWFsICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZT1mdWxsID5hY3R1YWwgJiYKQEAgLTQzOCw4ICs0MzUsNyBAQAogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGU9bm8gPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5ub25lIGFjdHVhbCAmJgogCi0JZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBsb2cuZGVjb3JhdGUgJiYKLQlnaXQgY29uZmlnIGxvZy5kZWNvcmF0ZSBubyAmJgorCXRlc3RfY29uZmlnIGxvZy5kZWNvcmF0ZSBubyAmJgogCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3Qubm9uZSBhY3R1YWwgJiYKIAlnaXQgbG9nIC0tb25lbGluZSAtLWRlY29yYXRlID5hY3R1YWwgJiYKQEAgLTQ0Nyw4ICs0NDMsNyBAQAogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGU9ZnVsbCA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0LmZ1bGwgYWN0dWFsICYmCiAKLQlnaXQgY29uZmlnIC0tdW5zZXQtYWxsIGxvZy5kZWNvcmF0ZSAmJgotCWdpdCBjb25maWcgbG9nLmRlY29yYXRlIDEgJiYKKwl0ZXN0X2NvbmZpZyBsb2cuZGVjb3JhdGUgMSAmJgogCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3Quc2hvcnQgYWN0dWFsICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1kZWNvcmF0ZT1mdWxsID5hY3R1YWwgJiYKQEAgLTQ1Niw4ICs0NTEsNyBAQAogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGU9bm8gPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5ub25lIGFjdHVhbCAmJgogCi0JZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBsb2cuZGVjb3JhdGUgJiYKLQlnaXQgY29uZmlnIGxvZy5kZWNvcmF0ZSBzaG9ydCAmJgorCXRlc3RfY29uZmlnIGxvZy5kZWNvcmF0ZSBzaG9ydCAmJgogCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3Quc2hvcnQgYWN0dWFsICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1uby1kZWNvcmF0ZSA+YWN0dWFsICYmCkBAIC00NjUsOCArNDU5LDcgQEAKIAlnaXQgbG9nIC0tb25lbGluZSAtLWRlY29yYXRlPWZ1bGwgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5mdWxsIGFjdHVhbCAmJgogCi0JZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBsb2cuZGVjb3JhdGUgJiYKLQlnaXQgY29uZmlnIGxvZy5kZWNvcmF0ZSBmdWxsICYmCisJdGVzdF9jb25maWcgbG9nLmRlY29yYXRlIGZ1bGwgJiYKIAlnaXQgbG9nIC0tb25lbGluZSA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0LmZ1bGwgYWN0dWFsICYmCiAJZ2l0IGxvZyAtLW9uZWxpbmUgLS1uby1kZWNvcmF0ZSA+YWN0dWFsICYmCkBAIC00NzQsMTYgKzQ2NywxNSBAQAogCWdpdCBsb2cgLS1vbmVsaW5lIC0tZGVjb3JhdGUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdC5zaG9ydCBhY3R1YWwKIAotCWdpdCBjb25maWcgLS11bnNldC1hbGwgbG9nLmRlY29yYXRlICYmCisJdGVzdF91bmNvbmZpZyBsb2cuZGVjb3JhdGUgJiYKIAlnaXQgbG9nIC0tcHJldHR5PXJhdyA+ZXhwZWN0LnJhdyAmJgotCWdpdCBjb25maWcgbG9nLmRlY29yYXRlIGZ1bGwgJiYKKwl0ZXN0X2NvbmZpZyBsb2cuZGVjb3JhdGUgZnVsbCAmJgogCWdpdCBsb2cgLS1wcmV0dHk9cmF3ID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QucmF3IGFjdHVhbAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZmxvZyBpcyBleHBlY3RlZCBmb3JtYXQnICcKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGxvZyAmJgogCWdpdCBsb2cgLWcgLS1hYmJyZXYtY29tbWl0IC0tcHJldHR5PW9uZWxpbmUgPmV4cGVjdCAmJgogCWdpdCByZWZsb2cgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKQEAgLTQ5NiwxMCArNDg4LDYgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nLmFiYnJldkNvbW1pdCBjb25maWd1cmF0aW9uJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgbG9nLmFiYnJldkNvbW1pdCIgJiYKLQotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQgbG9nLmFiYnJldkNvbW1pdCAmJgotCiAJZ2l0IGxvZyAtLWFiYnJldi1jb21taXQgPmV4cGVjdC5sb2cuYWJicmV2ICYmCiAJZ2l0IGxvZyAtLW5vLWFiYnJldi1jb21taXQgPmV4cGVjdC5sb2cuZnVsbCAmJgogCWdpdCBsb2cgLS1wcmV0dHk9cmF3ID5leHBlY3QubG9nLnJhdyAmJgpAQCAtNTA4LDcgKzQ5Niw3IEBACiAJZ2l0IHdoYXRjaGFuZ2VkIC0tYWJicmV2LWNvbW1pdCA+ZXhwZWN0LndoYXRjaGFuZ2VkLmFiYnJldiAmJgogCWdpdCB3aGF0Y2hhbmdlZCAtLW5vLWFiYnJldi1jb21taXQgPmV4cGVjdC53aGF0Y2hhbmdlZC5mdWxsICYmCiAKLQlnaXQgY29uZmlnIGxvZy5hYmJyZXZDb21taXQgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIGxvZy5hYmJyZXZDb21taXQgdHJ1ZSAmJgogCiAJZ2l0IGxvZyA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0LmxvZy5hYmJyZXYgYWN0dWFsICYmCkBAIC01NDIsNiArNTMwLDIwIEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgbG9nIC1jIC0tZm9sbG93JyAnCisJdGVzdF9jcmVhdGVfcmVwbyBmb2xsb3ctYyAmJgorCSgKKwkJY2QgZm9sbG93LWMgJiYKKwkJdGVzdF9jb21taXQgaW5pdGlhbCBmaWxlIG9yaWdpbmFsICYmCisJCWdpdCBybSBmaWxlICYmCisJCXRlc3RfY29tbWl0IHJlbmFtZSBmaWxlMiBvcmlnaW5hbCAmJgorCQlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwkJdGVzdF9jb21taXQgbW9kaWZ5IGZpbGUgZm9vICYmCisJCWdpdCBtZXJnZSAtbSBtZXJnZSByZW5hbWUgJiYKKwkJZ2l0IGxvZyAtYyAtLWZvbGxvdyBmaWxlMgorCSkKKycKKwogY2F0ID5leHBlY3QgPDxcRU9GCiAqICAgY29tbWl0IENPTU1JVF9PQkpFQ1RfTkFNRQogfFwgIE1lcmdlOiBNRVJHRV9QQVJFTlRTCmRpZmYgLS1naXQgYS90L3Q0MjAzLW1haWxtYXAuc2ggYi90L3Q0MjAzLW1haWxtYXAuc2gKaW5kZXggMWYxODJmNi4uODQyYjc1NCAxMDA3NTUKLS0tIGEvdC90NDIwMy1tYWlsbWFwLnNoCisrKyBiL3QvdDQyMDMtbWFpbG1hcC5zaApAQCAtMTQ5LDYgKzE0OSwxMDQgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG1haWxtYXAgYmxvYiB0ZXN0cycgJworCWdpdCBjaGVja291dCAtYiBtYXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCisJY2F0ID5qdXN0LWJ1Z3MgPDwtXEVPRiAmJgorCUJsb2IgR3V5IDxidWdzQGNvbXBhbnkueHg+CisJRU9GCisJY2F0ID5ib3RoIDw8LVxFT0YgJiYKKwlCbG9iIEd1eSA8YXV0aG9yQGV4YW1wbGUuY29tPgorCUJsb2IgR3V5IDxidWdzQGNvbXBhbnkueHg+CisJRU9GCisJZ2l0IGFkZCBqdXN0LWJ1Z3MgYm90aCAmJgorCWdpdCBjb21taXQgLW0gIm15IG1haWxtYXBzIiAmJgorCWVjaG8gIlJlcG8gR3V5IDxhdXRob3JAZXhhbXBsZS5jb20+IiA+Lm1haWxtYXAgJiYKKwllY2hvICJJbnRlcm5hbCBHdXkgPGF1dGhvckBleGFtcGxlLmNvbT4iID5pbnRlcm5hbC5tYXAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIHNldCcgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlCbG9iIEd1eSAoMSk6CisJICAgICAgc2Vjb25kCisKKwlSZXBvIEd1eSAoMSk6CisJICAgICAgaW5pdGlhbAorCisJRU9GCisJZ2l0IC1jIG1haWxtYXAuYmxvYj1tYXA6anVzdC1idWdzIHNob3J0bG9nIEhFQUQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIG92ZXJyaWRlcyAubWFpbG1hcCcgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlCbG9iIEd1eSAoMik6CisJICAgICAgaW5pdGlhbAorCSAgICAgIHNlY29uZAorCisJRU9GCisJZ2l0IC1jIG1haWxtYXAuYmxvYj1tYXA6Ym90aCBzaG9ydGxvZyBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21haWxtYXAuZmlsZSBvdmVycmlkZXMgbWFpbG1hcC5ibG9iJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCUJsb2IgR3V5ICgxKToKKwkgICAgICBzZWNvbmQKKworCUludGVybmFsIEd1eSAoMSk6CisJICAgICAgaW5pdGlhbAorCisJRU9GCisJZ2l0IFwKKwkgIC1jIG1haWxtYXAuYmxvYj1tYXA6Ym90aCBcCisJICAtYyBtYWlsbWFwLmZpbGU9aW50ZXJuYWwubWFwIFwKKwkgIHNob3J0bG9nIEhFQUQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIGNhbiBiZSBtaXNzaW5nJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCVJlcG8gR3V5ICgxKToKKwkgICAgICBpbml0aWFsCisKKwluaWNrMSAoMSk6CisJICAgICAgc2Vjb25kCisKKwlFT0YKKwlnaXQgLWMgbWFpbG1hcC5ibG9iPW1hcDpub25leGlzdGVudCBzaG9ydGxvZyBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21haWxtYXAuYmxvYiBkZWZhdWx0cyB0byBvZmYgaW4gbm9uLWJhcmUgcmVwbycgJworCWdpdCBpbml0IG5vbi1iYXJlICYmCisJKAorCQljZCBub24tYmFyZSAmJgorCQl0ZXN0X2NvbW1pdCBvbmUgLm1haWxtYXAgIkZha2UgTmFtZSA8YXV0aG9yQGV4YW1wbGUuY29tPiIgJiYKKwkJZWNobyAiICAgICAxCUZha2UgTmFtZSIgPmV4cGVjdCAmJgorCQlnaXQgc2hvcnRsb2cgLW5zIEhFQUQgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJCXJtIC5tYWlsbWFwICYmCisJCWVjaG8gIiAgICAgMQlBIFUgVGhvciIgPmV4cGVjdCAmJgorCQlnaXQgc2hvcnRsb2cgLW5zIEhFQUQgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYWlsbWFwLmJsb2IgZGVmYXVsdHMgdG8gSEVBRDoubWFpbG1hcCBpbiBiYXJlIHJlcG8nICcKKwlnaXQgY2xvbmUgLS1iYXJlIG5vbi1iYXJlIGJhcmUgJiYKKwkoCisJCWNkIGJhcmUgJiYKKwkJZWNobyAiICAgICAxCUZha2UgTmFtZSIgPmV4cGVjdCAmJgorCQlnaXQgc2hvcnRsb2cgLW5zIEhFQUQgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGFmdGVyIG1haWxtYXAuYmxvYiB0ZXN0cycgJworCXJtIC1mIC5tYWlsbWFwCisnCisKICMgRXh0ZW5kZWQgbWFpbG1hcCBjb25maWd1cmF0aW9ucyBzaG91bGQgZ2l2ZSB1cyB0aGUgZm9sbG93aW5nIG91dHB1dCBmb3Igc2hvcnRsb2cKIGNhdCA+ZXhwZWN0IDw8XEVPRgogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4gKDEpOgpAQCAtMjM5LDYgKzMzNyw2MiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAorY2F0ID5leHBlY3QgPDxcRU9GCitBdXRob3I6IENUTyA8Y3RvQGNvbXBhbnkueHg+CitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitBdXRob3I6IE90aGVyIEF1dGhvciA8b3RoZXJAYXV0aG9yLnh4PgorQXV0aG9yOiBPdGhlciBBdXRob3IgPG90aGVyQGF1dGhvci54eD4KK0F1dGhvcjogU29tZSBEdWRlIDxzb21lQGR1ZGUueHg+CitBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnTG9nIG91dHB1dCB3aXRoIC0tdXNlLW1haWxtYXAnICcKKwlnaXQgbG9nIC0tdXNlLW1haWxtYXAgfCBncmVwIEF1dGhvciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCitjYXQgPmV4cGVjdCA8PFxFT0YKK0F1dGhvcjogQ1RPIDxjdG9AY29tcGFueS54eD4KK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0F1dGhvcjogT3RoZXIgQXV0aG9yIDxvdGhlckBhdXRob3IueHg+CitBdXRob3I6IE90aGVyIEF1dGhvciA8b3RoZXJAYXV0aG9yLnh4PgorQXV0aG9yOiBTb21lIER1ZGUgPHNvbWVAZHVkZS54eD4KK0F1dGhvcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdMb2cgb3V0cHV0IHdpdGggbG9nLm1haWxtYXAnICcKKwlnaXQgLWMgbG9nLm1haWxtYXA9VHJ1ZSBsb2cgfCBncmVwIEF1dGhvciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCitjYXQgPmV4cGVjdCA8PFxFT0YKK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0F1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdHcmVwIGF1dGhvciB3aXRoIC0tdXNlLW1haWxtYXAnICcKKwlnaXQgbG9nIC0tdXNlLW1haWxtYXAgLS1hdXRob3IgU2FudGEgfCBncmVwIEF1dGhvciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworY2F0ID5leHBlY3QgPDxcRU9GCitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitBdXRob3I6IFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+CitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnR3JlcCBhdXRob3Igd2l0aCBsb2cubWFpbG1hcCcgJworCWdpdCAtYyBsb2cubWFpbG1hcD1UcnVlIGxvZyAtLWF1dGhvciBTYW50YSB8IGdyZXAgQXV0aG9yID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKKz5leHBlY3QKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnT25seSBncmVwIHJlcGxhY2VkIGF1dGhvciB3aXRoIC0tdXNlLW1haWxtYXAnICcKKwlnaXQgbG9nIC0tdXNlLW1haWxtYXAgLS1hdXRob3IgIjxjdG9AY29vbXBhbnkueHg+IiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiAjIGdpdCBibGFtZQogY2F0ID5leHBlY3QgPDxcRU9GCiBeT0JKSSAoQSBVIFRob3IgICAgIERBVEUgMSkgb25lCmRpZmYgLS1naXQgYS90L3Q0MjA1LWxvZy1wcmV0dHktZm9ybWF0cy5zaCBiL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoCmluZGV4IDk4YTQzZDQuLjI2ZmJmZGUgMTAwNzU1Ci0tLSBhL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoCisrKyBiL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoCkBAIC05OSw0ICs5OSwxNzkgQEAKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG1vcmUgY29tbWl0cycgJworCXRlc3RfY29tbWl0ICJtZXNzYWdlIG9uZSIgb25lIG9uZSBtZXNzYWdlLW9uZSAmJgorCXRlc3RfY29tbWl0ICJtZXNzYWdlIHR3byIgdHdvIHR3byBtZXNzYWdlLXR3bworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU8KDQwKSVzIiA+YWN0dWFsICYmCisJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKKwllY2hvID4+YWN0dWFsICYmCisJcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKK21lc3NhZ2UgdHdvICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK21lc3NhZ2Ugb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK2FkZCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK2luaXRpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nIGF0IHRoZSBudGggY29sdW1uJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiVoICU8fCg0MCklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCitmYTMzYWIxIG1lc3NhZ2UgdHdvICAgICAgICAgICAgICAgICAgICBaCis3Y2Q2YzYzIG1lc3NhZ2Ugb25lICAgICAgICAgICAgICAgICAgICBaCisxNzExYmY5IGFkZCBiYXIgICAgICAgICAgICAgICAgICAgICAgICBaCithZjIwYzA2IGluaXRpYWwgICAgICAgICAgICAgICAgICAgICAgICBaCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbGVmdCBhbGlnbm1lbnQgZm9ybWF0dGluZyB3aXRoIG5vIHBhZGRpbmcnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMSklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCittZXNzYWdlIHR3bworbWVzc2FnZSBvbmUKK2FkZCBiYXIKK2luaXRpYWwKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nIHdpdGggdHJ1bmMnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMTAsdHJ1bmMpJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorbWVzc2FnZSAuLgorbWVzc2FnZSAuLgorYWRkIGJhciAgWgoraW5pdGlhbCAgWgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xlZnQgYWxpZ25tZW50IGZvcm1hdHRpbmcgd2l0aCBsdHJ1bmMnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMTAsbHRydW5jKSVzIiA+YWN0dWFsICYmCisJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKKwllY2hvID4+YWN0dWFsICYmCisJcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKKy4uc2FnZSB0d28KKy4uc2FnZSBvbmUKK2FkZCBiYXIgIFoKK2luaXRpYWwgIFoKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsZWZ0IGFsaWdubWVudCBmb3JtYXR0aW5nIHdpdGggbXRydW5jJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU8KDEwLG10cnVuYyklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCittZXNzLi4gdHdvCittZXNzLi4gb25lCithZGQgYmFyICBaCitpbml0aWFsICBaCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmlnaHQgYWxpZ25tZW50IGZvcm1hdHRpbmcnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT4oNDApJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorWiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIHR3bworWiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIG9uZQorWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGJhcgorWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbAorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JpZ2h0IGFsaWdubWVudCBmb3JtYXR0aW5nIGF0IHRoZSBudGggY29sdW1uJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiVoICU+fCg0MCklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCitmYTMzYWIxICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgdHdvCis3Y2Q2YzYzICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ugb25lCisxNzExYmY5ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgYmFyCithZjIwYzA2ICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmlnaHQgYWxpZ25tZW50IGZvcm1hdHRpbmcgd2l0aCBubyBwYWRkaW5nJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU+KDEpJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwljYXQgPDxcRU9GID5leHBlY3RlZCAmJgorbWVzc2FnZSB0d28KK21lc3NhZ2Ugb25lCithZGQgYmFyCitpbml0aWFsCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2VudGVyIGFsaWdubWVudCBmb3JtYXR0aW5nJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU+PCg0MCklcyIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCitaICAgICAgICAgICAgIG1lc3NhZ2UgdHdvICAgICAgICAgICAgICBaCitaICAgICAgICAgICAgIG1lc3NhZ2Ugb25lICAgICAgICAgICAgICBaCitaICAgICAgICAgICAgICAgYWRkIGJhciAgICAgICAgICAgICAgICBaCitaICAgICAgICAgICAgICAgaW5pdGlhbCAgICAgICAgICAgICAgICBaCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2VudGVyIGFsaWdubWVudCBmb3JtYXR0aW5nIGF0IHRoZSBudGggY29sdW1uJyAnCisJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiVoICU+PHwoNDApJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorZmEzM2FiMSAgICAgICAgICAgbWVzc2FnZSB0d28gICAgICAgICAgWgorN2NkNmM2MyAgICAgICAgICAgbWVzc2FnZSBvbmUgICAgICAgICAgWgorMTcxMWJmOSAgICAgICAgICAgICBhZGQgYmFyICAgICAgICAgICAgWgorYWYyMGMwNiAgICAgICAgICAgICBpbml0aWFsICAgICAgICAgICAgWgorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NlbnRlciBhbGlnbm1lbnQgZm9ybWF0dGluZyB3aXRoIG5vIHBhZGRpbmcnICcKKwlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT48KDEpJXMiID5hY3R1YWwgJiYKKwkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAorCWVjaG8gPj5hY3R1YWwgJiYKKwljYXQgPDxcRU9GID5leHBlY3RlZCAmJgorbWVzc2FnZSB0d28KK21lc3NhZ2Ugb25lCithZGQgYmFyCitpbml0aWFsCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbGVmdC9yaWdodCBhbGlnbm1lbnQgZm9ybWF0dGluZyB3aXRoIHN0ZWFsaW5nJyAnCisJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tIHNob3J0IC0tYXV0aG9yICJsb25nIGxvbmcgbG9uZyA8bG9uZ0BtZS5jb20+IiAmJgorCWdpdCBsb2cgLS1wcmV0dHk9ImZvcm1hdDolPCgxMCx0cnVuYyklcyU+PigxMCxsdHJ1bmMpJSBhbiIgPmFjdHVhbCAmJgorCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCisJZWNobyA+PmFjdHVhbCAmJgorCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCitzaG9ydCBsb25nICBsb25nIGxvbmcKK21lc3NhZ2UgLi4gICBBIFUgVGhvcgorYWRkIGJhciAgICAgIEEgVSBUaG9yCitpbml0aWFsICAgICAgQSBVIFRob3IKK0VPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQyMDctbG9nLWRlY29yYXRpb24tY29sb3JzLnNoIGIvdC90NDIwNy1sb2ctZGVjb3JhdGlvbi1jb2xvcnMuc2gKaW5kZXggYmJkZTMxYi4uOTI1ZjU3NyAxMDA3NTUKLS0tIGEvdC90NDIwNy1sb2ctZGVjb3JhdGlvbi1jb2xvcnMuc2gKKysrIGIvdC90NDIwNy1sb2ctZGVjb3JhdGlvbi1jb2xvcnMuc2gKQEAgLTQ0LDE1ICs0NCwxNSBAQAogJwogCiBjYXQgPmV4cGVjdGVkIDw8RU9GCi0ke2NfY29tbWl0fUNPTU1JVF9JRCAoJHtjX0hFQUR9SEVBRCR7Y19yZXNldH0ke2NfY29tbWl0fSxcCiske2NfY29tbWl0fUNPTU1JVF9JRCR7Y19yZXNldH0ke2NfY29tbWl0fSAoJHtjX0hFQUR9SEVBRCR7Y19yZXNldH0ke2NfY29tbWl0fSxcCiAgJHtjX3RhZ310YWc6IHYxLjAke2NfcmVzZXR9JHtjX2NvbW1pdH0sXAogICR7Y190YWd9dGFnOiBCJHtjX3Jlc2V0fSR7Y19jb21taXR9LFwKICAke2NfYnJhbmNofW1hc3RlciR7Y19yZXNldH0ke2NfY29tbWl0fSkke2NfcmVzZXR9IEIKLSR7Y19jb21taXR9Q09NTUlUX0lEICgke2NfdGFnfXRhZzogQTEke2NfcmVzZXR9JHtjX2NvbW1pdH0sXAorJHtjX2NvbW1pdH1DT01NSVRfSUQke2NfcmVzZXR9JHtjX2NvbW1pdH0gKCR7Y190YWd9dGFnOiBBMSR7Y19yZXNldH0ke2NfY29tbWl0fSxcCiAgJHtjX3JlbW90ZUJyYW5jaH1vdGhlci9tYXN0ZXIke2NfcmVzZXR9JHtjX2NvbW1pdH0pJHtjX3Jlc2V0fSBBMQotJHtjX2NvbW1pdH1DT01NSVRfSUQgKCR7Y19zdGFzaH1yZWZzL3N0YXNoJHtjX3Jlc2V0fSR7Y19jb21taXR9KSR7Y19yZXNldH1cCiske2NfY29tbWl0fUNPTU1JVF9JRCR7Y19yZXNldH0ke2NfY29tbWl0fSAoJHtjX3N0YXNofXJlZnMvc3Rhc2gke2NfcmVzZXR9JHtjX2NvbW1pdH0pJHtjX3Jlc2V0fVwKICBPbiBtYXN0ZXI6IENoYW5nZXMgdG8gQS50Ci0ke2NfY29tbWl0fUNPTU1JVF9JRCAoJHtjX3RhZ310YWc6IEEke2NfcmVzZXR9JHtjX2NvbW1pdH0pJHtjX3Jlc2V0fSBBCiske2NfY29tbWl0fUNPTU1JVF9JRCR7Y19yZXNldH0ke2NfY29tbWl0fSAoJHtjX3RhZ310YWc6IEEke2NfcmVzZXR9JHtjX2NvbW1pdH0pJHtjX3Jlc2V0fSBBCiBFT0YKIAogIyBXZSB3YW50IGxvZyB0byBzaG93IGFsbCwgYnV0IHRoZSBzZWNvbmQgcGFyZW50IHRvIHJlZnMvc3Rhc2ggaXMgaXJyZWxldmFudApkaWZmIC0tZ2l0IGEvdC90NDIwOC1sb2ctbWFnaWMtcGF0aHNwZWMuc2ggYi90L3Q0MjA4LWxvZy1tYWdpYy1wYXRoc3BlYy5zaAppbmRleCAyYzQ4MmI2Li43MjMwMGI1IDEwMDc1NQotLS0gYS90L3Q0MjA4LWxvZy1tYWdpYy1wYXRoc3BlYy5zaAorKysgYi90L3Q0MjA4LWxvZy1tYWdpYy1wYXRoc3BlYy5zaApAQCAtMTEsMTEgKzExLDI0IEBACiAJbWtkaXIgc3ViCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgbG9nIDovIiBzaG91bGQgYmUgYW1iaWd1b3VzJyAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyA6LyAyPmVycm9yICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IGxvZyA6LyIgc2hvdWxkIG5vdCBiZSBhbWJpZ3VvdXMnICcKKwlnaXQgbG9nIDovCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgbG9nIDovYSIgc2hvdWxkIGJlIGFtYmlndW91cyAoYXBwbGllZCBib3RoIHJldiBhbmQgd29ya3RyZWUpJyAnCisJOiA+YSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBsb2cgOi9hIDI+ZXJyb3IgJiYKIAlncmVwIGFtYmlndW91cyBlcnJvcgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IGxvZyA6L2EgLS0gIiBzaG91bGQgbm90IGJlIGFtYmlndW91cycgJworCWdpdCBsb2cgOi9hIC0tCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgbG9nIC0tIDovYSIgc2hvdWxkIG5vdCBiZSBhbWJpZ3VvdXMnICcKKwlnaXQgbG9nIC0tIDovYQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICciZ2l0IGxvZyA6IiBzaG91bGQgYmUgYW1iaWd1b3VzJyAnCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyA6IDI+ZXJyb3IgJiYKIAlncmVwIGFtYmlndW91cyBlcnJvcgpkaWZmIC0tZ2l0IGEvdC90NDIwOS1sb2ctcGlja2F4ZS5zaCBiL3QvdDQyMDktbG9nLXBpY2theGUuc2gKaW5kZXggZWVkNzI3My4uMzhmYjgwZiAxMDA3NTUKLS0tIGEvdC90NDIwOS1sb2ctcGlja2F4ZS5zaAorKysgYi90L3Q0MjA5LWxvZy1waWNrYXhlLnNoCkBAIC04MCw2ICs4MCwyMCBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC1HIC0tdGV4dGNvbnYgKG1pc3NpbmcgdGV4dGNvbnYgdG9vbCknICcKKwllY2hvICIqIGRpZmY9dGVzdCIgPi5naXRhdHRyaWJ1dGVzICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IC1jIGRpZmYudGVzdC50ZXh0Y29udj1taXNzaW5nIGxvZyAtR2ZvbyAmJgorCXJtIC5naXRhdHRyaWJ1dGVzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtRyAtLW5vLXRleHRjb252IChtaXNzaW5nIHRleHRjb252IHRvb2wpJyAnCisJZWNobyAiKiBkaWZmPXRlc3QiID4uZ2l0YXR0cmlidXRlcyAmJgorCWdpdCAtYyBkaWZmLnRlc3QudGV4dGNvbnY9bWlzc2luZyBsb2cgLUdmb28gLS1uby10ZXh0Y29udiA+YWN0dWFsICYmCisJPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwlybSAuZ2l0YXR0cmlidXRlcworJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLVMgKG5vbWF0Y2gpJyAnCiAJZ2l0IGxvZyAtU3BpY2tlZCAtLWZvcm1hdD0lSCA+YWN0dWFsICYmCiAJPmV4cGVjdCAmJgpAQCAtMTE2LDQgKzEzMCwxOCBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC1TIC0tdGV4dGNvbnYgKG1pc3NpbmcgdGV4dGNvbnYgdG9vbCknICcKKwllY2hvICIqIGRpZmY9dGVzdCIgPi5naXRhdHRyaWJ1dGVzICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IC1jIGRpZmYudGVzdC50ZXh0Y29udj1taXNzaW5nIGxvZyAtU2ZvbyAmJgorCXJtIC5naXRhdHRyaWJ1dGVzCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtUyAtLW5vLXRleHRjb252IChtaXNzaW5nIHRleHRjb252IHRvb2wpJyAnCisJZWNobyAiKiBkaWZmPXRlc3QiID4uZ2l0YXR0cmlidXRlcyAmJgorCWdpdCAtYyBkaWZmLnRlc3QudGV4dGNvbnY9bWlzc2luZyBsb2cgLVNmb28gLS1uby10ZXh0Y29udiA+YWN0dWFsICYmCisJPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwlybSAuZ2l0YXR0cmlidXRlcworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQyMTAtbG9nLWkxOG4uc2ggYi90L3Q0MjEwLWxvZy1pMThuLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUyYTc0NzIKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjEwLWxvZy1pMThuLnNoCkBAIC0wLDAgKzEsNTggQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSd0ZXN0IGxvZyB3aXRoIGkxOG4gZmVhdHVyZXMnCisuIC4vdGVzdC1saWIuc2gKKworIyB0d28gZm9ybXMgb2Ygw6kKK3V0ZjhfZT0kKHByaW50ZiAnXDMwM1wyNTEnKQorbGF0aW4xX2U9JChwcmludGYgJ1wzNTEnKQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgY29tbWl0cyBpbiBkaWZmZXJlbnQgZW5jb2RpbmdzJyAnCisJdGVzdF90aWNrICYmCisJY2F0ID5tc2cgPDwtRU9GICYmCisJdXRmOAorCisJdCR7dXRmOF9lfXN0CisJRU9GCisJZ2l0IGFkZCBtc2cgJiYKKwlnaXQgLWMgaTE4bi5jb21taXRlbmNvZGluZz11dGY4IGNvbW1pdCAtRiBtc2cgJiYKKwljYXQgPm1zZyA8PC1FT0YgJiYKKwlsYXRpbjEKKworCXQke2xhdGluMV9lfXN0CisJRU9GCisJZ2l0IGFkZCBtc2cgJiYKKwlnaXQgLWMgaTE4bi5jb21taXRlbmNvZGluZz1JU08tODg1OS0xIGNvbW1pdCAtRiBtc2cKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JlcCBzZWFyY2hlcyBpbiBsb2cgb3V0cHV0IGVuY29kaW5nICh1dGY4KScgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlsYXRpbjEKKwl1dGY4CisJRU9GCisJZ2l0IGxvZyAtLWVuY29kaW5nPXV0ZjggLS1mb3JtYXQ9JXMgLS1ncmVwPSR1dGY4X2UgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JlcCBzZWFyY2hlcyBpbiBsb2cgb3V0cHV0IGVuY29kaW5nIChsYXRpbjEpJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWxhdGluMQorCXV0ZjgKKwlFT0YKKwlnaXQgbG9nIC0tZW5jb2Rpbmc9SVNPLTg4NTktMSAtLWZvcm1hdD0lcyAtLWdyZXA9JGxhdGluMV9lID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyZXAgZG9lcyBub3QgZmluZCBub24tcmVlbmNvZGVkIHZhbHVlcyAodXRmOCknICcKKwk+ZXhwZWN0ICYmCisJZ2l0IGxvZyAtLWVuY29kaW5nPXV0ZjggLS1mb3JtYXQ9JXMgLS1ncmVwPSRsYXRpbjFfZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmVwIGRvZXMgbm90IGZpbmQgbm9uLXJlZW5jb2RlZCB2YWx1ZXMgKGxhdGluMSknICcKKwk+ZXhwZWN0ICYmCisJZ2l0IGxvZyAtLWVuY29kaW5nPUlTTy04ODU5LTEgLS1mb3JtYXQ9JXMgLS1ncmVwPSR1dGY4X2UgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MjExLWxpbmUtbG9nLnNoIGIvdC90NDIxMS1saW5lLWxvZy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43Nzc2ZjkzCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDIxMS1saW5lLWxvZy5zaApAQCAtMCwwICsxLDY3IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ndGVzdCBsb2cgLUwnCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgKGltcG9ydCBoaXN0b3J5KScgJworCWdpdCBmYXN0LWltcG9ydCA8ICIkVEVTVF9ESVJFQ1RPUlkiL3Q0MjExL2hpc3RvcnkuZXhwb3J0ICYmCisJZ2l0IHJlc2V0IC0taGFyZAorJworCitjYW5uZWRfdGVzdF8xICgpIHsKKwl0ZXN0X2V4cGVjdF8kMSAiJDIiICIKKwkJZ2l0IGxvZyAkMiA+YWN0dWFsICYmCisJCXRlc3RfY21wIFwiXCRURVNUX0RJUkVDVE9SWVwiL3Q0MjExL2V4cGVjdC4kMyBhY3R1YWwKKwkiCit9CisKK2Nhbm5lZF90ZXN0ICgpIHsKKwljYW5uZWRfdGVzdF8xIHN1Y2Nlc3MgIiRAIgorfQorY2FubmVkX3Rlc3RfZmFpbHVyZSAoKSB7CisJY2FubmVkX3Rlc3RfMSBmYWlsdXJlICIkQCIKK30KKwordGVzdF9iYWRfb3B0cyAoKSB7CisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiaW52YWxpZCBhcmdzOiAkMSIgIgorCQl0ZXN0X211c3RfZmFpbCBnaXQgbG9nICQxIDI+ZXJyb3JzICYmCisJCWdyZXAgJyQyJyBlcnJvcnMKKwkiCit9CisKK2Nhbm5lZF90ZXN0ICItTCA0LDEyOmEuYyBzaW1wbGUiIHNpbXBsZS1mCitjYW5uZWRfdGVzdCAiLUwgNCwrOTphLmMgc2ltcGxlIiBzaW1wbGUtZgorY2FubmVkX3Rlc3QgIi1MICcvbG9uZyBmLywvXn0vOmEuYycgc2ltcGxlIiBzaW1wbGUtZgorY2FubmVkX3Rlc3QgIi1MIDpmOmEuYyBzaW1wbGUiIHNpbXBsZS1mLXRvLW1haW4KKworY2FubmVkX3Rlc3QgIi1MICcvbWFpbi8sL159LzphLmMnIHNpbXBsZSIgc2ltcGxlLW1haW4KK2Nhbm5lZF90ZXN0ICItTCA6bWFpbjphLmMgc2ltcGxlIiBzaW1wbGUtbWFpbi10by1lbmQKKworY2FubmVkX3Rlc3QgIi1MIDEsKzQ6YS5jIHNpbXBsZSIgYmVnaW5uaW5nLW9mLWZpbGUKKworY2FubmVkX3Rlc3QgIi1MIDIwOmEuYyBzaW1wbGUiIGVuZC1vZi1maWxlCisKK2Nhbm5lZF90ZXN0ICItTCAnL2xvbmcgZi8nLC9efS86YS5jIC1MIC9tYWluLywvXn0vOmEuYyBzaW1wbGUiIHR3by1yYW5nZXMKK2Nhbm5lZF90ZXN0ICItTCAyNCwrMTphLmMgc2ltcGxlIiB2YW5pc2hlcy1lYXJseQorCitjYW5uZWRfdGVzdCAiLU0gLUwgJy9sb25nIGYvLC9efS86Yi5jJyBtb3ZlLXN1cHBvcnQiIG1vdmUtc3VwcG9ydC1mCitjYW5uZWRfdGVzdCAiLU0gLUwgJzpmOmIuYycgcGFyYWxsZWwtY2hhbmdlIiBwYXJhbGxlbC1jaGFuZ2UtZi10by1tYWluCisKK2Nhbm5lZF90ZXN0ICItTCA0LDEyOmEuYyAtTCA6bWFpbjphLmMgc2ltcGxlIiBtdWx0aXBsZQorY2FubmVkX3Rlc3QgIi1MIDQsMTg6YS5jIC1MIDptYWluOmEuYyBzaW1wbGUiIG11bHRpcGxlLW92ZXJsYXBwaW5nCitjYW5uZWRfdGVzdCAiLUwgOm1haW46YS5jIC1MIDQsMTg6YS5jIHNpbXBsZSIgbXVsdGlwbGUtb3ZlcmxhcHBpbmcKK2Nhbm5lZF90ZXN0ICItTCA0OmEuYyAtTCA4LDEyOmEuYyBzaW1wbGUiIG11bHRpcGxlLXN1cGVyc2V0CitjYW5uZWRfdGVzdCAiLUwgOCwxMjphLmMgLUwgNDphLmMgc2ltcGxlIiBtdWx0aXBsZS1zdXBlcnNldAorCit0ZXN0X2JhZF9vcHRzICItTCIgInN3aXRjaC4qcmVxdWlyZXMgYSB2YWx1ZSIKK3Rlc3RfYmFkX29wdHMgIi1MIGIuYyIgImFyZ3VtZW50Lipub3Qgb2YgdGhlIGZvcm0iCit0ZXN0X2JhZF9vcHRzICItTCAxOiIgImFyZ3VtZW50Lipub3Qgb2YgdGhlIGZvcm0iCit0ZXN0X2JhZF9vcHRzICItTCAxOm5vbmV4aXN0ZW50IiAiVGhlcmUgaXMgbm8gcGF0aCIKK3Rlc3RfYmFkX29wdHMgIi1MIDE6c2ltcGxlIiAiVGhlcmUgaXMgbm8gcGF0aCIKK3Rlc3RfYmFkX29wdHMgIi1MICcvZm9vOmIuYyciICJhcmd1bWVudC4qbm90IG9mIHRoZSBmb3JtIgordGVzdF9iYWRfb3B0cyAiLUwgMTAwMDpiLmMiICJoYXMgb25seS4qbGluZXMiCit0ZXN0X2JhZF9vcHRzICItTCAxLDEwMDA6Yi5jIiAiaGFzIG9ubHkuKmxpbmVzIgordGVzdF9iYWRfb3B0cyAiLUwgOmIuYyIgImFyZ3VtZW50Lipub3Qgb2YgdGhlIGZvcm0iCit0ZXN0X2JhZF9vcHRzICItTCA6Zm9vOmIuYyIgIm5vIG1hdGNoIgorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LmJlZ2lubmluZy1vZi1maWxlIGIvdC90NDIxMS9leHBlY3QuYmVnaW5uaW5nLW9mLWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFiNDA1NAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LmJlZ2lubmluZy1vZi1maWxlCkBAIC0wLDAgKzEsNDMgQEAKK2NvbW1pdCA0YTIzYWU1Yzk4ZDU5YTU4YzZkYTAzNjE1Njk1OWYyZGM5ZjQ3MmFkCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDc6NDAgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGF0IHZlcnkgYmVnaW5uaW5nCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMSwzICsxLDQgQEAKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCisgbG9uZyBmKGxvbmcgeCkKKworY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTEsMyArMSwzIEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCistaW50IGYoaW50IHgpCisrbG9uZyBmKGxvbmcgeCkKKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMSwzIEBACisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisraW50IGYoaW50IHgpCmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5lbmQtb2YtZmlsZSBiL3QvdDQyMTEvZXhwZWN0LmVuZC1vZi1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMjViYjIKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5lbmQtb2YtZmlsZQpAQCAtMCwwICsxLDYyIEBACitjb21taXQgNDY1OTUzODg0NGRhYTI4NDliMWE5ZTdkNmZhZGI5NmZjZDI2ZmM4MworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjQzIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBiYWNrIHRvIGNvbXBsZXRlIGxpbmUKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0yMCwzICsyMCw1IEBACisgCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworLX0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK30KKysKKysvKiBpbmNvbXBsZXRlIGxpbmVzIGFyZSBiYWQhICovCisKK2NvbW1pdCAxMDBiNjFhNmYyZjcyMGY4MTI2MjBhOWQxMGFmYjNhOTYwY2NiNzNjCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6MTAgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIHRvIGFuIGluY29tcGxldGUgbGluZSBhdCBlbmQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0yMCwzICsyMCwzIEBACisgCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworLX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKworY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE5LDMgKzE5LDMgQEAKKy0JcHJpbnRmKCIlZFxuIiwgZigxNSkpOworKwlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzE4LDMgQEAKKysJcHJpbnRmKCIlZFxuIiwgZigxNSkpOworKwlyZXR1cm4gMDsKKyt9CmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5tb3ZlLXN1cHBvcnQtZiBiL3QvdDQyMTEvZXhwZWN0Lm1vdmUtc3VwcG9ydC1mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MDVlMDEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5tb3ZlLXN1cHBvcnQtZgpAQCAtMCwwICsxLDgwIEBACitjb21taXQgNmNlM2M0ZmY2OTAxMzYwOTliYjE3ZTFhODc2NmI3NTc2NDcyNmVhNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ5OjUwIDIwMTMgKzAxMDAKKworICAgIGFub3RoZXIgc2ltcGxlIGNoYW5nZQorCitkaWZmIC0tZ2l0IGEvYi5jIGIvYi5jCistLS0gYS9iLmMKKysrKyBiL2IuYworQEAgLTQsOSArNCw5IEBACisgbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKy0JCXggPj49IDE7CisrCQl4IC89IDI7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorCitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw5ICszLDkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBmMDRmYjIwZjJjNzc4NTA5OTZjYmE3Mzk3MDlhY2M2ZmFlY2M1OGY3CitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NTUgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGYoKQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsOCArMyw5IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMyw4IEBACisraW50IGYoaW50IHgpCisreworKwlpbnQgcyA9IDA7CisrCXdoaWxlICh4KSB7CisrCQl4ID4+PSAxOworKwkJcysrOworKwl9CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3QubXVsdGlwbGUgYi90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmFkNWI1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDIxMS9leHBlY3QubXVsdGlwbGUKQEAgLTAsMCArMSwxMDQgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDcgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorKworKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IDEwMGI2MWE2ZjJmNzIwZjgxMjYyMGE5ZDEwYWZiM2E5NjBjY2I3M2MKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODoxMCAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgdG8gYW4gaW5jb21wbGV0ZSBsaW5lIGF0IGVuZAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDUgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorCitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw5ICszLDkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CitAQCAtMTcsNSArMTcsNSBAQAorIGludCBtYWluICgpCisgeworLQlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisrCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworIH0KKworY29tbWl0IGYwNGZiMjBmMmM3Nzg1MDk5NmNiYTczOTcwOWFjYzZmYWVjYzU4ZjcKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo1NSAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgZigpCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw4ICszLDkgQEAKKyBpbnQgZihpbnQgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKysJcmV0dXJuIHM7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICszLDggQEAKKytpbnQgZihpbnQgeCkKKyt7CisrCWludCBzID0gMDsKKysJd2hpbGUgKHgpIHsKKysJCXggPj49IDE7CisrCQlzKys7CisrCX0KKyt9CmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZS1vdmVybGFwcGluZyBiL3QvdDQyMTEvZXhwZWN0Lm11bHRpcGxlLW92ZXJsYXBwaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MzBiNmUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZS1vdmVybGFwcGluZwpAQCAtMCwwICsxLDE4NyBAQAorY29tbWl0IDQ2NTk1Mzg4NDRkYWEyODQ5YjFhOWU3ZDZmYWRiOTZmY2QyNmZjODMKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODo0MyAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgYmFjayB0byBjb21wbGV0ZSBsaW5lCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtNCwxOSArNCwyMSBAQAorIGxvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyt9CisrCisrLyogaW5jb21wbGV0ZSBsaW5lcyBhcmUgYmFkISAqLworCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtNCwxOSArNCwxOSBAQAorIGxvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCAzOWI2ZWIyZDViNzA2ZDMzMjIxODRhMTY5ZjY2NmYyNWVkM2ZiZDAwCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6NDEgMjAxMyArMDEwMAorCisgICAgdG91Y2ggY29tbWVudAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsMTkgKzMsMTkgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKy0gKiBBIGNvbW1lbnQuCisrICogVGhpcyBpcyBvbmx5IGFuIGV4YW1wbGUhCisgICovCisgCisgaW50IG1haW4gKCkKKyB7CisgCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworIH0KKworY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsMTkgKzMsMTkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBBIGNvbW1lbnQuCisgICovCisgCisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE4ICszLDE5IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIEEgY29tbWVudC4KKyAgKi8KKyAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsMTggQEAKKytpbnQgZihpbnQgeCkKKyt7CisrCWludCBzID0gMDsKKysJd2hpbGUgKHgpIHsKKysJCXggPj49IDE7CisrCQlzKys7CisrCX0KKyt9CisrCisrLyoKKysgKiBBIGNvbW1lbnQuCisrICovCisrCisraW50IG1haW4gKCkKKyt7CisrCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcmV0dXJuIDA7CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3QubXVsdGlwbGUtc3VwZXJzZXQgYi90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZS1zdXBlcnNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWY1YmM0Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDIxMS9leHBlY3QubXVsdGlwbGUtc3VwZXJzZXQKQEAgLTAsMCArMSw1OSBAQAorY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsOSArMyw5IEBACistaW50IGYoaW50IHgpCisrbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDggKzMsOSBAQAorIGludCBmKGludCB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorKwlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsOCBAQAorK2ludCBmKGludCB4KQorK3sKKysJaW50IHMgPSAwOworKwl3aGlsZSAoeCkgeworKwkJeCA+Pj0gMTsKKysJCXMrKzsKKysJfQorK30KZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LnBhcmFsbGVsLWNoYW5nZS1mLXRvLW1haW4gYi90L3Q0MjExL2V4cGVjdC5wYXJhbGxlbC1jaGFuZ2UtZi10by1tYWluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmRlZjgKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5wYXJhbGxlbC1jaGFuZ2UtZi10by1tYWluCkBAIC0wLDAgKzEsMTYwIEBACitjb21taXQgMDQ2OWM2MGJjNDgzN2Q1MmQ5N2IxZjA4MWRlYzVmOThkZWEyMGZlZAorTWVyZ2U6IGJhMjI3YzYgNmNlM2M0ZgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAaW5mLmV0aHouY2g+CitEYXRlOiAgIEZyaSBBcHIgMTIgMTY6MTY6MjQgMjAxMyArMDIwMAorCisgICAgTWVyZ2UgYWNyb3NzIHRoZSByZW5hbWUKKworCitjb21taXQgNmNlM2M0ZmY2OTAxMzYwOTliYjE3ZTFhODc2NmI3NTc2NDcyNmVhNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ5OjUwIDIwMTMgKzAxMDAKKworICAgIGFub3RoZXIgc2ltcGxlIGNoYW5nZQorCitkaWZmIC0tZ2l0IGEvYi5jIGIvYi5jCistLS0gYS9iLmMKKysrKyBiL2IuYworQEAgLTQsMTQgKzQsMTQgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworLQkJeCA+Pj0gMTsKKysJCXggLz0gMjsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAgKi8KKyAKKworY29tbWl0IGJhMjI3YzY2MzIzNDk3MDBmYmI5NTdkZWMyYjUwZjVlMjM1OGJlM2YKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QGluZi5ldGh6LmNoPgorRGF0ZTogICBGcmkgQXByIDEyIDE2OjE1OjU3IDIwMTMgKzAyMDAKKworICAgIGNoYW5nZSBvbiBhbm90aGVyIGxpbmUgb2YgaGlzdG9yeSB3aGlsZSByZW5hbWUgaGFwcGVucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTQsMTQgKzQsMTQgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKy0gKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKysgKiBUaGlzIGlzIG9ubHkgYSBzaG9ydCBleGFtcGxlIQorICAqLworIAorCitjb21taXQgMzliNmViMmQ1YjcwNmQzMzIyMTg0YTE2OWY2NjZmMjVlZDNmYmQwMAorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjQxIDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGNvbW1lbnQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE0ICszLDE0IEBACisgbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorIAorIC8qCistICogQSBjb21tZW50LgorKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorCitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMywxNCArMywxNCBAQAorLWludCBmKGludCB4KQorK2xvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIEEgY29tbWVudC4KKyAgKi8KKyAKKworY29tbWl0IGYwNGZiMjBmMmM3Nzg1MDk5NmNiYTczOTcwOWFjYzZmYWVjYzU4ZjcKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo1NSAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgZigpCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMywxMyArMywxNCBAQAorIGludCBmKGludCB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorKwlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBBIGNvbW1lbnQuCisgICovCisgCisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsMTMgQEAKKytpbnQgZihpbnQgeCkKKyt7CisrCWludCBzID0gMDsKKysJd2hpbGUgKHgpIHsKKysJCXggPj49IDE7CisrCQlzKys7CisrCX0KKyt9CisrCisrLyoKKysgKiBBIGNvbW1lbnQuCisrICovCisrCmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5zaW1wbGUtZiBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZjViYzQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5zaW1wbGUtZgpAQCAtMCwwICsxLDU5IEBACitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw5ICszLDkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBmMDRmYjIwZjJjNzc4NTA5OTZjYmE3Mzk3MDlhY2M2ZmFlY2M1OGY3CitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NTUgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGYoKQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsOCArMyw5IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMyw4IEBACisraW50IGYoaW50IHgpCisreworKwlpbnQgcyA9IDA7CisrCXdoaWxlICh4KSB7CisrCQl4ID4+PSAxOworKwkJcysrOworKwl9CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3Quc2ltcGxlLWYtdG8tbWFpbiBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1mLXRvLW1haW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3NTc2OAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1mLXRvLW1haW4KQEAgLTAsMCArMSwxMDAgQEAKK2NvbW1pdCAzOWI2ZWIyZDViNzA2ZDMzMjIxODRhMTY5ZjY2NmYyNWVkM2ZiZDAwCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6NDEgMjAxMyArMDEwMAorCisgICAgdG91Y2ggY29tbWVudAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsMTQgKzMsMTQgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKy0gKiBBIGNvbW1lbnQuCisrICogVGhpcyBpcyBvbmx5IGFuIGV4YW1wbGUhCisgICovCisgCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE0ICszLDE0IEBACistaW50IGYoaW50IHgpCisrbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorIAorIC8qCisgICogQSBjb21tZW50LgorICAqLworIAorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDEzICszLDE0IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIEEgY29tbWVudC4KKyAgKi8KKyAKKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMywxMyBAQAorK2ludCBmKGludCB4KQorK3sKKysJaW50IHMgPSAwOworKwl3aGlsZSAoeCkgeworKwkJeCA+Pj0gMTsKKysJCXMrKzsKKysJfQorK30KKysKKysvKgorKyAqIEEgY29tbWVudC4KKysgKi8KKysKZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1tYWluIGIvdC90NDIxMS9leHBlY3Quc2ltcGxlLW1haW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljZTM5YgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1tYWluCkBAIC0wLDAgKzEsNjggQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDUgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNSBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0xNyw1ICsxNyw1IEBACisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICsxNiw1IEBACisraW50IG1haW4gKCkKKyt7CisrCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcmV0dXJuIDA7CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3Quc2ltcGxlLW1haW4tdG8tZW5kIGIvdC90NDIxMS9leHBlY3Quc2ltcGxlLW1haW4tdG8tZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ODBiZDkKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5zaW1wbGUtbWFpbi10by1lbmQKQEAgLTAsMCArMSw3MCBAQAorY29tbWl0IDQ2NTk1Mzg4NDRkYWEyODQ5YjFhOWU3ZDZmYWRiOTZmY2QyNmZjODMKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODo0MyAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgYmFjayB0byBjb21wbGV0ZSBsaW5lCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNyBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyt9CisrCisrLyogaW5jb21wbGV0ZSBsaW5lcyBhcmUgYmFkISAqLworCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNSBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0xNyw1ICsxNyw1IEBACisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICsxNiw1IEBACisraW50IG1haW4gKCkKKyt7CisrCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcmV0dXJuIDA7CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3QudHdvLXJhbmdlcyBiL3QvdDQyMTEvZXhwZWN0LnR3by1yYW5nZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEwOWFhMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnR3by1yYW5nZXMKQEAgLTAsMCArMSwxMDIgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDUgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNSBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDkgKzMsOSBAQAorLWludCBmKGludCB4KQorK2xvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KK0BAIC0xNyw1ICsxNyw1IEBACisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDggKzMsOSBAQAorIGludCBmKGludCB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorKwlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsOCBAQAorK2ludCBmKGludCB4KQorK3sKKysJaW50IHMgPSAwOworKwl3aGlsZSAoeCkgeworKwkJeCA+Pj0gMTsKKysJCXMrKzsKKysJfQorK30KZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LnZhbmlzaGVzLWVhcmx5IGIvdC90NDIxMS9leHBlY3QudmFuaXNoZXMtZWFybHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3Y2QwNgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnZhbmlzaGVzLWVhcmx5CkBAIC0wLDAgKzEsMzkgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTIyLDEgKzI0LDEgQEAKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysvKiBpbmNvbXBsZXRlIGxpbmVzIGFyZSBiYWQhICovCisKK2NvbW1pdCAxMDBiNjFhNmYyZjcyMGY4MTI2MjBhOWQxMGFmYjNhOTYwY2NiNzNjCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6MTAgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIHRvIGFuIGluY29tcGxldGUgbGluZSBhdCBlbmQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0yMiwxICsyMiwxIEBACistfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICsyMCwxIEBACisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9oaXN0b3J5LmV4cG9ydCBiL3QvdDQyMTEvaGlzdG9yeS5leHBvcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlmNDFlMgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvaGlzdG9yeS5leHBvcnQKQEAgLTAsMCArMSw0MDYgQEAKK2Jsb2IKK21hcmsgOjEKK2RhdGEgMTU3CisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IGYoaW50IHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9Cit9CisKKy8qCisgKiBBIGNvbW1lbnQuCisgKi8KKworaW50IG1haW4gKCkKK3sKKwlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKK3Jlc2V0IHJlZnMvdGFncy9zaW1wbGUKK2NvbW1pdCByZWZzL3RhZ3Mvc2ltcGxlCittYXJrIDoyCithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDY4OCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ2ODggKzAxMDAKK2RhdGEgOAoraW5pdGlhbAorTSAxMDA2NDQgOjEgYS5jCisKK2Jsb2IKK21hcmsgOjMKK2RhdGEgMTY4CisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IGYoaW50IHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBBIGNvbW1lbnQuCisgKi8KKworaW50IG1haW4gKCkKK3sKKwlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKK2NvbW1pdCByZWZzL3RhZ3Mvc2ltcGxlCittYXJrIDo0CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDY5NSArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ2OTUgKzAxMDAKK2RhdGEgMTEKK2NoYW5nZSBmKCkKK2Zyb20gOjIKK00gMTAwNjQ0IDozIGEuYworCitibG9iCittYXJrIDo1CitkYXRhIDE3MQorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2xvbmcgZihsb25nIHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBBIGNvbW1lbnQuCisgKi8KKworaW50IG1haW4gKCkKK3sKKwlwcmludGYoIiVsZFxuIiwgZigxNSkpOworCXJldHVybiAwOworfQorCitjb21taXQgcmVmcy90YWdzL3NpbXBsZQorbWFyayA6NgorYXV0aG9yIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ3MTYgKzAxMDAKK2NvbW1pdHRlciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0NzE2ICswMTAwCitkYXRhIDIxCit0b3VjaCBib3RoIGZ1bmN0aW9ucworZnJvbSA6NAorTSAxMDA2NDQgOjUgYS5jCisKK2Jsb2IKK21hcmsgOjcKK2RhdGEgMTg1CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbG9uZyBmKGxvbmcgeCkKK3sKKwlpbnQgcyA9IDA7CisJd2hpbGUgKHgpIHsKKwkJeCA+Pj0gMTsKKwkJcysrOworCX0KKwlyZXR1cm4gczsKK30KKworLyoKKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICovCisKK2ludCBtYWluICgpCit7CisJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKwlyZXR1cm4gMDsKK30KKworY29tbWl0IHJlZnMvdGFncy9zaW1wbGUKK21hcmsgOjgKK2F1dGhvciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0NzQxICswMTAwCitjb21taXR0ZXIgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDc0MSArMDEwMAorZGF0YSAxNAordG91Y2ggY29tbWVudAorZnJvbSA6NgorTSAxMDA2NDQgOjcgYS5jCisKK2Jsb2IKK21hcmsgOjkKK2RhdGEgMjA1CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbG9uZyBmKGxvbmcgeCkKK3sKKwlpbnQgcyA9IDA7CisJd2hpbGUgKHgpIHsKKwkJeCA+Pj0gMTsKKwkJcysrOworCX0KKwlyZXR1cm4gczsKK30KKworLyoKKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICovCisKK2ludCBtYWluICgpCit7CisJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKwlyZXR1cm4gMDsKK30KKworY29tbWl0IHJlZnMvdGFncy9zaW1wbGUKK21hcmsgOjEwCithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDg2MCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ4NjAgKzAxMDAKK2RhdGEgMjUKK2NoYW5nZSBhdCB2ZXJ5IGJlZ2lubmluZworZnJvbSA6OAorTSAxMDA2NDQgOjkgYS5jCisKK2Jsb2IKK21hcmsgOjExCitkYXRhIDIwNAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2xvbmcgZihsb25nIHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9Citjb21taXQgcmVmcy90YWdzL3NpbXBsZQorbWFyayA6MTIKK2F1dGhvciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0ODkwICswMTAwCitjb21taXR0ZXIgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDg5MCArMDEwMAorZGF0YSAzNgorY2hhbmdlIHRvIGFuIGluY29tcGxldGUgbGluZSBhdCBlbmQKK2Zyb20gOjEwCitNIDEwMDY0NCA6MTEgYS5jCisKK2Jsb2IKK21hcmsgOjEzCitkYXRhIDIzOAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2xvbmcgZihsb25nIHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IHJlZnMvdGFncy9zaW1wbGUKK21hcmsgOjE0CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDkyMyArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ5MjMgKzAxMDAKK2RhdGEgMjkKK2NoYW5nZSBiYWNrIHRvIGNvbXBsZXRlIGxpbmUKK2Zyb20gOjEyCitNIDEwMDY0NCA6MTMgYS5jCisKK2NvbW1pdCByZWZzL3RhZ3MvbW92ZS1zdXBwb3J0CittYXJrIDoxNQorYXV0aG9yIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ5NjggKzAxMDAKK2NvbW1pdHRlciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0OTY4ICswMTAwCitkYXRhIDEwCittb3ZlIGZpbGUKK2Zyb20gOjE0CitEIGEuYworTSAxMDA2NDQgOjEzIGIuYworCitibG9iCittYXJrIDoxNgorZGF0YSAyMzcKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitsb25nIGYobG9uZyB4KQoreworCWludCBzID0gMDsKKwl3aGlsZSAoeCkgeworCQl4IC89IDI7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IHJlZnMvdGFncy9tb3ZlLXN1cHBvcnQKK21hcmsgOjE3CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDk5MCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ5OTAgKzAxMDAKK2RhdGEgMjIKK2Fub3RoZXIgc2ltcGxlIGNoYW5nZQorZnJvbSA6MTUKK00gMTAwNjQ0IDoxNiBiLmMKKworYmxvYgorbWFyayA6MTgKK2RhdGEgMjU0CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbG9uZyBmKGxvbmcgeCk7CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworbG9uZyBmKGxvbmcgeCkKK3sKKwlpbnQgcyA9IDA7CisJd2hpbGUgKHgpIHsKKwkJeCAvPSAyOworCQlzKys7CisJfQorCXJldHVybiBzOworfQorCitjb21taXQgcmVmcy9oZWFkcy9tYXN0ZXIKK21hcmsgOjE5CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NTAyNCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDUwMjQgKzAxMDAKK2RhdGEgMjEKK21vdmUgd2l0aGluIHRoZSBmaWxlCitmcm9tIDoxNworTSAxMDA2NDQgOjE4IGIuYworCitibG9iCittYXJrIDoyMAorZGF0YSAyNDMKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitsb25nIGYobG9uZyB4KQoreworCWludCBzID0gMDsKKwl3aGlsZSAoeCkgeworCQl4ID4+PSAxOworCQlzKys7CisJfQorCXJldHVybiBzOworfQorCisvKgorICogVGhpcyBpcyBvbmx5IGEgc2hvcnQgZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IHJlZnMvaGVhZHMvcGFyYWxsZWwtY2hhbmdlCittYXJrIDoyMQorYXV0aG9yIFRob21hcyBSYXN0IDx0cmFzdEBpbmYuZXRoei5jaD4gMTM2NTc3NjE1NyArMDIwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBpbmYuZXRoei5jaD4gMTM2NTc3NjE1NyArMDIwMAorZGF0YSA1NQorY2hhbmdlIG9uIGFub3RoZXIgbGluZSBvZiBoaXN0b3J5IHdoaWxlIHJlbmFtZSBoYXBwZW5zCitmcm9tIDoxNAorTSAxMDA2NDQgOjIwIGEuYworCitibG9iCittYXJrIDoyMgorZGF0YSAyNDIKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitsb25nIGYobG9uZyB4KQoreworCWludCBzID0gMDsKKwl3aGlsZSAoeCkgeworCQl4IC89IDI7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYSBzaG9ydCBleGFtcGxlIQorICovCisKK2ludCBtYWluICgpCit7CisJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKwlyZXR1cm4gMDsKK30KKworLyogaW5jb21wbGV0ZSBsaW5lcyBhcmUgYmFkISAqLworCitjb21taXQgcmVmcy9oZWFkcy9wYXJhbGxlbC1jaGFuZ2UKK21hcmsgOjIzCithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QGluZi5ldGh6LmNoPiAxMzY1Nzc2MTg0ICswMjAwCitjb21taXR0ZXIgVGhvbWFzIFJhc3QgPHRyYXN0QGluZi5ldGh6LmNoPiAxMzY1Nzc2MTkxICswMjAwCitkYXRhIDI0CitNZXJnZSBhY3Jvc3MgdGhlIHJlbmFtZQorZnJvbSA6MjEKK21lcmdlIDoxNworRCBhLmMKK00gMTAwNjQ0IDoyMiBiLmMKKworcmVzZXQgcmVmcy9oZWFkcy9wYXJhbGxlbC1jaGFuZ2UKK2Zyb20gOjIzCisKZGlmZiAtLWdpdCBhL3QvdDQyMTItbG9nLWNvcnJ1cHQuc2ggYi90L3Q0MjEyLWxvZy1jb3JydXB0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVjNTA5OWIKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjEyLWxvZy1jb3JydXB0LnNoCkBAIC0wLDAgKzEsNDIgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgbG9nIHdpdGggaW52YWxpZCBjb21taXQgaGVhZGVycycKKworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJdGVzdF9jb21taXQgZm9vICYmCisKKwlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfAorCXNlZCAiL15hdXRob3IgL3MvPi8+LTw+LyIgPmJyb2tlbl9lbWFpbC5jb21taXQgJiYKKwlnaXQgaGFzaC1vYmplY3QgLXcgLXQgY29tbWl0IGJyb2tlbl9lbWFpbC5jb21taXQgPmJyb2tlbl9lbWFpbC5oYXNoICYmCisJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9oZWFkcy9icm9rZW5fZW1haWwgJChjYXQgYnJva2VuX2VtYWlsLmhhc2gpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBsb2cgd2l0aCBicm9rZW4gYXV0aG9yIGVtYWlsJyAnCisJeworCQllY2hvIGNvbW1pdCAkKGNhdCBicm9rZW5fZW1haWwuaGFzaCkKKwkJZWNobyAiQXV0aG9yOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIKKwkJZWNobyAiRGF0ZTogICBUaHUgSmFuIDEgMDA6MDA6MDAgMTk3MCArMDAwMCIKKwkJZWNobworCQllY2hvICIgICAgZm9vIgorCX0gPmV4cGVjdC5vdXQgJiYKKwk6ID5leHBlY3QuZXJyICYmCisKKwlnaXQgbG9nIGJyb2tlbl9lbWFpbCA+YWN0dWFsLm91dCAyPmFjdHVhbC5lcnIgJiYKKworCXRlc3RfY21wIGV4cGVjdC5vdXQgYWN0dWFsLm91dCAmJgorCXRlc3RfY21wIGV4cGVjdC5lcnIgYWN0dWFsLmVycgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgbG9nIC0tZm9ybWF0IHdpdGggYnJva2VuIGF1dGhvciBlbWFpbCcgJworCWVjaG8gIkEgVSBUaG9yK2F1dGhvckBleGFtcGxlLmNvbSsiID5leHBlY3Qub3V0ICYmCisJOiA+ZXhwZWN0LmVyciAmJgorCisJZ2l0IGxvZyAtLWZvcm1hdD0iJWFuKyVhZSslYWQiIGJyb2tlbl9lbWFpbCA+YWN0dWFsLm91dCAyPmFjdHVhbC5lcnIgJiYKKworCXRlc3RfY21wIGV4cGVjdC5vdXQgYWN0dWFsLm91dCAmJgorCXRlc3RfY21wIGV4cGVjdC5lcnIgYWN0dWFsLmVycgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQzMDAtbWVyZ2UtdHJlZS5zaCBiL3QvdDQzMDAtbWVyZ2UtdHJlZS5zaAppbmRleCBkMGIyYTQ1Li45MDE1ZTQ3IDEwMDc1NQotLS0gYS90L3Q0MzAwLW1lcmdlLXRyZWUuc2gKKysrIGIvdC90NDMwMC1tZXJnZS10cmVlLnNoCkBAIC0yNiw4ICsyNiw2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgYWRkICFBLCBCJyAnCiAJY2F0ID5leHBlY3RlZCA8PFxFWFBFQ1RFRCAmJgotYWRkZWQgaW4gbG9jYWwKLSAgb3VyICAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIE9ORQogRVhQRUNURUQKIAogCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgpAQCAtMzgsOSArMzYsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIGFkZCBBLCBCIChzYW1lKScgJwogCWNhdCA+ZXhwZWN0ZWQgPDxcRVhQRUNURUQgJiYKLWFkZGVkIGluIGJvdGgKLSAgb3VyICAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIE9ORQotICB0aGVpciAgMTAwNjQ0IDQzZDVhOGVkNmVmNmMwMGZmNzc1MDA4NjMzZjk1Nzg3ZDA4ODI4NWQgT05FCiBFWFBFQ1RFRAogCiAJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCkBAIC0xODEsOSArMTc2LDYgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSByZW1vdmUgQSwgIUInICcKIAljYXQgPmV4cGVjdGVkIDw8XEVYUEVDVEVEICYmCi1yZW1vdmVkIGluIGxvY2FsCi0gIGJhc2UgICAxMDA2NDQgNDNkNWE4ZWQ2ZWY2YzAwZmY3NzUwMDg2MzNmOTU3ODdkMDg4Mjg1ZCBPTkUKLSAgdGhlaXIgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIE9ORQogRVhQRUNURUQKIAogCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgpAQCAtMjEzLDYgKzIwNSwxOSBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaWxlIHJlbW92ZSBBLCBCIChzYW1lKScgJworCWNhdCA+ZXhwZWN0ZWQgPDxcRVhQRUNURUQgJiYKK0VYUEVDVEVECisKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwl0ZXN0X2NvbW1pdCAicm0tYS1iLWJhc2UiICJPTkUiICJBQUEiICYmCisJZ2l0IHJtIE9ORSAmJgorCWdpdCBjb21taXQgLW0gInJtLWEtYiIgJiYKKwlnaXQgdGFnICJybS1hLWIiICYmCisJZ2l0IG1lcmdlLXRyZWUgcm0tYS1iLWJhc2Ugcm0tYS1iIHJtLWEtYiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgY2hhbmdlIEEsIHJlbW92ZSBCJyAnCiAJY2F0ID5leHBlY3RlZCA8PFxFWFBFQ1RFRCAmJgogcmVtb3ZlZCBpbiByZW1vdGUKQEAgLTI1NCw2ICsyNTksNTcgQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndHJlZSBhZGQgQSwgQiAoc2FtZSknICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJRU9GCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgc3ViICYmCisJdGVzdF9jb21taXQgImFkZCBzdWIvZmlsZSIgInN1Yi9maWxlIiAiZmlsZSIgYWRkLXRyZWUtQSAmJgorCWdpdCBtZXJnZS10cmVlIGluaXRpYWwgYWRkLXRyZWUtQSBhZGQtdHJlZS1BID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyZWUgYWRkIEEsIEIgKGRpZmZlcmVudCknICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJYWRkZWQgaW4gYm90aAorCSAgb3VyICAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIHN1Yi9maWxlCisJICB0aGVpciAgMTAwNjQ0IGJhNjI5MjM4Y2E4OTQ4OWYyYjM1MGUxOTZjYTQ0NWUwOWQ4YmI4MzQgc3ViL2ZpbGUKKwlAQCAtMSArMSw1IEBACisJKzw8PDw8PDwgLm91cgorCSBBQUEKKwkrPT09PT09PQorCStCQkIKKwkrPj4+Pj4+PiAudGhlaXIKKwlFT0YKKwlnaXQgcmVzZXQgLS1oYXJkIGluaXRpYWwgJiYKKwlta2RpciBzdWIgJiYKKwl0ZXN0X2NvbW1pdCAiYWRkIHN1Yi9maWxlIiAic3ViL2ZpbGUiICJBQUEiIGFkZC10cmVlLWEtYi1BICYmCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgc3ViICYmCisJdGVzdF9jb21taXQgImFkZCBzdWIvZmlsZSIgInN1Yi9maWxlIiAiQkJCIiBhZGQtdHJlZS1hLWItQiAmJgorCWdpdCBtZXJnZS10cmVlIGluaXRpYWwgYWRkLXRyZWUtYS1iLUEgYWRkLXRyZWUtYS1iLUIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndHJlZSB1bmNoYW5nZWQgQSwgcmVtb3ZlZCBCJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCXJlbW92ZWQgaW4gcmVtb3RlCisJICBiYXNlICAgMTAwNjQ0IDQzZDVhOGVkNmVmNmMwMGZmNzc1MDA4NjMzZjk1Nzg3ZDA4ODI4NWQgc3ViL2ZpbGUKKwkgIG91ciAgICAxMDA2NDQgNDNkNWE4ZWQ2ZWY2YzAwZmY3NzUwMDg2MzNmOTU3ODdkMDg4Mjg1ZCBzdWIvZmlsZQorCUBAIC0xICswLDAgQEAKKwktQUFBCisJRU9GCisJZ2l0IHJlc2V0IC0taGFyZCBpbml0aWFsICYmCisJbWtkaXIgc3ViICYmCisJdGVzdF9jb21taXQgImFkZCBzdWIvZmlsZSIgInN1Yi9maWxlIiAiQUFBIiB0cmVlLXJlbW92ZS1iLWluaXRpYWwgJiYKKwlnaXQgcm0gc3ViL2ZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tICJyZW1vdmUgc3ViL2ZpbGUiICYmCisJZ2l0IHRhZyB0cmVlLXJlbW92ZS1iLUIgJiYKKwlnaXQgbWVyZ2UtdHJlZSB0cmVlLXJlbW92ZS1iLWluaXRpYWwgdHJlZS1yZW1vdmUtYi1pbml0aWFsIHRyZWUtcmVtb3ZlLWItQiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0dXJuIGZpbGUgdG8gdHJlZScgJwogCWdpdCByZXNldCAtLWhhcmQgaW5pdGlhbCAmJgogCXJtIGluaXRpYWwtZmlsZSAmJgpAQCAtMjgzLDggKzMzOSw2IEBACiAJdGVzdF9jb21taXQgIm1ha2UtZmlsZSIgImRpciIgIkNDQyIgJiYKIAlnaXQgbWVyZ2UtdHJlZSBhZGQtdHJlZSBhZGQtYW5vdGhlci10cmVlIG1ha2UtZmlsZSA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgotCWFkZGVkIGluIGxvY2FsCi0JICBvdXIgICAgMTAwNjQ0IGJhNjI5MjM4Y2E4OTQ4OWYyYjM1MGUxOTZjYTQ0NWUwOWQ4YmI4MzQgZGlyL2Fub3RoZXIKIAlyZW1vdmVkIGluIHJlbW90ZQogCSAgYmFzZSAgIDEwMDY0NCA0M2Q1YThlZDZlZjZjMDBmZjc3NTAwODYzM2Y5NTc4N2QwODgyODVkIGRpci9wYXRoCiAJICBvdXIgICAgMTAwNjQ0IDQzZDVhOGVkNmVmNmMwMGZmNzc1MDA4NjMzZjk1Nzg3ZDA4ODI4NWQgZGlyL3BhdGgKZGlmZiAtLWdpdCBhL3QvdDUwMDAtdGFyLXRyZWUuc2ggYi90L3Q1MDAwLXRhci10cmVlLnNoCmluZGV4IGU3YzI0MGYuLmMyMDIzYjEgMTAwNzU1Ci0tLSBhL3QvdDUwMDAtdGFyLXRyZWUuc2gKKysrIGIvdC90NTAwMC10YXItdHJlZS5zaApAQCAtMzAsMTAgKzMwLDc2IEBACiAKIFNVQlNURk9STUFUPSVIJW4KIAordGVzdF9sYXp5X3ByZXJlcSBUQVJfTkVFRFNfUEFYX0ZBTExCQUNLICcKKwkoCisJCW1rZGlyIHBheCAmJgorCQljZCBwYXggJiYKKwkJIiRUQVIiIHhmICIkVEVTVF9ESVJFQ1RPUlkiL3Q1MDAwL3BheC50YXIgJiYKKwkJdGVzdCAtZiBQYXhIZWFkZXJzLjE3OTEvZmlsZQorCSkKKycKKworZ2V0X3BheF9oZWFkZXIoKSB7CisJZmlsZT0kMQorCWhlYWRlcj0kMj0KKworCXdoaWxlIHJlYWQgbGVuIHJlc3QKKwlkbworCQlpZiB0ZXN0ICIkbGVuIiA9ICQoZWNobyAiJGxlbiAkcmVzdCIgfCB3YyAtYykKKwkJdGhlbgorCQkJY2FzZSAiJHJlc3QiIGluCisJCQkkaGVhZGVyKikKKwkJCQllY2hvICIke3Jlc3QjJGhlYWRlcn0iCisJCQkJOzsKKwkJCWVzYWMKKwkJZmkKKwlkb25lIDwiJGZpbGUiCit9CisKK2NoZWNrX3RhcigpIHsKKwl0YXJmaWxlPSQxLnRhcgorCWxpc3RmaWxlPSQxLmxzdAorCWRpcj0kMQorCWRpcl93aXRoX3ByZWZpeD0kZGlyLyQyCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICcgZXh0cmFjdCB0YXIgYXJjaGl2ZScgJworCQkobWtkaXIgJGRpciAmJiBjZCAkZGlyICYmICIkVEFSIiB4ZiAtKSA8JHRhcmZpbGUKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzIFRBUl9ORUVEU19QQVhfRkFMTEJBQ0sgJyBpbnRlcnByZXQgcGF4IGhlYWRlcnMnICcKKwkJKAorCQkJY2QgJGRpciAmJgorCQkJZm9yIGhlYWRlciBpbiAqLnBheGhlYWRlcgorCQkJZG8KKwkJCQlkYXRhPSR7aGVhZGVyJS5wYXhoZWFkZXJ9LmRhdGEgJiYKKwkJCQlpZiB0ZXN0IC1oICRkYXRhIC1vIC1lICRkYXRhCisJCQkJdGhlbgorCQkJCQlwYXRoPSQoZ2V0X3BheF9oZWFkZXIgJGhlYWRlciBwYXRoKSAmJgorCQkJCQlpZiB0ZXN0IC1uICIkcGF0aCIKKwkJCQkJdGhlbgorCQkJCQkJbXYgIiRkYXRhIiAiJHBhdGgiCisJCQkJCWZpCisJCQkJZmkKKwkJCWRvbmUKKwkJKQorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyB2YWxpZGF0ZSBmaWxlbmFtZXMnICcKKwkJKGNkICR7ZGlyX3dpdGhfcHJlZml4fWEgJiYgZmluZCAuKSB8IHNvcnQgPiRsaXN0ZmlsZSAmJgorCQl0ZXN0X2NtcCBhLmxzdCAkbGlzdGZpbGUKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICcgdmFsaWRhdGUgZmlsZSBjb250ZW50cycgJworCQlkaWZmIC1yIGEgJHtkaXJfd2l0aF9wcmVmaXh9YQorCScKK30KKwogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3BvcHVsYXRlIHdvcmtkaXInIFwKLSAgICAnbWtkaXIgYSBiIGMgJiYKKyAgICAnbWtkaXIgYSAmJgogICAgICBlY2hvIHNpbXBsZSB0ZXh0ZmlsZSA+YS9hICYmCisgICAgIHRlbj0wMTIzNDU2Nzg5ICYmIGh1bmRyZWQ9JHRlbiR0ZW4kdGVuJHRlbiR0ZW4kdGVuJHRlbiR0ZW4kdGVuJHRlbiAmJgorICAgICBlY2hvIGxvbmcgZmlsZW5hbWUgPmEvZm91ciRodW5kcmVkICYmCiAgICAgIG1rZGlyIGEvYmluICYmCiAgICAgIGNwIC9iaW4vc2ggYS9iaW4gJiYKICAgICAgcHJpbnRmICJBXCRGb3JtYXQ6JXNcJE8iICIkU1VCU1RGT1JNQVQiID5hL3N1YnN0ZmlsZTEgJiYKQEAgLTYyLDYgKzEyOCwxMiBAQAogICAgICBnaXQgdXBkYXRlLXJlZiBIRUFEICQoVFo9R01UIEdJVF9DT01NSVRURVJfREFURT0iMjAwNS0wNS0yNyAyMjowMDowMCIgXAogICAgICBnaXQgY29tbWl0LXRyZWUgJHRyZWVpZCA8L2Rldi9udWxsKScKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgZXhwb3J0LXN1YnN0JyAnCisJZWNobyAic3Vic3RmaWxlPyIgZXhwb3J0LXN1YnN0ID4+LmdpdC9pbmZvL2F0dHJpYnV0ZXMgJiYKKwlnaXQgbG9nIC0tbWF4LWNvdW50PTEgIi0tcHJldHR5PWZvcm1hdDpBJHtTVUJTVEZPUk1BVH1PIiBIRUFEIFwKKwkJPmEvc3Vic3RmaWxlMQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnY3JlYXRlIGJhcmUgY2xvbmUnIFwKICAgICAnZ2l0IGNsb25lIC0tYmFyZSAuIGJhcmUuZ2l0ICYmCkBAIC03NSwxMyArMTQ3LDE5IEBACiAgICAgJ2dpdCBhcmNoaXZlJyBcCiAgICAgJ2dpdCBhcmNoaXZlIEhFQUQgPmIudGFyJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IHRhci10cmVlJyBcCi0gICAgJ2dpdCB0YXItdHJlZSBIRUFEID5iMi50YXInCitjaGVja190YXIgYgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnZ2l0IGFyY2hpdmUgdnMuIGdpdCB0YXItdHJlZScgXAotICAgICd0ZXN0X2NtcCBiLnRhciBiMi50YXInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYXJjaGl2ZSAtLXByZWZpeD1wcmVmaXgvJyAnCisJZ2l0IGFyY2hpdmUgLS1wcmVmaXg9cHJlZml4LyBIRUFEID53aXRoX3ByZWZpeC50YXIKKycKKworY2hlY2tfdGFyIHdpdGhfcHJlZml4IHByZWZpeC8KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0LWFyY2hpdmUgLS1wcmVmaXg9b2xkZS0nICcKKwlnaXQgYXJjaGl2ZSAtLXByZWZpeD1vbGRlLSBIRUFEID53aXRoX29sZGUtcHJlZml4LnRhcgorJworCitjaGVja190YXIgd2l0aF9vbGRlLXByZWZpeCBvbGRlLQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgYXJjaGl2ZSBvbiBsYXJnZSBmaWxlcycgJwogICAgIHRlc3RfY29uZmlnIGNvcmUuYmlnZmlsZXRocmVzaG9sZCAxICYmCkBAIC0xMTgsNjYgKzE5NiwxNCBAQAogICAgICdnaXQgZ2V0LXRhci1jb21taXQtaWQgPGIudGFyID5iLmNvbW1pdGlkICYmCiAgICAgIHRlc3RfY21wIC5naXQvJChnaXQgc3ltYm9saWMtcmVmIEhFQUQpIGIuY29tbWl0aWQnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdleHRyYWN0IHRhciBhcmNoaXZlJyBcCi0gICAgJyhjZCBiICYmICIkVEFSIiB4ZiAtKSA8Yi50YXInCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICd2YWxpZGF0ZSBmaWxlbmFtZXMnIFwKLSAgICAnKGNkIGIvYSAmJiBmaW5kIC4pIHwgc29ydCA+Yi5sc3QgJiYKLSAgICAgdGVzdF9jbXAgYS5sc3QgYi5sc3QnCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICd2YWxpZGF0ZSBmaWxlIGNvbnRlbnRzJyBcCi0gICAgJ2RpZmYgLXIgYSBiL2EnCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgdGFyLXRyZWUgd2l0aCBwcmVmaXgnIFwKLSAgICAnZ2l0IHRhci10cmVlIEhFQUQgcHJlZml4ID5jLnRhcicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2V4dHJhY3QgdGFyIGFyY2hpdmUgd2l0aCBwcmVmaXgnIFwKLSAgICAnKGNkIGMgJiYgIiRUQVIiIHhmIC0pIDxjLnRhcicKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3ZhbGlkYXRlIGZpbGVuYW1lcyB3aXRoIHByZWZpeCcgXAotICAgICcoY2QgYy9wcmVmaXgvYSAmJiBmaW5kIC4pIHwgc29ydCA+Yy5sc3QgJiYKLSAgICAgdGVzdF9jbXAgYS5sc3QgYy5sc3QnCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICd2YWxpZGF0ZSBmaWxlIGNvbnRlbnRzIHdpdGggcHJlZml4JyBcCi0gICAgJ2RpZmYgLXIgYSBjL3ByZWZpeC9hJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnY3JlYXRlIGFyY2hpdmVzIHdpdGggc3Vic3RmaWxlcycgXAotICAgICdjcCAuZ2l0L2luZm8vYXR0cmlidXRlcyAuZ2l0L2luZm8vYXR0cmlidXRlcy5iZWZvcmUgJiYKLSAgICAgZWNobyAic3Vic3RmaWxlPyIgZXhwb3J0LXN1YnN0ID4+LmdpdC9pbmZvL2F0dHJpYnV0ZXMgJiYKLSAgICAgZ2l0IGFyY2hpdmUgSEVBRCA+Zi50YXIgJiYKLSAgICAgZ2l0IGFyY2hpdmUgLS1wcmVmaXg9cHJlZml4LyBIRUFEID5nLnRhciAmJgotICAgICBtdiAuZ2l0L2luZm8vYXR0cmlidXRlcy5iZWZvcmUgLmdpdC9pbmZvL2F0dHJpYnV0ZXMnCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdleHRyYWN0IHN1YnN0ZmlsZXMnIFwKLSAgICAnKG1rZGlyIGYgJiYgY2QgZiAmJiAiJFRBUiIgeGYgLSkgPGYudGFyJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAgJ3ZhbGlkYXRlIHN1YnN0ZmlsZSBjb250ZW50cycgXAotICAgICAnZ2l0IGxvZyAtLW1heC1jb3VudD0xICItLXByZXR0eT1mb3JtYXQ6QSR7U1VCU1RGT1JNQVR9TyIgSEVBRCBcCi0gICAgICA+Zi9hL3N1YnN0ZmlsZTEuZXhwZWN0ZWQgJiYKLSAgICAgIHRlc3RfY21wIGYvYS9zdWJzdGZpbGUxLmV4cGVjdGVkIGYvYS9zdWJzdGZpbGUxICYmCi0gICAgICB0ZXN0X2NtcCBhL3N1YnN0ZmlsZTIgZi9hL3N1YnN0ZmlsZTIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCB0YXItdHJlZScgJworCWdpdCB0YXItdHJlZSBIRUFEID50YXItdHJlZS50YXIgJiYKKwl0ZXN0X2NtcCBiLnRhciB0YXItdHJlZS50YXIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ2V4dHJhY3Qgc3Vic3RmaWxlcyBmcm9tIGFyY2hpdmUgd2l0aCBwcmVmaXgnIFwKLSAgICAnKG1rZGlyIGcgJiYgY2QgZyAmJiAiJFRBUiIgeGYgLSkgPGcudGFyJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAgJ3ZhbGlkYXRlIHN1YnN0ZmlsZSBjb250ZW50cyBmcm9tIGFyY2hpdmUgd2l0aCBwcmVmaXgnIFwKLSAgICAgJ2dpdCBsb2cgLS1tYXgtY291bnQ9MSAiLS1wcmV0dHk9Zm9ybWF0OkEke1NVQlNURk9STUFUfU8iIEhFQUQgXAotICAgICAgPmcvcHJlZml4L2Evc3Vic3RmaWxlMS5leHBlY3RlZCAmJgotICAgICAgdGVzdF9jbXAgZy9wcmVmaXgvYS9zdWJzdGZpbGUxLmV4cGVjdGVkIGcvcHJlZml4L2Evc3Vic3RmaWxlMSAmJgotICAgICAgdGVzdF9jbXAgYS9zdWJzdGZpbGUyIGcvcHJlZml4L2Evc3Vic3RmaWxlMgordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHRhci10cmVlIHdpdGggcHJlZml4JyAnCisJZ2l0IHRhci10cmVlIEhFQUQgcHJlZml4ID50YXItdHJlZV93aXRoX3ByZWZpeC50YXIgJiYKKwl0ZXN0X2NtcCB3aXRoX3ByZWZpeC50YXIgdGFyLXRyZWVfd2l0aF9wcmVmaXgudGFyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBhcmNoaXZlIHdpdGggLS1vdXRwdXQsIG92ZXJyaWRlIGluZmVycmVkIGZvcm1hdCcgJwpAQCAtMTk3LDIyICsyMjMsMTEgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgYXJjaGl2ZSAtLXJlbW90ZT0uICRzaGExID5yZW1vdGUudGFyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdC1hcmNoaXZlIC0tcHJlZml4PW9sZGUtJyAnCi0JZ2l0IGFyY2hpdmUgLS1wcmVmaXg9b2xkZS0gPmgudGFyIEhFQUQgJiYKLQkoCi0JCW1rZGlyIGggJiYKLQkJY2QgaCAmJgotCQkiJFRBUiIgeGYgLSA8Li4vaC50YXIKLQkpICYmCi0JdGVzdCAtZCBoL29sZGUtYSAmJgotCXRlc3QgLWQgaC9vbGRlLWEvYmluICYmCi0JdGVzdCAtZiBoL29sZGUtYS9iaW4vc2gKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGFyIGZpbHRlcnMnICcKIAlnaXQgY29uZmlnIHRhci50YXIuZm9vLmNvbW1hbmQgInRyIGFiIGJhIiAmJgogCWdpdCBjb25maWcgdGFyLmJhci5jb21tYW5kICJ0ciBhYiBiYSIgJiYKLQlnaXQgY29uZmlnIHRhci5iYXIucmVtb3RlIHRydWUKKwlnaXQgY29uZmlnIHRhci5iYXIucmVtb3RlIHRydWUgJiYKKwlnaXQgY29uZmlnIHRhci5pbnZhbGlkIGJhegogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcmNoaXZlIC0tbGlzdCBtZW50aW9ucyB1c2VyIGZpbHRlcicgJwpkaWZmIC0tZ2l0IGEvdC90NTAwMC9wYXgudGFyIGIvdC90NTAwMC9wYXgudGFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTE3MzcKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MDAwL3BheC50YXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdC90NTAwMy1hcmNoaXZlLXppcC5zaCBiL3QvdDUwMDMtYXJjaGl2ZS16aXAuc2gKaW5kZXggN2NmZTljYS4uYzcyZjcxZSAxMDA3NTUKLS0tIGEvdC90NTAwMy1hcmNoaXZlLXppcC5zaAorKysgYi90L3Q1MDAzLWFyY2hpdmUtemlwLnNoCkBAIC0zLDE1ICszLDkgQEAKIHRlc3RfZGVzY3JpcHRpb249J2dpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCB0ZXN0JwogCiAuIC4vdGVzdC1saWIuc2gKLUdJVF9VTlpJUD0ke0dJVF9VTlpJUDotdW56aXB9CiAKIFNVQlNURk9STUFUPSVIJW4KIAotdGVzdF9sYXp5X3ByZXJlcSBVTlpJUCAnCi0JIiRHSVRfVU5aSVAiIC12Ci0JdGVzdCAkPyAtbmUgMTI3Ci0nCi0KIHRlc3RfbGF6eV9wcmVyZXEgVU5aSVBfU1lNTElOS1MgJwogCSgKIAkJbWtkaXIgdW56aXAtc3ltbGlua3MgJiYKQEAgLTQzLDcgKzM3LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ3BvcHVsYXRlIHdvcmtkaXInIFwKLSAgICAnbWtkaXIgYSBiIGMgJiYKKyAgICAnbWtkaXIgYSAmJgogICAgICBlY2hvIHNpbXBsZSB0ZXh0ZmlsZSA+YS9hICYmCiAgICAgIG1rZGlyIGEvYmluICYmCiAgICAgIGNwIC9iaW4vc2ggYS9iaW4gJiYKQEAgLTc2LDYgKzcwLDEyIEBACiAgICAgIGdpdCB1cGRhdGUtcmVmIEhFQUQgJChUWj1HTVQgR0lUX0NPTU1JVFRFUl9EQVRFPSIyMDA1LTA1LTI3IDIyOjAwOjAwIiBcCiAgICAgIGdpdCBjb21taXQtdHJlZSAkdHJlZWlkIDwvZGV2L251bGwpJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBvcnQtc3Vic3QnICcKKwllY2hvICJzdWJzdGZpbGU/IiBleHBvcnQtc3Vic3QgPj4uZ2l0L2luZm8vYXR0cmlidXRlcyAmJgorCWdpdCBsb2cgLS1tYXgtY291bnQ9MSAiLS1wcmV0dHk9Zm9ybWF0OkEke1NVQlNURk9STUFUfU8iIEhFQUQgXAorCQk+YS9zdWJzdGZpbGUxCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjcmVhdGUgYmFyZSBjbG9uZScgXAogICAgICdnaXQgY2xvbmUgLS1iYXJlIC4gYmFyZS5naXQgJiYKZGlmZiAtLWdpdCBhL3QvdDUwMDQtYXJjaGl2ZS1jb3JuZXItY2FzZXMuc2ggYi90L3Q1MDA0LWFyY2hpdmUtY29ybmVyLWNhc2VzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY3ZjNiNTQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MDA0LWFyY2hpdmUtY29ybmVyLWNhc2VzLnNoCkBAIC0wLDAgKzEsMTE2IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0ndGVzdCBjb3JuZXIgY2FzZXMgb2YgZ2l0LWFyY2hpdmUnCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGNvbW1pdCB3aXRoIGVtcHR5IHRyZWUnICcKKwlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gZm9vCisnCisKKyMgTWFrZSBhIGRpciBhbmQgY2xlYW4gaXQgdXAgYWZ0ZXJ3YXJkcworbWFrZV9kaXIoKSB7CisJbWtkaXIgIiQxIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmICckMSciCit9CisKKyMgQ2hlY2sgdGhhdCB0aGUgZGlyIGdpdmVuIGluICIkMSIgY29udGFpbnMgZXhhY3RseSB0aGUKKyMgc2V0IG9mIHBhdGhzIGdpdmVuIGFzIGFyZ3VtZW50cy4KK2NoZWNrX2RpcigpIHsKKwlkaXI9JDE7IHNoaWZ0CisJeworCQllY2hvICIkZGlyIiAmJgorCQlmb3IgaSBpbiAiJEAiOyBkbworCQkJZWNobyAiJGRpci8kaSIKKwkJZG9uZQorCX0gfCBzb3J0ID5leHBlY3QgJiYKKwlmaW5kICIkZGlyIiAhIC1uYW1lIHBheF9nbG9iYWxfaGVhZGVyIC1wcmludCB8IHNvcnQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKK30KKworCisjIGJzZHRhci9saWJhcmNoaXZlIHZlcnNpb25zIGJlZm9yZSAzLjEuMyBjb25zaWRlciBhIHRhciBmaWxlIHdpdGggYQorIyBnbG9iYWwgcGF4IGhlYWRlciB0aGF0IGlzIG5vdCBmb2xsb3dlZCBieSBhIGZpbGUgcmVjb3JkIGFzIGNvcnJ1cHQuCitpZiAiJFRBUiIgdGYgIiRURVNUX0RJUkVDVE9SWSIvdDUwMDQvZW1wdHktd2l0aC1wYXgtaGVhZGVyLnRhciA+L2Rldi9udWxsIDI+JjEKK3RoZW4KKwl0ZXN0X3NldF9wcmVyZXEgSEVBREVSX09OTFlfVEFSX09LCitmaQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEhFQURFUl9PTkxZX1RBUl9PSyAndGFyIGFyY2hpdmUgb2YgY29tbWl0IHdpdGggZW1wdHkgdHJlZScgJworCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXRhciBIRUFEID5lbXB0eS13aXRoLXBheC1oZWFkZXIudGFyICYmCisJbWFrZV9kaXIgZXh0cmFjdCAmJgorCSIkVEFSIiB4ZiBlbXB0eS13aXRoLXBheC1oZWFkZXIudGFyIC1DIGV4dHJhY3QgJiYKKwljaGVja19kaXIgZXh0cmFjdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0YXIgYXJjaGl2ZSBvZiBlbXB0eSB0cmVlIGlzIGVtcHR5JyAnCisJZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIEhFQUQ6ID5lbXB0eS50YXIgJiYKKwlwZXJsIC1lICJwcmludCBcIlxcMFwiIHggMTAyNDAiID4xMGtudWxzLnRhciAmJgorCXRlc3RfY21wIDEwa251bHMudGFyIGVtcHR5LnRhcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0YXIgYXJjaGl2ZSBvZiBlbXB0eSB0cmVlIHdpdGggcHJlZml4JyAnCisJZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIC0tcHJlZml4PWZvby8gSEVBRCA+cHJlZml4LnRhciAmJgorCW1ha2VfZGlyIGV4dHJhY3QgJiYKKwkiJFRBUiIgeGYgcHJlZml4LnRhciAtQyBleHRyYWN0ICYmCisJY2hlY2tfZGlyIGV4dHJhY3QgZm9vCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgVU5aSVAgJ3ppcCBhcmNoaXZlIG9mIGVtcHR5IHRyZWUgaXMgZW1wdHknICcKKwkjIERldGVjdCB0aGUgZXhpdCBjb2RlIHByb2R1Y2VkIHdoZW4gb3VyIHBhcnRpY3VsYXIgZmxhdm9yIG9mIHVuemlwCisJIyBzZWVzIGFuIGVtcHR5IGFyY2hpdmUuIEluZm96aXAgd2lsbCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kIGV4aXQgd2l0aAorCSMgY29kZSAxLiBCdXQgaW4gdGhlIG5hbWUgb2Ygc2FuaXR5LCB3ZSBkbyBub3QgZXhwZWN0IG90aGVyIHVuemlwCisJIyBpbXBsZW1lbnRhdGlvbnMgdG8gZG8gdGhlIHNhbWUgdGhpbmcgKGl0IHdvdWxkIGJlIHBlcmZlY3RseQorCSMgcmVhc29uYWJsZSB0byBleGl0IDAsIGZvciBleGFtcGxlKS4KKwkjCisJIyBUaGlzIG1ha2VzIG91ciB0ZXN0IGxlc3Mgcmlnb3JvdXMgb24gc29tZSBwbGF0Zm9ybXMgKHVuemlwIG1heSBub3QKKwkjIGhhbmRsZSB0aGUgZW1wdHkgcmVwbyBhdCBhbGwsIG1ha2luZyBvdXIgbGF0ZXIgY2hlY2sgb2YgaXRzIGV4aXQgY29kZQorCSMgYSBuby1vcCkuIEJ1dCB3ZSBjYW5ub3QgZG8gYW55dGhpbmcgcmVhc29uYWJsZSBleGNlcHQgc2tpcCB0aGUgdGVzdAorCSMgb24gc3VjaCBwbGF0Zm9ybXMgYW55d2F5LCBhbmQgdGhpcyBpcyB0aGUgbW9yYWwgZXF1aXZhbGVudC4KKwkiJEdJVF9VTlpJUCIgIiRURVNUX0RJUkVDVE9SWSIvdDUwMDQvZW1wdHkuemlwCisJZXhwZWN0X2NvZGU9JD8KKworCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCBIRUFEID5lbXB0eS56aXAgJiYKKwltYWtlX2RpciBleHRyYWN0ICYmCisJKAorCQljZCBleHRyYWN0ICYmCisJCXRlc3RfZXhwZWN0X2NvZGUgJGV4cGVjdF9jb2RlICIkR0lUX1VOWklQIiAuLi9lbXB0eS56aXAKKwkpICYmCisJY2hlY2tfZGlyIGV4dHJhY3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBVTlpJUCAnemlwIGFyY2hpdmUgb2YgZW1wdHkgdHJlZSB3aXRoIHByZWZpeCcgJworCSMgV2UgZG8gbm90IGhhdmUgdG8gcGxheSBleGl0LWNvZGUgdHJpY2tzIGhlcmUsIGJlY2F1c2Ugb3VyCisJIyByZXN1bHQgc2hvdWxkIG5vdCBiZSBlbXB0eTsgaXQgaGFzIGEgZGlyZWN0b3J5IGluIGl0LgorCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCAtLXByZWZpeD1mb28vIEhFQUQgPnByZWZpeC56aXAgJiYKKwltYWtlX2RpciBleHRyYWN0ICYmCisJKAorCQljZCBleHRyYWN0ICYmCisJCSIkR0lUX1VOWklQIiAuLi9wcmVmaXguemlwCisJKSAmJgorCWNoZWNrX2RpciBleHRyYWN0IGZvbworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcmNoaXZlIGNvbXBsYWlucyBhYm91dCBwYXRoc3BlYyBvbiBlbXB0eSB0cmVlJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIEhFQUQgLS0gZm9vID4vZGV2L251bGwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGEgY29tbWl0IHdpdGggYW4gZW1wdHkgc3VidHJlZScgJworCWVtcHR5X3RyZWU9JChnaXQgaGFzaC1vYmplY3QgLXQgdHJlZSAvZGV2L251bGwpICYmCisJcm9vdF90cmVlPSQocHJpbnRmICIwNDAwMDAgdHJlZSAkZW1wdHlfdHJlZVx0c3ViXG4iIHwgZ2l0IG1rdHJlZSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXJjaGl2ZSBlbXB0eSBzdWJ0cmVlIHdpdGggbm8gcGF0aHNwZWMnICcKKwlnaXQgYXJjaGl2ZSAtLWZvcm1hdD10YXIgJHJvb3RfdHJlZSA+c3VidHJlZS1hbGwudGFyICYmCisJbWFrZV9kaXIgZXh0cmFjdCAmJgorCSIkVEFSIiB4ZiBzdWJ0cmVlLWFsbC50YXIgLUMgZXh0cmFjdCAmJgorCWNoZWNrX2RpciBleHRyYWN0IHN1YgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhcmNoaXZlIGVtcHR5IHN1YnRyZWUgYnkgZGlyZWN0IHBhdGhzcGVjJyAnCisJZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyICRyb290X3RyZWUgLS0gc3ViID5zdWJ0cmVlLXBhdGgudGFyICYmCisJbWFrZV9kaXIgZXh0cmFjdCAmJgorCSIkVEFSIiB4ZiBzdWJ0cmVlLXBhdGgudGFyIC1DIGV4dHJhY3QgJiYKKwljaGVja19kaXIgZXh0cmFjdCBzdWIKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1MDA0L2VtcHR5LXdpdGgtcGF4LWhlYWRlci50YXIgYi90L3Q1MDA0L2VtcHR5LXdpdGgtcGF4LWhlYWRlci50YXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5ZTM5ZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDUwMDQvZW1wdHktd2l0aC1wYXgtaGVhZGVyLnRhcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L3Q1MDA0L2VtcHR5LnppcCBiL3QvdDUwMDQvZW1wdHkuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNzZiYjYKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1MDA0L2VtcHR5LnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L3Q1MTUwLXJlcXVlc3QtcHVsbC5zaCBiL3QvdDUxNTAtcmVxdWVzdC1wdWxsLnNoCmluZGV4IDQzMmY5OGMuLjFhZmEwZDUgMTAwNzU1Ci0tLSBhL3QvdDUxNTAtcmVxdWVzdC1wdWxsLnNoCisrKyBiL3QvdDUxNTAtcmVxdWVzdC1wdWxsLnNoCkBAIC04MCwxMiArODAsMTIgQEAKIAogCWNhdCA8PC1FT1QgPmZ1enouc2VkCiAJIyEvYmluL3NlZCAtbmYKKwlzLyRkb3duc3RyZWFtX3VybF9mb3Jfc2VkL1VSTC9nCiAJcy8kX3g0MC9PQkpFQ1RfTkFNRS9nCiAJcy9BIFUgVGhvci9BVVRIT1IvZwogCXMvWy0wLTldXHsxMFx9IFs6MC05XVx7OFx9IFstK11bMC05XVx7NFx9L0RBVEUvZwogCXMvICAgICAgICBbXiBdLiovICAgICAgICBTVUJKRUNUL2cKIAlzLyAgW14gXS4qIChEQVRFKS8gIFNVQkpFQ1QgKERBVEUpL2cKLQlzLyRkb3duc3RyZWFtX3VybF9mb3Jfc2VkL1VSTC9nCiAJcy9mb3ItdXBzdHJlYW0vQlJBTkNIL2cKIAlzL21uZW1vbmljLnR4dC9GSUxFTkFNRS9nCiAJcy9edmVyc2lvbiBbMC05XS9WRVJTSU9OLwpkaWZmIC0tZ2l0IGEvdC90NTMwMy1wYWNrLWNvcnJ1cHRpb24tcmVzaWxpZW5jZS5zaCBiL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2gKaW5kZXggNWIxMjUwZi4uMzU5MjZkZSAxMDA3NTUKLS0tIGEvdC90NTMwMy1wYWNrLWNvcnJ1cHRpb24tcmVzaWxpZW5jZS5zaAorKysgYi90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoCkBAIC01MSw3ICs1MSw3IEBACiAgICAgb2ZzPWBnaXQgc2hvdy1pbmRleCA8ICR7cGFja30uaWR4IHwgZ3JlcCAkMSB8IGN1dCAtZjEgLWQiICJgICYmCiAgICAgb2ZzPSQoKCRvZnMgKyAkMikpICYmCiAgICAgY2htb2QgK3cgJHtwYWNrfS5wYWNrICYmCi0gICAgZGQgb2Y9JHtwYWNrfS5wYWNrIGNvdW50PTEgYnM9MSBjb252PW5vdHJ1bmMgc2Vlaz0kb2ZzICYmCisgICAgZGQgb2Y9JHtwYWNrfS5wYWNrIGJzPTEgY29udj1ub3RydW5jIHNlZWs9JG9mcyAmJgogICAgIHRlc3RfbXVzdF9mYWlsIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sKIH0KIApAQCAtMjc2LDYgKzI3NiwzMyBAQAogICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnY29ycnVwdGlvbiBvZiBkZWx0YSBiYXNlIHJlZmVyZW5jZSBwb2ludGluZyB0byB3cm9uZyBvYmplY3QnIFwKKyAgICAnY3JlYXRlX25ld19wYWNrIC0tZGVsdGEtYmFzZS1vZmZzZXQgJiYKKyAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgorICAgICBwcmludGYgIlwyMjBcMDMzIiB8IGRvX2NvcnJ1cHRfb2JqZWN0ICRibG9iXzMgMiAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8xID4vZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+L2Rldi9udWxsICYmCisgICAgIHRlc3RfbXVzdF9mYWlsIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPi9kZXYvbnVsbCcKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJy4uLiBidXQgaGF2aW5nIGEgbG9vc2UgY29weSBhbGxvd3MgZm9yIGZ1bGwgcmVjb3ZlcnknIFwKKyAgICAnbXYgJHtwYWNrfS5pZHggdG1wICYmCisgICAgIGdpdCBoYXNoLW9iamVjdCAtdCBibG9iIC13IGZpbGVfMyAmJgorICAgICBtdiB0bXAgJHtwYWNrfS5pZHggJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICcuLi4gYW5kIHRoZW4gYSByZXBhY2sgImNsZWFycyIgdGhlIGNvcnJ1cHRpb24nIFwKKyAgICAnZG9fcmVwYWNrIC0tZGVsdGEtYmFzZS1vZmZzZXQgLS1uby1yZXVzZS1kZWx0YSAmJgorICAgICBnaXQgcHJ1bmUtcGFja2VkICYmCisgICAgIGdpdCB2ZXJpZnktcGFjayAke3BhY2t9LnBhY2sgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8yID4gL2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzMgPiAvZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogICAgICdjb3JydXB0aW5nIGhlYWRlciB0byBoYXZlIHRvbyBzbWFsbCBvdXRwdXQgYnVmZmVyIGZhaWxzIHVucGFjaycgXAogICAgICdjcmVhdGVfbmV3X3BhY2sgJiYKICAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgpkaWZmIC0tZ2l0IGEvdC90NTMwNC1wcnVuZS5zaCBiL3QvdDUzMDQtcHJ1bmUuc2gKaW5kZXggZDY0NTMyOC4uZTRiYjNhMSAxMDA3NTUKLS0tIGEvdC90NTMwNC1wcnVuZS5zaAorKysgYi90L3Q1MzA0LXBydW5lLnNoCkBAIC0xOTUsNCArMTk1LDMwIEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnYXJiYWdlIHJlcG9ydCBpbiBjb3VudC1vYmplY3RzIC12JyAnCisJOiA+LmdpdC9vYmplY3RzL3BhY2svZm9vICYmCisJOiA+LmdpdC9vYmplY3RzL3BhY2svZm9vLmJhciAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zvby5rZWVwICYmCisJOiA+LmdpdC9vYmplY3RzL3BhY2svZm9vLnBhY2sgJiYKKwk6ID4uZ2l0L29iamVjdHMvcGFjay9mYWtlLmJhciAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zha2Uua2VlcCAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zha2UucGFjayAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zha2UuaWR4ICYmCisJOiA+LmdpdC9vYmplY3RzL3BhY2svZmFrZTIua2VlcCAmJgorCTogPi5naXQvb2JqZWN0cy9wYWNrL2Zha2UzLmlkeCAmJgorCWdpdCBjb3VudC1vYmplY3RzIC12IDI+c3RkZXJyICYmCisJZ3JlcCAiaW5kZXggZmlsZSAuZ2l0L29iamVjdHMvcGFjay9mYWtlLmlkeCBpcyB0b28gc21hbGwiIHN0ZGVyciAmJgorCWdyZXAgIl53YXJuaW5nOiIgc3RkZXJyIHwgc29ydCA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKK3dhcm5pbmc6IGdhcmJhZ2UgZm91bmQ6IC5naXQvb2JqZWN0cy9wYWNrL2Zha2UuYmFyCit3YXJuaW5nOiBnYXJiYWdlIGZvdW5kOiAuZ2l0L29iamVjdHMvcGFjay9mb28KK3dhcm5pbmc6IGdhcmJhZ2UgZm91bmQ6IC5naXQvb2JqZWN0cy9wYWNrL2Zvby5iYXIKK3dhcm5pbmc6IG5vIGNvcnJlc3BvbmRpbmcgLmlkeCBub3IgLnBhY2s6IC5naXQvb2JqZWN0cy9wYWNrL2Zha2UyLmtlZXAKK3dhcm5pbmc6IG5vIGNvcnJlc3BvbmRpbmcgLmlkeDogLmdpdC9vYmplY3RzL3BhY2svZm9vLmtlZXAKK3dhcm5pbmc6IG5vIGNvcnJlc3BvbmRpbmcgLmlkeDogLmdpdC9vYmplY3RzL3BhY2svZm9vLnBhY2sKK3dhcm5pbmc6IG5vIGNvcnJlc3BvbmRpbmcgLnBhY2s6IC5naXQvb2JqZWN0cy9wYWNrL2Zha2UzLmlkeAorRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTQwNC10cmFja2luZy1icmFuY2hlcy5zaCBiL3QvdDU0MDQtdHJhY2tpbmctYnJhbmNoZXMuc2gKaW5kZXggYzI0MDAzNS4uMmI4YzBiYSAxMDA3NTUKLS0tIGEvdC90NTQwNC10cmFja2luZy1icmFuY2hlcy5zaAorKysgYi90L3Q1NDA0LXRyYWNraW5nLWJyYW5jaGVzLnNoCkBAIC0zNiw3ICszNiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21peGVkLXN1Y2Nlc3MgcHVzaCByZXR1cm5zIGVycm9yJyAnCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2gKKwl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCBvcmlnaW4gOgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayB0cmFja2luZyBicmFuY2hlcyB1cGRhdGVkIGNvcnJlY3RseSBhZnRlciBwdXNoJyAnCmRpZmYgLS1naXQgYS90L3Q1NDA3LXBvc3QtcmV3cml0ZS1ob29rLnNoIGIvdC90NTQwNy1wb3N0LXJld3JpdGUtaG9vay5zaAppbmRleCBiYWE2NzBjLi5lYTJlMGQ0IDEwMDc1NQotLS0gYS90L3Q1NDA3LXBvc3QtcmV3cml0ZS1ob29rLnNoCisrKyBiL3QvdDU0MDctcG9zdC1yZXdyaXRlLWhvb2suc2gKQEAgLTMxLDggKzMxLDggQEAKIH0KIAogdmVyaWZ5X2hvb2tfaW5wdXQgKCkgewotCXRlc3RfY21wICIkVFJBU0hfRElSRUNUT1JZIi9wb3N0LXJld3JpdGUuYXJncyBleHBlY3RlZC5hcmdzICYmCi0JdGVzdF9jbXAgIiRUUkFTSF9ESVJFQ1RPUlkiL3Bvc3QtcmV3cml0ZS5kYXRhIGV4cGVjdGVkLmRhdGEKKwl0ZXN0X2NtcCBleHBlY3RlZC5hcmdzICIkVFJBU0hfRElSRUNUT1JZIi9wb3N0LXJld3JpdGUuYXJncyAmJgorCXRlc3RfY21wIGV4cGVjdGVkLmRhdGEgIiRUUkFTSF9ESVJFQ1RPUlkiL3Bvc3QtcmV3cml0ZS5kYXRhCiB9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjb21taXQgLS1hbWVuZCcgJwpkaWZmIC0tZ2l0IGEvdC90NTUwMC1mZXRjaC1wYWNrLnNoIGIvdC90NTUwMC1mZXRjaC1wYWNrLnNoCmluZGV4IDYzMjJlOGEuLmZkMjU5OGUgMTAwNzU1Ci0tLSBhL3QvdDU1MDAtZmV0Y2gtcGFjay5zaAorKysgYi90L3Q1NTAwLWZldGNoLXBhY2suc2gKQEAgLTEzMCwxNiArMTMwLDMyIEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IC0tZ2l0LWRpcj1icmFuY2gtYS8uZ2l0IHJldi1wYXJzZSBvcmlnaW4vQgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IGRlcHRoIDEnICcKKwlnaXQgY2xvbmUgLS1uby1zaW5nbGUtYnJhbmNoIC0tZGVwdGggMSAiZmlsZTovLyQocHdkKS8uIiBzaGFsbG93MCAmJgorCXRlc3QgImBnaXQgLS1naXQtZGlyPXNoYWxsb3cwLy5naXQgcmV2LWxpc3QgLS1jb3VudCBIRUFEYCIgPSAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHNoYWxsb3cgZGVwdGggMSB3aXRoIGZzY2snICcKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIGZldGNoLmZzY2tvYmplY3RzIHRydWUgJiYKKwlnaXQgY2xvbmUgLS1uby1zaW5nbGUtYnJhbmNoIC0tZGVwdGggMSAiZmlsZTovLyQocHdkKS8uIiBzaGFsbG93MGZzY2sgJiYKKwl0ZXN0ICJgZ2l0IC0tZ2l0LWRpcj1zaGFsbG93MGZzY2svLmdpdCByZXYtbGlzdCAtLWNvdW50IEhFQURgIiA9IDEgJiYKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIC0tdW5zZXQgZmV0Y2guZnNja29iamVjdHMKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdycgJwogCWdpdCBjbG9uZSAtLW5vLXNpbmdsZS1icmFuY2ggLS1kZXB0aCAyICJmaWxlOi8vJChwd2QpLy4iIHNoYWxsb3cKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdyBkZXB0aCBjb3VudCcgJworCXRlc3QgImBnaXQgLS1naXQtZGlyPXNoYWxsb3cvLmdpdCByZXYtbGlzdCAtLWNvdW50IEhFQURgIiA9IDIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgc2hhbGxvdyBvYmplY3QgY291bnQnICcKIAkoCiAJCWNkIHNoYWxsb3cgJiYKIAkJZ2l0IGNvdW50LW9iamVjdHMgLXYKIAkpID4gY291bnQuc2hhbGxvdyAmJgotCWdyZXAgIl5pbi1wYWNrOiAxOCIgY291bnQuc2hhbGxvdworCWdyZXAgIl5pbi1wYWNrOiAxMiIgY291bnQuc2hhbGxvdwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCAocGFydCAyKScgJwpAQCAtMjU2LDEyICsyNzIsMzYgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHNoYWxsb3cgZGVwdGggY291bnQnICcKKwl0ZXN0ICJgZ2l0IC0tZ2l0LWRpcj1zaGFsbG93Ly5naXQgcmV2LWxpc3QgLS1jb3VudCBIRUFEYCIgPSAxMQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCcgJwogCSgKIAkJY2Qgc2hhbGxvdyAmJgogCQlnaXQgY291bnQtb2JqZWN0cyAtdgogCSkgPiBjb3VudC5zaGFsbG93ICYmCi0JZ3JlcCAiXmNvdW50OiA1MiIgY291bnQuc2hhbGxvdworCWdyZXAgIl5jb3VudDogNTUiIGNvdW50LnNoYWxsb3cKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggLS1uby1zaGFsbG93IG9uIGZ1bGwgcmVwbycgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBmZXRjaCAtLW5vc2hhbGxvdworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCAtLWRlcHRoIC0tbm8tc2hhbGxvdycgJworCSgKKwkJY2Qgc2hhbGxvdyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgZmV0Y2ggLS1kZXB0aD0xIC0tbm9zaGFsbG93CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0dXJuIHNoYWxsb3cgdG8gY29tcGxldGUgcmVwb3NpdG9yeScgJworCSgKKwkJY2Qgc2hhbGxvdyAmJgorCQlnaXQgZmV0Y2ggLS11bnNoYWxsb3cgJiYKKwkJISB0ZXN0IC1mIC5naXQvc2hhbGxvdyAmJgorCQlnaXQgZnNjayAtLWZ1bGwKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHNoYWxsb3cgd2l0aG91dCAtLW5vLXNpbmdsZS1icmFuY2gnICcKQEAgLTI3Myw3ICszMTMsNyBAQAogCQljZCBzaGFsbG93MiAmJgogCQlnaXQgY291bnQtb2JqZWN0cyAtdgogCSkgPiBjb3VudC5zaGFsbG93MiAmJgotCWdyZXAgIl5pbi1wYWNrOiA2IiBjb3VudC5zaGFsbG93MgorCWdyZXAgIl5pbi1wYWNrOiAzIiBjb3VudC5zaGFsbG93MgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IHdpdGggLS1icmFuY2gnICcKQEAgLTI4MSw3ICszMjEsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IG9iamVjdCBjb3VudCcgJwotCWVjaG8gImluLXBhY2s6IDYiID4gY291bnQzLmV4cGVjdGVkICYmCisJZWNobyAiaW4tcGFjazogMyIgPiBjb3VudDMuZXhwZWN0ZWQgJiYKIAlHSVRfRElSPXNoYWxsb3czLy5naXQgZ2l0IGNvdW50LW9iamVjdHMgLXYgfAogCQlncmVwICJeaW4tcGFjayIgPiBjb3VudDMuYWN0dWFsICYmCiAJdGVzdF9jbXAgY291bnQzLmV4cGVjdGVkIGNvdW50My5hY3R1YWwKQEAgLTMxMCw3ICszNTAsNyBAQAogCUdJVF9ESVI9c2hhbGxvdzYvLmdpdCBnaXQgdGFnIC1sID50YWdsaXN0LmFjdHVhbCAmJgogCXRlc3RfY21wIHRhZ2xpc3QuZXhwZWN0ZWQgdGFnbGlzdC5hY3R1YWwgJiYKIAotCWVjaG8gImluLXBhY2s6IDciID4gY291bnQ2LmV4cGVjdGVkICYmCisJZWNobyAiaW4tcGFjazogNCIgPiBjb3VudDYuZXhwZWN0ZWQgJiYKIAlHSVRfRElSPXNoYWxsb3c2Ly5naXQgZ2l0IGNvdW50LW9iamVjdHMgLXYgfAogCQlncmVwICJeaW4tcGFjayIgPiBjb3VudDYuYWN0dWFsICYmCiAJdGVzdF9jbXAgY291bnQ2LmV4cGVjdGVkIGNvdW50Ni5hY3R1YWwKQEAgLTMyNSwxMiArMzY1LDM1IEBACiAJR0lUX0RJUj1zaGFsbG93Ny8uZ2l0IGdpdCB0YWcgLWwgPnRhZ2xpc3QuYWN0dWFsICYmCiAJdGVzdF9jbXAgdGFnbGlzdC5leHBlY3RlZCB0YWdsaXN0LmFjdHVhbCAmJgogCi0JZWNobyAiaW4tcGFjazogNyIgPiBjb3VudDcuZXhwZWN0ZWQgJiYKKwllY2hvICJpbi1wYWNrOiA0IiA+IGNvdW50Ny5leHBlY3RlZCAmJgogCUdJVF9ESVI9c2hhbGxvdzcvLmdpdCBnaXQgY291bnQtb2JqZWN0cyAtdiB8CiAJCWdyZXAgIl5pbi1wYWNrIiA+IGNvdW50Ny5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBjb3VudDcuZXhwZWN0ZWQgY291bnQ3LmFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBzaGFsbG93IHdpdGggcGFja2VkIHJlZnMnICcKKwlnaXQgcGFjay1yZWZzIC0tYWxsICYmCisJZ2l0IGNsb25lIC0tZGVwdGggMSAtLWJyYW5jaCBBICJmaWxlOi8vJChwd2QpLy4iIHNoYWxsb3c4ICYmCisJZWNobyAiaW4tcGFjazogNCIgPiBjb3VudDguZXhwZWN0ZWQgJiYKKwlHSVRfRElSPXNoYWxsb3c4Ly5naXQgZ2l0IGNvdW50LW9iamVjdHMgLXYgfAorCQlncmVwICJeaW4tcGFjayIgPiBjb3VudDguYWN0dWFsICYmCisJdGVzdF9jbXAgY291bnQ4LmV4cGVjdGVkIGNvdW50OC5hY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggaW4gc2hhbGxvdyByZXBvIHVucmVhY2hhYmxlIHNoYWxsb3cgb2JqZWN0cycgJworCSgKKwkJZ2l0IGNsb25lIC0tYmFyZSAtLWJyYW5jaCBCIC0tc2luZ2xlLWJyYW5jaCAiZmlsZTovLyQocHdkKS8uIiBuby1yZWZsb2cgJiYKKwkJZ2l0IGNsb25lIC0tZGVwdGggMSAiZmlsZTovLyQocHdkKS9uby1yZWZsb2ciIHNoYWxsb3c5ICYmCisJCWNkIG5vLXJlZmxvZyAmJgorCQlnaXQgdGFnIC1kIFRBR0IxIFRBR0IyICYmCisJCWdpdCB1cGRhdGUtcmVmIHJlZnMvaGVhZHMvQiBCfn4gJiYKKwkJZ2l0IGdjIC0tcHJ1bmU9bm93ICYmCisJCWNkIC4uL3NoYWxsb3c5ICYmCisJCWdpdCBmZXRjaCBvcmlnaW4gJiYKKwkJZ2l0IGZzY2sgLS1uby1kYW5nbGluZworCSkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGVzdHMgZm9yIHRoZSAtLXN0ZGluIHBhcmFtZXRlcicgJwogCWZvciBoZWFkIGluIEMgRCBFIEYKIAlkbwpkaWZmIC0tZ2l0IGEvdC90NTUwMy10YWdmb2xsb3cuc2ggYi90L3Q1NTAzLXRhZ2ZvbGxvdy5zaAppbmRleCA2MGRlMmQ2Li5mMzBjMDM4IDEwMDc1NQotLS0gYS90L3Q1NTAzLXRhZ2ZvbGxvdy5zaAorKysgYi90L3Q1NTAzLXRhZ2ZvbGxvdy5zaApAQCAtNCwxMCArNCw2IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi1pZiAhIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXOyB0aGVuCi0Jc2F5ICJHSVRfREVCVUdfU0VORF9QQUNLIG5vdCBzdXBwb3J0ZWQgLSBza2lwcGluZyB0ZXN0cyIKLWZpCi0KICMgRW5kIHN0YXRlIG9mIHRoZSByZXBvc2l0b3J5OgogIwogIyAgICAgICAgIFQgLSB0YWcxICAgICAgICAgIFMgLSB0YWcyCkBAIC0xNyw3ICsxMyw3IEBACiAjICAgICBcICAgQyAtIG9yaWdpbi9jYXQgICAgXAogIyAgICAgIG9yaWdpbi9tYXN0ZXIgICAgICAgICBtYXN0ZXIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgc2V0dXAgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAJdGVzdF90aWNrICYmCiAJZWNobyBpY2hpID5maWxlICYmCiAJZ2l0IGFkZCBmaWxlICYmCkBAIC0zOSwyOCArMzUsMzUgQEAKICcKIAogVT1VUExPQURfTE9HCitVUEFUSD0iJChwd2QpLyRVIgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIE5PVF9NSU5HVyAnc2V0dXAgZXhwZWN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBlY3QnICcKIGNhdCAtIDw8RU9GID5leHBlY3QKLSNTCiB3YW50ICRBCi0jRQogRU9GCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdmZXRjaCBBIChuZXcgY29tbWl0IDogMSBjb25uZWN0aW9uKScgJworZ2V0X25lZWRzICgpIHsKKwl0ZXN0IC1zICIkMSIgJiYKKwlwZXJsIC1hbG5lICcKKwkJbmV4dCB1bmxlc3MgJEZbMV0gZXEgInVwbG9hZC1wYWNrPCI7CisJCWxhc3QgaWYgJEZbMl0gZXEgIjAwMDAiOworCQlwcmludCAkRlsyXSwgIiAiLCAkRlszXTsKKwknICIkMSIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggQSAobmV3IGNvbW1pdCA6IDEgY29ubmVjdGlvbiknICcKIAlybSAtZiAkVSAmJgogCSgKIAkJY2QgY2xvbmVkICYmCi0JCUdJVF9ERUJVR19TRU5EX1BBQ0s9MyBnaXQgZmV0Y2ggMz4uLi8kVSAmJgorCQlHSVRfVFJBQ0VfUEFDS0VUPSRVUEFUSCBnaXQgZmV0Y2ggJiYKIAkJdGVzdCAkQSA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBvcmlnaW4vbWFzdGVyKQogCSkgJiYKLQl0ZXN0IC1zICRVICYmCi0JY3V0IC1kIiAiIC1mMSwyICRVID5hY3R1YWwgJiYKKwlnZXRfbmVlZHMgJFUgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgImNyZWF0ZSB0YWcgVCBvbiBBLCBjcmVhdGUgQyBvbiBicmFuY2ggY2F0IiAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJjcmVhdGUgdGFnIFQgb24gQSwgY3JlYXRlIEMgb24gYnJhbmNoIGNhdCIgJwogCWdpdCB0YWcgLWEgLW0gdGFnMSB0YWcxICRBICYmCiAJVD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGFnMSkgJiYKIApAQCAtNzIsMzAgKzc1LDI3IEBACiAJZ2l0IGNoZWNrb3V0IG1hc3RlcgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIE5PVF9NSU5HVyAnc2V0dXAgZXhwZWN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBleHBlY3QnICcKIGNhdCAtIDw8RU9GID5leHBlY3QKLSNTCiB3YW50ICRDCiB3YW50ICRUCi0jRQogRU9GCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdmZXRjaCBDLCBUIChuZXcgYnJhbmNoLCB0YWcgOiAxIGNvbm5lY3Rpb24pJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBDLCBUIChuZXcgYnJhbmNoLCB0YWcgOiAxIGNvbm5lY3Rpb24pJyAnCiAJcm0gLWYgJFUgJiYKIAkoCiAJCWNkIGNsb25lZCAmJgotCQlHSVRfREVCVUdfU0VORF9QQUNLPTMgZ2l0IGZldGNoIDM+Li4vJFUgJiYKKwkJR0lUX1RSQUNFX1BBQ0tFVD0kVVBBVEggZ2l0IGZldGNoICYmCiAJCXRlc3QgJEMgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luL2NhdCkgJiYKIAkJdGVzdCAkVCA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcxKSAmJgogCQl0ZXN0ICRBID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzFeMCkKIAkpICYmCi0JdGVzdCAtcyAkVSAmJgotCWN1dCAtZCIgIiAtZjEsMiAkVSA+YWN0dWFsICYmCisJZ2V0X25lZWRzICRVID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICJjcmVhdGUgY29tbWl0cyBPLCBCLCB0YWcgUyBvbiBCIiAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJjcmVhdGUgY29tbWl0cyBPLCBCLCB0YWcgUyBvbiBCIiAnCiAJdGVzdF90aWNrICYmCiAJZWNobyBPID5maWxlICYmCiAJZ2l0IGFkZCBmaWxlICYmCkBAIC0xMTEsMzkgKzExMSwzNCBAQAogCVM9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzIpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdzZXR1cCBleHBlY3QnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGV4cGVjdCcgJwogY2F0IC0gPDxFT0YgPmV4cGVjdAotI1MKIHdhbnQgJEIKIHdhbnQgJFMKLSNFCiBFT0YKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgJ2ZldGNoIEIsIFMgKGNvbW1pdCBhbmQgdGFnIDogMSBjb25uZWN0aW9uKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggQiwgUyAoY29tbWl0IGFuZCB0YWcgOiAxIGNvbm5lY3Rpb24pJyAnCiAJcm0gLWYgJFUgJiYKIAkoCiAJCWNkIGNsb25lZCAmJgotCQlHSVRfREVCVUdfU0VORF9QQUNLPTMgZ2l0IGZldGNoIDM+Li4vJFUgJiYKKwkJR0lUX1RSQUNFX1BBQ0tFVD0kVVBBVEggZ2l0IGZldGNoICYmCiAJCXRlc3QgJEIgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luL21hc3RlcikgJiYKIAkJdGVzdCAkQiA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcyXjApICYmCiAJCXRlc3QgJFMgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGFnMikKIAkpICYmCi0JdGVzdCAtcyAkVSAmJgotCWN1dCAtZCIgIiAtZjEsMiAkVSA+YWN0dWFsICYmCisJZ2V0X25lZWRzICRVID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgTk9UX01JTkdXICdzZXR1cCBleHBlY3QnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGV4cGVjdCcgJwogY2F0IC0gPDxFT0YgPmV4cGVjdAotI1MKIHdhbnQgJEIKIHdhbnQgJFMKLSNFCiBFT0YKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBOT1RfTUlOR1cgJ25ldyBjbG9uZSBmZXRjaCBtYXN0ZXIgYW5kIHRhZ3MnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25ldyBjbG9uZSBmZXRjaCBtYXN0ZXIgYW5kIHRhZ3MnICcKIAlnaXQgYnJhbmNoIC1EIGNhdAogCXJtIC1mICRVCiAJKApAQCAtMTUxLDE1ICsxNDYsMTQgQEAKIAkJY2QgY2xvbmUyICYmCiAJCWdpdCBpbml0ICYmCiAJCWdpdCByZW1vdGUgYWRkIG9yaWdpbiAuLiAmJgotCQlHSVRfREVCVUdfU0VORF9QQUNLPTMgZ2l0IGZldGNoIDM+Li4vJFUgJiYKKwkJR0lUX1RSQUNFX1BBQ0tFVD0kVVBBVEggZ2l0IGZldGNoICYmCiAJCXRlc3QgJEIgPSAkKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luL21hc3RlcikgJiYKIAkJdGVzdCAkUyA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcyKSAmJgogCQl0ZXN0ICRCID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzJeMCkgJiYKIAkJdGVzdCAkVCA9ICQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSB0YWcxKSAmJgogCQl0ZXN0ICRBID0gJChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRhZzFeMCkKIAkpICYmCi0JdGVzdCAtcyAkVSAmJgotCWN1dCAtZCIgIiAtZjEsMiAkVSA+YWN0dWFsICYmCisJZ2V0X25lZWRzICRVID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDU1MDUtcmVtb3RlLnNoIGIvdC90NTUwNS1yZW1vdGUuc2gKaW5kZXggY2NjNTVlYi4uZGQxMGZmMCAxMDA3NTUKLS0tIGEvdC90NTUwNS1yZW1vdGUuc2gKKysrIGIvdC90NTUwNS1yZW1vdGUuc2gKQEAgLTM0NSw3ICszNDUsNyBAQAogCSkgJiYKIAkoY2QgbWlycm9yLWZldGNoL2NoaWxkICYmCiAJIGdpdCBicmFuY2ggLW0gcmVuYW1lZCByZW5hbWVkMiAmJgotCSBnaXQgcHVzaCBwYXJlbnQKKwkgZ2l0IHB1c2ggcGFyZW50IDoKIAkpICYmCiAJKGNkIG1pcnJvci1mZXRjaC9wYXJlbnQgJiYKIAkgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZW5hbWVkICYmCkBAIC0xMDAzLDQgKzEwMDMsMjYgQEAKIAljbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleHRyYSBhcmdzOiBzZXR1cCcgJworCSMgYWRkIGEgZHVtbXkgb3JpZ2luIHNvIHRoYXQgdGhpcyBkb2VzIG5vdCB0cmlnZ2VyIGZhaWx1cmUKKwlnaXQgcmVtb3RlIGFkZCBvcmlnaW4gLgorJworCit0ZXN0X2V4dHJhX2FyZyAoKSB7CisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZXh0cmEgYXJnczogJCoiICIKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlbW90ZSAkKiBib2d1c19leHRyYV9hcmcgMj5hY3R1YWwgJiYKKwkJZ3JlcCAnXnVzYWdlOicgYWN0dWFsCisJIgorfQorCit0ZXN0X2V4dHJhX2FyZyBhZGQgbmljayB1cmwKK3Rlc3RfZXh0cmFfYXJnIHJlbmFtZSBvcmlnaW4gbmV3bmFtZQordGVzdF9leHRyYV9hcmcgcmVtb3ZlIG9yaWdpbgordGVzdF9leHRyYV9hcmcgc2V0LWhlYWQgb3JpZ2luIG1hc3RlcgorIyBzZXQtYnJhbmNoZXMgdGFrZXMgYW55IG51bWJlciBvZiBhcmdzCit0ZXN0X2V4dHJhX2FyZyBzZXQtdXJsIG9yaWdpbiBuZXd1cmwgb2xkdXJsCisjIHNob3cgdGFrZXMgYW55IG51bWJlciBvZiBhcmdzCisjIHBydW5lIHRha2VzIGFueSBudW1iZXIgb2YgYXJncworIyB1cGRhdGUgdGFrZXMgYW55IG51bWJlciBvZiBhcmdzCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTUxMC1mZXRjaC5zaCBiL3QvdDU1MTAtZmV0Y2guc2gKaW5kZXggZDdhMTlhMS4uZmRlNjg5MSAxMDA3NTUKLS0tIGEvdC90NTUxMC1mZXRjaC5zaAorKysgYi90L3Q1NTEwLWZldGNoLnNoCkBAIC0zNzAsMzAgKzM3MCwzOSBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IGZldGNoIHNob3VsZCBub3QgdXBkYXRlIHRyYWNraW5nJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYXJrIGluaXRpYWwgc3RhdGUgb2Ygb3JpZ2luL21hc3RlcicgJworCSgKKwkJY2QgdGhyZWUgJiYKKwkJZ2l0IHRhZyBiYXNlLW9yaWdpbi1tYXN0ZXIgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IGZldGNoIHNob3VsZCB1cGRhdGUgdHJhY2tpbmcnICcKIAogCWNkICIkRCIgJiYKIAlnaXQgYnJhbmNoIC1mIHNpZGUgJiYKIAkoCiAJCWNkIHRocmVlICYmCisJCWdpdCB1cGRhdGUtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIGJhc2Utb3JpZ2luLW1hc3RlciAmJgogCQlvPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKIAkJZ2l0IGZldGNoIG9yaWdpbiBtYXN0ZXIgJiYKIAkJbj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCi0JCXRlc3QgIiRvIiA9ICIkbiIgJiYKKwkJdGVzdCAiJG8iICE9ICIkbiIgJiYKIAkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IHB1bGwgc2hvdWxkIG5vdCB1cGRhdGUgdHJhY2tpbmcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IHB1bGwgc2hvdWxkIHVwZGF0ZSB0cmFja2luZycgJwogCiAJY2QgIiREIiAmJgogCWdpdCBicmFuY2ggLWYgc2lkZSAmJgogCSgKIAkJY2QgdGhyZWUgJiYKKwkJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgYmFzZS1vcmlnaW4tbWFzdGVyICYmCiAJCW89JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgogCQlnaXQgcHVsbCBvcmlnaW4gbWFzdGVyICYmCiAJCW49JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICIkbyIgPSAiJG4iICYmCisJCXRlc3QgIiRvIiAhPSAiJG4iICYmCiAJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlCiAJKQogJwpAQCAtNDA0LDYgKzQxMyw3IEBACiAJZ2l0IGJyYW5jaCAtZiBzaWRlICYmCiAJKAogCQljZCB0aHJlZSAmJgorCQlnaXQgdXBkYXRlLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciBiYXNlLW9yaWdpbi1tYXN0ZXIgJiYKIAkJbz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCiAJCWdpdCBmZXRjaCBvcmlnaW4gJiYKIAkJbj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCkBAIC00MTIsNiArNDIyLDIyIEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdub24tbWF0Y2hpbmcgcmVmc3BlY3MgZG8gbm90IGNvbmZ1c2UgdHJhY2tpbmcgdXBkYXRlJyAnCisJY2QgIiREIiAmJgorCWdpdCB1cGRhdGUtcmVmIHJlZnMvb2RkL2xvY2F0aW9uIEhFQUQgJiYKKwkoCisJCWNkIHRocmVlICYmCisJCWdpdCB1cGRhdGUtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIGJhc2Utb3JpZ2luLW1hc3RlciAmJgorCQlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS5vcmlnaW4uZmV0Y2ggXAorCQkJcmVmcy9vZGQvbG9jYXRpb246cmVmcy9yZW1vdGVzL29yaWdpbi9vZGQgJiYKKwkJbz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCisJCWdpdCBmZXRjaCBvcmlnaW4gbWFzdGVyICYmCisJCW49JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgorCQl0ZXN0ICIkbyIgIT0gIiRuIiAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vb2RkCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoaW5nIG5vbmV4aXN0ZW50IGJyYW5jaCBieSBtaXN0YWtlIHNob3VsZCBub3Qgc2VndicgJwogCiAJY2QgIiREIiAmJgpkaWZmIC0tZ2l0IGEvdC90NTUxMi1scy1yZW1vdGUuc2ggYi90L3Q1NTEyLWxzLXJlbW90ZS5zaAppbmRleCBkMTZlNWQzLi4zMjFjM2U1IDEwMDc1NQotLS0gYS90L3Q1NTEyLWxzLXJlbW90ZS5zaAorKysgYi90L3Q1NTEyLWxzLXJlbW90ZS5zaApAQCAtMTI2LDQgKzEyNiwxNiBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAorZm9yIGNvbmZpZ3NlY3Rpb24gaW4gdHJhbnNmZXIgdXBsb2FkcGFjaworZG8KKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJIaWRlIHNvbWUgcmVmcyB3aXRoICRjb25maWdzZWN0aW9uLmhpZGVyZWZzIiAnCisJCXRlc3RfY29uZmlnICRjb25maWdzZWN0aW9uLmhpZGVyZWZzIHJlZnMvdGFncyAmJgorCQlnaXQgbHMtcmVtb3RlIC4gPmFjdHVhbCAmJgorCQl0ZXN0X3VuY29uZmlnICRjb25maWdzZWN0aW9uLmhpZGVyZWZzICYmCisJCWdpdCBscy1yZW1vdGUgLiB8CisJCXNlZCAtZSAiLwlyZWZzXC90YWdzXC8vZCIgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJJworZG9uZQorCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaCBiL3QvdDU1MTYtZmV0Y2gtcHVzaC5zaAppbmRleCBiNTQxN2NjLi40NjkxZDUxIDEwMDc1NQotLS0gYS90L3Q1NTE2LWZldGNoLXB1c2guc2gKKysrIGIvdC90NTUxNi1mZXRjaC1wdXNoLnNoCkBAIC0xLDE2ICsxLDI4IEBACiAjIS9iaW4vc2gKIAotdGVzdF9kZXNjcmlwdGlvbj0nZmV0Y2hpbmcgYW5kIHB1c2hpbmcsIHdpdGggb3Igd2l0aG91dCB3aWxkY2FyZCcKK3Rlc3RfZGVzY3JpcHRpb249J0Jhc2ljIGZldGNoL3B1c2ggZnVuY3Rpb25hbGl0eS4KKworVGhpcyB0ZXN0IGNoZWNrcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHk6CisKKyogY29tbWFuZC1saW5lIHN5bnRheAorKiByZWZzcGVjcworKiBmYXN0LWZvcndhcmQgZGV0ZWN0aW9uLCBhbmQgb3ZlcnJpZGluZyBpdAorKiBjb25maWd1cmF0aW9uCisqIGhvb2tzCisqIC0tcG9yY2VsYWluIG91dHB1dCBmb3JtYXQKKyogaGlkZXJlZnMKKycKIAogLiAuL3Rlc3QtbGliLnNoCiAKIEQ9YHB3ZGAKIAogbWtfZW1wdHkgKCkgewotCXJtIC1mciB0ZXN0cmVwbyAmJgotCW1rZGlyIHRlc3RyZXBvICYmCisJcmVwb19uYW1lPSIkMSIKKwlybSAtZnIgIiRyZXBvX25hbWUiICYmCisJbWtkaXIgIiRyZXBvX25hbWUiICYmCiAJKAotCQljZCB0ZXN0cmVwbyAmJgorCQljZCAiJHJlcG9fbmFtZSIgJiYKIAkJZ2l0IGluaXQgJiYKIAkJZ2l0IGNvbmZpZyByZWNlaXZlLmRlbnlDdXJyZW50QnJhbmNoIHdhcm4gJiYKIAkJbXYgLmdpdC9ob29rcyAuZ2l0L2hvb2tzLWRpc2FibGVkCkBAIC0xOCwzMiArMzAsMzMgQEAKIH0KIAogbWtfdGVzdCAoKSB7Ci0JbWtfZW1wdHkgJiYKKwlyZXBvX25hbWU9IiQxIgorCXNoaWZ0CisKKwlta19lbXB0eSAiJHJlcG9fbmFtZSIgJiYKIAkoCiAJCWZvciByZWYgaW4gIiRAIgogCQlkbwotCQkJZ2l0IHB1c2ggdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQ6cmVmcy8kcmVmIHx8IHsKLQkJCQllY2hvICJPb3BzLCBwdXNoIHJlZnMvJHJlZiBmYWlsdXJlIgotCQkJCWV4aXQgMQotCQkJfQorCQkJZ2l0IHB1c2ggIiRyZXBvX25hbWUiICR0aGVfZmlyc3RfY29tbWl0OnJlZnMvJHJlZiB8fAorCQkJZXhpdAogCQlkb25lICYmCi0JCWNkIHRlc3RyZXBvICYmCisJCWNkICIkcmVwb19uYW1lIiAmJgogCQlmb3IgcmVmIGluICIkQCIKIAkJZG8KLQkJCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy8kcmVmKSAmJgotCQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9maXJzdF9jb21taXQiIHx8IHsKLQkJCQllY2hvICJPb3BzLCByZWZzLyRyZWYgaXMgd3JvbmciCi0JCQkJZXhpdCAxCi0JCQl9CisJCQllY2hvICIkdGhlX2ZpcnN0X2NvbW1pdCIgPmV4cGVjdCAmJgorCQkJZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvJHJlZiA+YWN0dWFsICYmCisJCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsIHx8CisJCQlleGl0CiAJCWRvbmUgJiYKIAkJZ2l0IGZzY2sgLS1mdWxsCiAJKQogfQogCiBta190ZXN0X3dpdGhfaG9va3MoKSB7CisJcmVwb19uYW1lPSQxCiAJbWtfdGVzdCAiJEAiICYmCiAJKAotCQljZCB0ZXN0cmVwbyAmJgorCQljZCAiJHJlcG9fbmFtZSIgJiYKIAkJbWtkaXIgLmdpdC9ob29rcyAmJgogCQljZCAuZ2l0L2hvb2tzICYmCiAKQEAgLTc1LDIyICs4OCwyMyBAQAogfQogCiBta19jaGlsZCgpIHsKLQlybSAtcmYgIiQxIiAmJgotCWdpdCBjbG9uZSB0ZXN0cmVwbyAiJDEiCisJcm0gLXJmICIkMiIgJiYKKwlnaXQgY2xvbmUgIiQxIiAiJDIiCiB9CiAKIGNoZWNrX3B1c2hfcmVzdWx0ICgpIHsKKwlyZXBvX25hbWU9IiQxIgorCXNoaWZ0CisKIAkoCi0JCWNkIHRlc3RyZXBvICYmCi0JCWl0PSIkMSIgJiYKLQkJc2hpZnQKKwkJY2QgIiRyZXBvX25hbWUiICYmCisJCWVjaG8gIiQxIiA+ZXhwZWN0ICYmCisJCXNoaWZ0ICYmCiAJCWZvciByZWYgaW4gIiRAIgogCQlkbwotCQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzLyRyZWYpICYmCi0JCQl0ZXN0ICJ6JHIiID0gInokaXQiIHx8IHsKLQkJCQllY2hvICJPb3BzLCByZWZzLyRyZWYgaXMgd3JvbmciCi0JCQkJZXhpdCAxCi0JCQl9CisJCQlnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy8kcmVmID5hY3R1YWwgJiYKKwkJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgfHwKKwkJCWV4aXQKIAkJZG9uZSAmJgogCQlnaXQgZnNjayAtLWZ1bGwKIAkpCkBAIC0xMTMsMzUgKzEyNywzMyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB3aXRob3V0IHdpbGRjYXJkJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGZldGNoIC4uIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0KLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHdpdGggd2lsZGNhcmQnICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgogCQlnaXQgY29uZmlnIHJlbW90ZS51cC51cmwgLi4gJiYKIAkJZ2l0IGNvbmZpZyByZW1vdGUudXAuZmV0Y2ggInJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiICYmCiAJCWdpdCBmZXRjaCB1cCAmJgogCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfY29tbWl0IiAmJgotCi0JCXRlc3QgMSA9ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwgd2MgLWwpCisJCWVjaG8gIiR0aGVfY29tbWl0IGNvbW1pdAlyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB3aXRoIGluc3RlYWRPZicgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAkoCiAJCVRSQVNIPSQocHdkKS8gJiYKIAkJY2QgdGVzdHJlcG8gJiYKQEAgLTE1MCwxNSArMTYyLDE0IEBACiAJCWdpdCBjb25maWcgcmVtb3RlLnVwLmZldGNoICJyZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL29yaWdpbi8qIiAmJgogCQlnaXQgZmV0Y2ggdXAgJiYKIAotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggd2l0aCBwdXNoSW5zdGVhZE9mIChzaG91bGQgbm90IHJld3JpdGUpJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCSgKIAkJVFJBU0g9JChwd2QpLyAmJgogCQljZCB0ZXN0cmVwbyAmJgpAQCAtMTY3LDMyMSArMTc4LDMxMCBAQAogCQlnaXQgY29uZmlnIHJlbW90ZS51cC5mZXRjaCAicmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9vcmlnaW4vKiIgJiYKIAkJZ2l0IGZldGNoIHVwICYmCiAKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0KLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aG91dCB3aWxkY2FyZCcgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAogCWdpdCBwdXNoIHRlc3RyZXBvIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIHdpbGRjYXJkJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCiAJZ2l0IHB1c2ggdGVzdHJlcG8gInJlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGluc3RlYWRPZicgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAlUUkFTSD0iJChwd2QpLyIgJiYKLQlnaXQgY29uZmlnICJ1cmwuJFRSQVNILmluc3RlYWRPZiIgdHJhc2gvICYmCisJdGVzdF9jb25maWcgInVybC4kVFJBU0guaW5zdGVhZE9mIiB0cmFzaC8gJiYKIAlnaXQgcHVzaCB0cmFzaC90ZXN0cmVwbyByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0KLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBwdXNoSW5zdGVhZE9mJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCVRSQVNIPSIkKHB3ZCkvIiAmJgotCWdpdCBjb25maWcgInVybC4kVFJBU0gucHVzaEluc3RlYWRPZiIgdHJhc2gvICYmCisJdGVzdF9jb25maWcgInVybC4kVFJBU0gucHVzaEluc3RlYWRPZiIgdHJhc2gvICYmCiAJZ2l0IHB1c2ggdHJhc2gvdGVzdHJlcG8gcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfY29tbWl0IiAmJgotCi0JCXRlc3QgMSA9ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwgd2MgLWwpCisJCWVjaG8gIiR0aGVfY29tbWl0IGNvbW1pdAlyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggcHVzaEluc3RlYWRPZiBhbmQgZXhwbGljaXQgcHVzaHVybCAocHVzaEluc3RlYWRPZiBzaG91bGQgbm90IHJld3JpdGUpJyAnCi0JbWtfZW1wdHkgJiYKLQlUUkFTSD0iJChwd2QpLyIgJiYKLQlnaXQgY29uZmlnICJ1cmwudHJhc2gyLy5wdXNoSW5zdGVhZE9mIiB0cmFzaC8gJiYKLQlnaXQgY29uZmlnIHJlbW90ZS5yLnVybCB0cmFzaC93cm9uZyAmJgotCWdpdCBjb25maWcgcmVtb3RlLnIucHVzaHVybCAiJFRSQVNIL3Rlc3RyZXBvIiAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCisJdGVzdF9jb25maWcgInVybC50cmFzaDIvLnB1c2hJbnN0ZWFkT2YiIHRlc3RyZXBvLyAmJgorCXRlc3RfY29uZmlnICJ1cmwudHJhc2gzLy5wdXNuSW5zdGVhZE9mIiB0cmFzaC93cm9uZyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS5yLnVybCB0cmFzaC93cm9uZyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS5yLnB1c2h1cmwgInRlc3RyZXBvLyIgJiYKIAlnaXQgcHVzaCByIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgotCQlyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbiB8IHdjIC1sKQorCQllY2hvICIkdGhlX2NvbW1pdCBjb21taXQJcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIG1hdGNoaW5nIGhlYWRzJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgotCWdpdCBwdXNoIHRlc3RyZXBvICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKKwlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIG1hdGNoaW5nIGhlYWRzIG9uIHRoZSBjb21tYW5kIGxpbmUnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmFpbGVkIChub24tZmFzdC1mb3J3YXJkKSBwdXNoIHdpdGggbWF0Y2hpbmcgaGVhZHMnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tYXNzYWdlZCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCiAJZ2l0IHJlc2V0IC0taGFyZCAkdGhlX2NvbW1pdAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1mb3JjZSB3aXRoIG1hdGNoaW5nIGhlYWRzJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gOiAmJgogCWdpdCBjb21taXQgLS1hbWVuZCAtbWFzc2FnZWQgJiYKLQlnaXQgcHVzaCAtLWZvcmNlIHRlc3RyZXBvICYmCi0JISBjaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwlnaXQgcHVzaCAtLWZvcmNlIHRlc3RyZXBvIDogJiYKKwkhIGNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgogCWdpdCByZXNldCAtLWhhcmQgJHRoZV9jb21taXQKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggbWF0Y2hpbmcgaGVhZHMgYW5kIGZvcmNlZCB1cGRhdGUnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6ICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tYXNzYWdlZCAmJgogCWdpdCBwdXNoIHRlc3RyZXBvICs6ICYmCi0JISBjaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwkhIGNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgogCWdpdCByZXNldCAtLWhhcmQgJHRoZV9jb21taXQKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggbm8gYW1iaWd1aXR5ICgxKScgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjptYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggbm8gYW1iaWd1aXR5ICgyKScgJwogCi0JbWtfdGVzdCByZW1vdGVzL29yaWdpbi9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIHJlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjpvcmlnaW4vbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGNvbG9uLWxlc3MgcmVmc3BlYywgbm8gYW1iaWd1aXR5JyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciBoZWFkcy90L21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyIGhlYWRzL3QvbWFzdGVyICYmCiAJZ2l0IGJyYW5jaCAtZiB0L21hc3RlciBtYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBtYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy90L21hc3RlcgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL3QvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIHdlYWsgYW1iaWd1aXR5ICgxKScgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOm1hc3RlciAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfZmlyc3RfY29tbWl0IHJlbW90ZXMvb3JpZ2luL21hc3RlcgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfZmlyc3RfY29tbWl0IHJlbW90ZXMvb3JpZ2luL21hc3RlcgogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCB3ZWFrIGFtYmlndWl0eSAoMiknICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyIHJlbW90ZXMvb3JpZ2luL21hc3RlciByZW1vdGVzL2Fub3RoZXIvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIHJlbW90ZXMvYW5vdGhlci9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBtYXN0ZXI6bWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIHJlbW90ZXMvYW5vdGhlci9tYXN0ZXIKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCByZW1vdGVzL29yaWdpbi9tYXN0ZXIgcmVtb3Rlcy9hbm90aGVyL21hc3RlcgogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBhbWJpZ3VpdHknICcKIAotCW1rX3Rlc3QgaGVhZHMvZnJvdHogdGFncy9mcm90eiAmJgotCWlmIGdpdCBwdXNoIHRlc3RyZXBvIG1hc3Rlcjpmcm90egotCXRoZW4KLQkJZWNobyAiT29wcywgc2hvdWxkIGhhdmUgZmFpbGVkIgotCQlmYWxzZQotCWVsc2UKLQkJY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZnJvdHogdGFncy9mcm90egotCWZpCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9mcm90eiB0YWdzL2Zyb3R6ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOmZyb3R6ICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZnJvdHogdGFncy9mcm90egogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBjb2xvbi1sZXNzIHJlZnNwZWMgKDEpJyAnCiAKLQlta190ZXN0IGhlYWRzL2Zyb3R6IHRhZ3MvZnJvdHogJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL2Zyb3R6IHRhZ3MvZnJvdHogJiYKIAlnaXQgYnJhbmNoIC1mIGZyb3R6IG1hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIGZyb3R6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvZnJvdHogJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCB0YWdzL2Zyb3R6CisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvZnJvdHogJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCB0YWdzL2Zyb3R6CiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGNvbG9uLWxlc3MgcmVmc3BlYyAoMiknICcKIAotCW1rX3Rlc3QgaGVhZHMvZnJvdHogdGFncy9mcm90eiAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvZnJvdHogdGFncy9mcm90eiAmJgogCWlmIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSByZWZzL2hlYWRzL2Zyb3R6CiAJdGhlbgogCQlnaXQgYnJhbmNoIC1EIGZyb3R6CiAJZmkgJiYKIAlnaXQgdGFnIC1mIGZyb3R6ICYmCi0JZ2l0IHB1c2ggdGVzdHJlcG8gZnJvdHogJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCB0YWdzL2Zyb3R6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZnJvdHoKKwlnaXQgcHVzaCAtZiB0ZXN0cmVwbyBmcm90eiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IHRhZ3MvZnJvdHogJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9mcm90egogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBjb2xvbi1sZXNzIHJlZnNwZWMgKDMpJyAnCiAKLQlta190ZXN0ICYmCisJbWtfdGVzdCB0ZXN0cmVwbyAmJgogCWlmIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSByZWZzL3RhZ3MvZnJvdHoKIAl0aGVuCiAJCWdpdCB0YWcgLWQgZnJvdHoKIAlmaSAmJgogCWdpdCBicmFuY2ggLWYgZnJvdHogbWFzdGVyICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gZnJvdHogJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9mcm90eiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2Zyb3R6ICYmCiAJdGVzdCAxID0gJCggY2QgdGVzdHJlcG8gJiYgZ2l0IHNob3ctcmVmIHwgd2MgLWwgKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggY29sb24tbGVzcyByZWZzcGVjICg0KScgJwogCi0JbWtfdGVzdCAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gJiYKIAlpZiBnaXQgc2hvdy1yZWYgLS12ZXJpZnkgLXEgcmVmcy9oZWFkcy9mcm90egogCXRoZW4KIAkJZ2l0IGJyYW5jaCAtRCBmcm90egogCWZpICYmCiAJZ2l0IHRhZyAtZiBmcm90eiAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIGZyb3R6ICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgdGFncy9mcm90eiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IHRhZ3MvZnJvdHogJiYKIAl0ZXN0IDEgPSAkKCBjZCB0ZXN0cmVwbyAmJiBnaXQgc2hvdy1yZWYgfCB3YyAtbCApCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBoZWFkIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOmJyYW5jaCAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdGFnIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJZ2l0IHRhZyAtZiB2MS4wICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gdjEuMDp0YWcgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCB0YWdzL3RhZworCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IHRhZ3MvdGFnCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBzaGExIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gYGdpdCByZXYtcGFyc2UgbWFzdGVyYDpmb28KIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHJlZiBleHByZXNzaW9uIHdpdGggbm9uLWV4aXN0ZW50LCBpbmNvbXBsZXRlIGRlc3QnICcKIAotCW1rX3Rlc3QgJiYKKwlta190ZXN0IHRlc3RyZXBvICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyXjpicmFuY2gKIAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggSEVBRCcgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBIRUFEICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIEhFQUQgbm9uZXhpc3RpbmcgYXQgcmVtb3RlJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJZ2l0IGNoZWNrb3V0IC1iIGxvY2FsIG1hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIEhFQUQgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9sb2NhbAorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2xvY2FsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCArSEVBRCcgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgYnJhbmNoIC1EIGxvY2FsICYmCiAJZ2l0IGNoZWNrb3V0IC1iIGxvY2FsICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyIGxvY2FsICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbG9jYWwgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9sb2NhbCAmJgogCiAJIyBXaXRob3V0IGZvcmNlIHJld2luZGluZyBzaG91bGQgZmFpbAogCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCB0ZXN0cmVwbyBIRUFEICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbG9jYWwgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9sb2NhbCAmJgogCiAJIyBXaXRoIGZvcmNlIHJld2luZGluZyBzaG91bGQgc3VjY2VlZAogCWdpdCBwdXNoIHRlc3RyZXBvICtIRUFEICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvbG9jYWwKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9sb2NhbAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggSEVBRCB3aXRoIG5vbi1leGlzdGVudCwgaW5jb21wbGV0ZSBkZXN0JyAnCiAKLQlta190ZXN0ICYmCisJbWtfdGVzdCB0ZXN0cmVwbyAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyBIRUFEOmJyYW5jaCAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL2JyYW5jaAogCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBjb25maWcgcmVtb3RlLioucHVzaCA9IEhFQUQnICcKIAotCW1rX3Rlc3QgaGVhZHMvbG9jYWwgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL2xvY2FsICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCWdpdCBicmFuY2ggLWYgbG9jYWwgJHRoZV9jb21taXQgJiYKIAkoCkBAIC00ODksNDYgKzQ4OSw2OCBAQAogCQlnaXQgY2hlY2tvdXQgbG9jYWwgJiYKIAkJZ2l0IHJlc2V0IC0taGFyZCAkdGhlX2ZpcnN0X2NvbW1pdAogCSkgJiYKLQlnaXQgY29uZmlnIHJlbW90ZS50aGVyZS51cmwgdGVzdHJlcG8gJiYKLQlnaXQgY29uZmlnIHJlbW90ZS50aGVyZS5wdXNoIEhFQUQgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIHRoZXJlICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnRoZXJlLnVybCB0ZXN0cmVwbyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS50aGVyZS5wdXNoIEhFQUQgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSB0aGVyZSAmJgogCWdpdCBwdXNoICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyICYmCi0JY2hlY2tfcHVzaF9yZXN1bHQgJHRoZV9maXJzdF9jb21taXQgaGVhZHMvbG9jYWwKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9sb2NhbAogJwogCi0jIGNsZWFuIHVwIHRoZSBjcnVmdCBsZWZ0IHdpdGggdGhlIHByZXZpb3VzIG9uZQotZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIHJlbW90ZS50aGVyZQotZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGJyYW5jaC5tYXN0ZXIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCByZW1vdGUucHVzaGRlZmF1bHQnICcKKwlta190ZXN0IHVwX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCBkb3duX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnVwLnVybCB1cF9yZXBvICYmCisJdGVzdF9jb25maWcgcmVtb3RlLmRvd24udXJsIGRvd25fcmVwbyAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIHVwICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnB1c2hkZWZhdWx0IGRvd24gJiYKKwl0ZXN0X2NvbmZpZyBwdXNoLmRlZmF1bHQgbWF0Y2hpbmcgJiYKKwlnaXQgcHVzaCAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHVwX3JlcG8gJHRoZV9maXJzdF9jb21taXQgaGVhZHMvbWFzdGVyICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgZG93bl9yZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlcgorJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggY29uZmlnIHJlbW90ZS4qLnB1c2h1cmwnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCi0JZ2l0IGNvbmZpZyByZW1vdGUudGhlcmUudXJsIHRlc3QycmVwbyAmJgotCWdpdCBjb25maWcgcmVtb3RlLnRoZXJlLnB1c2h1cmwgdGVzdHJlcG8gJiYKLQlnaXQgcHVzaCB0aGVyZSAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IGhlYWRzL21hc3RlcgorCXRlc3RfY29uZmlnIHJlbW90ZS50aGVyZS51cmwgdGVzdDJyZXBvICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnRoZXJlLnB1c2h1cmwgdGVzdHJlcG8gJiYKKwlnaXQgcHVzaCB0aGVyZSA6ICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCiAnCiAKLSMgY2xlYW4gdXAgdGhlIGNydWZ0IGxlZnQgd2l0aCB0aGUgcHJldmlvdXMgb25lCi1naXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gcmVtb3RlLnRoZXJlCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggY29uZmlnIGJyYW5jaC4qLnB1c2hyZW1vdGUnICcKKwlta190ZXN0IHVwX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCBzaWRlX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCBkb3duX3JlcG8gaGVhZHMvbWFzdGVyICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnVwLnVybCB1cF9yZXBvICYmCisJdGVzdF9jb25maWcgcmVtb3RlLnB1c2hkZWZhdWx0IHNpZGVfcmVwbyAmJgorCXRlc3RfY29uZmlnIHJlbW90ZS5kb3duLnVybCBkb3duX3JlcG8gJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSB1cCAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIucHVzaHJlbW90ZSBkb3duICYmCisJdGVzdF9jb25maWcgcHVzaC5kZWZhdWx0IG1hdGNoaW5nICYmCisJZ2l0IHB1c2ggJiYKKwljaGVja19wdXNoX3Jlc3VsdCB1cF9yZXBvICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHNpZGVfcmVwbyAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKKwljaGVja19wdXNoX3Jlc3VsdCBkb3duX3JlcG8gJHRoZV9jb21taXQgaGVhZHMvbWFzdGVyCisnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggd2l0aCBkcnktcnVuJyAnCiAKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJKAogCQljZCB0ZXN0cmVwbyAmJgogCQlvbGRfY29tbWl0PSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQogCSkgJiYKLQlnaXQgcHVzaCAtLWRyeS1ydW4gdGVzdHJlcG8gJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkb2xkX2NvbW1pdCBoZWFkcy9tYXN0ZXIKKwlnaXQgcHVzaCAtLWRyeS1ydW4gdGVzdHJlcG8gOiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICRvbGRfY29tbWl0IGhlYWRzL21hc3RlcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHVwZGF0ZXMgbG9jYWwgcmVmcycgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKLQlta19jaGlsZCBjaGlsZCAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQgJiYKIAkoCiAJCWNkIGNoaWxkICYmCiAJCWdpdCBwdWxsIC4uIG1hc3RlciAmJgpAQCAtNTQxLDkgKzU2Myw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdXBkYXRlcyB1cC10by1kYXRlIGxvY2FsIHJlZnMnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCi0JbWtfY2hpbGQgY2hpbGQxICYmCi0JbWtfY2hpbGQgY2hpbGQyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKKwlta19jaGlsZCB0ZXN0cmVwbyBjaGlsZDEgJiYKKwlta19jaGlsZCB0ZXN0cmVwbyBjaGlsZDIgJiYKIAkoY2QgY2hpbGQxICYmIGdpdCBwdWxsIC4uIG1hc3RlciAmJiBnaXQgcHVzaCkgJiYKIAkoCiAJCWNkIGNoaWxkMiAmJgpAQCAtNTU3LDggKzU3OSw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggcHJlc2VydmVzIHVwLXRvLWRhdGUgcGFja2VkIHJlZnMnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCi0JbWtfY2hpbGQgY2hpbGQgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkICYmCiAJKAogCQljZCBjaGlsZCAmJgogCQlnaXQgcHVzaCAmJgpAQCAtNTY5LDggKzU5MSw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggZG9lcyBub3QgdXBkYXRlIGxvY2FsIHJlZnMgb24gZmFpbHVyZScgJwogCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKLQlta19jaGlsZCBjaGlsZCAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQgJiYKIAlta2RpciB0ZXN0cmVwby8uZ2l0L2hvb2tzICYmCiAJZWNobyAiIyEvbm8vZnJvYm5pY2F0aW9uL3RvZGF5IiA+dGVzdHJlcG8vLmdpdC9ob29rcy9wcmUtcmVjZWl2ZSAmJgogCWNobW9kICt4IHRlc3RyZXBvLy5naXQvaG9va3MvcHJlLXJlY2VpdmUgJiYKQEAgLTU4Niw3ICs2MDgsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGxvdyBkZWxldGluZyBhbiBpbnZhbGlkIHJlbW90ZSByZWYnICcKIAotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlybSAtZiB0ZXN0cmVwby8uZ2l0L29iamVjdHMvPz8vKiAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIDpyZWZzL2hlYWRzL21hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJiB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQpAQCAtNTk0LDcgKzYxNiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2hpbmcgdmFsaWQgcmVmcyB0cmlnZ2VycyBwb3N0LXJlY2VpdmUgYW5kIHBvc3QtdXBkYXRlIGhvb2tzJyAnCi0JbWtfdGVzdF93aXRoX2hvb2tzIGhlYWRzL21hc3RlciBoZWFkcy9uZXh0ICYmCisJbWtfdGVzdF93aXRoX2hvb2tzIHRlc3RyZXBvIGhlYWRzL21hc3RlciBoZWFkcy9uZXh0ICYmCiAJb3JnbWFzdGVyPSQoY2QgdGVzdHJlcG8gJiYgZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKSAmJgogCW5ld21hc3Rlcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlcikgJiYKIAlvcmduZXh0PSQoY2QgdGVzdHJlcG8gJiYgZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbmV4dCkgJiYKQEAgLTYzMCw3ICs2NTIsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGluZyBkYW5nbGluZyByZWYgdHJpZ2dlcnMgaG9va3Mgd2l0aCBjb3JyZWN0IGFyZ3MnICcKLQlta190ZXN0X3dpdGhfaG9va3MgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdF93aXRoX2hvb2tzIHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCXJtIC1mIHRlc3RyZXBvLy5naXQvb2JqZWN0cy8/Py8qICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gOnJlZnMvaGVhZHMvbWFzdGVyICYmCiAJKApAQCAtNjU5LDcgKzY4MSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RlbGV0aW9uIG9mIGEgbm9uLWV4aXN0ZW50IHJlZiBpcyBub3QgZmVkIHRvIHBvc3QtcmVjZWl2ZSBhbmQgcG9zdC11cGRhdGUgaG9va3MnICcKLQlta190ZXN0X3dpdGhfaG9va3MgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdF93aXRoX2hvb2tzIHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCW9yZ21hc3Rlcj0kKGNkIHRlc3RyZXBvICYmIGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlcikgJiYKIAluZXdtYXN0ZXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCiAJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyIDpyZWZzL2hlYWRzL25vbmV4aXN0ZW50ICYmCkBAIC02OTEsNyArNzEzLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVsZXRpb24gb2YgYSBub24tZXhpc3RlbnQgcmVmIGFsb25lIGRvZXMgdHJpZ2dlciBwb3N0LXJlY2VpdmUgYW5kIHBvc3QtdXBkYXRlIGhvb2tzJyAnCi0JbWtfdGVzdF93aXRoX2hvb2tzIGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3Rfd2l0aF9ob29rcyB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyA6cmVmcy9oZWFkcy9ub25leGlzdGVudCAmJgogCSgKIAkJY2QgdGVzdHJlcG8vLmdpdCAmJgpAQCAtNzExLDcgKzczMyw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21peGVkIHJlZiB1cGRhdGVzLCBkZWxldGVzLCBpbnZhbGlkIGRlbGV0ZXMgdHJpZ2dlciBob29rcyB3aXRoIGNvcnJlY3QgaW5wdXQnICcKLQlta190ZXN0X3dpdGhfaG9va3MgaGVhZHMvbWFzdGVyIGhlYWRzL25leHQgaGVhZHMvcHUgJiYKKwlta190ZXN0X3dpdGhfaG9va3MgdGVzdHJlcG8gaGVhZHMvbWFzdGVyIGhlYWRzL25leHQgaGVhZHMvcHUgJiYKIAlvcmdtYXN0ZXI9JChjZCB0ZXN0cmVwbyAmJiBnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCiAJbmV3bWFzdGVyPSQoZ2l0IHNob3ctcmVmIC1zIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKSAmJgogCW9yZ25leHQ9JChjZCB0ZXN0cmVwbyAmJiBnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9uZXh0KSAmJgpAQCAtNzU3LDE0ICs3NzksMTQgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWxsb3cgZGVsZXRpbmcgYSByZWYgdXNpbmcgLS1kZWxldGUnICcKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJKGNkIHRlc3RyZXBvICYmIGdpdCBjb25maWcgcmVjZWl2ZS5kZW55RGVsZXRlQ3VycmVudCB3YXJuKSAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIC0tZGVsZXRlIG1hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJiB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGxvdyBkZWxldGluZyBhIHRhZyB1c2luZyAtLWRlbGV0ZScgJwotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAlnaXQgdGFnIC1hIC1tIGR1bW15X21lc3NhZ2UgZGVsdGFnIGhlYWRzL21hc3RlciAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIC0tdGFncyAmJgogCShjZCB0ZXN0cmVwbyAmJiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC1xIHJlZnMvdGFncy9kZWx0YWcpICYmCkBAIC03NzMsMTcgKzc5NSwxNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIC0tZGVsZXRlIHdpdGhvdXQgYXJncyBhYm9ydHMnICcKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gLS1kZWxldGUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCAtLWRlbGV0ZSByZWZ1c2VzIHNyYzpkZXN0IHJlZnNwZWNzJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIC0tZGVsZXRlIG1hc3Rlcjpmb28KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnd2FybiBvbiBwdXNoIHRvIEhFQUQgb2Ygbm9uLWJhcmUgcmVwb3NpdG9yeScgJwotCW1rX3Rlc3QgaGVhZHMvbWFzdGVyICYmCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCiAJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKQEAgLTc5NCw3ICs4MTYsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZW55IHB1c2ggdG8gSEVBRCBvZiBub24tYmFyZSByZXBvc2l0b3J5JyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgpAQCAtODA0LDcgKzgyNiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IHB1c2ggdG8gSEVBRCBvZiBiYXJlIHJlcG9zaXRvcnkgKGJhcmUpJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgpAQCAtODE2LDcgKzgzOCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsbG93IHB1c2ggdG8gSEVBRCBvZiBub24tYmFyZSByZXBvc2l0b3J5IChjb25maWcpJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgpAQCAtODI3LDYzICs4NDksNjMgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggd2l0aCBicmFuY2hlcycgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAlnaXQgYnJhbmNoIHNlY29uZCAkdGhlX2ZpcnN0X2NvbW1pdCAmJgogCWdpdCBjaGVja291dCBzZWNvbmQgJiYKIAllY2hvICIuLiIgPiB0ZXN0cmVwby8uZ2l0L2JyYW5jaGVzL2JyYW5jaDEgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCiAJCWdpdCBmZXRjaCBicmFuY2gxICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9icmFuY2gxKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2NvbW1pdCIgJiYKLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9jb21taXQgY29tbWl0CXJlZnMvaGVhZHMvYnJhbmNoMSIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggd2l0aCBicmFuY2hlcyBjb250YWluaW5nICMnICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJZWNobyAiLi4jc2Vjb25kIiA+IHRlc3RyZXBvLy5naXQvYnJhbmNoZXMvYnJhbmNoMiAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKIAkJZ2l0IGZldGNoIGJyYW5jaDIgJiYKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL2hlYWRzL2JyYW5jaDIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfZmlyc3RfY29tbWl0IiAmJgotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcyB8IHdjIC1sKQorCQllY2hvICIkdGhlX2ZpcnN0X2NvbW1pdCBjb21taXQJcmVmcy9oZWFkcy9icmFuY2gyIiA+ZXhwZWN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcyA+YWN0dWFsICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAkpICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggYnJhbmNoZXMnICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJZ2l0IGNoZWNrb3V0IHNlY29uZCAmJgogCWVjaG8gInRlc3RyZXBvIiA+IC5naXQvYnJhbmNoZXMvYnJhbmNoMSAmJgogCWdpdCBwdXNoIGJyYW5jaDEgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCi0JCXRlc3QgInokciIgPSAieiR0aGVfZmlyc3RfY29tbWl0IiAmJgotCQl0ZXN0IDEgPSAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcyB8IHdjIC1sKQorCQllY2hvICIkdGhlX2ZpcnN0X2NvbW1pdCBjb21taXQJcmVmcy9oZWFkcy9tYXN0ZXIiID5leHBlY3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL2hlYWRzID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGJyYW5jaGVzIGNvbnRhaW5pbmcgIycgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAllY2hvICJ0ZXN0cmVwbyNicmFuY2gzIiA+IC5naXQvYnJhbmNoZXMvYnJhbmNoMiAmJgogCWdpdCBwdXNoIGJyYW5jaDIgJiYKIAkoCiAJCWNkIHRlc3RyZXBvICYmCi0JCXI9JChnaXQgc2hvdy1yZWYgLXMgLS12ZXJpZnkgcmVmcy9oZWFkcy9icmFuY2gzKSAmJgotCQl0ZXN0ICJ6JHIiID0gInokdGhlX2ZpcnN0X2NvbW1pdCIgJiYKLQkJdGVzdCAxID0gJChnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgfCB3YyAtbCkKKwkJZWNobyAiJHRoZV9maXJzdF9jb21taXQgY29tbWl0CXJlZnMvaGVhZHMvYnJhbmNoMyIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvaGVhZHMgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBpbnRvIGFsaWFzZWQgcmVmcyAoY29uc2lzdGVudCknICcKLQlta190ZXN0IGhlYWRzL21hc3RlciAmJgotCW1rX2NoaWxkIGNoaWxkMSAmJgotCW1rX2NoaWxkIGNoaWxkMiAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQxICYmCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQyICYmCiAJKAogCQljZCBjaGlsZDEgJiYKIAkJZ2l0IGJyYW5jaCBmb28gJiYKQEAgLTkwMyw5ICs5MjUsOSBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGludG8gYWxpYXNlZCByZWZzIChpbmNvbnNpc3RlbnQpJyAnCi0JbWtfdGVzdCBoZWFkcy9tYXN0ZXIgJiYKLQlta19jaGlsZCBjaGlsZDEgJiYKLQlta19jaGlsZCBjaGlsZDIgJiYKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMSAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMiAmJgogCSgKIAkJY2QgY2hpbGQxICYmCiAJCWdpdCBicmFuY2ggZm9vICYmCkBAIC05MjksMjkgKzk1MSw1MCBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCByZXF1aXJlcyAtLWZvcmNlIHRvIHVwZGF0ZSBsaWdodHdlaWdodCB0YWcnICcKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMSAmJgorCW1rX2NoaWxkIHRlc3RyZXBvIGNoaWxkMiAmJgorCSgKKwkJY2QgY2hpbGQxICYmCisJCWdpdCB0YWcgVGFnICYmCisJCWdpdCBwdXNoIC4uL2NoaWxkMiBUYWcgJiYKKwkJZ2l0IHB1c2ggLi4vY2hpbGQyIFRhZyAmJgorCQk+ZmlsZTEgJiYKKwkJZ2l0IGFkZCBmaWxlMSAmJgorCQlnaXQgY29tbWl0IC1tICJmaWxlMSIgJiYKKwkJZ2l0IHRhZyAtZiBUYWcgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLi4vY2hpbGQyIFRhZyAmJgorCQlnaXQgcHVzaCAtLWZvcmNlIC4uL2NoaWxkMiBUYWcgJiYKKwkJZ2l0IHRhZyAtZiBUYWcgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLi4vY2hpbGQyIFRhZyBIRUFEfiAmJgorCQlnaXQgcHVzaCAtLWZvcmNlIC4uL2NoaWxkMiBUYWcKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1wb3JjZWxhaW4nICcKLQlta19lbXB0eSAmJgorCW1rX2VtcHR5IHRlc3RyZXBvICYmCiAJZWNobyA+LmdpdC9mb28gICJUbyB0ZXN0cmVwbyIgJiYKIAllY2hvID4+LmdpdC9mb28gIioJcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIJW25ldyBicmFuY2hdIiAgJiYKIAllY2hvID4+LmdpdC9mb28gIkRvbmUiICYmCiAJZ2l0IHB1c2ggPi5naXQvYmFyIC0tcG9yY2VsYWluICB0ZXN0cmVwbyByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCSgKIAkJY2QgdGVzdHJlcG8gJiYKLQkJcj0kKGdpdCBzaG93LXJlZiAtcyAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKLQkJdGVzdCAieiRyIiA9ICJ6JHRoZV9jb21taXQiICYmCi0JCXRlc3QgMSA9ICQoZ2l0IGZvci1lYWNoLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luIHwgd2MgLWwpCisJCWVjaG8gIiR0aGVfY29tbWl0IGNvbW1pdAlyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciIgPmV4cGVjdCAmJgorCQlnaXQgZm9yLWVhY2gtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4gPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKSAmJgogCXRlc3RfY21wIC5naXQvZm9vIC5naXQvYmFyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1wb3JjZWxhaW4gYmFkIHVybCcgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCA+LmdpdC9iYXIgLS1wb3JjZWxhaW4gYXNkZmFzZGZhc2QgcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgJiYKIAl0ZXN0X211c3RfZmFpbCBncmVwIC1xIERvbmUgLmdpdC9iYXIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCAtLXBvcmNlbGFpbiByZWplY3RlZCcgJwotCW1rX2VtcHR5ICYmCisJbWtfZW1wdHkgdGVzdHJlcG8gJiYKIAlnaXQgcHVzaCB0ZXN0cmVwbyByZWZzL2hlYWRzL21hc3RlcjpyZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciAmJgogCShjZCB0ZXN0cmVwbyAmJgogCQlnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXJeCkBAIC05NjUsNyArMTAwOCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1wb3JjZWxhaW4gLS1kcnktcnVuIHJlamVjdGVkJyAnCi0JbWtfZW1wdHkgJiYKKwlta19lbXB0eSB0ZXN0cmVwbyAmJgogCWdpdCBwdXNoIHRlc3RyZXBvIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCiAJKGNkIHRlc3RyZXBvICYmCiAJCWdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcgpAQCAtOTgwLDE5ICsxMDIzLDE1MyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIC0tcHJ1bmUnICcKLQlta190ZXN0IGhlYWRzL21hc3RlciBoZWFkcy9zZWNvbmQgaGVhZHMvZm9vIGhlYWRzL2JhciAmJgotCWdpdCBwdXNoIC0tcHJ1bmUgdGVzdHJlcG8gJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2NvbW1pdCBoZWFkcy9tYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCBoZWFkcy9zZWNvbmQgJiYKLQkhIGNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL2ZvbyBoZWFkcy9iYXIKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciBoZWFkcy9zZWNvbmQgaGVhZHMvZm9vIGhlYWRzL2JhciAmJgorCWdpdCBwdXNoIC0tcHJ1bmUgdGVzdHJlcG8gOiAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfZmlyc3RfY29tbWl0IGhlYWRzL3NlY29uZCAmJgorCSEgY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGVhZHMvZm9vIGhlYWRzL2JhcgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIC0tcHJ1bmUgcmVmc3BlYycgJwotCW1rX3Rlc3QgdG1wL21hc3RlciB0bXAvc2Vjb25kIHRtcC9mb28gdG1wL2JhciAmJgorCW1rX3Rlc3QgdGVzdHJlcG8gdG1wL21hc3RlciB0bXAvc2Vjb25kIHRtcC9mb28gdG1wL2JhciAmJgogCWdpdCBwdXNoIC0tcHJ1bmUgdGVzdHJlcG8gInJlZnMvaGVhZHMvKjpyZWZzL3RtcC8qIiAmJgotCWNoZWNrX3B1c2hfcmVzdWx0ICR0aGVfY29tbWl0IHRtcC9tYXN0ZXIgJiYKLQljaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCB0bXAvc2Vjb25kICYmCi0JISBjaGVja19wdXNoX3Jlc3VsdCAkdGhlX2ZpcnN0X2NvbW1pdCB0bXAvZm9vIHRtcC9iYXIKKwljaGVja19wdXNoX3Jlc3VsdCB0ZXN0cmVwbyAkdGhlX2NvbW1pdCB0bXAvbWFzdGVyICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgdG1wL3NlY29uZCAmJgorCSEgY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgdG1wL2ZvbyB0bXAvYmFyCisnCisKK2ZvciBjb25maWdzZWN0aW9uIGluIHRyYW5zZmVyIHJlY2VpdmUKK2RvCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicHVzaCB0byB1cGRhdGUgYSByZWYgaGlkZGVuIGJ5ICRjb25maWdzZWN0aW9uLmhpZGVyZWZzIiAnCisJCW1rX3Rlc3QgdGVzdHJlcG8gaGVhZHMvbWFzdGVyIGhpZGRlbi9vbmUgaGlkZGVuL3R3byBoaWRkZW4vdGhyZWUgJiYKKwkJKAorCQkJY2QgdGVzdHJlcG8gJiYKKwkJCWdpdCBjb25maWcgJGNvbmZpZ3NlY3Rpb24uaGlkZXJlZnMgcmVmcy9oaWRkZW4KKwkJKSAmJgorCisJCSMgcHVzaCB0byB1bmhpZGRlbiByZWYgc3VjY2VlZHMgbm9ybWFsbHkKKwkJZ2l0IHB1c2ggdGVzdHJlcG8gbWFzdGVyOnJlZnMvaGVhZHMvbWFzdGVyICYmCisJCWNoZWNrX3B1c2hfcmVzdWx0IHRlc3RyZXBvICR0aGVfY29tbWl0IGhlYWRzL21hc3RlciAmJgorCisJCSMgcHVzaCB0byB1cGRhdGUgYSBoaWRkZW4gcmVmIHNob3VsZCBmYWlsCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjpyZWZzL2hpZGRlbi9vbmUgJiYKKwkJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGlkZGVuL29uZSAmJgorCisJCSMgcHVzaCB0byBkZWxldGUgYSBoaWRkZW4gcmVmIHNob3VsZCBmYWlsCisJCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHRlc3RyZXBvIDpyZWZzL2hpZGRlbi90d28gJiYKKwkJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGlkZGVuL3R3byAmJgorCisJCSMgaWRlbXBvdGVudCBwdXNoIHRvIHVwZGF0ZSBhIGhpZGRlbiByZWYgc2hvdWxkIGZhaWwKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQ6cmVmcy9oaWRkZW4vdGhyZWUgJiYKKwkJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9maXJzdF9jb21taXQgaGlkZGVuL3RocmVlCisJJworZG9uZQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBleGFjdCBTSEExJyAnCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgaGlkZGVuL29uZSAmJgorCWdpdCBwdXNoIHRlc3RyZXBvIG1hc3RlcjpyZWZzL2hpZGRlbi9vbmUgJiYKKwkoCisJCWNkIHRlc3RyZXBvICYmCisJCWdpdCBjb25maWcgdHJhbnNmZXIuaGlkZXJlZnMgcmVmcy9oaWRkZW4KKwkpICYmCisJY2hlY2tfcHVzaF9yZXN1bHQgdGVzdHJlcG8gJHRoZV9jb21taXQgaGlkZGVuL29uZSAmJgorCisJbWtfY2hpbGQgdGVzdHJlcG8gY2hpbGQgJiYKKwkoCisJCWNkIGNoaWxkICYmCisKKwkJIyBtYWtlIHN1cmUgJHRoZV9jb21taXQgZG9lcyBub3QgZXhpc3QgaGVyZQorCQlnaXQgcmVwYWNrIC1hIC1kICYmCisJCWdpdCBwcnVuZSAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgLXQgJHRoZV9jb21taXQgJiYKKworCQkjIGZldGNoaW5nIHRoZSBoaWRkZW4gb2JqZWN0IHNob3VsZCBmYWlsIGJ5IGRlZmF1bHQKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoIC12IC4uL3Rlc3RyZXBvICR0aGVfY29tbWl0OnJlZnMvaGVhZHMvY29weSAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvY29weSAmJgorCisJCSMgdGhlIHNlcnZlciBzaWRlIGNhbiBhbGxvdyBpdCB0byBzdWNjZWVkCisJCSgKKwkJCWNkIC4uL3Rlc3RyZXBvICYmCisJCQlnaXQgY29uZmlnIHVwbG9hZHBhY2suYWxsb3d0aXBzaGExaW53YW50IHRydWUKKwkJKSAmJgorCisJCWdpdCBmZXRjaCAtdiAuLi90ZXN0cmVwbyAkdGhlX2NvbW1pdDpyZWZzL2hlYWRzL2NvcHkgJiYKKwkJcmVzdWx0PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL2NvcHkpICYmCisJCXRlc3QgIiR0aGVfY29tbWl0IiA9ICIkcmVzdWx0IgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggZm9sbG93cyB0YWdzIGJ5IGRlZmF1bHQnICcKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCXJtIC1mciBzcmMgZHN0ICYmCisJZ2l0IGluaXQgc3JjICYmCisJKAorCQljZCBzcmMgJiYKKwkJZ2l0IHB1bGwgLi4vdGVzdHJlcG8gbWFzdGVyICYmCisJCWdpdCB0YWcgLW0gImFubm90YXRlZCIgdGFnICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgPnRtcDEgJiYKKwkJKAorCQkJY2F0IHRtcDEKKwkJCXNlZCAtbiAic3xyZWZzL2hlYWRzL21hc3RlciR8cmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXJ8cCIgdG1wMQorCQkpIHwKKwkJc29ydCAtayAzID4uLi9leHBlY3QKKwkpICYmCisJZ2l0IGluaXQgZHN0ICYmCisJKAorCQljZCBkc3QgJiYKKwkJZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIC4uL3NyYyAmJgorCQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlIG9yaWdpbiAmJgorCQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKKwkJZ2l0IHB1bGwgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiA+Li4vYWN0dWFsCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBkb2VzIG5vdCBmb2xsb3cgdGFncyBieSBkZWZhdWx0JyAnCisJbWtfdGVzdCB0ZXN0cmVwbyBoZWFkcy9tYXN0ZXIgJiYKKwlybSAtZnIgc3JjIGRzdCAmJgorCWdpdCBpbml0IHNyYyAmJgorCWdpdCBpbml0IC0tYmFyZSBkc3QgJiYKKwkoCisJCWNkIHNyYyAmJgorCQlnaXQgcHVsbCAuLi90ZXN0cmVwbyBtYXN0ZXIgJiYKKwkJZ2l0IHRhZyAtbSAiYW5ub3RhdGVkIiB0YWcgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIGFub3RoZXIgJiYKKwkJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tICJmdXR1cmUgY29tbWl0IiAmJgorCQlnaXQgdGFnIC1tICJmdXR1cmUiIGZ1dHVyZSAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgcmVmcy9oZWFkcy9tYXN0ZXIgPi4uL2V4cGVjdCAmJgorCQlnaXQgcHVzaCAuLi9kc3QgbWFzdGVyCisJKSAmJgorCSgKKwkJY2QgZHN0ICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgPi4uL2FjdHVhbAorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggLS1mb2xsb3ctdGFnIG9ubHkgcHVzaGVzIHJlbGV2YW50IHRhZ3MnICcKKwlta190ZXN0IHRlc3RyZXBvIGhlYWRzL21hc3RlciAmJgorCXJtIC1mciBzcmMgZHN0ICYmCisJZ2l0IGluaXQgc3JjICYmCisJZ2l0IGluaXQgLS1iYXJlIGRzdCAmJgorCSgKKwkJY2Qgc3JjICYmCisJCWdpdCBwdWxsIC4uL3Rlc3RyZXBvIG1hc3RlciAmJgorCQlnaXQgdGFnIC1tICJhbm5vdGF0ZWQiIHRhZyAmJgorCQlnaXQgY2hlY2tvdXQgLWIgYW5vdGhlciAmJgorCQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gImZ1dHVyZSBjb21taXQiICYmCisJCWdpdCB0YWcgLW0gImZ1dHVyZSIgZnV0dXJlICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiByZWZzL2hlYWRzL21hc3RlciByZWZzL3RhZ3MvdGFnID4uLi9leHBlY3QKKwkJZ2l0IHB1c2ggLS1mb2xsb3ctdGFnIC4uL2RzdCBtYXN0ZXIKKwkpICYmCisJKAorCQljZCBkc3QgJiYKKwkJZ2l0IGZvci1lYWNoLXJlZiA+Li4vYWN0dWFsCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTE3LXB1c2gtbWlycm9yLnNoIGIvdC90NTUxNy1wdXNoLW1pcnJvci5zaAppbmRleCBlMmFkMjYwLi4xMmE1ZGZiIDEwMDc1NQotLS0gYS90L3Q1NTE3LXB1c2gtbWlycm9yLnNoCisrKyBiL3QvdDU1MTctcHVzaC1taXJyb3Iuc2gKQEAgLTI1Niw3ICsyNTYsNyBAQAogCQlnaXQgYnJhbmNoIGtlZXAgbWFzdGVyICYmCiAJCWdpdCBwdXNoIC0tbWlycm9yIHVwICYmCiAJCWdpdCBicmFuY2ggLUQga2VlcCAmJgotCQlnaXQgcHVzaCB1cAorCQlnaXQgcHVzaCB1cCA6CiAJKSAmJgogCSgKIAkJY2QgbWlycm9yICYmCmRpZmYgLS1naXQgYS90L3Q1NTE5LXB1c2gtYWx0ZXJuYXRlcy5zaCBiL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCmluZGV4IGMwMGM5YjAuLjExZmNkMzcgMTAwNzU1Ci0tLSBhL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCisrKyBiL3QvdDU1MTktcHVzaC1hbHRlcm5hdGVzLnNoCkBAIC00MCw3ICs0MCw3IEBACiAJCWNkIGFsaWNlLXdvcmsgJiYKIAkJZWNobyBtb3JlID5maWxlICYmCiAJCWdpdCBjb21taXQgLWEgLW0gc2Vjb25kICYmCi0JCWdpdCBwdXNoIC4uL2FsaWNlLXB1YgorCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIgOgogCSkKICcKIApAQCAtNTcsNyArNTcsNyBAQAogCQlnaXQgcHVsbCAuLi9hbGljZS1wdWIgbWFzdGVyICYmCiAJCWVjaG8gbW9yZSBib2IgPmZpbGUgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSB0aGlyZCAmJgotCQlnaXQgcHVzaCAuLi9ib2ItcHViCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIgOgogCSkgJiYKIAogCSMgQ2hlY2sgdGhhdCB0aGUgc2Vjb25kIGNvbW1pdCBieSBBbGljZSBpcyBub3Qgc2VudApAQCAtODYsNyArODYsNyBAQAogCQljZCBhbGljZS13b3JrICYmCiAJCWVjaG8gbW9yZSBhbGljZSA+ZmlsZSAmJgogCQlnaXQgY29tbWl0IC1hIC1tIGZvdXJ0aCAmJgotCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkJZ2l0IHB1c2ggLi4vYWxpY2UtcHViIDoKIAkpCiAnCiAKQEAgLTk5LDcgKzk5LDcgQEAKIAkJY2QgYm9iLXdvcmsgJiYKIAkJZWNobyB5ZXQgbW9yZSBib2IgPmZpbGUgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSBmaWZ0aCAmJgotCQlnaXQgcHVzaCAuLi9ib2ItcHViCisJCWdpdCBwdXNoIC4uL2JvYi1wdWIgOgogCSkKICcKIApAQCAtMTE1LDcgKzExNSw3IEBACiAJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMiAmJgogCQllY2hvIG1vcmUgYW5kIG1vcmUgYWxpY2UgPj5maWxlICYmCiAJCWdpdCBjb21taXQgLWEgLW0gc2l4dGguMyAmJgotCQlnaXQgcHVzaCAuLi9hbGljZS1wdWIKKwkJZ2l0IHB1c2ggLi4vYWxpY2UtcHViIDoKIAkpCiAnCiAKQEAgLTEzNiw3ICsxMzYsNyBAQAogCQlnaXQgaGFzaC1vYmplY3QgLXQgY29tbWl0IC13IGNvbW1pdCAmJgogCQllY2hvIGV2ZW4gbW9yZSBib2IgPmZpbGUgJiYKIAkJZ2l0IGNvbW1pdCAtYSAtbSBzZXZlbnRoICYmCi0JCWdpdCBwdXNoIC4uL2JvYi1wdWIKKwkJZ2l0IHB1c2ggLi4vYm9iLXB1YiA6CiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q1NTIwLXB1bGwuc2ggYi90L3Q1NTIwLXB1bGwuc2gKaW5kZXggMzUzMDRiNC4uNmFmNmM2MyAxMDA3NTUKLS0tIGEvdC90NTUyMC1wdWxsLnNoCisrKyBiL3QvdDU1MjAtcHVsbC5zaApAQCAtOTYsOCArOTYsNyBAQAogJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbC5yZWJhc2UnICcKIAlnaXQgcmVzZXQgLS1oYXJkIGJlZm9yZS1yZWJhc2UgJiYKLQlnaXQgY29uZmlnIC0tYm9vbCBwdWxsLnJlYmFzZSB0cnVlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgcHVsbC5yZWJhc2UiICYmCisJdGVzdF9jb25maWcgcHVsbC5yZWJhc2UgdHJ1ZSAmJgogCWdpdCBwdWxsIC4gY29weSAmJgogCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReKSA9ICQoZ2l0IHJldi1wYXJzZSBjb3B5KSAmJgogCXRlc3QgbmV3ID0gJChnaXQgc2hvdyBIRUFEOmZpbGUyKQpAQCAtMTA1LDggKzEwNCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JyYW5jaC50by1yZWJhc2UucmViYXNlJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBiZWZvcmUtcmViYXNlICYmCi0JZ2l0IGNvbmZpZyAtLWJvb2wgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UgdHJ1ZSAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGJyYW5jaC50by1yZWJhc2UucmViYXNlIiAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC50by1yZWJhc2UucmViYXNlIHRydWUgJiYKIAlnaXQgcHVsbCAuIGNvcHkgJiYKIAl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikgPSAkKGdpdCByZXYtcGFyc2UgY29weSkgJiYKIAl0ZXN0IG5ldyA9ICQoZ2l0IHNob3cgSEVBRDpmaWxlMikKQEAgLTExNCwxMCArMTEyLDggQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2Ugc2hvdWxkIG92ZXJyaWRlIHB1bGwucmViYXNlJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBiZWZvcmUtcmViYXNlICYmCi0JZ2l0IGNvbmZpZyAtLWJvb2wgcHVsbC5yZWJhc2UgdHJ1ZSAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IHB1bGwucmViYXNlIiAmJgotCWdpdCBjb25maWcgLS1ib29sIGJyYW5jaC50by1yZWJhc2UucmViYXNlIGZhbHNlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UiICYmCisJdGVzdF9jb25maWcgcHVsbC5yZWJhc2UgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC50by1yZWJhc2UucmViYXNlIGZhbHNlICYmCiAJZ2l0IHB1bGwgLiBjb3B5ICYmCiAJdGVzdCAkKGdpdCByZXYtcGFyc2UgSEVBRF4pICE9ICQoZ2l0IHJldi1wYXJzZSBjb3B5KSAmJgogCXRlc3QgbmV3ID0gJChnaXQgc2hvdyBIRUFEOmZpbGUyKQpAQCAtMTcxLDkgKzE2Nyw5IEBACiAJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL21lL2NvcHkgY29weV4gJiYKIAlDT1BZPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBtZS9jb3B5KSAmJgogCWdpdCByZWJhc2UgLS1vbnRvICRDT1BZIGNvcHkgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC50by1yZWJhc2UucmVtb3RlIG1lICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gudG8tcmViYXNlLm1lcmdlIHJlZnMvaGVhZHMvY29weSAmJgotCWdpdCBjb25maWcgYnJhbmNoLnRvLXJlYmFzZS5yZWJhc2UgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC50by1yZWJhc2UucmVtb3RlIG1lICYmCisJdGVzdF9jb25maWcgYnJhbmNoLnRvLXJlYmFzZS5tZXJnZSByZWZzL2hlYWRzL2NvcHkgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gudG8tcmViYXNlLnJlYmFzZSB0cnVlICYmCiAJZWNobyBkaXJ0eSA+PiBmaWxlICYmCiAJZ2l0IGFkZCBmaWxlICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1bGwgJiYKZGlmZiAtLWdpdCBhL3QvdDU1MjEtcHVsbC1vcHRpb25zLnNoIGIvdC90NTUyMS1wdWxsLW9wdGlvbnMuc2gKaW5kZXggMWIwNjY5MS4uNDUzYWJhNSAxMDA3NTUKLS0tIGEvdC90NTUyMS1wdWxsLW9wdGlvbnMuc2gKKysrIGIvdC90NTUyMS1wdWxsLW9wdGlvbnMuc2gKQEAgLTE1LDggKzE1LDE5IEBACiAJbWtkaXIgY2xvbmVkcSAmJgogCShjZCBjbG9uZWRxICYmIGdpdCBpbml0ICYmCiAJZ2l0IHB1bGwgLXEgIi4uL3BhcmVudCIgPm91dCAyPmVyciAmJgotCXRlc3QgISAtcyBlcnIgJiYKLQl0ZXN0ICEgLXMgb3V0KQorCXRlc3RfbXVzdF9iZV9lbXB0eSBlcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0KQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtcSAtLXJlYmFzZScgJworCW1rZGlyIGNsb25lZHFyYiAmJgorCShjZCBjbG9uZWRxcmIgJiYgZ2l0IGluaXQgJiYKKwlnaXQgcHVsbCAtcSAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQgJiYKKwlnaXQgcHVsbCAtcSAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsJyAnCkBAIC0yNCw3ICszNSwxNSBAQAogCShjZCBjbG9uZWQgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCiAJdGVzdCAtcyBlcnIgJiYKLQl0ZXN0ICEgLXMgb3V0KQorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC0tcmViYXNlJyAnCisJbWtkaXIgY2xvbmVkcmIgJiYKKwkoY2QgY2xvbmVkcmIgJiYgZ2l0IGluaXQgJiYKKwlnaXQgcHVsbCAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCisJdGVzdCAtcyBlcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0KQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtdicgJwpAQCAtMzIsMjIgKzUxLDMwIEBACiAJKGNkIGNsb25lZHYgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtdiAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCiAJdGVzdCAtcyBlcnIgJiYKLQl0ZXN0ICEgLXMgb3V0KQorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC12IC0tcmViYXNlJyAnCisJbWtkaXIgY2xvbmVkdnJiICYmCisJKGNkIGNsb25lZHZyYiAmJiBnaXQgaW5pdCAmJgorCWdpdCBwdWxsIC12IC0tcmViYXNlICIuLi9wYXJlbnQiID5vdXQgMj5lcnIgJiYKKwl0ZXN0IC1zIGVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC12IC1xJyAnCiAJbWtkaXIgY2xvbmVkdnEgJiYKIAkoY2QgY2xvbmVkdnEgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtdiAtcSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCi0JdGVzdCAhIC1zIG91dCAmJgotCXRlc3QgISAtcyBlcnIpCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBlcnIpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC1xIC12JyAnCiAJbWtkaXIgY2xvbmVkcXYgJiYKIAkoY2QgY2xvbmVkcXYgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtcSAtdiAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCi0JdGVzdCAhIC1zIG91dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQgJiYKIAl0ZXN0IC1zIGVycikKICcKIApkaWZmIC0tZ2l0IGEvdC90NTUzMS1kZWVwLXN1Ym1vZHVsZS1wdXNoLnNoIGIvdC90NTUzMS1kZWVwLXN1Ym1vZHVsZS1wdXNoLnNoCmluZGV4IDE5NDdjMjguLjhjMTZlMDQgMTAwNzU1Ci0tLSBhL3QvdDU1MzEtZGVlcC1zdWJtb2R1bGUtcHVzaC5zaAorKysgYi90L3Q1NTMxLWRlZXAtc3VibW9kdWxlLXB1c2guc2gKQEAgLTE2LDYgKzE2LDcgQEAKIAkJKAogCQkJY2QgZ2FyL2JhZ2UgJiYKIAkJCWdpdCBpbml0ICYmCisJCQlnaXQgY29uZmlnIHB1c2guZGVmYXVsdCBtYXRjaGluZyAmJgogCQkJPmp1bmsgJiYKIAkJCWdpdCBhZGQganVuayAmJgogCQkJZ2l0IGNvbW1pdCAtbSAiSW5pdGlhbCBqdW5rIgpkaWZmIC0tZ2l0IGEvdC90NTU0MS1odHRwLXB1c2guc2ggYi90L3Q1NTQxLWh0dHAtcHVzaC5zaAppbmRleCA0YjRiNGE2Li5iZWIwMGJlIDEwMDc1NQotLS0gYS90L3Q1NTQxLWh0dHAtcHVzaC5zaAorKysgYi90L3Q1NTQxLWh0dHAtcHVzaC5zaApAQCAtMTgxLDggKzE4MSw3IEBACiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfY29tbWl0IGNvbW1pdCBwYXRoMyAmJgogCUhFQUQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCi0JZ2l0IGNvbmZpZyBodHRwLnBvc3RidWZmZXIgNCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGh0dHAucG9zdGJ1ZmZlciIgJiYKKwl0ZXN0X2NvbmZpZyBodHRwLnBvc3RidWZmZXIgNCAmJgogCWdpdCBwdXNoIC12IC12IG9yaWdpbiAkQlJBTkNIIDI+ZXJyICYmCiAJZ3JlcCAiUE9TVCBnaXQtcmVjZWl2ZS1wYWNrIChjaHVua2VkKSIgZXJyICYmCiAJKGNkICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIIi90ZXN0X3JlcG8uZ2l0ICYmCkBAIC0yOTUsNSArMjk0LDM1IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmVhdGUgcmVwbyB3aXRob3V0IGh0dHAucmVjZWl2ZXBhY2sgc2V0JyAnCisJY2QgIiRST09UX1BBVEgiICYmCisJZ2l0IGluaXQgaGFsZi1hdXRoICYmCisJKAorCQljZCBoYWxmLWF1dGggJiYKKwkJdGVzdF9jb21taXQgb25lCisJKSAmJgorCWdpdCBjbG9uZSAtLWJhcmUgaGFsZi1hdXRoICIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIL2hhbGYtYXV0aC5naXQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHZpYSBoYWxmLWF1dGgtY29tcGxldGUgZG9lcyBub3QgbmVlZCBwYXNzd29yZCcgJworCWNkICIkUk9PVF9QQVRIIiAmJgorCXNldF9hc2twYXNzIHdyb25nICYmCisJZ2l0IGNsb25lICIkSFRUUERfVVJMIi9oYWxmLWF1dGgtY29tcGxldGUvc21hcnQvaGFsZi1hdXRoLmdpdCBcCisJCWhhbGYtYXV0aC1jbG9uZSAmJgorCWV4cGVjdF9hc2twYXNzIG5vbmUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBpbnRvIGhhbGYtYXV0aC1jb21wbGV0ZSByZXF1aXJlcyBwYXNzd29yZCcgJworCWNkICIkUk9PVF9QQVRIL2hhbGYtYXV0aC1jbG9uZSIgJiYKKwllY2hvIHR3byA+ZXhwZWN0ICYmCisJdGVzdF9jb21taXQgdHdvICYmCisJc2V0X2Fza3Bhc3MgdXNlckBob3N0ICYmCisJZ2l0IHB1c2ggIiRIVFRQRF9VUkwvaGFsZi1hdXRoLWNvbXBsZXRlL3NtYXJ0L2hhbGYtYXV0aC5naXQiICYmCisJZ2l0IC0tZ2l0LWRpcj0iJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9oYWxmLWF1dGguZ2l0IiBcCisJCWxvZyAtMSAtLWZvcm1hdD0lcyA+YWN0dWFsICYmCisJZXhwZWN0X2Fza3Bhc3MgYm90aCB1c2VyQGhvc3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKIHN0b3BfaHR0cGQKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTU1MC1odHRwLWZldGNoLnNoIGIvdC90NTU1MC1odHRwLWZldGNoLnNoCmluZGV4IDgwZDIwYzguLmY3ZDBmMTQgMTAwNzU1Ci0tLSBhL3QvdDU1NTAtaHR0cC1mZXRjaC5zaAorKysgYi90L3Q1NTUwLWh0dHAtZmV0Y2guc2gKQEAgLTEzLDYgKzEzLDcgQEAKIHN0YXJ0X2h0dHBkCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlcG9zaXRvcnknICcKKwlnaXQgY29uZmlnIHB1c2guZGVmYXVsdCBtYXRjaGluZyAmJgogCWVjaG8gY29udGVudDEgPmZpbGUgJiYKIAlnaXQgYWRkIGZpbGUgJiYKIAlnaXQgY29tbWl0IC1tIG9uZQpkaWZmIC0tZ2l0IGEvdC90NTU1MS1odHRwLWZldGNoLnNoIGIvdC90NTU1MS1odHRwLWZldGNoLnNoCmluZGV4IDQ3ZWI3NjkuLjU1YTg2NmEgMTAwNzU1Ci0tLSBhL3QvdDU1NTEtaHR0cC1mZXRjaC5zaAorKysgYi90L3Q1NTUxLWh0dHAtZmV0Y2guc2gKQEAgLTEzLDYgKzEzLDcgQEAKIHN0YXJ0X2h0dHBkCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlcG9zaXRvcnknICcKKwlnaXQgY29uZmlnIHB1c2guZGVmYXVsdCBtYXRjaGluZyAmJgogCWVjaG8gY29udGVudCA+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBjb21taXQgLW0gb25lCkBAIC0xNjIsNiArMTYzLDMwIEBACiAJZ3JlcCAibm90IHZhbGlkOiIgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBuYW1lc3BhY2VkIHJlZnMnICcKKwl0ZXN0X2NvbW1pdCBuYW1lc3BhY2VkICYmCisJZ2l0IHB1c2ggcHVibGljIEhFQUQ6cmVmcy9uYW1lc3BhY2VzL25zL3JlZnMvaGVhZHMvbWFzdGVyICYmCisJZ2l0IC0tZ2l0LWRpcj0iJEhUVFBEX0RPQ1VNRU5UX1JPT1RfUEFUSC9yZXBvLmdpdCIgXAorCQlzeW1ib2xpYy1yZWYgcmVmcy9uYW1lc3BhY2VzL25zL0hFQUQgcmVmcy9uYW1lc3BhY2VzL25zL3JlZnMvaGVhZHMvbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NtYXJ0IGNsb25lIHJlc3BlY3RzIG5hbWVzcGFjZScgJworCWdpdCBjbG9uZSAiJEhUVFBEX1VSTC9zbWFydF9uYW1lc3BhY2UvcmVwby5naXQiIG5zLXNtYXJ0ICYmCisJZWNobyBuYW1lc3BhY2VkID5leHBlY3QgJiYKKwlnaXQgLS1naXQtZGlyPW5zLXNtYXJ0Ly5naXQgbG9nIC0xIC0tZm9ybWF0PSVzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2R1bWIgY2xvbmUgdmlhIGh0dHAtYmFja2VuZCByZXNwZWN0cyBuYW1lc3BhY2UnICcKKwlnaXQgLS1naXQtZGlyPSIkSFRUUERfRE9DVU1FTlRfUk9PVF9QQVRIL3JlcG8uZ2l0IiBcCisJCWNvbmZpZyBodHRwLmdldGFueWZpbGUgdHJ1ZSAmJgorCUdJVF9TTUFSVF9IVFRQPTAgZ2l0IGNsb25lIFwKKwkJIiRIVFRQRF9VUkwvc21hcnRfbmFtZXNwYWNlL3JlcG8uZ2l0IiBucy1kdW1iICYmCisJZWNobyBuYW1lc3BhY2VkID5leHBlY3QgJiYKKwlnaXQgLS1naXQtZGlyPW5zLWR1bWIvLmdpdCBsb2cgLTEgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdCAtbiAiJEdJVF9URVNUX0xPTkciICYmIHRlc3Rfc2V0X3ByZXJlcSBFWFBFTlNJVkUKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBFWFBFTlNJVkUgJ2NyZWF0ZSA1MCwwMDAgdGFncyBpbiB0aGUgcmVwbycgJwpAQCAtMTg0LDEzICsyMDksMTcgQEAKIAogCSMgbm93IGFzc2lnbiB0YWdzIHRvIGFsbCB0aGUgZGFuZ2xpbmcgY29tbWl0cyB3ZSBjcmVhdGVkIGFib3ZlCiAJdGFnPSQoIiRQRVJMX1BBVEgiIC1lICJwcmludCBcImJsYVwiIHggMzAiKSAmJgotCXNlZCAtZSAicy9eOlwoLlwrXCkgXCguXCtcKSQvXDIgcmVmc1wvdGFnc1wvJHRhZy1cMS8iIDxtYXJrcyA+PnBhY2tlZC1yZWZzCisJc2VkIC1lICJzfF46XChbXiBdKlwpIFwoLipcKSR8XDIgcmVmcy90YWdzLyR0YWctXDF8IiA8bWFya3MgPj5wYWNrZWQtcmVmcwogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBFWFBFTlNJVkUgJ2Nsb25lIHRoZSA1MCwwMDAgdGFnIHJlcG8gdG8gY2hlY2sgT1MgY29tbWFuZCBsaW5lIG92ZXJmbG93JyAnCiAJZ2l0IGNsb25lICRIVFRQRF9VUkwvc21hcnQvcmVwby5naXQgdG9vLW1hbnktcmVmcyAyPmVyciAmJgotCXRlc3RfbGluZV9jb3VudCA9IDAgZXJyCisJdGVzdF9saW5lX2NvdW50ID0gMCBlcnIgJiYKKwkoCisJCWNkIHRvby1tYW55LXJlZnMgJiYKKwkJdGVzdCAkKGdpdCBmb3ItZWFjaC1yZWYgcmVmcy90YWdzIHwgd2MgLWwpID0gNTAwMDAKKwkpCiAnCiAKIHN0b3BfaHR0cGQKZGlmZiAtLWdpdCBhL3QvdDU1NzAtZ2l0LWRhZW1vbi5zaCBiL3QvdDU1NzAtZ2l0LWRhZW1vbi5zaAppbmRleCBhM2E0ZTQ3Li5mMDFlZGZmIDEwMDc1NQotLS0gYS90L3Q1NTcwLWdpdC1kYWVtb24uc2gKKysrIGIvdC90NTU3MC1naXQtZGFlbW9uLnNoCkBAIC04LDYgKzgsNyBAQAogc3RhcnRfZ2l0X2RhZW1vbgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvc2l0b3J5JyAnCisJZ2l0IGNvbmZpZyBwdXNoLmRlZmF1bHQgbWF0Y2hpbmcgJiYKIAllY2hvIGNvbnRlbnQgPmZpbGUgJiYKIAlnaXQgYWRkIGZpbGUgJiYKIAlnaXQgY29tbWl0IC1tIG9uZQpkaWZmIC0tZ2l0IGEvdC90NTU3MS1wcmUtcHVzaC1ob29rLnNoIGIvdC90NTU3MS1wcmUtcHVzaC1ob29rLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZmOTkxNmEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q1NTcxLXByZS1wdXNoLWhvb2suc2gKQEAgLTAsMCArMSwxMzEgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdjaGVjayBwcmUtcHVzaCBob29rcycKKy4gLi90ZXN0LWxpYi5zaAorCisjIFNldHVwIGhvb2sgdGhhdCBhbHdheXMgc3VjY2VlZHMKK0hPT0tESVI9IiQoZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIpL2hvb2tzIgorSE9PSz0iJEhPT0tESVIvcHJlLXB1c2giCitta2RpciAtcCAiJEhPT0tESVIiCit3cml0ZV9zY3JpcHQgIiRIT09LIiA8PEVPRgorY2F0ID4vZGV2L251bGwKK2V4aXQgMAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJZ2l0IGNvbmZpZyBwdXNoLmRlZmF1bHQgdXBzdHJlYW0gJiYKKwlnaXQgaW5pdCAtLWJhcmUgcmVwbzEgJiYKKwlnaXQgcmVtb3RlIGFkZCBwYXJlbnQxIHJlcG8xICYmCisJdGVzdF9jb21taXQgb25lICYmCisJZ2l0IHB1c2ggcGFyZW50MSBIRUFEOmZvcmVpZ24KKycKK3dyaXRlX3NjcmlwdCAiJEhPT0siIDw8RU9GCitjYXQgPi9kZXYvbnVsbAorZXhpdCAxCitFT0YKKworQ09NTUlUMT0iJChnaXQgcmV2LXBhcnNlIEhFQUQpIgorZXhwb3J0IENPTU1JVDEKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aXRoIGZhaWxpbmcgaG9vaycgJworCXRlc3RfY29tbWl0IHR3byAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIHBhcmVudDEgSEVBRAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW5vLXZlcmlmeSBieXBhc3NlcyBob29rJyAnCisJZ2l0IHB1c2ggLS1uby12ZXJpZnkgcGFyZW50MSBIRUFECisnCisKK0NPTU1JVDI9IiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIKK2V4cG9ydCBDT01NSVQyCisKK3dyaXRlX3NjcmlwdCAiJEhPT0siIDw8J0VPRicKK2VjaG8gIiQxIiA+YWN0dWFsCitlY2hvICIkMiIgPj5hY3R1YWwKK2NhdCA+PmFjdHVhbAorRU9GCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK3BhcmVudDEKK3JlcG8xCityZWZzL2hlYWRzL21hc3RlciAkQ09NTUlUMiByZWZzL2hlYWRzL2ZvcmVpZ24gJENPTU1JVDEKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHdpdGggaG9vaycgJworCWdpdCBwdXNoIHBhcmVudDEgbWFzdGVyOmZvcmVpZ24gJiYKKwlkaWZmIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgYSBicmFuY2gnICcKKwlnaXQgY2hlY2tvdXQgLWIgb3RoZXIgcGFyZW50MS9mb3JlaWduICYmCisJdGVzdF9jb21taXQgdGhyZWUKKycKKworQ09NTUlUMz0iJChnaXQgcmV2LXBhcnNlIEhFQUQpIgorZXhwb3J0IENPTU1JVDMKKworY2F0ID5leHBlY3RlZCA8PEVPRgorcGFyZW50MQorcmVwbzEKK3JlZnMvaGVhZHMvb3RoZXIgJENPTU1JVDMgcmVmcy9oZWFkcy9mb3JlaWduICRDT01NSVQyCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB0byBkZWZhdWx0JyAnCisJZ2l0IHB1c2ggJiYKKwlkaWZmIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8RU9GCitwYXJlbnQxCityZXBvMQorcmVmcy90YWdzL29uZSAkQ09NTUlUMSByZWZzL3RhZ3MvdGFnMSAkX3o0MAorSEVBRH4gJENPTU1JVDIgcmVmcy9oZWFkcy9wcmV2ICRfejQwCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBub24tYnJhbmNoZXMnICcKKwlnaXQgcHVzaCBwYXJlbnQxIG9uZTp0YWcxIEhFQUR+OnJlZnMvaGVhZHMvcHJldiAmJgorCWRpZmYgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKK3BhcmVudDEKK3JlcG8xCisoZGVsZXRlKSAkX3o0MCByZWZzL2hlYWRzL3ByZXYgJENPTU1JVDIKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGRlbGV0ZScgJworCWdpdCBwdXNoIHBhcmVudDEgOnByZXYgJiYKKwlkaWZmIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8RU9GCityZXBvMQorcmVwbzEKK0hFQUQgJENPTU1JVDMgcmVmcy9oZWFkcy9vdGhlciAkX3o0MAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdG8gVVJMJyAnCisJZ2l0IHB1c2ggcmVwbzEgSEVBRCAmJgorCWRpZmYgZXhwZWN0ZWQgYWN0dWFsCisnCisKKyMgVGVzdCB0aGF0IGZpbGxpbmcgcGlwZSBidWZmZXJzIGRvZXNuJ3QgY2F1c2UgZmFpbHVyZQorIyBUb28gc2xvdyB0byBsZWF2ZSBlbmFibGVkIGZvciBnZW5lcmFsIHVzZQoraWYgZmFsc2UKK3RoZW4KKwlwcmludGYgJ3BhcmVudDFcbnJlcG8xXG4nID5leHBlY3RlZAorCW5yPTEwMDAKKwl3aGlsZSB0ZXN0ICRuciAtbHQgMjAwMAorCWRvCisJCW5yPSQoKCAkbnIgKyAxICkpCisJCWdpdCBicmFuY2ggYi8kbnIgJENPTU1JVDMKKwkJZWNobyAicmVmcy9oZWFkcy9iLyRuciAkQ09NTUlUMyByZWZzL2hlYWRzL2IvJG5yICRfejQwIiA+PmV4cGVjdGVkCisJZG9uZQorCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBtYW55IHJlZnMnICcKKwkJZ2l0IHB1c2ggcGFyZW50MSAicmVmcy9oZWFkcy9iLyo6cmVmcy9oZWFkcy9iLyoiICYmCisJCWRpZmYgZXhwZWN0ZWQgYWN0dWFsCisJJworZmkKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NjAxLWNsb25lLnNoIGIvdC90NTYwMS1jbG9uZS5zaAppbmRleCA2Nzg2OWI0Li4wNjI5MTQ5IDEwMDc1NQotLS0gYS90L3Q1NjAxLWNsb25lLnNoCisrKyBiL3QvdDU2MDEtY2xvbmUuc2gKQEAgLTI4MCw0ICsyODAsOSBAQAogCXRlc3RfY21wIGZldGNoLmV4cGVjdGVkIGZldGNoLmFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIE5PVF9NSU5HVyxOT1RfQ1lHV0lOICdjbG9uZSBsb2NhbCBwYXRoIGZvbzpiYXInICcKKwljcCAtUiBzcmMgImZvbzpiYXIiICYmCisJZ2l0IGNsb25lICIuL2ZvbzpiYXIiIGZvb2JhcgorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU3MDAtY2xvbmUtcmVmZXJlbmNlLnNoIGIvdC90NTcwMC1jbG9uZS1yZWZlcmVuY2Uuc2gKaW5kZXggYzQ3ZDQ1MC4uNjUzNzkxMSAxMDA3NTUKLS0tIGEvdC90NTcwMC1jbG9uZS1yZWZlcmVuY2Uuc2gKKysrIGIvdC90NTcwMC1jbG9uZS1yZWZlcmVuY2Uuc2gKQEAgLTU0LDExICs1NCwxNCBAQAogCiBybSAtZiAiJFUuRCIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIHJlZmVyZW5jZSAobm8gLWwgLXMpJyBcCi0nR0lUX0RFQlVHX1NFTkRfUEFDSz0zIGdpdCBjbG9uZSAtLXJlZmVyZW5jZSBCICJmaWxlOi8vJChwd2QpL0EiIEQgMz4iJFUuRCInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIHdpdGggcmVmZXJlbmNlIChubyAtbCAtcyknICcKKwlHSVRfVFJBQ0VfUEFDS0VUPSRVLkQgZ2l0IGNsb25lIC0tcmVmZXJlbmNlIEIgImZpbGU6Ly8kKHB3ZCkvQSIgRAorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaGVkIG5vIG9iamVjdHMnIFwKLSchIGdyZXAgIl53YW50IiAiJFUuRCInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaGVkIG5vIG9iamVjdHMnICcKKwl0ZXN0IC1zICIkVS5EIiAmJgorCSEgZ3JlcCAiIHdhbnQiICIkVS5EIgorJwogCiBjZCAiJGJhc2VfZGlyIgogCkBAIC0xNzMsMTIgKzE3NiwyNiBAQAogCSgKIAkJY2QgSyAmJgogCQlnaXQgcmVtb3RlIGFkZCBKICJmaWxlOi8vJGJhc2VfZGlyL0oiICYmCi0JCUdJVF9ERUJVR19TRU5EX1BBQ0s9MyBnaXQgZmV0Y2ggSiAzPiIkVS5LIgorCQlHSVRfVFJBQ0VfUEFDS0VUPSRVLksgZ2l0IGZldGNoIEoKIAkpICYmCiAJbWFzdGVyX29iamVjdD0kKGNkIEEgJiYgZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJShvYmplY3RuYW1lKSIgcmVmcy9oZWFkcy9tYXN0ZXIpICYmCi0JISBncmVwICJed2FudCAkbWFzdGVyX29iamVjdCIgIiRVLksiICYmCisJdGVzdCAtcyAiJFUuSyIgJiYKKwkhIGdyZXAgIiB3YW50ICRtYXN0ZXJfb2JqZWN0IiAiJFUuSyIgJiYKIAl0YWdfb2JqZWN0PSQoY2QgQSAmJiBnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSIlKG9iamVjdG5hbWUpIiByZWZzL3RhZ3MvSEVBRCkgJiYKLQkhIGdyZXAgIl53YW50ICR0YWdfb2JqZWN0IiAiJFUuSyIKKwkhIGdyZXAgIiB3YW50ICR0YWdfb2JqZWN0IiAiJFUuSyIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmUgdXNpbmcgcmVwbyB3aXRoIGdpdGZpbGUgYXMgYSByZWZlcmVuY2UnICcKKwlnaXQgY2xvbmUgLS1zZXBhcmF0ZS1naXQtZGlyPUwgQSBNICYmCisJZ2l0IGNsb25lIC0tcmVmZXJlbmNlPU0gQSBOICYmCisJZWNobyAiJGJhc2VfZGlyL0wvb2JqZWN0cyIgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRiYXNlX2Rpci9OLy5naXQvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIHVzaW5nIHJlcG8gcG9pbnRlZCBhdCBieSBnaXRmaWxlIGFzIHJlZmVyZW5jZScgJworCWdpdCBjbG9uZSAtLXJlZmVyZW5jZT1NLy5naXQgQSBPICYmCisJZWNobyAiJGJhc2VfZGlyL0wvb2JqZWN0cyIgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRiYXNlX2Rpci9PLy5naXQvb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMiCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTcwMi1jbG9uZS1vcHRpb25zLnNoIGIvdC90NTcwMi1jbG9uZS1vcHRpb25zLnNoCmluZGV4IDAyY2IwMjQuLjg1Y2FkZmEgMTAwNzU1Ci0tLSBhL3QvdDU3MDItY2xvbmUtb3B0aW9ucy5zaAorKysgYi90L3Q1NzAyLWNsb25lLW9wdGlvbnMuc2gKQEAgLTIyLDcgKzIyLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZGlyZWN0ZWQgY2xvbmUnICcKIAogCWdpdCBjbG9uZSAiZmlsZTovLyQocHdkKS9wYXJlbnQiIGNsb25lLXJlZGlyZWN0ZWQgPm91dCAyPmVyciAmJgotCXRlc3QgISAtcyBlcnIKKwl0ZXN0X211c3RfYmVfZW1wdHkgZXJyCiAKICcKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZGlyZWN0ZWQgY2xvbmUgLXYnICcKZGlmZiAtLWdpdCBhL3QvdDU3MDQtYnVuZGxlLnNoIGIvdC90NTcwNC1idW5kbGUuc2gKaW5kZXggOWU0MzczMS4uYTQ1YzMxNiAxMDA3NTUKLS0tIGEvdC90NTcwNC1idW5kbGUuc2gKKysrIGIvdC90NTcwNC1idW5kbGUuc2gKQEAgLTU4LDQgKzU4LDE0IEBACiAJZ3JlcCAiXi1bMC05YS1mXVxcezQwXFx9ICIgYm91bmRhcnkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlcmVxdWlzaXRlcyB3aXRoIGFuIGVtcHR5IGNvbW1pdCBtZXNzYWdlJyAnCisJOiA+ZmlsZTEgJiYKKwlnaXQgYWRkIGZpbGUxICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5LW1lc3NhZ2UgLW0gIiIgJiYKKwl0ZXN0X2NvbW1pdCBmaWxlMiAmJgorCWdpdCBidW5kbGUgY3JlYXRlIGJ1bmRsZSBIRUFEXi4uICYmCisJZ2l0IGJ1bmRsZSB2ZXJpZnkgYnVuZGxlCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTcxMC1pbmZvLWFsdGVybmF0ZS5zaCBiL3QvdDU3MTAtaW5mby1hbHRlcm5hdGUuc2gKaW5kZXggYWEwNDUyOS4uODk1NmMyMSAxMDA3NTUKLS0tIGEvdC90NTcxMC1pbmZvLWFsdGVybmF0ZS5zaAorKysgYi90L3Q1NzEwLWluZm8tYWx0ZXJuYXRlLnNoCkBAIC01OCwxMyArNTgsNyBAQAogZ2l0IGNsb25lIC1sIC1zIEQgRSAmJgogZ2l0IGNsb25lIC1sIC1zIEUgRiAmJgogZ2l0IGNsb25lIC1sIC1zIEYgRyAmJgotZ2l0IGNsb25lIC1sIC1zIEcgSCcKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW52YWxpZGl0eSBvZiBkZWVwZXN0IHJlcG9zaXRvcnknIFwKLSdjZCBIICYmIHsKLQl0ZXN0X3ZhbGlkX3JlcG8KLQl0ZXN0ICQ/IC1uZSAwCi19JwordGVzdF9tdXN0X2ZhaWwgZ2l0IGNsb25lIC0tYmFyZSAtbCAtcyBHIEgnCiAKIGNkICIkYmFzZV9kaXIiCiAKZGlmZiAtLWdpdCBhL3QvdDU4MDAtcmVtb3RlLWhlbHBlcnMuc2ggYi90L3Q1ODAwLXJlbW90ZS10ZXN0cHkuc2gKc2ltaWxhcml0eSBpbmRleCA3NCUKcmVuYW1lIGZyb20gdC90NTgwMC1yZW1vdGUtaGVscGVycy5zaApyZW5hbWUgdG8gdC90NTgwMC1yZW1vdGUtdGVzdHB5LnNoCmluZGV4IGU3ZGM2NjguLjFlNjgzZDQgMTAwNzU1Ci0tLSBhL3QvdDU4MDAtcmVtb3RlLWhlbHBlcnMuc2gKKysrIGIvdC90NTgwMC1yZW1vdGUtdGVzdHB5LnNoCkBAIC0zLDEyICszLDEyIEBACiAjIENvcHlyaWdodCAoYykgMjAxMCBTdmVycmUgUmFiYmVsaWVyCiAjCiAKLXRlc3RfZGVzY3JpcHRpb249J1Rlc3QgcmVtb3RlLWhlbHBlciBpbXBvcnQgYW5kIGV4cG9ydCBjb21tYW5kcycKK3Rlc3RfZGVzY3JpcHRpb249J1Rlc3QgcHl0aG9uIHJlbW90ZS1oZWxwZXIgZnJhbWV3b3JrJwogCiAuIC4vdGVzdC1saWIuc2gKIAogaWYgISB0ZXN0X2hhdmVfcHJlcmVxIFBZVEhPTiA7IHRoZW4KLQlza2lwX2FsbD0nc2tpcHBpbmcgZ2l0LXJlbW90ZS1oZyB0ZXN0cywgcHl0aG9uIG5vdCBhdmFpbGFibGUnCisJc2tpcF9hbGw9J3NraXBwaW5nIHB5dGhvbiByZW1vdGUtaGVscGVyIHRlc3RzLCBweXRob24gbm90IGF2YWlsYWJsZScKIAl0ZXN0X2RvbmUKIGZpCiAKQEAgLTE3LDcgKzE3LDcgQEAKIGlmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA0MDAwMDoKICAgICBzeXMuZXhpdCgxKQogJyB8fCB7Ci0Jc2tpcF9hbGw9J3NraXBwaW5nIGdpdC1yZW1vdGUtaGcgdGVzdHMsIHB5dGhvbiB2ZXJzaW9uIDwgMi40JworCXNraXBfYWxsPSdza2lwcGluZyBweXRob24gcmVtb3RlLWhlbHBlciB0ZXN0cywgcHl0aG9uIHZlcnNpb24gPCAyLjQnCiAJdGVzdF9kb25lCiB9CiAKQEAgLTM4LDEyICszOCwxMiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIGZyb20gbG9jYWwgcmVwbycgJwotCWdpdCBjbG9uZSAidGVzdGdpdDo6JHtQV0R9L3NlcnZlciIgbG9jYWxjbG9uZSAmJgorCWdpdCBjbG9uZSAidGVzdHB5Ojoke1BXRH0vc2VydmVyIiBsb2NhbGNsb25lICYmCiAJdGVzdF9jbXAgcHVibGljL2ZpbGUgbG9jYWxjbG9uZS9maWxlCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25pbmcgZnJvbSByZW1vdGUgcmVwbycgJwotCWdpdCBjbG9uZSAidGVzdGdpdDo6ZmlsZTovLyR7UFdEfS9zZXJ2ZXIiIGNsb25lICYmCisJZ2l0IGNsb25lICJ0ZXN0cHk6OmZpbGU6Ly8ke1BXRH0vc2VydmVyIiBjbG9uZSAmJgogCXRlc3RfY21wIHB1YmxpYy9maWxlIGNsb25lL2ZpbGUKICcKIApAQCAtNzMsMTEgKzczLDExIEBACiAnCiAKICMgR2VuZXJhbGx5LCBza2lwIHRoaXMgdGVzdC4gIEl0IGRlbW9uc3RyYXRlcyBhIG5vdy1maXhlZCByYWNlIGluCi0jIGdpdC1yZW1vdGUtdGVzdGdpdCwgYnV0IGlzIHRvbyBzbG93IHRvIGxlYXZlIGluIGZvciBnZW5lcmFsIHVzZS4KKyMgZ2l0LXJlbW90ZS10ZXN0cHksIGJ1dCBpcyB0b28gc2xvdyB0byBsZWF2ZSBpbiBmb3IgZ2VuZXJhbCB1c2UuCiA6IHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JhY2lseSBwdXNoaW5nIHRvIGxvY2FsIHJlcG8nICcKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBzZXJ2ZXIyIGxvY2FsY2xvbmUyIiAmJgogCWNwIC1SIHNlcnZlciBzZXJ2ZXIyICYmCi0JZ2l0IGNsb25lICJ0ZXN0Z2l0Ojoke1BXRH0vc2VydmVyMiIgbG9jYWxjbG9uZTIgJiYKKwlnaXQgY2xvbmUgInRlc3RweTo6JHtQV0R9L3NlcnZlcjIiIGxvY2FsY2xvbmUyICYmCiAJKGNkIGxvY2FsY2xvbmUyICYmCiAJZWNobyBjb250ZW50ID4+ZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gdGhyZWUgJiYKQEAgLTE0NSw0ICsxNDUsMjUgQEAKIAljb21wYXJlX3JlZnMgY2xvbmUgSEVBRCBzZXJ2ZXIgcmVmcy9oZWFkcy9uZXctcmVmc3BlYwogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9wZXIgZmFpbHVyZSBjaGVja3MgZm9yIGZldGNoaW5nJyAnCisJKEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFPTEgJiYKKwlleHBvcnQgR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUgJiYKKwljZCBsb2NhbGNsb25lICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZldGNoIDI+JjEgfCBcCisJCWdyZXAgIkVycm9yIHdoaWxlIHJ1bm5pbmcgZmFzdC1pbXBvcnQiCisJKQorJworCisjIFdlIHNsZWVwIHRvIGdpdmUgZmFzdC1leHBvcnQgYSBjaGFuY2UgdG8gY2F0Y2ggdGhlIFNJR1BJUEUKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3Byb3BlciBmYWlsdXJlIGNoZWNrcyBmb3IgcHVzaGluZycgJworCShHSVRfUkVNT1RFX1RFU1RHSVRfRkFJTFVSRT0xICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1NMRUVQWT0xICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9TTEVFUFkgJiYKKwljZCBsb2NhbGNsb25lICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLS1hbGwgMj4mMSB8IFwKKwkJZ3JlcCAiRXJyb3Igd2hpbGUgcnVubmluZyBmYXN0LWV4cG9ydCIKKwkpCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NTgwMS1yZW1vdGUtaGVscGVycy5zaCBiL3QvdDU4MDEtcmVtb3RlLWhlbHBlcnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGM0YzUzOQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDU4MDEtcmVtb3RlLWhlbHBlcnMuc2gKQEAgLTAsMCArMSwyMzEgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTAgU3ZlcnJlIFJhYmJlbGllcgorIworCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHJlbW90ZS1oZWxwZXIgaW1wb3J0IGFuZCBleHBvcnQgY29tbWFuZHMnCisKKy4gLi90ZXN0LWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9saWItZ3BnLnNoCisKK2NvbXBhcmVfcmVmcygpIHsKKwlnaXQgLS1naXQtZGlyPSIkMS8uZ2l0IiByZXYtcGFyc2UgLS12ZXJpZnkgJDIgPmV4cGVjdCAmJgorCWdpdCAtLWdpdC1kaXI9IiQzLy5naXQiIHJldi1wYXJzZSAtLXZlcmlmeSAkNCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXBvc2l0b3J5JyAnCisJZ2l0IGluaXQgc2VydmVyICYmCisJKGNkIHNlcnZlciAmJgorCSBlY2hvIGNvbnRlbnQgPmZpbGUgJiYKKwkgZ2l0IGFkZCBmaWxlICYmCisJIGdpdCBjb21taXQgLW0gb25lKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIGZyb20gbG9jYWwgcmVwbycgJworCWdpdCBjbG9uZSAidGVzdGdpdDo6JHtQV0R9L3NlcnZlciIgbG9jYWwgJiYKKwl0ZXN0X2NtcCBzZXJ2ZXIvZmlsZSBsb2NhbC9maWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBuZXcgY29tbWl0IG9uIHJlbW90ZScgJworCShjZCBzZXJ2ZXIgJiYKKwkgZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCSBnaXQgY29tbWl0IC1hIC1tIHR3bykKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbGluZyBmcm9tIGxvY2FsIHJlcG8nICcKKwkoY2QgbG9jYWwgJiYgZ2l0IHB1bGwpICYmCisJdGVzdF9jbXAgc2VydmVyL2ZpbGUgbG9jYWwvZmlsZQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoaW5nIHRvIGxvY2FsIHJlcG8nICcKKwkoY2QgbG9jYWwgJiYKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGNvbW1pdCAtYSAtbSB0aHJlZSAmJgorCWdpdCBwdXNoKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbCBIRUFEIHNlcnZlciBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIG5ldyBicmFuY2gnICcKKwkoY2Qgc2VydmVyICYmCisJIGdpdCByZXNldCAtLWhhcmQgJiYKKwkgZ2l0IGNoZWNrb3V0IC1iIG5ldyAmJgorCSBlY2hvIGNvbnRlbnQgPj5maWxlICYmCisJIGdpdCBjb21taXQgLWEgLW0gZml2ZQorCSkgJiYKKwkoY2QgbG9jYWwgJiYKKwkgZ2l0IGZldGNoIG9yaWdpbiBuZXcKKwkpICYmCisJY29tcGFyZV9yZWZzIHNlcnZlciBIRUFEIGxvY2FsIEZFVENIX0hFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggbXVsdGlwbGUgYnJhbmNoZXMnICcKKwkoY2QgbG9jYWwgJiYKKwkgZ2l0IGZldGNoCisJKSAmJgorCWNvbXBhcmVfcmVmcyBzZXJ2ZXIgbWFzdGVyIGxvY2FsIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyICYmCisJY29tcGFyZV9yZWZzIHNlcnZlciBuZXcgbG9jYWwgcmVmcy9yZW1vdGVzL29yaWdpbi9uZXcKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB3aGVuIHJlbW90ZSBoYXMgZXh0cmEgcmVmcycgJworCShjZCBsb2NhbCAmJgorCSBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXIgJiYKKwkgZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCSBnaXQgY29tbWl0IC1hIC1tIHNpeCAmJgorCSBnaXQgcHVzaAorCSkgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwgbWFzdGVyIHNlcnZlciBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCBuZXcgYnJhbmNoIGJ5IG5hbWUnICcKKwkoY2QgbG9jYWwgJiYKKwkgZ2l0IGNoZWNrb3V0IC1iIG5ldy1uYW1lICAmJgorCSBlY2hvIGNvbnRlbnQgPj5maWxlICYmCisJIGdpdCBjb21taXQgLWEgLW0gc2V2ZW4gJiYKKwkgZ2l0IHB1c2ggb3JpZ2luIG5ldy1uYW1lCisJKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbCBIRUFEIHNlcnZlciByZWZzL2hlYWRzL25ldy1uYW1lCisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3B1c2ggbmV3IGJyYW5jaCB3aXRoIG9sZDpuZXcgcmVmc3BlYycgJworCShjZCBsb2NhbCAmJgorCSBnaXQgcHVzaCBvcmlnaW4gbmV3LW5hbWU6bmV3LXJlZnNwZWMKKwkpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsIEhFQUQgc2VydmVyIHJlZnMvaGVhZHMvbmV3LXJlZnNwZWMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRob3V0IHJlZnNwZWMnICcKKwlHSVRfUkVNT1RFX1RFU1RHSVRfUkVGU1BFQz0iIiBcCisJZ2l0IGNsb25lICJ0ZXN0Z2l0Ojoke1BXRH0vc2VydmVyIiBsb2NhbDIgMj5lcnJvciAmJgorCWdyZXAgIlRoaXMgcmVtb3RlIGhlbHBlciBzaG91bGQgaW1wbGVtZW50IHJlZnNwZWMgY2FwYWJpbGl0eSIgZXJyb3IgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwyIEhFQUQgc2VydmVyIEhFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbGluZyB3aXRob3V0IHJlZnNwZWNzJyAnCisJKGNkIGxvY2FsMiAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlHSVRfUkVNT1RFX1RFU1RHSVRfUkVGU1BFQz0iIiBnaXQgcHVsbCAyPi4uL2Vycm9yKSAmJgorCWdyZXAgIlRoaXMgcmVtb3RlIGhlbHBlciBzaG91bGQgaW1wbGVtZW50IHJlZnNwZWMgY2FwYWJpbGl0eSIgZXJyb3IgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwyIEhFQUQgc2VydmVyIEhFQUQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaGluZyB3aXRob3V0IHJlZnNwZWNzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICIoY2QgbG9jYWwyICYmIGdpdCByZXNldCAtLWhhcmQgb3JpZ2luKSIgJiYKKwkoY2QgbG9jYWwyICYmCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gdGVuICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUM9IiIgJiYKKwlleHBvcnQgR0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUMgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcHVzaCAyPi4uL2Vycm9yKSAmJgorCWdyZXAgInJlbW90ZS1oZWxwZXIgZG9lc24udCBzdXBwb3J0IHB1c2g7IHJlZnNwZWMgbmVlZGVkIiBlcnJvcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdWxsaW5nIHdpdGhvdXQgbWFya3MnICcKKwkoY2QgbG9jYWwyICYmCisJR0lUX1JFTU9URV9URVNUR0lUX05PX01BUktTPTEgZ2l0IHB1bGwpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsMiBIRUFEIHNlcnZlciBIRUFECisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3B1c2hpbmcgd2l0aG91dCBtYXJrcycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAiKGNkIGxvY2FsMiAmJiBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbikiICYmCisJKGNkIGxvY2FsMiAmJgorCWVjaG8gY29udGVudCA+PmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHR3ZWx2ZSAmJgorCUdJVF9SRU1PVEVfVEVTVEdJVF9OT19NQVJLUz0xIGdpdCBwdXNoKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbDIgSEVBRCBzZXJ2ZXIgSEVBRAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIGFsbCB3aXRoIGV4aXN0aW5nIG9iamVjdCcgJworCShjZCBsb2NhbCAmJgorCWdpdCBicmFuY2ggZHVwMiBtYXN0ZXIgJiYKKwlnaXQgcHVzaCBvcmlnaW4gLS1hbGwKKwkpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsIGR1cDIgc2VydmVyIGR1cDIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCByZWYgd2l0aCBleGlzdGluZyBvYmplY3QnICcKKwkoY2QgbG9jYWwgJiYKKwlnaXQgYnJhbmNoIGR1cCBtYXN0ZXIgJiYKKwlnaXQgcHVzaCBvcmlnaW4gZHVwCisJKSAmJgorCWNvbXBhcmVfcmVmcyBsb2NhbCBkdXAgc2VydmVyIGR1cAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAncHVzaCBzaWduZWQgdGFnJyAnCisJKGNkIGxvY2FsICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWdpdCB0YWcgLXMgLW0gc2lnbmVkLXRhZyBzaWduZWQtdGFnICYmCisJZ2l0IHB1c2ggb3JpZ2luIHNpZ25lZC10YWcKKwkpICYmCisJY29tcGFyZV9yZWZzIGxvY2FsIHNpZ25lZC10YWdee30gc2VydmVyIHNpZ25lZC10YWdee30gJiYKKwl0ZXN0X211c3RfZmFpbCBjb21wYXJlX3JlZnMgbG9jYWwgc2lnbmVkLXRhZyBzZXJ2ZXIgc2lnbmVkLXRhZworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAncHVzaCBzaWduZWQgdGFnIHdpdGggc2lnbmVkLXRhZ3MgY2FwYWJpbGl0eScgJworCShjZCBsb2NhbCAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgdGFnIC1zIC1tIHNpZ25lZC10YWcgc2lnbmVkLXRhZy0yICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1NJR05FRF9UQUdTPTEgZ2l0IHB1c2ggb3JpZ2luIHNpZ25lZC10YWctMgorCSkgJiYKKwljb21wYXJlX3JlZnMgbG9jYWwgc2lnbmVkLXRhZy0yIHNlcnZlciBzaWduZWQtdGFnLTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB1cGRhdGUgcmVmcycgJworCShjZCBsb2NhbCAmJgorCWdpdCBjaGVja291dCAtYiB1cGRhdGUgbWFzdGVyICYmCisJZWNobyB1cGRhdGUgPj5maWxlICYmCisJZ2l0IGNvbW1pdCAtYSAtbSB1cGRhdGUgJiYKKwlnaXQgcHVzaCBvcmlnaW4gdXBkYXRlICYmCisJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZW1vdGVzL29yaWdpbi91cGRhdGUgPmV4cGVjdCAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGVzdGdpdC9vcmlnaW4vaGVhZHMvdXBkYXRlID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIHVwZGF0ZSByZWZzIGZhaWx1cmUnICcKKwkoY2QgbG9jYWwgJiYKKwlnaXQgY2hlY2tvdXQgdXBkYXRlICYmCisJZWNobyAidXBkYXRlIGZhaWwiID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gInVwZGF0ZSBmYWlsIiAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGVzdGdpdC9vcmlnaW4vaGVhZHMvdXBkYXRlID5leHBlY3QgJiYKKwlHSVRfUkVNT1RFX1RFU1RHSVRfUFVTSF9FUlJPUj0ibm9uLWZhc3QgZm9yd2FyZCIgJiYKKwlleHBvcnQgR0lUX1JFTU9URV9URVNUR0lUX1BVU0hfRVJST1IgJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHB1c2ggb3JpZ2luIHVwZGF0ZSAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgdGVzdGdpdC9vcmlnaW4vaGVhZHMvdXBkYXRlID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9wZXIgZmFpbHVyZSBjaGVja3MgZm9yIGZldGNoaW5nJyAnCisJKEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFPTEgJiYKKwlleHBvcnQgR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUgJiYKKwljZCBsb2NhbCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBmZXRjaCAyPiBlcnJvciAmJgorCWNhdCBlcnJvciAmJgorCWdyZXAgLXEgIkVycm9yIHdoaWxlIHJ1bm5pbmcgZmFzdC1pbXBvcnQiIGVycm9yCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9wZXIgZmFpbHVyZSBjaGVja3MgZm9yIHB1c2hpbmcnICcKKwkoR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkU9MSAmJgorCWV4cG9ydCBHSVRfUkVNT1RFX1RFU1RHSVRfRkFJTFVSRSAmJgorCWNkIGxvY2FsICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggLS1hbGwKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggbWVzc2FnZXMnICcKKwkoY2QgbG9jYWwgJiYKKwlnaXQgY2hlY2tvdXQgLWIgbmV3X2JyYW5jaCBtYXN0ZXIgJiYKKwllY2hvIG5ldyA+PmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIG5ldyAmJgorCWdpdCBwdXNoIG9yaWdpbiBuZXdfYnJhbmNoICYmCisJZ2l0IGZldGNoIG9yaWdpbiAmJgorCWVjaG8gbmV3ID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gbmV3ICYmCisJZ2l0IHB1c2ggb3JpZ2luIG5ld19icmFuY2ggMj4gbXNnICYmCisJISBncmVwICJcW25ldyBicmFuY2hcXSIgbXNnCisJKQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYwMDYtcmV2LWxpc3QtZm9ybWF0LnNoIGIvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2gKaW5kZXggZjk0ZjBjNC4uMDM5M2M5ZiAxMDA3NTUKLS0tIGEvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2gKKysrIGIvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2gKQEAgLTMsNiArMyw3IEBACiB0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgcmV2LWxpc3QgLS1wcmV0dHk9Zm9ybWF0IHRlc3QnCiAKIC4gLi90ZXN0LWxpYi5zaAorLiAiJFRFU1RfRElSRUNUT1JZIi9saWItdGVybWluYWwuc2gKIAogdGVzdF90aWNrCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwpAQCAtMTEsMTIgKzEyLDI0IEBACiAnCiAKICMgdXNhZ2U6IHRlc3RfZm9ybWF0IG5hbWUgZm9ybWF0X3N0cmluZyA8ZXhwZWN0ZWRfb3V0cHV0Ci10ZXN0X2Zvcm1hdCgpIHsKK3Rlc3RfZm9ybWF0ICgpIHsKIAljYXQgPmV4cGVjdC4kMQogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImZvcm1hdCAkMSIgIgotZ2l0IHJldi1saXN0IC0tcHJldHR5PWZvcm1hdDonJDInIG1hc3RlciA+b3V0cHV0LiQxICYmCi10ZXN0X2NtcCBleHBlY3QuJDEgb3V0cHV0LiQxCi0iCisJCWdpdCByZXYtbGlzdCAtLXByZXR0eT1mb3JtYXQ6JyQyJyBtYXN0ZXIgPm91dHB1dC4kMSAmJgorCQl0ZXN0X2NtcCBleHBlY3QuJDEgb3V0cHV0LiQxCisJIgorfQorCisjIEZlZWQgdG8gLS1mb3JtYXQgdG8gcHJvdmlkZSBwcmVkaWN0YWJsZSBjb2xvcmVkIHNlcXVlbmNlcy4KK0FVVE9fQ09MT1I9JyVDKGF1dG8scmVkKWZvbyVDKGF1dG8scmVzZXQpJworaGFzX2NvbG9yICgpIHsKKwlwcmludGYgJ1wwMzNbMzFtZm9vXDAzM1ttXG4nID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgIiQxIgorfQorCitoYXNfbm9fY29sb3IgKCkgeworCWVjaG8gZm9vID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgIiQxIgogfQogCiB0ZXN0X2Zvcm1hdCBwZXJjZW50ICUlaCA8PCdFT0YnCkBAIC0xMjQsMTIgKzEzNyw1NCBAQAogG1sxOzMxOzQzbWZvbxtbbQogRU9GCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyVDKGF1dG8pIGRvZXMgbm90IGVuYWJsZSBjb2xvciBieSBkZWZhdWx0JyAnCisJZ2l0IGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSA+YWN0dWFsICYmCisJaGFzX25vX2NvbG9yIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICclQyhhdXRvKSBlbmFibGVzIGNvbG9ycyBmb3IgY29sb3IuZGlmZicgJworCWdpdCAtYyBjb2xvci5kaWZmPWFsd2F5cyBsb2cgLS1mb3JtYXQ9JEFVVE9fQ09MT1IgLTEgPmFjdHVhbCAmJgorCWhhc19jb2xvciBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnJUMoYXV0bykgZW5hYmxlcyBjb2xvcnMgZm9yIGNvbG9yLnVpJyAnCisJZ2l0IC1jIGNvbG9yLnVpPWFsd2F5cyBsb2cgLS1mb3JtYXQ9JEFVVE9fQ09MT1IgLTEgPmFjdHVhbCAmJgorCWhhc19jb2xvciBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnJUMoYXV0bykgcmVzcGVjdHMgLS1jb2xvcicgJworCWdpdCBsb2cgLS1mb3JtYXQ9JEFVVE9fQ09MT1IgLTEgLS1jb2xvciA+YWN0dWFsICYmCisJaGFzX2NvbG9yIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICclQyhhdXRvKSByZXNwZWN0cyAtLW5vLWNvbG9yJyAnCisJZ2l0IC1jIGNvbG9yLnVpPWFsd2F5cyBsb2cgLS1mb3JtYXQ9JEFVVE9fQ09MT1IgLTEgLS1uby1jb2xvciA+YWN0dWFsICYmCisJaGFzX25vX2NvbG9yIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFRUWSAnJUMoYXV0bykgcmVzcGVjdHMgLS1jb2xvcj1hdXRvIChzdGRvdXQgaXMgdHR5KScgJworCSgKKwkJVEVSTT12dDEwMCAmJiBleHBvcnQgVEVSTSAmJgorCQl0ZXN0X3Rlcm1pbmFsIFwKKwkJCWdpdCBsb2cgLS1mb3JtYXQ9JEFVVE9fQ09MT1IgLTEgLS1jb2xvcj1hdXRvID5hY3R1YWwgJiYKKwkJaGFzX2NvbG9yIGFjdHVhbAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnJUMoYXV0bykgcmVzcGVjdHMgLS1jb2xvcj1hdXRvIChzdGRvdXQgbm90IHR0eSknICcKKwkoCisJCVRFUk09dnQxMDAgJiYgZXhwb3J0IFRFUk0gJiYKKwkJZ2l0IGxvZyAtLWZvcm1hdD0kQVVUT19DT0xPUiAtMSAtLWNvbG9yPWF1dG8gPmFjdHVhbCAmJgorCQloYXNfbm9fY29sb3IgYWN0dWFsCisJKQorJworCiBjYXQgPmNvbW1pdC1tc2cgPDwnRU9GJwogVGVzdCBwcmludGluZyBvZiBjb21wbGV4IGJvZGllcwogCiBUaGlzIGNvbW1pdCBtZXNzYWdlIGlzIG11Y2ggbG9uZ2VyIHRoYW4gdGhlIG90aGVycywKIGFuZCBpdCB3aWxsIGJlIGVuY29kZWQgaW4gaXNvODg1OS0xLiBXZSBzaG91bGQgdGhlcmVmb3JlCi1pbmNsdWRlIGFuIGlzbzg4NTkgY2hhcmFjdGVyOiDCoWJ1ZW5vIQoraW5jbHVkZSBhbiBpc284ODU5IGNoYXJhY3RlcjogoWJ1ZW5vIQogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBjb21wbGV4IGJvZHknICcKIGdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBpc284ODU5LTEgJiYKQEAgLTEzNywxNCArMTkyLDE0IEBACiAnCiAKIHRlc3RfZm9ybWF0IGNvbXBsZXgtZW5jb2RpbmcgJWUgPDwnRU9GJwotY29tbWl0IGY1OGRiNzBiMDU1YzU3MTg2MzFlNWM2MTUyOGIyOGIxMjA5MGNkZWEKK2NvbW1pdCAxZWQ4OGRhNGE1YjVlZDhjNDQ5MTE0YWMxMzFlZmM2MjE3ODczNGMzCiBpc284ODU5LTEKIGNvbW1pdCAxMzFhMzEwZWI5MTNkMTA3ZGQzYzA5YTY1ZDE2NTExNzU4OTg3MzVkCiBjb21taXQgODZjNzVjZmQ3MDhhMGU1ODY4ZGM4NzZlZDViOGJiNjZjODBiNDg3MwogRU9GCiAKIHRlc3RfZm9ybWF0IGNvbXBsZXgtc3ViamVjdCAlcyA8PCdFT0YnCi1jb21taXQgZjU4ZGI3MGIwNTVjNTcxODYzMWU1YzYxNTI4YjI4YjEyMDkwY2RlYQorY29tbWl0IDFlZDg4ZGE0YTViNWVkOGM0NDkxMTRhYzEzMWVmYzYyMTc4NzM0YzMKIFRlc3QgcHJpbnRpbmcgb2YgY29tcGxleCBib2RpZXMKIGNvbW1pdCAxMzFhMzEwZWI5MTNkMTA3ZGQzYzA5YTY1ZDE2NTExNzU4OTg3MzVkCiBjaGFuZ2VkIGZvbwpAQCAtMTUzLDE3ICsyMDgsMTcgQEAKIEVPRgogCiB0ZXN0X2Zvcm1hdCBjb21wbGV4LWJvZHkgJWIgPDwnRU9GJwotY29tbWl0IGY1OGRiNzBiMDU1YzU3MTg2MzFlNWM2MTUyOGIyOGIxMjA5MGNkZWEKK2NvbW1pdCAxZWQ4OGRhNGE1YjVlZDhjNDQ5MTE0YWMxMzFlZmM2MjE3ODczNGMzCiBUaGlzIGNvbW1pdCBtZXNzYWdlIGlzIG11Y2ggbG9uZ2VyIHRoYW4gdGhlIG90aGVycywKIGFuZCBpdCB3aWxsIGJlIGVuY29kZWQgaW4gaXNvODg1OS0xLiBXZSBzaG91bGQgdGhlcmVmb3JlCi1pbmNsdWRlIGFuIGlzbzg4NTkgY2hhcmFjdGVyOiDCoWJ1ZW5vIQoraW5jbHVkZSBhbiBpc284ODU5IGNoYXJhY3RlcjogoWJ1ZW5vIQogCiBjb21taXQgMTMxYTMxMGViOTEzZDEwN2RkM2MwOWE2NWQxNjUxMTc1ODk4NzM1ZAogY29tbWl0IDg2Yzc1Y2ZkNzA4YTBlNTg2OGRjODc2ZWQ1YjhiYjY2YzgwYjQ4NzMKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICcleDAwIHNob3dzIE5VTCcgJwotCWVjaG8gID5leHBlY3QgY29tbWl0IGY1OGRiNzBiMDU1YzU3MTg2MzFlNWM2MTUyOGIyOGIxMjA5MGNkZWEgJiYKKwllY2hvICA+ZXhwZWN0IGNvbW1pdCAxZWQ4OGRhNGE1YjVlZDhjNDQ5MTE0YWMxMzFlZmM2MjE3ODczNGMzICYmCiAJZWNobyA+PmV4cGVjdCBmb29RYmFyICYmCiAJZ2l0IHJldi1saXN0IC0xIC0tZm9ybWF0PWZvbyV4MDBiYXIgSEVBRCA+YWN0dWFsLm51bCAmJgogCW51bF90b19xIDxhY3R1YWwubnVsID5hY3R1YWwgJiYKZGlmZiAtLWdpdCBhL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2ggYi90L3Q2MDEyLXJldi1saXN0LXNpbXBsaWZ5LnNoCmluZGV4IDgzOWFkOTcuLjU3Y2UyMzkgMTAwNzU1Ci0tLSBhL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2gKKysrIGIvdC90NjAxMi1yZXYtbGlzdC1zaW1wbGlmeS5zaApAQCAtMTQsMjEgKzE0LDI0IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwogCWVjaG8gIkhpIHRoZXJlIiA+ZmlsZSAmJgotCWdpdCBhZGQgZmlsZSAmJgotCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJJbml0aWFsIGZpbGUiICYmCisJZWNobyAiaW5pdGlhbCIgPmxvc3QgJiYKKwlnaXQgYWRkIGZpbGUgbG9zdCAmJgorCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJJbml0aWFsIGZpbGUgYW5kIGxvc3QiICYmCiAJbm90ZSBBICYmCiAKIAlnaXQgYnJhbmNoIG90aGVyLWJyYW5jaCAmJgogCiAJZWNobyAiSGVsbG8iID5maWxlICYmCi0JZ2l0IGFkZCBmaWxlICYmCi0JdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIk1vZGlmaWVkIGZpbGUiICYmCisJZWNobyAic2Vjb25kIiA+bG9zdCAmJgorCWdpdCBhZGQgZmlsZSBsb3N0ICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIk1vZGlmaWVkIGZpbGUgYW5kIGxvc3QiICYmCiAJbm90ZSBCICYmCiAKIAlnaXQgY2hlY2tvdXQgb3RoZXItYnJhbmNoICYmCiAKIAllY2hvICJIZWxsbyIgPmZpbGUgJiYKLQlnaXQgYWRkIGZpbGUgJiYKKwk+bG9zdCAmJgorCWdpdCBhZGQgZmlsZSBsb3N0ICYmCiAJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIk1vZGlmaWVkIHRoZSBmaWxlIGlkZW50aWNhbGx5IiAmJgogCW5vdGUgQyAmJgogCkBAIC0zNyw3ICs0MCw5IEBACiAJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIkFkZCBhbm90aGVyIGZpbGUiICYmCiAJbm90ZSBEICYmCiAKLQl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC1tICJtZXJnZSIgbWFzdGVyICYmCisJdGVzdF90aWNrICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC1tICJtZXJnZSIgbWFzdGVyICYmCisJPmxvc3QgJiYgZ2l0IGNvbW1pdCAtYSAtbSAibWVyZ2UiICYmCiAJbm90ZSBFICYmCiAKIAllY2hvICJZZXQgYW5vdGhlciIgPmVsaWYgJiYKQEAgLTU2LDE5ICs2MSwzNyBAQAogCiAJZWNobyAiRmluYWwgY2hhbmdlIiA+ZmlsZSAmJgogCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1hIC1tICJGaW5hbCBjaGFuZ2UiICYmCi0Jbm90ZSBJCisJbm90ZSBJICYmCisKKwlnaXQgc3ltYm9saWMtcmVmIEhFQUQgcmVmcy9oZWFkcy91bnJlbGF0ZWQgJiYKKwlnaXQgcm0gLWYgIioiICYmCisJZWNobyAiVW5yZWxhdGVkIGJyYW5jaCIgPnNpZGUgJiYKKwlnaXQgYWRkIHNpZGUgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiU2lkZSByb290IiAmJgorCW5vdGUgSiAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCXRlc3RfdGljayAmJiBnaXQgbWVyZ2UgLW0gIkNvb2xlc3QiIHVucmVsYXRlZCAmJgorCW5vdGUgSyAmJgorCisJZWNobyAiSW1tYXRlcmlhbCIgPmVsaWYgJiYKKwlnaXQgYWRkIGVsaWYgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTGFzdCIgJiYKKwlub3RlIEwKICcKIAogRk1UPSd0Zm9ybWF0OiVQIAklSCB8ICVzJwogCi1jaGVja19yZXN1bHQgKCkgeworY2hlY2tfb3V0Y29tZSAoKSB7CisJb3V0Y29tZT0kMQorCXNoaWZ0CiAJZm9yIGMgaW4gJDEKIAlkbwogCQllY2hvICIkYyIKIAlkb25lID5leHBlY3QgJiYKIAlzaGlmdCAmJgogCXBhcmFtPSIkKiIgJiYKLQl0ZXN0X2V4cGVjdF9zdWNjZXNzICJsb2cgJHBhcmFtIiAnCisJdGVzdF9leHBlY3RfJG91dGNvbWUgImxvZyAkcGFyYW0iICcKIAkJZ2l0IGxvZyAtLXByZXR0eT0iJEZNVCIgLS1wYXJlbnRzICRwYXJhbSB8CiAJCXVubm90ZSA+YWN0dWFsICYmCiAJCXNlZCAtZSAicy9eLioJXChbXiBdKlwpIC4qL1wxLyIgPmNoZWNrIDxhY3R1YWwgJiYKQEAgLTc5LDEzICsxMDIsMjkgQEAKIAknCiB9CiAKLWNoZWNrX3Jlc3VsdCAnSSBIIEcgRiBFIEQgQyBCIEEnIC0tZnVsbC1oaXN0b3J5Ci1jaGVja19yZXN1bHQgJ0kgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCi1jaGVja19yZXN1bHQgJ0kgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLXRvcG8tb3JkZXIgLS0gZmlsZQotY2hlY2tfcmVzdWx0ICdJIEggRSBDIEIgQScgLS1mdWxsLWhpc3RvcnkgLS1kYXRlLW9yZGVyIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAoKSB7CisJY2hlY2tfb3V0Y29tZSBzdWNjZXNzICIkQCIKK30KKworY2hlY2tfcmVzdWx0ICdMIEsgSiBJIEggRyBGIEUgRCBDIEIgQScgLS1mdWxsLWhpc3RvcnkKK2NoZWNrX3Jlc3VsdCAnSyBJIEggRSBDIEIgQScgLS1mdWxsLWhpc3RvcnkgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdLIEkgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLXRvcG8tb3JkZXIgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdLIEkgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLWRhdGUtb3JkZXIgLS0gZmlsZQogY2hlY2tfcmVzdWx0ICdJIEUgQyBCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKIGNoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tIGZpbGUKIGNoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tdG9wby1vcmRlciAtLSBmaWxlCiBjaGVja19yZXN1bHQgJ0gnIC0tZmlyc3QtcGFyZW50IC0tIGFub3RoZXItZmlsZQogCitjaGVja19yZXN1bHQgJ0UgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IEUgLS0gbG9zdAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZnVsbCBoaXN0b3J5IHNpbXBsaWZpY2F0aW9uIHdpdGhvdXQgcGFyZW50JyAnCisJcHJpbnRmICIlc1xuIiBFIEMgQiBBID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tcHJldHR5PSIkRk1UIiAtLWZ1bGwtaGlzdG9yeSBFIC0tIGxvc3QgfAorCXVubm90ZSA+YWN0dWFsICYmCisJc2VkIC1lICJzL14uKglcKFteIF0qXCkgLiovXDEvIiA+Y2hlY2sgPGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBjaGVjayB8fCB7CisJCWNhdCBhY3R1YWwKKwkJZmFsc2UKKwl9CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAxOS1yZXYtbGlzdC1hbmNlc3RyeS1wYXRoLnNoIGIvdC90NjAxOS1yZXYtbGlzdC1hbmNlc3RyeS1wYXRoLnNoCmluZGV4IDM5YjRjYjAuLmRhYmViYWUgMTAwNzU1Ci0tLSBhL3QvdDYwMTktcmV2LWxpc3QtYW5jZXN0cnktcGF0aC5zaAorKysgYi90L3Q2MDE5LXJldi1saXN0LWFuY2VzdHJ5LXBhdGguc2gKQEAgLTEzLDYgKzEzLDEzIEBACiAjCiAjICBELi5NIC0tIE0udCAgICAgICAgICAgICAgICAgPT0gTQogIyAgLS1hbmNlc3RyeS1wYXRoIEQuLk0gLS0gTS50ID09IE0KKyMKKyMgIEYuLi5JICAgICAgICAgICAgICAgICA9PSBGIEcgSCBJCisjICAtLWFuY2VzdHJ5LXBhdGggRi4uLkkgPT0gRiBIIEkKKyMKKyMgIEcuLk0gLS0gRy50ICAgICAgICAgICAgICAgICA9PSBbbm90aGluZyAtIHdhcyBkcm9wcGVkIGluICItcyBvdXJzIiBtZXJnZSBMXQorIyAgLS1hbmNlc3RyeS1wYXRoIEcuLk0gLS0gRy50ID09IEwKKyMgIC0tYW5jZXN0cnktcGF0aCAtLXNpbXBsaWZ5LW1lcmdlcyBHXi4uTSAtLSBHLnQgPT0gRyBMCiAKIC4gLi90ZXN0LWxpYi5zaAogCkBAIC02MywxMyArNzAsNTIgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IC0tYW5jZXN0cnktcGF0Y2ggRC4uTSAtLSBNLnQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IC0tYW5jZXN0cnktcGF0aCBELi5NIC0tIE0udCcgJwogCWVjaG8gTSA+ZXhwZWN0ICYmCiAJZ2l0IHJldi1saXN0IC0tYW5jZXN0cnktcGF0aCAtLWZvcm1hdD0lcyBELi5NIC0tIE0udCB8CiAJc2VkIC1lICIvXmNvbW1pdCAvZCIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgRi4uLkknICcKKwlmb3IgYyBpbiBGIEcgSCBJOyBkbyBlY2hvICRjOyBkb25lID5leHBlY3QgJiYKKwlnaXQgcmV2LWxpc3QgLS1mb3JtYXQ9JXMgRi4uLkkgfAorCXNlZCAtZSAiL15jb21taXQgL2QiIHwKKwlzb3J0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IC0tYW5jZXN0cnktcGF0aCBGLi4uSScgJworCWZvciBjIGluIEYgSCBJOyBkbyBlY2hvICRjOyBkb25lID5leHBlY3QgJiYKKwlnaXQgcmV2LWxpc3QgLS1hbmNlc3RyeS1wYXRoIC0tZm9ybWF0PSVzIEYuLi5JIHwKKwlzZWQgLWUgIi9eY29tbWl0IC9kIiB8CisJc29ydCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCisjIEcudCBpcyBkcm9wcGVkIGluIGFuICItcyBvdXJzIiBtZXJnZQordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgRy4uTSAtLSBHLnQnICcKKwk+ZXhwZWN0ICYmCisJZ2l0IHJldi1saXN0IC0tZm9ybWF0PSVzIEcuLk0gLS0gRy50IHwKKwlzZWQgLWUgIi9eY29tbWl0IC9kIiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXYtbGlzdCAtLWFuY2VzdHJ5LXBhdGggRy4uTSAtLSBHLnQnICcKKwllY2hvIEwgPmV4cGVjdCAmJgorCWdpdCByZXYtbGlzdCAtLWFuY2VzdHJ5LXBhdGggLS1mb3JtYXQ9JXMgRy4uTSAtLSBHLnQgfAorCXNlZCAtZSAiL15jb21taXQgL2QiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IC0tYW5jZXN0cnktcGF0aCAtLXNpbXBsaWZ5LW1lcmdlcyBHXi4uTSAtLSBHLnQnICcKKwlmb3IgYyBpbiBHIEw7IGRvIGVjaG8gJGM7IGRvbmUgPmV4cGVjdCAmJgorCWdpdCByZXYtbGlzdCAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS1mb3JtYXQ9JXMgR14uLk0gLS0gRy50IHwKKwlzZWQgLWUgIi9eY29tbWl0IC9kIiB8CisJc29ydCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCiAjICAgYi0tLWJjCiAjICAvIFwgLwogIyBhICAgWApkaWZmIC0tZ2l0IGEvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoIGIvdC90NjAzMC1iaXNlY3QtcG9yY2VsYWluLnNoCmluZGV4IDNlMGUxNWYuLjA2NGY1Y2UgMTAwNzU1Ci0tLSBhL3QvdDYwMzAtYmlzZWN0LXBvcmNlbGFpbi5zaAorKysgYi90L3Q2MDMwLWJpc2VjdC1wb3JjZWxhaW4uc2gKQEAgLTE2NCw3ICsxNjQsNyBAQAogCWNwIC5naXQvQklTRUNUX1NUQVJUIHNhdmVkICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDQgZm9vIC0tICYmCiAJZ2l0IGJyYW5jaCA+IGJyYW5jaC5vdXRwdXQgJiYKLQl0ZXN0X2kxOG5ncmVwICIqIChubyBicmFuY2gpIiBicmFuY2gub3V0cHV0ID4gL2Rldi9udWxsICYmCisJdGVzdF9pMThuZ3JlcCAiKiAobm8gYnJhbmNoLCBiaXNlY3Qgc3RhcnRlZCBvbiBvdGhlcikiIGJyYW5jaC5vdXRwdXQgPiAvZGV2L251bGwgJiYKIAl0ZXN0X2NtcCBzYXZlZCAuZ2l0L0JJU0VDVF9TVEFSVAogJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYmlzZWN0IHN0YXJ0OiBubyAiLmdpdC9CSVNFQ1RfU1RBUlQiIGlmIG1pc3Rha2VuIHJldicgJwpAQCAtMTkwLDcgKzE5MCw3IEBACiAjICRIQVNIMSBpcyBnb29kLCAkSEFTSDQgaXMgYmFkLCB3ZSBza2lwICRIQVNIMwogIyBidXQgJEhBU0gyIGlzIGJhZCwKICMgc28gd2Ugc2hvdWxkIGZpbmQgJEhBU0gyIGFzIHRoZSBmaXJzdCBiYWQgY29tbWl0Ci10ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc2tpcDogc3VjY2Vzc2Z1bGwgcmVzdWx0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdiaXNlY3Qgc2tpcDogc3VjY2Vzc2Z1bCByZXN1bHQnICcKIAlnaXQgYmlzZWN0IHJlc2V0ICYmCiAJZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDQgJEhBU0gxICYmCiAJZ2l0IGJpc2VjdCBza2lwICYmCkBAIC03NDEsNCArNzQxLDQyIEBACiAJZ2l0IGJpc2VjdCByZXNldAogIgogCitjYXQgPiBleHBlY3RlZC5iaXNlY3QtbG9nIDw8RU9GCisjIGJhZDogWzMyYTU5NGEzZmRhYzJkNTdjZjZkMDI5ODdlMzBlZWM2ODUxMTQ5OGNdIEFkZCA8NDogQ2lhbyBmb3Igbm93PiBpbnRvIDxoZWxsbz4uCisjIGdvb2Q6IFs3YjdmMjA0YTc0OWMzMTI1ZDUyMjRlZDYxZWEyYWUxMTg3YWQwNDZmXSBBZGQgPDI6IEEgbmV3IGRheSBmb3IgZ2l0PiBpbnRvIDxoZWxsbz4uCitnaXQgYmlzZWN0IHN0YXJ0ICczMmE1OTRhM2ZkYWMyZDU3Y2Y2ZDAyOTg3ZTMwZWVjNjg1MTE0OThjJyAnN2I3ZjIwNGE3NDljMzEyNWQ1MjI0ZWQ2MWVhMmFlMTE4N2FkMDQ2ZicKKyMgZ29vZDogWzNkZTk1MmYyNDE2YjYwODRmNTU3ZWM0MTc3MDllYWM3NDBjNjgxOGNdIEFkZCA8MzogQW5vdGhlciBuZXcgZGF5IGZvciBnaXQ+IGludG8gPGhlbGxvPi4KK2dpdCBiaXNlY3QgZ29vZCAzZGU5NTJmMjQxNmI2MDg0ZjU1N2VjNDE3NzA5ZWFjNzQwYzY4MThjCisjIGZpcnN0IGJhZCBjb21taXQ6IFszMmE1OTRhM2ZkYWMyZDU3Y2Y2ZDAyOTg3ZTMwZWVjNjg1MTE0OThjXSBBZGQgPDQ6IENpYW8gZm9yIG5vdz4gaW50byA8aGVsbG8+LgorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jpc2VjdCBsb2c6IHN1Y2Nlc3NmdWxsIHJlc3VsdCcgJworCWdpdCBiaXNlY3QgcmVzZXQgJiYKKwlnaXQgYmlzZWN0IHN0YXJ0ICRIQVNINCAkSEFTSDIgJiYKKwlnaXQgYmlzZWN0IGdvb2QgJiYKKwlnaXQgYmlzZWN0IGxvZyA+YmlzZWN0LWxvZy50eHQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5iaXNlY3QtbG9nIGJpc2VjdC1sb2cudHh0ICYmCisJZ2l0IGJpc2VjdCByZXNldAorJworCitjYXQgPiBleHBlY3RlZC5iaXNlY3Qtc2tpcC1sb2cgPDxFT0YKKyMgYmFkOiBbMzJhNTk0YTNmZGFjMmQ1N2NmNmQwMjk4N2UzMGVlYzY4NTExNDk4Y10gQWRkIDw0OiBDaWFvIGZvciBub3c+IGludG8gPGhlbGxvPi4KKyMgZ29vZDogWzdiN2YyMDRhNzQ5YzMxMjVkNTIyNGVkNjFlYTJhZTExODdhZDA0NmZdIEFkZCA8MjogQSBuZXcgZGF5IGZvciBnaXQ+IGludG8gPGhlbGxvPi4KK2dpdCBiaXNlY3Qgc3RhcnQgJzMyYTU5NGEzZmRhYzJkNTdjZjZkMDI5ODdlMzBlZWM2ODUxMTQ5OGMnICc3YjdmMjA0YTc0OWMzMTI1ZDUyMjRlZDYxZWEyYWUxMTg3YWQwNDZmJworIyBza2lwOiBbM2RlOTUyZjI0MTZiNjA4NGY1NTdlYzQxNzcwOWVhYzc0MGM2ODE4Y10gQWRkIDwzOiBBbm90aGVyIG5ldyBkYXkgZm9yIGdpdD4gaW50byA8aGVsbG8+LgorZ2l0IGJpc2VjdCBza2lwIDNkZTk1MmYyNDE2YjYwODRmNTU3ZWM0MTc3MDllYWM3NDBjNjgxOGMKKyMgb25seSBza2lwcGVkIGNvbW1pdHMgbGVmdCB0byB0ZXN0CisjIHBvc3NpYmxlIGZpcnN0IGJhZCBjb21taXQ6IFszMmE1OTRhM2ZkYWMyZDU3Y2Y2ZDAyOTg3ZTMwZWVjNjg1MTE0OThjXSBBZGQgPDQ6IENpYW8gZm9yIG5vdz4gaW50byA8aGVsbG8+LgorIyBwb3NzaWJsZSBmaXJzdCBiYWQgY29tbWl0OiBbM2RlOTUyZjI0MTZiNjA4NGY1NTdlYzQxNzcwOWVhYzc0MGM2ODE4Y10gQWRkIDwzOiBBbm90aGVyIG5ldyBkYXkgZm9yIGdpdD4gaW50byA8aGVsbG8+LgorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jpc2VjdCBsb2c6IG9ubHkgc2tpcCBjb21taXRzIGxlZnQnICcKKwlnaXQgYmlzZWN0IHJlc2V0ICYmCisJZ2l0IGJpc2VjdCBzdGFydCAkSEFTSDQgJEhBU0gyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJpc2VjdCBza2lwICYmCisJZ2l0IGJpc2VjdCBsb2cgPmJpc2VjdC1za2lwLWxvZy50eHQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC5iaXNlY3Qtc2tpcC1sb2cgYmlzZWN0LXNraXAtbG9nLnR4dCAmJgorCWdpdCBiaXNlY3QgcmVzZXQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q2MDM1LW1lcmdlLWRpci10by1zeW1saW5rLnNoIGIvdC90NjAzNS1tZXJnZS1kaXItdG8tc3ltbGluay5zaAppbmRleCAyNTk5YWU1Li45MzI0ZWE0IDEwMDc1NQotLS0gYS90L3Q2MDM1LW1lcmdlLWRpci10by1zeW1saW5rLnNoCisrKyBiL3QvdDYwMzUtbWVyZ2UtZGlyLXRvLXN5bWxpbmsuc2gKQEAgLTMsNyArMyw3IEBACiB0ZXN0X2Rlc2NyaXB0aW9uPSdtZXJnaW5nIHdoZW4gYSBkaXJlY3Rvcnkgd2FzIHJlcGxhY2VkIHdpdGggYSBzeW1saW5rJwogLiAuL3Rlc3QtbGliLnNoCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2NyZWF0ZSBhIGNvbW1pdCB3aGVyZSBkaXIgYS9iIGNoYW5nZWQgdG8gc3ltbGluaycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGEgY29tbWl0IHdoZXJlIGRpciBhL2IgY2hhbmdlZCB0byBzeW1saW5rJyAnCiAJbWtkaXIgLXAgYS9iL2MgYS9iLTIvYyAmJgogCT4gYS9iL2MvZCAmJgogCT4gYS9iLTIvYy9kICYmCkBAIC0xMiwxMiArMTIsMTIgQEAKIAlnaXQgY29tbWl0IC1tIGJhc2UgJiYKIAlnaXQgdGFnIHN0YXJ0ICYmCiAJcm0gLXJmIGEvYiAmJgotCWxuIC1zIGItMiBhL2IgJiYKIAlnaXQgYWRkIC1BICYmCisJdGVzdF9sbl9zX2FkZCBiLTIgYS9iICYmCiAJZ2l0IGNvbW1pdCAtbSAiZGlyIHRvIHN5bWxpbmsiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2NoZWNrb3V0IGRvZXMgbm90IGNsb2JiZXIgdW50cmFja2VkIHN5bWxpbmsnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrb3V0IGRvZXMgbm90IGNsb2JiZXIgdW50cmFja2VkIHN5bWxpbmsnICcKIAlnaXQgY2hlY2tvdXQgSEVBRF4wICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBtYXN0ZXIgJiYKIAlnaXQgcm0gLS1jYWNoZWQgYS9iICYmCkBAIC0yNSw3ICsyNSw3IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrb3V0IHN0YXJ0XjAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnYS9iLTIvYy9kIGlzIGtlcHQgd2hlbiBjbG9iYmVyaW5nIHN5bWxpbmsgYicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYS9iLTIvYy9kIGlzIGtlcHQgd2hlbiBjbG9iYmVyaW5nIHN5bWxpbmsgYicgJwogCWdpdCBjaGVja291dCBIRUFEXjAgJiYKIAlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlciAmJgogCWdpdCBybSAtLWNhY2hlZCBhL2IgJiYKQEAgLTM0LDE0ICszNCwxNCBAQAogCXRlc3QgLWYgYS9iLTIvYy9kCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2NoZWNrb3V0IHNob3VsZCBub3QgaGF2ZSBkZWxldGVkIGEvYi0yL2MvZCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2tvdXQgc2hvdWxkIG5vdCBoYXZlIGRlbGV0ZWQgYS9iLTIvYy9kJyAnCiAJZ2l0IGNoZWNrb3V0IEhFQUReMCAmJgogCWdpdCByZXNldCAtLWhhcmQgbWFzdGVyICYmCiAJIGdpdCBjaGVja291dCBzdGFydF4wICYmCiAJIHRlc3QgLWYgYS9iLTIvYy9kCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3NldHVwIGZvciBtZXJnZSB0ZXN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBmb3IgbWVyZ2UgdGVzdCcgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKIAl0ZXN0IC1mIGEvYi0yL2MvZCAmJgogCWVjaG8geCA+IGEveCAmJgpAQCAtNTAsMzkgKzUwLDUxIEBACiAJZ2l0IHRhZyBiYXNlbGluZQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdIYW5kbGUgRC9GIGNvbmZsaWN0LCBkbyBub3QgbG9zZSBhL2ItMi9jL2QgaW4gbWVyZ2UgKHJlc29sdmUpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdIYW5kbGUgRC9GIGNvbmZsaWN0LCBkbyBub3QgbG9zZSBhL2ItMi9jL2QgaW4gbWVyZ2UgKHJlc29sdmUpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBiYXNlbGluZV4wICYmCiAJZ2l0IG1lcmdlIC1zIHJlc29sdmUgbWFzdGVyICYmCi0JdGVzdCAtaCBhL2IgJiYKIAl0ZXN0IC1mIGEvYi0yL2MvZAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdIYW5kbGUgRC9GIGNvbmZsaWN0LCBkbyBub3QgbG9zZSBhL2ItMi9jL2QgaW4gbWVyZ2UgKHJlY3Vyc2l2ZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2EvYiB3YXMgcmVzb2x2ZWQgYXMgc3ltbGluaycgJworCXRlc3QgLWggYS9iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0hhbmRsZSBEL0YgY29uZmxpY3QsIGRvIG5vdCBsb3NlIGEvYi0yL2MvZCBpbiBtZXJnZSAocmVjdXJzaXZlKScgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgYmFzZWxpbmVeMCAmJgogCWdpdCBtZXJnZSAtcyByZWN1cnNpdmUgbWFzdGVyICYmCi0JdGVzdCAtaCBhL2IgJiYKIAl0ZXN0IC1mIGEvYi0yL2MvZAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdIYW5kbGUgRi9EIGNvbmZsaWN0LCBkbyBub3QgbG9zZSBhL2ItMi9jL2QgaW4gbWVyZ2UgKHJlc29sdmUpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdhL2Igd2FzIHJlc29sdmVkIGFzIHN5bWxpbmsnICcKKwl0ZXN0IC1oIGEvYgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdIYW5kbGUgRi9EIGNvbmZsaWN0LCBkbyBub3QgbG9zZSBhL2ItMi9jL2QgaW4gbWVyZ2UgKHJlc29sdmUpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBtYXN0ZXJeMCAmJgogCWdpdCBtZXJnZSAtcyByZXNvbHZlIGJhc2VsaW5lXjAgJiYKLQl0ZXN0IC1oIGEvYiAmJgogCXRlc3QgLWYgYS9iLTIvYy9kCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ0hhbmRsZSBGL0QgY29uZmxpY3QsIGRvIG5vdCBsb3NlIGEvYi0yL2MvZCBpbiBtZXJnZSAocmVjdXJzaXZlKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnYS9iIHdhcyByZXNvbHZlZCBhcyBzeW1saW5rJyAnCisJdGVzdCAtaCBhL2IKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnSGFuZGxlIEYvRCBjb25mbGljdCwgZG8gbm90IGxvc2UgYS9iLTIvYy9kIGluIG1lcmdlIChyZWN1cnNpdmUpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBtYXN0ZXJeMCAmJgogCWdpdCBtZXJnZSAtcyByZWN1cnNpdmUgYmFzZWxpbmVeMCAmJgotCXRlc3QgLWggYS9iICYmCiAJdGVzdCAtZiBhL2ItMi9jL2QKICcKIAotdGVzdF9leHBlY3RfZmFpbHVyZSBTWU1MSU5LUyAnZG8gbm90IGxvc2UgdW50cmFja2VkIGluIG1lcmdlIChyZXNvbHZlKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnYS9iIHdhcyByZXNvbHZlZCBhcyBzeW1saW5rJyAnCisJdGVzdCAtaCBhL2IKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAnZG8gbm90IGxvc2UgdW50cmFja2VkIGluIG1lcmdlIChyZXNvbHZlKScgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgYmFzZWxpbmVeMCAmJgogCT5hL2IvYy9lICYmCkBAIC05MSw3ICsxMDMsNyBAQAogCXRlc3QgLWYgYS9iLTIvYy9kCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2RvIG5vdCBsb3NlIHVudHJhY2tlZCBpbiBtZXJnZSAocmVjdXJzaXZlKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZG8gbm90IGxvc2UgdW50cmFja2VkIGluIG1lcmdlIChyZWN1cnNpdmUpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBiYXNlbGluZV4wICYmCiAJPmEvYi9jL2UgJiYKQEAgLTEwMCw1MiArMTEyLDYxIEBACiAJdGVzdCAtZiBhL2ItMi9jL2QKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZG8gbm90IGxvc2UgbW9kaWZpY2F0aW9ucyBpbiBtZXJnZSAocmVzb2x2ZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBsb3NlIG1vZGlmaWNhdGlvbnMgaW4gbWVyZ2UgKHJlc29sdmUpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBiYXNlbGluZV4wICYmCiAJZWNobyBtb3JlIGNvbnRlbnQgPj5hL2IvYy9kICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC1zIHJlc29sdmUgbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2RvIG5vdCBsb3NlIG1vZGlmaWNhdGlvbnMgaW4gbWVyZ2UgKHJlY3Vyc2l2ZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBsb3NlIG1vZGlmaWNhdGlvbnMgaW4gbWVyZ2UgKHJlY3Vyc2l2ZSknICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGJhc2VsaW5lXjAgJiYKIAllY2hvIG1vcmUgY29udGVudCA+PmEvYi9jL2QgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLXMgcmVjdXJzaXZlIG1hc3RlcgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdzZXR1cCBhIG1lcmdlIHdoZXJlIGRpciBhL2ItMiBjaGFuZ2VkIHRvIHN5bWxpbmsnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGEgbWVyZ2Ugd2hlcmUgZGlyIGEvYi0yIGNoYW5nZWQgdG8gc3ltbGluaycgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgc3RhcnReMCAmJgogCXJtIC1yZiBhL2ItMiAmJgotCWxuIC1zIGIgYS9iLTIgJiYKIAlnaXQgYWRkIC1BICYmCisJdGVzdF9sbl9zX2FkZCBiIGEvYi0yICYmCiAJZ2l0IGNvbW1pdCAtbSAiZGlyIGEvYi0yIHRvIHN5bWxpbmsiICYmCiAJZ2l0IHRhZyB0ZXN0MgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdtZXJnZSBzaG91bGQgbm90IGhhdmUgRC9GIGNvbmZsaWN0cyAocmVzb2x2ZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIHNob3VsZCBub3QgaGF2ZSBEL0YgY29uZmxpY3RzIChyZXNvbHZlKScgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgYmFzZWxpbmVeMCAmJgogCWdpdCBtZXJnZSAtcyByZXNvbHZlIHRlc3QyICYmCi0JdGVzdCAtaCBhL2ItMiAmJgogCXRlc3QgLWYgYS9iL2MvZAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdtZXJnZSBzaG91bGQgbm90IGhhdmUgRC9GIGNvbmZsaWN0cyAocmVjdXJzaXZlKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnYS9iLTIgd2FzIHJlc29sdmVkIGFzIHN5bWxpbmsnICcKKwl0ZXN0IC1oIGEvYi0yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIHNob3VsZCBub3QgaGF2ZSBEL0YgY29uZmxpY3RzIChyZWN1cnNpdmUpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBiYXNlbGluZV4wICYmCiAJZ2l0IG1lcmdlIC1zIHJlY3Vyc2l2ZSB0ZXN0MiAmJgotCXRlc3QgLWggYS9iLTIgJiYKIAl0ZXN0IC1mIGEvYi9jL2QKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnbWVyZ2Ugc2hvdWxkIG5vdCBoYXZlIEYvRCBjb25mbGljdHMgKHJlY3Vyc2l2ZSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2EvYi0yIHdhcyByZXNvbHZlZCBhcyBzeW1saW5rJyAnCisJdGVzdCAtaCBhL2ItMgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBzaG91bGQgbm90IGhhdmUgRi9EIGNvbmZsaWN0cyAocmVjdXJzaXZlKScgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgLWIgZm9vIHRlc3QyICYmCiAJZ2l0IG1lcmdlIC1zIHJlY3Vyc2l2ZSBiYXNlbGluZV4wICYmCi0JdGVzdCAtaCBhL2ItMiAmJgogCXRlc3QgLWYgYS9iL2MvZAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdhL2ItMiB3YXMgcmVzb2x2ZWQgYXMgc3ltbGluaycgJworCXRlc3QgLWggYS9iLTIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q2MTExLXJldi1saXN0LXRyZWVzYW1lLnNoIGIvdC90NjExMS1yZXYtbGlzdC10cmVlc2FtZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44OGI4NGRmCi0tLSAvZGV2L251bGwKKysrIGIvdC90NjExMS1yZXYtbGlzdC10cmVlc2FtZS5zaApAQCAtMCwwICsxLDE5NiBAQAorIyEvYmluL3NoCisjCisjICAgICAgICAsLS0tRS0tLiAgICpILS0tLS0tLS0tLS4gICAgICAgICAgICAgKiBtYXJrcyAhVFJFRVNBTUUgcGFyZW50IHBhdGhzCisjICAgICAgIC8gICAgICAgIFwgLyAgICAgICAgICAgICBcKgorIyAqQS0tKkItLS1ELS0qRi0qRy0tLS0tLS0tLUstKkwtKk0KKyMgICBcICAgICAvKiAgICAgICBcICAgICAgIC8KKyMgICAgYC1DLScgICAgICAgICAgYC0qSS0qSgorIworIyBBIGNyZWF0ZXMgImZpbGUiLCBCIGFuZCBGIGNoYW5nZSBpdC4KKyMgT2RkIG1lcmdlIEcgdGFrZXMgdGhlIG9sZCB2ZXJzaW9uIGZyb20gQi4KKyMgSSBjaGFuZ2VzIGl0LCBidXQgSiByZXZlcnRzIGl0LCBzbyBLIGlzIFRSRUVTQU1FIHRvIGJvdGggcGFyZW50cy4KKyMgSCBhbmQgTCBib3RoIGNoYW5nZSAiZmlsZSIsIGFuZCBNIG1lcmdlcyB0aG9zZSBjaGFuZ2VzLgorCit0ZXN0X2Rlc2NyaXB0aW9uPSdUUkVFU0FNRSBhbmQgbGltaXRpbmcnCisKKy4gLi90ZXN0LWxpYi5zaAorCitub3RlICgpIHsKKwlnaXQgdGFnICIkMSIKK30KKwordW5ub3RlICgpIHsKKwlnaXQgbmFtZS1yZXYgLS10YWdzIC0tc3RkaW4gfCBzZWQgLWUgInN8JF94NDAgKHRhZ3MvXChbXildKlwpKVwoWyAJXVwpfFwxXDJ8ZyIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJdGVzdF9jb21taXQgIkluaXRpYWwgZmlsZSIgZmlsZSAiSGkgdGhlcmUiIEEgJiYKKwlnaXQgYnJhbmNoIG90aGVyLWJyYW5jaCAmJgorCisJdGVzdF9jb21taXQgImZpbGU9SGVsbG8iIGZpbGUgIkhlbGxvIiBCICYmCisJZ2l0IGJyYW5jaCB0aGlyZC1icmFuY2ggJiYKKworCWdpdCBjaGVja291dCBvdGhlci1icmFuY2ggJiYKKwl0ZXN0X2NvbW1pdCAiQWRkZWQgb3RoZXIiIG90aGVyICJIZWxsbyIgQyAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCXRlc3RfbWVyZ2UgRCBvdGhlci1icmFuY2ggJiYKKworCWdpdCBjaGVja291dCB0aGlyZC1icmFuY2ggJiYKKwl0ZXN0X2NvbW1pdCAiVGhpcmQgZmlsZSIgdGhpcmQgIk5vdGhpbmciIEUgJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X2NvbW1pdCAiZmlsZT1CbGFoIiBmaWxlICJCbGFoIiBGICYmCisKKwl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC0tbm8tY29tbWl0IHRoaXJkLWJyYW5jaCAmJgorCWdpdCBjaGVja291dCB0aGlyZC1icmFuY2ggZmlsZSAmJgorCWdpdCBjb21taXQgJiYKKwlub3RlIEcgJiYKKwlnaXQgYnJhbmNoIGZpZGRsZXItYnJhbmNoICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgcGFydDItYnJhbmNoICYmCisJdGVzdF9jb21taXQgImZpbGU9UGFydCAyIiBmaWxlICJQYXJ0IDIiIEggJiYKKworCWdpdCBjaGVja291dCBmaWRkbGVyLWJyYW5jaCAmJgorCXRlc3RfY29tbWl0ICJCYWQgY29tbWl0IiBmaWxlICJTaWxseSIgSSAmJgorCisJdGVzdF90aWNrICYmIGdpdCByZXZlcnQgSSAmJiBub3RlIEogJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgZmlkZGxlci1icmFuY2ggJiYKKwlub3RlIEsKKworCXRlc3RfY29tbWl0ICJmaWxlPVBhcnQgMSIgZmlsZSAiUGFydCAxIiBMICYmCisKKwl0ZXN0X3RpY2sgJiYgdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIHBhcnQyLWJyYW5jaCAmJgorCXRlc3RfY29tbWl0IE0gZmlsZSAiUGFydHMgMSsyIgorJworCitjaGVja19vdXRjb21lICgpIHsKKwlvdXRjb21lPSQxCisJc2hpZnQKKworCWNhc2UgIiQxIiBpbgorCSoiKCIqKQorCQlGTVQ9IiVQCSVIIHwgJXMiCisJCW11bmdlX2FjdHVhbD0iCisJCQlzL15cKFteCV0qXCkJXChbXiBdKlwpIC4qLyhcMSlcMi8KKwkJCXMvIC8vZworCQkJcy8oKS8vCisJCSIKKwkJOzsKKwkqKQorCQlGTVQ9IiVIIHwgJXMiCisJCW11bmdlX2FjdHVhbD0icy9eXChbXiBdKlwpIC4qL1wxLyIKKwkJOzsKKwllc2FjICYmCisJcHJpbnRmICIlc1xuIiAkMSA+ZXhwZWN0ICYmCisJc2hpZnQKKworCXBhcmFtPSIkKiIgJiYKKwl0ZXN0X2V4cGVjdF8kb3V0Y29tZSAibG9nICRwYXJhbSIgJworCQlnaXQgbG9nIC0tZm9ybWF0PSIkRk1UIiAkcGFyYW0gfAorCQl1bm5vdGUgPmFjdHVhbCAmJgorCQlzZWQgLWUgIiRtdW5nZV9hY3R1YWwiIDxhY3R1YWwgPmNoZWNrICYmCisJCXRlc3RfY21wIGV4cGVjdCBjaGVjayB8fCB7CisJCQljYXQgYWN0dWFsCisJCQlmYWxzZQorCQl9CisJJworfQorCitjaGVja19yZXN1bHQgKCkgeworCWNoZWNrX291dGNvbWUgc3VjY2VzcyAiJEAiCit9CisKKyMgT2RkIG1lcmdlIEcgZHJvcHMgYSBjaGFuZ2UgaW4gRi4gSW1wb3J0YW50IHRoYXQgRyBpcyBsaXN0ZWQgaW4gYWxsCisjIGV4Y2VwdCB0aGUgbW9zdCBiYXNpYyBsaXN0LiBBY2hpZXZpbmcgdGhpcyBtZWFucyBub3JtYWwgbWVyZ2UgRCB3aWxsIGFsc28gYmUKKyMgc2hvd24gaW4gbm9ybWFsIGZ1bGwtaGlzdG9yeSwgYXMgd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdW5sZXNzIHdlIGRvIGEKKyMgc2ltcGxpZmljYXRpb24gcGFzcy4gQWZ0ZXIgc2ltcGxpZmljYXRpb24sIEQgaXMgZHJvcHBlZCBidXQgRyByZW1haW5zLgorIyBBbHNvLCBtZXJnZSBzaW1wbGlmaWNhdGlvbiBvZiBHIHNob3VsZCBub3QgZHJvcCB0aGUgcGFyZW50IEIgdGhhdCB0aGUgZGVmYXVsdAorIyBzaW1wbGUgaGlzdG9yeSBmb2xsb3dzLgorY2hlY2tfcmVzdWx0ICdNIEwgSyBKIEkgSCBHIEYgRSBEIEMgQiBBJworY2hlY2tfcmVzdWx0ICcoTEgpTSAoSylMIChHSilLIChJKUogKEcpSSAoRylIIChGRSlHIChEKUYgKEIpRSAoQkMpRCAoQSlDIChBKUIgQScKK2NoZWNrX3Jlc3VsdCAnTSBIIEwgSyBKIEkgRyBFIEYgRCBDIEIgQScgLS10b3BvLW9yZGVyCitjaGVja19yZXN1bHQgJ00gTCBIIEIgQScgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoQilMIChCKUggKEEpQiBBJyAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEggRyBGIEQgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhMSClNIChLKUwgKEdKKUsgKEkpSiAoRylJIChHKUggKEZCKUcgKEQpRiAoQkEpRCAoQSlCIEEnIC0tZnVsbC1oaXN0b3J5IC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhMSClNIChHKUggKEopTCAoSSlKIChHKUkgKEZCKUcgKEIpRiAoQSlCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnTSBMIEsgRyBGIEQgQiBBJyAtLWZpcnN0LXBhcmVudAorY2hlY2tfcmVzdWx0ICdNIEwgRyBGIEIgQScgLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisjIENoZWNrIHRoYXQgb2RkIG1lcmdlIEcgcmVtYWlucyBzaG93biB3aGVuIEYgaXMgdGhlIGJvdHRvbS4KK2NoZWNrX3Jlc3VsdCAnTSBMIEsgSiBJIEggRyBFJyBGLi5NCitjaGVja19yZXN1bHQgJ00gSCBMIEsgSiBJIEcgRScgRi4uTSAtLXRvcG8tb3JkZXIKK2NoZWNrX3Jlc3VsdCAnTSBMIEgnIEYuLk0gLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoQilMIChCKUgnIC0tcGFyZW50cyBGLi5NIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnTSBMIEogSSBIIEcnIEYuLk0gLS1mdWxsLWhpc3RvcnkgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoSylMIChHSilLIChJKUogKEcpSSAoRylIIChGQilHJyBGLi5NIC0tZnVsbC1oaXN0b3J5IC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhMSClNIChHKUggKEopTCAoSSlKIChHKUkgKEZCKUcnIEYuLk0gLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdNIEwgSyBKIEkgSCBHJyBGLi5NIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEggRycgRi4uTSAtLWFuY2VzdHJ5LXBhdGggLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoSylMIChHSilLIChJKUogKEcpSSAoRylIIChGRSlHJyBGLi5NIC0tYW5jZXN0cnktcGF0aCAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoRylIIChKKUwgKEkpSiAoRylJIChGRSlHJyBGLi5NIC0tYW5jZXN0cnktcGF0aCAtLXNpbXBsaWZ5LW1lcmdlcyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBLIEcnIEYuLk0gLS1maXJzdC1wYXJlbnQKK2NoZWNrX3Jlc3VsdCAnTSBMIEcnIEYuLk0gLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisjIE5vdGUgdGhhdCBHIGlzIHBydW5lZCB3aGVuIEUgaXMgdGhlIGJvdHRvbSwgZXZlbiBpZiBpdCdzIHRoZSBzYW1lIGNvbW1pdCBsaXN0CisjIElmIHdlIHdhbnQgaGlzdG9yeSBzaW5jZSBFLCB0aGVuIHdlJ3JlIHF1aXRlIGhhcHB5IHRvIGlnbm9yZSBHIHRoYXQgdG9vayBFLgorY2hlY2tfcmVzdWx0ICdNIEwgSyBKIEkgSCBHJyBFLi5NIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEgnIEUuLk0gLS1hbmNlc3RyeS1wYXRoIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKExIKU0gKEspTCAoRUopSyAoSSlKIChFKUkgKEUpSCcgRS4uTSAtLWFuY2VzdHJ5LXBhdGggLS1wYXJlbnRzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKExIKU0gKEUpSCAoSilMIChJKUogKEUpSScgRS4uTSAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorCisjIFNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGlnbm9yZSBJLUogYnJhbmNoIGluIHNpbXBsZSBsb2csIGRlc3BpdGUgbGltaXRpbmcKKyMgdG8gRy4KK2NoZWNrX3Jlc3VsdCAnTSBMIEsgSiBJIEgnIEcuLk0KK2NoZWNrX3Jlc3VsdCAnTSBIIEwgSyBKIEknIEcuLk0gLS10b3BvLW9yZGVyCitjaGVja19yZXN1bHQgJ00gTCBIJyBHLi5NIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKExIKU0gKEcpTCAoRylIJyBHLi5NIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBKIEkgSCcgRy4uTSAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBLIEogSSBIJyBHLi5NIC0tZnVsbC1oaXN0b3J5IC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gSCBMIEogSScgRy4uTSAtLXNpbXBsaWZ5LW1lcmdlcyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBLIEogSSBIJyBHLi5NIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEgnIEcuLk0gLS1hbmNlc3RyeS1wYXRoIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnTSBMIEsgSiBJIEgnIEcuLk0gLS1hbmNlc3RyeS1wYXRoIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gSCBMIEogSScgRy4uTSAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorCisjIEIuLkYgc2hvdWxkIGJlIGFibGUgdG8gc2ltcGxpZnkgdGhlIG1lcmdlIEQgZnJvbSBpcnJlbGV2YW50IHNpZGUgYnJhbmNoIEMuCisjIERlZmF1bHQgbG9nIHNob3VsZCBhbHNvIGJlIGZyZWUgdG8gZm9sbG93IEItRCwgYW5kIGlnbm9yZSBDLgorIyBCdXQgLS1mdWxsLWhpc3Rvcnkgc2hvdWxkbid0IGRyb3AgRCBvbiBpdHMgb3duIC0gd2l0aG91dCBzaW1wbGlmaWNhdGlvbiwKKyMgd2UgY2FuJ3QgZGVjaWRlIGlmIHRoZSBtZXJnZSBmcm9tIElOVEVSRVNUSU5HIGNvbW1pdCBDIHdhcyBzZW5zaWJsZS4KK2NoZWNrX3Jlc3VsdCAnRiBEIEMnIEIuLkYKK2NoZWNrX3Jlc3VsdCAnRicgQi4uRiAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhCKUYnIEIuLkYgLS1wYXJlbnRzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnRiBEJyBCLi5GIC0tZnVsbC1oaXN0b3J5IC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKEQpRiAoQkEpRCcgQi4uRiAtLWZ1bGwtaGlzdG9yeSAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoQilGJyBCLi5GIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnRiBEJyBCLi5GIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdGJyBCLi5GIC0tYW5jZXN0cnktcGF0aCAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0YnIEIuLkYgLS1hbmNlc3RyeS1wYXRoIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0YnIEIuLkYgLS1hbmNlc3RyeS1wYXRoIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnRiBEJyBCLi5GIC0tZmlyc3QtcGFyZW50CitjaGVja19yZXN1bHQgJ0YnIEIuLkYgLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisjIEUuLi5GIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIEUgRiBeQiwgYW5kIGJlIGFibGUgdG8gZHJvcCBEIGFzIGFib3ZlLgorY2hlY2tfcmVzdWx0ICdGJyBFIEYgXkIgLS0gZmlsZSAjIGluY2x1ZGVzIEQKK2NoZWNrX3Jlc3VsdCAnRicgRS4uLkYgLS0gZmlsZSAjIGluY2x1ZGVzIEQKKworIyBBbnkgc29ydCBvZiBmdWxsIGhpc3Rvcnkgb2YgQy4uRiBzaG91bGQgc2hvdyBELCBhcyBpdCdzIHRoZSBjb25uZWN0aW9uIHRvIEMsCisjIGFuZCBpdCBkaWZmZXJzIGZyb20gaXQuCitjaGVja19yZXN1bHQgJ0YgRCBCJyBDLi5GCitjaGVja19yZXN1bHQgJ0YgQicgQy4uRiAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhCKUYgKEEpQicgQy4uRiAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQgQicgQy4uRiAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhEKUYgKEJDKUQgKEEpQicgQy4uRiAtLWZ1bGwtaGlzdG9yeSAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoRClGIChCQylEIChBKUInIEMuLkYgLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQnIEMuLkYgLS1hbmNlc3RyeS1wYXRoCitjaGVja19yZXN1bHQgJ0YgRCcgQy4uRiAtLWFuY2VzdHJ5LXBhdGggLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQnIEMuLkYgLS1hbmNlc3RyeS1wYXRoIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0YgRCcgQy4uRiAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQgQicgQy4uRiAtLWZpcnN0LXBhcmVudAorY2hlY2tfcmVzdWx0ICdGIEInIEMuLkYgLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjEyMC1kZXNjcmliZS5zaCBiL3QvdDYxMjAtZGVzY3JpYmUuc2gKaW5kZXggZjY3YWE2Zi4uYTI1NzI5ZiAxMDA3NTUKLS0tIGEvdC90NjEyMC1kZXNjcmliZS5zaAorKysgYi90L3Q2MTIwLWRlc2NyaWJlLnNoCkBAIC0xMTAsNiArMTEwLDkgQEAKIGNoZWNrX2Rlc2NyaWJlIEItMC0qIC0tbG9uZyBIRUFEXl4yXgogY2hlY2tfZGVzY3JpYmUgQS0zLSogLS1sb25nIEhFQUReXjIKIAorY2hlY2tfZGVzY3JpYmUgYy03LSogLS10YWdzCitjaGVja19kZXNjcmliZSBlLTMtKiAtLWZpcnN0LXBhcmVudCAtLXRhZ3MKKwogOiA+ZXJyLmV4cGVjdAogY2hlY2tfZGVzY3JpYmUgQSAtLWFsbCBBXjAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIHdhcm5pbmcgd2FzIGRpc3BsYXllZCBmb3IgQScgJwpkaWZmIC0tZ2l0IGEvdC90NjEzMC1wYXRoc3BlYy1ub2dsb2Iuc2ggYi90L3Q2MTMwLXBhdGhzcGVjLW5vZ2xvYi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zOWVmNjE5Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NjEzMC1wYXRoc3BlYy1ub2dsb2Iuc2gKQEAgLTAsMCArMSw2OCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3QgZ2xvYmJpbmcgKGFuZCBub2dsb2IpIG9mIHBhdGhzcGVjIGxpbWl0aW5nJworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBjb21taXRzIHdpdGggZ2xvYiBjaGFyYWN0ZXJzJyAnCisJdGVzdF9jb21taXQgdW5yZWxhdGVkIGJhciAmJgorCXRlc3RfY29tbWl0IHZhbmlsbGEgZm9vICYmCisJIyBpbnNlcnQgZmlsZSAiZioiIGluIHRoZSBjb21taXQsIGJ1dCBpbiBhIHdheSB0aGF0IGF2b2lkcworCSMgdGhlIG5hbWUgImYqIiBpbiB0aGUgd29ya3RyZWUsIGJlY2F1c2UgaXQgaXMgbm90IGFsbG93ZWQKKwkjIG9uIFdpbmRvd3MgKHRoZSB0ZXN0cyBiZWxvdyBkbyBub3QgZGVwZW5kIG9uIHRoZSBwcmVzZW5jZQorCSMgb2YgdGhlIGZpbGUgaW4gdGhlIHdvcmt0cmVlKQorCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1jYWNoZWluZm8gMTAwNjQ0ICIkKGdpdCByZXYtcGFyc2UgSEVBRDpmb28pIiAiZioiICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSBzdGFyICYmCisJdGVzdF9jb21taXQgYnJhY2tldCAiZltvXVtvXSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmFuaWxsYSBwYXRoc3BlYyBtYXRjaGVzIGxpdGVyYWxseScgJworCWVjaG8gdmFuaWxsYSA+ZXhwZWN0ICYmCisJZ2l0IGxvZyAtLWZvcm1hdD0lcyAtLSBmb28gPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhciBwYXRoc3BlYyBnbG9icycgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlicmFja2V0CisJc3RhcgorCXZhbmlsbGEKKwlFT0YKKwlnaXQgbG9nIC0tZm9ybWF0PSVzIC0tICJmKiIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYnJhY2tldCBwYXRoc3BlYyBnbG9icyBhbmQgbWF0Y2hlcyBsaXRlcmFsIGJyYWNrZXRzJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWJyYWNrZXQKKwl2YW5pbGxhCisJRU9GCisJZ2l0IGxvZyAtLWZvcm1hdD0lcyAtLSAiZltvXVtvXSIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8tZ2xvYiBvcHRpb24gbWF0Y2hlcyBsaXRlcmFsbHkgKHZhbmlsbGEpJyAnCisJZWNobyB2YW5pbGxhID5leHBlY3QgJiYKKwlnaXQgLS1saXRlcmFsLXBhdGhzcGVjcyBsb2cgLS1mb3JtYXQ9JXMgLS0gZm9vID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vLWdsb2Igb3B0aW9uIG1hdGNoZXMgbGl0ZXJhbGx5IChzdGFyKScgJworCWVjaG8gc3RhciA+ZXhwZWN0ICYmCisJZ2l0IC0tbGl0ZXJhbC1wYXRoc3BlY3MgbG9nIC0tZm9ybWF0PSVzIC0tICJmKiIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8tZ2xvYiBvcHRpb24gbWF0Y2hlcyBsaXRlcmFsbHkgKGJyYWNrZXQpJyAnCisJZWNobyBicmFja2V0ID5leHBlY3QgJiYKKwlnaXQgLS1saXRlcmFsLXBhdGhzcGVjcyBsb2cgLS1mb3JtYXQ9JXMgLS0gImZbb11bb10iID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vLWdsb2IgZW52aXJvbm1lbnQgdmFyaWFibGUgd29ya3MnICcKKwllY2hvIHN0YXIgPmV4cGVjdCAmJgorCUdJVF9MSVRFUkFMX1BBVEhTUEVDUz0xIGdpdCBsb2cgLS1mb3JtYXQ9JXMgLS0gImYqIiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDYyMDAtZm10LW1lcmdlLW1zZy5zaCBiL3QvdDYyMDAtZm10LW1lcmdlLW1zZy5zaAppbmRleCA5OTJjMmEwLi41NGI1NzQ0IDEwMDc1NQotLS0gYS90L3Q2MjAwLWZtdC1tZXJnZS1tc2cuc2gKKysrIGIvdC90NjIwMC1mbXQtbWVyZ2UtbXNnLnNoCkBAIC0xMTIsOCArMTEyLDggQEAKIAkgIENvbW1vbiAjMQogCUVPRgogCi0JZ2l0IGNvbmZpZyBtZXJnZS5sb2cgdHJ1ZSAmJgotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLnN1bW1hcnkgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5sb2cgdHJ1ZSAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2Uuc3VtbWFyeSAmJgogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgpAQCAtMTIxLDggKzEyMSw4IEBACiAKIAlnaXQgZm10LW1lcmdlLW1zZyA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwxICYmCiAKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnN1bW1hcnkgdHJ1ZSAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB0cnVlICYmCiAKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCkBAIC0xMzQsMTEgKzEzNCw2IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsMgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cDogY2xlYXIgW21lcmdlXSBjb25maWd1cmF0aW9uJyAnCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2Uuc3VtbWFyeQotJwotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBGRVRDSF9IRUFEJyAnCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgpAQCAtMTgwLDYgKzE3NSwyNCBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWxvZz01IHdpdGggY3VzdG9tIGNvbW1lbnQgY2hhcmFjdGVyJyAnCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwlNZXJnZSBicmFuY2ggJHthcG9zfWxlZnQke2Fwb3N9CisKKwl4IEJ5IEFub3RoZXIgQXV0aG9yICgzKSBhbmQgQSBVIFRob3IgKDIpCisJeCBWaWEgQW5vdGhlciBDb21taXR0ZXIKKwkqIGxlZnQ6CisJICBMZWZ0ICM1CisJICBMZWZ0ICM0CisJICBMZWZ0ICMzCisJICBDb21tb24gIzIKKwkgIENvbW1vbiAjMQorCUVPRgorCisJZ2l0IC1jIGNvcmUuY29tbWVudGNoYXI9IngiIGZtdC1tZXJnZS1tc2cgLS1sb2c9NSA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UubG9nPTAgZGlzYWJsZXMgc2hvcnRsb2cnICcKIAllY2hvICJNZXJnZSBicmFuY2ggJHthcG9zfWxlZnQke2Fwb3N9IiA+ZXhwZWN0ZWQKIAlnaXQgLWMgbWVyZ2UubG9nPTAgZm10LW1lcmdlLW1zZyA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwgJiYKQEAgLTI0OCwxNCArMjYxLDE0IEBACiAJICBDb21tb24gIzEKIAlFT0YKIAotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQgbWVyZ2UubG9nICYmCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBtZXJnZS5zdW1tYXJ5ICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5sb2cgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLnN1bW1hcnkgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJZ2l0IGZldGNoICIkKHB3ZCkiIGxlZnQgJiYKIAlnaXQgZm10LW1lcmdlLW1zZyAtbSAiU3luYyB3aXRoIGxlZnQiIDwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbCAmJgogCWdpdCBmbXQtbWVyZ2UtbXNnIC0tbG9nIC1tICJTeW5jIHdpdGggbGVmdCIgXAogCQkJCQk8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5sb2cgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCiAJZ2l0IGZtdC1tZXJnZS1tc2cgLW0gIlN5bmMgd2l0aCBsZWZ0IiBcCiAJCQkJCTwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbC5sb2ctY29uZmlnICYmCiAJZ2l0IGZtdC1tZXJnZS1tc2cgLS1uby1sb2cgLW0gIlN5bmMgd2l0aCBsZWZ0IiBcCkBAIC0yOTAsMjkgKzMwMywyOSBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBmb3IgdHdvIGJyYW5jaGVzJyAnCi0JZ2l0IGNvbmZpZyBtZXJnZS5sb2cgdHJ1ZSAmJgotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLnN1bW1hcnkgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5sb2cgdHJ1ZSAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2Uuc3VtbWFyeSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgZmV0Y2ggLiBsZWZ0IHJpZ2h0ICYmCiAJZ2l0IGZtdC1tZXJnZS1tc2cgPC5naXQvRkVUQ0hfSEVBRCA+YWN0dWFsMSAmJgogCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5zdW1tYXJ5IHRydWUgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgdHJ1ZSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgZmV0Y2ggLiBsZWZ0IHJpZ2h0ICYmCiAJZ2l0IGZtdC1tZXJnZS1tc2cgPC5naXQvRkVUQ0hfSEVBRCA+YWN0dWFsMiAmJgogCi0JZ2l0IGNvbmZpZyBtZXJnZS5sb2cgeWVzICYmCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2Uuc3VtbWFyeSAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmxvZyB5ZXMgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLnN1bW1hcnkgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGZldGNoIC4gbGVmdCByaWdodCAmJgogCWdpdCBmbXQtbWVyZ2UtbXNnIDwuZ2l0L0ZFVENIX0hFQUQgPmFjdHVhbDMgJiYKIAotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLmxvZyAmJgotCWdpdCBjb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgogCWdpdCBmZXRjaCAuIGxlZnQgcmlnaHQgJiYKQEAgLTMyNSw4ICszMzgsOCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1tc2cgLUYnICcKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5sb2cgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgZmV0Y2ggLiBsZWZ0IHJpZ2h0ICYmCkBAIC0zMzUsOCArMzQ4LDggQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UtbXNnIC1GIGluIHN1YmRpcmVjdG9yeScgJwotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLmxvZyAmJgotCWdpdCBjb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgogCWdpdCBmZXRjaCAuIGxlZnQgcmlnaHQgJiYKQEAgLTM1MCw4ICszNjMsOCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1tc2cgd2l0aCBub3RoaW5nIHRvIG1lcmdlJyAnCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKIAogCT5lbXB0eSAmJgogCkBAIC0zNzYsOCArMzg5LDggQEAKIAkgIENvbW1vbiAjMQogCUVPRgogCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldC1hbGwgbWVyZ2UubG9nICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgorCXRlc3RfdW5jb25maWcgbWVyZ2UubG9nICYmCisJdGVzdF9jb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKIAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3RpY2sgJiYKQEAgLTQwNiw4ICs0MTksOCBAQAogCSAgQ29tbW9uICMxCiAJRU9GCiAKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBtZXJnZS5sb2cgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCisJdGVzdF91bmNvbmZpZyBtZXJnZS5sb2cgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5zdW1tYXJ5IHllcyAmJgogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfdGljayAmJgpAQCAtNDM2LDggKzQ0OSw4IEBACiAJICBDb21tb24gIzEKIAlFT0YKIAotCXRlc3RfbWlnaHRfZmFpbCBnaXQgY29uZmlnIC0tdW5zZXQtYWxsIG1lcmdlLmxvZyAmJgotCWdpdCBjb25maWcgbWVyZ2Uuc3VtbWFyeSB5ZXMgJiYKKwl0ZXN0X3VuY29uZmlnIG1lcmdlLmxvZyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCiAKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCkBAIC00NjQsNiArNDc3LDggQEAKIAkJZWNobyAiICAuLi4iCiAJfSA+ZXhwZWN0ZWQgJiYKIAorCXRlc3RfY29uZmlnIG1lcmdlLnN1bW1hcnkgeWVzICYmCisKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGZldGNoIC4gbG9uZyAmJgpAQCAtNDcyLDQgKzQ4Nyw0MyBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZS1tc2cgd2l0aCAibWVyZ2luZyIgYW4gYW5ub3RhdGVkIHRhZycgJworCXRlc3RfY29uZmlnIG1lcmdlLmxvZyB0cnVlICYmCisKKwlnaXQgY2hlY2tvdXQgbWFzdGVyXjAgJiYKKwlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gIk9uZSBzdGVwIGFoZWFkIiAmJgorCWdpdCB0YWcgLWEgLW0gIkFuIGFubm90YXRlZCBvbmUiIGFubm90ZSBIRUFEICYmCisKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IGZldGNoIC4gYW5ub3RlICYmCisKKwlnaXQgZm10LW1lcmdlLW1zZyA8LmdpdC9GRVRDSF9IRUFEID5hY3R1YWwgJiYKKwl7CisJCWNhdCA8PC1cRU9GCisJCU1lcmdlIHRhZyAnXCcnYW5ub3RlJ1wnJworCisJCUFuIGFubm90YXRlZCBvbmUKKworCQkqIHRhZyAnXCcnYW5ub3RlJ1wnJzoKKwkJICBPbmUgc3RlcCBhaGVhZAorCQlFT0YKKwl9ID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgorCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgorCWFubm90ZT0kKGdpdCByZXYtcGFyc2UgYW5ub3RlKSAmJgorCWdpdCBtZXJnZSAtLW5vLWNvbW1pdCAkYW5ub3RlICYmCisJeworCQljYXQgPDwtRU9GCisJCU1lcmdlIHRhZyAnXCcnJGFubm90ZSdcJycKKworCQlBbiBhbm5vdGF0ZWQgb25lCisKKwkJKiB0YWcgJ1wnJyRhbm5vdGUnXCcnOgorCQkgIE9uZSBzdGVwIGFoZWFkCisJCUVPRgorCX0gPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgLmdpdC9NRVJHRV9NU0cKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MDAxLW12LnNoIGIvdC90NzAwMS1tdi5zaAppbmRleCBhODQ1YjE1Li4xMDE4MTZlIDEwMDc1NQotLS0gYS90L3Q3MDAxLW12LnNoCisrKyBiL3QvdDcwMDEtbXYuc2gKQEAgLTIxOCwxMyArMjE4LDEzIEBACiAKIHJtIC1mIGRpcnR5IGRpcnR5MgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdnaXQgbXYgc2hvdWxkIG92ZXJ3cml0ZSBzeW1saW5rIHRvIGEgZmlsZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IG12IHNob3VsZCBvdmVyd3JpdGUgc3ltbGluayB0byBhIGZpbGUnICcKIAogCXJtIC1mciAuZ2l0ICYmCiAJZ2l0IGluaXQgJiYKIAllY2hvIDEgPm1vdmVkICYmCi0JbG4gLXMgbW92ZWQgc3ltbGluayAmJgotCWdpdCBhZGQgbW92ZWQgc3ltbGluayAmJgorCXRlc3RfbG5fc19hZGQgbW92ZWQgc3ltbGluayAmJgorCWdpdCBhZGQgbW92ZWQgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgbXYgbW92ZWQgc3ltbGluayAmJgogCWdpdCBtdiAtZiBtb3ZlZCBzeW1saW5rICYmCiAJISB0ZXN0IC1lIG1vdmVkICYmCkBAIC0yMzcsMjIgKzIzNywyNiBAQAogCiBybSAtZiBtb3ZlZCBzeW1saW5rCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2dpdCBtdiBzaG91bGQgb3ZlcndyaXRlIGZpbGUgd2l0aCBhIHN5bWxpbmsnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBtdiBzaG91bGQgb3ZlcndyaXRlIGZpbGUgd2l0aCBhIHN5bWxpbmsnICcKIAogCXJtIC1mciAuZ2l0ICYmCiAJZ2l0IGluaXQgJiYKIAllY2hvIDEgPm1vdmVkICYmCi0JbG4gLXMgbW92ZWQgc3ltbGluayAmJgotCWdpdCBhZGQgbW92ZWQgc3ltbGluayAmJgorCXRlc3RfbG5fc19hZGQgbW92ZWQgc3ltbGluayAmJgorCWdpdCBhZGQgbW92ZWQgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgbXYgc3ltbGluayBtb3ZlZCAmJgogCWdpdCBtdiAtZiBzeW1saW5rIG1vdmVkICYmCiAJISB0ZXN0IC1lIHN5bWxpbmsgJiYKLQl0ZXN0IC1oIG1vdmVkICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZi1maWxlcyAtLXF1aWV0CiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnY2hlY2sgbW92ZWQgc3ltbGluaycgJworCisJdGVzdCAtaCBtb3ZlZAorJworCiBybSAtZiBtb3ZlZCBzeW1saW5rCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzAwMy1maWx0ZXItYnJhbmNoLnNoIGIvdC90NzAwMy1maWx0ZXItYnJhbmNoLnNoCmluZGV4IDFlN2EyMDkuLjk0OTY3MzYgMTAwNzU1Ci0tLSBhL3QvdDcwMDMtZmlsdGVyLWJyYW5jaC5zaAorKysgYi90L3Q3MDAzLWZpbHRlci1icmFuY2guc2gKQEAgLTY0LDYgKzY0LDIwIEBACiAJZ3JlcCBkcmVwbyAiJFRSQVNIRElSL2JhY2t1cC1yZWZzIgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0cmVlLWZpbHRlciB3b3JrcyB3aXRoIC1kJyAnCisJZ2l0IGluaXQgZHJlcG8tdHJlZSAmJgorCSgKKwkJY2QgZHJlcG8tdHJlZSAmJgorCQl0ZXN0X2NvbW1pdCBvbmUgJiYKKwkJZ2l0IGZpbHRlci1icmFuY2ggLWQgIiRUUkFTSERJUi9kZm9vIiBcCisJCQktLXRyZWUtZmlsdGVyICJlY2hvIGNoYW5nZWQgPm9uZS50IiAmJgorCQllY2hvIGNoYW5nZWQgPmV4cGVjdCAmJgorCQlnaXQgY2F0LWZpbGUgYmxvYiBIRUFEOm9uZS50ID5hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCQl0ZXN0X2NtcCBvbmUudCBhY3R1YWwKKwkpCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0ZhaWwgaWYgY29tbWl0IGZpbHRlciBmYWlscycgJwogCXRlc3RfbXVzdF9mYWlsIGdpdCBmaWx0ZXItYnJhbmNoIC1mIC0tY29tbWl0LWZpbHRlciAiZXhpdCAxIiBIRUFECiAnCmRpZmYgLS1naXQgYS90L3Q3MDA0LXRhZy5zaCBiL3QvdDcwMDQtdGFnLnNoCmluZGV4IGY1YTc5YjEuLmM4ZDZlOWYgMTAwNzU1Ci0tLSBhL3QvdDcwMDQtdGFnLnNoCisrKyBiL3QvdDcwMDQtdGFnLnNoCkBAIC0xMDQsNiArMTA0LDE4IEBACiAJdGFnX2V4aXN0cyBteWhlYWQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1mb3JjZSBjYW4gY3JlYXRlIGEgdGFnIHdpdGggdGhlIG5hbWUgb2Ygb25lIGV4aXN0aW5nJyAnCisJdGFnX2V4aXN0cyBteXRhZyAmJgorCWdpdCB0YWcgLS1mb3JjZSBteXRhZyAmJgorCXRhZ19leGlzdHMgbXl0YWcnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tZm9yY2UgaXMgbW9vdCB3aXRoIGEgbm9uLWV4aXN0aW5nIHRhZyBuYW1lJyAnCisJZ2l0IHRhZyBuZXd0YWcgPmV4cGVjdCAmJgorCWdpdCB0YWcgLS1mb3JjZSBmb3JjZXRhZyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworZ2l0IHRhZyAtZCBuZXd0YWcgZm9yY2V0YWcKKwogIyBkZWxldGluZyB0YWdzOgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0cnlpbmcgdG8gZGVsZXRlIGFuIHVua25vd24gdGFnIHNob3VsZCBmYWlsJyAnCmRpZmYgLS1naXQgYS90L3Q3MDYwLXd0c3RhdHVzLnNoIGIvdC90NzA2MC13dHN0YXR1cy5zaAppbmRleCBmNGYzOGE1Li41MmVmMDZiIDEwMDc1NQotLS0gYS90L3Q3MDYwLXd0c3RhdHVzLnNoCisrKyBiL3QvdDcwNjAtd3RzdGF0dXMuc2gKQEAgLTUsNiArNSw3IEBACiAuIC4vdGVzdC1saWIuc2gKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCBhZHZpY2Uuc3RhdHVzdW9wdGlvbiBmYWxzZSAmJgogCXRlc3RfY29tbWl0IEEgJiYKIAl0ZXN0X2NvbW1pdCBCIG9uZXNpZGUgYWRkZWQgJiYKIAlnaXQgY2hlY2tvdXQgQV4wICYmCmRpZmYgLS1naXQgYS90L3Q3MDYxLXd0c3RhdHVzLWlnbm9yZS5zaCBiL3QvdDcwNjEtd3RzdGF0dXMtaWdub3JlLnNoCmluZGV4IDBkYTEyMTQuLjQ2MDc4OWIgMTAwNzU1Ci0tLSBhL3QvdDcwNjEtd3RzdGF0dXMtaWdub3JlLnNoCisrKyBiL3QvdDcwNjEtd3RzdGF0dXMtaWdub3JlLnNoCkBAIC0zMiw2ICszMiwyNSBAQAogCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkIC11ID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyB1bnRyYWNrZWQvdW5jb21taXR0ZWQKKyEhIHVudHJhY2tlZC9pZ25vcmVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHByZWZpeGVkIHVudHJhY2tlZCBkaXJlY3Rvcnkgd2l0aCAtLWlnbm9yZWQnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCB1bnRyYWNrZWQvID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IHVudHJhY2tlZC91bmNvbW1pdHRlZAorISEgdW50cmFja2VkL2lnbm9yZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgcHJlZml4ZWQgdW50cmFja2VkIHN1Yi1kaXJlY3Rvcnkgd2l0aCAtLWlnbm9yZWQgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSB1bnRyYWNrZWQvID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKIAogY2F0ID5leHBlY3RlZCA8PFxFT0YKID8/IC5naXRpZ25vcmUKQEAgLTY0LDEzICs4MywzNSBAQAogPz8gLmdpdGlnbm9yZQogPz8gYWN0dWFsCiA/PyBleHBlY3RlZAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBlbXB0eSB1bnRyYWNrZWQgZGlyZWN0b3J5IHdpdGggLS1pZ25vcmUnICcKKwlybSAtcmYgaWdub3JlZCAmJgorCW1rZGlyIHVudHJhY2tlZC1pZ25vcmVkICYmCisJbWtkaXIgdW50cmFja2VkLWlnbm9yZWQvdGVzdCAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgZW1wdHkgdW50cmFja2VkIGRpcmVjdG9yeSB3aXRoIC0taWdub3JlIC11JyAnCisJZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLWlnbm9yZWQgLXUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8XEVPRgorPz8gLmdpdGlnbm9yZQorPz8gYWN0dWFsCis/PyBleHBlY3RlZAogISEgdW50cmFja2VkLWlnbm9yZWQvCiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHVudHJhY2tlZCBkaXJlY3Rvcnkgd2l0aCBpZ25vcmVkIGZpbGVzIHdpdGggLS1pZ25vcmUnICcKLQlybSAtcmYgaWdub3JlZCAmJgotCW1rZGlyIHVudHJhY2tlZC1pZ25vcmVkICYmCi0JbWtkaXIgdW50cmFja2VkLWlnbm9yZWQvdGVzdCAmJgogCTogPnVudHJhY2tlZC1pZ25vcmVkL2lnbm9yZWQgJiYKIAk6ID51bnRyYWNrZWQtaWdub3JlZC90ZXN0L2lnbm9yZWQgJiYKIAlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCA+YWN0dWFsICYmCkBAIC0xMjIsMTAgKzE2MywzNCBAQAogPz8gLmdpdGlnbm9yZQogPz8gYWN0dWFsCiA/PyBleHBlY3RlZAotISEgdHJhY2tlZC8KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSBhbmQgaWdub3JlZCBmaWxlIHdpdGggLS1pZ25vcmUnICcKKwllY2hvICJjb21taXR0ZWQiID4+LmdpdGlnbm9yZSAmJgorCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKworY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSBhbmQgaWdub3JlZCBmaWxlIHdpdGggLS1pZ25vcmUgLXUnICcKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCAtdSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB0cmFja2VkL3VuY29tbWl0dGVkCiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGlnbm9yZWQgdHJhY2tlZCBkaXJlY3RvcnkgYW5kIHVuY29tbWl0dGVkIGZpbGUgd2l0aCAtLWlnbm9yZScgJworCWVjaG8gInRyYWNrZWQiID4uZ2l0aWdub3JlICYmCiAJOiA+dHJhY2tlZC91bmNvbW1pdHRlZCAmJgogCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKQEAgLTE0Myw0ICsyMDgsNTggQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAorY2F0ID5leHBlY3RlZCA8PFxFT0YKKz8/IC5naXRpZ25vcmUKKz8/IGFjdHVhbAorPz8gZXhwZWN0ZWQKKyEhIHRyYWNrZWQvaWdub3JlZC8KK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSB3aXRoIHVuY29tbWl0dGVkIGZpbGUgaW4gdW50cmFja2VkIHN1YmRpciB3aXRoIC0taWdub3JlJyAnCisJcm0gLXJmIHRyYWNrZWQvdW5jb21taXR0ZWQgJiYKKwlta2RpciB0cmFja2VkL2lnbm9yZWQgJiYKKwk6ID50cmFja2VkL2lnbm9yZWQvdW5jb21taXR0ZWQgJiYKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB0cmFja2VkL2lnbm9yZWQvdW5jb21taXR0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSB3aXRoIHVuY29tbWl0dGVkIGZpbGUgaW4gdW50cmFja2VkIHN1YmRpciB3aXRoIC0taWdub3JlIC11JyAnCisJZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAtLWlnbm9yZWQgLXUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPmV4cGVjdGVkIDw8XEVPRgorPz8gLmdpdGlnbm9yZQorPz8gYWN0dWFsCis/PyBleHBlY3RlZAorISEgdHJhY2tlZC9pZ25vcmVkL3VuY29tbWl0dGVkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGlnbm9yZWQgdHJhY2tlZCBkaXJlY3Rvcnkgd2l0aCB1bmNvbW1pdHRlZCBmaWxlIGluIHRyYWNrZWQgc3ViZGlyIHdpdGggLS1pZ25vcmUnICcKKwk6ID50cmFja2VkL2lnbm9yZWQvY29tbWl0dGVkICYmCisJZ2l0IGFkZCAtZiB0cmFja2VkL2lnbm9yZWQvY29tbWl0dGVkICYmCisJZ2l0IGNvbW1pdCAtbS4gJiYKKwlnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0taWdub3JlZCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK2NhdCA+ZXhwZWN0ZWQgPDxcRU9GCis/PyAuZ2l0aWdub3JlCis/PyBhY3R1YWwKKz8/IGV4cGVjdGVkCishISB0cmFja2VkL2lnbm9yZWQvdW5jb21taXR0ZWQKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeSB3aXRoIHVuY29tbWl0dGVkIGZpbGUgaW4gdHJhY2tlZCBzdWJkaXIgd2l0aCAtLWlnbm9yZSAtdScgJworCWdpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLS1pZ25vcmVkIC11ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MTAyLXJlc2V0LnNoIGIvdC90NzEwMi1yZXNldC5zaAppbmRleCBiMDk2ZGM4Li4zMDBiZTg2IDEwMDc1NQotLS0gYS90L3Q3MTAyLXJlc2V0LnNoCisrKyBiL3QvdDcxMDItcmVzZXQuc2gKQEAgLTI4LDcgKzI4LDggQEAKIAogCWVjaG8gIjFzdCBsaW5lIDJuZCBmaWxlIiA+c2Vjb25kZmlsZSAmJgogCWVjaG8gIjJuZCBsaW5lIDJuZCBmaWxlIiA+PnNlY29uZGZpbGUgJiYKLQlnaXQgY29tbWl0IC1hIC1tICJtb2RpZnkgMm5kIGZpbGUiCisJZ2l0IGNvbW1pdCAtYSAtbSAibW9kaWZ5IDJuZCBmaWxlIiAmJgorCWhlYWQ1PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKQogJwogIyBnaXQgbG9nIC0tcHJldHR5PW9uZWxpbmUgIyB0byBzZWUgdGhvc2UgU0hBMSBpbnZvbHZlZAogCkBAIC01Niw3ICs1Nyw3IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0tbWl4ZWQgYWFhYWFhICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0tc29mdCBhYWFhYWEgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgLS1oYXJkIGFhYWFhYSAmJgotCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IC0tc29mdCB3aXRoIHVubWVyZ2VkIGluZGV4IHNob3VsZCBmYWlsJyAnCkBAIC03NCw3ICs3NSw3IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0taGFyZCAtLSBmaXJzdCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLXNvZnQgSEVBRF4gLS0gZmlyc3QgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgLS1oYXJkIEhFQUReIC0tIGZpcnN0ICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l2aW5nIHVucmVjb2duaXplZCBvcHRpb25zIHNob3VsZCBmYWlsJyAnCkBAIC04Niw3ICs4Nyw3IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IC0tc29mdCAtbyAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLWhhcmQgLS1vdGhlciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLWhhcmQgLW8gJiYKLQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMKKwljaGVja19jaGFuZ2VzICRoZWFkNQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKQEAgLTExMCw3ICsxMTEsNyBAQAogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCWdpdCBicmFuY2ggLUQgYnJhbmNoMSBicmFuY2gyICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCkBAIC0xMzMsMjcgKzEzNCwyNyBAQAogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCWdpdCBicmFuY2ggLUQgYnJhbmNoMyBicmFuY2g0ICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAJJ3Jlc2V0dGluZyB0byBIRUFEIHdpdGggbm8gY2hhbmdlcyBzaG91bGQgc3VjY2VlZCBhbmQgZG8gbm90aGluZycgJwogCWdpdCByZXNldCAtLWhhcmQgJiYKLQkJY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjICYmCisJCWNoZWNrX2NoYW5nZXMgJGhlYWQ1ICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBIRUFEICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCAtLXNvZnQgJiYKLQkJY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjICYmCisJCWNoZWNrX2NoYW5nZXMgJGhlYWQ1ICYmCiAJZ2l0IHJlc2V0IC0tc29mdCBIRUFEICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCAtLW1peGVkICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCAtLW1peGVkIEhFQUQgJiYKLQkJY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjICYmCisJCWNoZWNrX2NoYW5nZXMgJGhlYWQ1ICYmCiAJZ2l0IHJlc2V0ICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYyAmJgorCQljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCWdpdCByZXNldCBIRUFEICYmCi0JCWNoZWNrX2NoYW5nZXMgM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCQljaGVja19jaGFuZ2VzICRoZWFkNQogJwogCiA+LmRpZmZfZXhwZWN0CkBAIC0xNzYsNyArMTc3LDcgQEAKIAlnaXQgcmVzZXQgLS1zb2Z0IEhFQUReICYmCiAJY2hlY2tfY2hhbmdlcyBkMWE0YmMzYWJjZTQ4Mjk2MjhhZTJkY2IwZDYwZWYzZDFhNzhiMWM0ICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIE9SSUdfSEVBRCkiID0gXAotCQkJM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCQkJJGhlYWQ1CiAnCiAKID4uZGlmZl9leHBlY3QKQEAgLTE5Myw3ICsxOTQsNyBAQAogCWdpdCBjb21taXQgLWEgLUMgT1JJR19IRUFEICYmCiAJY2hlY2tfY2hhbmdlcyAzZDNiN2JlMDExYTU4Y2EwYzE3OWFlNDVkOTRlNmM4M2MwYjBjZDBkICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIE9SSUdfSEVBRCkiID0gXAotCQkJM2VjMzk2NTFlN2Y0NGVhNTMxYTVkZTE4YTlmYTc5MWMwZmQzNzBmYworCQkJJGhlYWQ1CiAnCiAKID4uZGlmZl9leHBlY3QKQEAgLTMwMyw3ICszMDQsNyBAQAogCWVjaG8gIjFzdCBsaW5lIDJuZCBmaWxlIiA+c2Vjb25kZmlsZSAmJgogCWVjaG8gIjJuZCBsaW5lIDJuZCBmaWxlIiA+PnNlY29uZGZpbGUgJiYKIAlnaXQgY29tbWl0IC1hIC1tICJtb2RpZnkgMm5kIGZpbGUiICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogPi5kaWZmX2V4cGVjdApAQCAtMzQxLDE1ICszNDIsMTUgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSctLWhhcmQgcmVzZXQgdG8gT1JJR19IRUFEIHNob3VsZCBjbGVhciBhIGZhc3QtZm9yd2FyZCBtZXJnZScgJwogCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKLQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMgJiYKKwljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCiAJZ2l0IHB1bGwgLiBicmFuY2gxICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBPUklHX0hFQUQgJiYKLQljaGVja19jaGFuZ2VzIDNlYzM5NjUxZTdmNDRlYTUzMWE1ZGUxOGE5ZmE3OTFjMGZkMzcwZmMgJiYKKwljaGVja19jaGFuZ2VzICRoZWFkNSAmJgogCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCWdpdCBicmFuY2ggLUQgYnJhbmNoMSBicmFuY2gyICYmCi0JY2hlY2tfY2hhbmdlcyAzZWMzOTY1MWU3ZjQ0ZWE1MzFhNWRlMThhOWZhNzkxYzBmZDM3MGZjCisJY2hlY2tfY2hhbmdlcyAkaGVhZDUKICcKIAogY2F0ID4gZXhwZWN0IDw8IEVPRgpAQCAtMzg4LDcgKzM4OSw4IEBACiAJZWNobyA0ID4gZmlsZTQgJiYKIAllY2hvIDUgPiBmaWxlMSAmJgogCWdpdCBhZGQgZmlsZTEgZmlsZTMgZmlsZTQgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgcmVzZXQgSEVBRCAtLSBmaWxlMSBmaWxlMiBmaWxlMyAmJgorCWdpdCByZXNldCBIRUFEIC0tIGZpbGUxIGZpbGUyIGZpbGUzICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYgLS1xdWlldCAmJgogCWdpdCBkaWZmID4gb3V0cHV0ICYmCiAJdGVzdF9jbXAgb3V0cHV0IGV4cGVjdCAmJgogCWdpdCBkaWZmIC0tY2FjaGVkID4gb3V0cHV0ICYmCkBAIC00MDIsNyArNDA0LDggQEAKIAk+c3ViL2ZpbGUyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBzdWIvZmlsZTEgc3ViL2ZpbGUyICYmCiAJVD0kKGdpdCB3cml0ZS10cmVlKSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCBIRUFEIHN1Yi9maWxlMiAmJgorCWdpdCByZXNldCBIRUFEIHN1Yi9maWxlMiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBkaWZmIC0tcXVpZXQgJiYKIAlVPSQoZ2l0IHdyaXRlLXRyZWUpICYmCiAJZWNobyAiJFQiICYmCiAJZWNobyAiJFUiICYmCkBAIC00NDAsNyArNDQzLDggQEAKIAkJZWNobyAiMTAwNjQ0ICRGMyAzCWZpbGUyIgogCX0gfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgogCWdpdCBscy1maWxlcyAtdSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCBIRUFEIGZpbGUyICYmCisJZ2l0IHJlc2V0IEhFQUQgZmlsZTIgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLXF1aWV0ICYmCiAJZ2l0IGRpZmYtaW5kZXggLS1leGl0LWNvZGUgLS1jYWNoZWQgSEVBRAogJwogCkBAIC00NDksMTAgKzQ1MywxMSBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAk+c2Vjb25kZmlsZSAmJgogCWdpdCBhZGQgc2Vjb25kZmlsZSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCBzZWNvbmRmaWxlICYmCisJZ2l0IHJlc2V0IHNlY29uZGZpbGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLXF1aWV0IC0tIHNlY29uZGZpbGUgJiYKIAl0ZXN0IC16ICIkKGdpdCBkaWZmIC0tY2FjaGVkIC0tbmFtZS1vbmx5KSIgJiYKIAl0ZXN0IC1mIHNlY29uZGZpbGUgJiYKLQl0ZXN0ICEgLXMgc2Vjb25kZmlsZQorCXRlc3RfbXVzdF9iZV9lbXB0eSBzZWNvbmRmaWxlCiAKICcKIApAQCAtNDc0LDcgKzQ3OSw4IEBACiAJPnNlY29uZGZpbGUgJiYKIAlnaXQgYWRkIHNlY29uZGZpbGUgJiYKIAlybSAtZiBzZWNvbmRmaWxlICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlc2V0IEhFQUQgc2Vjb25kZmlsZSAmJgorCWdpdCByZXNldCBIRUFEIHNlY29uZGZpbGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLXF1aWV0ICYmCiAJdGVzdCAteiAiJChnaXQgZGlmZiAtLWNhY2hlZCAtLW5hbWUtb25seSkiICYmCiAJdGVzdCAhIC1mIHNlY29uZGZpbGUKIApAQCAtNDg2LDkgKzQ5MiwxOCBAQAogCT5zZWNvbmRmaWxlICYmCiAJZ2l0IGFkZCBzZWNvbmRmaWxlICYmCiAJcm0gLWYgc2Vjb25kZmlsZSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCAtLSBzZWNvbmRmaWxlICYmCisJZ2l0IHJlc2V0IC0tIHNlY29uZGZpbGUgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLXF1aWV0ICYmCiAJdGVzdCAteiAiJChnaXQgZGlmZiAtLWNhY2hlZCAtLW5hbWUtb25seSkiICYmCiAJdGVzdCAhIC1mIHNlY29uZGZpbGUKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzZXQgd2l0aCBwYXRocyBhY2NlcHRzIHRyZWUnICcKKwkjIGZvciBzaW1wbGVyIHRlc3RzLCBkcm9wIGxhc3QgY29tbWl0IGNvbnRhaW5pbmcgYWRkZWQgZmlsZXMKKwlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCisJZ2l0IHJlc2V0IEhFQUReXnt0cmVlfSAtLSAuICYmCisJZ2l0IGRpZmYgLS1jYWNoZWQgSEVBRF4gLS1leGl0LWNvZGUgJiYKKwlnaXQgZGlmZiBIRUFEIC0tZXhpdC1jb2RlCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzEwNi1yZXNldC11bmJvcm4tYnJhbmNoLnNoIGIvdC90NzEwNi1yZXNldC11bmJvcm4tYnJhbmNoLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgwNjJjZjUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3MTA2LXJlc2V0LXVuYm9ybi1icmFuY2guc2gKQEAgLTAsMCArMSw1MiBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCByZXNldCBzaG91bGQgd29yayBvbiB1bmJvcm4gYnJhbmNoJworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJZWNobyBhID5hICYmCisJZWNobyBiID5iCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0JyAnCisJZ2l0IGFkZCBhIGIgJiYKKwlnaXQgcmVzZXQgJiYKKwl0ZXN0ICIkKGdpdCBscy1maWxlcykiID0gIiIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzZXQgSEVBRCcgJworCXJtIC5naXQvaW5kZXggJiYKKwlnaXQgYWRkIGEgYiAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXNldCBIRUFECisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0ICRmaWxlJyAnCisJcm0gLmdpdC9pbmRleCAmJgorCWdpdCBhZGQgYSBiICYmCisJZ2l0IHJlc2V0IGEgJiYKKwl0ZXN0ICIkKGdpdCBscy1maWxlcykiID0gImIiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IC1wJyAnCisJcm0gLmdpdC9pbmRleCAmJgorCWdpdCBhZGQgYSAmJgorCWVjaG8geSB8IGdpdCByZXNldCAtcCAmJgorCXRlc3QgIiQoZ2l0IGxzLWZpbGVzKSIgPSAiIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNldCAtLXNvZnQgaXMgYSBuby1vcCcgJworCXJtIC5naXQvaW5kZXggJiYKKwlnaXQgYWRkIGEgJiYKKwlnaXQgcmVzZXQgLS1zb2Z0CisJdGVzdCAiJChnaXQgbHMtZmlsZXMpIiA9ICJhIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNldCAtLWhhcmQnICcKKwlybSAuZ2l0L2luZGV4ICYmCisJZ2l0IGFkZCBhICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCXRlc3QgIiQoZ2l0IGxzLWZpbGVzKSIgPSAiIiAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIGEKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MjAxLWNvLnNoIGIvdC90NzIwMS1jby5zaAppbmRleCBiZTk2NzJlLi4wYzllYzBhIDEwMDc1NQotLS0gYS90L3Q3MjAxLWNvLnNoCisrKyBiL3QvdDcyMDEtY28uc2gKQEAgLTQzMSw2ICs0MzEsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnY2hlY2tvdXQgd2l0aCAtLXRyYWNrIGZha2VzIGEgc2Vuc2libGUgLWIgPG5hbWU+JyAnCisgICAgZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLmZldGNoICIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9vcmlnaW4vKiIgJiYKICAgICBnaXQgdXBkYXRlLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL2tvYWxhL2JlYXIgcmVuYW1lciAmJgogCiAgICAgZ2l0IGNoZWNrb3V0IC0tdHJhY2sgb3JpZ2luL2tvYWxhL2JlYXIgJiYKZGlmZiAtLWdpdCBhL3QvdDczMDAtY2xlYW4uc2ggYi90L3Q3MzAwLWNsZWFuLnNoCmluZGV4IGNjZmI1NGQuLjcxMGJlOTAgMTAwNzU1Ci0tLSBhL3QvdDczMDAtY2xlYW4uc2gKKysrIGIvdC90NzMwMC1jbGVhbi5zaApAQCAtMjk4LDYgKzI5OCwyMyBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtZCAteCB3aXRoIGlnbm9yZWQgdHJhY2tlZCBkaXJlY3RvcnknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJZ2l0IGNsZWFuIC1kIC14IC1lIHNyYyAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAhIC1mIGEub3V0ICYmCisJdGVzdCAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgISAtZCBkb2NzICYmCisJdGVzdCAhIC1mIG9iai5vICYmCisJdGVzdCAhIC1kIGJ1aWxkCisKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1YJyAnCiAKIAlta2RpciAtcCBidWlsZCBkb2NzICYmCkBAIC0zMzIsNiArMzQ5LDIzIEBACiAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1kIC1YIHdpdGggaWdub3JlZCB0cmFja2VkIGRpcmVjdG9yeScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIGRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwlnaXQgY2xlYW4gLWQgLVggLWUgc3JjICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0IC1mIGEub3V0ICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0ICEgLWYgb2JqLm8gJiYKKwl0ZXN0ICEgLWQgYnVpbGQKKworJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbi5yZXF1aXJlRm9yY2UgZGVmYXVsdHMgdG8gdHJ1ZScgJwogCiAJZ2l0IGNvbmZpZyAtLXVuc2V0IGNsZWFuLnJlcXVpcmVGb3JjZSAmJgpkaWZmIC0tZ2l0IGEvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2ggYi90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaAppbmRleCBkZTdkNDUzLi43MWE0MmYwIDEwMDc1NQotLS0gYS90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaAorKysgYi90L3Q3NDAwLXN1Ym1vZHVsZS1iYXNpYy5zaApAQCAtNzgsNyArNzgsNyBAQAogCSgKIAkJY2QgYWRkdGVzdCAmJgogCQlnaXQgc3VibW9kdWxlIGFkZCAtcSAiJHN1Ym1vZHVybCIgc3VibW9kID5hY3R1YWwgJiYKLQkJdGVzdCAhIC1zIGFjdHVhbCAmJgorCQl0ZXN0X211c3RfYmVfZW1wdHkgYWN0dWFsICYmCiAJCWVjaG8gImdpdGRpcjogLi4vLmdpdC9tb2R1bGVzL3N1Ym1vZCIgPmV4cGVjdCAmJgogCQl0ZXN0X2NtcCBleHBlY3Qgc3VibW9kLy5naXQgJiYKIAkJKApAQCAtMTMzLDYgKzEzMyw3IEBACiAJKAogCQljZCBhZGR0ZXN0ICYmCiAJCWdpdCBzdWJtb2R1bGUgYWRkIC1iIGluaXRpYWwgIiRzdWJtb2R1cmwiIHN1Ym1vZC1icmFuY2ggJiYKKwkJdGVzdCAiaW5pdGlhbCIgPSAiJChnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWJtb2QtYnJhbmNoLmJyYW5jaCkiICYmCiAJCWdpdCBzdWJtb2R1bGUgaW5pdAogCSkgJiYKIApAQCAtMzA3LDcgKzMwOCw3IEBACiAKIAlta2RpciBpbml0ICYmCiAJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLXEgPnVwZGF0ZS5vdXQgJiYKLQl0ZXN0ICEgLXMgdXBkYXRlLm91dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSB1cGRhdGUub3V0ICYmCiAKIAlpbnNwZWN0IGluaXQgJiYKIAl0ZXN0X2NtcCBleHBlY3QgaGVhZC1zaGExCkBAIC02OTUsNyArNjk2LDcgQEAKIAkJcm0gLXJmIHJlcG8gJiYKIAkJZ2l0IHJtIHJlcG8gJiYKIAkJZ2l0IHN1Ym1vZHVsZSBhZGQgLXEgLS1uYW1lIHJlcG9fbmV3ICIkc3VibW9kdXJsL2JhcmUuZ2l0IiByZXBvID5hY3R1YWwgJiYKLQkJdGVzdCAhIC1zIGFjdHVhbCAmJgorCQl0ZXN0X211c3RfYmVfZW1wdHkgYWN0dWFsICYmCiAJCWVjaG8gImdpdGRpcjogLi4vLmdpdC9tb2R1bGVzL3N1Ym1vZCIgPmV4cGVjdCAmJgogCQl0ZXN0X2NtcCBleHBlY3Qgc3VibW9kLy5naXQgJiYKIAkJKApAQCAtNzU2LDQgKzc1NywxMzAgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldCB1cCBhIHNlY29uZCBzdWJtb2R1bGUnICcKKwlnaXQgc3VibW9kdWxlIGFkZCAuL2luaXQyIGV4YW1wbGUyICYmCisJZ2l0IGNvbW1pdCAtbSAic3VibW9kdWxlIGV4YW1wbGUyIGFkZGVkIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IHNob3VsZCByZW1vdmUgdGhlIHdob2xlIHN1Ym1vZHVsZSBzZWN0aW9uIGZyb20gLmdpdC9jb25maWcnICcKKwlnaXQgY29uZmlnIHN1Ym1vZHVsZS5leGFtcGxlLmZvbyBiYXIgJiYKKwlnaXQgY29uZmlnIHN1Ym1vZHVsZS5leGFtcGxlMi5mcm90eiBuaXRmb2wgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCBpbml0ICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0IC1uICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGUyXC4iKSIgJiYKKwl0ZXN0IC1mIGV4YW1wbGUyLy5naXQgJiYKKwlybWRpciBpbml0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBkZWluaXQgLiBkZWluaXRzIGFsbCBpbml0aWFsaXplZCBzdWJtb2R1bGVzJyAnCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJZ2l0IGNvbmZpZyBzdWJtb2R1bGUuZXhhbXBsZS5mb28gYmFyICYmCisJZ2l0IGNvbmZpZyBzdWJtb2R1bGUuZXhhbXBsZTIuZnJvdHogbml0Zm9sICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBkZWluaXQgJiYKKwlnaXQgc3VibW9kdWxlIGRlaW5pdCAuID5hY3R1YWwgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGVcLiIpIiAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZTJcLiIpIiAmJgorCXRlc3RfaTE4bmdyZXAgIkNsZWFyZWQgZGlyZWN0b3J5IC5pbml0IiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuZXhhbXBsZTIiIGFjdHVhbCAmJgorCXJtZGlyIGluaXQgZXhhbXBsZTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGRlaW5pdCBkZWluaXRzIGEgc3VibW9kdWxlIHdoZW4gaXRzIHdvcmsgdHJlZSBpcyBtaXNzaW5nIG9yIGVtcHR5JyAnCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJcm0gLXJmIGluaXQgZXhhbXBsZTIvKiBleGFtcGxlMi8uZ2l0ICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCBleGFtcGxlMiA+YWN0dWFsICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0IC16ICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGUyXC4iKSIgJiYKKwl0ZXN0X2kxOG5ncmVwICEgIkNsZWFyZWQgZGlyZWN0b3J5IC5pbml0IiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuZXhhbXBsZTIiIGFjdHVhbCAmJgorCXJtZGlyIGluaXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGRlaW5pdCBmYWlscyB3aGVuIHRoZSBzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZpY2F0aW9ucyB1bmxlc3MgZm9yY2VkJyAnCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJZWNobyBYID4+aW5pdC9zICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCAmJgorCXRlc3QgLW4gIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiICYmCisJdGVzdCAtZiBleGFtcGxlMi8uZ2l0ICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgLWYgaW5pdCA+YWN0dWFsICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJcm1kaXIgaW5pdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IGZhaWxzIHdoZW4gdGhlIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgZmlsZXMgdW5sZXNzIGZvcmNlZCcgJworCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAmJgorCWVjaG8gWCA+PmluaXQvdW50cmFja2VkICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCAmJgorCXRlc3QgLW4gIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiICYmCisJdGVzdCAtZiBleGFtcGxlMi8uZ2l0ICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgLWYgaW5pdCA+YWN0dWFsICYmCisJdGVzdCAteiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlXC4iKSIgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJcm1kaXIgaW5pdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IGZhaWxzIHdoZW4gdGhlIHN1Ym1vZHVsZSBIRUFEIGRvZXMgbm90IG1hdGNoIHVubGVzcyBmb3JjZWQnICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwkoCisJCWNkIGluaXQgJiYKKwkJZ2l0IGNoZWNrb3V0IEhFQUReCisJKSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdWJtb2R1bGUgZGVpbml0IGluaXQgJiYKKwl0ZXN0IC1uICIkKGdpdCBjb25maWcgLS1nZXQtcmVnZXhwICJzdWJtb2R1bGVcLmV4YW1wbGVcLiIpIiAmJgorCXRlc3QgLWYgZXhhbXBsZTIvLmdpdCAmJgorCWdpdCBzdWJtb2R1bGUgZGVpbml0IC1mIGluaXQgPmFjdHVhbCAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiICYmCisJdGVzdF9pMThuZ3JlcCAiQ2xlYXJlZCBkaXJlY3RvcnkgLmluaXQiIGFjdHVhbCAmJgorCXJtZGlyIGluaXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGRlaW5pdCBpcyBzaWxlbnQgd2hlbiB1c2VkIG9uIGFuIHVuaW5pdGlhbGl6ZWQgc3VibW9kdWxlJyAnCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCA+YWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAiU3VibW9kdWxlIC5leGFtcGxlLiAoLiopIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAuaW5pdCIgYWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAiQ2xlYXJlZCBkaXJlY3RvcnkgLmluaXQiIGFjdHVhbCAmJgorCWdpdCBzdWJtb2R1bGUgZGVpbml0IGluaXQgPmFjdHVhbCAmJgorCXRlc3RfaTE4bmdyZXAgISAiU3VibW9kdWxlIC5leGFtcGxlLiAoLiopIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAuaW5pdCIgYWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAiQ2xlYXJlZCBkaXJlY3RvcnkgLmluaXQiIGFjdHVhbCAmJgorCWdpdCBzdWJtb2R1bGUgZGVpbml0IC4gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmdyZXAgISAiU3VibW9kdWxlIC5leGFtcGxlLiAoLiopIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAuaW5pdCIgYWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAiU3VibW9kdWxlIC5leGFtcGxlMi4gKC4qKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggLmV4YW1wbGUyIiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICJDbGVhcmVkIGRpcmVjdG9yeSAuaW5pdCIgYWN0dWFsICYmCisJZ2l0IHN1Ym1vZHVsZSBkZWluaXQgLiA+YWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAhICJTdWJtb2R1bGUgLmV4YW1wbGUuICguKikgdW5yZWdpc3RlcmVkIGZvciBwYXRoIC5pbml0IiBhY3R1YWwgJiYKKwl0ZXN0X2kxOG5ncmVwICEgIlN1Ym1vZHVsZSAuZXhhbXBsZTIuICguKikgdW5yZWdpc3RlcmVkIGZvciBwYXRoIC5leGFtcGxlMiIgYWN0dWFsICYmCisJdGVzdF9pMThuZ3JlcCAiQ2xlYXJlZCBkaXJlY3RvcnkgLmluaXQiIGFjdHVhbCAmJgorCXJtZGlyIGluaXQgZXhhbXBsZTIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGRlaW5pdCBmYWlscyB3aGVuIHN1Ym1vZHVsZSBoYXMgYSAuZ2l0IGRpcmVjdG9yeSBldmVuIHdoZW4gZm9yY2VkJyAnCisJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJKAorCQljZCBpbml0ICYmCisJCXJtIC5naXQgJiYKKwkJY3AgLVIgLi4vLmdpdC9tb2R1bGVzL2V4YW1wbGUgLmdpdCAmJgorCQlHSVRfV09SS19UUkVFPS4gZ2l0IGNvbmZpZyAtLXVuc2V0IGNvcmUud29ya3RyZWUKKwkpICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBkZWluaXQgaW5pdCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdWJtb2R1bGUgZGVpbml0IC1mIGluaXQgJiYKKwl0ZXN0IC1kIGluaXQvLmdpdCAmJgorCXRlc3QgLW4gIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSB3aXRoIFVURi04IG5hbWUnICcKKwlzdm5hbWU9JChwcmludGYgIlwzMDNcMjQ1IFwzMDNcMjQ0XDMwM1wyNjYiKSAmJgorCW1rZGlyICIkc3ZuYW1lIiAmJgorCSgKKwkJY2QgIiRzdm5hbWUiICYmCisJCWdpdCBpbml0ICYmCisJCT5zdWIgJiYKKwkJZ2l0IGFkZCBzdWIgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiaW5pdCBzdWIiCisJKSAmJgorCXRlc3RfY29uZmlnIGNvcmUucHJlY29tcG9zZXVuaWNvZGUgdHJ1ZSAmJgorCWdpdCBzdWJtb2R1bGUgYWRkIC4vIiRzdm5hbWUiICYmCisJZ2l0IHN1Ym1vZHVsZSA+JjIgJiYKKwl0ZXN0IC1uICIkKGdpdCBzdWJtb2R1bGUgfCBncmVwICIkc3ZuYW1lIikiCisnCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc0MDYtc3VibW9kdWxlLXVwZGF0ZS5zaCBiL3QvdDc0MDYtc3VibW9kdWxlLXVwZGF0ZS5zaAppbmRleCBmZWFlYzZjLi5hNGZmZWEwIDEwMDc1NQotLS0gYS90L3Q3NDA2LXN1Ym1vZHVsZS11cGRhdGUuc2gKKysrIGIvdC90NzQwNi1zdWJtb2R1bGUtdXBkYXRlLnNoCkBAIC0xMzUsNiArMTM1LDM3IEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgdXBkYXRlIC0tcmVtb3RlIHNob3VsZCBmZXRjaCB1cHN0cmVhbSBjaGFuZ2VzJyAnCisJKGNkIHN1Ym1vZHVsZSAmJgorCSBlY2hvIGxpbmU0ID4+IGZpbGUgJiYKKwkgZ2l0IGFkZCBmaWxlICYmCisJIHRlc3RfdGljayAmJgorCSBnaXQgY29tbWl0IC1tICJ1cHN0cmVhbSBsaW5lNCIKKwkpICYmCisJKGNkIHN1cGVyICYmCisJIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0tcmVtb3RlIC0tZm9yY2Ugc3VibW9kdWxlICYmCisJIGNkIHN1Ym1vZHVsZSAmJgorCSB0ZXN0ICIkKGdpdCBsb2cgLTEgLS1vbmVsaW5lKSIgPSAiJChHSVRfRElSPS4uLy4uL3N1Ym1vZHVsZS8uZ2l0IGdpdCBsb2cgLTEgLS1vbmVsaW5lKSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvY2FsIGNvbmZpZyBzaG91bGQgb3ZlcnJpZGUgLmdpdG1vZHVsZXMgYnJhbmNoJyAnCisJKGNkIHN1Ym1vZHVsZSAmJgorCSBnaXQgY2hlY2tvdXQgLWIgdGVzdC1icmFuY2ggJiYKKwkgZWNobyBsaW5lNSA+PiBmaWxlICYmCisJIGdpdCBhZGQgZmlsZSAmJgorCSB0ZXN0X3RpY2sgJiYKKwkgZ2l0IGNvbW1pdCAtbSAidXBzdHJlYW0gbGluZTUiICYmCisJIGdpdCBjaGVja291dCBtYXN0ZXIKKwkpICYmCisJKGNkIHN1cGVyICYmCisJIGdpdCBjb25maWcgc3VibW9kdWxlLnN1Ym1vZHVsZS5icmFuY2ggdGVzdC1icmFuY2ggJiYKKwkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1yZW1vdGUgLS1mb3JjZSBzdWJtb2R1bGUgJiYKKwkgY2Qgc3VibW9kdWxlICYmCisJIHRlc3QgIiQoZ2l0IGxvZyAtMSAtLW9uZWxpbmUpIiA9ICIkKEdJVF9ESVI9Li4vLi4vc3VibW9kdWxlLy5naXQgZ2l0IGxvZyAtMSAtLW9uZWxpbmUgdGVzdC1icmFuY2gpIgorCSkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHVwZGF0ZSAtLXJlYmFzZSBzdGF5aW5nIG9uIG1hc3RlcicgJwogCShjZCBzdXBlci9zdWJtb2R1bGUgJiYKIAkgIGdpdCBjaGVja291dCBtYXN0ZXIKQEAgLTU2NSwxNCArNTk2LDE0IEBACiAJICAgZ2l0IGxvZyA+IC4uLy4uLy4uL2V4cGVjdGVkCiAJICApICYmCiAJICBnaXQgY29tbWl0IC1tICJhZGRlZCBzdWJzdWJtb2R1bGUiICYmCi0JICBnaXQgcHVzaAorCSAgZ2l0IHB1c2ggb3JpZ2luIDoKIAkgKSAmJgogCSAoY2QgLmdpdC9tb2R1bGVzL2RlZXBlci9zdWJtb2R1bGUvbW9kdWxlcy9zdWJzdWJtb2R1bGUgJiYKIAkgIGdpdCBsb2cgPiAuLi8uLi8uLi8uLi8uLi9hY3R1YWwKIAkgKSAmJgogCSBnaXQgYWRkIGRlZXBlci9zdWJtb2R1bGUgJiYKIAkgZ2l0IGNvbW1pdCAtbSAidXBkYXRlIHN1Ym1vZHVsZSIgJiYKLQkgZ2l0IHB1c2ggJiYKKwkgZ2l0IHB1c2ggb3JpZ2luIDogJiYKIAkgdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCiAJKQogJwpAQCAtNjEyLDcgKzY0Myw4IEBACiAJcm0gLXJmIHN1cGVyX3VwZGF0ZV9yMiAmJgogCWdpdCBjbG9uZSBzdXBlcl91cGRhdGVfciBzdXBlcl91cGRhdGVfcjIgJiYKIAkoY2Qgc3VwZXJfdXBkYXRlX3IyICYmCi0JIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSAmJgorCSBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUgPmFjdHVhbCAmJgorCSB0ZXN0X2kxOG5ncmVwICJTdWJtb2R1bGUgcGF0aCAuc3VibW9kdWxlL3N1YnN1Ym1vZHVsZS46IGNoZWNrZWQgb3V0IiBhY3R1YWwgJiYKIAkgKGNkIHN1Ym1vZHVsZS9zdWJzdWJtb2R1bGUgJiYKIAkgIGdpdCBsb2cgPiAuLi8uLi9leHBlY3RlZAogCSApICYmCkBAIC02MzMsOCArNjY1LDEwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSB1cGRhdGUgcHJvcGVybHkgcmV2aXZlcyBhIG1vdmVkIHN1Ym1vZHVsZScgJwogCShjZCBzdXBlciAmJgorCSBIPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQpICYmCiAJIGdpdCBjb21taXQgLWFtICJwcmUgbW92ZSIgJiYKLQkgZ2l0IHN0YXR1cyA+ZXhwZWN0JiYKKwkgSDI9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRCkgJiYKKwkgZ2l0IHN0YXR1cyB8IHNlZCAicy8kSC9YWFgvIiA+ZXhwZWN0ICYmCiAJIEg9JChjZCBzdWJtb2R1bGUyOyBnaXQgcmV2LXBhcnNlIEhFQUQpICYmCiAJIGdpdCBybSAtLWNhY2hlZCBzdWJtb2R1bGUyICYmCiAJIHJtIC1yZiBzdWJtb2R1bGUyICYmCkBAIC02NDMsNyArNjc3LDcgQEAKIAkgZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3VibW9kdWxlMi5wYXRoICJtb3ZlZC9zdWIgbW9kdWxlIgogCSBnaXQgY29tbWl0IC1hbSAicG9zdCBtb3ZlIiAmJgogCSBnaXQgc3VibW9kdWxlIHVwZGF0ZSAmJgotCSBnaXQgc3RhdHVzID5hY3R1YWwgJiYKKwkgZ2l0IHN0YXR1cyB8IHNlZCAicy8kSDIvWFhYLyIgPmFjdHVhbCAmJgogCSB0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAJKQogJwpkaWZmIC0tZ2l0IGEvdC90NzQwOS1zdWJtb2R1bGUtZGV0YWNoZWQtd29ya3RyZWUuc2ggYi90L3Q3NDA5LXN1Ym1vZHVsZS1kZXRhY2hlZC13b3JrdHJlZS5zaAppbmRleCAyZmVjMTNkLi5jMjA3MTcxIDEwMDc1NQotLS0gYS90L3Q3NDA5LXN1Ym1vZHVsZS1kZXRhY2hlZC13b3JrdHJlZS5zaAorKysgYi90L3Q3NDA5LXN1Ym1vZHVsZS1kZXRhY2hlZC13b3JrdHJlZS5zaApAQCAtMjMsNyArMjMsOSBAQAogCW1rZGlyIGhvbWUgJiYKIAkoCiAJCWNkIGhvbWUgJiYKLQkJZXhwb3J0IEdJVF9XT1JLX1RSRUU9IiQocHdkKSIgR0lUX0RJUj0iJChwd2QpLy5kb3RmaWxlcyIgJiYKKwkJR0lUX1dPUktfVFJFRT0iJChwd2QpIiAmJgorCQlHSVRfRElSPSIkKHB3ZCkvLmRvdGZpbGVzIiAmJgorCQlleHBvcnQgR0lUX1dPUktfVFJFRSBHSVRfRElSICYmCiAJCWdpdCBjbG9uZSAtLWJhcmUgLi4vcmVtb3RlIC5kb3RmaWxlcyAmJgogCQlnaXQgc3VibW9kdWxlIGFkZCAuLi9idW5kbGUxIC52aW0vYnVuZGxlL3NvZ29vZCAmJgogCQl0ZXN0X2NvbW1pdCAic29nb29kIiAmJgpAQCAtMzksNyArNDEsOSBAQAogCSgKIAkJY2QgaG9tZTIgJiYKIAkJZ2l0IGNsb25lIC0tYmFyZSAuLi9yZW1vdGUgLmRvdGZpbGVzICYmCi0JCWV4cG9ydCBHSVRfV09SS19UUkVFPSIkKHB3ZCkiIEdJVF9ESVI9IiQocHdkKS8uZG90ZmlsZXMiICYmCisJCUdJVF9XT1JLX1RSRUU9IiQocHdkKSIgJiYKKwkJR0lUX0RJUj0iJChwd2QpLy5kb3RmaWxlcyIgJiYKKwkJZXhwb3J0IEdJVF9XT1JLX1RSRUUgR0lUX0RJUiAmJgogCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCiAJCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAmJgogCQkoCkBAIC01NSw3ICs1OSw4IEBACiAJbWtkaXIgaG9tZTMgJiYKIAkoCiAJCWNkIGhvbWUzICYmCi0JCWV4cG9ydCBHSVRfRElSPSIkKHB3ZCkvLmRvdGZpbGVzIiAmJgorCQlHSVRfRElSPSIkKHB3ZCkvLmRvdGZpbGVzIiAmJgorCQlleHBvcnQgR0lUX0RJUiAmJgogCQlnaXQgY2xvbmUgLS1iYXJlIC4uL3JlbW90ZSAiJEdJVF9ESVIiICYmCiAJCWdpdCBjb25maWcgY29yZS5iYXJlIGZhbHNlICYmCiAJCWdpdCBjb25maWcgY29yZS53b3JrdHJlZSAuLiAmJgpAQCAtNjYsNyArNzEsOCBAQAogCSkgJiYKIAkoCiAJCWNkIGhvbWUgJiYKLQkJZXhwb3J0IEdJVF9ESVI9IiQocHdkKS8uZG90ZmlsZXMiICYmCisJCUdJVF9ESVI9IiQocHdkKS8uZG90ZmlsZXMiICYmCisJCWV4cG9ydCBHSVRfRElSICYmCiAJCWdpdCBjb25maWcgY29yZS5iYXJlIGZhbHNlICYmCiAJCWdpdCBjb25maWcgY29yZS53b3JrdHJlZSAuLiAmJgogCQlnaXQgcHVsbCAmJgpkaWZmIC0tZ2l0IGEvdC90NzUwMC1jb21taXQuc2ggYi90L3Q3NTAwLWNvbW1pdC5zaAppbmRleCAxYzkwOGY0Li40MzZiN2I2IDEwMDc1NQotLS0gYS90L3Q3NTAwLWNvbW1pdC5zaAorKysgYi90L3Q3NTAwLWNvbW1pdC5zaApAQCAtMzYsOCArMzYsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdub25leGlzdGVudCB0ZW1wbGF0ZSBmaWxlIGluIGNvbmZpZyBzaG91bGQgcmV0dXJuIGVycm9yJyAnCi0JZ2l0IGNvbmZpZyBjb21taXQudGVtcGxhdGUgIiRQV0QiL25vdGV4aXN0ICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgY29tbWl0LnRlbXBsYXRlIiAmJgorCXRlc3RfY29uZmlnIGNvbW1pdC50ZW1wbGF0ZSAiJFBXRCIvbm90ZXhpc3QgJiYKIAkoCiAJCUdJVF9FRElUT1I9ImVjaG8gaGVsbG8gPlwiXCQxXCIiICYmCiAJCWV4cG9ydCBHSVRfRURJVE9SICYmCkBAIC05MywxNCArOTIsMTMgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29uZmlnLXNwZWNpZmllZCB0ZW1wbGF0ZSBzaG91bGQgY29tbWl0JyAnCiAJZWNobyAibmV3IHRlbXBsYXRlIiA+ICIkVEVNUExBVEUiICYmCi0JZ2l0IGNvbmZpZyBjb21taXQudGVtcGxhdGUgIiRURU1QTEFURSIgJiYKKwl0ZXN0X2NvbmZpZyBjb21taXQudGVtcGxhdGUgIiRURU1QTEFURSIgJiYKIAllY2hvICJtb3JlIGNvbnRlbnQiID4+IGZvbyAmJgogCWdpdCBhZGQgZm9vICYmCiAJKAogCQl0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbnRlbnQgJiYKIAkJZ2l0IGNvbW1pdAogCSkgJiYKLQlnaXQgY29uZmlnIC0tdW5zZXQgY29tbWl0LnRlbXBsYXRlICYmCiAJY29tbWl0X21zZ19pcyAibmV3IHRlbXBsYXRlY29tbWl0IG1lc3NhZ2UiCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDc1MDAvYWRkLWNvbnRlbnQtYW5kLWNvbW1lbnQgYi90L3Q3NTAwL2FkZC1jb250ZW50LWFuZC1jb21tZW50Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM0ZGNjZmYKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NTAwL2FkZC1jb250ZW50LWFuZC1jb21tZW50CkBAIC0wLDAgKzEsNSBAQAorIyEvYmluL3NoCitlY2hvICJjb21taXQgbWVzc2FnZSIgPj4gIiQxIgorZWNobyAiIyBjb21tZW50IiA+PiAiJDEiCitleGl0IDAKKwpkaWZmIC0tZ2l0IGEvdC90NzUwMS1jb21taXQuc2ggYi90L3Q3NTAxLWNvbW1pdC5zaAppbmRleCAxOTVlNzQ3Li45OWNlMzZmIDEwMDc1NQotLS0gYS90L3Q3NTAxLWNvbW1pdC5zaAorKysgYi90L3Q3NTAxLWNvbW1pdC5zaApAQCAtNTI0LDQgKzUyNCwxNyBAQAogCXRlc3RfaTE4bmdyZXAgIiBjaGFuZ2VkLCA1IGluc2VydGlvbnMiIG91dHB1dAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLW9ubHkgd29ya3Mgb24gdG8tYmUtYm9ybiBicmFuY2gnICcKKwkjIFRoaXMgdGVzdCByZWxpZXMgb24gaGF2aW5nIHNvbWV0aGluZyBpbiB0aGUgaW5kZXgsIGFzIGl0CisJIyB3b3VsZCBub3Qgb3RoZXJ3aXNlIGFjdHVhbGx5IHByb3ZlIG11Y2guICBTbyBjaGVjayB0aGlzLgorCXRlc3QgLW4gIiQoZ2l0IGxzLWZpbGVzKSIgJiYKKwlnaXQgY2hlY2tvdXQgLS1vcnBoYW4gb3JwaGFuICYmCisJZWNobyBmb28gPm5ld2ZpbGUgJiYKKwlnaXQgYWRkIG5ld2ZpbGUgJiYKKwlnaXQgY29tbWl0IC0tb25seSBuZXdmaWxlIC1tIi0tb25seSBvbiB1bmJvcm4gYnJhbmNoIiAmJgorCWVjaG8gbmV3ZmlsZSA+ZXhwZWN0ZWQgJiYKKwlnaXQgbHMtdHJlZSAtciAtLW5hbWUtb25seSBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NTAyLWNvbW1pdC5zaCBiL3QvdDc1MDItY29tbWl0LnNoCmluZGV4IDFhNWNiNjkuLjYzMTNkYTIgMTAwNzU1Ci0tLSBhL3QvdDc1MDItY29tbWl0LnNoCisrKyBiL3QvdDc1MDItY29tbWl0LnNoCkBAIC00LDYgKzQsMTUgQEAKIAogLiAuL3Rlc3QtbGliLnNoCiAKK2NvbW1pdF9tc2dfaXMgKCkgeworCWV4cGVjdD1jb21taXRfbXNnX2lzLmV4cGVjdAorCWFjdHVhbD1jb21taXRfbXNnX2lzLmFjdHVhbAorCisJcHJpbnRmICIlcyIgIiQoZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6JXMlYiAtMSkiID4kYWN0dWFsICYmCisJcHJpbnRmICIlcyIgIiQxIiA+JGV4cGVjdCAmJgorCXRlc3RfaTE4bmNtcCAkZXhwZWN0ICRhY3R1YWwKK30KKwogIyBBcmd1bWVudHM6IFs8cHJlZml4XSBbPGNvbW1pdCBtZXNzYWdlPl0gWzxjb21taXQgb3B0aW9ucz5dCiBjaGVja19zdW1tYXJ5X29uZWxpbmUoKSB7CiAJdGVzdF90aWNrICYmCkBAIC0xNjIsMjMgKzE3MSwzMCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJib3NlIHJlc3BlY3RzIGRpZmYgY29uZmlnJyAnCiAKLQlnaXQgY29uZmlnIGNvbG9yLmRpZmYgYWx3YXlzICYmCisJdGVzdF9jb25maWcgY29sb3IuZGlmZiBhbHdheXMgJiYKIAlnaXQgc3RhdHVzIC12ID5hY3R1YWwgJiYKLQlncmVwICJcWzFtZGlmZiAtLWdpdCIgYWN0dWFsICYmCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGNvbG9yLmRpZmYKKwlncmVwICJcWzFtZGlmZiAtLWdpdCIgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh2ZXJiYXRpbSwtdCknICcKK21lc2dfd2l0aF9jb21tZW50X2FuZF9uZXdsaW5lcz0nCisjIHRleHQKKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmVwYXJlIGZpbGUgd2l0aCBjb21tZW50IGxpbmUgYW5kIHRyYWlsaW5nIG5ld2xpbmVzJyAgJworCXByaW50ZiAiJXMiICIkbWVzZ193aXRoX2NvbW1lbnRfYW5kX25ld2xpbmVzIiA+ZXhwZWN0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh2ZXJiYXRpbSBvcHRpb24sLXQpJyAnCiAKIAllY2hvID4+bmVnYXRpdmUgJiYKLQl7IGVjaG87ZWNobyAiIyB0ZXh0IjtlY2hvOyB9ID5leHBlY3QgJiYKLQlnaXQgY29tbWl0IC0tY2xlYW51cD12ZXJiYXRpbSAtdCBleHBlY3QgLWEgJiYKLQlnaXQgY2F0LWZpbGUgLXAgSEVBRCB8c2VkIC1lICIxLC9eXCQvZCIgfGhlYWQgLW4gMyA+YWN0dWFsICYmCisJZ2l0IGNvbW1pdCAtLWNsZWFudXA9dmVyYmF0aW0gLS1uby1zdGF0dXMgLXQgZXhwZWN0IC1hICYmCisJZ2l0IGNhdC1maWxlIC1wIEhFQUQgfHNlZCAtZSAiMSwvXlwkL2QiID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHZlcmJhdGltLC1GKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHZlcmJhdGltIG9wdGlvbiwtRiknICcKIAogCWVjaG8gPj5uZWdhdGl2ZSAmJgogCWdpdCBjb21taXQgLS1jbGVhbnVwPXZlcmJhdGltIC1GIGV4cGVjdCAtYSAmJgpAQCAtMTg3LDE2ICsyMDMsMTYgQEAKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAodmVyYmF0aW0sLW0pJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAodmVyYmF0aW0gb3B0aW9uLC1tKScgJwogCiAJZWNobyA+Pm5lZ2F0aXZlICYmCi0JZ2l0IGNvbW1pdCAtLWNsZWFudXA9dmVyYmF0aW0gLW0gIiQoY2F0IGV4cGVjdCkiIC1hICYmCisJZ2l0IGNvbW1pdCAtLWNsZWFudXA9dmVyYmF0aW0gLW0gIiRtZXNnX3dpdGhfY29tbWVudF9hbmRfbmV3bGluZXMiIC1hICYmCiAJZ2l0IGNhdC1maWxlIC1wIEhFQUQgfHNlZCAtZSAiMSwvXlwkL2QiPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAod2hpdGVzcGFjZSwtRiknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzICh3aGl0ZXNwYWNlIG9wdGlvbiwtRiknICcKIAogCWVjaG8gPj5uZWdhdGl2ZSAmJgogCXsgZWNobztlY2hvICIjIHRleHQiO2VjaG87IH0gPnRleHQgJiYKQEAgLTIwNyw3ICsyMjMsNyBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzIChzdHJpcCwtRiknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2VzIChzdHJpcCBvcHRpb24sLUYpJyAnCiAKIAllY2hvID4+bmVnYXRpdmUgJiYKIAl7IGVjaG87ZWNobyAiIyB0ZXh0IjtlY2hvIHNhbXBsZTtlY2hvOyB9ID50ZXh0ICYmCkBAIC0yMTgsNyArMjM0LDcgQEAKIAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAoc3RyaXAsLUYsLWUpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAoc3RyaXAgb3B0aW9uLC1GLC1lKScgJwogCiAJZWNobyA+Pm5lZ2F0aXZlICYmCiAJeyBlY2hvO2VjaG8gc2FtcGxlO2VjaG87IH0gPnRleHQgJiYKQEAgLTIzMSwxMCArMjQ3LDc5IEBACiAjIFBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmcKICMgd2l0aCAnIycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC4iID5leHBlY3QKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZXMgKHN0cmlwLC1GLC1lKTogb3V0cHV0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlcyAoc3RyaXAgb3B0aW9uLC1GLC1lKTogb3V0cHV0JyAnCiAJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZSAoZmFpbCBvbiBpbnZhbGlkIGNsZWFudXAgbW9kZSBvcHRpb24pJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbW1pdCAtLWNsZWFudXA9bm9uLWV4aXN0ZW50CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFudXAgY29tbWl0IG1lc3NhZ2UgKGZhaWwgb24gaW52YWxpZCBjbGVhbnVwIG1vZGUgY29uZmlndXJhdGlvbiknICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgLWMgY29tbWl0LmNsZWFudXA9bm9uLWV4aXN0ZW50IGNvbW1pdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlIChubyBjb25maWcgYW5kIG5vIG9wdGlvbiB1c2VzIGRlZmF1bHQpJyAnCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCSgKKwkgIHRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudC1hbmQtY29tbWVudCAmJgorCSAgZ2l0IGNvbW1pdCAtLW5vLXN0YXR1cworCSkgJiYKKwljb21taXRfbXNnX2lzICJjb21taXQgbWVzc2FnZSIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZSAob3B0aW9uIG92ZXJyaWRlcyBkZWZhdWx0KScgJworCWVjaG8gY29udGVudCA+PmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwkoCisJICB0ZXN0X3NldF9lZGl0b3IgIiRURVNUX0RJUkVDVE9SWSIvdDc1MDAvYWRkLWNvbnRlbnQtYW5kLWNvbW1lbnQgJiYKKwkgIGdpdCBjb21taXQgLS1jbGVhbnVwPXdoaXRlc3BhY2UgLS1uby1zdGF0dXMKKwkpICYmCisJY29tbWl0X21zZ19pcyAiY29tbWl0IG1lc3NhZ2UgIyBjb21tZW50IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlIChjb25maWcgb3ZlcnJpZGVzIGRlZmF1bHQpJyAnCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCSgKKwkgIHRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudC1hbmQtY29tbWVudCAmJgorCSAgZ2l0IC1jIGNvbW1pdC5jbGVhbnVwPXdoaXRlc3BhY2UgY29tbWl0IC0tbm8tc3RhdHVzCisJKSAmJgorCWNvbW1pdF9tc2dfaXMgImNvbW1pdCBtZXNzYWdlICMgY29tbWVudCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZSAob3B0aW9uIG92ZXJyaWRlcyBjb25maWcpJyAnCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCSgKKwkgIHRlc3Rfc2V0X2VkaXRvciAiJFRFU1RfRElSRUNUT1JZIi90NzUwMC9hZGQtY29udGVudC1hbmQtY29tbWVudCAmJgorCSAgZ2l0IC1jIGNvbW1pdC5jbGVhbnVwPXdoaXRlc3BhY2UgY29tbWl0IC0tY2xlYW51cD1kZWZhdWx0CisJKSAmJgorCWNvbW1pdF9tc2dfaXMgImNvbW1pdCBtZXNzYWdlIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlIChkZWZhdWx0LCAtbSknICcKKwllY2hvIGNvbnRlbnQgPj5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZ2l0IGNvbW1pdCAtbSAibWVzc2FnZSAjY29tbWVudCAiICYmCisJY29tbWl0X21zZ19pcyAibWVzc2FnZSAjY29tbWVudCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xlYW51cCBjb21taXQgbWVzc2FnZSAod2hpdGVzcGFjZSBvcHRpb24sIC1tKScgJworCWVjaG8gY29udGVudCA+PmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwlnaXQgY29tbWl0IC0tY2xlYW51cD13aGl0ZXNwYWNlIC0tbm8tc3RhdHVzIC1tICJtZXNzYWdlICNjb21tZW50ICIgJiYKKwljb21taXRfbXNnX2lzICJtZXNzYWdlICNjb21tZW50IgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbGVhbnVwIGNvbW1pdCBtZXNzYWdlICh3aGl0ZXNwYWNlIGNvbmZpZywgLW0pJyAnCisJZWNobyBjb250ZW50ID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCWdpdCAtYyBjb21taXQuY2xlYW51cD13aGl0ZXNwYWNlIGNvbW1pdCAtLW5vLXN0YXR1cyAtbSAibWVzc2FnZSAjY29tbWVudCAiICYmCisJY29tbWl0X21zZ19pcyAibWVzc2FnZSAjY29tbWVudCIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVzc2FnZSBzaG93cyBhdXRob3Igd2hlbiBpdCBpcyBub3QgZXF1YWwgdG8gY29tbWl0dGVyJyAnCiAJZWNobyA+Pm5lZ2F0aXZlICYmCiAJZ2l0IGNvbW1pdCAtZSAtbSAic2FtcGxlIiAtYSAmJgpAQCAtMjc2LDYgKzM2MSwyMyBAQAogCXRlc3RfY21wIGV4cGVjdCAuZ2l0L3Jlc3VsdAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkbyBub3QgZmlyZSBlZGl0b3IgaWYgLW0gPG1zZz4gd2FzIGdpdmVuJyAnCisJZWNobyB0aWNrID5maWxlICYmCisJZ2l0IGFkZCBmaWxlICYmCisJZWNobyAiZWRpdG9yIG5vdCBzdGFydGVkIiA+LmdpdC9yZXN1bHQgJiYKKwkoR0lUX0VESVRPUj0iXCIkKHB3ZCkvLmdpdC9GQUtFX0VESVRPUlwiIiBnaXQgY29tbWl0IC1tIHRpY2spICYmCisJdGVzdCAiJChjYXQgLmdpdC9yZXN1bHQpIiA9ICJlZGl0b3Igbm90IHN0YXJ0ZWQiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBmaXJlIGVkaXRvciBpZiAtbSAiIiB3YXMgZ2l2ZW4nICcKKwllY2hvIHRvY2sgPmZpbGUgJiYKKwlnaXQgYWRkIGZpbGUgJiYKKwllY2hvICJlZGl0b3Igbm90IHN0YXJ0ZWQiID4uZ2l0L3Jlc3VsdCAmJgorCShHSVRfRURJVE9SPSJcIiQocHdkKS8uZ2l0L0ZBS0VfRURJVE9SXCIiIFwKKwkgZ2l0IGNvbW1pdCAtbSAiIiAtLWFsbG93LWVtcHR5LW1lc3NhZ2UpICYmCisJdGVzdCAiJChjYXQgLmdpdC9yZXN1bHQpIiA9ICJlZGl0b3Igbm90IHN0YXJ0ZWQiCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBmaXJlIGVkaXRvciBpbiB0aGUgcHJlc2VuY2Ugb2YgY29uZmxpY3RzJyAnCiAKIAlnaXQgY2xlYW4gLWYgJiYKQEAgLTMzOSw2ICs0NDEsMTggQEAKIAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLXMgcGxhY2VzIHNvYiBvbiB0aGlyZCBsaW5lIGFmdGVyIHR3byBlbXB0eSBsaW5lcycgJworCWdpdCBjb21taXQgLXMgLS1hbGxvdy1lbXB0eSAtLWFsbG93LWVtcHR5LW1lc3NhZ2UgJiYKKwljYXQgPDwtRU9GID5leHBlY3QgJiYKKworCisJU2lnbmVkLW9mZi1ieTogJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+CisKKwlFT0YKKwlzZWQgLWUgIi9eIy9kIiAtZSAicy9eOi4qLy8iIC5naXQvQ09NTUlUX0VESVRNU0cgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogd3JpdGVfc2NyaXB0IC5naXQvRkFLRV9FRElUT1IgPDxcRU9GCiBtdiAiJDEiICIkMS5vcmlnIgogKApAQCAtMzQ5LDE2ICs0NjMsNiBAQAogCiBlY2hvICcjIyBDdXN0b20gdGVtcGxhdGUnID50ZW1wbGF0ZQogCi1jbGVhcl9jb25maWcgKCkgewotCSgKLQkJZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCAiJDEiCi0JCWNhc2UgJD8gaW4KLQkJMHw1KQlleGl0IDAgOzsKLQkJKikJZXhpdCAxIDs7Ci0JCWVzYWMKLQkpCi19Ci0KIHRyeV9jb21taXQgKCkgewogCWdpdCByZXNldCAtLWhhcmQgJiYKIAllY2hvID4+bmVnYXRpdmUgJiYKQEAgLTM3NCw2NyArNDc4LDU3IEBACiB0cnlfY29tbWl0X3N0YXR1c19jb21ibyAoKSB7CiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAiIiAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAiIiAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1zdGF0dXMnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAtLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1uby1zdGF0dXMnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKIAkJdHJ5X2NvbW1pdCAtLW5vLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICEgIl4jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgLmdpdC9DT01NSVRfRURJVE1TRwogCScKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCB3aXRoIGNvbW1pdC5zdGF0dXMgPSB5ZXMnICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKLQkJZ2l0IGNvbmZpZyBjb21taXQuc3RhdHVzIHllcyAmJgorCQl0ZXN0X2NvbmZpZyBjb21taXQuc3RhdHVzIHllcyAmJgogCQl0cnlfY29tbWl0ICIiICYmCiAJCXRlc3RfaTE4bmdyZXAgIl4jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgLmdpdC9DT01NSVRfRURJVE1TRwogCScKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCB3aXRoIGNvbW1pdC5zdGF0dXMgPSBubycgJwotCQljbGVhcl9jb25maWcgY29tbWl0LnN0YXR1cyAmJgotCQlnaXQgY29uZmlnIGNvbW1pdC5zdGF0dXMgbm8gJiYKKwkJdGVzdF9jb25maWcgY29tbWl0LnN0YXR1cyBubyAmJgogCQl0cnlfY29tbWl0ICIiICYmCiAJCXRlc3RfaTE4bmdyZXAgISAiXiMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IiAuZ2l0L0NPTU1JVF9FRElUTVNHCiAJJwogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IC0tc3RhdHVzIHdpdGggY29tbWl0LnN0YXR1cyA9IHllcycgJwotCQljbGVhcl9jb25maWcgY29tbWl0LnN0YXR1cyAmJgotCQlnaXQgY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCiAJCXRyeV9jb21taXQgLS1zdGF0dXMgJiYKIAkJdGVzdF9pMThuZ3JlcCAiXiMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IiAuZ2l0L0NPTU1JVF9FRElUTVNHCiAJJwogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IC0tbm8tc3RhdHVzIHdpdGggY29tbWl0LnN0YXR1cyA9IHllcycgJwotCQljbGVhcl9jb25maWcgY29tbWl0LnN0YXR1cyAmJgotCQlnaXQgY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgeWVzICYmCiAJCXRyeV9jb21taXQgLS1uby1zdGF0dXMgJiYKIAkJdGVzdF9pMThuZ3JlcCAhICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1zdGF0dXMgd2l0aCBjb21taXQuc3RhdHVzID0gbm8nICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKLQkJZ2l0IGNvbmZpZyBjb21taXQuc3RhdHVzIG5vICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgbm8gJiYKIAkJdHJ5X2NvbW1pdCAtLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICJeIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiIC5naXQvQ09NTUlUX0VESVRNU0cKIAknCiAKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21taXQgLS1uby1zdGF0dXMgd2l0aCBjb21taXQuc3RhdHVzID0gbm8nICcKLQkJY2xlYXJfY29uZmlnIGNvbW1pdC5zdGF0dXMgJiYKLQkJZ2l0IGNvbmZpZyBjb21taXQuc3RhdHVzIG5vICYmCisJCXRlc3RfY29uZmlnIGNvbW1pdC5zdGF0dXMgbm8gJiYKIAkJdHJ5X2NvbW1pdCAtLW5vLXN0YXR1cyAmJgogCQl0ZXN0X2kxOG5ncmVwICEgIl4jIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIgLmdpdC9DT01NSVRfRURJVE1TRwogCScKQEAgLTQ0Nyw0ICs1NDEsMTAgQEAKIAogdHJ5X2NvbW1pdF9zdGF0dXNfY29tYm8KIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tbWl0IC0tc3RhdHVzIHdpdGggY3VzdG9tIGNvbW1lbnQgY2hhcmFjdGVyJyAnCisJdGVzdF9jb25maWcgY29yZS5jb21tZW50Y2hhciAiOyIgJiYKKwl0cnlfY29tbWl0IC0tc3RhdHVzICYmCisJdGVzdF9pMThuZ3JlcCAiXjsgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IiAuZ2l0L0NPTU1JVF9FRElUTVNHCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzUwOC1zdGF0dXMuc2ggYi90L3Q3NTA4LXN0YXR1cy5zaAppbmRleCBlMzEzZWYxLi5lMmZmZGFjIDEwMDc1NQotLS0gYS90L3Q3NTA4LXN0YXR1cy5zaAorKysgYi90L3Q3NTA4LXN0YXR1cy5zaApAQCAtOCw2ICs4LDcgQEAKIC4gLi90ZXN0LWxpYi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgLWggaW4gYnJva2VuIHJlcG9zaXRvcnknICcKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIGFkdmljZS5zdGF0dXN1b3B0aW9uIGZhbHNlICYmCiAJbWtkaXIgYnJva2VuICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZnIgYnJva2VuIiAmJgogCSgKQEAgLTEzMCw4ICsxMzEsNyBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyAoYWR2aWNlLnN0YXR1c0hpbnRzIGZhbHNlKScgJwotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGFkdmljZS5zdGF0dXNIaW50cyIgJiYKLQlnaXQgY29uZmlnIGFkdmljZS5zdGF0dXNIaW50cyBmYWxzZSAmJgorCXRlc3RfY29uZmlnIGFkdmljZS5zdGF0dXNIaW50cyBmYWxzZSAmJgogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAKQEAgLTMzMSw4ICszMzEsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgKHN0YXR1cy5zaG93VW50cmFja2VkRmlsZXMgbm8pJyAnCi0JZ2l0IGNvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIG5vCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyIgJiYKKwl0ZXN0X2NvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIG5vICYmCiAJZ2l0IHN0YXR1cyA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKICcKQEAgLTM0NywxMiArMzQ2LDExIEBACiAjCiAjIFVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkCiBFT0YKLWdpdCBjb25maWcgYWR2aWNlLnN0YXR1c0hpbnRzIGZhbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgLXVubyAoYWR2aWNlLnN0YXR1c0hpbnRzIGZhbHNlKScgJworCXRlc3RfY29uZmlnIGFkdmljZS5zdGF0dXNIaW50cyBmYWxzZSAmJgogCWdpdCBzdGF0dXMgLXVubyA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKICcKLWdpdCBjb25maWcgLS11bnNldCBhZHZpY2Uuc3RhdHVzSGludHMKIAogY2F0ID5leHBlY3QgPDwgRU9GCiAgTSBkaXIxL21vZGlmaWVkCkBAIC0zOTksOCArMzk3LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIChzdGF0dXMuc2hvd1VudHJhY2tlZEZpbGVzIG5vcm1hbCknICcKLQlnaXQgY29uZmlnIHN0YXR1cy5zaG93dW50cmFja2VkZmlsZXMgbm9ybWFsCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyIgJiYKKwl0ZXN0X2NvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIG5vcm1hbAogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCkBAIC00NTgsOCArNDU1LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIChzdGF0dXMuc2hvd1VudHJhY2tlZEZpbGVzIGFsbCknICcKLQlnaXQgY29uZmlnIHN0YXR1cy5zaG93dW50cmFja2VkZmlsZXMgYWxsCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyIgJiYKKwl0ZXN0X2NvbmZpZyBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzIGFsbAogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCkBAIC00ODQsMTAgKzQ4MCw5IEBACiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIC1zIChzdGF0dXMuc2hvd1VudHJhY2tlZEZpbGVzIGFsbCknICcKLQlnaXQgY29uZmlnIHN0YXR1cy5zaG93dW50cmFja2VkZmlsZXMgYWxsCisJdGVzdF9jb25maWcgc3RhdHVzLnNob3d1bnRyYWNrZWRmaWxlcyBhbGwgJiYKIAlnaXQgc3RhdHVzIC1zID5vdXRwdXQgJiYKIAlybSAtcmYgZGlyMyAmJgotCWdpdCBjb25maWcgLS11bnNldCBzdGF0dXMuc2hvd3VudHJhY2tlZGZpbGVzICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC01ODcsMTUgKzU4MiwxMyBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aXRoIGNvbG9yLnVpJyAnCi0JZ2l0IGNvbmZpZyBjb2xvci51aSBhbHdheXMgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCBjb2xvci51aSIgJiYKKwl0ZXN0X2NvbmZpZyBjb2xvci51aSBhbHdheXMgJiYKIAlnaXQgc3RhdHVzIHwgdGVzdF9kZWNvZGVfY29sb3IgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aXRoIGNvbG9yLnN0YXR1cycgJwotCWdpdCBjb25maWcgY29sb3Iuc3RhdHVzIGFsd2F5cyAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGNvbG9yLnN0YXR1cyIgJiYKKwl0ZXN0X2NvbmZpZyBjb2xvci5zdGF0dXMgYWx3YXlzICYmCiAJZ2l0IHN0YXR1cyB8IHRlc3RfZGVjb2RlX2NvbG9yID5vdXRwdXQgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAogJwpAQCAtNzE5LDggKzcxMiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aXRob3V0IHJlbGF0aXZlIHBhdGhzJyAnCiAKLQlnaXQgY29uZmlnIHN0YXR1cy5yZWxhdGl2ZVBhdGhzIGZhbHNlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnJlbGF0aXZlUGF0aHMiICYmCisJdGVzdF9jb25maWcgc3RhdHVzLnJlbGF0aXZlUGF0aHMgZmFsc2UgJiYKIAkoY2QgZGlyMSAmJiBnaXQgc3RhdHVzKSA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKIApAQCAtNzM5LDggKzczMSw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyAtcyB3aXRob3V0IHJlbGF0aXZlIHBhdGhzJyAnCiAKLQlnaXQgY29uZmlnIHN0YXR1cy5yZWxhdGl2ZVBhdGhzIGZhbHNlICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnJlbGF0aXZlUGF0aHMiICYmCisJdGVzdF9jb25maWcgc3RhdHVzLnJlbGF0aXZlUGF0aHMgZmFsc2UgJiYKIAkoY2QgZGlyMSAmJiBnaXQgc3RhdHVzIC1zKSA+b3V0cHV0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogCkBAIC0xMDM3LDE1ICsxMDI4LDE0IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy5naXRtb2R1bGVzIGlnbm9yZT11bnRyYWNrZWQgc3VwcHJlc3NlcyBzdWJtb2R1bGVzIHdpdGggdW50cmFja2VkIGNvbnRlbnQnICcKLQlnaXQgY29uZmlnIGRpZmYuaWdub3JlU3VibW9kdWxlcyBkaXJ0eSAmJgorCXRlc3RfY29uZmlnIGRpZmYuaWdub3JlU3VibW9kdWxlcyBkaXJ0eSAmJgogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0ICYmCiAJZ2l0IGNvbmZpZyAtLWFkZCAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3VibmFtZS5pZ25vcmUgdW50cmFja2VkICYmCiAJZ2l0IGNvbmZpZyAtLWFkZCAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUuc3VibmFtZS5wYXRoIHNtICYmCiAJZ2l0IHN0YXR1cyA+b3V0cHV0ICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQgJiYKLQlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzICAtLXJlbW92ZS1zZWN0aW9uIHN1Ym1vZHVsZS5zdWJuYW1lICYmCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYuaWdub3JlU3VibW9kdWxlcworCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgIC0tcmVtb3ZlLXNlY3Rpb24gc3VibW9kdWxlLnN1Ym5hbWUKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLmdpdC9jb25maWcgaWdub3JlPXVudHJhY2tlZCBzdXBwcmVzc2VzIHN1Ym1vZHVsZXMgd2l0aCB1bnRyYWNrZWQgY29udGVudCcgJwpAQCAtMTA2NSwxNSArMTA1NSwxNCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICcuZ2l0bW9kdWxlcyBpZ25vcmU9ZGlydHkgc3VwcHJlc3NlcyBzdWJtb2R1bGVzIHdpdGggdW50cmFja2VkIGNvbnRlbnQnICcKLQlnaXQgY29uZmlnIGRpZmYuaWdub3JlU3VibW9kdWxlcyBkaXJ0eSAmJgorCXRlc3RfY29uZmlnIGRpZmYuaWdub3JlU3VibW9kdWxlcyBkaXJ0eSAmJgogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCSEgdGVzdCAtcyBhY3R1YWwgJiYKIAlnaXQgY29uZmlnIC0tYWRkIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWJuYW1lLmlnbm9yZSBkaXJ0eSAmJgogCWdpdCBjb25maWcgLS1hZGQgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym5hbWUucGF0aCBzbSAmJgogCWdpdCBzdGF0dXMgPm91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0ICYmCi0JZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyAgLS1yZW1vdmUtc2VjdGlvbiBzdWJtb2R1bGUuc3VibmFtZSAmJgotCWdpdCBjb25maWcgLS11bnNldCBkaWZmLmlnbm9yZVN1Ym1vZHVsZXMKKwlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzICAtLXJlbW92ZS1zZWN0aW9uIHN1Ym1vZHVsZS5zdWJuYW1lCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy5naXQvY29uZmlnIGlnbm9yZT1kaXJ0eSBzdXBwcmVzc2VzIHN1Ym1vZHVsZXMgd2l0aCB1bnRyYWNrZWQgY29udGVudCcgJwpAQCAtMTI1NCw2ICsxMjQzLDU0IEBACiAnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKKzsgT24gYnJhbmNoIG1hc3RlcgorOyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoKKzsgICAodXNlICJnaXQgcmVzZXQgSEVBRCA8ZmlsZT4uLi4iIHRvIHVuc3RhZ2UpCis7Cis7CW1vZGlmaWVkOiAgIHNtCis7Cis7IENoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OgorOyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkKKzsgICAodXNlICJnaXQgY2hlY2tvdXQgLS0gPGZpbGU+Li4uIiB0byBkaXNjYXJkIGNoYW5nZXMgaW4gd29ya2luZyBkaXJlY3RvcnkpCis7Cis7CW1vZGlmaWVkOiAgIGRpcjEvbW9kaWZpZWQKKzsJbW9kaWZpZWQ6ICAgc20gKG5ldyBjb21taXRzKQorOworOyBTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6Cis7Cis7ICogc20gJGhlYWQuLi4kbmV3X2hlYWQgKDEpOgorOyAgID4gQWRkIGJhcgorOworOyBTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOgorOworOyAqIHNtICRuZXdfaGVhZC4uLiRoZWFkMiAoMSk6Cis7ICAgPiAybmQgY29tbWl0Cis7Cis7IFVudHJhY2tlZCBmaWxlczoKKzsgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gaW5jbHVkZSBpbiB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQorOworOwkuZ2l0bW9kdWxlcworOwlkaXIxL3VudHJhY2tlZAorOwlkaXIyL21vZGlmaWVkCis7CWRpcjIvdW50cmFja2VkCis7CWV4cGVjdAorOwlvdXRwdXQKKzsJdW50cmFja2VkCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAic3RhdHVzIChjb3JlLmNvbW1lbnRjaGFyIHdpdGggc3VibW9kdWxlIHN1bW1hcnkpIiAnCisJdGVzdF9jb25maWcgY29yZS5jb21tZW50Y2hhciAiOyIgJiYKKwlnaXQgc3RhdHVzID5vdXRwdXQgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJzdGF0dXMgKGNvcmUuY29tbWVudGNoYXIgd2l0aCB0d28gY2hhcnMgd2l0aCBzdWJtb2R1bGUgc3VtbWFyeSkiICcKKwl0ZXN0X2NvbmZpZyBjb3JlLmNvbW1lbnRjaGFyICI7OyIgJiYKKwlnaXQgc3RhdHVzID5vdXRwdXQgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAorJworCitjYXQgPiBleHBlY3QgPDwgRU9GCiAjIE9uIGJyYW5jaCBtYXN0ZXIKICMgQ2hhbmdlcyBub3Qgc3RhZ2VkIGZvciBjb21taXQ6CiAjICAgKHVzZSAiZ2l0IGFkZCA8ZmlsZT4uLi4iIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKQpkaWZmIC0tZ2l0IGEvdC90NzUxMi1zdGF0dXMtaGVscC5zaCBiL3QvdDc1MTItc3RhdHVzLWhlbHAuc2gKaW5kZXggOTVkNjUxMC4uNGYwOWJlYyAxMDA3NTUKLS0tIGEvdC90NzUxMi1zdGF0dXMtaGVscC5zaAorKysgYi90L3Q3NTEyLXN0YXR1cy1oZWxwLnNoCkBAIC0xNCw2ICsxNCw3IEBACiBzZXRfZmFrZV9lZGl0b3IKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlcGFyZSBmb3IgY29uZmxpY3RzJyAnCisJZ2l0IGNvbmZpZyAtLWdsb2JhbCBhZHZpY2Uuc3RhdHVzdW9wdGlvbiBmYWxzZSAmJgogCXRlc3RfY29tbWl0IGluaXQgbWFpbi50eHQgaW5pdCAmJgogCWdpdCBicmFuY2ggY29uZmxpY3RzICYmCiAJdGVzdF9jb21taXQgb25fbWFzdGVyIG1haW4udHh0IG9uX21hc3RlciAmJgpAQCAtNzMsMTAgKzc0LDExIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGVuIHJlYmFzZSBpbiBwcm9ncmVzcyBiZWZvcmUgcmVzb2x2aW5nIGNvbmZsaWN0cycgJwogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRF5eKSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgSEVBRF4gLS1vbnRvIEhFQUReXiAmJgotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgotCSMgTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLgotCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcuCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgYXQgJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2NvbmZsaWN0cydcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tc2tpcCIgdG8gc2tpcCB0aGlzIHBhdGNoKQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tYWJvcnQiIHRvIGNoZWNrIG91dCB0aGUgb3JpZ2luYWwgYnJhbmNoKQpAQCAtOTcsMTIgKzk5LDEzIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgd2hlbiByZWJhc2UgaW4gcHJvZ3Jlc3MgYmVmb3JlIHJlYmFzZSAtLWNvbnRpbnVlJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCByZWJhc2VfY29uZmxpY3RzICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEXl4pICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSBIRUFEXiAtLW9udG8gSEVBRF5eICYmCiAJZWNobyB0aHJlZSA+bWFpbi50eHQgJiYKIAlnaXQgYWRkIG1haW4udHh0ICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4KKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBhdCAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICdcJydyZWJhc2VfY29uZmxpY3RzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQogCSMKIAkjIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgpAQCAtMTMwLDEwICsxMzMsMTEgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGR1cmluZyByZWJhc2UgLWkgd2hlbiBjb25mbGljdHMgdW5yZXNvbHZlZCcgJwogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgcmViYXNlX2lfY29uZmxpY3RzKSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgcmViYXNlX2lfY29uZmxpY3RzICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4KKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBhdCAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICdcJydyZWJhc2VfaV9jb25mbGljdHNfc2Vjb25kJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCiAJIyAgICh1c2UgImdpdCByZWJhc2UgLS1za2lwIiB0byBza2lwIHRoaXMgcGF0Y2gpCiAJIyAgICh1c2UgImdpdCByZWJhc2UgLS1hYm9ydCIgdG8gY2hlY2sgb3V0IHRoZSBvcmlnaW5hbCBicmFuY2gpCkBAIC0xNTQsMTEgKzE1OCwxMiBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIGR1cmluZyByZWJhc2UgLWkgYWZ0ZXIgcmVzb2x2aW5nIGNvbmZsaWN0cycgJwogCWdpdCByZXNldCAtLWhhcmQgcmViYXNlX2lfY29uZmxpY3RzX3NlY29uZCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgcmViYXNlX2lfY29uZmxpY3RzKSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgcmViYXNlX2lfY29uZmxpY3RzICYmCiAJZ2l0IGFkZCBtYWluLnR4dCAmJgotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgotCSMgTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLgotCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcuCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgYXQgJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2lfY29uZmxpY3RzX3NlY29uZCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKIAkjCiAJIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoKQEAgLTE4MiwxMCArMTg3LDEyIEBACiAJRkFLRV9MSU5FUz0iMSBlZGl0IDIiICYmCiAJZXhwb3J0IEZBS0VfTElORVMgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MikgJiYKKwlUR1Q9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgdHdvX3JlYmFzZV9pKSAmJgogCWdpdCByZWJhc2UgLWkgSEVBRH4yICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4KKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRUR1QKKwkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydyZWJhc2VfaV9lZGl0J1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQogCSMKQEAgLTIwNiwxMSArMjEzLDEzIEBACiAJRkFLRV9MSU5FUz0iMSBlZGl0IDIgMyIgJiYKIAlleHBvcnQgRkFLRV9MSU5FUyAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgorCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgogCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCiAJZ2l0IHJlc2V0IEhFQUReICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLgorCVRHVD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEKSAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGF0ICRUR1QKKwkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NwbGl0X2NvbW1pdCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQogCSMKIAkjIENoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OgpAQCAtMjM2LDExICsyNDUsMTMgQEAKIAlGQUtFX0xJTkVTPSIxIDIgZWRpdCAzIiAmJgogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCisJVEdUPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IHRocmVlX2FtZW5kKSAmJgogCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJmb28iICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4KKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRUR1QKKwkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydhbWVuZF9sYXN0J1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQogCSMKQEAgLTI2NSwxMSArMjc2LDEyIEBACiAJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKLQkjIE5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4KLQkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQogCSMKQEAgLTI4NSwxMiArMjk3LDEzIEBACiAJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAlnaXQgcmVzZXQgSEVBRF4gJiYKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKLQkjIE5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4KLQkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnXCcnc2V2ZXJhbF9lZGl0cydcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKE9uY2UgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBpcyBjbGVhbiwgcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQogCSMKIAkjIENoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OgpAQCAtMzExLDEyICszMjQsMTMgQEAKIAlGQUtFX0xJTkVTPSJlZGl0IDEgZWRpdCAyIDMiICYmCiAJZXhwb3J0IEZBS0VfTElORVMgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MykgJiYKIAlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgogCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgogCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiZm9vIiAmJgotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgotCSMgTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLgotCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCiAJIwpAQCAtMzMyLDEyICszNDYsMTMgQEAKIAlGQUtFX0xJTkVTPSJlZGl0IDEgZWRpdCAyIDMiICYmCiAJZXhwb3J0IEZBS0VfTElORVMgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MykgJiYKIAlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgogCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiYSIgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKLQkjIE5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4KLQkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQogCSMKQEAgLTM1MywxMyArMzY4LDE0IEBACiAJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImIiICYmCiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IHJlc2V0IEhFQUReICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKIAkjCiAJIyBDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoKQEAgLTM4MCwxMyArMzk2LDE0IEBACiAJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImMiICYmCiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJkIiAmJgotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgotCSMgTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLgotCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCiAJIwpAQCAtNDAyLDE0ICs0MTksMTUgQEAKIAlGQUtFX0xJTkVTPSJlZGl0IDEgZWRpdCAyIDMiICYmCiAJZXhwb3J0IEZBS0VfTElORVMgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MykgJiYKIAlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgogCWdpdCByZXNldCBIRUFEXiAmJgogCWdpdCBhZGQgbWFpbi50eHQgJiYKIAlnaXQgY29tbWl0IC1tICJlIiAmJgogCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgotCSMgTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLgotCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCiAJIwpAQCAtNDI1LDE1ICs0NDMsMTYgQEAKIAlGQUtFX0xJTkVTPSJlZGl0IDEgZWRpdCAyIDMiICYmCiAJZXhwb3J0IEZBS0VfTElORVMgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIgJiYKKwlPTlRPPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUR+MykgJiYKIAlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgogCWdpdCByZXNldCBIRUFEXiAmJgogCWdpdCBhZGQgbWFpbi50eHQgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImYiICYmCiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IHJlc2V0IEhFQUReICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKIAkjCiAJIyBDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoKQEAgLTQ1NCwxNSArNDczLDE2IEBACiAJRkFLRV9MSU5FUz0iZWRpdCAxIGVkaXQgMiAzIiAmJgogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKIAlnaXQgcmVzZXQgSEVBRF4gJiYKIAlnaXQgYWRkIG1haW4udHh0ICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJnIiAmJgogCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgogCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiaCIgJiYKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKLQkjIE5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4KLQkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgZHVyaW5nIGEgcmViYXNlLgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQogCSMKQEAgLTU1Niw5ICs1NzYsMTAgQEAKIAlnaXQgYmlzZWN0IHN0YXJ0ICYmCiAJZ2l0IGJpc2VjdCBiYWQgJiYKIAlnaXQgYmlzZWN0IGdvb2Qgb25lX2Jpc2VjdCAmJgotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgotCSMgTm90IGN1cnJlbnRseSBvbiBhbnkgYnJhbmNoLgotCSMgWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLgorCVRHVD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCB0d29fYmlzZWN0KSAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJIyBIRUFEIGRldGFjaGVkIGF0ICRUR1QKKwkjIFlvdSBhcmUgY3VycmVudGx5IGJpc2VjdGluZywgc3RhcnRlZCBmcm9tIGJyYW5jaCAnXCcnYmlzZWN0J1wnJy4KIAkjICAgKHVzZSAiZ2l0IGJpc2VjdCByZXNldCIgdG8gZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCkKIAkjCiAJbm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykKQEAgLTU3NywxMCArNTk4LDExIEBACiAJdGVzdF9jb21taXQgdHdvX3N0YXR1c2hpbnRzIG1haW4udHh0IHR3byAmJgogCXRlc3RfY29tbWl0IHRocmVlX3N0YXR1c2hpbnRzIG1haW4udHh0IHRocmVlICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCisJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEXl4pICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSBIRUFEXiAtLW9udG8gSEVBRF5eICYmCi0JY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCi0JIyBOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guCi0JIyBZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4KKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCSMgSEVBRCBkZXRhY2hlZCBhdCAkT05UTworCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICdcJydzdGF0dXNoaW50c19kaXNhYmxlZCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjCiAJIyBVbm1lcmdlZCBwYXRoczoKIAkjCWJvdGggbW9kaWZpZWQ6ICAgICAgbWFpbi50eHQKQEAgLTYxMCw3ICs2MzIsOCBAQAogCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgogCSMgT24gYnJhbmNoIGNoZXJyeV9icmFuY2gKIAkjIFlvdSBhcmUgY3VycmVudGx5IGNoZXJyeS1waWNraW5nLgotCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuICJnaXQgY29tbWl0IikKKwkjICAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biAiZ2l0IGNoZXJyeS1waWNrIC0tY29udGludWUiKQorCSMgICAodXNlICJnaXQgY2hlcnJ5LXBpY2sgLS1hYm9ydCIgdG8gY2FuY2VsIHRoZSBjaGVycnktcGljayBvcGVyYXRpb24pCiAJIwogCSMgVW5tZXJnZWQgcGF0aHM6CiAJIyAgICh1c2UgImdpdCBhZGQgPGZpbGU+Li4uIiB0byBtYXJrIHJlc29sdXRpb24pCkBAIC02MzMsNyArNjU2LDggQEAKIAljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKIAkjIE9uIGJyYW5jaCBjaGVycnlfYnJhbmNoCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4KLQkjICAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biAiZ2l0IGNvbW1pdCIpCisJIyAgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlIikKKwkjICAgKHVzZSAiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnQiIHRvIGNhbmNlbCB0aGUgY2hlcnJ5LXBpY2sgb3BlcmF0aW9uKQogCSMKIAkjIENoYW5nZXMgdG8gYmUgY29tbWl0dGVkOgogCSMKQEAgLTY0NSw1ICs2NjksNzMgQEAKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBzaG93aW5nIGRldGFjaGVkIGZyb20gYSB0YWcnICcKKwl0ZXN0X2NvbW1pdCBhdGFnIHRhZ2dpbmcgJiYKKwlnaXQgY2hlY2tvdXQgYXRhZyAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRgorCSMgSEVBRCBkZXRhY2hlZCBhdCBhdGFnCisJbm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyB3aGlsZSByZXZlcnRpbmcgY29tbWl0IChjb25mbGljdHMpJyAnCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWVjaG8gYmVmb3JlID50by1yZXZlcnQudHh0ICYmCisJdGVzdF9jb21taXQgYmVmb3JlIHRvLXJldmVydC50eHQgJiYKKwllY2hvIG9sZCA+dG8tcmV2ZXJ0LnR4dCAmJgorCXRlc3RfY29tbWl0IG9sZCB0by1yZXZlcnQudHh0ICYmCisJZWNobyBuZXcgPnRvLXJldmVydC50eHQgJiYKKwl0ZXN0X2NvbW1pdCBuZXcgdG8tcmV2ZXJ0LnR4dCAmJgorCVRPX1JFVkVSVD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEXikgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2ZXJ0ICRUT19SRVZFUlQgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRgorCSMgT24gYnJhbmNoIG1hc3RlcgorCSMgWW91IGFyZSBjdXJyZW50bHkgcmV2ZXJ0aW5nIGNvbW1pdCAkVE9fUkVWRVJULgorCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuICJnaXQgcmV2ZXJ0IC0tY29udGludWUiKQorCSMgICAodXNlICJnaXQgcmV2ZXJ0IC0tYWJvcnQiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikKKwkjCisJIyBVbm1lcmdlZCBwYXRoczoKKwkjICAgKHVzZSAiZ2l0IHJlc2V0IEhFQUQgPGZpbGU+Li4uIiB0byB1bnN0YWdlKQorCSMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gbWFyayByZXNvbHV0aW9uKQorCSMKKwkjCWJvdGggbW9kaWZpZWQ6ICAgICAgdG8tcmV2ZXJ0LnR4dAorCSMKKwlubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCAodXNlICJnaXQgYWRkIiBhbmQvb3IgImdpdCBjb21taXQgLWEiKQorCUVPRgorCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzIHdoaWxlIHJldmVydGluZyBjb21taXQgKGNvbmZsaWN0cyByZXNvbHZlZCknICcKKwllY2hvIHJldmVydGVkID50by1yZXZlcnQudHh0ICYmCisJZ2l0IGFkZCB0by1yZXZlcnQudHh0ICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YKKwkjIE9uIGJyYW5jaCBtYXN0ZXIKKwkjIFlvdSBhcmUgY3VycmVudGx5IHJldmVydGluZyBjb21taXQgJFRPX1JFVkVSVC4KKwkjICAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biAiZ2l0IHJldmVydCAtLWNvbnRpbnVlIikKKwkjICAgKHVzZSAiZ2l0IHJldmVydCAtLWFib3J0IiB0byBjYW5jZWwgdGhlIHJldmVydCBvcGVyYXRpb24pCisJIworCSMgQ2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6CisJIyAgICh1c2UgImdpdCByZXNldCBIRUFEIDxmaWxlPi4uLiIgdG8gdW5zdGFnZSkKKwkjCisJIwltb2RpZmllZDogICB0by1yZXZlcnQudHh0CisJIworCSMgVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgYWZ0ZXIgcmV2ZXJ0aW5nIGNvbW1pdCcgJworCWdpdCByZXZlcnQgLS1jb250aW51ZSAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRgorCSMgT24gYnJhbmNoIG1hc3RlcgorCW5vdGhpbmcgdG8gY29tbWl0ICh1c2UgLXUgdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpCisJRU9GCisJZ2l0IHN0YXR1cyAtLXVudHJhY2tlZC1maWxlcz1ubyA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorJwogCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc2MDAtbWVyZ2Uuc2ggYi90L3Q3NjAwLW1lcmdlLnNoCmluZGV4IDVlMTk1OTguLjQ2MGQ4ZWIgMTAwNzU1Ci0tLSBhL3QvdDc2MDAtbWVyZ2Uuc2gKKysrIGIvdC90NzYwMC1tZXJnZS5zaApAQCAtNTYsNyArNTYsOCBAQAogCQllY2hvICYmCiAJCWdpdCBsb2cgLS1uby1tZXJnZXMgXkhFQUQgYzIgYzMKIAl9ID5zcXVhc2guMS01LTkgJiYKLQllY2hvID5tc2cubm9sb2cgJiYKKwk6ID5tc2cubm9sb2dmZiAmJgorCWVjaG8gPm1zZy5ub2xvZ25vZmYgJiYKIAl7CiAJCWVjaG8gIiogdGFnICdjMyc6IiAmJgogCQllY2hvICIgIGNvbW1pdCAzIiAmJgpAQCAtMjQ0LDggKzI0NSw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZXMgd2l0aCBtZXJnZS5mZj1vbmx5JyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgogCXRlc3RfdGljayAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IG1lcmdlLmZmIiAmJgotCWdpdCBjb25maWcgbWVyZ2UuZmYgb25seSAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmZmICJvbmx5IiAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBjMiAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBjMyAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSBjMiBjMyAmJgpAQCAtMzE2LDcgKzMxNiw3IEBACiAKIHRlc3RfZGVidWcgJ2dpdCBsb2cgLS1ncmFwaCAtLWRlY29yYXRlIC0tb25lbGluZSAtLWFsbCcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAndW5zdWNjZXNmdWwgbWVyZ2Ugb2YgYzEgd2l0aCBjMiAoc3F1YXNoLCBmZi1vbmx5KScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAndW5zdWNjZXNzZnVsIG1lcmdlIG9mIGMxIHdpdGggYzIgKHNxdWFzaCwgZmYtb25seSknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tc3F1YXNoIC0tZmYtb25seSBjMgogJwpAQCAtMzM2LDcgKzMzNiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMxIHdpdGggYzIgKG5vLWNvbW1pdCBpbiBjb25maWcpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbm8tY29tbWl0IiAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWNvbW1pdCIgJiYKIAlnaXQgbWVyZ2UgYzIgJiYKIAl2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMS01ICYmCiAJdmVyaWZ5X2hlYWQgJGMxICYmCkBAIC0zNDYsMTIgKzM0NiwxMSBAQAogdGVzdF9kZWJ1ZyAnZ2l0IGxvZyAtLWdyYXBoIC0tZGVjb3JhdGUgLS1vbmVsaW5lIC0tYWxsJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMyIChsb2cgaW4gY29uZmlnKScgJwotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIiIgJiYKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCiAJZ2l0IG1lcmdlIC0tbG9nIGMyICYmCiAJZ2l0IHNob3cgLXMgLS1wcmV0dHk9dGZvcm1hdDolcyVuJWIgPmV4cGVjdCAmJgogCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAtLWxvZyAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLWxvZyIgJiYKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCiAJZ2l0IG1lcmdlIGMyICYmCiAJZ2l0IHNob3cgLXMgLS1wcmV0dHk9dGZvcm1hdDolcyVuJWIgPmFjdHVhbCAmJgpAQCAtMzYwLDE3ICszNTksMTIgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzEgd2l0aCBjMiAobG9nIGluIGNvbmZpZyBnZXRzIG92ZXJyaWRkZW4pJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gYnJhbmNoLm1hc3RlciIgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiBtZXJnZSIgJiYKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIGJyYW5jaC5tYXN0ZXIgJiYKLQl0ZXN0X21pZ2h0X2ZhaWwgZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIG1lcmdlICYmCi0KIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCiAJZ2l0IG1lcmdlIGMyICYmCiAJZ2l0IHNob3cgLXMgLS1wcmV0dHk9dGZvcm1hdDolcyVuJWIgPmV4cGVjdCAmJgogCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1uby1sb2ciICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5sb2cgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWxvZyIgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS5sb2cgInRydWUiICYmCiAJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgogCWdpdCBtZXJnZSBjMiAmJgogCWdpdCBzaG93IC1zIC0tcHJldHR5PXRmb3JtYXQ6JXMlbiViID5hY3R1YWwgJiYKQEAgLTM4MCw3ICszNzQsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMyIChzcXVhc2ggaW4gY29uZmlnKScgJwogCWdpdCByZXNldCAtLWhhcmQgYzEgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLXNxdWFzaCIgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1zcXVhc2giICYmCiAJZ2l0IG1lcmdlIGMyICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSAmJgogCXZlcmlmeV9oZWFkICRjMSAmJgpAQCAtMzkyLDcgKzM4Niw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ292ZXJyaWRlIGNvbmZpZyBvcHRpb24gLW4gd2l0aCAtLXN1bW1hcnknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLW4iICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi1uIiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSAtLXN1bW1hcnkgYzIgPmRpZmZzdGF0LnR4dCAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgbXNnLjEtNSAmJgpAQCAtNDA2LDcgKzQwMCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ292ZXJyaWRlIGNvbmZpZyBvcHRpb24gLW4gd2l0aCAtLXN0YXQnICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLW4iICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi1uIiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSAtLXN0YXQgYzIgPmRpZmZzdGF0LnR4dCAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgbXNnLjEtNSAmJgpAQCAtNDIyLDcgKzQxNiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ292ZXJyaWRlIGNvbmZpZyBvcHRpb24gLS1zdGF0JyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tc3RhdCIgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1zdGF0IiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSAtbiBjMiA+ZGlmZnN0YXQudHh0ICYmCiAJdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSBtc2cuMS01ICYmCkBAIC00MzgsNyArNDMyLDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzEgd2l0aCBjMiAob3ZlcnJpZGUgLS1uby1jb21taXQpJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgotCWdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tbm8tY29tbWl0IiAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWNvbW1pdCIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgbWVyZ2UgLS1jb21taXQgYzIgJiYKIAl2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMS01IG1zZy4xLTUgJiYKQEAgLTQ0OSw3ICs0NDMsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMyIChvdmVycmlkZSAtLXNxdWFzaCknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1zcXVhc2giICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tc3F1YXNoIiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSAtLW5vLXNxdWFzaCBjMiAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgbXNnLjEtNSAmJgpAQCAtNDYwLDcgKzQ1NCw2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMwIHdpdGggYzEgKG5vLWZmKScgJwogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICIiICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IG1lcmdlIC0tbm8tZmYgYzEgJiYKIAl2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMSAmJgpAQCAtNDcxLDEwICs0NjQsOSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMCB3aXRoIGMxIChtZXJnZS5mZj1mYWxzZSknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMwICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS5mZiBmYWxzZSAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmZmICJmYWxzZSIgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgbWVyZ2UgYzEgJiYKLQlnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gbWVyZ2UgJiYKIAl2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMSAmJgogCXZlcmlmeV9wYXJlbnRzICRjMCAkYzEKICcKQEAgLTQ4MiwyMiArNDc0LDE5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbWJpbmUgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgd2l0aCBtZXJnZS5mZicgJwogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zIC0tZmYgJiYKLQlnaXQgY29uZmlnIG1lcmdlLmZmIGZhbHNlICYmCisJdGVzdF9jb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIi0tZmYiICYmCisJdGVzdF9jb25maWcgbWVyZ2UuZmYgImZhbHNlIiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSBjMSAmJgotCWdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiAiYnJhbmNoLm1hc3RlciIgJiYKLQlnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gIm1lcmdlIiAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xICYmCiAJdmVyaWZ5X3BhcmVudHMgIiRjMCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndG9sZXJhdGUgdW5rbm93biB2YWx1ZXMgZm9yIG1lcmdlLmZmJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgotCWdpdCBjb25maWcgbWVyZ2UuZmYgc29tZXRoaW5nLW5ldyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmZmICJzb21ldGhpbmctbmV3IiAmJgogCXRlc3RfdGljayAmJgogCWdpdCBtZXJnZSBjMSAyPm1lc3NhZ2UgJiYKLQlnaXQgY29uZmlnIC0tcmVtb3ZlLXNlY3Rpb24gIm1lcmdlIiAmJgogCXZlcmlmeV9oZWFkICIkYzEiICYmCiAJdGVzdF9jbXAgZW1wdHkgbWVzc2FnZQogJwpAQCAtNTE1LDcgKzUwNCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMwIHdpdGggYzEgKGZmIG92ZXJyaWRlcyBuby1mZiknICcKIAlnaXQgcmVzZXQgLS1oYXJkIGMwICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1uby1mZiIgJiYKKwl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiLS1uby1mZiIgJiYKIAlnaXQgbWVyZ2UgLS1mZiBjMSAmJgogCXZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xICYmCiAJdmVyaWZ5X2hlYWQgJGMxCkBAIC01MjUsMTQgKzUxNCwyMCBAQAogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKIAlnaXQgbWVyZ2UgLS1uby1sb2cgYzIgJiYKIAlnaXQgc2hvdyAtcyAtLXByZXR0eT1mb3JtYXQ6JWIgSEVBRCA+bXNnLmFjdCAmJgotCXRlc3RfY21wIG1zZy5ub2xvZyBtc2cuYWN0ICYmCisJdGVzdF9jbXAgbXNnLm5vbG9nZmYgbXNnLmFjdCAmJgorCisJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgorCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICItLW5vLWZmIiAmJgorCWdpdCBtZXJnZSAtLW5vLWxvZyBjMiAmJgorCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDolYiBIRUFEID5tc2cuYWN0ICYmCisJdGVzdF9jbXAgbXNnLm5vbG9nbm9mZiBtc2cuYWN0ICYmCiAKIAlnaXQgbWVyZ2UgLS1sb2cgYzMgJiYKIAlnaXQgc2hvdyAtcyAtLXByZXR0eT1mb3JtYXQ6JWIgSEVBRCA+bXNnLmFjdCAmJgogCXRlc3RfY21wIG1zZy5sb2cgbXNnLmFjdCAmJgogCiAJZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgotCWdpdCBjb25maWcgbWVyZ2UubG9nIHllcyAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmxvZyAieWVzIiAmJgogCWdpdCBtZXJnZSBjMyAmJgogCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDolYiBIRUFEID5tc2cuYWN0ICYmCiAJdGVzdF9jbXAgbXNnLmxvZyBtc2cuYWN0CkBAIC01NDIsNyArNTM3LDYgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYzEgd2l0aCBjMCwgYzIsIGMwLCBhbmQgYzEnICcKICAgICAgICBnaXQgcmVzZXQgLS1oYXJkIGMxICYmCi0gICAgICAgZ2l0IGNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlb3B0aW9ucyAiIiAmJgogICAgICAgIHRlc3RfdGljayAmJgogICAgICAgIGdpdCBtZXJnZSBjMCBjMiBjMCBjMSAmJgogICAgICAgIHZlcmlmeV9tZXJnZSBmaWxlIHJlc3VsdC4xLTUgJiYKQEAgLTU1Myw3ICs1NDcsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMSB3aXRoIGMwLCBjMiwgYzAsIGFuZCBjMScgJwogICAgICAgIGdpdCByZXNldCAtLWhhcmQgYzEgJiYKLSAgICAgICBnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2VvcHRpb25zICIiICYmCiAgICAgICAgdGVzdF90aWNrICYmCiAgICAgICAgZ2l0IG1lcmdlIGMwIGMyIGMwIGMxICYmCiAgICAgICAgdmVyaWZ5X21lcmdlIGZpbGUgcmVzdWx0LjEtNSAmJgpAQCAtNTY0LDcgKzU1Nyw2IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGMxIHdpdGggYzEgYW5kIGMyJyAnCiAgICAgICAgZ2l0IHJlc2V0IC0taGFyZCBjMSAmJgotICAgICAgIGdpdCBjb25maWcgYnJhbmNoLm1hc3Rlci5tZXJnZW9wdGlvbnMgIiIgJiYKICAgICAgICB0ZXN0X3RpY2sgJiYKICAgICAgICBnaXQgbWVyZ2UgYzEgYzIgJiYKICAgICAgICB2ZXJpZnlfbWVyZ2UgZmlsZSByZXN1bHQuMS01ICYmCmRpZmYgLS1naXQgYS90L3Q3NjAxLW1lcmdlLXB1bGwtY29uZmlnLnNoIGIvdC90NzYwMS1tZXJnZS1wdWxsLWNvbmZpZy5zaAppbmRleCBiNDRiMjkzLi4yNWRhYzc5IDEwMDc1NQotLS0gYS90L3Q3NjAxLW1lcmdlLXB1bGwtY29uZmlnLnNoCisrKyBiL3QvdDc2MDEtbWVyZ2UtcHVsbC1jb25maWcuc2gKQEAgLTEwOSw3ICsxMDksNyBAQAogJwogCiAjIEZpcnN0IGRvIHRoZSBtZXJnZSB3aXRoIHJlc29sdmUgYW5kIHJlY3Vyc2l2ZSB0aGVuIHZlcmlmeSB0aGF0Ci0jIHJlY3VzaXZlIGlzIGNob29zZW4uCisjIHJlY3VzaXZlIGlzIGNob3Nlbi4KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgcGlja3MgdXAgdGhlIGJlc3QgcmVzdWx0JyAnCiAJZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBwdWxsLnR3b2hlYWQgJiYKZGlmZiAtLWdpdCBhL3QvdDc2MDctbWVyZ2Utb3ZlcndyaXRlLnNoIGIvdC90NzYwNy1tZXJnZS1vdmVyd3JpdGUuc2gKaW5kZXggNjU0N2ViOC4uNzU4YTYyMyAxMDA3NTUKLS0tIGEvdC90NzYwNy1tZXJnZS1vdmVyd3JpdGUuc2gKKysrIGIvdC90NzYwNy1tZXJnZS1vdmVyd3JpdGUuc2gKQEAgLTE0MSwxMSArMTQxLDEwIEBACiAJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9NRVJHRV9IRUFECiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3dpbGwgbm90IGJlIGNvbmZ1c2VkIGJ5IHN5bWxpbmsgaW4gbGVhZGluZyBwYXRoJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3aWxsIG5vdCBiZSBjb25mdXNlZCBieSBzeW1saW5rIGluIGxlYWRpbmcgcGF0aCcgJwogCWdpdCByZXNldCAtLWhhcmQgYzAgJiYKIAlybSAtcmYgc3ViICYmCi0JbG4gLXMgc3ViMiBzdWIgJiYKLQlnaXQgYWRkIHN1YiAmJgorCXRlc3RfbG5fc19hZGQgc3ViMiBzdWIgJiYKIAlnaXQgY29tbWl0IC1tIGxuICYmCiAJZ2l0IGNoZWNrb3V0IHN1YgogJwpkaWZmIC0tZ2l0IGEvdC90NzYxMC1tZXJnZXRvb2wuc2ggYi90L3Q3NjEwLW1lcmdldG9vbC5zaAppbmRleCBiYzM4NzM3Li5kNTI2YjFkIDEwMDc1NQotLS0gYS90L3Q3NjEwLW1lcmdldG9vbC5zaAorKysgYi90L3Q3NjEwLW1lcmdldG9vbC5zaApAQCAtMjM3LDcgKzIzNyw3IEBACiAgICAgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLU4gJiYKICAgICB0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgbWFzdGVyICYmCiAKLSAgICAjc2hvdWxkbnQgbmVlZCB0aGVzZSBsaW5lcworICAgICNzaG91bGQgbm90IG5lZWQgdGhlc2UgbGluZXMKICAgICAjKCB5ZXMgImQiIHwgZ2l0IG1lcmdldG9vbCBmaWxlMTEgPi9kZXYvbnVsbCAyPiYxICkgJiYKICAgICAjKCB5ZXMgImQiIHwgZ2l0IG1lcmdldG9vbCBmaWxlMTIgPi9kZXYvbnVsbCAyPiYxICkgJiYKICAgICAjKCB5ZXMgImwiIHwgZ2l0IG1lcmdldG9vbCBzdWJtb2QgPi9kZXYvbnVsbCAyPiYxICkgJiYKZGlmZiAtLWdpdCBhL3QvdDc2MTItbWVyZ2UtdmVyaWZ5LXNpZ25hdHVyZXMuc2ggYi90L3Q3NjEyLW1lcmdlLXZlcmlmeS1zaWduYXR1cmVzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIxYTBiZjgKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q3NjEyLW1lcmdlLXZlcmlmeS1zaWduYXR1cmVzLnNoCkBAIC0wLDAgKzEsNjEgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdtZXJnZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIHRlc3RzJworLiAuL3Rlc3QtbGliLnNoCisuICIkVEVTVF9ESVJFQ1RPUlkvbGliLWdwZy5zaCIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgJ2NyZWF0ZSBzaWduZWQgY29tbWl0cycgJworCWVjaG8gMSA+ZmlsZSAmJiBnaXQgYWRkIGZpbGUgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJZ2l0IHRhZyBpbml0aWFsICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgc2lkZS1zaWduZWQgJiYKKwllY2hvIDMgPmVsaWYgJiYgZ2l0IGFkZCBlbGlmICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLVMgLW0gInNpZ25lZCBvbiBzaWRlIiAmJgorCWdpdCBjaGVja291dCBpbml0aWFsICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgc2lkZS11bnNpZ25lZCAmJgorCWVjaG8gMyA+Zm9vICYmIGdpdCBhZGQgZm9vICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gInVuc2lnbmVkIG9uIHNpZGUiICYmCisJZ2l0IGNoZWNrb3V0IGluaXRpYWwgJiYKKworCWdpdCBjaGVja291dCAtYiBzaWRlLWJhZCAmJgorCWVjaG8gMyA+YmFyICYmIGdpdCBhZGQgYmFyICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLVMgLW0gImJhZCBvbiBzaWRlIiAmJgorCWdpdCBjYXQtZmlsZSBjb21taXQgc2lkZS1iYWQgPnJhdyAmJgorCXNlZCAtZSAicy9iYWQvZm9yZ2VkIGJhZC8iIHJhdyA+Zm9yZ2VkICYmCisJZ2l0IGhhc2gtb2JqZWN0IC13IC10IGNvbW1pdCBmb3JnZWQgPmZvcmdlZC5jb21taXQgJiYKKwlnaXQgY2hlY2tvdXQgaW5pdGlhbCAmJgorCisJZ2l0IGNoZWNrb3V0IC1iIHNpZGUtdW50cnVzdGVkICYmCisJZWNobyAzID5iYXogJiYgZ2l0IGFkZCBiYXogJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtU0I3MjI3MTg5IC1tICJ1bnRydXN0ZWQgb24gc2lkZSIKKworCWdpdCBjaGVja291dCBtYXN0ZXIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgJ21lcmdlIHVuc2lnbmVkIGNvbW1pdCB3aXRoIHZlcmlmaWNhdGlvbicgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtLWZmLW9ubHkgLS12ZXJpZnktc2lnbmF0dXJlcyBzaWRlLXVuc2lnbmVkIDI+bWVyZ2VlcnJvciAmJgorCXRlc3RfaTE4bmdyZXAgImRvZXMgbm90IGhhdmUgYSBHUEcgc2lnbmF0dXJlIiBtZXJnZWVycm9yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHICdtZXJnZSBjb21taXQgd2l0aCBiYWQgc2lnbmF0dXJlIHdpdGggdmVyaWZpY2F0aW9uJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tZmYtb25seSAtLXZlcmlmeS1zaWduYXR1cmVzICQoY2F0IGZvcmdlZC5jb21taXQpIDI+bWVyZ2VlcnJvciAmJgorCXRlc3RfaTE4bmdyZXAgImhhcyBhIGJhZCBHUEcgc2lnbmF0dXJlIiBtZXJnZWVycm9yCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHICdtZXJnZSBjb21taXQgd2l0aCB1bnRydXN0ZWQgc2lnbmF0dXJlIHdpdGggdmVyaWZpY2F0aW9uJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIC0tZmYtb25seSAtLXZlcmlmeS1zaWduYXR1cmVzIHNpZGUtdW50cnVzdGVkIDI+bWVyZ2VlcnJvciAmJgorCXRlc3RfaTE4bmdyZXAgImhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSIgbWVyZ2VlcnJvcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAnbWVyZ2Ugc2lnbmVkIGNvbW1pdCB3aXRoIHZlcmlmaWNhdGlvbicgJworCWdpdCBtZXJnZSAtLXZlcmJvc2UgLS1mZi1vbmx5IC0tdmVyaWZ5LXNpZ25hdHVyZXMgc2lkZS1zaWduZWQgPm1lcmdlb3V0cHV0ICYmCisJdGVzdF9pMThuZ3JlcCAiaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIiBtZXJnZW91dHB1dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQRyAnbWVyZ2UgY29tbWl0IHdpdGggYmFkIHNpZ25hdHVyZSB3aXRob3V0IHZlcmlmaWNhdGlvbicgJworCWdpdCBtZXJnZSAkKGNhdCBmb3JnZWQuY29tbWl0KQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc4MDAtZGlmZnRvb2wuc2ggYi90L3Q3ODAwLWRpZmZ0b29sLnNoCmluZGV4IGViMWQzZjguLjI0MTg1MjggMTAwNzU1Ci0tLSBhL3QvdDc4MDAtZGlmZnRvb2wuc2gKKysrIGIvdC90NzgwMC1kaWZmdG9vbC5zaApAQCAtMSw2ICsxLDYgQEAKICMhL2Jpbi9zaAogIwotIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAgRGF2aWQgQWd1aWxhcgorIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMgRGF2aWQgQWd1aWxhcgogIwogCiB0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtZGlmZnRvb2wKQEAgLTEwLDQ3ICsxMCwxOSBAQAogCiAuIC4vdGVzdC1saWIuc2gKIAotcmVtb3ZlX2NvbmZpZ192YXJzKCkKK2RpZmZ0b29sX3Rlc3Rfc2V0dXAgKCkKIHsKLQkjIFVuc2V0IGFsbCBjb25maWcgdmFyaWFibGVzIHVzZWQgYnkgZ2l0LWRpZmZ0b29sCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmYudG9vbAotCWdpdCBjb25maWcgLS11bnNldCBkaWZmLmd1aXRvb2wKLQlnaXQgY29uZmlnIC0tdW5zZXQgZGlmZnRvb2wudGVzdC10b29sLmNtZAotCWdpdCBjb25maWcgLS11bnNldCBkaWZmdG9vbC5wcm9tcHQKLQlnaXQgY29uZmlnIC0tdW5zZXQgbWVyZ2UudG9vbAotCWdpdCBjb25maWcgLS11bnNldCBtZXJnZXRvb2wudGVzdC10b29sLmNtZAotCWdpdCBjb25maWcgLS11bnNldCBtZXJnZXRvb2wucHJvbXB0Ci0JcmV0dXJuIDAKKwl0ZXN0X2NvbmZpZyBkaWZmLnRvb2wgdGVzdC10b29sICYmCisJdGVzdF9jb25maWcgZGlmZnRvb2wudGVzdC10b29sLmNtZCAnY2F0ICIkTE9DQUwiJyAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLmJvZ3VzLXRvb2wuY21kIGZhbHNlCiB9CiAKLXJlc3RvcmVfdGVzdF9kZWZhdWx0cygpCi17Ci0JIyBSZXN0b3JlcyB0aGUgdGVzdCBkZWZhdWx0cyB1c2VkIGJ5IHNldmVyYWwgdGVzdHMKLQlyZW1vdmVfY29uZmlnX3ZhcnMKLQl1bnNldCBHSVRfRElGRl9UT09MCi0JdW5zZXQgR0lUX0RJRkZUT09MX1BST01QVAotCXVuc2V0IEdJVF9ESUZGVE9PTF9OT19QUk9NUFQKLQlnaXQgY29uZmlnIGRpZmYudG9vbCB0ZXN0LXRvb2wgJiYKLQlnaXQgY29uZmlnIGRpZmZ0b29sLnRlc3QtdG9vbC5jbWQgJ2NhdCAkTE9DQUwnCi0JZ2l0IGNvbmZpZyBkaWZmdG9vbC5ib2d1cy10b29sLmNtZCBmYWxzZQotfQotCi1wcm9tcHRfZ2l2ZW4oKQorcHJvbXB0X2dpdmVuICgpCiB7CiAJcHJvbXB0PSIkMSIKIAl0ZXN0ICIkcHJvbXB0IiA9ICJMYXVuY2ggJ3Rlc3QtdG9vbCcgW1kvbl06IGJyYW5jaCIKIH0KIAotc3RkaW5fY29udGFpbnMoKQotewotCWdyZXAgPi9kZXYvbnVsbCAiJDEiCi19Ci0KLXN0ZGluX2RvZXNub3RfY29udGFpbigpCi17Ci0JISBzdGRpbl9jb250YWlucyAiJDEiCi19Ci0KICMgQ3JlYXRlIGEgZmlsZSBvbiBtYXN0ZXIgYW5kIGNoYW5nZSBpdCBvbiBicmFuY2gKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnc2V0dXAnICcKIAllY2hvIG1hc3RlciA+ZmlsZSAmJgpAQCAtNjUsMjQ5ICszNywyMzcgQEAKIAogIyBDb25maWd1cmUgYSBjdXN0b20gZGlmZnRvb2wuPHRvb2w+LmNtZCBhbmQgdXNlIGl0CiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2N1c3RvbSBjb21tYW5kcycgJwotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cyAmJgotCWdpdCBjb25maWcgZGlmZnRvb2wudGVzdC10b29sLmNtZCAiY2F0IFwkUkVNT1RFIiAmJgorCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwl0ZXN0X2NvbmZpZyBkaWZmdG9vbC50ZXN0LXRvb2wuY21kICJjYXQgXCJcJFJFTU9URVwiIiAmJgorCWVjaG8gbWFzdGVyID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCiAKLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAibWFzdGVyIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzICYmCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIKKwl0ZXN0X2NvbmZpZyBkaWZmdG9vbC50ZXN0LXRvb2wuY21kICJjYXQgXCJcJExPQ0FMXCIiICYmCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotIyBFbnN1cmVzIHRoYXQgYSBjdXN0b20gZGlmZnRvb2wuPHRvb2w+LmNtZCBvdmVycmlkZXMgYnVpbHQtaW5zCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2N1c3RvbSBjb21tYW5kcyBvdmVycmlkZSBidWlsdC1pbnMnICcKLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMgJiYKLQlnaXQgY29uZmlnIGRpZmZ0b29sLmRlZmF1bHRzLmNtZCAiY2F0IFwkUkVNT1RFIiAmJgotCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLXRvb2wgZGVmYXVsdHMgLS1uby1wcm9tcHQgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9ICJtYXN0ZXIiICYmCi0KLQlnaXQgY29uZmlnIC0tdW5zZXQgZGlmZnRvb2wuZGVmYXVsdHMuY21kCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2N1c3RvbSB0b29sIGNvbW1hbmRzIG92ZXJyaWRlIGJ1aWx0LWlucycgJworCXRlc3RfY29uZmlnIGRpZmZ0b29sLnZpbWRpZmYuY21kICJjYXQgXCJcJFJFTU9URVwiIiAmJgorCWVjaG8gbWFzdGVyID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS10b29sIHZpbWRpZmYgLS1uby1wcm9tcHQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLSMgRW5zdXJlcyB0aGF0IGdpdC1kaWZmdG9vbCBpZ25vcmVzIGJvZ3VzIC0tdG9vbCB2YWx1ZXMKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgaWdub3JlcyBiYWQgLS10b29sIHZhbHVlcycgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS10b29sPWJhZC10b29sIGJyYW5jaCkKLQl0ZXN0ICIkPyIgPSAxICYmCi0JdGVzdCAiJGRpZmYiID0gIiIKKwk6ID5leHBlY3QgJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgXAorCQlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS10b29sPWJhZC10b29sIGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIGZvcndhcmRzIGFyZ3VtZW50cyB0byBkaWZmJyAnCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgogCT5mb3ItZGlmZiAmJgogCWdpdCBhZGQgZm9yLWRpZmYgJiYKIAllY2hvIGNoYW5nZXM+Zm9yLWRpZmYgJiYKIAlnaXQgYWRkIGZvci1kaWZmICYmCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLWNhY2hlZCAtLW5vLXByb21wdCAtLSBmb3ItZGlmZikgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiIiAmJgorCTogPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLWNhY2hlZCAtLW5vLXByb21wdCAtLSBmb3ItZGlmZiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCWdpdCByZXNldCAtLSBmb3ItZGlmZiAmJgogCXJtIGZvci1kaWZmCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgaG9ub3JzIC0tZ3VpJyAnCi0JZ2l0IGNvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKLQlnaXQgY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBkaWZmLmd1aXRvb2wgdGVzdC10b29sICYmCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgYm9ndXMtdG9vbCAmJgorCXRlc3RfY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCisJdGVzdF9jb25maWcgZGlmZi5ndWl0b29sIHRlc3QtdG9vbCAmJgogCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWd1aSBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1ndWkgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1ndWkgbGFzdCBzZXR0aW5nIHdpbnMnICcKLQlnaXQgY29uZmlnIGRpZmYuZ3VpdG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZ3VpIC0tbm8tZ3VpICYmCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCTogPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWd1aSAtLW5vLWd1aSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCi0JZ2l0IGNvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKLQlnaXQgY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBkaWZmLmd1aXRvb2wgdGVzdC10b29sICYmCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLW5vLWd1aSAtLWd1aSBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgYm9ndXMtdG9vbCAmJgorCXRlc3RfY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCisJdGVzdF9jb25maWcgZGlmZi5ndWl0b29sIHRlc3QtdG9vbCAmJgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1uby1ndWkgLS1ndWkgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1ndWkgd29ya3Mgd2l0aG91dCBjb25maWd1cmVkIGRpZmYuZ3VpdG9vbCcgJwotCWdpdCBjb25maWcgZGlmZi50b29sIHRlc3QtdG9vbCAmJgotCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWd1aSBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZ3VpIGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiAjIFNwZWNpZnkgdGhlIGRpZmYgdG9vbCB1c2luZyAkR0lUX0RJRkZfVE9PTAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdHSVRfRElGRl9UT09MIHZhcmlhYmxlJyAnCi0JdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBkaWZmLnRvb2wgJiYKLQlHSVRfRElGRl9UT09MPXRlc3QtdG9vbCAmJgotCWV4cG9ydCBHSVRfRElGRl9UT09MICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCWdpdCBjb25maWcgLS11bnNldCBkaWZmLnRvb2wgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJR0lUX0RJRkZfVE9PTD10ZXN0LXRvb2wgZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiAjIFRlc3QgdGhlICRHSVRfKl9UT09MIHZhcmlhYmxlcyBhbmQgZW5zdXJlCiAjIHRoYXQgJEdJVF9ESUZGX1RPT0wgYWx3YXlzIHdpbnMgdW5sZXNzIC0tdG9vbCBpcyBzcGVjaWZpZWQKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnR0lUX0RJRkZfVE9PTCBvdmVycmlkZXMnICcKLQlnaXQgY29uZmlnIGRpZmYudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKKwlkaWZmdG9vbF90ZXN0X3NldHVwICYmCisJdGVzdF9jb25maWcgZGlmZi50b29sIGJvZ3VzLXRvb2wgJiYKKwl0ZXN0X2NvbmZpZyBtZXJnZS50b29sIGJvZ3VzLXRvb2wgJiYKIAotCUdJVF9ESUZGX1RPT0w9dGVzdC10b29sICYmCi0JZXhwb3J0IEdJVF9ESUZGX1RPT0wgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJR0lUX0RJRkZfVE9PTD10ZXN0LXRvb2wgZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCUdJVF9ESUZGX1RPT0w9Ym9ndXMtdG9vbCAmJgotCWV4cG9ydCBHSVRfRElGRl9UT09MICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tdG9vbD10ZXN0LXRvb2wgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9ICJicmFuY2giICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwl0ZXN0X2NvbmZpZyBkaWZmLnRvb2wgYm9ndXMtdG9vbCAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgYm9ndXMtdG9vbCAmJgorCUdJVF9ESUZGX1RPT0w9Ym9ndXMtdG9vbCBcCisJCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLXRvb2w9dGVzdC10b29sIGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiAjIFRlc3QgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgLS1uby1wcm9tcHQgdG8gZGlmZnRvb2wKICMgd2hlbiAkR0lUX0RJRkZUT09MX05PX1BST01QVCBpcyB0cnVlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ0dJVF9ESUZGVE9PTF9OT19QUk9NUFQgdmFyaWFibGUnICcKLQlHSVRfRElGRlRPT0xfTk9fUFJPTVBUPXRydWUgJiYKLQlleHBvcnQgR0lUX0RJRkZUT09MX05PX1BST01QVCAmJgotCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJR0lUX0RJRkZUT09MX05PX1BST01QVD10cnVlIGdpdCBkaWZmdG9vbCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBnaXQtZGlmZnRvb2wgc3VwcG9ydHMgdGhlIGRpZmZ0b29sLnByb21wdCB2YXJpYWJsZS4KICMgVGVzdCB0aGF0IEdJVF9ESUZGVE9PTF9QUk9NUFQgY2FuIG92ZXJyaWRlIGRpZmZ0b29sLnByb21wdCA9IGZhbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ0dJVF9ESUZGVE9PTF9QUk9NUFQgdmFyaWFibGUnICcKLQlnaXQgY29uZmlnIGRpZmZ0b29sLnByb21wdCBmYWxzZSAmJgotCUdJVF9ESUZGVE9PTF9QUk9NUFQ9dHJ1ZSAmJgotCWV4cG9ydCBHSVRfRElGRlRPT0xfUFJPTVBUICYmCi0KLQlwcm9tcHQ9JChlY2hvIHwgZ2l0IGRpZmZ0b29sIGJyYW5jaCB8IHRhaWwgLTEpICYmCi0JcHJvbXB0X2dpdmVuICIkcHJvbXB0IiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnByb21wdCBmYWxzZSAmJgorCWVjaG8gPmlucHV0ICYmCisJR0lUX0RJRkZUT09MX1BST01QVD10cnVlIGdpdCBkaWZmdG9vbCBicmFuY2ggPGlucHV0ID5vdXRwdXQgJiYKKwlwcm9tcHQ9JCh0YWlsIC0xIDxvdXRwdXQpICYmCisJcHJvbXB0X2dpdmVuICIkcHJvbXB0IgogJwogCiAjIFRlc3QgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHBhc3MgLS1uby1wcm9tcHQgd2hlbiBkaWZmdG9vbC5wcm9tcHQgaXMgZmFsc2UKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wucHJvbXB0IGNvbmZpZyB2YXJpYWJsZSBpcyBmYWxzZScgJwotCWdpdCBjb25maWcgZGlmZnRvb2wucHJvbXB0IGZhbHNlICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnByb21wdCBmYWxzZSAmJgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKICMgVGVzdCB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcGFzcyAtLW5vLXByb21wdCB3aGVuIG1lcmdldG9vbC5wcm9tcHQgaXMgZmFsc2UKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgbWVyZ2UucHJvbXB0ID0gZmFsc2UnICcKKwlkaWZmdG9vbF90ZXN0X3NldHVwICYmCiAJdGVzdF9taWdodF9mYWlsIGdpdCBjb25maWcgLS11bnNldCBkaWZmdG9vbC5wcm9tcHQgJiYKLQlnaXQgY29uZmlnIG1lcmdldG9vbC5wcm9tcHQgZmFsc2UgJiYKLQotCWRpZmY9JChnaXQgZGlmZnRvb2wgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9ICJicmFuY2giICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwl0ZXN0X2NvbmZpZyBtZXJnZXRvb2wucHJvbXB0IGZhbHNlICYmCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBUZXN0IHRoYXQgdGhlIC15IGZsYWcgY2FuIG92ZXJyaWRlIGRpZmZ0b29sLnByb21wdCA9IHRydWUKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wucHJvbXB0IGNhbiBvdmVycmlkZGVuIHdpdGggLXknICcKLQlnaXQgY29uZmlnIGRpZmZ0b29sLnByb21wdCB0cnVlICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC15IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJZGlmZnRvb2xfdGVzdF9zZXR1cCAmJgorCXRlc3RfY29uZmlnIGRpZmZ0b29sLnByb21wdCB0cnVlICYmCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAteSBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBUZXN0IHRoYXQgdGhlIC0tcHJvbXB0IGZsYWcgY2FuIG92ZXJyaWRlIGRpZmZ0b29sLnByb21wdCA9IGZhbHNlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sLnByb21wdCBjYW4gb3ZlcnJpZGRlbiB3aXRoIC0tcHJvbXB0JyAnCi0JZ2l0IGNvbmZpZyBkaWZmdG9vbC5wcm9tcHQgZmFsc2UgJiYKLQotCXByb21wdD0kKGVjaG8gfCBnaXQgZGlmZnRvb2wgLS1wcm9tcHQgYnJhbmNoIHwgdGFpbCAtMSkgJiYKLQlwcm9tcHRfZ2l2ZW4gIiRwcm9tcHQiICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwlkaWZmdG9vbF90ZXN0X3NldHVwICYmCisJdGVzdF9jb25maWcgZGlmZnRvb2wucHJvbXB0IGZhbHNlICYmCisJZWNobyA+aW5wdXQgJiYKKwlnaXQgZGlmZnRvb2wgLS1wcm9tcHQgYnJhbmNoIDxpbnB1dCA+b3V0cHV0ICYmCisJcHJvbXB0PSQodGFpbCAtMSA8b3V0cHV0KSAmJgorCXByb21wdF9naXZlbiAiJHByb21wdCIKICcKIAogIyBUZXN0IHRoYXQgdGhlIGxhc3QgZmxhZyBwYXNzZWQgb24gdGhlIGNvbW1hbmQtbGluZSB3aW5zCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIGxhc3QgZmxhZyB3aW5zJyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLXByb21wdCAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gImJyYW5jaCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cyAmJgotCi0JcHJvbXB0PSQoZWNobyB8IGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLXByb21wdCBicmFuY2ggfCB0YWlsIC0xKSAmJgotCXByb21wdF9naXZlbiAiJHByb21wdCIgJiYKLQotCXJlc3RvcmVfdGVzdF9kZWZhdWx0cworCWRpZmZ0b29sX3Rlc3Rfc2V0dXAgJiYKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tcHJvbXB0IC0tbm8tcHJvbXB0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCWVjaG8gPmlucHV0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tcHJvbXB0IGJyYW5jaCA8aW5wdXQgPm91dHB1dCAmJgorCXByb21wdD0kKHRhaWwgLTEgPG91dHB1dCkgJiYKKwlwcm9tcHRfZ2l2ZW4gIiRwcm9tcHQiCiAnCiAKICMgZ2l0LWRpZmZ0b29sIGZhbGxzIGJhY2sgdG8gZ2l0LW1lcmdldG9vbCBjb25maWcgdmFyaWFibGVzCiAjIHNvIHRlc3QgdGhhdCBiZWhhdmlvciBoZXJlCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sICsgbWVyZ2V0b29sIGNvbmZpZyB2YXJpYWJsZXMnICcKLQlyZW1vdmVfY29uZmlnX3ZhcnMgJiYKLQlnaXQgY29uZmlnIG1lcmdlLnRvb2wgdGVzdC10b29sICYmCi0JZ2l0IGNvbmZpZyBtZXJnZXRvb2wudGVzdC10b29sLmNtZCAiY2F0IFwkTE9DQUwiICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgorCXRlc3RfY29uZmlnIG1lcmdlLnRvb2wgdGVzdC10b29sICYmCisJdGVzdF9jb25maWcgbWVyZ2V0b29sLnRlc3QtdG9vbC5jbWQgImNhdCBcJExPQ0FMIiAmJgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCiAKIAkjIHNldCBtZXJnZS50b29sIHRvIHNvbWV0aGluZyBib2d1cywgZGlmZi50b29sIHRvIHRlc3QtdG9vbAotCWdpdCBjb25maWcgbWVyZ2UudG9vbCBib2d1cy10b29sICYmCi0JZ2l0IGNvbmZpZyBkaWZmLnRvb2wgdGVzdC10b29sICYmCi0KLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSAiYnJhbmNoIiAmJgotCi0JcmVzdG9yZV90ZXN0X2RlZmF1bHRzCisJdGVzdF9jb25maWcgbWVyZ2UudG9vbCBib2d1cy10b29sICYmCisJdGVzdF9jb25maWcgZGlmZi50b29sIHRlc3QtdG9vbCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbC48dG9vbD4ucGF0aCcgJwotCWdpdCBjb25maWcgZGlmZnRvb2wudGtkaWZmLnBhdGggZWNobyAmJgotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS10b29sPXRrZGlmZiAtLW5vLXByb21wdCBicmFuY2gpICYmCi0JZ2l0IGNvbmZpZyAtLXVuc2V0IGRpZmZ0b29sLnRrZGlmZi5wYXRoICYmCi0JbGluZXM9JChlY2hvICIkZGlmZiIgfCBncmVwIGZpbGUgfCB3YyAtbCkgJiYKLQl0ZXN0ICIkbGluZXMiIC1lcSAxICYmCi0KLQlyZXN0b3JlX3Rlc3RfZGVmYXVsdHMKKwl0ZXN0X2NvbmZpZyBkaWZmdG9vbC50a2RpZmYucGF0aCBlY2hvICYmCisJZ2l0IGRpZmZ0b29sIC0tdG9vbD10a2RpZmYgLS1uby1wcm9tcHQgYnJhbmNoID5vdXRwdXQgJiYKKwlsaW5lcz0kKGdyZXAgZmlsZSBvdXRwdXQgfCB3YyAtbCkgJiYKKwl0ZXN0ICIkbGluZXMiIC1lcSAxCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1leHRjbWQ9Y2F0JyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWV4dGNtZD1jYXQgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IGJyYW5jaCIkTEYibWFzdGVyCisJZWNobyBicmFuY2ggPmV4cGVjdCAmJgorCWVjaG8gbWFzdGVyID4+ZXhwZWN0ICYmCisJZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZXh0Y21kPWNhdCBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWV4dGNtZCBjYXQnICcKLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tbm8tcHJvbXB0IC0tZXh0Y21kIGNhdCBicmFuY2gpICYmCi0JdGVzdCAiJGRpZmYiID0gYnJhbmNoIiRMRiJtYXN0ZXIKKwllY2hvIGJyYW5jaCA+ZXhwZWN0ICYmCisJZWNobyBtYXN0ZXIgPj5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1leHRjbWQ9Y2F0IGJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC14IGNhdCcgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLXggY2F0IGJyYW5jaCkgJiYKLQl0ZXN0ICIkZGlmZiIgPSBicmFuY2giJExGIm1hc3RlcgorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwllY2hvIG1hc3RlciA+PmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAteCBjYXQgYnJhbmNoID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1leHRjbWQgZWNobyBhcmcxJyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCAtLWV4dGNtZCBzaFwgLWNcIFwiZWNob1wgXCQxXCIgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IGZpbGUKKwllY2hvIGZpbGUgPmV4cGVjdCAmJgorCWdpdCBkaWZmdG9vbCAtLW5vLXByb21wdCBcCisJCS0tZXh0Y21kIHNoXCAtY1wgXCJlY2hvXCBcJDFcIiBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWV4dGNtZCBjYXQgYXJnMScgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1leHRjbWQgc2hcIC1jXCBcImNhdFwgXCQxXCIgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IG1hc3RlcgorCWVjaG8gbWFzdGVyID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgXAorCQktLWV4dGNtZCBzaFwgLWNcIFwiY2F0XCBcJDFcIiBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWV4dGNtZCBjYXQgYXJnMicgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgLS1leHRjbWQgc2hcIC1jXCBcImNhdFwgXCQyXCIgYnJhbmNoKSAmJgotCXRlc3QgIiRkaWZmIiA9IGJyYW5jaAorCWVjaG8gYnJhbmNoID5leHBlY3QgJiYKKwlnaXQgZGlmZnRvb2wgLS1uby1wcm9tcHQgXAorCQktLWV4dGNtZCBzaFwgLWNcIFwiY2F0XCBcJDJcIiBicmFuY2ggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAogIyBDcmVhdGUgYSBzZWNvbmQgZmlsZSBvbiBtYXN0ZXIgYW5kIGEgZGlmZmVyZW50IHZlcnNpb24gb24gYnJhbmNoCkBAIC0zMjQsMjYgKzI4NCwyNiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ3NheSBubyB0byB0aGUgZmlyc3QgZmlsZScgJwotCWRpZmY9JCggKGVjaG8gbjsgZWNobykgfCBnaXQgZGlmZnRvb2wgLXggY2F0IGJyYW5jaCApICYmCi0KLQllY2hvICIkZGlmZiIgfCBzdGRpbl9jb250YWlucyBtMiAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIGJyMiAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2RvZXNub3RfY29udGFpbiBtYXN0ZXIgJiYKLQllY2hvICIkZGlmZiIgfCBzdGRpbl9kb2Vzbm90X2NvbnRhaW4gYnJhbmNoCisJKGVjaG8gbiAmJiBlY2hvKSA+aW5wdXQgJiYKKwlnaXQgZGlmZnRvb2wgLXggY2F0IGJyYW5jaCA8aW5wdXQgPm91dHB1dCAmJgorCWdyZXAgbTIgb3V0cHV0ICYmCisJZ3JlcCBicjIgb3V0cHV0ICYmCisJISBncmVwIG1hc3RlciBvdXRwdXQgJiYKKwkhIGdyZXAgYnJhbmNoIG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ3NheSBubyB0byB0aGUgc2Vjb25kIGZpbGUnICcKLQlkaWZmPSQoIChlY2hvOyBlY2hvIG4pIHwgZ2l0IGRpZmZ0b29sIC14IGNhdCBicmFuY2ggKSAmJgotCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgbWFzdGVyICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgYnJhbmNoICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fZG9lc25vdF9jb250YWluIG0yICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fZG9lc25vdF9jb250YWluIGJyMgorCShlY2hvICYmIGVjaG8gbikgPmlucHV0ICYmCisJZ2l0IGRpZmZ0b29sIC14IGNhdCBicmFuY2ggPGlucHV0ID5vdXRwdXQgJiYKKwlncmVwIG1hc3RlciBvdXRwdXQgJiYKKwlncmVwIGJyYW5jaCBvdXRwdXQgJiYKKwkhIGdyZXAgbTIgb3V0cHV0ICYmCisJISBncmVwIGJyMiBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLXRvb2wtaGVscCcgJwotCXRvb2xfaGVscD0kKGdpdCBkaWZmdG9vbCAtLXRvb2wtaGVscCkgJiYKLQllY2hvICIkdG9vbF9oZWxwIiB8IHN0ZGluX2NvbnRhaW5zIHRvb2wKKwlnaXQgZGlmZnRvb2wgLS10b29sLWhlbHAgPm91dHB1dCAmJgorCWdyZXAgdG9vbCBvdXRwdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdzZXR1cCBjaGFuZ2UgaW4gc3ViZGlyZWN0b3J5JyAnCkBAIC0zNTQsMzQgKzMxNCwxMjMgQEAKIAlnaXQgY29tbWl0IC1tICJhZGRlZCBzdWIvc3ViIiAmJgogCWVjaG8gdGVzdCA+PmZpbGUgJiYKIAllY2hvIHRlc3QgPj5zdWIvc3ViICYmCi0JZ2l0IGFkZCAuICYmCisJZ2l0IGFkZCBmaWxlIHN1Yi9zdWIgJiYKIAlnaXQgY29tbWl0IC1tICJtb2RpZmllZCBib3RoIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC1kJyAnCi0JZGlmZj0kKGdpdCBkaWZmdG9vbCAtZCAtLWV4dGNtZCBscyBicmFuY2gpICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgc3ViICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgZmlsZQorcnVuX2Rpcl9kaWZmX3Rlc3QgKCkgeworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAiJDEgLS1uby1zeW1saW5rcyIgIgorCQlzeW1saW5rcz0tLW5vLXN5bWxpbmtzICYmCisJCSQyCisJIgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCxTWU1MSU5LUyAiJDEgLS1zeW1saW5rcyIgIgorCQlzeW1saW5rcz0tLXN5bWxpbmtzICYmCisJCSQyCisJIgorfQorCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLWQnICcKKwlnaXQgZGlmZnRvb2wgLWQgJHN5bWxpbmtzIC0tZXh0Y21kIGxzIGJyYW5jaCA+b3V0cHV0ICYmCisJZ3JlcCBzdWIgb3V0cHV0ICYmCisJZ3JlcCBmaWxlIG91dHB1dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC0tZGlyLWRpZmYnICcKLQlkaWZmPSQoZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgLS1leHRjbWQgbHMgYnJhbmNoKSAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIHN1YiAmJgotCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIGZpbGUKK3J1bl9kaXJfZGlmZl90ZXN0ICdkaWZmdG9vbCAtLWRpci1kaWZmJyAnCisJZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgJHN5bWxpbmtzIC0tZXh0Y21kIGxzIGJyYW5jaCA+b3V0cHV0ICYmCisJZ3JlcCBzdWIgb3V0cHV0ICYmCisJZ3JlcCBmaWxlIG91dHB1dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFBFUkwgJ2RpZmZ0b29sIC0tZGlyLWRpZmYgaWdub3JlcyAtLXByb21wdCcgJwotCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiAtLXByb21wdCAtLWV4dGNtZCBscyBicmFuY2gpICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgc3ViICYmCi0JZWNobyAiJGRpZmYiIHwgc3RkaW5fY29udGFpbnMgZmlsZQorcnVuX2Rpcl9kaWZmX3Rlc3QgJ2RpZmZ0b29sIC0tZGlyLWRpZmYgaWdub3JlcyAtLXByb21wdCcgJworCWdpdCBkaWZmdG9vbCAtLWRpci1kaWZmICRzeW1saW5rcyAtLXByb21wdCAtLWV4dGNtZCBscyBicmFuY2ggPm91dHB1dCAmJgorCWdyZXAgc3ViIG91dHB1dCAmJgorCWdyZXAgZmlsZSBvdXRwdXQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLWRpci1kaWZmIGZyb20gc3ViZGlyZWN0b3J5JyAnCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLS1kaXItZGlmZiBmcm9tIHN1YmRpcmVjdG9yeScgJwogCSgKIAkJY2Qgc3ViICYmCi0JCWRpZmY9JChnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiAtLWV4dGNtZCBscyBicmFuY2gpICYmCi0JCWVjaG8gIiRkaWZmIiB8IHN0ZGluX2NvbnRhaW5zIHN1YiAmJgotCQllY2hvICIkZGlmZiIgfCBzdGRpbl9jb250YWlucyBmaWxlCisJCWdpdCBkaWZmdG9vbCAtLWRpci1kaWZmICRzeW1saW5rcyAtLWV4dGNtZCBscyBicmFuY2ggPm91dHB1dCAmJgorCQlncmVwIHN1YiBvdXRwdXQgJiYKKwkJZ3JlcCBmaWxlIG91dHB1dAorCSkKKycKKworcnVuX2Rpcl9kaWZmX3Rlc3QgJ2RpZmZ0b29sIC0tZGlyLWRpZmYgd2hlbiB3b3JrdHJlZSBmaWxlIGlzIG1pc3NpbmcnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IHJlc2V0IC0taGFyZCAmJgorCXJtIGZpbGUyICYmCisJZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgJHN5bWxpbmtzIC0tZXh0Y21kIGxzIGJyYW5jaCBtYXN0ZXIgPm91dHB1dCAmJgorCWdyZXAgZmlsZTIgb3V0cHV0CisnCisKK3dyaXRlX3NjcmlwdCAuZ2l0L0NIRUNLX1NZTUxJTktTIDw8XEVPRgorZm9yIGYgaW4gZmlsZSBmaWxlMiBzdWIvc3ViCitkbworCWVjaG8gIiRmIgorCXJlYWRsaW5rICIkMi8kZiIKK2RvbmUgPmFjdHVhbAorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCxTWU1MSU5LUyAnZGlmZnRvb2wgLS1kaXItZGlmZiAtLXN5bWxpbmsgd2l0aG91dCB1bnN0YWdlZCBjaGFuZ2VzJyAnCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCisJZmlsZQorCSQocHdkKS9maWxlCisJZmlsZTIKKwkkKHB3ZCkvZmlsZTIKKwlzdWIvc3ViCisJJChwd2QpL3N1Yi9zdWIKKwlFT0YKKwlnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiAtLXN5bWxpbmsgXAorCQktLWV4dGNtZCAiLi8uZ2l0L0NIRUNLX1NZTUxJTktTIiBicmFuY2ggSEVBRCAmJgorCXRlc3RfY21wIGFjdHVhbCBleHBlY3QKKycKKword3JpdGVfc2NyaXB0IG1vZGlmeS1yaWdodC1maWxlIDw8XEVPRgorZWNobyAibmV3IGNvbnRlbnQiID4iJDIvZmlsZSIKK0VPRgorCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLS1kaXItZGlmZiBzeW5jcyB3b3JrdHJlZSB3aXRoIHVuc3RhZ2VkIGNoYW5nZScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyAib3JpZyBjb250ZW50IiA+ZmlsZSAmJgorCWdpdCBkaWZmdG9vbCAtZCAkc3ltbGlua3MgLS1leHRjbWQgIiQocHdkKS9tb2RpZnktcmlnaHQtZmlsZSIgYnJhbmNoICYmCisJZWNobyAibmV3IGNvbnRlbnQiID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZQorJworCitydW5fZGlyX2RpZmZfdGVzdCAnZGlmZnRvb2wgLS1kaXItZGlmZiBzeW5jcyB3b3JrdHJlZSB3aXRob3V0IHVuc3RhZ2VkIGNoYW5nZScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGRpZmZ0b29sIC1kICRzeW1saW5rcyAtLWV4dGNtZCAiJChwd2QpL21vZGlmeS1yaWdodC1maWxlIiBicmFuY2ggJiYKKwllY2hvICJuZXcgY29udGVudCIgPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBmaWxlCisnCisKK3dyaXRlX3NjcmlwdCBtb2RpZnktZmlsZSA8PFxFT0YKK2VjaG8gIm5ldyBjb250ZW50IiA+ZmlsZQorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgUEVSTCAnZGlmZnRvb2wgLS1uby1zeW1saW5rcyBkb2VzIG5vdCBvdmVyd3JpdGUgd29ya2luZyB0cmVlIGZpbGUgJyAnCisJZWNobyAib3JpZyBjb250ZW50IiA+ZmlsZSAmJgorCWdpdCBkaWZmdG9vbCAtLWRpci1kaWZmIC0tbm8tc3ltbGlua3MgLS1leHRjbWQgIiQocHdkKS9tb2RpZnktZmlsZSIgYnJhbmNoICYmCisJZWNobyAibmV3IGNvbnRlbnQiID5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgZmlsZQorJworCit3cml0ZV9zY3JpcHQgbW9kaWZ5LWJvdGgtZmlsZXMgPDxcRU9GCitlY2hvICJ3dCBjb250ZW50IiA+ZmlsZSAmJgorZWNobyAidG1wIGNvbnRlbnQiID4iJDIvZmlsZSIgJiYKK2VjaG8gIiQyIiA+dG1wZGlyCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdkaWZmdG9vbCAtLW5vLXN5bWxpbmtzIGRldGVjdHMgY29uZmxpY3QgJyAnCisJKAorCQlUTVBESVI9JFRSQVNIX0RJUkVDVE9SWSAmJgorCQlleHBvcnQgVE1QRElSICYmCisJCWVjaG8gIm9yaWcgY29udGVudCIgPmZpbGUgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmZ0b29sIC0tZGlyLWRpZmYgLS1uby1zeW1saW5rcyAtLWV4dGNtZCAiJChwd2QpL21vZGlmeS1ib3RoLWZpbGVzIiBicmFuY2ggJiYKKwkJZWNobyAid3QgY29udGVudCIgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgZmlsZSAmJgorCQllY2hvICJ0bXAgY29udGVudCIgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgIiQoY2F0IHRtcGRpcikvZmlsZSIKIAkpCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDc4MTEtZ3JlcC1vcGVuLnNoIGIvdC90NzgxMS1ncmVwLW9wZW4uc2gKaW5kZXggYTg5NTc3OC4uZTE5NTFhNSAxMDA3NTUKLS0tIGEvdC90NzgxMS1ncmVwLW9wZW4uc2gKKysrIGIvdC90NzgxMS1ncmVwLW9wZW4uc2gKQEAgLTEyNSwxMSArMTI1LDYgQEAKIAl0ZXN0X2NtcCBlbXB0eSBvdXQKICcKIAotdGVzdF9jb25maWcoKSB7Ci0JZ2l0IGNvbmZpZyAiJDEiICIkMiIgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjb25maWcgLS11bnNldCAkMSIKLX0KLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29wZXMgd2l0aCBjb2xvciBzZXR0aW5ncycgJwogCXJtIC1mIGFjdHVhbCAmJgogCWVjaG8gZ3JlcC5oID5leHBlY3QgJiYKZGlmZiAtLWdpdCBhL3QvdDgwMDMtYmxhbWUtY29ybmVyLWNhc2VzLnNoIGIvdC90ODAwMy1ibGFtZS1jb3JuZXItY2FzZXMuc2gKaW5kZXggMjMwMTQzYy4uZTdjYWMxZCAxMDA3NTUKLS0tIGEvdC90ODAwMy1ibGFtZS1jb3JuZXItY2FzZXMuc2gKKysrIGIvdC90ODAwMy1ibGFtZS1jb3JuZXItY2FzZXMuc2gKQEAgLTE3NSw2ICsxNzUsMTIgQEAKIAlncmVwICJoYXMgb25seSAyIGxpbmVzIiBlcnJvcnMKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgcGFyc2VzIDxlbmQ+IHBhcnQgb2YgLUwnICcKKwlnaXQgYmxhbWUgLUwxLDEgdHJlcyA+b3V0ICYmCisJY2F0IG91dCAmJgorCXRlc3QgJCh3YyAtbCA8IG91dCkgLWVxIDEKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5kZW50IG9mIGxpbmUgbnVtYmVycywgbmluZSBsaW5lcycgJwogCWdpdCBibGFtZSBuaW5lX2xpbmVzID5hY3R1YWwgJiYKIAl0ZXN0ICQoZ3JlcCAtYyAiICAiIGFjdHVhbCkgPSAwCmRpZmYgLS1naXQgYS90L3Q4MDA2LWJsYW1lLXRleHRjb252LnNoIGIvdC90ODAwNi1ibGFtZS10ZXh0Y29udi5zaAppbmRleCBiZjZjYWE0Li43NjgzNTE1IDEwMDc1NQotLS0gYS90L3Q4MDA2LWJsYW1lLXRleHRjb252LnNoCisrKyBiL3QvdDgwMDYtYmxhbWUtdGV4dGNvbnYuc2gKQEAgLTE4LDE3ICsxOCwxMyBAQAogCWVjaG8gImJpbjogdGVzdCBudW1iZXIgMCIgPnplcm8uYmluICYmCiAJZWNobyAiYmluOiB0ZXN0IDEiID5vbmUuYmluICYmCiAJZWNobyAiYmluOiB0ZXN0IG51bWJlciAyIiA+dHdvLmJpbiAmJgotCWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1M7IHRoZW4KLQkJbG4gLXMgb25lLmJpbiBzeW1saW5rLmJpbgotCWZpICYmCisJdGVzdF9sbl9zX2FkZCBvbmUuYmluIHN5bWxpbmsuYmluICYmCiAJZ2l0IGFkZCAuICYmCiAJR0lUX0FVVEhPUl9OQU1FPU51bWJlcjEgZ2l0IGNvbW1pdCAtYSAtbSBGaXJzdCAtLWRhdGU9IjIwMTAtMDEtMDEgMTg6MDA6MDAiICYmCiAJZWNobyAiYmluOiB0ZXN0IDEgdmVyc2lvbiAyIiA+b25lLmJpbiAmJgogCWVjaG8gImJpbjogdGVzdCBudW1iZXIgMiB2ZXJzaW9uIDIiID4+dHdvLmJpbiAmJgotCWlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1M7IHRoZW4KLQkJcm0gc3ltbGluay5iaW4gJiYKLQkJbG4gLXMgdHdvLmJpbiBzeW1saW5rLmJpbgotCWZpICYmCisJcm0gLWYgc3ltbGluay5iaW4gJiYKKwl0ZXN0X2xuX3NfYWRkIHR3by5iaW4gc3ltbGluay5iaW4gJiYKIAlHSVRfQVVUSE9SX05BTUU9TnVtYmVyMiBnaXQgY29tbWl0IC1hIC1tIFNlY29uZCAtLWRhdGU9IjIwMTAtMDEtMDEgMjA6MDA6MDAiCiAnCiAKQEAgLTEzNSw3ICsxMzEsNyBAQAogCiAjIGNwIHR3by5iaW4gdGhyZWUuYmluICBhbmQgbWFrZSBzbWFsbCB0d2VhawogIyAodGhpcyB3aWxsIGRpcmVjdCBibGFtZSAtQyAtQyB0aHJlZS5iaW4gdG8gY29uc2lkZXIgdHdvLmJpbiBhbmQgc3ltbGluay5iaW4pCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdtYWtlIGFub3RoZXIgbmV3IGNvbW1pdCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFrZSBhbm90aGVyIG5ldyBjb21taXQnICcKIAljYXQgPnRocmVlLmJpbiA8PFxFT0YgJiYKIGJpbjogdGVzdCBudW1iZXIgMgogYmluOiB0ZXN0IG51bWJlciAyIHZlcnNpb24gMgpAQCAtMTQ2LDcgKzE0Miw3IEBACiAJR0lUX0FVVEhPUl9OQU1FPU51bWJlcjQgZ2l0IGNvbW1pdCAtYSAtbSBGb3VydGggLS1kYXRlPSIyMDEwLTAxLTAxIDIzOjAwOjAwIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdibGFtZSBvbiBsYXN0IGNvbW1pdCAoLUMgLUMsIHN5bWxpbmspJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSBvbiBsYXN0IGNvbW1pdCAoLUMgLUMsIHN5bWxpbmspJyAnCiAJZ2l0IGJsYW1lIC1DIC1DIHRocmVlLmJpbiA+YmxhbWUgJiYKIAlmaW5kX2JsYW1lIDxibGFtZSA+cmVzdWx0ICYmCiAJY2F0ID5leHBlY3RlZCA8PFxFT0YgJiYKZGlmZiAtLWdpdCBhL3QvdDgwMDctY2F0LWZpbGUtdGV4dGNvbnYuc2ggYi90L3Q4MDA3LWNhdC1maWxlLXRleHRjb252LnNoCmluZGV4IDc4YTAwODUuLmI5NWUxMDIgMTAwNzU1Ci0tLSBhL3QvdDgwMDctY2F0LWZpbGUtdGV4dGNvbnYuc2gKKysrIGIvdC90ODAwNy1jYXQtZmlsZS10ZXh0Y29udi5zaApAQCAtMTIsOSArMTIsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCAnICcKIAllY2hvICJiaW46IHRlc3QiID5vbmUuYmluICYmCi0JaWYgdGVzdF9oYXZlX3ByZXJlcSBTWU1MSU5LUzsgdGhlbgotCQlsbiAtcyBvbmUuYmluIHN5bWxpbmsuYmluCi0JZmkgJiYKKwl0ZXN0X2xuX3NfYWRkIG9uZS5iaW4gc3ltbGluay5iaW4gJiYKIAlnaXQgYWRkIC4gJiYKIAlHSVRfQVVUSE9SX05BTUU9TnVtYmVyMSBnaXQgY29tbWl0IC1hIC1tIEZpcnN0IC0tZGF0ZT0iMjAxMC0wMS0wMSAxODowMDowMCIgJiYKIAllY2hvICJiaW46IHRlc3QgdmVyc2lvbiAyIiA+b25lLmJpbiAmJgpAQCAtNzIsMTQgKzcwLDE0IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgcmVzdWx0CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2NhdC1maWxlIHdpdGhvdXQgLS10ZXh0Y29udiAoc3ltbGluayknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NhdC1maWxlIHdpdGhvdXQgLS10ZXh0Y29udiAoc3ltbGluayknICcKIAlnaXQgY2F0LWZpbGUgYmxvYiA6c3ltbGluay5iaW4gPnJlc3VsdCAmJgogCXByaW50ZiAiJXMiICJvbmUuYmluIiA+ZXhwZWN0ZWQKIAl0ZXN0X2NtcCBleHBlY3RlZCByZXN1bHQKICcKIAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdjYXQtZmlsZSAtLXRleHRjb252IG9uIGluZGV4IChzeW1saW5rKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2F0LWZpbGUgLS10ZXh0Y29udiBvbiBpbmRleCAoc3ltbGluayknICcKIAkhIGdpdCBjYXQtZmlsZSAtLXRleHRjb252IDpzeW1saW5rLmJpbiAyPnJlc3VsdCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDxcRU9GICYmCiBmYXRhbDogZ2l0IGNhdC1maWxlIC0tdGV4dGNvbnY6IHVuYWJsZSB0byBydW4gdGV4dGNvbnYgb24gOnN5bWxpbmsuYmluCkBAIC04Nyw3ICs4NSw3IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgcmVzdWx0CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ2NhdC1maWxlIC0tdGV4dGNvbnYgb24gSEVBRCAoc3ltbGluayknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NhdC1maWxlIC0tdGV4dGNvbnYgb24gSEVBRCAoc3ltbGluayknICcKIAkhIGdpdCBjYXQtZmlsZSAtLXRleHRjb252IEhFQUQ6c3ltbGluay5iaW4gMj5yZXN1bHQgJiYKIAljYXQgPmV4cGVjdGVkIDw8RU9GICYmCiBmYXRhbDogZ2l0IGNhdC1maWxlIC0tdGV4dGNvbnY6IHVuYWJsZSB0byBydW4gdGV4dGNvbnYgb24gSEVBRDpzeW1saW5rLmJpbgpkaWZmIC0tZ2l0IGEvdC90OTAwMS1zZW5kLWVtYWlsLnNoIGIvdC90OTAwMS1zZW5kLWVtYWlsLnNoCmluZGV4IDk3ZDZmNGMuLjlmNDZmMjIgMTAwNzU1Ci0tLSBhL3QvdDkwMDEtc2VuZC1lbWFpbC5zaAorKysgYi90L3Q5MDAxLXNlbmQtZW1haWwuc2gKQEAgLTEwMSw3ICsxMDEsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ1NlbmQgcGF0Y2hlcyB3aXRoIC0tZW52ZWxvcGUtc2VuZGVyJyAnCiAgICAgY2xlYW5fZmFrZV9zZW5kbWFpbCAmJgotICAgICBnaXQgc2VuZC1lbWFpbCAtLWVudmVsb3BlLXNlbmRlcj0iUGF0Y2ggQ29udHJpYnV0ZXIgPHBhdGNoQGV4YW1wbGUuY29tPiIgLS1zdXBwcmVzcy1jYz1zb2IgLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiAtLXRvPW5vYm9keUBleGFtcGxlLmNvbSAtLXNtdHAtc2VydmVyPSIkKHB3ZCkvZmFrZS5zZW5kbWFpbCIgJHBhdGNoZXMgMj5lcnJvcnMKKyAgICAgZ2l0IHNlbmQtZW1haWwgLS1lbnZlbG9wZS1zZW5kZXI9IlBhdGNoIENvbnRyaWJ1dG9yIDxwYXRjaEBleGFtcGxlLmNvbT4iIC0tc3VwcHJlc3MtY2M9c29iIC0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gLS1zbXRwLXNlcnZlcj0iJChwd2QpL2Zha2Uuc2VuZG1haWwiICRwYXRjaGVzIDI+ZXJyb3JzCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2V0dXAgZXhwZWN0JyAnCkBAIC0xNzEsNiArMTcxLDgxIEBACiBFT0YKICIKIAordGVzdF9zdXBwcmVzc19zZWxmICgpIHsKKwl0ZXN0X2NvbW1pdCAkMyAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiIgJiYKKworCXdyaXRlX3NjcmlwdCBjY2NtZC1zZWQgPDwtRU9GICYmCisJCXNlZCAtbiAtZSBzL15jY2NtZC0tLy9wICJcJDEiCisJRU9GCisKKwlnaXQgY29tbWl0IC0tYW1lbmQgLS1hdXRob3I9IiQxIDwkMj4iIC1GIC0gJiYKKwljbGVhbl9mYWtlX3NlbmRtYWlsICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtMSA+InN1cHByZXNzLXNlbGYtJDMucGF0Y2giICYmCisKKwlnaXQgc2VuZC1lbWFpbCAtLWZyb209IiQxIDwkMj4iIFwKKwkJLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gXAorCQktLWNjLWNtZD0uL2NjY21kLXNlZCBcCisJCS0tc3VwcHJlc3MtY2M9c2VsZiBcCisJCS0tc210cC1zZXJ2ZXI9IiQocHdkKS9mYWtlLnNlbmRtYWlsIiBcCisJCXN1cHByZXNzLXNlbGYtJDMucGF0Y2ggJiYKKworCW12IG1zZ3R4dDEgbXNndHh0MS0kMyAmJgorCXNlZCAtZSAnL14kL3EnIG1zZ3R4dDEtJDMgPiJtc2doZHIxLSQzIiAmJgorCT4iZXhwZWN0ZWQtbm8tY2MtJDMiICYmCisKKwkoZ3JlcCAnXkNjOicgbXNnaGRyMS0kMyA+ImFjdHVhbC1uby1jYy0kMyI7CisJIHRlc3RfY21wIGV4cGVjdGVkLW5vLWNjLSQzIGFjdHVhbC1uby1jYy0kMykKK30KKwordGVzdF9zdXBwcmVzc19zZWxmX3VucXVvdGVkICgpIHsKKwl0ZXN0X3N1cHByZXNzX3NlbGYgIiQxIiAiJDIiICJ1bnF1b3RlZC0kMyIgPDwtRU9GCisJCXRlc3Qgc3VwcHJlc3MtY2Muc2VsZiB1bnF1b3RlZC0kMyB3aXRoIG5hbWUgJDEgZW1haWwgJDIKKworCQl1bnF1b3RlZC0kMworCisJCWNjY21kLS0kMSA8JDI+CisKKwkJQ2M6ICQxIDwkMj4KKwkJU2lnbmVkLW9mZi1ieTogJDEgPCQyPgorCUVPRgorfQorCit0ZXN0X3N1cHByZXNzX3NlbGZfcXVvdGVkICgpIHsKKwl0ZXN0X3N1cHByZXNzX3NlbGYgIiQxIiAiJDIiICJxdW90ZWQtJDMiIDw8LUVPRgorCQl0ZXN0IHN1cHByZXNzLWNjLnNlbGYgcXVvdGVkLSQzIHdpdGggbmFtZSAkMSBlbWFpbCAkMgorCisJCXF1b3RlZC0kMworCisJCWNjY21kLS0iJDEiIDwkMj4KKworCQlDYzogJDEgPCQyPgorCQlDYzogIiQxIiA8JDI+CisJCVNpZ25lZC1vZmYtYnk6ICQxIDwkMj4KKwkJU2lnbmVkLW9mZi1ieTogIiQxIiA8JDI+CisJRU9GCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2VsZiBuYW1lIGlzIHN1cHByZXNzZWQnICIKKwl0ZXN0X3N1cHByZXNzX3NlbGZfdW5xdW90ZWQgJ0EgVSBUaG9yJyAnYXV0aG9yQGV4YW1wbGUuY29tJyBcCisJCSdzZWxmX25hbWVfc3VwcHJlc3NlZCcKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdzZWxmIG5hbWUgd2l0aCBkb3QgaXMgc3VwcHJlc3NlZCcgIgorCXRlc3Rfc3VwcHJlc3Nfc2VsZl9xdW90ZWQgJ0EgVS4gVGhvcicgJ2F1dGhvckBleGFtcGxlLmNvbScgXAorCQknc2VsZl9uYW1lX2RvdF9zdXBwcmVzc2VkJworIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ25vbi1hc2NpaSBzZWxmIG5hbWUgaXMgc3VwcHJlc3NlZCcgIgorCXRlc3Rfc3VwcHJlc3Nfc2VsZl9xdW90ZWQgJ0bDvMOxbsO9IE7Dom3DqScgJ29kZF8/PW1haWxAZXhhbXBsZS5jb20nIFwKKwkJJ25vbl9hc2NpaV9zZWxmX3N1cHByZXNzZWQnCisiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2FuaXRpemVkIHNlbGYgbmFtZSBpcyBzdXBwcmVzc2VkJyAiCisJdGVzdF9zdXBwcmVzc19zZWxmX3VucXVvdGVkICdcIkEgVS4gVGhvclwiJyAnYXV0aG9yQGV4YW1wbGUuY29tJyBcCisJCSdzZWxmX25hbWVfc2FuaXRpemVkX3N1cHByZXNzZWQnCisiCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnU2hvdyBhbGwgaGVhZGVycycgJwogCWdpdCBzZW5kLWVtYWlsIFwKIAkJLS1kcnktcnVuIFwKQEAgLTc4Nyw3ICs4NjIsNyBAQAogCXRlc3QgJHJldCA9ICIwIgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ2NvbmZpcm0gZG9lc250IGxvb3AgZm9yZXZlcicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdjb25maXJtIGRvZXMgbm90IGxvb3AgZm9yZXZlcicgJwogCUNPTkZJUk09JChnaXQgY29uZmlnIC0tZ2V0IHNlbmRlbWFpbC5jb25maXJtKSAmJgogCWdpdCBjb25maWcgc2VuZGVtYWlsLmNvbmZpcm0gYXV0byAmJgogCUdJVF9TRU5EX0VNQUlMX05PVFRZPTEgJiYKQEAgLTEwMDMsNTUgKzEwNzgsNiBAQAogCWdyZXAgIkluLVJlcGx5LVRvOiAiIHN0ZG91dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3dhcm5pbmcgd2l0aCBhbiBpbXBsaWNpdCAtLWNoYWluLXJlcGx5LXRvJyAnCi0JZ2l0IHNlbmQtZW1haWwgXAotCS0tZHJ5LXJ1biBcCi0JLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiBcCi0JLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gXAotCW91dGRpci8wMDA/LSoucGF0Y2ggMj5lcnJvcnMgPm91dCAmJgotCWdyZXAgIm5vLWNoYWluLXJlcGx5LXRvIiBlcnJvcnMKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdubyB3YXJuaW5nIHdpdGggYW4gZXhwbGljaXQgLS1jaGFpbi1yZXBseS10bycgJwotCWdpdCBzZW5kLWVtYWlsIFwKLQktLWRyeS1ydW4gXAotCS0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAotCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKLQktLWNoYWluLXJlcGx5LXRvIFwKLQlvdXRkaXIvMDAwPy0qLnBhdGNoIDI+ZXJyb3JzID5vdXQgJiYKLQkhIGdyZXAgIm5vLWNoYWluLXJlcGx5LXRvIiBlcnJvcnMKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdubyB3YXJuaW5nIHdpdGggYW4gZXhwbGljaXQgLS1uby1jaGFpbi1yZXBseS10bycgJwotCWdpdCBzZW5kLWVtYWlsIFwKLQktLWRyeS1ydW4gXAotCS0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAotCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKLQktLW5vY2hhaW4tcmVwbHktdG8gXAotCW91dGRpci8wMDA/LSoucGF0Y2ggMj5lcnJvcnMgPm91dCAmJgotCSEgZ3JlcCAibm8tY2hhaW4tcmVwbHktdG8iIGVycm9ycwotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ25vIHdhcm5pbmcgd2l0aCBzZW5kZW1haWwuY2hhaW5yZXBseXRvID0gZmFsc2UnICcKLQlnaXQgY29uZmlnIHNlbmRlbWFpbC5jaGFpbnJlcGx5dG8gZmFsc2UgJiYKLQlnaXQgc2VuZC1lbWFpbCBcCi0JLS1kcnktcnVuIFwKLQktLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIFwKLQktLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCi0Jb3V0ZGlyLzAwMD8tKi5wYXRjaCAyPmVycm9ycyA+b3V0ICYmCi0JISBncmVwICJuby1jaGFpbi1yZXBseS10byIgZXJyb3JzCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnbm8gd2FybmluZyB3aXRoIHNlbmRlbWFpbC5jaGFpbnJlcGx5dG8gPSB0cnVlJyAnCi0JZ2l0IGNvbmZpZyBzZW5kZW1haWwuY2hhaW5yZXBseXRvIHRydWUgJiYKLQlnaXQgc2VuZC1lbWFpbCBcCi0JLS1kcnktcnVuIFwKLQktLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIFwKLQktLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCi0Jb3V0ZGlyLzAwMD8tKi5wYXRjaCAyPmVycm9ycyA+b3V0ICYmCi0JISBncmVwICJuby1jaGFpbi1yZXBseS10byIgZXJyb3JzCi0nCi0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2VuZGVtYWlsLnRvIHdvcmtzJyAnCiAJZ2l0IGNvbmZpZyAtLXJlcGxhY2UtYWxsIHNlbmRlbWFpbC50byAiU29tZWJvZHkgPHNvbWVib2R5QGV4LmNvbT4iICYmCiAJZ2l0IHNlbmQtZW1haWwgXApkaWZmIC0tZ2l0IGEvdC90OTAxMC1zdm4tZmUuc2ggYi90L3Q5MDEwLXN2bi1mZS5zaAppbmRleCBiN2VlZDI0Li42ZGFmZTdlIDEwMDc1NQotLS0gYS90L3Q5MDEwLXN2bi1mZS5zaAorKysgYi90L3Q5MDEwLXN2bi1mZS5zaApAQCAtNTQsMTQgKzU0LDYgQEAKIAogPmVtcHR5CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwOiBoYXZlIHBpcGVzPycgJwotCXJtIC1mIGZyb2IgJiYKLQlpZiBta2ZpZm8gZnJvYgotCXRoZW4KLQkJdGVzdF9zZXRfcHJlcmVxIFBJUEUKLQlmaQotJwotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFBJUEUgJ2VtcHR5IGR1bXAnICcKIAlyZWluaXRfZ2l0ICYmCiAJZWNobyAiU1ZOLWZzLWR1bXAtZm9ybWF0LXZlcnNpb246IDIiID5pbnB1dCAmJgpkaWZmIC0tZ2l0IGEvdC90OTAyMC1yZW1vdGUtc3ZuLnNoIGIvdC90OTAyMC1yZW1vdGUtc3ZuLnNoCmluZGV4IDJkMmYwMTYuLmQ5ZjZiNzMgMTAwNzU1Ci0tLSBhL3QvdDkwMjAtcmVtb3RlLXN2bi5zaAorKysgYi90L3Q5MDIwLXJlbW90ZS1zdm4uc2gKQEAgLTc0LDcgKzc0LDggQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBSRU1PVEVfU1ZOICdpbmNyZW1lbnRhbCBpbXBvcnRzIG11c3QgbGVhZCB0byB0aGUgc2FtZSBoZWFkJyAnCi0JZXhwb3J0IFNWTlJNQVg9MyAmJgorCVNWTlJNQVg9MyAmJgorCWV4cG9ydCBTVk5STUFYICYmCiAJaW5pdF9naXQgJiYKIAlnaXQgZmV0Y2ggc3Zuc2ltICYmCiAJdGVzdF9jbXAgLmdpdC9yZWZzL3N2bi9zdm5zaW0vbWFzdGVyIC5naXQvcmVmcy9yZW1vdGVzL3N2bnNpbS9tYXN0ZXIgICYmCmRpZmYgLS1naXQgYS90L3Q5MTAwLWdpdC1zdm4tYmFzaWMuc2ggYi90L3Q5MTAwLWdpdC1zdm4tYmFzaWMuc2gKaW5kZXggNzQ5Yjc1ZS4uNGZlYThkOSAxMDA3NTUKLS0tIGEvdC90OTEwMC1naXQtc3ZuLWJhc2ljLnNoCisrKyBiL3QvdDkxMDAtZ2l0LXN2bi1iYXNpYy5zaApAQCAtMzA2LDUgKzMwNiwxMyBAQAogCWdpdCBzdm4gZmV0Y2ggKSAmJgogCXJtIC1yZiBiYXJlLXJlcG8KIAknCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQtc3ZuIHdvcmtzIGluIGluIGEgcmVwb3NpdG9yeSB3aXRoIGEgZ2l0ZGlyOiBsaW5rJyAnCisJbWtkaXIgd29ya3RyZWUgZ2l0ZGlyICYmCisJKCBjZCB3b3JrdHJlZSAmJgorCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iICYmCisJZ2l0IGluaXQgLS1zZXBhcmF0ZS1naXQtZGlyIC4uL2dpdGRpciAmJgorCWdpdCBzdm4gZmV0Y2ggKSAmJgorCXJtIC1yZiB3b3JrdHJlZSBnaXRkaXIKKwknCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTExNC1naXQtc3ZuLWRjb21taXQtbWVyZ2Uuc2ggYi90L3Q5MTE0LWdpdC1zdm4tZGNvbW1pdC1tZXJnZS5zaAppbmRleCAzMDc3ODUxLi5mNTI0ZDJmIDEwMDc1NQotLS0gYS90L3Q5MTE0LWdpdC1zdm4tZGNvbW1pdC1tZXJnZS5zaAorKysgYi90L3Q5MTE0LWdpdC1zdm4tZGNvbW1pdC1tZXJnZS5zaApAQCAtNDgsNyArNDgsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgZ2l0IG1pcnJvciBhbmQgbWVyZ2UnICcKIAlnaXQgc3ZuIGluaXQgIiRzdm5yZXBvIiAtdCB0YWdzIC1UIHRydW5rIC1iIGJyYW5jaGVzICYmCiAJZ2l0IHN2biBmZXRjaCAmJgotCWdpdCBjaGVja291dCAtLXRyYWNrIC1iIHN2biByZW1vdGVzL3RydW5rICYmCisJZ2l0IGNoZWNrb3V0IC1iIHN2biByZW1vdGVzL3RydW5rICYmCiAJZ2l0IGNoZWNrb3V0IC1iIG1lcmdlICYmCiAJZWNobyBuZXcgZmlsZSA+IG5ld19maWxlICYmCiAJZ2l0IGFkZCBuZXdfZmlsZSAmJgpkaWZmIC0tZ2l0IGEvdC90OTE0Ny1naXQtc3ZuLWluY2x1ZGUtcGF0aHMuc2ggYi90L3Q5MTQ3LWdpdC1zdm4taW5jbHVkZS1wYXRocy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hOTBmZjU4Ci0tLSAvZGV2L251bGwKKysrIGIvdC90OTE0Ny1naXQtc3ZuLWluY2x1ZGUtcGF0aHMuc2gKQEAgLTAsMCArMSwxNDkgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTMgUGF1bCBXYWxtc2xleSAtIGJhc2VkIG9uIHQ5MTM0IGJ5IFZpdGFseSBTaHVrZWxhCisjCisKK3Rlc3RfZGVzY3JpcHRpb249J2dpdCBzdm4gcHJvcGVydHkgdGVzdHMnCisuIC4vbGliLWdpdC1zdm4uc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdGVzdCByZXBvc2l0b3J5JyAnCisJc3ZuX2NtZCBjbyAiJHN2bnJlcG8iIHMgJiYKKwkoCisJCWNkIHMgJiYKKwkJbWtkaXIgcXFxIHd3dyB4eHggJiYKKwkJZWNobyB0ZXN0X3FxcSA+IHFxcS90ZXN0X3FxcS50eHQgJiYKKwkJZWNobyB0ZXN0X3d3dyA+IHd3dy90ZXN0X3d3dy50eHQgJiYKKwkJZWNobyB0ZXN0X3h4eCA+IHh4eC90ZXN0X3h4eC50eHQgJiYKKwkJc3ZuX2NtZCBhZGQgcXFxICYmCisJCXN2bl9jbWQgYWRkIHd3dyAmJgorCQlzdm5fY21kIGFkZCB4eHggJiYKKwkJc3ZuX2NtZCBjb21taXQgLW0gImNyZWF0ZSBzb21lIGZpbGVzIiAmJgorCQlzdm5fY21kIHVwICYmCisJCWVjaG8gaGkgPj4gd3d3L3Rlc3Rfd3d3LnR4dCAmJgorCQlzdm5fY21kIGNvbW1pdCAtbSAibW9kaWZ5IHd3dy90ZXN0X3d3dy50eHQiICYmCisJCXN2bl9jbWQgdXAKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIGFuIFNWTiByZXBvc2l0b3J5IHdpdGggZmlsdGVyIHRvIGluY2x1ZGUgcXFxIGRpcmVjdG9yeScgJworCWdpdCBzdm4gY2xvbmUgLS1pbmNsdWRlLXBhdGhzPSJxcXEiICIkc3ZucmVwbyIgZyAmJgorCWVjaG8gdGVzdF9xcXEgPiBleHBlY3QgJiYKKwlmb3IgaSBpbiBnLyovKi50eHQ7IGRvIGNhdCAkaSA+PiBleHBlY3QyOyBkb25lICYmCisJdGVzdF9jbXAgZXhwZWN0IGV4cGVjdDIKKycKKworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbml0K2ZldGNoIGFuIFNWTiByZXBvc2l0b3J5IHdpdGggaW5jbHVkZWQgcXFxIGRpcmVjdG9yeScgJworCWdpdCBzdm4gaW5pdCAiJHN2bnJlcG8iIGMgJiYKKwkoIGNkIGMgJiYgZ2l0IHN2biBmZXRjaCAtLWluY2x1ZGUtcGF0aHM9InFxcSIgKSAmJgorCXJtIGV4cGVjdDIgJiYKKwllY2hvIHRlc3RfcXFxID4gZXhwZWN0ICYmCisJZm9yIGkgaW4gYy8qLyoudHh0OyBkbyBjYXQgJGkgPj4gZXhwZWN0MjsgZG9uZSAmJgorCXRlc3RfY21wIGV4cGVjdCBleHBlY3QyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZlcmlmeSBpbmNsdWRlLXBhdGhzIGNvbmZpZyBzYXZlZCBieSBjbG9uZScgJworCSgKKwkgICAgY2QgZyAmJgorCSAgICBnaXQgY29uZmlnIC0tZ2V0IHN2bi1yZW1vdGUuc3ZuLmluY2x1ZGUtcGF0aHMgfCBmZ3JlcCAicXFxIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnU1ZOLXNpZGUgY2hhbmdlIG91dHNpZGUgb2Ygd3d3JyAnCisJKAorCQljZCBzICYmCisJCWVjaG8gYiA+PiBxcXEvdGVzdF9xcXEudHh0ICYmCisJCXN2bl9jbWQgY29tbWl0IC1tICJTVk4tc2lkZSBjaGFuZ2Ugb3V0c2lkZSBvZiB3d3ciICYmCisJCXN2bl9jbWQgdXAgJiYKKwkJc3ZuX2NtZCBsb2cgLXYgfCBmZ3JlcCAiU1ZOLXNpZGUgY2hhbmdlIG91dHNpZGUgb2Ygd3d3IgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIGdpdCBzdm4tY2xvbmVkIHJlcG8gKGNvbmZpZyBpbmNsdWRlKScgJworCSgKKwkJY2QgZyAmJgorCQlnaXQgc3ZuIHJlYmFzZSAmJgorCQlwcmludGYgInRlc3RfcXFxXG5iXG4iID4gZXhwZWN0ICYmCisJCWZvciBpIGluICovKi50eHQ7IGRvIGNhdCAkaSA+PiBleHBlY3QyOyBkb25lICYmCisJCXRlc3RfY21wIGV4cGVjdDIgZXhwZWN0ICYmCisJCXJtIGV4cGVjdCBleHBlY3QyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgZ2l0IHN2bi1jbG9uZWQgcmVwbyAob3B0aW9uIGluY2x1ZGUpJyAnCisJKAorCQljZCBjICYmCisJCWdpdCBzdm4gcmViYXNlIC0taW5jbHVkZS1wYXRocz0icXFxIiAmJgorCQlwcmludGYgInRlc3RfcXFxXG5iXG4iID4gZXhwZWN0ICYmCisJCWZvciBpIGluICovKi50eHQ7IGRvIGNhdCAkaSA+PiBleHBlY3QyOyBkb25lICYmCisJCXRlc3RfY21wIGV4cGVjdDIgZXhwZWN0ICYmCisJCXJtIGV4cGVjdCBleHBlY3QyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdTVk4tc2lkZSBjaGFuZ2UgaW5zaWRlIG9mIGlnbm9yZWQgd3d3JyAnCisJKAorCQljZCBzICYmCisJCWVjaG8gemFxID4+IHd3dy90ZXN0X3d3dy50eHQKKwkJc3ZuX2NtZCBjb21taXQgLW0gIlNWTi1zaWRlIGNoYW5nZSBpbnNpZGUgb2Ygd3d3L3Rlc3Rfd3d3LnR4dCIgJiYKKwkJc3ZuX2NtZCB1cCAmJgorCQlzdm5fY21kIGxvZyAtdiB8IGZncmVwICJTVk4tc2lkZSBjaGFuZ2UgaW5zaWRlIG9mIHd3dy90ZXN0X3d3dy50eHQiCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgZ2l0IHN2bi1jbG9uZWQgcmVwbyAoY29uZmlnIGluY2x1ZGUpJyAnCisJKAorCQljZCBnICYmCisJCWdpdCBzdm4gcmViYXNlICYmCisJCXByaW50ZiAidGVzdF9xcXFcbmJcbiIgPiBleHBlY3QgJiYKKwkJZm9yIGkgaW4gKi8qLnR4dDsgZG8gY2F0ICRpID4+IGV4cGVjdDI7IGRvbmUgJiYKKwkJdGVzdF9jbXAgZXhwZWN0MiBleHBlY3QgJiYKKwkJcm0gZXhwZWN0IGV4cGVjdDIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBnaXQgc3ZuLWNsb25lZCByZXBvIChvcHRpb24gaW5jbHVkZSknICcKKwkoCisJCWNkIGMgJiYKKwkJZ2l0IHN2biByZWJhc2UgLS1pbmNsdWRlLXBhdGhzPSJxcXEiICYmCisJCXByaW50ZiAidGVzdF9xcXFcbmJcbiIgPiBleHBlY3QgJiYKKwkJZm9yIGkgaW4gKi8qLnR4dDsgZG8gY2F0ICRpID4+IGV4cGVjdDI7IGRvbmUgJiYKKwkJdGVzdF9jbXAgZXhwZWN0MiBleHBlY3QgJiYKKwkJcm0gZXhwZWN0IGV4cGVjdDIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1NWTi1zaWRlIGNoYW5nZSBpbiBhbmQgb3V0IG9mIGluY2x1ZGVkIHFxcScgJworCSgKKwkJY2QgcyAmJgorCQllY2hvIGN2ZiA+PiB3d3cvdGVzdF93d3cudHh0CisJCWVjaG8geWdnID4+IHFxcS90ZXN0X3FxcS50eHQKKwkJc3ZuX2NtZCBjb21taXQgLW0gIlNWTi1zaWRlIGNoYW5nZSBpbiBhbmQgb3V0IG9mIGlnbm9yZWQgd3d3IiAmJgorCQlzdm5fY21kIHVwICYmCisJCXN2bl9jbWQgbG9nIC12IHwgZmdyZXAgIlNWTi1zaWRlIGNoYW5nZSBpbiBhbmQgb3V0IG9mIGlnbm9yZWQgd3d3IgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIGdpdCBzdm4tY2xvbmVkIHJlcG8gYWdhaW4gKGNvbmZpZyBpbmNsdWRlKScgJworCSgKKwkJY2QgZyAmJgorCQlnaXQgc3ZuIHJlYmFzZSAmJgorCQlwcmludGYgInRlc3RfcXFxXG5iXG55Z2dcbiIgPiBleHBlY3QgJiYKKwkJZm9yIGkgaW4gKi8qLnR4dDsgZG8gY2F0ICRpID4+IGV4cGVjdDI7IGRvbmUgJiYKKwkJdGVzdF9jbXAgZXhwZWN0MiBleHBlY3QgJiYKKwkJcm0gZXhwZWN0IGV4cGVjdDIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBnaXQgc3ZuLWNsb25lZCByZXBvIGFnYWluIChvcHRpb24gaW5jbHVkZSknICcKKwkoCisJCWNkIGMgJiYKKwkJZ2l0IHN2biByZWJhc2UgLS1pbmNsdWRlLXBhdGhzPSJxcXEiICYmCisJCXByaW50ZiAidGVzdF9xcXFcbmJcbnlnZ1xuIiA+IGV4cGVjdCAmJgorCQlmb3IgaSBpbiAqLyoudHh0OyBkbyBjYXQgJGkgPj4gZXhwZWN0MjsgZG9uZSAmJgorCQl0ZXN0X2NtcCBleHBlY3QyIGV4cGVjdCAmJgorCQlybSBleHBlY3QgZXhwZWN0MgorCSkKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5MTYxLWdpdC1zdm4tbWVyZ2VpbmZvLXB1c2guc2ggYi90L3Q5MTYxLWdpdC1zdm4tbWVyZ2VpbmZvLXB1c2guc2gKaW5kZXggNmVmMGMwYi4uMWVhYjcwMSAxMDA3NTUKLS0tIGEvdC90OTE2MS1naXQtc3ZuLW1lcmdlaW5mby1wdXNoLnNoCisrKyBiL3QvdDkxNjEtZ2l0LXN2bi1tZXJnZWluZm8tcHVzaC5zaApAQCAtODgsNyArODgsNiBAQAogCXRlc3QgIiRtZXJnZWluZm8iID0gIi9icmFuY2hlcy9zdm5iMToyLTQsNy05LDEzLTE4CiAvYnJhbmNoZXMvc3ZuYjI6Myw4LDE2LTE3CiAvYnJhbmNoZXMvc3ZuYjM6NCw5Ci0vYnJhbmNoZXMvc3ZuYjQ6NS02LDEwLTEyCiAvYnJhbmNoZXMvc3ZuYjU6NiwxMSIKIAknCiAKZGlmZiAtLWdpdCBhL3QvdDkxNjctZ2l0LXN2bi1jbWQtYnJhbmNoLXN1YnByb2plY3Quc2ggYi90L3Q5MTY3LWdpdC1zdm4tY21kLWJyYW5jaC1zdWJwcm9qZWN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUzZGVmODcKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q5MTY3LWdpdC1zdm4tY21kLWJyYW5jaC1zdWJwcm9qZWN0LnNoCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTMgVG9iaWFzIFNjaHVsdGUKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHN2biBicmFuY2ggZm9yIHN1YnByb2plY3QgY2xvbmVzJworLiAuL2xpYi1naXQtc3ZuLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luaXRpYWxpemUgc3ZucmVwbycgJworCW1rZGlyIGltcG9ydCAmJgorCSgKKwkJY2QgaW1wb3J0ICYmCisJCW1rZGlyIC1wIHRydW5rL3Byb2plY3QgYnJhbmNoZXMgdGFncyAmJgorCQkoCisJCQljZCB0cnVuay9wcm9qZWN0ICYmCisJCQllY2hvIGZvbyA+IGZvbworCQkpICYmCisJCXN2bl9jbWQgaW1wb3J0IC1tICJpbXBvcnQgZm9yIGdpdC1zdm4iIC4gIiRzdm5yZXBvIiA+L2Rldi9udWxsCisJKSAmJgorCXJtIC1yZiBpbXBvcnQgJiYKKwlzdm5fY21kIGNvICIkc3ZucmVwbyIvdHJ1bmsvcHJvamVjdCB0cnVuay9wcm9qZWN0ICYmCisJKAorCQljZCB0cnVuay9wcm9qZWN0ICYmCisJCWVjaG8gYmFyID4+IGZvbyAmJgorCQlzdm5fY21kIGNpIC1tICJ1cGRhdGVkIHRydW5rIgorCSkgJiYKKwlybSAtcmYgdHJ1bmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW1wb3J0IGludG8gZ2l0JyAnCisJZ2l0IHN2biBpbml0IC0tdHJ1bms9dHJ1bmsvcHJvamVjdCAtLWJyYW5jaGVzPWJyYW5jaGVzLyovcHJvamVjdCBcCisJCS0tdGFncz10YWdzLyovcHJvamVjdCAiJHN2bnJlcG8iICYmCisJZ2l0IHN2biBmZXRjaCAmJgorCWdpdCBjaGVja291dCByZW1vdGVzL3RydW5rCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBzdm4gYnJhbmNoIHRlc3RzJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBicmFuY2ggYSAmJgorCWdpdCBzdm4gYnJhbmNoIC0tcGFyZW50cyBhICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBicmFuY2ggLXQgdGFnMSAmJgorCWdpdCBzdm4gYnJhbmNoIC0tcGFyZW50cyAtdCB0YWcxICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biBicmFuY2ggLS10YWcgdGFnMiAmJgorCWdpdCBzdm4gYnJhbmNoIC0tcGFyZW50cyAtLXRhZyB0YWcyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN2biB0YWcgdGFnMyAmJgorCWdpdCBzdm4gdGFnIC0tcGFyZW50cyB0YWczCisnCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90OTMwMC1mYXN0LWltcG9ydC5zaCBiL3QvdDkzMDAtZmFzdC1pbXBvcnQuc2gKaW5kZXggMmZjZjI2OS4uYWM2ZjNiNiAxMDA3NTUKLS0tIGEvdC90OTMwMC1mYXN0LWltcG9ydC5zaAorKysgYi90L3Q5MzAwLWZhc3QtaW1wb3J0LnNoCkBAIC00OSwxNCArNDksNiBAQAogCiA+ZW1wdHkKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXA6IGhhdmUgcGlwZXM/JyAnCi0Jcm0gLWYgZnJvYiAmJgotCWlmIG1rZmlmbyBmcm9iCi0JdGhlbgotCQl0ZXN0X3NldF9wcmVyZXEgUElQRQotCWZpCi0nCi0KICMjIwogIyMjIHNlcmllcyBBCiAjIyMKZGlmZiAtLWdpdCBhL3QvdDkzNTAtZmFzdC1leHBvcnQuc2ggYi90L3Q5MzUwLWZhc3QtZXhwb3J0LnNoCmluZGV4IDNlODIxZjkuLjM0YzJkOGYgMTAwNzU1Ci0tLSBhL3QvdDkzNTAtZmFzdC1leHBvcnQuc2gKKysrIGIvdC90OTM1MC1mYXN0LWV4cG9ydC5zaApAQCAtMTQ2LDYgKzE0NiwxMiBAQAogCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpZ25lZC10YWdzPXdhcm4tc3RyaXAnICcKKwlnaXQgZmFzdC1leHBvcnQgLS1zaWduZWQtdGFncz13YXJuLXN0cmlwIHNpZ24teW91ci1uYW1lID5vdXRwdXQgMj5lcnIgJiYKKwkhIGdyZXAgUEdQIG91dHB1dCAmJgorCXRlc3QgLXMgZXJyCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHN1Ym1vZHVsZScgJwogCiAJZ2l0IGNoZWNrb3V0IC1mIG1hc3RlciAmJgpAQCAtMzAzLDcgKzMwOSw3IEBACiAoCiAJY2QgbGltaXQtYnktcGF0aHMgJiYKIAlnaXQgZmFzdC1leHBvcnQgLS10YWctb2YtZmlsdGVyZWQtb2JqZWN0PWRyb3AgbXl0YWcgLS0gdGhlcmUgPiBvdXRwdXQgJiYKLQl0ZXN0X2NtcCBvdXRwdXQgZXhwZWN0ZWQKKwl0ZXN0X2NtcCBleHBlY3RlZCBvdXRwdXQKICkKICcKIApAQCAtMzIwLDcgKzMyNiw3IEBACiAoCiAJY2QgbGltaXQtYnktcGF0aHMgJiYKIAlnaXQgZmFzdC1leHBvcnQgLS10YWctb2YtZmlsdGVyZWQtb2JqZWN0PXJld3JpdGUgbXl0YWcgLS0gdGhlcmUgPiBvdXRwdXQgJiYKLQl0ZXN0X2NtcCBvdXRwdXQgZXhwZWN0ZWQKKwl0ZXN0X2NtcCBleHBlY3RlZCBvdXRwdXQKICkKICcKIApAQCAtMzUxLDcgKzM1Nyw3IEBACiAJKAogCQljZCBsaW1pdC1ieS1wYXRocyAmJgogCQlnaXQgZmFzdC1leHBvcnQgbWFzdGVyfjIuLm1hc3Rlcn4xID4gb3V0cHV0ICYmCi0JCXRlc3RfY21wIG91dHB1dCBleHBlY3RlZAorCQl0ZXN0X2NtcCBleHBlY3RlZCBvdXRwdXQKIAkpCiAnCiAKQEAgLTM5MCw3ICszOTYsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGFnLW9ial90YWcnICAgICAnZ2l0IGZhc3QtZXhwb3J0IHRhZy1vYmpfdGFnJwogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGFnLW9ial90YWctb2JqJyAnZ2l0IGZhc3QtZXhwb3J0IHRhZy1vYmpfdGFnLW9iaicKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnZGlyZWN0b3J5IGJlY29tZXMgc3ltbGluaycgICAgICAgICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpcmVjdG9yeSBiZWNvbWVzIHN5bWxpbmsnICAgICAgICAnCiAJZ2l0IGluaXQgZGlydG9zeW1saW5rICYmCiAJZ2l0IGluaXQgcmVzdWx0ICYmCiAJKApAQCAtNDAyLDggKzQwOCw3IEBACiAJCWdpdCBhZGQgZm9vL3dvcmxkIGJhci93b3JsZCAmJgogCQlnaXQgY29tbWl0IC1xIC1tb25lICYmCiAJCWdpdCBybSAtciBmb28gJiYKLQkJbG4gLXMgYmFyIGZvbyAmJgotCQlnaXQgYWRkIGZvbyAmJgorCQl0ZXN0X2xuX3NfYWRkIGJhciBmb28gJiYKIAkJZ2l0IGNvbW1pdCAtcSAtbXR3bwogCSkgJiYKIAkoCkBAIC00NDAsNCArNDQ1LDYzIEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IGJpZGlyZWN0aW9uYWxpdHknICcKKwk+bWFya3MtY3VyICYmCisJPm1hcmtzLW5ldyAmJgorCWdpdCBpbml0IG1hcmtzLXRlc3QgJiYKKwlnaXQgZmFzdC1leHBvcnQgLS1leHBvcnQtbWFya3M9bWFya3MtY3VyIC0taW1wb3J0LW1hcmtzPW1hcmtzLWN1ciAtLWJyYW5jaGVzIHwgXAorCWdpdCAtLWdpdC1kaXI9bWFya3MtdGVzdC8uZ2l0IGZhc3QtaW1wb3J0IC0tZXhwb3J0LW1hcmtzPW1hcmtzLW5ldyAtLWltcG9ydC1tYXJrcz1tYXJrcy1uZXcgJiYKKwkoY2QgbWFya3MtdGVzdCAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwllY2hvIFdvaGxhdWYgPiBmaWxlICYmCisJZ2l0IGNvbW1pdCAtYSAtbSAiYmFjayBpbiB0aW1lIikgJiYKKwlnaXQgLS1naXQtZGlyPW1hcmtzLXRlc3QvLmdpdCBmYXN0LWV4cG9ydCAtLWV4cG9ydC1tYXJrcz1tYXJrcy1uZXcgLS1pbXBvcnQtbWFya3M9bWFya3MtbmV3IC0tYnJhbmNoZXMgfCBcCisJZ2l0IGZhc3QtaW1wb3J0IC0tZXhwb3J0LW1hcmtzPW1hcmtzLWN1ciAtLWltcG9ydC1tYXJrcz1tYXJrcy1jdXIKKycKKworY2F0ID4gZXhwZWN0ZWQgPDwgRU9GCitibG9iCittYXJrIDoxMworZGF0YSA1CitidW1wCisKK2NvbW1pdCByZWZzL2hlYWRzL21hc3RlcgorbWFyayA6MTQKK2F1dGhvciBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiAxMTEyOTEyNzczIC0wNzAwCitjb21taXR0ZXIgQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPiAxMTEyOTEyNzczIC0wNzAwCitkYXRhIDUKK2J1bXAKK2Zyb20gOjEyCitNIDEwMDY0NCA6MTMgZmlsZQorCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXZvaWQgdW5pbnRlcmVzdGluZyByZWZzJyAnCisJPiB0bXAtbWFya3MgJiYKKwlnaXQgZmFzdC1leHBvcnQgLS1pbXBvcnQtbWFya3M9dG1wLW1hcmtzIFwKKwkJLS1leHBvcnQtbWFya3M9dG1wLW1hcmtzIG1hc3RlciA+IC9kZXYvbnVsbCAmJgorCWdpdCB0YWcgdjEuMCAmJgorCWdpdCBicmFuY2ggdW5pbnRlcmVzdGluZyAmJgorCWVjaG8gYnVtcCA+IGZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGJ1bXAgJiYKKwlnaXQgZmFzdC1leHBvcnQgLS1pbXBvcnQtbWFya3M9dG1wLW1hcmtzIFwKKwkJLS1leHBvcnQtbWFya3M9dG1wLW1hcmtzIF51bmludGVyZXN0aW5nIF52MS4wIG1hc3RlciA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCitjYXQgPiBleHBlY3RlZCA8PCBFT0YKK3Jlc2V0IHJlZnMvaGVhZHMvbWFzdGVyCitmcm9tIDoxNAorCitFT0YKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmcyBhcmUgdXBkYXRlZCBldmVuIGlmIG5vIGNvbW1pdHMgbmVlZCB0byBiZSBleHBvcnRlZCcgJworCT4gdG1wLW1hcmtzICYmCisJZ2l0IGZhc3QtZXhwb3J0IC0taW1wb3J0LW1hcmtzPXRtcC1tYXJrcyBcCisJCS0tZXhwb3J0LW1hcmtzPXRtcC1tYXJrcyBtYXN0ZXIgPiAvZGV2L251bGwgJiYKKwlnaXQgZmFzdC1leHBvcnQgLS1pbXBvcnQtbWFya3M9dG1wLW1hcmtzIFwKKwkJLS1leHBvcnQtbWFya3M9dG1wLW1hcmtzIG1hc3RlciA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDk0MDAtZ2l0LWN2c3NlcnZlci1zZXJ2ZXIuc2ggYi90L3Q5NDAwLWdpdC1jdnNzZXJ2ZXItc2VydmVyLnNoCmluZGV4IDk1MDJmMjQuLjA0MzEzODYgMTAwNzU1Ci0tLSBhL3QvdDk0MDAtZ2l0LWN2c3NlcnZlci1zZXJ2ZXIuc2gKKysrIGIvdC90OTQwMC1naXQtY3Zzc2VydmVyLXNlcnZlci5zaApAQCAtMzYsNiArMzYsNyBAQAogCiBybSAtcmYgIiRDVlNXT1JLIiAiJFNFUlZFUkRJUiIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisgIGdpdCBjb25maWcgcHVzaC5kZWZhdWx0IG1hdGNoaW5nICYmCiAgIGVjaG8gPmVtcHR5ICYmCiAgIGdpdCBhZGQgZW1wdHkgJiYKICAgZ2l0IGNvbW1pdCAtcSAtbSAiRmlyc3QgQ29tbWl0IiAmJgpkaWZmIC0tZ2l0IGEvdC90OTQwMS1naXQtY3Zzc2VydmVyLWNybGYuc2ggYi90L3Q5NDAxLWdpdC1jdnNzZXJ2ZXItY3JsZi5zaAppbmRleCAxYzViYzg0Li44YzNkYjc2IDEwMDc1NQotLS0gYS90L3Q5NDAxLWdpdC1jdnNzZXJ2ZXItY3JsZi5zaAorKysgYi90L3Q5NDAxLWdpdC1jdnNzZXJ2ZXItY3JsZi5zaApAQCAtODQsNiArODQsNyBAQAogCiBybSAtcmYgIiRDVlNXT1JLIiAiJFNFUlZFUkRJUiIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisgICAgZ2l0IGNvbmZpZyBwdXNoLmRlZmF1bHQgbWF0Y2hpbmcgJiYKICAgICBlY2hvICJTaW1wbGUgdGV4dCBmaWxlIiA+dGV4dGZpbGUuYyAmJgogICAgIGVjaG8gIkZpbGUgd2l0aCBlbWJlZGRlZCBOVUw6IFEgPC0gdGhlcmUiIHwgcV90b19udWwgPiBiaW5maWxlLmJpbiAmJgogICAgIG1rZGlyIHN1YmRpciAmJgpkaWZmIC0tZ2l0IGEvdC90OTQwMi1naXQtY3Zzc2VydmVyLXJlZnMuc2ggYi90L3Q5NDAyLWdpdC1jdnNzZXJ2ZXItcmVmcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYjY5YWYyCi0tLSAvZGV2L251bGwKKysrIGIvdC90OTQwMi1naXQtY3Zzc2VydmVyLXJlZnMuc2gKQEAgLTAsMCArMSw1NTEgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQtY3Zzc2VydmVyIGFuZCBnaXQgcmVmc3BlY3MKKwordGVzdHMgYWJpbGl0eSBmb3IgZ2l0LWN2c3NlcnZlciB0byBzd2l0Y2ggYmV0d2VlbiBhbmQgY29tcGFyZQordGFncywgYnJhbmNoZXMgYW5kIG90aGVyIGdpdCByZWZzcGVjcycKKworLiAuL3Rlc3QtbGliLnNoCisKKyMjIyMjIyMjIworCitjaGVja19zdGFydF90cmVlKCkgeworCXJtIC1mICIkV09SS0RJUi9saXN0LmV4cGVjdGVkIgorCWVjaG8gInN0YXJ0ICQxIiA+PiIke1dPUktESVJ9L2NoZWNrLmxvZyIKK30KKworY2hlY2tfZmlsZSgpIHsKKwlzYW5kYm94PSIkMSIKKwlmaWxlPSIkMiIKKwl2ZXI9IiQzIgorCUdJVF9ESVI9JFNFUlZFUkRJUiBnaXQgc2hvdyAiJHt2ZXJ9OiR7ZmlsZX0iIFwKKwkJPiIkV09SS0RJUi9jaGVjay5nb3QiIDI+IiRXT1JLRElSL2NoZWNrLnN0ZGVyciIKKwl0ZXN0X2NtcCAiJFdPUktESVIvY2hlY2suZ290IiAiJHNhbmRib3gvJGZpbGUiCisJc3RhdD0kPworCWVjaG8gImNoZWNrX2ZpbGUgJHNhbmRib3ggJGZpbGUgJHZlciA6ICRzdGF0IiA+PiIkV09SS0RJUi9jaGVjay5sb2ciCisJZWNobyAiJGZpbGUiID4+IiRXT1JLRElSL2xpc3QuZXhwZWN0ZWQiCisJcmV0dXJuICRzdGF0Cit9CisKK2NoZWNrX2VuZF90cmVlKCkgeworCXNhbmRib3g9IiQxIiAmJgorCWZpbmQgIiRzYW5kYm94IiAtbmFtZSBDVlMgLXBydW5lIC1vIC10eXBlIGYgLXByaW50ID4iJFdPUktESVIvbGlzdC5hY3R1YWwiICYmCisJc29ydCA8IiRXT1JLRElSL2xpc3QuZXhwZWN0ZWQiID5leHBlY3RlZCAmJgorCXNvcnQgPCIkV09SS0RJUi9saXN0LmFjdHVhbCIgfCBzZWQgLWUgInMlY3Zzd29yay8lJSIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgorCXJtIGV4cGVjdGVkIGFjdHVhbAorfQorCitjaGVja19lbmRfZnVsbF90cmVlKCkgeworCXNhbmRib3g9IiQxIiAmJgorCXNvcnQgPCIkV09SS0RJUi9saXN0LmV4cGVjdGVkIiA+ZXhwZWN0ZWQgJiYKKwlmaW5kICIkc2FuZGJveCIgLW5hbWUgQ1ZTIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludCB8CisJc2VkIC1lICJzJSRzYW5kYm94LyUlIiB8IHNvcnQgPmFjdDEgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3QxICYmCisJZ2l0IGxzLXRyZWUgLS1uYW1lLW9ubHkgLXIgIiQyIiB8IHNvcnQgPmFjdDIgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3QyICYmCisJcm0gZXhwZWN0ZWQgYWN0MSBhY3QyCit9CisKKyMjIyMjIyMjIworCitjaGVja19kaWZmKCkgeworCWRpZmZGaWxlPSIkMSIKKwl2T2xkPSIkMiIKKwl2TmV3PSIkMyIKKwlybSAtcmYgZGlmZlNhbmRib3gKKwlnaXQgY2xvbmUgLXEgLW4gLiBkaWZmU2FuZGJveCAmJgorCSgKKwkJY2QgZGlmZlNhbmRib3ggJiYKKwkJZ2l0IGNoZWNrb3V0ICIkdk9sZCIgJiYKKwkJZ2l0IGFwcGx5IC1wMCAtLWluZGV4IDwiLi4vJGRpZmZGaWxlIiAmJgorCQlnaXQgZGlmZiAtLWV4aXQtY29kZSAiJHZOZXciCisJKSA+Y2hlY2tfZGlmZl9hcHBseS5vdXQgMj4mMQorfQorCisjIyMjIyMjIyMKKworY3ZzID4vZGV2L251bGwgMj4mMQoraWYgdGVzdCAkPyAtbmUgMQordGhlbgorCXNraXBfYWxsPSdza2lwcGluZyBnaXQtY3Zzc2VydmVyIHRlc3RzLCBjdnMgbm90IGZvdW5kJworCXRlc3RfZG9uZQorZmkKK2lmICEgdGVzdF9oYXZlX3ByZXJlcSBQRVJMCit0aGVuCisJc2tpcF9hbGw9J3NraXBwaW5nIGdpdC1jdnNzZXJ2ZXIgdGVzdHMsIHBlcmwgbm90IGF2YWlsYWJsZScKKwl0ZXN0X2RvbmUKK2ZpCisiJFBFUkxfUEFUSCIgLWUgJ3VzZSBEQkk7IHVzZSBEQkQ6OlNRTGl0ZScgPi9kZXYvbnVsbCAyPiYxIHx8IHsKKwlza2lwX2FsbD0nc2tpcHBpbmcgZ2l0LWN2c3NlcnZlciB0ZXN0cywgUGVybCBTUUxpdGUgaW50ZXJmYWNlIHVuYXZhaWxhYmxlJworCXRlc3RfZG9uZQorfQorCit1bnNldCBHSVRfRElSIEdJVF9DT05GSUcKK1dPUktESVI9JChwd2QpCitTRVJWRVJESVI9JChwd2QpL2dpdGN2cy5naXQKK2dpdF9jb25maWc9IiRTRVJWRVJESVIvY29uZmlnIgorQ1ZTUk9PVD0iOmZvcms6JFNFUlZFUkRJUiIKK0NWU1dPUks9IiQocHdkKS9jdnN3b3JrIgorQ1ZTX1NFUlZFUj1naXQtY3Zzc2VydmVyCitleHBvcnQgQ1ZTUk9PVCBDVlNfU0VSVkVSCisKK3JtIC1yZiAiJENWU1dPUksiICIkU0VSVkVSRElSIgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdjEsIGIxJyAnCisJZWNobyAiU2ltcGxlIHRleHQgZmlsZSIgPnRleHRmaWxlLmMgJiYKKwllY2hvICJ0MiIgPnQyICYmCisJbWtkaXIgYWRpciAmJgorCWVjaG8gImFkaXIvYWZpbGUgbGluZTEiID5hZGlyL2FmaWxlICYmCisJZWNobyAiYWRpci9hZmlsZSBsaW5lMiIgPj5hZGlyL2FmaWxlICYmCisJZWNobyAiYWRpci9hZmlsZSBsaW5lMyIgPj5hZGlyL2FmaWxlICYmCisJZWNobyAiYWRpci9hZmlsZSBsaW5lNCIgPj5hZGlyL2FmaWxlICYmCisJZWNobyAiYWRpci9hMmZpbGUiID4+YWRpci9hMmZpbGUgJiYKKwlta2RpciBhZGlyL2JkaXIgJiYKKwllY2hvICJhZGlyL2JkaXIvYmZpbGUgbGluZSAxIiA+YWRpci9iZGlyL2JmaWxlICYmCisJZWNobyAiYWRpci9iZGlyL2JmaWxlIGxpbmUgMiIgPj5hZGlyL2JkaXIvYmZpbGUgJiYKKwllY2hvICJhZGlyL2JkaXIvYjJmaWxlIiA+YWRpci9iZGlyL2IyZmlsZSAmJgorCWdpdCBhZGQgdGV4dGZpbGUuYyB0MiBhZGlyICYmCisJZ2l0IGNvbW1pdCAtcSAtbSAiRmlyc3QgQ29tbWl0ICh2MSkiICYmCisJZ2l0IHRhZyB2MSAmJgorCWdpdCBicmFuY2ggYjEgJiYKKwlnaXQgY2xvbmUgLXEgLS1iYXJlICIkV09SS0RJUi8uZ2l0IiAiJFNFUlZFUkRJUiIgPi9kZXYvbnVsbCAyPiYxICYmCisJR0lUX0RJUj0iJFNFUlZFUkRJUiIgZ2l0IGNvbmZpZyAtLWJvb2wgZ2l0Y3ZzLmVuYWJsZWQgdHJ1ZSAmJgorCUdJVF9ESVI9IiRTRVJWRVJESVIiIGdpdCBjb25maWcgZ2l0Y3ZzLmxvZ2ZpbGUgIiRTRVJWRVJESVIvZ2l0Y3ZzLmxvZyIKKycKKworcm0gLXJmIGN2c3dvcmsKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBjbyB2MScgJworCWN2cyAtZiAtUSBjbyAtciB2MSAtZCBjdnN3b3JrIG1hc3RlciA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKworcm0gLXJmIGN2c3dvcmsKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBjbyBiMScgJworCWN2cyAtZiBjbyAtciBiMSAtZCBjdnN3b3JrIG1hc3RlciA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIGNvIGIxIFtjdnN3b3JrM10nICcKKwljdnMgLWYgY28gLXIgYjEgLWQgY3Zzd29yazMgbWFzdGVyID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmszICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9hMmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYmRpci9iZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yazMgdjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZWRpdCBjdnN3b3JrMyBhbmQgc2F2ZSBkaWZmJyAnCisJKAorCQljZCBjdnN3b3JrMyAmJgorCQlzZWQgLWUgInMvbGluZTEvbGluZTEgLSBkYXRhLyIgYWRpci9hZmlsZSA+YWRpci9hZmlsZU5FVyAmJgorCQltdiAtZiBhZGlyL2FmaWxlTkVXIGFkaXIvYWZpbGUgJiYKKwkJZWNobyAiYWZpbGU1IiA+YWRpci9hZmlsZTUgJiYKKwkJcm0gdDIgJiYKKwkJY3ZzIC1mIGFkZCBhZGlyL2FmaWxlNSAmJgorCQljdnMgLWYgcm0gdDIgJiYKKwkJISBjdnMgLWYgZGlmZiAtTiAtdSA+IiRXT1JLRElSL2N2c3dvcmszZWRpdC5kaWZmIgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdjEuMiBvbiBiMScgJworCWdpdCBjaGVja291dCBiMSAmJgorCWVjaG8gIm5ldyB2MS4yIiA+dDMgJiYKKwlybSB0MiAmJgorCXNlZCAtZSAicy9saW5lMy9saW5lMyAtIG1vcmUgZGF0YS8iIGFkaXIvYWZpbGUgPmFkaXIvYWZpbGVORVcgJiYKKwltdiAtZiBhZGlyL2FmaWxlTkVXIGFkaXIvYWZpbGUgJiYKKwlybSBhZGlyL2EyZmlsZSAmJgorCWVjaG8gImEzZmlsZSIgPj5hZGlyL2EzZmlsZSAmJgorCWVjaG8gImJmaWxlIGxpbmUgMyIgPj5hZGlyL2JkaXIvYmZpbGUgJiYKKwlybSBhZGlyL2JkaXIvYjJmaWxlICYmCisJZWNobyAiYjNmaWxlIiA+YWRpci9iZGlyL2IzZmlsZSAmJgorCW1rZGlyIGNkaXIgJiYKKwllY2hvICJjZGlyL2NmaWxlIiA+Y2Rpci9jZmlsZSAmJgorCWdpdCBhZGQgLUEgY2RpciBhZGlyIHQzIHQyICYmCisJZ2l0IGNvbW1pdCAtcSAtbSAndjEuMicgJiYKKwlnaXQgdGFnIHYxLjIgJiYKKwlnaXQgcHVzaCAtLXRhZ3MgZ2l0Y3ZzLmdpdCBiMTpiMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgLWYgdXAgKG9uIGIxIGFkaXIpJyAnCisJKCBjZCBjdnN3b3JrL2FkaXIgJiYgY3ZzIC1mIHVwIC1kICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQyIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EzZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIChvbiBiMSAvKScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgLWQgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MyB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EzZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBjZGlyL2NmaWxlIHYxLjIgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKKyMgTWFrZSBzdXJlICJDVlMvVGFnIiBmaWxlcyBkaWRuJ3QgZ2V0IG1lc3NlZCB1cDoKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAob24gYjEgLykgKGFnYWluOyBjaGVjayBDVlMvVGFnIGZpbGVzKScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgLWQgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MyB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EzZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MS4yICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBjZGlyL2NmaWxlIHYxLjIgJiYKKwljaGVja19lbmRfdHJlZSBjdnN3b3JrCisnCisKKyMgdXBkYXRlIHRvIGFub3RoZXIgdmVyc2lvbjoKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAtciB2MScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgLXIgdjEgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwJyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTJmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjJmaWxlIHYxICYmCisJY2hlY2tfZW5kX3RyZWUgY3Zzd29yaworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgKGFnYWluOyBjaGVjayBDVlMvVGFnIGZpbGVzKScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgLWQgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDIgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2IyZmlsZSB2MSAmJgorCWNoZWNrX2VuZF90cmVlIGN2c3dvcmsKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgc2ltcGxlIGIyJyAnCisJZ2l0IGJyYW5jaCBiMiB2MSAmJgorCWdpdCBwdXNoIC0tdGFncyBnaXRjdnMuZ2l0IGIyOmIyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBjbyBiMiBbaW50byBjdnN3b3JrMl0nICcKKwljdnMgLWYgY28gLXIgYjIgLWQgY3Zzd29yazIgbWFzdGVyID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTJmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjJmaWxlIHYxICYmCisJY2hlY2tfZW5kX3RyZWUgY3Zzd29yaworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyb290IGRpciBlZGl0IFtjdnN3b3JrMl0nICcKKwkoCisJCWNkIGN2c3dvcmsyICYmIGVjaG8gIkxpbmUgMiIgPj50ZXh0ZmlsZS5jICYmCisJCSEgY3ZzIC1mIGRpZmYgLXUgPiIkV09SS0RJUi9jdnNFZGl0MS5kaWZmIiAmJgorCQljdnMgLWYgY29tbWl0IC1tICJlZGl0IHRleHRmaWxlLmMiIHRleHRmaWxlLmMKKwkpID5jdnNFZGl0MS5sb2cgMj4mMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyb290IGRpciBybSBmaWxlIFtjdnN3b3JrMl0nICcKKwkoCisJCWNkIGN2c3dvcmsyICYmCisJCWN2cyAtZiBybSAtZiB0MiAmJgorCQljdnMgLWYgZGlmZiAtdSA+Li4vY3ZzRWRpdDItZW1wdHkuZGlmZiAmJgorCQkhIGN2cyAtZiBkaWZmIC1OIC11ID4iJFdPUktESVIvY3ZzRWRpdDItTi5kaWZmIiAmJgorCQljdnMgLWYgY29tbWl0IC1tICJybSB0MiIKKwkpID5jdnNFZGl0Mi5sb2cgMj4mMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJkaXIgZWRpdC9hZGQvcm0gZmlsZXMgW2N2c3dvcmsyXScgJworCSgKKwkJY2QgY3Zzd29yazIgJiYKKwkJc2VkIC1lICJzL2xpbmUgMS9saW5lIDEgKHYyKS8iIGFkaXIvYmRpci9iZmlsZSA+YWRpci9iZGlyL2JmaWxlTkVXICYmCisJCW12IC1mIGFkaXIvYmRpci9iZmlsZU5FVyBhZGlyL2JkaXIvYmZpbGUgJiYKKwkJcm0gYWRpci9iZGlyL2IyZmlsZSAmJgorCQljZCBhZGlyICYmCisJCWN2cyAtZiBybSBiZGlyL2IyZmlsZSAmJgorCQllY2hvICI0dGggZmlsZSIgPmJkaXIvYjRmaWxlICYmCisJCWN2cyAtZiBhZGQgYmRpci9iNGZpbGUgJiYKKwkJISBjdnMgLWYgZGlmZiAtTiAtdSA+IiRXT1JLRElSL2N2c0VkaXQzLmRpZmYiICYmCisJCWdpdCBmZXRjaCBnaXRjdnMuZ2l0IGIyOmIyICYmCisJCSgKKwkJICBjZCAuLiAmJgorCQkgICEgY3ZzIC1mIGRpZmYgLXUgLU4gLXIgdjEuMiA+IiRXT1JLRElSL2N2c0VkaXQzLXYxLjIuZGlmZiIgJiYKKwkJICAhIGN2cyAtZiBkaWZmIC11IC1OIC1yIHYxLjIgLXIgdjEgPiIkV09SS0RJUi9jdnNFZGl0My12MS4yLXYxLmRpZmYiCisJCSkgJiYKKwkJY3ZzIC1mIGNvbW1pdCAtbSAidmFyaW91cyBhZGQvcm0vZWRpdCIKKwkpID5jdnMubG9nIDI+JjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWRhdGUgcmVzdWx0IG9mIGVkaXRzIFtjdnN3b3JrMl0nICcKKwlnaXQgZmV0Y2ggZ2l0Y3ZzLmdpdCBiMjpiMiAmJgorCWdpdCB0YWcgdjIgYjIgJiYKKwlnaXQgcHVzaCAtLXRhZ3MgZ2l0Y3ZzLmdpdCBiMjpiMiAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yazIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIHRleHRmaWxlLmMgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIGFkaXIvYWZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIGFkaXIvYTJmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2JkaXIvYmZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIGFkaXIvYmRpci9iNGZpbGUgdjIgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmsyIHYyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkYXRlIGJhc2ljIGRpZmZzIHNhdmVkIGR1cmluZyBhYm92ZSBjdnN3b3JrMiBlZGl0cycgJworCXRlc3QgJChncmVwIEluZGV4OiBjdnNFZGl0MS5kaWZmIHwgd2MgLWwpID0gMSAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBjdnNFZGl0Mi1lbXB0eS5kaWZmICYmCisJdGVzdCAkKGdyZXAgSW5kZXg6IGN2c0VkaXQyLU4uZGlmZiB8IHdjIC1sKSA9IDEgJiYKKwl0ZXN0ICQoZ3JlcCBJbmRleDogY3ZzRWRpdDMuZGlmZiB8IHdjIC1sKSA9IDMgJiYKKwlybSAtcmYgZGlmZlNhbmRib3ggJiYKKwlnaXQgY2xvbmUgLXEgLW4gLiBkaWZmU2FuZGJveCAmJgorCSgKKwkJY2QgZGlmZlNhbmRib3ggJiYKKwkJZ2l0IGNoZWNrb3V0IHYxICYmCisJCWdpdCBhcHBseSAtcDAgLS1pbmRleCA8IiRXT1JLRElSL2N2c0VkaXQxLmRpZmYiICYmCisJCWdpdCBhcHBseSAtcDAgLS1pbmRleCA8IiRXT1JLRElSL2N2c0VkaXQyLU4uZGlmZiIgJiYKKwkJZ2l0IGFwcGx5IC1wMCAtLWRpcmVjdG9yeT1hZGlyIC0taW5kZXggPCIkV09SS0RJUi9jdnNFZGl0My5kaWZmIiAmJgorCQlnaXQgZGlmZiAtLWV4aXQtY29kZSB2MgorCSkgPiJjaGVja19kaWZmX2FwcGx5Lm91dCIgMj4mMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZGF0ZSB2MS4yIGRpZmYgc2F2ZWQgZHVyaW5nIGxhc3QgY3Zzd29yazIgZWRpdCcgJworCXRlc3QgJChncmVwIEluZGV4OiBjdnNFZGl0My12MS4yLmRpZmYgfCB3YyAtbCkgPSA5ICYmCisJY2hlY2tfZGlmZiBjdnNFZGl0My12MS4yLmRpZmYgdjEuMiB2MgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZGF0ZSB2MS4yIHYxIGRpZmYgc2F2ZWQgZHVyaW5nIGxhc3QgY3Zzd29yazIgZWRpdCcgJworCXRlc3QgJChncmVwIEluZGV4OiBjdnNFZGl0My12MS4yLXYxLmRpZmYgfCB3YyAtbCkgPSA5ICYmCisJY2hlY2tfZGlmZiBjdnNFZGl0My12MS4yLXYxLmRpZmYgdjEuMiB2MQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgW2N2c3dvcmsyXScgJworCSggY2QgY3Zzd29yazIgJiYgY3ZzIC1mIHVwICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yazIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIHRleHRmaWxlLmMgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIGFkaXIvYWZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIGFkaXIvYTJmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMiBhZGlyL2JkaXIvYmZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsyIGFkaXIvYmRpci9iNGZpbGUgdjIgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmsyIHYyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAtciBiMiBbYmFjayB0byBjdnN3b3JrXScgJworCSggY2QgY3Zzd29yayAmJiBjdnMgLWYgdXAgLXIgYjIgKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHRleHRmaWxlLmMgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hZmlsZSB2MiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2EyZmlsZSB2MiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2I0ZmlsZSB2MiAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yayB2MgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgLXIgYjEnICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1yIGIxICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDMgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjNmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgY2Rpci9jZmlsZSB2MS4yICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrIHYxLjIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIC1BJyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiB1cCAtQSApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTJmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjJmaWxlIHYxICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrIHYxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAoY2hlY2sgQ1ZTL1RhZyBmaWxlcyknICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIHQyIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjEgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iMmZpbGUgdjEgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmsgdjEKKycKKworIyBUaGlzIGlzIG5vdCByZWFsbHkgbGVnYWwgQ1ZTLCBidXQgaXQgc2VlbXMgdG8gd29yayBhbnl3YXk6Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgLXIgaGVhZHMvYjEnICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1yIGhlYWRzL2IxICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdDMgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hM2ZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYmZpbGUgdjEuMiAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjNmaWxlIHYxLjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgY2Rpci9jZmlsZSB2MS4yICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrIHYxLjIKKycKKworIyBCdXQgdGhpcyBzaG91bGQgd29yayBldmVuIGlmIENWUyBjbGllbnQgY2hlY2tzIC1yIG1vcmUgY2FyZWZ1bGx5OgordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIHVwIC1yIGhlYWRzXy1zLWIyIChjdnNzZXJ2ZXIgZXNjYXBlIG1lY2hhbmlzbSknICcKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1yIGhlYWRzXy1zLWIyICkgPmN2cy5sb2cgMj4mMSAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yayAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0ZXh0ZmlsZS5jIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYWZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9hMmZpbGUgdjIgJiYKKwljaGVja19maWxlIGN2c3dvcmsgYWRpci9iZGlyL2JmaWxlIHYyICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iNGZpbGUgdjIgJiYKKwljaGVja19lbmRfZnVsbF90cmVlIGN2c3dvcmsgdjIKKycKKwordjFoYXNoPSQoZ2l0IHJldi1wYXJzZSB2MSkKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyB1cCAtciAkKGdpdCByZXYtcGFyc2UgdjEpJyAnCisJdGVzdCAtbiAiJHYxaGFzaCIgJiYKKwkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIHVwIC1yICIkdjFoYXNoIiApID5jdnMubG9nIDI+JjEgJiYKKwljaGVja19zdGFydF90cmVlIGN2c3dvcmsgJiYKKwljaGVja19maWxlIGN2c3dvcmsgdGV4dGZpbGUuYyB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayB0MiB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2FmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYTJmaWxlIHYxICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrIGFkaXIvYmRpci9iZmlsZSB2MSAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yayBhZGlyL2JkaXIvYjJmaWxlIHYxICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrIHYxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBkaWZmIC1yIHYxIC11JyAnCisJKCBjZCBjdnN3b3JrICYmIGN2cyAtZiBkaWZmIC1yIHYxIC11ICkgPmN2c0RpZmYub3V0IDI+Y3ZzLmxvZyAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBjdnNEaWZmLm91dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBjdnMubG9nCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2N2cyBkaWZmIC1OIC1yIHYyIC11JyAnCisJKCBjZCBjdnN3b3JrICYmICEgY3ZzIC1mIGRpZmYgLU4gLXIgdjIgLXUgKSA+Y3ZzRGlmZi5vdXQgMj5jdnMubG9nICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGN2cy5sb2cgJiYKKwl0ZXN0IC1zIGN2c0RpZmYub3V0ICYmCisJY2hlY2tfZGlmZiBjdnNEaWZmLm91dCB2MiB2MSA+Y2hlY2tfZGlmZi5vdXQgMj4mMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgZGlmZiAtTiAtciB2MiAtciB2MS4yJyAnCisJKCBjZCBjdnN3b3JrICYmICEgY3ZzIC1mIGRpZmYgLU4gLXIgdjIgLXIgdjEuMiAtdSApID5jdnNEaWZmLm91dCAyPmN2cy5sb2cgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgY3ZzLmxvZyAmJgorCXRlc3QgLXMgY3ZzRGlmZi5vdXQgJiYKKwljaGVja19kaWZmIGN2c0RpZmYub3V0IHYyIHYxLjIgPmNoZWNrX2RpZmYub3V0IDI+JjEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgZWFybHkgW2N2c3dvcmszXSBkaWZmIHRvIGIzJyAnCisJZ2l0IGNsb25lIC1xIC4gZ2l0d29yazMgJiYKKwkoCisJCWNkIGdpdHdvcmszICYmCisJCWdpdCBjaGVja291dCAtYiBiMyB2MSAmJgorCQlnaXQgYXBwbHkgLXAwIC0taW5kZXggPCIkV09SS0RJUi9jdnN3b3JrM2VkaXQuZGlmZiIgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiY3Zzd29yazMgZWRpdHMgYXBwbGllZCIKKwkpICYmCisJZ2l0IGZldGNoIGdpdHdvcmszIGIzOmIzICYmCisJZ2l0IHRhZyB2MyBiMworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBbY3Zzd29yazNdIGRpZmYnICcKKwkoIGNkIGN2c3dvcmszICYmICEgY3ZzIC1mIGRpZmYgLU4gLXUgKSA+IiRXT1JLRElSL2N2c0RpZmYub3V0IiAyPmN2cy5sb2cgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgY3ZzLmxvZyAmJgorCXRlc3QgLXMgY3ZzRGlmZi5vdXQgJiYKKwl0ZXN0ICQoZ3JlcCBJbmRleDogY3ZzRGlmZi5vdXQgfCB3YyAtbCkgPSAzICYmCisJdGVzdF9jbXAgY3ZzRGlmZi5vdXQgY3Zzd29yazNlZGl0LmRpZmYgJiYKKwljaGVja19kaWZmIGN2c0RpZmYub3V0IHYxIHYzID5jaGVja19kaWZmLm91dCAyPiYxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGVhcmx5IFtjdnN3b3JrM10gYjMgd2l0aCBiMScgJworCSggY2QgZ2l0d29yazMgJiYgZ2l0IG1lcmdlICJtZXNzYWdlIiBIRUFEIGIxICkgJiYKKwlnaXQgZmV0Y2ggZ2l0d29yazMgYjM6YjMgJiYKKwlnaXQgdGFnIHYzbWVyZ2VkIGIzICYmCisJZ2l0IHB1c2ggLS10YWdzIGdpdGN2cy5naXQgYjM6YjMKKycKKworIyBUaGlzIHRlc3Qgd291bGQgZmFpbCBpZiBjdnNzZXJ2ZXIgcHJvcGVybHkgY3JlYXRlZCBhICIuI2FmaWxlIiogZmlsZQorIyBmb3IgdGhlIG1lcmdlLgorIyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRoZSAuIyBmaWxlIHdhcyBzYXZlZCBwcm9wZXJseSwgYW5kIHRoZW4KKyMgICBkZWxldGUvaWdub3JlIGl0IHdoZW4gY2hlY2tpbmcgdGhlIHRyZWUuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgdXAgZGlydHkgW2N2c3dvcmszXScgJworCSgKKwkJY2QgY3Zzd29yazMgJiYKKwkJY3ZzIC1mIHVwICYmCisJCSEgY3ZzIC1mIGRpZmYgLU4gLXUgPiIkV09SS0RJUi9jdnNEaWZmLm91dCIKKwkpID5jdnMubG9nIDI+JjEgJiYKKwl0ZXN0IC1zIGN2c0RpZmYub3V0ICYmCisJdGVzdCAkKGdyZXAgSW5kZXg6IGN2c0RpZmYub3V0IHwgd2MgLWwpID0gMiAmJgorCWNoZWNrX3N0YXJ0X3RyZWUgY3Zzd29yazMgJiYKKwljaGVja19maWxlIGN2c3dvcmszIHRleHRmaWxlLmMgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIHQzIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2FmaWxlIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2EzZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9hZmlsZTUgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYmRpci9iZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9iZGlyL2IzZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgY2Rpci9jZmlsZSB2M21lcmdlZCAmJgorCWNoZWNrX2VuZF9mdWxsX3RyZWUgY3Zzd29yazMgdjNtZXJnZWQKKycKKworIyBUT0RPOiB0ZXN0IGN2cyBzdGF0dXMKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIGNvbW1pdCBbY3Zzd29yazNdJyAnCisJKAorCQljZCBjdnN3b3JrMyAmJgorCQljdnMgLWYgY29tbWl0IC1tICJkaXJ0eSBzYW5kYm94IGFmdGVyIGF1dG8tbWVyZ2UiCisJKSA+Y3ZzLmxvZyAyPiYxICYmCisJY2hlY2tfc3RhcnRfdHJlZSBjdnN3b3JrMyAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgdGV4dGZpbGUuYyB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgdDMgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYWZpbGUgdjNtZXJnZWQgJiYKKwljaGVja19maWxlIGN2c3dvcmszIGFkaXIvYTNmaWxlIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2FmaWxlNSB2M21lcmdlZCAmJgorCWNoZWNrX2ZpbGUgY3Zzd29yazMgYWRpci9iZGlyL2JmaWxlIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBhZGlyL2JkaXIvYjNmaWxlIHYzbWVyZ2VkICYmCisJY2hlY2tfZmlsZSBjdnN3b3JrMyBjZGlyL2NmaWxlIHYzbWVyZ2VkICYmCisJY2hlY2tfZW5kX2Z1bGxfdHJlZSBjdnN3b3JrMyB2M21lcmdlZCAmJgorCWdpdCBmZXRjaCBnaXRjdnMuZ2l0IGIzOmI0ICYmCisJZ2l0IHRhZyB2NC4xIGI0ICYmCisJZ2l0IGRpZmYgLS1leGl0LWNvZGUgdjQuMSB2M21lcmdlZCA+Y2hlY2tfZGlmZl9hcHBseS5vdXQgMj4mMQorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDk1MDAtZ2l0d2ViLXN0YW5kYWxvbmUtbm8tZXJyb3JzLnNoIGIvdC90OTUwMC1naXR3ZWItc3RhbmRhbG9uZS1uby1lcnJvcnMuc2gKaW5kZXggOTBiYjYwNS4uNmZjYTE5MyAxMDA3NTUKLS0tIGEvdC90OTUwMC1naXR3ZWItc3RhbmRhbG9uZS1uby1lcnJvcnMuc2gKKysrIGIvdC90OTUwMC1naXR3ZWItc3RhbmRhbG9uZS1uby1lcnJvcnMuc2gKQEAgLTE1NiwxMCArMTU2LDEwIEBACiAJIGdpdCBjb21taXQgLWEgLW0gIkZpbGUgcmVuYW1lZC4iICYmCiAJIGdpdHdlYl9ydW4gInA9LmdpdDthPWNvbW1pdGRpZmYiJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTIFwKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAogCSdjb21taXRkaWZmKDApOiBmaWxlIHRvIHN5bWxpbmsnIFwKIAkncm0gcmVuYW1lZF9maWxlICYmCi0JIGxuIC1zIGZpbGUgcmVuYW1lZF9maWxlICYmCisJIHRlc3RfbG5fc19hZGQgZmlsZSByZW5hbWVkX2ZpbGUgJiYKIAkgZ2l0IGNvbW1pdCAtYSAtbSAiRmlsZSB0byBzeW1saW5rLiIgJiYKIAkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9Y29tbWl0ZGlmZiInCiAKQEAgLTIxMiwxNSArMjEyLDE0IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgY29tbWl0ZGlmZiB0ZXN0aW5nICh0YWtlbiBmcm9tIHQ0MTE0LWFwcGx5LXR5cGVjaGFuZ2Uuc2gpCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3NldHVwIHR5cGVjaGFuZ2UgY29tbWl0cycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgdHlwZWNoYW5nZSBjb21taXRzJyAnCiAJZWNobyAiaGVsbG8gd29ybGQiID4gZm9vICYmCiAJZWNobyAiaGkgcGxhbmV0IiA+IGJhciAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgZm9vIGJhciAmJgogCWdpdCBjb21taXQgLW0gaW5pdGlhbCAmJgogCWdpdCBicmFuY2ggaW5pdGlhbCAmJgogCXJtIC1mIGZvbyAmJgotCWxuIC1zIGJhciBmb28gJiYKLQlnaXQgdXBkYXRlLWluZGV4IGZvbyAmJgorCXRlc3RfbG5fc19hZGQgYmFyIGZvbyAmJgogCWdpdCBjb21taXQgLW0gImZvbyBzeW1saW5rZWQgdG8gYmFyIiAmJgogCWdpdCBicmFuY2ggZm9vLXN5bWxpbmtlZC10by1iYXIgJiYKIAlybSAtZiBmb28gJiYKQEAgLTM2MSwxMSArMzYwLDcgQEAKIAkgZWNobyAiQ2hhbmdlZCIgPj4gMDQtcmVuYW1lLXRvICYmCiAJIHRlc3RfY2htb2QgK3ggMDUtbW9kZS1jaGFuZ2UgJiYKIAkgcm0gLWYgMDYtZmlsZS1vci1zeW1saW5rICYmCi0JIGlmIHRlc3RfaGF2ZV9wcmVyZXEgU1lNTElOS1M7IHRoZW4KLQkJbG4gLXMgMDEtY2hhbmdlIDA2LWZpbGUtb3Itc3ltbGluawotCSBlbHNlCi0JCXByaW50ZiAlcyAwMS1jaGFuZ2UgPiAwNi1maWxlLW9yLXN5bWxpbmsKLQkgZmkgJiYKKwkgdGVzdF9sbl9zX2FkZCAwMS1jaGFuZ2UgMDYtZmlsZS1vci1zeW1saW5rICYmCiAJIGVjaG8gIkNoYW5nZWQgYW5kIGhhdmUgbW9kZSBjaGFuZ2VkIiA+IDA3LWNoYW5nZS1tb2RlLWNoYW5nZQkmJgogCSB0ZXN0X2NobW9kICt4IDA3LWNoYW5nZS1tb2RlLWNoYW5nZSAmJgogCSBnaXQgY29tbWl0IC1hIC1tICJMYXJnZSBjb21taXQiICYmCkBAIC01MzksOCArNTM0LDcgQEAKIAkgdGVzdF93aGVuX2ZpbmlzaGVkICJHSVRfQ09NTUlUVEVSX05BTUU9XCJDIE8gTWl0dGVyXCIiICYmCiAJIGVjaG8gIklTTy04ODU5LTEiID4+IGZpbGUgJiYKIAkgZ2l0IGFkZCBmaWxlICYmCi0JIGdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBJU08tODg1OS0xICYmCi0JIHRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmciICYmCisJIHRlc3RfY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgSVNPLTg4NTktMSAmJgogCSBnaXQgY29tbWl0IC1GICIkVEVTVF9ESVJFQ1RPUlkiL3QzOTAwL0lTTzg4NTktMS50eHQgJiYKIAkgZ2l0d2ViX3J1biAicD0uZ2l0O2E9Y29tbWl0IicKIApkaWZmIC0tZ2l0IGEvdC90OTUwMS1naXR3ZWItc3RhbmRhbG9uZS1odHRwLXN0YXR1cy5zaCBiL3QvdDk1MDEtZ2l0d2ViLXN0YW5kYWxvbmUtaHR0cC1zdGF0dXMuc2gKaW5kZXggZWY4Njk0OC4uZDNhNWJhYyAxMDA3NTUKLS0tIGEvdC90OTUwMS1naXR3ZWItc3RhbmRhbG9uZS1odHRwLXN0YXR1cy5zaAorKysgYi90L3Q5NTAxLWdpdHdlYi1zdGFuZGFsb25lLWh0dHAtc3RhdHVzLnNoCkBAIC0xMzAsNyArMTMwLDggQEAKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIuaGVhZGVycycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBEQVRFX1BBUlNFUiAnbW9kaWZpY2F0aW9uOiBmZWVkIGlmLW1vZGlmaWVkLXNpbmNlIChtb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iV2VkLCA2IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IldlZCwgNiBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1hdG9tO2g9bWFzdGVyIiAmJgogCWdyZXAgIlN0YXR1czogMjAwIE9LIiBnaXR3ZWIuaGVhZGVycwpAQCAtMTM4LDcgKzEzOSw4IEBACiB0ZXN0X2RlYnVnICdjYXQgZ2l0d2ViLmhlYWRlcnMnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgREFURV9QQVJTRVIgJ21vZGlmaWNhdGlvbjogZmVlZCBpZi1tb2RpZmllZC1zaW5jZSAodW5tb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iVGh1LCA3IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IlRodSwgNyBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1hdG9tO2g9bWFzdGVyIiAmJgogCWdyZXAgIlN0YXR1czogMzA0IE5vdCBNb2RpZmllZCIgZ2l0d2ViLmhlYWRlcnMKQEAgLTE1Myw3ICsxNTUsOCBAQAogdGVzdF9kZWJ1ZyAnY2F0IGdpdHdlYi5oZWFkZXJzJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIERBVEVfUEFSU0VSICdtb2RpZmljYXRpb246IHNuYXBzaG90IGlmLW1vZGlmaWVkLXNpbmNlIChtb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iV2VkLCA2IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IldlZCwgNiBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1zbmFwc2hvdDtoPW1hc3RlcjtzZj10Z3oiICYmCiAJZ3JlcCAiU3RhdHVzOiAyMDAgT0siIGdpdHdlYi5oZWFkZXJzCkBAIC0xNjEsNyArMTY0LDggQEAKIHRlc3RfZGVidWcgJ2NhdCBnaXR3ZWIuaGVhZGVycycKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBEQVRFX1BBUlNFUiAnbW9kaWZpY2F0aW9uOiBzbmFwc2hvdCBpZi1tb2RpZmllZC1zaW5jZSAodW5tb2RpZmllZCknICcKLQlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iVGh1LCA3IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCUhUVFBfSUZfTU9ESUZJRURfU0lOQ0U9IlRodSwgNyBBcHIgMjAwNSAyMjoxNDoxMyArMDAwMCIgJiYKKwlleHBvcnQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAidW5zZXQgSFRUUF9JRl9NT0RJRklFRF9TSU5DRSIgJiYKIAlnaXR3ZWJfcnVuICJwPS5naXQ7YT1zbmFwc2hvdDtoPW1hc3RlcjtzZj10Z3oiICYmCiAJZ3JlcCAiU3RhdHVzOiAzMDQgTm90IE1vZGlmaWVkIiBnaXR3ZWIuaGVhZGVycwpAQCAtMTcwLDcgKzE3NCw4IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgREFURV9QQVJTRVIgJ21vZGlmaWNhdGlvbjogdHJlZSBzbmFwc2hvdCcgJwogCUlEPWBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQURee3RyZWV9YCAmJgotCWV4cG9ydCBIVFRQX0lGX01PRElGSUVEX1NJTkNFPSJXZWQsIDYgQXByIDIwMDUgMjI6MTQ6MTMgKzAwMDAiICYmCisJSFRUUF9JRl9NT0RJRklFRF9TSU5DRT0iV2VkLCA2IEFwciAyMDA1IDIyOjE0OjEzICswMDAwIiAmJgorCWV4cG9ydCBIVFRQX0lGX01PRElGSUVEX1NJTkNFICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJ1bnNldCBIVFRQX0lGX01PRElGSUVEX1NJTkNFIiAmJgogCWdpdHdlYl9ydW4gInA9LmdpdDthPXNuYXBzaG90O2g9JElEO3NmPXRneiIgJiYKIAlncmVwICJTdGF0dXM6IDIwMCBPSyIgZ2l0d2ViLmhlYWRlcnMgJiYKZGlmZiAtLWdpdCBhL3QvdDk3MDAvdGVzdC5wbCBiL3QvdDk3MDAvdGVzdC5wbAppbmRleCAwZDRlMzY2Li4xMTQwNzY3IDEwMDc1NQotLS0gYS90L3Q5NzAwL3Rlc3QucGwKKysrIGIvdC90OTcwMC90ZXN0LnBsCkBAIC00NSw3ICs0NSw4IEBACiAjIEZhaWx1cmUgY2FzZXMgZm9yIGNvbmZpZzoKICMgU2F2ZSBhbmQgcmVzdG9yZSBTVERFUlI7IHdlIHdpbGwgcHJvYmFibHkgZXh0cmFjdCB0aGlzIGludG8gYQogIyAiZGllc19vayIgbWV0aG9kIGFuZCBwb3NzaWJseSBtb3ZlIHRoZSBTVERFUlIgaGFuZGxpbmcgdG8gR2l0LnBtLgotb3BlbiBvdXIgJHRtcHN0ZGVyciwgIj4mU1RERVJSIiBvciBkaWUgImNhbm5vdCBzYXZlIFNUREVSUiI7IGNsb3NlIFNUREVSUjsKK29wZW4gb3VyICR0bXBzdGRlcnIsICI+JlNUREVSUiIgb3IgZGllICJjYW5ub3Qgc2F2ZSBTVERFUlIiOworb3BlbiBTVERFUlIsICI+IiwgIi9kZXYvbnVsbCIgb3IgZGllICJjYW5ub3QgcmVkaXJlY3QgU1RERVJSIHRvIC9kZXYvbnVsbCI7CiBpcygkci0+Y29uZmlnKCJ0ZXN0LmR1cHN0cmluZyIpLCAidmFsdWUyIiwgImNvbmZpZzogbXVsdGl2YXIiKTsKIGV2YWwgeyAkci0+Y29uZmlnX2Jvb2woInRlc3QuYm9vbG90aGVyIikgfTsKIG9rKCRALCAiY29uZmlnX2Jvb2w6IG5vbi1ib29sZWFuIHZhbHVlcyBmYWlsIik7CmRpZmYgLS1naXQgYS90L3Q5ODAwLWdpdC1wNC1iYXNpYy5zaCBiL3QvdDk4MDAtZ2l0LXA0LWJhc2ljLnNoCmluZGV4IDhjNTk3OTYuLjY2NTYwN2MgMTAwNzU1Ci0tLSBhL3QvdDk4MDAtZ2l0LXA0LWJhc2ljLnNoCisrKyBiL3QvdDk4MDAtZ2l0LXA0LWJhc2ljLnNoCkBAIC0zMCw2ICszMCwxMSBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVwb3QgdHlwbyBlcnJvcicgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC9kZXBvdCAyPmVycnMgJiYKKwlncmVwICJEZXBvdCBwYXRocyBtdXN0IHN0YXJ0IHdpdGgiIGVycnMKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHA0IGNsb25lIEBhbGwnICcKIAlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90QGFsbCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgpAQCAtMTYwLDkgKzE2NSwxMiBAQAogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgogCSgKIAkJY2QgIiRnaXQiICYmCi0JCXRlc3QgISAtZCAuZ2l0ICYmCi0JCWJhcmU9YGdpdCBjb25maWcgLS1nZXQgY29yZS5iYXJlYCAmJgotCQl0ZXN0ICIkYmFyZSIgPSB0cnVlCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQgJiYKKwkJZ2l0IGNvbmZpZyAtLWdldCAtLWJvb2wgY29yZS5iYXJlIHRydWUgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvcDQvbWFzdGVyICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3A0L0hFQUQgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlciAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQKIAkpCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoIGIvdC90OTgwMi1naXQtcDQtZmlsZXR5cGUuc2gKaW5kZXggYWFlMWEzZi4uYjBkMWQ5NCAxMDA3NTUKLS0tIGEvdC90OTgwMi1naXQtcDQtZmlsZXR5cGUuc2gKKysrIGIvdC90OTgwMi1naXQtcDQtZmlsZXR5cGUuc2gKQEAgLTgsNiArOCwxMjMgQEAKIAlzdGFydF9wNGQKICcKIAorIworIyBUaGlzIHNlcmllcyBvZiB0ZXN0cyBjaGVja3MgbmV3bGluZSBoYW5kbGluZyAgQm90aCBwNCBhbmQKKyMgZ2l0IHN0b3JlIG5ld2xpbmVzIGFzIFxuLCBhbmQgaGF2ZSBvcHRpb25zIHRvIGNob29zZSBob3cKKyMgbmV3bGluZXMgYXBwZWFyIGluIGNoZWNrZWQtb3V0IGZpbGVzLgorIwordGVzdF9leHBlY3Rfc3VjY2VzcyAncDQgY2xpZW50IG5ld2xpbmVzLCB1bml4JyAnCisJKAorCQljZCAiJGNsaSIgJiYKKwkJcDQgY2xpZW50IC1vIHwgc2VkICIvTGluZUVuZC9zLzouKi86dW5peC8iIHwgcDQgY2xpZW50IC1pICYmCisJCXByaW50ZiAidW5peFxuY3JsZlxuIiA+Zi11bml4ICYmCisJCXByaW50ZiAidW5peFxyXG5jcmxmXHJcbiIgPmYtdW5peC1hcy1jcmxmICYmCisJCXA0IGFkZCAtdCB0ZXh0IGYtdW5peCAmJgorCQlwNCBzdWJtaXQgLWQgZi11bml4ICYmCisKKwkJIyBMaW5lRW5kOiB1bml4OyBzaG91bGQgYmUgbm8gY2hhbmdlIGFmdGVyIHN5bmMKKwkJY3AgZi11bml4IGYtdW5peC1vcmlnICYmCisJCXA0IHN5bmMgLWYgJiYKKwkJdGVzdF9jbXAgZi11bml4LW9yaWcgZi11bml4ICYmCisKKwkJIyBtYWtlIHN1cmUgc3RvcmVkIGluIHJlcG8gYXMgdW5peCBuZXdsaW5lcworCQkjIHVzZSBzZWQgdG8gZWF0IHB5dGhvbi1hcHBlbmVkIG5ld2xpbmUKKwkJcDQgLUcgcHJpbnQgLy9kZXBvdC9mLXVuaXggfCBtYXJzaGFsX2R1bXAgZGF0YSAyIHxcCisJCSAgICBzZWQgXCRkID5mLXVuaXgtcDQtcHJpbnQgJiYKKwkJdGVzdF9jbXAgZi11bml4LW9yaWcgZi11bml4LXA0LXByaW50ICYmCisKKwkJIyBzd2l0Y2ggdG8gd2luLCBtYWtlIHN1cmUgbGYgLT4gY3JsZgorCQlwNCBjbGllbnQgLW8gfCBzZWQgIi9MaW5lRW5kL3MvOi4qLzp3aW4vIiB8IHA0IGNsaWVudCAtaSAmJgorCQlwNCBzeW5jIC1mICYmCisJCXRlc3RfY21wIGYtdW5peC1hcy1jcmxmIGYtdW5peAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncDQgY2xpZW50IG5ld2xpbmVzLCB3aW4nICcKKwkoCisJCWNkICIkY2xpIiAmJgorCQlwNCBjbGllbnQgLW8gfCBzZWQgIi9MaW5lRW5kL3MvOi4qLzp3aW4vIiB8IHA0IGNsaWVudCAtaSAmJgorCQlwcmludGYgIndpblxyXG5jcmxmXHJcbiIgPmYtd2luICYmCisJCXByaW50ZiAid2luXG5jcmxmXG4iID5mLXdpbi1hcy1sZiAmJgorCQlwNCBhZGQgLXQgdGV4dCBmLXdpbiAmJgorCQlwNCBzdWJtaXQgLWQgZi13aW4gJiYKKworCQkjIExpbmVFbmQ6IHdpbjsgc2hvdWxkIGJlIG5vIGNoYW5nZSBhZnRlciBzeW5jCisJCWNwIGYtd2luIGYtd2luLW9yaWcgJiYKKwkJcDQgc3luYyAtZiAmJgorCQl0ZXN0X2NtcCBmLXdpbi1vcmlnIGYtd2luICYmCisKKwkJIyBtYWtlIHN1cmUgc3RvcmVkIGluIHJlcG8gYXMgdW5peCBuZXdsaW5lcworCQkjIHVzZSBzZWQgdG8gZWF0IHB5dGhvbi1hcHBlbmVkIG5ld2xpbmUKKwkJcDQgLUcgcHJpbnQgLy9kZXBvdC9mLXdpbiB8IG1hcnNoYWxfZHVtcCBkYXRhIDIgfFwKKwkJICAgIHNlZCBcJGQgPmYtd2luLXA0LXByaW50ICYmCisJCXRlc3RfY21wIGYtd2luLWFzLWxmIGYtd2luLXA0LXByaW50ICYmCisKKwkJIyBzd2l0Y2ggdG8gdW5peCwgbWFrZSBzdXJlIGxmIC0+IGNybGYKKwkJcDQgY2xpZW50IC1vIHwgc2VkICIvTGluZUVuZC9zLzouKi86dW5peC8iIHwgcDQgY2xpZW50IC1pICYmCisJCXA0IHN5bmMgLWYgJiYKKwkJdGVzdF9jbXAgZi13aW4tYXMtbGYgZi13aW4KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Vuc3VyZSBibG9icyBzdG9yZSBvbmx5IGxmIG5ld2xpbmVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IGluaXQgJiYKKwkJZ2l0IHA0IHN5bmMgLy9kZXBvdEBhbGwgJiYKKworCQkjIHZlcmlmeSB0aGUgZmlsZXMgaW4gLmdpdCBhcmUgc3RvcmVkIG9ubHkgd2l0aCBuZXdsaW5lcworCQlvPSQoZ2l0IGxzLXRyZWUgcDQvbWFzdGVyIC0tIGYtdW5peCB8IGN1dCAtZjEgfCBjdXQgLWRcICAtZjMpICYmCisJCWdpdCBjYXQtZmlsZSBibG9iICRvID5mLXVuaXgtYmxvYiAmJgorCQl0ZXN0X2NtcCAiJGNsaSIvZi11bml4LW9yaWcgZi11bml4LWJsb2IgJiYKKworCQlvPSQoZ2l0IGxzLXRyZWUgcDQvbWFzdGVyIC0tIGYtd2luIHwgY3V0IC1mMSB8IGN1dCAtZFwgIC1mMykgJiYKKwkJZ2l0IGNhdC1maWxlIGJsb2IgJG8gPmYtd2luLWJsb2IgJiYKKwkJdGVzdF9jbXAgIiRjbGkiL2Ytd2luLWFzLWxmIGYtd2luLWJsb2IgJiYKKworCQlybSBmLXVuaXgtYmxvYiBmLXdpbi1ibG9iCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRhdHRyaWJ1dGVzIHNldHRpbmcgZW9sPWxmIHByb2R1Y2VzIGxmIG5ld2xpbmVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQkjIGNoZWNrb3V0IHRoZSBmaWxlcyBhbmQgbWFrZSBzdXJlIGNvcmUuZW9sIHdvcmtzIGFzIHBsYW5uZWQKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisJCWVjaG8gIiogZW9sPWxmIiA+LmdpdGF0dHJpYnV0ZXMgJiYKKwkJZ2l0IHA0IHN5bmMgLy9kZXBvdEBhbGwgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIG1hc3RlciBwNC9tYXN0ZXIgJiYKKwkJdGVzdF9jbXAgIiRjbGkiL2YtdW5peC1vcmlnIGYtdW5peCAmJgorCQl0ZXN0X2NtcCAiJGNsaSIvZi13aW4tYXMtbGYgZi13aW4KKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGF0dHJpYnV0ZXMgc2V0dGluZyBlb2w9Y3JsZiBwcm9kdWNlcyBjcmxmIG5ld2xpbmVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQkjIGNoZWNrb3V0IHRoZSBmaWxlcyBhbmQgbWFrZSBzdXJlIGNvcmUuZW9sIHdvcmtzIGFzIHBsYW5uZWQKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisJCWVjaG8gIiogZW9sPWNybGYiID4uZ2l0YXR0cmlidXRlcyAmJgorCQlnaXQgcDQgc3luYyAvL2RlcG90QGFsbCAmJgorCQlnaXQgY2hlY2tvdXQgLWIgbWFzdGVyIHA0L21hc3RlciAmJgorCQl0ZXN0X2NtcCAiJGNsaSIvZi11bml4LWFzLWNybGYgZi11bml4ICYmCisJCXRlc3RfY21wICIkY2xpIi9mLXdpbi1vcmlnIGYtd2luCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjcmxmIGNsZWFudXAnICcKKwkoCisJCWNkICIkY2xpIiAmJgorCQlybSBmLXVuaXgtb3JpZyBmLXVuaXgtYXMtY3JsZiAmJgorCQlybSBmLXdpbi1vcmlnIGYtd2luLWFzLWxmICYmCisJCXA0IGNsaWVudCAtbyB8IHNlZCAiL0xpbmVFbmQvcy86LiovOnVuaXgvIiB8IHA0IGNsaWVudCAtaSAmJgorCQlwNCBzeW5jIC1mCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1dGYtMTYgZmlsZSBjcmVhdGUnICcKIAkoCiAJCWNkICIkY2xpIiAmJgpkaWZmIC0tZ2l0IGEvdC90OTgwNi1naXQtcDQtb3B0aW9ucy5zaCBiL3QvdDk4MDYtZ2l0LXA0LW9wdGlvbnMuc2gKaW5kZXggZmE0MGNjOC4uMjU0ZDQyOCAxMDA3NTUKLS0tIGEvdC90OTgwNi1naXQtcDQtb3B0aW9ucy5zaAorKysgYi90L3Q5ODA2LWdpdC1wNC1vcHRpb25zLnNoCkBAIC0yNywxNCArMjcsMTAyIEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHA0IGNsb25lIC0tZ2l0LWRpcj14eCAvL2RlcG90CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIC0tYnJhbmNoJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLWJyYW5jaCBzaG91bGQgY2hlY2tvdXQgbWFzdGVyJyAnCiAJZ2l0IHA0IGNsb25lIC0tYnJhbmNoPXJlZnMvcmVtb3Rlcy9wNC9zYiAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKIAkoCiAJCWNkICIkZ2l0IiAmJgotCQlnaXQgbHMtZmlsZXMgPmZpbGVzICYmCi0JCXRlc3RfbGluZV9jb3VudCA9IDAgZmlsZXMgJiYKLQkJdGVzdF9wYXRoX2lzX2ZpbGUgLmdpdC9yZWZzL3JlbW90ZXMvcDQvc2IKKwkJZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvcDQvc2IgPnNiICYmCisJCWdpdCByZXYtcGFyc2UgcmVmcy9oZWFkcy9tYXN0ZXIgPm1hc3RlciAmJgorCQl0ZXN0X2NtcCBzYiBtYXN0ZXIgJiYKKwkJZ2l0IHJldi1wYXJzZSBIRUFEID5oZWFkICYmCisJCXRlc3RfY21wIHNiIGhlYWQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bmMgd2hlbiBubyBtYXN0ZXIgYnJhbmNoIHByaW50cyBhIG5pY2UgZXJyb3InICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwlnaXQgcDQgY2xvbmUgLS1icmFuY2g9cmVmcy9yZW1vdGVzL3A0L3NiIC0tZGVzdD0iJGdpdCIgLy9kZXBvdEAyICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHA0IHN5bmMgMj5lcnIgJiYKKwkJZ3JlcCAiRXJyb3I6IG5vIGJyYW5jaCByZWZzL3JlbW90ZXMvcDQvbWFzdGVyIiBlcnIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bmMgLS1icmFuY2ggYnVpbGRzIHRoZSBmdWxsIHJlZiBuYW1lIGNvcnJlY3RseScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9YjEgLy9kZXBvdCAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9wNC9iMSAmJgorCQlnaXQgcDQgc3luYyAtLWJyYW5jaD1wNC9iMiAvL2RlcG90ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL3A0L2IyICYmCisKKwkJZ2l0IHA0IHN5bmMgLS1pbXBvcnQtbG9jYWwgLS1icmFuY2g9aDEgLy9kZXBvdCAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcDQvaDEgJiYKKwkJZ2l0IHA0IHN5bmMgLS1pbXBvcnQtbG9jYWwgLS1icmFuY2g9cDQvaDIgLy9kZXBvdCAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcDQvaDIgJiYKKworCQlnaXQgcDQgc3luYyAtLWJyYW5jaD1yZWZzL3N0dWZmIC8vZGVwb3QgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3N0dWZmCisJKQorJworCisjIGVuZ2FnZXMgLS1kZXRlY3QtYnJhbmNoZXMgY29kZSwgd2hpY2ggd2lsbCBkbyBmaWxlbmFtZSBmaWx0ZXJpbmcgc28KKyMgbm8gc3luYyB0byBlaXRoZXIgYjEgb3IgYjIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bmMgd2hlbiB0d28gYnJhbmNoZXMgYnV0IG5vIG1hc3RlciBzaG91bGQgbm9vcCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgorCSgKKwkJY2QgIiRnaXQiICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCBwNCBzeW5jIC0tYnJhbmNoPXJlZnMvcmVtb3Rlcy9wNC9iMSAvL2RlcG90QDIgJiYKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9cmVmcy9yZW1vdGVzL3A0L2IyIC8vZGVwb3RAMiAmJgorCQlnaXQgcDQgc3luYyAmJgorCQlnaXQgc2hvdyAtcyAtLWZvcm1hdD0lcyByZWZzL3JlbW90ZXMvcDQvYjEgPnNob3cgJiYKKwkJZ3JlcCAiSW5pdGlhbCBpbXBvcnQiIHNob3cgJiYKKwkJZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JXMgcmVmcy9yZW1vdGVzL3A0L2IyID5zaG93ICYmCisJCWdyZXAgIkluaXRpYWwgaW1wb3J0IiBzaG93CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzeW5jIC0tYnJhbmNoIHVwZGF0ZXMgc3BlY2lmaWMgYnJhbmNoLCBubyBkZXRlY3Rpb24nICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgaW5pdCAmJgorCQlnaXQgcDQgc3luYyAtLWJyYW5jaD1iMSAvL2RlcG90QDIgJiYKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9YjIgLy9kZXBvdEAyICYmCisJCWdpdCBwNCBzeW5jIC0tYnJhbmNoPWIyICYmCisJCWdpdCBzaG93IC1zIC0tZm9ybWF0PSVzIHJlZnMvcmVtb3Rlcy9wNC9iMSA+c2hvdyAmJgorCQlncmVwICJJbml0aWFsIGltcG9ydCIgc2hvdyAmJgorCQlnaXQgc2hvdyAtcyAtLWZvcm1hdD0lcyByZWZzL3JlbW90ZXMvcDQvYjIgPnNob3cgJiYKKwkJZ3JlcCAiY2hhbmdlIDMiIHNob3cKKwkpCisnCisKKyMgYWxsb3dzIHVzaW5nIHRoZSByZWZuYW1lICJwNCIgYXMgYSBzaG9ydCBuYW1lIGZvciBwNC9tYXN0ZXIKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Nsb25lIGNyZWF0ZXMgSEVBRCBzeW1ib2xpYyByZWZlcmVuY2UnICcKKwlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvcDQvbWFzdGVyID5tYXN0ZXIgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBwNCA+cDQgJiYKKwkJdGVzdF9jbXAgbWFzdGVyIHA0CisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSAtLWJyYW5jaCBjcmVhdGVzIEhFQUQgc3ltYm9saWMgcmVmZXJlbmNlJyAnCisJZ2l0IHA0IGNsb25lIC0tYnJhbmNoPXJlZnMvcmVtb3Rlcy9wNC9zYiAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKKwkoCisJCWNkICIkZ2l0IiAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9wNC9zYiA+c2IgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBwNCA+cDQgJiYKKwkJdGVzdF9jbXAgc2IgcDQKIAkpCiAnCiAKQEAgLTEyNiwzNyArMjE0LDU4IEBACiAJCWV4ZWMgPi9kZXYvbnVsbCAmJgogCQl0ZXN0X211c3RfZmFpbCBnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAtLXVzZS1jbGllbnQtc3BlYwogCSkgJiYKLQljbGkyPSQodGVzdC1wYXRoLXV0aWxzIHJlYWxfcGF0aCAiJFRSQVNIX0RJUkVDVE9SWS9jbGkyIikgJiYKKwkjIGJ1aWxkIGEgZGlmZmVyZW50IGNsaWVudAorCWNsaTI9IiRUUkFTSF9ESVJFQ1RPUlkvY2xpMiIgJiYKIAlta2RpciAtcCAiJGNsaTIiICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJybWRpciBcIiRjbGkyXCIiICYmCi0JKAotCQljZCAiJGNsaTIiICYmCi0JCXA0IGNsaWVudCAtaSA8PC1FT0YKLQkJQ2xpZW50OiBjbGllbnQyCi0JCURlc2NyaXB0aW9uOiBjbGllbnQyCi0JCVJvb3Q6ICRjbGkyCi0JCVZpZXc6IC8vZGVwb3Qvc3ViLy4uLiAvL2NsaWVudDIvYnVzLy4uLgotCQlFT0YKLQkpICYmCi0JUDRDTElFTlQ9Y2xpZW50MiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCBjbGVhbnVwX2dpdCAmJgotCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC0tdXNlLWNsaWVudC1zcGVjIC8vZGVwb3QvLi4uICYmCiAJKAotCQljZCAiJGdpdCIgJiYKLQkJdGVzdF9wYXRoX2lzX2ZpbGUgYnVzL2Rpci9mNCAmJgotCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlMQotCSkgJiYKLQljbGVhbnVwX2dpdCAmJgorCQkjIGdyb3VwIFA0Q0xJRU5UIGFuZCBjbGkgY2hhbmdlcyBpbiBhIHN1Yi1zaGVsbAorCQlQNENMSUVOVD1jbGllbnQyICYmCisJCWNsaT0iJGNsaTIiICYmCisJCWNsaWVudF92aWV3ICIvL2RlcG90L3N1Yi8uLi4gLy9jbGllbnQyL2J1cy8uLi4iICYmCisJCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC0tdXNlLWNsaWVudC1zcGVjIC8vZGVwb3QvLi4uICYmCisJCSgKKwkJCWNkICIkZ2l0IiAmJgorCQkJdGVzdF9wYXRoX2lzX2ZpbGUgYnVzL2Rpci9mNCAmJgorCQkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZmlsZTEKKwkJKSAmJgorCQljbGVhbnVwX2dpdCAmJgorCQkjIHNhbWUgdGhpbmcgYWdhaW4sIHRoaXMgdGltZSB3aXRoIHZhcmlhYmxlIGluc3RlYWQgb2Ygb3B0aW9uCisJCSgKKwkJCWNkICIkZ2l0IiAmJgorCQkJZ2l0IGluaXQgJiYKKwkJCWdpdCBjb25maWcgZ2l0LXA0LnVzZUNsaWVudFNwZWMgdHJ1ZSAmJgorCQkJZ2l0IHA0IHN5bmMgLy9kZXBvdC8uLi4gJiYKKwkJCWdpdCBjaGVja291dCAtYiBtYXN0ZXIgcDQvbWFzdGVyICYmCisJCQl0ZXN0X3BhdGhfaXNfZmlsZSBidXMvZGlyL2Y0ICYmCisJCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlMQorCQkpCisJKQorJwogCi0JIyBzYW1lIHRoaW5nIGFnYWluLCB0aGlzIHRpbWUgd2l0aCB2YXJpYWJsZSBpbnN0ZWFkIG9mIG9wdGlvbgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibWl0IHdvcmtzIHdpdGggbm8gcDQvbWFzdGVyJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tYnJhbmNoPWIxIC8vZGVwb3RAMSwyIC0tZGVzdGluYXRpb249IiRnaXQiICYmCiAJKAogCQljZCAiJGdpdCIgJiYKLQkJZ2l0IGluaXQgJiYKLQkJZ2l0IGNvbmZpZyBnaXQtcDQudXNlQ2xpZW50U3BlYyB0cnVlICYmCi0JCWdpdCBwNCBzeW5jIC8vZGVwb3QvLi4uICYmCi0JCWdpdCBjaGVja291dCAtYiBtYXN0ZXIgcDQvbWFzdGVyICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGJ1cy9kaXIvZjQgJiYKLQkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZmlsZTEKKwkJdGVzdF9jb21taXQgc3VibWl0LTEtYnJhbmNoICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKwkJZ2l0IHA0IHN1Ym1pdCAtLWJyYW5jaD1iMQorCSkKKycKKworIyBUaGUgc3luYy9yZWJhc2UgcGFydCBwb3N0LXN1Ym1pdCB3aWxsIGVuZ2FnZSBkZXRlY3QtYnJhbmNoZXMKKyMgbWFjaGluZXJ5IHdoaWNoIHdpbGwgbm90IGRvIGFueXRoaW5nIGluIHRoaXMgcGFydGljdWxhciB0ZXN0LgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibWl0IHdvcmtzIHdpdGggdHdvIGJyYW5jaGVzJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJZ2l0IHA0IGNsb25lIC0tYnJhbmNoPWIxIC8vZGVwb3RAMSwyIC0tZGVzdGluYXRpb249IiRnaXQiICYmCisJKAorCQljZCAiJGdpdCIgJiYKKwkJZ2l0IHA0IHN5bmMgLS1icmFuY2g9YjIgLy9kZXBvdEAxLDMgJiYKKwkJdGVzdF9jb21taXQgc3VibWl0LTItYnJhbmNoZXMgJiYKKwkJZ2l0IGNvbmZpZyBnaXQtcDQuc2tpcFN1Ym1pdEVkaXQgdHJ1ZSAmJgorCQlnaXQgcDQgc3VibWl0CiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q5ODA3LWdpdC1wNC1zdWJtaXQuc2ggYi90L3Q5ODA3LWdpdC1wNC1zdWJtaXQuc2gKaW5kZXggMGFlMDQ4Zi4uMWZiN2JjNyAxMDA3NTUKLS0tIGEvdC90OTgwNy1naXQtcDQtc3VibWl0LnNoCisrKyBiL3QvdDk4MDctZ2l0LXA0LXN1Ym1pdC5zaApAQCAtMTcsNiArMTcsMTYgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ2lzX2NsaV9maWxlX3dyaXRlYWJsZSBmdW5jdGlvbicgJworCSgKKwkJY2QgIiRjbGkiICYmCisJCWVjaG8gYSA+YSAmJgorCQlpc19jbGlfZmlsZV93cml0ZWFibGUgYSAmJgorCQkhIGlzX2NsaV9maWxlX3dyaXRlYWJsZSBmaWxlMSAmJgorCQlybSBhCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtaXQgd2l0aCBubyBjbGllbnQgZGlyJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCiAJZ2l0IHA0IGNsb25lIC0tZGVzdD0iJGdpdCIgLy9kZXBvdCAmJgpAQCAtMjAwLDcgKzIxMCw3IEBACiAJKAogCQljZCAiJGNsaSIgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZmlsZTUudGEgJiYKLQkJdGVzdCAhIC13IGZpbGU1LnRhCisJCSEgaXNfY2xpX2ZpbGVfd3JpdGVhYmxlIGZpbGU1LnRhCiAJKQogJwogCkBAIC0yMTksNyArMjI5LDcgQEAKIAkJY2QgIiRjbGkiICYmCiAJCXRlc3RfcGF0aF9pc19taXNzaW5nIGZpbGU2LnQgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZmlsZTYudGEgJiYKLQkJdGVzdCAhIC13IGZpbGU2LnRhCisJCSEgaXNfY2xpX2ZpbGVfd3JpdGVhYmxlIGZpbGU2LnRhCiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q5ODA4LWdpdC1wNC1jaGRpci5zaCBiL3QvdDk4MDgtZ2l0LXA0LWNoZGlyLnNoCmluZGV4IGRjOTJlNjAuLjExZDJiNTEgMTAwNzU1Ci0tLSBhL3QvdDk4MDgtZ2l0LXA0LWNoZGlyLnNoCisrKyBiL3QvdDk4MDgtZ2l0LXA0LWNoZGlyLnNoCkBAIC00Miw2ICs0Miw0NyBAQAogCSkKICcKIAorIyBDb21tb24gc2V0dXAgdXNpbmcgLnA0Y29uZmlnIHRvIHNldCBQNENMSUVOVCBhbmQgUDRQT1JUIGJyZWFrcworIyBpZiBjbG9uZSBkZXN0aW5hdGlvbiBpcyByZWxhdGl2ZS4gIE1ha2Ugc3VyZSB0aGF0IGNoZGlyKCkgZXhwYW5kcworIyB0aGUgcmVsYXRpdmUgcGF0aCBpbiAtLWRlc3QgdG8gYWJzb2x1dGUuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwNCBjbGllbnQgcm9vdCB3b3VsZCBiZSByZWxhdGl2ZSBkdWUgdG8gY2xvbmUgLS1kZXN0JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQllY2hvIFA0UE9SVD0kUDRQT1JUID5naXQvLnA0Y29uZmlnICYmCisJCVA0Q09ORklHPS5wNGNvbmZpZyAmJgorCQlleHBvcnQgUDRDT05GSUcgJiYKKwkJdW5zZXQgUDRQT1JUICYmCisJCWdpdCBwNCBjbG9uZSAtLWRlc3Q9ImdpdCIgLy9kZXBvdAorCSkKKycKKworIyBXaGVuIHRoZSBwNCBjbGllbnQgUm9vdCBpcyBhIHN5bWxpbmssIG1ha2Ugc3VyZSBjaGRpcigpIGRvZXMgbm90IHVzZQorIyBnZXRjd2QoKSB0byBjb252ZXJ0IGl0IHRvIGEgcGh5c2ljYWwgcGF0aC4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3A0IGNsaWVudCByb290IHN5bWxpbmsgc2hvdWxkIHN0YXkgc3ltYm9saWMnICcKKwlwaHlzaWNhbD0iJFRSQVNIX0RJUkVDVE9SWS9waHlzaWNhbCIgJiYKKwlzeW1ib2xpYz0iJFRSQVNIX0RJUkVDVE9SWS9zeW1ib2xpYyIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBcIiRwaHlzaWNhbFwiIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gXCIkc3ltYm9saWNcIiIgJiYKKwlta2RpciAtcCAiJHBoeXNpY2FsIiAmJgorCWxuIC1zICIkcGh5c2ljYWwiICIkc3ltYm9saWMiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkIGNsZWFudXBfZ2l0ICYmCisJKAorCQlQNENMSUVOVD1jbGllbnQtc3ltICYmCisJCXA0IGNsaWVudCAtaSA8PC1FT0YgJiYKKwkJQ2xpZW50OiAkUDRDTElFTlQKKwkJRGVzY3JpcHRpb246ICRQNENMSUVOVAorCQlSb290OiAkc3ltYm9saWMKKwkJTGluZUVuZDogdW5peAorCQlWaWV3OiAvL2RlcG90Ly4uLiAvLyRQNENMSUVOVC8uLi4KKwkJRU9GCisJCWdpdCBwNCBjbG9uZSAtLWRlc3Q9IiRnaXQiIC8vZGVwb3QgJiYKKwkJY2QgIiRnaXQiICYmCisJCXRlc3RfY29tbWl0IGZpbGUyICYmCisJCWdpdCBjb25maWcgZ2l0LXA0LnNraXBTdWJtaXRFZGl0IHRydWUgJiYKKwkJZ2l0IHA0IHN1Ym1pdAorCSkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAna2lsbCBwNGQnICcKIAlraWxsX3A0ZAogJwpkaWZmIC0tZ2l0IGEvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2ggYi90L3Q5ODA5LWdpdC1wNC1jbGllbnQtdmlldy5zaAppbmRleCAyODFiZTI5Li43N2Y2MzQ5IDEwMDc1NQotLS0gYS90L3Q5ODA5LWdpdC1wNC1jbGllbnQtdmlldy5zaAorKysgYi90L3Q5ODA5LWdpdC1wNC1jbGllbnQtdmlldy5zaApAQCAtMTk2LDcgKzE5Niw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ292ZXJsYXkgd2lsZGNhcmQnICcKIAljbGllbnRfdmlldyAiLy9kZXBvdC9kaXIxLy4uLiAvL2NsaWVudC9jbGkvLi4uIiBcCi0JCSAgICAiKy8vZGVwb3QvZGlyMi8uLi4gLy9jbGllbnQvY2xpLy4uLlxuIiAmJgorCQkgICAgIisvL2RlcG90L2RpcjIvLi4uIC8vY2xpZW50L2NsaS8uLi4iICYmCiAJZmlsZXM9ImNsaS9maWxlMTEgY2xpL2ZpbGUxMiBjbGkvZmlsZTIxIGNsaS9maWxlMjIiICYmCiAJY2xpZW50X3ZlcmlmeSAkZmlsZXMgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgY2xlYW51cF9naXQgJiYKQEAgLTMzMyw3ICszMzMsNyBAQAogCSgKIAkJY2QgIiRjbGkiICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGRpcjEvZmlsZTExYSAmJgotCQl0ZXN0ICEgLXcgZGlyMS9maWxlMTFhCisJCSEgaXNfY2xpX2ZpbGVfd3JpdGVhYmxlIGRpcjEvZmlsZTExYQogCSkKICcKIApAQCAtMzUzLDcgKzM1Myw3IEBACiAJCWNkICIkY2xpIiAmJgogCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBkaXIxL2ZpbGUxMyAmJgogCQl0ZXN0X3BhdGhfaXNfZmlsZSBkaXIxL2ZpbGUxM2EgJiYKLQkJdGVzdCAhIC13IGRpcjEvZmlsZTEzYQorCQkhIGlzX2NsaV9maWxlX3dyaXRlYWJsZSBkaXIxL2ZpbGUxM2EKIAkpCiAnCiAKQEAgLTM2NSw3ICszNjUsMTAgQEAKIAkoCiAJCWNkICIkZ2l0IiAmJgogCQllY2hvIGdpdC13aWxkLWhhc2ggPmRpcjEvZ2l0LXdpbGQjaGFzaCAmJgotCQllY2hvIGdpdC13aWxkLXN0YXIgPmRpcjEvZ2l0LXdpbGRcKnN0YXIgJiYKKwkJaWYgdGVzdF9oYXZlX3ByZXJlcSBOT1RfTUlOR1cgTk9UX0NZR1dJTgorCQl0aGVuCisJCQllY2hvIGdpdC13aWxkLXN0YXIgPmRpcjEvZ2l0LXdpbGRcKnN0YXIKKwkJZmkgJiYKIAkJZWNobyBnaXQtd2lsZC1hdCA+ZGlyMS9naXQtd2lsZEBhdCAmJgogCQllY2hvIGdpdC13aWxkLXBlcmNlbnQgPmRpcjEvZ2l0LXdpbGQlcGVyY2VudCAmJgogCQlnaXQgYWRkIGRpcjEvZ2l0LXdpbGQqICYmCkBAIC0zNzYsNyArMzc5LDEwIEBACiAJKAogCQljZCAiJGNsaSIgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZGlyMS9naXQtd2lsZCNoYXNoICYmCi0JCXRlc3RfcGF0aF9pc19maWxlIGRpcjEvZ2l0LXdpbGRcKnN0YXIgJiYKKwkJaWYgdGVzdF9oYXZlX3ByZXJlcSBOT1RfTUlOR1cgTk9UX0NZR1dJTgorCQl0aGVuCisJCQl0ZXN0X3BhdGhfaXNfZmlsZSBkaXIxL2dpdC13aWxkXCpzdGFyCisJCWZpICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGRpcjEvZ2l0LXdpbGRAYXQgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZGlyMS9naXQtd2lsZCVwZXJjZW50CiAJKSAmJgpkaWZmIC0tZ2l0IGEvdC90OTgxMi1naXQtcDQtd2lsZGNhcmRzLnNoIGIvdC90OTgxMi1naXQtcDQtd2lsZGNhcmRzLnNoCmluZGV4IDE0M2Q0MTMuLjY3NjMzMjUgMTAwNzU1Ci0tLSBhL3QvdDk4MTItZ2l0LXA0LXdpbGRjYXJkcy5zaAorKysgYi90L3Q5ODEyLWdpdC1wNC13aWxkY2FyZHMuc2gKQEAgLTE0LDcgKzE0LDEwIEBACiAJCXByaW50ZiAiZmlsZTJcbmhhc1xuc29tZVxucmFuZG9tXG50ZXh0XG4iID5maWxlMiAmJgogCQlwNCBhZGQgZmlsZTIgJiYKIAkJZWNobyBmaWxlLXdpbGQtaGFzaCA+ZmlsZS13aWxkI2hhc2ggJiYKLQkJZWNobyBmaWxlLXdpbGQtc3RhciA+ZmlsZS13aWxkXCpzdGFyICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJZWNobyBmaWxlLXdpbGQtc3RhciA+ZmlsZS13aWxkXCpzdGFyCisJCWZpICYmCiAJCWVjaG8gZmlsZS13aWxkLWF0ID5maWxlLXdpbGRAYXQgJiYKIAkJZWNobyBmaWxlLXdpbGQtcGVyY2VudCA+ZmlsZS13aWxkJXBlcmNlbnQgJiYKIAkJcDQgYWRkIC1mIGZpbGUtd2lsZCogJiYKQEAgLTI4LDcgKzMxLDEwIEBACiAJKAogCQljZCAiJGdpdCIgJiYKIAkJdGVzdCAtZiBmaWxlLXdpbGQjaGFzaCAmJgotCQl0ZXN0IC1mIGZpbGUtd2lsZFwqc3RhciAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCXRlc3QgLWYgZmlsZS13aWxkXCpzdGFyCisJCWZpICYmCiAJCXRlc3QgLWYgZmlsZS13aWxkQGF0ICYmCiAJCXRlc3QgLWYgZmlsZS13aWxkJXBlcmNlbnQKIAkpCkBAIC00MCw3ICs0NiwxMCBAQAogCSgKIAkJY2QgIiRnaXQiICYmCiAJCWVjaG8gZ2l0LXdpbGQtaGFzaCA+Z2l0LXdpbGQjaGFzaCAmJgotCQllY2hvIGdpdC13aWxkLXN0YXIgPmdpdC13aWxkXCpzdGFyICYmCisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX01JTkdXIE5PVF9DWUdXSU4KKwkJdGhlbgorCQkJZWNobyBnaXQtd2lsZC1zdGFyID5naXQtd2lsZFwqc3RhcgorCQlmaSAmJgogCQllY2hvIGdpdC13aWxkLWF0ID5naXQtd2lsZEBhdCAmJgogCQllY2hvIGdpdC13aWxkLXBlcmNlbnQgPmdpdC13aWxkJXBlcmNlbnQgJiYKIAkJZ2l0IGFkZCBnaXQtd2lsZCogJiYKQEAgLTUxLDcgKzYwLDEwIEBACiAJKAogCQljZCAiJGNsaSIgJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgZ2l0LXdpbGQjaGFzaCAmJgotCQl0ZXN0X3BhdGhfaXNfZmlsZSBnaXQtd2lsZFwqc3RhciAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkXCpzdGFyCisJCWZpICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkQGF0ICYmCiAJCXRlc3RfcGF0aF9pc19maWxlIGdpdC13aWxkJXBlcmNlbnQKIAkpCkBAIC02Myw3ICs3NSwxMCBAQAogCSgKIAkJY2QgIiRnaXQiICYmCiAJCWVjaG8gbmV3LWxpbmUgPj5naXQtd2lsZCNoYXNoICYmCi0JCWVjaG8gbmV3LWxpbmUgPj5naXQtd2lsZFwqc3RhciAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCWVjaG8gbmV3LWxpbmUgPj5naXQtd2lsZFwqc3RhcgorCQlmaSAmJgogCQllY2hvIG5ldy1saW5lID4+Z2l0LXdpbGRAYXQgJiYKIAkJZWNobyBuZXctbGluZSA+PmdpdC13aWxkJXBlcmNlbnQgJiYKIAkJZ2l0IGFkZCBnaXQtd2lsZCogJiYKQEAgLTc0LDcgKzg5LDEwIEBACiAJKAogCQljZCAiJGNsaSIgJiYKIAkJdGVzdF9saW5lX2NvdW50ID0gMiBnaXQtd2lsZCNoYXNoICYmCi0JCXRlc3RfbGluZV9jb3VudCA9IDIgZ2l0LXdpbGRcKnN0YXIgJiYKKwkJaWYgdGVzdF9oYXZlX3ByZXJlcSBOT1RfTUlOR1cgTk9UX0NZR1dJTgorCQl0aGVuCisJCQl0ZXN0X2xpbmVfY291bnQgPSAyIGdpdC13aWxkXCpzdGFyCisJCWZpICYmCiAJCXRlc3RfbGluZV9jb3VudCA9IDIgZ2l0LXdpbGRAYXQgJiYKIAkJdGVzdF9saW5lX2NvdW50ID0gMiBnaXQtd2lsZCVwZXJjZW50CiAJKQpAQCAtODcsNyArMTA1LDcgQEAKIAkJY2QgIiRnaXQiICYmCiAJCWNwIGZpbGUyIGdpdC13aWxkLWNwI2hhc2ggJiYKIAkJZ2l0IGFkZCBnaXQtd2lsZC1jcCNoYXNoICYmCi0JCWNwIGdpdC13aWxkXCpzdGFyIGZpbGUtd2lsZC0zICYmCisJCWNwIGdpdC13aWxkI2hhc2ggZmlsZS13aWxkLTMgJiYKIAkJZ2l0IGFkZCBmaWxlLXdpbGQtMyAmJgogCQlnaXQgY29tbWl0IC1tICJ3aWxkY2FyZCBjb3BpZXMiICYmCiAJCWdpdCBjb25maWcgZ2l0LXA0LmRldGVjdENvcGllcyB0cnVlICYmCkBAIC0xMzQsNyArMTUyLDEwIEBACiAJKAogCQljZCAiJGNsaSIgJiYKIAkJdGVzdF9wYXRoX2lzX21pc3NpbmcgZ2l0LXdpbGQjaGFzaCAmJgotCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBnaXQtd2lsZFwqc3RhciAmJgorCQlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PVF9NSU5HVyBOT1RfQ1lHV0lOCisJCXRoZW4KKwkJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkXCpzdGFyCisJCWZpICYmCiAJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkQGF0ICYmCiAJCXRlc3RfcGF0aF9pc19taXNzaW5nIGdpdC13aWxkJXBlcmNlbnQKIAkpCmRpZmYgLS1naXQgYS90L3Q5ODE1LWdpdC1wNC1zdWJtaXQtZmFpbC5zaCBiL3QvdDk4MTUtZ2l0LXA0LXN1Ym1pdC1mYWlsLnNoCmluZGV4IGQyYjdiM2QuLjEyNDNkOTYgMTAwNzU1Ci0tLSBhL3QvdDk4MTUtZ2l0LXA0LXN1Ym1pdC1mYWlsLnNoCisrKyBiL3QvdDk4MTUtZ2l0LXA0LXN1Ym1pdC1mYWlsLnNoCkBAIC00MDUsOCArNDA1LDggQEAKIAlnaXQgcDQgY2xvbmUgLS1kZXN0PSIkZ2l0IiAvL2RlcG90ICYmCiAJKAogCQljZCAiJGdpdCIgJiYKLQkJY2htb2QgdSt4IHRleHQgJiYKLQkJY2htb2QgdS14IHRleHQreCAmJgorCQl0ZXN0X2NobW9kICt4IHRleHQgJiYKKwkJdGVzdF9jaG1vZCAteCB0ZXh0K3ggJiYKIAkJZ2l0IGFkZCB0ZXh0IHRleHQreCAmJgogCQlnaXQgY29tbWl0IC1tICJjaG1vZCB0ZXh0cyIgJiYKIAkJZWNobyBuIHwgdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwNCBzdWJtaXQKQEAgLTQxNSwxMCArNDE1LDEzIEBACiAJCWNkICIkY2xpIiAmJgogCQl0ZXN0X3BhdGhfaXNfZmlsZSB0ZXh0ICYmCiAJCSEgcDQgZnN0YXQgLVQgYWN0aW9uIHRleHQgJiYKLQkJc3RhdCAtLWZvcm1hdD0lQSB0ZXh0IHwgZWdyZXAgXi1yLS0gJiYKIAkJdGVzdF9wYXRoX2lzX2ZpbGUgdGV4dCt4ICYmCiAJCSEgcDQgZnN0YXQgLVQgYWN0aW9uIHRleHQreCAmJgotCQlzdGF0IC0tZm9ybWF0PSVBIHRleHQreCB8IGVncmVwIF4tci14CisJCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9UX0NZR1dJTgorCQl0aGVuCisJCQlzdGF0IC0tZm9ybWF0PSVBIHRleHQgfCBlZ3JlcCBeLXItLSAmJgorCQkJc3RhdCAtLWZvcm1hdD0lQSB0ZXh0K3ggfCBlZ3JlcCBeLXIteAorCQlmaQogCSkKICcKIApkaWZmIC0tZ2l0IGEvdC90OTkwMi1jb21wbGV0aW9uLnNoIGIvdC90OTkwMi1jb21wbGV0aW9uLnNoCmluZGV4IGFkYzEzNzIuLjgxYTE2NTcgMTAwNzU1Ci0tLSBhL3QvdDk5MDItY29tcGxldGlvbi5zaAorKysgYi90L3Q5OTAyLWNvbXBsZXRpb24uc2gKQEAgLTY5LDYgKzY5LDcgQEAKIAlsb2NhbCAtYSBDT01QUkVQTFkgX3dvcmRzCiAJbG9jYWwgX2N3b3JkCiAJX3dvcmRzPSggJDEgKQorCXRlc3QgIiR7MTogLTF9IiA9PSAnICcgJiYgX3dvcmRzKz0oJycpCiAJKCggX2N3b3JkID0gJHsjX3dvcmRzW0BdfSAtIDEgKSkKIAlfX2dpdF93cmFwX19naXRfbWFpbiAmJiBwcmludF9jb21wCiB9CkBAIC0xMDQsNiArMTA1LDIzIEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgb3V0CiB9CiAKKyMgVGVzdCBfX2dpdGNvbXBfbmwKKyMgQXJndW1lbnRzIGFyZToKKyMgMTogY3VycmVudCB3b3JkIChjdXIpCisjIC06IHRoZSByZXN0IGFyZSBwYXNzZWQgdG8gX19naXRjb21wX25sCit0ZXN0X2dpdGNvbXBfbmwgKCkKK3sKKwlsb2NhbCAtYSBDT01QUkVQTFkgJiYKKwlzZWQgLWUgJ3MvWiQvLycgPmV4cGVjdGVkICYmCisJY3VyPSIkMSIgJiYKKwlzaGlmdCAmJgorCV9fZ2l0Y29tcF9ubCAiJEAiICYmCisJcHJpbnRfY29tcCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIG91dAorfQorCitpbnZhbGlkX3ZhcmlhYmxlX25hbWU9JyR7Zm9vLmJhcn0nCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcCAtIHRyYWlsaW5nIHNwYWNlIC0gb3B0aW9ucycgJwogCXRlc3RfZ2l0Y29tcCAiLS1yZSIgIi0tZHJ5LXJ1biAtLXJldXNlLW1lc3NhZ2U9IC0tcmVlZGl0LW1lc3NhZ2U9CiAJCS0tcmVzZXQtYXV0aG9yIiA8PC1FT0YKQEAgLTE0Nyw4ICsxNjUsNTEgQEAKIAlFT0YKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRjb21wIC0gZG9lc250IGZhaWwgYmVjYXVzZSBvZiBpbnZhbGlkIHZhcmlhYmxlIG5hbWUnICcKKwlfX2dpdGNvbXAgIiRpbnZhbGlkX3ZhcmlhYmxlX25hbWUiCisnCisKK3JlYWQgLXIgLWQgIiIgcmVmcyA8PC1cRU9GCittYWludAorbWFzdGVyCituZXh0CitwdQorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcF9ubCAtIHRyYWlsaW5nIHNwYWNlJyAnCisJdGVzdF9naXRjb21wX25sICJtIiAiJHJlZnMiIDw8LUVPRgorCW1haW50IFoKKwltYXN0ZXIgWgorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGNvbXBfbmwgLSBwcmVmaXgnICcKKwl0ZXN0X2dpdGNvbXBfbmwgIi0tZml4dXA9bSIgIiRyZWZzIiAiLS1maXh1cD0iICJtIiA8PC1FT0YKKwktLWZpeHVwPW1haW50IFoKKwktLWZpeHVwPW1hc3RlciBaCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcF9ubCAtIHN1ZmZpeCcgJworCXRlc3RfZ2l0Y29tcF9ubCAiYnJhbmNoLm1hIiAiJHJlZnMiICJicmFuY2guIiAibWEiICIuIiA8PC1cRU9GCisJYnJhbmNoLm1haW50LloKKwlicmFuY2gubWFzdGVyLloKKwlFT0YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRjb21wX25sIC0gbm8gc3VmZml4JyAnCisJdGVzdF9naXRjb21wX25sICJtYSIgIiRyZWZzIiAiIiAibWEiICIiIDw8LVxFT0YKKwltYWludFoKKwltYXN0ZXJaCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0Y29tcF9ubCAtIGRvZXNudCBmYWlsIGJlY2F1c2Ugb2YgaW52YWxpZCB2YXJpYWJsZSBuYW1lJyAnCisJX19naXRjb21wX25sICIkaW52YWxpZF92YXJpYWJsZV9uYW1lIgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdiYXNpYycgJwotCXJ1bl9jb21wbGV0aW9uICJnaXQgXCJcIiIgJiYKKwlydW5fY29tcGxldGlvbiAiZ2l0ICIgJiYKIAkjIGJ1aWx0LWluCiAJZ3JlcCAtcSAiXmFkZCBcJCIgb3V0ICYmCiAJIyBzY3JpcHQKQEAgLTI3MSw3ICszMzIsNyBAQAogCUVPRgogJwogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdjb21wbGV0ZSB0cmVlIGZpbGVuYW1lIHdpdGggbWV0YWNoYXJhY3RlcnMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbXBsZXRlIHRyZWUgZmlsZW5hbWUgd2l0aCBtZXRhY2hhcmFjdGVycycgJwogCWVjaG8gY29udGVudCA+Im5hbWUgd2l0aCBcJHttZXRhfSIgJiYKIAlnaXQgYWRkIC4gJiYKIAlnaXQgY29tbWl0IC1tIG1ldGEgJiYKQEAgLTI4Niw0ICszNDcsODEgQEAKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCBzZW5kLWVtYWlsIG1hIiAibWFzdGVyICIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tcGxldGUgZmlsZXMnICcKKwlnaXQgaW5pdCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJZWNobyAiZXhwZWN0ZWQiID4gLmdpdGlnbm9yZSAmJgorCWVjaG8gIm91dCIgPj4gLmdpdGlnbm9yZSAmJgorCisJZ2l0IGFkZCAuZ2l0aWdub3JlICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgY29tbWl0ICIgIi5naXRpZ25vcmUiICYmCisKKwlnaXQgY29tbWl0IC1tIGlnbm9yZSAmJgorCisJdG91Y2ggbmV3ICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgYWRkICIgIm5ldyIgJiYKKworCWdpdCBhZGQgbmV3ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBuZXcgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBhZGQgIiAiIiAmJgorCisJZ2l0IG12IG5ldyBtb2RpZmllZCAmJgorCWVjaG8gbW9kaWZ5ID4gbW9kaWZpZWQgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBhZGQgIiAibW9kaWZpZWQiICYmCisKKwl0b3VjaCB1bnRyYWNrZWQgJiYKKworCTogVE9ETyAuZ2l0aWdub3JlIHNob3VsZCBub3QgYmUgaGVyZSAmJgorCXRlc3RfY29tcGxldGlvbiAiZ2l0IHJtICIgPDwtXEVPRiAmJgorCS5naXRpZ25vcmUKKwltb2RpZmllZAorCUVPRgorCisJdGVzdF9jb21wbGV0aW9uICJnaXQgY2xlYW4gIiAidW50cmFja2VkIiAmJgorCisJOiBUT0RPIC5naXRpZ25vcmUgc2hvdWxkIG5vdCBiZSBoZXJlICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgbXYgIiA8PC1cRU9GICYmCisJLmdpdGlnbm9yZQorCW1vZGlmaWVkCisJRU9GCisKKwlta2RpciBkaXIgJiYKKwl0b3VjaCBkaXIvZmlsZS1pbi1kaXIgJiYKKwlnaXQgYWRkIGRpci9maWxlLWluLWRpciAmJgorCWdpdCBjb21taXQgLW0gZGlyICYmCisKKwlta2RpciB1bnRyYWNrZWQtZGlyICYmCisKKwk6IFRPRE8gLmdpdGlnbm9yZSBzaG91bGQgbm90IGJlIGhlcmUgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBtdiBtb2RpZmllZCAiIDw8LVxFT0YgJiYKKwkuZ2l0aWdub3JlCisJZGlyCisJbW9kaWZpZWQKKwl1bnRyYWNrZWQKKwl1bnRyYWNrZWQtZGlyCisJRU9GCisKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBjb21taXQgIiAibW9kaWZpZWQiICYmCisKKwk6IFRPRE8gLmdpdGlnbm9yZSBzaG91bGQgbm90IGJlIGhlcmUgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBscy1maWxlcyAiIDw8LVxFT0YKKwkuZ2l0aWdub3JlCisJZGlyCisJbW9kaWZpZWQKKwlFT0YKKworCXRvdWNoIG1vbWlmaWVkICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgYWRkIG1vbSIgIm1vbWlmaWVkIgorJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdjb21wbGV0ZSB3aXRoIHRpbGRlIGV4cGFuc2lvbicgJworCWdpdCBpbml0IHRtcCAmJiBjZCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisKKwl0b3VjaCB+L3RtcC9maWxlICYmCisKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBhZGQgfi90bXAvIiAifi90bXAvZmlsZSIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5OTAzLWJhc2gtcHJvbXB0LnNoIGIvdC90OTkwMy1iYXNoLXByb21wdC5zaAppbmRleCBmMTdjMWY4Li4xNTUyMWNjIDEwMDc1NQotLS0gYS90L3Q5OTAzLWJhc2gtcHJvbXB0LnNoCisrKyBiL3QvdDk5MDMtYmFzaC1wcm9tcHQuc2gKQEAgLTI4LDYgKzI4LDEwIEBACiAJZ2l0IGNoZWNrb3V0IC1iIGIyIG1hc3RlciAmJgogCWVjaG8gMCA+IGZpbGUgJiYKIAlnaXQgY29tbWl0IC1tICJzZWNvbmQgYjIiIGZpbGUgJiYKKwllY2hvIDAwID4gZmlsZSAmJgorCWdpdCBjb21taXQgLW0gImFub3RoZXIgYjIiIGZpbGUgJiYKKwllY2hvIDAwMCA+IGZpbGUgJiYKKwlnaXQgY29tbWl0IC1tICJ5ZXQgYW5vdGhlciBiMiIgZmlsZSAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKICcKIApAQCAtNTksNyArNjMsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSAuZ2l0IGRpcmVjdG9yeSBpbiBwYXJlbnQnICcKLQllY2hvICIkVFJBU0hfRElSRUNUT1JZLy5naXQiID4gZXhwZWN0ZWQgJiYKKwllY2hvICIkKHB3ZCAtUCkvLmdpdCIgPiBleHBlY3RlZCAmJgogCSgKIAkJY2Qgc3ViZGlyL3N1YnN1YmRpciAmJgogCQlfX2dpdGRpciA+ICIkYWN0dWFsIgpAQCAtNzcsNyArODEsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBwYXJlbnQgaXMgYSAuZ2l0IGRpcmVjdG9yeScgJwotCWVjaG8gIiRUUkFTSF9ESVJFQ1RPUlkvLmdpdCIgPiBleHBlY3RlZCAmJgorCWVjaG8gIiQocHdkIC1QKS8uZ2l0IiA+IGV4cGVjdGVkICYmCiAJKAogCQljZCAuZ2l0L3JlZnMvaGVhZHMgJiYKIAkJX19naXRkaXIgPiAiJGFjdHVhbCIKQEAgLTExNSw3ICsxMTksNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBnaXRmaWxlIGluIGN3ZCcgJwotCWVjaG8gIiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKKwllY2hvICIkKHB3ZCAtUCkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKIAllY2hvICJnaXRkaXI6ICRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID4gc3ViZGlyLy5naXQgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIHN1YmRpci8uZ2l0IiAmJgogCSgKQEAgLTEyNiw3ICsxMzAsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBnaXRmaWxlIGluIHBhcmVudCcgJwotCWVjaG8gIiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKKwllY2hvICIkKHB3ZCAtUCkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKIAllY2hvICJnaXRkaXI6ICRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID4gc3ViZGlyLy5naXQgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIHN1YmRpci8uZ2l0IiAmJgogCSgKQEAgLTEzNyw3ICsxNDEsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdnaXRkaXIgLSByZXN1bHRpbmcgcGF0aCBhdm9pZHMgc3ltbGlua3MnICcKLQllY2hvICIkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiA+IGV4cGVjdGVkICYmCisJZWNobyAiJChwd2QgLVApL290aGVycmVwby8uZ2l0IiA+IGV4cGVjdGVkICYmCiAJbWtkaXIgb3RoZXJyZXBvL2RpciAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIG90aGVycmVwby9kaXIiICYmCiAJbG4gLXMgb3RoZXJyZXBvL2RpciBsaW5rICYmCkBAIC0yNDMsMTAgKzI0NywxMiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBpbnRlcmFjdGl2ZSByZWJhc2UnICcKLQlwcmludGYgIiAoYjF8UkVCQVNFLWkpIiA+IGV4cGVjdGVkCisJcHJpbnRmICIgKGIxfFJFQkFTRS1pIDIvMykiID4gZXhwZWN0ZWQKIAllY2hvICIjISRTSEVMTF9QQVRIIiA+ZmFrZV9lZGl0b3Iuc2ggJiYKIAljYXQgPj5mYWtlX2VkaXRvci5zaCA8PFxFT0YgJiYKLWVjaG8gImVkaXQgJChnaXQgbG9nIC0xIC0tZm9ybWF0PSIlaCIpIiA+ICIkMSIKK2VjaG8gImV4ZWMgZWNobyIgPiAiJDEiCitlY2hvICJlZGl0ICQoZ2l0IGxvZyAtMSAtLWZvcm1hdD0iJWgiKSIgPj4gIiQxIgorZWNobyAiZXhlYyBlY2hvIiA+PiAiJDEiCiBFT0YKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIGZha2VfZWRpdG9yLnNoIiAmJgogCWNobW9kIGEreCBmYWtlX2VkaXRvci5zaCAmJgpAQCAtMjYwLDcgKzI2Niw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHJlYmFzZSBtZXJnZScgJwotCXByaW50ZiAiIChiMnxSRUJBU0UtbSkiID4gZXhwZWN0ZWQgJiYKKwlwcmludGYgIiAoYjJ8UkVCQVNFLW0gMS8zKSIgPiBleHBlY3RlZCAmJgogCWdpdCBjaGVja291dCBiMiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNoZWNrb3V0IG1hc3RlciIgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC0tbWVyZ2UgYjEgYjIgJiYKQEAgLTI3MCw3ICsyNzYsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSByZWJhc2UnICcKLQlwcmludGYgIiAoKHQyKXxSRUJBU0UpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKGIyfFJFQkFTRSAxLzMpIiA+IGV4cGVjdGVkICYmCiAJZ2l0IGNoZWNrb3V0IGIyICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgYjEgYjIgJiYKQEAgLTM2MCwxMiArMzY2LDQ4IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBkaXNhYmxlZCBieSBjb25maWcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBzaGVsbCB2YXJpYWJsZSB1bnNldCB3aXRoIGNvbmZpZyBkaXNhYmxlZCcgJwogCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCiAJZWNobyAiZGlydHkiID4gZmlsZSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIGZhbHNlICYmCiAJKAorCQlzYW5lX3Vuc2V0IEdJVF9QUzFfU0hPV0RJUlRZU1RBVEUgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgdW5zZXQgd2l0aCBjb25maWcgZW5hYmxlZCcgJworCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJZWNobyAiZGlydHkiID4gZmlsZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIHRydWUgJiYKKwkoCisJCXNhbmVfdW5zZXQgR0lUX1BTMV9TSE9XRElSVFlTVEFURSAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBzaGVsbCB2YXJpYWJsZSBzZXQgd2l0aCBjb25maWcgZGlzYWJsZWQnICcKKwlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJdGVzdF9jb25maWcgYmFzaC5zaG93RGlydHlTdGF0ZSBmYWxzZSAmJgorCSgKKwkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCisJCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHNldCB3aXRoIGNvbmZpZyBlbmFibGVkJyAnCisJcHJpbnRmICIgKG1hc3RlciAqKSIgPiBleHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJdGVzdF9jb25maWcgYmFzaC5zaG93RGlydHlTdGF0ZSB0cnVlICYmCisJKAogCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKIAkJX19naXRfcHMxID4gIiRhY3R1YWwiCiAJKSAmJgpAQCAtNDM3LDYgKzQ3OSw0NiBAQAogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHVuc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCisJcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyBmYWxzZSAmJgorCSgKKwkJc2FuZV91bnNldCBHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgdW5zZXQgd2l0aCBjb25maWcgZW5hYmxlZCcgJworCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJdGVzdF9jb25maWcgYmFzaC5zaG93VW50cmFja2VkRmlsZXMgdHJ1ZSAmJgorCSgKKwkJc2FuZV91bnNldCBHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUyAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCisJcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyBmYWxzZSAmJgorCSgKKwkJR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVM9eSAmJgorCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGVuYWJsZWQnICcKKwlwcmludGYgIiAobWFzdGVyICUlKSIgPiBleHBlY3RlZCAmJgorCXRlc3RfY29uZmlnIGJhc2guc2hvd1VudHJhY2tlZEZpbGVzIHRydWUgJiYKKwkoCisJCUdJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTPXkgJiYKKwkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIG5vdCBzaG93biBpbnNpZGUgLmdpdCBkaXJlY3RvcnknICcKIAlwcmludGYgIiAoR0lUX0RJUiEpIiA+IGV4cGVjdGVkICYmCiAJKApkaWZmIC0tZ2l0IGEvdC90ZXN0LWxpYi1mdW5jdGlvbnMuc2ggYi90L3Rlc3QtbGliLWZ1bmN0aW9ucy5zaAppbmRleCBmYTYyZDAxLi44ODI4ZmY3IDEwMDY0NAotLS0gYS90L3Rlc3QtbGliLWZ1bmN0aW9ucy5zaAorKysgYi90L3Rlc3QtbGliLWZ1bmN0aW9ucy5zaApAQCAtOTEsNiArOTEsMTAgQEAKIAl0ciBRICdcMDExJwogfQogCitxel90b190YWJfc3BhY2UgKCkgeworCXRyIFFaICdcMDExXDA0MCcKK30KKwogYXBwZW5kX2NyICgpIHsKIAlzZWQgLWUgJ3MvJC9RLycgfCB0ciBRICdcMDE1JwogfQpAQCAtMTM1LDEyICsxMzksMTIgQEAKIAlmaQogfQogCi0jIENhbGwgdGVzdF9jb21taXQgd2l0aCB0aGUgYXJndW1lbnRzICI8bWVzc2FnZT4gWzxmaWxlPiBbPGNvbnRlbnRzPl1dIgorIyBDYWxsIHRlc3RfY29tbWl0IHdpdGggdGhlIGFyZ3VtZW50cyAiPG1lc3NhZ2U+IFs8ZmlsZT4gWzxjb250ZW50cz4gWzx0YWc+XV1dIgogIwogIyBUaGlzIHdpbGwgY29tbWl0IGEgZmlsZSB3aXRoIHRoZSBnaXZlbiBjb250ZW50cyBhbmQgdGhlIGdpdmVuIGNvbW1pdAotIyBtZXNzYWdlLiAgSXQgd2lsbCBhbHNvIGFkZCBhIHRhZyB3aXRoIDxtZXNzYWdlPiBhcyBuYW1lLgorIyBtZXNzYWdlLCBhbmQgdGFnIHRoZSByZXN1bHRpbmcgY29tbWl0IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lLgogIwotIyBCb3RoIDxmaWxlPiBhbmQgPGNvbnRlbnRzPiBkZWZhdWx0IHRvIDxtZXNzYWdlPi4KKyMgPGZpbGU+LCA8Y29udGVudHM+LCBhbmQgPHRhZz4gYWxsIGRlZmF1bHQgdG8gPG1lc3NhZ2U+LgogCiB0ZXN0X2NvbW1pdCAoKSB7CiAJbm90aWNrPSAmJgpAQCAtMTY4LDcgKzE3Miw3IEBACiAJCXRlc3RfdGljawogCWZpICYmCiAJZ2l0IGNvbW1pdCAkc2lnbm9mZiAtbSAiJDEiICYmCi0JZ2l0IHRhZyAiJDEiCisJZ2l0IHRhZyAiJHs0Oi0kMX0iCiB9CiAKICMgQ2FsbCB0ZXN0X21lcmdlIHdpdGggdGhlIGFyZ3VtZW50cyAiPG1lc3NhZ2U+IDxjb21taXQ+Iiwgd2hlcmUgPGNvbW1pdD4KQEAgLTUzNiw2ICs1NDAsOSBAQAogCWVsaWYgdGVzdCAkZXhpdF9jb2RlID0gMTI3OyB0aGVuCiAJCWVjaG8gPiYyICJ0ZXN0X211c3RfZmFpbDogY29tbWFuZCBub3QgZm91bmQ6ICQqIgogCQlyZXR1cm4gMQorCWVsaWYgdGVzdCAkZXhpdF9jb2RlID0gMTI2OyB0aGVuCisJCWVjaG8gPiYyICJ0ZXN0X211c3RfZmFpbDogdmFsZ3JpbmQgZXJyb3I6ICQqIgorCQlyZXR1cm4gMQogCWZpCiAJcmV0dXJuIDAKIH0KQEAgLTYwMiw2ICs2MDksMTggQEAKIAkkR0lUX1RFU1RfQ01QICIkQCIKIH0KIAorIyBDaGVjayBpZiB0aGUgZmlsZSBleHBlY3RlZCB0byBiZSBlbXB0eSBpcyBpbmRlZWQgZW1wdHksIGFuZCBiYXJmcworIyBvdGhlcndpc2UuCisKK3Rlc3RfbXVzdF9iZV9lbXB0eSAoKSB7CisJaWYgdGVzdCAtcyAiJDEiCisJdGhlbgorCQllY2hvICInJDEnIGlzIG5vdCBlbXB0eSwgaXQgY29udGFpbnM6IgorCQljYXQgIiQxIgorCQlyZXR1cm4gMQorCWZpCit9CisKICMgVGVzdHMgdGhhdCBpdHMgdHdvIHBhcmFtZXRlcnMgcmVmZXIgdG8gdGhlIHNhbWUgcmV2aXNpb24KIHRlc3RfY21wX3JldiAoKSB7CiAJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDEiID5leHBlY3QucmV2ICYmCkBAIC02NzIsMyArNjkxLDIwIEBACiAJCW12IC5naXQvaG9va3MgLmdpdC9ob29rcy1kaXNhYmxlZAogCSkgfHwgZXhpdAogfQorCisjIFRoaXMgZnVuY3Rpb24gaGVscHMgb24gc3ltbGluayBjaGFsbGVuZ2VkIGZpbGUgc3lzdGVtcyB3aGVuIGl0IGlzIG5vdAorIyBpbXBvcnRhbnQgdGhhdCB0aGUgZmlsZSBzeXN0ZW0gZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rLgorIyBVc2UgdGVzdF9sbl9zX2FkZCBpbnN0ZWFkIG9mICJsbiAtcyB4IHkgJiYgZ2l0IGFkZCB5IiB0byBhZGQgYQorIyBzeW1ib2xpYyBsaW5rIGVudHJ5IHkgdG8gdGhlIGluZGV4LgorCit0ZXN0X2xuX3NfYWRkICgpIHsKKwlpZiB0ZXN0X2hhdmVfcHJlcmVxIFNZTUxJTktTCisJdGhlbgorCQlsbiAtcyAiJDEiICIkMiIgJiYKKwkJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCAiJDIiCisJZWxzZQorCQlwcmludGYgJyVzJyAiJDEiID4iJDIiICYmCisJCWxuX3Nfb2JqPSQoZ2l0IGhhc2gtb2JqZWN0IC13ICIkMiIpICYmCisJCWdpdCB1cGRhdGUtaW5kZXggLS1hZGQgLS1jYWNoZWluZm8gMTIwMDAwICRsbl9zX29iaiAiJDIiCisJZmkKK30KZGlmZiAtLWdpdCBhL3QvdGVzdC1saWIuc2ggYi90L3Rlc3QtbGliLnNoCmluZGV4IGVhMWU0YTAuLmVmZjNhNjUgMTAwNjQ0Ci0tLSBhL3QvdGVzdC1saWIuc2gKKysrIGIvdC90ZXN0LWxpYi5zaApAQCAtNTQsOCArNTQsOCBAQAogCSMgZG8gbm90IHJlZGlyZWN0IGFnYWluCiAJOzsKIConIC0tdGVlICcqfConIC0tdmEnKikKLQlta2RpciAtcCB0ZXN0LXJlc3VsdHMKLQlCQVNFPXRlc3QtcmVzdWx0cy8kKGJhc2VuYW1lICIkMCIgLnNoKQorCW1rZGlyIC1wICIkVEVTVF9PVVRQVVRfRElSRUNUT1JZL3Rlc3QtcmVzdWx0cyIKKwlCQVNFPSIkVEVTVF9PVVRQVVRfRElSRUNUT1JZL3Rlc3QtcmVzdWx0cy8kKGJhc2VuYW1lICIkMCIgLnNoKSIKIAkoR0lUX1RFU1RfVEVFX1NUQVJURUQ9ZG9uZSAke1NIRUxMX1BBVEh9ICIkMCIgIiRAIiAyPiYxOwogCSBlY2hvICQ/ID4gJEJBU0UuZXhpdCkgfCB0ZWUgJEJBU0Uub3V0CiAJdGVzdCAiJChjYXQgJEJBU0UuZXhpdCkiID0gMApAQCAtMTkzLDcgKzE5MywxMSBAQAogCS0tbm8tY29sb3IpCiAJCWNvbG9yPTsgc2hpZnQgOzsKIAktLXZhfC0tdmFsfC0tdmFsZ3wtLXZhbGdyfC0tdmFsZ3JpfC0tdmFsZ3JpbnwtLXZhbGdyaW5kKQotCQl2YWxncmluZD10OyB2ZXJib3NlPXQ7IHNoaWZ0IDs7CisJCXZhbGdyaW5kPW1lbWNoZWNrCisJCXNoaWZ0IDs7CisJLS12YWxncmluZD0qKQorCQl2YWxncmluZD0kKGV4cHIgInokMSIgOiAneltePV0qPVwoLipcKScpCisJCXNoaWZ0IDs7CiAJLS10ZWUpCiAJCXNoaWZ0IDs7ICMgd2FzIGhhbmRsZWQgYWxyZWFkeQogCS0tcm9vdD0qKQpAQCAtMjA0LDYgKzIwOCw4IEBACiAJZXNhYwogZG9uZQogCit0ZXN0IC1uICIkdmFsZ3JpbmQiICYmIHZlcmJvc2U9dAorCiBpZiB0ZXN0IC1uICIkY29sb3IiCiB0aGVuCiAJc2F5X2NvbG9yICgpIHsKQEAgLTIxNCwxMSArMjIwLDEzIEBACiAJCWVycm9yKQogCQkJdHB1dCBib2xkOyB0cHV0IHNldGFmIDE7OyAjIGJvbGQgcmVkCiAJCXNraXApCi0JCQl0cHV0IGJvbGQ7IHRwdXQgc2V0YWYgMjs7ICMgYm9sZCBncmVlbgorCQkJdHB1dCBzZXRhZiA0OzsgIyBibHVlCisJCXdhcm4pCisJCQl0cHV0IHNldGFmIDM7OyAjIGJyb3duL3llbGxvdwogCQlwYXNzKQotCQkJdHB1dCBzZXRhZiAyOzsgICAgICAgICAgICAjIGdyZWVuCisJCQl0cHV0IHNldGFmIDI7OyAjIGdyZWVuCiAJCWluZm8pCi0JCQl0cHV0IHNldGFmIDM7OyAgICAgICAgICAgICMgYnJvd24KKwkJCXRwdXQgc2V0YWYgNjs7ICMgY3lhbgogCQkqKQogCQkJdGVzdCAtbiAiJHF1aWV0IiAmJiByZXR1cm47OwogCQllc2FjCkBAIC0zMDAsNyArMzA4LDcgQEAKIAogdGVzdF9mYWlsdXJlXyAoKSB7CiAJdGVzdF9mYWlsdXJlPSQoKCR0ZXN0X2ZhaWx1cmUgKyAxKSkKLQlzYXlfY29sb3IgZXJyb3IgIm5vdCBvayAtICR0ZXN0X2NvdW50ICQxIgorCXNheV9jb2xvciBlcnJvciAibm90IG9rICR0ZXN0X2NvdW50IC0gJDEiCiAJc2hpZnQKIAllY2hvICIkQCIgfCBzZWQgLWUgJ3MvXi8jCS8nCiAJdGVzdCAiJGltbWVkaWF0ZSIgPSAiIiB8fCB7IEdJVF9FWElUX09LPXQ7IGV4aXQgMTsgfQpAQCAtMzA4LDEyICszMTYsMTIgQEAKIAogdGVzdF9rbm93bl9icm9rZW5fb2tfICgpIHsKIAl0ZXN0X2ZpeGVkPSQoKCR0ZXN0X2ZpeGVkKzEpKQotCXNheV9jb2xvciAiIiAib2sgJHRlc3RfY291bnQgLSAkQCAjIFRPRE8ga25vd24gYnJlYWthZ2UiCisJc2F5X2NvbG9yIGVycm9yICJvayAkdGVzdF9jb3VudCAtICRAICMgVE9ETyBrbm93biBicmVha2FnZSB2YW5pc2hlZCIKIH0KIAogdGVzdF9rbm93bl9icm9rZW5fZmFpbHVyZV8gKCkgewogCXRlc3RfYnJva2VuPSQoKCR0ZXN0X2Jyb2tlbisxKSkKLQlzYXlfY29sb3Igc2tpcCAibm90IG9rICR0ZXN0X2NvdW50IC0gJEAgIyBUT0RPIGtub3duIGJyZWFrYWdlIgorCXNheV9jb2xvciB3YXJuICJub3Qgb2sgJHRlc3RfY291bnQgLSAkQCAjIFRPRE8ga25vd24gYnJlYWthZ2UiCiB9CiAKIHRlc3RfZGVidWcgKCkgewpAQCAtNDA2LDEzICs0MTQsMTggQEAKIAogCWlmIHRlc3QgIiR0ZXN0X2ZpeGVkIiAhPSAwCiAJdGhlbgotCQlzYXlfY29sb3IgcGFzcyAiIyBmaXhlZCAkdGVzdF9maXhlZCBrbm93biBicmVha2FnZShzKSIKKwkJc2F5X2NvbG9yIGVycm9yICIjICR0ZXN0X2ZpeGVkIGtub3duIGJyZWFrYWdlKHMpIHZhbmlzaGVkOyBwbGVhc2UgdXBkYXRlIHRlc3QocykiCiAJZmkKIAlpZiB0ZXN0ICIkdGVzdF9icm9rZW4iICE9IDAKIAl0aGVuCi0JCXNheV9jb2xvciBlcnJvciAiIyBzdGlsbCBoYXZlICR0ZXN0X2Jyb2tlbiBrbm93biBicmVha2FnZShzKSIKLQkJbXNnPSJyZW1haW5pbmcgJCgoJHRlc3RfY291bnQtJHRlc3RfYnJva2VuKSkgdGVzdChzKSIKKwkJc2F5X2NvbG9yIHdhcm4gIiMgc3RpbGwgaGF2ZSAkdGVzdF9icm9rZW4ga25vd24gYnJlYWthZ2UocykiCisJZmkKKwlpZiB0ZXN0ICIkdGVzdF9icm9rZW4iICE9IDAgfHwgdGVzdCAiJHRlc3RfZml4ZWQiICE9IDAKKwl0aGVuCisJCXRlc3RfcmVtYWluaW5nPSQoKCAkdGVzdF9jb3VudCAtICR0ZXN0X2Jyb2tlbiAtICR0ZXN0X2ZpeGVkICkpCisJCW1zZz0icmVtYWluaW5nICR0ZXN0X3JlbWFpbmluZyB0ZXN0KHMpIgogCWVsc2UKKwkJdGVzdF9yZW1haW5pbmc9JHRlc3RfY291bnQKIAkJbXNnPSIkdGVzdF9jb3VudCB0ZXN0KHMpIgogCWZpCiAJY2FzZSAiJHRlc3RfZmFpbHVyZSIgaW4KQEAgLTQyNiw3ICs0MzksNyBAQAogCiAJCWlmIHRlc3QgJHRlc3RfZXh0ZXJuYWxfaGFzX3RhcCAtZXEgMAogCQl0aGVuCi0JCQlpZiB0ZXN0ICR0ZXN0X2NvdW50IC1ndCAwCisJCQlpZiB0ZXN0ICR0ZXN0X3JlbWFpbmluZyAtZ3QgMAogCQkJdGhlbgogCQkJCXNheV9jb2xvciBwYXNzICIjIHBhc3NlZCBhbGwgJG1zZyIKIAkJCWZpCkBAIC01MjMsNiArNTM2LDggQEAKIAlQQVRIPSRHSVRfVkFMR1JJTkQvYmluOiRQQVRICiAJR0lUX0VYRUNfUEFUSD0kR0lUX1ZBTEdSSU5EL2JpbgogCWV4cG9ydCBHSVRfVkFMR1JJTkQKKwlHSVRfVkFMR1JJTkRfTU9ERT0iJHZhbGdyaW5kIgorCWV4cG9ydCBHSVRfVkFMR1JJTkRfTU9ERQogZWxpZiB0ZXN0IC1uICIkR0lUX1RFU1RfSU5TVEFMTEVEIgogdGhlbgogCUdJVF9FWEVDX1BBVEg9JCgkR0lUX1RFU1RfSU5TVEFMTEVEL2dpdCAtLWV4ZWMtcGF0aCkgIHx8CkBAIC01ODUsMTQgKzYwMCwxNCBAQAogZmkKIAogIyBUZXN0IHJlcG9zaXRvcnkKLXRlc3Q9InRyYXNoIGRpcmVjdG9yeS4kKGJhc2VuYW1lICIkMCIgLnNoKSIKLXRlc3QgLW4gIiRyb290IiAmJiB0ZXN0PSIkcm9vdC8kdGVzdCIKLWNhc2UgIiR0ZXN0IiBpbgotLyopIFRSQVNIX0RJUkVDVE9SWT0iJHRlc3QiIDs7Ci0gKikgVFJBU0hfRElSRUNUT1JZPSIkVEVTVF9PVVRQVVRfRElSRUNUT1JZLyR0ZXN0IiA7OworVFJBU0hfRElSRUNUT1JZPSJ0cmFzaCBkaXJlY3RvcnkuJChiYXNlbmFtZSAiJDAiIC5zaCkiCit0ZXN0IC1uICIkcm9vdCIgJiYgVFJBU0hfRElSRUNUT1JZPSIkcm9vdC8kVFJBU0hfRElSRUNUT1JZIgorY2FzZSAiJFRSQVNIX0RJUkVDVE9SWSIgaW4KKy8qKSA7OyAjIGFic29sdXRlIHBhdGggaXMgZ29vZAorICopIFRSQVNIX0RJUkVDVE9SWT0iJFRFU1RfT1VUUFVUX0RJUkVDVE9SWS8kVFJBU0hfRElSRUNUT1JZIiA7OwogZXNhYwogdGVzdCAhIC16ICIkZGVidWciIHx8IHJlbW92ZV90cmFzaD0kVFJBU0hfRElSRUNUT1JZCi1ybSAtZnIgIiR0ZXN0IiB8fCB7CitybSAtZnIgIiRUUkFTSF9ESVJFQ1RPUlkiIHx8IHsKIAlHSVRfRVhJVF9PSz10CiAJZWNobyA+JjUgIkZBVEFMOiBDYW5ub3QgcHJlcGFyZSB0ZXN0IGFyZWEiCiAJZXhpdCAxCkBAIC02MDMsMTMgKzYxOCwxMyBAQAogCiBpZiB0ZXN0IC16ICIkVEVTVF9OT19DUkVBVEVfUkVQTyIKIHRoZW4KLQl0ZXN0X2NyZWF0ZV9yZXBvICIkdGVzdCIKKwl0ZXN0X2NyZWF0ZV9yZXBvICIkVFJBU0hfRElSRUNUT1JZIgogZWxzZQotCW1rZGlyIC1wICIkdGVzdCIKKwlta2RpciAtcCAiJFRSQVNIX0RJUkVDVE9SWSIKIGZpCiAjIFVzZSAtUCB0byByZXNvbHZlIHN5bWxpbmtzIGluIG91ciB3b3JraW5nIGRpcmVjdG9yeSBzbyB0aGF0IHRoZSBjd2QKICMgaW4gc3VicHJvY2Vzc2VzIGxpa2UgZ2l0IGVxdWFscyBvdXIgJFBXRCAoZm9yIHBhdGhuYW1lIGNvbXBhcmlzb25zKS4KLWNkIC1QICIkdGVzdCIgfHwgZXhpdCAxCitjZCAtUCAiJFRSQVNIX0RJUkVDVE9SWSIgfHwgZXhpdCAxCiAKIHRoaXNfdGVzdD0kezAjIyovfQogdGhpc190ZXN0PSR7dGhpc190ZXN0JSUtKn0KQEAgLTYxNyw3ICs2MzIsNyBAQAogZG8KIAljYXNlICIkdGhpc190ZXN0IiBpbgogCSRza3ApCi0JCXNheV9jb2xvciBza2lwID4mMyAic2tpcHBpbmcgdGVzdCAkdGhpc190ZXN0IGFsdG9nZXRoZXIiCisJCXNheV9jb2xvciBpbmZvID4mMyAic2tpcHBpbmcgdGVzdCAkdGhpc190ZXN0IGFsdG9nZXRoZXIiCiAJCXNraXBfYWxsPSJza2lwIGFsbCB0ZXN0cyBpbiAkdGhpc190ZXN0IgogCQl0ZXN0X2RvbmUKIAllc2FjCkBAIC02NTksMTIgKzY3NCwxNCBAQAogCSMgYmFja3NsYXNoZXMgaW4gcGF0aHNwZWMgYXJlIGNvbnZlcnRlZCB0byAnLycKIAkjIGV4ZWMgZG9lcyBub3QgaW5oZXJpdCB0aGUgUElECiAJdGVzdF9zZXRfcHJlcmVxIE1JTkdXCisJdGVzdF9zZXRfcHJlcmVxIE5PVF9DWUdXSU4KIAl0ZXN0X3NldF9wcmVyZXEgU0VEX1NUUklQU19DUgogCTs7CiAqQ1lHV0lOKikKIAl0ZXN0X3NldF9wcmVyZXEgUE9TSVhQRVJNCiAJdGVzdF9zZXRfcHJlcmVxIEVYRUNLRUVQU1BJRAogCXRlc3Rfc2V0X3ByZXJlcSBOT1RfTUlOR1cKKwl0ZXN0X3NldF9wcmVyZXEgQ1lHV0lOCiAJdGVzdF9zZXRfcHJlcmVxIFNFRF9TVFJJUFNfQ1IKIAk7OwogKikKQEAgLTY3Miw2ICs2ODksNyBAQAogCXRlc3Rfc2V0X3ByZXJlcSBCU0xBU0hQU1BFQwogCXRlc3Rfc2V0X3ByZXJlcSBFWEVDS0VFUFNQSUQKIAl0ZXN0X3NldF9wcmVyZXEgTk9UX01JTkdXCisJdGVzdF9zZXRfcHJlcmVxIE5PVF9DWUdXSU4KIAk7OwogZXNhYwogCkBAIC03MTcsNiArNzM1LDExIEBACiAJZmkKIH0KIAordGVzdF9sYXp5X3ByZXJlcSBQSVBFICcKKwkjIHRlc3Qgd2hldGhlciB0aGUgZmlsZXN5c3RlbSBzdXBwb3J0cyBGSUZPcworCXJtIC1mIHRlc3RmaWZvICYmIG1rZmlmbyB0ZXN0ZmlmbworJworCiB0ZXN0X2xhenlfcHJlcmVxIFNZTUxJTktTICcKIAkjIHRlc3Qgd2hldGhlciB0aGUgZmlsZXN5c3RlbSBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcwogCWxuIC1zIHggeSAmJiB0ZXN0IC1oIHkKQEAgLTc1MCwzICs3NzMsOSBAQAogIyBXaGVuIHRoZSB0ZXN0cyBhcmUgcnVuIGFzIHJvb3QsIHBlcm1pc3Npb24gdGVzdHMgd2lsbCByZXBvcnQgdGhhdAogIyB0aGluZ3MgYXJlIHdyaXRhYmxlIHdoZW4gdGhleSBzaG91bGRuJ3QgYmUuCiB0ZXN0IC13IC8gfHwgdGVzdF9zZXRfcHJlcmVxIFNBTklUWQorCitHSVRfVU5aSVA9JHtHSVRfVU5aSVA6LXVuemlwfQordGVzdF9sYXp5X3ByZXJlcSBVTlpJUCAnCisJIiRHSVRfVU5aSVAiIC12CisJdGVzdCAkPyAtbmUgMTI3CisnCmRpZmYgLS1naXQgYS90L3ZhbGdyaW5kL2FuYWx5emUuc2ggYi90L3ZhbGdyaW5kL2FuYWx5emUuc2gKaW5kZXggZDgxMDVkOS4uMmZmYzgwZiAxMDA3NTUKLS0tIGEvdC92YWxncmluZC9hbmFseXplLnNoCisrKyBiL3QvdmFsZ3JpbmQvYW5hbHl6ZS5zaApAQCAtMSw2ICsxLDEwIEBACiAjIS9iaW4vc2gKIAotb3V0X3ByZWZpeD0kKGRpcm5hbWUgIiQwIikvLi4vdGVzdC1yZXN1bHRzL3ZhbGdyaW5kLm91dAorIyBHZXQgVEVTVF9PVVRQVVRfRElSRUNUT1JZIGZyb20gR0lULUJVSUxELU9QVElPTlMgaWYgaXQncyB0aGVyZS4uLgorLiAiJChkaXJuYW1lICIkMCIpLy4uLy4uL0dJVC1CVUlMRC1PUFRJT05TIgorIyAuLi4gb3RoZXJ3aXNlIHNldCBpdCB0byB0aGUgZGVmYXVsdCB2YWx1ZS4KKzogJHtURVNUX09VVFBVVF9ESVJFQ1RPUlk9JChkaXJuYW1lICIkMCIpLy4ufQorCiBvdXRwdXQ9CiBjb3VudD0wCiB0b3RhbF9jb3VudD0wCkBAIC0xMTUsNyArMTE5LDcgQEAKIAlmaW5pc2hfb3V0cHV0CiB9CiAKLWZvciB0ZXN0X3NjcmlwdCBpbiAiJChkaXJuYW1lICIkMCIpIi8uLi90ZXN0LXJlc3VsdHMvKi5vdXQKK2ZvciB0ZXN0X3NjcmlwdCBpbiAiJFRFU1RfT1VUUFVUX0RJUkVDVE9SWSIvdGVzdC1yZXN1bHRzLyoub3V0CiBkbwogCWhhbmRsZV9vbmUgJHRlc3Rfc2NyaXB0CiBkb25lCmRpZmYgLS1naXQgYS90L3ZhbGdyaW5kL3ZhbGdyaW5kLnNoIGIvdC92YWxncmluZC92YWxncmluZC5zaAppbmRleCA1ODJiNGRjLi42Yjg3YzkxIDEwMDc1NQotLS0gYS90L3ZhbGdyaW5kL3ZhbGdyaW5kLnNoCisrKyBiL3QvdmFsZ3JpbmQvdmFsZ3JpbmQuc2gKQEAgLTIsMjAgKzIsMjcgQEAKIAogYmFzZT0kKGJhc2VuYW1lICIkMCIpCiAKLVRSQUNLX09SSUdJTlM9CitUT09MX09QVElPTlM9Jy0tbGVhay1jaGVjaz1ubycKIAotVkFMR1JJTkRfVkVSU0lPTj0kKHZhbGdyaW5kIC0tdmVyc2lvbikKLVZBTEdSSU5EX01BSk9SPSQoZXhwciAiJFZBTEdSSU5EX1ZFUlNJT04iIDogJ1teMC05XSpcKFswLTldKlwpJykKLVZBTEdSSU5EX01JTk9SPSQoZXhwciAiJFZBTEdSSU5EX1ZFUlNJT04iIDogJ1teMC05XSpbMC05XSpcLlwoWzAtOV0qXCknKQotdGVzdCAzIC1ndCAiJFZBTEdSSU5EX01BSk9SIiB8fAotdGVzdCAzIC1lcSAiJFZBTEdSSU5EX01BSk9SIiAtYSA0IC1ndCAiJFZBTEdSSU5EX01JTk9SIiB8fAotVFJBQ0tfT1JJR0lOUz0tLXRyYWNrLW9yaWdpbnM9eWVzCitjYXNlICIkR0lUX1ZBTEdSSU5EX01PREUiIGluCittZW1jaGVjay1mYXN0KQorCTs7CittZW1jaGVjaykKKwlWQUxHUklORF9WRVJTSU9OPSQodmFsZ3JpbmQgLS12ZXJzaW9uKQorCVZBTEdSSU5EX01BSk9SPSQoZXhwciAiJFZBTEdSSU5EX1ZFUlNJT04iIDogJ1teMC05XSpcKFswLTldKlwpJykKKwlWQUxHUklORF9NSU5PUj0kKGV4cHIgIiRWQUxHUklORF9WRVJTSU9OIiA6ICdbXjAtOV0qWzAtOV0qXC5cKFswLTldKlwpJykKKwl0ZXN0IDMgLWd0ICIkVkFMR1JJTkRfTUFKT1IiIHx8CisJdGVzdCAzIC1lcSAiJFZBTEdSSU5EX01BSk9SIiAtYSA0IC1ndCAiJFZBTEdSSU5EX01JTk9SIiB8fAorCVRPT0xfT1BUSU9OUz0iJFRPT0xfT1BUSU9OUyAtLXRyYWNrLW9yaWdpbnM9eWVzIgorCTs7CisqKQorCVRPT0xfT1BUSU9OUz0iLS10b29sPSRHSVRfVkFMR1JJTkRfTU9ERSIKK2VzYWMKIAogZXhlYyB2YWxncmluZCAtcSAtLWVycm9yLWV4aXRjb2RlPTEyNiBcCi0JLS1sZWFrLWNoZWNrPW5vIFwKLQktLXN1cHByZXNzaW9ucz0iJEdJVF9WQUxHUklORC9kZWZhdWx0LnN1cHAiIFwKIAktLWdlbi1zdXBwcmVzc2lvbnM9YWxsIFwKLQkkVFJBQ0tfT1JJR0lOUyBcCisJLS1zdXBwcmVzc2lvbnM9IiRHSVRfVkFMR1JJTkQvZGVmYXVsdC5zdXBwIiBcCisJJFRPT0xfT1BUSU9OUyBcCiAJLS1sb2ctZmQ9NCBcCiAJLS1pbnB1dC1mZD00IFwKIAkkR0lUX1ZBTEdSSU5EX09QVElPTlMgXApkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL2hvb2tzLS1wcmUtcHVzaC5zYW1wbGUgYi90ZW1wbGF0ZXMvaG9va3MtLXByZS1wdXNoLnNhbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNWFiNmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVtcGxhdGVzL2hvb2tzLS1wcmUtcHVzaC5zYW1wbGUKQEAgLTAsMCArMSw1MyBAQAorIyEvYmluL3NoCisKKyMgQW4gZXhhbXBsZSBob29rIHNjcmlwdCB0byB2ZXJpZnkgd2hhdCBpcyBhYm91dCB0byBiZSBwdXNoZWQuICBDYWxsZWQgYnkgImdpdAorIyBwdXNoIiBhZnRlciBpdCBoYXMgY2hlY2tlZCB0aGUgcmVtb3RlIHN0YXR1cywgYnV0IGJlZm9yZSBhbnl0aGluZyBoYXMgYmVlbgorIyBwdXNoZWQuICBJZiB0aGlzIHNjcmlwdCBleGl0cyB3aXRoIGEgbm9uLXplcm8gc3RhdHVzIG5vdGhpbmcgd2lsbCBiZSBwdXNoZWQuCisjCisjIFRoaXMgaG9vayBpcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisjCisjICQxIC0tIE5hbWUgb2YgdGhlIHJlbW90ZSB0byB3aGljaCB0aGUgcHVzaCBpcyBiZWluZyBkb25lCisjICQyIC0tIFVSTCB0byB3aGljaCB0aGUgcHVzaCBpcyBiZWluZyBkb25lCisjCisjIElmIHB1c2hpbmcgd2l0aG91dCB1c2luZyBhIG5hbWVkIHJlbW90ZSB0aG9zZSBhcmd1bWVudHMgd2lsbCBiZSBlcXVhbC4KKyMKKyMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbW1pdHMgd2hpY2ggYXJlIGJlaW5nIHB1c2hlZCBpcyBzdXBwbGllZCBhcyBsaW5lcyB0bworIyB0aGUgc3RhbmRhcmQgaW5wdXQgaW4gdGhlIGZvcm06CisjCisjICAgPGxvY2FsIHJlZj4gPGxvY2FsIHNoYTE+IDxyZW1vdGUgcmVmPiA8cmVtb3RlIHNoYTE+CisjCisjIFRoaXMgc2FtcGxlIHNob3dzIGhvdyB0byBwcmV2ZW50IHB1c2ggb2YgY29tbWl0cyB3aGVyZSB0aGUgbG9nIG1lc3NhZ2Ugc3RhcnRzCisjIHdpdGggIldJUCIgKHdvcmsgaW4gcHJvZ3Jlc3MpLgorCityZW1vdGU9IiQxIgordXJsPSIkMiIKKworejQwPTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKworSUZTPScgJword2hpbGUgcmVhZCBsb2NhbF9yZWYgbG9jYWxfc2hhIHJlbW90ZV9yZWYgcmVtb3RlX3NoYQorZG8KKwlpZiBbICIkbG9jYWxfc2hhIiA9ICR6NDAgXQorCXRoZW4KKwkJIyBIYW5kbGUgZGVsZXRlCisJZWxzZQorCQlpZiBbICIkcmVtb3RlX3NoYSIgPSAkejQwIF0KKwkJdGhlbgorCQkJIyBOZXcgYnJhbmNoLCBleGFtaW5lIGFsbCBjb21taXRzCisJCQlyYW5nZT0iJGxvY2FsX3NoYSIKKwkJZWxzZQorCQkJIyBVcGRhdGUgdG8gZXhpc3RpbmcgYnJhbmNoLCBleGFtaW5lIG5ldyBjb21taXRzCisJCQlyYW5nZT0iJHJlbW90ZV9zaGEuLiRsb2NhbF9zaGEiCisJCWZpCisKKwkJIyBDaGVjayBmb3IgV0lQIGNvbW1pdAorCQljb21taXQ9YGdpdCByZXYtbGlzdCAtbiAxIC0tZ3JlcCAnXldJUCcgIiRyYW5nZSJgCisJCWlmIFsgLW4gIiRjb21taXQiIF0KKwkJdGhlbgorCQkJZWNobyAiRm91bmQgV0lQIGNvbW1pdCBpbiAkbG9jYWxfcmVmLCBub3QgcHVzaGluZyIKKwkJCWV4aXQgMQorCQlmaQorCWZpCitkb25lCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvdGVtcGxhdGVzL2hvb2tzLS11cGRhdGUuc2FtcGxlIGIvdGVtcGxhdGVzL2hvb2tzLS11cGRhdGUuc2FtcGxlCmluZGV4IDcxYWIwNGUuLmQ4NDc1ODMgMTAwNzU1Ci0tLSBhL3RlbXBsYXRlcy9ob29rcy0tdXBkYXRlLnNhbXBsZQorKysgYi90ZW1wbGF0ZXMvaG9va3MtLXVwZGF0ZS5zYW1wbGUKQEAgLTM4LDcgKzM4LDcgQEAKIGZpCiAKIGlmIFsgLXogIiRyZWZuYW1lIiAtbyAteiAiJG9sZHJldiIgLW8gLXogIiRuZXdyZXYiIF07IHRoZW4KLQllY2hvICJVc2FnZTogJDAgPHJlZj4gPG9sZHJldj4gPG5ld3Jldj4iID4mMgorCWVjaG8gInVzYWdlOiAkMCA8cmVmPiA8b2xkcmV2PiA8bmV3cmV2PiIgPiYyCiAJZXhpdCAxCiBmaQogCmRpZmYgLS1naXQgYS90ZXN0LWNobXRpbWUuYyBiL3Rlc3QtY2htdGltZS5jCmluZGV4IDkyNzEzZDEuLjBkZjc0ODcgMTAwNjQ0Ci0tLSBhL3Rlc3QtY2htdGltZS5jCisrKyBiL3Rlc3QtY2htdGltZS5jCkBAIC01Niw3ICs1Niw3IEBACiAJcmV0dXJuIDE7CiB9CiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCXN0YXRpYyBpbnQgdmVyYm9zZTsKIApAQCAtODQsMTUgKzg0LDE1IEBACiAJCWlmIChzdGF0KGFyZ3ZbaV0sICZzYikgPCAwKSB7CiAJCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzdGF0ICVzOiAlc1xuIiwKIAkJCSAgICAgICAgYXJndltpXSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCXJldHVybiAtMTsKKwkJCXJldHVybiAxOwogCQl9CiAKLSNpZmRlZiBXSU4zMgorI2lmZGVmIEdJVF9XSU5ET1dTX05BVElWRQogCQlpZiAoIShzYi5zdF9tb2RlICYgU19JV1VTUikgJiYKIAkJCQljaG1vZChhcmd2W2ldLCBzYi5zdF9tb2RlIHwgU19JV1VTUikpIHsKIAkJCWZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IG1ha2UgdXNlci13cml0YWJsZSAlczogJXMiLAogCQkJCWFyZ3ZbaV0sIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlyZXR1cm4gLTE7CisJCQlyZXR1cm4gMTsKIAkJfQogI2VuZGlmCiAKQEAgLTEwNywxMyArMTA3LDEzIEBACiAJCWlmICh1dGIubW9kdGltZSAhPSBzYi5zdF9tdGltZSAmJiB1dGltZShhcmd2W2ldLCAmdXRiKSA8IDApIHsKIAkJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIG1vZGlmeSB0aW1lIG9uICVzOiAlc1xuIiwKIAkJCSAgICAgICAgYXJndltpXSwgc3RyZXJyb3IoZXJybm8pKTsKLQkJCXJldHVybiAtMTsKKwkJCXJldHVybiAxOwogCQl9CiAJfQogCiAJcmV0dXJuIDA7CiAKIHVzYWdlOgotCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzICVzXG4iLCBhcmd2WzBdLCB1c2FnZV9zdHIpOwotCXJldHVybiAtMTsKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlcyAlc1xuIiwgYXJndlswXSwgdXNhZ2Vfc3RyKTsKKwlyZXR1cm4gMTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3QtZGVsdGEuYyBiL3Rlc3QtZGVsdGEuYwppbmRleCBhZjQwYTNjLi40NTk1Y2Q2IDEwMDY0NAotLS0gYS90ZXN0LWRlbHRhLmMKKysrIGIvdGVzdC1kZWx0YS5jCkBAIC0yMyw3ICsyMyw3IEBACiAJdW5zaWduZWQgbG9uZyBmcm9tX3NpemUsIGRhdGFfc2l6ZSwgb3V0X3NpemU7CiAKIAlpZiAoYXJnYyAhPSA1IHx8IChzdHJjbXAoYXJndlsxXSwgIi1kIikgJiYgc3RyY21wKGFyZ3ZbMV0sICItcCIpKSkgewotCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlc1xuIiwgdXNhZ2Vfc3RyKTsKKwkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXNcbiIsIHVzYWdlX3N0cik7CiAJCXJldHVybiAxOwogCX0KIApkaWZmIC0tZ2l0IGEvdGVzdC1nZW5yYW5kb20uYyBiL3Rlc3QtZ2VucmFuZG9tLmMKaW5kZXggYjNjMjhkOS4uNTQ4MjRkMCAxMDA2NDQKLS0tIGEvdGVzdC1nZW5yYW5kb20uYworKysgYi90ZXN0LWdlbnJhbmRvbS5jCkBAIC0xMiw3ICsxMiw3IEBACiAJdW5zaWduZWQgY2hhciAqYzsKIAogCWlmIChhcmdjIDwgMiB8fCBhcmdjID4gMykgewotCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyA8c2VlZF9zdHJpbmc+IFs8c2l6ZT5dXG4iLCBhcmd2WzBdKTsKKwkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgPHNlZWRfc3RyaW5nPiBbPHNpemU+XVxuIiwgYXJndlswXSk7CiAJCXJldHVybiAxOwogCX0KIApkaWZmIC0tZ2l0IGEvdGVzdC1pbmRleC12ZXJzaW9uLmMgYi90ZXN0LWluZGV4LXZlcnNpb24uYwppbmRleCBiZmFhZDllLi4wNWQ0Njk5IDEwMDY0NAotLS0gYS90ZXN0LWluZGV4LXZlcnNpb24uYworKysgYi90ZXN0LWluZGV4LXZlcnNpb24uYwpAQCAtMSw2ICsxLDYgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJc3RydWN0IGNhY2hlX2hlYWRlciBoZHI7CiAJaW50IHZlcnNpb247CmRpZmYgLS1naXQgYS90ZXN0LW1lcmdlc29ydC5jIGIvdGVzdC1tZXJnZXNvcnQuYwppbmRleCAzZjM4OGI0Li5lYTNiOTU5IDEwMDY0NAotLS0gYS90ZXN0LW1lcmdlc29ydC5jCisrKyBiL3Rlc3QtbWVyZ2Vzb3J0LmMKQEAgLTIyLDcgKzIyLDcgQEAKIAlyZXR1cm4gc3RyY21wKHgtPnRleHQsIHktPnRleHQpOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJc3RydWN0IGxpbmUgKmxpbmUsICpwID0gTlVMTCwgKmxpbmVzID0gTlVMTDsKIAlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CmRpZmYgLS1naXQgYS90ZXN0LXBhcnNlLW9wdGlvbnMuYyBiL3Rlc3QtcGFyc2Utb3B0aW9ucy5jCmluZGV4IDNjOTUxMGEuLjQzNGU4YjggMTAwNjQ0Ci0tLSBhL3Rlc3QtcGFyc2Utb3B0aW9ucy5jCisrKyBiL3Rlc3QtcGFyc2Utb3B0aW9ucy5jCkBAIC0yOSw3ICsyOSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAljb25zdCBjaGFyICpwcmVmaXggPSAicHJlZml4LyI7CiAJY29uc3QgY2hhciAqdXNhZ2VbXSA9IHsKQEAgLTgxLDcgKzgxLDcgQEAKIAl9OwogCWludCBpOwogCi0JYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgcHJlZml4LCBvcHRpb25zLCB1c2FnZSwgMCk7CisJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgKGNvbnN0IGNoYXIgKiopYXJndiwgcHJlZml4LCBvcHRpb25zLCB1c2FnZSwgMCk7CiAKIAlwcmludGYoImJvb2xlYW46ICVkXG4iLCBib29sZWFuKTsKIAlwcmludGYoImludGVnZXI6ICV1XG4iLCBpbnRlZ2VyKTsKZGlmZiAtLWdpdCBhL3Rlc3QtcmVhZC1jYWNoZS5jIGIvdGVzdC1yZWFkLWNhY2hlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI1YmNmMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QtcmVhZC1jYWNoZS5jCkBAIC0wLDAgKzEsMTMgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBpLCBjbnQgPSAxOworCWlmIChhcmdjID09IDIpCisJCWNudCA9IHN0cnRvbChhcmd2WzFdLCBOVUxMLCAwKTsKKwlmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKKwkJcmVhZF9jYWNoZSgpOworCQlkaXNjYXJkX2NhY2hlKCk7CisJfQorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGVzdC1zdWJwcm9jZXNzLmMgYi90ZXN0LXN1YnByb2Nlc3MuYwppbmRleCBmMmQ0YzBkLi45MzUyNWViIDEwMDY0NAotLS0gYS90ZXN0LXN1YnByb2Nlc3MuYworKysgYi90ZXN0LXN1YnByb2Nlc3MuYwpAQCAtMSw3ICsxLDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBjcDsKIAlpbnQgbm9naXQgPSAwOwpAQCAtMTUsNiArMTUsNiBAQAogCX0KIAltZW1zZXQoJmNwLCAwLCBzaXplb2YoY3ApKTsKIAljcC5naXRfY21kID0gMTsKLQljcC5hcmd2ID0gYXJndiArIDE7CisJY3AuYXJndiA9IChjb25zdCBjaGFyICoqKWFyZ3YgKyAxOwogCXJldHVybiBydW5fY29tbWFuZCgmY3ApOwogfQpkaWZmIC0tZ2l0IGEvdGVzdC1zdm4tZmUuYyBiL3Rlc3Qtc3ZuLWZlLmMKaW5kZXggMGYyZDlhNC4uMTIwZWM5NiAxMDA2NDQKLS0tIGEvdGVzdC1zdm4tZmUuYworKysgYi90ZXN0LXN2bi1mZS5jCkBAIC0yNCw3ICsyNCw3IEBACiAJCWRpZV9lcnJubygiY2Fubm90IG9wZW4gcHJlaW1hZ2UiKTsKIAlpZiAoYnVmZmVyX2luaXQoJmRlbHRhLCBhcmd2WzNdKSkKIAkJZGllX2Vycm5vKCJjYW5ub3Qgb3BlbiBkZWx0YSIpOwotCWlmIChzdm5kaWZmMF9hcHBseSgmZGVsdGEsIChvZmZfdCkgc3RydG91bGwoYXJndls0XSwgTlVMTCwgMCksCisJaWYgKHN2bmRpZmYwX2FwcGx5KCZkZWx0YSwgKG9mZl90KSBzdHJ0b3VtYXgoYXJndls0XSwgTlVMTCwgMCksCiAJCQkJCSZwcmVpbWFnZV92aWV3LCBzdGRvdXQpKQogCQlyZXR1cm4gMTsKIAlpZiAoYnVmZmVyX2RlaW5pdCgmcHJlaW1hZ2UpKQpkaWZmIC0tZ2l0IGEvdGVzdC13aWxkbWF0Y2guYyBiL3Rlc3Qtd2lsZG1hdGNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNlMjY0MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qtd2lsZG1hdGNoLmMKQEAgLTAsMCArMSwxMDAgQEAKKyNpZmRlZiBVU0VfV0lMRE1BVENICisjdW5kZWYgVVNFX1dJTERNQVRDSCAgLyogV2UgbmVlZCByZWFsIGZubWF0Y2ggaW1wbGVtZW50YXRpb24gaGVyZSAqLworI2VuZGlmCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJ3aWxkbWF0Y2guaCIKKworc3RhdGljIGludCBwZXJmKGludCBhYywgY2hhciAqKmF2KQoreworCXN0cnVjdCB0aW1ldmFsIHR2MSwgdHYyOworCXN0cnVjdCBzdGF0IHN0OworCWludCBmZCwgaSwgbiwgZmxhZ3MxID0gMCwgZmxhZ3MyID0gMDsKKwljaGFyICpidWZmZXIsICpwOworCXVpbnQzMl90IHVzZWMxLCB1c2VjMjsKKwljb25zdCBjaGFyICpsYW5nOworCWNvbnN0IGNoYXIgKmZpbGUgPSBhdlswXTsKKwljb25zdCBjaGFyICpwYXR0ZXJuID0gYXZbMV07CisKKwlsYW5nID0gZ2V0ZW52KCJMQU5HIik7CisJaWYgKGxhbmcgJiYgc3RyY21wKGxhbmcsICJDIikpCisJCWRpZSgiUGxlYXNlIHRlc3QgaXQgb24gQyBsb2NhbGUuIik7CisKKwlpZiAoKGZkID0gb3BlbihmaWxlLCBPX1JET05MWSkpID09IC0xIHx8IGZzdGF0KGZkLCAmc3QpKQorCQlkaWVfZXJybm8oImZpbGUgb3BlbiIpOworCisJYnVmZmVyID0geG1hbGxvYyhzdC5zdF9zaXplICsgMik7CisJaWYgKHJlYWQoZmQsIGJ1ZmZlciwgc3Quc3Rfc2l6ZSkgIT0gc3Quc3Rfc2l6ZSkKKwkJZGllX2Vycm5vKCJyZWFkIik7CisKKwlidWZmZXJbc3Quc3Rfc2l6ZV0gPSAnXDAnOworCWJ1ZmZlcltzdC5zdF9zaXplICsgMV0gPSAnXDAnOworCWZvciAoaSA9IDA7IGkgPCBzdC5zdF9zaXplOyBpKyspCisJCWlmIChidWZmZXJbaV0gPT0gJ1xuJykKKwkJCWJ1ZmZlcltpXSA9ICdcMCc7CisKKwluID0gYXRvaShhdlsyXSk7CisJaWYgKGF2WzNdICYmICFzdHJjbXAoYXZbM10sICJwYXRobmFtZSIpKSB7CisJCWZsYWdzMSA9IFdNX1BBVEhOQU1FOworCQlmbGFnczIgPSBGTk1fUEFUSE5BTUU7CisJfQorCisJZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJZm9yIChwID0gYnVmZmVyOyAqcDsgcCArPSBzdHJsZW4ocCkgKyAxKQorCQkJd2lsZG1hdGNoKHBhdHRlcm4sIHAsIGZsYWdzMSwgTlVMTCk7CisJfQorCWdldHRpbWVvZmRheSgmdHYyLCBOVUxMKTsKKworCXVzZWMxID0gKHVpbnQzMl90KXR2Mi50dl9zZWMgKiAxMDAwMDAwICsgdHYyLnR2X3VzZWM7CisJdXNlYzEgLT0gKHVpbnQzMl90KXR2MS50dl9zZWMgKiAxMDAwMDAwICsgdHYxLnR2X3VzZWM7CisJcHJpbnRmKCJ3aWxkbWF0Y2ggJWRzICVkdXNcbiIsCisJICAgICAgIChpbnQpKHVzZWMxIC8gMTAwMDAwMCksCisJICAgICAgIChpbnQpKHVzZWMxICUgMTAwMDAwMCkpOworCisJZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJZm9yIChwID0gYnVmZmVyOyAqcDsgcCArPSBzdHJsZW4ocCkgKyAxKQorCQkJZm5tYXRjaChwYXR0ZXJuLCBwLCBmbGFnczIpOworCX0KKwlnZXR0aW1lb2ZkYXkoJnR2MiwgTlVMTCk7CisKKwl1c2VjMiA9ICh1aW50MzJfdCl0djIudHZfc2VjICogMTAwMDAwMCArIHR2Mi50dl91c2VjOworCXVzZWMyIC09ICh1aW50MzJfdCl0djEudHZfc2VjICogMTAwMDAwMCArIHR2MS50dl91c2VjOworCWlmICh1c2VjMiA+IHVzZWMxKQorCQlwcmludGYoImZubWF0Y2ggICAlZHMgJWR1cyBvciAlLjJmJSUgc2xvd2VyXG4iLAorCQkgICAgICAgKGludCkoKHVzZWMyIC0gdXNlYzEpIC8gMTAwMDAwMCksCisJCSAgICAgICAoaW50KSgodXNlYzIgLSB1c2VjMSkgJSAxMDAwMDAwKSwKKwkJICAgICAgIChmbG9hdCkodXNlYzIgLSB1c2VjMSkgLyB1c2VjMSAqIDEwMCk7CisJZWxzZQorCQlwcmludGYoImZubWF0Y2ggICAlZHMgJWR1cyBvciAlLjJmJSUgZmFzdGVyXG4iLAorCQkgICAgICAgKGludCkoKHVzZWMxIC0gdXNlYzIpIC8gMTAwMDAwMCksCisJCSAgICAgICAoaW50KSgodXNlYzEgLSB1c2VjMikgJSAxMDAwMDAwKSwKKwkJICAgICAgIChmbG9hdCkodXNlYzEgLSB1c2VjMikgLyB1c2VjMSAqIDEwMCk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgaTsKKworCWlmICghc3RyY21wKGFyZ3ZbMV0sICJwZXJmIikpCisJCXJldHVybiBwZXJmKGFyZ2MgLSAyLCBhcmd2ICsgMik7CisKKwlmb3IgKGkgPSAyOyBpIDwgYXJnYzsgaSsrKSB7CisJCWlmIChhcmd2W2ldWzBdID09ICcvJykKKwkJCWRpZSgiRm9yd2FyZCBzbGFzaCBpcyBub3QgYWxsb3dlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuIgorCQkJICAgICJwYXR0ZXJuIGJlY2F1c2UgV2luZG93cyBkb2VzIG5vdCBsaWtlIGl0LiBVc2UgYFhYWC8nIGluc3RlYWQuIik7CisJCWVsc2UgaWYgKCFzdHJuY21wKGFyZ3ZbaV0sICJYWFgvIiwgNCkpCisJCQlhcmd2W2ldICs9IDM7CisJfQorCWlmICghc3RyY21wKGFyZ3ZbMV0sICJ3aWxkbWF0Y2giKSkKKwkJcmV0dXJuICEhd2lsZG1hdGNoKGFyZ3ZbM10sIGFyZ3ZbMl0sIFdNX1BBVEhOQU1FLCBOVUxMKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJpd2lsZG1hdGNoIikpCisJCXJldHVybiAhIXdpbGRtYXRjaChhcmd2WzNdLCBhcmd2WzJdLCBXTV9QQVRITkFNRSB8IFdNX0NBU0VGT0xELCBOVUxMKTsKKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJwYXRobWF0Y2giKSkKKwkJcmV0dXJuICEhd2lsZG1hdGNoKGFyZ3ZbM10sIGFyZ3ZbMl0sIDAsIE5VTEwpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlsxXSwgImZubWF0Y2giKSkKKwkJcmV0dXJuICEhZm5tYXRjaChhcmd2WzNdLCBhcmd2WzJdLCBGTk1fUEFUSE5BTUUpOworCWVsc2UKKwkJcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS90aHJlYWQtdXRpbHMuYyBiL3RocmVhZC11dGlscy5jCmluZGV4IDdmNGI3NmEuLjk3Mzk2YTcgMTAwNjQ0Ci0tLSBhL3RocmVhZC11dGlscy5jCisrKyBiL3RocmVhZC11dGlscy5jCkBAIC0yNCw3ICsyNCw3IEBACiAJbG9uZyBuY3B1czsKICNlbmRpZgogCi0jaWZkZWYgX1dJTjMyCisjaWZkZWYgR0lUX1dJTkRPV1NfTkFUSVZFCiAJU1lTVEVNX0lORk8gaW5mbzsKIAlHZXRTeXN0ZW1JbmZvKCZpbmZvKTsKIApkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LWhlbHBlci5jIGIvdHJhbnNwb3J0LWhlbHBlci5jCmluZGV4IDQ3MTNiNjkuLmRiOWJkMTggMTAwNjQ0Ci0tLSBhL3RyYW5zcG9ydC1oZWxwZXIuYworKysgYi90cmFuc3BvcnQtaGVscGVyLmMKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJ0aHJlYWQtdXRpbHMuaCIKICNpbmNsdWRlICJzaWdjaGFpbi5oIgogI2luY2x1ZGUgImFyZ3YtYXJyYXkuaCIKKyNpbmNsdWRlICJyZWZzLmgiCiAKIHN0YXRpYyBpbnQgZGVidWc7CiAKQEAgLTI1LDYgKzI2LDcgQEAKIAkJb3B0aW9uIDogMSwKIAkJcHVzaCA6IDEsCiAJCWNvbm5lY3QgOiAxLAorCQlzaWduZWRfdGFncyA6IDEsCiAJCW5vX2Rpc2Nvbm5lY3RfcmVxIDogMTsKIAljaGFyICpleHBvcnRfbWFya3M7CiAJY2hhciAqaW1wb3J0X21hcmtzOwpAQCAtNDYsNyArNDgsNyBAQAogCQlkaWVfZXJybm8oIkZ1bGwgd3JpdGUgdG8gcmVtb3RlIGhlbHBlciBmYWlsZWQiKTsKIH0KIAotc3RhdGljIGludCByZWN2bGluZV9maChGSUxFICpoZWxwZXIsIHN0cnVjdCBzdHJidWYgKmJ1ZmZlcikKK3N0YXRpYyBpbnQgcmVjdmxpbmVfZmgoRklMRSAqaGVscGVyLCBzdHJ1Y3Qgc3RyYnVmICpidWZmZXIsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJc3RyYnVmX3Jlc2V0KGJ1ZmZlcik7CiAJaWYgKGRlYnVnKQpAQCAtNjQsNyArNjYsNyBAQAogCiBzdGF0aWMgaW50IHJlY3ZsaW5lKHN0cnVjdCBoZWxwZXJfZGF0YSAqaGVscGVyLCBzdHJ1Y3Qgc3RyYnVmICpidWZmZXIpCiB7Ci0JcmV0dXJuIHJlY3ZsaW5lX2ZoKGhlbHBlci0+b3V0LCBidWZmZXIpOworCXJldHVybiByZWN2bGluZV9maChoZWxwZXItPm91dCwgYnVmZmVyLCBoZWxwZXItPm5hbWUpOwogfQogCiBzdGF0aWMgdm9pZCB4Y2hnbGluZShzdHJ1Y3QgaGVscGVyX2RhdGEgKmhlbHBlciwgc3RydWN0IHN0cmJ1ZiAqYnVmZmVyKQpAQCAtMTkxLDYgKzE5Myw4IEBACiAJCQlyZWZzcGVjc1tyZWZzcGVjX25yKytdID0geHN0cmR1cChjYXBuYW1lICsgc3RybGVuKCJyZWZzcGVjICIpKTsKIAkJfSBlbHNlIGlmICghc3RyY21wKGNhcG5hbWUsICJjb25uZWN0IikpIHsKIAkJCWRhdGEtPmNvbm5lY3QgPSAxOworCQl9IGVsc2UgaWYgKCFzdHJjbXAoY2FwbmFtZSwgInNpZ25lZC10YWdzIikpIHsKKwkJCWRhdGEtPnNpZ25lZF90YWdzID0gMTsKIAkJfSBlbHNlIGlmICghcHJlZml4Y21wKGNhcG5hbWUsICJleHBvcnQtbWFya3MgIikpIHsKIAkJCXN0cnVjdCBzdHJidWYgYXJnID0gU1RSQlVGX0lOSVQ7CiAJCQlzdHJidWZfYWRkc3RyKCZhcmcsICItLWV4cG9ydC1tYXJrcz0iKTsKQEAgLTIxMSwxMCArMjE1LDExIEBACiAJCWludCBpOwogCQlkYXRhLT5yZWZzcGVjX25yID0gcmVmc3BlY19ucjsKIAkJZGF0YS0+cmVmc3BlY3MgPSBwYXJzZV9mZXRjaF9yZWZzcGVjKHJlZnNwZWNfbnIsIHJlZnNwZWNzKTsKLQkJZm9yIChpID0gMDsgaSA8IHJlZnNwZWNfbnI7IGkrKykgeworCQlmb3IgKGkgPSAwOyBpIDwgcmVmc3BlY19ucjsgaSsrKQogCQkJZnJlZSgoY2hhciAqKXJlZnNwZWNzW2ldKTsKLQkJfQogCQlmcmVlKHJlZnNwZWNzKTsKKwl9IGVsc2UgaWYgKGRhdGEtPmltcG9ydCB8fCBkYXRhLT5iaWRpX2ltcG9ydCB8fCBkYXRhLT5leHBvcnQpIHsKKwkJd2FybmluZygiVGhpcyByZW1vdGUgaGVscGVyIHNob3VsZCBpbXBsZW1lbnQgcmVmc3BlYyBjYXBhYmlsaXR5LiIpOwogCX0KIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIAlpZiAoZGVidWcpCkBAIC00MTAsOSArNDE1LDExIEBACiAJLyogd2UgbmVlZCB0byBkdXBsaWNhdGUgaGVscGVyLT5pbiBiZWNhdXNlIHdlIHdhbnQgdG8gdXNlIGl0IGFmdGVyCiAJICogZmFzdGV4cG9ydCBpcyBkb25lIHdpdGggaXQuICovCiAJZmFzdGV4cG9ydC0+b3V0ID0gZHVwKGhlbHBlci0+aW4pOwotCWZhc3RleHBvcnQtPmFyZ3YgPSB4Y2FsbG9jKDUgKyByZXZsaXN0X2FyZ3MtPm5yLCBzaXplb2YoKmZhc3RleHBvcnQtPmFyZ3YpKTsKKwlmYXN0ZXhwb3J0LT5hcmd2ID0geGNhbGxvYyg2ICsgcmV2bGlzdF9hcmdzLT5uciwgc2l6ZW9mKCpmYXN0ZXhwb3J0LT5hcmd2KSk7CiAJZmFzdGV4cG9ydC0+YXJndlthcmdjKytdID0gImZhc3QtZXhwb3J0IjsKIAlmYXN0ZXhwb3J0LT5hcmd2W2FyZ2MrK10gPSAiLS11c2UtZG9uZS1mZWF0dXJlIjsKKwlmYXN0ZXhwb3J0LT5hcmd2W2FyZ2MrK10gPSBkYXRhLT5zaWduZWRfdGFncyA/CisJCSItLXNpZ25lZC10YWdzPXZlcmJhdGltIiA6ICItLXNpZ25lZC10YWdzPXdhcm4tc3RyaXAiOwogCWlmIChkYXRhLT5leHBvcnRfbWFya3MpCiAJCWZhc3RleHBvcnQtPmFyZ3ZbYXJnYysrXSA9IGRhdGEtPmV4cG9ydF9tYXJrczsKIAlpZiAoZGF0YS0+aW1wb3J0X21hcmtzKQpAQCAtNDY5LDcgKzQ3Niw3IEBACiAJICogd2VyZSBmZXRjaGluZy4KIAkgKgogCSAqIChJZiBubyAicmVmc3BlYyIgY2FwYWJpbGl0eSB3YXMgc3BlY2lmaWVkLCBmb3IgaGlzdG9yaWNhbAotCSAqIHJlYXNvbnMgd2UgZGVmYXVsdCB0byAqOiouKQorCSAqIHJlYXNvbnMgd2UgZGVmYXVsdCB0byB0aGUgZXF1aXZhbGVudCBvZiAqOiouKQogCSAqCiAJICogU3RvcmUgdGhlIHJlc3VsdCBpbiB0b19mZXRjaFtpXS5vbGRfc2hhMS4gIENhbGxlcnMgc3VjaAogCSAqIGFzICJnaXQgZmV0Y2giIGNhbiB1c2UgdGhlIHZhbHVlIHRvIHdyaXRlIGZlZWRiYWNrIHRvIHRoZQpAQCAtNTM2LDcgKzU0Myw3IEBACiAJCWdvdG8gZXhpdDsKIAogCXNlbmRsaW5lKGRhdGEsICZjbWRidWYpOwotCXJlY3ZsaW5lX2ZoKGlucHV0LCAmY21kYnVmKTsKKwlyZWN2bGluZV9maChpbnB1dCwgJmNtZGJ1ZiwgbmFtZSk7CiAJaWYgKCFzdHJjbXAoY21kYnVmLmJ1ZiwgIiIpKSB7CiAJCWRhdGEtPm5vX2Rpc2Nvbm5lY3RfcmVxID0gMTsKIAkJaWYgKGRlYnVnKQpAQCAtNjE4LDcgKzYyNSw3IEBACiAJcmV0dXJuIC0xOwogfQogCi1zdGF0aWMgdm9pZCBwdXNoX3VwZGF0ZV9yZWZfc3RhdHVzKHN0cnVjdCBzdHJidWYgKmJ1ZiwKK3N0YXRpYyBpbnQgcHVzaF91cGRhdGVfcmVmX3N0YXR1cyhzdHJ1Y3Qgc3RyYnVmICpidWYsCiAJCQkJICAgc3RydWN0IHJlZiAqKnJlZiwKIAkJCQkgICBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcykKIHsKQEAgLTY2MSw2ICs2NjgsMjEgQEAKIAkJCWZyZWUobXNnKTsKIAkJCW1zZyA9IE5VTEw7CiAJCX0KKwkJZWxzZSBpZiAoIXN0cmNtcChtc2csICJhbHJlYWR5IGV4aXN0cyIpKSB7CisJCQlzdGF0dXMgPSBSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUzsKKwkJCWZyZWUobXNnKTsKKwkJCW1zZyA9IE5VTEw7CisJCX0KKwkJZWxzZSBpZiAoIXN0cmNtcChtc2csICJmZXRjaCBmaXJzdCIpKSB7CisJCQlzdGF0dXMgPSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVDsKKwkJCWZyZWUobXNnKTsKKwkJCW1zZyA9IE5VTEw7CisJCX0KKwkJZWxzZSBpZiAoIXN0cmNtcChtc2csICJuZWVkcyBmb3JjZSIpKSB7CisJCQlzdGF0dXMgPSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRTsKKwkJCWZyZWUobXNnKTsKKwkJCW1zZyA9IE5VTEw7CisJCX0KIAl9CiAKIAlpZiAoKnJlZikKQEAgLTY2OSw3ICs2OTEsNyBAQAogCQkqcmVmID0gZmluZF9yZWZfYnlfbmFtZShyZW1vdGVfcmVmcywgcmVmbmFtZSk7CiAJaWYgKCEqcmVmKSB7CiAJCXdhcm5pbmcoImhlbHBlciByZXBvcnRlZCB1bmV4cGVjdGVkIHN0YXR1cyBvZiAlcyIsIHJlZm5hbWUpOwotCQlyZXR1cm47CisJCXJldHVybiAxOwogCX0KIAogCWlmICgoKnJlZiktPnN0YXR1cyAhPSBSRUZfU1RBVFVTX05PTkUpIHsKQEAgLTY3OCwxMSArNzAwLDEyIEBACiAJCSAqIHN0YXR1cyByZXBvcnRlZCBieSB0aGUgcmVtb3RlIGhlbHBlciBpZiB0aGUgbGF0dGVyIGlzICdubyBtYXRjaCcuCiAJCSAqLwogCQlpZiAoc3RhdHVzID09IFJFRl9TVEFUVVNfTk9ORSkKLQkJCXJldHVybjsKKwkJCXJldHVybiAxOwogCX0KIAogCSgqcmVmKS0+c3RhdHVzID0gc3RhdHVzOwogCSgqcmVmKS0+cmVtb3RlX3N0YXR1cyA9IG1zZzsKKwlyZXR1cm4gIShzdGF0dXMgPT0gUkVGX1NUQVRVU19PSyk7CiB9CiAKIHN0YXRpYyB2b2lkIHB1c2hfdXBkYXRlX3JlZnNfc3RhdHVzKHN0cnVjdCBoZWxwZXJfZGF0YSAqZGF0YSwKQEAgLTY5MSwxMSArNzE0LDI0IEBACiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3QgcmVmICpyZWYgPSByZW1vdGVfcmVmczsKIAlmb3IgKDs7KSB7CisJCWNoYXIgKnByaXZhdGU7CisKIAkJcmVjdmxpbmUoZGF0YSwgJmJ1Zik7CiAJCWlmICghYnVmLmxlbikKIAkJCWJyZWFrOwogCi0JCXB1c2hfdXBkYXRlX3JlZl9zdGF0dXMoJmJ1ZiwgJnJlZiwgcmVtb3RlX3JlZnMpOworCQlpZiAocHVzaF91cGRhdGVfcmVmX3N0YXR1cygmYnVmLCAmcmVmLCByZW1vdGVfcmVmcykpCisJCQljb250aW51ZTsKKworCQlpZiAoIWRhdGEtPnJlZnNwZWNzKQorCQkJY29udGludWU7CisKKwkJLyogcHJvcGFnYXRlIGJhY2sgdGhlIHVwZGF0ZSB0byB0aGUgcmVtb3RlIG5hbWVzcGFjZSAqLworCQlwcml2YXRlID0gYXBwbHlfcmVmc3BlY3MoZGF0YS0+cmVmc3BlY3MsIGRhdGEtPnJlZnNwZWNfbnIsIHJlZi0+bmFtZSk7CisJCWlmICghcHJpdmF0ZSkKKwkJCWNvbnRpbnVlOworCQl1cGRhdGVfcmVmKCJ1cGRhdGUgYnkgaGVscGVyIiwgcHJpdmF0ZSwgcmVmLT5uZXdfc2hhMSwgTlVMTCwgMCwgMCk7CisJCWZyZWUocHJpdmF0ZSk7CiAJfQogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogfQpAQCAtNzIwLDYgKzc1Niw3IEBACiAJCS8qIENoZWNrIGZvciBzdGF0dXNlcyBzZXQgYnkgc2V0X3JlZl9zdGF0dXNfZm9yX3B1c2goKSAqLwogCQlzd2l0Y2ggKHJlZi0+c3RhdHVzKSB7CiAJCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfTk9ORkFTVEZPUldBUkQ6CisJCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfQUxSRUFEWV9FWElTVFM6CiAJCWNhc2UgUkVGX1NUQVRVU19VUFRPREFURToKIAkJCWNvbnRpbnVlOwogCQlkZWZhdWx0OgpAQCAtNzY5LDYgKzgwNiwxNCBAQAogCXN0cnVjdCBzdHJpbmdfbGlzdCByZXZsaXN0X2FyZ3MgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAKKwlpZiAoIWRhdGEtPnJlZnNwZWNzKQorCQlkaWUoInJlbW90ZS1oZWxwZXIgZG9lc24ndCBzdXBwb3J0IHB1c2g7IHJlZnNwZWMgbmVlZGVkIik7CisKKwlpZiAoZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9EUllfUlVOKSB7CisJCWlmIChzZXRfaGVscGVyX29wdGlvbih0cmFuc3BvcnQsICJkcnktcnVuIiwgInRydWUiKSAhPSAwKQorCQkJZGllKCJoZWxwZXIgJXMgZG9lcyBub3Qgc3VwcG9ydCBkcnktcnVuIiwgZGF0YS0+bmFtZSk7CisJfQorCiAJaGVscGVyID0gZ2V0X2hlbHBlcih0cmFuc3BvcnQpOwogCiAJd3JpdGVfY29uc3RhbnQoaGVscGVyLT5pbiwgImV4cG9ydFxuIik7CkBAIC03NzksMjIgKzgyNCwyNSBAQAogCQljaGFyICpwcml2YXRlOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCi0JCWlmICghZGF0YS0+cmVmc3BlY3MpCi0JCQljb250aW51ZTsKKwkJaWYgKHJlZi0+ZGVsZXRpb24pCisJCQlkaWUoInJlbW90ZS1oZWxwZXJzIGRvIG5vdCBzdXBwb3J0IHJlZiBkZWxldGlvbiIpOworCiAJCXByaXZhdGUgPSBhcHBseV9yZWZzcGVjcyhkYXRhLT5yZWZzcGVjcywgZGF0YS0+cmVmc3BlY19uciwgcmVmLT5uYW1lKTsKIAkJaWYgKHByaXZhdGUgJiYgIWdldF9zaGExKHByaXZhdGUsIHNoYTEpKSB7CiAJCQlzdHJidWZfYWRkZigmYnVmLCAiXiVzIiwgcHJpdmF0ZSk7CiAJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJnJldmxpc3RfYXJncywgc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKSk7CisJCQloYXNoY3B5KHJlZi0+b2xkX3NoYTEsIHNoYTEpOwogCQl9CiAJCWZyZWUocHJpdmF0ZSk7CiAKLQkJaWYgKHJlZi0+ZGVsZXRpb24pIHsKKwkJaWYgKHJlZi0+ZGVsZXRpb24pCiAJCQlkaWUoInJlbW90ZS1oZWxwZXJzIGRvIG5vdCBzdXBwb3J0IHJlZiBkZWxldGlvbiIpOwotCQl9CiAKLQkJaWYgKHJlZi0+cGVlcl9yZWYpCisJCWlmIChyZWYtPnBlZXJfcmVmKSB7CisJCQlpZiAoc3RyY21wKHJlZi0+cGVlcl9yZWYtPm5hbWUsIHJlZi0+bmFtZSkpCisJCQkJZGllKCJyZW1vdGUtaGVscGVycyBkbyBub3Qgc3VwcG9ydCBvbGQ6bmV3IHN5bnRheCIpOwogCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZyZXZsaXN0X2FyZ3MsIHJlZi0+cGVlcl9yZWYtPm5hbWUpOwotCisJCX0KIAl9CiAKIAlpZiAoZ2V0X2V4cG9ydGVyKHRyYW5zcG9ydCwgJmV4cG9ydGVyLCAmcmV2bGlzdF9hcmdzKSkKQEAgLTk3NSw3ICsxMDIzLDcgQEAKIAlpbnQgc3JjX2lzX3NvY2s7CiAJLyogSXMgZGVzdGluYXRpb24gc29ja2V0PyAqLwogCWludCBkZXN0X2lzX3NvY2s7Ci0JLyogVHJhbnNmZXIgc3RhdGUgKFRSQU5TRkVSSU5HL0ZMVVNISU5HL0ZJTklTSEVEKSAqLworCS8qIFRyYW5zZmVyIHN0YXRlIChUUkFOU0ZFUlJJTkcvRkxVU0hJTkcvRklOSVNIRUQpICovCiAJaW50IHN0YXRlOwogCS8qIEJ1ZmZlci4gKi8KIAljaGFyIGJ1ZltCVUZGRVJTSVpFXTsKZGlmZiAtLWdpdCBhL3RyYW5zcG9ydC5jIGIvdHJhbnNwb3J0LmMKaW5kZXggYjkzMDZlZi4uZTE1ZGI5OCAxMDA2NDQKLS0tIGEvdHJhbnNwb3J0LmMKKysrIGIvdHJhbnNwb3J0LmMKQEAgLTEwNiw3ICsxMDYsOCBAQAogCQlyZXR1cm47CiAKIAlmb3IgKDs7KSB7Ci0JCWludCBjbXAgPSBjbXAsIGxlbjsKKwkJaW50IGNtcCA9IDA7IC8qIGFzc2lnbmVkIGJlZm9yZSB1c2VkICovCisJCWludCBsZW47CiAKIAkJaWYgKCFmZ2V0cyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBmKSkgewogCQkJZmNsb3NlKGYpOwpAQCAtNTA3LDcgKzUwOCw3IEBACiAJc3RydWN0IHJlZiAqcmVmczsKIAogCWNvbm5lY3Rfc2V0dXAodHJhbnNwb3J0LCBmb3JfcHVzaCwgMCk7Ci0JZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgJnJlZnMsCisJZ2V0X3JlbW90ZV9oZWFkcyhkYXRhLT5mZFswXSwgTlVMTCwgMCwgJnJlZnMsCiAJCQkgZm9yX3B1c2ggPyBSRUZfTk9STUFMIDogMCwgJmRhdGEtPmV4dHJhX2hhdmUpOwogCWRhdGEtPmdvdF9yZW1vdGVfaGVhZHMgPSAxOwogCkBAIC01MTgsMTEgKzUxOSw5IEBACiAJCQkgICAgICAgaW50IG5yX2hlYWRzLCBzdHJ1Y3QgcmVmICoqdG9fZmV0Y2gpCiB7CiAJc3RydWN0IGdpdF90cmFuc3BvcnRfZGF0YSAqZGF0YSA9IHRyYW5zcG9ydC0+ZGF0YTsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3Qgc291Z2h0ID0gU1RSSU5HX0xJU1RfSU5JVF9EVVA7CiAJY29uc3Qgc3RydWN0IHJlZiAqcmVmczsKIAljaGFyICpkZXN0ID0geHN0cmR1cCh0cmFuc3BvcnQtPnVybCk7CiAJc3RydWN0IGZldGNoX3BhY2tfYXJncyBhcmdzOwotCWludCBpOwogCXN0cnVjdCByZWYgKnJlZnNfdG1wID0gTlVMTDsKIAogCW1lbXNldCgmYXJncywgMCwgc2l6ZW9mKGFyZ3MpKTsKQEAgLTUzNSwyOSArNTM0LDMwIEBACiAJYXJncy5xdWlldCA9ICh0cmFuc3BvcnQtPnZlcmJvc2UgPCAwKTsKIAlhcmdzLm5vX3Byb2dyZXNzID0gIXRyYW5zcG9ydC0+cHJvZ3Jlc3M7CiAJYXJncy5kZXB0aCA9IGRhdGEtPm9wdGlvbnMuZGVwdGg7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbnJfaGVhZHM7IGkrKykKLQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZzb3VnaHQsIHRvX2ZldGNoW2ldLT5uYW1lKTsKKwlhcmdzLmNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgPQorCQlkYXRhLT5vcHRpb25zLmNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQ7CiAKIAlpZiAoIWRhdGEtPmdvdF9yZW1vdGVfaGVhZHMpIHsKIAkJY29ubmVjdF9zZXR1cCh0cmFuc3BvcnQsIDAsIDApOwotCQlnZXRfcmVtb3RlX2hlYWRzKGRhdGEtPmZkWzBdLCAmcmVmc190bXAsIDAsIE5VTEwpOworCQlnZXRfcmVtb3RlX2hlYWRzKGRhdGEtPmZkWzBdLCBOVUxMLCAwLCAmcmVmc190bXAsIDAsIE5VTEwpOwogCQlkYXRhLT5nb3RfcmVtb3RlX2hlYWRzID0gMTsKIAl9CiAKIAlyZWZzID0gZmV0Y2hfcGFjaygmYXJncywgZGF0YS0+ZmQsIGRhdGEtPmNvbm4sCiAJCQkgIHJlZnNfdG1wID8gcmVmc190bXAgOiB0cmFuc3BvcnQtPnJlbW90ZV9yZWZzLAotCQkJICBkZXN0LCAmc291Z2h0LCAmdHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlKTsKKwkJCSAgZGVzdCwgdG9fZmV0Y2gsIG5yX2hlYWRzLAorCQkJICAmdHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlKTsKIAljbG9zZShkYXRhLT5mZFswXSk7CiAJY2xvc2UoZGF0YS0+ZmRbMV0pOwogCWlmIChmaW5pc2hfY29ubmVjdChkYXRhLT5jb25uKSkKIAkJcmVmcyA9IE5VTEw7CiAJZGF0YS0+Y29ubiA9IE5VTEw7CiAJZGF0YS0+Z290X3JlbW90ZV9oZWFkcyA9IDA7CisJZGF0YS0+b3B0aW9ucy5zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkID0KKwkJYXJncy5zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkOwogCiAJZnJlZV9yZWZzKHJlZnNfdG1wKTsKIAotCXN0cmluZ19saXN0X2NsZWFyKCZzb3VnaHQsIDApOwogCWZyZWUoZGVzdCk7CiAJcmV0dXJuIChyZWZzID8gMCA6IC0xKTsKIH0KQEAgLTY1OSw3ICs2NTksNyBAQAogCQljb25zdCBjaGFyICptc2c7CiAKIAkJc3RyY3B5KHF1aWNrcmVmLCBzdGF0dXNfYWJicmV2KHJlZi0+b2xkX3NoYTEpKTsKLQkJaWYgKHJlZi0+bm9uZmFzdGZvcndhcmQpIHsKKwkJaWYgKHJlZi0+Zm9yY2VkX3VwZGF0ZSkgewogCQkJc3RyY2F0KHF1aWNrcmVmLCAiLi4uIik7CiAJCQl0eXBlID0gJysnOwogCQkJbXNnID0gImZvcmNlZCB1cGRhdGUiOwpAQCAtNjk1LDYgKzY5NSwxOCBAQAogCQlwcmludF9yZWZfc3RhdHVzKCchJywgIltyZWplY3RlZF0iLCByZWYsIHJlZi0+cGVlcl9yZWYsCiAJCQkJCQkgIm5vbi1mYXN0LWZvcndhcmQiLCBwb3JjZWxhaW4pOwogCQlicmVhazsKKwljYXNlIFJFRl9TVEFUVVNfUkVKRUNUX0FMUkVBRFlfRVhJU1RTOgorCQlwcmludF9yZWZfc3RhdHVzKCchJywgIltyZWplY3RlZF0iLCByZWYsIHJlZi0+cGVlcl9yZWYsCisJCQkJCQkgImFscmVhZHkgZXhpc3RzIiwgcG9yY2VsYWluKTsKKwkJYnJlYWs7CisJY2FzZSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVDoKKwkJcHJpbnRfcmVmX3N0YXR1cygnIScsICJbcmVqZWN0ZWRdIiwgcmVmLCByZWYtPnBlZXJfcmVmLAorCQkJCQkJICJmZXRjaCBmaXJzdCIsIHBvcmNlbGFpbik7CisJCWJyZWFrOworCWNhc2UgUkVGX1NUQVRVU19SRUpFQ1RfTkVFRFNfRk9SQ0U6CisJCXByaW50X3JlZl9zdGF0dXMoJyEnLCAiW3JlamVjdGVkXSIsIHJlZiwgcmVmLT5wZWVyX3JlZiwKKwkJCQkJCSAibmVlZHMgZm9yY2UiLCBwb3JjZWxhaW4pOworCQlicmVhazsKIAljYXNlIFJFRl9TVEFUVVNfUkVNT1RFX1JFSkVDVDoKIAkJcHJpbnRfcmVmX3N0YXR1cygnIScsICJbcmVtb3RlIHJlamVjdGVkXSIsIHJlZiwKIAkJCQkJCSByZWYtPmRlbGV0aW9uID8gTlVMTCA6IHJlZi0+cGVlcl9yZWYsCkBAIC03MTQsNyArNzI2LDcgQEAKIH0KIAogdm9pZCB0cmFuc3BvcnRfcHJpbnRfcHVzaF9zdGF0dXMoY29uc3QgY2hhciAqZGVzdCwgc3RydWN0IHJlZiAqcmVmcywKLQkJCQkgIGludCB2ZXJib3NlLCBpbnQgcG9yY2VsYWluLCBpbnQgKm5vbmZhc3Rmb3J3YXJkKQorCQkJCSAgaW50IHZlcmJvc2UsIGludCBwb3JjZWxhaW4sIHVuc2lnbmVkIGludCAqcmVqZWN0X3JlYXNvbnMpCiB7CiAJc3RydWN0IHJlZiAqcmVmOwogCWludCBuID0gMDsKQEAgLTczMywxOCArNzQ1LDIzIEBACiAJCWlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX09LKQogCQkJbiArPSBwcmludF9vbmVfcHVzaF9zdGF0dXMocmVmLCBkZXN0LCBuLCBwb3JjZWxhaW4pOwogCi0JKm5vbmZhc3Rmb3J3YXJkID0gMDsKKwkqcmVqZWN0X3JlYXNvbnMgPSAwOwogCWZvciAocmVmID0gcmVmczsgcmVmOyByZWYgPSByZWYtPm5leHQpIHsKIAkJaWYgKHJlZi0+c3RhdHVzICE9IFJFRl9TVEFUVVNfTk9ORSAmJgogCQkgICAgcmVmLT5zdGF0dXMgIT0gUkVGX1NUQVRVU19VUFRPREFURSAmJgogCQkgICAgcmVmLT5zdGF0dXMgIT0gUkVGX1NUQVRVU19PSykKIAkJCW4gKz0gcHJpbnRfb25lX3B1c2hfc3RhdHVzKHJlZiwgZGVzdCwgbiwgcG9yY2VsYWluKTsKLQkJaWYgKHJlZi0+c3RhdHVzID09IFJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJEICYmCi0JCSAgICAqbm9uZmFzdGZvcndhcmQgIT0gTk9OX0ZGX0hFQUQpIHsKKwkJaWYgKHJlZi0+c3RhdHVzID09IFJFRl9TVEFUVVNfUkVKRUNUX05PTkZBU1RGT1JXQVJEKSB7CiAJCQlpZiAoaGVhZCAhPSBOVUxMICYmICFzdHJjbXAoaGVhZCwgcmVmLT5uYW1lKSkKLQkJCQkqbm9uZmFzdGZvcndhcmQgPSBOT05fRkZfSEVBRDsKKwkJCQkqcmVqZWN0X3JlYXNvbnMgfD0gUkVKRUNUX05PTl9GRl9IRUFEOwogCQkJZWxzZQotCQkJCSpub25mYXN0Zm9yd2FyZCA9IE5PTl9GRl9PVEhFUjsKKwkJCQkqcmVqZWN0X3JlYXNvbnMgfD0gUkVKRUNUX05PTl9GRl9PVEhFUjsKKwkJfSBlbHNlIGlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9BTFJFQURZX0VYSVNUUykgeworCQkJKnJlamVjdF9yZWFzb25zIHw9IFJFSkVDVF9BTFJFQURZX0VYSVNUUzsKKwkJfSBlbHNlIGlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9GRVRDSF9GSVJTVCkgeworCQkJKnJlamVjdF9yZWFzb25zIHw9IFJFSkVDVF9GRVRDSF9GSVJTVDsKKwkJfSBlbHNlIGlmIChyZWYtPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9ORUVEU19GT1JDRSkgeworCQkJKnJlamVjdF9yZWFzb25zIHw9IFJFSkVDVF9ORUVEU19GT1JDRTsKIAkJfQogCX0KIH0KQEAgLTc4Miw3ICs3OTksNyBAQAogCQlzdHJ1Y3QgcmVmICp0bXBfcmVmczsKIAkJY29ubmVjdF9zZXR1cCh0cmFuc3BvcnQsIDEsIDApOwogCi0JCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sICZ0bXBfcmVmcywgUkVGX05PUk1BTCwgTlVMTCk7CisJCWdldF9yZW1vdGVfaGVhZHMoZGF0YS0+ZmRbMF0sIE5VTEwsIDAsICZ0bXBfcmVmcywgUkVGX05PUk1BTCwgTlVMTCk7CiAJCWRhdGEtPmdvdF9yZW1vdGVfaGVhZHMgPSAxOwogCX0KIApAQCAtMTAyOSwxMSArMTA0Niw2NyBAQAogCWRpZSgiQWJvcnRpbmcuIik7CiB9CiAKK3N0YXRpYyBpbnQgcnVuX3ByZV9wdXNoX2hvb2soc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0LAorCQkJICAgICBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcykKK3sKKwlpbnQgcmV0ID0gMCwgeDsKKwlzdHJ1Y3QgcmVmICpyOworCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHByb2M7CisJc3RydWN0IHN0cmJ1ZiBidWY7CisJY29uc3QgY2hhciAqYXJndls0XTsKKworCWlmICghKGFyZ3ZbMF0gPSBmaW5kX2hvb2soInByZS1wdXNoIikpKQorCQlyZXR1cm4gMDsKKworCWFyZ3ZbMV0gPSB0cmFuc3BvcnQtPnJlbW90ZS0+bmFtZTsKKwlhcmd2WzJdID0gdHJhbnNwb3J0LT51cmw7CisJYXJndlszXSA9IE5VTEw7CisKKwltZW1zZXQoJnByb2MsIDAsIHNpemVvZihwcm9jKSk7CisJcHJvYy5hcmd2ID0gYXJndjsKKwlwcm9jLmluID0gLTE7CisKKwlpZiAoc3RhcnRfY29tbWFuZCgmcHJvYykpIHsKKwkJZmluaXNoX2NvbW1hbmQoJnByb2MpOworCQlyZXR1cm4gLTE7CisJfQorCisJc3RyYnVmX2luaXQoJmJ1ZiwgMjU2KTsKKworCWZvciAociA9IHJlbW90ZV9yZWZzOyByOyByID0gci0+bmV4dCkgeworCQlpZiAoIXItPnBlZXJfcmVmKSBjb250aW51ZTsKKwkJaWYgKHItPnN0YXR1cyA9PSBSRUZfU1RBVFVTX1JFSkVDVF9OT05GQVNURk9SV0FSRCkgY29udGludWU7CisJCWlmIChyLT5zdGF0dXMgPT0gUkVGX1NUQVRVU19VUFRPREFURSkgY29udGludWU7CisKKwkJc3RyYnVmX3Jlc2V0KCZidWYpOworCQlzdHJidWZfYWRkZiggJmJ1ZiwgIiVzICVzICVzICVzXG4iLAorCQkJIHItPnBlZXJfcmVmLT5uYW1lLCBzaGExX3RvX2hleChyLT5uZXdfc2hhMSksCisJCQkgci0+bmFtZSwgc2hhMV90b19oZXgoci0+b2xkX3NoYTEpKTsKKworCQlpZiAod3JpdGVfaW5fZnVsbChwcm9jLmluLCBidWYuYnVmLCBidWYubGVuKSAhPSBidWYubGVuKSB7CisJCQlyZXQgPSAtMTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisKKwl4ID0gY2xvc2UocHJvYy5pbik7CisJaWYgKCFyZXQpCisJCXJldCA9IHg7CisKKwl4ID0gZmluaXNoX2NvbW1hbmQoJnByb2MpOworCWlmICghcmV0KQorCQlyZXQgPSB4OworCisJcmV0dXJuIHJldDsKK30KKwogaW50IHRyYW5zcG9ydF9wdXNoKHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCwKIAkJICAgaW50IHJlZnNwZWNfbnIsIGNvbnN0IGNoYXIgKipyZWZzcGVjLCBpbnQgZmxhZ3MsCi0JCSAgIGludCAqbm9uZmFzdGZvcndhcmQpCisJCSAgIHVuc2lnbmVkIGludCAqcmVqZWN0X3JlYXNvbnMpCiB7Ci0JKm5vbmZhc3Rmb3J3YXJkID0gMDsKKwkqcmVqZWN0X3JlYXNvbnMgPSAwOwogCXRyYW5zcG9ydF92ZXJpZnlfcmVtb3RlX25hbWVzKHJlZnNwZWNfbnIsIHJlZnNwZWMpOwogCiAJaWYgKHRyYW5zcG9ydC0+cHVzaCkgewpAQCAtMTA1OSw2ICsxMTMyLDggQEAKIAkJCW1hdGNoX2ZsYWdzIHw9IE1BVENIX1JFRlNfTUlSUk9SOwogCQlpZiAoZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9QUlVORSkKIAkJCW1hdGNoX2ZsYWdzIHw9IE1BVENIX1JFRlNfUFJVTkU7CisJCWlmIChmbGFncyAmIFRSQU5TUE9SVF9QVVNIX0ZPTExPV19UQUdTKQorCQkJbWF0Y2hfZmxhZ3MgfD0gTUFUQ0hfUkVGU19GT0xMT1dfVEFHUzsKIAogCQlpZiAobWF0Y2hfcHVzaF9yZWZzKGxvY2FsX3JlZnMsICZyZW1vdGVfcmVmcywKIAkJCQkgICAgcmVmc3BlY19uciwgcmVmc3BlYywgbWF0Y2hfZmxhZ3MpKSB7CkBAIC0xMDY5LDYgKzExNDQsMTAgQEAKIAkJCWZsYWdzICYgVFJBTlNQT1JUX1BVU0hfTUlSUk9SLAogCQkJZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9GT1JDRSk7CiAKKwkJaWYgKCEoZmxhZ3MgJiBUUkFOU1BPUlRfUFVTSF9OT19IT09LKSkKKwkJCWlmIChydW5fcHJlX3B1c2hfaG9vayh0cmFuc3BvcnQsIHJlbW90ZV9yZWZzKSkKKwkJCQlyZXR1cm4gLTE7CisKIAkJaWYgKChmbGFncyAmIFRSQU5TUE9SVF9SRUNVUlNFX1NVQk1PRFVMRVNfT05fREVNQU5EKSAmJiAhaXNfYmFyZV9yZXBvc2l0b3J5KCkpIHsKIAkJCXN0cnVjdCByZWYgKnJlZiA9IHJlbW90ZV9yZWZzOwogCQkJZm9yICg7IHJlZjsgcmVmID0gcmVmLT5uZXh0KQpAQCAtMTA5OSw3ICsxMTc4LDcgQEAKIAkJaWYgKCFxdWlldCB8fCBlcnIpCiAJCQl0cmFuc3BvcnRfcHJpbnRfcHVzaF9zdGF0dXModHJhbnNwb3J0LT51cmwsIHJlbW90ZV9yZWZzLAogCQkJCQl2ZXJib3NlIHwgcG9yY2VsYWluLCBwb3JjZWxhaW4sCi0JCQkJCW5vbmZhc3Rmb3J3YXJkKTsKKwkJCQkJcmVqZWN0X3JlYXNvbnMpOwogCiAJCWlmIChmbGFncyAmIFRSQU5TUE9SVF9QVVNIX1NFVF9VUFNUUkVBTSkKIAkJCXNldF91cHN0cmVhbXModHJhbnNwb3J0LCByZW1vdGVfcmVmcywgcHJldGVuZCk7CkBAIC0xMTUzLDcgKzEyMzIsNyBAQAogCQkgKiB0aGVuIGxvY2FsIGFuZCByZW1vdGUgcmVmcyBhcmUgbGlrZWx5IHRvIHN0aWxsIGJlIGVxdWFsLgogCQkgKiBKdXN0IGZlZWQgdGhlbSBhbGwgdG8gdGhlIGZldGNoIG1ldGhvZCBpbiB0aGF0IGNhc2UuCiAJCSAqIFRoaXMgY29uZGl0aW9uIHNob3VsZG4ndCBiZSBtZXQgaW4gYSBub24tZGVlcGVuaW5nIGZldGNoCi0JCSAqIChzZWUgYnVpbHRpbi1mZXRjaC5jOnF1aWNrZmV0Y2goKSkuCisJCSAqIChzZWUgYnVpbHRpbi9mZXRjaC5jOnF1aWNrZmV0Y2goKSkuCiAJCSAqLwogCQloZWFkcyA9IHhtYWxsb2MobnJfcmVmcyAqIHNpemVvZigqaGVhZHMpKTsKIAkJZm9yIChybSA9IHJlZnM7IHJtOyBybSA9IHJtLT5uZXh0KQpkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LmggYi90cmFuc3BvcnQuaAppbmRleCA0YTYxYzBjLi5lYTcwZWE3IDEwMDY0NAotLS0gYS90cmFuc3BvcnQuaAorKysgYi90cmFuc3BvcnQuaApAQCAtOCw2ICs4LDggQEAKIAl1bnNpZ25lZCB0aGluIDogMTsKIAl1bnNpZ25lZCBrZWVwIDogMTsKIAl1bnNpZ25lZCBmb2xsb3d0YWdzIDogMTsKKwl1bnNpZ25lZCBjaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkIDogMTsKKwl1bnNpZ25lZCBzZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkIDogMTsKIAlpbnQgZGVwdGg7CiAJY29uc3QgY2hhciAqdXBsb2FkcGFjazsKIAljb25zdCBjaGFyICpyZWNlaXZlcGFjazsKQEAgLTc0LDcgKzc2LDcgQEAKIAkJICAgICAgIGNvbnN0IGNoYXIgKmV4ZWN1dGFibGUsIGludCBmZFsyXSk7CiAKIAkvKiogZ2V0X3JlZnNfbGlzdCgpLCBmZXRjaCgpLCBhbmQgcHVzaF9yZWZzKCkgY2FuIGtlZXAKLQkgKiByZXNvdXJjZXMgKHN1Y2ggYXMgYSBjb25uZWN0aW9uKSByZXNlcnZlZCBmb3IgZnV0aGVyCisJICogcmVzb3VyY2VzIChzdWNoIGFzIGEgY29ubmVjdGlvbikgcmVzZXJ2ZWQgZm9yIGZ1cnRoZXIKIAkgKiB1c2UuIGRpc2Nvbm5lY3QoKSByZWxlYXNlcyB0aGVzZSByZXNvdXJjZXMuCiAJICoqLwogCWludCAoKmRpc2Nvbm5lY3QpKHN0cnVjdCB0cmFuc3BvcnQgKmNvbm5lY3Rpb24pOwpAQCAtMTA0LDYgKzEwNiw4IEBACiAjZGVmaW5lIFRSQU5TUE9SVF9SRUNVUlNFX1NVQk1PRFVMRVNfQ0hFQ0sgNjQKICNkZWZpbmUgVFJBTlNQT1JUX1BVU0hfUFJVTkUgMTI4CiAjZGVmaW5lIFRSQU5TUE9SVF9SRUNVUlNFX1NVQk1PRFVMRVNfT05fREVNQU5EIDI1NgorI2RlZmluZSBUUkFOU1BPUlRfUFVTSF9OT19IT09LIDUxMgorI2RlZmluZSBUUkFOU1BPUlRfUFVTSF9GT0xMT1dfVEFHUyAxMDI0CiAKICNkZWZpbmUgVFJBTlNQT1JUX1NVTU1BUllfV0lEVEggKDIgKiBERUZBVUxUX0FCQlJFViArIDMpCiAjZGVmaW5lIFRSQU5TUE9SVF9TVU1NQVJZKHgpIChpbnQpKFRSQU5TUE9SVF9TVU1NQVJZX1dJRFRIICsgc3RybGVuKHgpIC0gZ2V0dGV4dF93aWR0aCh4KSksICh4KQpAQCAtMTQwLDExICsxNDQsMTUgQEAKIHZvaWQgdHJhbnNwb3J0X3NldF92ZXJib3NpdHkoc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0LCBpbnQgdmVyYm9zaXR5LAogCWludCBmb3JjZV9wcm9ncmVzcyk7CiAKLSNkZWZpbmUgTk9OX0ZGX0hFQUQgMQotI2RlZmluZSBOT05fRkZfT1RIRVIgMgorI2RlZmluZSBSRUpFQ1RfTk9OX0ZGX0hFQUQgICAgIDB4MDEKKyNkZWZpbmUgUkVKRUNUX05PTl9GRl9PVEhFUiAgICAweDAyCisjZGVmaW5lIFJFSkVDVF9BTFJFQURZX0VYSVNUUyAgMHgwNAorI2RlZmluZSBSRUpFQ1RfRkVUQ0hfRklSU1QgICAgIDB4MDgKKyNkZWZpbmUgUkVKRUNUX05FRURTX0ZPUkNFICAgICAweDEwCisKIGludCB0cmFuc3BvcnRfcHVzaChzdHJ1Y3QgdHJhbnNwb3J0ICpjb25uZWN0aW9uLAogCQkgICBpbnQgcmVmc3BlY19uciwgY29uc3QgY2hhciAqKnJlZnNwZWMsIGludCBmbGFncywKLQkJICAgaW50ICogbm9uZmFzdGZvcndhcmQpOworCQkgICB1bnNpZ25lZCBpbnQgKiByZWplY3RfcmVhc29ucyk7CiAKIGNvbnN0IHN0cnVjdCByZWYgKnRyYW5zcG9ydF9nZXRfcmVtb3RlX3JlZnMoc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKIApAQCAtMTYyLDcgKzE3MCw3IEBACiBpbnQgdHJhbnNwb3J0X2hlbHBlcl9pbml0KHN0cnVjdCB0cmFuc3BvcnQgKnRyYW5zcG9ydCwgY29uc3QgY2hhciAqbmFtZSk7CiBpbnQgYmlkaXJlY3Rpb25hbF90cmFuc2Zlcl9sb29wKGludCBpbnB1dCwgaW50IG91dHB1dCk7CiAKLS8qIGNvbW1vbiBtZXRob2RzIHVzZWQgYnkgdHJhbnNwb3J0LmMgYW5kIGJ1aWx0aW4tc2VuZC1wYWNrLmMgKi8KKy8qIGNvbW1vbiBtZXRob2RzIHVzZWQgYnkgdHJhbnNwb3J0LmMgYW5kIGJ1aWx0aW4vc2VuZC1wYWNrLmMgKi8KIHZvaWQgdHJhbnNwb3J0X3ZlcmlmeV9yZW1vdGVfbmFtZXMoaW50IG5yX2hlYWRzLCBjb25zdCBjaGFyICoqaGVhZHMpOwogCiB2b2lkIHRyYW5zcG9ydF91cGRhdGVfdHJhY2tpbmdfcmVmKHN0cnVjdCByZW1vdGUgKnJlbW90ZSwgc3RydWN0IHJlZiAqcmVmLCBpbnQgdmVyYm9zZSk7CkBAIC0xNzAsNyArMTc4LDcgQEAKIGludCB0cmFuc3BvcnRfcmVmc19wdXNoZWQoc3RydWN0IHJlZiAqcmVmKTsKIAogdm9pZCB0cmFuc3BvcnRfcHJpbnRfcHVzaF9zdGF0dXMoY29uc3QgY2hhciAqZGVzdCwgc3RydWN0IHJlZiAqcmVmcywKLQkJICBpbnQgdmVyYm9zZSwgaW50IHBvcmNlbGFpbiwgaW50ICpub25mYXN0Zm9yd2FyZCk7CisJCSAgaW50IHZlcmJvc2UsIGludCBwb3JjZWxhaW4sIHVuc2lnbmVkIGludCAqcmVqZWN0X3JlYXNvbnMpOwogCiB0eXBlZGVmIHZvaWQgYWx0ZXJuYXRlX3JlZl9mbihjb25zdCBzdHJ1Y3QgcmVmICosIHZvaWQgKik7CiBleHRlcm4gdm9pZCBmb3JfZWFjaF9hbHRlcm5hdGVfcmVmKGFsdGVybmF0ZV9yZWZfZm4sIHZvaWQgKik7CmRpZmYgLS1naXQgYS90cmVlLXdhbGsuYyBiL3RyZWUtd2Fsay5jCmluZGV4IDNmNTRjMDIuLjZlMzBlZjkgMTAwNjQ0Ci0tLSBhL3RyZWUtd2Fsay5jCisrKyBiL3RyZWUtd2Fsay5jCkBAIC01NzMsNiArNTczLDU0IEBACiB9CiAKIC8qCisgKiBQZXJmb3JtIG1hdGNoaW5nIG9uIHRoZSBsZWFkaW5nIG5vbi13aWxkY2FyZCBwYXJ0IG9mCisgKiBwYXRoc3BlYy4gaXRlbS0+bm93aWxkY2FyZF9sZW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4gUmV0dXJuCisgKiBub24temVybyBpZiBiYXNlIGlzIG1hdGNoZWQuCisgKi8KK3N0YXRpYyBpbnQgbWF0Y2hfd2lsZGNhcmRfYmFzZShjb25zdCBzdHJ1Y3QgcGF0aHNwZWNfaXRlbSAqaXRlbSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpiYXNlLCBpbnQgYmFzZWxlbiwKKwkJCSAgICAgICBpbnQgKm1hdGNoZWQpCit7CisJY29uc3QgY2hhciAqbWF0Y2ggPSBpdGVtLT5tYXRjaDsKKwkvKiB0aGUgd2lsZGNhcmQgcGFydCBpcyBub3QgY29uc2lkZXJlZCBpbiB0aGlzIGZ1bmN0aW9uICovCisJaW50IG1hdGNobGVuID0gaXRlbS0+bm93aWxkY2FyZF9sZW47CisKKwlpZiAoYmFzZWxlbikgeworCQlpbnQgZGlybGVuOworCQkvKgorCQkgKiBSZXR1cm4gZWFybHkgaWYgYmFzZSBpcyBsb25nZXIgdGhhbiB0aGUKKwkJICogbm9uLXdpbGRjYXJkIHBhcnQgYnV0IGl0IGRvZXMgbm90IG1hdGNoLgorCQkgKi8KKwkJaWYgKGJhc2VsZW4gPj0gbWF0Y2hsZW4pIHsKKwkJCSptYXRjaGVkID0gbWF0Y2hsZW47CisJCQlyZXR1cm4gIXN0cm5jbXAoYmFzZSwgbWF0Y2gsIG1hdGNobGVuKTsKKwkJfQorCisJCWRpcmxlbiA9IG1hdGNobGVuOworCQl3aGlsZSAoZGlybGVuICYmIG1hdGNoW2RpcmxlbiAtIDFdICE9ICcvJykKKwkJCWRpcmxlbi0tOworCisJCS8qCisJCSAqIFJldHVybiBlYXJseSBpZiBiYXNlIGlzIHNob3J0ZXIgdGhhbiB0aGUKKwkJICogbm9uLXdpbGRjYXJkIHBhcnQgYnV0IGl0IGRvZXMgbm90IG1hdGNoLiBOb3RlIHRoYXQKKwkJICogYmFzZSBlbmRzIHdpdGggJy8nIHNvIHdlIGFyZSBzdXJlIGl0IHJlYWxseSBtYXRjaGVzCisJCSAqIGRpcmVjdG9yeQorCQkgKi8KKwkJaWYgKHN0cm5jbXAoYmFzZSwgbWF0Y2gsIGJhc2VsZW4pKQorCQkJcmV0dXJuIDA7CisJCSptYXRjaGVkID0gYmFzZWxlbjsKKwl9IGVsc2UKKwkJKm1hdGNoZWQgPSAwOworCS8qCisJICogd2UgY291bGQgaGF2ZSBjaGVja2VkIGVudHJ5IGFnYWluc3QgdGhlIG5vbi13aWxkY2FyZCBwYXJ0CisJICogdGhhdCBpcyBub3QgaW4gYmFzZSBhbmQgZG9lcyBzaW1pbGFyIG5ldmVyX2ludGVyZXN0aW5nCisJICogb3B0aW1pemF0aW9uIGFzIGluIG1hdGNoX2VudHJ5LiBGb3Igbm93IGp1c3QgYmUgaGFwcHkgd2l0aAorCSAqIGJhc2UgY29tcGFyaXNvbi4KKwkgKi8KKwlyZXR1cm4gZW50cnlfaW50ZXJlc3Rpbmc7Cit9CisKKy8qCiAgKiBJcyBhIHRyZWUgZW50cnkgaW50ZXJlc3RpbmcgZ2l2ZW4gdGhlIHBhdGhzcGVjIHdlIGhhdmU/CiAgKgogICogUHJlLWNvbmRpdGlvbjogZWl0aGVyIGJhc2VsZW4gPT0gYmFzZV9vZmZzZXQgKGkuZS4gZW1wdHkgcGF0aCkKQEAgLTYwMiw3ICs2NTAsNyBAQAogCQljb25zdCBzdHJ1Y3QgcGF0aHNwZWNfaXRlbSAqaXRlbSA9IHBzLT5pdGVtcytpOwogCQljb25zdCBjaGFyICptYXRjaCA9IGl0ZW0tPm1hdGNoOwogCQljb25zdCBjaGFyICpiYXNlX3N0ciA9IGJhc2UtPmJ1ZiArIGJhc2Vfb2Zmc2V0OwotCQlpbnQgbWF0Y2hsZW4gPSBpdGVtLT5sZW47CisJCWludCBtYXRjaGxlbiA9IGl0ZW0tPmxlbiwgbWF0Y2hlZCA9IDA7CiAKIAkJaWYgKGJhc2VsZW4gPj0gbWF0Y2hsZW4pIHsKIAkJCS8qIElmIGl0IGRvZXNuJ3QgbWF0Y2gsIG1vdmUgYWxvbmcuLi4gKi8KQEAgLTYyNiw4ICs2NzQsMTAgQEAKIAkJCQkJJm5ldmVyX2ludGVyZXN0aW5nKSkKIAkJCQlyZXR1cm4gZW50cnlfaW50ZXJlc3Rpbmc7CiAKLQkJCWlmIChpdGVtLT51c2Vfd2lsZGNhcmQpIHsKLQkJCQlpZiAoIWZubWF0Y2gobWF0Y2ggKyBiYXNlbGVuLCBlbnRyeS0+cGF0aCwgMCkpCisJCQlpZiAoaXRlbS0+bm93aWxkY2FyZF9sZW4gPCBpdGVtLT5sZW4pIHsKKwkJCQlpZiAoIWdpdF9mbm1hdGNoKG1hdGNoICsgYmFzZWxlbiwgZW50cnktPnBhdGgsCisJCQkJCQkgaXRlbS0+ZmxhZ3MgJiBQQVRIU1BFQ19PTkVTVEFSID8gR0ZOTV9PTkVTVEFSIDogMCwKKwkJCQkJCSBpdGVtLT5ub3dpbGRjYXJkX2xlbiAtIGJhc2VsZW4pKQogCQkJCQlyZXR1cm4gZW50cnlfaW50ZXJlc3Rpbmc7CiAKIAkJCQkvKgpAQCAtNjQyLDE3ICs2OTIsMzQgQEAKIAkJfQogCiBtYXRjaF93aWxkY2FyZHM6Ci0JCWlmICghaXRlbS0+dXNlX3dpbGRjYXJkKQorCQlpZiAoaXRlbS0+bm93aWxkY2FyZF9sZW4gPT0gaXRlbS0+bGVuKQogCQkJY29udGludWU7CiAKKwkJaWYgKGl0ZW0tPm5vd2lsZGNhcmRfbGVuICYmCisJCSAgICAhbWF0Y2hfd2lsZGNhcmRfYmFzZShpdGVtLCBiYXNlX3N0ciwgYmFzZWxlbiwgJm1hdGNoZWQpKQorCQkJcmV0dXJuIGVudHJ5X25vdF9pbnRlcmVzdGluZzsKKwogCQkvKgogCQkgKiBDb25jYXRlbmF0ZSBiYXNlIGFuZCBlbnRyeS0+cGF0aCBpbnRvIG9uZSBhbmQgZG8KIAkJICogZm5tYXRjaCgpIG9uIGl0LgorCQkgKgorCQkgKiBXaGlsZSB3ZSBjb3VsZCBhdm9pZCBjb25jYXRlbmF0aW9uIGluIGNlcnRhaW4gY2FzZXMKKwkJICogWzFdLCB3aGljaCBzYXZlcyBhIG1lbWNweSBhbmQgcG90ZW50aWFsbHkgYQorCQkgKiByZWFsbG9jLCBpdCB0dXJucyBvdXQgbm90IHdvcnRoIGl0LiBNZWFzdXJlbWVudCBvbgorCQkgKiBsaW51eC0yLjYgZG9lcyBub3Qgc2hvdyBhbnkgY2xlYXIgaW1wcm92ZW1lbnRzLAorCQkgKiBwYXJ0bHkgYmVjYXVzZSBvZiB0aGUgbm93aWxkY2FyZF9sZW4gb3B0aW1pemF0aW9uCisJCSAqIGluIGdpdF9mbm1hdGNoKCkuIEF2b2lkIG1pY3JvLW9wdGltaXphdGlvbnMgaGVyZS4KKwkJICoKKwkJICogWzFdIGlmIG1hdGNoX3dpbGRjYXJkX2Jhc2UoKSBzYXlzIHRoZSBiYXNlCisJCSAqIGRpcmVjdG9yeSBpcyBhbHJlYWR5IG1hdGNoZWQsIHdlIG9ubHkgbmVlZCB0byBtYXRjaAorCQkgKiB0aGUgcmVzdCwgd2hpY2ggaXMgc2hvcnRlciBzbyBfaW4gdGhlb3J5XyBmYXN0ZXIuCiAJCSAqLwogCiAJCXN0cmJ1Zl9hZGQoYmFzZSwgZW50cnktPnBhdGgsIHBhdGhsZW4pOwogCi0JCWlmICghZm5tYXRjaChtYXRjaCwgYmFzZS0+YnVmICsgYmFzZV9vZmZzZXQsIDApKSB7CisJCWlmICghZ2l0X2ZubWF0Y2gobWF0Y2gsIGJhc2UtPmJ1ZiArIGJhc2Vfb2Zmc2V0LAorCQkJCSBpdGVtLT5mbGFncyAmIFBBVEhTUEVDX09ORVNUQVIgPyBHRk5NX09ORVNUQVIgOiAwLAorCQkJCSBpdGVtLT5ub3dpbGRjYXJkX2xlbikpIHsKIAkJCXN0cmJ1Zl9zZXRsZW4oYmFzZSwgYmFzZV9vZmZzZXQgKyBiYXNlbGVuKTsKIAkJCXJldHVybiBlbnRyeV9pbnRlcmVzdGluZzsKIAkJfQpkaWZmIC0tZ2l0IGEvdHJlZS13YWxrLmggYi90cmVlLXdhbGsuaAppbmRleCAyYmYwZGI5Li5hZTA0YjY0IDEwMDY0NAotLS0gYS90cmVlLXdhbGsuaAorKysgYi90cmVlLXdhbGsuaApAQCAtNDYsNyArNDYsNyBAQAogCWludCBwYXRobGVuOwogCXN0cnVjdCBwYXRoc3BlYyAqcGF0aHNwZWM7CiAKLQl1bnNpZ25lZCBsb25nIGNvbmZsaWN0czsKKwl1bnNpZ25lZCBsb25nIGRmX2NvbmZsaWN0czsKIAl0cmF2ZXJzZV9jYWxsYmFja190IGZuOwogCXZvaWQgKmRhdGE7CiAJaW50IHNob3dfYWxsX2Vycm9yczsKZGlmZiAtLWdpdCBhL3VucGFjay10cmVlcy5jIGIvdW5wYWNrLXRyZWVzLmMKaW5kZXggNmQ5NjM2Ni4uYjI3ZjJhNiAxMDA2NDQKLS0tIGEvdW5wYWNrLXRyZWVzLmMKKysrIGIvdW5wYWNrLXRyZWVzLmMKQEAgLTExNiwxNCArMTE2LDIwIEBACiAJCQlBRERfQ0FDSEVfT0tfVE9fQUREIHwgQUREX0NBQ0hFX09LX1RPX1JFUExBQ0UpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRfZW50cnkoc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAotCXVuc2lnbmVkIGludCBzZXQsIHVuc2lnbmVkIGludCBjbGVhcikKK3N0YXRpYyBzdHJ1Y3QgY2FjaGVfZW50cnkgKmR1cF9lbnRyeShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQogewogCXVuc2lnbmVkIGludCBzaXplID0gY2Vfc2l6ZShjZSk7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICpuZXcgPSB4bWFsbG9jKHNpemUpOwogCiAJbWVtY3B5KG5ldywgY2UsIHNpemUpOwotCWRvX2FkZF9lbnRyeShvLCBuZXcsIHNldCwgY2xlYXIpOworCXJldHVybiBuZXc7Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9lbnRyeShzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8sCisJCSAgICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCSAgICAgIHVuc2lnbmVkIGludCBzZXQsIHVuc2lnbmVkIGludCBjbGVhcikKK3sKKwlkb19hZGRfZW50cnkobywgZHVwX2VudHJ5KGNlKSwgc2V0LCBjbGVhcik7CiB9CiAKIC8qCkBAIC0yMzUsOCArMjQxLDExIEBACiAJcmV0dXJuIGVycnMgIT0gMDsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfc3BhcnNlKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7Ci1zdGF0aWMgaW50IHZlcmlmeV9hYnNlbnRfc3BhcnNlKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfc3BhcnNlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworc3RhdGljIGludCB2ZXJpZnlfYWJzZW50X3NwYXJzZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCWVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzLAorCQkJCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7CiAKIHN0YXRpYyBpbnQgYXBwbHlfc3BhcnNlX2NoZWNrb3V0KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKQEAgLTI5MSw3ICszMDAsOCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBjYWxsX3VucGFja19mbihzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyBpbmxpbmUgaW50IGNhbGxfdW5wYWNrX2ZuKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJCQkJIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlpbnQgcmV0ID0gby0+Zm4oc3JjLCBvKTsKIAlpZiAocmV0ID4gMCkKQEAgLTMyMCw3ICszMzAsNyBAQAogCQlpbmRleC0+Y2FjaGVbaV0tPmNlX2ZsYWdzICY9IH4oQ0VfVU5QQUNLRUQgfCBDRV9BRERFRCB8IENFX05FV19TS0lQX1dPUktUUkVFKTsKIH0KIAotc3RhdGljIGludCBsb2NhdGVfaW5fc3JjX2luZGV4KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCitzdGF0aWMgaW50IGxvY2F0ZV9pbl9zcmNfaW5kZXgoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKIAkJCSAgICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJc3RydWN0IGluZGV4X3N0YXRlICppbmRleCA9IG8tPnNyY19pbmRleDsKQEAgLTM4OCw3ICszOTgsNyBAQAogc3RhdGljIGludCB1bnBhY2tfaW5kZXhfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKIAkJCSAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnNyY1tNQVhfVU5QQUNLX1RSRUVTICsgMV0gPSB7IE5VTEwsIH07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpzcmNbTUFYX1VOUEFDS19UUkVFUyArIDFdID0geyBOVUxMLCB9OwogCWludCByZXQ7CiAKIAlzcmNbMF0gPSBjZTsKQEAgLTQ1NCw3ICs0NjQsNyBAQAogCW5ld2luZm8ucGF0aHNwZWMgPSBpbmZvLT5wYXRoc3BlYzsKIAluZXdpbmZvLm5hbWUgPSAqcDsKIAluZXdpbmZvLnBhdGhsZW4gKz0gdHJlZV9lbnRyeV9sZW4ocCkgKyAxOwotCW5ld2luZm8uY29uZmxpY3RzIHw9IGRmX2NvbmZsaWN0czsKKwluZXdpbmZvLmRmX2NvbmZsaWN0cyB8PSBkZl9jb25mbGljdHM7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrLCBkaXJtYXNrID4+PSAxKSB7CiAJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEgPSBOVUxMOwpAQCAtNTU1LDE3ICs1NjUsMTIgQEAKIHsKIAlpbnQgaTsKIAlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8gPSBpbmZvLT5kYXRhOwotCXVuc2lnbmVkIGxvbmcgY29uZmxpY3RzOworCXVuc2lnbmVkIGxvbmcgY29uZmxpY3RzID0gaW5mby0+ZGZfY29uZmxpY3RzIHwgZGlybWFzazsKIAogCS8qIERvIHdlIGhhdmUgKm9ubHkqIGRpcmVjdG9yaWVzPyBOb3RoaW5nIHRvIGRvICovCiAJaWYgKG1hc2sgPT0gZGlybWFzayAmJiAhc3JjWzBdKQogCQlyZXR1cm4gMDsKIAotCWNvbmZsaWN0cyA9IGluZm8tPmNvbmZsaWN0czsKLQlpZiAoby0+bWVyZ2UpCi0JCWNvbmZsaWN0cyA+Pj0gMTsKLQljb25mbGljdHMgfD0gZGlybWFzazsKLQogCS8qCiAJICogT2ssIHdlJ3ZlIGZpbGxlZCBpbiB1cCB0byBhbnkgcG90ZW50aWFsIGluZGV4IGVudHJ5IGluIHNyY1swXSwKIAkgKiBub3cgZG8gdGhlIHJlc3QuCkBAIC01OTAsOCArNTk1LDE2IEBACiAJCXNyY1tpICsgby0+bWVyZ2VdID0gY3JlYXRlX2NlX2VudHJ5KGluZm8sIG5hbWVzICsgaSwgc3RhZ2UpOwogCX0KIAotCWlmIChvLT5tZXJnZSkKLQkJcmV0dXJuIGNhbGxfdW5wYWNrX2ZuKHNyYywgbyk7CisJaWYgKG8tPm1lcmdlKSB7CisJCWludCByYyA9IGNhbGxfdW5wYWNrX2ZuKChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqKXNyYywKKwkJCQkJbyk7CisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBzcmNbaSArIG8tPm1lcmdlXTsKKwkJCWlmIChjZSAhPSBvLT5kZl9jb25mbGljdF9lbnRyeSkKKwkJCQlmcmVlKGNlKTsKKwkJfQorCQlyZXR1cm4gcmM7CisJfQogCiAJZm9yIChpID0gMDsgaSA8IG47IGkrKykKIAkJaWYgKHNyY1tpXSAmJiBzcmNbaV0gIT0gby0+ZGZfY29uZmxpY3RfZW50cnkpCkBAIC03ODksMTMgKzgwMiw2IEBACiAKIAkvKiBOb3cgaGFuZGxlIGFueSBkaXJlY3Rvcmllcy4uICovCiAJaWYgKGRpcm1hc2spIHsKLQkJdW5zaWduZWQgbG9uZyBjb25mbGljdHMgPSBtYXNrICYgfmRpcm1hc2s7Ci0JCWlmIChvLT5tZXJnZSkgewotCQkJY29uZmxpY3RzIDw8PSAxOwotCQkJaWYgKHNyY1swXSkKLQkJCQljb25mbGljdHMgfD0gMTsKLQkJfQotCiAJCS8qIHNwZWNpYWwgY2FzZTogImRpZmYtaW5kZXggLS1jYWNoZWQiIGxvb2tpbmcgYXQgYSB0cmVlICovCiAJCWlmIChvLT5kaWZmX2luZGV4X2NhY2hlZCAmJgogCQkgICAgbiA9PSAxICYmIGRpcm1hc2sgPT0gMSAmJiBTX0lTRElSKG5hbWVzLT5tb2RlKSkgewpAQCAtODE0LDcgKzgyMCw3IEBACiAJCQl9CiAJCX0KIAotCQlpZiAodHJhdmVyc2VfdHJlZXNfcmVjdXJzaXZlKG4sIGRpcm1hc2ssIGNvbmZsaWN0cywKKwkJaWYgKHRyYXZlcnNlX3RyZWVzX3JlY3Vyc2l2ZShuLCBkaXJtYXNrLCBtYXNrICYgfmRpcm1hc2ssCiAJCQkJCSAgICAgbmFtZXMsIGluZm8pIDwgMCkKIAkJCXJldHVybiAtMTsKIAkJcmV0dXJuIG1hc2s7CkBAIC04MzcsNyArODQzLDggQEAKIHsKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKipjYWNoZV9lbmQ7CiAJaW50IGR0eXBlID0gRFRfRElSOwotCWludCByZXQgPSBleGNsdWRlZF9mcm9tX2xpc3QocHJlZml4LCBwcmVmaXhfbGVuLCBiYXNlbmFtZSwgJmR0eXBlLCBlbCk7CisJaW50IHJldCA9IGlzX2V4Y2x1ZGVkX2Zyb21fbGlzdChwcmVmaXgsIHByZWZpeF9sZW4sCisJCQkJCWJhc2VuYW1lLCAmZHR5cGUsIGVsKTsKIAogCXByZWZpeFtwcmVmaXhfbGVuKytdID0gJy8nOwogCkBAIC04NTYsNyArODYzLDcgQEAKIAkgKiB3aXRoIHJldCAoaW93LCB3ZSBrbm93IGluIGFkdmFuY2UgdGhlIGluY2wvZXhjbAogCSAqIGRlY2lzaW9uIGZvciB0aGUgZW50aXJlIGRpcmVjdG9yeSksIGNsZWFyIGZsYWcgaGVyZSB3aXRob3V0CiAJICogY2FsbGluZyBjbGVhcl9jZV9mbGFnc18xKCkuIFRoYXQgZnVuY3Rpb24gd2lsbCBjYWxsCi0JICogdGhlIGV4cGVuc2l2ZSBleGNsdWRlZF9mcm9tX2xpc3QoKSBvbiBldmVyeSBlbnRyeS4KKwkgKiB0aGUgZXhwZW5zaXZlIGlzX2V4Y2x1ZGVkX2Zyb21fbGlzdCgpIG9uIGV2ZXJ5IGVudHJ5LgogCSAqLwogCXJldHVybiBjbGVhcl9jZV9mbGFnc18xKGNhY2hlLCBjYWNoZV9lbmQgLSBjYWNoZSwKIAkJCQlwcmVmaXgsIHByZWZpeF9sZW4sCkBAIC05MzksNyArOTQ2LDggQEAKIAogCQkvKiBOb24tZGlyZWN0b3J5ICovCiAJCWR0eXBlID0gY2VfdG9fZHR5cGUoY2UpOwotCQlyZXQgPSBleGNsdWRlZF9mcm9tX2xpc3QoY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCBuYW1lLCAmZHR5cGUsIGVsKTsKKwkJcmV0ID0gaXNfZXhjbHVkZWRfZnJvbV9saXN0KGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwKKwkJCQkJICAgIG5hbWUsICZkdHlwZSwgZWwpOwogCQlpZiAocmV0IDwgMCkKIAkJCXJldCA9IGRlZnZhbDsKIAkJaWYgKHJldCA+IDApCkBAIC05OTMsNyArMTAwMSw5IEBACiAJCSAgICAgICBzZWxlY3RfZmxhZywgc2tpcF93dF9mbGFnLCBlbCk7CiB9CiAKLXN0YXRpYyBpbnQgdmVyaWZ5X2Fic2VudChzdHJ1Y3QgY2FjaGVfZW50cnkgKiwgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqKTsKK3N0YXRpYyBpbnQgdmVyaWZ5X2Fic2VudChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiwKKwkJCSBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcywKKwkJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKik7CiAvKgogICogTi13YXkgbWVyZ2UgImxlbiIgdHJlZXMuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZSB0byBtYW5pcHVsYXRlIHRoZQogICogcmVzdWx0aW5nIGluZGV4LCAtMiBvbiBmYWlsdXJlIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgdG8gdGhlIHdvcmsgdHJlZS4KQEAgLTEwMTgsMTYgKzEwMjgsMTIgQEAKIAlpZiAoIWNvcmVfYXBwbHlfc3BhcnNlX2NoZWNrb3V0IHx8ICFvLT51cGRhdGUpCiAJCW8tPnNraXBfc3BhcnNlX2NoZWNrb3V0ID0gMTsKIAlpZiAoIW8tPnNraXBfc3BhcnNlX2NoZWNrb3V0KSB7Ci0JCWlmIChhZGRfZXhjbHVkZXNfZnJvbV9maWxlX3RvX2xpc3QoZ2l0X3BhdGgoImluZm8vc3BhcnNlLWNoZWNrb3V0IiksICIiLCAwLCBOVUxMLCAmZWwsIDApIDwgMCkKKwkJaWYgKGFkZF9leGNsdWRlc19mcm9tX2ZpbGVfdG9fbGlzdChnaXRfcGF0aCgiaW5mby9zcGFyc2UtY2hlY2tvdXQiKSwgIiIsIDAsICZlbCwgMCkgPCAwKQogCQkJby0+c2tpcF9zcGFyc2VfY2hlY2tvdXQgPSAxOwogCQllbHNlCiAJCQlvLT5lbCA9ICZlbDsKIAl9CiAKLQlpZiAoby0+ZGlyKSB7Ci0JCW8tPnBhdGhfZXhjbHVkZV9jaGVjayA9IHhtYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYXRoX2V4Y2x1ZGVfY2hlY2spKTsKLQkJcGF0aF9leGNsdWRlX2NoZWNrX2luaXQoby0+cGF0aF9leGNsdWRlX2NoZWNrLCBvLT5kaXIpOwotCX0KIAltZW1zZXQoJm8tPnJlc3VsdCwgMCwgc2l6ZW9mKG8tPnJlc3VsdCkpOwogCW8tPnJlc3VsdC5pbml0aWFsaXplZCA9IDE7CiAJby0+cmVzdWx0LnRpbWVzdGFtcC5zZWMgPSBvLT5zcmNfaW5kZXgtPnRpbWVzdGFtcC5zZWM7CkBAIC0xMTUyLDExICsxMTU4LDcgQEAKIAkJKm8tPmRzdF9pbmRleCA9IG8tPnJlc3VsdDsKIAogZG9uZToKLQlmcmVlX2V4Y2x1ZGVzKCZlbCk7Ci0JaWYgKG8tPnBhdGhfZXhjbHVkZV9jaGVjaykgewotCQlwYXRoX2V4Y2x1ZGVfY2hlY2tfY2xlYXIoby0+cGF0aF9leGNsdWRlX2NoZWNrKTsKLQkJZnJlZShvLT5wYXRoX2V4Y2x1ZGVfY2hlY2spOwotCX0KKwljbGVhcl9leGNsdWRlX2xpc3QoJmVsKTsKIAlyZXR1cm4gcmV0OwogCiByZXR1cm5fZmFpbGVkOgpAQCAtMTE3MSwxMiArMTE3MywxMyBAQAogCiAvKiBIZXJlIGNvbWUgdGhlIG1lcmdlIGZ1bmN0aW9ucyAqLwogCi1zdGF0aWMgaW50IHJlamVjdF9tZXJnZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IHJlamVjdF9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCXJldHVybiBhZGRfcmVqZWN0ZWRfcGF0aChvLCBFUlJPUl9XT1VMRF9PVkVSV1JJVEUsIGNlLT5uYW1lKTsKIH0KIAotc3RhdGljIGludCBzYW1lKHN0cnVjdCBjYWNoZV9lbnRyeSAqYSwgc3RydWN0IGNhY2hlX2VudHJ5ICpiKQorc3RhdGljIGludCBzYW1lKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqYSwgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpiKQogewogCWlmICghIWEgIT0gISFiKQogCQlyZXR1cm4gMDsKQEAgLTExOTMsOSArMTE5Niw5IEBACiAgKiBXaGVuIGEgQ0UgZ2V0cyB0dXJuZWQgaW50byBhbiB1bm1lcmdlZCBlbnRyeSwgd2UKICAqIHdhbnQgaXQgdG8gYmUgdXAtdG8tZGF0ZQogICovCi1zdGF0aWMgaW50IHZlcmlmeV91cHRvZGF0ZV8xKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCi0JCQkJICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvLAotCQkJCSAgIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUpCitzdGF0aWMgaW50IHZlcmlmeV91cHRvZGF0ZV8xKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbywKKwkJCSAgICAgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSkKIHsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIApAQCAtMTIzNCw3ICsxMjM3LDcgQEAKIAkJYWRkX3JlamVjdGVkX3BhdGgobywgZXJyb3JfdHlwZSwgY2UtPm5hbWUpOwogfQogCi1zdGF0aWMgaW50IHZlcmlmeV91cHRvZGF0ZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGUoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKIAkJCSAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlpZiAoIW8tPnNraXBfc3BhcnNlX2NoZWNrb3V0ICYmIChjZS0+Y2VfZmxhZ3MgJiBDRV9ORVdfU0tJUF9XT1JLVFJFRSkpCkBAIC0xMjQyLDEzICsxMjQ1LDE0IEBACiAJcmV0dXJuIHZlcmlmeV91cHRvZGF0ZV8xKGNlLCBvLCBFUlJPUl9OT1RfVVBUT0RBVEVfRklMRSk7CiB9CiAKLXN0YXRpYyBpbnQgdmVyaWZ5X3VwdG9kYXRlX3NwYXJzZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfc3BhcnNlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQkJICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJcmV0dXJuIHZlcmlmeV91cHRvZGF0ZV8xKGNlLCBvLCBFUlJPUl9TUEFSU0VfTk9UX1VQVE9EQVRFX0ZJTEUpOwogfQogCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlX2NlX3BhdGgoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIHZvaWQgaW52YWxpZGF0ZV9jZV9wYXRoKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkgICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCWlmIChjZSkKIAkJY2FjaGVfdHJlZV9pbnZhbGlkYXRlX3BhdGgoby0+c3JjX2luZGV4LT5jYWNoZV90cmVlLCBjZS0+bmFtZSk7CkBAIC0xMjYxLDE2ICsxMjY1LDE2IEBACiAgKiBDdXJyZW50bHksIGdpdCBkb2VzIG5vdCBjaGVja291dCBzdWJwcm9qZWN0cyBkdXJpbmcgYSBzdXBlcnByb2plY3QKICAqIGNoZWNrb3V0LCBzbyBpdCBpcyBub3QgZ29pbmcgdG8gb3ZlcndyaXRlIGFueXRoaW5nLgogICovCi1zdGF0aWMgaW50IHZlcmlmeV9jbGVhbl9zdWJtb2R1bGUoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKLQkJCQkgICAgICBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcyBlcnJvcl90eXBlLAotCQkJCSAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyBpbnQgdmVyaWZ5X2NsZWFuX3N1Ym1vZHVsZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCSAgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKKwkJCQkgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfY2xlYW5fc3ViZGlyZWN0b3J5KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCi0JCQkJICAgICAgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKLQkJCQkgICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IHZlcmlmeV9jbGVhbl9zdWJkaXJlY3RvcnkoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKKwkJCQkgICAgIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCisJCQkJICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJLyoKIAkgKiB3ZSBhcmUgYWJvdXQgdG8gZXh0cmFjdCAiY2UtPm5hbWUiOyB3ZSB3b3VsZCBub3Qgd2FudCB0byBsb3NlCkBAIC0xMzU2LDcgKzEzNjAsNyBAQAogfQogCiBzdGF0aWMgaW50IGNoZWNrX29rX3RvX3JlbW92ZShjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLCBpbnQgZHR5cGUsCi0JCQkgICAgICBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QsCiAJCQkgICAgICBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcyBlcnJvcl90eXBlLAogCQkJICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewpAQCAtMTM3Myw3ICsxMzc3LDcgQEAKIAkJcmV0dXJuIDA7CiAKIAlpZiAoby0+ZGlyICYmCi0JICAgIHBhdGhfZXhjbHVkZWQoby0+cGF0aF9leGNsdWRlX2NoZWNrLCBuYW1lLCAtMSwgJmR0eXBlKSkKKwkgICAgaXNfZXhjbHVkZWQoby0+ZGlyLCBuYW1lLCAmZHR5cGUpKQogCQkvKgogCQkgKiBjZS0+bmFtZSBpcyBleHBsaWNpdGx5IGV4Y2x1ZGVkLCBzbyBpdCBpcyBPayB0bwogCQkgKiBvdmVyd3JpdGUgaXQuCkBAIC0xNDExLDkgKzE0MTUsOSBAQAogICogV2UgZG8gbm90IHdhbnQgdG8gcmVtb3ZlIG9yIG92ZXJ3cml0ZSBhIHdvcmtpbmcgdHJlZSBmaWxlIHRoYXQKICAqIGlzIG5vdCB0cmFja2VkLCB1bmxlc3MgaXQgaXMgaWdub3JlZC4KICAqLwotc3RhdGljIGludCB2ZXJpZnlfYWJzZW50XzEoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKLQkJCQkgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKLQkJCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCB2ZXJpZnlfYWJzZW50XzEoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKKwkJCSAgIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCisJCQkgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJaW50IGxlbjsKIAlzdHJ1Y3Qgc3RhdCBzdDsKQEAgLTE0NDYsNyArMTQ1MCw3IEBACiAJfQogfQogCi1zdGF0aWMgaW50IHZlcmlmeV9hYnNlbnQoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKK3N0YXRpYyBpbnQgdmVyaWZ5X2Fic2VudChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAogCQkJIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCiAJCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewpAQCAtMTQ1NSw5ICsxNDU5LDkgQEAKIAlyZXR1cm4gdmVyaWZ5X2Fic2VudF8xKGNlLCBlcnJvcl90eXBlLCBvKTsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfYWJzZW50X3NwYXJzZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAotCQkJIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCi0JCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCB2ZXJpZnlfYWJzZW50X3NwYXJzZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCWVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCisJCQkJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCWVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIG9ycGhhbmVkX2Vycm9yID0gZXJyb3JfdHlwZTsKIAlpZiAob3JwaGFuZWRfZXJyb3IgPT0gRVJST1JfV09VTERfTE9TRV9VTlRSQUNLRURfT1ZFUldSSVRURU4pCkBAIC0xNDY2LDEwICsxNDcwLDEyIEBACiAJcmV0dXJuIHZlcmlmeV9hYnNlbnRfMShjZSwgb3JwaGFuZWRfZXJyb3IsIG8pOwogfQogCi1zdGF0aWMgaW50IG1lcmdlZF9lbnRyeShzdHJ1Y3QgY2FjaGVfZW50cnkgKm1lcmdlLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZCwKLQkJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCBtZXJnZWRfZW50cnkoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKKwkJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAorCQkJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCWludCB1cGRhdGUgPSBDRV9VUERBVEU7CisJc3RydWN0IGNhY2hlX2VudHJ5ICptZXJnZSA9IGR1cF9lbnRyeShjZSk7CiAKIAlpZiAoIW9sZCkgewogCQkvKgpAQCAtMTQ4Nyw4ICsxNDkzLDExIEBACiAJCXVwZGF0ZSB8PSBDRV9BRERFRDsKIAkJbWVyZ2UtPmNlX2ZsYWdzIHw9IENFX05FV19TS0lQX1dPUktUUkVFOwogCi0JCWlmICh2ZXJpZnlfYWJzZW50KG1lcmdlLCBFUlJPUl9XT1VMRF9MT1NFX1VOVFJBQ0tFRF9PVkVSV1JJVFRFTiwgbykpCisJCWlmICh2ZXJpZnlfYWJzZW50KG1lcmdlLAorCQkJCSAgRVJST1JfV09VTERfTE9TRV9VTlRSQUNLRURfT1ZFUldSSVRURU4sIG8pKSB7CisJCQlmcmVlKG1lcmdlKTsKIAkJCXJldHVybiAtMTsKKwkJfQogCQlpbnZhbGlkYXRlX2NlX3BhdGgobWVyZ2UsIG8pOwogCX0gZWxzZSBpZiAoIShvbGQtPmNlX2ZsYWdzICYgQ0VfQ09ORkxJQ1RFRCkpIHsKIAkJLyoKQEAgLTE1MDIsOCArMTUxMSwxMCBAQAogCQkJY29weV9jYWNoZV9lbnRyeShtZXJnZSwgb2xkKTsKIAkJCXVwZGF0ZSA9IDA7CiAJCX0gZWxzZSB7Ci0JCQlpZiAodmVyaWZ5X3VwdG9kYXRlKG9sZCwgbykpCisJCQlpZiAodmVyaWZ5X3VwdG9kYXRlKG9sZCwgbykpIHsKKwkJCQlmcmVlKG1lcmdlKTsKIAkJCQlyZXR1cm4gLTE7CisJCQl9CiAJCQkvKiBNaWdyYXRlIG9sZCBmbGFncyBvdmVyICovCiAJCQl1cGRhdGUgfD0gb2xkLT5jZV9mbGFncyAmIChDRV9TS0lQX1dPUktUUkVFIHwgQ0VfTkVXX1NLSVBfV09SS1RSRUUpOwogCQkJaW52YWxpZGF0ZV9jZV9wYXRoKG9sZCwgbyk7CkBAIC0xNTE2LDEyICsxNTI3LDEzIEBACiAJCWludmFsaWRhdGVfY2VfcGF0aChvbGQsIG8pOwogCX0KIAotCWFkZF9lbnRyeShvLCBtZXJnZSwgdXBkYXRlLCBDRV9TVEFHRU1BU0spOworCWRvX2FkZF9lbnRyeShvLCBtZXJnZSwgdXBkYXRlLCBDRV9TVEFHRU1BU0spOwogCXJldHVybiAxOwogfQogCi1zdGF0aWMgaW50IGRlbGV0ZWRfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQsCi0JCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyBpbnQgZGVsZXRlZF9lbnRyeShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAorCQkJIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAkvKiBEaWQgaXQgZXhpc3QgaW4gdGhlIGluZGV4PyAqLwogCWlmICghb2xkKSB7CkBAIC0xNTM2LDcgKzE1NDgsOCBAQAogCXJldHVybiAxOwogfQogCi1zdGF0aWMgaW50IGtlZXBfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCBrZWVwX2VudHJ5KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCSAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlhZGRfZW50cnkobywgY2UsIDAsIDApOwogCXJldHVybiAxOwpAQCAtMTU1OCwxMSArMTU3MSwxMiBAQAogfQogI2VuZGlmCiAKLWludCB0aHJlZXdheV9tZXJnZShzdHJ1Y3QgY2FjaGVfZW50cnkgKipzdGFnZXMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK2ludCB0aHJlZXdheV9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3RhZ2VzLAorCQkgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICppbmRleDsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmhlYWQ7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpyZW1vdGUgPSBzdGFnZXNbby0+aGVhZF9pZHggKyAxXTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmluZGV4OworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqaGVhZDsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnJlbW90ZSA9IHN0YWdlc1tvLT5oZWFkX2lkeCArIDFdOwogCWludCBjb3VudDsKIAlpbnQgaGVhZF9tYXRjaCA9IDA7CiAJaW50IHJlbW90ZV9tYXRjaCA9IDA7CkBAIC0xNjQ3LDcgKzE2NjEsNyBAQAogCWlmIChvLT5hZ2dyZXNzaXZlKSB7CiAJCWludCBoZWFkX2RlbGV0ZWQgPSAhaGVhZDsKIAkJaW50IHJlbW90ZV9kZWxldGVkID0gIXJlbW90ZTsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IE5VTEw7CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBOVUxMOwogCiAJCWlmIChpbmRleCkKIAkJCWNlID0gaW5kZXg7CkBAIC0xNzMwLDExICsxNzQ0LDEyIEBACiAgKiAiY2FycnkgZm9yd2FyZCIgcnVsZSwgcGxlYXNlIHNlZSA8RG9jdW1lbnRhdGlvbi9naXQtcmVhZC10cmVlLnR4dD4uCiAgKgogICovCi1pbnQgdHdvd2F5X21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnNyYywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQoraW50IHR3b3dheV9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3JjLAorCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewotCXN0cnVjdCBjYWNoZV9lbnRyeSAqY3VycmVudCA9IHNyY1swXTsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZHRyZWUgPSBzcmNbMV07Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpuZXd0cmVlID0gc3JjWzJdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY3VycmVudCA9IHNyY1swXTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZHRyZWUgPSBzcmNbMV07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpuZXd0cmVlID0gc3JjWzJdOwogCiAJaWYgKG8tPm1lcmdlX3NpemUgIT0gMikKIAkJcmV0dXJuIGVycm9yKCJDYW5ub3QgZG8gYSB0d293YXkgbWVyZ2Ugb2YgJWQgdHJlZXMiLApAQCAtMTc5NiwxMSArMTgxMSwxMSBAQAogICogS2VlcCB0aGUgaW5kZXggZW50cmllcyBhdCBzdGFnZTAsIGNvbGxhcHNlIHN0YWdlMSBidXQgbWFrZSBzdXJlCiAgKiBzdGFnZTAgZG9lcyBub3QgaGF2ZSBhbnl0aGluZyB0aGVyZS4KICAqLwotaW50IGJpbmRfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3JjLAotCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitpbnQgYmluZF9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3JjLAorCSAgICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQgPSBzcmNbMF07Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICphID0gc3JjWzFdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkID0gc3JjWzBdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqYSA9IHNyY1sxXTsKIAogCWlmIChvLT5tZXJnZV9zaXplICE9IDEpCiAJCXJldHVybiBlcnJvcigiQ2Fubm90IGRvIGEgYmluZCBtZXJnZSBvZiAlZCB0cmVlcyIsCkBAIC0xODIwLDEwICsxODM1LDExIEBACiAgKiBUaGUgcnVsZSBpczoKICAqIC0gdGFrZSB0aGUgc3RhdCBpbmZvcm1hdGlvbiBmcm9tIHN0YWdlMCwgdGFrZSB0aGUgZGF0YSBmcm9tIHN0YWdlMQogICovCi1pbnQgb25ld2F5X21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnNyYywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQoraW50IG9uZXdheV9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3JjLAorCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewotCXN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkID0gc3JjWzBdOwotCXN0cnVjdCBjYWNoZV9lbnRyeSAqYSA9IHNyY1sxXTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZCA9IHNyY1swXTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmEgPSBzcmNbMV07CiAKIAlpZiAoby0+bWVyZ2Vfc2l6ZSAhPSAxKQogCQlyZXR1cm4gZXJyb3IoIkNhbm5vdCBkbyBhIG9uZXdheSBtZXJnZSBvZiAlZCB0cmVlcyIsCkBAIC0xODM0LDcgKzE4NTAsNyBAQAogCiAJaWYgKG9sZCAmJiBzYW1lKG9sZCwgYSkpIHsKIAkJaW50IHVwZGF0ZSA9IDA7Ci0JCWlmIChvLT5yZXNldCAmJiAhY2VfdXB0b2RhdGUob2xkKSAmJiAhY2Vfc2tpcF93b3JrdHJlZShvbGQpKSB7CisJCWlmIChvLT5yZXNldCAmJiBvLT51cGRhdGUgJiYgIWNlX3VwdG9kYXRlKG9sZCkgJiYgIWNlX3NraXBfd29ya3RyZWUob2xkKSkgewogCQkJc3RydWN0IHN0YXQgc3Q7CiAJCQlpZiAobHN0YXQob2xkLT5uYW1lLCAmc3QpIHx8CiAJCQkgICAgaWVfbWF0Y2hfc3RhdChvLT5zcmNfaW5kZXgsIG9sZCwgJnN0LCBDRV9NQVRDSF9JR05PUkVfVkFMSUR8Q0VfTUFUQ0hfSUdOT1JFX1NLSVBfV09SS1RSRUUpKQpkaWZmIC0tZ2l0IGEvdW5wYWNrLXRyZWVzLmggYi91bnBhY2stdHJlZXMuaAppbmRleCBlYzc0YTlmLi4zNmE3M2E2IDEwMDY0NAotLS0gYS91bnBhY2stdHJlZXMuaAorKysgYi91bnBhY2stdHJlZXMuaApAQCAtOCw3ICs4LDcgQEAKIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9uczsKIHN0cnVjdCBleGNsdWRlX2xpc3Q7CiAKLXR5cGVkZWYgaW50ICgqbWVyZ2VfZm5fdCkoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3JjLAordHlwZWRlZiBpbnQgKCptZXJnZV9mbl90KShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3JjLAogCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm9wdGlvbnMpOwogCiBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcyB7CkBAIC01Miw3ICs1Miw2IEBACiAJY29uc3QgY2hhciAqcHJlZml4OwogCWludCBjYWNoZV9ib3R0b207CiAJc3RydWN0IGRpcl9zdHJ1Y3QgKmRpcjsKLQlzdHJ1Y3QgcGF0aF9leGNsdWRlX2NoZWNrICpwYXRoX2V4Y2x1ZGVfY2hlY2s7CiAJc3RydWN0IHBhdGhzcGVjICpwYXRoc3BlYzsKIAltZXJnZV9mbl90IGZuOwogCWNvbnN0IGNoYXIgKm1zZ3NbTkJfVU5QQUNLX1RSRUVTX0VSUk9SX1RZUEVTXTsKQEAgLTc4LDkgKzc3LDEzIEBACiBleHRlcm4gaW50IHVucGFja190cmVlcyh1bnNpZ25lZCBuLCBzdHJ1Y3QgdHJlZV9kZXNjICp0LAogCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm9wdGlvbnMpOwogCi1pbnQgdGhyZWV3YXlfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3RhZ2VzLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOwotaW50IHR3b3dheV9tZXJnZShzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7Ci1pbnQgYmluZF9tZXJnZShzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7Ci1pbnQgb25ld2F5X21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnNyYywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKTsKK2ludCB0aHJlZXdheV9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3RhZ2VzLAorCQkgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworaW50IHR3b3dheV9tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3JjLAorCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKTsKK2ludCBiaW5kX21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJICAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7CitpbnQgb25ld2F5X21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3VwbG9hZC1wYWNrLmMgYi91cGxvYWQtcGFjay5jCmluZGV4IDYxNDI0MjEuLjEyN2U1OWEgMTAwNjQ0Ci0tLSBhL3VwbG9hZC1wYWNrLmMKKysrIGIvdXBsb2FkLXBhY2suYwpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAjaW5jbHVkZSAic2lnY2hhaW4uaCIKICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgdXBsb2FkX3BhY2tfdXNhZ2VbXSA9ICJnaXQgdXBsb2FkLXBhY2sgWy0tc3RyaWN0XSBbLS10aW1lb3V0PTxuPl0gPGRpcj4iOwogCkBAIC0yNSwxMyArMjYsMTUgQEAKICNkZWZpbmUgU0hBTExPVwkJKDF1IDw8IDE2KQogI2RlZmluZSBOT1RfU0hBTExPVwkoMXUgPDwgMTcpCiAjZGVmaW5lIENMSUVOVF9TSEFMTE9XCSgxdSA8PCAxOCkKKyNkZWZpbmUgSElEREVOX1JFRgkoMXUgPDwgMTkpCiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIG9sZGVzdF9oYXZlOwogCi1zdGF0aWMgaW50IG11bHRpX2FjaywgbnJfb3VyX3JlZnM7CitzdGF0aWMgaW50IG11bHRpX2FjazsKIHN0YXRpYyBpbnQgbm9fZG9uZTsKIHN0YXRpYyBpbnQgdXNlX3RoaW5fcGFjaywgdXNlX29mc19kZWx0YSwgdXNlX2luY2x1ZGVfdGFnOwogc3RhdGljIGludCBub19wcm9ncmVzcywgZGFlbW9uX21vZGU7CitzdGF0aWMgaW50IGFsbG93X3RpcF9zaGExX2luX3dhbnQ7CiBzdGF0aWMgaW50IHNoYWxsb3dfbnI7CiBzdGF0aWMgc3RydWN0IG9iamVjdF9hcnJheSBoYXZlX29iajsKIHN0YXRpYyBzdHJ1Y3Qgb2JqZWN0X2FycmF5IHdhbnRfb2JqOwpAQCAtNDEsNyArNDQsNiBAQAogICogb3RoZXJ3aXNlIG1heGltdW0gcGFja2V0IHNpemUgKHVwIHRvIDY1NTIwIGJ5dGVzKS4KICAqLwogc3RhdGljIGludCB1c2Vfc2lkZWJhbmQ7Ci1zdGF0aWMgaW50IGRlYnVnX2ZkOwogc3RhdGljIGludCBhZHZlcnRpc2VfcmVmczsKIHN0YXRpYyBpbnQgc3RhdGVsZXNzX3JwYzsKIApAQCAtNTAsMTMgKzUyLDYgQEAKIAlhbGFybSh0aW1lb3V0KTsKIH0KIAotc3RhdGljIGludCBzdHJpcChjaGFyICpsaW5lLCBpbnQgbGVuKQotewotCWlmIChsZW4gJiYgbGluZVtsZW4tMV0gPT0gJ1xuJykKLQkJbGluZVstLWxlbl0gPSAwOwotCXJldHVybiBsZW47Ci19Ci0KIHN0YXRpYyBzc2l6ZV90IHNlbmRfY2xpZW50X2RhdGEoaW50IGZkLCBjb25zdCBjaGFyICpkYXRhLCBzc2l6ZV90IHN6KQogewogCWlmICh1c2Vfc2lkZWJhbmQpCkBAIC02OSw3ICs2NCw4IEBACiAJCXh3cml0ZShmZCwgZGF0YSwgc3opOwogCQlyZXR1cm4gc3o7CiAJfQotCXJldHVybiBzYWZlX3dyaXRlKGZkLCBkYXRhLCBzeik7CisJd3JpdGVfb3JfZGllKGZkLCBkYXRhLCBzeik7CisJcmV0dXJuIHN6OwogfQogCiBzdGF0aWMgRklMRSAqcGFja19waXBlID0gTlVMTDsKQEAgLTEzOSw3ICsxMzUsNiBAQAogewogCXN0cnVjdCBhc3luYyByZXZfbGlzdDsKIAlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBwYWNrX29iamVjdHM7Ci0JaW50IGNyZWF0ZV9mdWxsX3BhY2sgPSAobnJfb3VyX3JlZnMgPT0gd2FudF9vYmoubnIgJiYgIWhhdmVfb2JqLm5yKTsKIAljaGFyIGRhdGFbODE5M10sIHByb2dyZXNzWzEyOF07CiAJY2hhciBhYm9ydF9tc2dbXSA9ICJhYm9ydGluZyBkdWUgdG8gcG9zc2libGUgcmVwb3NpdG9yeSAiCiAJCSJjb3JydXB0aW9uIG9uIHRoZSByZW1vdGUgc2lkZS4iOwpAQCAtMTUxLDkgKzE0Niw3IEBACiAJYXJndlthcmcrK10gPSAicGFjay1vYmplY3RzIjsKIAlpZiAoIXNoYWxsb3dfbnIpIHsKIAkJYXJndlthcmcrK10gPSAiLS1yZXZzIjsKLQkJaWYgKGNyZWF0ZV9mdWxsX3BhY2spCi0JCQlhcmd2W2FyZysrXSA9ICItLWFsbCI7Ci0JCWVsc2UgaWYgKHVzZV90aGluX3BhY2spCisJCWlmICh1c2VfdGhpbl9wYWNrKQogCQkJYXJndlthcmcrK10gPSAiLS10aGluIjsKIAl9CiAKQEAgLTE4NSwxNSArMTc4LDE1IEBACiAJfQogCWVsc2UgewogCQlGSUxFICpwaXBlX2ZkID0geGZkb3BlbihwYWNrX29iamVjdHMuaW4sICJ3Iik7Ci0JCWlmICghY3JlYXRlX2Z1bGxfcGFjaykgewotCQkJaW50IGk7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgd2FudF9vYmoubnI7IGkrKykKLQkJCQlmcHJpbnRmKHBpcGVfZmQsICIlc1xuIiwgc2hhMV90b19oZXgod2FudF9vYmoub2JqZWN0c1tpXS5pdGVtLT5zaGExKSk7Ci0JCQlmcHJpbnRmKHBpcGVfZmQsICItLW5vdFxuIik7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgaGF2ZV9vYmoubnI7IGkrKykKLQkJCQlmcHJpbnRmKHBpcGVfZmQsICIlc1xuIiwgc2hhMV90b19oZXgoaGF2ZV9vYmoub2JqZWN0c1tpXS5pdGVtLT5zaGExKSk7Ci0JCX0KKwkJaW50IGk7CiAKKwkJZm9yIChpID0gMDsgaSA8IHdhbnRfb2JqLm5yOyBpKyspCisJCQlmcHJpbnRmKHBpcGVfZmQsICIlc1xuIiwKKwkJCQlzaGExX3RvX2hleCh3YW50X29iai5vYmplY3RzW2ldLml0ZW0tPnNoYTEpKTsKKwkJZnByaW50ZihwaXBlX2ZkLCAiLS1ub3RcbiIpOworCQlmb3IgKGkgPSAwOyBpIDwgaGF2ZV9vYmoubnI7IGkrKykKKwkJCWZwcmludGYocGlwZV9mZCwgIiVzXG4iLAorCQkJCXNoYTFfdG9faGV4KGhhdmVfb2JqLm9iamVjdHNbaV0uaXRlbS0+c2hhMSkpOwogCQlmcHJpbnRmKHBpcGVfZmQsICJcbiIpOwogCQlmZmx1c2gocGlwZV9mZCk7CiAJCWZjbG9zZShwaXBlX2ZkKTsKQEAgLTMyNyw5ICszMjAsNyBAQAogCWlmICghaGFzX3NoYTFfZmlsZShzaGExKSkKIAkJcmV0dXJuIC0xOwogCi0JbyA9IGxvb2t1cF9vYmplY3Qoc2hhMSk7Ci0JaWYgKCEobyAmJiBvLT5wYXJzZWQpKQotCQlvID0gcGFyc2Vfb2JqZWN0KHNoYTEpOworCW8gPSBwYXJzZV9vYmplY3Qoc2hhMSk7CiAJaWYgKCFvKQogCQlkaWUoIm9vcHMgKCVzKSIsIHNoYTFfdG9faGV4KHNoYTEpKTsKIAlpZiAoby0+dHlwZSA9PSBPQkpfQ09NTUlUKSB7CkBAIC00MTcsNyArNDA4LDYgQEAKIAogc3RhdGljIGludCBnZXRfY29tbW9uX2NvbW1pdHModm9pZCkKIHsKLQlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJY2hhciBsYXN0X2hleFs0MV07CiAJaW50IGdvdF9jb21tb24gPSAwOwpAQCAtNDI3LDEwICs0MTcsMTAgQEAKIAlzYXZlX2NvbW1pdF9idWZmZXIgPSAwOwogCiAJZm9yICg7OykgewotCQlpbnQgbGVuID0gcGFja2V0X3JlYWRfbGluZSgwLCBsaW5lLCBzaXplb2YobGluZSkpOworCQljaGFyICpsaW5lID0gcGFja2V0X3JlYWRfbGluZSgwLCBOVUxMKTsKIAkJcmVzZXRfdGltZW91dCgpOwogCi0JCWlmICghbGVuKSB7CisJCWlmICghbGluZSkgewogCQkJaWYgKG11bHRpX2FjayA9PSAyICYmIGdvdF9jb21tb24KIAkJCSAgICAmJiAhZ290X290aGVyICYmIG9rX3RvX2dpdmVfdXAoKSkgewogCQkJCXNlbnRfcmVhZHkgPSAxOwpAQCAtNDQ5LDcgKzQzOSw2IEBACiAJCQlnb3Rfb3RoZXIgPSAwOwogCQkJY29udGludWU7CiAJCX0KLQkJc3RyaXAobGluZSwgbGVuKTsKIAkJaWYgKCFwcmVmaXhjbXAobGluZSwgImhhdmUgIikpIHsKIAkJCXN3aXRjaCAoZ290X3NoYTEobGluZSs1LCBzaGExKSkgewogCQkJY2FzZSAtMTogLyogdGhleSBoYXZlIHdoYXQgd2UgZG8gbm90ICovCkBAIC00ODksNiArNDc4LDEyIEBACiAJfQogfQogCitzdGF0aWMgaW50IGlzX291cl9yZWYoc3RydWN0IG9iamVjdCAqbykKK3sKKwlyZXR1cm4gby0+ZmxhZ3MgJgorCQkoKGFsbG93X3RpcF9zaGExX2luX3dhbnQgPyBISURERU5fUkVGIDogMCkgfCBPVVJfUkVGKTsKK30KKwogc3RhdGljIHZvaWQgY2hlY2tfbm9uX3RpcCh2b2lkKQogewogCXN0YXRpYyBjb25zdCBjaGFyICphcmd2W10gPSB7CkBAIC01MjUsNyArNTIwLDcgQEAKIAkJbyA9IGdldF9pbmRleGVkX29iamVjdCgtLWkpOwogCQlpZiAoIW8pCiAJCQljb250aW51ZTsKLQkJaWYgKCEoby0+ZmxhZ3MgJiBPVVJfUkVGKSkKKwkJaWYgKCFpc19vdXJfcmVmKG8pKQogCQkJY29udGludWU7CiAJCW1lbWNweShuYW1lYnVmICsgMSwgc2hhMV90b19oZXgoby0+c2hhMSksIDQwKTsKIAkJaWYgKHdyaXRlX2luX2Z1bGwoY21kLmluLCBuYW1lYnVmLCA0MikgPCAwKQpAQCAtNTM0LDcgKzUyOSw3IEBACiAJbmFtZWJ1Zls0MF0gPSAnXG4nOwogCWZvciAoaSA9IDA7IGkgPCB3YW50X29iai5ucjsgaSsrKSB7CiAJCW8gPSB3YW50X29iai5vYmplY3RzW2ldLml0ZW07Ci0JCWlmIChvLT5mbGFncyAmIE9VUl9SRUYpCisJCWlmIChpc19vdXJfcmVmKG8pKQogCQkJY29udGludWU7CiAJCW1lbWNweShuYW1lYnVmLCBzaGExX3RvX2hleChvLT5zaGExKSwgNDApOwogCQlpZiAod3JpdGVfaW5fZnVsbChjbWQuaW4sIG5hbWVidWYsIDQxKSA8IDApCkBAIC01NjgsNyArNTYzLDcgQEAKIAkvKiBQaWNrIG9uZSBvZiB0aGVtICh3ZSBrbm93IHRoZXJlIGF0IGxlYXN0IGlzIG9uZSkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgd2FudF9vYmoubnI7IGkrKykgewogCQlvID0gd2FudF9vYmoub2JqZWN0c1tpXS5pdGVtOwotCQlpZiAoIShvLT5mbGFncyAmIE9VUl9SRUYpKQorCQlpZiAoIWlzX291cl9yZWYobykpCiAJCQlkaWUoImdpdCB1cGxvYWQtcGFjazogbm90IG91ciByZWYgJXMiLAogCQkJICAgIHNoYTFfdG9faGV4KG8tPnNoYTEpKTsKIAl9CkBAIC01NzcsMzQgKzU3MiwzMyBAQAogc3RhdGljIHZvaWQgcmVjZWl2ZV9uZWVkcyh2b2lkKQogewogCXN0cnVjdCBvYmplY3RfYXJyYXkgc2hhbGxvd3MgPSBPQkpFQ1RfQVJSQVlfSU5JVDsKLQlzdGF0aWMgY2hhciBsaW5lWzEwMDBdOwotCWludCBsZW4sIGRlcHRoID0gMDsKKwlpbnQgZGVwdGggPSAwOwogCWludCBoYXNfbm9uX3RpcCA9IDA7CiAKIAlzaGFsbG93X25yID0gMDsKLQlpZiAoZGVidWdfZmQpCi0JCXdyaXRlX3N0cl9pbl9mdWxsKGRlYnVnX2ZkLCAiI1NcbiIpOwogCWZvciAoOzspIHsKIAkJc3RydWN0IG9iamVjdCAqbzsKIAkJY29uc3QgY2hhciAqZmVhdHVyZXM7CiAJCXVuc2lnbmVkIGNoYXIgc2hhMV9idWZbMjBdOwotCQlsZW4gPSBwYWNrZXRfcmVhZF9saW5lKDAsIGxpbmUsIHNpemVvZihsaW5lKSk7CisJCWNoYXIgKmxpbmUgPSBwYWNrZXRfcmVhZF9saW5lKDAsIE5VTEwpOwogCQlyZXNldF90aW1lb3V0KCk7Ci0JCWlmICghbGVuKQorCQlpZiAoIWxpbmUpCiAJCQlicmVhazsKLQkJaWYgKGRlYnVnX2ZkKQotCQkJd3JpdGVfaW5fZnVsbChkZWJ1Z19mZCwgbGluZSwgbGVuKTsKIAogCQlpZiAoIXByZWZpeGNtcChsaW5lLCAic2hhbGxvdyAiKSkgewogCQkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAkJCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKLQkJCWlmIChnZXRfc2hhMShsaW5lICsgOCwgc2hhMSkpCisJCQlpZiAoZ2V0X3NoYTFfaGV4KGxpbmUgKyA4LCBzaGExKSkKIAkJCQlkaWUoImludmFsaWQgc2hhbGxvdyBsaW5lOiAlcyIsIGxpbmUpOwogCQkJb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwogCQkJaWYgKCFvYmplY3QpCi0JCQkJZGllKCJkaWQgbm90IGZpbmQgb2JqZWN0IGZvciAlcyIsIGxpbmUpOwotCQkJb2JqZWN0LT5mbGFncyB8PSBDTElFTlRfU0hBTExPVzsKLQkJCWFkZF9vYmplY3RfYXJyYXkob2JqZWN0LCBOVUxMLCAmc2hhbGxvd3MpOworCQkJCWNvbnRpbnVlOworCQkJaWYgKG9iamVjdC0+dHlwZSAhPSBPQkpfQ09NTUlUKQorCQkJCWRpZSgiaW52YWxpZCBzaGFsbG93IG9iamVjdCAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwkJCWlmICghKG9iamVjdC0+ZmxhZ3MgJiBDTElFTlRfU0hBTExPVykpIHsKKwkJCQlvYmplY3QtPmZsYWdzIHw9IENMSUVOVF9TSEFMTE9XOworCQkJCWFkZF9vYmplY3RfYXJyYXkob2JqZWN0LCBOVUxMLCAmc2hhbGxvd3MpOworCQkJfQogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKCFwcmVmaXhjbXAobGluZSwgImRlZXBlbiAiKSkgewpAQCAtNjQwLDE5ICs2MzQsMTcgQEAKIAkJaWYgKHBhcnNlX2ZlYXR1cmVfcmVxdWVzdChmZWF0dXJlcywgImluY2x1ZGUtdGFnIikpCiAJCQl1c2VfaW5jbHVkZV90YWcgPSAxOwogCi0JCW8gPSBsb29rdXBfb2JqZWN0KHNoYTFfYnVmKTsKKwkJbyA9IHBhcnNlX29iamVjdChzaGExX2J1Zik7CiAJCWlmICghbykKIAkJCWRpZSgiZ2l0IHVwbG9hZC1wYWNrOiBub3Qgb3VyIHJlZiAlcyIsCiAJCQkgICAgc2hhMV90b19oZXgoc2hhMV9idWYpKTsKIAkJaWYgKCEoby0+ZmxhZ3MgJiBXQU5URUQpKSB7CiAJCQlvLT5mbGFncyB8PSBXQU5URUQ7Ci0JCQlpZiAoIShvLT5mbGFncyAmIE9VUl9SRUYpKQorCQkJaWYgKCFpc19vdXJfcmVmKG8pKQogCQkJCWhhc19ub25fdGlwID0gMTsKIAkJCWFkZF9vYmplY3RfYXJyYXkobywgTlVMTCwgJndhbnRfb2JqKTsKIAkJfQogCX0KLQlpZiAoZGVidWdfZmQpCi0JCXdyaXRlX3N0cl9pbl9mdWxsKGRlYnVnX2ZkLCAiI0VcbiIpOwogCiAJLyoKIAkgKiBXZSBoYXZlIHNlbnQgYWxsIG91ciByZWZzIGFscmVhZHksIGFuZCB0aGUgb3RoZXIgZW5kCkBAIC02NzAsMTAgKzY2MiwxNyBAQAogCWlmIChkZXB0aCA9PSAwICYmIHNoYWxsb3dzLm5yID09IDApCiAJCXJldHVybjsKIAlpZiAoZGVwdGggPiAwKSB7Ci0JCXN0cnVjdCBjb21taXRfbGlzdCAqcmVzdWx0LCAqYmFja3VwOworCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnJlc3VsdCA9IE5VTEwsICpiYWNrdXAgPSBOVUxMOwogCQlpbnQgaTsKLQkJYmFja3VwID0gcmVzdWx0ID0gZ2V0X3NoYWxsb3dfY29tbWl0cygmd2FudF9vYmosIGRlcHRoLAotCQkJU0hBTExPVywgTk9UX1NIQUxMT1cpOworCQlpZiAoZGVwdGggPT0gSU5GSU5JVEVfREVQVEgpCisJCQlmb3IgKGkgPSAwOyBpIDwgc2hhbGxvd3MubnI7IGkrKykgeworCQkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHNoYWxsb3dzLm9iamVjdHNbaV0uaXRlbTsKKwkJCQlvYmplY3QtPmZsYWdzIHw9IE5PVF9TSEFMTE9XOworCQkJfQorCQllbHNlCisJCQliYWNrdXAgPSByZXN1bHQgPQorCQkJCWdldF9zaGFsbG93X2NvbW1pdHMoJndhbnRfb2JqLCBkZXB0aCwKKwkJCQkJCSAgICBTSEFMTE9XLCBOT1RfU0hBTExPVyk7CiAJCXdoaWxlIChyZXN1bHQpIHsKIAkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9ICZyZXN1bHQtPml0ZW0tPm9iamVjdDsKIAkJCWlmICghKG9iamVjdC0+ZmxhZ3MgJiAoQ0xJRU5UX1NIQUxMT1d8Tk9UX1NIQUxMT1cpKSkgewpAQCAtNzIwLDQ1ICs3MTksNDcgQEAKIAlmcmVlKHNoYWxsb3dzLm9iamVjdHMpOwogfQogCisvKiByZXR1cm4gbm9uLXplcm8gaWYgdGhlIHJlZiBpcyBoaWRkZW4sIG90aGVyd2lzZSAwICovCitzdGF0aWMgaW50IG1hcmtfb3VyX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZywgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3Qgb2JqZWN0ICpvID0gbG9va3VwX3Vua25vd25fb2JqZWN0KHNoYTEpOworCisJaWYgKHJlZl9pc19oaWRkZW4ocmVmbmFtZSkpIHsKKwkJby0+ZmxhZ3MgfD0gSElEREVOX1JFRjsKKwkJcmV0dXJuIDE7CisJfQorCWlmICghbykKKwkJZGllKCJnaXQgdXBsb2FkLXBhY2s6IGNhbm5vdCBmaW5kIG9iamVjdCAlczoiLCBzaGExX3RvX2hleChzaGExKSk7CisJby0+ZmxhZ3MgfD0gT1VSX1JFRjsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBzZW5kX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZywgdm9pZCAqY2JfZGF0YSkKIHsKIAlzdGF0aWMgY29uc3QgY2hhciAqY2FwYWJpbGl0aWVzID0gIm11bHRpX2FjayB0aGluLXBhY2sgc2lkZS1iYW5kIgogCQkiIHNpZGUtYmFuZC02NGsgb2ZzLWRlbHRhIHNoYWxsb3cgbm8tcHJvZ3Jlc3MiCiAJCSIgaW5jbHVkZS10YWcgbXVsdGlfYWNrX2RldGFpbGVkIjsKLQlzdHJ1Y3Qgb2JqZWN0ICpvID0gbG9va3VwX3Vua25vd25fb2JqZWN0KHNoYTEpOwogCWNvbnN0IGNoYXIgKnJlZm5hbWVfbm9ucyA9IHN0cmlwX25hbWVzcGFjZShyZWZuYW1lKTsKIAl1bnNpZ25lZCBjaGFyIHBlZWxlZFsyMF07CiAKKwlpZiAobWFya19vdXJfcmVmKHJlZm5hbWUsIHNoYTEsIGZsYWcsIGNiX2RhdGEpKQorCQlyZXR1cm4gMDsKKwogCWlmIChjYXBhYmlsaXRpZXMpCi0JCXBhY2tldF93cml0ZSgxLCAiJXMgJXMlYyVzJXMgYWdlbnQ9JXNcbiIsCisJCXBhY2tldF93cml0ZSgxLCAiJXMgJXMlYyVzJXMlcyBhZ2VudD0lc1xuIiwKIAkJCSAgICAgc2hhMV90b19oZXgoc2hhMSksIHJlZm5hbWVfbm9ucywKIAkJCSAgICAgMCwgY2FwYWJpbGl0aWVzLAorCQkJICAgICBhbGxvd190aXBfc2hhMV9pbl93YW50ID8gIiBhbGxvdy10aXAtc2hhMS1pbi13YW50IiA6ICIiLAogCQkJICAgICBzdGF0ZWxlc3NfcnBjID8gIiBuby1kb25lIiA6ICIiLAogCQkJICAgICBnaXRfdXNlcl9hZ2VudF9zYW5pdGl6ZWQoKSk7CiAJZWxzZQogCQlwYWNrZXRfd3JpdGUoMSwgIiVzICVzXG4iLCBzaGExX3RvX2hleChzaGExKSwgcmVmbmFtZV9ub25zKTsKIAljYXBhYmlsaXRpZXMgPSBOVUxMOwotCWlmICghKG8tPmZsYWdzICYgT1VSX1JFRikpIHsKLQkJby0+ZmxhZ3MgfD0gT1VSX1JFRjsKLQkJbnJfb3VyX3JlZnMrKzsKLQl9CiAJaWYgKCFwZWVsX3JlZihyZWZuYW1lLCBwZWVsZWQpKQogCQlwYWNrZXRfd3JpdGUoMSwgIiVzICVzXnt9XG4iLCBzaGExX3RvX2hleChwZWVsZWQpLCByZWZuYW1lX25vbnMpOwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IG1hcmtfb3VyX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZywgdm9pZCAqY2JfZGF0YSkKLXsKLQlzdHJ1Y3Qgb2JqZWN0ICpvID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwotCWlmICghbykKLQkJZGllKCJnaXQgdXBsb2FkLXBhY2s6IGNhbm5vdCBmaW5kIG9iamVjdCAlczoiLCBzaGExX3RvX2hleChzaGExKSk7Ci0JaWYgKCEoby0+ZmxhZ3MgJiBPVVJfUkVGKSkgewotCQlvLT5mbGFncyB8PSBPVVJfUkVGOwotCQlucl9vdXJfcmVmcysrOwotCX0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgdXBsb2FkX3BhY2sodm9pZCkKIHsKIAlpZiAoYWR2ZXJ0aXNlX3JlZnMgfHwgIXN0YXRlbGVzc19ycGMpIHsKQEAgLTc4MCw2ICs3ODEsMTMgQEAKIAl9CiB9CiAKK3N0YXRpYyBpbnQgdXBsb2FkX3BhY2tfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKnVudXNlZCkKK3sKKwlpZiAoIXN0cmNtcCgidXBsb2FkcGFjay5hbGxvd3RpcHNoYTFpbndhbnQiLCB2YXIpKQorCQlhbGxvd190aXBfc2hhMV9pbl93YW50ID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpOworCXJldHVybiBwYXJzZV9oaWRlX3JlZnNfY29uZmlnKHZhciwgdmFsdWUsICJ1cGxvYWRwYWNrIik7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAljaGFyICpkaXI7CkBAIC04MzEsOCArODM5LDcgQEAKIAkJZGllKCInJXMnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIGdpdCByZXBvc2l0b3J5IiwgZGlyKTsKIAlpZiAoaXNfcmVwb3NpdG9yeV9zaGFsbG93KCkpCiAJCWRpZSgiYXR0ZW1wdCB0byBmZXRjaC9jbG9uZSBmcm9tIGEgc2hhbGxvdyByZXBvc2l0b3J5Iik7Ci0JaWYgKGdldGVudigiR0lUX0RFQlVHX1NFTkRfUEFDSyIpKQotCQlkZWJ1Z19mZCA9IGF0b2koZ2V0ZW52KCJHSVRfREVCVUdfU0VORF9QQUNLIikpOworCWdpdF9jb25maWcodXBsb2FkX3BhY2tfY29uZmlnLCBOVUxMKTsKIAl1cGxvYWRfcGFjaygpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdXNhZ2UuYyBiL3VzYWdlLmMKaW5kZXggOGVhYjI4MS4uZWQxNDY0NSAxMDA2NDQKLS0tIGEvdXNhZ2UuYworKysgYi91c2FnZS5jCkBAIC02LDggKzYsNiBAQAogI2luY2x1ZGUgImdpdC1jb21wYXQtdXRpbC5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAKLXN0YXRpYyBpbnQgZHlpbmc7Ci0KIHZvaWQgdnJlcG9ydGYoY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKQogewogCWNoYXIgbXNnWzQwOTZdOwpAQCAtNDksMTIgKzQ3LDE5IEBACiAJdnJlcG9ydGYoIndhcm5pbmc6ICIsIHdhcm4sIHBhcmFtcyk7CiB9CiAKK3N0YXRpYyBpbnQgZGllX2lzX3JlY3Vyc2luZ19idWlsdGluKHZvaWQpCit7CisJc3RhdGljIGludCBkeWluZzsKKwlyZXR1cm4gZHlpbmcrKzsKK30KKwogLyogSWYgd2UgYXJlIGluIGEgZGxvcGVuKCllZCAuc28gd3JpdGUgdG8gYSBnbG9iYWwgdmFyaWFibGUgd291bGQgc2VnZmF1bHQKICAqICh1Z2gpLCBzbyBrZWVwIHRoaW5ncyBzdGF0aWMuICovCiBzdGF0aWMgTk9SRVRVUk5fUFRSIHZvaWQgKCp1c2FnZV9yb3V0aW5lKShjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKSA9IHVzYWdlX2J1aWx0aW47CiBzdGF0aWMgTk9SRVRVUk5fUFRSIHZvaWQgKCpkaWVfcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykgPSBkaWVfYnVpbHRpbjsKIHN0YXRpYyB2b2lkICgqZXJyb3Jfcm91dGluZSkoY29uc3QgY2hhciAqZXJyLCB2YV9saXN0IHBhcmFtcykgPSBlcnJvcl9idWlsdGluOwogc3RhdGljIHZvaWQgKCp3YXJuX3JvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpID0gd2Fybl9idWlsdGluOworc3RhdGljIGludCAoKmRpZV9pc19yZWN1cnNpbmcpKHZvaWQpID0gZGllX2lzX3JlY3Vyc2luZ19idWlsdGluOwogCiB2b2lkIHNldF9kaWVfcm91dGluZShOT1JFVFVSTl9QVFIgdm9pZCAoKnJvdXRpbmUpKGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpKQogewpAQCAtNjYsNiArNzEsMTEgQEAKIAllcnJvcl9yb3V0aW5lID0gcm91dGluZTsKIH0KIAordm9pZCBzZXRfZGllX2lzX3JlY3Vyc2luZ19yb3V0aW5lKGludCAoKnJvdXRpbmUpKHZvaWQpKQoreworCWRpZV9pc19yZWN1cnNpbmcgPSByb3V0aW5lOworfQorCiB2b2lkIE5PUkVUVVJOIHVzYWdlZihjb25zdCBjaGFyICplcnIsIC4uLikKIHsKIAl2YV9saXN0IHBhcmFtczsKQEAgLTg0LDExICs5NCwxMCBAQAogewogCXZhX2xpc3QgcGFyYW1zOwogCi0JaWYgKGR5aW5nKSB7CisJaWYgKGRpZV9pc19yZWN1cnNpbmcoKSkgewogCQlmcHV0cygiZmF0YWw6IHJlY3Vyc2lvbiBkZXRlY3RlZCBpbiBkaWUgaGFuZGxlclxuIiwgc3RkZXJyKTsKIAkJZXhpdCgxMjgpOwogCX0KLQlkeWluZyA9IDE7CiAKIAl2YV9zdGFydChwYXJhbXMsIGVycik7CiAJZGllX3JvdXRpbmUoZXJyLCBwYXJhbXMpOwpAQCAtMTAyLDEyICsxMTEsMTEgQEAKIAljaGFyIHN0cl9lcnJvclsyNTZdLCAqZXJyOwogCWludCBpLCBqOwogCi0JaWYgKGR5aW5nKSB7CisJaWYgKGRpZV9pc19yZWN1cnNpbmcoKSkgewogCQlmcHV0cygiZmF0YWw6IHJlY3Vyc2lvbiBkZXRlY3RlZCBpbiBkaWVfZXJybm8gaGFuZGxlclxuIiwKIAkJCXN0ZGVycik7CiAJCWV4aXQoMTI4KTsKIAl9Ci0JZHlpbmcgPSAxOwogCiAJZXJyID0gc3RyZXJyb3IoZXJybm8pOwogCWZvciAoaSA9IGogPSAwOyBlcnJbaV0gJiYgaiA8IHNpemVvZihzdHJfZXJyb3IpIC0gMTsgKSB7CkBAIC0xMzAsNiArMTM4LDcgQEAKIAl2YV9lbmQocGFyYW1zKTsKIH0KIAorI3VuZGVmIGVycm9yCiBpbnQgZXJyb3IoY29uc3QgY2hhciAqZXJyLCAuLi4pCiB7CiAJdmFfbGlzdCBwYXJhbXM7CmRpZmYgLS1naXQgYS91c2VyZGlmZi5jIGIvdXNlcmRpZmYuYwppbmRleCBlZDk1OGVmLi5lYTQzYTAzIDEwMDY0NAotLS0gYS91c2VyZGlmZi5jCisrKyBiL3VzZXJkaWZmLmMKQEAgLTE4NCwzNSArMTg0LDYgQEAKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKnBhcnNlX2RyaXZlcihjb25zdCBjaGFyICp2YXIsCi0JCWNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICp0eXBlKQotewotCXN0cnVjdCB1c2VyZGlmZl9kcml2ZXIgKmRydjsKLQljb25zdCBjaGFyICpkb3Q7Ci0JY29uc3QgY2hhciAqbmFtZTsKLQlpbnQgbmFtZWxlbjsKLQotCWlmIChwcmVmaXhjbXAodmFyLCAiZGlmZi4iKSkKLQkJcmV0dXJuIE5VTEw7Ci0JZG90ID0gc3RycmNocih2YXIsICcuJyk7Ci0JaWYgKGRvdCA9PSB2YXIgKyA0KQotCQlyZXR1cm4gTlVMTDsKLQlpZiAoc3RyY21wKHR5cGUsIGRvdCsxKSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQluYW1lID0gdmFyICsgNTsKLQluYW1lbGVuID0gZG90IC0gbmFtZTsKLQlkcnYgPSB1c2VyZGlmZl9maW5kX2J5X25hbWVsZW4obmFtZSwgbmFtZWxlbik7Ci0JaWYgKCFkcnYpIHsKLQkJQUxMT0NfR1JPVyhkcml2ZXJzLCBuZHJpdmVycysxLCBkcml2ZXJzX2FsbG9jKTsKLQkJZHJ2ID0gJmRyaXZlcnNbbmRyaXZlcnMrK107Ci0JCW1lbXNldChkcnYsIDAsIHNpemVvZigqZHJ2KSk7Ci0JCWRydi0+bmFtZSA9IHhtZW1kdXB6KG5hbWUsIG5hbWVsZW4pOwotCQlkcnYtPmJpbmFyeSA9IC0xOwotCX0KLQlyZXR1cm4gZHJ2OwotfQotCiBzdGF0aWMgaW50IHBhcnNlX2Z1bmNuYW1lKHN0cnVjdCB1c2VyZGlmZl9mdW5jbmFtZSAqZiwgY29uc3QgY2hhciAqaywKIAkJY29uc3QgY2hhciAqdiwgaW50IGNmbGFncykKIHsKQEAgLTI0MCwyMCArMjExLDM0IEBACiBpbnQgdXNlcmRpZmZfY29uZmlnKGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYpCiB7CiAJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2OworCWNvbnN0IGNoYXIgKm5hbWUsICp0eXBlOworCWludCBuYW1lbGVuOwogCi0JaWYgKChkcnYgPSBwYXJzZV9kcml2ZXIoaywgdiwgImZ1bmNuYW1lIikpKQorCWlmIChwYXJzZV9jb25maWdfa2V5KGssICJkaWZmIiwgJm5hbWUsICZuYW1lbGVuLCAmdHlwZSkgfHwgIW5hbWUpCisJCXJldHVybiAwOworCisJZHJ2ID0gdXNlcmRpZmZfZmluZF9ieV9uYW1lbGVuKG5hbWUsIG5hbWVsZW4pOworCWlmICghZHJ2KSB7CisJCUFMTE9DX0dST1coZHJpdmVycywgbmRyaXZlcnMrMSwgZHJpdmVyc19hbGxvYyk7CisJCWRydiA9ICZkcml2ZXJzW25kcml2ZXJzKytdOworCQltZW1zZXQoZHJ2LCAwLCBzaXplb2YoKmRydikpOworCQlkcnYtPm5hbWUgPSB4bWVtZHVweihuYW1lLCBuYW1lbGVuKTsKKwkJZHJ2LT5iaW5hcnkgPSAtMTsKKwl9CisKKwlpZiAoIXN0cmNtcCh0eXBlLCAiZnVuY25hbWUiKSkKIAkJcmV0dXJuIHBhcnNlX2Z1bmNuYW1lKCZkcnYtPmZ1bmNuYW1lLCBrLCB2LCAwKTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAieGZ1bmNuYW1lIikpKQorCWlmICghc3RyY21wKHR5cGUsICJ4ZnVuY25hbWUiKSkKIAkJcmV0dXJuIHBhcnNlX2Z1bmNuYW1lKCZkcnYtPmZ1bmNuYW1lLCBrLCB2LCBSRUdfRVhURU5ERUQpOwotCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJiaW5hcnkiKSkpCisJaWYgKCFzdHJjbXAodHlwZSwgImJpbmFyeSIpKQogCQlyZXR1cm4gcGFyc2VfdHJpc3RhdGUoJmRydi0+YmluYXJ5LCBrLCB2KTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAiY29tbWFuZCIpKSkKKwlpZiAoIXN0cmNtcCh0eXBlLCAiY29tbWFuZCIpKQogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmRydi0+ZXh0ZXJuYWwsIGssIHYpOwotCWlmICgoZHJ2ID0gcGFyc2VfZHJpdmVyKGssIHYsICJ0ZXh0Y29udiIpKSkKKwlpZiAoIXN0cmNtcCh0eXBlLCAidGV4dGNvbnYiKSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZkcnYtPnRleHRjb252LCBrLCB2KTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAiY2FjaGV0ZXh0Y29udiIpKSkKKwlpZiAoIXN0cmNtcCh0eXBlLCAiY2FjaGV0ZXh0Y29udiIpKQogCQlyZXR1cm4gcGFyc2VfYm9vbCgmZHJ2LT50ZXh0Y29udl93YW50X2NhY2hlLCBrLCB2KTsKLQlpZiAoKGRydiA9IHBhcnNlX2RyaXZlcihrLCB2LCAid29yZHJlZ2V4IikpKQorCWlmICghc3RyY21wKHR5cGUsICJ3b3JkcmVnZXgiKSkKIAkJcmV0dXJuIGdpdF9jb25maWdfc3RyaW5nKCZkcnYtPndvcmRfcmVnZXgsIGssIHYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS91dGY4LmMgYi91dGY4LmMKaW5kZXggMTA4Nzg3MC4uMGQyMGUwYSAxMDA2NDQKLS0tIGEvdXRmOC5jCisrKyBiL3V0ZjguYwpAQCAtOSw2ICs5LDIwIEBACiAgIGludCBsYXN0OwogfTsKIAorc2l6ZV90IGRpc3BsYXlfbW9kZV9lc2Nfc2VxdWVuY2VfbGVuKGNvbnN0IGNoYXIgKnMpCit7CisJY29uc3QgY2hhciAqcCA9IHM7CisJaWYgKCpwKysgIT0gJ1wwMzMnKQorCQlyZXR1cm4gMDsKKwlpZiAoKnArKyAhPSAnWycpCisJCXJldHVybiAwOworCXdoaWxlIChpc2RpZ2l0KCpwKSB8fCAqcCA9PSAnOycpCisJCXArKzsKKwlpZiAoKnArKyAhPSAnbScpCisJCXJldHVybiAwOworCXJldHVybiBwIC0gczsKK30KKwogLyogYXV4aWxpYXJ5IGZ1bmN0aW9uIGZvciBiaW5hcnkgc2VhcmNoIGluIGludGVydmFsIHRhYmxlICovCiBzdGF0aWMgaW50IGJpc2VhcmNoKHVjc19jaGFyX3QgdWNzLCBjb25zdCBzdHJ1Y3QgaW50ZXJ2YWwgKnRhYmxlLCBpbnQgbWF4KQogewpAQCAtMjUyLDE4ICsyNjYsMjYgQEAKICAqIHN0cmluZywgYXNzdW1pbmcgdGhhdCB0aGUgc3RyaW5nIGlzIHV0ZjguICBSZXR1cm5zIHN0cmxlbigpIGluc3RlYWQKICAqIGlmIHRoZSBzdHJpbmcgZG9lcyBub3QgbG9vayBsaWtlIGEgdmFsaWQgdXRmOCBzdHJpbmcuCiAgKi8KLWludCB1dGY4X3N0cndpZHRoKGNvbnN0IGNoYXIgKnN0cmluZykKK2ludCB1dGY4X3N0cm53aWR0aChjb25zdCBjaGFyICpzdHJpbmcsIGludCBsZW4sIGludCBza2lwX2Fuc2kpCiB7CiAJaW50IHdpZHRoID0gMDsKIAljb25zdCBjaGFyICpvcmlnID0gc3RyaW5nOwogCi0Jd2hpbGUgKDEpIHsKLQkJaWYgKCFzdHJpbmcpCi0JCQlyZXR1cm4gc3RybGVuKG9yaWcpOwotCQlpZiAoISpzdHJpbmcpCi0JCQlyZXR1cm4gd2lkdGg7CisJaWYgKGxlbiA9PSAtMSkKKwkJbGVuID0gc3RybGVuKHN0cmluZyk7CisJd2hpbGUgKHN0cmluZyAmJiBzdHJpbmcgPCBvcmlnICsgbGVuKSB7CisJCWludCBza2lwOworCQl3aGlsZSAoc2tpcF9hbnNpICYmCisJCSAgICAgICAoc2tpcCA9IGRpc3BsYXlfbW9kZV9lc2Nfc2VxdWVuY2VfbGVuKHN0cmluZykpICE9IDApCisJCQlzdHJpbmcgKz0gc2tpcDsKIAkJd2lkdGggKz0gdXRmOF93aWR0aCgmc3RyaW5nLCBOVUxMKTsKIAl9CisJcmV0dXJuIHN0cmluZyA/IHdpZHRoIDogbGVuOworfQorCitpbnQgdXRmOF9zdHJ3aWR0aChjb25zdCBjaGFyICpzdHJpbmcpCit7CisJcmV0dXJuIHV0Zjhfc3RybndpZHRoKHN0cmluZywgLTEsIDApOwogfQogCiBpbnQgaXNfdXRmOChjb25zdCBjaGFyICp0ZXh0KQpAQCAtMzAzLDIwICszMjUsNiBAQAogCX0KIH0KIAotc3RhdGljIHNpemVfdCBkaXNwbGF5X21vZGVfZXNjX3NlcXVlbmNlX2xlbihjb25zdCBjaGFyICpzKQotewotCWNvbnN0IGNoYXIgKnAgPSBzOwotCWlmICgqcCsrICE9ICdcMDMzJykKLQkJcmV0dXJuIDA7Ci0JaWYgKCpwKysgIT0gJ1snKQotCQlyZXR1cm4gMDsKLQl3aGlsZSAoaXNkaWdpdCgqcCkgfHwgKnAgPT0gJzsnKQotCQlwKys7Ci0JaWYgKCpwKysgIT0gJ20nKQotCQlyZXR1cm4gMDsKLQlyZXR1cm4gcCAtIHM7Ci19Ci0KIC8qCiAgKiBXcmFwIHRoZSB0ZXh0LCBpZiBuZWNlc3NhcnkuIFRoZSB2YXJpYWJsZSBpbmRlbnQgaXMgdGhlIGluZGVudCBmb3IgdGhlCiAgKiBmaXJzdCBsaW5lLCBpbmRlbnQyIGlzIHRoZSBpbmRlbnQgZm9yIGFsbCBvdGhlciBsaW5lcy4KQEAgLTQxMyw2ICs0MjEsNTIgQEAKIAlmcmVlKHRtcCk7CiB9CiAKK3ZvaWQgc3RyYnVmX3V0ZjhfcmVwbGFjZShzdHJ1Y3Qgc3RyYnVmICpzYl9zcmMsIGludCBwb3MsIGludCB3aWR0aCwKKwkJCSBjb25zdCBjaGFyICpzdWJzdCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIHNiX2RzdCA9IFNUUkJVRl9JTklUOworCWNoYXIgKnNyYyA9IHNiX3NyYy0+YnVmOworCWNoYXIgKmVuZCA9IHNyYyArIHNiX3NyYy0+bGVuOworCWNoYXIgKmRzdDsKKwlpbnQgdyA9IDAsIHN1YnN0X2xlbiA9IDA7CisKKwlpZiAoc3Vic3QpCisJCXN1YnN0X2xlbiA9IHN0cmxlbihzdWJzdCk7CisJc3RyYnVmX2dyb3coJnNiX2RzdCwgc2Jfc3JjLT5sZW4gKyBzdWJzdF9sZW4pOworCWRzdCA9IHNiX2RzdC5idWY7CisKKwl3aGlsZSAoc3JjIDwgZW5kKSB7CisJCWNoYXIgKm9sZDsKKwkJc2l6ZV90IG47CisKKwkJd2hpbGUgKChuID0gZGlzcGxheV9tb2RlX2VzY19zZXF1ZW5jZV9sZW4oc3JjKSkpIHsKKwkJCW1lbWNweShkc3QsIHNyYywgbik7CisJCQlzcmMgKz0gbjsKKwkJCWRzdCArPSBuOworCQl9CisKKwkJb2xkID0gc3JjOworCQluID0gdXRmOF93aWR0aCgoY29uc3QgY2hhcioqKSZzcmMsIE5VTEwpOworCQlpZiAoIXNyYykgCS8qIGJyb2tlbiB1dGYtOCwgZG8gbm90aGluZyAqLworCQkJcmV0dXJuOworCQlpZiAobiAmJiB3ID49IHBvcyAmJiB3IDwgcG9zICsgd2lkdGgpIHsKKwkJCWlmIChzdWJzdCkgeworCQkJCW1lbWNweShkc3QsIHN1YnN0LCBzdWJzdF9sZW4pOworCQkJCWRzdCArPSBzdWJzdF9sZW47CisJCQkJc3Vic3QgPSBOVUxMOworCQkJfQorCQkJdyArPSBuOworCQkJY29udGludWU7CisJCX0KKwkJbWVtY3B5KGRzdCwgb2xkLCBzcmMgLSBvbGQpOworCQlkc3QgKz0gc3JjIC0gb2xkOworCQl3ICs9IG47CisJfQorCXN0cmJ1Zl9zZXRsZW4oJnNiX2RzdCwgZHN0IC0gc2JfZHN0LmJ1Zik7CisJc3RyYnVmX3N3YXAoc2Jfc3JjLCAmc2JfZHN0KTsKKwlzdHJidWZfcmVsZWFzZSgmc2JfZHN0KTsKK30KKwogaW50IGlzX2VuY29kaW5nX3V0ZjgoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlpZiAoIW5hbWUpCkBAIC00NjAsNyArNTE0LDcgQEAKICNlbHNlCiAJdHlwZWRlZiBjaGFyICogaWNvbnZfaWJwOwogI2VuZGlmCi1jaGFyICpyZWVuY29kZV9zdHJpbmdfaWNvbnYoY29uc3QgY2hhciAqaW4sIHNpemVfdCBpbnN6LCBpY29udl90IGNvbnYpCitjaGFyICpyZWVuY29kZV9zdHJpbmdfaWNvbnYoY29uc3QgY2hhciAqaW4sIHNpemVfdCBpbnN6LCBpY29udl90IGNvbnYsIGludCAqb3V0c3pfcCkKIHsKIAlzaXplX3Qgb3V0c3osIG91dGFsbG9jOwogCWNoYXIgKm91dCwgKm91dHBvczsKQEAgLTQ5NCwyNCArNTQ4LDgzIEBACiAJCX0KIAkJZWxzZSB7CiAJCQkqb3V0cG9zID0gJ1wwJzsKKwkJCWlmIChvdXRzel9wKQorCQkJCSpvdXRzel9wID0gb3V0cG9zIC0gb3V0OwogCQkJYnJlYWs7CiAJCX0KIAl9CiAJcmV0dXJuIG91dDsKIH0KIAotY2hhciAqcmVlbmNvZGVfc3RyaW5nKGNvbnN0IGNoYXIgKmluLCBjb25zdCBjaGFyICpvdXRfZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmluX2VuY29kaW5nKQorY2hhciAqcmVlbmNvZGVfc3RyaW5nX2xlbihjb25zdCBjaGFyICppbiwgaW50IGluc3osCisJCQkgIGNvbnN0IGNoYXIgKm91dF9lbmNvZGluZywgY29uc3QgY2hhciAqaW5fZW5jb2RpbmcsCisJCQkgIGludCAqb3V0c3opCiB7CiAJaWNvbnZfdCBjb252OwogCWNoYXIgKm91dDsKIAogCWlmICghaW5fZW5jb2RpbmcpCiAJCXJldHVybiBOVUxMOworCiAJY29udiA9IGljb252X29wZW4ob3V0X2VuY29kaW5nLCBpbl9lbmNvZGluZyk7Ci0JaWYgKGNvbnYgPT0gKGljb252X3QpIC0xKQotCQlyZXR1cm4gTlVMTDsKLQlvdXQgPSByZWVuY29kZV9zdHJpbmdfaWNvbnYoaW4sIHN0cmxlbihpbiksIGNvbnYpOworCWlmIChjb252ID09IChpY29udl90KSAtMSkgeworCQkvKgorCQkgKiBTb21lIHBsYXRmb3JtcyBkbyBub3QgaGF2ZSB0aGUgdmFyaW91c2x5IHNwZWxsZWQgdmFyaWFudHMgb2YKKwkJICogVVRGLTgsIHNvIGxldCdzIGZhbGwgYmFjayB0byB0cnlpbmcgdGhlIG1vc3Qgb2ZmaWNpYWwKKwkJICogc3BlbGxpbmcuIFdlIGRvIHNvIG9ubHkgYXMgYSBmYWxsYmFjayBpbiBjYXNlIHRoZSBwbGF0Zm9ybQorCQkgKiBkb2VzIHVuZGVyc3RhbmQgdGhlIHVzZXIncyBzcGVsbGluZywgYnV0IG5vdCBvdXIgb2ZmaWNpYWwKKwkJICogb25lLgorCQkgKi8KKwkJaWYgKGlzX2VuY29kaW5nX3V0ZjgoaW5fZW5jb2RpbmcpKQorCQkJaW5fZW5jb2RpbmcgPSAiVVRGLTgiOworCQlpZiAoaXNfZW5jb2RpbmdfdXRmOChvdXRfZW5jb2RpbmcpKQorCQkJb3V0X2VuY29kaW5nID0gIlVURi04IjsKKwkJY29udiA9IGljb252X29wZW4ob3V0X2VuY29kaW5nLCBpbl9lbmNvZGluZyk7CisJCWlmIChjb252ID09IChpY29udl90KSAtMSkKKwkJCXJldHVybiBOVUxMOworCX0KKworCW91dCA9IHJlZW5jb2RlX3N0cmluZ19pY29udihpbiwgaW5zeiwgY29udiwgb3V0c3opOwogCWljb252X2Nsb3NlKGNvbnYpOwogCXJldHVybiBvdXQ7CiB9CiAjZW5kaWYKKworLyoKKyAqIFJldHVybnMgZmlyc3QgY2hhcmFjdGVyIGxlbmd0aCBpbiBieXRlcyBmb3IgbXVsdGktYnl0ZSBgdGV4dGAgYWNjb3JkaW5nIHRvCisgKiBgZW5jb2RpbmdgLgorICoKKyAqIC0gVGhlIGB0ZXh0YCBwb2ludGVyIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYXQgdGhlIG5leHQgY2hhcmFjdGVyLgorICogLSBXaGVuIGByZW1haW5kZXJfcGAgaXMgbm90IE5VTEwsIG9uIGVudHJ5IGAqcmVtYWluZGVyX3BgIGlzIGhvdyBtdWNoIGJ5dGVzCisgKiAgIHdlIGNhbiBjb25zdW1lIGZyb20gdGV4dCwgYW5kIG9uIGV4aXQgYCpyZW1haW5kZXJfcGAgaXMgcmVkdWNlZCBieSByZXR1cm5lZAorICogICBjaGFyYWN0ZXIgbGVuZ3RoLiBPdGhlcndpc2UgYHRleHRgIGlzIHRyZWF0ZWQgYXMgbGltaXRlZCBieSBOVUwuCisgKi8KK2ludCBtYnNfY2hybGVuKGNvbnN0IGNoYXIgKip0ZXh0LCBzaXplX3QgKnJlbWFpbmRlcl9wLCBjb25zdCBjaGFyICplbmNvZGluZykKK3sKKwlpbnQgY2hybGVuOworCWNvbnN0IGNoYXIgKnAgPSAqdGV4dDsKKwlzaXplX3QgciA9IChyZW1haW5kZXJfcCA/ICpyZW1haW5kZXJfcCA6IFNJWkVfTUFYKTsKKworCWlmIChyIDwgMSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoaXNfZW5jb2RpbmdfdXRmOChlbmNvZGluZykpIHsKKwkJcGlja19vbmVfdXRmOF9jaGFyKCZwLCAmcik7CisKKwkJY2hybGVuID0gcCA/IChwIC0gKnRleHQpCisJCQkgICA6IDEgLyogbm90IHZhbGlkIFVURi04IC0+IHJhdyBieXRlIHNlcXVlbmNlICovOworCX0KKwllbHNlIHsKKwkJLyoKKwkJICogVE9ETyB1c2UgaWNvbnYgdG8gZGVjb2RlIG9uZSBjaGFyIGFuZCBvYnRhaW4gaXRzIGNocmxlbgorCQkgKiBmb3Igbm93LCBsZXQncyB0cmVhdCBlbmNvZGluZ3MgIT0gVVRGLTggYXMgb25lLWJ5dGUKKwkJICovCisJCWNocmxlbiA9IDE7CisJfQorCisJKnRleHQgKz0gY2hybGVuOworCWlmIChyZW1haW5kZXJfcCkKKwkJKnJlbWFpbmRlcl9wIC09IGNocmxlbjsKKworCXJldHVybiBjaHJsZW47Cit9CmRpZmYgLS1naXQgYS91dGY4LmggYi91dGY4LmgKaW5kZXggNTAxYjJiZC4uMzJhN2JmYiAxMDA2NDQKLS0tIGEvdXRmOC5oCisrKyBiL3V0ZjguaApAQCAtMyw3ICszLDkgQEAKIAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWNzX2NoYXJfdDsgIC8qIGFzc3VtaW5nIDMyYml0IGludCAqLwogCitzaXplX3QgZGlzcGxheV9tb2RlX2VzY19zZXF1ZW5jZV9sZW4oY29uc3QgY2hhciAqcyk7CiBpbnQgdXRmOF93aWR0aChjb25zdCBjaGFyICoqc3RhcnQsIHNpemVfdCAqcmVtYWluZGVyX3ApOworaW50IHV0Zjhfc3RybndpZHRoKGNvbnN0IGNoYXIgKnN0cmluZywgaW50IGxlbiwgaW50IHNraXBfYW5zaSk7CiBpbnQgdXRmOF9zdHJ3aWR0aChjb25zdCBjaGFyICpzdHJpbmcpOwogaW50IGlzX3V0ZjgoY29uc3QgY2hhciAqdGV4dCk7CiBpbnQgaXNfZW5jb2RpbmdfdXRmOChjb25zdCBjaGFyICpuYW1lKTsKQEAgLTE0LDEyICsxNiwyOSBAQAogCQljb25zdCBjaGFyICp0ZXh0LCBpbnQgaW5kZW50LCBpbnQgaW5kZW50MiwgaW50IHdpZHRoKTsKIHZvaWQgc3RyYnVmX2FkZF93cmFwcGVkX2J5dGVzKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqZGF0YSwgaW50IGxlbiwKIAkJCSAgICAgaW50IGluZGVudCwgaW50IGluZGVudDIsIGludCB3aWR0aCk7Cit2b2lkIHN0cmJ1Zl91dGY4X3JlcGxhY2Uoc3RydWN0IHN0cmJ1ZiAqc2IsIGludCBwb3MsIGludCB3aWR0aCwKKwkJCSBjb25zdCBjaGFyICpzdWJzdCk7CiAKICNpZm5kZWYgTk9fSUNPTlYKLWNoYXIgKnJlZW5jb2RlX3N0cmluZ19pY29udihjb25zdCBjaGFyICppbiwgc2l6ZV90IGluc3osIGljb252X3QgY29udik7Ci1jaGFyICpyZWVuY29kZV9zdHJpbmcoY29uc3QgY2hhciAqaW4sIGNvbnN0IGNoYXIgKm91dF9lbmNvZGluZywgY29uc3QgY2hhciAqaW5fZW5jb2RpbmcpOworY2hhciAqcmVlbmNvZGVfc3RyaW5nX2ljb252KGNvbnN0IGNoYXIgKmluLCBzaXplX3QgaW5zeiwKKwkJCSAgICBpY29udl90IGNvbnYsIGludCAqb3V0c3opOworY2hhciAqcmVlbmNvZGVfc3RyaW5nX2xlbihjb25zdCBjaGFyICppbiwgaW50IGluc3osCisJCQkgIGNvbnN0IGNoYXIgKm91dF9lbmNvZGluZywKKwkJCSAgY29uc3QgY2hhciAqaW5fZW5jb2RpbmcsCisJCQkgIGludCAqb3V0c3opOwogI2Vsc2UKLSNkZWZpbmUgcmVlbmNvZGVfc3RyaW5nKGEsYixjKSBOVUxMCisjZGVmaW5lIHJlZW5jb2RlX3N0cmluZ19sZW4oYSxiLGMsZCxlKSBOVUxMCiAjZW5kaWYKIAorc3RhdGljIGlubGluZSBjaGFyICpyZWVuY29kZV9zdHJpbmcoY29uc3QgY2hhciAqaW4sCisJCQkJICAgIGNvbnN0IGNoYXIgKm91dF9lbmNvZGluZywKKwkJCQkgICAgY29uc3QgY2hhciAqaW5fZW5jb2RpbmcpCit7CisJcmV0dXJuIHJlZW5jb2RlX3N0cmluZ19sZW4oaW4sIHN0cmxlbihpbiksCisJCQkJICAgb3V0X2VuY29kaW5nLCBpbl9lbmNvZGluZywKKwkJCQkgICBOVUxMKTsKK30KKworaW50IG1ic19jaHJsZW4oY29uc3QgY2hhciAqKnRleHQsIHNpemVfdCAqcmVtYWluZGVyX3AsIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS93aWxkbWF0Y2guYyBiL3dpbGRtYXRjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MWJhOTkKLS0tIC9kZXYvbnVsbAorKysgYi93aWxkbWF0Y2guYwpAQCAtMCwwICsxLDI3OSBAQAorLyoKKyoqICBEbyBzaGVsbC1zdHlsZSBwYXR0ZXJuIG1hdGNoaW5nIGZvciA/LCBcLCBbXSwgYW5kICogY2hhcmFjdGVycy4KKyoqICBJdCBpcyA4Yml0IGNsZWFuLgorKioKKyoqICBXcml0dGVuIGJ5IFJpY2ggJGFseiwgbWlycm9yIXJzLCBXZWQgTm92IDI2IDE5OjAzOjE3IEVTVCAxOTg2LgorKiogIFJpY2ggJGFseiBpcyBub3cgPHJzYWx6QGJibi5jb20+LgorKioKKyoqICBNb2RpZmllZCBieSBXYXluZSBEYXZpc29uIHRvIHNwZWNpYWwtY2FzZSAnLycgbWF0Y2hpbmcsIHRvIG1ha2UgJyoqJworKiogIHdvcmsgZGlmZmVyZW50bHkgdGhhbiAnKicsIGFuZCB0byBmaXggdGhlIGNoYXJhY3Rlci1jbGFzcyBjb2RlLgorKi8KKworI2luY2x1ZGUgImNhY2hlLmgiCisjaW5jbHVkZSAid2lsZG1hdGNoLmgiCisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcjsKKworLyogV2hhdCBjaGFyYWN0ZXIgbWFya3MgYW4gaW52ZXJ0ZWQgY2hhcmFjdGVyIGNsYXNzPyAqLworI2RlZmluZSBORUdBVEVfQ0xBU1MJJyEnCisjZGVmaW5lIE5FR0FURV9DTEFTUzIJJ14nCisKKyNkZWZpbmUgQ0NfRVEoY2xhc3MsIGxlbiwgbGl0bWF0Y2gpICgobGVuKSA9PSBzaXplb2YgKGxpdG1hdGNoKS0xIFwKKwkJCQkgICAgJiYgKihjbGFzcykgPT0gKihsaXRtYXRjaCkgXAorCQkJCSAgICAmJiBzdHJuY21wKChjaGFyKiljbGFzcywgbGl0bWF0Y2gsIGxlbikgPT0gMCkKKworI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8ICFkZWZpbmVkIGlzYXNjaWkKKyMgZGVmaW5lIElTQVNDSUkoYykgMQorI2Vsc2UKKyMgZGVmaW5lIElTQVNDSUkoYykgaXNhc2NpaShjKQorI2VuZGlmCisKKyNpZmRlZiBpc2JsYW5rCisjIGRlZmluZSBJU0JMQU5LKGMpIChJU0FTQ0lJKGMpICYmIGlzYmxhbmsoYykpCisjZWxzZQorIyBkZWZpbmUgSVNCTEFOSyhjKSAoKGMpID09ICcgJyB8fCAoYykgPT0gJ1x0JykKKyNlbmRpZgorCisjaWZkZWYgaXNncmFwaAorIyBkZWZpbmUgSVNHUkFQSChjKSAoSVNBU0NJSShjKSAmJiBpc2dyYXBoKGMpKQorI2Vsc2UKKyMgZGVmaW5lIElTR1JBUEgoYykgKElTQVNDSUkoYykgJiYgaXNwcmludChjKSAmJiAhaXNzcGFjZShjKSkKKyNlbmRpZgorCisjZGVmaW5lIElTUFJJTlQoYykgKElTQVNDSUkoYykgJiYgaXNwcmludChjKSkKKyNkZWZpbmUgSVNESUdJVChjKSAoSVNBU0NJSShjKSAmJiBpc2RpZ2l0KGMpKQorI2RlZmluZSBJU0FMTlVNKGMpIChJU0FTQ0lJKGMpICYmIGlzYWxudW0oYykpCisjZGVmaW5lIElTQUxQSEEoYykgKElTQVNDSUkoYykgJiYgaXNhbHBoYShjKSkKKyNkZWZpbmUgSVNDTlRSTChjKSAoSVNBU0NJSShjKSAmJiBpc2NudHJsKGMpKQorI2RlZmluZSBJU0xPV0VSKGMpIChJU0FTQ0lJKGMpICYmIGlzbG93ZXIoYykpCisjZGVmaW5lIElTUFVOQ1QoYykgKElTQVNDSUkoYykgJiYgaXNwdW5jdChjKSkKKyNkZWZpbmUgSVNTUEFDRShjKSAoSVNBU0NJSShjKSAmJiBpc3NwYWNlKGMpKQorI2RlZmluZSBJU1VQUEVSKGMpIChJU0FTQ0lJKGMpICYmIGlzdXBwZXIoYykpCisjZGVmaW5lIElTWERJR0lUKGMpIChJU0FTQ0lJKGMpICYmIGlzeGRpZ2l0KGMpKQorCisvKiBNYXRjaCBwYXR0ZXJuICJwIiBhZ2FpbnN0ICJ0ZXh0IiAqLworc3RhdGljIGludCBkb3dpbGQoY29uc3QgdWNoYXIgKnAsIGNvbnN0IHVjaGFyICp0ZXh0LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJdWNoYXIgcF9jaDsKKwljb25zdCB1Y2hhciAqcGF0dGVybiA9IHA7CisKKwlmb3IgKCA7IChwX2NoID0gKnApICE9ICdcMCc7IHRleHQrKywgcCsrKSB7CisJCWludCBtYXRjaGVkLCBtYXRjaF9zbGFzaCwgbmVnYXRlZDsKKwkJdWNoYXIgdF9jaCwgcHJldl9jaDsKKwkJaWYgKCh0X2NoID0gKnRleHQpID09ICdcMCcgJiYgcF9jaCAhPSAnKicpCisJCQlyZXR1cm4gV01fQUJPUlRfQUxMOworCQlpZiAoKGZsYWdzICYgV01fQ0FTRUZPTEQpICYmIElTVVBQRVIodF9jaCkpCisJCQl0X2NoID0gdG9sb3dlcih0X2NoKTsKKwkJaWYgKChmbGFncyAmIFdNX0NBU0VGT0xEKSAmJiBJU1VQUEVSKHBfY2gpKQorCQkJcF9jaCA9IHRvbG93ZXIocF9jaCk7CisJCXN3aXRjaCAocF9jaCkgeworCQljYXNlICdcXCc6CisJCQkvKiBMaXRlcmFsIG1hdGNoIHdpdGggZm9sbG93aW5nIGNoYXJhY3Rlci4gIE5vdGUgdGhhdCB0aGUgdGVzdAorCQkJICogaW4gImRlZmF1bHQiIGhhbmRsZXMgdGhlIHBbMV0gPT0gJ1wwJyBmYWlsdXJlIGNhc2UuICovCisJCQlwX2NoID0gKisrcDsKKwkJCS8qIEZBTExUSFJPVUdIICovCisJCWRlZmF1bHQ6CisJCQlpZiAodF9jaCAhPSBwX2NoKQorCQkJCXJldHVybiBXTV9OT01BVENIOworCQkJY29udGludWU7CisJCWNhc2UgJz8nOgorCQkJLyogTWF0Y2ggYW55dGhpbmcgYnV0ICcvJy4gKi8KKwkJCWlmICgoZmxhZ3MgJiBXTV9QQVRITkFNRSkgJiYgdF9jaCA9PSAnLycpCisJCQkJcmV0dXJuIFdNX05PTUFUQ0g7CisJCQljb250aW51ZTsKKwkJY2FzZSAnKic6CisJCQlpZiAoKisrcCA9PSAnKicpIHsKKwkJCQljb25zdCB1Y2hhciAqcHJldl9wID0gcCAtIDI7CisJCQkJd2hpbGUgKCorK3AgPT0gJyonKSB7fQorCQkJCWlmICghKGZsYWdzICYgV01fUEFUSE5BTUUpKQorCQkJCQkvKiB3aXRob3V0IFdNX1BBVEhOQU1FLCAnKicgPT0gJyoqJyAqLworCQkJCQltYXRjaF9zbGFzaCA9IDE7CisJCQkJZWxzZSBpZiAoKHByZXZfcCA8IHBhdHRlcm4gfHwgKnByZXZfcCA9PSAnLycpICYmCisJCQkJICAgICgqcCA9PSAnXDAnIHx8ICpwID09ICcvJyB8fAorCQkJCSAgICAgKHBbMF0gPT0gJ1xcJyAmJiBwWzFdID09ICcvJykpKSB7CisJCQkJCS8qCisJCQkJCSAqIEFzc3VtaW5nIHdlIGFscmVhZHkgbWF0Y2ggJ2Zvby8nIGFuZCBhcmUgYXQKKwkJCQkJICogPHN0YXIgc3RhciBzbGFzaD4sIGp1c3QgYXNzdW1lIGl0IG1hdGNoZXMKKwkJCQkJICogbm90aGluZyBhbmQgZ28gYWhlYWQgbWF0Y2ggdGhlIHJlc3Qgb2YgdGhlCisJCQkJCSAqIHBhdHRlcm4gd2l0aCB0aGUgcmVtYWluaW5nIHN0cmluZy4gVGhpcworCQkJCQkgKiBoZWxwcyBtYWtlIGZvby88Kj48Kj4vYmFyICg8PiBiZWNhdXNlCisJCQkJCSAqIG90aGVyd2lzZSBpdCBicmVha3MgQyBjb21tZW50IHN5bnRheCkgbWF0Y2gKKwkJCQkJICogYm90aCBmb28vYmFyIGFuZCBmb28vYS9iYXIuCisJCQkJCSAqLworCQkJCQlpZiAocFswXSA9PSAnLycgJiYKKwkJCQkJICAgIGRvd2lsZChwICsgMSwgdGV4dCwgZmxhZ3MpID09IFdNX01BVENIKQorCQkJCQkJcmV0dXJuIFdNX01BVENIOworCQkJCQltYXRjaF9zbGFzaCA9IDE7CisJCQkJfSBlbHNlCisJCQkJCXJldHVybiBXTV9BQk9SVF9NQUxGT1JNRUQ7CisJCQl9IGVsc2UKKwkJCQkvKiB3aXRob3V0IFdNX1BBVEhOQU1FLCAnKicgPT0gJyoqJyAqLworCQkJCW1hdGNoX3NsYXNoID0gZmxhZ3MgJiBXTV9QQVRITkFNRSA/IDAgOiAxOworCQkJaWYgKCpwID09ICdcMCcpIHsKKwkJCQkvKiBUcmFpbGluZyAiKioiIG1hdGNoZXMgZXZlcnl0aGluZy4gIFRyYWlsaW5nICIqIiBtYXRjaGVzCisJCQkJICogb25seSBpZiB0aGVyZSBhcmUgbm8gbW9yZSBzbGFzaCBjaGFyYWN0ZXJzLiAqLworCQkJCWlmICghbWF0Y2hfc2xhc2gpIHsKKwkJCQkJaWYgKHN0cmNocigoY2hhciopdGV4dCwgJy8nKSAhPSBOVUxMKQorCQkJCQkJcmV0dXJuIFdNX05PTUFUQ0g7CisJCQkJfQorCQkJCXJldHVybiBXTV9NQVRDSDsKKwkJCX0gZWxzZSBpZiAoIW1hdGNoX3NsYXNoICYmICpwID09ICcvJykgeworCQkJCS8qCisJCQkJICogX29uZV8gYXN0ZXJpc2sgZm9sbG93ZWQgYnkgYSBzbGFzaAorCQkJCSAqIHdpdGggV01fUEFUSE5BTUUgbWF0Y2hlcyB0aGUgbmV4dAorCQkJCSAqIGRpcmVjdG9yeQorCQkJCSAqLworCQkJCWNvbnN0IGNoYXIgKnNsYXNoID0gc3RyY2hyKChjaGFyKil0ZXh0LCAnLycpOworCQkJCWlmICghc2xhc2gpCisJCQkJCXJldHVybiBXTV9OT01BVENIOworCQkJCXRleHQgPSAoY29uc3QgdWNoYXIqKXNsYXNoOworCQkJCS8qIHRoZSBzbGFzaCBpcyBjb25zdW1lZCBieSB0aGUgdG9wLWxldmVsIGZvciBsb29wICovCisJCQkJYnJlYWs7CisJCQl9CisJCQl3aGlsZSAoMSkgeworCQkJCWlmICh0X2NoID09ICdcMCcpCisJCQkJCWJyZWFrOworCQkJCS8qCisJCQkJICogVHJ5IHRvIGFkdmFuY2UgZmFzdGVyIHdoZW4gYW4gYXN0ZXJpc2sgaXMKKwkJCQkgKiBmb2xsb3dlZCBieSBhIGxpdGVyYWwuIFdlIGtub3cgaW4gdGhpcyBjYXNlCisJCQkJICogdGhhdCB0aGUgdGhlIHN0cmluZyBiZWZvcmUgdGhlIGxpdGVyYWwKKwkJCQkgKiBtdXN0IGJlbG9uZyB0byAiKiIuCisJCQkJICogSWYgbWF0Y2hfc2xhc2ggaXMgZmFsc2UsIGRvIG5vdCBsb29rIHBhc3QKKwkJCQkgKiB0aGUgZmlyc3Qgc2xhc2ggYXMgaXQgY2Fubm90IGJlbG9uZyB0byAnKicuCisJCQkJICovCisJCQkJaWYgKCFpc19nbG9iX3NwZWNpYWwoKnApKSB7CisJCQkJCXBfY2ggPSAqcDsKKwkJCQkJaWYgKChmbGFncyAmIFdNX0NBU0VGT0xEKSAmJiBJU1VQUEVSKHBfY2gpKQorCQkJCQkJcF9jaCA9IHRvbG93ZXIocF9jaCk7CisJCQkJCXdoaWxlICgodF9jaCA9ICp0ZXh0KSAhPSAnXDAnICYmCisJCQkJCSAgICAgICAobWF0Y2hfc2xhc2ggfHwgdF9jaCAhPSAnLycpKSB7CisJCQkJCQlpZiAoKGZsYWdzICYgV01fQ0FTRUZPTEQpICYmIElTVVBQRVIodF9jaCkpCisJCQkJCQkJdF9jaCA9IHRvbG93ZXIodF9jaCk7CisJCQkJCQlpZiAodF9jaCA9PSBwX2NoKQorCQkJCQkJCWJyZWFrOworCQkJCQkJdGV4dCsrOworCQkJCQl9CisJCQkJCWlmICh0X2NoICE9IHBfY2gpCisJCQkJCQlyZXR1cm4gV01fTk9NQVRDSDsKKwkJCQl9CisJCQkJaWYgKChtYXRjaGVkID0gZG93aWxkKHAsIHRleHQsIGZsYWdzKSkgIT0gV01fTk9NQVRDSCkgeworCQkJCQlpZiAoIW1hdGNoX3NsYXNoIHx8IG1hdGNoZWQgIT0gV01fQUJPUlRfVE9fU1RBUlNUQVIpCisJCQkJCQlyZXR1cm4gbWF0Y2hlZDsKKwkJCQl9IGVsc2UgaWYgKCFtYXRjaF9zbGFzaCAmJiB0X2NoID09ICcvJykKKwkJCQkJcmV0dXJuIFdNX0FCT1JUX1RPX1NUQVJTVEFSOworCQkJCXRfY2ggPSAqKyt0ZXh0OworCQkJfQorCQkJcmV0dXJuIFdNX0FCT1JUX0FMTDsKKwkJY2FzZSAnWyc6CisJCQlwX2NoID0gKisrcDsKKyNpZmRlZiBORUdBVEVfQ0xBU1MyCisJCQlpZiAocF9jaCA9PSBORUdBVEVfQ0xBU1MyKQorCQkJCXBfY2ggPSBORUdBVEVfQ0xBU1M7CisjZW5kaWYKKwkJCS8qIEFzc2lnbiBsaXRlcmFsIDEvMCBiZWNhdXNlIG9mICJtYXRjaGVkIiBjb21wYXJpc29uLiAqLworCQkJbmVnYXRlZCA9IHBfY2ggPT0gTkVHQVRFX0NMQVNTID8gMSA6IDA7CisJCQlpZiAobmVnYXRlZCkgeworCQkJCS8qIEludmVydGVkIGNoYXJhY3RlciBjbGFzcy4gKi8KKwkJCQlwX2NoID0gKisrcDsKKwkJCX0KKwkJCXByZXZfY2ggPSAwOworCQkJbWF0Y2hlZCA9IDA7CisJCQlkbyB7CisJCQkJaWYgKCFwX2NoKQorCQkJCQlyZXR1cm4gV01fQUJPUlRfQUxMOworCQkJCWlmIChwX2NoID09ICdcXCcpIHsKKwkJCQkJcF9jaCA9ICorK3A7CisJCQkJCWlmICghcF9jaCkKKwkJCQkJCXJldHVybiBXTV9BQk9SVF9BTEw7CisJCQkJCWlmICh0X2NoID09IHBfY2gpCisJCQkJCQltYXRjaGVkID0gMTsKKwkJCQl9IGVsc2UgaWYgKHBfY2ggPT0gJy0nICYmIHByZXZfY2ggJiYgcFsxXSAmJiBwWzFdICE9ICddJykgeworCQkJCQlwX2NoID0gKisrcDsKKwkJCQkJaWYgKHBfY2ggPT0gJ1xcJykgeworCQkJCQkJcF9jaCA9ICorK3A7CisJCQkJCQlpZiAoIXBfY2gpCisJCQkJCQkJcmV0dXJuIFdNX0FCT1JUX0FMTDsKKwkJCQkJfQorCQkJCQlpZiAodF9jaCA8PSBwX2NoICYmIHRfY2ggPj0gcHJldl9jaCkKKwkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQllbHNlIGlmICgoZmxhZ3MgJiBXTV9DQVNFRk9MRCkgJiYgSVNMT1dFUih0X2NoKSkgeworCQkJCQkJdWNoYXIgdF9jaF91cHBlciA9IHRvdXBwZXIodF9jaCk7CisJCQkJCQlpZiAodF9jaF91cHBlciA8PSBwX2NoICYmIHRfY2hfdXBwZXIgPj0gcHJldl9jaCkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfQorCQkJCQlwX2NoID0gMDsgLyogVGhpcyBtYWtlcyAicHJldl9jaCIgZ2V0IHNldCB0byAwLiAqLworCQkJCX0gZWxzZSBpZiAocF9jaCA9PSAnWycgJiYgcFsxXSA9PSAnOicpIHsKKwkJCQkJY29uc3QgdWNoYXIgKnM7CisJCQkJCWludCBpOworCQkJCQlmb3IgKHMgPSBwICs9IDI7IChwX2NoID0gKnApICYmIHBfY2ggIT0gJ10nOyBwKyspIHt9IC8qU0hBUkVEIElURVJBVE9SKi8KKwkJCQkJaWYgKCFwX2NoKQorCQkJCQkJcmV0dXJuIFdNX0FCT1JUX0FMTDsKKwkJCQkJaSA9IHAgLSBzIC0gMTsKKwkJCQkJaWYgKGkgPCAwIHx8IHBbLTFdICE9ICc6JykgeworCQkJCQkJLyogRGlkbid0IGZpbmQgIjpdIiwgc28gdHJlYXQgbGlrZSBhIG5vcm1hbCBzZXQuICovCisJCQkJCQlwID0gcyAtIDI7CisJCQkJCQlwX2NoID0gJ1snOworCQkJCQkJaWYgKHRfY2ggPT0gcF9jaCkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisJCQkJCWlmIChDQ19FUShzLGksICJhbG51bSIpKSB7CisJCQkJCQlpZiAoSVNBTE5VTSh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJhbHBoYSIpKSB7CisJCQkJCQlpZiAoSVNBTFBIQSh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJibGFuayIpKSB7CisJCQkJCQlpZiAoSVNCTEFOSyh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJjbnRybCIpKSB7CisJCQkJCQlpZiAoSVNDTlRSTCh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJkaWdpdCIpKSB7CisJCQkJCQlpZiAoSVNESUdJVCh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJncmFwaCIpKSB7CisJCQkJCQlpZiAoSVNHUkFQSCh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJsb3dlciIpKSB7CisJCQkJCQlpZiAoSVNMT1dFUih0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJwcmludCIpKSB7CisJCQkJCQlpZiAoSVNQUklOVCh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJwdW5jdCIpKSB7CisJCQkJCQlpZiAoSVNQVU5DVCh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJzcGFjZSIpKSB7CisJCQkJCQlpZiAoSVNTUEFDRSh0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJfSBlbHNlIGlmIChDQ19FUShzLGksICJ1cHBlciIpKSB7CisJCQkJCQlpZiAoSVNVUFBFUih0X2NoKSkKKwkJCQkJCQltYXRjaGVkID0gMTsKKwkJCQkJCWVsc2UgaWYgKChmbGFncyAmIFdNX0NBU0VGT0xEKSAmJiBJU0xPV0VSKHRfY2gpKQorCQkJCQkJCW1hdGNoZWQgPSAxOworCQkJCQl9IGVsc2UgaWYgKENDX0VRKHMsaSwgInhkaWdpdCIpKSB7CisJCQkJCQlpZiAoSVNYRElHSVQodF9jaCkpCisJCQkJCQkJbWF0Y2hlZCA9IDE7CisJCQkJCX0gZWxzZSAvKiBtYWxmb3JtZWQgWzpjbGFzczpdIHN0cmluZyAqLworCQkJCQkJcmV0dXJuIFdNX0FCT1JUX0FMTDsKKwkJCQkJcF9jaCA9IDA7IC8qIFRoaXMgbWFrZXMgInByZXZfY2giIGdldCBzZXQgdG8gMC4gKi8KKwkJCQl9IGVsc2UgaWYgKHRfY2ggPT0gcF9jaCkKKwkJCQkJbWF0Y2hlZCA9IDE7CisJCQl9IHdoaWxlIChwcmV2X2NoID0gcF9jaCwgKHBfY2ggPSAqKytwKSAhPSAnXScpOworCQkJaWYgKG1hdGNoZWQgPT0gbmVnYXRlZCB8fAorCQkJICAgICgoZmxhZ3MgJiBXTV9QQVRITkFNRSkgJiYgdF9jaCA9PSAnLycpKQorCQkJCXJldHVybiBXTV9OT01BVENIOworCQkJY29udGludWU7CisJCX0KKwl9CisKKwlyZXR1cm4gKnRleHQgPyBXTV9OT01BVENIIDogV01fTUFUQ0g7Cit9CisKKy8qIE1hdGNoIHRoZSAicGF0dGVybiIgYWdhaW5zdCB0aGUgInRleHQiIHN0cmluZy4gKi8KK2ludCB3aWxkbWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqdGV4dCwKKwkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCB3aWxkb3B0cyAqd28pCit7CisJcmV0dXJuIGRvd2lsZCgoY29uc3QgdWNoYXIqKXBhdHRlcm4sIChjb25zdCB1Y2hhciopdGV4dCwgZmxhZ3MpOworfQpkaWZmIC0tZ2l0IGEvd2lsZG1hdGNoLmggYi93aWxkbWF0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDkwYzhmCi0tLSAvZGV2L251bGwKKysrIGIvd2lsZG1hdGNoLmgKQEAgLTAsMCArMSwxOCBAQAorI2lmbmRlZiBXSUxETUFUQ0hfSAorI2RlZmluZSBXSUxETUFUQ0hfSAorCisjZGVmaW5lIFdNX0NBU0VGT0xEIDEKKyNkZWZpbmUgV01fUEFUSE5BTUUgMgorCisjZGVmaW5lIFdNX0FCT1JUX01BTEZPUk1FRCAyCisjZGVmaW5lIFdNX05PTUFUQ0ggMQorI2RlZmluZSBXTV9NQVRDSCAwCisjZGVmaW5lIFdNX0FCT1JUX0FMTCAtMQorI2RlZmluZSBXTV9BQk9SVF9UT19TVEFSU1RBUiAtMgorCitzdHJ1Y3Qgd2lsZG9wdHM7CisKK2ludCB3aWxkbWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqdGV4dCwKKwkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJICAgICAgc3RydWN0IHdpbGRvcHRzICp3byk7CisjZW5kaWYKZGlmZiAtLWdpdCBhL3dyYXBwZXIuYyBiL3dyYXBwZXIuYwppbmRleCBiYWM1OWQyLi5kZDdlY2JiIDEwMDY0NAotLS0gYS93cmFwcGVyLmMKKysrIGIvd3JhcHBlci5jCkBAIC00MDgsMTggKzQwOCwyNCBAQAogCXdhcm5pbmcoXygidW5hYmxlIHRvIGFjY2VzcyAnJXMnOiAlcyIpLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOwogfQogCi1pbnQgYWNjZXNzX29yX3dhcm4oY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUpCitzdGF0aWMgaW50IGFjY2Vzc19lcnJvcl9pc19vayhpbnQgZXJyLCB1bnNpZ25lZCBmbGFnKQoreworCXJldHVybiBlcnIgPT0gRU5PRU5UIHx8IGVyciA9PSBFTk9URElSIHx8CisJCSgoZmxhZyAmIEFDQ0VTU19FQUNDRVNfT0spICYmIGVyciA9PSBFQUNDRVMpOworfQorCitpbnQgYWNjZXNzX29yX3dhcm4oY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUsIHVuc2lnbmVkIGZsYWcpCiB7CiAJaW50IHJldCA9IGFjY2VzcyhwYXRoLCBtb2RlKTsKLQlpZiAocmV0ICYmIGVycm5vICE9IEVOT0VOVCAmJiBlcnJubyAhPSBFTk9URElSKQorCWlmIChyZXQgJiYgIWFjY2Vzc19lcnJvcl9pc19vayhlcnJubywgZmxhZykpCiAJCXdhcm5fb25faW5hY2Nlc3NpYmxlKHBhdGgpOwogCXJldHVybiByZXQ7CiB9CiAKLWludCBhY2Nlc3Nfb3JfZGllKGNvbnN0IGNoYXIgKnBhdGgsIGludCBtb2RlKQoraW50IGFjY2Vzc19vcl9kaWUoY29uc3QgY2hhciAqcGF0aCwgaW50IG1vZGUsIHVuc2lnbmVkIGZsYWcpCiB7CiAJaW50IHJldCA9IGFjY2VzcyhwYXRoLCBtb2RlKTsKLQlpZiAocmV0ICYmIGVycm5vICE9IEVOT0VOVCAmJiBlcnJubyAhPSBFTk9URElSKQorCWlmIChyZXQgJiYgIWFjY2Vzc19lcnJvcl9pc19vayhlcnJubywgZmxhZykpCiAJCWRpZV9lcnJubyhfKCJ1bmFibGUgdG8gYWNjZXNzICclcyciKSwgcGF0aCk7CiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3dyaXRlX29yX2RpZS5jIGIvd3JpdGVfb3JfZGllLmMKaW5kZXggOTYwZjQ0OC4uYjUwZjk5YSAxMDA2NDQKLS0tIGEvd3JpdGVfb3JfZGllLmMKKysrIGIvd3JpdGVfb3JfZGllLmMKQEAgLTEsNSArMSwxNSBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAKK3N0YXRpYyB2b2lkIGNoZWNrX3BpcGUoaW50IGVycikKK3sKKwlpZiAoZXJyID09IEVQSVBFKSB7CisJCXNpZ25hbChTSUdQSVBFLCBTSUdfREZMKTsKKwkJcmFpc2UoU0lHUElQRSk7CisJCS8qIFNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBqdXN0IGluIGNhc2UuLi4gKi8KKwkJZXhpdCgxNDEpOworCX0KK30KKwogLyoKICAqIFNvbWUgY2FzZXMgdXNlIHN0ZGlvLCBidXQgd2FudCB0byBmbHVzaCBhZnRlciB0aGUgd3JpdGUKICAqIHRvIGdldCBlcnJvciBoYW5kbGluZyAoYW5kIHRvIGdldCBiZXR0ZXIgaW50ZXJhY3RpdmUKQEAgLTM0LDggKzQ0LDcgQEAKIAkJCXJldHVybjsKIAl9CiAJaWYgKGZmbHVzaChmKSkgewotCQlpZiAoZXJybm8gPT0gRVBJUEUpCi0JCQlleGl0KDApOworCQljaGVja19waXBlKGVycm5vKTsKIAkJZGllX2Vycm5vKCJ3cml0ZSBmYWlsdXJlIG9uICclcyciLCBkZXNjKTsKIAl9CiB9CkBAIC01MCw4ICs1OSw3IEBACiB2b2lkIHdyaXRlX29yX2RpZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQogewogCWlmICh3cml0ZV9pbl9mdWxsKGZkLCBidWYsIGNvdW50KSA8IDApIHsKLQkJaWYgKGVycm5vID09IEVQSVBFKQotCQkJZXhpdCgwKTsKKwkJY2hlY2tfcGlwZShlcnJubyk7CiAJCWRpZV9lcnJubygid3JpdGUgZXJyb3IiKTsKIAl9CiB9CkBAIC01OSw4ICs2Nyw3IEBACiBpbnQgd3JpdGVfb3Jfd2hpbmVfcGlwZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyICptc2cpCiB7CiAJaWYgKHdyaXRlX2luX2Z1bGwoZmQsIGJ1ZiwgY291bnQpIDwgMCkgewotCQlpZiAoZXJybm8gPT0gRVBJUEUpCi0JCQlleGl0KDApOworCQljaGVja19waXBlKGVycm5vKTsKIAkJZnByaW50ZihzdGRlcnIsICIlczogd3JpdGUgZXJyb3IgKCVzKVxuIiwKIAkJCW1zZywgc3RyZXJyb3IoZXJybm8pKTsKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS93dC1zdGF0dXMuYyBiL3d0LXN0YXR1cy5jCmluZGV4IGQ3Y2ZlOGYuLjQzOGE0MGQgMTAwNjQ0Ci0tLSBhL3d0LXN0YXR1cy5jCisrKyBiL3d0LXN0YXR1cy5jCkBAIC00NSw3ICs0NSw3IEBACiAKIAlzdHJidWZfdmFkZGYoJnNiLCBmbXQsIGFwKTsKIAlpZiAoIXNiLmxlbikgewotCQlzdHJidWZfYWRkY2goJnNiLCAnIycpOworCQlzdHJidWZfYWRkY2goJnNiLCBjb21tZW50X2xpbmVfY2hhcik7CiAJCWlmICghdHJhaWwpCiAJCQlzdHJidWZfYWRkY2goJnNiLCAnICcpOwogCQljb2xvcl9wcmludF9zdHJidWYocy0+ZnAsIGNvbG9yLCAmc2IpOwpAQCAtNTksNyArNTksNyBAQAogCiAJCXN0cmJ1Zl9yZXNldCgmbGluZWJ1Zik7CiAJCWlmIChhdF9ib2wpIHsKLQkJCXN0cmJ1Zl9hZGRjaCgmbGluZWJ1ZiwgJyMnKTsKKwkJCXN0cmJ1Zl9hZGRjaCgmbGluZWJ1ZiwgY29tbWVudF9saW5lX2NoYXIpOwogCQkJaWYgKCpsaW5lICE9ICdcbicgJiYgKmxpbmUgIT0gJ1x0JykKIAkJCQlzdHJidWZfYWRkY2goJmxpbmVidWYsICcgJyk7CiAJCX0KQEAgLTI2NCw3ICsyNjQsNyBAQAogewogCXN0cnVjdCB3dF9zdGF0dXNfY2hhbmdlX2RhdGEgKmQgPSBpdC0+dXRpbDsKIAljb25zdCBjaGFyICpjID0gY29sb3IoY2hhbmdlX3R5cGUsIHMpOwotCWludCBzdGF0dXMgPSBzdGF0dXM7CisJaW50IHN0YXR1czsKIAljaGFyICpvbmVfbmFtZTsKIAljaGFyICp0d29fbmFtZTsKIAljb25zdCBjaGFyICpvbmUsICp0d287CkBAIC0yOTIsNiArMjkyLDkgQEAKIAkJfQogCQlzdGF0dXMgPSBkLT53b3JrdHJlZV9zdGF0dXM7CiAJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRpZSgiQlVHOiB1bmhhbmRsZWQgY2hhbmdlX3R5cGUgJWQgaW4gd3Rfc3RhdHVzX3ByaW50X2NoYW5nZV9kYXRhIiwKKwkJICAgIGNoYW5nZV90eXBlKTsKIAl9CiAKIAlvbmUgPSBxdW90ZV9wYXRoKG9uZV9uYW1lLCAtMSwgJm9uZWJ1Ziwgcy0+cHJlZml4KTsKQEAgLTQ5NiwxNiArNDk5LDI0IEBACiB7CiAJaW50IGk7CiAJc3RydWN0IGRpcl9zdHJ1Y3QgZGlyOworCXN0cnVjdCB0aW1ldmFsIHRfYmVnaW47CiAKIAlpZiAoIXMtPnNob3dfdW50cmFja2VkX2ZpbGVzKQogCQlyZXR1cm47CisKKwlpZiAoYWR2aWNlX3N0YXR1c191X29wdGlvbikKKwkJZ2V0dGltZW9mZGF5KCZ0X2JlZ2luLCBOVUxMKTsKKwogCW1lbXNldCgmZGlyLCAwLCBzaXplb2YoZGlyKSk7CiAJaWYgKHMtPnNob3dfdW50cmFja2VkX2ZpbGVzICE9IFNIT1dfQUxMX1VOVFJBQ0tFRF9GSUxFUykKIAkJZGlyLmZsYWdzIHw9CiAJCQlESVJfU0hPV19PVEhFUl9ESVJFQ1RPUklFUyB8IERJUl9ISURFX0VNUFRZX0RJUkVDVE9SSUVTOworCWlmIChzLT5zaG93X2lnbm9yZWRfZmlsZXMpCisJCWRpci5mbGFncyB8PSBESVJfU0hPV19JR05PUkVEX1RPTzsKIAlzZXR1cF9zdGFuZGFyZF9leGNsdWRlcygmZGlyKTsKIAogCWZpbGxfZGlyZWN0b3J5KCZkaXIsIHMtPnBhdGhzcGVjKTsKKwogCWZvciAoaSA9IDA7IGkgPCBkaXIubnI7IGkrKykgewogCQlzdHJ1Y3QgZGlyX2VudHJ5ICplbnQgPSBkaXIuZW50cmllc1tpXTsKIAkJaWYgKGNhY2hlX25hbWVfaXNfb3RoZXIoZW50LT5uYW1lLCBlbnQtPmxlbikgJiYKQEAgLTUxNCwyMiArNTI1LDI1IEBACiAJCWZyZWUoZW50KTsKIAl9CiAKLQlpZiAocy0+c2hvd19pZ25vcmVkX2ZpbGVzKSB7Ci0JCWRpci5uciA9IDA7Ci0JCWRpci5mbGFncyA9IERJUl9TSE9XX0lHTk9SRUQ7Ci0JCWlmIChzLT5zaG93X3VudHJhY2tlZF9maWxlcyAhPSBTSE9XX0FMTF9VTlRSQUNLRURfRklMRVMpCi0JCQlkaXIuZmxhZ3MgfD0gRElSX1NIT1dfT1RIRVJfRElSRUNUT1JJRVM7Ci0JCWZpbGxfZGlyZWN0b3J5KCZkaXIsIHMtPnBhdGhzcGVjKTsKLQkJZm9yIChpID0gMDsgaSA8IGRpci5ucjsgaSsrKSB7Ci0JCQlzdHJ1Y3QgZGlyX2VudHJ5ICplbnQgPSBkaXIuZW50cmllc1tpXTsKLQkJCWlmIChjYWNoZV9uYW1lX2lzX290aGVyKGVudC0+bmFtZSwgZW50LT5sZW4pICYmCi0JCQkgICAgbWF0Y2hfcGF0aHNwZWMocy0+cGF0aHNwZWMsIGVudC0+bmFtZSwgZW50LT5sZW4sIDAsIE5VTEwpKQotCQkJCXN0cmluZ19saXN0X2luc2VydCgmcy0+aWdub3JlZCwgZW50LT5uYW1lKTsKLQkJCWZyZWUoZW50KTsKLQkJfQorCWZvciAoaSA9IDA7IGkgPCBkaXIuaWdub3JlZF9ucjsgaSsrKSB7CisJCXN0cnVjdCBkaXJfZW50cnkgKmVudCA9IGRpci5pZ25vcmVkW2ldOworCQlpZiAoY2FjaGVfbmFtZV9pc19vdGhlcihlbnQtPm5hbWUsIGVudC0+bGVuKSAmJgorCQkgICAgbWF0Y2hfcGF0aHNwZWMocy0+cGF0aHNwZWMsIGVudC0+bmFtZSwgZW50LT5sZW4sIDAsIE5VTEwpKQorCQkJc3RyaW5nX2xpc3RfaW5zZXJ0KCZzLT5pZ25vcmVkLCBlbnQtPm5hbWUpOworCQlmcmVlKGVudCk7CiAJfQogCiAJZnJlZShkaXIuZW50cmllcyk7CisJZnJlZShkaXIuaWdub3JlZCk7CisJY2xlYXJfZGlyZWN0b3J5KCZkaXIpOworCisJaWYgKGFkdmljZV9zdGF0dXNfdV9vcHRpb24pIHsKKwkJc3RydWN0IHRpbWV2YWwgdF9lbmQ7CisJCWdldHRpbWVvZmRheSgmdF9lbmQsIE5VTEwpOworCQlzLT51bnRyYWNrZWRfaW5fbXMgPQorCQkJKHVpbnQ2NF90KXRfZW5kLnR2X3NlYyAqIDEwMDAgKyB0X2VuZC50dl91c2VjIC8gMTAwMCAtCisJCQkoKHVpbnQ2NF90KXRfYmVnaW4udHZfc2VjICogMTAwMCArIHRfYmVnaW4udHZfdXNlYyAvIDEwMDApOworCX0KIH0KIAogdm9pZCB3dF9zdGF0dXNfY29sbGVjdChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQpAQCAtNzYyLDggKzc3NiwxMCBAQAogCiAJZm9yIChjcCA9IHNiLmJ1ZjsgKGVwID0gc3RyY2hyKGNwLCAnXG4nKSkgIT0gTlVMTDsgY3AgPSBlcCArIDEpCiAJCWNvbG9yX2ZwcmludGZfbG4ocy0+ZnAsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpLAotCQkJCSAiIyAlLipzIiwgKGludCkoZXAgLSBjcCksIGNwKTsKLQljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwgIiMiKTsKKwkJCQkgIiVjICUuKnMiLCBjb21tZW50X2xpbmVfY2hhciwKKwkJCQkgKGludCkoZXAgLSBjcCksIGNwKTsKKwljb2xvcl9mcHJpbnRmX2xuKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwgIiVjIiwKKwkJCSBjb21tZW50X2xpbmVfY2hhcik7CiB9CiAKIHN0YXRpYyBpbnQgaGFzX3VubWVyZ2VkKHN0cnVjdCB3dF9zdGF0dXMgKnMpCkBAIC04NzIsNyArODg4LDE0IEBACiAJc3RydWN0IHN0YXQgc3Q7CiAKIAlpZiAoaGFzX3VubWVyZ2VkKHMpKSB7Ci0JCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsIF8oIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIpKTsKKwkJaWYgKHN0YXRlLT5icmFuY2gpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCQkgXygiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iKSwKKwkJCQkJIHN0YXRlLT5icmFuY2gsCisJCQkJCSBzdGF0ZS0+b250byk7CisJCWVsc2UKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4iKSk7CiAJCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzKSB7CiAJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAogCQkJCV8oIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlXCIpIikpOwpAQCAtODgyLDE3ICs5MDUsMzggQEAKIAkJCQlfKCIgICh1c2UgXCJnaXQgcmViYXNlIC0tYWJvcnRcIiB0byBjaGVjayBvdXQgdGhlIG9yaWdpbmFsIGJyYW5jaCkiKSk7CiAJCX0KIAl9IGVsc2UgaWYgKHN0YXRlLT5yZWJhc2VfaW5fcHJvZ3Jlc3MgfHwgIXN0YXQoZ2l0X3BhdGgoIk1FUkdFX01TRyIpLCAmc3QpKSB7Ci0JCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsIF8oIllvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nLiIpKTsKKwkJaWYgKHN0YXRlLT5icmFuY2gpCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCQkgXygiWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICclcycgb24gJyVzJy4iKSwKKwkJCQkJIHN0YXRlLT5icmFuY2gsCisJCQkJCSBzdGF0ZS0+b250byk7CisJCWVsc2UKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZy4iKSk7CiAJCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzKQogCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKIAkJCQlfKCIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiKSk7CiAJfSBlbHNlIGlmIChzcGxpdF9jb21taXRfaW5fcHJvZ3Jlc3MocykpIHsKLQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwgXygiWW91IGFyZSBjdXJyZW50bHkgc3BsaXR0aW5nIGEgY29tbWl0IGR1cmluZyBhIHJlYmFzZS4iKSk7CisJCWlmIChzdGF0ZS0+YnJhbmNoKQorCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJyVzJyBvbiAnJXMnLiIpLAorCQkJCQkgc3RhdGUtPmJyYW5jaCwKKwkJCQkJIHN0YXRlLT5vbnRvKTsKKwkJZWxzZQorCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkJIF8oIllvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIikpOwogCQlpZiAoYWR2aWNlX3N0YXR1c19oaW50cykKIAkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCiAJCQkJXygiICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIikiKSk7CiAJfSBlbHNlIHsKLQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwgXygiWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIikpOworCQlpZiAoc3RhdGUtPmJyYW5jaCkKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJCSBfKCJZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnJXMnIG9uICclcycuIiksCisJCQkJCSBzdGF0ZS0+YnJhbmNoLAorCQkJCQkgc3RhdGUtPm9udG8pOworCQllbHNlCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCQkgXygiWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCBkdXJpbmcgYSByZWJhc2UuIikpOwogCQlpZiAoYWR2aWNlX3N0YXR1c19oaW50cyAmJiAhcy0+YW1lbmQpIHsKIAkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCiAJCQkJXygiICAodXNlIFwiZ2l0IGNvbW1pdCAtLWFtZW5kXCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KSIpKTsKQEAgLTkxMSwxMCArOTU1LDMxIEBACiAJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpIHsKIAkJaWYgKGhhc191bm1lcmdlZChzKSkKIAkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCi0JCQkJXygiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNvbW1pdFwiKSIpKTsKKwkJCQlfKCIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgY2hlcnJ5LXBpY2sgLS1jb250aW51ZVwiKSIpKTsKIAkJZWxzZQogCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKLQkJCQlfKCIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgY29tbWl0XCIpIikpOworCQkJCV8oIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlXCIpIikpOworCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJXygiICAodXNlIFwiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIGNoZXJyeS1waWNrIG9wZXJhdGlvbikiKSk7CisJfQorCXd0X3N0YXR1c19wcmludF90cmFpbGVyKHMpOworfQorCitzdGF0aWMgdm9pZCBzaG93X3JldmVydF9pbl9wcm9ncmVzcyhzdHJ1Y3Qgd3Rfc3RhdHVzICpzLAorCQkJCQlzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlICpzdGF0ZSwKKwkJCQkJY29uc3QgY2hhciAqY29sb3IpCit7CisJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwgXygiWW91IGFyZSBjdXJyZW50bHkgcmV2ZXJ0aW5nIGNvbW1pdCAlcy4iKSwKKwkJCSBmaW5kX3VuaXF1ZV9hYmJyZXYoc3RhdGUtPnJldmVydF9oZWFkX3NoYTEsIERFRkFVTFRfQUJCUkVWKSk7CisJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpIHsKKwkJaWYgKGhhc191bm1lcmdlZChzKSkKKwkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCisJCQkJXygiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIikpOworCQllbHNlCisJCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJCV8oIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIpKTsKKwkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCV8oIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiKSk7CiAJfQogCXd0X3N0YXR1c19wcmludF90cmFpbGVyKHMpOwogfQpAQCAtOTIzLDU4ICs5ODgsMTg4IEBACiAJCQkJc3RydWN0IHd0X3N0YXR1c19zdGF0ZSAqc3RhdGUsCiAJCQkJY29uc3QgY2hhciAqY29sb3IpCiB7Ci0Jc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwgXygiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIpKTsKKwlpZiAoc3RhdGUtPmJyYW5jaCkKKwkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkgXygiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLCBzdGFydGVkIGZyb20gYnJhbmNoICclcycuIiksCisJCQkJIHN0YXRlLT5icmFuY2gpOworCWVsc2UKKwkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKKwkJCQkgXygiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIpKTsKIAlpZiAoYWR2aWNlX3N0YXR1c19oaW50cykKIAkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKIAkJCV8oIiAgKHVzZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoKSIpKTsKIAl3dF9zdGF0dXNfcHJpbnRfdHJhaWxlcihzKTsKIH0KIAotc3RhdGljIHZvaWQgd3Rfc3RhdHVzX3ByaW50X3N0YXRlKHN0cnVjdCB3dF9zdGF0dXMgKnMpCisvKgorICogRXh0cmFjdCBicmFuY2ggaW5mb3JtYXRpb24gZnJvbSByZWJhc2UvYmlzZWN0CisgKi8KK3N0YXRpYyBjaGFyICpyZWFkX2FuZF9zdHJpcF9icmFuY2goY29uc3QgY2hhciAqcGF0aCkKIHsKLQljb25zdCBjaGFyICpzdGF0ZV9jb2xvciA9IGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpOwotCXN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgc3RhdGU7Ci0Jc3RydWN0IHN0YXQgc3Q7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAKLQltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKTsKKwlpZiAoc3RyYnVmX3JlYWRfZmlsZSgmc2IsIGdpdF9wYXRoKCIlcyIsIHBhdGgpLCAwKSA8PSAwKQorCQlnb3RvIGdvdF9ub3RoaW5nOworCisJd2hpbGUgKCZzYi5sZW4gJiYgc2IuYnVmW3NiLmxlbiAtIDFdID09ICdcbicpCisJCXN0cmJ1Zl9zZXRsZW4oJnNiLCBzYi5sZW4gLSAxKTsKKwlpZiAoIXNiLmxlbikKKwkJZ290byBnb3Rfbm90aGluZzsKKwlpZiAoIXByZWZpeGNtcChzYi5idWYsICJyZWZzL2hlYWRzLyIpKQorCQlzdHJidWZfcmVtb3ZlKCZzYiwwLCBzdHJsZW4oInJlZnMvaGVhZHMvIikpOworCWVsc2UgaWYgKCFwcmVmaXhjbXAoc2IuYnVmLCAicmVmcy8iKSkKKwkJOworCWVsc2UgaWYgKCFnZXRfc2hhMV9oZXgoc2IuYnVmLCBzaGExKSkgeworCQljb25zdCBjaGFyICphYmJyZXY7CisJCWFiYnJldiA9IGZpbmRfdW5pcXVlX2FiYnJldihzaGExLCBERUZBVUxUX0FCQlJFVik7CisJCXN0cmJ1Zl9yZXNldCgmc2IpOworCQlzdHJidWZfYWRkc3RyKCZzYiwgYWJicmV2KTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoc2IuYnVmLCAiZGV0YWNoZWQgSEVBRCIpKSAvKiByZWJhc2UgKi8KKwkJZ290byBnb3Rfbm90aGluZzsKKwllbHNlCQkJLyogYmlzZWN0ICovCisJCTsKKwlyZXR1cm4gc3RyYnVmX2RldGFjaCgmc2IsIE5VTEwpOworCitnb3Rfbm90aGluZzoKKwlzdHJidWZfcmVsZWFzZSgmc2IpOworCXJldHVybiBOVUxMOworfQorCitzdHJ1Y3QgZ3JhYl8xc3Rfc3dpdGNoX2NiZGF0YSB7CisJaW50IGZvdW5kOworCXN0cnVjdCBzdHJidWYgYnVmOworCXVuc2lnbmVkIGNoYXIgbnNoYTFbMjBdOworfTsKKworc3RhdGljIGludCBncmFiXzFzdF9zd2l0Y2godW5zaWduZWQgY2hhciAqb3NoYTEsIHVuc2lnbmVkIGNoYXIgKm5zaGExLAorCQkJICAgY29uc3QgY2hhciAqZW1haWwsIHVuc2lnbmVkIGxvbmcgdGltZXN0YW1wLCBpbnQgdHosCisJCQkgICBjb25zdCBjaGFyICptZXNzYWdlLCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBncmFiXzFzdF9zd2l0Y2hfY2JkYXRhICpjYiA9IGNiX2RhdGE7CisJY29uc3QgY2hhciAqdGFyZ2V0ID0gTlVMTCwgKmVuZDsKKworCWlmIChwcmVmaXhjbXAobWVzc2FnZSwgImNoZWNrb3V0OiBtb3ZpbmcgZnJvbSAiKSkKKwkJcmV0dXJuIDA7CisJbWVzc2FnZSArPSBzdHJsZW4oImNoZWNrb3V0OiBtb3ZpbmcgZnJvbSAiKTsKKwl0YXJnZXQgPSBzdHJzdHIobWVzc2FnZSwgIiB0byAiKTsKKwlpZiAoIXRhcmdldCkKKwkJcmV0dXJuIDA7CisJdGFyZ2V0ICs9IHN0cmxlbigiIHRvICIpOworCXN0cmJ1Zl9yZXNldCgmY2ItPmJ1Zik7CisJaGFzaGNweShjYi0+bnNoYTEsIG5zaGExKTsKKwlmb3IgKGVuZCA9IHRhcmdldDsgKmVuZCAmJiAqZW5kICE9ICdcbic7IGVuZCsrKQorCQk7CisJc3RyYnVmX2FkZCgmY2ItPmJ1ZiwgdGFyZ2V0LCBlbmQgLSB0YXJnZXQpOworCWNiLT5mb3VuZCA9IDE7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkIHd0X3N0YXR1c19nZXRfZGV0YWNoZWRfZnJvbShzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZ3JhYl8xc3Rfc3dpdGNoX2NiZGF0YSBjYjsKKwlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwljaGFyICpyZWYgPSBOVUxMOworCisJc3RyYnVmX2luaXQoJmNiLmJ1ZiwgMCk7CisJaWYgKGZvcl9lYWNoX3JlZmxvZ19lbnRfcmV2ZXJzZSgiSEVBRCIsIGdyYWJfMXN0X3N3aXRjaCwgJmNiKSA8PSAwKSB7CisJCXN0cmJ1Zl9yZWxlYXNlKCZjYi5idWYpOworCQlyZXR1cm47CisJfQorCisJaWYgKGR3aW1fcmVmKGNiLmJ1Zi5idWYsIGNiLmJ1Zi5sZW4sIHNoYTEsICZyZWYpID09IDEgJiYKKwkgICAgLyogc2hhMSBpcyBhIGNvbW1pdD8gbWF0Y2ggd2l0aG91dCBmdXJ0aGVyIGxvb2t1cCAqLworCSAgICAoIWhhc2hjbXAoY2IubnNoYTEsIHNoYTEpIHx8CisJICAgICAvKiBwZXJoYXBzIHNoYTEgaXMgYSB0YWcsIHRyeSB0byBkZXJlZmVyZW5jZSB0byBhIGNvbW1pdCAqLworCSAgICAgKChjb21taXQgPSBsb29rdXBfY29tbWl0X3JlZmVyZW5jZV9nZW50bHkoc2hhMSwgMSkpICE9IE5VTEwgJiYKKwkgICAgICAhaGFzaGNtcChjYi5uc2hhMSwgY29tbWl0LT5vYmplY3Quc2hhMSkpKSkgeworCQlpbnQgb2ZzOworCQlpZiAoIXByZWZpeGNtcChyZWYsICJyZWZzL3RhZ3MvIikpCisJCQlvZnMgPSBzdHJsZW4oInJlZnMvdGFncy8iKTsKKwkJZWxzZSBpZiAoIXByZWZpeGNtcChyZWYsICJyZWZzL3JlbW90ZXMvIikpCisJCQlvZnMgPSBzdHJsZW4oInJlZnMvcmVtb3Rlcy8iKTsKKwkJZWxzZQorCQkJb2ZzID0gMDsKKwkJc3RhdGUtPmRldGFjaGVkX2Zyb20gPSB4c3RyZHVwKHJlZiArIG9mcyk7CisJfSBlbHNlCisJCXN0YXRlLT5kZXRhY2hlZF9mcm9tID0KKwkJCXhzdHJkdXAoZmluZF91bmlxdWVfYWJicmV2KGNiLm5zaGExLCBERUZBVUxUX0FCQlJFVikpOworCWhhc2hjcHkoc3RhdGUtPmRldGFjaGVkX3NoYTEsIGNiLm5zaGExKTsKKworCWZyZWUocmVmKTsKKwlzdHJidWZfcmVsZWFzZSgmY2IuYnVmKTsKK30KKwordm9pZCB3dF9zdGF0dXNfZ2V0X3N0YXRlKHN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgKnN0YXRlLAorCQkJIGludCBnZXRfZGV0YWNoZWRfZnJvbSkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCiAJaWYgKCFzdGF0KGdpdF9wYXRoKCJNRVJHRV9IRUFEIiksICZzdCkpIHsKLQkJc3RhdGUubWVyZ2VfaW5fcHJvZ3Jlc3MgPSAxOworCQlzdGF0ZS0+bWVyZ2VfaW5fcHJvZ3Jlc3MgPSAxOwogCX0gZWxzZSBpZiAoIXN0YXQoZ2l0X3BhdGgoInJlYmFzZS1hcHBseSIpLCAmc3QpKSB7CiAJCWlmICghc3RhdChnaXRfcGF0aCgicmViYXNlLWFwcGx5L2FwcGx5aW5nIiksICZzdCkpIHsKLQkJCXN0YXRlLmFtX2luX3Byb2dyZXNzID0gMTsKKwkJCXN0YXRlLT5hbV9pbl9wcm9ncmVzcyA9IDE7CiAJCQlpZiAoIXN0YXQoZ2l0X3BhdGgoInJlYmFzZS1hcHBseS9wYXRjaCIpLCAmc3QpICYmICFzdC5zdF9zaXplKQotCQkJCXN0YXRlLmFtX2VtcHR5X3BhdGNoID0gMTsKKwkJCQlzdGF0ZS0+YW1fZW1wdHlfcGF0Y2ggPSAxOwogCQl9IGVsc2UgewotCQkJc3RhdGUucmViYXNlX2luX3Byb2dyZXNzID0gMTsKKwkJCXN0YXRlLT5yZWJhc2VfaW5fcHJvZ3Jlc3MgPSAxOworCQkJc3RhdGUtPmJyYW5jaCA9IHJlYWRfYW5kX3N0cmlwX2JyYW5jaCgicmViYXNlLWFwcGx5L2hlYWQtbmFtZSIpOworCQkJc3RhdGUtPm9udG8gPSByZWFkX2FuZF9zdHJpcF9icmFuY2goInJlYmFzZS1hcHBseS9vbnRvIik7CiAJCX0KIAl9IGVsc2UgaWYgKCFzdGF0KGdpdF9wYXRoKCJyZWJhc2UtbWVyZ2UiKSwgJnN0KSkgewogCQlpZiAoIXN0YXQoZ2l0X3BhdGgoInJlYmFzZS1tZXJnZS9pbnRlcmFjdGl2ZSIpLCAmc3QpKQotCQkJc3RhdGUucmViYXNlX2ludGVyYWN0aXZlX2luX3Byb2dyZXNzID0gMTsKKwkJCXN0YXRlLT5yZWJhc2VfaW50ZXJhY3RpdmVfaW5fcHJvZ3Jlc3MgPSAxOwogCQllbHNlCi0JCQlzdGF0ZS5yZWJhc2VfaW5fcHJvZ3Jlc3MgPSAxOworCQkJc3RhdGUtPnJlYmFzZV9pbl9wcm9ncmVzcyA9IDE7CisJCXN0YXRlLT5icmFuY2ggPSByZWFkX2FuZF9zdHJpcF9icmFuY2goInJlYmFzZS1tZXJnZS9oZWFkLW5hbWUiKTsKKwkJc3RhdGUtPm9udG8gPSByZWFkX2FuZF9zdHJpcF9icmFuY2goInJlYmFzZS1tZXJnZS9vbnRvIik7CiAJfSBlbHNlIGlmICghc3RhdChnaXRfcGF0aCgiQ0hFUlJZX1BJQ0tfSEVBRCIpLCAmc3QpKSB7Ci0JCXN0YXRlLmNoZXJyeV9waWNrX2luX3Byb2dyZXNzID0gMTsKKwkJc3RhdGUtPmNoZXJyeV9waWNrX2luX3Byb2dyZXNzID0gMTsKIAl9Ci0JaWYgKCFzdGF0KGdpdF9wYXRoKCJCSVNFQ1RfTE9HIiksICZzdCkpCi0JCXN0YXRlLmJpc2VjdF9pbl9wcm9ncmVzcyA9IDE7CisJaWYgKCFzdGF0KGdpdF9wYXRoKCJCSVNFQ1RfTE9HIiksICZzdCkpIHsKKwkJc3RhdGUtPmJpc2VjdF9pbl9wcm9ncmVzcyA9IDE7CisJCXN0YXRlLT5icmFuY2ggPSByZWFkX2FuZF9zdHJpcF9icmFuY2goIkJJU0VDVF9TVEFSVCIpOworCX0KKwlpZiAoIXN0YXQoZ2l0X3BhdGgoIlJFVkVSVF9IRUFEIiksICZzdCkgJiYKKwkgICAgIWdldF9zaGExKCJSRVZFUlRfSEVBRCIsIHNoYTEpKSB7CisJCXN0YXRlLT5yZXZlcnRfaW5fcHJvZ3Jlc3MgPSAxOworCQloYXNoY3B5KHN0YXRlLT5yZXZlcnRfaGVhZF9zaGExLCBzaGExKTsKKwl9CiAKLQlpZiAoc3RhdGUubWVyZ2VfaW5fcHJvZ3Jlc3MpCi0JCXNob3dfbWVyZ2VfaW5fcHJvZ3Jlc3MocywgJnN0YXRlLCBzdGF0ZV9jb2xvcik7Ci0JZWxzZSBpZiAoc3RhdGUuYW1faW5fcHJvZ3Jlc3MpCi0JCXNob3dfYW1faW5fcHJvZ3Jlc3MocywgJnN0YXRlLCBzdGF0ZV9jb2xvcik7Ci0JZWxzZSBpZiAoc3RhdGUucmViYXNlX2luX3Byb2dyZXNzIHx8IHN0YXRlLnJlYmFzZV9pbnRlcmFjdGl2ZV9pbl9wcm9ncmVzcykKLQkJc2hvd19yZWJhc2VfaW5fcHJvZ3Jlc3MocywgJnN0YXRlLCBzdGF0ZV9jb2xvcik7Ci0JZWxzZSBpZiAoc3RhdGUuY2hlcnJ5X3BpY2tfaW5fcHJvZ3Jlc3MpCi0JCXNob3dfY2hlcnJ5X3BpY2tfaW5fcHJvZ3Jlc3MocywgJnN0YXRlLCBzdGF0ZV9jb2xvcik7Ci0JaWYgKHN0YXRlLmJpc2VjdF9pbl9wcm9ncmVzcykKLQkJc2hvd19iaXNlY3RfaW5fcHJvZ3Jlc3MocywgJnN0YXRlLCBzdGF0ZV9jb2xvcik7CisJaWYgKGdldF9kZXRhY2hlZF9mcm9tKQorCQl3dF9zdGF0dXNfZ2V0X2RldGFjaGVkX2Zyb20oc3RhdGUpOworfQorCitzdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfc3RhdGUoc3RydWN0IHd0X3N0YXR1cyAqcywKKwkJCQkgIHN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgKnN0YXRlKQoreworCWNvbnN0IGNoYXIgKnN0YXRlX2NvbG9yID0gY29sb3IoV1RfU1RBVFVTX0hFQURFUiwgcyk7CisJaWYgKHN0YXRlLT5tZXJnZV9pbl9wcm9ncmVzcykKKwkJc2hvd19tZXJnZV9pbl9wcm9ncmVzcyhzLCBzdGF0ZSwgc3RhdGVfY29sb3IpOworCWVsc2UgaWYgKHN0YXRlLT5hbV9pbl9wcm9ncmVzcykKKwkJc2hvd19hbV9pbl9wcm9ncmVzcyhzLCBzdGF0ZSwgc3RhdGVfY29sb3IpOworCWVsc2UgaWYgKHN0YXRlLT5yZWJhc2VfaW5fcHJvZ3Jlc3MgfHwgc3RhdGUtPnJlYmFzZV9pbnRlcmFjdGl2ZV9pbl9wcm9ncmVzcykKKwkJc2hvd19yZWJhc2VfaW5fcHJvZ3Jlc3Mocywgc3RhdGUsIHN0YXRlX2NvbG9yKTsKKwllbHNlIGlmIChzdGF0ZS0+Y2hlcnJ5X3BpY2tfaW5fcHJvZ3Jlc3MpCisJCXNob3dfY2hlcnJ5X3BpY2tfaW5fcHJvZ3Jlc3Mocywgc3RhdGUsIHN0YXRlX2NvbG9yKTsKKwllbHNlIGlmIChzdGF0ZS0+cmV2ZXJ0X2luX3Byb2dyZXNzKQorCQlzaG93X3JldmVydF9pbl9wcm9ncmVzcyhzLCBzdGF0ZSwgc3RhdGVfY29sb3IpOworCWlmIChzdGF0ZS0+YmlzZWN0X2luX3Byb2dyZXNzKQorCQlzaG93X2Jpc2VjdF9pbl9wcm9ncmVzcyhzLCBzdGF0ZSwgc3RhdGVfY29sb3IpOwogfQogCiB2b2lkIHd0X3N0YXR1c19wcmludChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQogewogCWNvbnN0IGNoYXIgKmJyYW5jaF9jb2xvciA9IGNvbG9yKFdUX1NUQVRVU19PTkJSQU5DSCwgcyk7CiAJY29uc3QgY2hhciAqYnJhbmNoX3N0YXR1c19jb2xvciA9IGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpOworCXN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgc3RhdGU7CisKKwltZW1zZXQoJnN0YXRlLCAwLCBzaXplb2Yoc3RhdGUpKTsKKwl3dF9zdGF0dXNfZ2V0X3N0YXRlKCZzdGF0ZSwKKwkJCSAgICBzLT5icmFuY2ggJiYgIXN0cmNtcChzLT5icmFuY2gsICJIRUFEIikpOwogCiAJaWYgKHMtPmJyYW5jaCkgewogCQljb25zdCBjaGFyICpvbl93aGF0ID0gXygiT24gYnJhbmNoICIpOwpAQCAtOTgyLDkgKzExNzcsMTkgQEAKIAkJaWYgKCFwcmVmaXhjbXAoYnJhbmNoX25hbWUsICJyZWZzL2hlYWRzLyIpKQogCQkJYnJhbmNoX25hbWUgKz0gMTE7CiAJCWVsc2UgaWYgKCFzdHJjbXAoYnJhbmNoX25hbWUsICJIRUFEIikpIHsKLQkJCWJyYW5jaF9uYW1lID0gIiI7CiAJCQlicmFuY2hfc3RhdHVzX2NvbG9yID0gY29sb3IoV1RfU1RBVFVTX05PQlJBTkNILCBzKTsKLQkJCW9uX3doYXQgPSBfKCJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIik7CisJCQlpZiAoc3RhdGUuZGV0YWNoZWRfZnJvbSkgeworCQkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisJCQkJYnJhbmNoX25hbWUgPSBzdGF0ZS5kZXRhY2hlZF9mcm9tOworCQkJCWlmICghZ2V0X3NoYTEoIkhFQUQiLCBzaGExKSAmJgorCQkJCSAgICAhaGFzaGNtcChzaGExLCBzdGF0ZS5kZXRhY2hlZF9zaGExKSkKKwkJCQkJb25fd2hhdCA9IF8oIkhFQUQgZGV0YWNoZWQgYXQgIik7CisJCQkJZWxzZQorCQkJCQlvbl93aGF0ID0gXygiSEVBRCBkZXRhY2hlZCBmcm9tICIpOworCQkJfSBlbHNlIHsKKwkJCQlicmFuY2hfbmFtZSA9ICIiOworCQkJCW9uX3doYXQgPSBfKCJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIik7CisJCQl9CiAJCX0KIAkJc3RhdHVzX3ByaW50ZihzLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwgIiIpOwogCQlzdGF0dXNfcHJpbnRmX21vcmUocywgYnJhbmNoX3N0YXR1c19jb2xvciwgIiVzIiwgb25fd2hhdCk7CkBAIC05OTMsNyArMTE5OCwxMSBAQAogCQkJd3Rfc3RhdHVzX3ByaW50X3RyYWNraW5nKHMpOwogCX0KIAotCXd0X3N0YXR1c19wcmludF9zdGF0ZShzKTsKKwl3dF9zdGF0dXNfcHJpbnRfc3RhdGUocywgJnN0YXRlKTsKKwlmcmVlKHN0YXRlLmJyYW5jaCk7CisJZnJlZShzdGF0ZS5vbnRvKTsKKwlmcmVlKHN0YXRlLmRldGFjaGVkX2Zyb20pOworCiAJaWYgKHMtPmlzX2luaXRpYWwpIHsKIAkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwgIiIpOwogCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpLCBfKCJJbml0aWFsIGNvbW1pdCIpKTsKQEAgLTEwMTMsNiArMTIyMiwxNCBAQAogCQl3dF9zdGF0dXNfcHJpbnRfb3RoZXIocywgJnMtPnVudHJhY2tlZCwgXygiVW50cmFja2VkIGZpbGVzIiksICJhZGQiKTsKIAkJaWYgKHMtPnNob3dfaWdub3JlZF9maWxlcykKIAkJCXd0X3N0YXR1c19wcmludF9vdGhlcihzLCAmcy0+aWdub3JlZCwgXygiSWdub3JlZCBmaWxlcyIpLCAiYWRkIC1mIik7CisJCWlmIChhZHZpY2Vfc3RhdHVzX3Vfb3B0aW9uICYmIDIwMDAgPCBzLT51bnRyYWNrZWRfaW5fbXMpIHsKKwkJCXN0YXR1c19wcmludGZfbG4ocywgR0lUX0NPTE9SX05PUk1BTCwgIiIpOworCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBHSVRfQ09MT1JfTk9STUFMLAorCQkJCQkgXygiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gJ3N0YXR1cyAtdW5vJ1xuIgorCQkJCQkgICAibWF5IHNwZWVkIGl0IHVwLCBidXQgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gZm9yZ2V0IHRvIGFkZFxuIgorCQkJCQkgICAibmV3IGZpbGVzIHlvdXJzZWxmIChzZWUgJ2dpdCBoZWxwIHN0YXR1cycpLiIpLAorCQkJCQkgcy0+dW50cmFja2VkX2luX21zIC8gMTAwMC4wKTsKKwkJfQogCX0gZWxzZSBpZiAocy0+Y29tbWl0YWJsZSkKIAkJc3RhdHVzX3ByaW50Zl9sbihzLCBHSVRfQ09MT1JfTk9STUFMLCBfKCJVbnRyYWNrZWQgZmlsZXMgbm90IGxpc3RlZCVzIiksCiAJCQlhZHZpY2Vfc3RhdHVzX2hpbnRzCmRpZmYgLS1naXQgYS93dC1zdGF0dXMuaCBiL3d0LXN0YXR1cy5oCmluZGV4IDIzNmI0MWYuLjQxMjFiYzIgMTAwNjQ0Ci0tLSBhL3d0LXN0YXR1cy5oCisrKyBiL3d0LXN0YXR1cy5oCkBAIC02OSw2ICs2OSw3IEBACiAJc3RydWN0IHN0cmluZ19saXN0IGNoYW5nZTsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgdW50cmFja2VkOwogCXN0cnVjdCBzdHJpbmdfbGlzdCBpZ25vcmVkOworCXVpbnQzMl90IHVudHJhY2tlZF9pbl9tczsKIH07CiAKIHN0cnVjdCB3dF9zdGF0dXNfc3RhdGUgewpAQCAtNzksMTEgKzgwLDE4IEBACiAJaW50IHJlYmFzZV9pbnRlcmFjdGl2ZV9pbl9wcm9ncmVzczsKIAlpbnQgY2hlcnJ5X3BpY2tfaW5fcHJvZ3Jlc3M7CiAJaW50IGJpc2VjdF9pbl9wcm9ncmVzczsKKwlpbnQgcmV2ZXJ0X2luX3Byb2dyZXNzOworCWNoYXIgKmJyYW5jaDsKKwljaGFyICpvbnRvOworCWNoYXIgKmRldGFjaGVkX2Zyb207CisJdW5zaWduZWQgY2hhciBkZXRhY2hlZF9zaGExWzIwXTsKKwl1bnNpZ25lZCBjaGFyIHJldmVydF9oZWFkX3NoYTFbMjBdOwogfTsKIAogdm9pZCB3dF9zdGF0dXNfcHJlcGFyZShzdHJ1Y3Qgd3Rfc3RhdHVzICpzKTsKIHZvaWQgd3Rfc3RhdHVzX3ByaW50KHN0cnVjdCB3dF9zdGF0dXMgKnMpOwogdm9pZCB3dF9zdGF0dXNfY29sbGVjdChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKTsKK3ZvaWQgd3Rfc3RhdHVzX2dldF9zdGF0ZShzdHJ1Y3Qgd3Rfc3RhdHVzX3N0YXRlICpzdGF0ZSwgaW50IGdldF9kZXRhY2hlZF9mcm9tKTsKIAogdm9pZCB3dF9zaG9ydHN0YXR1c19wcmludChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKTsKIHZvaWQgd3RfcG9yY2VsYWluX3ByaW50KHN0cnVjdCB3dF9zdGF0dXMgKnMpOwpkaWZmIC0tZ2l0IGEveGRpZmYveGRpZmZpLmMgYi94ZGlmZi94ZGlmZmkuYwppbmRleCAxYjcwMTJhLi5iMmViNmRiIDEwMDY0NAotLS0gYS94ZGlmZi94ZGlmZmkuYworKysgYi94ZGlmZi94ZGlmZmkuYwpAQCAtNDkwLDcgKzQ5MCw3IEBACiAKIAkJLyoKIAkJICogVHJ5IHRvIG1vdmUgYmFjayB0aGUgcG9zc2libHkgbWVyZ2VkIGdyb3VwIG9mIGNoYW5nZXMsIHRvIG1hdGNoCi0JCSAqIHRoZSByZWNvcmRlZCBwb3N0aW9uIGluIHRoZSBvdGhlciBmaWxlLgorCQkgKiB0aGUgcmVjb3JkZWQgcG9zaXRpb24gaW4gdGhlIG90aGVyIGZpbGUuCiAJCSAqLwogCQl3aGlsZSAoaXhyZWYgPCBpeCkgewogCQkJcmNoZ1stLWl4c10gPSAxOwpkaWZmIC0tZ2l0IGEveGRpZmYveGhpc3RvZ3JhbS5jIGIveGRpZmYveGhpc3RvZ3JhbS5jCmluZGV4IGJmOTk3ODcuLjczMjEwY2IgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hoaXN0b2dyYW0uYworKysgYi94ZGlmZi94aGlzdG9ncmFtLmMKQEAgLTU1LDcgKzU1LDcgQEAKIAlzdHJ1Y3QgcmVjb3JkIHsKIAkJdW5zaWduZWQgaW50IHB0ciwgY250OwogCQlzdHJ1Y3QgcmVjb3JkICpuZXh0OwotCX0gKipyZWNvcmRzLCAvKiBhbiBvY3VycmVuY2UgKi8KKwl9ICoqcmVjb3JkcywgLyogYW4gb2NjdXJyZW5jZSAqLwogCSAgKipsaW5lX21hcDsgLyogbWFwIG9mIGxpbmUgdG8gcmVjb3JkIGNoYWluICovCiAJY2hhc3RvcmVfdCByY2hhOwogCXVuc2lnbmVkIGludCAqbmV4dF9wdHJzOwpkaWZmIC0tZ2l0IGEvemxpYi5jIGIvemxpYi5jCmluZGV4IDJiMmMwYzcuLjYxZTZkZjAgMTAwNjQ0Ci0tLSBhL3psaWIuYworKysgYi96bGliLmMKQEAgLTE2OCwxMyArMTY4LDggQEAKIAkgICAgc3RybS0+ei5tc2cgPyBzdHJtLT56Lm1zZyA6ICJubyBtZXNzYWdlIik7CiB9CiAKLXZvaWQgZ2l0X2RlZmxhdGVfaW5pdF9nemlwKGdpdF96c3RyZWFtICpzdHJtLCBpbnQgbGV2ZWwpCitzdGF0aWMgdm9pZCBkb19naXRfZGVmbGF0ZV9pbml0KGdpdF96c3RyZWFtICpzdHJtLCBpbnQgbGV2ZWwsIGludCB3aW5kb3dCaXRzKQogewotCS8qCi0JICogVXNlIGRlZmF1bHQgMTUgYml0cywgKzE2IGlzIHRvIGdlbmVyYXRlIGd6aXAgaGVhZGVyL3RyYWlsZXIKLQkgKiBpbnN0ZWFkIG9mIHRoZSB6bGliIHdyYXBwZXIuCi0JICovCi0JY29uc3QgaW50IHdpbmRvd0JpdHMgPSAxNSArIDE2OwogCWludCBzdGF0dXM7CiAKIAl6bGliX3ByZV9jYWxsKHN0cm0pOwpAQCAtMTg4LDYgKzE4MywyNCBAQAogCSAgICBzdHJtLT56Lm1zZyA/IHN0cm0tPnoubXNnIDogIm5vIG1lc3NhZ2UiKTsKIH0KIAordm9pZCBnaXRfZGVmbGF0ZV9pbml0X2d6aXAoZ2l0X3pzdHJlYW0gKnN0cm0sIGludCBsZXZlbCkKK3sKKwkvKgorCSAqIFVzZSBkZWZhdWx0IDE1IGJpdHMsICsxNiBpcyB0byBnZW5lcmF0ZSBnemlwIGhlYWRlci90cmFpbGVyCisJICogaW5zdGVhZCBvZiB0aGUgemxpYiB3cmFwcGVyLgorCSAqLworCWRvX2dpdF9kZWZsYXRlX2luaXQoc3RybSwgbGV2ZWwsIDE1ICsgMTYpOworfQorCit2b2lkIGdpdF9kZWZsYXRlX2luaXRfcmF3KGdpdF96c3RyZWFtICpzdHJtLCBpbnQgbGV2ZWwpCit7CisJLyoKKwkgKiBVc2UgZGVmYXVsdCAxNSBiaXRzLCBuZWdhdGUgdGhlIHZhbHVlIHRvIGdldCByYXcgY29tcHJlc3NlZAorCSAqIGRhdGEgd2l0aG91dCB6bGliIGhlYWRlciBhbmQgdHJhaWxlci4KKwkgKi8KKwlkb19naXRfZGVmbGF0ZV9pbml0KHN0cm0sIGxldmVsLCAtMTUpOworfQorCiBpbnQgZ2l0X2RlZmxhdGVfYWJvcnQoZ2l0X3pzdHJlYW0gKnN0cm0pCiB7CiAJaW50IHN0YXR1czsK