ZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfaXBpYy5zdiBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfaXBpYy5zdgppbmRleCBmNWY4MmRmLi5kNTMxMjdiIDEwMDY0NAotLS0gYS92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX2lwaWMuc3YKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlX3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9pcGljLnN2CkBAIC0xMDAsNyArMTAwLDYgQEAKIGZ1bmN0aW9uIGF1dG9tYXRpYyB0eXBlX3NjcjFfc2VhcmNoX29uZV8xNl9zIHNjcjFfc2VhcmNoX29uZV8xNigKICAgICBpbnB1dCAgIGxvZ2ljIFsxNTowXSAgICBkaW4KICk7Ci1iZWdpbgogICAgIGxvZ2ljIFs3OjBdICAgICAgICAgc3RhZ2UxX3ZkOwogICAgIGxvZ2ljIFszOjBdICAgICAgICAgc3RhZ2UyX3ZkOwogICAgIGxvZ2ljIFsxOjBdICAgICAgICAgc3RhZ2UzX3ZkOwpAQCAtMTA5LDcgKzEwOCw5IEBACiAgICAgbG9naWMgWzE6MF0gICAgICAgICBzdGFnZTJfaWR4IFszOjBdOwogICAgIGxvZ2ljIFsyOjBdICAgICAgICAgc3RhZ2UzX2lkeCBbMTowXTsKICAgICB0eXBlX3NjcjFfc2VhcmNoX29uZV8xNl9zIHJlc3VsdDsKKyAgICB0eXBlX3NjcjFfc2VhcmNoX29uZV8yX3MgdG1wOwogICAgIGludGVnZXIgaTsgLy8gY3AuMTcKK2JlZ2luCiAgICAgLy8gU3RhZ2UgMQogICAgIGZvciAoaT0wOyBpPDg7IGk9aSsxKSBiZWdpbgogICAgICAgICB0bXAgPSBzY3IxX3NlYXJjaF9vbmVfMihkaW5bKGkrMSkqMi0xLToyXSk7CmRpZmYgLS1naXQgYS92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfY3NyLnN2IGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlX3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9waXBlX2Nzci5zdgppbmRleCBmNjM4YTFhLi5jYTk2MjE1IDEwMDY0NAotLS0gYS92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfY3NyLnN2CisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9jc3Iuc3YKQEAgLTc4LDcgKzc4LDcgQEAKICAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh1MmNzcl90YWtlX2V4Y19pLCAgICAgICAgIC8vIFRha2UgZXhjZXB0aW9uIHRyYXAKICAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh1MmNzcl9tcmV0X3VwZGF0ZV9pLCAgICAgIC8vIE1SRVQgdXBkYXRlIENTUgogICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHUyY3NyX21yZXRfaW5zdHJfaSwgICAgICAgLy8gTVJFVCBpbnN0cnVjdGlvbgotICAgIGlucHV0ICAgdHlwZV9zY3IxX2V4Y19jb2RlX2UgICAgICAgICAgICAgICAgICAgICAgICBleHUyY3NyX2V4Y19jb2RlX2ksICAgICAgICAgLy8gRXhjZXB0aW9uIGNvZGUgKHNlZSBzY3IxX2FyY2hfdHlwZXMuc3ZoKQorICAgIGlucHV0ICAgbG9naWMgW1NDUjFfRVhDX0NPREVfV0lEVEhfRS0xOjBdICAgICAgICAgIGV4dTJjc3JfZXhjX2NvZGVfaSwgICAgICAgICAvLyBFeGNlcHRpb24gY29kZSAoc2VlIHNjcjFfYXJjaF90eXBlcy5zdmgpIC0gY3AuNwogICAgIGlucHV0ICAgbG9naWMgW2BTQ1IxX1hMRU4tMTowXSAgICAgICAgICAgICAgICAgICAgICBleHUyY3NyX3RyYXBfdmFsX2ksICAgICAgICAgLy8gVHJhcCB2YWx1ZQogICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3IyZXh1X2lycV9vLCAgICAgICAgICAgICAgLy8gSVJRIHJlcXVlc3QKICAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NyMmV4dV9pcF9pZV9vLCAgICAgICAgICAgIC8vIFNvbWUgSVJRIHBlbmRpbmcgYW5kIGxvY2FsbHkgZW5hYmxlZApAQCAtMTgxLDkgKzE4MSw5IEBACiBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NyX21jYXVzZV91cGQ7ICAgICAgICAgLy8gTUNBVVNFIHVwZGF0ZSBlbmFibGUKIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3JfbWNhdXNlX2lfZmY7ICAgICAgICAvLyBNQ0FVU0U6IEludGVycnVwdAogbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcl9tY2F1c2VfaV9uZXh0OyAgICAgIC8vIE1DQVVTRTogSW50ZXJydXB0IG5leHQgdmFsdWUKLXR5cGVfc2NyMV9leGNfY29kZV9lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3JfbWNhdXNlX2VjX2ZmOyAgICAgICAvLyBNQ0FVU0U6IEV4Y2VwdGlvbiBjb2RlCi10eXBlX3NjcjFfZXhjX2NvZGVfZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NyX21jYXVzZV9lY19uZXh0OyAgICAgLy8gTUNBVVNFOiBFeGNlcHRpb24gY29kZSBuZXh0IHZhbHVlCi10eXBlX3NjcjFfZXhjX2NvZGVfZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NyX21jYXVzZV9lY19uZXc7ICAgICAgLy8gTUNBVVNFOiBFeGNlcHRpb24gY29kZSBuZXcgdmFsdWUgKElSUXMpCitsb2dpYyBbU0NSMV9FWENfQ09ERV9XSURUSF9FLTE6MF0gICAgICAgICAgICAgICAgICAgY3NyX21jYXVzZV9lY19mZjsgICAgICAgLy8gTUNBVVNFOiBFeGNlcHRpb24gY29kZSAtIGNwLjcKK2xvZ2ljIFtTQ1IxX0VYQ19DT0RFX1dJRFRIX0UtMTowXSAgICAgICAgICAgICAgICAgICBjc3JfbWNhdXNlX2VjX25leHQ7ICAgICAvLyBNQ0FVU0U6IEV4Y2VwdGlvbiBjb2RlIG5leHQgdmFsdWUgLSBjcC43Citsb2dpYyBbU0NSMV9FWENfQ09ERV9XSURUSF9FLTE6MF0gICAgICAgICAgICAgICAgICAgY3NyX21jYXVzZV9lY19uZXc7ICAgICAgLy8gTUNBVVNFOiBFeGNlcHRpb24gY29kZSBuZXcgdmFsdWUgKElSUXMpIC0gY3AuNwogCiAvLyBNVFZBTCByZWdpc3RlcgogbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcl9tdHZhbF91cGQ7ICAgICAgICAgIC8vIE1UVkFMIHVwZGF0ZSBlbmFibGUKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9leHUuc3YgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfZXh1LnN2CmluZGV4IGY1MThhODQuLmI1ODdmYTAgMTAwNjQ0Ci0tLSBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9leHUuc3YKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlX3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9waXBlX2V4dS5zdgpAQCAtOTQsNyArOTQsNyBAQAogICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh1MmNzcl90YWtlX2V4Y19vLCAgICAgICAgIC8vIFRha2UgZXhjZXB0aW9uIHRyYXAKICAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dTJjc3JfbXJldF91cGRhdGVfbywgICAgICAvLyBNUkVUIHVwZGF0ZSBDU1IKICAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dTJjc3JfbXJldF9pbnN0cl9vLCAgICAgICAvLyBNUkVUIGluc3RydWN0aW9uCi0gICAgb3V0cHV0ICB0eXBlX3NjcjFfZXhjX2NvZGVfZSAgICAgICAgICAgICAgICBleHUyY3NyX2V4Y19jb2RlX28sICAgICAgICAgLy8gRXhjZXB0aW9uIGNvZGUgKHNlZSBzY3IxX2FyY2hfdHlwZXMuc3ZoKQorICAgIG91dHB1dCAgbG9naWMgW1NDUjFfRVhDX0NPREVfV0lEVEhfRS0xOjBdICAgZXh1MmNzcl9leGNfY29kZV9vLCAgICAgICAgIC8vIEV4Y2VwdGlvbiBjb2RlIChzZWUgc2NyMV9hcmNoX3R5cGVzLnN2aCkgLSBjcC43CiAgICAgb3V0cHV0ICBsb2dpYyBbYFNDUjFfWExFTi0xOjBdICAgICAgICAgICAgICBleHUyY3NyX3RyYXBfdmFsX28sICAgICAgICAgLy8gVHJhcCB2YWx1ZQogICAgIGlucHV0ICAgbG9naWMgW2BTQ1IxX1hMRU4tMTowXSAgICAgICAgICAgICAgY3NyMmV4dV9uZXdfcGNfaSwgICAgICAgICAgIC8vIEV4Y2VwdGlvbi9JUlEvTVJFVCBuZXcgUEMKICAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcjJleHVfaXJxX2ksICAgICAgICAgICAgICAvLyBJUlEgcmVxdWVzdApAQCAtMTAzLDEzICsxMDMsMTMgQEAKIAogICAgIC8vIEVYVSA8LT4gRE1FTSBpbnRlcmZhY2UKICAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dTJkbWVtX3JlcV9vLCAgICAgICAgICAgICAvLyBEYXRhIG1lbW9yeSByZXF1ZXN0Ci0gICAgb3V0cHV0ICB0eXBlX3NjcjFfbWVtX2NtZF9lICAgICAgICAgICAgICAgICBleHUyZG1lbV9jbWRfbywgICAgICAgICAgICAgLy8gRGF0YSBtZW1vcnkgY29tbWFuZAorICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh1MmRtZW1fY21kX28sICAgICAgICAgICAgIC8vIERhdGEgbWVtb3J5IGNvbW1hbmQgLSBjcC43CiAgICAgb3V0cHV0ICB0eXBlX3NjcjFfbWVtX3dpZHRoX2UgICAgICAgICAgICAgICBleHUyZG1lbV93aWR0aF9vLCAgICAgICAgICAgLy8gRGF0YSBtZW1vcnkgd2lkdGgKICAgICBvdXRwdXQgIGxvZ2ljIFtgU0NSMV9ETUVNX0FXSURUSC0xOjBdICAgICAgIGV4dTJkbWVtX2FkZHJfbywgICAgICAgICAgICAvLyBEYXRhIG1lbW9yeSBhZGRyZXNzCiAgICAgb3V0cHV0ICBsb2dpYyBbYFNDUjFfRE1FTV9EV0lEVEgtMTowXSAgICAgICBleHUyZG1lbV93ZGF0YV9vLCAgICAgICAgICAgLy8gRGF0YSBtZW1vcnkgd3JpdGUgZGF0YQogICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1lbTJleHVfcmVxX2Fja19pLCAgICAgICAgIC8vIERhdGEgbWVtb3J5IHJlcXVlc3QgYWNrbm93bGVkZ2UKICAgICBpbnB1dCAgIGxvZ2ljIFtgU0NSMV9ETUVNX0RXSURUSC0xOjBdICAgICAgIGRtZW0yZXh1X3JkYXRhX2ksICAgICAgICAgICAvLyBEYXRhIG1lbW9yeSByZWFkIGRhdGEKLSAgICBpbnB1dCAgIHR5cGVfc2NyMV9tZW1fcmVzcF9lICAgICAgICAgICAgICAgIGRtZW0yZXh1X3Jlc3BfaSwgICAgICAgICAgICAvLyBEYXRhIG1lbW9yeSByZXNwb25zZQorICAgIGlucHV0ICAgbG9naWMgWzE6MF0gICAgICAgICAgICAgICAgICAgICAgICAgZG1lbTJleHVfcmVzcF9pLCAgICAgICAgICAgIC8vIERhdGEgbWVtb3J5IHJlc3BvbnNlIC0gY3AuNwogCiAgICAgLy8gRVhVIGNvbnRyb2wKICAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dTJwaXBlX2V4Y19yZXFfbywgICAgICAgICAvLyBFeGNlcHRpb24gb24gbGFzdCBpbnN0cnVjdGlvbgpAQCAtMjE5LDcgKzIxOSw3IEBACiBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHVfZXhjX3JlcV9mZjsKIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dV9leGNfcmVxX25leHQ7CiBgZW5kaWYgLy8gU0NSMV9EQkdfRU4KLXR5cGVfc2NyMV9leGNfY29kZV9lICAgICAgICAgICAgICAgIGV4Y19jb2RlOworbG9naWMgW1NDUjFfRVhDX0NPREVfV0lEVEhfRS0xOjBdICAgZXhjX2NvZGU7IC8vIGNwLjcKIGxvZ2ljIFtgU0NSMV9YTEVOLTE6MF0gICAgICAgICAgICAgIGV4Y190cmFwX3ZhbDsKIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyX2ZhdWx0X3J2aV9oaTsKIApAQCAtMjYzLDcgKzI2Myw3IEBACiBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3VfcmR5OwogbG9naWMgW2BTQ1IxX1hMRU4tMTowXSAgICAgICAgICAgICAgbHN1X2xfZGF0YTsKIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdV9leGNfcmVxOwotdHlwZV9zY3IxX2V4Y19jb2RlX2UgICAgICAgICAgICAgICAgbHN1X2V4Y19jb2RlOworbG9naWMgW1NDUjFfRVhDX0NPREVfV0lEVEhfRS0xOjBdICAgbHN1X2V4Y19jb2RlOyAvLyBjcC43CiAKIC8vIEVYVSBzdGF0dXMgc2lnbmFscwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9pZHUuc3YgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfaWR1LnN2CmluZGV4IGQxODYyOWMuLjg2YjRkNDEgMTAwNjQ0Ci0tLSBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9pZHUuc3YKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlX3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9waXBlX2lkdS5zdgpAQCAtODAsMTAgKzgwLDE5IEBACiBhc3NpZ24gaW5zdHIgICAgICAgICAgPSBpZnUyaWR1X2luc3RyX2k7CiAKIC8vIFJWSSAvIFJWQwotYXNzaWduIGluc3RyX3R5cGUgICA9IGluc3RyWzE6MF07CitgaWZkZWYgWU9TWVMKK2Fzc2lnbiBpbnN0cl90eXBlICAgPSAyJyhpbnN0clsxOjBdKTsKK2BlbHNlIAorCithc3NpZ24gaW5zdHJfdHlwZSAgID0gdHlwZV9zY3IxX2luc3RyX3R5cGVfZScoaW5zdHJbMTowXSk7CitgZW5kaWYKIAogLy8gUlZJIC8gUlZDIGZpZWxkcwotYXNzaWduIHJ2aV9vcGNvZGUgICA9IGluc3RyWzY6Ml07ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSVkkKK2BpZmRlZiBZT1NZUworYXNzaWduIHJ2aV9vcGNvZGUgICA9IDUnKGluc3RyWzY6Ml0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUlZJCitgZWxzZSAKK2Fzc2lnbiBydmlfb3Bjb2RlICAgPSB0eXBlX3NjcjFfcnZpX29wY29kZV9lJyhpbnN0cls2OjJdKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJWSQorYGVuZGlmCiBhc3NpZ24gZnVuY3QzICAgICAgID0gKGluc3RyX3R5cGUgPT0gU0NSMV9JTlNUUl9SVkkpID8gaW5zdHJbMTQ6MTJdIDogaW5zdHJbMTU6MTNdOyAvLyBSVkkgLyBSVkMKIGFzc2lnbiBmdW5jdDcgICAgICAgPSBpbnN0clszMToyNV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJWSQogYXNzaWduIGZ1bmN0MTIgICAgICA9IGluc3RyWzMxOjIwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUlZJIChTWVNURU0pCmRpZmYgLS1naXQgYS92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvaW5jbHVkZXMvc2NyMV93Yi5zdmggYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvaW5jbHVkZXMvc2NyMV93Yi5zdmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmOTlkNgotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9pbmNsdWRlcy9zY3IxX3diLnN2aApAQCAtMCwwICsxLDY2IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICB5aWZpdmUgV2lzaGJvbmUgZGVmaW5lIGZvciBzeW50YWNvcmUgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgeWlmaXZlIGNvcmVzIHByb2plY3QgICAgICAgICAgICAgICAvLy8vCisvLy8vICBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvY29yZXMveWlmaXZlLyAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBEZXNjcmlwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICBpbnRlZ3JhdGVkIHdpc2hib25lIGkvZiB0byBTeW50YWNvcmUsc2NyMSBjb3JlICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRvIERvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgbm90aGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIEF1dGhvcihzKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAtIERpbmVzaCBBbm5heXlhLCBkaW5lc2hhQG9wZW5jb3Jlcy5vcmcgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFJldmlzaW9uIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgIHYwOiAgICBKdW5lIDcsIDIwMjEsIERpbmVzaCBBICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgd2lzaGJvbmUgZGVmaW5lIGFkZGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gQ29weXJpZ2h0IChDKSAyMDAwIEF1dGhvcnMgYW5kIE9QRU5DT1JFUy5PUkcgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gVGhpcyBzb3VyY2UgZmlsZSBtYXkgYmUgdXNlZCBhbmQgZGlzdHJpYnV0ZWQgd2l0aG91dCAgICAgICAgIC8vLy8KKy8vLy8gcmVzdHJpY3Rpb24gcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodCBzdGF0ZW1lbnQgaXMgbm90ICAgIC8vLy8KKy8vLy8gcmVtb3ZlZCBmcm9tIHRoZSBmaWxlIGFuZCB0aGF0IGFueSBkZXJpdmF0aXZlIHdvcmsgY29udGFpbnMgIC8vLy8KKy8vLy8gdGhlIG9yaWdpbmFsIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoZSBhc3NvY2lhdGVkIGRpc2NsYWltZXIuIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCAgIC8vLy8KKy8vLy8gYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgIC8vLy8KKy8vLy8gUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IC8vLy8KKy8vLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSAgIC8vLy8KKy8vLy8gbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gVGhpcyBzb3VyY2UgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlICAgICAgIC8vLy8KKy8vLy8gdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCAgIC8vLy8KKy8vLy8gd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAgICAgIC8vLy8KKy8vLy8gUFVSUE9TRS4gIFNlZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIC8vLy8KKy8vLy8gZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsICAgIC8vLy8KKy8vLy8gUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvdXJjZTsgaWYgbm90LCBkb3dubG9hZCBpdCAgIC8vLy8KKy8vLy8gZnJvbSBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvbGdwbC5zaHRtbCAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICBPcmdpbmFsIG93bmVyIERldGFpbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLyBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyCpIDIwMTYtMjAyMS4gU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMvLy8KKy8vLyBAZmlsZSAgICAgICA8c2NyMV9haGIuc3ZoPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8KKy8vLyBAYnJpZWYgICAgICBXQiBoZWFkZXIgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitgaWZuZGVmIFNDUjFfV0JfU1ZICitgZGVmaW5lIFNDUjFfV0JfU1ZICisKK2BpbmNsdWRlICJzY3IxX2FyY2hfZGVzY3JpcHRpb24uc3ZoIgorCitwYXJhbWV0ZXIgU0NSMV9XQl9XSURUSCAgPSAzMjsKKworLy8gRW5jb2RpbmcgZm9yIERBVEEgU0laRQorcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfRFNJWkVfOEIgICAgPSAzJ2IwMDA7CitwYXJhbWV0ZXIgbG9naWMgWzI6MF0gU0NSMV9EU0laRV8xNkIgICA9IDMnYjAwMTsKK3BhcmFtZXRlciBsb2dpYyBbMjowXSBTQ1IxX0RTSVpFXzMyQiAgID0gMydiMDEwOworCitgZW5kaWYgLy8gU0NSMV9XQl9TVkgKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy9ydW5fbW9kZW1zaW0gYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvcnVuX21vZGVtc2ltCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFlNWY3NjQKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvcnVuX21vZGVtc2ltCkBAIC0wLDAgKzEsMiBAQAordmxpYiB3b3JrCit2bG9nIC1mIHdiX3RvcC5maWxlcyAtZiBjb3JlLmZpbGVzICtpbmNkaXIraW5jbHVkZXMgLXN2CmRpZmYgLS1naXQgYS92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvdG9wL3NjcjFfZG1lbV93Yi5zdiBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy90b3Avc2NyMV9kbWVtX3diLnN2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYTBiNGQKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvdG9wL3NjcjFfZG1lbV93Yi5zdgpAQCAtMCwwICsxLDQ0OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgeWlmaXZlIFdpc2hib25lIGludGVyZmFjZSBmb3IgRGF0YSBtZW1vcnkgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHlpZml2ZSBjb3JlcyBwcm9qZWN0ICAgICAgICAgICAgICAgLy8vLworLy8vLyAgaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2NvcmVzL3lpZml2ZS8gICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgRGVzY3JpcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgaW50ZWdyYXRlZCB3aXNoYm9uZSBpL2YgdG8gZGF0YSAgbWVtb3J5ICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgVG8gRG86ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICBub3RoaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgQXV0aG9yKHMpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgIC0gRGluZXNoIEFubmF5eWEsIGRpbmVzaGFAb3BlbmNvcmVzLm9yZyAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgUmV2aXNpb24gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgdjA6ICAgIEp1bmUgNywgMjAyMSwgRGluZXNoIEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICB3aXNoYm9uZSBpbnRlZ3JhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyBDb3B5cmlnaHQgKEMpIDIwMDAgQXV0aG9ycyBhbmQgT1BFTkNPUkVTLk9SRyAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyBUaGlzIHNvdXJjZSBmaWxlIG1heSBiZSB1c2VkIGFuZCBkaXN0cmlidXRlZCB3aXRob3V0ICAgICAgICAgLy8vLworLy8vLyByZXN0cmljdGlvbiBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IHN0YXRlbWVudCBpcyBub3QgICAgLy8vLworLy8vLyByZW1vdmVkIGZyb20gdGhlIGZpbGUgYW5kIHRoYXQgYW55IGRlcml2YXRpdmUgd29yayBjb250YWlucyAgLy8vLworLy8vLyB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhlIGFzc29jaWF0ZWQgZGlzY2xhaW1lci4gLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyBUaGlzIHNvdXJjZSBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0ICAgLy8vLworLy8vLyBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsICAgLy8vLworLy8vLyBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgLy8vLworLy8vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55ICAgLy8vLworLy8vLyBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyBUaGlzIHNvdXJjZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgICAgICAgLy8vLworLy8vLyB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkICAgLy8vLworLy8vLyB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSICAgICAgLy8vLworLy8vLyBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgLy8vLworLy8vLyBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgICAgLy8vLworLy8vLyBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgc291cmNlOyBpZiBub3QsIGRvd25sb2FkIGl0ICAgLy8vLworLy8vLyBmcm9tIGh0dHA6Ly93d3cub3BlbmNvcmVzLm9yZy9sZ3BsLnNodG1sICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgIE9yZ2luYWwgb3duZXIgRGV0YWlscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8vIENvcHlyaWdodCBieSBTeW50YWNvcmUgTExDIMKpIDIwMTYtMjAyMS4gU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMvLy8KKy8vLyBAZmlsZSAgICAgICA8c2NyMV9kbWVtX3diLnN2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8KKy8vLyBAYnJpZWYgICAgICBEYXRhIG1lbW9yeSBXQiBicmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitgaW5jbHVkZSAic2NyMV93Yi5zdmgiCitgaW5jbHVkZSAic2NyMV9tZW1pZi5zdmgiCisKK21vZHVsZSBzY3IxX2RtZW1fd2IgKAorICAgIC8vIENvbnRyb2wgU2lnbmFscworICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICByc3RfbiwKKyAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xrLAorCisgICAgLy8gQ29yZSBJbnRlcmZhY2UKKyAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1lbV9yZXFfYWNrLAorICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWVtX3JlcSwKKyAgICBpbnB1dCAgIHR5cGVfc2NyMV9tZW1fY21kX2UgICAgICAgICAgICAgZG1lbV9jbWQsCisgICAgaW5wdXQgICB0eXBlX3NjcjFfbWVtX3dpZHRoX2UgICAgICAgICAgIGRtZW1fd2lkdGgsCisgICAgaW5wdXQgICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgIGRtZW1fYWRkciwKKyAgICBpbnB1dCAgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgZG1lbV93ZGF0YSwKKyAgICBvdXRwdXQgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgZG1lbV9yZGF0YSwKKyAgICBvdXRwdXQgIHR5cGVfc2NyMV9tZW1fcmVzcF9lICAgICAgICAgICAgZG1lbV9yZXNwLAorCisgICAgLy8gV0IgSW50ZXJmYWNlCisgICAgb3V0cHV0ICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiZF9zdGJfbywgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgICBvdXRwdXQgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgd2JkX2Fkcl9vLCAvLyBhZGRyZXNzCisgICAgb3V0cHV0ICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiZF93ZV9vLCAgLy8gd3JpdGUKKyAgICBvdXRwdXQgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgd2JkX2RhdF9vLCAvLyBkYXRhIG91dHB1dAorICAgIG91dHB1dCAgbG9naWMgICBbMzowXSAgICAgICAgICAgICAgICAgICB3YmRfc2VsX28sIC8vIGJ5dGUgZW5hYmxlCisgICAgaW5wdXQgICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgIHdiZF9kYXRfaSwgLy8gZGF0YSBpbnB1dAorICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfYWNrX2ksIC8vIGFja25vd2xlZ2VtZW50CisgICAgaW5wdXQgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiZF9lcnJfaSAgLy8gZXJyb3IKKworKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMb2NhbCBQYXJhbWV0ZXJzCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2BpZm5kZWYgU0NSMV9ETUVNX1dCX09VVF9CUAorbG9jYWxwYXJhbSAgU0NSMV9GSUZPX1dJRFRIID0gMjsKK2xvY2FscGFyYW0gIFNDUjFfRklGT19DTlRfV0lEVEggPSAyOworYGVuZGlmIC8vIFNDUjFfRE1FTV9XQl9PVVRfQlAKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMb2NhbCB0eXBlIGRlY2xhcmF0aW9uCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3R5cGVkZWYgZW51bSBsb2dpYyB7CisgICAgU0NSMV9GU01fQUREUiA9IDEnYjAsCisgICAgU0NSMV9GU01fREFUQSA9IDEnYjEsCisgICAgU0NSMV9GU01fRVJSICA9IDEnYngKK30gdHlwZV9zY3IxX2ZzbV9lOworCit0eXBlZGVmIHN0cnVjdCBwYWNrZWQgeworICAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdyaXRlOworICAgIGxvZ2ljICAgWzI6MF0gICAgICAgICAgICAgICAgICAgaHdpZHRoOworICAgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgaGFkZHI7CisgICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgICBod2RhdGE7Cit9IHR5cGVfc2NyMV9yZXFfZmlmb19zOworCit0eXBlZGVmIHN0cnVjdCBwYWNrZWQgeworICAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdyaXRlOworICAgIGxvZ2ljICAgWzI6MF0gICAgICAgICAgICAgICAgICAgaHdpZHRoOworICAgIGxvZ2ljICAgWzE6MF0gICAgICAgICAgICAgICAgICAgaGFkZHI7Cit9IHR5cGVfc2NyMV9kYXRhX2ZpZm9fczsKKwordHlwZWRlZiBzdHJ1Y3QgcGFja2VkIHsKKyAgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZXNwOworICAgIGxvZ2ljICAgWzI6MF0gICAgICAgICAgICAgICAgICAgaHdpZHRoOworICAgIGxvZ2ljICAgWzE6MF0gICAgICAgICAgICAgICAgICAgaGFkZHI7CisgICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgIGhyZGF0YTsKK30gdHlwZV9zY3IxX3Jlc3BfZmlmb19zOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIExvY2FsIGZ1bmN0aW9ucworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitmdW5jdGlvbiBhdXRvbWF0aWMgbG9naWMgICBbMjowXSBzY3IxX2NvbnZfbWVtMndiX3dpZHRoICgKKyAgICBpbnB1dCAgIHR5cGVfc2NyMV9tZW1fd2lkdGhfZSAgICBkbWVtX3dpZHRoCispOworICAgIGxvZ2ljICAgWzI6MF0gICB0bXA7CitiZWdpbgorICAgIGNhc2UgKGRtZW1fd2lkdGgpCisgICAgICAgIFNDUjFfTUVNX1dJRFRIX0JZVEUgOiBiZWdpbgorICAgICAgICAgICAgdG1wID0gU0NSMV9EU0laRV84QjsKKyAgICAgICAgZW5kCisgICAgICAgIFNDUjFfTUVNX1dJRFRIX0hXT1JEIDogYmVnaW4KKyAgICAgICAgICAgIHRtcCA9IFNDUjFfRFNJWkVfMTZCOworICAgICAgICBlbmQKKyAgICAgICAgU0NSMV9NRU1fV0lEVEhfV09SRCA6IGJlZ2luCisgICAgICAgICAgICB0bXAgPSBTQ1IxX0RTSVpFXzMyQjsKKyAgICAgICAgZW5kCisgICAgICAgIGRlZmF1bHQgOiBiZWdpbgorICAgICAgICAgICAgdG1wID0gU0NSMV9EU0laRV8zMkI7CisgICAgICAgIGVuZAorICAgIGVuZGNhc2UKKyAgICBzY3IxX2NvbnZfbWVtMndiX3dpZHRoID0gIHRtcDsgLy8gY3AuMTEKK2VuZAorZW5kZnVuY3Rpb24KKworZnVuY3Rpb24gYXV0b21hdGljIGxvZ2ljW1NDUjFfV0JfV0lEVEgtMTowXSBzY3IxX2NvbnZfbWVtMndiX3dkYXRhICgKKyAgICBpbnB1dCAgIGxvZ2ljICAgWzE6MF0gICAgICAgICAgICAgICAgICAgZG1lbV9hZGRyLAorICAgIGlucHV0ICAgdHlwZV9zY3IxX21lbV93aWR0aF9lICAgICAgICAgICBkbWVtX3dpZHRoLAorICAgIGlucHV0ICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgIGRtZW1fd2RhdGEKKyk7CisgICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICB0bXA7CitiZWdpbgorICAgIHRtcCA9ICd4OworICAgIGNhc2UgKGRtZW1fd2lkdGgpCisgICAgICAgIFNDUjFfTUVNX1dJRFRIX0JZVEUgOiBiZWdpbgorICAgICAgICAgICAgY2FzZSAoZG1lbV9hZGRyKQorICAgICAgICAgICAgICAgIDInYjAwIDogYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgdG1wWzc6MF0gICA9IGRtZW1fd2RhdGFbNzowXTsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAyJ2IwMSA6IGJlZ2luCisgICAgICAgICAgICAgICAgICAgIHRtcFsxNTo4XSAgPSBkbWVtX3dkYXRhWzc6MF07CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgMidiMTAgOiBiZWdpbgorICAgICAgICAgICAgICAgICAgICB0bXBbMjM6MTZdID0gZG1lbV93ZGF0YVs3OjBdOworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIDInYjExIDogYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgdG1wWzMxOjI0XSA9IGRtZW1fd2RhdGFbNzowXTsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBkZWZhdWx0IDogYmVnaW4KKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZGNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIFNDUjFfTUVNX1dJRFRIX0hXT1JEIDogYmVnaW4KKyAgICAgICAgICAgIGNhc2UgKGRtZW1fYWRkclsxXSkKKyAgICAgICAgICAgICAgICAxJ2IwIDogYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgdG1wWzE1OjBdICA9IGRtZW1fd2RhdGFbMTU6MF07CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgMSdiMSA6IGJlZ2luCisgICAgICAgICAgICAgICAgICAgIHRtcFszMToxNl0gPSBkbWVtX3dkYXRhWzE1OjBdOworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGRlZmF1bHQgOiBiZWdpbgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kY2FzZQorICAgICAgICBlbmQKKyAgICAgICAgU0NSMV9NRU1fV0lEVEhfV09SRCA6IGJlZ2luCisgICAgICAgICAgICB0bXAgPSBkbWVtX3dkYXRhOworICAgICAgICBlbmQKKyAgICAgICAgZGVmYXVsdCA6IGJlZ2luCisgICAgICAgIGVuZAorICAgIGVuZGNhc2UKKyAgICBzY3IxX2NvbnZfbWVtMndiX3dkYXRhID0gdG1wOworZW5kCitlbmRmdW5jdGlvbgorCitmdW5jdGlvbiBhdXRvbWF0aWMgbG9naWNbU0NSMV9XQl9XSURUSC0xOjBdIHNjcjFfY29udl93YjJtZW1fcmRhdGEgKAorICAgIGlucHV0ICAgbG9naWMgWzI6MF0gICAgICAgICAgICAgICAgIGh3aWR0aCwKKyAgICBpbnB1dCAgIGxvZ2ljIFsxOjBdICAgICAgICAgICAgICAgICBoYWRkciwKKyAgICBpbnB1dCAgIGxvZ2ljIFtTQ1IxX1dCX1dJRFRILTE6MF0gIGhyZGF0YQorKTsKKyAgICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gIHRtcDsKK2JlZ2luCisgICAgdG1wID0gJ3g7CisgICAgY2FzZSAoaHdpZHRoKQorICAgICAgICBTQ1IxX0RTSVpFXzhCIDogYmVnaW4KKyAgICAgICAgICAgIGNhc2UgKGhhZGRyKQorICAgICAgICAgICAgICAgIDInYjAwIDogdG1wWzc6MF0gPSBocmRhdGFbNzowXTsKKyAgICAgICAgICAgICAgICAyJ2IwMSA6IHRtcFs3OjBdID0gaHJkYXRhWzE1OjhdOworICAgICAgICAgICAgICAgIDInYjEwIDogdG1wWzc6MF0gPSBocmRhdGFbMjM6MTZdOworICAgICAgICAgICAgICAgIDInYjExIDogdG1wWzc6MF0gPSBocmRhdGFbMzE6MjRdOworICAgICAgICAgICAgICAgIGRlZmF1bHQgOiBiZWdpbgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kY2FzZQorICAgICAgICBlbmQKKyAgICAgICAgU0NSMV9EU0laRV8xNkIgOiBiZWdpbgorICAgICAgICAgICAgY2FzZSAoaGFkZHJbMV0pCisgICAgICAgICAgICAgICAgMSdiMCA6IHRtcFsxNTowXSA9IGhyZGF0YVsxNTowXTsKKyAgICAgICAgICAgICAgICAxJ2IxIDogdG1wWzE1OjBdID0gaHJkYXRhWzMxOjE2XTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0IDogYmVnaW4KKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZGNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIFNDUjFfRFNJWkVfMzJCIDogYmVnaW4KKyAgICAgICAgICAgIHRtcCA9IGhyZGF0YTsKKyAgICAgICAgZW5kCisgICAgICAgIGRlZmF1bHQgOiBiZWdpbgorICAgICAgICBlbmQKKyAgICBlbmRjYXNlCisgICAgc2NyMV9jb252X3diMm1lbV9yZGF0YSA9IHRtcDsKK2VuZAorZW5kZnVuY3Rpb24KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMb2NhbCBzaWduYWwgZGVjbGFyYXRpb24KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFfZmlmb19yZDsKK2xvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX2ZpZm9fd3I7Citsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9maWZvX3VwOworYGlmZGVmIFNDUjFfRE1FTV9XQl9PVVRfQlAKK3R5cGVfc2NyMV9yZXFfZmlmb19zICAgICAgICAgICAgICAgICAgICAgICAgcmVxX2ZpZm9fbmV3OwordHlwZV9zY3IxX3JlcV9maWZvX3MgICAgICAgICAgICAgICAgICAgICAgICByZXFfZmlmb19yOwordHlwZV9zY3IxX3JlcV9maWZvX3MgWzA6MF0gICAgICAgICAgICAgICAgICByZXFfZmlmbzsKK2BlbHNlIC8vIFNDUjFfRE1FTV9XQl9PVVRfQlAKK3R5cGVfc2NyMV9yZXFfZmlmb19zIFswOlNDUjFfRklGT19XSURUSC0xXSAgcmVxX2ZpZm87Cit0eXBlX3NjcjFfcmVxX2ZpZm9fcyBbMDpTQ1IxX0ZJRk9fV0lEVEgtMV0gIHJlcV9maWZvX25ldzsKK2xvZ2ljICAgICAgIFtTQ1IxX0ZJRk9fQ05UX1dJRFRILTE6MF0gICAgICAgcmVxX2ZpZm9fY250OworbG9naWMgICAgICAgW1NDUjFfRklGT19DTlRfV0lEVEgtMTowXSAgICAgICByZXFfZmlmb19jbnRfbmV3OworYGVuZGlmIC8vIFNDUjFfRE1FTV9XQl9PVVRfQlAKK2xvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX2ZpZm9fZW1wdHk7Citsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9maWZvX2Z1bGw7CisKK3R5cGVfc2NyMV9kYXRhX2ZpZm9fcyAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9maWZvOwordHlwZV9zY3IxX3Jlc3BfZmlmb19zICAgICAgICAgICAgICAgICAgICAgICByZXNwX2ZpZm87Citsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfZmlmb19ocmVhZHk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW50ZXJmYWNlIHRvIENvcmUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYXNzaWduIGRtZW1fcmVxX2FjayA9IH5yZXFfZmlmb19mdWxsOworYXNzaWduIHJlcV9maWZvX3dyICA9IH5yZXFfZmlmb19mdWxsICYgZG1lbV9yZXE7CisKK2Fzc2lnbiBkbWVtX3JkYXRhID0gc2NyMV9jb252X3diMm1lbV9yZGF0YShyZXNwX2ZpZm8uaHdpZHRoLCByZXNwX2ZpZm8uaGFkZHIsIHJlc3BfZmlmby5ocmRhdGEpOworCithc3NpZ24gZG1lbV9yZXNwID0gKHJlc3BfZmlmb19ocmVhZHkpCisgICAgICAgICAgICAgICAgICAgID8gKHJlc3BfZmlmby5ocmVzcCA9PSAxJ2IxKQorICAgICAgICAgICAgICAgICAgICAgICAgPyBTQ1IxX01FTV9SRVNQX1JEWV9PSworICAgICAgICAgICAgICAgICAgICAgICAgOiBTQ1IxX01FTV9SRVNQX1JEWV9FUgorICAgICAgICAgICAgICAgICAgICA6IFNDUjFfTUVNX1JFU1BfTk9UUkRZIDsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBSRVFfRklGTworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitgaWZkZWYgU0NSMV9ETUVNX1dCX09VVF9CUAorYWx3YXlzX2ZmIEAobmVnZWRnZSByc3RfbiwgcG9zZWRnZSBjbGspIGJlZ2luCisgICAgaWYgKH5yc3RfbikgYmVnaW4KKyAgICAgICAgcmVxX2ZpZm9fZnVsbCA8PSAxJ2IwOworICAgIGVuZCBlbHNlIGJlZ2luCisgICAgICAgIGlmICh+cmVxX2ZpZm9fZnVsbCkgYmVnaW4KKyAgICAgICAgICAgIHJlcV9maWZvX2Z1bGwgPD0gZG1lbV9yZXEgJiB+cmVxX2ZpZm9fcmQ7CisgICAgICAgIGVuZCBlbHNlIGJlZ2luCisgICAgICAgICAgICByZXFfZmlmb19mdWxsIDw9IH5yZXFfZmlmb19yZDsKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKK2Fzc2lnbiByZXFfZmlmb19lbXB0eSA9IH4ocmVxX2ZpZm9fZnVsbCB8IGRtZW1fcmVxKTsKKworYXNzaWduIHJlcV9maWZvX3VwID0gfnJlcV9maWZvX3JkICYgcmVxX2ZpZm9fd3I7CithbHdheXNfZmYgQChwb3NlZGdlIGNsaykgYmVnaW4KKyAgICBpZiAocmVxX2ZpZm9fdXApIGJlZ2luCisgICAgICAgIHJlcV9maWZvX3IgPD0gcmVxX2ZpZm9fbmV3OworICAgIGVuZAorZW5kCisKK2Fzc2lnbiByZXFfZmlmb19uZXcuaHdyaXRlID0gZG1lbV9yZXEgPyAoZG1lbV9jbWQgPT0gU0NSMV9NRU1fQ01EX1dSKSAgICAgICA6IDEnYjA7Cithc3NpZ24gcmVxX2ZpZm9fbmV3Lmh3aWR0aCA9IGRtZW1fcmVxID8gc2NyMV9jb252X21lbTJ3Yl93aWR0aChkbWVtX3dpZHRoKSA6ICcwOworYXNzaWduIHJlcV9maWZvX25ldy5oYWRkciAgPSBkbWVtX3JlcSA/IGRtZW1fYWRkciAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzA7Cithc3NpZ24gcmVxX2ZpZm9fbmV3Lmh3ZGF0YSA9IChkbWVtX3JlcSAmIChkbWVtX2NtZCA9PSBTQ1IxX01FTV9DTURfV1IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNjcjFfY29udl9tZW0yd2Jfd2RhdGEoZG1lbV9hZGRyWzE6MF0sIGRtZW1fd2lkdGgsIGRtZW1fd2RhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzA7Cithc3NpZ24gcmVxX2ZpZm9bMF0gPSAocmVxX2ZpZm9fZnVsbCkgPyByZXFfZmlmb19yOiByZXFfZmlmb19uZXc7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUmVnaXN0ZXIgRGF0YSBmcm9tIHJlc3BvbnNlIHBhdGggLSBVc2VkIGJ5IFJlYWQgcGF0aCBsb2dpYworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithbHdheXNfZmYgQChwb3NlZGdlIGNsaykgYmVnaW4KKyAgICBpZiAod2JkX2Fja19pKSBiZWdpbgorICAgICAgICAgaWYgKH5yZXFfZmlmb19lbXB0eSkgYmVnaW4KKyAgICAgICAgICAgICBkYXRhX2ZpZm8uaHdpZHRoIDw9IHJlcV9maWZvWzBdLmh3aWR0aDsKKyAgICAgICAgICAgICBkYXRhX2ZpZm8uaGFkZHIgIDw9IHJlcV9maWZvWzBdLmhhZGRyWzE6MF07CisgICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitgZWxzZSAvLyBTQ1IxX0RNRU1fV0JfT1VUX0JQCisKKword2lyZQkgICAgICAgICAgICAgICAgIGh3cml0ZV9pbiA9IChkbWVtX2NtZCA9PSBTQ1IxX01FTV9DTURfV1IpOword2lyZSBbMjowXSAgICAgICAgICAgICAgIGh3aWR0aF9pbiA9IHNjcjFfY29udl9tZW0yd2Jfd2lkdGgoZG1lbV93aWR0aCk7Cit3aXJlIFtTQ1IxX1dCX1dJRFRILTE6MF0gaGFkZHJfaW4gID0gZG1lbV9hZGRyOword2lyZSBbU0NSMV9XQl9XSURUSC0xOjBdIGh3ZGF0YV9pbiA9IHNjcjFfY29udl9tZW0yd2Jfd2RhdGEoZG1lbV9hZGRyWzE6MF0sIGRtZW1fd2lkdGgsIGRtZW1fd2RhdGEpOworCityZWcgIFszOjBdICAgICAgICAgICAgICBoYmVsX2luOyAvLyBieXRlIHNlbGVjdAorYWx3YXlzX2NvbWIgYmVnaW4KKwloYmVsX2luID0gMDsKKyAgICBjYXNlIChod2lkdGhfaW4pCisgICAgICAgIFNDUjFfRFNJWkVfOEIgOiBiZWdpbgorICAgICAgICAgICAgaGJlbF9pbiA9IDQnYjAwMDEgPDwgaGFkZHJfaW5bMTowXTsKKyAgICAgICAgZW5kCisgICAgICAgIFNDUjFfRFNJWkVfMTZCIDogYmVnaW4KKyAgICAgICAgICAgIGhiZWxfaW4gPSA0J2IwMDExIDw8IGhhZGRyX2luWzE6MF07CisgICAgICAgIGVuZAorICAgICAgICBTQ1IxX0RTSVpFXzMyQiA6IGJlZ2luCisgICAgICAgICAgICBoYmVsX2luID0gNCdiMTExMTsKKyAgICAgICAgZW5kCisgICAgZW5kY2FzZQorZW5kCisKKword2lyZSBbU0NSMV9XQl9XSURUSCtTQ1IxX1dCX1dJRFRIKzMrNDowXSByZXFfZmlmb19kaW4gPSB7aGJlbF9pbixod3JpdGVfaW4saHdpZHRoX2luLGhhZGRyX2luLGh3ZGF0YV9pbn07CisKKyBzeW5jX2ZpZm8gIygKKyAgICAgIC5EQVRBX1dJRFRIKFNDUjFfV0JfV0lEVEgrU0NSMV9XQl9XSURUSCszKzErNCksIC8vIERhdGEgV2lkdGgKKyAgICAgIC5BRERSX1dJRFRIKDEpLCAgIC8vIEFkZHJlc3MgV2lkdGgKKyAgICAgIC5GSUZPX0RFUFRIKDIpICAgIC8vIEZJRk8gREVQVEgKKyAgICAgKSAgIHVfcmVxX2ZpZm8oCisKKyAgICAgICAuZG91dCAgICAgIChyZXFfZmlmb19kb3V0ICApLAorCisgICAgICAgLnJzdG4gICAgICAocnN0X24gICAgICAgICAgKSwKKyAgICAgICAuY2xrICAgICAgIChjbGsgICAgICAgICAgICApLAorICAgICAgIC53cl9lbiAgICAgKHJlcV9maWZvX3dyICAgICksIC8vIFdyaXRlCisgICAgICAgLnJkX2VuICAgICAocmVxX2ZpZm9fcmQgICAgKSwgLy8gUmVhZAorICAgICAgIC5kaW4gICAgICAgKHJlcV9maWZvX2RpbiAgICksCisgICAgICAgLmZ1bGwgICAgICAocmVxX2ZpZm9fZnVsbCAgKSwKKyAgICAgICAuZW1wdHkgICAgIChyZXFfZmlmb19lbXB0eSApCispOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJlZ2lzdGVyIERhdGEgZnJvbSByZXNwb25zZSBwYXRoIC0gVXNlZCBieSBSZWFkIHBhdGggbG9naWMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQord2lyZQkgICAgICAgICAgICAgICAgIGh3cml0ZV9vdXQ7Cit3aXJlIFsyOjBdICAgICAgICAgICAgICAgaHdpZHRoX291dDsKK3dpcmUgW1NDUjFfV0JfV0lEVEgtMTowXSBoYWRkcl9vdXQ7Cit3aXJlIFtTQ1IxX1dCX1dJRFRILTE6MF0gaHdkYXRhX291dDsKK3dpcmUgWzM6MF0gICAgICAgICAgICAgICBoYmVsX291dDsKKworYXNzaWduIHtoYmVsX291dCxod3JpdGVfb3V0LGh3aWR0aF9vdXQsaGFkZHJfb3V0LGh3ZGF0YV9vdXR9ID0gcmVxX2ZpZm9fZG91dDsKKworYWx3YXlzX2ZmIEAocG9zZWRnZSBjbGspIGJlZ2luCisgICAgaWYgKHdiZF9hY2tfaSkgYmVnaW4KKyAgICAgICAgIGlmICh+cmVxX2ZpZm9fZW1wdHkpIGJlZ2luCisgICAgICAgICAgICAgZGF0YV9maWZvLmh3aWR0aCA8PSBod2lkdGhfb3V0OworICAgICAgICAgICAgIGRhdGFfZmlmby5oYWRkciAgPD0gaGFkZHJfb3V0WzE6MF07CisgICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitgZW5kaWYgLy8gU0NSMV9ETUVNX1dCX09VVF9CUAorCisKK2Fsd2F5c19jb21iIGJlZ2luCisgICAgcmVxX2ZpZm9fcmQgPSAxJ2IwOworICAgIGlmICh3YmRfYWNrX2kpIGJlZ2luCisgICAgICAgICByZXFfZmlmb19yZCA9IH5yZXFfZmlmb19lbXB0eTsKKyAgICBlbmQKK2VuZAorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRklGTyByZXNwb25zZQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitgaWZkZWYgU0NSMV9ETUVNX1dCX0lOX0JQCisKK2Fzc2lnbiByZXNwX2ZpZm9faHJlYWR5ID0gd2JkX2Fja19pOworYXNzaWduIHJlc3BfZmlmby5ocmVzcCAgPSAod2JkX2Vycl9pKSA/IDEnYjAgOiAxJ2IxOworYXNzaWduIHJlc3BfZmlmby5od2lkdGggPSBkYXRhX2ZpZm8uaHdpZHRoOworYXNzaWduIHJlc3BfZmlmby5oYWRkciAgPSBkYXRhX2ZpZm8uaGFkZHI7Cithc3NpZ24gcmVzcF9maWZvLmhyZGF0YSA9IHdiZF9kYXRfaTsKKworYXNzaWduIHdiZF9zdGJfbyAgICAgPSB+cmVxX2ZpZm9fZW1wdHk7Cithc3NpZ24gd2JkX2Fkcl9vICAgID0gcmVxX2ZpZm9bMF0uaGFkZHI7Cithc3NpZ24gd2JkX3dlX28gICAgID0gcmVxX2ZpZm9bMF0uaHdyaXRlOworYXNzaWduIHdiZF9kYXRfbyAgICA9IHJlcV9maWZvWzBdLmh3ZGF0YTsKKworYWx3YXlzX2NvbWIgYmVnaW4KKwl3YmRfc2VsX28gPSAwOworICAgIGNhc2UgKHJlcV9maWZvWzBdLmh3aWR0aCkKKyAgICAgICAgU0NSMV9EU0laRV84QiA6IGJlZ2luCisgICAgICAgICAgICB3YmRfc2VsX28gPSA0J2IwMDAxIDw8IHJlcV9maWZvWzBdLmhhZGRyWzE6MF07CisgICAgICAgIGVuZAorICAgICAgICBTQ1IxX0RTSVpFXzE2QiA6IGJlZ2luCisgICAgICAgICAgICB3YmRfc2VsX28gPSA0J2IwMDExIDw8IHJlcV9maWZvWzBdLmhhZGRyWzE6MF07CisgICAgICAgIGVuZAorICAgICAgICBTQ1IxX0RTSVpFXzMyQiA6IGJlZ2luCisgICAgICAgICAgICB3YmRfc2VsX28gPSA0J2IxMTExOworICAgICAgICBlbmQKKyAgICBlbmRjYXNlCitlbmQKK2BlbHNlIC8vIFNDUjFfRE1FTV9XQl9JTl9CUAorYWx3YXlzX2ZmIEAobmVnZWRnZSByc3RfbiwgcG9zZWRnZSBjbGspIGJlZ2luCisgICAgaWYgKH5yc3RfbikgYmVnaW4KKyAgICAgICAgcmVzcF9maWZvX2hyZWFkeSA8PSAxJ2IwOworICAgIGVuZCBlbHNlIGJlZ2luCisgICAgICAgIHJlc3BfZmlmb19ocmVhZHkgPD0gd2JkX2Fja19pIDsKKyAgICBlbmQKK2VuZAorCithbHdheXNfZmYgQChwb3NlZGdlIGNsaykgYmVnaW4KKyAgICBpZiAod2JkX2Fja19pKSBiZWdpbgorICAgICAgICByZXNwX2ZpZm8uaHJlc3AgIDw9ICh3YmRfZXJyX2kpID8gMSdiMCA6IDEnYjE7CisgICAgICAgIHJlc3BfZmlmby5od2lkdGggPD0gZGF0YV9maWZvLmh3aWR0aDsKKyAgICAgICAgcmVzcF9maWZvLmhhZGRyICA8PSBkYXRhX2ZpZm8uaGFkZHI7CisgICAgICAgIHJlc3BfZmlmby5ocmRhdGEgPD0gd2JkX2RhdF9pOworICAgIGVuZAorZW5kCisKKworYXNzaWduIHdiZF9zdGJfbyAgICA9IH5yZXFfZmlmb19lbXB0eTsKK2Fzc2lnbiB3YmRfYWRyX28gICAgPSBoYWRkcl9vdXQ7Cithc3NpZ24gd2JkX3dlX28gICAgID0gaHdyaXRlX291dDsKK2Fzc2lnbiB3YmRfZGF0X28gICAgPSBod2RhdGFfb3V0OworYXNzaWduIHdiZF9zZWxfbyAgICA9IGhiZWxfb3V0OworCitgZW5kaWYgLy8gU0NSMV9ETUVNX1dCX0lOX0JQCisKKworCitlbmRtb2R1bGUgOiBzY3IxX2RtZW1fd2IKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy90b3Avc2NyMV9pbWVtX3diLnN2IGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlX3NjcjEvc3JjL3RvcC9zY3IxX2ltZW1fd2Iuc3YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0NmI1OQotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy90b3Avc2NyMV9pbWVtX3diLnN2CkBAIC0wLDAgKzEsMjczIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICB5aWZpdmUgV2lzaGJvbmUgaW50ZXJmYWNlIGZvciBJbnN0cnVjdGlvbiBtZW1vcnkgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgeWlmaXZlIGNvcmVzIHByb2plY3QgICAgICAgICAgICAgICAvLy8vCisvLy8vICBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvY29yZXMveWlmaXZlLyAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBEZXNjcmlwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICBpbnRlZ3JhdGVkIHdpc2hib25lIGkvZiB0byBpbnN0cnVjdGlvbiBtZW1vcnkgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUbyBEbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgIG5vdGhpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBBdXRob3Iocyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgLSBEaW5lc2ggQW5uYXl5YSwgZGluZXNoYUBvcGVuY29yZXMub3JnICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBSZXZpc2lvbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICB2MDogICAgSnVuZSA3LCAyMDIxLCBEaW5lc2ggQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgIHdpc2hib25lIGludGVncmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIENvcHlyaWdodCAoQykgMjAwMCBBdXRob3JzIGFuZCBPUEVOQ09SRVMuT1JHICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIHdpdGhvdXQgICAgICAgICAvLy8vCisvLy8vIHJlc3RyaWN0aW9uIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgc3RhdGVtZW50IGlzIG5vdCAgICAvLy8vCisvLy8vIHJlbW92ZWQgZnJvbSB0aGUgZmlsZSBhbmQgdGhhdCBhbnkgZGVyaXZhdGl2ZSB3b3JrIGNvbnRhaW5zICAvLy8vCisvLy8vIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNjbGFpbWVyLiAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgICAvLy8vCisvLy8vIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAvLy8vCisvLy8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgICAvLy8vCisvLy8vIGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSAgICAgICAvLy8vCisvLy8vIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgICAvLy8vCisvLy8vIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgICAgICAvLy8vCisvLy8vIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSAvLy8vCisvLy8vIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb3VyY2U7IGlmIG5vdCwgZG93bmxvYWQgaXQgICAvLy8vCisvLy8vIGZyb20gaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2xncGwuc2h0bWwgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgT3JnaW5hbCBvd25lciBEZXRhaWxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8gQ29weXJpZ2h0IGJ5IFN5bnRhY29yZSBMTEMgqSAyMDE2LTIwMjEuIFNlZSBMSUNFTlNFIGZvciBkZXRhaWxzLy8vCisvLy8gQGZpbGUgICAgICAgPHNjcjFfaW1lbV93Yi5zdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vCisvLy8gQGJyaWVmICAgICAgSW5zdHJ1Y3Rpb24gbWVtb3J5IEFIQiBicmlkZ2UgICAgICAgICAgICAgICAgICAgICAgLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2BpbmNsdWRlICJzY3IxX3diLnN2aCIKK2BpbmNsdWRlICJzY3IxX21lbWlmLnN2aCIKKworbW9kdWxlIHNjcjFfaW1lbV93YiAoCisgICAgLy8gQ29udHJvbCBTaWduYWxzCisgICAgaW5wdXQgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdF9uLAorICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGssCisKKyAgICAvLyBDb3JlIEludGVyZmFjZQorICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVtX3JlcV9hY2ssCisgICAgaW5wdXQgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZW1fcmVxLAorICAgIGlucHV0ICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgICBpbWVtX2FkZHIsCisgICAgb3V0cHV0ICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgIGltZW1fcmRhdGEsCisgICAgb3V0cHV0ICB0eXBlX3NjcjFfbWVtX3Jlc3BfZSAgICAgICAgICAgIGltZW1fcmVzcCwKKworICAgIC8vIFdCIEludGVyZmFjZQorICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfc3RiX28sIC8vIHN0cm9iZS9yZXF1ZXN0CisgICAgb3V0cHV0ICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgIHdiZF9hZHJfbywgLy8gYWRkcmVzcworICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfd2VfbywgIC8vIHdyaXRlCisgICAgb3V0cHV0ICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgIHdiZF9kYXRfbywgLy8gZGF0YSBvdXRwdXQKKyAgICBvdXRwdXQgIGxvZ2ljICAgWzM6MF0gICAgICAgICAgICAgICAgICAgd2JkX3NlbF9vLCAvLyBieXRlIGVuYWJsZQorICAgIGlucHV0ICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgICB3YmRfZGF0X2ksIC8vIGRhdGEgaW5wdXQKKyAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JkX2Fja19pLCAvLyBhY2tub3dsZWdlbWVudAorICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfZXJyX2kgIC8vIGVycm9yCisKKyk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTG9jYWwgcGFyYW1ldGVycyBkZWNsYXJhdGlvbgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitgaWZuZGVmIFNDUjFfSU1FTV9XQl9PVVRfQlAKK2xvY2FscGFyYW0gIFNDUjFfRklGT19XSURUSCA9IDI7Citsb2NhbHBhcmFtICBTQ1IxX0ZJRk9fQ05UX1dJRFRIID0gJGNsb2cyKFNDUjFfRklGT19XSURUSCsxKTsKK2BlbmRpZiAvLyBTQ1IxX0lNRU1fV0JfT1VUX0JQCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTG9jYWwgdHlwZXMgZGVjbGFyYXRpb24KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordHlwZWRlZiBlbnVtIGxvZ2ljIHsKKyAgICBTQ1IxX0ZTTV9BRERSID0gMSdiMCwKKyAgICBTQ1IxX0ZTTV9EQVRBID0gMSdiMSwKKyAgICBTQ1IxX0ZTTV9FUlIgID0gMSdieAorfSB0eXBlX3NjcjFfZnNtX2U7CisKK3R5cGVkZWYgc3RydWN0IHBhY2tlZCB7CisgICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgIGhhZGRyOworfSB0eXBlX3NjcjFfcmVxX2ZpZm9fczsKKwordHlwZWRlZiBzdHJ1Y3QgcGFja2VkIHsKKyAgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZXNwOworICAgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICBocmRhdGE7Cit9IHR5cGVfc2NyMV9yZXNwX2ZpZm9fczsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBMb2NhbCBzaWduYWwgZGVjbGFyYXRpb24KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordHlwZV9zY3IxX2ZzbV9lICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmc207Citsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9maWZvX3JkOworbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFfZmlmb193cjsKK2xvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX2ZpZm9fdXA7CitgaWZkZWYgU0NSMV9JTUVNX1dCX09VVF9CUAordHlwZV9zY3IxX3JlcV9maWZvX3MgICAgICAgICAgICAgICAgICAgICAgICByZXFfZmlmb19yOwordHlwZV9zY3IxX3JlcV9maWZvX3MgWzA6MF0gICAgICAgICAgICAgICAgICByZXFfZmlmbzsKK2BlbHNlIC8vIFNDUjFfSU1FTV9XQl9PVVRfQlAKK2xvZ2ljIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgICAgICAgICAgICAgICAgcmVxX2ZpZm9fZG91dDsKK2BlbmRpZiAvLyBTQ1IxX0lNRU1fV0JfT1VUX0JQCisKK2xvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX2ZpZm9fZW1wdHk7Citsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9maWZvX2Z1bGw7CisKK3R5cGVfc2NyMV9yZXNwX2ZpZm9fcyAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9maWZvOworbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwX2ZpZm9faHJlYWR5OworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEludGVyZmFjZSB0byBDb3JlCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2Fzc2lnbiBpbWVtX3JlcV9hY2sgPSB+cmVxX2ZpZm9fZnVsbDsKK2Fzc2lnbiByZXFfZmlmb193ciAgPSB+cmVxX2ZpZm9fZnVsbCAmIGltZW1fcmVxOworCithc3NpZ24gaW1lbV9yZGF0YSA9IHJlc3BfZmlmby5ocmRhdGE7CisKK2Fzc2lnbiBpbWVtX3Jlc3AgPSAocmVzcF9maWZvX2hyZWFkeSkKKyAgICAgICAgICAgICAgICAgICAgPyAocmVzcF9maWZvLmhyZXNwID09IDEnYjEpCisgICAgICAgICAgICAgICAgICAgICAgICA/IFNDUjFfTUVNX1JFU1BfUkRZX09LCisgICAgICAgICAgICAgICAgICAgICAgICA6IFNDUjFfTUVNX1JFU1BfUkRZX0VSCisgICAgICAgICAgICAgICAgICAgIDogU0NSMV9NRU1fUkVTUF9OT1RSRFk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUkVRX0ZJRk8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGlmZGVmIFNDUjFfSU1FTV9XQl9PVVRfQlAKK2Fsd2F5c19mZiBAKG5lZ2VkZ2UgcnN0X24sIHBvc2VkZ2UgY2xrKSBiZWdpbgorICAgIGlmICh+cnN0X24pIGJlZ2luCisgICAgICAgIHJlcV9maWZvX2Z1bGwgPD0gMSdiMDsKKyAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICBpZiAofnJlcV9maWZvX2Z1bGwpIGJlZ2luCisgICAgICAgICAgICByZXFfZmlmb19mdWxsIDw9IGltZW1fcmVxICYgfnJlcV9maWZvX3JkOworICAgICAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICAgICAgcmVxX2ZpZm9fZnVsbCA8PSB+cmVxX2ZpZm9fcmQ7CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCithc3NpZ24gcmVxX2ZpZm9fZW1wdHkgPSB+KHJlcV9maWZvX2Z1bGwgfCBpbWVtX3JlcSk7CisKK2Fzc2lnbiByZXFfZmlmb191cCAgICA9IH5yZXFfZmlmb19yZCAmIHJlcV9maWZvX3dyOworYWx3YXlzX2ZmIEAocG9zZWRnZSBjbGspIGJlZ2luCisgICAgaWYgKHJlcV9maWZvX3VwKSBiZWdpbgorICAgICAgICByZXFfZmlmb19yLmhhZGRyIDw9IGltZW1fYWRkcjsKKyAgICBlbmQKK2VuZAorCithc3NpZ24gcmVxX2ZpZm9bMF0gPSAocmVxX2ZpZm9fZnVsbCkgPyByZXFfZmlmb19yIDogaW1lbV9hZGRyOworCitgZWxzZSAvLyBTQ1IxX0lNRU1fV0JfT1VUX0JQCisKKworIHN5bmNfZmlmbyAjKAorICAgICAgLkRBVEFfV0lEVEgoU0NSMV9XQl9XSURUSCksIC8vIERhdGEgV2lkdGgKKyAgICAgIC5BRERSX1dJRFRIKDEpLCAgIC8vIEFkZHJlc3MgV2lkdGgKKyAgICAgIC5GSUZPX0RFUFRIKDIpICAgIC8vIEZJRk8gREVQVEgKKyAgICAgKSAgIHVfcmVxX2ZpZm8oCisKKyAgICAgICAuZG91dCAgICAgIChyZXFfZmlmb19kb3V0ICApLAorCisgICAgICAgLnJzdG4gICAgICAocnN0X24gICAgICAgICAgKSwKKyAgICAgICAuY2xrICAgICAgIChjbGsgICAgICAgICAgICApLAorICAgICAgIC53cl9lbiAgICAgKHJlcV9maWZvX3dyICAgICksIC8vIFdyaXRlCisgICAgICAgLnJkX2VuICAgICAocmVxX2ZpZm9fcmQgICAgKSwgLy8gUmVhZAorICAgICAgIC5kaW4gICAgICAgKGltZW1fYWRkciAgICAgICksCisgICAgICAgLmZ1bGwgICAgICAocmVxX2ZpZm9fZnVsbCAgKSwKKyAgICAgICAuZW1wdHkgICAgIChyZXFfZmlmb19lbXB0eSApCispOworCisKKworCitgZW5kaWYgLy8gU0NSMV9JTUVNX1dCX09VVF9CUAorCisKK2Fsd2F5c19jb21iIGJlZ2luCisgICAgcmVxX2ZpZm9fcmQgPSAxJ2IwOworICAgIGlmICh3YmRfYWNrX2kpIGJlZ2luCisgICAgICAgICByZXFfZmlmb19yZCA9IH5yZXFfZmlmb19lbXB0eTsKKyAgICBlbmQKK2VuZAorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEZJRk8gcmVzcG9uc2UKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGlmZGVmIFNDUjFfSU1FTV9XQl9JTl9CUAorYXNzaWduIHJlc3BfZmlmb19ocmVhZHkgPSB3YmRfYWNrX2k7Cithc3NpZ24gcmVzcF9maWZvLmhyZXNwICA9ICh3YmRfZXJyX2kpID8gMSdiMCA6IDEnYjE7Cithc3NpZ24gcmVzcF9maWZvLmhyZGF0YSA9IHdiZF9kYXRfaTsKK2Fzc2lnbiB3YmRfc3RiX28gICAgICAgID0gfnJlcV9maWZvX2VtcHR5OworYXNzaWduIHdiZF9hZHJfbyAgICAgICAgPSByZXFfZmlmb1swXTsKK2Fzc2lnbiB3YmRfd2VfbyAgICAgICAgID0gMDsgLy8gT25seSBSZWFkIHN1cHBvcnRlZAorYXNzaWduIHdiZF9kYXRfbyAgICAgICAgPSAzMidoMDsgLy8gTm8gV3JpdGUKK2Fzc2lnbiB3YmRfc2VsX28gICAgICAgID0gNCdiMTExMTsgLy8gT25seSBSZWFkIGFsbG93ZWQgaW4gaW1lbSBpL2YKKworCitgZWxzZSAvLyBTQ1IxX0lNRU1fV0JfSU5fQlAKK2Fsd2F5c19mZiBAKG5lZ2VkZ2UgcnN0X24sIHBvc2VkZ2UgY2xrKSBiZWdpbgorICAgIGlmICh+cnN0X24pIGJlZ2luCisgICAgICAgIHJlc3BfZmlmb19ocmVhZHkgPD0gMSdiMDsKKyAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICByZXNwX2ZpZm9faHJlYWR5IDw9IHdiZF9hY2tfaSA7CisgICAgZW5kCitlbmQKKworYWx3YXlzX2ZmIEAocG9zZWRnZSBjbGspIGJlZ2luCisgICAgaWYgKHdiZF9hY2tfaSkgYmVnaW4KKyAgICAgICAgcmVzcF9maWZvLmhyZXNwICA8PSAod2JkX2Vycl9pKSA/IDEnYjAgOiAxJ2IxOworICAgICAgICByZXNwX2ZpZm8uaHJkYXRhIDw9IHdiZF9kYXRfaTsKKyAgICBlbmQKK2VuZAorCithc3NpZ24gd2JkX3N0Yl9vICAgID0gfnJlcV9maWZvX2VtcHR5OworYXNzaWduIHdiZF9hZHJfbyAgICA9IHJlcV9maWZvX2RvdXQ7Cithc3NpZ24gd2JkX3dlX28gICAgID0gMDsgLy8gT25seSBSZWFkIHN1cHBvcnRlZAorYXNzaWduIHdiZF9kYXRfbyAgICA9IDMyJ2gwOyAvLyBObyBXcml0ZQorYXNzaWduIHdiZF9zZWxfbyAgICA9IDQnYjExMTE7IC8vIE9ubHkgUmVhZCBhbGxvd2VkIGluIGltZW0gaS9mCitgZW5kaWYgLy8gU0NSMV9JTUVNX1dCX0lOX0JQCisKKworCitgaWZkZWYgU0NSMV9UUkdUX1NJTVVMQVRJT04KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQXNzZXJ0aW9uCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQ2hlY2sgQ29yZSBpbnRlcmZhY2UKK1NDUjFfU1ZBX0lNRU1fV0JfQlJJREdFX1JFUV9YQ0hFQ0sgOiBhc3NlcnQgcHJvcGVydHkgKAorICAgIEAobmVnZWRnZSBjbGspIGRpc2FibGUgaWZmICh+cnN0X24pCisgICAgISRpc3Vua25vd24oaW1lbV9yZXEpCisgICAgKSBlbHNlICRlcnJvcigiSU1FTSBXQiBicmlkZ2UgRXJyb3I6IGltZW1fcmVxIGhhcyB1bmtub3duIHZhbHVlcyIpOworCitTQ1IxX0lNRU1fV0JfQlJJREdFX0FERFJfWENIRUNLIDogYXNzZXJ0IHByb3BlcnR5ICgKKyAgICBAKG5lZ2VkZ2UgY2xrKSBkaXNhYmxlIGlmZiAofnJzdF9uKQorICAgIGltZW1fcmVxIHwtPiAhJGlzdW5rbm93bihpbWVtX2FkZHIpCisgICAgKSBlbHNlICRlcnJvcigiSU1FTSBXQiBicmlkZ2UgRXJyb3I6IGltZW1fYWRkciBoYXMgdW5rbm93biB2YWx1ZXMiKTsKKworU0NSMV9JTUVNX1dCX0JSSURHRV9BRERSX0FMTElHTiA6IGFzc2VydCBwcm9wZXJ0eSAoCisgICAgQChuZWdlZGdlIGNsaykgZGlzYWJsZSBpZmYgKH5yc3RfbikKKyAgICBpbWVtX3JlcSB8LT4gKGltZW1fYWRkclsxOjBdID09ICcwKQorICAgICkgZWxzZSAkZXJyb3IoIklNRU0gV0IgYnJpZGdlIEVycm9yOiBpbWVtX2FkZHIgaGFzIHVuYWxpZ24gdmFsdWVzIik7CisKKy8vIENoZWNrIFdCIGludGVyZmFjZQorU0NSMV9JTUVNX1dCX0JSSURHRV9IUkVBRFlfWENIRUNLIDogYXNzZXJ0IHByb3BlcnR5ICgKKyAgICBAKG5lZ2VkZ2UgY2xrKSBkaXNhYmxlIGlmZiAofnJzdF9uKQorICAgICEkaXN1bmtub3duKGhyZWFkeSkKKyAgICApIGVsc2UgJGVycm9yKCJJTUVNIFdCIGJyaWRnZSBFcnJvcjogaHJlYWR5IGhhcyB1bmtub3duIHZhbHVlcyIpOworCitTQ1IxX0lNRU1fV0JfQlJJREdFX0hSRVNQX1hDSEVDSyA6IGFzc2VydCBwcm9wZXJ0eSAoCisgICAgQChuZWdlZGdlIGNsaykgZGlzYWJsZSBpZmYgKH5yc3RfbikKKyAgICAhJGlzdW5rbm93bihocmVzcCkKKyAgICApIGVsc2UgJGVycm9yKCJJTUVNIFdCIGJyaWRnZSBFcnJvcjogaHJlc3AgaGFzIHVua25vd24gdmFsdWVzIik7CisKK2BlbmRpZiAvLyBTQ1IxX1RSR1RfU0lNVUxBVElPTgorCitlbmRtb2R1bGUgOiBzY3IxX2ltZW1fd2IKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy90b3Avc2NyMV90b3Bfd2Iuc3YgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvdG9wL3NjcjFfdG9wX3diLnN2CmluZGV4IDBjZjFjMDkuLjg3ZTY2MDcgMTAwNjQ0Ci0tLSBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy90b3Avc2NyMV90b3Bfd2Iuc3YKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlX3NjcjEvc3JjL3RvcC9zY3IxX3RvcF93Yi5zdgpAQCAtMSwyOCArMSwyMyBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgU3ludGFjb3JlIFNDUjEgaW50ZXJmYWNlIG1hcCB0byB3ZXN0Ym9uZSAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgeWlmaXZlIFdpc2hib25lIGludGVyZmFjZSBmb3Igc3ludGFjb3JlICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlICB5aWZpdmUgcHJvamVjdCAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHlpZml2ZSBjb3JlcyBwcm9qZWN0ICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2NvcmVzL3lpZml2ZS8gICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgIFRoaXMgbW9kdWxlIGRvZXMgdGhlIHdlc3Rib25lIGludGVyZmFjZSB0byBzeW50YWNvcmUvc2NyMSAgLy8vLworLy8vLyAgRGVzY3JpcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgaW50ZWdyYXRlZCB3aXNoYm9uZSBpL2YgdG8gaW5zdHJ1Y3Rpb24vZGF0YSBtZW1vcnkgICAgICAgLy8vLwogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgVG8gRG86ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgICBub3RoaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgQXV0aG9yKHMpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyAgICAgIC0gRGluZXNoIEFubmF5eWEsIGRpbmVzaGFAb3BlbmNvcmVzLm9yZyAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgSW5pdGlhbCBBdXRob3I6IHN5bnRhY29yZQotLy8vLyAgICAgIC0gIGh0dHBzOi8vZ2l0aHViLmNvbS9zeW50YWNvcmUvc2NyMQogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8vLyAgUmV2aXNpb24gOiAwNi1KdW5lLSAyMDIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgICAgIHYtMC4wIC0gRGluZXNoLkEsIEp1bmUgMDYsIDIwMjEgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgICAgICAgICAxLiBJbml0aWFsIFZlcnNpb24gcGlja2VkIGZyb20gICAgICAgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vc3ludGFjb3JlL3NjcjEgICAgICAgICAgICAgICAgLy8vLwotLy8vLyAgICAgICAgICAyLiBBZGRlZCB3ZXN0b25lIGkvZiB0b3dhcmRzIGluc3RydWN0aW9uICAgICAgICAgICAgLy8vLwotLy8vLyAgICAgICAgICAgICBhbmQgZGF0YSBtZW1vcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgUmV2aXNpb24gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgdjA6ICAgIEp1bmUgNywgMjAyMSwgRGluZXNoIEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICB3aXNoYm9uZSBpbnRlZ3JhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLworLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLwogLy8vLyBDb3B5cmlnaHQgKEMpIDIwMDAgQXV0aG9ycyBhbmQgT1BFTkNPUkVTLk9SRyAgICAgICAgICAgICAgICAgLy8vLwpAQCAtNDksMTEgKzQ0LDE2IEBACiAvLy8vIGZyb20gaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2xncGwuc2h0bWwgICAgICAgICAgICAgICAgICAgICAvLy8vCiAvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KKy8vICAgICBPcmdpbmFsIG93bmVyIERldGFpbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLyBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyDCqSAyMDE2LTIwMjAuIFNlZSBMSUNFTlNFIGZvciBkZXRhaWxzLy8vCisvLy8gQGZpbGUgICAgICAgPHNjcjFfdG9wX3diLnN2PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vCisvLy8gQGJyaWVmICAgICAgU0NSMSBBSEIgdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIGBpbmNsdWRlICJzY3IxX2FyY2hfZGVzY3JpcHRpb24uc3ZoIgogYGluY2x1ZGUgInNjcjFfbWVtaWYuc3ZoIgotYGluY2x1ZGUgInNjcjFfYWhiLnN2aCIKK2BpbmNsdWRlICJzY3IxX3diLnN2aCIKIGBpZmRlZiBTQ1IxX0lQSUNfRU4KIGBpbmNsdWRlICJzY3IxX2lwaWMuc3ZoIgogYGVuZGlmIC8vIFNDUjFfSVBJQ19FTgpAQCAtMTA0LDI4ICsxMDQsMjQgQEAKIGBlbmRpZiAvLyBTQ1IxX0RCR19FTgogCiAgICAgLy8gSW5zdHJ1Y3Rpb24gTWVtb3J5IEludGVyZmFjZQotICAgIG91dHB1dCAgbG9naWMgWzM6MF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZW1faHByb3QsCi0gICAgb3V0cHV0ICBsb2dpYyBbMjowXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1lbV9oYnVyc3QsCi0gICAgb3V0cHV0ICBsb2dpYyBbMjowXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1lbV9oc2l6ZSwKLSAgICBvdXRwdXQgIGxvZ2ljIFsxOjBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVtX2h0cmFucywKLSAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVtX2htYXN0bG9jaywKLSAgICBvdXRwdXQgIGxvZ2ljIFtTQ1IxX0FIQl9XSURUSC0xOjBdICAgICAgICAgICAgICBpbWVtX2hhZGRyLAotICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZW1faHJlYWR5LAotICAgIGlucHV0ICAgbG9naWMgW1NDUjFfQUhCX1dJRFRILTE6MF0gICAgICAgICAgICAgIGltZW1faHJkYXRhLAotICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZW1faHJlc3AsCisgICAgb3V0cHV0ICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiZF9pbWVtX3N0Yl9vLCAvLyBzdHJvYmUvcmVxdWVzdAorICAgIG91dHB1dCAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgICB3YmRfaW1lbV9hZHJfbywgLy8gYWRkcmVzcworICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfaW1lbV93ZV9vLCAgLy8gd3JpdGUKKyAgICBvdXRwdXQgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgd2JkX2ltZW1fZGF0X28sIC8vIGRhdGEgb3V0cHV0CisgICAgb3V0cHV0ICBsb2dpYyAgIFszOjBdICAgICAgICAgICAgICAgICAgIHdiZF9pbWVtX3NlbF9vLCAvLyBieXRlIGVuYWJsZQorICAgIGlucHV0ICAgbG9naWMgICBbU0NSMV9XQl9XSURUSC0xOjBdICAgICB3YmRfaW1lbV9kYXRfaSwgLy8gZGF0YSBpbnB1dAorICAgIGlucHV0ICAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfaW1lbV9hY2tfaSwgLy8gYWNrbm93bGVnZW1lbnQKKyAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JkX2ltZW1fZXJyX2ksICAvLyBlcnJvcgogCiAgICAgLy8gRGF0YSBNZW1vcnkgSW50ZXJmYWNlCi0gICAgb3V0cHV0ICBsb2dpYyBbMzowXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1lbV9ocHJvdCwKLSAgICBvdXRwdXQgIGxvZ2ljIFsyOjBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWVtX2hidXJzdCwKLSAgICBvdXRwdXQgIGxvZ2ljIFsyOjBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbWVtX2hzaXplLAotICAgIG91dHB1dCAgbG9naWMgWzE6MF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtZW1faHRyYW5zLAotICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtZW1faG1hc3Rsb2NrLAotICAgIG91dHB1dCAgbG9naWMgW1NDUjFfQUhCX1dJRFRILTE6MF0gICAgICAgICAgICAgIGRtZW1faGFkZHIsCi0gICAgb3V0cHV0ICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1lbV9od3JpdGUsCi0gICAgb3V0cHV0ICBsb2dpYyBbU0NSMV9BSEJfV0lEVEgtMTowXSAgICAgICAgICAgICAgZG1lbV9od2RhdGEsCi0gICAgaW5wdXQgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1lbV9ocmVhZHksCi0gICAgaW5wdXQgICBsb2dpYyBbU0NSMV9BSEJfV0lEVEgtMTowXSAgICAgICAgICAgICAgZG1lbV9ocmRhdGEsCi0gICAgaW5wdXQgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1lbV9ocmVzcAorICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICB3YmRfZG1lbV9zdGJfbywgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgICBvdXRwdXQgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgd2JkX2RtZW1fYWRyX28sIC8vIGFkZHJlc3MKKyAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JkX2RtZW1fd2VfbywgIC8vIHdyaXRlCisgICAgb3V0cHV0ICBsb2dpYyAgIFtTQ1IxX1dCX1dJRFRILTE6MF0gICAgIHdiZF9kbWVtX2RhdF9vLCAvLyBkYXRhIG91dHB1dAorICAgIG91dHB1dCAgbG9naWMgICBbMzowXSAgICAgICAgICAgICAgICAgICB3YmRfZG1lbV9zZWxfbywgLy8gYnl0ZSBlbmFibGUKKyAgICBpbnB1dCAgIGxvZ2ljICAgW1NDUjFfV0JfV0lEVEgtMTowXSAgICAgd2JkX2RtZW1fZGF0X2ksIC8vIGRhdGEgaW5wdXQKKyAgICBpbnB1dCAgIGxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JkX2RtZW1fYWNrX2ksIC8vIGFja25vd2xlZ2VtZW50CisgICAgaW5wdXQgICBsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiZF9kbWVtX2Vycl9pICAvLyBlcnJvcgogKTsKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjMsMjMgKzE1OSwyMyBAQAogbG9naWMgW2BTQ1IxX0RNRU1fRFdJRFRILTE6MF0gICAgICAgICAgICAgICAgICAgICAgIGNvcmVfZG1lbV9yZGF0YTsKIHR5cGVfc2NyMV9tZW1fcmVzcF9lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlX2RtZW1fcmVzcDsKIAotLy8gSW5zdHJ1Y3Rpb24gbWVtb3J5IGludGVyZmFjZSBmcm9tIHJvdXRlciB0byBBSEIgYnJpZGdlCi1sb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWhiX2ltZW1fcmVxX2FjazsKLWxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaGJfaW1lbV9yZXE7Ci10eXBlX3NjcjFfbWVtX2NtZF9lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWhiX2ltZW1fY21kOwotbG9naWMgW2BTQ1IxX0lNRU1fQVdJRFRILTE6MF0gICAgICAgICAgICAgICAgICAgICAgIGFoYl9pbWVtX2FkZHI7Ci1sb2dpYyBbYFNDUjFfSU1FTV9EV0lEVEgtMTowXSAgICAgICAgICAgICAgICAgICAgICAgYWhiX2ltZW1fcmRhdGE7Ci10eXBlX3NjcjFfbWVtX3Jlc3BfZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWhiX2ltZW1fcmVzcDsKKy8vIEluc3RydWN0aW9uIG1lbW9yeSBpbnRlcmZhY2UgZnJvbSByb3V0ZXIgdG8gV0IgYnJpZGdlCitsb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JfaW1lbV9yZXFfYWNrOworbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiX2ltZW1fcmVxOwordHlwZV9zY3IxX21lbV9jbWRfZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiX2ltZW1fY21kOworbG9naWMgW2BTQ1IxX0lNRU1fQVdJRFRILTE6MF0gICAgICAgICAgICAgICAgICAgICAgIHdiX2ltZW1fYWRkcjsKK2xvZ2ljIFtgU0NSMV9JTUVNX0RXSURUSC0xOjBdICAgICAgICAgICAgICAgICAgICAgICB3Yl9pbWVtX3JkYXRhOwordHlwZV9zY3IxX21lbV9yZXNwX2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiX2ltZW1fcmVzcDsKIAotLy8gRGF0YSBtZW1vcnkgaW50ZXJmYWNlIGZyb20gcm91dGVyIHRvIEFIQiBicmlkZ2UKLWxvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaGJfZG1lbV9yZXFfYWNrOwotbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFoYl9kbWVtX3JlcTsKLXR5cGVfc2NyMV9tZW1fY21kX2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaGJfZG1lbV9jbWQ7Ci10eXBlX3NjcjFfbWVtX3dpZHRoX2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWhiX2RtZW1fd2lkdGg7Ci1sb2dpYyBbYFNDUjFfRE1FTV9BV0lEVEgtMTowXSAgICAgICAgICAgICAgICAgICAgICAgYWhiX2RtZW1fYWRkcjsKLWxvZ2ljIFtgU0NSMV9ETUVNX0RXSURUSC0xOjBdICAgICAgICAgICAgICAgICAgICAgICBhaGJfZG1lbV93ZGF0YTsKLWxvZ2ljIFtgU0NSMV9ETUVNX0RXSURUSC0xOjBdICAgICAgICAgICAgICAgICAgICAgICBhaGJfZG1lbV9yZGF0YTsKLXR5cGVfc2NyMV9tZW1fcmVzcF9lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaGJfZG1lbV9yZXNwOworLy8gRGF0YSBtZW1vcnkgaW50ZXJmYWNlIGZyb20gcm91dGVyIHRvIFdCIGJyaWRnZQorbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiX2RtZW1fcmVxX2FjazsKK2xvZ2ljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yl9kbWVtX3JlcTsKK3R5cGVfc2NyMV9tZW1fY21kX2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yl9kbWVtX2NtZDsKK3R5cGVfc2NyMV9tZW1fd2lkdGhfZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yl9kbWVtX3dpZHRoOworbG9naWMgW2BTQ1IxX0RNRU1fQVdJRFRILTE6MF0gICAgICAgICAgICAgICAgICAgICAgIHdiX2RtZW1fYWRkcjsKK2xvZ2ljIFtgU0NSMV9ETUVNX0RXSURUSC0xOjBdICAgICAgICAgICAgICAgICAgICAgICB3Yl9kbWVtX3dkYXRhOworbG9naWMgW2BTQ1IxX0RNRU1fRFdJRFRILTE6MF0gICAgICAgICAgICAgICAgICAgICAgIHdiX2RtZW1fcmRhdGE7Cit0eXBlX3NjcjFfbWVtX3Jlc3BfZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JfZG1lbV9yZXNwOwogCiBgaWZkZWYgU0NSMV9UQ01fRU4KIC8vIEluc3RydWN0aW9uIG1lbW9yeSBpbnRlcmZhY2UgZnJvbSByb3V0ZXIgdG8gVENNCkBAIC00MDQsMTMgKzQwMCwxMyBAQAogICAgIC5pbWVtX2FkZHIgICAgICAoY29yZV9pbWVtX2FkZHIgICApLAogICAgIC5pbWVtX3JkYXRhICAgICAoY29yZV9pbWVtX3JkYXRhICApLAogICAgIC5pbWVtX3Jlc3AgICAgICAoY29yZV9pbWVtX3Jlc3AgICApLAotICAgIC8vIEludGVyZmFjZSB0byBBSEIgYnJpZGdlCi0gICAgLnBvcnQwX3JlcV9hY2sgIChhaGJfaW1lbV9yZXFfYWNrICksCi0gICAgLnBvcnQwX3JlcSAgICAgIChhaGJfaW1lbV9yZXEgICAgICksCi0gICAgLnBvcnQwX2NtZCAgICAgIChhaGJfaW1lbV9jbWQgICAgICksCi0gICAgLnBvcnQwX2FkZHIgICAgIChhaGJfaW1lbV9hZGRyICAgICksCi0gICAgLnBvcnQwX3JkYXRhICAgIChhaGJfaW1lbV9yZGF0YSAgICksCi0gICAgLnBvcnQwX3Jlc3AgICAgIChhaGJfaW1lbV9yZXNwICAgICksCisgICAgLy8gSW50ZXJmYWNlIHRvIFdCIGJyaWRnZQorICAgIC5wb3J0MF9yZXFfYWNrICAod2JfaW1lbV9yZXFfYWNrICksCisgICAgLnBvcnQwX3JlcSAgICAgICh3Yl9pbWVtX3JlcSAgICAgKSwKKyAgICAucG9ydDBfY21kICAgICAgKHdiX2ltZW1fY21kICAgICApLAorICAgIC5wb3J0MF9hZGRyICAgICAod2JfaW1lbV9hZGRyICAgICksCisgICAgLnBvcnQwX3JkYXRhICAgICh3Yl9pbWVtX3JkYXRhICAgKSwKKyAgICAucG9ydDBfcmVzcCAgICAgKHdiX2ltZW1fcmVzcCAgICApLAogIGBpZmRlZiBTQ1IxX1RDTV9FTgogICAgIC8vIEludGVyZmFjZSB0byBUQ00KICAgICAucG9ydDFfcmVxX2FjayAgKHRjbV9pbWVtX3JlcV9hY2sgKSwKQEAgLTQyNCwxMiArNDIwLDEyIEBACiAKIGBlbHNlIC8vIFNDUjFfSU1FTV9ST1VURVJfRU4KIAotYXNzaWduIGFoYl9pbWVtX3JlcSAgICAgICAgID0gY29yZV9pbWVtX3JlcTsKLWFzc2lnbiBhaGJfaW1lbV9jbWQgICAgICAgICA9IGNvcmVfaW1lbV9jbWQ7Ci1hc3NpZ24gYWhiX2ltZW1fYWRkciAgICAgICAgPSBjb3JlX2ltZW1fYWRkcjsKLWFzc2lnbiBjb3JlX2ltZW1fcmVxX2FjayAgICA9IGFoYl9pbWVtX3JlcV9hY2s7Ci1hc3NpZ24gY29yZV9pbWVtX3Jlc3AgICAgICAgPSBhaGJfaW1lbV9yZXNwOwotYXNzaWduIGNvcmVfaW1lbV9yZGF0YSAgICAgID0gYWhiX2ltZW1fcmRhdGE7Cithc3NpZ24gd2JfaW1lbV9yZXEgICAgICAgICA9IGNvcmVfaW1lbV9yZXE7Cithc3NpZ24gd2JfaW1lbV9jbWQgICAgICAgICA9IGNvcmVfaW1lbV9jbWQ7Cithc3NpZ24gd2JfaW1lbV9hZGRyICAgICAgICA9IGNvcmVfaW1lbV9hZGRyOworYXNzaWduIGNvcmVfaW1lbV9yZXFfYWNrICAgID0gd2JfaW1lbV9yZXFfYWNrOworYXNzaWduIGNvcmVfaW1lbV9yZXNwICAgICAgID0gd2JfaW1lbV9yZXNwOworYXNzaWduIGNvcmVfaW1lbV9yZGF0YSAgICAgID0gd2JfaW1lbV9yZGF0YTsKIAogYGVuZGlmIC8vIFNDUjFfSU1FTV9ST1VURVJfRU4KIApAQCAtNDkwLDcyICs0ODYsNjggQEAKICAgICAucG9ydDJfd2RhdGEgICAgKHRpbWVyX2RtZW1fd2RhdGEgICAgKSwKICAgICAucG9ydDJfcmRhdGEgICAgKHRpbWVyX2RtZW1fcmRhdGEgICAgKSwKICAgICAucG9ydDJfcmVzcCAgICAgKHRpbWVyX2RtZW1fcmVzcCAgICAgKSwKLSAgICAvLyBJbnRlcmZhY2UgdG8gQUhCIGJyaWRnZQotICAgIC5wb3J0MF9yZXFfYWNrICAoYWhiX2RtZW1fcmVxX2FjayAgICApLAotICAgIC5wb3J0MF9yZXEgICAgICAoYWhiX2RtZW1fcmVxICAgICAgICApLAotICAgIC5wb3J0MF9jbWQgICAgICAoYWhiX2RtZW1fY21kICAgICAgICApLAotICAgIC5wb3J0MF93aWR0aCAgICAoYWhiX2RtZW1fd2lkdGggICAgICApLAotICAgIC5wb3J0MF9hZGRyICAgICAoYWhiX2RtZW1fYWRkciAgICAgICApLAotICAgIC5wb3J0MF93ZGF0YSAgICAoYWhiX2RtZW1fd2RhdGEgICAgICApLAotICAgIC5wb3J0MF9yZGF0YSAgICAoYWhiX2RtZW1fcmRhdGEgICAgICApLAotICAgIC5wb3J0MF9yZXNwICAgICAoYWhiX2RtZW1fcmVzcCAgICAgICApCisgICAgLy8gSW50ZXJmYWNlIHRvIFdCIGJyaWRnZQorICAgIC5wb3J0MF9yZXFfYWNrICAod2JfZG1lbV9yZXFfYWNrICAgICksCisgICAgLnBvcnQwX3JlcSAgICAgICh3Yl9kbWVtX3JlcSAgICAgICAgKSwKKyAgICAucG9ydDBfY21kICAgICAgKHdiX2RtZW1fY21kICAgICAgICApLAorICAgIC5wb3J0MF93aWR0aCAgICAod2JfZG1lbV93aWR0aCAgICAgICksCisgICAgLnBvcnQwX2FkZHIgICAgICh3Yl9kbWVtX2FkZHIgICAgICAgKSwKKyAgICAucG9ydDBfd2RhdGEgICAgKHdiX2RtZW1fd2RhdGEgICAgICApLAorICAgIC5wb3J0MF9yZGF0YSAgICAod2JfZG1lbV9yZGF0YSAgICAgICksCisgICAgLnBvcnQwX3Jlc3AgICAgICh3Yl9kbWVtX3Jlc3AgICAgICAgKQogKTsKIAogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEluc3RydWN0aW9uIG1lbW9yeSBBSEIgYnJpZGdlCisvLyBJbnN0cnVjdGlvbiBtZW1vcnkgV0IgYnJpZGdlCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXNjcjFfaW1lbV9haGIgaV9pbWVtX2FoYiAoCitzY3IxX2ltZW1fd2IgaV9pbWVtX3diICgKICAgICAucnN0X24gICAgICAgICAgKGNvcmVfcnN0X25fbG9jYWwgICApLAogICAgIC5jbGsgICAgICAgICAgICAoY2xrICAgICAgICAgICAgICAgICksCiAgICAgLy8gSW50ZXJmYWNlIHRvIGltZW0gcm91dGVyCi0gICAgLmltZW1fcmVxX2FjayAgIChhaGJfaW1lbV9yZXFfYWNrICAgKSwKLSAgICAuaW1lbV9yZXEgICAgICAgKGFoYl9pbWVtX3JlcSAgICAgICApLAotICAgIC5pbWVtX2FkZHIgICAgICAoYWhiX2ltZW1fYWRkciAgICAgICksCi0gICAgLmltZW1fcmRhdGEgICAgIChhaGJfaW1lbV9yZGF0YSAgICAgKSwKLSAgICAuaW1lbV9yZXNwICAgICAgKGFoYl9pbWVtX3Jlc3AgICAgICApLAotICAgIC8vIEFIQiBpbnRlcmZhY2UKLSAgICAuaHByb3QgICAgICAgICAgKGltZW1faHByb3QgICAgICAgICApLAotICAgIC5oYnVyc3QgICAgICAgICAoaW1lbV9oYnVyc3QgICAgICAgICksCi0gICAgLmhzaXplICAgICAgICAgIChpbWVtX2hzaXplICAgICAgICAgKSwKLSAgICAuaHRyYW5zICAgICAgICAgKGltZW1faHRyYW5zICAgICAgICApLAotICAgIC5obWFzdGxvY2sgICAgICAoaW1lbV9obWFzdGxvY2sgICAgICksCi0gICAgLmhhZGRyICAgICAgICAgIChpbWVtX2hhZGRyICAgICAgICAgKSwKLSAgICAuaHJlYWR5ICAgICAgICAgKGltZW1faHJlYWR5ICAgICAgICApLAotICAgIC5ocmRhdGEgICAgICAgICAoaW1lbV9ocmRhdGEgICAgICAgICksCi0gICAgLmhyZXNwICAgICAgICAgIChpbWVtX2hyZXNwICAgICAgICAgKQorICAgIC5pbWVtX3JlcV9hY2sgICAod2JfaW1lbV9yZXFfYWNrICAgKSwKKyAgICAuaW1lbV9yZXEgICAgICAgKHdiX2ltZW1fcmVxICAgICAgICksCisgICAgLmltZW1fYWRkciAgICAgICh3Yl9pbWVtX2FkZHIgICAgICApLAorICAgIC5pbWVtX3JkYXRhICAgICAod2JfaW1lbV9yZGF0YSAgICAgKSwKKyAgICAuaW1lbV9yZXNwICAgICAgKHdiX2ltZW1fcmVzcCAgICAgICksCisgICAgLy8gV0IgaW50ZXJmYWNlCisgICAgLndiZF9zdGJfbyAgICAgICh3YmRfaW1lbV9zdGJfbyAgICApLCAKKyAgICAud2JkX2Fkcl9vICAgICAgKHdiZF9pbWVtX2Fkcl9vICAgICksIAorICAgIC53YmRfd2VfbyAgICAgICAod2JkX2ltZW1fd2VfbyAgICAgKSwgIAorICAgIC53YmRfZGF0X28gICAgICAod2JkX2ltZW1fZGF0X28gICAgKSwgCisgICAgLndiZF9zZWxfbyAgICAgICh3YmRfaW1lbV9zZWxfbyAgICApLCAKKyAgICAud2JkX2RhdF9pICAgICAgKHdiZF9pbWVtX2RhdF9pICAgICksIAorICAgIC53YmRfYWNrX2kgICAgICAod2JkX2ltZW1fYWNrX2kgICAgKSwgCisgICAgLndiZF9lcnJfaSAgICAgICh3YmRfaW1lbV9lcnJfaSAgICApCiApOwogCiAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRGF0YSBtZW1vcnkgQUhCIGJyaWRnZQorLy8gRGF0YSBtZW1vcnkgV0IgYnJpZGdlCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXNjcjFfZG1lbV9haGIgaV9kbWVtX2FoYiAoCitzY3IxX2RtZW1fd2IgaV9kbWVtX3diICgKICAgICAucnN0X24gICAgICAgICAgKGNvcmVfcnN0X25fbG9jYWwgICApLAogICAgIC5jbGsgICAgICAgICAgICAoY2xrICAgICAgICAgICAgICAgICksCiAgICAgLy8gSW50ZXJmYWNlIHRvIGRtZW0gcm91dGVyCi0gICAgLmRtZW1fcmVxX2FjayAgIChhaGJfZG1lbV9yZXFfYWNrICAgKSwKLSAgICAuZG1lbV9yZXEgICAgICAgKGFoYl9kbWVtX3JlcSAgICAgICApLAotICAgIC5kbWVtX2NtZCAgICAgICAoYWhiX2RtZW1fY21kICAgICAgICksCi0gICAgLmRtZW1fd2lkdGggICAgIChhaGJfZG1lbV93aWR0aCAgICAgKSwKLSAgICAuZG1lbV9hZGRyICAgICAgKGFoYl9kbWVtX2FkZHIgICAgICApLAotICAgIC5kbWVtX3dkYXRhICAgICAoYWhiX2RtZW1fd2RhdGEgICAgICksCi0gICAgLmRtZW1fcmRhdGEgICAgIChhaGJfZG1lbV9yZGF0YSAgICAgKSwKLSAgICAuZG1lbV9yZXNwICAgICAgKGFoYl9kbWVtX3Jlc3AgICAgICApLAotICAgIC8vIEFIQiBpbnRlcmZhY2UKLSAgICAuaHByb3QgICAgICAgICAgKGRtZW1faHByb3QgICAgICAgICApLAotICAgIC5oYnVyc3QgICAgICAgICAoZG1lbV9oYnVyc3QgICAgICAgICksCi0gICAgLmhzaXplICAgICAgICAgIChkbWVtX2hzaXplICAgICAgICAgKSwKLSAgICAuaHRyYW5zICAgICAgICAgKGRtZW1faHRyYW5zICAgICAgICApLAotICAgIC5obWFzdGxvY2sgICAgICAoZG1lbV9obWFzdGxvY2sgICAgICksCi0gICAgLmhhZGRyICAgICAgICAgIChkbWVtX2hhZGRyICAgICAgICAgKSwKLSAgICAuaHdyaXRlICAgICAgICAgKGRtZW1faHdyaXRlICAgICAgICApLAotICAgIC5od2RhdGEgICAgICAgICAoZG1lbV9od2RhdGEgICAgICAgICksCi0gICAgLmhyZWFkeSAgICAgICAgIChkbWVtX2hyZWFkeSAgICAgICAgKSwKLSAgICAuaHJkYXRhICAgICAgICAgKGRtZW1faHJkYXRhICAgICAgICApLAotICAgIC5ocmVzcCAgICAgICAgICAoZG1lbV9ocmVzcCAgICAgICAgICkKKyAgICAuZG1lbV9yZXFfYWNrICAgKHdiX2RtZW1fcmVxX2FjayAgICksCisgICAgLmRtZW1fcmVxICAgICAgICh3Yl9kbWVtX3JlcSAgICAgICApLAorICAgIC5kbWVtX2NtZCAgICAgICAod2JfZG1lbV9jbWQgICAgICAgKSwKKyAgICAuZG1lbV93aWR0aCAgICAgKHdiX2RtZW1fd2lkdGggICAgICksCisgICAgLmRtZW1fYWRkciAgICAgICh3Yl9kbWVtX2FkZHIgICAgICApLAorICAgIC5kbWVtX3dkYXRhICAgICAod2JfZG1lbV93ZGF0YSAgICAgKSwKKyAgICAuZG1lbV9yZGF0YSAgICAgKHdiX2RtZW1fcmRhdGEgICAgICksCisgICAgLmRtZW1fcmVzcCAgICAgICh3Yl9kbWVtX3Jlc3AgICAgICApLAorICAgIC8vIFdCIGludGVyZmFjZQorICAgIC53YmRfc3RiX28gICAgICAod2JkX2RtZW1fc3RiX28gICAgKSwgCisgICAgLndiZF9hZHJfbyAgICAgICh3YmRfZG1lbV9hZHJfbyAgICApLCAKKyAgICAud2JkX3dlX28gICAgICAgKHdiZF9kbWVtX3dlX28gICAgICksICAKKyAgICAud2JkX2RhdF9vICAgICAgKHdiZF9kbWVtX2RhdF9vICAgICksIAorICAgIC53YmRfc2VsX28gICAgICAod2JkX2RtZW1fc2VsX28gICAgKSwgCisgICAgLndiZF9kYXRfaSAgICAgICh3YmRfZG1lbV9kYXRfaSAgICApLCAKKyAgICAud2JkX2Fja19pICAgICAgKHdiZF9kbWVtX2Fja19pICAgICksIAorICAgIC53YmRfZXJyX2kgICAgICAod2JkX2RtZW1fZXJyX2kgICAgKQogKTsKIAotZW5kbW9kdWxlIDogc2NyMV90b3BfYWhiCitlbmRtb2R1bGUgOiBzY3IxX3RvcF93YgogCiAKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZV9zY3IxL3NyYy93Yl90b3AuZmlsZXMgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvd2JfdG9wLmZpbGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZGQzNDEKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmVfc2NyMS9zcmMvd2JfdG9wLmZpbGVzCkBAIC0wLDAgKzEsOSBAQAordG9wL3NjcjFfZG1lbV9yb3V0ZXIuc3YKK3RvcC9zY3IxX2ltZW1fcm91dGVyLnN2Cit0b3Avc2NyMV9kcF9tZW1vcnkuc3YKK3RvcC9zY3IxX3RjbS5zdgordG9wL3NjcjFfdGltZXIuc3YKK3RvcC9zY3IxX2RtZW1fd2Iuc3YKK3RvcC9zY3IxX2ltZW1fd2Iuc3YKK3RvcC9zY3IxX3RvcF93Yi5zdgorLi4vLi4vbGliL3N5bmNfZmlmby5zdgo=